menus = menuService.getMenuListByUserId(Integer.parseInt(userId), false);
+ return success("用户[" + userId + "]拥有的菜单获取成功!", menus, menus.size());
+ } catch (Exception e) {
+ return error(400, "发生错误:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:更新菜单
+ *
+ * @param menu 菜单实体
+ * @return 菜单更新结果
+ */
+ @PostMapping("/update")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult updateMenu(@Validated SysMenu menu) {
+ // 执行修改菜单操作
+ if (menuService.saveMenu(menu) > 0) {
+ return success("更新菜单成功");
+ }
+ return error(400, "更新菜单失败");
+ }
+
+
+ /**
+ * 接口功能:根据ID修改菜单状态
+ *
+ * @param status 菜单新状态:1-正常 0-禁用
+ * @param menuIds 需要修改状态的菜单ID数组
+ * @return 菜单状态修改结果
+ */
+ @PostMapping("/changeStatus/{status}")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult changeMenuStatus(@PathVariable String status, Integer[] menuIds) {
+ try {
+ int[] result = menuService.changeStatus(Integer.parseInt(status), menuIds);
+ if (result[0] > 0) {
+ return success(result[0] + "个菜单状态更新成功," + result[1] + "个失败。");
+ }
+ return error(400, "菜单状态更新失败!");
+ } catch (Exception e) {
+ return error(400, "error:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:根据ID删除菜单
+ *
+ * @param id 菜单ID
+ * @return 删除结果
+ */
+ @PostMapping("/remove")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult removeMenu(String id) {
+ try {
+ if (menuService.deleteMenu(Integer.parseInt(id)) > 0) {
+ return success("菜单删除成功");
+ }
+ return error(400, "菜单删除失败");
+ } catch (Exception e) {
+ return error(400, "发生错误:" + e.getMessage());
+ }
+ }
+
+
+ /**
+ * 【注意:正常来说,这种工具应该以工具类的形式定义。但本项目中,我们只在此控制类中使用一次,所以就写在各个文件中】
+ *
+ * 构造菜单树状列表数据
+ *
+ * @param menuList 查询到的菜单列表
+ * @return 合并后的树状列表
+ */
+ private List initMenu(List menuList) {
+ // 如果菜单为空,直接返回空
+ if (menuList.isEmpty()) {
+ return null;
+ }
+ // 定义新的菜单列表,用来返回
+ List retMenuList = new ArrayList<>();
+ // 循环遍历:查找顶级菜单(有的项目中是顶部导航菜单)
+ for (SysMenu aMenuList : menuList) {
+ // 顶级菜单的特征是父级ID为 -1
+ if (null != aMenuList.getParentId() && -1 == aMenuList.getParentId()) {
+ retMenuList.add(aMenuList);
+ }
+ }
+ //遍历所有菜单,将二级菜单添加至对应的一级菜单内
+ for (SysMenu menu : retMenuList) {
+ menu.setChild(getChild(menu.getId(), menuList));
+ }
+ //返回构建后的树状菜单
+ return retMenuList;
+ }
+
+ /**
+ * 设置子菜单(递归调用)
+ *
+ * @param parentId 父级菜单ID
+ * @param menuList 全部菜单列表
+ * @return 子菜单结果集合
+ */
+ private List getChild(Integer parentId, List menuList) {
+ List result = new ArrayList<>();
+ // 遍历,将子菜单添加进父菜单项内
+ for (SysMenu menu : menuList) {
+ if (null != menu.getParentId() && parentId.equals(menu.getParentId())) {
+ result.add(menu);
+ }
+ }
+ // 继续遍历二级菜单是否有子菜单(递归)
+ for (SysMenu menu : result) {
+ menu.setChild(getChild(menu.getId(), menuList));
+ }
+ //递归终止条件
+ if (result.size() == 0) {
+ return null;
+ }
+ //返回结果集
+ return result;
+ }
+
+}
diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysRoleController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysRoleController.java
new file mode 100644
index 0000000..a084510
--- /dev/null
+++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysRoleController.java
@@ -0,0 +1,282 @@
+package com.zxdmy.excite.admin.controller.system;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zxdmy.excite.common.base.BaseController;
+import com.zxdmy.excite.common.base.BaseResult;
+import com.zxdmy.excite.framework.aop.AnnotationSaveReLog;
+import com.zxdmy.excite.system.entity.SysRole;
+import com.zxdmy.excite.system.service.ISysRoleService;
+import com.zxdmy.excite.system.service.ISysUserRoleService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 系统角色表 前端控制器
+ *
+ * @author 沈松
+ * @since 2021-09-23
+ */
+@Controller
+@AllArgsConstructor
+@RequestMapping("/system/role")
+public class SysRoleController extends BaseController {
+
+ ISysRoleService roleService;
+
+ ISysUserRoleService userRoleService;
+
+ /**
+ * @return 页面:【角色管理】页面入口
+ */
+ @RequestMapping("index")
+ public String index() {
+ return "system/role/index";
+ }
+
+ /**
+ * @return 页面:【角色管理-添加角色】页面入口
+ */
+ @RequestMapping("goAdd")
+ public String goAdd() {
+ return "system/role/add";
+ }
+
+ /**
+ * @param id 角色ID
+ * @param map map
+ * @return 页面:【角色管理-编辑角色】页面入口
+ */
+ @RequestMapping("goEdit/{id}")
+ public String goEdit(@PathVariable String id, ModelMap map) {
+ try {
+ SysRole role = roleService.getRole(Integer.parseInt(id));
+ if (null != role) {
+ map.put("role", role);
+ return "system/role/edit";
+ } else {
+ map.put("code", 500);
+ map.put("msg", "可能原因:该角色禁止编辑,该角色已被禁用!");
+ return "error/error";
+ }
+ } catch (Exception e) {
+ // 发生异常,一般就是数字转换出错
+ System.err.println(e.getMessage());
+ return "error/500";
+ }
+ }
+
+ @RequestMapping("goShowUser/{id}")
+ public String showUser(@PathVariable String id, ModelMap map) {
+ try {
+ SysRole role = roleService.getRole(Integer.parseInt(id));
+ if (null == role) {
+ map.put("code", 500);
+ map.put("msg", "可能原因:该角色禁止编辑,该角色已被禁用!");
+ return "error/error";
+ } else {
+ map.put("role", role);
+ return "system/role/authUser";
+ }
+ } catch (Exception e) {
+ // 发生异常,一般就是数字转换出错
+ System.err.println(e.getMessage());
+ return "error/500";
+ }
+ }
+
+ /**
+ * 接口功能:添加角色,并支持同时分配权限
+ *
+ * @param role 角色实体
+ * @param menuIds 该角色拥有的菜单ID,数组类型:[1,2,3,4,5,6],前端传递字符串格式:1,2,3,4
+ * @return 添加结果
+ */
+ @PostMapping("/add")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult addRole(@Validated SysRole role, Integer[] menuIds) {
+ try {
+ if (roleService.saveRole(role, menuIds) > 0) {
+ return success("菜单角色成功");
+ }
+ return error(400, "菜单角色失败");
+ } catch (Exception e) {
+ return error(500, "发生错误:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:通过角色ID获取角色信息
+ *
+ * @param id 角色ID
+ * @return 指定角色的信息
+ */
+ @GetMapping("/get/{id}")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult getRole(@PathVariable String id) {
+ try {
+ SysRole role = roleService.getRole(Integer.parseInt(id));
+ if (null != role) {
+ return success("获取角色成功", role);
+ }
+ return error(400, "获取角色失败");
+ } catch (Exception e) {
+ return error(500, "发生错误:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:获取所有角色,支持条件搜索
+ *
+ * @param page 页号
+ * @param limit 当前页数目
+ * @param name 搜索字段:名称
+ * @param permission 搜索字段:权限字符
+ * @return 符合要求的角色列表
+ */
+ @GetMapping("/list")
+ @ResponseBody
+ public BaseResult getRoleList(Integer page, Integer limit, String name, String permission) {
+ try {
+ Page rolePage = roleService.getPage(page, limit, name, permission);
+ return success("获取角色列表成功", rolePage.getRecords(), (int) rolePage.getTotal());
+ } catch (Exception e) {
+ return error(500, "发生错误:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:获取获取所有正常的角色,为用户模块所用(添加、编辑用户)
+ * 其中:如果指定ID(即ID不为0),则该用户的角色列表中,已分配的角色属性中的checkArr=1
+ *
+ * @param userId 用户ID。如果为0,则表示获取所有列表
+ * @return JSON结果
+ */
+ @GetMapping("/listForUser/{userId}")
+ @ResponseBody
+ public BaseResult getRoleListForUser(@PathVariable String userId) {
+ try {
+ List roleList = roleService.getListByUserId(Integer.parseInt(userId));
+ return success("获取角色列表成功", roleList, roleList.size());
+ } catch (Exception e) {
+ return error(500, "error:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:更新角色接口
+ *
+ * @param role 角色实体
+ * @param menuIds 该角色拥有的菜单ID,数组类型:[1,2,3,4,5,6],前端发送数据格式为字符串:1,2,3,4
+ * @return 结果
+ */
+ @PostMapping("/update")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult updateRole(@Validated SysRole role, Integer[] menuIds) {
+ try {
+ if (roleService.saveRole(role, menuIds) > 0) {
+ return success("更新角色成功");
+ }
+ return error(400, "更新角色失败,请重试");
+ } catch (Exception e) {
+ return error(500, "error:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:更新角色状态
+ *
+ * @param status 角色新状态:1-正常 0-禁用
+ * @param roleIds 角色ID列表,数组类型:[1,2,3,4,5,6]
+ * @return 修改结果
+ */
+ @PostMapping("/changeStatus/{status}")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult changeStatus(@PathVariable String status, Integer[] roleIds) {
+ try {
+ int[] result = roleService.changeStatus(Integer.parseInt(status), roleIds);
+ if (result[0] > 0) {
+ return success(result[0] + "个角色状态更新成功," + result[1] + "个失败!");
+ } else
+ return error(400, "更新角色状态失败,请重试");
+ } catch (Exception e) {
+ return error(500, "发生错误:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:删除指定角色,包含该角色的权限信息,以及撤销分配给某些用户的角色
+ *
+ * @param roleIds 要删除的角色ID列表
+ * @return 结果
+ */
+ @PostMapping("/delete")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult removeRole(Integer[] roleIds) {
+ try {
+ int[] result = roleService.deleteRoleById(roleIds);
+ // 没有失败的
+ if (result[1] == 0 && result[2] == 0) {
+ return success(200, "删除成功!");
+ }
+ // 没有成功的
+ else if (result[0] == 0) {
+ return error(result[1] + "个角色删除失败!" + result[2] + "个角色因已授权用户,请取消授权后再删除!");
+ }
+ // 有成功有失败的
+ else {
+ return success(200, result[0] + "个角色删除成功!" + result[1] + "个角色删除失败!" + result[2] + "个角色已授权用户,请取消授权后再删除!");
+ }
+ } catch (Exception e) {
+ return error("发生错误:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:将指定角色分配给系列用户,或者取消某角色分配给的用户
+ *
+ * @param type 操作类型:auth-添加授权 | revoke-取消授权
+ * @param roleId 用户ID
+ * @param userIds 角色信息列表
+ * @return 分配结果
+ */
+ @PostMapping("/authUser/{type}")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult authForUser(@PathVariable("type") String type, String roleId, Integer[] userIds) {
+ try {
+ // 添加授权
+ if (type.equals("auth")) {
+ if (roleService.authRoleForUsers(Integer.parseInt(roleId), userIds))
+ return success(200, "添加授权成功!");
+ else
+ return error("授权失败,请重试!");
+ }
+ // 取消授权
+ else if (type.equals("revoke")) {
+ int[] result = roleService.revokeRoleForUsers(Integer.parseInt(roleId), userIds);
+ if (result[1] == 0)
+ return success(200, "取消授权成功!");
+ else if (result[0] == 0)
+ return error("取消授权失败,请重试!");
+ else
+ return success(result[0] + "个用户取消授权成功," + result[1] + "个失败!");
+ }
+ return error("访问错误!");
+ } catch (Exception e) {
+ return error("发生错误:" + e.getMessage());
+ }
+ }
+
+
+}
diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysUserController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysUserController.java
new file mode 100644
index 0000000..18b7acc
--- /dev/null
+++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysUserController.java
@@ -0,0 +1,456 @@
+package com.zxdmy.excite.admin.controller.system;
+
+import cn.dev33.satoken.session.SaSession;
+import cn.dev33.satoken.stp.SaTokenInfo;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.util.CharsetUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.asymmetric.KeyType;
+import cn.hutool.crypto.asymmetric.RSA;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zxdmy.excite.common.base.BaseController;
+import com.zxdmy.excite.common.base.BaseResult;
+
+import com.zxdmy.excite.common.config.ExciteConfig;
+import com.zxdmy.excite.common.enums.ReturnCode;
+import com.zxdmy.excite.common.enums.SystemCode;
+import com.zxdmy.excite.common.service.RedisService;
+import com.zxdmy.excite.framework.aop.AnnotationSaveLoginLog;
+import com.zxdmy.excite.framework.aop.AnnotationSaveReLog;
+import com.zxdmy.excite.system.entity.SysUser;
+import com.zxdmy.excite.system.service.ISysUserService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpSession;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 系统用户表 前端控制器
+ *
+ * @author 沈松
+ * @since 2021-09-01
+ */
+@Tag(name = "后台用户控制器")
+@Controller
+@AllArgsConstructor
+@RequestMapping("/system/user")
+public class SysUserController extends BaseController {
+
+ private ISysUserService userService;
+
+// private RedisService redisUtils;
+
+ private ExciteConfig exciteConfig;
+
+ /**
+ * 访问页面:用户管理 - 列表页面
+ *
+ * @return 跳转至列表页面
+ */
+ @RequestMapping("index")
+ public String index() {
+ return "system/user/index";
+ }
+
+ /**
+ * 访问页面:用户管理 - 添加用户页面
+ *
+ * @return 跳转至添加用户页面
+ */
+ @RequestMapping("goAdd")
+ public String goAdd() {
+ return "system/user/add";
+ }
+
+ /**
+ * 访问页面:用户管理 - 编辑用户信息页面
+ *
+ * @return 跳转至编辑用户页面
+ */
+ @RequestMapping("goEdit/{id}")
+ public String goEdit(@PathVariable String id, ModelMap map) {
+ // 获取该用户的信息
+ SysUser user = userService.getById(id);
+ // 加载至前端
+ if (user == null) {
+ map.put("code", 404);
+ map.put("msg", "用户不存在!");
+ return "error/error";
+ }
+ map.put("user", user);
+ return "system/user/edit";
+ }
+
+ /**
+ * 访问页面:用户管理 - 为用户分配角色页面
+ *
+ * @return 跳转至编辑用户页面
+ */
+ @RequestMapping("goAuthRole/{id}")
+ public String goAuthRole(@PathVariable String id, ModelMap map) {
+ // 获取该用户的信息
+ SysUser user = userService.getById(id);
+ // 加载至前端
+ if (user == null) {
+ map.put("code", 404);
+ map.put("msg", "用户不存在!");
+ return "error/error";
+ }
+ map.put("user", user);
+ return "system/user/authRole";
+ }
+
+
+ /**
+ * 接口功能:用户登录
+ * 基本逻辑:校验前端信息-->校验验证码-->校验用户名、密码-->登录
+ *
+ * @param username 用户名
+ * @param password 密码
+ * @param captcha 验证码
+ * @param remember 是否记住登录状态 1-记住 | 0-不记住(记住登录状态后,关闭浏览器,不退出。不记住登录状态,关闭浏览器后即退出登录。只有手动退出才可以)
+ * @return JSON:登录结果
+ */
+ @PostMapping(value = "/login")
+ @ResponseBody
+ @AnnotationSaveLoginLog
+ public BaseResult login(String username, String password,String remember) {
+ // 如果提交的信息有空信息
+ if (StrUtil.hasBlank(username, password)) {
+ return error("用户名、密码或验证码不能为空!");
+ }
+ // 前后端同域:使用session存储验证码。如果不同域:使用redis
+ HttpSession session = request.getSession();
+ // 如果验证码session不为空,表示以获取验证码
+
+ // 使用用户名和密码登录
+ SysUser user = userService.login(username, SecureUtil.md5(this.decrypt(password)));
+ // 如果用户不为空,则登录成功
+ if (null != user) {
+ // 账号状态正常
+ if (SystemCode.STATUS_N.getCode() != user.getStatus()) {
+ // 保持登录与否
+ StpUtil.login(user.getId(), "1".equals(remember));
+ SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
+ return success("登录成功!", tokenInfo);
+ }
+ // 账号已被封禁
+ else
+ return error("该账号已被封禁,请联系系统管理员");
+ }
+ // 登录失败
+ else {
+ return error("登录失败:用户名或密码错误");
+ }
+
+ }
+
+ /**
+ * 接口功能:退出登录
+ *
+ * @return JSON:退出登录结果
+ */
+ @PostMapping(value = "/logout")
+ @ResponseBody
+ public BaseResult logout() {
+ if (StpUtil.isLogin()) {
+ StpUtil.logout();
+ return success("已退出登录!");
+ }
+ return error("请求失败,未登录任何账户");
+ }
+
+ /**
+ * 接口功能:获取用户列表
+ *
+ * @param page 当前页面
+ * @param limit 每页请求数
+ * @param username 检索用户名
+ * @param account 检索电话或邮箱
+ * @return JSON:用户列表 | 错误信息
+ */
+ @GetMapping(value = "/list")
+ @ResponseBody
+ public BaseResult getUserList(Integer page, Integer limit, String username, String account) {
+ Page userPage = userService.getPage(page, limit, username, account);
+ if (null != userPage) {
+ return success("查询成功", userPage.getRecords(), (int) userPage.getTotal());
+ } else {
+ return error("查询失败,用户不存在");
+ }
+ }
+
+ /**
+ * 接口功能:添加用户
+ * 基本逻辑:接收前端的用户信息-->校验与初始化新用户信息-->添加至[用户表]-->获取新添加用户的ID-->用户ID与角色ID添加至[用户角色关联表].
+ *
+ * @param user 用户信息
+ * @param roleIds 用户分配的角色信息
+ * @return JSON:成败结果
+ * @apiNote 启用注解[@AnnotationSaveReLog]保存请求日志
+ */
+ @PostMapping(value = "/add")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult add(SysUser user, Integer[] roleIds) {
+ // 新建用户:其邮箱或手机号、密码不能为空,因为这是登录凭证.
+ if (null != user && null != user.getPassword() && (null != user.getLoginName() || null != user.getPhone())) {
+ // 解密
+ user.setPassword(SecureUtil.md5(this.decrypt(user.getPassword())));
+ // 添加
+ if (userService.save(user, roleIds) > 0) {
+ return success("新用户添加成功!");
+ } else {
+ return error("新用户添加失败,请重试!");
+ }
+ }
+ return error("用户信息(账号或手机号、密码)不能为空,请重试!");
+ }
+
+ /**
+ * 接口功能:更新用户基本信息(不含角色信息)
+ *
+ * @param user 用户信息
+ * @return JSON:成败结果
+ * @apiNote 启用注解[@AnnotationSaveReLog]保存请求日志
+ */
+ @PostMapping(value = "/update")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult update(SysUser user) {
+ // 编辑用户基本信息:用户名、头像、性别、邮箱和手机号。
+ if (null != user && null != user.getId()) {
+ // 其他信息(状态、密码)不能通过此接口修改,故其应为null.
+ if (null == user.getStatus() && null == user.getPassword()) {
+ if (userService.save(user, null) > 0) {
+ return success("用户信息编辑成功!");
+ } else {
+ return error("用户信息编辑失败,请重试!");
+ }
+ } else {
+ return error("接口请求信息错误!");
+ }
+ } else {
+ return error("用户信息不能为空,请重试!");
+ }
+ }
+
+ /**
+ * 接口功能:删除用户
+ * 基本逻辑:删除该用户的角色信息[用户-角色关联表]-->删除用户
+ *
+ * @param userIds 用户ID列表
+ * @return JSON:成败
+ * @apiNote 启用注解[@AnnotationSaveReLog]保存请求日志
+ */
+ @PostMapping(value = "/delete")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult delete(Integer[] userIds) {
+ try {
+ if (userService.deleteUserById(userIds)[0] > 0) {
+ return success("用户删除成功");
+ }
+ return error("用户删除失败");
+ } catch (Exception e) {
+ return error("发生错误:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:给指定用户分配角色
+ *
+ * @param id 用户ID
+ * @param roleIds 角色信息列表
+ * @return 分配结果
+ */
+ @PostMapping(value = "/authRole")
+ @ResponseBody
+ public BaseResult setRole(String id, Integer[] roleIds) {
+ try {
+ if (userService.setRoleForUser(Integer.parseInt(id), roleIds)) {
+ return success(200, "分配角色成功!");
+ }
+ return success("分配角色失败,请重试!");
+ } catch (Exception e) {
+ return error("发生错误:" + e.getMessage());
+ }
+
+ }
+
+ /**
+ * 接口功能:改变用户的状态
+ *
+ * @param status 新状态:1-正常 0-禁用
+ * @param userIds 用户ID列表
+ * @return 修改结果
+ */
+ @PostMapping(value = "/changeStatus/{status}")
+ @ResponseBody
+ public BaseResult changeStatus(@PathVariable String status, Integer[] userIds) {
+ try {
+ int[] result = userService.changeStatus(Integer.parseInt(status), userIds);
+ // 没有失败
+ if (result[0] != 0 && result[1] == 0) {
+ return success(200, "用户状态修改成功!");
+ }
+ // 有成功的
+ else if (result[0] != 0) {
+ return success(200, result[0] + "个角色状态更新成功," + result[1] + "个失败!");
+ } else {
+ return success(500, "用户状态修改失败,请重试!");
+ }
+ } catch (Exception e) {
+ return error(500, "发生错误:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 接口功能:重置密码
+ *
+ * @param userId 用户ID
+ * @param newPassword 新密码
+ * @param newPassword2 新密码
+ * @return 重置结果
+ */
+ @PostMapping(value = "/resetPassword")
+ @ResponseBody
+ @AnnotationSaveReLog
+ public BaseResult resetPassword(String userId, String newPassword, String newPassword2) {
+ if (null == userId || null == newPassword || null == newPassword2) {
+ return error("输入信息有误,请重新输入!");
+ }
+ // 密码先解密
+ newPassword = this.decrypt(newPassword);
+ newPassword2 = this.decrypt(newPassword2);
+ // 密码相同
+ if (newPassword.equals(newPassword2)) {
+ SysUser user = new SysUser();
+ try {
+ user.setId(Integer.parseInt(userId));
+ // 密码MD5加密
+ user.setPassword(SecureUtil.md5(newPassword));
+ if (userService.save(user, null) > 0) {
+ return success("密码重置成功!");
+ } else {
+ error("密码重置失败,请重试!");
+ }
+ } catch (Exception e) {
+ return error(e.getMessage());
+ }
+ }
+ return error("密码重置失败,新密码不一致!");
+ }
+
+ /**
+ * 接口功能:获取指定角色所分配的用户列表(拥有/不拥有此角色)
+ *
+ * @param roleId 角色ID
+ * @param have 是否用于此角色:0-不拥有 | 1-拥有
+ * @return 用户列表
+ */
+ @GetMapping("/listForRole/{have}/{roleId}")
+ @ResponseBody
+ public BaseResult getUserListForRole(@PathVariable("have") String have, @PathVariable("roleId") String roleId) {
+ try {
+ // 拥有 此角色
+ List userList;
+ if (have.equals("1")) {
+ userList = userService.getUserListByRoleId(Integer.parseInt(roleId));
+ }
+ // 不拥有 此角色
+ else {
+ userList = userService.getUserListByRoleIdNotIn(Integer.parseInt(roleId));
+ }
+ return success(200, "获取成功", userList);
+ } catch (Exception e) {
+ return error(e.getMessage());
+ }
+ }
+
+ /**
+ * 访问页面:用户个人信息管理 - 修改用户信息
+ *
+ * @return 跳转至编辑用户页面
+ */
+ @RequestMapping("center/setting")
+ public String goSetting(ModelMap map) {
+ SysUser user = userService.getById(StpUtil.getLoginIdAsInt());
+ if (user != null) {
+ map.put("user", user);
+ return "system/userCenter/setting";
+ }
+ map.put("code", 404);
+ map.put("msg", "访问错误!");
+ return "error/error";
+ }
+
+ /**
+ * 访问页面:用户管理 - 编辑用户信息页面
+ *
+ * @return 跳转至编辑用户页面
+ */
+ @RequestMapping("center/password")
+ public String goChangePassword() {
+ return "system/userCenter/password";
+ }
+
+ /**
+ * 接口功能:个人中心保存用户信息接口
+ *
+ * @return 结果
+ */
+ @PostMapping(value = "/center/saveSetting")
+ @ResponseBody
+ public BaseResult saveSetting(SysUser user) {
+ user.setId(StpUtil.getLoginIdAsInt());
+// if (userService.save(user, null) > 0) {
+// return success(200, "修改成功");
+// }
+ return error("修改失败,此接口暂不开放!");
+ }
+
+ /**
+ * 接口功能:个人中心修改用户密码接口
+ *
+ * @param oldPassword 旧密码
+ * @param newPassword1 新密码
+ * @param newPassword2 新密码
+ * @return 修改结果
+ */
+ @PostMapping(value = "/center/changePassword")
+ @ResponseBody
+ public BaseResult changePassword(String oldPassword, String newPassword1, String newPassword2) {
+ if (!newPassword1.equals(newPassword2)) {
+ return error("新密码不一致!");
+ }
+ return error("修改失败,此接口暂不开放!");
+ }
+
+ /**
+ * 私有方法:解密密码
+ *
+ * @param encrypt 加密密码
+ * @return 解密密码
+ */
+ private String decrypt(String encrypt) {
+ // 根据私钥生成新的对象
+ RSA rsa = new RSA(exciteConfig.getRsaPrivateKey(), null);
+ byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
+ return StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8);
+ }
+}
diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/tool/CaptchaController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/tool/CaptchaController.java
new file mode 100644
index 0000000..8203e53
--- /dev/null
+++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/tool/CaptchaController.java
@@ -0,0 +1,107 @@
+package com.zxdmy.excite.admin.controller.tool;
+
+
+import com.zxdmy.excite.common.base.BaseController;
+import com.zxdmy.excite.common.base.BaseResult;
+
+
+import com.zxdmy.excite.common.entity.CaptchaDomain;
+import com.zxdmy.excite.common.service.CaptchaService;
+import com.zxdmy.excite.common.service.RedisService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.imageio.ImageIO;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.security.SecureRandom;
+import java.util.Random;
+
+/**
+ *
+ * 生成验证码接口
+ *
+ *
+ * @author 沈松
+ * @since 2021-10-04 0004 21:16
+ */
+@Controller
+@AllArgsConstructor
+@RequestMapping("/tool/captcha")
+public class CaptchaController extends BaseController {
+
+ private CaptchaService captchaService;
+
+ private RedisService redisUtils;
+
+ /**
+ * 获取验证码接口
+ *
+ * @param type 类型,char - 字符(默认) | math - 一位数算式 | math2 - 两位数算式
+ * @return 结果
+ */
+ @GetMapping("/get")
+ @ResponseBody
+ public BaseResult getCaptcha(@RequestParam(value = "type", required = false, defaultValue = "char") String type) {
+ // 生成验证码实体
+ CaptchaDomain captchaDomain = captchaService.createGoogleCaptcha(type);
+ if (null != captchaDomain) {
+ // 将验证码保存至redis,包含前缀
+ redisUtils.set(captchaDomain.getToken(), captchaDomain.getCode(), 300L);
+ // 无用信息设空
+ captchaDomain.setText(null);
+ captchaDomain.setCode(null);
+ // 返回前端信息
+ return success("获取验证码成功", captchaDomain);
+ } else {
+ return error(400, "获取验证码失败,请重试。");
+ }
+
+ }
+
+ /**
+ * 直接输出图片
+ *
+ * @param type 类型,char - 字符(默认) | math - 一位数算式 | math2 - 两位数算式
+ */
+ @GetMapping("/get/image")
+ public void getCaptchaImage(@RequestParam(value = "type", required = false, defaultValue = "math") String type) {
+ ServletOutputStream out = null;
+ Random random = new SecureRandom();
+// int rand = random.nextInt(2);
+ CaptchaDomain captchaDomain;
+// if (rand == 0) {
+ // 生成验证码实体
+ captchaDomain = captchaService.createGoogleCaptcha(type);
+// } else {
+// captchaDomain = captchaService.createHutoolCaptcha(160, 60);
+// }
+ // 将验证码保存至session
+ HttpSession session = request.getSession();
+ session.setAttribute("captcha",captchaDomain.getCode());
+ // 输出图片
+ try {
+ response.setContentType("image/jpeg");
+ out = response.getOutputStream();
+ ImageIO.write(captchaDomain.getImage(), "jpg", out);
+ out.flush();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ if (out != null) {
+ out.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+ }
+
+}
diff --git a/ss-admin/src/main/resources/application.yml b/ss-admin/src/main/resources/application.yml
new file mode 100644
index 0000000..582585f
--- /dev/null
+++ b/ss-admin/src/main/resources/application.yml
@@ -0,0 +1,194 @@
+# 项目服务配置
+server:
+ port: 8077 # 端口号
+ servlet:
+ context-path: / #项目访问路径
+
+# 自定义的配置信息
+excite:
+ name: Lt-Cloud # 项目名
+ allow-redis: true # 开启redis缓存
+ rsa-public-key: "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxo7epYQqWu4Dgr52LZIn+Y9T3wf2t1NCnh+DpbY3CSBdTDbTyoJdMJm0cat3E7sWcCGqZb2U8Kdtg12ycybhiyuNIc9tXqjYZqBk4ocjuk2QshNFBWU9hgLioKCsbGnCvUY4bB/SuuKUGmNl+CRT7kcehU6u+i3ML88V2LQQKuQIDAQAB"
+ rsa-private-key: "MIICdAIBADANBgkqhkiG9w0BAQEFAASCAl4wggJaAgEAAoGBALGjt6lhCpa7gOCvnYtkif5j1PfB/a3U0KeH4OltjcJIF1MNtPKgl0wmbRxq3cTuxZwIaplvZTwp22DXbJzJuGLK40hz21eqNhmoGTihyO6TZCyE0UFZT2GAuKgoKxsacK9RjhsH9K64pQaY2X4JFPuRx6FTq76LcwvzxXYtBAq5AgMBAAECfxC5ld7K1gp+wJctnedLlKegE/Wf8prsCCputNKFHE/UecjEqfJ+yPAKEv9SlFuIKOdiuZWTbl+xqgJt9UTzCD8t3E7WTi6yejmhIw1WcmFnDvh7G/AFdfYSxKJ29ak+CEc93SlfaURtxYco71qbjkrUnJi9ALIei4k8i+cEe9ECQQDXq/fm+MiMFTwZEjAimEbu2SZ6E70hbva520WOCkyDDnAvYZ76jtR35rDcIrXEPGGIBKf527iYEpiRriji4CBlAkEA0tstVP+j0UdIb8K1DZ7jj9pKVsBH/5HxLGtE5qk5GnqVwyI3C39/Y1kGY2hkt+7HHQ/uCa29AraymOTntahZxQJBAIsmXTAc2+fl23yhi4UGkt2QJY8mJSTpHy8TFnFqm6sDKcaoSZaHiPZDVWDy1CvkeVj1CBvhc9xKQz3bDG41BTECQGLSPCW5BhLgQK+4Zlhy3h4eZXbQ+S1rPcfeolUkfFHPn/7rOzcVUyPBpn/SflnB++m//ITmu03ZSEzmAz6dHy0CQHRgMPKVPzi70ToLwsWcnhZT6fUv/rkyYIRn4K40l13HNM/6Jj0zEaSMw/Ib4wJx/9l3QgiazeUO0usylxfprug="
+
+# Spring相关配置
+spring:
+ # 数据库链接配置
+ datasource:
+ name: druidDataSource
+ type: com.alibaba.druid.pool.DruidDataSource
+ # 链接地址,这里需要修改自己的数据库IP和数据库名
+ url: jdbc:mysql://rm-gw0feo75m96osiy49ko.mysql.cn-chengdu.rds.aliyuncs.com:3306/lingtao_file_cloud?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
+ username: admin_666888
+ password: Admin_666888
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ druid:
+ # 链接地址,这里需要修改自己的数据库IP和数据库名
+ # url: jdbc:mysql://127.0.0.1:3306/db_excite_cms?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
+ # username: chen # 数据库用户名
+ # password: 123456 # 数据库密码
+ initial-size: 1
+ min-idle: 1
+ max-active: 20
+ test-on-borrow: true
+ # 连接驱动类名
+ # MySQL 8.x: com.mysql.cj.jdbc.Driver
+ # MySQL 5.x: com.mysql.jdbc.Driver
+ # driver-class-name: com.mysql.cj.jdbc.Driver
+ # 以下是开启监控相关配置
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 设置白名单,不填则允许所有访问
+ allow:
+ url-pattern: /druid/*
+ # 控制台管理用户名和密码
+ login-username: admin
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 慢SQL记录
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+
+ redis:
+ # Redis服务器地址
+ host: localhost
+ # password:
+ # Redis服务器连接端口
+ port: 6379
+ # 连接超时时间(记得添加单位,Duration)
+ timeout: 100000ms
+ # Redis默认情况下有16个分片,这里配置具体使用的分片
+ database: 0
+ # 自定义属性:开启自定义前缀
+ allow-prefix: true
+ # 自定义属性:key的前缀
+ prefix: "com.zxdmy.excite:"
+ lettuce:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制) 默认 8
+ max-active: 100
+ # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
+ max-wait: -1ms
+ # 连接池中的最大空闲连接 默认 8
+ max-idle: 8
+ # 连接池中的最小空闲连接 默认 0
+ min-idle: 0
+ thymeleaf:
+ cache: false #开发时关闭缓存,不然没法实时看到页面
+ mode: LEGACYHTML5 #用非严格的HTML(标签不必严格遵守W3C标准)
+ encoding: UTF-8 # 编码格式
+ servlet:
+ content-type: text/html #内容类型为HTML
+ prefix: classpath:/templates/
+ suffix: .html
+
+ devtools:
+ restart:
+ enabled: true
+ livereload:
+ enabled: true
+
+
+# Mybatis Plus 相关配置
+mybatis-plus:
+ # 配置Mapper映射文件
+ mapper-locations: classpath*:/mapper/**/**Mapper.xml
+ # 实体扫描,多个package用逗号或者分号分隔
+ typeAliasesPackage: com.zxdmy.excite.system.entity;com.zxdmy.excite.common.entity
+ configuration:
+ # 自动驼峰命名
+ map-underscore-to-camel-case: true
+ auto-mapping-behavior: full
+ cache-enabled: false
+ # 打印SQL
+ log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+ global-config:
+ db-config:
+ # 主键类型 0:"数据库ID自增", 1:"用户输入ID", 2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+ id-type: auto
+ # 驼峰下划线转换
+ table-underline: true
+ # 逻辑删除
+ logic-delete-value: 1
+ logic-not-delete-value: 0
+
+# OpenApi 接口文档信息配置
+springdoc:
+ api-docs:
+ # 开启或关闭swagger,关闭后,无法访问和查看接口文档
+ enabled: true
+ swagger-ui:
+ # 打开swagger的地址。当前:http://localhost:8181/swagger
+ path: /swagger
+ csrf:
+ enabled: true # 开启跨域访问
+ # 包扫描路径,多个package用英文逗号分隔。如果配置了分组,可以不用设置此项。
+ # packages-to-scan: com.zxdmy.excite.system.controller,com.zxdmy.excite.system.entity
+ # 分组配置,
+ group-configs:
+ # 分组名
+ - group: system
+ # 匹配方式1:按路径匹配
+ pathsToMatch: /system/**
+# # 分组名
+# - group: system
+# # 匹配方式2:按包路径匹配;多个package用英文逗号分隔
+# packagesToScan: com.zxdmy.excite.system
+
+# Sa-Token配置(权限配置使用)
+sa-token:
+ # token名称 (同时也是cookie名称)
+ token-name: "com.zxdmy.excite"
+ # token有效期,单位s 默认30天(2592000), -1代表永不过期
+ timeout: 259200
+ # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒,-1表示永不过期
+ activity-timeout: 7200
+ # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
+ is-concurrent: true
+ # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
+ is-share: false
+ # token风格
+ token-style: uuid
+ # 是否输出操作日志
+ is-log: true
+
+
+
+aliyun:
+ oss:
+ #你自己阿里云账户的endpoint
+ endpoint: oss-cn-hangzhou.aliyuncs.com
+ #你自己阿里云账户的accessKeyId
+ accessKeyId: LTAI5tE7wuNkeT9jZ42bQnyr
+ #你自己阿里云账户的accessKeySecret
+ accessKeySecret: NnutvWhKl4HbQFSad3HosYbCkEkbjN
+ #你自己阿里云账户的bucketName
+ bucketName: ltcloudfile
+ #Oss前缀路径
+ prefix_dir: yangcai365_design
+
+ region: oss-cn-hangzhou
+ #外网访问域名
+ endpointExternal: http://oss-cn-hangzhou.aliyuncs.com
+ #内网访问域名
+ endpointInternal: http://oss-cn-hangzhou-internal.aliyuncs.com
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ss-admin/src/main/resources/banner.txt b/ss-admin/src/main/resources/banner.txt
new file mode 100644
index 0000000..bff73ee
--- /dev/null
+++ b/ss-admin/src/main/resources/banner.txt
@@ -0,0 +1,40 @@
+/*#####################################################
+# #
+# _oo0oo_ #
+# o8888888o #
+# 88" . "88 #
+# (| -_- |) #
+# 0\ = /0 #
+# ___/`---'\___ #
+# .' \\|???? |# '. #
+# / \\|||? :? |||# \ #
+# / _||||| -:- |||||- \ #
+# |?? | \\\? -? #/ |?? | #
+# | \_|? ''\---/''? |_/ | #
+# \? .-\__? '-'? ___/-. / #
+# ___'. .'? /--.--\? `. .'___ #
+# ."" ' `.___\_<|>_/___.' >' "". #
+# | | :? `- \`.;`\ _ /`;.`/ - ` : | | #
+# \? \ `_.?? \_ __\ /__ _/?? .-` /? / #
+# =====`-.____`.___ \_____/___.-`___.-'===== #
+# `=---=' #
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #
+# #
+# 佛祖保佑 永无BVG #
+# #
+#####################################################*/
+
+
+ ┌─────────────────────────────────────────────┐
+ │ 🙏 南无阿弥陀佛 🙏 │
+ │ 🐛 永无bug 🎯 │
+ │ │
+ │ 🌸 Spring Boot 加持中... │
+ │ 🪷 代码清净无染 │
+ │ 📿 运行稳定如常 │
+ └─────────────────────────────────────────────┘
+
+应用: ${spring.application.name}
+端口: ${server.port}
+环境: ${spring.profiles.active:default}
+内存: ${java.vm.name} ${java.vm.version}
diff --git a/ss-admin/src/main/resources/static/api/clear.json b/ss-admin/src/main/resources/static/api/clear.json
new file mode 100644
index 0000000..e0f5ed7
--- /dev/null
+++ b/ss-admin/src/main/resources/static/api/clear.json
@@ -0,0 +1,4 @@
+{
+ "code": 1,
+ "msg": "服务端清理缓存成功"
+}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/api/init.json b/ss-admin/src/main/resources/static/api/init.json
new file mode 100644
index 0000000..8c7383c
--- /dev/null
+++ b/ss-admin/src/main/resources/static/api/init.json
@@ -0,0 +1,245 @@
+{
+ "homeInfo": {
+ "title": "首页",
+ "href": "page/welcome-1.html?t=1"
+ },
+ "logoInfo": {
+ "title": "LAYUI MINI",
+ "image": "images/logo.png",
+ "href": ""
+ },
+ "menuInfo": [
+ {
+ "title": "常规管理",
+ "icon": "fa fa-address-book",
+ "href": "",
+ "target": "_self",
+ "child": [
+ {
+ "title": "主页模板",
+ "href": "",
+ "icon": "fa fa-home",
+ "target": "_self",
+ "child": [
+ {
+ "title": "主页一",
+ "href": "page/welcome-1.html",
+ "icon": "fa fa-tachometer",
+ "target": "_self"
+ },
+ {
+ "title": "主页二",
+ "href": "page/welcome-2.html",
+ "icon": "fa fa-tachometer",
+ "target": "_self"
+ },
+ {
+ "title": "主页三",
+ "href": "page/welcome-3.html",
+ "icon": "fa fa-tachometer",
+ "target": "_self"
+ }
+ ]
+ },
+ {
+ "title": "菜单管理",
+ "href": "page/menu.html",
+ "icon": "fa fa-window-maximize",
+ "target": "_self"
+ },
+ {
+ "title": "系统设置",
+ "href": "page/setting.html",
+ "icon": "fa fa-gears",
+ "target": "_self"
+ },
+ {
+ "title": "表格示例",
+ "href": "page/table.html",
+ "icon": "fa fa-file-text",
+ "target": "_self"
+ },
+ {
+ "title": "表单示例",
+ "href": "",
+ "icon": "fa fa-calendar",
+ "target": "_self",
+ "child": [
+ {
+ "title": "普通表单",
+ "href": "page/form.html",
+ "icon": "fa fa-list-alt",
+ "target": "_self"
+ },
+ {
+ "title": "分步表单",
+ "href": "page/form-step.html",
+ "icon": "fa fa-navicon",
+ "target": "_self"
+ }
+ ]
+ },
+ {
+ "title": "登录模板",
+ "href": "",
+ "icon": "fa fa-flag-o",
+ "target": "_self",
+ "child": [
+ {
+ "title": "登录-1",
+ "href": "page/login-1.html",
+ "icon": "fa fa-stumbleupon-circle",
+ "target": "_blank"
+ },
+ {
+ "title": "登录-2",
+ "href": "page/login-2.html",
+ "icon": "fa fa-viacoin",
+ "target": "_blank"
+ },
+ {
+ "title": "登录-3",
+ "href": "page/login-3.html",
+ "icon": "fa fa-tags",
+ "target": "_blank"
+ }
+ ]
+ },
+ {
+ "title": "异常页面",
+ "href": "",
+ "icon": "fa fa-home",
+ "target": "_self",
+ "child": [
+ {
+ "title": "404页面",
+ "href": "page/404.html",
+ "icon": "fa fa-hourglass-end",
+ "target": "_self"
+ }
+ ]
+ },
+ {
+ "title": "其它界面",
+ "href": "",
+ "icon": "fa fa-snowflake-o",
+ "target": "",
+ "child": [
+ {
+ "title": "按钮示例",
+ "href": "page/button.html",
+ "icon": "fa fa-snowflake-o",
+ "target": "_self"
+ },
+ {
+ "title": "弹出层",
+ "href": "page/layer.html",
+ "icon": "fa fa-shield",
+ "target": "_self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "组件管理",
+ "icon": "fa fa-lemon-o",
+ "href": "",
+ "target": "_self",
+ "child": [
+ {
+ "title": "图标列表",
+ "href": "page/icon.html",
+ "icon": "fa fa-dot-circle-o",
+ "target": "_self"
+ },
+ {
+ "title": "图标选择",
+ "href": "page/icon-picker.html",
+ "icon": "fa fa-adn",
+ "target": "_self"
+ },
+ {
+ "title": "颜色选择",
+ "href": "page/color-select.html",
+ "icon": "fa fa-dashboard",
+ "target": "_self"
+ },
+ {
+ "title": "下拉选择",
+ "href": "page/table-select.html",
+ "icon": "fa fa-angle-double-down",
+ "target": "_self"
+ },
+ {
+ "title": "文件上传",
+ "href": "page/upload.html",
+ "icon": "fa fa-arrow-up",
+ "target": "_self"
+ },
+ {
+ "title": "富文本编辑器",
+ "href": "page/editor.html",
+ "icon": "fa fa-edit",
+ "target": "_self"
+ },
+ {
+ "title": "省市县区选择器",
+ "href": "page/area.html",
+ "icon": "fa fa-rocket",
+ "target": "_self"
+ }
+ ]
+ },
+ {
+ "title": "其它管理",
+ "icon": "fa fa-slideshare",
+ "href": "",
+ "target": "_self",
+ "child": [
+ {
+ "title": "多级菜单",
+ "href": "",
+ "icon": "fa fa-meetup",
+ "target": "",
+ "child": [
+ {
+ "title": "按钮1",
+ "href": "page/button.html?v=1",
+ "icon": "fa fa-calendar",
+ "target": "_self",
+ "child": [
+ {
+ "title": "按钮2",
+ "href": "page/button.html?v=2",
+ "icon": "fa fa-snowflake-o",
+ "target": "_self",
+ "child": [
+ {
+ "title": "按钮3",
+ "href": "page/button.html?v=3",
+ "icon": "fa fa-snowflake-o",
+ "target": "_self"
+ },
+ {
+ "title": "表单4",
+ "href": "page/form.html?v=1",
+ "icon": "fa fa-calendar",
+ "target": "_self"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "失效菜单",
+ "href": "page/error.html",
+ "icon": "fa fa-superpowers",
+ "target": "_self"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/api/menus.json b/ss-admin/src/main/resources/static/api/menus.json
new file mode 100644
index 0000000..e14d00e
--- /dev/null
+++ b/ss-admin/src/main/resources/static/api/menus.json
@@ -0,0 +1,254 @@
+{
+ "code": 0,
+ "msg": "",
+ "count": 19,
+ "data": [
+ {
+ "authorityId": 1,
+ "authorityName": "系统管理",
+ "orderNumber": 1,
+ "menuUrl": null,
+ "menuIcon": "layui-icon-set",
+ "createTime": "2018/06/29 11:05:41",
+ "authority": null,
+ "checked": 0,
+ "updateTime": "2018/07/13 09:13:42",
+ "isMenu": 0,
+ "parentId": -1
+ },
+ {
+ "authorityId": 2,
+ "authorityName": "用户管理",
+ "orderNumber": 2,
+ "menuUrl": "system/user",
+ "menuIcon": null,
+ "createTime": "2018/06/29 11:05:41",
+ "authority": null,
+ "checked": 0,
+ "updateTime": "2018/07/13 09:13:42",
+ "isMenu": 0,
+ "parentId": 1
+ },
+ {
+ "authorityId": 3,
+ "authorityName": "查询用户",
+ "orderNumber": 3,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/07/21 13:54:16",
+ "authority": "user:view",
+ "checked": 0,
+ "updateTime": "2018/07/21 13:54:16",
+ "isMenu": 1,
+ "parentId": 2
+ },
+ {
+ "authorityId": 4,
+ "authorityName": "添加用户",
+ "orderNumber": 4,
+ "menuUrl": null,
+ "menuIcon": null,
+ "createTime": "2018/06/29 11:05:41",
+ "authority": "user:add",
+ "checked": 0,
+ "updateTime": "2018/07/13 09:13:42",
+ "isMenu": 1,
+ "parentId": 2
+ },
+ {
+ "authorityId": 5,
+ "authorityName": "修改用户",
+ "orderNumber": 5,
+ "menuUrl": null,
+ "menuIcon": null,
+ "createTime": "2018/06/29 11:05:41",
+ "authority": "user:edit",
+ "checked": 0,
+ "updateTime": "2018/07/13 09:13:42",
+ "isMenu": 1,
+ "parentId": 2
+ },
+ {
+ "authorityId": 6,
+ "authorityName": "删除用户",
+ "orderNumber": 6,
+ "menuUrl": null,
+ "menuIcon": null,
+ "createTime": "2018/06/29 11:05:41",
+ "authority": "user:delete",
+ "checked": 0,
+ "updateTime": "2018/07/13 09:13:42",
+ "isMenu": 1,
+ "parentId": 2
+ },
+ {
+ "authorityId": 7,
+ "authorityName": "角色管理",
+ "orderNumber": 7,
+ "menuUrl": "system/role",
+ "menuIcon": null,
+ "createTime": "2018/06/29 11:05:41",
+ "authority": null,
+ "checked": 0,
+ "updateTime": "2018/07/13 09:13:42",
+ "isMenu": 0,
+ "parentId": 1
+ },
+ {
+ "authorityId": 8,
+ "authorityName": "查询角色",
+ "orderNumber": 8,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/07/21 13:54:59",
+ "authority": "role:view",
+ "checked": 0,
+ "updateTime": "2018/07/21 13:54:58",
+ "isMenu": 1,
+ "parentId": 7
+ },
+ {
+ "authorityId": 9,
+ "authorityName": "添加角色",
+ "orderNumber": 9,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/06/29 11:05:41",
+ "authority": "role:add",
+ "checked": 0,
+ "updateTime": "2018/07/13 09:13:42",
+ "isMenu": 1,
+ "parentId": 7
+ },
+ {
+ "authorityId": 10,
+ "authorityName": "修改角色",
+ "orderNumber": 10,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/06/29 11:05:41",
+ "authority": "role:edit",
+ "checked": 0,
+ "updateTime": "2018/07/13 09:13:42",
+ "isMenu": 1,
+ "parentId": 7
+ },
+ {
+ "authorityId": 11,
+ "authorityName": "删除角色",
+ "orderNumber": 11,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/06/29 11:05:41",
+ "authority": "role:delete",
+ "checked": 0,
+ "updateTime": "2018/07/13 09:13:42",
+ "isMenu": 1,
+ "parentId": 7
+ },
+ {
+ "authorityId": 12,
+ "authorityName": "角色权限管理",
+ "orderNumber": 12,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/06/29 11:05:41",
+ "authority": "role:auth",
+ "checked": 0,
+ "updateTime": "2018/07/13 15:27:18",
+ "isMenu": 1,
+ "parentId": 7
+ },
+ {
+ "authorityId": 13,
+ "authorityName": "权限管理",
+ "orderNumber": 13,
+ "menuUrl": "system/authorities",
+ "menuIcon": null,
+ "createTime": "2018/06/29 11:05:41",
+ "authority": null,
+ "checked": 0,
+ "updateTime": "2018/07/13 15:45:13",
+ "isMenu": 0,
+ "parentId": 1
+ },
+ {
+ "authorityId": 14,
+ "authorityName": "查询权限",
+ "orderNumber": 14,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/07/21 13:55:57",
+ "authority": "authorities:view",
+ "checked": 0,
+ "updateTime": "2018/07/21 13:55:56",
+ "isMenu": 1,
+ "parentId": 13
+ },
+ {
+ "authorityId": 15,
+ "authorityName": "添加权限",
+ "orderNumber": 15,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/06/29 11:05:41",
+ "authority": "authorities:add",
+ "checked": 0,
+ "updateTime": "2018/06/29 11:05:41",
+ "isMenu": 1,
+ "parentId": 13
+ },
+ {
+ "authorityId": 16,
+ "authorityName": "修改权限",
+ "orderNumber": 16,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/07/13 09:13:42",
+ "authority": "authorities:edit",
+ "checked": 0,
+ "updateTime": "2018/07/13 09:13:42",
+ "isMenu": 1,
+ "parentId": 13
+ },
+ {
+ "authorityId": 17,
+ "authorityName": "删除权限",
+ "orderNumber": 17,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/06/29 11:05:41",
+ "authority": "authorities:delete",
+ "checked": 0,
+ "updateTime": "2018/06/29 11:05:41",
+ "isMenu": 1,
+ "parentId": 13
+ },
+ {
+ "authorityId": 18,
+ "authorityName": "登录日志",
+ "orderNumber": 18,
+ "menuUrl": "system/loginRecord",
+ "menuIcon": null,
+ "createTime": "2018/06/29 11:05:41",
+ "authority": null,
+ "checked": 0,
+ "updateTime": "2018/06/29 11:05:41",
+ "isMenu": 0,
+ "parentId": 1
+ },
+ {
+ "authorityId": 19,
+ "authorityName": "查询登录日志",
+ "orderNumber": 19,
+ "menuUrl": "",
+ "menuIcon": "",
+ "createTime": "2018/07/21 13:56:43",
+ "authority": "loginRecord:view",
+ "checked": 0,
+ "updateTime": "2018/07/21 13:56:43",
+ "isMenu": 1,
+ "parentId": 18
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/api/table.json b/ss-admin/src/main/resources/static/api/table.json
new file mode 100644
index 0000000..7bda61b
--- /dev/null
+++ b/ss-admin/src/main/resources/static/api/table.json
@@ -0,0 +1,127 @@
+{
+ "code": 0,
+ "msg": "",
+ "count": 1000,
+ "data": [
+ {
+ "id": 10000,
+ "username": "user-0",
+ "sex": "女",
+ "city": "城市-0",
+ "sign": "签名-0",
+ "experience": 255,
+ "logins": 24,
+ "wealth": 82830700,
+ "classify": "作家",
+ "score": 57
+ },
+ {
+ "id": 10001,
+ "username": "user-1",
+ "sex": "男",
+ "city": "城市-1",
+ "sign": "签名-1",
+ "experience": 884,
+ "logins": 58,
+ "wealth": 64928690,
+ "classify": "词人",
+ "score": 27
+ },
+ {
+ "id": 10002,
+ "username": "user-2",
+ "sex": "女",
+ "city": "城市-2",
+ "sign": "签名-2",
+ "experience": 650,
+ "logins": 77,
+ "wealth": 6298078,
+ "classify": "酱油",
+ "score": 31
+ },
+ {
+ "id": 10003,
+ "username": "user-3",
+ "sex": "女",
+ "city": "城市-3",
+ "sign": "签名-3",
+ "experience": 362,
+ "logins": 157,
+ "wealth": 37117017,
+ "classify": "诗人",
+ "score": 68
+ },
+ {
+ "id": 10004,
+ "username": "user-4",
+ "sex": "男",
+ "city": "城市-4",
+ "sign": "签名-4",
+ "experience": 807,
+ "logins": 51,
+ "wealth": 76263262,
+ "classify": "作家",
+ "score": 6
+ },
+ {
+ "id": 10005,
+ "username": "user-5",
+ "sex": "女",
+ "city": "城市-5",
+ "sign": "签名-5",
+ "experience": 173,
+ "logins": 68,
+ "wealth": 60344147,
+ "classify": "作家",
+ "score": 87
+ },
+ {
+ "id": 10006,
+ "username": "user-6",
+ "sex": "女",
+ "city": "城市-6",
+ "sign": "签名-6",
+ "experience": 982,
+ "logins": 37,
+ "wealth": 57768166,
+ "classify": "作家",
+ "score": 34
+ },
+ {
+ "id": 10007,
+ "username": "user-7",
+ "sex": "男",
+ "city": "城市-7",
+ "sign": "签名-7",
+ "experience": 727,
+ "logins": 150,
+ "wealth": 82030578,
+ "classify": "作家",
+ "score": 28
+ },
+ {
+ "id": 10008,
+ "username": "user-8",
+ "sex": "男",
+ "city": "城市-8",
+ "sign": "签名-8",
+ "experience": 951,
+ "logins": 133,
+ "wealth": 16503371,
+ "classify": "词人",
+ "score": 14
+ },
+ {
+ "id": 10009,
+ "username": "user-9",
+ "sex": "女",
+ "city": "城市-9",
+ "sign": "签名-9",
+ "experience": 484,
+ "logins": 25,
+ "wealth": 86801934,
+ "classify": "词人",
+ "score": 75
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/api/tableSelect.json b/ss-admin/src/main/resources/static/api/tableSelect.json
new file mode 100644
index 0000000..37fb0ed
--- /dev/null
+++ b/ss-admin/src/main/resources/static/api/tableSelect.json
@@ -0,0 +1,23 @@
+{
+ "code": 0,
+ "msg": "",
+ "count": 16,
+ "data": [
+ { "id":"001", "username":"张玉林", "sex":"女" },
+ { "id":"002", "username":"刘晓军", "sex":"男" },
+ { "id":"003", "username":"张恒", "sex":"男" },
+ { "id":"004", "username":"朱一", "sex":"男" },
+ { "id":"005", "username":"刘佳能", "sex":"女" },
+ { "id":"006", "username":"晓梅", "sex":"女" },
+ { "id":"007", "username":"马冬梅", "sex":"女" },
+ { "id":"008", "username":"刘晓庆", "sex":"女" },
+ { "id":"009", "username":"刘晓庆", "sex":"女" },
+ { "id":"010", "username":"刘晓庆", "sex":"女" },
+ { "id":"011", "username":"刘晓庆", "sex":"女" },
+ { "id":"012", "username":"刘晓庆", "sex":"女" },
+ { "id":"013", "username":"刘晓庆", "sex":"女" },
+ { "id":"014", "username":"刘晓庆", "sex":"女" },
+ { "id":"015", "username":"刘晓庆", "sex":"女" },
+ { "id":"016", "username":"刘晓庆", "sex":"女" }
+ ]
+}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/api/upload.json b/ss-admin/src/main/resources/static/api/upload.json
new file mode 100644
index 0000000..691902d
--- /dev/null
+++ b/ss-admin/src/main/resources/static/api/upload.json
@@ -0,0 +1,10 @@
+{
+ "code": 1,
+ "msg": "上传成功",
+ "data": {
+ "url": [
+ "../images/logo.png",
+ "../images/captcha.jpg"
+ ]
+ }
+}
diff --git a/ss-admin/src/main/resources/static/css/layuimini.css b/ss-admin/src/main/resources/static/css/layuimini.css
new file mode 100644
index 0000000..6a96476
--- /dev/null
+++ b/ss-admin/src/main/resources/static/css/layuimini.css
@@ -0,0 +1,927 @@
+/**
+配色方案(如有需要,请自行配置)
+ */
+/**头部-配色*/
+.layui-layout-admin .layui-header {
+ background-color: #1aa094 !important;
+}
+
+.layui-header > ul > .layui-nav-item.layui-this, .layuimini-tool i:hover {
+ background-color: #197971 !important;
+}
+
+.layui-header .layuimini-header-content > ul > .layui-nav-item.layui-this, .layuimini-tool i:hover {
+ background-color: #197971 !important;
+}
+
+/**logo-配色*/
+.layui-layout-admin .layuimini-logo {
+ background-color: #ffffff !important;
+}
+
+/**左侧-配色*/
+.layui-side.layui-bg-black, .layui-side.layui-bg-black > .layuimini-menu-left > ul {
+ background-color: #ffffff !important;
+}
+
+.layuimini-menu-left .layui-nav .layui-nav-child a:hover:not(.layui-this) {
+ background-color: #3b3f4b;
+}
+
+/**左侧菜单选中-配色*/
+.layui-layout-admin .layui-nav-tree .layui-this, .layui-layout-admin .layui-nav-tree .layui-this > a, .layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this, .layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this a {
+ background-color: #1aa094 !important;
+}
+
+
+/**头部样式 */
+.layui-layout-admin .header {
+ position: fixed;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+}
+
+.layuimini-header-menu, .layui-header {
+ height: 60px !important;
+}
+
+.layuimini-header-menu > .layui-nav-item {
+ color: #1b1d21;
+ height: 60px !important;
+ line-height: 60px !important;
+}
+
+.layui-header > .layui-layout-right > .layui-nav-item {
+ height: 60px !important;
+ line-height: 60px !important;
+}
+
+.layui-layout-left {
+ left: 295px !important;
+}
+
+.layui-nav.layui-layout-left.layuimini-header-menu.layuimini-pc-show {
+ font-weight: bold;
+ transition: all .2s;
+}
+
+
+/**logo演示(通用) */
+.layui-layout-admin .layuimini-logo {
+ font-weight: bold;
+ color: #ffffff !important;
+ height: 60px !important;
+ line-height: 60px !important;
+ overflow: hidden;
+ line-height: 64px;
+ transition: all .2s !important;
+}
+
+.layui-layout-admin .layuimini-logo img {
+ display: inline-block;
+ height: 40px;
+ vertical-align: middle;
+}
+
+.layui-layout-admin .layuimini-logo h1 {
+ display: inline-block;
+ margin: 0 0 0 12px;
+ color: #ffffff;
+ font-weight: 600;
+ font-size: 20px;
+ font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
+ vertical-align: middle;
+}
+
+/**缩放工具(通用) */
+.layuimini-tool {
+ position: absolute !important;
+ top: 0;
+ left: 235px;
+ width: 60px;
+ height: 100%;
+ line-height: 60px;
+ text-align: center;
+ color: #ffffff !important;
+ transition: all .2s;
+}
+
+/**缩放工具(缩放) */
+.layuimini-tool i {
+ display: block;
+ color: #bbe3df;
+ width: 32px;
+ height: 32px;
+ line-height: 32px;
+ border-radius: 3px;
+ text-align: center;
+ margin-top: 15px;
+ cursor: pointer;
+}
+
+/**tab选项卡 */
+.layuimini-tab {
+ margin: 0px;
+ overflow: hidden;
+ height: 100% !important;
+}
+
+.layuimini-tab .layui-tab-content {
+ height: calc(100% - 37px) !important;
+}
+
+.layuimini-tab .layui-tab-content .layui-tab-item {
+ height: 100%;
+}
+
+.layuimini-tab .layui-tab-content {
+ padding: 0px;
+}
+
+.layuimini-tab .layui-tab-title {
+ border: none;
+ border: 1px solid whitesmoke;
+ background-color: white;
+}
+
+.layuimini-tab .layui-tab-title li {
+ border-right: 1px solid whitesmoke;
+ color: dimgray;
+}
+
+.layuimini-tab .layui-tab-title .layui-tab-bar {
+ display: none;
+}
+
+.layuimini-tab .layui-tab-title .layui-this:after {
+ display: none;
+}
+
+.layuimini-tab .layui-tab-title .layuimini-tab-active {
+ display: inline-block;
+ background-color: lightgray;
+ width: 9px;
+ height: 9px;
+ border-radius: 30px;
+ margin-right: 5px;
+}
+
+.layuimini-tab .layui-tab-title .layui-this .layuimini-tab-active {
+ background-color: #1aa094;
+}
+
+.layuimini-tab > .layui-tab-title, .layuimini-tab > .close-box {
+ height: 35px !important;
+}
+
+.layuimini-tab > .layui-tab-title li, .layuimini-tab > .close-box li {
+ line-height: 35px !important;
+}
+
+.layuimini-tab .layui-tab-title span {
+ color: #616161;
+}
+
+.layuimini-tab .layui-tab-title .layui-this span {
+ color: #070707;
+}
+
+.layuimini-tab .layui-tab-title .layui-tab-close {
+ font-size: 12px !important;
+ width: 14px !important;
+ height: 14px !important;
+ line-height: 16px !important;
+}
+
+.layuimini-tab .layui-tab-title .layui-tab-close:hover {
+ border-radius: 4em;
+ background: #ff5722;
+}
+
+.layuimini-tab .layui-tab-title .disable-close + .layui-tab-close {
+ display: none;
+}
+
+.layuimini-tab .layui-tab-title .able-close + .layui-tab-close {
+ display: inline-block;
+}
+
+.layuimini-tab .layui-tab-control > li {
+ position: absolute;
+ top: 0px;
+ height: 35px;
+ line-height: 35px;
+ width: 35px;
+ text-align: center;
+ background-color: white;
+ border-top: whitesmoke 1px solid;
+ border-bottom: whitesmoke 1px solid;
+}
+
+.layuimini-tab .layuimini-tab-roll-left {
+ left: 0px;
+ border-right: whitesmoke 1px solid;
+ border-left: whitesmoke 1px solid;
+}
+
+.layuimini-tab .layuimini-tab-roll-right {
+ right: 35px;
+ border-left: 1px solid whitesmoke;
+}
+
+.layuimini-tab .layui-tab-tool {
+ right: 0px;
+ border-left: 1px solid whitesmoke;
+}
+
+.layuimini-tab .layui-tab-control .layui-tab-tool,
+.layuimini-tab .layui-tab-control .layuimini-tab-roll-left,
+.layuimini-tab .layui-tab-control .layuimini-tab-roll-right {
+ display: none;
+}
+
+.layuimini-tab.layui-tab-roll .layui-tab-control .layuimini-tab-roll-left,
+.layuimini-tab.layui-tab-roll .layui-tab-control .layuimini-tab-roll-right {
+ display: block;
+}
+
+.layuimini-tab.layui-tab-roll .layui-tab-control .layuimini-tab-roll-right {
+ right: 0px;
+ border-right: 1px solid whitesmoke;
+}
+
+.layuimini-tab.layui-tab-roll .layui-tab-title {
+ padding-left: 35px;
+ padding-right: 35px;
+}
+
+
+.layuimini-tab.layui-tab-tool .layui-tab-control .layui-tab-tool {
+ display: block;
+}
+
+.layuimini-tab.layui-tab-tool .layui-tab-title {
+ padding-left: 0px;
+ padding-right: 35px;
+}
+
+
+.layuimini-tab.layui-tab-rollTool .layui-tab-title {
+ padding-left: 35px;
+ padding-right: 80px;
+}
+
+.layuimini-tab.layui-tab-rollTool .layui-tab-control .layuimini-tab-roll-left,
+.layuimini-tab.layui-tab-rollTool .layui-tab-control .layuimini-tab-roll-right,
+.layuimini-tab.layui-tab-rollTool .layui-tab-control .layui-tab-tool {
+ display: block;
+}
+
+.layuimini-tab .layui-tab-tool .layui-nav {
+ position: absolute;
+ height: 43px !important;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ padding: 0;
+ background: 0 0;
+}
+
+.layuimini-tab .layui-tab-tool .layui-nav-item {
+ height: 35px;
+}
+
+.layuimini-tab .layui-tab-tool .layui-nav-bar {
+ display: none;
+}
+
+.layuimini-tab .layui-tab-tool .layui-nav-child {
+ left: auto;
+ top: 45px;
+ right: 3px;
+ width: 120px;
+ border: 1px solid whitesmoke;
+}
+
+.layuimini-tab .layui-tab-tool .layui-this a {
+ background-color: #009688;
+}
+
+.layuimini-tab-loading {
+ position: absolute;
+ display: none;
+ width: 100%;
+ height: calc(100% - 37px);
+ top: 37px;
+ z-index: 19;
+ background-color: #fff
+}
+
+.layuimini-tab-loading.close {
+ animation: close 1s;
+ -webkit-animation: close 1s;
+ animation-fill-mode: forwards;
+}
+
+/**左侧菜单栏 (通用) */
+.layui-side.layui-bg-black {
+ transition: all .2s;
+}
+
+.layui-side.layui-bg-black > .layuimini-menu-left > ul {
+ transition: all .2s;
+}
+
+.layui-side.layui-bg-black > .layuimini-menu-left > ul > .layui-nav-item:first-child {
+ border-top: 1px solid #4b5461;
+}
+
+.layuimini-menu-left .layui-nav .layui-nav-item a {
+ height: 40px;
+ line-height: 40px;
+ padding-right: 30px;
+}
+
+.layuimini-menu-left .layui-nav .layui-nav-item > a {
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
+.layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child {
+ background: 0 0 !important
+}
+
+.layuimini-menu-left .layui-nav .layui-nav-more {
+ right: 15px;
+}
+
+.layuimini-menu-left .layui-nav .layui-nav-item a:hover {
+ background-color: transparent !important;
+}
+
+.layuimini-menu-left .layui-nav {
+ background-color: transparent !important;
+}
+
+
+/**左侧菜单栏 (正常) */
+.layui-layout-body .layui-nav-itemed .layui-nav-child a, .layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child a {
+ padding-left: 35px;
+}
+
+.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child a {
+ padding-left: 45px;
+}
+
+.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child .layui-nav-child a {
+ padding-left: 55px;
+}
+
+.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child .layui-nav-child .layui-nav-child a {
+ padding-left: 65px;
+}
+
+.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-itemed > .layui-nav-child {
+ padding: 5px 0;
+}
+
+/**内容主体(通用) */
+.layui-layout-admin .layui-body {
+ overflow: hidden;
+ bottom: 0px !important;
+ top: 60px !important;
+ transition: all .2s;
+}
+
+/**选择配色方案 */
+.layuimini-color .color-title {
+ padding: 10px 0 10px 20px;
+ border-bottom: 1px solid #d9dada;
+ margin-bottom: 8px;
+}
+
+.layuimini-color .color-content {
+ padding: 10px 5px 0 5px;
+}
+
+.layuimini-color .color-content ul {
+ list-style: none;
+ text-align: center;
+}
+
+.layuimini-color .color-content ul li {
+ position: relative;
+ display: inline-block;
+ vertical-align: top;
+ width: 80px;
+ height: 50px;
+ margin: 0 15px 15px 0;
+ padding: 2px 2px 4px 2px;
+ background-color: #f2f2f2;
+ cursor: pointer;
+ font-size: 12px;
+ color: #666;
+}
+
+.layuimini-color .color-content li.layui-this:after, .layuimini-color .color-content li:hover:after {
+ width: 100%;
+ height: 100%;
+ padding: 4px;
+ top: -5px;
+ left: -5px;
+ border-color: #d8d8d8;
+ opacity: 1;
+}
+
+.layuimini-color .color-content li:after {
+ content: '';
+ position: absolute;
+ z-index: 20;
+ top: 50%;
+ left: 50%;
+ width: 1px;
+ height: 0;
+ border: 1px solid #f2f2f2;
+ transition: all .3s;
+ -webkit-transition: all .3s;
+ opacity: 0;
+}
+
+
+/**其它 */
+.layui-tab-item {
+ width: 100% !important;
+ height: 100% !important;
+}
+
+.layui-nav-item.layui-this {
+ background-color: #1b1d21;
+}
+
+.layui-width-height {
+ width: 100%;
+ height: 95%;
+}
+
+.layui-tab {
+ margin: 0 0 0 0;
+ z-index: 99999;
+}
+
+.text-center {
+ height: 30px !important;
+ line-height: 30px !important;
+ text-align: center !important;
+}
+
+.layui-nav {
+ padding: 0 !important;
+}
+
+.layui-nav .layui-this:after, .layui-nav-bar, .layui-nav-tree .layui-nav-itemed:after {
+ width: 0 !important;
+ height: 0 !important;
+}
+
+.layui-layout-admin .layui-side {
+ top: 60px !important;
+}
+
+.layui-tab-card {
+ box-shadow: 0px 0px 0px #888888;
+ border-bottom: 0;
+}
+
+
+/**自定义滚动条样式 */
+::-webkit-scrollbar {
+ display: none
+}
+
+
+/*移动端遮罩层*/
+.layuimini-make {
+ position: fixed;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ top: 0;
+ z-index: 1000;
+ background: rgba(0, 0, 0, .5);
+ display: none;
+}
+
+.layuimini-mini .layui-header {
+ z-index: 1001;
+}
+
+/**初始化加载层*/
+.layuimini-loader {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: #ffffff;
+ z-index: 999999;
+}
+
+.layuimini-loader .layuimini-loader-inner {
+ display: block;
+ position: relative;
+ left: 50%;
+ top: 50%;
+ width: 150px;
+ height: 150px;
+ margin: -75px 0 0 -75px;
+ border-radius: 50%;
+ border: 3px solid transparent;
+ border-top-color: #1E9FFF;
+ animation: spin 2s linear infinite;
+}
+
+.layuimini-loader .layuimini-loader-inner:before {
+ content: "";
+ position: absolute;
+ top: 5px;
+ left: 5px;
+ right: 5px;
+ bottom: 5px;
+ border-radius: 50%;
+ border: 3px solid transparent;
+ border-top-color: #1E9FFF;
+ animation: spin 3s linear infinite;
+}
+
+.layuimini-loader .layuimini-loader-inner:after {
+ content: "";
+ position: absolute;
+ top: 15px;
+ left: 15px;
+ right: 15px;
+ bottom: 15px;
+ border-radius: 50%;
+ border: 3px solid transparent;
+ border-top-color: #1E9FFF;
+ animation: spin 1.5s linear infinite;
+}
+
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(1turn);
+ }
+}
+
+/*系统设置*/
+
+.layuimini-color .layui-word-aux {
+ position: absolute;
+ left: 60px;
+ top: 12px;
+ font-size: 12px;
+}
+
+.layuimini-color .layui-input-block {
+ margin-left: 15px;
+ min-height: 36px;
+}
+
+.layuimini-color .more-menu-list {
+ width: 100%;
+ margin-top: 30px;
+}
+
+
+.layuimini-color .more-menu-item:first-child {
+ border-top: 1px solid #e8e8e8;
+}
+
+.layuimini-color .more-menu-item .layui-icon {
+ font-size: 18px;
+ padding-right: 10px;
+}
+
+.layuimini-color .more-menu-item {
+ color: #595959;
+ height: 50px;
+ line-height: 50px;
+ font-size: 16px;
+ padding: 0 25px;
+ border-bottom: 1px solid #e8e8e8;
+ font-style: normal;
+ display: block;
+}
+
+.layuimini-color .more-menu-item:hover {
+ background-color: whitesmoke;
+}
+
+.layuimini-color .more-menu-item:after {
+ color: #8c8c8c;
+ right: 16px;
+ content: "\e602";
+ position: absolute;
+ font-family: layui-icon !important;
+}
+
+/**
+鼠标右键
+ */
+.layuimini-tab-mousedown {
+ display: none;
+ width: 80px;
+ position: absolute;
+ top: 0px !important;
+ left: 0px !important;
+}
+
+.layuimini-tab-mousedown dd a {
+ padding: 0 5px;
+ color: #484545;
+}
+
+.layuimini-tab-make{
+ position: absolute;
+ top: 36px;
+ bottom: 0px;
+ width: 100%;
+ background: rgb(255, 255, 255,0);
+ padding: 0px;
+ overflow: hidden;
+}
+
+/**
+菜单缩放
+ */
+.popup-tips .layui-layer-TipsG{
+ display: none;
+}
+.popup-tips.layui-layer-tips .layui-layer-content{
+ padding: 0;
+}
+.popup-tips .layui-nav-tree{
+ width: 150px;
+ border-radius: 10px;
+}
+
+/**左侧菜单字体间距*/
+.layuimini-menu-left .layui-nav-item a span {
+ letter-spacing: 1px;
+}
+
+/**头部菜单字体间距*/
+.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-pc-show,.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-mobile-show {
+ letter-spacing: 1px;
+}
+
+
+/**左侧菜单更多下拉样式*/
+.layuimini-menu-left .layui-nav-more,.layuimini-menu-left-zoom .layui-nav-more {
+ font-family: layui-icon !important;
+ font-size: 12px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ overflow: hidden;
+ width: auto;
+ height: auto;
+ line-height: normal;
+ border: none;
+ display: inline-block;
+ margin-top: -6px !important;
+}
+
+.layuimini-menu-left .layui-nav-child .layui-nav-more {
+ margin-top: -6px !important;
+}
+
+.layuimini-menu-left .layui-nav .layui-nav-mored,.layuimini-menu-left .layui-nav-itemed>a .layui-nav-more{
+ margin-top: -9px!important;
+}
+
+.layuimini-menu-left-zoom.layui-nav .layui-nav-mored,.layuimini-menu-left-zoom.layui-nav-itemed>a .layui-nav-more{
+ margin-top: -9px!important;
+}
+
+.layuimini-menu-left .layui-nav-more:before,.layuimini-menu-left-zoom .layui-nav-more:before {
+ content: "\e61a";
+}
+.layuimini-menu-left .layui-nav-itemed > a > .layui-nav-more,.layuimini-menu-left-zoom .layui-nav-itemed > a > .layui-nav-more {
+ transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -webkit-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ width: 12px;
+ text-align: center;
+ border-style:none;
+}
+
+.layuimini-menu-left .layui-nav-itemed > a > .layui-nav-more:before,.layuimini-menu-left-zoom .layui-nav-itemed > a > .layui-nav-more:before {
+ content: '\e61a';
+ background-color: transparent;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+/**修复左侧菜单字体不对齐的问题*/
+.layuimini-menu-left .layui-nav-item a .fa,.layuimini-menu-left .layui-nav-item a .layui-icon{
+ width: 20px;
+}
+
+
+/**
+ PC版样式
+ */
+@media screen and (min-width: 1025px) {
+ /**头部样式(缩放) */
+ .layuimini-mini .layui-layout-left.layuimini-header-menu.layuimini-pc-show {
+ left: 155px !important;
+ }
+
+ /**logo演示(缩放) */
+ .layuimini-mini .layui-layout-admin .layuimini-logo {
+ width: 60px !important;
+ }
+
+ .layuimini-mini .layui-layout-admin .layuimini-logo h1 {
+ display: none;
+ }
+
+ /**左侧菜单栏(缩放) */
+ .layuimini-mini .layuimini-menu-left {
+ width: 80px !important;
+ }
+
+ .layuimini-mini .layui-side.layui-bg-black, .layuimini-mini .layuimini-menu-left > ul, .layuimini-mini .layuimini-menu-left > ul li i {
+ width: 60px !important;
+ }
+
+ .layuimini-mini .layuimini-menu-left > ul li span:first-child {
+ display: none;
+ }
+
+ .layuimini-mini .layuimini-menu-left > ul li span:last-child {
+ float: right;
+ right: 7px;
+ }
+
+ .layuimini-mini .layuimini-menu-left .layui-nav .layui-nav-item a {
+ height: 40px;
+ line-height: 40px;
+ padding-right: 0px !important;
+ }
+
+ /**内容主体(缩放) */
+ .layuimini-mini .layui-layout-admin .layui-body {
+ left: 60px !important;
+ }
+
+ .layuimini-mini .layuimini-tool {
+ left: 95px !important;
+ }
+
+ .layuimini-pc-show{
+ display: block;
+ }
+ .layuimini-mobile-show{
+ display: none;
+ }
+
+ /**菜单缩放*/
+ .layuimini-mini .layuimini-menu-left .layui-nav-more,.layuimini-mini .layuimini-menu-left .layui-nav-child{
+ display: none;!important;
+ }
+}
+
+/**
+ 手机自适应样式
+*/
+@media screen and (max-width: 1024px) {
+
+ /**
+ 修复低版本IOS不能滑动问题, 但还是有问题, 低版本IOS部分情况下子页面无法自适应
+ */
+ .layuimini-tab .layui-tab-content .layui-tab-item {
+ -webkit-overflow-scrolling: touch;
+ overflow: scroll;
+ width: 100%;
+ height: 100%;
+ }
+
+ .layuimini-tab .layui-tab-content .layui-tab-item iframe {
+ height: 100%;
+ width: 100%;
+ }
+
+ .layuimini-pc-show{
+ display: none;
+ }
+ .layuimini-mobile-show{
+ display: block;
+ }
+ .layuimini-header-content {
+ left: 0;
+ }
+
+ .layui-layout-admin .layui-body .layui-tab-item.layui-show {
+ border-top: 1px solid #e2e2e2;
+ }
+
+ .layuimini-all .layui-layout-left.layuimini-header-menu {
+ left: 15px !important
+ }
+
+ .layuimini-mini .layui-layout-left.layuimini-header-menu {
+ left: 205px !important
+ }
+
+ .layui-layout-admin .layui-nav.layui-layout-right > li:not(.layuimini-setting) {
+ width: 40px !important;
+ }
+
+ .layui-layout-admin .layui-nav.layui-layout-right > li:not(.layuimini-setting) a {
+ padding: 0 15px;
+ }
+
+ .layuimini-all .layui-layout-admin .layui-body {
+ left: 0px !important;
+ }
+
+ .layuimini-mini .layui-layout-admin .layuimini-menu-left, .layuimini-mini .layui-header .layuimini-logo {
+ left: 0;
+ transition: left .2s;
+ z-index: 1001 !important;
+ }
+
+ .layuimini-all .layui-layout-admin .layuimini-menu-left, .layuimini-all .layui-header .layuimini-logo {
+ left: -200px;
+ transition: left .2s;
+ top: 0;
+ z-index: 1002;
+ }
+
+ .layuimini-mini .layui-layout-admin .layui-body {
+ left: 0!important;
+ transition: left .2s;
+ top: 0;
+ z-index: 998;
+ }
+
+ .layuimini-mini .layuimini-make {
+ display: block;
+ }
+
+ .layuimini-multi-module .layuimini-header-content .layuimini-tool {
+ display: none;
+ }
+
+ .layuimini-single-module .layuimini-header-content .layuimini-tool {
+ left: 15px;
+ }
+
+ .layuimini-mini .layuimini-site-mobile {
+ display: none !important;
+ }
+
+ .layuimini-site-mobile {
+ display: block !important;
+ position: fixed;
+ z-index: 100000;
+ bottom: 15px;
+ left: 15px;
+ width: 40px;
+ height: 40px;
+ line-height: 40px;
+ border-radius: 2px;
+ text-align: center;
+ background-color: rgba(0, 0, 0, .7);
+ color: #fff;
+ }
+
+ .layuimini-header-content {
+ z-index: 997;
+ }
+
+ /*修复UC之类的浏览器点击无效*/
+ .layuimini-make {
+ cursor: pointer;
+ }
+
+ .layuimini-site-mobile {
+ cursor: pointer;
+ }
+}
+
+@media screen and (max-width: 550px){
+
+ /**头部右侧数据*/
+ .layuimini-multi-module.layuimini-mini .layuimini-header-content .layui-layout-right {
+ display: none;
+ }
+}
diff --git a/ss-admin/src/main/resources/static/css/login.css b/ss-admin/src/main/resources/static/css/login.css
new file mode 100644
index 0000000..f68a6d6
--- /dev/null
+++ b/ss-admin/src/main/resources/static/css/login.css
@@ -0,0 +1,275 @@
+.main-body {
+ top: 50%;
+ left: 50%;
+ position: absolute;
+ -webkit-transform: translate(-50%, -50%);
+ -moz-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+ -o-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ overflow: hidden;
+}
+
+.login-main .login-bottom .center .item input {
+ display: inline-block;
+ width: 227px;
+ height: 22px;
+ padding: 0;
+ position: absolute;
+ border: 0;
+ outline: 0;
+ font-size: 14px;
+ letter-spacing: 0;
+}
+
+.login-main .login-bottom .center .item .icon-1 {
+ background: url(/images/icon-login.png) no-repeat 1px 0;
+}
+
+.login-main .login-bottom .center .item .icon-2 {
+ background: url(/images/icon-login.png) no-repeat -54px 0;
+}
+
+.login-main .login-bottom .center .item .icon-3 {
+ background: url(/images/icon-login.png) no-repeat -106px 0;
+}
+
+.login-main .login-bottom .center .item .icon-4 {
+ background: url(/images/icon-login.png) no-repeat 0 -43px;
+ position: absolute;
+ right: -10px;
+ cursor: pointer;
+}
+
+.login-main .login-bottom .center .item .icon-5 {
+ background: url(/images/icon-login.png) no-repeat -55px -43px;
+}
+
+.login-main .login-bottom .center .item .icon-6 {
+ background: url(/images/icon-login.png) no-repeat 0 -93px;
+ position: absolute;
+ right: -10px;
+ margin-top: 8px;
+ cursor: pointer;
+}
+
+.login-main .login-bottom .tip .icon-nocheck {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ border-radius: 2px;
+ border: solid 1px #9abcda;
+ position: relative;
+ top: 2px;
+ margin: 1px 8px 1px 1px;
+ cursor: pointer;
+}
+
+.login-main .login-bottom .tip .icon-check {
+ margin: 0 7px 0 0;
+ width: 14px;
+ height: 14px;
+ border: none;
+ background: url(/images/icon-login.png) no-repeat -111px -48px;
+}
+
+.login-main .login-bottom .center .item .icon {
+ display: inline-block;
+ width: 33px;
+ height: 22px;
+}
+
+.login-main .login-bottom .center .item {
+ width: 288px;
+ height: 35px;
+ border-bottom: 1px solid #dae1e6;
+ margin-bottom: 35px;
+}
+
+.login-main {
+ width: 428px;
+ position: relative;
+ float: left;
+}
+
+.login-main .login-top {
+ height: 87px;
+ background-color: #148be4;
+ border-radius: 12px 12px 0 0;
+ font-family: SourceHanSansCN-Regular;
+ font-size: 30px;
+ font-weight: 400;
+ font-stretch: normal;
+ letter-spacing: 0;
+ color: #fff;
+ line-height: 87px;
+ text-align: center;
+ overflow: hidden;
+ -webkit-transform: rotate(0);
+ -moz-transform: rotate(0);
+ -ms-transform: rotate(0);
+ -o-transform: rotate(0);
+ transform: rotate(0);
+}
+
+.login-main .login-top .bg1 {
+ display: inline-block;
+ width: 74px;
+ height: 74px;
+ background: #fff;
+ opacity: .1;
+ border-radius: 0 74px 0 0;
+ position: absolute;
+ left: 0;
+ top: 43px;
+}
+
+.login-main .login-top .bg2 {
+ display: inline-block;
+ width: 94px;
+ height: 94px;
+ background: #fff;
+ opacity: .1;
+ border-radius: 50%;
+ position: absolute;
+ right: -16px;
+ top: -16px;
+}
+
+.login-main .login-bottom {
+ width: 428px;
+ background: #fff;
+ border-radius: 0 0 12px 12px;
+ padding-bottom: 23px;
+}
+
+.login-main .login-bottom .center {
+ width: 288px;
+ margin: 0 auto;
+ padding-top: 30px;
+ padding-bottom: 0px;
+ position: relative;
+}
+
+.login-main .login-bottom .tip {
+ clear: both;
+ height: 16px;
+ line-height: 16px;
+ width: 288px;
+ margin: 0 auto;
+}
+
+body {
+ background: url(/images/bg-login.jpg) 0% 0% / cover no-repeat;
+ position: static;
+ font-size: 14px;
+}
+
+input::-webkit-input-placeholder {
+ color: #a6aebf;
+}
+
+input::-moz-placeholder { /* Mozilla Firefox 19+ */
+ color: #a6aebf;
+}
+
+input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
+ color: #a6aebf;
+}
+
+input:-ms-input-placeholder { /* Internet Explorer 10-11 */
+ color: #a6aebf;
+}
+
+input:-webkit-autofill { /* 取消Chrome记住密码的背景颜色 */
+ -webkit-box-shadow: 0 0 0 1000px white inset !important;
+}
+
+html {
+ height: 100%;
+}
+
+.login-main .login-bottom .tip {
+ clear: both;
+ height: 16px;
+ line-height: 16px;
+ width: 288px;
+ margin: 0 auto;
+}
+
+.login-main .login-bottom .tip .login-tip {
+ font-family: MicrosoftYaHei;
+ font-size: 14px;
+ font-weight: 400;
+ font-stretch: normal;
+ letter-spacing: 0;
+ color: #9abcda;
+ cursor: pointer;
+}
+
+.login-main .login-bottom .tip .forget-password {
+ font-stretch: normal;
+ letter-spacing: 0;
+ color: #1391ff;
+ text-decoration: none;
+ position: absolute;
+ right: 62px;
+}
+
+.login-main .login-bottom .login-btn {
+ width: 288px;
+ height: 40px;
+ background-color: #1E9FFF;
+ border-radius: 16px;
+ margin: 24px auto 0;
+ text-align: center;
+ line-height: 40px;
+ color: #fff;
+ font-size: 14px;
+ letter-spacing: 0;
+ cursor: pointer;
+ border: none;
+}
+
+.login-main .login-bottom .center .item .validateImg {
+ position: absolute;
+ right: 1px;
+ cursor: pointer;
+ height: 36px;
+ border: 1px solid #e6e6e6;
+}
+
+.footer {
+ left: 0;
+ bottom: 0;
+ color: #fff;
+ width: 100%;
+ position: absolute;
+ text-align: center;
+ line-height: 30px;
+ padding-bottom: 10px;
+ text-shadow: #000 0.1em 0.1em 0.1em;
+ font-size: 14px;
+}
+
+.padding-5 {
+ padding: 5px !important;
+}
+
+.footer a, .footer span {
+ color: #fff;
+}
+
+@media screen and (max-width: 428px) {
+ .login-main {
+ width: 360px !important;
+ }
+
+ .login-main .login-top {
+ width: 360px !important;
+ }
+
+ .login-main .login-bottom {
+ width: 360px !important;
+ }
+}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/css/login2/admin.css b/ss-admin/src/main/resources/static/css/login2/admin.css
new file mode 100644
index 0000000..f323f31
--- /dev/null
+++ b/ss-admin/src/main/resources/static/css/login2/admin.css
@@ -0,0 +1,2 @@
+/** EasyWeb iframe v3.1.8 date:2020-05-04 License By http://easyweb.vip */
+*{font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif}body{color:#595959;background-color:#f5f7f9}.layui-layout-body{overflow:auto}.layui-layout-admin{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;-webkit-transition:left .3s,right .3s;transition:left .3s,right .3s}.layui-layout-admin .layui-header{position:absolute;top:0;left:0;right:0;height:50px;background-color:#fff;box-shadow:0 1px 0 0 rgba(0,0,0,.03);z-index:999}.layui-layout-admin .layui-header .layui-logo{color:#ddd;width:235px;line-height:50px;background-color:#191a23;box-shadow:1px 2px 2px 0 rgba(0,0,0,.05);position:relative;vertical-align:top;white-space:nowrap;display:inline-block;-webkit-transition:width .3s;transition:width .3s;overflow:hidden}.layui-layout-admin .layui-header .layui-logo img{height:28px;vertical-align:middle}.layui-layout-admin .layui-header .layui-logo cite{font-style:normal;vertical-align:middle}.layui-layout-admin .layui-header .layui-layout-left{padding:0;vertical-align:top;display:inline-block;position:static!important}.layui-layout-admin .layui-header .layui-layout-right{padding:0}.layui-layout-admin .layui-header .layui-nav .layui-this:after,.layui-layout-admin .layui-header .layui-nav-bar{height:2px;top:0!important;background-color:#191a23}.layui-layout-admin .layui-header .layui-nav .layui-nav-item{line-height:50px;vertical-align:top}.layui-layout-admin .layui-header .layui-nav .layui-nav-item .layui-nav-child{top:55px}.layui-layout-admin .layui-header .layui-nav-item .layui-icon{font-size:16px}.layui-layout-admin .layui-header a{color:#595959;padding:0 15px;cursor:pointer}.layui-layout-admin .layui-header a:hover{color:#595959}.layui-layout-admin .layui-header .layui-nav-child a{color:#595959;text-align:center}.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-color:#8c8c8c transparent transparent}.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #8c8c8c}.layui-layout-admin .layui-header .layui-nav-img{width:26px;height:26px;margin-right:2px;vertical-align:middle}.layui-layout-admin .layui-header .layui-nav-img+cite{margin-right:3px;vertical-align:middle}.layui-layout-admin .layui-header .layui-badge-dot{right:8px;margin:-10px 0 0 0}.layui-layout-admin .layui-body{position:absolute;left:235px;top:50px;z-index:auto;overflow:auto;-webkit-transition:left .3s;transition:left .3s;-webkit-overflow-scrolling:touch}.admin-iframe{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%}.layui-fluid{padding:15px}.layui-layout-admin .layui-footer{position:absolute;left:235px;background:#fff;box-sizing:border-box;border-top:1px solid #f5f7f9;-webkit-transition:left .3s;transition:left .3s;overflow:hidden}.close-footer .layui-layout-admin .layui-footer{display:none}.close-footer .layui-layout-admin .layui-body{bottom:0}.layui-layout-admin .layui-side{position:absolute;top:50px;width:235px;background-color:#191a23;box-shadow:1px 2px 2px 0 rgba(0,0,0,.05);-webkit-transition:width .3s;transition:width .3s;-webkit-user-select:none;user-select:none;z-index:1000}.layui-layout-admin .layui-side .layui-side-scroll{width:255px;-webkit-transition:width .3s;transition:width .3s}.layui-layout-admin .layui-side .layui-nav{width:235px;background-color:transparent;-webkit-transition:width .3s;transition:width .3s}.layui-layout-admin .layui-side>.layui-side-scroll>.layui-nav:first-child{margin-top:10px}.layui-layout-admin .layui-side .layui-nav .layui-nav-item>a{cursor:pointer;padding-top:5px;padding-bottom:5px}.layui-layout-admin .layui-side .layui-nav .layui-nav-item a{-webkit-transition:color .3s,background-color .3s;transition:color .3s,background-color .3s}.layui-layout-admin .layui-side .layui-nav .layui-nav-more{right:15px}.layui-layout-admin .layui-side .layui-nav .layui-nav-item>.layui-nav-child{position:static}.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child a{padding-left:50px;cursor:pointer}.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child a{padding-left:70px}.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child .layui-nav-child a{padding-left:90px}.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child .layui-nav-child .layui-nav-child a{padding-left:110px}@media screen and (min-width:769px){.layui-layout-admin.admin-nav-mini .layui-header .layui-logo{width:60px}.layui-layout-admin.admin-nav-mini .layui-header .layui-logo cite{display:none}.layui-layout-admin.admin-nav-mini .layui-header .layui-icon-shrink-right:before{content:"\e66b"}.layui-layout-admin.admin-nav-mini .layui-body,.layui-layout-admin.admin-nav-mini .layui-footer{left:60px}.layui-layout-admin.admin-nav-mini .layui-side,.layui-layout-admin.admin-nav-mini .layui-side .layui-nav{width:60px}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a{overflow:visible}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a>cite,.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a .layui-nav-more,.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-itemed>.layui-nav-child{display:none!important}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav li.layui-nav-itemed>a{background:rgba(0,0,0,.3)}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a>.layui-icon{font-size:16px;-webkit-transition:font-size .3s;transition:font-size .3s}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child{position:fixed;top:60px;left:60px;padding:5px;min-width:150px;display:block!important;background:transparent!important}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{content:'';position:absolute;right:5px;left:5px;bottom:0;top:0;border-radius:4px;background:#191a23;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child dd:first-child>.layui-nav-child{margin-top:-5px}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child dd:last-child>.layui-nav-child.show-top{margin-top:5px}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child>dd>a{padding:0 20px!important}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more{border-color:transparent transparent transparent rgba(255,255,255,.7);right:7px;margin-top:-6px}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav.arrow2 .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more,.layui-layout-admin.admin-nav-mini .layui-side .layui-nav.arrow3 .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more{-o-transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg);width:6px;height:10px;right:10px;margin-top:-5px;font-weight:600}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav.arrow2 .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more:before,.layui-layout-admin.admin-nav-mini .layui-side .layui-nav.arrow3 .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more:before{content:"\e602";left:-4px;top:-2px}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav.arrow3 .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more:before{-o-transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@media screen and (max-width:768px){.layui-layout-admin{left:-235px}.layui-layout-admin .layui-side,.layui-layout-admin .layui-header .layui-logo{box-shadow:none!important}.layui-layout-admin .layui-header .layui-icon-shrink-right:before{content:"\e66b"}.layui-layout-admin.admin-nav-mini{left:0;right:-235px;position:fixed}.layui-layout-admin.admin-nav-mini .layui-header .layui-icon-shrink-right:before{content:"\e668"}.layui-layout-admin.admin-nav-mini .layui-side,.layui-layout-admin.admin-nav-mini .layui-header .layui-logo{box-shadow:1px 0 2px 0 rgba(0,0,0,.05)}.layui-layout-admin.admin-nav-mini .site-mobile-shade{position:absolute;top:0;right:0;bottom:0;left:235px;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .3s;transition:background-color .3s;cursor:pointer;z-index:1000}}.ew-anim-drop-in{-webkit-animation:ewTransitionDropIn .3s ease-in-out;animation:ewTransitionDropIn .3s ease-in-out;-webkit-transform-origin:0 0;transform-origin:0 0}@-webkit-keyframes ewTransitionDropIn{from{opacity:0;-webkit-transform:scale(0.8)}to{opacity:1;-webkit-transform:scale(1)}}@keyframes ewTransitionDropIn{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:scale(1)}}.layui-nav-tree .layui-nav-bar{display:none}.layui-nav-tree>.layui-nav-item>a:before{content:"";position:absolute;top:0;left:0;bottom:100%;width:4px;background-color:#009688;-webkit-transition:all .3s ease;transition:all .3s ease}.layui-nav-tree>.layui-nav-item:hover>a:before{bottom:0}.layui-nav-tree .layui-nav-item a:hover{background-color:transparent}.layui-nav-tree .layui-this>a:hover{background-color:#009688}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-this{background:transparent}.layui-nav-tree .layui-nav-item .layui-nav-child{padding:5px 0;background-color:rgba(0,0,0,.3)!important}.layui-nav-tree.arrow2 .layui-nav-more{font-family:layui-icon!important;font-size:12px;font-weight:600;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;line-height:normal;border:0;margin:-3px 0 0 0;padding:0;width:10px;height:6px;top:50%;display:inline-block;-webkit-transition:all .3s ease;transition:all .3s ease}.layui-nav-tree.arrow2 .layui-nav-more:before{content:"\e61a";position:absolute;right:-1px;top:-4px}.layui-nav-tree.arrow2 .layui-nav-itemed>a>.layui-nav-more{-ms-transform:rotate(-180deg);-moz-transform:rotate(-180deg);-webkit-transform:rotate(-180deg);-o-transform:rotate(-180deg);transform:rotate(-180deg)}.layui-nav-tree.arrow3 .layui-nav-more{font-family:layui-icon!important;font-size:12px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;line-height:normal;border:0;margin:-5px 0 0 0;padding:0;width:10px;height:10px;top:50%;display:inline-block;-webkit-transition:all .3s ease;transition:all .3s ease}.layui-nav-tree.arrow3 .layui-nav-more:before{content:"\e654";position:absolute;top:-2px;left:-1px}.layui-nav-tree.arrow3 .layui-nav-itemed>a>.layui-nav-more{-ms-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.layui-nav-tree.arrow3 .layui-nav-itemed>a>.layui-nav-more:before{content:'';width:8px;height:2px;background-color:rgba(255,255,255,.7);top:4px;left:1px;-ms-transform:rotate(45deg);-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.layui-layout-admin .layui-body>.layui-tab{position:absolute;top:0;left:0;right:0;bottom:0;margin:0}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-content{position:absolute;left:0;right:0;bottom:0;top:40px;padding:0}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-content>.layui-tab-item{position:absolute;bottom:0;right:0;top:0;left:0;overflow:auto;-webkit-overflow-scrolling:touch;display:block;visibility:hidden;opacity:0;filter:Alpha(opacity=0)}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-content>.layui-tab-item.layui-show{visibility:visible;opacity:1;filter:Alpha(opacity=100)}.layui-layout-admin.admin-side-flexible .layui-body>.layui-tab>.layui-tab-content>.layui-tab-item{display:none}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title{height:40px;line-height:40px;padding:0 80px 0 40px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.1);position:absolute;top:0;left:0;right:0;border:0;overflow:hidden;-webkit-transition:none;transition:none;z-index:998}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li{min-width:auto;max-width:160px;line-height:40px;padding:0 30px 0 15px;border-right:1px solid #f6f6f6;overflow:hidden;text-overflow:ellipsis;vertical-align:top;-webkit-transition:background-color .2s;transition:background-color .2s}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this,.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:hover{background-color:#f6f6f6}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{height:2px;border:0;border-radius:0;background-color:#191a23}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:first-child{padding:0 15px}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li cite{font-style:normal}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title .layui-tab-bar{display:none}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close{width:16px;height:16px;line-height:16px;font-size:12px;border-radius:50%;position:absolute;top:12px;right:8px;-webkit-transition:background-color .2s,color .2s;transition:background-color .2s,color .2s}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:first-child .layui-tab-close{display:none}.admin-tabs-control{position:absolute;top:0;width:40px;height:40px;line-height:40px;background-color:#fff;border-left:1px solid #f6f6f6;-webkit-transition:background-color .2s;transition:background-color .2s;text-align:center;cursor:pointer;z-index:998}.admin-tabs-control:hover{background-color:#f6f6f6}.admin-tabs-control.layui-icon-prev{left:0;border-left:none;border-right:1px solid #f6f6f6}.admin-tabs-control.layui-icon-next{right:40px}.admin-tabs-control.layui-icon-down{right:0}.admin-tabs-control>.layui-nav,.admin-tabs-control>.layui-nav .layui-nav-item{position:absolute;top:0;left:0;padding:0;width:100%;height:100%;background:transparent}.admin-tabs-control>.layui-nav .layui-nav-child{right:0;top:40px;left:auto}.admin-tabs-control>.layui-nav .layui-nav-child a{color:#595959}.admin-tabs-control>.layui-nav .layui-nav-bar,.admin-tabs-control>.layui-nav .layui-nav-more{display:none}.layui-body-header{padding:0 20px;height:40px;line-height:40px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.1);box-sizing:border-box;position:absolute;left:0;right:0;z-index:998;display:none}.layui-body-header.show{display:block}.layui-body-header-title{padding-left:6px;border-left:4px solid #009688}.layui-body-header.show+div{position:absolute;left:0;right:0;top:40px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}.hide-body-title .layui-body-header.show{display:none}.hide-body-title .layui-body-header.show+div{top:0}.layui-layout-admin .layui-body>.page-loading,.layui-layout-admin .layui-body>.layui-tab>.layui-tab-content>.layui-tab-item>.page-loading,.layui-layout-admin .layui-body>div>iframe[lay-id]+.page-loading{z-index:997}.layui-layer.layui-layer-adminRight{bottom:0;top:50px!important;border:none!important;box-shadow:1px 1px 50px rgba(0,0,0,.3)!important;overflow:auto}.layui-layer.layui-layer-adminRight>.layui-layer-content,.layui-layer.layui-layer-adminRight>.layui-layer-content>iframe{height:100%!important}.layui-layer.layui-layer-adminRight>.layui-layer-title+.layui-layer-content{position:absolute;top:43px;left:0;right:0;bottom:0;height:auto!important}.layui-anim-rl{-webkit-animation-name:layui-rl;animation-name:layui-rl}@-webkit-keyframes layui-rl{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@keyframes layui-rl{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}.layui-anim-lr,.layui-anim-rl.layer-anim-close{-webkit-animation-name:layui-lr;animation-name:layui-lr}@-webkit-keyframes layui-lr{from{-webkit-transform:translate3d(0,0,0);opacity:1}to{-webkit-transform:translate3d(100%,0,0);opacity:1}}@keyframes layui-lr{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layui-layer.layui-layer-admin{border:none!important;box-shadow:1px 1px 50px rgba(0,0,0,.3)!important}.layui-layer.layui-layer-admin .layui-layer-title{color:#fff;height:50px;line-height:50px;background-color:#191a23;border:0}.layui-layer.layui-layer-admin .layui-layer-setwin{top:17px}.layui-layer.layui-layer-admin .layui-layer-setwin a{color:#fff;font-size:16px;font-style:normal;font-family:layui-icon!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-close1{background:0;margin-top:-1px}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-close1:before{content:"\1006"}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:#ddd}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-max{font-size:14px;padding-top:1px;background:0}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-max:before{content:"\e622"}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-maxmin:before{content:"\e758"}.layui-layer.layui-layer-admin .layui-layer-btn{padding-bottom:15px}.layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#009688;background-color:#009688}.layui-layer.layui-layer-admin .layui-layer-btn a{height:34px;line-height:34px}.layui-layer-admin{max-width:100%}.layui-layer-iframe .layui-layer-content{overflow:auto;-webkit-overflow-scrolling:touch}@media screen and (max-width:768px){.layui-layer-admin{max-width:98%;max-width:-webkit-calc(100% - 30px);max-width:-moz-calc(100% - 30px);max-width:calc(100% - 30px);width:max-content;left:0!important;right:0!important;margin:auto!important;margin-bottom:15px!important}.layui-layer-admin[area]{max-width:100%;margin-bottom:0!important}}body .layui-layer-msg{border:0;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,0.1)}body .layui-layer-load{background:transparent}.page-loading{position:absolute;display:block;width:100%;height:100%;top:0;left:0;right:0;bottom:0;z-index:19891017;background-color:#fff}body>.page-loading{position:fixed;background-color:#f5f7f9}.layui-layout-admin>.layui-body>.layui-tab>.layui-tab-content>.layui-tab-item>.page-loading,.layui-layout-admin>.layui-body>.page-loading,.layui-layout-admin>.layui-body>div>iframe[lay-id]+.page-loading{background-color:#f5f7f9}.layui-layout-admin>.layui-body>.layui-body-header.show+div+.page-loading{top:40px;height:auto}.page-no-scroll{overflow-x:hidden!important;overflow-y:hidden!important;min-height:80px}.rubik-loader,.ball-loader,.signal-loader,.layui-loader{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ball-loader>span,.signal-loader>span{background-color:#4aca85;display:inline-block}.ball-loader>span:nth-child(1),.ball-loader.sm>span:nth-child(1),.signal-loader>span:nth-child(1),.signal-loader.sm>span:nth-child(1){-webkit-animation-delay:0s;animation-delay:0s}.ball-loader>span:nth-child(2),.ball-loader.sm>span:nth-child(2),.signal-loader>span:nth-child(2),.signal-loader.sm>span:nth-child(2){-webkit-animation-delay:.1s;animation-delay:.1s}.ball-loader>span:nth-child(3),.ball-loader.sm>span:nth-child(3),.signal-loader>span:nth-child(3),.signal-loader.sm>span:nth-child(3){-webkit-animation-delay:.15s;animation-delay:.15s}.ball-loader>span:nth-child(4),.ball-loader.sm>span:nth-child(4),.signal-loader>span:nth-child(4),.signal-loader.sm>span:nth-child(4){-webkit-animation-delay:.2s;animation-delay:.2s}.rubik-loader{width:64px;height:64px;background-image:url(img/ic_loading.gif);background-repeat:no-repeat;background-position:center;background-size:contain}.rubik-loader.sm{width:50px;height:50px}.ball-loader>span{width:20px;height:20px;margin:0 3px;border-radius:50%;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-animation:1s ball-load ease-in-out infinite;animation:ball-load 1s ease-in-out infinite}@-webkit-keyframes ball-load{0%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}100%{-webkit-transform:scale(0)}}@keyframes ball-load{0%{transform:scale(0)}50%{transform:scale(1)}100%{transform:scale(0)}}.ball-loader.sm>span{width:15px;height:15px;margin:0 2px}.signal-loader{width:50px;height:22px}.signal-loader>span{width:8px;height:0;position:absolute;bottom:0;left:0;margin:0;-webkit-animation:signal-load 1s infinite;animation:signal-load 1s infinite}.signal-loader>span:nth-child(2){left:14px}.signal-loader>span:nth-child(3){left:28px}.signal-loader>span:nth-child(4){left:42px}@-webkit-keyframes signal-load{0%{height:0}50%{height:22px}100%{height:0}}@keyframes signal-load{0%{height:0}50%{height:22px}100%{height:0}}.signal-loader.sm{width:32px;height:15px}.signal-loader.sm>span{width:5px;-webkit-animation:signal-load-sm 1s infinite;animation:signal-load-sm 1s infinite}.signal-loader.sm>span:nth-child(2){left:9px}.signal-loader.sm>span:nth-child(3){left:18px}.signal-loader.sm>span:nth-child(4){left:27px}@-webkit-keyframes signal-load-sm{0%{height:0}50%{height:15px}100%{height:0}}@keyframes signal-load-sm{0%{height:0}50%{height:15px}100%{height:0}}.layui-loader .layui-icon{font-size:36px;color:#bbb}.layui-loader.sm .layui-icon{font-size:30px}.layui-form.toolbar .layui-form-item,.layui-form.toolbar .layui-form-item .layui-inline>.layui-input-inline{margin-bottom:0}.layui-form.toolbar .layui-form-item .layui-inline{margin-bottom:10px}.toolbar+.layui-table,.layui-card-body>.layui-table,.toolbar+table+.layui-table-view,.layui-card-body>.layui-table-view,.toolbar+table+.ew-tree-table{margin:0}.mr0,.layui-form.toolbar .layui-form-item .layui-inline>.layui-input-inline{margin-right:0!important}.w-auto{width:auto!important}.model-form{padding:25px 30px 0 0}.model-form.no-padding{padding:0}.model-form .model-form-body{overflow-y:auto;padding:25px 30px 0 0;max-height:calc(100vh - 180px)}.model-form.no-padding .model-form-footer{padding-top:10px;padding-right:30px}.layui-form.model-form>.layui-form-item:last-child{margin-bottom:0;padding-bottom:20px}.layui-form-required:before{content:"*";display:inline-block;font-family:SimSun;margin-right:4px;font-size:14px;line-height:1;color:#ed4014}.layui-input,.layui-textarea{color:#595959}.layui-form-select .layui-input{padding-right:0}.layui-form-select-top .layui-form-select>dl{top:auto;bottom:42px}.ew-select-fixed .layui-form-selected dl{position:fixed;min-width:auto;bottom:auto;right:auto}body .layui-form-checked[lay-skin=primary] i,body .layui-form-checked[lay-skin=primary]:hover i{color:#fff}body .layui-form-checkbox[lay-skin=primary] span,body .layui-form-checkbox[lay-skin=primary]:hover span{background-color:transparent}body .layui-form-danger+.layui-form-select .layui-input,body .layui-input.layui-form-danger:focus,body .layui-textarea.layui-form-danger:focus{border-color:#ff5722!important}body .layui-laypage input.layui-input{height:30px;line-height:30px}body .layui-table-page .layui-laypage input.layui-input{height:26px;line-height:26px}body .layui-form-onswitch em{margin-left:3px;margin-right:18px}.layui-btn{-webkit-transition:background-color .2s;transition:background-color .2s}body .layui-btn.layui-btn-radius{border-radius:100px}.layui-btn-primary{color:#595959;border-color:#e6e6e6}.layui-btn-primary:hover{border-color:#bbb}.layui-btn-group .layui-btn-primary:hover{border-color:#e6e6e6}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #e6e6e6}body .layui-btn.layui-btn-disabled,body .layui-transfer-active .layui-btn.layui-btn-disabled{background-color:#fbfbfb!important;border-color:#e6e6e6!important;color:#c9c9c9!important}body .layui-btn.layui-btn-primary{background-color:#fff}body .layui-btn.layui-btn-normal{background-color:#1e9fff}body .layui-btn.layui-btn-warm{background-color:#ffb800}body .layui-btn.layui-btn-danger{background-color:#ff5722}.layui-btn-group>.layui-btn+.layui-btn{border-radius:0}.layui-btn-group>.layui-btn:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}body .layui-transfer-active .layui-btn{background-color:#5fb878!important;border-color:#5fb878!important;color:#fff!important}.btn-circle{width:50px;height:50px;line-height:50px;border-radius:50%;background:#009688;position:fixed;right:15px;bottom:15px;color:#fff;text-align:center;box-shadow:0 0 8px rgba(0,0,0,.2);cursor:pointer}.btn-circle:hover{color:#fff;opacity:.8}.btn-circle .layui-icon{font-size:24px}.icon-date,.date-icon{background-image:url(img/icon_date.png);background-repeat:no-repeat;background-position:right center;padding-right:28px}.icon-search{background-image:url(img/icon_search.png);background-repeat:no-repeat;background-position:right center;padding-right:26px}span.icon-text>.layui-icon,a.icon-text>.layui-icon,.layui-form-label.icon-text>.layui-icon{font-size:14px;margin:0 2px}.layui-btn.icon-btn{padding:0 10px}.layui-btn.layui-btn-sm.icon-btn{padding:0 6px}.bg-white,html.bg-white>body{background-color:white}[ew-href],[lay-tips]{cursor:pointer}.inline-block{display:inline-block}.pull-right{float:right}.pull-left{float:left}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-primary,.layui-link{color:#009688!important}.text-success{color:#5fb878!important}.text-warning{color:#ffb800!important}.text-danger{color:#ff5722!important}.text-info{color:#01aaed!important}.text-muted{color:#c2c2c2!important}.layui-text a:not(.layui-btn){color:#2d8cf0;cursor:pointer}.layui-text a:not(.layui-btn):hover{text-decoration:none}.ew-console-wrapper .layui-card{box-shadow:none;border-radius:4px}.layui-card-header{color:#595959}.lay-big-font{font-size:36px;line-height:36px;padding:5px 0 10px;overflow:hidden;white-space:nowrap;word-break:break-all;text-overflow:ellipsis}.no-scrollbar{overflow-x:hidden!important;overflow-y:hidden!important}input.layui-disabled,input.layui-disabled:hover,textarea.layui-disabled,textarea.layui-disabled:hover{color:#595959!important;background-color:#f6f6f6}.layui-input::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{color:#ccc}.layui-input::-moz-placeholder,.layui-textarea::-moz-placeholder{color:#ccc}.layui-input::-ms-input-placeholder,.layui-textarea::-ms-input-placeholder{color:#ccc}.dropdown-menu{display:inline-block}.dropdown-menu .dropdown-menu-nav{display:none}.dropdown-menu+.dropdown-menu,.layui-btn+.dropdown-menu,.dropdown-menu+.layui-btn{margin-left:10px}::-webkit-scrollbar{width:10px;height:10px;background:transparent}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{border-radius:5px;background-color:#c1c1c1}::-webkit-scrollbar-thumb:hover{background-color:#a8a8a8}.mini-bar::-webkit-scrollbar{width:6px;height:6px}.mini-bar::-webkit-scrollbar-thumb{border-radius:3px}@media screen and (max-width:768px){::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-thumb{border-radius:0}}#ew-map-select-map{height:450px}#ew-map-select-pois{height:450px;overflow-x:hidden;overflow-y:auto}.ew-map-select-search-list-item{padding:10px 30px 10px 15px;border-bottom:1px solid #e8e8e8;cursor:pointer;position:relative}.ew-map-select-search-list-item:hover{background:#f2f2f2}.ew-map-select-search-list-item:last-child{border-bottom:0}.ew-map-select-search-list-item .ew-map-select-search-list-item-title{font-size:14px;color:#262626}.ew-map-select-search-list-item .ew-map-select-search-list-item-address{font-size:12px;color:#595959;padding-top:5px}.ew-map-select-search-list-item-icon-ok{position:absolute;right:15px;top:50%;transform:translateY(-50%)}.ew-map-select-search-list-item-icon-ok .layui-icon{color:#3b74ff}.ew-map-select-tool{padding:5px 15px;box-shadow:0 1px 0 0 rgba(0,0,0,.05)}#ew-map-select-center-img{position:absolute;bottom:50%;left:50%;width:26px;margin-left:-13px}#ew-map-select-center-img2{position:absolute;left:50%;top:50%;font-size:12px;display:inline-block;margin-left:-6px;margin-top:-7px;color:#3b74ff}.bounceInDown{animation:bounceInDown 500ms;animation-direction:alternate;-webkit-animation:bounceInDown 500ms;-webkit-animation-direction:alternate}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%,to{-webkit-transform:translate3d(0,0,0)}25%{-webkit-transform:translate3d(0,-30px,0)}50%{-webkit-transform:translate3d(0,-15px,0)}75%{-webkit-transform:translate3d(0,-4px,0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%,to{transform:translate3d(0,0,0)}25%{transform:translate3d(0,-10px,0)}50%{transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,-10px,0)}}#ew-map-select-tips{position:absolute;z-index:999;background:#fff;max-height:430px;overflow:auto;top:48px;left:56px;width:280px;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #d2d2d2}#ew-map-select-tips .ew-map-select-search-list-item{padding:10px 15px 10px 35px}.ew-map-select-search-list-item-icon-search{position:absolute;left:10px;top:50%;transform:translateY(-50%)}.ew-map-select-search-list-item-icon-search .layui-icon{color:#8c8c8c}.table-tool-mini .layui-table-view{position:relative}.table-tool-mini .layui-table-tool{position:absolute;min-height:unset;height:auto;padding:3px 10px;width:auto;top:-38px;right:-1px;border-top-right-radius:8px;border-top-left-radius:8px;border:1px solid #e6e6e6;border-bottom:0}.table-tool-mini .layui-table-tool .layui-table-tool-temp{padding-right:0;display:inline-block}.table-tool-mini .layui-table-tool .layui-table-tool-self{position:static;display:inline-block}.table-tool-mini .layui-table-tool .layui-table-tool-self .layui-inline[lay-event]:first-child{margin:0}.table-tool-mini.full-table .layui-table-tool{top:-35px;height:1px;padding:0 10px;background:transparent;border:0}.table-tool-mini.full-table .layui-table-tool:before{content:"";position:absolute;top:-3px;right:0;left:0;height:36px;background-color:#f2f2f2;border-top-right-radius:8px;border-top-left-radius:8px;border:1px solid #e6e6e6;border-bottom:0}@media screen and (max-width:768px){.layui-laydate-range{left:0!important;top:0!important;right:0!important;margin:10px auto!important;max-width:95%}.layui-laydate-range .layui-laydate-main,.layui-laydate-range .layui-laydate-content table{width:100%}.layui-laydate-range .laydate-main-list-0 .laydate-next-m,.layui-laydate-range .laydate-main-list-0 .laydate-next-y,.layui-laydate-range .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range .laydate-main-list-1 .laydate-prev-y{display:inline-block!important}.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-top:1px solid #e2e2e2}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left:none!important}.layui-laydate-range .laydate-time-list ol li{padding-left:0!important;text-align:center}.layui-laydate-range .laydate-time-list ol{overflow:auto!important}}.layui-tree-spread>div>div>span>.layui-tree-iconArrow:after{border-color:#c0c4cc transparent transparent transparent;top:6px;left:0}.layui-tree .layui-tree-iconArrow:after{transition:none}.ew-tb-cell-ck .layui-form-checkbox[lay-skin=primary]{padding-left:22px}.ew-tb-cell-ck .layui-form-checkbox[lay-skin=primary] span{padding-right:5px}.ew-field-group>.layui-elem-field{border-bottom:0;margin:0}.ew-field-group>.ew-field-box{border:1px solid #e6e6e6;padding:10px 15px;border-top:0}body .layui-elem-quote.layui-quote-nm{border-color:#e6e6e6}.layui-card>.layui-tab-brief>.layui-tab-title li{padding:0 5px;margin:0 10px;line-height:43px;height:43px;transition:color .2s;-webkit-transition:color .2s}.layui-card>.layui-tab-brief>.layui-tab-title li:after{height:43px}.layui-card>.layui-tab-brief>.layui-tab-title{border-bottom-color:#f6f6f6;height:42px;transition:none;-webkit-transition:none}.layui-card>.layui-tab-brief>.layui-tab-content{padding:10px 15px}.layui-tab.layui-tab-vertical{position:relative}.layui-tab.layui-tab-vertical:after{content:"";clear:both;display:block}.layui-tab.layui-tab-vertical>.layui-tab-title{width:130px;height:auto;border:0;border-right:1px solid #e9e9e9;box-sizing:border-box;padding:10px 0;float:left}.layui-tab.layui-tab-vertical>.layui-tab-title>li{display:block;margin-right:-1px;border-right:2px solid transparent;white-space:normal;line-height:normal;padding:10px 20px;text-align:right}.layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-right:2px solid #5fb878;color:#5fb878}.layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this:after{display:none}.layui-tab.layui-tab-vertical>.layui-tab-title>li>.layui-icon{font-size:14px;margin-right:5px}.layui-tab.layui-tab-vertical>.layui-tab-content{margin-left:130px}.layui-tab.layui-tab-vertical.layui-tab-vertical-right>.layui-tab-title{float:right;border-right:0;border-left:1px solid #e9e9e9}.layui-tab.layui-tab-vertical.layui-tab-vertical-right>.layui-tab-content{margin-left:0;margin-right:130px}.layui-tab.layui-tab-vertical.layui-tab-vertical-right>.layui-tab-title>li{text-align:left;border-left:2px solid transparent;border-right:0}.layui-tab.layui-tab-vertical.layui-tab-vertical-right>.layui-tab-title>li.layui-this{border-left:2px solid #5fb878}.layui-tab.layui-tab-vertical.layui-tab-vertical-full>.layui-tab-title{position:absolute;top:0;left:0;right:auto;min-height:100%}.layui-tab.layui-tab-vertical.layui-tab-vertical-right.layui-tab-vertical-full>.layui-tab-title{right:0;left:auto}.ew-btn-loading{opacity:.8;pointer-events:none;font-size:0!important}.ew-btn-loading *{display:none!important}.ew-btn-loading>.ew-btn-loading-text{font-size:14px!important;display:inline-block!important}.ew-btn-loading.layui-btn-sm>.ew-btn-loading-text,.ew-btn-loading.layui-btn-xs>.ew-btn-loading-text{font-size:12px!important}.ew-btn-loading.layui-btn-lg>.ew-btn-loading-text{font-size:16px!important}.ew-btn-loading>.ew-btn-loading-text *{display:inline-block!important}.form-search-expand,.form-search-expand:hover{padding:0!important;color:#2d8cf0!important;border:none!important;box-shadow:none!important;background-color:transparent!important}.form-search-expand .layui-icon{font-size:12px!important;font-weight:600!important}.form-search-show-expand{display:none!important}.layui-badge-green{color:#52c41a;background:#f6ffed;border:1px solid #b7eb8f}.layui-badge-blue{color:#1890ff;background:#e6f7ff;border:1px solid #91d5ff}.layui-badge-red{color:#f5222d;background:#fff1f0;border:1px solid #ffa39e}.layui-badge-yellow{color:#faad14;background:#fffbe6;border:1px solid #ffe58f}.layui-badge-gray{color:#8c8c8c;background:#fafafa;border:1px solid #ccc}.layui-badge{height:20px;line-height:19px;box-sizing:border-box}.layui-badge-list .layui-badge{height:23px;line-height:22px;margin:0 6px 8px 0}.layui-badge-list .layui-badge.layui-bg-gray{border:1px solid #ccc;background-color:#fafafa!important}.layui-card .layui-card-header .layui-badge.pull-right{top:50%;margin-top:-10px}#ew-lock-screen-group{position:fixed;top:0;left:0;right:0;bottom:0;z-index:19891099}.ios-iframe-body{position:absolute;top:0;left:0;right:0;bottom:0}xm-select>.xm-body{margin-left:-2px}xm-select>.xm-body .xm-option{background-color:transparent!important}xm-select>.xm-body .xm-option.hide-icon.selected{background-color:#5fb878!important}xm-select>.xm-body .xm-option:hover{background-color:#f2f2f2!important}.xm-body .xm-tree{min-width:200px}.xm-body .xm-tree .xm-option-content{padding-left:6px}xm-select{border-color:#e6e6e6!important}xm-select:hover{border-color:#d2d2d2!important}xm-select[style="border-color: rgb(229, 77, 66);"]{border-color:#e54d42!important}body .ew-xmselect-tree xm-select .xm-body .xm-option .xm-option-icon{position:absolute;left:30px;top:0;right:0;bottom:0;width:auto;height:auto;border:none!important;z-index:1}body .ew-xmselect-tree xm-select .xm-body .xm-option .xm-option-icon:before{display:none}body .ew-xmselect-tree xm-select .xm-body .xm-option.selected{background-color:#f2f2f2!important}body .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#5fb878!important}.theme-blue .layui-layout-admin .layui-header .layui-logo{color:#fff;box-shadow:none;background-color:transparent}.theme-blue .layui-layout-admin .layui-header{background-color:#3c8dbc}.theme-blue .layui-layout-admin .layui-header a{color:#fff}.theme-blue .layui-layout-admin .layui-header a:hover{color:#fff}.theme-blue .layui-layout-admin .layui-header .layui-nav-child a{color:#595959}.theme-blue .layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-color:#eee transparent transparent}.theme-blue .layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #eee}.theme-blue .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-blue .layui-layout-admin .layui-header .layui-nav-bar{background-color:#fff}.theme-blue .layui-layout-admin .layui-side{background-color:#222d32}.theme-blue .layui-side .layui-nav .layui-nav-item a{color:#b8c7ce}.theme-blue .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-blue .layui-nav-tree .layui-this>a,.theme-blue .layui-nav-tree .layui-this>a:hover{color:#fff;background-color:#3c8dbc}.theme-blue .layui-nav-tree>.layui-nav-item>a:before{background-color:#3c8dbc}.theme-blue .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#222d32!important}.theme-blue .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{background-color:#3c8dbc;top:38px}.theme-blue .layui-body-header-title{border-left-color:#3c8dbc}.theme-blue .layui-layer.layui-layer-admin .layui-layer-title{background-color:#3c8dbc}.theme-blue .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#3c8dbc;background-color:#3c8dbc}.theme-blue .ball-loader>span,.theme-blue .signal-loader>span{background-color:#3c8dbc}.theme-blue .btn-circle{background:#3c8dbc}.theme-blue .more-theme-item:hover,.theme-blue .more-theme-item.active{border-color:#3c8dbc}.theme-blue .text-primary,.theme-blue .layui-link{color:#3c8dbc!important}.theme-blue .layui-btn{background-color:#3c8dbc}.theme-blue .layui-form-onswitch{border-color:#3c8dbc;background-color:#3c8dbc}.theme-blue .layui-form-radio>i:hover,.theme-blue .layui-form-radioed>i,.theme-blue .layui-form-checked i,.theme-blue .layui-form-checked:hover i{color:#3c8dbc}.theme-blue .layui-form-checked[lay-skin=primary] i,.theme-blue .layui-form-checked span,.theme-blue .layui-form-checked:hover span{border-color:#3c8dbc!important;background-color:#3c8dbc}.theme-blue .layui-form-checked[lay-skin=primary] i:hover,.theme-blue .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#3c8dbc!important}.theme-blue .layui-form-select dl dd.layui-this{background-color:#3c8dbc}.theme-blue .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#3c8dbc}.theme-blue .layui-laypage input:focus,.theme-blue .layui-laypage select:focus{border-color:#3c8dbc!important}.theme-blue .layui-laypage a:hover{color:#3c8dbc}.theme-blue .layui-tab-brief>.layui-tab-title .layui-this{color:#3c8dbc}.theme-blue .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-blue .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#3c8dbc!important}.theme-blue .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#3c8dbc;color:#3c8dbc}.theme-blue .layui-breadcrumb a:hover{color:#3c8dbc!important}.theme-blue .layui-laydate-footer span:hover,.theme-blue .layui-laydate-header i:hover,.theme-blue .layui-laydate-header span:hover{color:#3c8dbc}.theme-blue .layui-laydate .layui-this{background-color:#3c8dbc!important}.theme-blue .layui-laydate-content td.laydate-selected{background-color:rgba(60,141,188,.1)}.theme-blue .laydate-selected:hover{background-color:rgba(60,141,188,.1)!important}.theme-blue .layui-timeline-axis{color:#3c8dbc}.theme-blue .layui-transfer-active .layui-btn{background-color:#3c8dbc!important;border-color:#3c8dbc!important}.theme-blue .layui-progress-bar{background-color:#3c8dbc}.theme-blue .layui-slider-bar{background-color:#3c8dbc!important}.theme-blue .layui-slider-wrap-btn{border-color:#3c8dbc!important}.theme-blue .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#3c8dbc}.theme-blue .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-blue .layui-elem-quote{border-color:#3c8dbc}.theme-blue .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-blue .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#3c8dbc}.theme-blue .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#9dc6dd}.theme-blue .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#3c8dbc}.theme-blue .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#9dc6dd!important}.theme-blue .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#3c8dbc!important}.theme-blue .ew-cascader-dropdown-list-item.active,.theme-blue .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#3c8dbc}.theme-blue div.tagsinput span.tag{background:#3c8dbc}.theme-blue xm-select .xm-body .xm-option .xm-option-icon{border-color:#3c8dbc!important}.theme-blue xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-blue xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-blue .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#3c8dbc!important}.theme-blue xm-select .xm-label .xm-label-block,.theme-blue xm-select .xm-body .xm-option.hide-icon.selected{background-color:#3c8dbc!important}.theme-blue .city-select a.active{color:#fff!important;background-color:#3c8dbc!important}.theme-blue .city-select a:hover,.theme-blue .city-select a:focus{background-color:rgba(60,141,188,.1);color:#3c8dbc}.theme-blue .city-picker-span>.title>span:hover{background-color:rgba(60,141,188,.1)}.theme-blue .city-select-tab>a.active{color:#3c8dbc}.theme-green .layui-layout-admin .layui-header .layui-logo{color:#fff;box-shadow:none;background-color:transparent}.theme-green .layui-layout-admin .layui-header{background-color:#00a65a}.theme-green .layui-layout-admin .layui-header a{color:#fff}.theme-green .layui-layout-admin .layui-header a:hover{color:#fff}.theme-green .layui-layout-admin .layui-header .layui-nav-child a{color:#595959}.theme-green .layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-color:#eee transparent transparent}.theme-green .layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #eee}.theme-green .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-green .layui-layout-admin .layui-header .layui-nav-bar{background-color:#fff}.theme-green .layui-layout-admin .layui-side{background-color:#222d32}.theme-green .layui-side .layui-nav .layui-nav-item a{color:#b8c7ce}.theme-green .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-green .layui-nav-tree .layui-this>a,.theme-green .layui-nav-tree .layui-this>a:hover{color:#fff;background-color:#00a65a}.theme-green .layui-nav-tree>.layui-nav-item>a:before{background-color:#00a65a}.theme-green .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#222d32!important}.theme-green .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{background-color:#00a65a;top:38px}.theme-green .layui-body-header-title{border-left-color:#00a65a}.theme-green .layui-layer.layui-layer-admin .layui-layer-title{background-color:#00a65a}.theme-green .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#00a65a;background-color:#00a65a}.theme-green .more-theme-item:hover,.theme-green .more-theme-item.active{border-color:#00a65a}.theme-green .btn-circle{background:#00a65a}.theme-green .ball-loader>span,.theme-green .signal-loader>span{background-color:#00a65a}.theme-green .text-primary,.theme-green .layui-link{color:#00a65a!important}.theme-green .layui-btn{background-color:#00a65a}.theme-green .layui-form-onswitch{border-color:#00a65a;background-color:#00a65a}.theme-green .layui-form-radio>i:hover,.theme-green .layui-form-radioed>i,.theme-green .layui-form-checked i,.theme-green .layui-form-checked:hover i{color:#00a65a}.theme-green .layui-form-checked[lay-skin=primary] i,.theme-green .layui-form-checked span,.theme-green .layui-form-checked:hover span{border-color:#00a65a!important;background-color:#00a65a}.theme-green .layui-form-checked[lay-skin=primary] i:hover,.theme-green .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#00a65a!important}.theme-green .layui-form-select dl dd.layui-this{background-color:#00a65a}.theme-green .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#00a65a}.theme-green .layui-laypage input:focus,.theme-green .layui-laypage select:focus{border-color:#00a65a!important}.theme-green .layui-laypage a:hover{color:#00a65a}.theme-green .layui-tab-brief>.layui-tab-title .layui-this{color:#00a65a}.theme-green .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-green .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#00a65a!important}.theme-green .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#00a65a;color:#00a65a}.theme-green .layui-breadcrumb a:hover{color:#00a65a!important}.theme-green .layui-laydate-footer span:hover,.theme-green .layui-laydate-header i:hover,.theme-green .layui-laydate-header span:hover{color:#00a65a}.theme-green .layui-laydate .layui-this{background-color:#00a65a!important}.theme-green .layui-laydate-content td.laydate-selected{background-color:rgba(0,166,90,.1)}.theme-green .laydate-selected:hover{background-color:rgba(0,166,90,.1)!important}.theme-green .layui-timeline-axis{color:#00a65a}.theme-green .layui-transfer-active .layui-btn{background-color:#00a65a!important;border-color:#00a65a!important}.theme-green .layui-progress-bar{background-color:#00a65a}.theme-green .layui-slider-bar{background-color:#00a65a!important}.theme-green .layui-slider-wrap-btn{border-color:#00a65a!important}.theme-green .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#00a65a}.theme-green .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-green .layui-elem-quote{border-color:#00a65a}.theme-green .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-green .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#00a65a}.theme-green .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#7fd2ac}.theme-green .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#00a65a}.theme-green .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#7fd2ac!important}.theme-green .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#00a65a!important}.theme-green .ew-cascader-dropdown-list-item.active,.theme-green .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#00a65a}.theme-green div.tagsinput span.tag{background:#00a65a}.theme-green xm-select .xm-body .xm-option .xm-option-icon{border-color:#00a65a!important}.theme-green xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-green xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-green .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#00a65a!important}.theme-green xm-select .xm-label .xm-label-block,.theme-green xm-select .xm-body .xm-option.hide-icon.selected{background-color:#00a65a!important}.theme-green .city-select a.active{color:#fff!important;background-color:#00a65a!important}.theme-green .city-select a:hover,.theme-green .city-select a:focus{background-color:rgba(0,166,90,.1);color:#00a65a}.theme-green .city-picker-span>.title>span:hover{background-color:rgba(0,166,90,.1)}.theme-green .city-select-tab>a.active{color:#00a65a}.theme-purple .layui-layout-admin .layui-header .layui-logo{color:#fff;box-shadow:none;background-color:transparent}.theme-purple .layui-layout-admin .layui-header{background-color:#722ed1}.theme-purple .layui-layout-admin .layui-header a{color:#fff}.theme-purple .layui-layout-admin .layui-header a:hover{color:#fff}.theme-purple .layui-layout-admin .layui-header .layui-nav-child a{color:#595959}.theme-purple .layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-color:#eee transparent transparent}.theme-purple .layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #eee}.theme-purple .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-purple .layui-layout-admin .layui-header .layui-nav-bar{background-color:#fff}.theme-purple .layui-layout-admin .layui-side{background-color:#222d32}.theme-purple .layui-side .layui-nav .layui-nav-item a{color:#b8c7ce}.theme-purple .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-purple .layui-nav-tree .layui-this>a,.theme-purple .layui-nav-tree .layui-this>a:hover{color:#fff;background-color:#722ed1}.theme-purple .layui-nav-tree>.layui-nav-item>a:before{background-color:#722ed1}.theme-purple .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#222d32!important}.theme-purple .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{background-color:#722ed1;top:38px}.theme-purple .layui-body-header-title{border-left-color:#722ed1}.theme-purple .layui-layer.layui-layer-admin .layui-layer-title{background-color:#722ed1}.theme-purple .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#722ed1;background-color:#722ed1}.theme-purple .more-theme-item:hover,.theme-purple .more-theme-item.active{border-color:#722ed1}.theme-purple .btn-circle{background:#722ed1}.theme-purple .ball-loader>span,.theme-purple .signal-loader>span{background-color:#722ed1}.theme-purple .text-primary,.theme-purple .layui-link{color:#722ed1!important}.theme-purple .layui-btn{background-color:#722ed1}.theme-purple .layui-form-onswitch{border-color:#722ed1;background-color:#722ed1}.theme-purple .layui-form-radio>i:hover,.theme-purple .layui-form-radioed>i,.theme-purple .layui-form-checked i,.theme-purple .layui-form-checked:hover i{color:#722ed1}.theme-purple .layui-form-checked[lay-skin=primary] i,.theme-purple .layui-form-checked span,.theme-purple .layui-form-checked:hover span{border-color:#722ed1!important;background-color:#722ed1}.theme-purple .layui-form-checked[lay-skin=primary] i:hover,.theme-purple .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#722ed1!important}.theme-purple .layui-form-select dl dd.layui-this{background-color:#722ed1}.theme-purple .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#722ed1}.theme-purple .layui-laypage input:focus,.theme-purple .layui-laypage select:focus{border-color:#722ed1!important}.theme-purple .layui-laypage a:hover{color:#722ed1}.theme-purple .layui-tab-brief>.layui-tab-title .layui-this{color:#722ed1}.theme-purple .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-purple .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#722ed1!important}.theme-purple .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#722ed1;color:#722ed1}.theme-purple .layui-breadcrumb a:hover{color:#722ed1!important}.theme-purple .layui-laydate-footer span:hover,.theme-purple .layui-laydate-header i:hover,.theme-purple .layui-laydate-header span:hover{color:#722ed1}.theme-purple .layui-laydate .layui-this{background-color:#722ed1!important}.theme-purple .layui-laydate-content td.laydate-selected{background-color:rgba(114,46,209,.1)}.theme-purple .laydate-selected:hover{background-color:rgba(114,46,209,.1)!important}.theme-purple .layui-timeline-axis{color:#722ed1}.theme-purple .layui-transfer-active .layui-btn{background-color:#722ed1!important;border-color:#722ed1!important}.theme-purple .layui-progress-bar{background-color:#722ed1}.theme-purple .layui-slider-bar{background-color:#722ed1!important}.theme-purple .layui-slider-wrap-btn{border-color:#722ed1!important}.theme-purple .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#722ed1}.theme-purple .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-purple .layui-elem-quote{border-color:#722ed1}.theme-purple .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-purple .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#722ed1}.theme-purple .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#b896e8}.theme-purple .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#722ed1}.theme-purple .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#b896e8!important}.theme-purple .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#722ed1!important}.theme-purple .ew-cascader-dropdown-list-item.active,.theme-purple .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#722ed1}.theme-purple div.tagsinput span.tag{background:#722ed1}.theme-purple xm-select .xm-body .xm-option .xm-option-icon{border-color:#722ed1!important}.theme-purple xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-purple xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-purple .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#722ed1!important}.theme-purple xm-select .xm-label .xm-label-block,.theme-purple xm-select .xm-body .xm-option.hide-icon.selected{background-color:#722ed1!important}.theme-purple .city-select a.active{color:#fff!important;background-color:#722ed1!important}.theme-purple .city-select a:hover,.theme-purple .city-select a:focus{background-color:rgba(114,46,209,.1);color:#722ed1}.theme-purple .city-picker-span>.title>span:hover{background-color:rgba(114,46,209,.1)}.theme-purple .city-select-tab>a.active{color:#722ed1}.theme-red .layui-layout-admin .layui-header .layui-logo{color:#fff;box-shadow:none;background-color:transparent}.theme-red .layui-layout-admin .layui-header{background-color:#dd4b39}.theme-red .layui-layout-admin .layui-header a{color:#fff}.theme-red .layui-layout-admin .layui-header a:hover{color:#fff}.theme-red .layui-layout-admin .layui-header .layui-nav-child a{color:#595959}.theme-red .layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-color:#eee transparent transparent}.theme-red .layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #eee}.theme-red .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-red .layui-layout-admin .layui-header .layui-nav-bar{background-color:#fff}.theme-red .layui-layout-admin .layui-side{background-color:#28333e}.theme-red .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-red .layui-nav-tree .layui-this>a,.theme-red .layui-nav-tree .layui-this>a:hover{background-color:#dd4b39}.theme-red .layui-nav-tree>.layui-nav-item>a:before{background-color:#dd4b39}.theme-red .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#28333e!important}.theme-red .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{background-color:#dd4b39;top:38px}.theme-red .layui-body-header-title{border-left-color:#dd4b39}.theme-red .layui-layer.layui-layer-admin .layui-layer-title{background-color:#dd4b39}.theme-red .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#dd4b39;background-color:#dd4b39}.theme-red .more-theme-item:hover,.theme-red .more-theme-item.active{border-color:#dd4b39}.theme-red .btn-circle{background:#dd4b39}.theme-red .ball-loader>span,.theme-red .signal-loader>span{background-color:#dd4b39}.theme-red .text-primary,.theme-red .layui-link{color:#dd4b39!important}.theme-red .layui-btn{background-color:#dd4b39}.theme-red .layui-form-onswitch{border-color:#dd4b39;background-color:#dd4b39}.theme-red .layui-form-radio>i:hover,.theme-red .layui-form-radioed>i,.theme-red .layui-form-checked i,.theme-red .layui-form-checked:hover i{color:#dd4b39}.theme-red .layui-form-checked[lay-skin=primary] i,.theme-red .layui-form-checked span,.theme-red .layui-form-checked:hover span{border-color:#dd4b39!important;background-color:#dd4b39}.theme-red .layui-form-checked[lay-skin=primary] i:hover,.theme-red .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#dd4b39!important}.theme-red .layui-form-select dl dd.layui-this{background-color:#dd4b39}.theme-red .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#dd4b39}.theme-red .layui-laypage input:focus,.theme-red .layui-laypage select:focus{border-color:#dd4b39!important}.theme-red .layui-laypage a:hover{color:#dd4b39}.theme-red .layui-tab-brief>.layui-tab-title .layui-this{color:#dd4b39}.theme-red .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-red .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#dd4b39!important}.theme-red .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#dd4b39;color:#dd4b39}.theme-red .layui-breadcrumb a:hover{color:#dd4b39!important}.theme-red .layui-laydate-footer span:hover,.theme-red .layui-laydate-header i:hover,.theme-red .layui-laydate-header span:hover{color:#dd4b39}.theme-red .layui-laydate .layui-this{background-color:#dd4b39!important}.theme-red .layui-laydate-content td.laydate-selected{background-color:rgba(221,75,57,.1)}.theme-red .laydate-selected:hover{background-color:rgba(221,75,57,.1)!important}.theme-red .layui-timeline-axis{color:#dd4b39}.theme-red .layui-transfer-active .layui-btn{background-color:#dd4b39!important;border-color:#dd4b39!important}.theme-red .layui-progress-bar{background-color:#dd4b39}.theme-red .layui-slider-bar{background-color:#dd4b39!important}.theme-red .layui-slider-wrap-btn{border-color:#dd4b39!important}.theme-red .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#dd4b39}.theme-red .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-red .layui-elem-quote{border-color:#dd4b39}.theme-red .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-red .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#dd4b39}.theme-red .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#eea39a}.theme-red .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#dd4b39}.theme-red .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#eea39a!important}.theme-red .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#dd4b39!important}.theme-red .ew-cascader-dropdown-list-item.active,.theme-red .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#dd4b39}.theme-red div.tagsinput span.tag{background:#dd4b39}.theme-red xm-select .xm-body .xm-option .xm-option-icon{border-color:#dd4b39!important}.theme-red xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-red xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-red .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#dd4b39!important}.theme-red xm-select .xm-label .xm-label-block,.theme-red xm-select .xm-body .xm-option.hide-icon.selected{background-color:#dd4b39!important}.theme-red .city-select a.active{color:#fff!important;background-color:#dd4b39!important}.theme-red .city-select a:hover,.theme-red .city-select a:focus{background-color:rgba(221,75,57,.1);color:#dd4b39}.theme-red .city-picker-span>.title>span:hover{background-color:rgba(221,75,57,.1)}.theme-red .city-select-tab>a.active{color:#dd4b39}.theme-cyan .layui-layout-admin .layui-header .layui-logo{background-color:#001529}.theme-cyan .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-cyan .layui-layout-admin .layui-header .layui-nav-bar{background-color:#001529}.theme-cyan .layui-layout-admin .layui-side{background-color:#001529}.theme-cyan .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-cyan .layui-nav-tree .layui-this>a,.theme-cyan .layui-nav-tree .layui-this>a:hover{background-color:#1890ff}.theme-cyan .layui-nav-tree>.layui-nav-item>a:before{background-color:#1890ff}.theme-cyan .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#001529!important}.theme-cyan .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{background-color:#001529}.theme-cyan .layui-body-header-title{border-left-color:#1890ff}.theme-cyan .layui-layer.layui-layer-admin{border-radius:4px}.theme-cyan .layui-layer.layui-layer-admin .layui-layer-title{color:#333;font-size:16px;padding-left:23px;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #f1f1f1}.theme-cyan .layui-layer.layui-layer-admin .layui-layer-setwin a{color:#8c8c8c;font-weight:600}.theme-cyan .layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:#8c8c8c}.theme-cyan .layui-layer.layui-layer-admin .layui-layer-btn a{height:32px;line-height:32px;border-radius:4px;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-cyan .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#1890ff;background-color:#1890ff}.theme-cyan .more-theme-item:hover,.theme-cyan .more-theme-item.active{border-color:#1890ff}.theme-cyan .btn-circle{background:#1890ff}.theme-cyan .ball-loader>span,.theme-cyan .signal-loader>span{background-color:#1890ff}.theme-cyan .text-primary,.theme-cyan .layui-link{color:#1890ff!important}.theme-cyan .layui-btn{height:36px;line-height:36px;border-radius:4px;background-color:#1890ff;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-cyan .layui-btn-lg{height:42px;line-height:42px}.theme-cyan .layui-btn-sm{height:28px;line-height:28px}.theme-cyan .layui-btn-xs{height:22px;line-height:22px}.theme-cyan .layui-input,.theme-cyan .layui-select,.theme-cyan .layui-textarea,.theme-cyan xm-select{height:36px;border-radius:4px}.theme-cyan .layui-input:focus,.theme-cyan .layui-textarea:focus,.theme-cyan xm-select:hover{border-color:#40a9ff!important}.theme-cyan .layui-form-label,.theme-cyan .layui-form-mid{padding-top:8px;padding-bottom:8px}.theme-cyan .layui-input-block{min-height:36px}.theme-cyan .layui-form-radio{margin-top:4px}.theme-cyan .layui-form-onswitch{border-color:#1890ff;background-color:#1890ff}.theme-cyan .layui-form-radio>i:hover,.theme-cyan .layui-form-radioed>i,.theme-cyan .layui-form-checked i,.theme-cyan .layui-form-checked:hover i{color:#1890ff}.theme-cyan .layui-form-checked[lay-skin=primary] i,.theme-cyan .layui-form-checked span,.theme-cyan .layui-form-checked:hover span{border-color:#1890ff!important;background-color:#1890ff}.theme-cyan .layui-form-checked[lay-skin=primary] i:hover,.theme-cyan .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#1890ff!important}.theme-cyan .layui-form-select dl dd.layui-this{background-color:#1890ff}.theme-cyan .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#1890ff}.theme-cyan .layui-laypage input:focus,.theme-cyan .layui-laypage select:focus{border-color:#1890ff!important}.theme-cyan .layui-laypage a:hover{color:#1890ff}.theme-cyan .layui-tab-brief>.layui-tab-title .layui-this{color:#1890ff}.theme-cyan .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-cyan .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#1890ff!important}.theme-cyan .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#2d8cf0;color:#2d8cf0}.theme-cyan .layui-breadcrumb a:hover{color:#1890ff!important}.theme-cyan .layui-laydate-footer span:hover,.theme-cyan .layui-laydate-header i:hover,.theme-cyan .layui-laydate-header span:hover{color:#1890ff}.theme-cyan .layui-laydate .layui-this{background-color:#1890ff!important}.theme-cyan .layui-laydate-content td.laydate-selected{background-color:rgba(24,144,255,.1)}.theme-cyan .laydate-selected:hover{background-color:rgba(24,144,255,.1)!important}.theme-cyan .layui-timeline-axis{color:#1890ff}.theme-cyan .layui-transfer-active .layui-btn{background-color:#1890ff!important;border-color:#1890ff!important}.theme-cyan .layui-progress-bar{background-color:#1890ff}.theme-cyan .layui-slider-bar{background-color:#1890ff!important}.theme-cyan .layui-slider-wrap-btn{border-color:#1890ff!important}.theme-cyan .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#1890ff}.theme-cyan .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-cyan .layui-elem-quote{border-color:#1890ff}.theme-cyan .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-cyan .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#1890ff}.theme-cyan .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#89c6ff}.theme-cyan .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#1890ff}.theme-cyan .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#89c6ff!important}.theme-cyan .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#1890ff!important}.theme-cyan .ew-cascader-dropdown-list-item.active,.theme-cyan .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#1890ff}.theme-cyan div.tagsinput span.tag{background:#1890ff}.theme-cyan xm-select .xm-body .xm-option .xm-option-icon{border-color:#1890ff!important}.theme-cyan xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-cyan xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-cyan .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#1890ff!important}.theme-cyan xm-select .xm-label .xm-label-block,.theme-cyan xm-select .xm-body .xm-option.hide-icon.selected{background-color:#1890ff!important}.theme-cyan .city-select a.active{color:#fff!important;background-color:#1890ff!important}.theme-cyan .city-select a:hover,.theme-cyan .city-select a:focus{background-color:#f0faff;color:#1890ff}.theme-cyan .city-picker-span>.title>span:hover{background-color:#f0faff}.theme-cyan .city-select-tab>a.active{color:#1890ff}.theme-white .layui-layout-admin .layui-header .layui-logo{color:#262626;background-color:transparent;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-white .layui-layout-admin .layui-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-white .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-white .layui-layout-admin .layui-header .layui-nav-bar{background-color:#2d8cf0}.theme-white .layui-layout-admin .layui-side{background-color:#fff;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-white .layui-side .layui-nav .layui-nav-item a{color:#595959}.theme-white .layui-side .layui-nav .layui-nav-item a:hover{color:#2d8cf0}.theme-white .layui-side .layui-nav-itemed>a,.theme-white .layui-side .layui-nav-tree .layui-nav-title a,.theme-white .layui-side .layui-nav-tree .layui-nav-title a:hover{color:#595959!important}.theme-white .layui-side .layui-nav-itemed>a:hover{color:#2d8cf0!important}.theme-white .layui-side .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-white .layui-side .layui-nav-tree .layui-this>a,.theme-white .layui-side .layui-nav-tree .layui-this>a:hover{color:#2d8cf0;background:#f0faff;border-right:2px solid #2d8cf0}.theme-white .layui-side .layui-nav-tree .layui-nav-item .layui-nav-child{background-color:transparent!important}.theme-white .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#fff!important}@media screen and (min-width:769px){.theme-white .layui-layout-admin.admin-nav-mini .layui-side .layui-nav li.layui-nav-itemed>a{background:#f0faff;color:#2d8cf0!important}}.theme-white .layui-nav-tree>.layui-nav-item>a:before{display:none}.theme-white .layui-side .layui-nav .layui-nav-more{border-color:rgba(89,89,89,.7) transparent transparent}.theme-white .layui-side .layui-nav .layui-nav-mored,.theme-white .layui-side .layui-nav-itemed>a .layui-nav-more{border-color:transparent transparent rgba(89,89,89,.7)}.theme-white .layui-side .layui-nav-tree.arrow3 .layui-nav-itemed>a>.layui-nav-more:before{background-color:rgba(89,89,89,.7)}@media screen and (min-width:769px){.theme-white .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more{border-color:transparent transparent transparent rgba(89,89,89,.7)}}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title{top:8px;right:8px;height:32px;line-height:32px;box-sizing:border-box;background-color:transparent;box-shadow:-4px 4px 0 #f5f7f9;padding-right:70px}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li{border:0;margin-right:6px;border-radius:4px;background-color:#fff;line-height:32px;height:32px}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this{color:#2d8cf0;background-color:#fff}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:hover{background-color:#fff}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{display:none}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close,.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close:hover{top:8px;color:#8c8c8c;background-color:transparent}.theme-white .layui-layout-admin .layui-body .admin-tabs-control,.theme-white .layui-layout-admin .layui-body .admin-tabs-control:hover{top:8px;height:32px;line-height:32px;background-color:#f5f7f9;border:0}.theme-white .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-down{border-radius:4px;background-color:#fff;width:32px;right:8px}.theme-white .admin-tabs-control>.layui-nav .layui-nav-item{line-height:32px}.theme-white .admin-tabs-control>.layui-nav .layui-nav-item>a{height:32px;width:32px;padding:0}.theme-white .admin-tabs-control>.layui-nav .layui-nav-child{top:36px;border:0;border-radius:4px;box-shadow:0 1px 6px rgba(0,0,0,.2)}.theme-white .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-prev:before{content:"\e603"}.theme-white .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-next:before{content:"\e602"}.theme-white .layui-body-header-title{border-left-color:#2d8cf0}.theme-white .layui-body-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-white .layui-layer.layui-layer-admin{border-radius:4px}.theme-white .layui-layer.layui-layer-admin .layui-layer-title{color:#262626;font-size:16px;padding-left:23px;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #f1f1f1}.theme-white .layui-layer.layui-layer-admin .layui-layer-setwin a{color:#8c8c8c;font-weight:600}.theme-white .layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:#8c8c8c}.theme-white .layui-layer.layui-layer-admin .layui-layer-btn a{height:32px;line-height:32px;border-radius:4px;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-white .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#2d8cf0;background-color:#2d8cf0}.theme-white .more-theme-item:hover,.theme-white .more-theme-item.active{border-color:#2d8cf0}.theme-white .btn-circle{background:#2d8cf0}.theme-white .ball-loader>span,.theme-white .signal-loader>span{background-color:#2d8cf0}.theme-white .text-primary,.theme-white .layui-link{color:#2d8cf0!important}.theme-white .layui-card{border-radius:4px;box-shadow:none}.theme-white .layui-btn{height:36px;line-height:36px;border-radius:4px;background-color:#2d8cf0;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-white .layui-btn-lg{height:42px;line-height:42px}.theme-white .layui-btn-sm{height:28px;line-height:28px}.theme-white .layui-btn-xs{height:22px;line-height:22px}.theme-white .layui-input,.theme-white .layui-select,.theme-white .layui-textarea,.theme-white xm-select{height:36px;border-radius:4px}.theme-white .layui-input:focus,.theme-white .layui-textarea:focus,.theme-white xm-select:hover{border-color:#2d8cf0!important}.theme-white .layui-form-label,.theme-white .layui-form-mid{padding-top:8px;padding-bottom:8px}.theme-white .layui-input-block{min-height:36px}.theme-white .layui-form-radio{margin-top:4px}.theme-white .layui-form-onswitch{border-color:#2d8cf0;background-color:#2d8cf0}.theme-white .layui-form-radio>i:hover,.theme-white .layui-form-radioed>i,.theme-white .layui-form-checked i,.theme-white .layui-form-checked:hover i{color:#2d8cf0}.theme-white .layui-form-checked[lay-skin=primary] i,.theme-white .layui-form-checked span,.theme-white .layui-form-checked:hover span{border-color:#2d8cf0!important;background-color:#2d8cf0}.theme-white .layui-form-checked[lay-skin=primary] i:hover,.theme-white .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#2d8cf0!important}.theme-white .layui-form-select dl dd.layui-this{background-color:#2d8cf0}.theme-white .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#2d8cf0}.theme-white .layui-laypage input:focus,.theme-white .layui-laypage select:focus{border-color:#2d8cf0!important}.theme-white .layui-laypage a:hover{color:#2d8cf0}.theme-white .layui-tab-brief>.layui-tab-title .layui-this{color:#2d8cf0}.theme-white .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-white .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#2d8cf0!important}.theme-white .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#2d8cf0;color:#2d8cf0}.theme-white .layui-breadcrumb a:hover{color:#2d8cf0!important}.theme-white .layui-laydate-footer span:hover,.theme-white .layui-laydate-header i:hover,.theme-white .layui-laydate-header span:hover{color:#2d8cf0}.theme-white .layui-laydate .layui-this{background-color:#2d8cf0!important}.theme-white .layui-laydate-content td.laydate-selected{background-color:rgba(45,140,240,.1)}.theme-white .laydate-selected:hover{background-color:rgba(45,140,240,.1)!important}.theme-white .layui-timeline-axis{color:#2d8cf0}.theme-white .layui-transfer-active .layui-btn{background-color:#2d8cf0!important;border-color:#2d8cf0!important}.theme-white .layui-progress-bar{background-color:#2d8cf0}.theme-white .layui-slider-bar{background-color:#2d8cf0!important}.theme-white .layui-slider-wrap-btn{border-color:#2d8cf0!important}.theme-white .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#2d8cf0}.theme-white .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-white .layui-elem-quote{border-color:#2d8cf0}.theme-white .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-white .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#2d8cf0}.theme-white .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#95c5f7}.theme-white .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#2d8cf0}.theme-white .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#95c5f7!important}.theme-white .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#2d8cf0!important}.theme-white .ew-cascader-dropdown-list-item.active,.theme-white .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#2d8cf0}.theme-white div.tagsinput span.tag{background:#2d8cf0}.theme-white xm-select .xm-body .xm-option .xm-option-icon{border-color:#2d8cf0!important}.theme-white xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-white xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-white .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#2d8cf0!important}.theme-white xm-select .xm-label .xm-label-block,.theme-white xm-select .xm-body .xm-option.hide-icon.selected{background-color:#2d8cf0!important}.theme-white .city-select a.active{color:#fff!important;background-color:#2d8cf0!important}.theme-white .city-select a:hover,.theme-white .city-select a:focus{background-color:#f0faff;color:#2d8cf0}.theme-white .city-picker-span>.title>span:hover{background-color:#f0faff}.theme-white .city-select-tab>a.active{color:#2d8cf0}.theme-pink .layui-layout-admin .layui-header .layui-logo{color:#262626;background-color:transparent;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-pink .layui-layout-admin .layui-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-pink .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-pink .layui-layout-admin .layui-header .layui-nav-bar{background-color:#fb7299}.theme-pink .layui-layout-admin .layui-side{background-color:#fff;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-pink .layui-side .layui-nav .layui-nav-item a{color:#595959}.theme-pink .layui-side .layui-nav .layui-nav-item a:hover{color:#fb7299}.theme-pink .layui-side .layui-nav-itemed>a,.theme-pink .layui-side .layui-nav-tree .layui-nav-title a,.theme-pink .layui-side .layui-nav-tree .layui-nav-title a:hover{color:#595959!important}.theme-pink .layui-side .layui-nav-itemed>a:hover{color:#fb7299!important}.theme-pink .layui-side .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-pink .layui-side .layui-nav-tree .layui-this>a,.theme-pink .layui-side .layui-nav-tree .layui-this>a:hover{color:#fb7299;background:#fff7f9;border-right:2px solid #fb7299}.theme-pink .layui-side .layui-nav-tree .layui-nav-item .layui-nav-child{background-color:transparent!important}.theme-pink .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#fff!important}@media screen and (min-width:769px){.theme-pink .layui-layout-admin.admin-nav-mini .layui-side .layui-nav li.layui-nav-itemed>a{background:#fff1f5;color:#fb7299!important}}.theme-pink .layui-nav-tree>.layui-nav-item>a:before{display:none}.theme-pink .layui-side .layui-nav .layui-nav-more{border-color:rgba(89,89,89,.7) transparent transparent}.theme-pink .layui-side .layui-nav .layui-nav-mored,.theme-pink .layui-side .layui-nav-itemed>a .layui-nav-more{border-color:transparent transparent rgba(89,89,89,.7)}.theme-pink .layui-side .layui-nav-tree.arrow3 .layui-nav-itemed>a>.layui-nav-more:before{background-color:rgba(89,89,89,.7)}@media screen and (min-width:769px){.theme-pink .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more{border-color:transparent transparent transparent rgba(89,89,89,.7)}}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title{top:8px;right:8px;height:32px;line-height:32px;box-sizing:border-box;background-color:transparent;box-shadow:-4px 4px 0 #f5f7f9;padding-right:70px}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li{border:0;margin-right:6px;border-radius:4px;background-color:#fff;line-height:32px;height:32px}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this{color:#fb7299;background-color:#fff}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:hover{background-color:#fff}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{display:none}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close,.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close:hover{top:8px;color:#8c8c8c;background-color:transparent}.theme-pink .layui-layout-admin .layui-body .admin-tabs-control,.theme-pink .layui-layout-admin .layui-body .admin-tabs-control:hover{top:8px;height:32px;line-height:32px;background-color:#f5f7f9;border:0}.theme-pink .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-down{border-radius:4px;background-color:#fff;width:32px;right:8px}.theme-pink .admin-tabs-control>.layui-nav .layui-nav-item{line-height:32px}.theme-pink .admin-tabs-control>.layui-nav .layui-nav-item>a{height:32px;width:32px;padding:0}.theme-pink .admin-tabs-control>.layui-nav .layui-nav-child{top:36px;border:0;border-radius:4px;box-shadow:0 1px 6px rgba(0,0,0,.2)}.theme-pink .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-prev:before{content:"\e603"}.theme-pink .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-next:before{content:"\e602"}.theme-pink .layui-body-header-title{border-left-color:#fb7299}.theme-pink .layui-body-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-pink .layui-layer.layui-layer-admin{border-radius:4px}.theme-pink .layui-layer.layui-layer-admin .layui-layer-title{color:#262626;font-size:16px;padding-left:23px;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #f1f1f1}.theme-pink .layui-layer.layui-layer-admin .layui-layer-setwin a{color:#8c8c8c;font-weight:600}.theme-pink .layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:#8c8c8c}.theme-pink .layui-layer.layui-layer-admin .layui-layer-btn a{height:32px;line-height:32px;border-radius:4px;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-pink .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#fb7299;background-color:#fb7299}.theme-pink .more-theme-item:hover,.theme-pink .more-theme-item.active{border-color:#fb7299}.theme-pink .btn-circle{background:#fb7299}.theme-pink .ball-loader>span,.theme-pink .signal-loader>span{background-color:#fb7299}.theme-pink .text-primary,.theme-pink .layui-link{color:#fb7299!important}.theme-pink .layui-card{border-radius:4px;box-shadow:none}.theme-pink .layui-btn{height:36px;line-height:36px;border-radius:4px;background-color:#fb7299;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-pink .layui-btn-lg{height:42px;line-height:42px}.theme-pink .layui-btn-sm{height:28px;line-height:28px}.theme-pink .layui-btn-xs{height:22px;line-height:22px}.theme-pink .layui-input,.theme-pink .layui-select,.theme-pink .layui-textarea,.theme-pink xm-select{height:36px;border-radius:4px}.theme-pink .layui-input:focus,.theme-pink .layui-textarea:focus,.theme-pink xm-select:hover{border-color:#fb7299!important}.theme-pink .layui-form-label,.theme-pink .layui-form-mid{padding-top:8px;padding-bottom:8px}.theme-pink .layui-input-block{min-height:36px}.theme-pink .layui-form-radio{margin-top:4px}.theme-pink .layui-form-onswitch{border-color:#fb7299;background-color:#fb7299}.theme-pink .layui-form-radio>i:hover,.theme-pink .layui-form-radioed>i,.theme-pink .layui-form-checked i,.theme-pink .layui-form-checked:hover i{color:#fb7299}.theme-pink .layui-form-checked[lay-skin=primary] i,.theme-pink .layui-form-checked span,.theme-pink .layui-form-checked:hover span{border-color:#fb7299!important;background-color:#fb7299}.theme-pink .layui-form-checked[lay-skin=primary] i:hover,.theme-pink .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#fb7299!important}.theme-pink .layui-form-select dl dd.layui-this{background-color:#fb7299}.theme-pink .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#fb7299}.theme-pink .layui-laypage input:focus,.theme-pink .layui-laypage select:focus{border-color:#fb7299!important}.theme-pink .layui-laypage a:hover{color:#fb7299}.theme-pink .layui-tab-brief>.layui-tab-title .layui-this{color:#fb7299}.theme-pink .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-pink .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#fb7299!important}.theme-pink .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#fb7299;color:#fb7299}.theme-pink .layui-breadcrumb a:hover{color:#fb7299!important}.theme-pink .layui-laydate-footer span:hover,.theme-pink .layui-laydate-header i:hover,.theme-pink .layui-laydate-header span:hover{color:#fb7299}.theme-pink .layui-laydate .layui-this{background-color:#fb7299!important}.theme-pink .layui-laydate-content td.laydate-selected{background-color:#fff1f5}.theme-pink .laydate-selected:hover{background-color:#fff1f5!important}.theme-pink .layui-timeline-axis{color:#fb7299}.theme-pink .layui-transfer-active .layui-btn{background-color:#fb7299!important;border-color:#fb7299!important}.theme-pink .layui-progress-bar{background-color:#fb7299}.theme-pink .layui-slider-bar{background-color:#fb7299!important}.theme-pink .layui-slider-wrap-btn{border-color:#fb7299!important}.theme-pink .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#fb7299}.theme-pink .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-pink .layui-elem-quote{border-color:#fb7299}.theme-pink .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-pink .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#fb7299}.theme-pink .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#fdb8cc}.theme-pink .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#fb7299}.theme-pink .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#fdb8cc!important}.theme-pink .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#fb7299!important}.theme-pink .ew-cascader-dropdown-list-item.active,.theme-pink .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#fb7299}.theme-pink div.tagsinput span.tag{background:#fb7299}.theme-pink xm-select .xm-body .xm-option .xm-option-icon{border-color:#fb7299!important}.theme-pink xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-pink xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-pink .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#fb7299!important}.theme-pink xm-select .xm-label .xm-label-block,.theme-pink xm-select .xm-body .xm-option.hide-icon.selected{background-color:#fb7299!important}.theme-pink .city-select a.active{color:#fff!important;background-color:#fb7299!important}.theme-pink .city-select a:hover,.theme-pink .city-select a:focus{background-color:#fff1f5;color:#fb7299}.theme-pink .city-picker-span>.title>span:hover{background-color:#fff1f5}.theme-pink .city-select-tab>a.active{color:#fb7299}.theme-colorful .layui-layout-admin .layui-header .layui-logo{color:#262626;background-color:transparent;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-colorful .layui-layout-admin .layui-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-colorful .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-colorful .layui-layout-admin .layui-header .layui-nav-bar{background-color:#2d8cf0}.theme-colorful .layui-layout-admin .layui-side{background-color:#fff;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-colorful .layui-side .layui-nav .layui-nav-item a{color:#595959}.theme-colorful .layui-side .layui-nav .layui-nav-item a:hover{color:#2d8cf0}.theme-colorful .layui-side .layui-nav-itemed>a,.theme-colorful .layui-side .layui-nav-tree .layui-nav-title a,.theme-colorful .layui-side .layui-nav-tree .layui-nav-title a:hover{color:#595959!important}.theme-colorful .layui-side .layui-nav-itemed>a:hover{color:#2d8cf0!important}.theme-colorful .layui-side .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-colorful .layui-side .layui-nav-tree .layui-this>a,.theme-colorful .layui-side .layui-nav-tree .layui-this>a:hover{color:#2d8cf0;background:#f0faff;border-right:2px solid #2d8cf0}.theme-colorful .layui-side .layui-nav-tree .layui-nav-item .layui-nav-child{background-color:transparent!important}.theme-colorful .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#fff!important}@media screen and (min-width:769px){.theme-colorful .layui-layout-admin.admin-nav-mini .layui-side .layui-nav li.layui-nav-itemed>a{background:#f0faff;color:#2d8cf0!important}}.theme-colorful .layui-nav-tree>.layui-nav-item>a:before{display:none}.theme-colorful .layui-side .layui-nav .layui-nav-more{border-color:rgba(89,89,89,.7) transparent transparent}.theme-colorful .layui-side .layui-nav .layui-nav-mored,.theme-colorful .layui-side .layui-nav-itemed>a .layui-nav-more{border-color:transparent transparent rgba(89,89,89,.7)}.theme-colorful .layui-side .layui-nav-tree.arrow3 .layui-nav-itemed>a>.layui-nav-more:before{background-color:rgba(89,89,89,.7)}@media screen and (min-width:769px){.theme-colorful .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more{border-color:transparent transparent transparent rgba(89,89,89,.7)}}.theme-colorful .layui-side .layui-nav .layui-nav-item a cite{vertical-align:middle}.theme-colorful .layui-side .layui-nav-item>a>.layui-icon{color:#fff;width:28px;height:28px;font-size:12px!important;line-height:28px;text-align:center;border-radius:50%;display:inline-block;vertical-align:middle;background-color:#61b2fc}.theme-colorful .layui-side .layui-nav-item:nth-child(even)>a>.layui-icon{background-color:#7dd733}.theme-colorful .layui-side .layui-nav-item:nth-child(3)>a>.layui-icon{background-color:#32a2d4}.theme-colorful .layui-side .layui-nav-item:nth-child(4)>a>.layui-icon{background-color:#2bccce}.theme-colorful .layui-side .layui-nav-item:nth-child(5)>a>.layui-icon{background-color:#7383cf}@media screen and (min-width:768px){.theme-colorful .admin-nav-mini .layui-side .layui-nav-item>a{padding-left:16px}}.theme-colorful .layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child a{padding-left:63px}.theme-colorful .layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child a{padding-left:83px}.theme-colorful .layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child .layui-nav-child a{padding-left:103px}.theme-colorful .layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child .layui-nav-child .layui-nav-child a{padding-left:123px}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title{top:8px;right:8px;height:32px;line-height:32px;box-sizing:border-box;background-color:transparent;box-shadow:-4px 4px 0 #f5f7f9;padding-right:70px}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li{border:0;margin-right:6px;border-radius:4px;background-color:#fff;line-height:32px;height:32px}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this{color:#2d8cf0;background-color:#fff}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:hover{background-color:#fff}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{display:none}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close,.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close:hover{top:8px;color:#8c8c8c;background-color:transparent}.theme-colorful .layui-layout-admin .layui-body .admin-tabs-control,.theme-colorful .layui-layout-admin .layui-body .admin-tabs-control:hover{top:8px;height:32px;line-height:32px;background-color:#f5f7f9;border:0}.theme-colorful .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-down{border-radius:4px;background-color:#fff;width:32px;right:8px}.theme-colorful .admin-tabs-control>.layui-nav .layui-nav-item{line-height:32px}.theme-colorful .admin-tabs-control>.layui-nav .layui-nav-item>a{height:32px;width:32px;padding:0}.theme-colorful .admin-tabs-control>.layui-nav .layui-nav-child{top:36px;border:0;border-radius:4px;box-shadow:0 1px 6px rgba(0,0,0,.2)}.theme-colorful .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-prev:before{content:"\e603"}.theme-colorful .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-next:before{content:"\e602"}.theme-colorful .layui-body-header-title{border-left-color:#2d8cf0}.theme-colorful .layui-body-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-colorful .layui-layer.layui-layer-admin{border-radius:4px}.theme-colorful .layui-layer.layui-layer-admin .layui-layer-title{color:#262626;font-size:16px;padding-left:23px;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #f1f1f1}.theme-colorful .layui-layer.layui-layer-admin .layui-layer-setwin a{color:#8c8c8c;font-weight:600}.theme-colorful .layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:#8c8c8c}.theme-colorful .layui-layer.layui-layer-admin .layui-layer-btn a{height:32px;line-height:32px;border-radius:4px;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-colorful .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#2d8cf0;background-color:#2d8cf0}.theme-colorful .more-theme-item:hover,.theme-colorful .more-theme-item.active{border-color:#2d8cf0}.theme-colorful .btn-circle{background:#2d8cf0}.theme-colorful .ball-loader>span,.theme-colorful .signal-loader>span{background-color:#2d8cf0}.theme-colorful .text-primary,.theme-colorful .layui-link{color:#2d8cf0!important}.theme-colorful .layui-card{border-radius:4px;box-shadow:none}.theme-colorful .layui-btn{height:36px;line-height:36px;border-radius:4px;background-color:#2d8cf0;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-colorful .layui-btn-lg{height:42px;line-height:42px}.theme-colorful .layui-btn-sm{height:28px;line-height:28px}.theme-colorful .layui-btn-xs{height:22px;line-height:22px}.theme-colorful .layui-input,.theme-colorful .layui-select,.theme-colorful .layui-textarea,.theme-colorful xm-select{height:36px;border-radius:4px}.theme-colorful .layui-input:focus,.theme-colorful .layui-textarea:focus,.theme-colorful xm-select:hover{border-color:#2d8cf0!important}.theme-colorful .layui-form-label,.theme-colorful .layui-form-mid{padding-top:8px;padding-bottom:8px}.theme-colorful .layui-input-block{min-height:36px}.theme-colorful .layui-form-radio{margin-top:4px}.theme-colorful .layui-form-onswitch{border-color:#2d8cf0;background-color:#2d8cf0}.theme-colorful .layui-form-radio>i:hover,.theme-colorful .layui-form-radioed>i,.theme-colorful .layui-form-checked i,.theme-colorful .layui-form-checked:hover i{color:#2d8cf0}.theme-colorful .layui-form-checked[lay-skin=primary] i,.theme-colorful .layui-form-checked span,.theme-colorful .layui-form-checked:hover span{border-color:#2d8cf0!important;background-color:#2d8cf0}.theme-colorful .layui-form-checkbox[lay-skin=primary] i:hover,.theme-colorful .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#2d8cf0}.theme-colorful .layui-form-select dl dd.layui-this{background-color:#2d8cf0}.theme-colorful .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#2d8cf0}.theme-colorful .layui-laypage input:focus,.theme-colorful .layui-laypage select:focus{border-color:#2d8cf0!important}.theme-colorful .layui-laypage a:hover{color:#2d8cf0}.theme-colorful .layui-tab-brief>.layui-tab-title .layui-this{color:#2d8cf0}.theme-colorful .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-colorful .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#2d8cf0!important}.theme-colorful .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#2d8cf0;color:#2d8cf0}.theme-colorful .layui-breadcrumb a:hover{color:#2d8cf0!important}.theme-colorful .layui-laydate-footer span:hover,.theme-colorful .layui-laydate-header i:hover,.theme-colorful .layui-laydate-header span:hover{color:#2d8cf0}.theme-colorful .layui-laydate .layui-this{background-color:#2d8cf0!important}.theme-colorful .layui-laydate-content td.laydate-selected{background-color:rgba(45,140,240,.1)}.theme-colorful .laydate-selected:hover{background-color:rgba(45,140,240,.1)!important}.theme-colorful .layui-timeline-axis{color:#2d8cf0}.theme-colorful .layui-transfer-active .layui-btn{background-color:#2d8cf0!important;border-color:#2d8cf0!important}.theme-colorful .layui-progress-bar{background-color:#2d8cf0}.theme-colorful .layui-slider-bar{background-color:#2d8cf0!important}.theme-colorful .layui-slider-wrap-btn{border-color:#2d8cf0!important}.theme-colorful .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#2d8cf0}.theme-colorful .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-colorful .layui-elem-quote{border-color:#2d8cf0}.theme-colorful .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-colorful .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#2d8cf0}.theme-colorful .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#96c6f8}.theme-colorful .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#2d8cf0}.theme-colorful .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#96c6f8!important}.theme-colorful .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#2d8cf0!important}.theme-colorful .ew-cascader-dropdown-list-item.active,.theme-colorful .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#2d8cf0}.theme-colorful div.tagsinput span.tag{background:#2d8cf0}.theme-colorful xm-select .xm-body .xm-option .xm-option-icon{border-color:#2d8cf0!important}.theme-colorful xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-colorful xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-colorful .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#2d8cf0!important}.theme-colorful xm-select .xm-label .xm-label-block,.theme-colorful xm-select .xm-body .xm-option.hide-icon.selected{background-color:#2d8cf0!important}.theme-colorful .city-select a.active{color:#fff!important;background-color:#2d8cf0!important}.theme-colorful .city-select a:hover,.theme-colorful .city-select a:focus{background-color:#f0faff;color:#2d8cf0}.theme-colorful .city-picker-span>.title>span:hover{background-color:#f0faff}.theme-colorful .city-select-tab>a.active{color:#2d8cf0}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/css/login2/login2.css b/ss-admin/src/main/resources/static/css/login2/login2.css
new file mode 100644
index 0000000..5018240
--- /dev/null
+++ b/ss-admin/src/main/resources/static/css/login2/login2.css
@@ -0,0 +1,143 @@
+body {
+ background-image: url("/images/bg-login.jpg");
+ background-repeat: no-repeat;
+ background-size: cover;
+ min-height: 100vh;
+}
+
+body:before {
+ content: "";
+ background-color: rgba(0, 0, 0, .2);
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
+
+.login-wrapper {
+ max-width: 420px;
+ padding: 20px;
+ margin: 0 auto;
+ position: relative;
+ box-sizing: border-box;
+ z-index: 2;
+}
+
+.login-wrapper > .layui-form {
+ padding: 25px 30px;
+ background-color: #fff;
+ box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.19);
+ box-sizing: border-box;
+ border-radius: 4px;
+}
+
+.login-wrapper > .layui-form > h2 {
+ color: #333;
+ font-size: 18px;
+ text-align: center;
+ margin-bottom: 25px;
+}
+
+.login-wrapper > .layui-form > .layui-form-item {
+ margin-bottom: 25px;
+ position: relative;
+}
+
+.login-wrapper > .layui-form > .layui-form-item:last-child {
+ margin-bottom: 0;
+}
+
+.login-wrapper > .layui-form > .layui-form-item > .layui-input {
+ height: 46px;
+ line-height: 1;
+ border-radius: 2px !important;
+}
+
+.login-wrapper .layui-input-icon-group > .layui-input {
+ padding-left: 46px;
+}
+
+.login-wrapper .layui-input-icon-group > .layui-icon {
+ width: 46px;
+ height: 46px;
+ line-height: 46px;
+ font-size: 20px;
+ color: #909399;
+ position: absolute;
+ left: 0;
+ top: 0;
+ text-align: center;
+}
+
+.login-wrapper > .layui-form > .layui-form-item.login-captcha-group {
+ padding-right: 135px;
+}
+
+.login-wrapper > .layui-form > .layui-form-item.login-captcha-group > .login-captcha {
+ height: 46px;
+ width: 120px;
+ cursor: pointer;
+ box-sizing: border-box;
+ border: 1px solid #e6e6e6;
+ border-radius: 2px !important;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.login-wrapper > .layui-form > .layui-form-item > .layui-form-checkbox {
+ margin: 0 !important;
+ padding-left: 25px;
+}
+
+.login-wrapper > .layui-form > .layui-form-item > .layui-form-checkbox > .layui-icon {
+ width: 15px !important;
+ height: 15px !important;
+}
+
+.login-wrapper > .layui-form .layui-btn-fluid {
+ height: 48px;
+ line-height: 48px;
+ font-size: 16px;
+ border-radius: 2px !important;
+}
+
+.login-wrapper > .layui-form > .layui-form-item.login-oauth-group > a > .layui-icon {
+ font-size: 26px;
+}
+
+.login-copyright {
+ color: #eee;
+ padding-bottom: 20px;
+ text-align: center;
+ position: relative;
+ z-index: 1;
+}
+
+@media screen and (min-height: 550px) {
+ .login-wrapper {
+ margin: -250px auto 0;
+ position: absolute;
+ top: 50%;
+ left: 0;
+ right: 0;
+ width: 100%;
+ }
+
+ .login-copyright {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ }
+}
+
+.layui-btn {
+ background-color: #5FB878;
+ border-color: #5FB878;
+}
+
+.layui-link {
+ color: #5FB878 !important;
+}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/css/public.css b/ss-admin/src/main/resources/static/css/public.css
new file mode 100644
index 0000000..9218d83
--- /dev/null
+++ b/ss-admin/src/main/resources/static/css/public.css
@@ -0,0 +1,114 @@
+body {
+ margin: 15px 15px 15px 15px;
+ background: #f2f2f2;
+}
+
+.layuimini-container {
+ border: 1px solid #f2f2f2;
+ border-radius: 5px;
+ background-color: #ffffff
+}
+
+.layuimini-main {
+ margin: 10px 10px 10px 10px;
+}
+
+/**必填红点 */
+.layuimini-form > .layui-form-item > .required:after {
+ content: '*';
+ color: red;
+ position: absolute;
+ margin-left: 4px;
+ font-weight: bold;
+ line-height: 1.8em;
+ top: 6px;
+ right: 5px;
+}
+
+.layuimini-form > .layui-form-item > .layui-form-label {
+ width: 120px !important;
+}
+
+.layuimini-form > .layui-form-item > .layui-input-block {
+ margin-left: 150px !important;
+}
+
+.layuimini-form > .layui-form-item > .layui-input-block > tip {
+ display: inline-block;
+ margin-top: 10px;
+ line-height: 10px;
+ font-size: 10px;
+ color: #a29c9c;
+}
+
+/**搜索框*/
+.layuimini-container .table-search-fieldset {
+ margin: 0;
+ border: 1px solid #e6e6e6;
+ padding: 10px 20px 5px 20px;
+ color: #6b6b6b;
+}
+
+/**自定义滚动条样式 */
+::-webkit-scrollbar {
+ width: 6px;
+ height: 6px
+}
+
+::-webkit-scrollbar-track {
+ background-color: transparent;
+ -webkit-border-radius: 2em;
+ -moz-border-radius: 2em;
+ border-radius: 2em;
+}
+
+::-webkit-scrollbar-thumb {
+ background-color: #9c9da0;
+ -webkit-border-radius: 2em;
+ -moz-border-radius: 2em;
+ border-radius: 2em
+}
+
+/* 树形选择器 */
+.selectContent {
+ display: none;
+ position: absolute;
+ z-index: 999;
+ padding-bottom: 4px;
+ overflow-y: scroll;
+ max-height: 210px;
+ background-color: #FAFAFA;
+ border: 1px solid rgb(204, 204, 204);
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+}
+
+.select-tree {
+ cursor: pointer;
+}
+
+.select-tree + .layui-edge {
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ margin-top: -3px;
+ border-width: 6px;
+ border-top: 6px solid #c2c2c2;
+}
+
+/*树状图下拉框样式*/
+.trg{
+ width: 0;
+ height: 0;
+ border-left: 3px solid transparent;
+ border-right: 3px solid transparent;
+ border-top: 6px solid black;;
+ position: absolute;
+ left:181px;
+ top:8px;
+
+}
+.org-select{
+ cursor: default;
+ z-index: -1;
+ width:200px;
+}
diff --git a/ss-admin/src/main/resources/static/css/themes/default.css b/ss-admin/src/main/resources/static/css/themes/default.css
new file mode 100644
index 0000000..8f55edb
--- /dev/null
+++ b/ss-admin/src/main/resources/static/css/themes/default.css
@@ -0,0 +1,98 @@
+/*头部右侧背景色 headerRightBg */
+.layui-layout-admin .layui-header {
+ background-color: #ffffff !important;
+}
+
+/*头部右侧选中背景色 headerRightBgThis */
+.layui-layout-admin .layui-header .layuimini-header-content > ul > .layui-nav-item.layui-this, .layuimini-tool i:hover {
+ background-color: #e4e4e4 !important;
+}
+
+/*头部右侧字体颜色 headerRightColor */
+.layui-layout-admin .layui-header .layui-nav .layui-nav-item a {
+ color: rgba(107, 107, 107, 0.7);
+}
+
+/**头部右侧下拉字体颜色 headerRightChildColor */
+.layui-layout-admin .layui-header .layui-nav .layui-nav-item .layui-nav-child a {
+ color: rgba(107, 107, 107, 0.7) !important;
+}
+
+/*头部右侧鼠标选中 headerRightColorThis */
+.layui-header .layuimini-menu-header-pc.layui-nav .layui-nav-item a:hover, .layui-header .layuimini-header-menu.layuimini-pc-show.layui-nav .layui-this a {
+ color: #565656 !important;
+}
+
+/*头部右侧更多下拉颜色 headerRightNavMore */
+.layui-header .layui-nav .layui-nav-more {
+ border-top-color: rgba(160, 160, 160, 0.7) !important;
+}
+
+/*头部右侧更多下拉颜色 headerRightNavMore */
+.layui-header .layui-nav .layui-nav-mored, .layui-header .layui-nav-itemed > a .layui-nav-more {
+ border-color: transparent transparent rgba(160, 160, 160, 0.7) !important;
+}
+
+/**头部右侧更多下拉配置色 headerRightNavMoreBg headerRightNavMoreColor */
+.layui-header .layui-nav .layui-nav-child dd.layui-this a, .layui-header .layui-nav-child dd.layui-this, .layui-layout-admin .layui-header .layui-nav .layui-nav-item .layui-nav-child .layui-this a {
+ background-color: #154d96 !important;
+ color: #ffffff !important;
+}
+
+/*头部缩放按钮样式 headerRightToolColor */
+.layui-layout-admin .layui-header .layuimini-tool i {
+ color: #565656;
+}
+
+/*logo背景颜色 headerLogoBg */
+.layui-layout-admin .layuimini-logo {
+ background-color: #ffffff !important;
+}
+
+/*logo字体颜色 headerLogoColor */
+.layui-layout-admin .layuimini-logo h1 {
+ color: rgb(191, 187, 187);
+}
+
+/*左侧菜单更多下拉样式 leftMenuNavMore */
+.layuimini-menu-left .layui-nav .layui-nav-more, .layuimini-menu-left-zoom.layui-nav .layui-nav-more {
+ border-top-color: rgb(191, 187, 187);
+}
+
+/*左侧菜单更多下拉样式 leftMenuNavMore */
+.layuimini-menu-left .layui-nav .layui-nav-mored, .layuimini-menu-left .layui-nav-itemed > a .layui-nav-more, .layuimini-menu-left-zoom.layui-nav .layui-nav-mored, .layuimini-menu-left-zoom.layui-nav-itemed > a .layui-nav-more {
+ border-color: transparent transparent rgb(191, 187, 187) !important;
+}
+
+/*左侧菜单背景 leftMenuBg */
+.layui-side.layui-bg-black, .layui-side.layui-bg-black > .layuimini-menu-left > ul, .layuimini-menu-left-zoom > ul {
+ background-color: #ffffff !important;
+}
+
+/*左侧菜单选中背景 leftMenuBgThis */
+.layuimini-menu-left .layui-nav-tree .layui-this, .layuimini-menu-left .layui-nav-tree .layui-this > a, .layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this, .layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this a, .layuimini-menu-left-zoom.layui-nav-tree .layui-this, .layuimini-menu-left-zoom.layui-nav-tree .layui-this > a, .layuimini-menu-left-zoom.layui-nav-tree .layui-nav-child dd.layui-this, .layuimini-menu-left-zoom.layui-nav-tree .layui-nav-child dd.layui-this a {
+ background-color: #154d96 !important
+}
+
+/*左侧菜单子菜单背景 leftMenuChildBg */
+.layuimini-menu-left .layui-nav-itemed > .layui-nav-child {
+ background-color: #ffffff !important;
+}
+
+/*左侧菜单字体颜色 leftMenuColor */
+.layuimini-menu-left .layui-nav .layui-nav-item a, .layuimini-menu-left-zoom.layui-nav .layui-nav-item a {
+ color: rgb(40, 31, 31) !important;
+}
+
+/*左侧菜单选中字体颜色 leftMenuColorThis */
+.layuimini-menu-left , .layuimini-menu-left .layui-nav .layui-this a, .layuimini-menu-left-zoom.layui-nav .layui-this a {
+ color: #fac45f !important;
+}
+.layui-nav .layui-nav-item a:hover, .layuimini-menu-left-zoom.layui-nav .layui-nav-item a:hover{
+ color: #fac45f !important;
+}
+
+/**tab选项卡选中颜色 tabActiveColor */
+.layuimini-tab .layui-tab-title .layui-this .layuimini-tab-active {
+ background-color: #1e9fff;
+}
diff --git a/ss-admin/src/main/resources/static/css/welcome.css b/ss-admin/src/main/resources/static/css/welcome.css
new file mode 100644
index 0000000..b84d495
--- /dev/null
+++ b/ss-admin/src/main/resources/static/css/welcome.css
@@ -0,0 +1,136 @@
+.layui-card {
+ border: 1px solid #f2f2f2;
+ border-radius: 5px;
+}
+
+.icon {
+ margin-right: 10px;
+ color: #1aa094;
+}
+
+.icon-cray {
+ color: #ffb800 !important;
+}
+
+.icon-blue {
+ color: #1e9fff !important;
+}
+
+.icon-tip {
+ color: #ff5722 !important;
+}
+
+.layuimini-qiuck-module {
+ text-align: center;
+ margin-top: 10px
+}
+
+.layuimini-qiuck-module a i {
+ display: inline-block;
+ width: 100%;
+ height: 70px;
+ line-height: 70px;
+ text-align: center;
+ border-radius: 2px;
+ font-size: 30px;
+ background-color: #F8F8F8;
+ color: #333;
+ transition: all .3s;
+ -webkit-transition: all .3s;
+}
+
+.layuimini-qiuck-module a cite {
+ position: relative;
+ top: 2px;
+ display: block;
+ color: #666;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap;
+ font-size: 14px;
+}
+
+.welcome-module {
+ width: 100%;
+ height: 115px;
+}
+
+.panel {
+ background-color: #fff;
+ border: 1px solid transparent;
+ border-radius: 3px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, .05)
+}
+
+.panel-body {
+ padding: 10px
+}
+
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 12px;
+ color: inherit
+}
+
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: 700;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+ margin-top: .3em;
+}
+
+.layui-red {
+ color: red
+}
+
+.main_btn > p {
+ height: 40px;
+}
+
+.layui-bg-number {
+ background-color: #F8F8F8;
+}
+
+.layuimini-notice:hover {
+ background: #f6f6f6;
+}
+
+.layuimini-notice {
+ padding: 7px 16px;
+ clear: both;
+ font-size: 12px !important;
+ cursor: pointer;
+ position: relative;
+ transition: background 0.2s ease-in-out;
+}
+
+.layuimini-notice-title, .layuimini-notice-label {
+ padding-right: 70px !important;
+ text-overflow: ellipsis !important;
+ overflow: hidden !important;
+ white-space: nowrap !important;
+}
+
+.layuimini-notice-title {
+ line-height: 28px;
+ font-size: 14px;
+}
+
+.layuimini-notice-extra {
+ position: absolute;
+ top: 50%;
+ margin-top: -8px;
+ right: 16px;
+ display: inline-block;
+ height: 16px;
+ color: #999;
+}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/data/123.pptx b/ss-admin/src/main/resources/static/data/123.pptx
new file mode 100644
index 0000000..b8d8470
Binary files /dev/null and b/ss-admin/src/main/resources/static/data/123.pptx differ
diff --git a/ss-admin/src/main/resources/static/data/data.html b/ss-admin/src/main/resources/static/data/data.html
new file mode 100644
index 0000000..ef97334
--- /dev/null
+++ b/ss-admin/src/main/resources/static/data/data.html
@@ -0,0 +1,33 @@
+{"code":0,"msg":"PDF","count":1000,
+"data":[
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""},
+{"id":0,"username":"公司规章制度","city":"2026-01-02 00:00:00","sign":"张三","experience":255,"logins":24,"wealth":82830700,"classify":"PDF","score":""}
+]}
diff --git a/ss-admin/src/main/resources/static/images/bg-login.jpg b/ss-admin/src/main/resources/static/images/bg-login.jpg
new file mode 100644
index 0000000..8caec45
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/bg-login.jpg differ
diff --git a/ss-admin/src/main/resources/static/images/bg.jpg b/ss-admin/src/main/resources/static/images/bg.jpg
new file mode 100644
index 0000000..d5870f5
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/bg.jpg differ
diff --git a/ss-admin/src/main/resources/static/images/captcha.jpg b/ss-admin/src/main/resources/static/images/captcha.jpg
new file mode 100644
index 0000000..92b2a33
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/captcha.jpg differ
diff --git a/ss-admin/src/main/resources/static/images/donate_qrcode.png b/ss-admin/src/main/resources/static/images/donate_qrcode.png
new file mode 100644
index 0000000..079ac3d
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/donate_qrcode.png differ
diff --git a/ss-admin/src/main/resources/static/images/favicon.ico b/ss-admin/src/main/resources/static/images/favicon.ico
new file mode 100644
index 0000000..afa0548
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/favicon.ico differ
diff --git a/ss-admin/src/main/resources/static/images/favicon2.ico b/ss-admin/src/main/resources/static/images/favicon2.ico
new file mode 100644
index 0000000..afa0548
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/favicon2.ico differ
diff --git a/ss-admin/src/main/resources/static/images/home.png b/ss-admin/src/main/resources/static/images/home.png
new file mode 100644
index 0000000..348ff27
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/home.png differ
diff --git a/ss-admin/src/main/resources/static/images/ic_404.png b/ss-admin/src/main/resources/static/images/ic_404.png
new file mode 100644
index 0000000..e2eb683
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/ic_404.png differ
diff --git a/ss-admin/src/main/resources/static/images/icon-login.png b/ss-admin/src/main/resources/static/images/icon-login.png
new file mode 100644
index 0000000..1db2f96
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/icon-login.png differ
diff --git a/ss-admin/src/main/resources/static/images/loginbg.png b/ss-admin/src/main/resources/static/images/loginbg.png
new file mode 100644
index 0000000..675c74b
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/loginbg.png differ
diff --git a/ss-admin/src/main/resources/static/images/logo.png b/ss-admin/src/main/resources/static/images/logo.png
new file mode 100644
index 0000000..d184366
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/logo.png differ
diff --git a/ss-admin/src/main/resources/static/images/logo/logo.png b/ss-admin/src/main/resources/static/images/logo/logo.png
new file mode 100644
index 0000000..50b706d
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/logo/logo.png differ
diff --git a/ss-admin/src/main/resources/static/images/logo/logo2.ico b/ss-admin/src/main/resources/static/images/logo/logo2.ico
new file mode 100644
index 0000000..37c881a
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/logo/logo2.ico differ
diff --git a/ss-admin/src/main/resources/static/images/logo/logo2.png b/ss-admin/src/main/resources/static/images/logo/logo2.png
new file mode 100644
index 0000000..37c881a
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/logo/logo2.png differ
diff --git a/ss-admin/src/main/resources/static/images/logo2.png b/ss-admin/src/main/resources/static/images/logo2.png
new file mode 100644
index 0000000..fb2062e
Binary files /dev/null and b/ss-admin/src/main/resources/static/images/logo2.png differ
diff --git a/ss-admin/src/main/resources/static/js/jquery-1.10.2.min.js b/ss-admin/src/main/resources/static/js/jquery-1.10.2.min.js
new file mode 100644
index 0000000..76d21a4
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/jquery-1.10.2.min.js
@@ -0,0 +1,6 @@
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.2.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML=" ",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML=" ","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML=" ",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" a ",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""," "],legend:[1,""," "],area:[1,""," "],param:[1,""," "],thead:[1,""],tr:[2,""],col:[2,""],td:[3,""],_default:x.support.htmlSerialize?[0,"",""]:[1,"X","
"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write(""),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/js/lay-config.js b/ss-admin/src/main/resources/static/js/lay-config.js
new file mode 100644
index 0000000..95854a5
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-config.js
@@ -0,0 +1,32 @@
+/**
+ * date:2019/08/16
+ * author:Mr.Chung
+ * description:此处放layui自定义扩展
+ * version:2.0.4
+ */
+
+window.rootPath = (function (src) {
+ src = document.scripts[document.scripts.length - 1].src;
+ return src.substring(0, src.lastIndexOf("/") + 1);
+})();
+
+layui.config({
+ base: rootPath + "lay-module/",
+ version: true
+}).extend({
+ miniAdmin: "layuimini/miniAdmin", // layuimini后台扩展
+ miniMenu: "layuimini/miniMenu", // layuimini菜单扩展
+ miniTab: "layuimini/miniTab", // layuimini tab扩展
+ miniTheme: "layuimini/miniTheme", // layuimini 主题扩展
+ miniTongji: "layuimini/miniTongji", // layuimini 统计扩展
+ step: 'step-lay/step', // 分步表单扩展
+ dtree: 'dtree/dtree', // 分步表单扩展
+ treetable: 'treetable-lay/treetable', //table树形扩展
+ treeTable: 'treetable-lay-3.x/treeTable', //table树形扩展
+ tableSelect: 'tableSelect/tableSelect', // table选择扩展
+ iconPickerFa: 'iconPicker/iconPickerFa', // fa图标选择扩展
+ echarts: 'echarts/echarts', // echarts图表扩展
+ echartsTheme: 'echarts/echartsTheme', // echarts图表主题扩展
+ wangEditor: 'wangEditor/wangEditor', // wangEditor富文本扩展
+ layarea: 'layarea/layarea', // 省市县区三级联动下拉选择器
+});
diff --git a/ss-admin/src/main/resources/static/js/lay-module/dtree/dtree.css b/ss-admin/src/main/resources/static/js/lay-module/dtree/dtree.css
new file mode 100644
index 0000000..6caec28
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/dtree/dtree.css
@@ -0,0 +1,113 @@
+
+/**************** 主题换肤 ****************/
+/* 默认风格*/
+.dtree-theme-item-this{background-color: #d2d2d2!important;}
+.dtree-theme-item:hover{background-color: #eaeceb!important;}
+.dtree-theme-item cite{font-size:12px!important;}
+.dtree-theme-item:hover cite{color:#fe7786!important;}
+
+.dtree-theme-dtreefont{font-size: 16px!important;}
+.dtree-theme-ficon{color:#000!important;}
+.dtree-theme-icon{color:orange!important;}
+.dtree-theme-checkbox:hover{color:#fe7786!important;}
+.dtree-theme-choose{color:#fe7786!important;}
+
+/* layui主题风格*/
+.dtree-layui-item-this{background: none!important;}
+.dtree-layui-item:hover{background: none!important;}
+.dtree-layui-item cite{font-size:14px!important;}
+.dtree-layui-item:hover cite{opacity:0.5;filter:Alpha(opacity=50);text-decoration: underline;}
+
+.dtree-layui-dtreefont{font-size: 18px!important;}
+.dtree-layui-ficon{font-size: 18px!important;color:#393D49!important;}
+.dtree-layui-icon{color:#666!important;}
+.dtree-layui-checkbox:hover{color:#5FB878!important;}
+.dtree-layui-choose{color:#5FB878!important;}
+
+/* laySimple主题风格*/
+.dtree-laySimple-item-this{background-color: #d2d2d2!important;}
+.dtree-laySimple-item:hover{background-color: #eaeceb!important;}
+.dtree-laySimple-item cite{font-size:12px!important;}
+.dtree-laySimple-item:hover cite{color:#01AAED!important;}
+
+.dtree-laySimple-dtreefont{font-size: 16px!important;}
+.dtree-laySimple-ficon{font-size: 14px!important;color:#393D49!important;}
+.dtree-laySimple-icon{color:#393D49!important;}
+.dtree-laySimple-checkbox:hover{color:#01AAED!important;}
+.dtree-laySimple-choose{color:#01AAED!important;}
+/**************** 树基础 ****************/
+/* 菜单栏*/
+.dtree-menubar {padding-left: 10px;}
+.dtree-menubar .layui-btn-group .layui-btn-sm{height: 20px;line-height: 20px;padding: 0 5px;font-size: 12px;}
+.dtree-menubar .layui-btn-group .layui-btn-sm i{font-size: 12px!important;}
+
+/* 工具栏*/
+.dtree-toolbar{position: absolute;z-index: 940520;padding: 0;background-color: #eceaeb;}
+.dtree-toolbar .layui-nav-child{position: static;}
+.dtree-toolbar .layui-nav-child dd{cursor: pointer;}
+.dtree-toolbar .layui-nav-child dd a i{font-size:16px;display: inline-block;margin: 0px 1px;color:#fe7786;}
+.dtree-toolbar .layui-nav-child dd a i:hover{font-weight: bold;}
+.dtree-toolbar .layui-nav-bar{display: none!important;}
+.dtree-toolbar-tool{padding: 30px;}
+
+.dtree-toolbar-fixed{position: absolute;right: 5px;top: 2px;font-style: normal;transition: all .3s;-webkit-transition: all .3s;}
+/*.dtree-toolbar-fixed a{border:1px solid #fe7786;}*/
+.dtree-toolbar-fixed a i{font-size:14px;display: inline-block;margin: 0px 1px;color:#fe7786;}
+.dtree-toolbar-fixed a i:hover{opacity:0.8;filter:Alpha(opacity=80);}
+
+/* 树基本*/
+.dtree{width:260px;}
+.dtree-nav-item{line-height:33px;padding-left:16px;}
+.dtree-nav-ul-sid{display: none;}
+.dtree-none-text{font-size: 12px;text-align: center;color: gray;}
+
+/* 树线*/
+.dtree-nav-first-line,.dtree-nav-line,.dtree-nav-last-line{position: relative;}
+.dtree-nav-first-line:before{content:"";position: absolute;height: 0;border-left: 1px dotted #c0c4cc;}
+.dtree-nav-first-line:after{content:"";position: absolute;height: 0;border-top: 1px dotted #c0c4cc;}
+
+.dtree-nav-line:before{content:"";position: absolute;top: 0;left: 7px;width: 0;height: 100%;border-left: 1px dotted #c0c4cc;}
+.dtree-nav-line:after{content:"";position: absolute;top: 16px;left: 8px;width: 9px;height: 0;border-top: 1px dotted #c0c4cc;}
+
+.dtree-nav-last-line:before{content:"";position: absolute;top: 0;left: 7px;width: 0;height: 17px;border-left: 1px dotted #c0c4cc;}
+.dtree-nav-last-line:after{content:"";position: absolute;top: 16px;left: 8px;width: 9px;height: 0;border-top: 1px dotted #c0c4cc;}
+
+
+/* 图标及复选框*/
+.dtreefont{cursor: pointer;}
+.dtreefont-special{margin: 0 4px;}
+.dtree-nav-checkbox-div{display: inline-block;}
+.dtree-nav-checkbox-div>i{display: inline-block;margin: 0px 1px;}
+.dtree-nav-checkbox-div>i:last-child{margin-right: 4px;}
+.dtree-nav-checkbox-div>i:hover{opacity:0.8;filter:Alpha(opacity=80);}
+
+/* 行 文字*/
+.dtree-nav-div{display:block;vertical-align:top;position:relative;}
+.dtree-nav-div cite{font-style: normal;cursor: pointer;}
+.dtree-nav-div:hover cite{opacity:0.7;filter:Alpha(opacity=70);transition: all .3s;-webkit-transition: all .3s;}
+
+/* 规则属性*/
+.dtree-nav-show {display: block!important;}
+.dtree-nav-hide {display: none!important;}
+.dtree-nav-this {}
+.dtree-icon-hide {opacity:0;filter:Alpha(opacity=0);}
+.dtree-icon-null-open,.dtree-icon-null-close,.dtree-icon-null{margin: 0 2px;}
+.dtree-disabled{cursor: not-allowed; color:#c2c2c2!important;}
+.dtree-disabled:hover{color:#c2c2c2!important;}
+.dtree-nav-div cite.dtree-disabled{font-style: normal; cursor: not-allowed; color:#c2c2c2!important;}
+.dtree-nav-div>cite.dtree-disabled:hover{color:#c2c2c2!important;}
+
+
+/** 下拉树属性*/
+.dtree-select{position: absolute;max-height: 500px;height: 350px;overflow: auto;width: 99%;z-index: 123;display: none;border:1px solid silver;top: 42px;}
+.dtree-select-show{display: block!important;}
+.dtree-select-up{top: auto; bottom: 42px;}
+
+/* 简单适配*/
+@media screen and (max-width:1700px) and (min-width:1300px){
+ .dtree-nav-item {padding-left: 15px;}
+}
+
+
+
+
diff --git a/ss-admin/src/main/resources/static/js/lay-module/dtree/dtree.js b/ss-admin/src/main/resources/static/js/lay-module/dtree/dtree.js
new file mode 100644
index 0000000..575b8b1
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/dtree/dtree.js
@@ -0,0 +1,5537 @@
+/**
+ *@Name dtree 树形组件
+ *@Author 智慧的小西瓜
+ *@DOCS http://www.wisdomelon.com/DTreeHelper/
+ *@License https://www.layui.com/
+ *@LASTTIME 2020/03/31
+ *@VERSION v2.5.8
+ */
+layui.define(['jquery','layer','form'], function(exports) {
+ var $ = layui.$,
+ layer = layui.layer,
+ form = layui.form;
+
+ // 树的公共定义样式汇总
+ var LI_NAV_CHILD = "dtree-nav-ul-sid", LI_NAV_ITEM = "dtree-nav-item",
+ LI_DIV_ITEM = "dtree-nav-div", DTREEFONTSPECIAL="dtreefont-special", NONETITLE="dtree-none-text",
+ LI_DIV_MENUBAR = "dtree-menubar",
+ LI_DIV_TOOLBAR = "dtree-toolbar", TOOLBAR_TOOL = "dtree-toolbar-tool", TOOLBAR_TOOL_EM = "dtree-toolbar-fixed",
+ LI_DIV_CHECKBAR = "dtree-nav-checkbox-div",
+ LI_CLICK_CHECKBAR = "d-click-checkbar", //绑定点击复选框时需要用到
+ LI_DIV_TEXT_CLASS = "t-click", UL_ROOT="dtree",
+ LI_NAV_FIRST_LINE = "dtree-nav-first-line", LI_NAV_LINE = "dtree-nav-line", LI_NAV_LAST_LINE = "dtree-nav-last-line";
+
+
+ // 树的公共指定
+ var NAV_THIS = "dtree-nav-this", //当前节点
+ NAV_SHOW = "dtree-nav-show", //显示子节点
+ NAV_HIDE = "dtree-nav-hide", //隐藏节点
+ NAV_DIS = "dtree-disabled", //禁用节点
+ ICON_HIDE = "dtree-icon-hide", //隐藏图标
+ $BODY = $("body"), //body选择器
+ $WIN = $(window), //window窗口
+ $DOC = $(document), //当前文档
+ MOD_NAME = "dtree", //模块名称
+ VERSION = "v2.5.8", //版本
+ OPTIONS = {}, //全局属性配置
+ DTrees = {}; //当前被实例化的树的集合
+
+ // 树的自定义图标
+ var DTREEFONT = "dtreefont", //默认使用图标字体
+ LI_DIV_CHECKBAR_ON = "dtree-icon-fuxuankuangxuanzhong", //复选框选中图标
+ LI_DIV_CHECKBAR_OUT = "dtree-icon-fuxuankuang", //复选框未选中图标
+ LI_DIV_CHECKBAR_NOALL = "dtree-icon-fuxuankuang-banxuan", //复选框半选图标
+ LI_DIV_MENUBAR_DOWN = "dtree-icon-move-down", //menubar的展开全部的图标
+ LI_DIV_MENUBAR_UP = "dtree-icon-move-up", //menubar的收缩全部的图标
+ LI_DIV_MENUBAR_REFRESH = "dtree-icon-refresh", //menubar的刷新图标
+ LI_DIV_MENUBAR_CHECKALL = "dtree-icon-roundcheckfill", //menubar的全选图标
+ LI_DIV_MENUBAR_UNCHECKALL = "dtree-icon-roundclosefill", //menubar的全不选图标
+ LI_DIV_MENUBAR_INVERTALL = "dtree-icon-roundcheck", //menubar的反选图标
+ LI_DIV_MENUBAR_DELETE = "dtree-icon-delete1", //menubar的删除图标
+ LI_DIV_MENUBAR_SEARCH = "dtree-icon-search_list_light", //menubar的搜索图标
+ LI_DIV_TOOLBAR_PULLDOWN = "dtree-icon-pulldown", //toolbar的展开图标
+ LI_DIV_TOOLBAR_PULLUP = "dtree-icon-pullup", //toolbar的收缩图标
+ LI_DIV_TOOLBAR_ADD = "dtree-icon-roundadd", //toolbar的新增图标
+ LI_DIV_TOOLBAR_EDIT = "dtree-icon-bianji", //toolbar的编辑图标
+ LI_DIV_TOOLBAR_DEL = "dtree-icon-roundclose"; //toolbar的删除图标
+
+ // 树的非叶子节点图标集合
+ var nodeIconArray = {
+ "-1": {"open": "dtree-icon-null-open", "close": "dtree-icon-null-close"}, //未指定
+ "0" : {"open": "dtree-icon-wenjianjiazhankai", "close": "dtree-icon-weibiaoti5"}, //文件夹(二级图标默认样式)
+ "1" : {"open": "dtree-icon-jian", "close": "dtree-icon-jia"}, //+-图标(一级图标默认样式)
+ "2" : {"open": "dtree-icon-xiangxia1", "close": "dtree-icon-xiangyou"} //箭头图标
+ };
+
+ // 树的叶子节点图标集合
+ var leafIconArray = {
+ "-1": "dtree-icon-null", //未指定
+ "0" : "dtree-icon-weibiaoti5", //文件夹
+ "1" : "dtree-icon-yonghu", //人员
+ "2" : "dtree-icon-fenzhijigou", //机构
+ "3" : "dtree-icon-fenguangbaobiao", //报表
+ "4" : "dtree-icon-xinxipilu", //信息
+ "5" : "dtree-icon-shuye1", //叶子(二级图标默认样式)
+ "6" : "dtree-icon-caidan_xunzhang", //勋章
+ "7" : "dtree-icon-normal-file", //文件
+ "8" : "dtree-icon-dian", //小圆点(一级图标默认样式)
+ "9" : "dtree-icon-set-sm", //齿轮
+ "10" : "dtree-icon-rate" //星星
+ };
+
+ // 树的自定义样式
+ var DTREE = "dtree-", //自定义样式前缀
+ ITEMTHIS = "-item-this", //自定义样式当前行选中后缀
+ ITEM = "-item", //自定义样式当前行后缀
+ DFONT = "-dtreefont", //自定义样式图标样式后缀
+ FICON = "-ficon", //自定义样式一级图标样式后缀
+ ICON = "-icon", //自定义样式二级图标样式后缀
+ CBOX = "-checkbox", //自定义样式复选框样式后缀
+ CHS = "-choose"; //自定义样式复选框选中样式后缀
+
+ // 树自定义操作事件名称集合 绑定dtree-click的事件
+ var eventName = {
+ checkNodeClick: "checkNodeClick", //点击复选框
+ itemNodeClick: "itemNodeClick" //点击子节点div
+ };
+
+ // 树默认toolbar提供的功能集合 绑定dtree-tool的事件
+ var defaultTool = {
+ pulldown: "pulldown", //点击展开当前节点下的全部节点
+ pullup: "pullup", //点击收缩当前节点下的全部节点
+ addTool: "addToolbar", //点击toolbar新增
+ editTool: "editToolbar", //点击toolbar编辑
+ delTool: "delToolbar" //点击toolbar删除
+ };
+
+ // 树默认menubar提供的功能集合 绑定dtree-menu的事件
+ var defaultMenu = {
+ moveDown: "moveDown", //menubar展开全部节点
+ moveUp: "moveUp", //menubar收缩全部节点
+ refresh: "refresh", //menubar刷新树
+ checkAll: "checkAll", //menubar全选
+ unCheckAll: "unCheckAll", //menubar全不选
+ invertAll: "invertAll", //menubar反选
+ remove: "remove", //menubar删除选中节点
+ searchNode: "searchNode" //menubar查询节点
+ };
+
+ // 树的公共事件
+ var event = {
+ getElemId: function(options){ // 根据传入的参数获取ID
+ var elem = options.elem || "";
+ var obj = options.obj || $(elem);
+
+ if (obj.length == 0) { //页面中未找到绑定id
+ return "";
+ } else {
+ return $(obj)[0].id;
+ }
+ },
+ escape: function(html){ // 编码
+ if(typeof html !== 'string') return '';
+ return html.replace(entityReg.escape, function(match){return entityMap.escape[match];});
+ },
+ unescape: function(str){ // 解码
+ if(typeof str !== 'string') return '';
+ return str.replace(entityReg.unescape, function(match){return entityMap.unescape[match];});
+ },
+ cloneObj: function (obj, filter) { //深复制对象方法
+ var newObj = {};
+ if (obj instanceof Array) {
+ newObj = [];
+ }
+ var str = "";
+ if(typeof filter !== 'undefined') {str = filter.join(",");}
+ for (var key in obj) {
+ if(str.indexOf(key) == -1){
+ var val = obj[key];
+ newObj[key] = typeof val === 'object' ? event.cloneObj(val, typeof filter !== undefined ? filter : []): val;
+ }
+
+ }
+ return newObj;
+ },
+ trimToDot: function(str){
+ return str.replace(/ /g, ".");
+ }
+ };
+
+ // 特殊符号转义
+ var keys = Object.keys || function(obj) {
+ obj = Object(obj);
+ var arr = [];
+ for(var a in obj) arr.push(a);
+ return arr;
+ };
+ var invert = function(obj){
+ obj = Object(obj);
+ var result = {};
+ for(var a in obj) result[obj[a]] = a;
+ return result;
+ };
+ var entityMap = {
+ escape: {
+ "&" : "&",
+ "<" : "<",
+ ">" : ">",
+ "'" : "&quo;"
+ }
+ };
+ entityMap.unescape = invert(entityMap.escape);
+ var entityReg = {
+ escape: RegExp('[' + keys(entityMap.escape).join('') + ']', 'g'),
+ unescape: RegExp('(' + keys(entityMap.unescape).join('|') + ')', 'g')
+ };
+
+ //异步加载接口
+ var AjaxHelper = {
+ request : function(config) {
+ var data = config.data ? config.data : {};
+ var async = (typeof (config.async) === "boolean") ? config.async : true;
+ $.ajax({
+ type : config.type ? config.type : "POST",
+ headers : config.headers,
+ url : config.url,
+ dataType : config.dataType ? config.dataType : "json",
+ data : data,
+ async : async,
+ contentType : config.contentType,
+ xhrFields: {withCredentials: config.withCredentials},
+ beforeSend: function (XMLHttpRequest, self) {
+ if (typeof (config.beforeSend) === "function") {
+ return config.beforeSend(XMLHttpRequest, self);
+ }
+ return true;
+ },
+ success : config.success,
+ error : function(XMLHttpRequest, textStatus, errorThrown) {
+ if (typeof (config.error) === "function") {
+ config.error(XMLHttpRequest, textStatus, errorThrown);
+ } else {
+ layer.msg("异步加载失败: " + textStatus,{icon:5, shift:6});
+ }
+ },
+ statusCode : {
+ 404 : function() {
+ layer.msg('未找到指定请求,请检查访问路径!',{icon:5, shift:6});
+ },
+ 500 : function() {
+ layer.msg('系统错误!',{icon:5, shift:6});
+ }
+ },
+ complete : function(XMLHttpRequest, textStatus) {
+ if (typeof (config.complete) === "function") {
+ config.complete(XMLHttpRequest, textStatus);
+ }
+ }
+ });
+ },
+ serialize: function(first, param){ //json序列化 key=value&key1=value1
+ var p = first;
+ for (var key in param) {
+ p += key + "=" + param[key] + "&";
+ }
+ p = p.substring(0, p.length-1);
+ return p;
+ }
+ };
+
+ /** 树类 Class定义 */
+ var DTree = function(options){
+ var _this = this;
+ /** 默认赋值**/
+ this.formatter = { // 数据过滤
+ title: false // 文字,默认不开启
+ };
+ this.response = { // 树返回的json格式
+ statusName: "code", //返回标识
+ statusCode: 200, //返回码
+ message: "message", //返回信息
+ rootName: "data", //根节点名称
+ treeId: "id", //节点ID
+ parentId: "parentId", //父节点ID
+ title: "title", //节点名称
+ ficonClass: "ficonClass", //自定义一级图标
+ iconClass: "iconClass", //自定义二级图标
+ childName: "children", //子节点名称
+ last: "last", //是否最后一级节点
+// level: "level", //层级
+ spread: "spread", //展开
+ disabled: "disabled", //禁用
+ hide: "hide", //隐藏
+ checkArr: "checkArr", //复选框列表
+ checked: "checked", //是否选中
+ type: "type", //复选框标记
+ basicData: "basicData" //表示用户自定义需要存储在树节点中的数据
+ };
+ this.defaultRequest = { // 树的默认发起请求参数格式,最后会将value作为参数名称传递
+ nodeId: "nodeId", //节点ID
+ parentId: "parentId", //父节点ID
+ context: "context", //节点内容
+ leaf: "leaf", //是否叶子节点
+ level: "level", //层级
+ spread: "spread", //节点展开状态
+ dataType: "dataType", //节点标记
+ checked: "checked", //节点复选框选中状态
+ initchecked: "initchecked", //节点复选框初始状态
+ basicData: "basicData", //用户自定义的记录节点数据
+ recordData: "recordData", //当前data数据(排除basicData和children字段)
+ };
+ this.toolbarFun = {
+ addTreeNode: function(param, $div) { //添加树节点后调用的函数,用于用户自定义,如未指定则树不会发生变化
+ return ;
+ },
+ editTreeNode: function(param, $div) { //编辑树节点后调用的函数,用于用户自定义,如未指定则树不会发生变化
+ return ;
+ },
+ editTreeLoad: function(param){ // 编辑树的数据回显,用于打开编辑时,回填数据
+ return ;
+ },
+ delTreeNode: function(param, $div){ //删除树后调用的函数,用于用户自定义,如未指定则树不会发生变化
+ return ;
+ },
+ loadToolbarBefore: function(buttons, param, $div){ // 右键菜单加载前的函数
+ return buttons;
+ }
+ };
+ this.toolbarStyle = { // 工具栏弹出层的自定义样式
+ title: "节点",
+ area: ["60%","80%"]
+ };
+ this.menubarFun = {
+ remove: function(checkbarNodes){ //删除复选框选中节点,需要用户自定义,如未指定则树只是页面上做了修改
+ return true;
+ }
+ };
+ this.menubarTips = { // 菜单栏的默认显示
+ toolbar: [],
+ group: [defaultMenu.moveDown, defaultMenu.moveUp, defaultMenu.refresh, defaultMenu.checkAll, defaultMenu.unCheckAll, defaultMenu.invertAll, defaultMenu.remove, defaultMenu.searchNode],
+ freedom: []
+ };
+ this.checkbarFun = {
+ chooseBefore: function($i, node){ // 复选框点击前回调
+ return true;
+ },
+ chooseDone: function(checkbarNodesParam) { //复选框点击事件完毕后,返回该树关于复选框操作的全部信息,用于用户自定义,如未指定则树只是页面上做了修改
+ return ;
+ }
+ };
+ this.iframeDefaultRequest = { //iframe的默认参数,目的是与加载树的参数不一样
+ nodeId: "nodeId", //节点ID
+ parentId: "parentId", //父节点ID
+ context: "context", //节点内容
+ leaf: "leaf", //是否叶子节点
+ level: "level", //层级
+ spread: "spread", //节点展开状态
+ dataType: "dataType", //节点标记
+ checked: "checked", //节点复选框选中状态
+ initchecked: "initchecked", //节点复选框初始状态
+ basicData: "basicData", //用户自定义的记录节点数据
+ recordData: "recordData", //当前data数据(排除basicData和children字段)
+ };
+
+ this.iframeFun = {
+ iframeDone: function(iframeParam){ //iframe加载完毕后,用于用户自定义事件
+ return ;
+ }
+ };
+ this.style = { //树最终使用的样式集合
+ item: "", //每一项div的样式
+ itemThis: "", //选中div的样式
+ dfont: "", //一级图标的样式
+ icon: "", //二级图标的样式
+ cbox: "", //复选框的样式
+ chs: "" //复选框选中的样式
+ };
+ this.usefontStyle = { //树最终使用的图标集合
+ fnode:{ //一级节点
+ node:{ //非叶子节点
+ open:"", //节点展开
+ close:"" //节点关闭
+ },
+ leaf:"" //叶子节点
+ },
+ snode:{ //二级节点
+ node:{ //非叶子节点
+ open:"", //节点展开
+ close:"" //节点关闭
+ },
+ leaf:"" //叶子节点
+ },
+ checkbox:{ //复选框
+ on:"", //复选框选中
+ out:"", //未选中
+ noall:"" //半选
+ },
+ menubar:{ //菜单栏
+ movedown:"", //全部展开
+ moveup:"", //全部收缩
+ refresh:"", //刷新
+ checkAll:"", //全选
+ unCheckAll:"", //全不选
+ invertAll:"", //反选
+ remove:"", //删除
+ search:"" //搜索
+ },
+ menubarExt:"", //扩展菜单栏
+ toolbar:{ //工具栏
+ menubar:{ //依附在菜单栏的工具栏
+ movedown:"", //全部展开
+ moveup:"", //全部收缩
+ refresh:"", //刷新
+ checkAll:"", //全选
+ unCheckAll:"", //全不选
+ invertAll:"", //反选
+ remove:"", //删除
+ search:"" //搜索
+ },
+ menubarExt:"", //依附在菜单栏的扩展菜单栏
+ pulldown:"", //展开
+ pullup:"", //收缩
+ add:"", //添加
+ edit:"", //编辑
+ del:"" //删除
+ },
+ toolbarExt:"" //扩展工具栏
+ }
+
+ /** 数据绑定**/
+ this.node = { // 树节点选中时,包含当前节点的全部信息
+ nodeId: "", //节点ID
+ parentId: "", //父节点ID
+ context: "", //节点内容
+ leaf: "", //是否叶子节点
+ level: "", //层级
+ spread: "", //节点展开状态
+ dataType: "", //节点标记
+ checked: "", //节点复选框选中状态
+ initchecked: "", //节点复选框初始状态
+ basicData: "", //用户自定义的记录节点数据
+ recordData: "", //当前data数据(排除basicData和children字段)
+ };
+
+ this.toolbarMenu = {}; // 工具栏右键菜单绑定的所有元素
+ this.checkbarNode = []; // 复选框标记的全部节点数据
+ this.errData = []; // 记录在渲染节点时有问题的数据
+ this.checkArrLen = 0; // 添加节点的时判断复选框个数
+ this.temp = []; // 临时变量
+ this.bak = ""; // 临时变量
+ this.setting(options);
+ };
+
+ /******************** 初始参数加载 ********************/
+ /**
+ * @Desc: 设置基本属性值
+ * @Param: options:JSON对象,初始设置dtree所需的全部属性
+ */
+ DTree.prototype.setting = function(options) {
+ this.options = options || {};
+
+ /** 绑定元素参数(必填,2个参数项必填一个)**/
+ this.elem = this.options.elem || OPTIONS.elem || ""; //树绑定的元素ID:#elem
+ if(typeof this.options.obj === 'undefined'){
+ if(this.elem) {
+ if($(this.elem).length > 0) {
+ this.obj = $(this.elem);
+ }
+ }
+ } else {
+ this.obj = this.options.obj || OPTIONS.obj || this.obj; //树绑定的jquery元素,用于当元素是延迟加载出来的话,可以用这个找到
+ this.elem = "#" + this.obj[0].id;
+ }
+
+ /** 基本参数**/
+ this.scroll = this.options.scroll || OPTIONS.scroll || this.elem; //树的上级div容器,让树可以显示滚动条的div容器的ID
+ this.accordion = (typeof (this.options.accordion) === "boolean") ? this.options.accordion : (typeof (OPTIONS.accordion) === "boolean") ? OPTIONS.accordion : false; //手风琴加载, 默认false
+ if(this.accordion) {
+ this.initLevel = 1; //默认展开节点 1节
+ } else {
+ this.initLevel = this.options.initLevel || OPTIONS.initLevel || 2; //默认展开节点 2节
+ }
+ this.type = this.options.type || OPTIONS.type || "load"; //树的加载方式 all,全量树, load,增量树,默认load
+ this.cache = (typeof (this.options.cache) === "boolean") ? this.options.cache : (typeof (OPTIONS.cache) === "boolean") ? OPTIONS.cache : true; //数据缓存,默认true
+ this.record = this.options.record || OPTIONS.record || false; //开启数据记录模式,默认false
+ this.load = (typeof (this.options.load) === "boolean") ? this.options.load : (typeof (OPTIONS.load) === "boolean") ? OPTIONS.load : true; //开启加载动画,默认true
+ this.none = this.options.none || OPTIONS.nont || "无数据"; //初始加载无记录时显示文字
+ this.tempHeight = this.options.height || OPTIONS.height; //临时转换高度变量
+ if(this.tempHeight) { // 设置高度
+ if(/^full-\d+$/.test(this.tempHeight)) {
+ this.fullHeightGap = this.tempHeight.split('-')[1];
+ this.height = $WIN.height() - this.fullHeightGap; //设置高度
+ } else {
+ this.fullHeightGap = this.tempHeight;
+ this.height = this.tempHeight;
+ }
+ } else {
+ this.fullHeightGap = "";
+ this.height = "";
+ }
+ this.width = this.options.width || OPTIONS.width || "260"; //宽度
+ this.obj.css("width", this.width);
+
+ /** 样式相关参数**/
+ this.iconfont = this.options.iconfont || OPTIONS.iconfont || DTREEFONT; //默认图标字体 dtreefont
+ this.iconfontStyle = this.options.iconfontStyle || OPTIONS.iconfontStyle || {}; //用于自定义树的每个关键部位使用的图标
+ this.nodeIconArray = $.extend(nodeIconArray, this.options.nodeIconArray || OPTIONS.nodeIconArray) || nodeIconArray; //用户自定义非叶子节点图标集合,node
+ this.leafIconArray = $.extend(leafIconArray, this.options.leafIconArray || OPTIONS.leafIconArray) || leafIconArray; //用户自定义叶子节点图标集合,leaf
+ this.skin = this.options.skin || OPTIONS.skin || "theme"; // 自定义样式
+ if(this.skin == "layui"){ // layui主题
+ this.line = (typeof (this.options.line) === "boolean") ? this.options.line : (typeof (OPTIONS.line) === "boolean") ? OPTIONS.line : true; //开启树线,默认开启
+ this.ficon = this.options.ficon || OPTIONS.ficon || "7"; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'7'
+ this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示一级图标,默认'1'
+ this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; //一级图标中的leaf节点图标
+ this.icon = this.options.icon || OPTIONS.icon || "-1"; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1'
+ this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1'
+ this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标
+ } else if(this.skin == "laySimple"){ // laySimple主题
+ this.line = this.options.line || OPTIONS.line || false; //开启树线,默认不开启
+ this.ficon = this.options.ficon || OPTIONS.ficon || ["2","-1"]; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'-1'
+ this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "2") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示一级图标,默认'2'
+ this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; // 一级图标中的leaf节点图标
+ this.icon = this.options.icon || OPTIONS.icon || "-1"; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1'
+ this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1'
+ this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标
+ } else { // 默认主题 或者自定义主题
+ this.line = this.options.line || OPTIONS.line || false; //开启树线,默认不开启
+ this.ficon = this.options.ficon || OPTIONS.ficon || "8"; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'8'
+ this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示一级图标,默认'1'
+ this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; // 一级图标中的leaf节点图标
+ this.icon = this.options.icon || OPTIONS.icon || "5"; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'5'
+ this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "0") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'0'
+ this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标
+ }
+
+ /** 数据加载参数**/
+ this.url = this.options.url || OPTIONS.url || ""; //请求地址
+ this.async = (typeof (this.options.async) === "boolean") ? this.options.async : (typeof (OPTIONS.async) === "boolean") ? OPTIONS.async : true; //异步同步加载,默认异步加载
+ this.asyncLoad = this.options.asyncLoad || OPTIONS.asyncLoad || []; //初始异步加载层级数据
+ this.headers = this.options.headers || OPTIONS.headers || {}; //ajax header属性
+ this.method = this.options.method || OPTIONS.method || "post"; //请求类型
+ this.dataType = this.options.dataType || OPTIONS.dataType || "json"; //参数类型
+ this.contentType = this.options.contentType || OPTIONS.contentType || "application/x-www-form-urlencoded"; //发送信息至服务器时内容编码类型
+ this.defaultRequest = $.extend(this.defaultRequest, this.options.defaultRequest || OPTIONS.defaultRequest) || this.defaultRequest; //默认请求参数
+ this.filterRequest = this.options.filterRequest || OPTIONS.filterRequest || []; //过滤请求参数
+ this.request = this.options.request || OPTIONS.request || {}; //用户自定义请求参数
+ this.response = $.extend(this.response, this.options.response || OPTIONS.response) || this.response; //返回json格式
+ this.data = this.options.data || OPTIONS.data || null; //初始化指定该参数,则不会访问异步接口
+ this.dataFormat = this.options.dataFormat || OPTIONS.dataFormat || "levelRelationship"; //用于用户配置的data数据格式,list:列表, levelRelationship:层级关系,默认
+ this.dataStyle = this.options.dataStyle || OPTIONS.dataStyle || "defaultStyle"; //用于用户配置layui通用的json数据风格,layuiStyle:layui风格,defaultStyle:默认风格
+ this.errDataShow = this.options.errDataShow || OPTIONS.errDataShow || false; //是否在递归数据出现错误后,显示错误信息,默认false
+ this.withCredentials = this.options.withCredentials || OPTIONS.withCredentials || false; //是否允许跨域请求,默认false
+ this.beforeSend = this.options.beforeSend || OPTIONS.beforeSend || function(ajax, XMLHttpRequest, self){return true}; //异步加载之前的回调
+ this.success = this.options.success || OPTIONS.success || function(data, obj, first){}; //树加载完毕后执行解析树之前的回调
+ this.done = this.options.done || OPTIONS.done || function(data, obj, first){}; //树加载完毕后的回调
+ this.formatter = $.extend(this.formatter, this.options.formatter || OPTIONS.formatter) || this.formatter; //数据过滤
+ this.error = this.options.error || OPTIONS.error || function(XMLHttpRequest, textStatus, errorThrown){}; // 异步加载异常回调
+ this.complete = this.options.complete || OPTIONS.complete || function(XMLHttpRequest, textStatus){}; // 异步加载完成回调
+
+ /** 复选框参数**/
+ this.checkbar = this.options.checkbar || OPTIONS.checkbar || false; //是否开启复选框模式
+ this.checkbarLoad = this.options.checkbarLoad || OPTIONS.checkbarLoad || "node"; //复选框作用范围,node:所有节点, leaf:最后一级;默认所有节点
+ this.checkbarType = this.options.checkbarType || OPTIONS.checkbarType || "all"; //复选框选中形式 all:子集选中父级也选中, no-all:子集选中父级半选中,子集全选父级选中,p-casc:父级选中子集全选,子集无法改变父级选中状态, self:没有任何级联关系,only:只能选中一个复选框。 默认all
+ this.checkbarData = this.options.checkbarData || OPTIONS.checkbarData || "choose"; //复选框记录数据类型形式, change表示记录变更数据,choose表示记录选中数据,all记录全部数据,halfChoose记录选中和半选中的数据,默认choose
+ this.checkbarFun = $.extend(this.checkbarFun, this.options.checkbarFun || OPTIONS.checkbarFun) || this.checkbarFun; //checkbar事件加载
+
+ /** 菜单栏参数**/
+ this.menubar = this.options.menubar || OPTIONS.menubar || false; //是否打开菜单栏
+ this.menubarTips = $.extend(this.menubarTips, this.options.menubarTips || OPTIONS.menubarTips) || this.menubarTips; //菜单栏吸附, toolbar:依附在工具栏,group:依附在按钮组,freedom,自由
+ this.menubarFun = $.extend(this.menubarFun, this.options.menubarFun || OPTIONS.menubarFun) || this.menubarFun; //menubar事件加载
+
+ /** 工具栏参数**/
+ this.toolbar = this.options.toolbar || OPTIONS.toolbar || false; //是否开启可编辑模式
+ this.toolbarWay = this.options.toolbarWay || OPTIONS.toolbarWay || "contextmenu"; //工具栏显示方式,contextmenu:右键,follow:跟随节点,fixed:固定在节点右侧
+ this.toolbarStyle = $.extend(this.toolbarStyle, this.options.toolbarStyle || OPTIONS.toolbarStyle) || this.toolbarStyle; //toolbar的自定义风格,标题,弹框大小
+ this.toolbarLoad = this.options.toolbarLoad || OPTIONS.toolbarLoad || "node"; //toolbar作用范围:node:所有节点,noleaf:非最后一级节点,leaf:最后一级
+ this.toolbarShow = this.options.toolbarShow || OPTIONS.toolbarShow || ["add","edit","delete"]; //toolbar三个按钮自定义加载
+ this.toolbarBtn = this.options.toolbarBtn || OPTIONS.toolbarBtn || null; //toolbar增删改中内容的自定义加载
+ this.toolbarExt = this.options.toolbarExt || OPTIONS.toolbarExt || []; //toolbar按钮扩展
+ this.toolbarFun = $.extend(this.toolbarFun, this.options.toolbarFun || OPTIONS.toolbarFun) || this.toolbarFun; //toolbar事件加载
+
+ /** iframe模式参数**/
+ this.useIframe = this.options.useIframe || OPTIONS.useIframe || false; //是否加载iframe 默认false,
+ this.iframeElem = this.options.iframeElem || OPTIONS.iframeElem || ""; //iframe的ID
+ this.iframeUrl = this.options.iframeUrl || OPTIONS.iframeUrl || ""; //树关联的iframe地址
+ this.iframeLoad = this.options.iframeLoad || OPTIONS.iframeLoad || "leaf"; //点击哪一层加载frame: node:所有节点, leaf:默认,最后一级
+ this.iframeDefaultRequest = $.extend(this.iframeDefaultRequest, this.options.iframeDefaultRequest || OPTIONS.iframeDefaultRequest) || this.iframeDefaultRequest; //iframe的默认传递参数
+ this.iframeRequest = $.extend(this.iframeRequest, this.options.iframeRequest) || $.extend(this.iframeRequest, OPTIONS.iframeRequest) || this.iframeRequest; //iframe的自定义参数
+ this.iframeFun = $.extend(this.iframeFun, this.options.iframeFun) || $.extend(this.iframeFun, OPTIONS.iframeFun) || this.iframeFun; //iframe事件加载
+
+ /** 下拉树模式参数**/
+ this.select = this.options.select || false;
+ if(this.select) {
+ // 重置下拉树
+ this.selectSetting();
+ }
+
+ /** 调用确认最终主题方法*/
+ this.ensureTheme();
+ };
+
+ /**
+ * @Desc: 重置基本属性值
+ * @Param: options:JSON对象,重置dtree所需的全部属性
+ */
+ DTree.prototype.reloadSetting = function(options) {
+ this.options = $.extend(this.options, options) || this.options;
+
+ /** 绑定元素参数**/
+ this.elem = this.options.elem || this.elem; //树绑定的元素ID:#elem
+ if(typeof this.options.obj === 'undefined'){
+ if(this.elem) {
+ if($(this.elem).length > 0) {
+ this.obj = $(this.elem);
+ }
+ }
+ } else {
+ this.obj = this.options.obj || this.obj; //树绑定的jquery元素,用于当元素是延迟加载出来的话,可以用这个找到
+ this.elem = "#" + this.obj[0].id;
+ }
+
+ /** 基本参数**/
+ this.scroll = this.options.scroll || this.scroll; //树的上级div容器,让树可以显示滚动条的div容器
+ this.accordion = (typeof (this.options.accordion) === "boolean") ? this.options.accordion : this.accordion; //开启手风琴加载
+ if(this.accordion) {
+ this.initLevel = 1; //默认展开节点 1节
+ } else {
+ this.initLevel = this.options.initLevel || this.initLevel; //默认展开节点 2节
+ }
+ this.type = this.options.type || this.type; //树的加载方式 all,全量树, load,增量树,默认load
+ this.cache = (typeof (this.options.cache) === "boolean") ? this.options.cache : this.cache; //开启数据缓存
+ this.record = (typeof (this.options.record) === "boolean") ? this.options.record : this.record; //开启数据记录模式
+ this.load = (typeof (this.options.load) === "boolean") ? this.options.load : this.load; //开启加载动画
+ this.none = this.options.none || this.none; //初始节点加载无数据时显示文字
+ this.tempHeight = this.options.height || this.height; //临时转换高度变量
+ if(this.tempHeight) { //设置高度
+ if(/^full-\d+$/.test(this.tempHeight)) {
+ this.fullHeightGap = this.tempHeight.split('-')[1];
+ this.height = $WIN.height() - this.fullHeightGap;
+ } else {
+ this.fullHeightGap = this.tempHeight;
+ this.height = this.tempHeight;
+ }
+ }
+ this.width = this.options.width || this.width; //宽度
+ this.obj.css("width", this.width);
+
+ /** 样式相关参数**/
+ this.line = (typeof (this.options.line) === "boolean") ? this.options.line : this.line; //开启树线,默认不开启
+ this.iconfont = this.options.iconfont || this.iconfont; //默认图标字体 dtreefont
+ this.iconfontStyle = this.options.iconfontStyle || this.iconfontStyle; //用于自定义树的每个关键部位使用的图标
+ this.nodeIconArray = $.extend(nodeIconArray, this.options.nodeIconArray) || this.nodeIconArray; //用户自定义非叶子节点图标集合,node
+ this.leafIconArray = $.extend(leafIconArray, this.options.leafIconArray) || this.leafIconArray; //用户自定义叶子节点图标集合,leaf
+ this.skin = this.options.skin || this.skin; //自定义样式
+ if(this.skin == "layui"){ //layui主题
+ this.line = (typeof (this.options.line) === "boolean") ? this.options.line : true; //开启树线,默认开启
+ this.ficon = this.options.ficon || this.ficon; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'7'
+ this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'1'
+ this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; //一级图标中的leaf节点图标
+ this.icon = this.options.icon || this.icon; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1'
+ this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1'
+ this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标
+ } else if(this.skin == "laySimple"){ //laySimple主题
+ this.line = (typeof (this.options.line) === "boolean") ? this.options.line : false; //开启树线,默认不开启
+ this.ficon = this.options.ficon || this.ficon; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'-1'
+ this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "2") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'2'
+ this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1];//一级图标中的leaf节点图标
+ this.icon = this.options.icon || this.icon; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'-1'
+ this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "-1") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'-1'
+ this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标
+ } else { // 默认主题 或者自定义主题
+ this.line = (typeof (this.options.line) === "boolean") ? this.options.line : false; //开启树线,默认不开启
+ this.ficon = this.options.ficon || this.ficon; //一级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示一级图标。默认'8'
+ this.fnodeIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? (this.ficon == "-1" ? "-1" : "1") : this.ficon[0]; //一级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'1'
+ this.fleafIcon = (typeof this.ficon === 'string' || typeof this.ficon === 'number') ? this.ficon : this.ficon[1]; // 一级图标中的leaf节点图标
+ this.icon = this.options.icon || this.icon; //二级图标样式,0:文件夹,1:人员,2:机构,3:报表,4:信息,5:叶子,6:勋章,7:文件,8:小圆点,9:齿轮,10:星星, -1:不显示二级图标。默认'5'
+ this.nodeIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? (this.icon == "-1" ? "-1" : "0") : this.icon[0]; //二级图标中的node节点图标。0:文件夹,1:+、-,2:三角形, -1:不显示二级图标,默认'0'
+ this.leafIcon = (typeof this.icon === 'string' || typeof this.icon === 'number') ? this.icon : this.icon[1]; //二级图标中的leaf节点图标
+ }
+
+ /** 数据加载参数**/
+ this.url = this.options.url || this.url; //请求地址
+ this.async = (typeof (this.options.async) === "boolean") ? this.options.async : this.async; //异步同步加载,默认异步加载
+ this.asyncLoad = this.options.asyncLoad || this.asyncLoad; //初始异步加载层级数据
+ this.headers = this.options.headers || this.headers; //ajax header属性
+ this.method = this.options.method || this.method; //请求类型
+ this.dataType = this.options.dataType || this.dataType; //参数类型
+ this.contentType = this.options.contentType || this.contentType; //发送信息至服务器时内容编码类型
+ this.defaultRequest = $.extend(this.defaultRequest, this.options.defaultRequest) || this.defaultRequest; //默认请求参数
+ this.filterRequest = this.options.filterRequest || this.filterRequest; //过滤请求参数
+ this.request = this.options.request || this.request; //用户自定义请求参数
+ this.response = $.extend(this.response, this.options.response) || this.response; //返回json格式
+ this.data = this.options.data || this.data; //初始化指定该参数,则不会访问异步接口
+ this.dataFormat = this.options.dataFormat || this.dataFormat; //用于用户配置的data数据格式,list:列表, levelRelationship:层级关系,默认
+ this.dataStyle = this.options.dataStyle || this.dataStyle; //用于用户配置layui通用的json数据风格,layuiStyle:layui风格,defaultStyle:默认风格
+ this.errDataShow = (typeof (this.options.errDataShow) === "boolean") ? this.options.errDataShow : this.errDataShow; //是否在使用list模式递归数据出现错误时,显示错误信息
+ this.withCredentials = (typeof (this.options.withCredentials) === "boolean") ? this.options.withCredentials : this.withCredentials; //是否允许跨域请求
+ this.beforeSend = this.options.beforeSend || this.beforeSend; //异步加载之前的回调
+ this.success = this.options.success || this.success; //树加载完毕后执行解析树之前的回调
+ this.done = this.options.done || this.done; //树加载完毕后的回调
+ this.formatter = $.extend(this.formatter, this.options.formatter)|| this.formatter; //数据过滤
+ this.error = this.options.error || this.error; //异步加载异常回调
+ this.complete = this.options.complete || this.complete; //异步加载完成回调
+
+ /** 复选框参数**/
+ this.checkbar = this.options.checkbar || this.checkbar; //是否开启复选框模式
+ this.checkbarLoad = this.options.checkbarLoad || this.checkbarLoad; //复选框作用范围,node:所有节点, leaf:最后一级;默认所有节点
+ this.checkbarType = this.options.checkbarType || this.checkbarType; //复选框选中形式 all:子集选中父级也选中, no-all:子集选中父级半选中,子集全选父级选中,p-casc:父级选中子集全选,子集无法改变父级选中状态, self:没有任何级联关系,only:只能选中一个复选框。 默认all
+ this.checkbarData = this.options.checkbarData || this.checkbarData; //复选框记录数据类型形式, change表示记录变更数据,choose表示记录选中数据,all记录全部数据,halfChoose记录选中和半选中的数据,默认choose
+ this.checkbarFun = $.extend(this.checkbarFun, this.options.checkbarFun)|| this.checkbarFun; //checkbar事件加载
+
+ /** 菜单栏参数**/
+ this.menubar = this.options.menubar || this.menubar; //是否打开菜单栏
+ this.menubarTips = $.extend(this.menubarTips, this.options.menubarTips) || this.menubarTips; //菜单栏吸附, toolbar:依附在工具栏,group:依附在按钮组,freedom,自由
+ this.menubarFun = $.extend(this.menubarFun, this.options.menubarFun) || this.menubarFun; //menubar事件加载
+
+ /** 工具栏参数**/
+ this.toolbar = this.options.toolbar || this.toolbar; //是否开启工具栏
+ this.toolbarWay = this.options.toolbarWay || this.toolbarWay; //工具栏显示方式,contextmenu:右键,follow:跟随节点,fixed:固定在节点右侧
+ this.toolbarStyle = $.extend(this.toolbarStyle, this.options.toolbarStyle) || this.toolbarStyle; //toolbar的自定义风格,标题,弹框大小
+ this.toolbarLoad = this.options.toolbarLoad || this.toolbarLoad; //toolbar作用范围:node:所有节点,noleaf:非最后一级节点,leaf:最后一级
+ this.toolbarShow = this.options.toolbarShow || this.toolbarShow; //toolbar三个按钮
+ this.toolbarBtn = this.options.toolbarBtn || this.toolbarBtn; //toolbar增删改中内容的自定义加载
+ this.toolbarExt = this.options.toolbarExt || this.toolbarExt; //toolbar按钮扩展
+ this.toolbarFun = $.extend(this.toolbarFun, this.options.toolbarFun) || this.toolbarFun; //toolbar事件加载
+
+ /** iframe模式参数**/
+ this.useIframe = this.options.useIframe || this.useIframe;//是否加载iframe 默认false
+ this.iframeElem = this.options.iframeElem || this.iframeElem; //iframe的ID
+ this.iframeUrl = this.options.iframeUrl || this.iframeUrl; //树关联的iframe地址
+ this.iframeLoad = this.options.iframeLoad || this.iframeLoad; //点击哪一层加载frame: node:所有节点, leaf:默认,最后一级
+ this.iframeDefaultRequest = $.extend(this.iframeDefaultRequest, this.options.iframeDefaultRequest) || this.iframeDefaultRequest; //iframe的默认传递参数
+ this.iframeRequest = $.extend(this.iframeRequest, this.options.iframeRequest) || this.iframeRequest; //iframe的自定义参数
+ this.iframeFun = $.extend(this.iframeFun, this.options.iframeFun) || this.iframeFun; //iframe事件加载
+
+ /** 下拉树模式参数**/
+ if(this.select) {
+ // 重置下拉树
+ this.reloadSelectSetting();
+ }
+
+ /** 调用确认最终主题方法*/
+ this.ensureTheme();
+
+ };
+
+ /**
+ * @Desc: 设置下拉树的基本参数值
+ */
+ DTree.prototype.selectSetting = function() {
+ /** select模式参数*/
+ this.select = true; //配置成select模式
+
+ this.selectInitVal = this.obj.attr("data-value") || this.options.selectInitVal || ""; //输入框的值
+ this.selectTreeDiv = this.obj[0].id + "_tree_div"; // 上级DIV节点
+ this.selectCardDiv = this.obj[0].id + "_select_card_div"; // 上级layui卡片节点
+ this.selectDiv = this.obj[0].id + "_select_div"; // 模拟的select节点
+ this.selectTipsName = this.obj[0].id + "_select_input"; // select的提示输入框名称
+ this.selectTips = this.options.selectTips || "请选择"; // 输入框的提示语
+ this.selectCardHeight = this.options.selectCardHeight || "350"; // 下拉面板的高度
+ this.selectInputName = this.options.selectInputName || {nodeId: this.obj[0].id + "_select_nodeId"}; // select表单中的元素
+
+ // 调取下拉树的特殊处理页面元素标识
+ this.renderSelectDom();
+ }
+
+ /**
+ * @Desc: 重置下拉树的基本参数值
+ */
+ DTree.prototype.reloadSelectSetting = function() {
+
+ this.selectInitVal = this.obj.attr("data-value") || this.options.selectInitVal || this.selectInitVal; //输入框的值
+ this.selectTips = this.options.selectTips || this.selectTips; // 输入框的提示语
+ this.selectCardHeight = this.options.selectCardHeight || this.selectCardHeight; // 下拉面板的高度
+ this.selectInputName = $.extend(this.selectInputName, this.options.selectInputName) || this.selectInputName; // select表单中的元素
+
+ // 调取下拉树的特殊处理页面元素标识
+ this.reloadSelectDom();
+ }
+
+ /******************** 下拉树设置区域 ********************/
+ /**
+ * @Desc: 渲染下拉树的Dom结构
+ */
+ DTree.prototype.renderSelectDom = function() {
+ var _this = this;
+ var rootId = _this.obj[0].id;
+
+ // 设置自定义表单隐藏域
+ var selectInputName = _this.selectInputName;
+ var selectInput = [];
+ for(var key in selectInputName) {
+ selectInput.push('
');
+ }
+
+ // 设置html
+ var prevHtml = ['
'].join('');
+
+ _this.obj.before(prevHtml);
+
+ var cardStyle = "style=";
+ if(this.selectCardHeight) {
+ cardStyle += "'height:"+_this.selectCardHeight+"px'";
+ }
+ _this.obj.wrap('
').wrap('
').wrap('
');
+
+ }
+
+ /**
+ * @Desc: 重新渲染下拉树的Dom结构
+ */
+ DTree.prototype.reloadSelectDom = function() {
+ var _this = this;
+ var rootId = _this.obj[0].id;
+
+ // 设置自定义表单隐藏域
+ var selectInputName = _this.selectInputName;
+ var selectInput = [];
+ for(var key in selectInputName) {
+ selectInput.push('
');
+ }
+
+ $("div[dtree-id='"+rootId+"'][dtree-select='"+_this.selectDiv+"']").find("div.layui-select-title").html("");
+
+ // 设置html
+ var prevHtml = [selectInput.join(""),
+ '
',
+ '
'].join('');
+
+ $("div[dtree-id='"+rootId+"'][dtree-select='"+_this.selectDiv+"']").find("div.layui-select-title").html(prevHtml);
+
+ var cardStyle = "style=";
+ if(this.selectCardHeight) {
+ cardStyle += "'height:"+_this.selectCardHeight+"px'";
+ }
+ $("div[dtree-id='"+rootId+"'][dtree-card='"+_this.selectCardDiv+"']").attr("style", cardStyle);
+ }
+
+ /**
+ * @Desc: 设置下拉树模式中,input输入框的值
+ * @Param: param: input中的值对应树数据的ID值\当前树选中的数据JSON对象,可不传,不传的话则树内部读取
+ */
+ DTree.prototype.selectVal = function(param) {
+ var _this = this;
+ var rootId = _this.obj[0].id;
+ var selectInputName = _this.selectInputName;
+ var selectTipsNameValue = "";
+ var selectValues = {};
+
+ // 如果开启了复选框,则此方法用来取值
+ if(_this.checkbar) {
+ return _this.selectCheckboxVal();
+ }
+
+ if(typeof param === 'undefined') { // 不传,则为当前树中记录的ID
+ param = _this.getNowParam();
+ }
+ if(typeof param === 'string') { // 传递ID,则查询树节点ID对应的值
+ param = _this.getParam(param);
+ }
+
+ selectTipsNameValue = param["context"];
+ for(var key in selectInputName) {
+ selectValues[selectInputName[key]] = param[key];
+ $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+selectInputName[key]+"']").val(param[key] || "");
+ }
+
+ if(param["nodeId"] && !param["context"]) {
+ selectTipsNameValue = _this.getParam(param["nodeId"]);
+ }
+
+ // 返显提示输入框值
+ $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+_this.selectTipsName+"']").val(selectTipsNameValue || "");
+
+ // 返回隐藏域中的值
+ return selectValues;
+ }
+
+ /**
+ * @Desc: 设置复选框模式中的下拉树的选中值
+ */
+ DTree.prototype.selectCheckboxVal = function() {
+ var _this = this;
+ var rootId = _this.obj[0].id;
+ var selectInputName = _this.selectInputName;
+
+ // 获取全部复选框选中节点
+ var param = _this.getCheckbarJsonArrParam();
+
+ selectTipsNameValue = param["context"];
+ var selectValues = {};
+ for(var key in selectInputName) {
+ var value = param[key].join(",");
+ selectValues[selectInputName[key]] = value;
+ $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+selectInputName[key]+"']").val(value);
+ }
+
+ $("div[dtree-select='" + _this.selectDiv + "']").find("input[dtree-id='" + rootId + "'][name='"+_this.selectTipsName+"']").val(selectTipsNameValue);
+
+ // 返回隐藏域中的值
+ return selectValues;
+ }
+
+ /**
+ * @Desc: 重置下拉树的值,1.表单清空;2.节点重置;3.复选框重置
+ */
+ DTree.prototype.selectResetVal = function() {
+ var _this = this;
+ var rootId = _this.obj[0].id;
+ // 表单清空
+ $("input[dtree-id='"+rootId+"']").val("");
+ // 节点重置
+ _this.cancelNavThis();
+ if(_this.checkbar) {
+ // 复选框重置
+ _this.cancelCheckedNode();
+ }
+ }
+
+
+ /******************** 字体及图标区域 ********************/
+ /**
+ * @Desc: 树使用的最终主题方案
+ */
+ DTree.prototype.ensureTheme = function(){
+ var _this = this;
+
+ // 确认style
+ this.style.item = DTREE + this.skin + ITEM;
+ this.style.itemThis = DTREE + this.skin + ITEMTHIS;
+ this.style.dfont = DTREE + this.skin + DFONT;
+ this.style.ficon = DTREE + this.skin + FICON;
+ this.style.icon = DTREE + this.skin + ICON;
+ this.style.cbox = DTREE + this.skin + CBOX;
+ this.style.chs = DTREE + this.skin + CHS;
+
+ // 确认usefontStyle
+ var iconfont = this.iconfont;
+ var iconfonts = [];
+ if(typeof iconfont === 'string') {
+ iconfonts.push(iconfont);
+ } else {
+ iconfonts = iconfont;
+ }
+
+ var iconfontStyle = this.iconfontStyle;
+ var iconfontStyles = [];
+ if(iconfontStyle.length == undefined) {
+ iconfontStyles.push(iconfontStyle);
+ } else {
+ iconfontStyles = iconfontStyle;
+ }
+
+ for(var i=0; i
0) {
+ $lis.each(function(){
+ _this.showLineLi($(this));
+ });
+ } else {
+ _this.obj.find("li[data-id]").each(function(){
+ _this.showLineLi($(this));
+ });
+ }
+ }
+ }
+
+ /**
+ * @Desc: 真正显示树线的方法
+ * @Param: $li: JQuery对象,表示组成树的li节点
+ */
+ DTree.prototype.showLineLi = function($li){
+ var _this = this;
+ var $div = $li.children("div"),
+ $nextLi = $li.next("li"),
+ $ul = $li.parent("ul");
+ if($ul[0].id == _this.obj[0].id) {
+ // 根节点下的节点
+ $li.removeClass(LI_NAV_LINE);
+ $li.removeClass(LI_NAV_LAST_LINE);
+ $li.addClass(LI_NAV_FIRST_LINE);
+ } else {
+ // 非根节点下的节点
+ var $pnextLi = $ul.parent("li").next("li");
+ if($pnextLi.length == 0) {
+ if($nextLi.length == 0){
+ $li.removeClass(LI_NAV_LINE);
+ $li.removeClass(LI_NAV_FIRST_LINE);
+ $li.addClass(LI_NAV_LAST_LINE);
+ } else {
+ $li.removeClass(LI_NAV_FIRST_LINE);
+ $li.removeClass(LI_NAV_LAST_LINE);
+ $li.addClass(LI_NAV_LINE);
+ }
+ }else {
+ var $pnextdiv = $pnextLi.children("div");
+ if($nextLi.length == 0 && $div.children("cite").attr("data-leaf") == "leaf" && $pnextdiv.children("cite").attr("data-leaf") == "leaf") {
+ $li.removeClass(LI_NAV_FIRST_LINE);
+ $li.removeClass(LI_NAV_LINE);
+ $li.addClass(LI_NAV_LAST_LINE);
+ } else {
+ $li.removeClass(LI_NAV_FIRST_LINE);
+ $li.removeClass(LI_NAV_LAST_LINE);
+ $li.addClass(LI_NAV_LINE);
+ }
+ }
+ }
+ }
+
+ /******************** 初始化数据区域 ********************/
+ /**
+ * @Desc: 设置高度
+ */
+ DTree.prototype.autoHeight = function(){
+ var _this = this;
+ var height = _this.height;
+ if(height != "") {
+ if(_this.elem == _this.scroll){
+ _this.obj.parent().css("height", height + "px");
+ } else {
+ var $toolbarDiv = _this.obj.closest(_this.scroll);
+ $toolbarDiv.css("height", height + "px");
+ }
+ }
+ };
+
+ /**
+ * @Desc: 重载树
+ * @Param: options: dtree的所有属性的json对象
+ */
+ DTree.prototype.reload = function(options){
+ var _this = this;
+ _this.reloadSetting(options);
+ _this.init();
+ };
+
+ /**
+ * @Desc: 初始化加载
+ */
+ DTree.prototype.loadTreeInit = function(){
+ var _this = this;
+ var asyncLoad = _this.asyncLoad;
+ // 初始化加载
+ _this.init(function(){
+ // ajax加载之后的回调
+ if(asyncLoad && asyncLoad.length > 0) {
+ _this.obj.addClass(NAV_SHOW);
+
+ // 说明此时要异步加载子节点
+ _this.loadChildTreeInit(asyncLoad, 0);
+ }
+ })
+ }
+
+ /**
+ * @Desc: 初始化加载子节点
+ * @Param: asyncLoad: 需异步加载的层级,在基础属性中配置
+ * @Param: i: 已经加载到的层级
+ */
+ DTree.prototype.loadChildTreeInit = function(asyncLoad, i){
+ var _this = this;
+ if(i == asyncLoad.length) { // 满足条件,终止递归
+ return ;
+ }
+
+ var $div = _this.getNode(asyncLoad[i]);
+
+ if($div && $div.length > 0) {
+ // 设置节点状态
+ var $ul = $div.next("ul"),
+ $i_fnode = _this.getNodeDom($div).fnode(),
+ $i_snode = _this.getNodeDom($div).snode();
+
+ $ul.addClass(NAV_SHOW);
+ _this.accordionUL($ul);
+ _this.operateIcon($i_fnode, $i_snode).open();
+ // 加载子节点
+ _this.getChild($div, undefined, function(){
+ // 继续递归
+ _this.loadChildTreeInit(asyncLoad, ++i);
+ });
+ }
+
+ }
+
+ /**
+ * @Desc: 初始化树
+ * @Param: callback: 异步加载完成之后的回调函数
+ */
+ DTree.prototype.init = function(callback){
+ var _this = this;
+ if (typeof _this !== "object") {
+ layer.msg("树组件未成功加载,请检查配置", {icon:5});
+ return ;
+ }
+
+ // 设置组件高度
+ _this.autoHeight();
+
+ if(_this.data) {
+ _this.dataLoadTree(true, _this.obj, _this.data);
+ } else {
+ _this.asyncLoadTree(true, _this.obj, callback);
+ }
+ };
+
+ /**
+ * @Desc: 加载子节点
+ * @Param: $div: JQuery对象,代表当前子节点的父节点div
+ * @Param: data: data方式加载的数据
+ * @Param: callback: 子节点加载完成之后的回调喊出
+ */
+ DTree.prototype.getChild = function($div, data, callback) {
+ var _this = this, $ul = $div.next("ul");
+
+ _this.setNodeParam($div);
+
+ if(typeof data !== 'undefined') {
+ _this.dataLoadTree(false, $ul, data);
+ } else {
+ _this.asyncLoadTree(false, $ul, callback);
+ }
+ };
+
+ /**
+ * @Desc: 用data加载树
+ * @Param: first: 表示是否第一次加载
+ * @Param: $ul: JQuery对象,代表当前数据加载到的ul标签里
+ * @Param: data: data加载的数据
+ */
+ DTree.prototype.dataLoadTree = function(first, $ul, data){
+ var _this = this;
+
+ if(typeof data.length === 'undefined'){
+ layer.msg("数据解析异常,data数据格式不正确", {icon:5});
+ return ;
+ }
+
+ if(first && data.length == 0) {
+ $ul.html(_this.getNoneDom().text());
+ return ;
+ }
+
+ //先将ul中的元素清空
+ $ul.html("");
+
+ var index = _this.load ? layer.load(1) : "";
+
+ setTimeout(function () {
+ // 加载完毕后执行树解析前的回调
+ var returnData = _this.success(data, $ul, first);
+ if(returnData) {
+ data = returnData;
+ }
+
+ var pid = (first == true) ? $ul.attr("data-id") : _this.node.nodeId;
+ var level = (first == true) ? 1 : parseInt(_this.node.level)+1;
+
+ // 解析树
+ if (_this.dataFormat == 'list'){
+ //1.构建一个存放节点的树组
+ var rootListData = _this.queryListTreeByPid(pid, data);
+ _this.loadListTree(rootListData, _this.data, level);
+ } else {
+ _this.loadTree(data, level);
+ }
+
+ // 显示树线
+ _this.showLine();
+
+ // 这种情况下需要一开始就将toolbar显示在页面上
+ if(_this.toolbar && _this.toolbarWay != 'contextmenu') {
+ _this.setToolbarDom().setToolbarPlace(_this.toolbarMenu);
+ }
+
+ // 判断是否存在错误数据,并是否打印错误数据
+ _this.msgErrData();
+
+ // 设置下拉树的初始值
+ if(first && _this.select && _this.selectInitVal){
+ if(_this.checkbar) { // 复选框模式下
+ _this.chooseDataInit(_this.selectInitVal);
+ _this.selectCheckboxVal(_this.selectInitVal);
+ } else { // 普通模式下
+ _this.dataInit(_this.selectInitVal);
+ _this.selectVal(_this.selectInitVal);
+ }
+ }
+
+ // 保存树副本
+ _this.bak = _this.obj.html();
+
+ // 加载完毕后的回调
+ _this.done(_this.data, $ul, first);
+
+ if(_this.load){layer.close(index);}
+ }, 100);
+ }
+
+ /**
+ * @Desc: 异步加载树
+ * @Param: first: 表示是否第一次加载
+ * @Param: $ul: JQuery对象,代表当前数据加载到的ul标签里
+ * @Param: callback: 异步加载完成之后的回调函数
+ */
+ DTree.prototype.asyncLoadTree = function(first, $ul, callback){
+ var _this = this;
+
+ if (!_this.url) {
+ layer.msg("数据请求异常,url参数未指定", {icon:5});
+ return ;
+ }
+
+ //先将ul中的元素清空
+ $ul.html("");
+
+ var index = "";
+
+ AjaxHelper.request({
+ async: _this.async,
+ headers: _this.headers,
+ type: _this.method,
+ url: _this.url,
+ dataType: _this.dataType,
+ contentType: _this.contentType,
+ withCredentials: _this.withCredentials,
+ data: _this.getFilterRequestParam(_this.getRequestParam()),
+ beforeSend: function(XMLHttpRequest, self){
+ index = _this.load ? layer.load(1) : "";
+ var returnFlag = _this.beforeSend(this, XMLHttpRequest, self);
+ if(!returnFlag) {
+ if(_this.load){layer.close(index);}
+ }
+ return returnFlag;
+ },
+ success: function(result) {
+ if (typeof result === 'string') {
+ result = $.parseJSON(result);
+ }
+
+ // 加载完毕后执行树解析前的回调
+ var returnData = _this.success(result, $ul, first);
+ if(returnData) {
+ result = returnData;
+ }
+
+ var code = "";
+ if (_this.dataStyle == 'layuiStyle'){
+ code = result[_this.response.statusName];
+ } else {
+ code = result.status[_this.response.statusName];
+ }
+
+ if (code == _this.response.statusCode) {
+
+ var d = result[_this.response.rootName];
+
+ if(first && typeof d.length === 'undefined'){
+ $ul.html(_this.getNoneDom().errText("数据解析异常,url回调后的数据格式不正确"));
+ //layer.msg("数据解析异常,url回调后的数据格式不正确", {icon:5});
+ return ;
+ }
+
+ if(first && d.length == 0) {
+ $ul.html(_this.getNoneDom().text());
+ return ;
+ }
+
+ //1.识别根节点ul中的data-id标签,判断顶级父节点
+ var pid = (first == true) ? $ul.attr("data-id") : _this.node.nodeId;
+ var level = (first == true) ? 1 : parseInt(_this.node.level)+1;
+
+ // 第一次解析树
+ if (_this.dataFormat == 'list'){
+ //1.构建一个存放节点的树组
+ var rootListData = _this.queryListTreeByPid(pid, d);
+ if(first) {
+ _this.loadListTree(rootListData, d, level);
+ } else {
+ _this.loadListTree(rootListData, d, level, $ul);
+ }
+ } else {
+ if(first) {
+ _this.loadTree(d, level);
+ } else {
+ _this.loadTree(d, level, $ul);
+ }
+ }
+
+ // 显示树线
+ _this.showLine();
+
+ // 这种情况下需要一开始就将toolbar显示在页面上
+ if(_this.toolbar && _this.toolbarWay != 'contextmenu') {
+ _this.setToolbarDom().setToolbarPlace(_this.toolbarMenu);
+ }
+
+ // 判断是否存在错误数据,并是否打印错误数据
+ _this.msgErrData();
+
+ if(!first) {
+ $ul.addClass(NAV_SHOW);
+ }
+
+ // 设置下拉树的初始值
+ if(first && _this.select && _this.selectInitVal){
+ if(_this.checkbar) { // 复选框模式下
+ _this.chooseDataInit(_this.selectInitVal);
+ _this.selectCheckboxVal(_this.selectInitVal);
+ } else { // 普通模式下
+ _this.dataInit(_this.selectInitVal);
+ _this.selectVal(_this.selectInitVal);
+ }
+ }
+
+ // 保存树副本
+ _this.bak = _this.obj.html();
+
+ // 加载完毕后的回调
+ _this.done(result, $ul, first);
+
+ callback && callback();
+ } else {
+ // 如果打印不出任何信息说明是在这里,用了错误的数据格式, 或返回码不正确
+ if (_this.dataStyle == 'layuiStyle'){
+ _this.obj.html(_this.getNoneDom().errText(result[_this.response.message]));
+ _this.error(null, code, result[_this.response.message]);
+ } else {
+ _this.obj.html(_this.getNoneDom().errText(result.status[_this.response.message]));
+ _this.error(null, code, result.status[_this.response.message]);
+ }
+ }
+ },
+ error: function(XMLHttpRequest, textStatus, errorThrown){// 异步加载异常回调
+ _this.obj.html(_this.getNoneDom().errText(textStatus + ": " + errorThrown));
+ _this.error(XMLHttpRequest, textStatus, errorThrown);
+ },
+ complete: function(XMLHttpRequest, textStatus){// 异步加载完成回调
+ if(_this.load){layer.close(index);}
+ _this.complete(XMLHttpRequest, textStatus);
+ }
+ });
+
+ }
+
+ /**
+ * @Desc: 初始化渲染树或者拼接渲染树,list模式下
+ * @Param: nowListData: 表示当前需要被渲染的数据
+ * @Param: listData: 表示全部数据
+ * @Param: level: 当前渲染的层级
+ * @Param: $ul: JQuery对象,代表当前数据加载到的ul标签里
+ */
+ DTree.prototype.loadListTree = function(nowListData, listData, level, $ul){
+ var _this = this;
+ $ul = $ul || _this.getNodeDom().nowOrRootUl(); //当前选中的节点或根节点
+ if (nowListData.length > 0){
+ for (var i = 0; i < nowListData.length; i++) {
+ // 1.获取已知节点的全部数据
+ var data = nowListData[i];
+ if(typeof data !== "object") continue;
+ var parseData = _this.parseData(data);
+ var childListData = _this.queryListTreeByPid(parseData.treeId(), listData); // 根据已知数据的id判断该条数据是否还有子数据
+
+ // 3. 页面元素加载数据
+ $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(childListData.length), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(level), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), ($ul.hasClass(UL_ROOT) ? "root" : "item")));
+ // 4.有子数据的元素加载子节点
+ if(childListData.length > 0){
+ var cLevel = parseInt(level)+1;
+ _this.loadListTree(childListData, listData, cLevel, _this.obj.find("ul[data-id='"+parseData.treeId()+"']"));
+ }
+ }
+ }
+ };
+
+ /**
+ * @Desc: 根据父ID查找list数据中匹配的元素
+ * @Param: pid: 表示父ID
+ * @Param: listData: 表示全部数据
+ */
+ DTree.prototype.queryListTreeByPid = function(pid, listData){
+ var _this = this;
+ var rootListData = [];
+ if (listData) {
+ for (var i = 0; i < listData.length; i++) {
+ var data = listData[i];
+ if(typeof data !== "object") continue;
+ if(pid == "null" || pid == null){
+ if(data[_this.response.parentId] == null) { rootListData.push(data); }
+ } else {
+ if (data[_this.response.parentId] == pid){
+ if (data[_this.response.treeId] == pid){
+ _this.errData.push(data);
+ } else {
+ rootListData.push(data);
+ }
+ }
+ }
+ }
+ }
+ return rootListData;
+ };
+
+ /**
+ * @Desc: 初始化渲染树或者拼接渲染树,层级关系模式下
+ * @Param: listData: 表示全部数据
+ * @Param: level: 当前渲染的层级
+ * @Param: $ul: JQuery对象,代表当前数据加载到的ul标签里
+ */
+ DTree.prototype.loadTree = function(listData, level, $ul){
+ var _this = this;
+ if (listData) {
+ $ul = $ul || _this.getNodeDom().nowOrRootUl(); //当前选中的节点或根节点
+ for (var i = 0; i < listData.length; i++) { // 遍历跟节点或追加的跟节点
+ var data = listData[i];
+ if(typeof data !== "object") continue;
+ if(data[_this.response.treeId] == data[_this.response.parentId]) { _this.errData.push(data); }
+ var parseData = _this.parseData(data);
+ var children = parseData.children();
+ $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(children.length), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(level), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), ($ul.hasClass(UL_ROOT) ? "root" : "item")));
+ if (children.length != 0) {
+ var cLevel = parseInt(level)+1;
+ _this.loadTree(children, cLevel, _this.obj.find("ul[data-id='"+parseData.treeId()+"']"));
+ }
+ }
+ }
+ };
+
+ /**
+ * @Desc: 判断在数据加载时是否存在错误数据,并是否打印错误数据
+ * @Param:
+ */
+ DTree.prototype.msgErrData = function() {
+ var _this = this;
+ if(_this.errData.length > 0 && _this.errDataShow) {
+ var title = "";
+ for(var i=0; i<_this.errData.length; i++) {
+ var edata = _this.errData[i];
+ title += "数据:【"+edata[_this.response.title]+"】中节点id和上级id值一致! \n";
+ }
+ layer.msg(title, {icon:2,time:5000});
+ }
+ // 显示之后,将错误数据制空
+ _this.errData = [];
+ };
+
+ /**
+ * @Desc: 解析单个数据
+ * @Param: data: 被解析的单个数据对象
+ */
+ DTree.prototype.parseData = function(data) {
+ var _this = this;
+
+ return {
+ treeId: function(){
+ return data[_this.response.treeId];
+ },
+ parentId: function(){
+ return data[_this.response.parentId];
+ },
+ fmtTitle: function(){
+ if(typeof _this.formatter.title === 'function'){
+ var ftitle = _this.formatter.title(data);
+ var tt = data[_this.response.title];
+ tt = (ftitle == "" || ftitle == undefined || ftitle == null) ? tt : ftitle;
+ return tt || "";
+ }
+ return data[_this.response.title];
+ },
+ title: function(){
+ return data[_this.response.title];
+ },
+ level: function(){
+ return data[_this.response.level] || "";
+ },
+ ficonClass: function(){
+ return data[_this.response.ficonClass] || "";
+ },
+ iconClass: function(){
+ return data[_this.response.iconClass] || "";
+ },
+ last: function(len){
+ return ((len == 0) ?
+ ((typeof (data[_this.response.last]) === "boolean") ? data[_this.response.last] : true) :
+ ((typeof (data[_this.response.last]) === "boolean") ? data[_this.response.last] : false));
+ },
+ spread: function(level){
+ return ((level < _this.initLevel) ?
+ ((typeof (data[_this.response.spread]) === "boolean") ? data[_this.response.spread] : true) :
+ ((typeof (data[_this.response.spread]) === "boolean") ? data[_this.response.spread] : false));
+ },
+ disabled: function(){
+ return (typeof (data[_this.response.disabled]) === "boolean") ? data[_this.response.disabled] : false;
+ },
+ hide: function(){
+ return (typeof (data[_this.response.hide]) === "boolean") ? data[_this.response.hide] : false;
+ },
+ checkArr: function(){
+ var checkArr = [];
+ var checkArrData = data[_this.response.checkArr];
+ if(typeof checkArrData === 'string'){
+ if(checkArrData.indexOf("{") > -1 && checkArrData.indexOf("}") > -1){
+ checkArrData = JSON.parse(checkArrData);
+ } else {
+ checkArrData = {"type":"0","checked":checkArrData};
+ }
+ }
+ if((typeof checkArrData === 'object') && (checkArrData !== null)){
+ if(typeof checkArrData.length === 'undefined'){
+ checkArr.push(checkArrData);
+ } else {
+ checkArr = checkArrData;
+ }
+ }
+
+ if(checkArr.length > 0 && checkArr.length > _this.checkArrLen){
+ _this.checkArrLen = checkArr.length; // 获取复选框个数
+ }
+ return checkArr;
+
+ },
+ children: function(){
+ return data[_this.response.childName] || [];
+ },
+ basicData: function(){
+ return event.escape(JSON.stringify(data[_this.response.basicData])) || JSON.stringify({});
+ },
+ recordData: function(){
+ var recordData = _this.record ? event.cloneObj(data, [_this.response.treeId,
+ _this.response.parentId,
+ _this.response.title,
+ _this.response.iconClass,
+ _this.response.childName,
+ _this.response.last,
+ _this.response.spread,
+ _this.response.disabled,
+ _this.response.hide,
+ _this.response.checkArr,
+ _this.response.checked,
+ _this.response.type,
+ _this.response.basicData]) : {};
+
+ return event.escape(JSON.stringify(recordData));
+ },
+ data: function(){
+ return data;
+ }
+ }
+
+ };
+
+ /**
+ * @Desc: 无节点数据、节点数据异常时显示dom
+ */
+ DTree.prototype.getNoneDom = function(){
+ var _this = this,
+ rootId = _this.obj[0].id,
+ noneTitle = _this.none;
+
+ return {
+ text: function(){
+ return ""+noneTitle+"
";
+ },
+ errText: function(errInfo){
+ return ""+errInfo+"
";
+ }
+ }
+ };
+
+ /**
+ * @Desc: 新增节点的dom值
+ * @Param: treeId: 节点ID
+ * @Param: parentId: 节点父ID
+ * @Param: title: 节点标题
+ * @Param: fmtTitle: 节点附加标题
+ * @Param: last: 是否最后一级节点
+ * @Param: ficonClass: 一级图标class
+ * @Param: iconClass: 二级图标class
+ * @Param: checkArr: 复选框
+ * @Param: spread: 是否展开
+ * @Param: disabled: 是否禁用
+ * @Param: hide: 是否隐藏
+ */
+ DTree.prototype.getDom = function(treeId, parentId, title, fmtTitle, last, ficonClass, iconClass, checkArr, level, spread, disabled, hide) {
+ var _this = this,
+ rootId = _this.obj[0].id,
+ toolbar = _this.toolbar,
+ checkbar = _this.checkbar;
+
+ return {
+ fnode: function() { // + - 图标
+ // 获取图标的变量
+ var fnodeIcon = _this.fnodeIcon,
+ fleafIcon = _this.fleafIcon;
+
+ var fleafIconLeaf = _this.usefontStyle.fnode.leaf,
+ fnodeIconOpen = _this.usefontStyle.fnode.node.open,
+ fnodeIconClose = _this.usefontStyle.fnode.node.close;
+
+ if(ficonClass){
+ var iconfont = _this.iconfont;
+ if(typeof iconfont === 'string') {
+ fleafIconLeaf = iconfont + " " + ficonClass;
+ fnodeIconOpen = iconfont + " " + ficonClass;
+ fnodeIconClose = iconfont + " " + ficonClass;
+ } else {
+ fleafIconLeaf = iconfont[0] + " " + ficonClass;
+ fnodeIconOpen = iconfont[0] + " " + ficonClass;
+ fnodeIconClose = iconfont[0] + " " + ficonClass;
+ }
+ }
+
+ if(fnodeIcon != "-1" && fleafIcon != "-1"){ // 都加载
+ return last ? " " :
+ (spread ? " " : " ");
+ }
+
+ if(fnodeIcon != "-1" && fleafIcon == "-1"){ // 加载node 隐藏leaf
+ return last ? " " :
+ (spread ? " " : " ");
+ }
+
+ if(fnodeIcon == "-1" && fleafIcon != "-1"){ // 隐藏node 加载leaf
+ return last ? " " :
+ (spread ? " " : " ");
+ }
+
+ if(fnodeIcon == "-1" && fleafIcon == "-1"){ // 都隐藏
+ return last ? " " :
+ (spread ? " " : " ");
+ }
+ },
+ node: function() { // 二级图标样式
+ // 获取图标的变量
+ var nodeIcon = _this.nodeIcon,
+ leafIcon = _this.leafIcon;
+
+ var sleafIconLeaf = _this.usefontStyle.snode.leaf,
+ snodeIconOpen = _this.usefontStyle.snode.node.open,
+ snodeIconClose = _this.usefontStyle.snode.node.close;
+ if(iconClass){
+ var iconfont = _this.iconfont;
+ if(typeof iconfont === 'string') {
+ sleafIconLeaf = iconfont + " " + iconClass;
+ snodeIconOpen = iconfont + " " + iconClass;
+ snodeIconClose = iconfont + " " + iconClass;
+ } else {
+ sleafIconLeaf = iconfont[0] + " " + iconClass;
+ snodeIconOpen = iconfont[0] + " " + iconClass;
+ snodeIconClose = iconfont[0] + " " + iconClass;
+ }
+ }
+
+ if(nodeIcon != "-1" && leafIcon != "-1"){ // 都加载
+ return last ? " " :
+ (spread ? " " : " ");
+ }
+
+ if(nodeIcon != "-1" && leafIcon == "-1"){ // 加载node 隐藏leaf
+ return last ? " " :
+ (spread ? " " : " ");
+ }
+
+ if(nodeIcon == "-1" && leafIcon != "-1"){ // 隐藏node 加载leaf
+ return last ? " " :
+ (spread ? " " : " ");
+ }
+
+ if(nodeIcon == "-1" && leafIcon == "-1"){ // 都隐藏
+ return last ? " " :
+ (spread ? " " : " ");
+ }
+ },
+ checkbox: function() { // 复选框
+ var flag = false;
+ if(_this.checkbarLoad == "node"){if (checkbar) {flag = true;}} else {if (last) {if (checkbar) {flag = true;}}}
+
+ if(flag){
+ var result = "";
+ if(checkArr && checkArr.length > 0){
+
+ for (var i = 0; i < checkArr.length; i++) {
+ var checkData = checkArr[i];
+ var checked = checkData[_this.response.checked];
+ var type = checkData[_this.response.type];
+ var CHOOSE_CLASS = _this.usefontStyle.checkbox.out;
+ if (checked == "2") { //半选择
+ CHOOSE_CLASS = _this.usefontStyle.checkbox.noall + " " + _this.style.chs;
+ } else if (checked == "1") { //选择
+ CHOOSE_CLASS = _this.usefontStyle.checkbox.on + " " + _this.style.chs;
+ } else { //未选择或者无值
+ CHOOSE_CLASS = _this.usefontStyle.checkbox.out;
+ }
+ var disClass = "";
+ if(disabled){disClass = NAV_DIS;}
+ result += " ";
+ }
+ }
+ result += "
";
+ return result;
+ }
+
+ return "";
+ },
+ text: function() { // 文字显示
+ var disClass = "";
+ if(disabled){disClass = NAV_DIS;}
+ return ""+fmtTitle+" ";
+ },
+ ul: function() { //子节点ul
+ return last ? "" :
+ (spread ? "" : "");
+ }
+ };
+ };
+
+ /**
+ * @Desc: 替换节点的dom值,或指定这些值
+ * @Param: $div: JQuery对象,表示当前被操作的节点
+ * @Param: treeId: 节点ID
+ * @Param: last: 是否最后一级节点
+ * @Param: spread: 是否展开
+ * @Param: disabled: 是否禁用
+ * @Param: hide: 是否隐藏
+ */
+ DTree.prototype.replaceDom = function($div, treeId, last, spread, disabled, hide) {
+ var _this = this,
+ rootId = _this.obj[0].id,
+ toolbar = _this.toolbar,
+ checkbar = _this.checkbar;
+
+ return {
+ fnode: function(ficonClass) { // + - 图标
+ var fnode = "";
+
+ // 获取图标的变量
+ var fnodeIcon = _this.fnodeIcon,
+ fleafIcon = _this.fleafIcon;
+
+ var fleafIconLeaf = _this.usefontStyle.fnode.leaf,
+ fnodeIconOpen = _this.usefontStyle.fnode.node.open,
+ fnodeIconClose = _this.usefontStyle.fnode.node.close;
+
+ if(ficonClass){
+ var iconfont = _this.iconfont;
+ if(typeof iconfont === 'string') {
+ fleafIconLeaf = iconfont + " " + ficonClass;
+ fnodeIconOpen = iconfont + " " + ficonClass;
+ fnodeIconClose = iconfont + " " + ficonClass;
+ } else {
+ fleafIconLeaf = iconfont[0] + " " + ficonClass;
+ fnodeIconOpen = iconfont[0] + " " + ficonClass;
+ fnodeIconClose = iconfont[0] + " " + ficonClass;
+ }
+ }
+
+ if(fnodeIcon != "-1" && leafIcon != "-1"){ // 都加载
+ fnode = last ? " " :
+ (spread ? " " : " ");
+ }else if(nodeIcon != "-1" && leafIcon == "-1"){ // 加载node 隐藏leaf
+ fnode = last ? " " :
+ (spread ? " " : " ");
+ }else if(nodeIcon == "-1" && leafIcon != "-1"){ // 隐藏node 加载leaf
+ fnode = last ? " " :
+ (spread ? " " : " ");
+ }else if(nodeIcon == "-1" && leafIcon == "-1"){ // 都隐藏
+ fnode = last ? " " :
+ (spread ? " " : " ");
+ }
+ if(fnode != ""){_this.getNodeDom($div).fnode().replaceWith($(fnode));}
+ },
+ node: function(iconClass) { // 二级图标样式
+ var snode = "";
+
+ // 获取图标的变量
+ var nodeIcon = _this.nodeIcon,
+ leafIcon = _this.leafIcon;
+
+ var sleafIconLeaf = _this.usefontStyle.snode.leaf,
+ snodeIconOpen = _this.usefontStyle.snode.node.open,
+ snodeIconClose = _this.usefontStyle.snode.node.close;
+ if(iconClass){
+ var iconfont = _this.iconfont;
+ if(typeof iconfont === 'string') {
+ sleafIconLeaf = iconfont + " " + iconClass;
+ snodeIconOpen = iconfont + " " + iconClass;
+ snodeIconClose = iconfont + " " + iconClass;
+ } else {
+ sleafIconLeaf = iconfont[0] + " " + iconClass;
+ snodeIconOpen = iconfont[0] + " " + iconClass;
+ snodeIconClose = iconfont[0] + " " + iconClass;
+ }
+ }
+
+ if(nodeIcon != "-1" && leafIcon != "-1"){ // 都加载
+ snode = last ? " " :
+ (spread ? " " : " ");
+ }else if(nodeIcon != "-1" && leafIcon == "-1"){ // 加载node 隐藏leaf
+ snode = last ? " " :
+ (spread ? " " : " ");
+ }else if(nodeIcon == "-1" && leafIcon != "-1"){ // 隐藏node 加载leaf
+ snode = last ? " " :
+ (spread ? " " : " ");
+ }else if(nodeIcon == "-1" && leafIcon == "-1"){ // 都隐藏
+ snode = last ? " " :
+ (spread ? " " : " ");
+ }
+ if(snode != ""){_this.getNodeDom($div).snode().replaceWith($(snode));}
+ },
+ checkbox: function(checkArr) { // 复选框
+ var flag = false;
+ if(_this.checkbarLoad == "node"){if (checkbar) {flag = true;}} else {if (last) {if (checkbar) {flag = true;}}}
+
+ if(flag){
+ var result = "";
+ if(checkArr && checkArr.length > 0){
+
+ for (var i = 0; i < checkArr.length; i++) {
+ var checkData = checkArr[i];
+ var checked = checkData[_this.response.checked];
+ var type = checkData[_this.response.type];
+ var CHOOSE_CLASS = _this.usefontStyle.checkbox.out;
+ if (checked == "2") { //半选择
+ CHOOSE_CLASS = _this.usefontStyle.checkbox.noall + " " + _this.style.chs;
+ } else if (checked == "1") { //选择
+ CHOOSE_CLASS = _this.usefontStyle.checkbox.on + " " + _this.style.chs;
+ } else { //未选择或者无值
+ CHOOSE_CLASS = _this.usefontStyle.checkbox.out;
+ }
+ var disClass = "";
+ if(disabled){disClass = NAV_DIS;}
+ result += " ";
+ }
+ }
+ result += "
";
+ _this.getNodeDom($div).snode().next("div").replaceWith($(result));
+ }
+ },
+ text: function(title,fmtTitle) { // 文字显示
+ var disClass = "";
+ if(disabled){disClass = NAV_DIS;}
+ var cite = ""+fmtTitle || title+" "
+ _this.getNodeDom($div).cite().replaceWith($(cite));
+ },
+ ul: function() { //子节点ul
+ var ul = last ? "" :
+ (spread ? "" : "");
+ _this.getNodeDom($div).nextUl().replaceWith($(ul));
+ },
+ div: function(){
+ $div.attr("data-id", treeId);
+ },
+ basicData: function(basicData){
+ basicData = (basicData == "{}") ? "" : basicData;
+ $div.attr("data-basic", basicData);
+ },
+ recordData: function(recordData){
+ recordData = (recordData == "{}") ? "" : recordData;
+ $div.attr("data-record", recordData);
+ },
+ p_li: function(pId){
+ var $li = $div.parent("li");
+ $li.attr("data-id", treeId);
+ if(pId) {
+ $li.attr("data-pid", pId);
+ }
+ return $li;
+ }
+ };
+
+ };
+
+ /**
+ * @Desc: 获取拼接好的li的dom
+ * @Param: treeId: 节点ID
+ * @Param: parentId: 节点父ID
+ * @Param: title: 节点标题
+ * @Param: fmtTitle: 节点附加标题
+ * @Param: last: 是否最后一级节点
+ * @Param: ficonClass: 一级图标class
+ * @Param: iconClass: 二级图标class
+ * @Param: checkArr: 复选框
+ * @Param: level: 当前li的层级
+ * @Param: spread: 是否展开
+ * @Param: disabled: 是否禁用
+ * @Param: hide: 是否隐藏
+ * @Param: basicData: 自定义的扩展字段值(转义后的JSON字符)
+ * @Param: recordData: 开启记录模式的记录值(转义后的JSON字符)
+ * @Param: isRoot: 当前节点是否是根节点下的节点
+ */
+ DTree.prototype.getLiItemDom = function(treeId, parentId, title, fmtTitle, last, ficonClass, iconClass, checkArr, level, spread, disabled, hide, basicData, recordData, isRoot) {
+ var _this = this,
+ rootId = _this.obj[0].id;
+
+ var dom = _this.getDom(treeId, parentId, title, fmtTitle, last, ficonClass, iconClass, checkArr, level, spread, disabled, hide);
+ basicData = (basicData == "{}") ? "" : basicData;
+ recordData = (recordData == "{}") ? "" : recordData;
+ var div = ""; }
+ if(_this.toolbarLoad == "noleaf") { if(!last){ div += " d-contextmenu='true'>"; } else { div += " d-contextmenu='false'>";} }
+ if(_this.toolbarLoad == "leaf") { if(last){ div += " d-contextmenu='true'>"; } else { div += " d-contextmenu='false'>";} }
+ } else { div += " d-contextmenu='false'>"; }
+ } else { div += " d-contextmenu='false'>"; }
+
+ var hideClass = "";
+ var lineClass = "";
+ if(hide){hideClass = NAV_HIDE;}
+ var li = ["
" +
+ div ,
+ dom.fnode(),
+ dom.node(),
+ dom.checkbox(),
+ dom.text(),
+ " ", dom.ul(), ""].join("");
+
+ return li;
+ };
+
+ /**
+ * @Desc: 初始化节点,用于数据回显
+ * @Param: chooseId: 节点ID
+ */
+ DTree.prototype.dataInit = function(chooseId){
+ var _this = this;
+ var $div = _this.obj.find("div[data-id='"+chooseId+"']");
+ if($div && $div.length > 0) {
+ _this.obj.find("."+NAV_THIS).removeClass(NAV_THIS);
+ _this.obj.find("."+_this.style.itemThis).removeClass(_this.style.itemThis);
+ $div.addClass(NAV_THIS);
+ $div.addClass(_this.style.itemThis);
+ _this.setNodeParam($div);
+ // 将该节点的父节点全部展开
+ var $li_parents = $div.parents("."+LI_NAV_ITEM);
+ $li_parents.children("ul").addClass(NAV_SHOW);
+ $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.fnode.node.close)).addClass(_this.usefontStyle.fnode.node.open);
+ $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.fnode.node.close)).removeClass(_this.usefontStyle.fnode.node.close);
+ $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.snode.node.close)).addClass(_this.usefontStyle.snode.node.open);
+ $li_parents.children("."+LI_DIV_ITEM).children("i[data-spread]."+event.trimToDot(_this.usefontStyle.snode.node.close)).removeClass(_this.usefontStyle.snode.node.close);
+ }
+ return _this.getNowParam();
+ };
+
+ /**
+ * @Desc: 基于备份的Html数据回滚
+ * @Param: chooseId: 节点ID
+ */
+ DTree.prototype.rollbackHtml = function(chooseId){
+ var _this = this;
+ if(_this.bak) {
+ _this.obj.html(_this.bak);
+ // 取消全部选中状态
+ _this.cancelNavThis();
+ if(_this.checkbar) {
+ _this.cancelCheckedNode();
+ _this.chooseDataInit(chooseId);
+ } else {
+ _this.dataInit(chooseId);
+ }
+
+ _this.bak = _this.obj.html();
+ }
+ };
+
+
+ /******************** 基础事件区域 ********************/
+ /**
+ * @Desc: 数据格式化
+ * @Param: html: 需要格式化的数据
+ */
+ DTree.prototype.escape = function(html){
+ return event.escape(html);
+ };
+
+ /**
+ * @Desc: 格式化数据转回正常数据
+ * @Param: str: 需要转回的数据
+ */
+ DTree.prototype.unescape = function(str){
+ return event.unescape(str);
+ };
+
+ /**
+ * @Desc: 取消选中当前选中的div
+ */
+ DTree.prototype.cancelNavThis = function(){
+ var _this = this;
+ _this.obj.find("div[data-id]").parent().find("."+NAV_THIS).removeClass(NAV_THIS);
+ _this.obj.find("div[data-id]").parent().find("."+_this.style.itemThis).removeClass(_this.style.itemThis);
+ }
+
+ /**
+ * @Desc: 选中div
+ * @Param: id: 当前div本身 / 当前选中div的id值
+ */
+ DTree.prototype.navThis = function(id){
+ var _this = this;
+ var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']");
+ if($div != null) {
+ _this.cancelNavThis();
+ $div.addClass(NAV_THIS);
+ $div.addClass(_this.style.itemThis);
+ }
+ }
+
+ /**
+ * @Desc: 手风琴模式操作其他节点
+ * @Param: $ul: JQuery对象,表示dtree中的ul节点
+ */
+ DTree.prototype.accordionUL = function($ul) {
+ var _this = this;
+ if(_this.accordion) {
+ $ul.closest("li[data-index]").siblings("li[data-index]").children("ul[data-id]").removeClass(NAV_SHOW);
+ var $divs = $ul.closest("li[data-index]").siblings("li[data-index]").children("ul[data-id]").prev("div");
+ if($divs.length && $divs.length > 0) {
+ for (var i=0; i<$divs.length; i++) {
+ var $div = $($divs[i]);
+ var $i_fnode = _this.getNodeDom($div).fnode(),
+ $i_snode = _this.getNodeDom($div).snode();
+ if($i_fnode.attr("data-spread") != 'last'){
+ _this.operateIcon($i_fnode, $i_snode).close();
+ }
+ }
+ }
+
+ }
+ };
+
+ /**
+ * @Desc: 展开或隐藏节点 作用点: div
+ * @Param: $div: JQuery对象,表示当前操作的div节点
+ */
+ DTree.prototype.clickSpread = function($div) {
+ var _this = this;
+ var $i_fnode = _this.getNodeDom($div).fnode(),
+ $i_snode = _this.getNodeDom($div).snode(),
+ $cite = _this.getNodeDom($div).cite(),
+ spread = $i_fnode.attr("data-spread"),
+ $ul = $div.next("ul");
+
+ if ($ul.length > 0) {
+ if (spread == "close") {
+ if (_this.type=="load") { //增加加载
+ if (_this.cache) { //开启缓存
+ if ($ul.html()) {
+ $ul.addClass(NAV_SHOW);
+ _this.accordionUL($ul);
+ } else { //加载节点
+ _this.getChild($div);
+ _this.accordionUL($ul);
+ }
+ }else { //每次取新的数据
+ $ul.html("");
+ _this.getChild($div);
+ _this.accordionUL($ul);
+ }
+ } else { // 全量加载
+ $ul.addClass(NAV_SHOW);
+ _this.accordionUL($ul);
+ }
+ _this.operateIcon($i_fnode, $i_snode).open();
+ } else if (spread == "open") {
+ $ul.removeClass(NAV_SHOW);
+ _this.operateIcon($i_fnode, $i_snode).close();
+ }
+ }
+ };
+
+ /**
+ * @Desc: 设置节点为disabled
+ * @Param: disabledIds: 需要设置禁用的节点id字符串集合(用,分割)/id数组
+ */
+ DTree.prototype.setDisabledNodes = function(disabledIds){
+ var _this = this;
+ var disabledId = [];
+ if(typeof disabledIds === "string") {
+ disabledId = disabledIds.split(",");
+ } else {
+ disabledId = disabledIds;
+ }
+
+ if(disabledIds.length) {
+ for (var i=0; i 0) {
+ _this.getChild($div, data);
+ } else {
+ var parseData = _this.parseData(data);
+
+ if(parseData.treeId()){
+ var level = parseInt($div.parent("li").attr("data-index"))+1;
+ $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(0), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), "item"));
+
+ // 建造完毕后,选中该DIV
+ $thisDiv = $ul.find("div[data-id='"+parseData.treeId()+"']");
+ _this.setNodeParam($thisDiv);
+
+ _this.showLine($ul.find("li"));
+ } else {
+ layer.msg("添加失败,节点ID为undefined!",{icon:5});
+ // 重新赋值
+ _this.setNodeParam($div);
+ }
+ }
+ } else {
+ _this.getChild($div);
+ }
+ }
+
+ /**
+ * @Desc: 局部刷新树--编辑当前节点选中节点时
+ * @Param: $div: JQuery对象,当前编辑节点的Div
+ * @Param: data: 当前需要渲染的数据,JSON对象、字符串
+ */
+ DTree.prototype.partialRefreshEdit = function($div, data){
+ var _this = this;
+ $ul = $div.next("ul"),
+ $p_li = $div.parent("li");
+
+ if(data) {
+ if(typeof data === 'object') {
+ var parseData = _this.parseData(data);
+
+ if(parseData.treeId()){
+ var replaceDom = _this.replaceDom($div, parseData.treeId(), parseData.last(0), parseData.spread(), parseData.disabled(), parseData.hide());
+ replaceDom.div();
+ replaceDom.node(parseData.iconClass());
+ replaceDom.checkbox(parseData.checkArr());
+ replaceDom.text(parseData.title(),parseData.fmtTitle());
+ replaceDom.ul();
+ replaceDom.basicData(parseData.basicData());
+ replaceDom.recordData(parseData.recordData());
+
+ var parentId = parseData.parentId();
+ var oldParentId = $p_li.attr("data-pid");
+ if(parentId && parentId != oldParentId) {
+ // 变更了父节点
+ $p_li = replaceDom.p_li(parentId);
+
+ // 根据parentId找到下挂节点的ul
+ var $goto_div = _this.getNodeDom(parentId).div(),
+ $goto_ul = _this.getNodeDom(parentId).nextUl();
+ // 判断父级ul中是否还存在li,如果不存在,则需要修改节点的样式
+ if($goto_ul.children("li").length == 0){
+ var $icon_i = $goto_div.find("i[data-spread]");
+ _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).openWithLeaf();
+ $goto_ul.addClass(NAV_SHOW);
+ }
+ $goto_ul.append($p_li);
+ } else {
+ replaceDom.p_li();
+ }
+ _this.setNodeParam($div);
+ } else {
+ layer.msg("编辑失败,节点ID为undefined!",{icon:5});
+ // 重新赋值
+ _this.setNodeParam($div);
+ }
+ } else {
+ _this.getNodeDom($div).cite().html(data);
+ }
+ }
+ }
+
+ /**
+ * @Desc: 局部刷新树--当前节点选中被删除时
+ * @Param: $div: JQuery对象,当前被删除节点的Div
+ */
+ DTree.prototype.partialRefreshDel = function($div){
+ var _this = this;
+ $p_li = $div.parent("li");
+ $p_ul = _this.getNodeDom($div).parentUl();
+ $p_div = _this.getNodeDom($div).parentDiv();
+
+ $p_li.remove();
+ _this.showLine($p_ul.find("li"));
+ // 判断父级ul中是否还存在li,如果不存在,则需要修改节点的样式
+ if($p_ul.children("li").length == 0){
+ var $icon_i = $p_div.find("i[data-spread]");
+ _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).closeWithLeaf();
+ }
+ _this.initNodeParam();
+ }
+
+ /***
+ * @Desc: 搜索节点,保留上级节点
+ * @param: value: 传入的节点名称
+ * layui-dtree群友: 没水平的水瓶提供。
+ */
+ DTree.prototype.fuzzySearch = function (value) {
+ var _this = this;
+ //
+ if (value.trim() == '') {
+ _this.obj.find("li").removeClass("layui-hide").attr("dtree-hide", false)
+ return
+ }
+ _this.obj.find("li").addClass("layui-hide").attr("dtree-hide", true)
+
+ var cites = []
+ var filterMode = _this.filterMode
+ /*if (filterMode == 'default') {
+ cites = _this.obj.find("li>div cite:contains('" + value + "')");
+ }*/
+ cites = _this.obj.find("li>div cite:contains('" + value + "')");
+ cites.each(function (index, cite) {
+ var li = $(cite).parent().parent();
+ var curNode = _this.getParam(li.attr("data-id"));
+ li.removeClass("layui-hide").attr("dtree-hide", false);
+ // 显示所有子级
+ li.find('ul li').removeClass("layui-hide").attr("dtree-hide", false);
+ // 显示所有父级
+ li.parents('li').removeClass("layui-hide").attr("dtree-hide", false);
+ })
+ }
+
+ /******************** 复选框区域 ********************/
+ /**
+ * @Desc: 初始化复选框的值
+ * @Param: chooseIds: 需要被选中的节点id字符串集合(用,分割)/id数组/id二维数组(多级复选框)
+ */
+ DTree.prototype.chooseDataInit = function(chooseIds){
+ var _this = this;
+ // 多级复选框二维数组
+ var chooseIdArrs = [];
+ var chooseId = [];
+ if(typeof chooseIds === "string") {
+ chooseId = chooseIds.split(",");
+ } else {
+ chooseId = chooseIds;
+ }
+ if(chooseId.length) {
+ // 说明是数组
+ for (var i=0; i."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ _this.checkStatus($child_li_i).noCheck();
+
+ // 处理父级节点的选中状态
+ for (var i = 1, item = $parent_li; i < item.length; i++) {
+ var flag = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length;
+ if (flag == 0) {
+ //把父级去掉选中
+ var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ _this.checkStatus($item_i).noCheck();
+ }
+ }
+ } else {
+ // 处理当前节点的选中状态
+ _this.checkStatus($i).check();
+
+ // 处理子级节点的选中状态
+ var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ _this.checkStatus($child_li_i).check();
+
+ // 处理父级节点的选中状态
+ for (var i = 1, item = $parent_li; i < item.length; i++) {
+ var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ //把父级选中
+ _this.checkStatus($item_i).check();
+ }
+ }
+ };
+
+ /**
+ * @Desc: 实现复选框点击, no-all 子集选中父级半选中,子集全选父级选中
+ * @Param: $i: JQuery对象,表示当前点击的checkbox节点
+ */
+ DTree.prototype.checkAllOrNoallOrNot = function($i) {
+ var _this = this;
+ //$i 当前点击的checkbox
+ var $div = $i.closest("."+LI_DIV_ITEM),
+ dataPar = $i.attr("data-par"),
+ dataType = $i.attr("data-type"),
+ $li = $i.closest(dataPar), //当前checkbox的上级li节点
+ $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点
+ $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点
+
+ if ($i.attr("data-checked") == "1") { //当前复选框为选中状态,点击后变为未选中状态
+ // 处理当前节点的选中状态
+ _this.checkStatus($i).noCheck();
+
+ // 处理子级节点的选中状态
+ var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ _this.checkStatus($child_li_i).noCheck();
+
+ // 处理父级节点的选中状态
+ for (var i = 1, item = $parent_li; i < item.length; i++) {
+ var flag = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length;
+ var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ if (flag == 0) {
+ //把父级去掉选中
+ _this.checkStatus($item_i).noCheck();
+ } else {
+ //把父级半选
+ _this.checkStatus($item_i).noallCheck();
+ }
+ }
+ } else { //当前复选框为未选中状态,点击后变为选中状态
+ // 处理当前节点的选中状态
+ _this.checkStatus($i).check();
+
+ // 处理子级节点的选中状态
+ var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ _this.checkStatus($child_li_i).check();
+
+ // 处理父级节点的选中状态
+ for (var i = 1, item = $parent_li; i < item.length; i++) {
+ var flag1 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length;
+ var flag2 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']").length;
+ var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ if (flag1 != flag2) {
+ // 父级复选框半选
+ _this.checkStatus($item_i).noallCheck();
+ } else {
+ // 父级复选框全选
+ _this.checkStatus($item_i).check();
+ }
+ }
+ }
+ };
+
+ /**
+ * @Desc: 实现复选框点击,p-casc:父级选中子集全选,子集无法改变父级选中状态
+ * @Param: $i: JQuery对象,表示当前点击的checkbox节点
+ */
+ DTree.prototype.checkAllOrPcascOrNot = function($i) {
+ var _this = this;
+ //$i 当前点击的checkbox
+ var $div = $i.closest("."+LI_DIV_ITEM),
+ dataPar = $i.attr("data-par"),
+ dataType = $i.attr("data-type"),
+ $li = $i.closest(dataPar), //当前checkbox的上级li节点
+ $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点
+ $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点
+
+ if ($i.attr("data-checked") == "1") { //当前复选框为选中状态,点击后变为未选中状态
+ // 处理当前节点的选中状态
+ _this.checkStatus($i).noCheck();
+
+ // 处理子级节点的选中状态
+ var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ _this.checkStatus($child_li_i).noCheck();
+
+ } else { //当前复选框为未选中状态,点击后变为选中状态
+ // 处理当前节点的选中状态
+ _this.checkStatus($i).check();
+
+ // 处理子级节点的选中状态
+ var $child_li_i = $child_li.find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ _this.checkStatus($child_li_i).check();
+ }
+ };
+
+ /**
+ * @Desc: 实现复选框点击,self:各自选中互不影响
+ * @Param: $i: JQuery对象,表示当前点击的checkbox节点
+ */
+ DTree.prototype.checkOrNot = function($i) {
+ var _this = this;
+ //$i 当前点击的checkbox
+ var $div = $i.closest("."+LI_DIV_ITEM),
+ dataPar = $i.attr("data-par"),
+ dataType = $i.attr("data-type"),
+ $li = $i.closest(dataPar), //当前checkbox的上级li节点
+ $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点
+ $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点
+
+ if ($i.attr("data-checked") == "1") { //当前复选框为选中状态,点击后变为未选中状态
+ // 处理当前节点的选中状态
+ _this.checkStatus($i).noCheck();
+ } else { //当前复选框为未选中状态,点击后变为选中状态
+ // 处理当前节点的选中状态
+ _this.checkStatus($i).check();
+ }
+ };
+
+ /**
+ * @Desc: 实现复选框点击,only:只能选中1个复选框
+ * @Param: $i: JQuery对象,表示当前点击的checkbox节点
+ */
+ DTree.prototype.checkOnly = function($i) {
+ var _this = this;
+ //$i 当前点击的checkbox
+ var $div = $i.closest("."+LI_DIV_ITEM),
+ dataPar = $i.attr("data-par"),
+ dataType = $i.attr("data-type"),
+ $li = $i.closest(dataPar), //当前checkbox的上级li节点
+ $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点
+ $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点
+
+ var checked = $i.attr("data-checked");
+ // 将全部节点全部设为未选中状态
+ var $all_i = _this.obj.find("i[data-checked]");
+ _this.checkStatus($all_i).noCheck();
+
+ if (checked != "1") { //当前复选框为未选中状态,点击后变为选中状态
+ // 处理当前节点的选中状态
+ _this.checkStatus($i).check();
+ }
+ };
+
+ /**
+ * @Desc: 实现复选框点击汇总,分派具体的点击方式
+ * @Param: $i: JQuery对象,表示当前点击的checkbox节点
+ */
+ DTree.prototype.changeCheck = function($i) {
+ var _this = this;
+ var temp = _this.temp;
+ if(typeof $i === 'undefined') {
+ $i = temp[0];
+ }
+ // 复选框选中事件
+ if (_this.checkbarType == "all") {
+ _this.checkAllOrNot($i);
+ } else if(_this.checkbarType == "no-all") {
+ _this.checkAllOrNoallOrNot($i);
+ } else if(_this.checkbarType == "p-casc") {
+ _this.checkAllOrPcascOrNot($i);
+ } else if(_this.checkbarType == "self") {
+ _this.checkOrNot($i);
+ } else if(_this.checkbarType == "only") {
+ _this.checkOnly($i);
+ } else {
+ _this.checkAllOrNot($i);
+ }
+
+ if(_this.select) {
+ // 设置复选框模式中的下拉树的值
+ _this.selectCheckboxVal();
+ }
+
+ // 获取复选框选中节点的内容
+ var checkbarNodes = _this.setAndGetCheckbarNodesParam(true);
+
+ // 用户自定义想做的事情
+ _this.checkbarFun.chooseDone(checkbarNodes);
+ layui.event.call(this, MOD_NAME, "chooseDone("+$(_this.obj)[0].id+")", {"checkbarParams": checkbarNodes});
+ _this.temp = [];
+ };
+
+ /**
+ * @Desc: 复选框半选状态初始化设置,树节点渲染完毕后重置半选状态
+ */
+ DTree.prototype.initNoAllCheck = function(){
+ var _this = this;
+ //1.获取所有选中节点
+ var $is = _this.obj.find("i[data-checked='1']");
+ if($is.length > 0){
+ for ( var key = 0; key < $is.length; key++) {
+ var $i = $($is[key]),
+ dataPar = $i.attr("data-par"),
+ dataType = $i.attr("data-type"),
+ $li = $i.closest(dataPar), //当前checkbox的上级li节点
+ $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点
+ $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点
+
+ // 处理父级节点的选中状态
+ for (var i = 1, item = $parent_li; i < item.length; i++) {
+ var flag1 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"'][data-checked='1']").length;
+ var flag2 = item.eq(i).find(">."+LI_NAV_CHILD+" ."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']").length;
+ var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ if (flag1 != flag2) {
+ // 父级复选框半选
+ _this.checkStatus($item_i).noallCheck();
+ } else {
+ // 父级复选框全选
+ _this.checkStatus($item_i).check();
+ }
+ }
+ }
+ }
+ };
+
+ /**
+ * @Desc: 复选框选中状态初始化设置,树节点渲染完毕后重置选中状态
+ */
+ DTree.prototype.initAllCheck = function(){
+ var _this = this;
+ //1.获取所有选中节点
+ var $is = _this.obj.find("i[data-checked='1']");
+ if($is.length > 0){
+ for ( var key = 0; key < $is.length; key++) {
+ var $i = $($is[key]),
+ dataPar = $i.attr("data-par"),
+ dataType = $i.attr("data-type"),
+ $li = $i.closest(dataPar), //当前checkbox的上级li节点
+ $parent_li = $i.parents(dataPar), //当前checkbox的所有父级li节点
+ $child_li = $li.find(dataPar); //当前checkbox的上级li节点下的所有子级li节点
+
+ // 处理父级节点的选中状态
+ for (var i = 1, item = $parent_li; i < item.length; i++) {
+ var $item_i = item.eq(i).find(">."+LI_DIV_ITEM+">."+LI_DIV_CHECKBAR+">i[data-type='"+dataType+"']");
+ // 父级复选框全选
+ _this.checkStatus($item_i).check();
+ }
+ }
+ }
+ };
+
+ /**
+ * @Desc: 设置复选框选中/未选中/半选 _this.checkStatus($i).check(); _this.checkStatus($i).noCheck(); _this.checkStatus($i).noallCheck();
+ * @Param: $i: JQuery对象,表示当前点击的checkbox节点
+ */
+ DTree.prototype.checkStatus = function($i) {
+ var _this = this;
+ return {
+ check: function(){
+ $i.removeClass(_this.usefontStyle.checkbox.out);
+ $i.removeClass(_this.usefontStyle.checkbox.noall);
+ $i.addClass(_this.usefontStyle.checkbox.on);
+ $i.addClass(_this.style.chs);
+ $i.attr("data-checked","1");
+ },
+ noCheck: function(){
+ $i.removeClass(_this.usefontStyle.checkbox.noall);
+ $i.removeClass(_this.usefontStyle.checkbox.on);
+ $i.removeClass(_this.style.chs);
+ $i.addClass(_this.usefontStyle.checkbox.out);
+ $i.attr("data-checked","0");
+ },
+ noallCheck: function(){
+ $i.removeClass(_this.usefontStyle.checkbox.out);
+ $i.removeClass(_this.usefontStyle.checkbox.on);
+ $i.addClass(_this.usefontStyle.checkbox.noall);
+ $i.addClass(_this.style.chs);
+ $i.attr("data-checked","2");
+ }
+ }
+ };
+
+ /**
+ * @Desc: 设置树的复选框操作值的全部参数,并获取
+ * @Param: requestParamFlag: 设置复选框返回值的数据结构, true:基于请求类型的返回对象数组, false:原始的节点返回对象数组
+ */
+ DTree.prototype.setAndGetCheckbarNodesParam = function(requestParamFlag) {
+ var _this = this;
+ //操作前先清空
+ _this.checkbarNode = [];
+ // 选择所有复选框节点
+ if (_this.checkbarData == "change"){ //记录变更数据
+ _this.obj.find("i[data-par][dtree-disabled='false']").each(function(){
+ var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM);
+ if ($i.attr("data-checked") != $i.attr("data-initchecked")) {
+ if(requestParamFlag) {
+ _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i)));
+ } else {
+ _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i));
+ }
+ }
+ });
+ } else if (_this.checkbarData == "all"){ //记录全部数据
+ _this.obj.find("i[data-par][data-checked][dtree-disabled='false']").each(function(){
+ var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM);
+ if(requestParamFlag) {
+ _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i)));
+ } else {
+ _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i));
+ }
+ });
+ } else if (_this.checkbarData == "choose"){ //记录选中数据
+ _this.obj.find("i[data-par][data-checked='1'][dtree-disabled='false']").each(function(){
+ var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM);
+ if(requestParamFlag) {
+ _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i)));
+ } else {
+ _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i));
+ }
+ });
+ } else if (_this.checkbarData == "halfChoose"){ //记录选中和半选数据
+ _this.obj.find("i[data-par][data-checked='1'][dtree-disabled='false']").each(function(){
+ var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM);
+ if(requestParamFlag) {
+ _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i)));
+ } else {
+ _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i));
+ }
+ });
+ _this.obj.find("i[data-par][data-checked='2'][dtree-disabled='false']").each(function(){
+ var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM);
+ if(requestParamFlag) {
+ _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i)));
+ } else {
+ _this.checkbarNode.push(_this.getCheckbarNodeParam($div, $i));
+ }
+ });
+ }
+ return _this.checkbarNode;
+ };
+
+ /**
+ * @Desc: 获取树的复选框操作值的全部参数
+ */
+ DTree.prototype.getCheckbarNodesParam = function() {
+ var _this = this;
+ return _this.setAndGetCheckbarNodesParam(true);
+ };
+
+ /**
+ * @Desc: 获取树的一个复选框的参数
+ * @Param: $div: JQuery对象,表示当前选中节点
+ * @Param: $i: JQuery对象,表示当前选中的复选框节点
+ */
+ DTree.prototype.getCheckbarNodeParam = function($div, $i){
+ var _this = this;
+ var temp_node = {};
+ temp_node.nodeId = $div.attr("data-id");
+ temp_node.parentId = _this.getNodeDom($div).parentLi().attr("data-pid");
+ temp_node.context = (typeof _this.formatter.title === 'function') ? _this.getNodeDom($div).cite().attr("data-title") : _this.getNodeDom($div).cite().text();
+ temp_node.leaf = _this.getNodeDom($div).cite().attr("data-leaf") == "leaf" ? true : false;
+ temp_node.level = _this.getNodeDom($div).parentLi().attr("data-index");
+ temp_node.spread = _this.getNodeDom($div).fnode().attr("data-spread") == "open" ? true : false;
+
+ var basicData = $div.attr("data-basic");
+ if(basicData) {
+ basicData = JSON.parse(event.unescape(basicData));
+ }
+ temp_node.basicData = basicData;
+ var recordData = $div.attr("data-record");
+ if(recordData) {
+ recordData = JSON.parse(event.unescape(recordData));
+ }
+ temp_node.recordData = recordData;
+
+ temp_node.dataType = $i.attr("data-type");
+ temp_node.checked = $i.attr("data-checked");
+ temp_node.initchecked = $i.attr("data-initchecked");
+ return temp_node;
+ };
+
+ /**
+ * @Desc: 获取基于返回参数的树的复选框参数,选中数据横向存储
+ */
+ DTree.prototype.getCheckbarJsonArrParam = function(){
+ var _this = this;
+ var checkbarJsonArr = {
+ nodeId: [], //节点ID
+ parentId: [], //父节点ID
+ context: [], //节点内容
+ leaf: [], //是否叶子节点
+ level: [], //层级
+ spread: [], //节点展开状态
+ dataType: [], //节点标记
+ checked: [], //节点复选框选中状态
+ initchecked: [], //节点复选框初始状态
+ basicData: [], //用户自定义的记录节点数据
+ recordData: [], //当前data数据(排除basicData和children字段)
+ };
+ // 获取全部复选框选中节点
+ var params = _this.setAndGetCheckbarNodesParam(false);
+ if(params && params.length > 0) {
+ for(var i=0; i 0) { _this.checkStatus($i).check(); }
+ }
+
+ /**
+ * @Desc: 取消全部复选框选中
+ */
+ DTree.prototype.cancelCheckedNode = function(){
+ var _this = this;
+ var $i = _this.obj.find("i[data-par][data-checked!='0']");
+ if($i.length > 0) { _this.checkStatus($i).noCheck(); }
+ }
+
+ /**
+ * @Desc: 反选复选框
+ */
+ DTree.prototype.invertCheckedNode = function(){
+ var _this = this;
+ if(_this.obj.find("i[data-par]").length > 0) {
+ var flag = false;
+ _this.obj.find("i[data-par]").each(function(){
+ var $i = $(this);
+ if($i.attr("data-checked") == '2'){
+ flag = true;
+ }else if($i.attr("data-checked") == '0') {
+ _this.checkStatus($i).check();
+ }else if($i.attr("data-checked") == '1') {
+ _this.checkStatus($i).noCheck();
+ }
+ });
+
+ if(flag) {
+ _this.initNoAllCheck();
+ } else {
+ _this.initAllCheck();
+ }
+ }
+ }
+
+ /**
+ * @Desc: 删除选中节点
+ */
+ DTree.prototype.removeCheckedNode = function(){
+ var _this = this;
+ var len = _this.obj.find("i[data-par][data-checked='1']").length;
+ if(len == 0){
+ layer.msg("请至少选中一个节点",{icon:2});
+ }else{
+ //操作前先清空
+ _this.checkbarNode = [];
+ // 选择所有复选框节点
+ var i_node = {};
+ _this.obj.find("i[data-par][data-checked='1']").each(function(){
+ var $i = $(this), $div = $i.closest("."+LI_DIV_ITEM);
+
+ _this.checkbarNode.push(_this.getRequestParam(_this.getCheckbarNodeParam($div, $i)));
+ });
+
+ layer.confirm('确定要删除选中节点?', {icon: 3, title:'删除选中节点'}, function(index1){
+ var flag = _this.menubarFun.remove(_this.checkbarNode);
+ if(flag){
+ _this.obj.find("i[data-par][data-checked='1']").closest("."+LI_DIV_ITEM).next("ul").remove();
+ _this.obj.find("i[data-par][data-checked='1']").closest("."+LI_DIV_ITEM).remove();
+ _this.checkbarNode=[];
+ }
+
+ layer.close(index1);
+ });
+ }
+ }
+
+ /******************** 工具栏及菜单栏区域 ********************/
+ /**
+ * @Desc: 初始化菜单栏和工具栏的div
+ */
+ DTree.prototype.initTreePlus = function(){
+ var _this = this;
+ // 初始化菜单栏和工具栏的div
+ _this.obj.prevAll('div#dtree_menubar_'+_this.obj[0].id).remove();
+ _this.toolbarMenu = {};
+ if(_this.menubar && _this.menubarTips.group && _this.menubarTips.group.length > 0) _this.obj.before("");
+ if(_this.toolbar){
+ if(_this.toolbarWay == "contextmenu") {
+ _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).remove();
+ if(_this.toolbarShow && _this.toolbarShow.length > 0) {
+ _this.obj.before("");
+ }
+ }
+ }
+
+ };
+
+ /**
+ * @Desc: 开启工具栏和菜单栏
+ */
+ DTree.prototype.openTreePlus = function(){
+ var _this = this;
+ // 先对工具栏做处理,因为菜单栏可能会与工具栏产生关联。
+ var ggMenu = [];
+ if(_this.toolbar) _this.getToolbarDom();
+
+ if(_this.menubar) {
+ var menubarTips = _this.menubarTips,
+ mtbar = menubarTips.toolbar,
+ group = menubarTips.group,
+ freedom = menubarTips.freedom;
+ if(mtbar && mtbar.length > 0){
+ // 菜单栏吸附工具栏上
+ for(var i=0; i 0){
+ // 菜单栏吸附在上方的按钮组div中
+ for(var i=0; i";
+ break;
+ case defaultMenu.moveUp:
+ gg = " ";
+ break;
+ case defaultMenu.refresh:
+ gg = " ";
+ break;
+ case defaultMenu.checkAll:
+ gg = (_this.checkbar && _this.checkbarType != 'only') ? " " : "";
+ break;
+ case defaultMenu.unCheckAll:
+ gg = (_this.checkbar && _this.checkbarType != 'only') ? " " : "";
+ break;
+ case defaultMenu.invertAll:
+ gg = (_this.checkbar && _this.checkbarType != 'only') ? " " : "";
+ break;
+ case defaultMenu.remove:
+ gg = (_this.checkbar) ? " " : "";
+ break;
+ case defaultMenu.searchNode:
+ gg = " ";
+ break;
+ }
+ return gg;
+ };
+
+ /**
+ * @Desc: 获取扩展菜单栏
+ * @Param: menu: 扩展菜单栏的Json对象
+ */
+ DTree.prototype.getExtMenubarDom = function(menu){
+ var _this = this;
+ return " ";
+ };
+
+ /**
+ * @Desc: 获取依附在工具栏的菜单栏
+ * @Param: menu: 菜单栏的具体操作字符串
+ */
+ DTree.prototype.getMenubarToolDom = function(menu){
+ var _this = this;
+ var rootId = _this.obj[0].id;
+ switch (menu) {
+ case defaultMenu.moveDown:
+ _this.toolbarMenu[defaultMenu.moveDown] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.moveDown, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.movedown, "展开全部");
+ break;
+ case defaultMenu.moveUp:
+ _this.toolbarMenu[defaultMenu.moveUp] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.moveUp, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.moveup, "收缩全部");
+ break;
+ case defaultMenu.refresh:
+ _this.toolbarMenu[defaultMenu.refresh] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.refresh, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.refresh, "刷新");
+ break;
+ case defaultMenu.checkAll:
+ if(_this.checkbar && _this.checkbarType != 'only')
+ _this.toolbarMenu[defaultMenu.checkAll] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.checkAll, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.checkAll, "全选节点");
+ break;
+ case defaultMenu.unCheckAll:
+ if(_this.checkbar && _this.checkbarType != 'only')
+ _this.toolbarMenu[defaultMenu.unCheckAll] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.unCheckAll, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.unCheckAll, "全不选节点");
+ break;
+ case defaultMenu.invertAll:
+ if(_this.checkbar && _this.checkbarType != 'only')
+ _this.toolbarMenu[defaultMenu.invertAll] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.invertAll, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.invertAll, "反选节点");
+ break;
+ case defaultMenu.remove:
+ if(_this.checkbar)
+ _this.toolbarMenu[defaultMenu.remove] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.remove, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.remove, "删除选中");
+ break;
+ case defaultMenu.searchNode:
+ _this.toolbarMenu[defaultMenu.searchNode] = _this.setToolbarDom().setMenuToolbarOption(defaultMenu.searchNode, _this.toolbarStyle.title, _this.usefontStyle.toolbar.menubar.searchNode, "查询");
+ break;
+ }
+ };
+
+ /**
+ * @Desc: 获取依附在工具栏的扩展菜单栏
+ * @Param: menu: 扩展菜单栏的Json对象
+ */
+ DTree.prototype.getExtMenubarToolDom = function(menu){
+ var _this = this;
+ _this.toolbarMenu[menu.menubarId] = _this.setToolbarDom().setMenuToolbarOption(menu.menubarId, menu.title, _this.usefontStyle.toolbar.menubarExt+" "+menu.icon, "");
+ };
+
+ /**
+ * @Desc: menubar内置方法
+ */
+ DTree.prototype.menubarMethod = function(){
+ var _this = this;
+ return {
+ openAllNode: function(obj){ // 展开所有节点
+ var $ulNode = obj || _this.obj.children("li").children("ul");
+ // 遍历所有ul子节点
+ for (var i = 0; i < $ulNode.length; i++) {
+ // 获取当前节点的信息
+ var $ul = $($ulNode[i]),
+ $div = $ul.prev("div"),
+ $i_fnode = _this.getNodeDom($div).fnode(),
+ $i_snode = _this.getNodeDom($div).snode(),
+ $cite = _this.getNodeDom($div).cite(),
+ spread = $i_fnode.attr("data-spread"),
+ leaf = $cite.attr("data-leaf");
+
+ if (leaf == "leaf") {
+ continue;
+ } // 说明是叶子了,则继续循环下一个
+
+ if (spread == "open") {
+ // 说明该节点已经展开了,则进行子节点循环
+ } else {
+ if (_this.type=="load") { //是否全量加载
+ if (_this.cache) { //是否开启缓存
+ if ($ul.html()) {
+ $ul.addClass(NAV_SHOW);
+ } else { //加载节点
+ _this.getChild($div);
+ }
+ }else { //每次取新的数据
+ $ul.html("");
+ _this.getChild($div);
+ }
+ } else { // 全量加载
+ $ul.addClass(NAV_SHOW);
+ }
+ _this.operateIcon($i_fnode, $i_snode).open();
+
+ }
+ var $childUl = $ul.children("li").children("ul");
+ _this.menubarMethod().openAllNode($childUl);
+ }
+ },
+ closeAllNode: function(){ //收缩所有节点
+ _this.obj.find("."+LI_NAV_CHILD).each(function(){
+ // 获取当前节点的信息
+ var $ul = $(this),
+ $div = $ul.prev("div"),
+ $i_fnode = _this.getNodeDom($div).fnode(),
+ $i_snode = _this.getNodeDom($div).snode(),
+ $cite = _this.getNodeDom($div).cite(),
+ spread = $i_fnode.attr("data-spread"),
+ leaf = $cite.attr("data-leaf");
+
+ $ul.removeClass(NAV_SHOW);
+ if(leaf !== "leaf") {
+ _this.operateIcon($i_fnode, $i_snode).close();
+ }
+ });
+ },
+ refreshTree: function(){// 刷新树
+ _this.refreshTree();
+ },
+ checkAll: function(){ // 全选节点
+ _this.checkAllNode();
+ },
+ unCheckAll: function(){ // 全不选节点
+ _this.cancelCheckedNode();
+ },
+ invertAll: function(){ // 反选节点
+ _this.invertCheckedNode();
+ },
+ remove: function(){// 删除选中节点
+ _this.removeCheckedNode();
+ },
+ searchNode: function(){//模糊查询该值,展开该值节点
+ layer.prompt({
+ formType: 0,
+ value: "",
+ title: '查询节点'
+ }, function(value, index1, elem){
+ if (value) {
+ var flag = _this.searchNode(value);
+ if (!flag) {
+ layer.msg("该名称节点不存在!", {icon:5});
+ }
+ } else {
+ layer.msg("未指定查询节点名称", {icon:5});
+ }
+ layer.close(index1);
+ });
+ },
+ extMethod: function(menuId, $div, flag){
+ if(_this.menubar && _this.menubarTips.group && _this.menubarTips.group.length > 0 && flag == "group"){
+ for(var i=0; i<_this.menubarTips.group.length; i++){
+ var ext = _this.menubarTips.group[i];
+ if (menuId == ext.menubarId){
+ ext.handler(_this.getRequestParam(_this.getNodeParam($div), $div));
+ break;
+ }
+ }
+ }
+ if(_this.menubar && _this.menubarTips.toolbar && _this.menubarTips.toolbar.length > 0 && flag == "toolbar"){
+ for(var i=0; i<_this.menubarTips.toolbar.length; i++){
+ var ext = _this.menubarTips.toolbar[i];
+ if (menuId == ext.menubarId){
+ ext.handler(_this.getRequestParam(_this.getNodeParam($div), $div));
+ break;
+ }
+ }
+ }
+ if(_this.menubar && _this.menubarTips.freedom && _this.menubarTips.freedom.length > 0 && flag == "freedom"){
+ for(var i=0; i<_this.menubarTips.freedom.length; i++){
+ var ext = _this.menubarTips.freedom[i];
+ if (menuId == ext.menubarId){
+ ext.handler(_this.getRequestParam(_this.getNodeParam($div), $div));
+ break;
+ }
+ }
+ }
+ }
+ };
+ };
+
+ /**
+ * @Desc: menubar监听方法
+ * @Param: menuId:菜单栏的具体操作字符串
+ * @Param: flag:菜单栏的显示方式
+ */
+ DTree.prototype.menubarListener = function(menuId, flag){
+ var _this = this;
+ var $div = _this.getNodeDom().nowDiv();
+ switch (menuId) {
+ case defaultMenu.moveDown: // 展开全部节点
+ _this.menubarMethod().openAllNode();
+ break;
+ case defaultMenu.moveUp: // 收缩全部节点
+ _this.menubarMethod().closeAllNode();
+ break;
+ case defaultMenu.refresh:
+ _this.menubarMethod().refreshTree(); // 刷新树
+ break;
+ case defaultMenu.checkAll:
+ _this.menubarMethod().checkAll();
+ break;
+ case defaultMenu.unCheckAll:
+ _this.menubarMethod().unCheckAll();
+ break;
+ case defaultMenu.invertAll:
+ _this.menubarMethod().invertAll();
+ break;
+ case defaultMenu.remove:
+ _this.menubarMethod().remove();
+ break;
+ case defaultMenu.searchNode:
+ _this.menubarMethod().searchNode();
+ break;
+ default:
+ _this.menubarMethod().extMethod(menuId, $div, flag);
+ break;
+ }
+ };
+
+ /**
+ * @Desc: 模糊查询该值,展开该值节点
+ * @Param: value: 模糊查询的值
+ */
+ DTree.prototype.searchNode = function(value){
+ var _this = this;
+ var b = false;
+ var $lis = [];
+ _this.obj.find("cite[data-leaf]").each(function(){
+ var $nthis = $(this);
+ var html = $nthis.html();
+ if(html.indexOf(value) > -1){
+ if($nthis.attr("data-leaf") == "leaf") {
+ // 叶子节点提供包含父节点的所有信息
+ var title = "";
+ $nthis.parents("li").each(function(){
+ title = "-" + $(this).find("cite[data-leaf]").html() + title;
+ });
+ title = title.substring(1, title.length);
+ $nthis.attr("title", title);
+ }
+ // 保存当前cite所在的li及父li中包含该值,则只保留父的
+ var i = 0;
+ $nthis.parents("li").each(function(){
+ var html2 = $(this).find("cite[data-leaf]").html();
+ if(html2.indexOf(value) > -1){
+ i++;
+ }
+ if(i >= 2){
+ return true;
+ }
+ });
+ if (i < 2){
+ $lis.push($nthis.closest("li").prop("outerHTML"));
+ }
+ }
+ });
+ if($lis.length > 0) {
+ b = true;
+ // 1.将树节点清空
+ _this.obj.html("");
+ // 2.遍历所有cite节点,展开当前cite节点
+ for(var i=0; i<$lis.length; i++){
+ _this.obj.append($lis[i]);
+ }
+ }
+ return b;
+ };
+
+
+ /******************** 工具栏区域 ********************/
+ /**
+ * @Desc: 获取工具栏
+ */
+ DTree.prototype.getToolbarDom = function(){
+ var _this = this;
+ var toolbarShow = _this.toolbarShow,
+ toolbarExt = _this.toolbarExt,
+ toolbarWay = _this.toolbarWay;
+
+ if(toolbarShow.length > 0){
+ for(var i=0; i 0){
+ for(var i=0; i "+other +title+" ";
+ } else if(toolbarWay == "fixed" || toolbarWay == "follow") {
+ return " ";
+ }
+ },
+ setMenuToolbarOption: function(menubarId, title, classId, other){
+ var rootId = _this.obj[0].id;
+ if(toolbarWay == "contextmenu") {
+ return " "+other +title+" ";
+ } else if(toolbarWay == "fixed" || toolbarWay == "follow") {
+ return " ";
+ }
+ },
+ setToolbarPlace: function(toolbarMenu){
+ if(toolbarWay == "contextmenu") {
+ if(toolbarMenu){
+ _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).find('div.layui-nav-item>dl.layui-nav-child').html("");
+ for(var key in toolbarMenu){
+ _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).find('div.layui-nav-item>dl.layui-nav-child').append(toolbarMenu[key]);
+ }
+ }
+ } else if(toolbarWay == "fixed" || toolbarWay == "follow") {
+ _this.obj.find("cite[data-leaf][dtree-disabled='false']").each(function(){
+ var $cite = $(this);
+ _this.dynamicToolbarDom($cite);
+ });
+ }
+ }
+ }
+ };
+
+ /**
+ * @Desc: 在节点后动态绑定fixed和follow条件的工具栏
+ * @Param: $cite: JQuery对象,表示当前文本节点
+ */
+ DTree.prototype.dynamicToolbarDom = function($cite){
+ var _this = this;
+ var toolbarWay = _this.toolbarWay;
+ if($cite.next("em."+TOOLBAR_TOOL_EM).length == 0) {
+ var $div = $cite.parent("div");
+ var param = _this.getRequestParam(_this.getTempNodeParam($div));
+ var toolbarMenus = _this.toolbarFun.loadToolbarBefore(event.cloneObj(_this.toolbarMenu), param, $div);
+ var hideCls = (toolbarWay == "follow") ? NAV_HIDE : "";
+ var em = [""];
+ if(toolbarMenus){
+ for(var key in toolbarMenus){
+ em.push(toolbarMenus[key]);
+ }
+ }
+ em.push(" ");
+ $cite.after(em.join(''));
+ }
+ }
+
+ /**
+ * @Desc: 隐藏toolbar
+ */
+ DTree.prototype.toolbarHide = function() {
+ var _this = this;
+ if(_this.toolbar && _this.toolbarWay == "contextmenu") {
+ var $toolBarDiv = _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id);
+ $toolBarDiv.find(".layui-nav-child").removeClass('layui-anim-fadein layui-show');
+ }
+ }
+
+ /**
+ * @Desc: toolbar内置方法
+ */
+ DTree.prototype.toolbarMethod = function(){
+ var _this = this;
+ return {
+ pulldown: function(obj){ // 展开当前点击节点的下面全部节点
+ if(!obj) return;
+ var $ulNode = obj;
+ // 遍历所有ul子节点
+ for (var i = 0; i < $ulNode.length; i++) {
+ // 获取当前节点的信息
+ var $ul = $($ulNode[i]),
+ $div = $ul.prev("div"),
+ $i_fnode = _this.getNodeDom($div).fnode(),
+ $i_snode = _this.getNodeDom($div).snode(),
+ $cite = _this.getNodeDom($div).cite(),
+ spread = $i_fnode.attr("data-spread"),
+ leaf = $cite.attr("data-leaf");
+
+ if (leaf == "leaf") { continue; } // 说明是叶子了,则继续循环下一个
+
+ if (spread == "open") {
+ // 说明该节点已经展开了,则进行子节点循环
+ } else {
+ if (_this.type=="load") { //是否全量加载
+ if (_this.cache) { //是否开启缓存
+ if ($ul.html()) {
+ $ul.addClass(NAV_SHOW);
+ } else { //加载节点
+ _this.getChild($div);
+ }
+ }else { //每次取新的数据
+ $ul.html("");
+ _this.getChild($div);
+ }
+ } else { // 全量加载
+ $ul.addClass(NAV_SHOW);
+ }
+ _this.operateIcon($i_fnode, $i_snode).open();
+
+ }
+ var $childUl = $ul.children("li").children("ul");
+ _this.toolbarMethod().pulldown($childUl);
+ }
+ },
+ pullup: function($li){ // 收缩当前点击节点的下面全部节点
+ $li.find("."+LI_NAV_CHILD).each(function(){
+ // 获取当前节点的信息
+ var $ul = $(this),
+ $div = $ul.prev("div"),
+ $i_fnode = _this.getNodeDom($div).fnode(),
+ $i_snode = _this.getNodeDom($div).snode(),
+ $cite = _this.getNodeDom($div).cite(),
+ spread = $i_fnode.attr("data-spread"),
+ leaf = $cite.attr("data-leaf");
+
+ $ul.removeClass(NAV_SHOW);
+ if(leaf !== "leaf") {
+ _this.operateIcon($i_fnode, $i_snode).close();
+ }
+ });
+ }
+ }
+ };
+
+ /**
+ * @Desc: toolbar监听方法
+ * @Param: tool: 工具栏的具体操作字符串
+ * @Param: $div: JQuery对象,表示当前操作节点
+ */
+ DTree.prototype.toolbarListener = function(tool, $div) {
+ var _this = this;
+ var $cite = $div.children("cite[data-leaf]"),
+ $ul = $div.next("ul"),
+ $p_li = $div.parent("li[data-index]"), //当前选中节点的顶级li节点
+ $p_ul = $p_li.parent("ul"), //当前选中节点的顶级li节点的父级ul
+ $p_div = $p_ul.prev("div"), //当前选中节点的顶级li节点的父级ul的前一个div
+ title = (typeof _this.formatter.title === 'function') ? $cite.attr("data-title") : $cite.text();
+
+ switch (tool) {
+ case defaultTool.pulldown:
+ _this.toolbarMethod().pulldown($ul);
+ break;
+ case defaultTool.pullup:
+ _this.toolbarMethod().pullup($p_li);
+ break;
+ case defaultTool.addTool:
+ var content = _this.loadToolBar(title, defaultTool.addTool);
+
+ layer.open({
+ title: "新增"+_this.toolbarStyle.title,
+ type: 1,
+ area: _this.toolbarStyle.area,
+ content: content,
+ success: function(layero, index){
+ form.render();
+ form.on("submit(dtree_addNode_" + _this.obj[0].id + "_form)",function(data){
+ var data = data.field;
+ var parentId = $div.attr("data-id"),
+ id = $div.attr("data-id")+"_node_"+$ul[0].childNodes.length,
+ leaf = true,
+ checked = "0",
+ level = parseInt($p_li.attr("data-index"))+1;
+
+ var type = _this.response.type;
+ var checked = _this.response.checked;
+ // 创建子节点的DOM,添加子节点
+ var checkArr = [];
+ if (_this.checkArrLen > 0) {
+ for (var i = 0; i < _this.checkArrLen; i++) {
+ checkArr.push({type: i, checked: "0"});
+ }
+ }
+
+ $ul.append(_this.getLiItemDom(id, parentId, data.addNodeName, data.addNodeName, true, "", "", checkArr, level, false, false, false, "", "", "item"));
+ // 先将li节点隐藏
+ $ul.find("li[data-id='"+id+"']").hide();
+ // 重新赋值
+ var $addDiv = $ul.find("div[data-id='"+id+"']");
+ node = _this.getNodeParam($addDiv);
+
+ //获取组装后的requestNode,组合参数
+ var requestNode = _this.getRequestParam(node);
+ requestNode = $.extend(requestNode, data);
+
+ _this.temp = [id, $ul, $div, level];
+ // 用户自定义想做的事情
+ _this.toolbarFun.addTreeNode(requestNode, $div);
+
+ layer.close(index);
+ return false;
+ });
+ }
+ });
+ break;
+ case defaultTool.editTool:
+ var content = _this.loadToolBar(title, defaultTool.editTool);
+
+ layer.open({
+ title: "编辑"+_this.toolbarStyle.title,
+ type: 1,
+ area: _this.toolbarStyle.area,
+ content: content,
+ success: function(layero, index){
+ _this.toolbarFun.editTreeLoad(_this.getRequestParam(_this.getNodeParam($div)));
+ form.render();
+ form.on("submit(dtree_editNode_" + _this.obj[0].id + "_form)",function(data){
+ var data = data.field;
+ $cite.html(data.editNodeName);
+ node = _this.getNodeParam($div);
+ var requestNode = _this.getRequestParam(node);
+ requestNode = $.extend(requestNode, data);
+ _this.temp = [$cite, $div, title, $p_div];
+ _this.toolbarFun.editTreeNode(requestNode, $div);
+
+ layer.close(index);
+ });
+ }
+ });
+ break;
+ case defaultTool.delTool:
+ layer.confirm('确定要删除该'+_this.toolbarStyle.title+'?', {icon: 3, title:'删除'+_this.toolbarStyle.title}, function(index){
+ var node = _this.getNodeParam($div);
+ _this.temp = [$p_li, $p_div];
+ _this.toolbarFun.delTreeNode(_this.getRequestParam(_this.getNodeParam($div)), $div);
+
+ layer.close(index);
+ });
+ break;
+ default:
+ if(_this.toolbarExt.length > 0){
+ for(var i=0; i<_this.toolbarExt.length; i++){
+ var ext = _this.toolbarExt[i];
+ if (tool == ext.toolbarId){
+ ext.handler(_this.getRequestParam(_this.getNodeParam($div)), $div);
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+
+
+ /**
+ * @Desc: 加载toolbar中的内容
+ * @Param: title: 默认操作中的input输入框的值
+ * @Param: name: 工具栏的具体操作字符串
+ */
+ DTree.prototype.loadToolBar = function(title, name){
+ var _this = this;
+ var toolbarShow = _this.toolbarShow;
+ var nodeBarContents = _this.toolbarBtn;
+
+ var html = "";
+ switch (name) {
+ case defaultTool.addTool:
+ var addNodeBarDef = [{"label": "当前选中", "name": "nodeTitle", "type": "text", "value": title, "defElem": "nowChoose", "readonly": true},
+ {"label": "新增"+_this.toolbarStyle.title, "name": "addNodeName", "type": "text", "value": "", "defElem": "nowChange", "verify": "required"},
+ {"type": "submit", "value": "确认添加", "defElem": "btn", "filter": "dtree_addNode_" + _this.obj[0].id + "_form"}];
+
+ //2. 用户自定义的节点内容
+ var addNodeBar = ['');
+ html = addNodeBar.join('');
+ break;
+
+ case defaultTool.editTool:
+ var editNodeBarDef = [{"label": "当前选中", "name": "nodeTitle", "type": "text", "value": title, "defElem": "nowChoose", "readonly": true},
+ {"label": "编辑"+_this.toolbarStyle.title, "name": "editNodeName", "type": "text", "value": "", "defElem": "nowChange", "verify": "required"},
+ {"type": "submit", "value": "确认编辑", "defElem": "btn", "filter": "dtree_editNode_" + _this.obj[0].id + "_form"}];
+
+ var editNodeBar = ['');
+ html = editNodeBar.join('');
+ break;
+ }
+ return html;
+ };
+
+ /**
+ * @Desc: 获取toolbar详细的标签信息
+ * @Param: nodeBarContents: 工具栏中的数据渲染内容JSON对象
+ */
+ DTree.prototype.loadToolBarDetail = function(nodeBarContents){
+ var _this = this;
+ var readonly = (typeof (nodeBarContents.readonly) === "boolean") ? nodeBarContents.readonly : false;
+ var disabled = (typeof (nodeBarContents.disabled) === "boolean") ? nodeBarContents.disabled : false;
+ var id = nodeBarContents.id ? nodeBarContents.id : "";
+ var name = nodeBarContents.name ? nodeBarContents.name : "";
+ var val = nodeBarContents.value ? nodeBarContents.value : "";
+ var verify = nodeBarContents.verify ? nodeBarContents.verify : "";
+ var placeholder = nodeBarContents.placeholder ? nodeBarContents.placeholder : val;
+ return{
+ text: function(){
+ return [''].join('');
+ },
+ textarea: function(){
+ return ['',
+ '
'+nodeBarContents.label+': ',
+ '
',
+ '',
+ '
',
+ '
'].join('');
+ },
+ hidden: function(){
+ return [' '].join('');
+ },
+ select: function(){
+ var optionsData = (typeof nodeBarContents.optionsData === 'object') ? nodeBarContents.optionsData : nodeBarContents.optionsData();
+ var options = "";
+ for(var key in optionsData){
+ if(val == optionsData[key]){
+ options += ""+optionsData[key]+" ";
+ } else {
+ options += ""+optionsData[key]+" ";
+ }
+ }
+ return [''].join('');
+ },
+ submit: function(){
+ var filter = nodeBarContents.filter;
+ return [''+val+' '].join('');
+ },
+ button: function(){
+ return [''+val+' '].join('');
+ },
+ reset: function(){
+ return [''+val+' '].join('');
+ }
+ }
+ };
+
+ /**
+ * @Desc: 新增节点后改变节点内容
+ * @Param: returnID: 当前需要加载的内容,JSON对象、字符串、指定字符串("refresh")、true
+ */
+ DTree.prototype.changeTreeNodeAdd = function(returnID){
+ var _this = this;
+ var temp = _this.temp;
+ var id = temp[0], $ul = temp[1], $div = temp[2], level = temp[3];
+ var flag = false;
+ if(returnID){
+ var $thisDiv = _this.obj.find("[data-id='"+id+"']");
+ if(typeof returnID === "object"){
+ // 如果是JSON格式数据,则将当前DIV删除,重新建造DIV
+ $thisDiv.remove();
+ var parseData = _this.parseData(returnID);
+
+ if(parseData.treeId()){
+ $ul.append(_this.getLiItemDom(parseData.treeId(), parseData.parentId(), parseData.title(), parseData.fmtTitle(), parseData.last(0), parseData.ficonClass(), parseData.iconClass(), parseData.checkArr(), level, parseData.spread(), parseData.disabled(), parseData.hide(), parseData.basicData(), parseData.recordData(), "item"));
+
+ // 建造完毕后,选中该DIV
+ $thisDiv = $ul.find("div[data-id='"+parseData.treeId()+"']");
+ _this.setNodeParam($thisDiv)
+ } else {
+ layer.msg("添加失败,节点ID为undefined!",{icon:5});
+ // 将li节点删除
+ $ul.find("li[data-id='"+id+"']").remove();
+ // 重新赋值
+ _this.setNodeParam($div);
+ // 临时变量制空
+ _this.temp = [];
+ return ;
+ }
+ }else if(returnID == 'refresh' || returnID == true){
+ // 如果是设置为refresh参数,则向后台发送请求,获取新增节点下的真实参数,局部刷新树。
+ flag = true;
+ } else if(typeof returnID === "string" || typeof returnID === 'number'){
+ $thisDiv.attr("data-id", returnID);
+ // 将li节点展示
+ $ul.find("li[data-id='"+returnID+"']").show();
+ _this.setNodeParam($thisDiv)
+ }
+
+ // 判断当前点击的节点是否是最后一级节点,如果是,则需要修改节点的样式
+ var $icon_i = $div.find("i[data-spread]");
+ if ($icon_i.eq(0).attr("data-spread") == "last") {
+ _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).openWithLeaf();
+ } else { //如果不是,也要修改节点样式
+ _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).open();
+ }
+ $ul.addClass(NAV_SHOW); //展开UL
+ _this.accordionUL($ul);
+ if(flag) {
+ _this.getChild($div);
+ } else {
+ // _this.showLine();
+ _this.showLine($ul.find("li"));
+ // 这种情况下需要在新增节点后对节点新增工具栏
+ if(_this.toolbar && _this.toolbarWay != 'contextmenu') {
+ _this.dynamicToolbarDom($thisDiv.find("cite[data-leaf]"));
+ }
+ }
+
+ } else {
+ // 将li节点删除
+ $ul.find("li[data-id='"+id+"']").remove();
+ // 重新赋值
+ _this.setNodeParam($div);
+ }
+
+ _this.temp = []; // 临时变量制空
+
+ };
+
+ /**
+ * @Desc: 编辑页打开后显示编辑页内容
+ * @Param: param: 编辑页打开之后回显的数据集
+ */
+ DTree.prototype.changeTreeNodeDone = function(param){
+ var _this = this;
+ form.val('dtree_editNode_' + _this.obj[0].id + '_form', param);
+ form.render();
+ };
+
+ /**
+ * @Desc: 修改节点后改变节点内容
+ * @Param: returnID: 当前需要变更的内容,JSON对象
+ */
+ DTree.prototype.changeTreeNodeEdit = function(returnID){
+ var _this = this;
+ var temp = _this.temp;
+ var $cite = temp[0], $div = temp[1], title = temp[2], $p_div = temp[3];
+ var flag = false;
+ if(returnID){
+ if(typeof returnID === "object"){
+ var parseData = _this.parseData(returnID);
+
+ if(parseData.treeId()){
+ var replaceDom = _this.replaceDom($div, parseData.treeId(), parseData.last(0), parseData.spread(), parseData.disabled(), parseData.hide());
+ replaceDom.node(parseData.iconClass());
+ replaceDom.checkbox(parseData.checkArr());
+ replaceDom.text(parseData.title(),parseData.fmtTitle());
+ replaceDom.ul();
+ replaceDom.basicData(parseData.basicData());
+ replaceDom.recordData(parseData.recordData());
+ _this.setNodeParam($div);
+ } else {
+ layer.msg("编辑失败,节点ID为undefined!",{icon:5});
+ // 重新赋值
+ _this.setNodeParam($div);
+ }
+ }
+ } else {
+ $cite.html(title);
+ _this.getNodeParam($div);
+ }
+
+ _this.temp = []; // 临时变量制空
+ };
+
+ /**
+ * @Desc: 删除节点后改变节点内容
+ * @Param: flag: 是否要删除节点
+ */
+ DTree.prototype.changeTreeNodeDel = function(flag){
+ var _this = this;
+ var temp = _this.temp;
+ var $p_li = temp[0],
+ $p_ul = $p_li.parent("ul"),
+ $p_div = temp[1];
+
+ if(flag){
+ $p_li.remove();
+ _this.showLine($p_ul.find("li"));
+ // 判断父级ul中是否还存在li,如果不存在,则需要修改节点的样式
+ if($p_ul.children("li").length == 0){
+ var $icon_i = $p_div.find("i[data-spread]");
+ _this.operateIcon($icon_i.eq(0), $icon_i.eq(1)).closeWithLeaf();
+ }
+ _this.initNodeParam();
+ }
+
+ _this.temp = []; // 临时变量制空
+ };
+
+ /******************** iframe区域 ********************/
+ /**
+ * @Desc: 加载iframe
+ * @Param: $div: JQuery对象,表示当前节点
+ * @Param: iframeParam: iframe加载的参数
+ */
+ DTree.prototype.loadIframe = function($div, iframeParam) {
+ var _this = this;
+ var $cite = _this.getNodeDom($div).cite();
+ if (!_this.useIframe) { // 启用iframe
+ return false;
+ }
+ var iframeElem = _this.iframeElem,
+ iframeUrl = _this.iframeUrl,
+ iframeLoad = _this.iframeLoad;
+
+ var flag = iframeLoad == "leaf" ? (($cite.attr("data-leaf") == "leaf") ? true : false) : true;
+
+ if (flag) {
+ if ($(iframeElem).length > 0) { //iframe存在
+ if (!iframeUrl) {
+ layer.msg("数据请求异常,iframeUrl参数未指定", {icon:5});
+ return false;
+ }
+ var param = AjaxHelper.serialize("?", iframeParam);
+ if(iframeUrl.indexOf("?")> -1){
+ param = "&"+param.substring(1, param.length);
+ }
+ var url = iframeUrl + param;
+ $(iframeElem).attr("src", url);
+ } else {
+ layer.msg("iframe绑定异常,请确认页面中是否有iframe页对应的容器", {icon:5});
+ return false;
+ }
+ }
+ return flag;
+ };
+
+ /**
+ * @Desc: 获取传递出去的参数,根据iframe.iframeDefaultRequest、iframe.iframeRequest和node拼出发出请求的参数
+ * @Param: nodes: 需要传递出去的参数
+ */
+ DTree.prototype.getIframeRequestParam = function(nodes){
+ var _this = this;
+ var request = _this.iframeRequest,
+ defaultRequestNames = _this.iframeDefaultRequest,
+ node = nodes || _this.node,
+ requestParam = {};
+
+ // 先拼用户自定义的,在拼树生成的,这样的话用户可以自定义当树未生成时的节点的初始值
+ for ( var key in request) {
+ requestParam[key] = request[key];
+ }
+ for ( var key in defaultRequestNames) {
+ var paramName = defaultRequestNames[key];
+ var paramValue = node[key];
+ if(typeof paramValue === "boolean"){
+ requestParam[paramName] = paramValue;
+ }else {
+ if(paramValue){
+ requestParam[paramName] = paramValue;
+ }
+ }
+ }
+
+ // 解决传递中文的乱码问题
+ var reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/; //正则匹配中文
+ for(var key in requestParam){
+ if(reg.test(requestParam[key])) {
+ var str = requestParam[key];
+ requestParam[key] = encodeURI(encodeURI(str));
+ }
+ }
+
+ return requestParam;
+ };
+
+ /******************** 数据回调区域 ********************/
+ /**
+ * @Desc: 根据具体的id获取基于当前id的div以及对应的其他dom元素
+ * @Param: id: 节点的ID值
+ */
+ DTree.prototype.getNodeDom = function(id){
+ var _this = this;
+ // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null
+ var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']");
+ return {
+ div: function(){ // 获取当前div
+ return $div;
+ },
+ fnode: function(){ // 获取一级图标元素
+ return ($div == null) ? null : $div.find("i[data-spread]").eq(0);
+ },
+ snode: function(){ // 获取二级图标元素
+ return ($div == null) ? null : $div.find("i[data-spread]").eq(1);
+ },
+ checkbox: function(){ // 获取复选框元素
+ return ($div == null) ? null : $div.find("i[data-par]");
+ },
+ cite: function(){ // 获取cite元素
+ return ($div == null) ? null : $div.find("cite[data-leaf]");
+ },
+ nextUl: function(){ // 获取相邻的ul元素
+ return ($div == null) ? null : $div.next("ul");
+ },
+ parentLi: function(){ // 获取父级li元素
+ return ($div == null) ? null : $div.parent("li");
+ },
+ parentUl: function(){ // 获取基于当前$div的上级$ul
+ return ($div == null) ? null : $div.parent("li").parent("ul");
+ },
+ parentDiv: function(){ // 获取基于当前$div的上级$div
+ return ($div == null) ? null : $div.parent("li").parent("ul").prev("div");
+ },
+ nowDiv: function(){ // 获取当前选中节点,没有则返回null
+ return (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS);
+ },
+ nowOrRootDiv: function(){ // 获取当前选中节点,没有则返回根节点下的第一个div
+ return (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).length == 0) ? _this.obj.children("li").eq(0).children("div").eq(0) : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS);
+ },
+ nowOrRootUl: function(){ // 获取当前选中节点下一个UL 或根节点。为了将新节点放入ul下
+ return (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).length == 0) ? _this.obj : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id]").parent().find("."+NAV_THIS).next("ul");
+ }
+ }
+ };
+
+ /**
+ * @Desc: 获取当前选中节点下一个ul节点 或根节点。为了将新节点放入ul下
+ */
+ DTree.prototype.getNowNodeUl = function() {
+ var _this = this;
+ return _this.getNodeDom().nowOrRootUl();
+ };
+
+ /**
+ * @Desc: 获取当前选中div节点 或第一个根div节点。
+ */
+ DTree.prototype.getNowNode = function() {
+ var _this = this;
+ return _this.getNodeDom().nowOrRootDiv();
+ };
+
+ /**
+ * @Desc: 获取当前选中div节点 无则返回null。
+ */
+ DTree.prototype.getNowNodeOrNull = function() {
+ var _this = this;
+ return _this.getNodeDom().nowDiv();
+ };
+
+ /**
+ * @Desc: 根据获取指定div节点。
+ * @Param: id: 指定节点的ID
+ */
+ DTree.prototype.getNode = function(id) {
+ var _this = this;
+ return _this.getNodeDom(id).div();
+ };
+
+ /**
+ * @Desc: 设置当前选中节点的全部参数
+ * @Param: $div: 当前选中的节点
+ */
+ DTree.prototype.setNodeParam = function($div) {
+ var _this = this;
+ _this.node.nodeId = $div.attr("data-id");
+ _this.node.parentId = _this.getNodeDom($div).parentLi().attr("data-pid");
+ _this.node.context = (typeof _this.formatter.title === 'function') ? _this.getNodeDom($div).cite().attr("data-title") : _this.getNodeDom($div).cite().text();
+ _this.node.leaf = _this.getNodeDom($div).cite().attr("data-leaf") == "leaf" ? true : false;
+ _this.node.level = _this.getNodeDom($div).parentLi().attr("data-index");
+ _this.node.spread = _this.getNodeDom($div).fnode().attr("data-spread") == "open" ? true : false;
+
+ var basicData = $div.attr("data-basic");
+ if(basicData) {
+ basicData = JSON.parse(event.unescape(basicData));
+ }
+ _this.node.basicData = basicData;
+
+ var recordData = $div.attr("data-record");
+ if(recordData) {
+ recordData = JSON.parse(event.unescape(recordData));
+ }
+ _this.node.recordData = recordData;
+
+ if (_this.getNodeDom($div).checkbox()) {
+ var dataTypes = "", checkeds = "", initcheckeds = "";
+ _this.getNodeDom($div).checkbox().each(function(){
+ dataTypes += $(this).attr("data-type") + ",";
+ checkeds += $(this).attr("data-checked") + ",";
+ initcheckeds += $(this).attr("data-initchecked") + ",";
+ });
+ dataTypes = dataTypes.substring(0, dataTypes.length-1);
+ checkeds = checkeds.substring(0, checkeds.length-1);
+ initcheckeds = initcheckeds.substring(0, initcheckeds.length-1);
+
+ _this.node.dataType = dataTypes;
+ _this.node.checked = checkeds;
+ _this.node.initchecked = initcheckeds;
+ }
+ };
+
+ /**
+ * @Desc: 获取当前选中节点的全部参数
+ * @Param: $div: 当前选中的节点
+ */
+ DTree.prototype.getNodeParam = function($div) {
+ var _this = this;
+ if ($div) {
+ _this.setNodeParam($div);
+ } else {
+ if(_this.obj.find("div[data-id]").parent().find("."+NAV_THIS).length == 0){
+ _this.initNodeParam();
+ }
+ }
+ return this.node;
+ };
+
+ /**
+ * @Desc: 获取一个临时的node参数
+ * @Param: $div: 当前选中的节点
+ */
+ DTree.prototype.getTempNodeParam = function($div) {
+ var _this = this;
+ var temp_node = {};
+ temp_node.nodeId = $div.attr("data-id");
+ temp_node.parentId = _this.getNodeDom($div).parentLi().attr("data-pid");
+ temp_node.context = (typeof _this.formatter.title === 'function') ? _this.getNodeDom($div).cite().attr("data-title") : _this.getNodeDom($div).cite().text();
+ temp_node.leaf = _this.getNodeDom($div).cite().attr("data-leaf") == "leaf" ? true : false;
+ temp_node.level = _this.getNodeDom($div).parentLi().attr("data-index");
+ temp_node.spread = _this.getNodeDom($div).fnode().attr("data-spread") == "open" ? true : false;
+
+ var basicData = $div.attr("data-basic");
+ if(basicData) {
+ basicData = JSON.parse(event.unescape(basicData));
+ }
+ temp_node.basicData = basicData;
+ var recordData = $div.attr("data-record");
+ if(recordData) {
+ recordData = JSON.parse(event.unescape(recordData));
+ }
+ temp_node.recordData = recordData;
+
+ if (_this.getNodeDom($div).checkbox()) {
+ var dataTypes = "", checkeds = "", initcheckeds = "";
+ _this.getNodeDom($div).checkbox().each(function(){
+ dataTypes += $(this).attr("data-type") + ",";
+ checkeds += $(this).attr("data-checked") + ",";
+ initcheckeds += $(this).attr("data-initchecked") + ",";
+ });
+ dataTypes = dataTypes.substring(0, dataTypes.length-1);
+ checkeds = checkeds.substring(0, checkeds.length-1);
+ initcheckeds = initcheckeds.substring(0, initcheckeds.length-1);
+
+ temp_node.dataType = dataTypes;
+ temp_node.checked = checkeds;
+ temp_node.initchecked = initcheckeds;
+ }
+ return temp_node;
+ };
+
+ /**
+ * @Desc: 重置内置参数
+ */
+ DTree.prototype.initNodeParam = function(){
+ var _this = this;
+ _this.node.nodeId = "";
+ _this.node.parentId = "";
+ _this.node.context = "";
+ _this.node.leaf = "";
+ _this.node.level = "";
+ _this.node.spread = "";
+ _this.node.dataType = "";
+ _this.node.checked = "";
+ _this.node.initchecked = "";
+ _this.node.basicData = "";
+ _this.node.recordData = "";
+
+ if(_this.select) {
+ _this.selectResetVal();
+ }
+ };
+
+ /**
+ * @Desc: 获取传递出去的参数,根据defaultRequest、request和node拼出发出请求的参数
+ * @Param: nodes:需要传递出去的参数
+ */
+ DTree.prototype.getRequestParam = function(nodes){
+ var _this = this;
+ var request = _this.request,
+ defaultRequestNames = _this.defaultRequest,
+ node = nodes || _this.node,
+ requestParam = {};
+
+ // 先拼用户自定义的,在拼树生成的,这样的话用户可以自定义当树未生成时的节点的初始值
+ for ( var key in request) {
+ requestParam[key] = request[key];
+ }
+ for ( var key in defaultRequestNames) {
+ var paramName = defaultRequestNames[key];
+ var paramValue = node[key];
+ if(typeof paramValue === "boolean"){
+ requestParam[paramName] = paramValue;
+ }else {
+ if(paramValue){
+ requestParam[paramName] = paramValue;
+ }
+ }
+
+ }
+ return requestParam;
+ };
+
+ /**
+ * @Desc: 获取filterParam过滤后的requestParam
+ * @Param: requestParam:请求参数
+ */
+ DTree.prototype.getFilterRequestParam = function(requestParam){
+ var _this = this;
+ var filterRequest = _this.filterRequest;
+ return event.cloneObj(requestParam, filterRequest);
+ };
+
+ /**
+ * @Desc: 获取当前选中的请求参数
+ */
+ DTree.prototype.getNowParam = function(){
+ var _this = this;
+
+ return _this.getRequestParam(_this.getNodeParam());
+ };
+
+ /**
+ * @Desc: 根据id获取指定div节点选中参数
+ * @Param: id:节点的ID值
+ */
+ DTree.prototype.getParam = function(id){
+ var _this = this;
+
+ // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null
+ var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']");
+ if($div != null){ return _this.callbackData().node(_this.getTempNodeParam($div)); } else { return {}; }
+ };
+
+ /**
+ * @Desc: 根据id获取节点上级节点参数
+ * @Param: id:节点的ID值
+ */
+ DTree.prototype.getParentParam = function(id){
+ var _this = this;
+ // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null
+ var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']");
+ if($div != null){ return _this.callbackData().parentNode($div); } else { return {}; }
+ };
+
+ /**
+ * @Desc: 根据id获取节点的全部上级节点参数值
+ * @Param: id:节点的ID值
+ */
+ DTree.prototype.getAllParentParam = function(id){
+ var _this = this;
+ // 获取当前div,如果id就是一个dom,则就是这个,如果不是则进行选择。如果选不中则为null
+ var $div = (typeof id === 'object') ? id : (_this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']").length == 0) ? null : _this.obj.find("div[dtree-click='"+eventName.itemNodeClick+"'][data-id='"+id+"']");
+ var arr = [];
+ if($div != null){
+ var level = _this.getTempNodeParam($div).level;
+ for(var i=1; i 0){
+ $childDivs.each(function(){
+ var $cDiv = $(this);
+ childNode.push(_this.getRequestParam(_this.getTempNodeParam($cDiv)));
+ });
+ }
+ return childNode;
+ },
+ parentNode: function($div){ // 获取上级节点值
+ var pId = _this.getNodeDom($div).parentLi().attr("data-pid");
+ var $pdiv = _this.obj.find("div[data-id='"+pId+"']");
+ if($pdiv.length > 0) {return _this.getRequestParam(_this.getTempNodeParam($pdiv));} else {return {};}
+
+ }
+ }
+ };
+
+ /******************** 事件回调区域 ********************/
+ /**
+ * @Desc: 绑定浏览器事件
+ */
+ DTree.prototype.bindBrowserEvent = function(){
+ var _this = this;
+ var rootId = _this.obj[0].id;
+
+ // 绑定文件夹展开/收缩的图标的点击事件,点击时给当前节点的div添加选中class
+ _this.obj.on("click", "i[data-spread]", function(event) {
+ event.stopPropagation();
+ var $i = $(this),
+ $div = $i.parent("div"),
+ node = _this.getNodeParam($div);
+
+ _this.toolbarHide();
+ _this.navThis($div);
+ _this.clickSpread($div); // 展开或隐藏节点
+
+ // 树状态改变后,用户自定义想做的事情
+ layui.event.call(this, MOD_NAME, "changeTree("+$(_this.obj)[0].id+")", {
+ dom: _this.callbackData().dom($i),
+ param: _this.callbackData().node(node),
+ show: _this.callbackData().dom($i).attr("data-spread") == "open" ? true : false
+ });
+ });
+
+ // 绑定所有子节点div的单击事件,点击时触发加载iframe或用户自定义想做的事情
+ _this.obj.on("click", "div[dtree-click='"+eventName.itemNodeClick+"'][dtree-disabled='false']", function(event) {
+ event.stopPropagation();
+ var $div = $(this),
+ $cite = $div.find("cite"),
+ node = _this.getNodeParam($div);
+ _this.toolbarHide();
+ _this.navThis($div);
+
+ if(_this.select) {
+ _this.selectVal(node.nodeId);
+ $("div[dtree-id='" + rootId + "'][dtree-select='"+_this.selectDiv+"']").click();
+ }
+
+ if (_this.useIframe) {
+ var iframeParam = _this.getFilterRequestParam(_this.getIframeRequestParam(node));
+ var flag = _this.loadIframe($div, iframeParam); // 加载iframe
+ if (flag) {
+ // iframe加载完毕后,用户自定义想做的事情
+ _this.iframeFun.iframeDone(iframeParam);
+
+ layui.event.call(this, MOD_NAME, "iframeDone("+$(_this.obj)[0].id+")", {
+ "iframeParam": iframeParam,
+ dom: _this.callbackData().dom($div)
+ });
+ }
+ } else {
+ // 单击事件执行完毕后,用户自定义想做的事情
+ layui.event.call(this, MOD_NAME, "node("+$(_this.obj)[0].id+")", {
+ param: _this.callbackData().node(node),
+ childParams: _this.callbackData().childNode($div),
+ parentParam: _this.callbackData().parentNode($div),
+ dom: _this.callbackData().dom($div)
+ });
+ }
+ });
+
+ // 绑定所有子节点div的双击事件,暴露on给用户自定义
+ _this.obj.on("dblclick", "div[dtree-click='"+eventName.itemNodeClick+"'][dtree-disabled='false']", function(event) {
+ event.stopPropagation();
+ var $div = $(this),
+ $cite = $div.find("cite"),
+ node = _this.getNodeParam($div);
+ _this.toolbarHide();
+ _this.navThis($div);
+
+ if(_this.select) {
+ _this.selectVal(node.nodeId);
+ $("div[dtree-id='" + rootId + "'][dtree-select='"+_this.selectDiv+"']").click();
+ }
+
+ // 双击事件执行完毕后,用户自定义想做的事情
+ layui.event.call(this, MOD_NAME, "nodedblclick("+$(_this.obj)[0].id+")", {
+ param: _this.callbackData().node(node),
+ childParams: _this.callbackData().childNode($div),
+ parentParam: _this.callbackData().parentNode($div),
+ dom: _this.callbackData().dom($div)
+ });
+ });
+
+ if(_this.checkbar) {
+ // 绑定cheboxbar的节点复选框
+ _this.obj.on("click", "i[dtree-click='"+eventName.checkNodeClick+"'][dtree-disabled='false']", function(event) {
+ _this.toolbarHide();
+ var $i = $(this),
+ $div = $i.closest("div[dtree-click='"+eventName.itemNodeClick+"']"),
+ node = _this.getNodeParam($div);
+ // 复选框选中前的回调
+ var flag = _this.checkbarFun.chooseBefore($i, _this.getRequestParam(node));
+ _this.temp = [$i];
+ if(flag){_this.changeCheck();}
+
+ event.stopPropagation();
+ });
+ }
+
+ if(_this.menubar) {
+ // 绑定menubar的点击事件
+ _this.obj.prevAll('div#dtree_menubar_'+_this.obj[0].id).on("click", "button[d-menu]", function(event) {
+ event.stopPropagation();
+ _this.toolbarHide();
+ _this.menubarListener($(this).attr("d-menu"), "group");
+ });
+
+ // 绑定menubar的点击事件
+ _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).on("click", "a[d-menu]", function(event) {
+ event.stopPropagation();
+ _this.toolbarHide();
+ _this.menubarListener($(this).attr("d-menu"), "toolbar");
+ });
+
+ // 绑定menubar的点击按钮事件
+ _this.obj.closest('body').find("*[dtree-id='"+_this.obj[0].id+"'][dtree-menu]").on("click", function(event) {
+ event.stopPropagation();
+ _this.toolbarHide();
+ _this.menubarListener($(this).attr("dtree-menu"), "freedom");
+ });
+ }
+
+ if(_this.toolbar) {
+ if(_this.toolbarWay == "contextmenu") {
+ //绑定所有子节点div的右键点击事件,用于显示toolbar
+ _this.obj.on("contextmenu", "div[dtree-click='"+eventName.itemNodeClick+"'][d-contextmenu='true'][dtree-disabled='false']", function(e){
+ var $div = $(this),
+ node = _this.getNodeParam($div);
+
+ _this.toolbarHide();
+ // toolbar加载前执行的方法,执行完毕之后创建按钮
+ _this.setToolbarDom().setToolbarPlace(_this.toolbarFun.loadToolbarBefore(event.cloneObj(_this.toolbarMenu), _this.getRequestParam(node), $div));
+
+ var e = e || window.event,
+ mx = e.pageX - $div.offset().left +45 ,
+ my = $div.offset().top - _this.obj.closest(_this.scroll).offset().top +15;
+
+ _this.navThis($div);
+ var $toolBarDiv = _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id);
+ $toolBarDiv.find(".layui-nav-child").addClass('layui-anim-fadein layui-show');
+ $toolBarDiv.css({'left':mx+'px','top':my+'px'});
+
+ e.stopPropagation();
+ return false;
+ });
+
+ // 绑定装载树的上层出现滚动条的容器,让toolbar隐藏
+ _this.obj.closest(_this.scroll).scroll(function() {
+ _this.toolbarHide();
+ });
+
+ // 绑定toolbar的点击事件
+ _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).on("click", "a[dtree-tool]", function(event) {
+ event.stopPropagation();
+ var $div = _this.getNodeDom().nowOrRootDiv(),
+ node = _this.getNodeParam($div);
+ _this.toolbarHide();
+ var tool = $(this).attr("dtree-tool");
+ _this.toolbarListener(tool, $div);
+ });
+ } else if(_this.toolbarWay == "fixed") {
+ // 绑定toolbar的点击事件
+ _this.obj.on("click", "a[dtree-tool]", function(event) {
+ event.stopPropagation();
+ var $a = $(this),
+ $cite = $a.parent("em."+TOOLBAR_TOOL_EM).prev("cite"), //当前选中节点的text
+ $div = $cite.parent("div"),
+ node = _this.getNodeParam($div);
+ var tool = $a.attr("dtree-tool");
+
+ _this.toolbarHide();
+ _this.navThis($div);
+ _this.toolbarListener(tool, $div);
+ });
+ } else if(_this.toolbarWay == "follow") {
+ //绑定所有子节点div的mouseover mouseout事件,用于显示或隐藏toolbar
+ _this.obj.on("mouseover mouseout", "div[dtree-click='"+eventName.itemNodeClick+"'][dtree-disabled='false']", function(event){
+ var $div = $(this),
+ $toolBarEm = $div.children("em."+TOOLBAR_TOOL_EM);
+ if(event.type == "mouseover"){
+ $toolBarEm.removeClass(NAV_HIDE);
+ event.stopPropagation();
+ } else if(event.type == "mouseout"){
+ $toolBarEm.addClass(NAV_HIDE);
+ event.stopPropagation();
+ }
+ });
+
+ // 绑定toolbar的点击事件
+ _this.obj.on("click", "a[dtree-tool]", function(event) {
+ event.stopPropagation();
+ var $a = $(this),
+ $cite = $a.parent("em."+TOOLBAR_TOOL_EM).prev("cite"), //当前选中节点的text
+ $div = $cite.parent("div"),
+ node = _this.getNodeParam($div);
+ var tool = $a.attr("dtree-tool");
+
+ _this.toolbarHide();
+ _this.navThis($div);
+ _this.toolbarListener(tool, $div);
+ });
+ }
+ }
+
+ if(_this.select) {
+ // 绑定select的点击事件
+ $("div[dtree-id='" + rootId + "'][dtree-select='"+_this.selectDiv+"']").on("click", function(event){
+ event.stopPropagation();
+ var dl = $(this).find('dl');
+ //debugger;
+ $(this).toggleClass("layui-form-selected");
+
+ var $card = $("div[dtree-id='" + rootId + "'][dtree-card='"+_this.selectCardDiv+"']");
+
+ $card.toggleClass("dtree-select-show layui-anim layui-anim-upbit");
+ var top = $(this).offset().top + $(this).outerHeight() - $WIN.scrollTop() - 5,
+ cardHeight = $card.height(),
+ winHeight = $WIN.height();
+// console.log("top = $(this).offset().top: " + $(this).offset().top + " + $(this).outerHeight(): " + $(this).outerHeight() + " - $WIN.scrollTop(): " + $WIN.scrollTop() + " - 5 =" + top);
+// console.log("winHeight = " + winHeight);
+ if($card.hasClass('dtree-select-up')) {
+ $card.removeClass('dtree-select-up');
+ }
+
+ //上下定位识别
+ if(top + cardHeight > $WIN.height() && top >= cardHeight){
+ if($card.hasClass('dtree-select-up')) {
+ $card.removeClass('dtree-select-up');
+ } else {
+ $card.addClass('dtree-select-up');
+ }
+ } else {
+ $card.removeClass('dtree-select-up');
+ }
+
+ // 下拉树面板开闭状态改变后,用户自定义想做的事情
+ layui.event.call(this, MOD_NAME, "changeSelect("+$(_this.obj)[0].id+")", {
+ show: $(this).hasClass("layui-form-selected"),
+ param: _this.selectVal()
+ });
+ });
+
+ }
+ };
+
+ // 绑定body的单击,让本页面所有的toolbar隐藏
+ $BODY.on("click", function(event){
+ $("div."+LI_DIV_TOOLBAR).find(".layui-show").removeClass('layui-anim-fadein layui-show');
+ // $("div[dtree-id][dtree-select]").removeClass("layui-form-selected");
+ // $("div[dtree-id][dtree-card]").removeClass("dtree-select-show layui-anim layui-anim-upbit");
+
+ });
+
+ // 解绑浏览器事件
+ DTree.prototype.unbindBrowserEvent = function(){
+ var _this = this;
+
+ // 本身事件解绑
+ _this.obj.unbind();
+ // 菜单栏解绑
+ if(_this.menubar){
+ _this.obj.prevAll('div#dtree_menubar_'+_this.obj[0].id).unbind();
+ if(_this.obj.closest('body').find("*[dtree-id='"+_this.obj[0].id+"'][dtree-menu]").length > 0){
+ _this.obj.closest('body').find("*[dtree-id='"+_this.obj[0].id+"'][dtree-menu]").unbind();
+ }
+ }
+
+ // 工具栏解绑
+ if(_this.toolbar){
+ if(_this.toolbarWay == "contextmenu") {
+ _this.obj.prevAll('div#dtree_toolbar_'+_this.obj[0].id).unbind();
+ if(_this.obj.closest(_this.scroll).length > 0){
+ _this.obj.closest(_this.scroll).unbind();
+ }
+ }
+ }
+
+ // 下拉树解绑
+ if(_this.select) {
+ // 解绑select的点击事件
+ $("div[dtree-id='" + _this.obj[0].id + "'][dtree-select='"+_this.selectDiv+"']").removeClass("layui-form-selected");
+ $("div[dtree-id='" + _this.obj[0].id + "'][dtree-card='"+_this.selectCardDiv+"']").removeClass("dtree-select-show layui-anim layui-anim-upbit");
+ $("div[dtree-id='" + _this.obj[0].id + "'][dtree-select='"+_this.selectDiv+"']").unbind();
+ }
+ };
+
+
+ /** 外部访问 **/
+ var dtree = {
+ set: function(options){ //设置全局属性
+ if(typeof options !== 'undefined') {
+ $.extend(OPTIONS, options);
+ }
+ },
+ render: function(options){ // 初始化树
+ var dTree = null;
+ var id = event.getElemId(options);
+ if(id == "") {
+ layer.msg("页面中未找到绑定id", {icon:5});
+ } else {
+ dTree = DTrees[id];
+ if(typeof dTree === 'object'){
+ dTree.unbindBrowserEvent();
+ }
+ // 创建树
+ dTree = new DTree(options);
+ // 添加到树数组中去
+ DTrees[id] = dTree;
+ dTree.initTreePlus();
+ dTree.openTreePlus();
+ dTree.loadTreeInit();
+ dTree.bindBrowserEvent();
+ }
+
+ return dTree;
+ },
+ renderSelect: function(options){ // 初始化下拉树
+ var dTree = null;
+ var id = event.getElemId(options);
+ if(id == "") {
+ layer.msg("页面中未找到绑定id", {icon:5});
+ } else {
+ dTree = DTrees[id];
+ if(typeof dTree === 'object'){
+ dTree.unbindBrowserEvent();
+ }
+ // 创建下拉树
+ dTree = new DTree(options);
+ dTree.selectSetting();
+ // 添加到树数组中去
+ DTrees[id] = dTree;
+ dTree.initTreePlus();
+ dTree.openTreePlus();
+ dTree.loadTreeInit();
+ dTree.bindBrowserEvent();
+ }
+
+ return dTree;
+ },
+ reload: function(dTree, options){ // 重新加载树
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ dTree.reloadSetting(options);
+ dTree.initTreePlus();
+ dTree.openTreePlus();
+ dTree.initNodeParam();
+ dTree.loadTreeInit();
+ dTree.unbindBrowserEvent();
+ dTree.bindBrowserEvent();
+ },
+ on: function(events, callback) { // 绑定事件
+ if(events.indexOf("'") > 0){
+ events = events.replace(/'/g,"");
+ }
+ if(events.indexOf('"') > 0) {
+ events = events.replace(/"/g,"");
+ }
+ return layui.onevent.call(this, MOD_NAME, events, callback);
+ },
+ click: function(dTree, id) { // 模拟单击事件
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ $("div[dtree-click='"+eventName.itemNodeClick+"'][dtree-id='"+dTree.obj[0].id+"'][data-id='"+id+"']").click();
+ },
+ getNowParam: function(dTree){ // 获取当前选中值
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ return dTree.getNowParam(); // 获取当前选中值
+ },
+ getParam: function(dTree, id){ // 获取指定节点值
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ return dTree.getParam(id); // 获取指定节点值
+ },
+ getParentParam: function(dTree, id){ // 获取参数的上级节点
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ return dTree.getParentParam(id);
+ },
+ getAllParentParam: function(dTree, id){ // 获取参数的全部上级节点
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ return dTree.getAllParentParam(id);
+ },
+ getChildParam: function(dTree, id){ // 获取参数的全部下级节点
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ return dTree.getChildParam(id);
+ },
+ getCheckbarNodesParam: function(dTree){ // 获取复选框选中值
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return {};
+ }
+ return dTree.getCheckbarNodesParam(); // 获取复选框选中值
+ },
+ getCheckbarJsonArrParam: function(dTree){ // 获取复选框选中值
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return {};
+ }
+ return dTree.getCheckbarJsonArrParam(); // 获取复选框选中值
+ },
+ dataInit: function(dTree, chooseId){ // 初始化选中树,针对数据反选
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ if(chooseId){
+ return dTree.dataInit(chooseId);
+ }
+ },
+ chooseDataInit: function(dTree, chooseIds){ // 初始化复选框选中,针对数据反选
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ if(chooseIds){
+ return dTree.chooseDataInit(chooseIds);
+ }
+ },
+ changeCheckbarNodes: function(dTree){ //判断复选框是否发生变更
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ return dTree.changeCheckbarNodes();
+ },
+ initNoAllCheck: function(dTree) { //复选框半选状态初始化设置
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ return dTree.initNoAllCheck();
+ },
+ initAllCheck: function(dTree){ // 复选框选中状态初始化设置
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ return dTree.initAllCheck();
+ },
+ selectVal: function(dTree, param){ // select模式设置输入框选中值
+ if(typeof dTree === "string"){
+ dTree = DTrees[dTree];
+ }
+ if(typeof dTree === "undefined"){
+ layer.msg("方法获取失败,请检查ID或对象传递是否正确",{icon:2});
+ return ;
+ }
+ return dTree.selectVal(param); // select模式设置输入框选中值
+ },
+ escape: function(html){ // 字符串格式化
+ return event.escape(html);
+ },
+ unescape: function(str){ // 字符串反格式化
+ return event.unescape(str);
+ },
+ serialize: function(first, param) { // 序列化JSON对象
+ return AjaxHelper.serialize(first, param);
+ },
+ version: function(){ //获取版本号
+ return VERSION;
+ }
+ };
+
+ exports('dtree', dtree);
+});
diff --git a/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.css b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.css
new file mode 100644
index 0000000..df7af65
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.css
@@ -0,0 +1,229 @@
+@font-face {
+ font-family: 'dtreefont';
+ src: url('dtreefont.eot?x3m8fp');
+ src: url('dtreefont.eot?x3m8fp#iefix') format('embedded-opentype'),
+ url('dtreefont.ttf?x3m8fp') format('truetype'),
+ url('dtreefont.woff?x3m8fp') format('woff'),
+ url('dtreefont.svg?x3m8fp#dtreefont') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+[class^="dtree-icon-"], [class*=" dtree-icon-"] {
+ /* use !important to prevent issues with browser extensions that change font */
+ font-family: 'dtreefont' !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+}
+
+.dtree-icon-xiangxia1:before {
+ content: "\e771";
+}
+.dtree-icon-normal-file:before {
+ content: "\e60c";
+}
+.dtree-icon-xiangyou:before {
+ content: "\e78f";
+}
+.dtree-icon-ok-circle:before {
+ content: "\1005";
+}
+.dtree-icon-close1:before {
+ content: "\1006";
+}
+.dtree-icon-close-fill:before {
+ content: "\1007";
+}
+.dtree-icon-jian1:before {
+ content: "\e600";
+}
+.dtree-icon-jia1:before {
+ content: "\e601";
+}
+.dtree-icon-bianji:before {
+ content: "\e602";
+}
+.dtree-icon-yonghu:before {
+ content: "\e603";
+}
+.dtree-icon-shijian:before {
+ content: "\e606";
+}
+.dtree-icon-fuxuankuang-banxuan:before {
+ content: "\e607";
+}
+.dtree-icon-star:before {
+ content: "\e608";
+}
+.dtree-icon-wenjianjiazhankai:before {
+ content: "\e60e";
+}
+.dtree-icon-xiangmuxiaoxi:before {
+ content: "\e60f";
+}
+.dtree-icon-search2:before {
+ content: "\e615";
+}
+.dtree-icon-weibiaoti5:before {
+ content: "\e618";
+}
+.dtree-icon-layim-theme:before {
+ content: "\e61b";
+}
+.dtree-icon-shuye1:before {
+ content: "\e61e";
+}
+.dtree-icon-add-circle:before {
+ content: "\e61f";
+}
+.dtree-icon-xinxipilu:before {
+ content: "\e620";
+}
+.dtree-icon-set-sm:before {
+ content: "\e621";
+}
+.dtree-icon-about:before {
+ content: "\e623";
+}
+.dtree-icon-chart-screen:before {
+ content: "\e62a";
+}
+.dtree-icon-delete1:before {
+ content: "\e640";
+}
+.dtree-icon-share3:before {
+ content: "\e641";
+}
+.dtree-icon-youjian:before {
+ content: "\e642";
+}
+.dtree-icon-check:before {
+ content: "\e645";
+}
+.dtree-icon-close:before {
+ content: "\e646";
+}
+.dtree-icon-favorfill:before {
+ content: "\e64b";
+}
+.dtree-icon-favor:before {
+ content: "\e64c";
+}
+.dtree-icon-fuxuankuangxuanzhong:before {
+ content: "\e652";
+}
+.dtree-icon-fenguangbaobiao:before {
+ content: "\e655";
+}
+.dtree-icon-jian:before {
+ content: "\e656";
+}
+.dtree-icon-jia:before {
+ content: "\e657";
+}
+.dtree-icon-fenzhijigou:before {
+ content: "\e658";
+}
+.dtree-icon-roundcheckfill:before {
+ content: "\e659";
+}
+.dtree-icon-roundcheck:before {
+ content: "\e65a";
+}
+.dtree-icon-roundclosefill:before {
+ content: "\e65b";
+}
+.dtree-icon-roundclose:before {
+ content: "\e65c";
+}
+.dtree-icon-roundrightfill:before {
+ content: "\e65d";
+}
+.dtree-icon-roundright:before {
+ content: "\e65e";
+}
+.dtree-icon-like:before {
+ content: "\e66c";
+}
+.dtree-icon-samefill:before {
+ content: "\e671";
+}
+.dtree-icon-same:before {
+ content: "\e672";
+}
+.dtree-icon-evaluate:before {
+ content: "\e674";
+}
+.dtree-icon-circle1:before {
+ content: "\e687";
+}
+.dtree-icon-radio:before {
+ content: "\e688";
+}
+.dtree-icon-caidan_xunzhang:before {
+ content: "\e68e";
+}
+.dtree-icon-pulldown:before {
+ content: "\e6a0";
+}
+.dtree-icon-pullup:before {
+ content: "\e6a1";
+}
+.dtree-icon-refresh:before {
+ content: "\e6a4";
+}
+.dtree-icon-qrcode1:before {
+ content: "\e6b0";
+}
+.dtree-icon-profile1:before {
+ content: "\e6b7";
+}
+.dtree-icon-home1:before {
+ content: "\e6b8";
+}
+.dtree-icon-homefill:before {
+ content: "\e6bb";
+}
+.dtree-icon-roundaddfill:before {
+ content: "\e6d8";
+}
+.dtree-icon-roundadd:before {
+ content: "\e6d9";
+}
+.dtree-icon-fuxuankuang:before {
+ content: "\e6f2";
+}
+.dtree-icon-wefill:before {
+ content: "\e6f5";
+}
+.dtree-icon-sort:before {
+ content: "\e701";
+}
+.dtree-icon-repair:before {
+ content: "\e738";
+}
+.dtree-icon-shujudaping:before {
+ content: "\e742";
+}
+.dtree-icon-dian:before {
+ content: "\e7a5";
+}
+.dtree-icon-search_list_light:before {
+ content: "\e807";
+}
+.dtree-icon-round_list_light:before {
+ content: "\e82b";
+}
+.dtree-icon-star-fill:before {
+ content: "\e832";
+}
+.dtree-icon-rate:before {
+ content: "\e833";
+}
+.dtree-icon-move-up:before {
+ content: "\ea47";
+}
+.dtree-icon-move-down:before {
+ content: "\ea48";
+}
diff --git a/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.eot b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.eot
new file mode 100644
index 0000000..68bf5f2
Binary files /dev/null and b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.eot differ
diff --git a/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.svg b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.svg
new file mode 100644
index 0000000..90fe50f
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.svg
@@ -0,0 +1,80 @@
+
+
+
+Generated by IcoMoon
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.ttf b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.ttf
new file mode 100644
index 0000000..78bacd1
Binary files /dev/null and b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.ttf differ
diff --git a/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.woff b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.woff
new file mode 100644
index 0000000..2b54645
Binary files /dev/null and b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.woff differ
diff --git a/ss-admin/src/main/resources/static/js/lay-module/dtree/font/icons.json b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/icons.json
new file mode 100644
index 0000000..fca4788
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/dtree/font/icons.json
@@ -0,0 +1,283 @@
+{
+ "data": [{
+ "cls": "dtree-icon-xiangxia1",
+ "uncode": "e771"
+ },
+ {
+ "cls": "dtree-icon-xiangyou",
+ "uncode": "e78f"
+ },
+ {
+ "cls": "dtree-icon-jian",
+ "uncode": "e656"
+ },
+ {
+ "cls": "dtree-icon-jia",
+ "uncode": "e657"
+ },
+ {
+ "cls": "dtree-icon-weibiaoti5",
+ "uncode": "e618"
+ },
+ {
+ "cls": "dtree-icon-wenjianjiazhankai",
+ "uncode": "e60e"
+ },
+ {
+ "cls": "dtree-icon-dian",
+ "uncode": "e7a5"
+ },
+ {
+ "cls": "dtree-icon-yonghu",
+ "uncode": "e603"
+ },
+ {
+ "cls": "dtree-icon-fenzhijigou",
+ "uncode": "e658"
+ },
+ {
+ "cls": "dtree-icon-fenguangbaobiao",
+ "uncode": "e655"
+ },
+ {
+ "cls": "dtree-icon-xinxipilu",
+ "uncode": "e620"
+ },
+ {
+ "cls": "dtree-icon-shuye1",
+ "uncode": "e61e"
+ },
+ {
+ "cls": "dtree-icon-caidan_xunzhang",
+ "uncode": "e68e"
+ },
+ {
+ "cls": "dtree-icon-normal-file",
+ "uncode": "e60c"
+ },
+ {
+ "cls": "dtree-icon-roundclose",
+ "uncode": "e65c"
+ },
+ {
+ "cls": "dtree-icon-bianji",
+ "uncode": "e602"
+ },
+ {
+ "cls": "dtree-icon-roundadd",
+ "uncode": "e6d9"
+ },
+ {
+ "cls": "dtree-icon-fuxuankuangxuanzhong",
+ "uncode": "e652"
+ },
+ {
+ "cls": "dtree-icon-fuxuankuang",
+ "uncode": "e6f2"
+ },
+ {
+ "cls": "dtree-icon-fuxuankuang-banxuan",
+ "uncode": "e607"
+ },
+ {
+ "cls": "dtree-icon-search_list_light",
+ "uncode": "e807"
+ },
+ {
+ "cls": "dtree-icon-move-up",
+ "uncode": "ea47"
+ },
+ {
+ "cls": "dtree-icon-move-down",
+ "uncode": "ea48"
+ },
+ {
+ "cls": "dtree-icon-delete1",
+ "uncode": "e640"
+ },
+ {
+ "cls": "dtree-icon-refresh",
+ "uncode": "e6a4"
+ },
+ {
+ "cls": "dtree-icon-roundcheckfill",
+ "uncode": "e659"
+ },
+ {
+ "cls": "dtree-icon-roundclosefill",
+ "uncode": "e65b"
+ },
+ {
+ "cls": "dtree-icon-roundcheck",
+ "uncode": "e65a"
+ },
+ {
+ "cls": "dtree-icon-pulldown",
+ "uncode": "e6a0"
+ },
+ {
+ "cls": "dtree-icon-pullup",
+ "uncode": "e6a1"
+ },
+ {
+ "cls": "dtree-icon-set-sm",
+ "uncode": "e621"
+ },
+ {
+ "cls": "dtree-icon-rate",
+ "uncode": "e833"
+ },
+ {
+ "cls": "dtree-icon-jian1",
+ "uncode": "e600"
+ },
+ {
+ "cls": "dtree-icon-jia1",
+ "uncode": "e601"
+ },
+ {
+ "cls": "dtree-icon-shijian",
+ "uncode": "e606"
+ },
+ {
+ "cls": "dtree-icon-check",
+ "uncode": "e645"
+ },
+ {
+ "cls": "dtree-icon-close",
+ "uncode": "e646"
+ },
+ {
+ "cls": "dtree-icon-favorfill",
+ "uncode": "e64b"
+ },
+ {
+ "cls": "dtree-icon-favor",
+ "uncode": "e64c"
+ },
+ {
+ "cls": "dtree-icon-roundrightfill",
+ "uncode": "e65d"
+ },
+ {
+ "cls": "dtree-icon-roundright",
+ "uncode": "e65e"
+ },
+ {
+ "cls": "dtree-icon-samefill",
+ "uncode": "e671"
+ },
+ {
+ "cls": "dtree-icon-same",
+ "uncode": "e672"
+ },
+ {
+ "cls": "dtree-icon-qrcode1",
+ "uncode": "e6b0"
+ },
+ {
+ "cls": "dtree-icon-profile1",
+ "uncode": "e6b7"
+ },
+ {
+ "cls": "dtree-icon-home1",
+ "uncode": "e6b8"
+ },
+ {
+ "cls": "dtree-icon-homefill",
+ "uncode": "e6bb"
+ },
+ {
+ "cls": "dtree-icon-roundaddfill",
+ "uncode": "e6d8"
+ },
+ {
+ "cls": "dtree-icon-wefill",
+ "uncode": "e6f5"
+ },
+ {
+ "cls": "dtree-icon-sort",
+ "uncode": "e701"
+ },
+ {
+ "cls": "dtree-icon-round_list_light",
+ "uncode": "e82b"
+ },
+ {
+ "cls": "dtree-icon-search2",
+ "uncode": "e615"
+ },
+ {
+ "cls": "dtree-icon-close1",
+ "uncode": "1006"
+ },
+ {
+ "cls": "dtree-icon-close-fill",
+ "uncode": "1007"
+ },
+ {
+ "cls": "dtree-icon-chart-screen",
+ "uncode": "e62a"
+ },
+ {
+ "cls": "dtree-icon-star",
+ "uncode": "e608"
+ },
+ {
+ "cls": "dtree-icon-ok-circle",
+ "uncode": "1005"
+ },
+ {
+ "cls": "dtree-icon-add-circle",
+ "uncode": "e61f"
+ },
+ {
+ "cls": "dtree-icon-about",
+ "uncode": "e623"
+ },
+ {
+ "cls": "dtree-icon-circle1",
+ "uncode": "e687"
+ },
+ {
+ "cls": "dtree-icon-radio",
+ "uncode": "e688"
+ },
+ {
+ "cls": "dtree-icon-star-fill",
+ "uncode": "e832"
+ },
+ {
+ "cls": "dtree-icon-shujudaping",
+ "uncode": "e742"
+ },
+ {
+ "cls": "dtree-icon-share3",
+ "uncode": "e641"
+ },
+ {
+ "cls": "dtree-icon-youjian",
+ "uncode": "e642"
+ },
+ {
+ "cls": "dtree-icon-repair",
+ "uncode": "e738"
+ },
+ {
+ "cls": "dtree-icon-evaluate",
+ "uncode": "e674"
+ },
+ {
+ "cls": "dtree-icon-like",
+ "uncode": "e66c"
+ },
+ {
+ "cls": "dtree-icon-layim-theme",
+ "uncode": "e61b"
+ },
+ {
+ "cls": "dtree-icon-xiangmuxiaoxi",
+ "uncode": "e60f"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/js/lay-module/dtree/开发者日志.txt b/ss-admin/src/main/resources/static/js/lay-module/dtree/开发者日志.txt
new file mode 100644
index 0000000..e383482
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/dtree/开发者日志.txt
@@ -0,0 +1,332 @@
+大改》 修复 》 优化 》 新增 》 更新 》 移除
+基础属性 》 checkbar属性 》 menubar属性 》 toolbar属性 》 iframe属性 》 基础方法 》 内置方法
+
+------------------------v2.5.8(2020/?/?)【优化】:------------------------
+【修复】toolbar模块修复:默认编辑页面中,提交失败的问题。
+【修复】menubar模块修复:点击收缩节点按钮导致树数据节点错乱,重复加载节点的问题。
+【修复】基础数据模块修复:当复选框字段存在且传递数据为null的时候,解析失败的问题。
+【优化】异步模块优化:success回调函数现在可以存在返回值,返回的值为你重新设置的树的数据。
+【优化】toolbar模块优化:当toolbarShow设置为[]时,点击右键会出现一个白色的小框的问题。
+【优化】toolbar模块优化:点击pullup按钮导致树数据节点错乱,重复加载节点的问题。
+
+
+
+------------------------v2.5.7(2020/01/19)【优化】:------------------------
+【修复】select模块修复:当设置默认值时,存在点击select面板后,默认值消失的问题。
+【修复】select模块修复:带复选框的下拉树设置默认值无效的问题。
+【修复】内置属性修复:修复response设置了checked和type映射却无效的问题
+【新增】内置函数新增:fuzzySearch,模糊查询,搜索节点,保留父节点。
+【优化】内置函数优化:setDisabledNodes,现支持传入单个数据、带分隔符的字符串、数组、二维数组。
+【新增】内置函数新增:setDisabledNode,设置单个节点的禁用
+【优化】内置函数优化:cancelDisabledNodes,现支持传入单个数据、带分隔符的字符串、数组、二维数组。
+【新增】内置函数新增:cancelDisabledNode,设置单个节点的取消禁用
+【优化】内置函数优化:getDisabledNodesParam,现支持传入单个数据、带分隔符的字符串、数组、二维数组。
+【优化】内置函数优化:setHideNodes,现支持传入单个数据、带分隔符的字符串、数组、二维数组。
+【新增】内置函数新增:setHideNode,设置单个节点的隐藏
+【优化】内置函数优化:cancelHideNodes,现支持传入单个数据、带分隔符的字符串、数组、二维数组。
+【新增】内置函数新增:cancelHideNode,设置单个节点的取消隐藏
+【优化】内置函数优化:getHideNodesParam,现支持传入单个数据、带分隔符的字符串、数组、二维数组。
+【优化】内置函数优化:chooseDataInit,现支持传入单个数据、带分隔符的字符串、数组、二维数组(多级复选框)。
+【新增】基础方法新增:getCheckbarJsonArrParam,获取基于返回参数的树的复选框参数,选中数据横向存储
+【新增】基础方法新增:beforeSend,异步加载发送ajax请求之前的回调
+【新增】基础方法新增:serialize,序列化json对象
+【优化】基础方法优化:success方法,新增一个入参,表示是否第一次渲染数据,并支持在增量加载时,加载子节点时也可以回调该方法。
+【优化】基础方法优化:done方法,新增一个入参,表示是否第一次渲染数据,并支持在增量加载时,在加载子节点时也可以回调该方法。
+【优化】内置方法优化:dataInit方法,仅支持一个节点改变背景色的优化。
+【优化】内置方法优化:init方法,入参新增一个异步加载完成后的回调函数,内部使用。
+【优化】内置方法优化:getChild方法,入参新增一个异步加载完成后的回调函数,内部使用。
+【优化】异步加载优化:使用data加载,也会出现load效果。
+【优化】toolbat模块优化:当设置dataFormat时,默认的增删改数据中会出现dataFormat配置的元素,优化之后仅获取文字。
+【优化】select模块优化:自适应当前组件的位置,向上或向下展开树。
+【新增】基础属性新增:asyncLoad,异步加载初始加载层级树组
+【新增】基础属性新增:selectCardHeight,树面板的高度
+【新增】内置方法新增:loadTreeInit,初始化加载树
+【新增】内置方法新增:loadChildTreeInit,初始化加载子节点
+【新增】内置方法新增:dataLoadTree,用data加载树
+【新增】内置方法新增:asyncLoadTree,异步加载树
+
+
+------------------------v2.5.6(2019/10/24)【新增】:------------------------
+【修复】标签属性修复:ul标签上data-value属性设置无效的问题
+【优化】数据格式:获取格式中的basicData和recordData将提前转化为JSON格式,不在需要手动转换。
+【优化】基础方法优化:render,支持加载下拉树
+【优化】基础方法优化:reload,支持重载下拉树
+【新增】基础属性新增:bak,内置属性,备份Html。
+【新增】事件监听:changeSelect,下拉树面板开闭状态改变后,触发事件。
+【新增】内置方法新增:rollbackHtml,基于备份的Html数据回滚
+【新增】内置方法新增:setDisabledAllNodes,设置全部节点为disabled
+【新增】内置方法新增:reloadSelectSetting,重新设置下拉树的基本参数
+【新增】内置方法新增:reloadSelectDom,重新渲染下拉树的Dom结构
+【新增】内置方法新增:selectCheckboxVal,设置复选框模式中的下拉树的值
+【新增】内置方法新增:getCheckbarJsonArrParam,获取基于返回参数的树的复选框参数数组
+【新增】内置方法新增:checkAllNode,复选框全选
+【新增】内置方法新增:cancelCheckedNode,取消全部复选框选中
+【新增】内置方法新增:invertCheckedNode,反选复选框
+【新增】内置方法新增:removeCheckedNode,删除选中节点
+
+------------------------v2.5.5(2019/10/12)【新增】:------------------------
+【修复】内置方法修复:partialRefreshEdit,支持修改parentId后及时返显到下挂节点
+【优化】单页模式中树的缓存问题
+【优化】基础属性优化,开启line时,toolbar的fixed显示不正常
+【优化】基础属性优化,开启line时,div选中 悬停背景对齐
+【优化】基础方法优化:success方法的放置位置,可以将不同的数据格式在success方法内做转换,或添加根节点。
+【优化】iframe模块优化:将原来用iframe包住的属性提出,撤销iframe这一层。
+【优化】内置属性优化:scroll属性更名为scroll。
+【优化】内置方法优化:当异步加载出现异常时,以文字形式而非弹框形式提示。
+【新增】标签属性新增:ul标签上新增data-value属性,用于指定下拉树的初始展示值
+【新增】基础属性新增:width,设置树的宽度
+【新增】基础属性新增:select,设置树模式为下拉树
+【新增】基础属性新增:selectTips,设置下拉树时的输入框提示文字
+【新增】基础属性新增:selectInputName,设置下拉树内部表单标签的name
+【新增】基础属性新增:selectInitVal,设置下拉树的初始展示值
+【新增】基础属性新增:withCredentials,用于开启生成跨域的XHR对象,设置后可指定同源session,默认false。
+【新增】基础方法新增:set,可以增加同一次引用中,dtree的公共属性指定,所有基础属性都可以指定。
+【新增】基础方法新增:renderSelect,初始化下拉树
+【新增】基础方法新增:selectVal,设置下拉树的初始展示值
+【新增】内置方法新增:selectVal,设置下拉树的初始展示值
+【新增】内置方法新增:selectSetting,设置下拉树的初始元素
+【新增】内置方法新增:renderSelectDom,渲染下拉树的Dom结构
+【新增】内置方法新增:clickNodeCheckbar,点击节点选中复选框
+【更新】内置方法更新:getNoneDom方法,添加errText子方法,显示错误信息。
+
+------------------------v2.5.4(2019/6/14)【修复】:------------------------
+【修复】内置方法中,使用data方法获取值不到的问题。
+【优化】基础属性优化:ficon,可以设置Array型数据,与icon的配置方式相同
+【优化】基础属性优化:skin,其中设置layui看起来更像layui的风格,新增laySimple风格,遵从简约版layui树形菜单。
+【优化】内置方法优化:涉及样式的一系列内置方法优化
+【新增】基础属性新增:height,调整高度,与table用法一致
+【新增】基础属性新增:response中新增ficonClass,可以指定一级图标样式。
+【新增】内置方法新增:cancelNavThis,取消选中div。
+【更新】内置方法更新:parseData:增加对ficonClass属性的解析
+【更新】内置方法更新:changeCheck,可以通过传递参数的方式传递复选框dom。
+【移除】基础属性移除:dot,移除一级图标小圆点的单独设置,改为在ficon中配置,与icon的配置方式相同
+【移除】基础属性移除:firstIconArray,与nodeIconArray合并。
+
+------------------------v2.5.0(2019/6/01)【适配】:------------------------
+【适配】对layui2.5适配
+【修复】基础属性修复,error方法,现在可以正确的获取参数列表中的参数,如无定义则默认打印textStatus。
+【修复】基础属性修复,complete方法,现在可以正确的获取参数列表中的参数
+【优化】一系列内置方法优化
+【新增】基础属性新增:line,用于指定树线
+【新增】内置方法新增:showLine:用于显示树线
+【新增】内置方法新增:showLineLi:作用在单个LI显示树线
+
+------------------------v2.5.0(2019/5/20)【大版本】:------------------------
+【大改】数据格式:reponse中isLast属性更换为last属性。
+【大改】数据格式:reponse中isChecked属性更换为checked属性。
+【大改】数据格式:defaultRequest中isLeaf属性更换为leaf属性。
+【大改】数据格式:defaultRequest中isChecked属性更换为checked属性。
+【大改】内置属性:record开启后,原来记录节点的全部数据(排除children和basicData)改为只记录用户自定义的数据(同样排除children和basicData)
+【修复】toolbar模块修复:自定义的toolbar的回调函数的第二个$div参数修复,现在可以取到值
+【修复】toolbar模块修复:内置函数:changeTreeNodeEdit中的title未定义的问题。
+【修复】menubar模块修复:将dtree放在form中,menubar的默认按钮单击之后会提交表单的问题。
+【修复】iframe模块修复:配置了iframeDefaultRequest时,只会显示iframeDefaultRequest中的参数的问题。
+【优化】toolbar模块优化:内置的三个按钮中的label均加上title提示
+【优化】基础方法优化:render方法和reload方法中,如果树在当前页面中被加载过一次了,再次加载会从缓存中取出树,并将树上次点击的节点作为参数记录下载,现在优化为还是从缓存中取,但是会重置上次记录的参数。
+【优化】内置函数优化:getLiItemDom 当parentId为0时组件自动判定为false从而使用内置parentId的问题。
+【新增】基础属性新增:iconfont属性,用于定义使用图标数组或string
+【新增】基础属性新增:iconfontStyle属性,用于自定义树的每个关键部位使用的图标
+【新增】基础属性新增:accordion属性,用于开启手风琴模式
+【新增】基础属性新增:contentType属性,用于可以显示配置发送信息至服务器时内容编码类型
+【新增】基础属性新增:response属性中新增disabled,标识节点禁用。
+【新增】基础属性新增:response属性中新增isHide,标识节点隐藏。
+【新增】基础属性新增:formatter属性,用于对树展示节点的文字信息格式化处理。
+【新增】基础属性新增:errDataShow属性,标识是否在递归数据出现错误后,显示错误信息。
+【新增】基础属性新增:none,用于定于树初始化未加载节点时的提示文字。
+【新增】基础属性新增:error:用于异步加载中出现异常时的用户自定义函数。
+【新增】基础属性新增:errDataShow属性,标识是否在递归数据出现错误后,显示错误信息。
+【新增】基础属性新增:drawable属性,用于开启拖拽。
+【新增】基础方法新增:getParam: 获取指定节点选中值
+【新增】基础方法新增:getAllParentParam: 获取指定节点的全部上级节点
+【新增】基础方法新增:initNoAllCheck: 复选框半选状态初始化设置
+【新增】基础方法新增:initAllCheck: 复选框选中状态初始化设置
+【新增】基础方法新增:click:模拟单击事件
+【新增】checkbar模块新增:checkbarData新增属性:"halfChoose",用于记录选中和半选中的数据
+【新增】menubar模块新增:menubar内置新增三个默认方法:checkAll:全选,unCheckAll:全不选,invertAll:反选
+【新增】toolbar模块新增:toolbar内置新增两个默认方法:pulldown:展开当前节点下的全部节点,pullup:收缩当前节点下的全部节点
+【新增】toolbar模块新增:toolbar新增属性:toolbarWay,工具栏显示方式,contextmenu:右键,follow:跟随节点,fixed:固定在节点右侧
+【新增】toolbar模块新增:toolbarBtn中新增一系列的属性(id、placeholder、verify、defElem、readonly、disabled、filter)
+【新增】toolbar模块新增:toolbarBtn中,optionsData支持使用function回调
+【新增】内置属性新增:errNode属性,记录在渲染节点时有问题的数据。
+【新增】内置属性新增:usefontStyle属性,用于最终指定树的每个关键部位使用的图标
+【新增】内置方法新增:replaceDom:替换节点的dom值,或指定值。
+【新增】内置方法新增:partialRefreshAdd:局部刷新树--当前节点新增子节点时
+【新增】内置方法新增:partialRefreshEdit:局部刷新树--当前节点选中时
+【新增】内置方法新增:partialRefreshDel:局部刷新树--当前节点选中被删除时
+【新增】内置方法新增:ensureTheme:确认最终主题。
+【新增】内置方法新增:useDefaultOrUserDefineFnodeStyle:赋值一级图标
+【新增】内置方法新增:useDefaultOrUserDefineSnodeStyle:赋值二级图标
+【新增】内置方法新增:useDefaultOrUserDefineCheckboxStyle:赋值复选框图标
+【新增】内置方法新增:useDefaultOrUserDefineMenubarStyle:赋值菜单栏图标
+【新增】内置方法新增:useDefaultOrUserDefineMenubarExtStyle:赋值扩展菜单栏图标
+【新增】内置方法新增:useDefaultOrUserDefineToolbarStyle:赋值扩展菜单栏图标
+【新增】内置方法新增:useDefaultOrUserDefineToolbarExtStyle:赋值扩展工具栏图标
+【新增】内置方法新增:operateIcon: 设置图标的展开关闭,以及展开时/关闭时是最后一级图标的处理
+【新增】内置方法新增:msgErrNode: 判断在数据加载时是否存在错误数据,并是否打印错误数据
+【新增】内置方法新增:getParam: 获取指定节点选中值
+【新增】内置方法新增:getAllParentParam: 获取指定节点的全部上级节点
+【新增】内置方法新增:getNodeDom: 根据具体的id获取基于当前id的div以及对应的其他dom元素
+【新增】内置方法新增:getNode: 获取指定节点Div
+【新增】内置方法新增:accordionUL: 开启手风琴模式时对其他节点的处理
+【新增】内置方法新增:setDisabledNodes: 设置节点为disabled
+【新增】内置方法新增:cancelDisabledNodes:将节点的disabled取消
+【新增】内置方法新增:getDisabledNodesParam: 获取指定disabled节点的值
+【新增】内置方法新增:getAllDisabledNodesParam: 获取全部disabled节点的值
+【新增】内置方法新增:setHideNodes: 设置节点为hide
+【新增】内置方法新增:cancelHideNodes: 将节点的hide取消
+【新增】内置方法新增:getHideNodesParam: 获取指定hide节点的值
+【新增】内置方法新增:getAllHideNodesParam: 获取全部hide节点的值
+【新增】内置方法新增:toolbarHide:隐藏toolbar
+【新增】内置方法新增:toolbarMethod:toolbar内置方法
+【新增】内置方法新增:toolbarListener:toolbar内置监听
+【新增】内置方法新增:getNowNodeOrNull:获取当前选中div,没有选中则为null
+【新增】内置方法新增:navThis:选中div
+【新增】内置方法新增:getNoneDom:当无节点数据时显示dom信息
+【新增】内置方法新增:dynamicToolbarDom:在节点后动态绑定fixed和follow条件的工具栏
+【更新】内置方法更新:setToolbarDom,设置工具栏按钮,现在区别开来哪种toolbar的创建方式
+【更新】内置方法更新:changeTreeNodeAdd新增一个回传参数:refresh,用于新增完成后,局部刷新
+【更新】内置方法更新:parseData新增一个回传参数:fmtTitle,用于获取formatter标记过的内容,原来的title函数只获取原始title信息
+
+
+
+------------------------v2.4.5_finally(2018/12/22)【修复】:------------------------
+1.【修复】单页应用中,未开启toolbar导致body上的所有事件失效。
+2.【优化】更新dist文件夹中的dtree压缩
+3.【优化】toolbar模块优化:新增节点时,当开启了record参数时不会将参数新增到节点上的问题。
+
+
+------------------------v2.4.5_finally(2018/12/21)【优化】:------------------------
+1.【优化】menubar模块优化:点击收缩时,当前页的所有树都收缩的问题。
+2.【优化】menubar模块优化:点击删除复选框时,展开和收缩节点会报错,现在改为删除的节点如果有子集的话,子集会一并删除,但是回调函数中只会提供你勾中的数据。
+3.【优化】基础方法优化:dataInit方法回显数据时,当前选中的数据无法被获取到的问题。
+4.【优化】基础方法优化:parseData方法的basicData()方法,basicData如果未指定,前端的该项属性无数据,而不是""
+5.【优化】异步属性优化:使用data加载时,可以允许指定的data为[]。
+6.【优化】异步属性优化:使用data加载时,现在也有success和done的回调
+7.【新增】checkbar模块新增:checkbarType新增属性:"only",用于模拟单选,只能同时选择一个复选框。
+8.【新增】异步回调方法新增:新增success回调,用于数据加载完毕后的回调,在done之前执行
+9.【新增】异步属性新增:filterRequest属性,用于过滤树自动发起的请求中你不需要的参数。
+10.【新增】基础属性新增:record属性,开启数据记录模式,用于记录用户提供的JSON数据串中,指定当前节点的JSON数据(排除basicData字段和children字段)
+11.【新增】基础属性新增:load属性,是否开启加载遮罩。
+12.【新增】内置函数新增:getFilterRequestParam,获取filterParam过滤后的requestParam
+
+------------------------v2.4.5_finally_beta(2018/12/07)【大改】:------------------------
+0.【新增】提供的内容中新增dist/dtree.js压缩js文件。
+1.【大改】css:css样式均加上dtree前缀。
+2.【大改】图标:iconfont更改为dtreefont。
+3.【大改】事件监听:图标点击事件返回的参数改为一个JSON对象,具体查看基础文档的事件监听。
+4.【大改】事件监听:节点点击事件返回的参数改为一个JSON对象,具体查看基础文档的事件监听。
+5.【大改】事件监听:节点双击事件返回的参数改为一个JSON对象,具体查看基础文档的事件监听。
+6.【大改】事件监听:复选框点击事件返回的参数改为一个JSON对象,具体查看基础文档的事件监听。
+7.【大改】事件监听:iframe加载完毕事件返回的参数改为一个JSON对象,具体查看基础文档的事件监听。
+8.【新增】基础方法新增:getChildParam,获取全部下级节点
+9.【新增】menubar模块新增:menubarTips属性,用于指定menubar的依附方式。
+10.【新增】toolbar模块新增:toolbarFun新增loadToolbarBefore函数,用于呈现右键菜单之前调用的函数。
+11.【新增】内置函数新增:initTreePlus 用于初始化菜单栏和工具栏的div。
+12.【新增】内置函数新增:openTreePlus 用于开启工具栏和菜单栏。
+13.【新增】内置函数新增:getMenubarDom 用于获取菜单栏。
+14.【新增】内置函数新增:getExtMenubarDom 用于获取扩展菜单栏。
+15.【新增】内置函数新增:getMenubarToolDom 用于获取依附在工具栏的菜单栏。
+16.【新增】内置函数新增:getExtMenubarToolDom 用于获取依附在工具栏的扩展菜单栏。
+17.【新增】内置函数新增:menubarMethod 用于menubar内置调用方法。
+17.【新增】内置函数新增:menubarListener 用于menubar内置监听。
+18.【新增】内置函数新增:setToolbarDom 用于设置工具栏按钮。
+19.【新增】内置函数新增:unbindBrowserEvent 用于解绑浏览器事件。
+19.【新增】内置属性新增:response属性中新增spread。
+20.【优化】优化了图标显示。
+21.【优化】toolbar模块:单页应用中,右键菜单的显示位置问题。
+22.【优化】menubar模块:在开启了toolbar模块时按钮点击失效的问题。
+23.【优化】iframe模块:iframeuUrl指定了"?"时,实际发送的url会出现两个"?"的问题。
+23.【优化】数据格式:默认数据格式中非必须指定isLast属性,移除level属性的作用。
+24.【修复】数据格式:在开启了list风格参数时,修复必须指定isLast返回的问题和设置initLevel无效的问题。
+25.【修复】toolbar模块:新增节点返回json格式后显示数据未定义的问题。
+26.【移除】内置函数移除:refreshTree,现放置在menubarMethod方法中。
+27.【移除】内置函数移除:openAllNode,现放置在menubarMethod方法中。
+28.【移除】内置函数移除:closeAllNode,现放置在menubarMethod方法中。
+28.【移除】内置函数移除:loadChildTree。
+29.【移除】内置函数移除:openMenubar。
+30.【移除】内置函数移除:openToolbar。
+31.【移除】内置属性移除:level。
+32.【移除】内置属性移除:response属性中移除level。
+
+
+------------------------v2.4.5(2018/11/30)【修复】:------------------------
+1.【修复】基础方法修复:dataInit方法的返回数据异常。
+2.【修复】基础方法修复:render函数自动识别是否重载树,代码再次修复(针对单页应用)。
+3.【新增】内置函数新增:refreshTree,用于刷新树。
+4.【新增】内置函数新增:parseData 用于解析数据。
+5.【优化】checkbar模块:checkArr属性支持传递字符串。
+6.【修复】toolbar模块:拼接新增节点内容的代码异常 。
+
+------------------------v2.4.5(2018/11/25)【修复】:------------------------
+1.【修复】render函数自动识别是否重载树,代码修复。
+2.【修复】内部代码bug。
+3.【优化】修改了右键菜单弹出的动画效果。
+
+------------------------v2.4.5(2018/11/25)【新增】:------------------------
+1.【优化】优化了图标显示。
+2.【新增】内置图标新增。
+3.【新增】ficon属性:用于用户自定义一级图标
+4.【新增】firstIconArray属性:用于用户自定义扩展一级图标
+5.【新增】异步加载模块添加headers属性。
+6.【新增】toolbar模块:新增属性toolbarExt,用于自定义扩展工具栏右键菜单按钮
+7.【新增】checkbar模块:新增checkbarFun中的回调方法:chooseBefore,用于复选框点击前回调
+8.【新增】内置函数新增:changeCheck,用于改变复选框状态。
+9.【优化】render函数自动识别是否重载树。
+10.【优化】内部代码优化。
+11.【更新】更新了帮助文档
+
+------------------------v2.4.5(2018/11/23)【修复】:------------------------
+1.【修复】toolbar模块点击删除按钮时,控制台报错。
+2.【修复】配置了dot:false时,toolbar模块新增节点后一级图标不显示的问题。
+3.【修复】内置函数优化:initNoAllCheck,修复了显示bug
+4.【新增】内置函数新增:initAllCheck,复选框选中状态初始化设置
+5.【新增】内置函数新增:checkStatus,设置复选框选中/未选中/半选
+6.【优化】toolbar模块:点击删除时,当删除了某个节点下的最后一个子节点,那该节点也会改变样式变成叶子节点。
+7.【优化】toolbar模块:addTreeNode方法优化,ajax请求不限于同步,方法无需返回
+8.【新增】内置函数新增:changeTreeNodeAdd,新增节点后改变节点内容
+9.【优化】toolbar模块:editTreeNode方法优化,ajax请求不限于同步,方法无需返回
+10.【新增】内置函数新增:changeTreeNodeEdit,编辑节点后改变节点内容
+11.【优化】toolbar模块:delTreeNode方法优化,ajax请求不限于同步,方法无需返回
+12.【新增】内置函数新增:changeTreeNodeDel,删除节点后改变节点内容
+13.【优化】toolbar模块:editTreeLoad方法优化,ajax请求不限于同步,方法无需返回
+14.【新增】内置函数新增:changeTreeNodeDone,编辑页打开后显示编辑页内容
+15.【更新】更新了帮助文档
+
+------------------------v2.4.5(2018/11/22)【修复】:------------------------
+1.【修复】树重载时,使用data属性会造成数据重复加载问题。
+2.【修复】输出参数的字段,spared修改为spread(之前单词拼错了。。。。)。
+3.【新增】toolbar模块中新增属性:toolbarStyle,用于自定义toolbar的显示文字,弹框大小。
+4.【移除】基础属性中移除了addIndex属性。
+5.【新增】skin属性:用于用户自定义主题。
+6.【更新】更新了帮助文档
+
+------------------------v2.4.5(2018/11/21)【修复】:------------------------
+1.【修复】使用dataFormat属性时,直接使用data属性配置节点内容失效的问题。
+2.【修复】parentId为null导致节点数据加载失效的问题。
+3.【优化】反选节点时将选中哪一级的节点展开,单选和多选均生效。
+4.【新增】dot属性,用于用户自定义一级图标中的小圆点是否显示。
+5.【更新】更新了帮助文档
+
+------------------------v2.4.5(2018/11/21)【新增】:------------------------
+1.【新增】toolbar取消按钮的显示,开始绑定右键点击事件。
+2.【新增】toolbar模块新增一个属性:scroll 用于绑定树的上级div容器,让树可以显示滚动条的div容器,右键菜单绑定必填项。
+3.【新增】toolbar模块新增编辑页数据回显功能。
+4.【新增】树加载完毕后的回调函数
+5.【新增】dataStyle属性,用于用户配置layui通用的json数据风格
+6.【新增】dataFormat属性,用于用户自定义data中的数据格式(即支持传入一个大的list)
+7.【更新】更新了帮助文档
+
+------------------------v2.4.5(2018/11/09)【优化】:------------------------
+1.【优化】更新了图标库,精简了图标(60个)
+
+------------------------v2.4.5(2018/11/09)【初始】:------------------------
+1.【初始】基本树形展示,无限级,支持自定义修改树的展示图标
+2.【初始】支持异步/同步数据加载,支持静态数据加载,支持数据缓存
+3.【初始】支持自定义返回json格式,支持自定义异步/同步加载参数
+4.【初始】支持复选框,1-N级,支持复选框的四种选中形式,支持记录复选框选中/更改数据的回调
+5.【初始】支持工具栏,即可直接修改当前树节点,新增/ 编辑/删除等
+6.【初始】支持菜单栏,即可直接对树进行全部节点展开/收缩、删除全部选中节点、刷新树、搜索树等
+7.【初始】支持加载iframe,即点击树节点时,可以带上一个访问iframe的url,这个设计在左树右内容风格的页面极为有用
+8.【初始】支持数据回调,单击节点回调、双击节点回调、复选框选中回调、iframe加载完毕回调等
+9.【初始】支持数据获取,即获取当前选中节点数据,当前选中复选框节点数据等
+10.【初始】支持数据反显,即加载树之后将需要反显的节点高亮显示或选中
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/js/lay-module/echarts/echarts.js b/ss-admin/src/main/resources/static/js/lay-module/echarts/echarts.js
new file mode 100644
index 0000000..fcb939c
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/echarts/echarts.js
@@ -0,0 +1,19 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.echarts={})}(this,function(t){"use strict";function e(t){var e={},i={},n=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),a=t.match(/Edge\/([\d.]+)/),o=/micromessenger/i.test(t);return n&&(i.firefox=!0,i.version=n[1]),r&&(i.ie=!0,i.version=r[1]),a&&(i.edge=!0,i.version=a[1]),o&&(i.weChat=!0),{browser:i,os:e,node:!1,canvasSupported:!!document.createElement("canvas").getContext,svgSupported:"undefined"!=typeof SVGRect,touchEventsSupported:"ontouchstart"in window&&!i.ie&&!i.edge,pointerEventsSupported:"onpointerdown"in window&&(i.edge||i.ie&&i.version>=11),domSupported:"undefined"!=typeof document}}function i(t,e){"createCanvas"===t&&(dg=null),ug[t]=e}function n(t){if(null==t||"object"!=typeof t)return t;var e=t,i=ng.call(t);if("[object Array]"===i){if(!R(t)){e=[];for(var r=0,a=t.length;a>r;r++)e[r]=n(t[r])}}else if(ig[i]){if(!R(t)){var o=t.constructor;if(t.constructor.from)e=o.from(t);else{e=new o(t.length);for(var r=0,a=t.length;a>r;r++)e[r]=n(t[r])}}}else if(!eg[i]&&!R(t)&&!T(t)){e={};for(var s in t)t.hasOwnProperty(s)&&(e[s]=n(t[s]))}return e}function r(t,e,i){if(!S(e)||!S(t))return i?n(e):t;for(var a in e)if(e.hasOwnProperty(a)){var o=t[a],s=e[a];!S(s)||!S(o)||_(s)||_(o)||T(s)||T(o)||M(s)||M(o)||R(s)||R(o)?!i&&a in t||(t[a]=n(e[a],!0)):r(o,s,i)}return t}function a(t,e){for(var i=t[0],n=1,a=t.length;a>n;n++)i=r(i,t[n],e);return i}function o(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function s(t,e,i){for(var n in e)e.hasOwnProperty(n)&&(i?null!=e[n]:null==t[n])&&(t[n]=e[n]);return t}function l(){return dg||(dg=cg().getContext("2d")),dg}function h(t,e){if(t){if(t.indexOf)return t.indexOf(e);for(var i=0,n=t.length;n>i;i++)if(t[i]===e)return i}return-1}function u(t,e){function i(){}var n=t.prototype;i.prototype=e.prototype,t.prototype=new i;for(var r in n)t.prototype[r]=n[r];t.prototype.constructor=t,t.superClass=e}function c(t,e,i){t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,s(t,e,i)}function d(t){return t?"string"==typeof t?!1:"number"==typeof t.length:void 0}function f(t,e,i){if(t&&e)if(t.forEach&&t.forEach===ag)t.forEach(e,i);else if(t.length===+t.length)for(var n=0,r=t.length;r>n;n++)e.call(i,t[n],n,t);else for(var a in t)t.hasOwnProperty(a)&&e.call(i,t[a],a,t)}function p(t,e,i){if(t&&e){if(t.map&&t.map===lg)return t.map(e,i);for(var n=[],r=0,a=t.length;a>r;r++)n.push(e.call(i,t[r],r,t));return n}}function g(t,e,i,n){if(t&&e){if(t.reduce&&t.reduce===hg)return t.reduce(e,i,n);for(var r=0,a=t.length;a>r;r++)i=e.call(n,i,t[r],r,t);return i}}function v(t,e,i){if(t&&e){if(t.filter&&t.filter===og)return t.filter(e,i);for(var n=[],r=0,a=t.length;a>r;r++)e.call(i,t[r],r,t)&&n.push(t[r]);return n}}function m(t,e,i){if(t&&e)for(var n=0,r=t.length;r>n;n++)if(e.call(i,t[n],n,t))return t[n]}function y(t,e){var i=sg.call(arguments,2);return function(){return t.apply(e,i.concat(sg.call(arguments)))}}function x(t){var e=sg.call(arguments,1);return function(){return t.apply(this,e.concat(sg.call(arguments)))}}function _(t){return"[object Array]"===ng.call(t)}function w(t){return"function"==typeof t}function b(t){return"[object String]"===ng.call(t)}function S(t){var e=typeof t;return"function"===e||!!t&&"object"==e}function M(t){return!!eg[ng.call(t)]}function I(t){return!!ig[ng.call(t)]}function T(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function C(t){return t!==t}function A(){for(var t=0,e=arguments.length;e>t;t++)if(null!=arguments[t])return arguments[t]}function D(t,e){return null!=t?t:e}function k(t,e,i){return null!=t?t:null!=e?e:i}function P(){return Function.call.apply(sg,arguments)}function L(t){if("number"==typeof t)return[t,t,t,t];var e=t.length;return 2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t}function O(t,e){if(!t)throw new Error(e)}function z(t){return null==t?null:"function"==typeof t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}function E(t){t[fg]=!0}function R(t){return t[fg]}function B(t){function e(t,e){i?n.set(t,e):n.set(e,t)}var i=_(t);this.data={};var n=this;t instanceof B?t.each(e):t&&f(t,e)}function N(t){return new B(t)}function F(t,e){for(var i=new t.constructor(t.length+e.length),n=0;n=0;if(r){var a="touchend"!=n?e.targetTouches[0]:e.changedTouches[0];a&&de(t,a,e,i)}else de(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var o=e.button;return null==e.which&&void 0!==o&&Mg.test(e.type)&&(e.which=1&o?1:2&o?3:4&o?2:0),e}function ge(t,e,i){Sg?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function ve(t,e,i){Sg?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}function me(t){return t.which>1}function ye(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:xe}}function xe(){Ig(this.event)}function _e(){}function we(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,r=t;r;){if(r.clipPath&&!r.clipPath.contain(e,i))return!1;r.silent&&(n=!0),r=r.parent}return n?Tg:!0}return!1}function be(){var t=new Dg(6);return Se(t),t}function Se(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function Me(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function Ie(t,e,i){var n=e[0]*i[0]+e[2]*i[1],r=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],o=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=r,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t}function Te(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t}function Ce(t,e,i){var n=e[0],r=e[2],a=e[4],o=e[1],s=e[3],l=e[5],h=Math.sin(i),u=Math.cos(i);return t[0]=n*u+o*h,t[1]=-n*h+o*u,t[2]=r*u+s*h,t[3]=-r*h+u*s,t[4]=u*a+h*l,t[5]=u*l-h*a,t}function Ae(t,e,i){var n=i[0],r=i[1];return t[0]=e[0]*n,t[1]=e[1]*r,t[2]=e[2]*n,t[3]=e[3]*r,t[4]=e[4]*n,t[5]=e[5]*r,t}function De(t,e){var i=e[0],n=e[2],r=e[4],a=e[1],o=e[3],s=e[5],l=i*o-a*n;return l?(l=1/l,t[0]=o*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-o*r)*l,t[5]=(a*r-i*s)*l,t):null}function ke(t){var e=be();return Me(e,t),e}function Pe(t){return t>Lg||-Lg>t}function Le(t){this._target=t.target,this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null==t.loop?!1:t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}function Oe(t){return t=Math.round(t),0>t?0:t>255?255:t}function ze(t){return t=Math.round(t),0>t?0:t>360?360:t}function Ee(t){return 0>t?0:t>1?1:t}function Re(t){return Oe(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function Be(t){return Ee(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function Ne(t,e,i){return 0>i?i+=1:i>1&&(i-=1),1>6*i?t+(e-t)*i*6:1>2*i?e:2>3*i?t+(e-t)*(2/3-i)*6:t}function Fe(t,e,i){return t+(e-t)*i}function Ve(t,e,i,n,r){return t[0]=e,t[1]=i,t[2]=n,t[3]=r,t}function We(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Ge(t,e){Yg&&We(Yg,e),Yg=Xg.put(t,Yg||e.slice())}function He(t,e){if(t){e=e||[];var i=Xg.get(t);if(i)return We(e,i);t+="";var n=t.replace(/ /g,"").toLowerCase();if(n in Zg)return We(e,Zg[n]),Ge(t,e),e;if("#"!==n.charAt(0)){var r=n.indexOf("("),a=n.indexOf(")");if(-1!==r&&a+1===n.length){var o=n.substr(0,r),s=n.substr(r+1,a-(r+1)).split(","),l=1;switch(o){case"rgba":if(4!==s.length)return void Ve(e,0,0,0,1);l=Be(s.pop());case"rgb":return 3!==s.length?void Ve(e,0,0,0,1):(Ve(e,Re(s[0]),Re(s[1]),Re(s[2]),l),Ge(t,e),e);case"hsla":return 4!==s.length?void Ve(e,0,0,0,1):(s[3]=Be(s[3]),Ze(s,e),Ge(t,e),e);case"hsl":return 3!==s.length?void Ve(e,0,0,0,1):(Ze(s,e),Ge(t,e),e);default:return}}Ve(e,0,0,0,1)}else{if(4===n.length){var h=parseInt(n.substr(1),16);return h>=0&&4095>=h?(Ve(e,(3840&h)>>4|(3840&h)>>8,240&h|(240&h)>>4,15&h|(15&h)<<4,1),Ge(t,e),e):void Ve(e,0,0,0,1)}if(7===n.length){var h=parseInt(n.substr(1),16);return h>=0&&16777215>=h?(Ve(e,(16711680&h)>>16,(65280&h)>>8,255&h,1),Ge(t,e),e):void Ve(e,0,0,0,1)}}}}function Ze(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Be(t[1]),r=Be(t[2]),a=.5>=r?r*(n+1):r+n-r*n,o=2*r-a;return e=e||[],Ve(e,Oe(255*Ne(o,a,i+1/3)),Oe(255*Ne(o,a,i)),Oe(255*Ne(o,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Xe(t){if(t){var e,i,n=t[0]/255,r=t[1]/255,a=t[2]/255,o=Math.min(n,r,a),s=Math.max(n,r,a),l=s-o,h=(s+o)/2;if(0===l)e=0,i=0;else{i=.5>h?l/(s+o):l/(2-s-o);var u=((s-n)/6+l/2)/l,c=((s-r)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:r===s?e=1/3+u-d:a===s&&(e=2/3+c-u),0>e&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,h];return null!=t[3]&&f.push(t[3]),f}}function Ye(t,e){var i=He(t);if(i){for(var n=0;3>n;n++)i[n]=0>e?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,i[n]>255?i[n]=255:t[n]<0&&(i[n]=0);return Qe(i,4===i.length?"rgba":"rgb")}}function je(t){var e=He(t);return e?((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1):void 0}function qe(t,e,i){if(e&&e.length&&t>=0&&1>=t){i=i||[];var n=t*(e.length-1),r=Math.floor(n),a=Math.ceil(n),o=e[r],s=e[a],l=n-r;return i[0]=Oe(Fe(o[0],s[0],l)),i[1]=Oe(Fe(o[1],s[1],l)),i[2]=Oe(Fe(o[2],s[2],l)),i[3]=Ee(Fe(o[3],s[3],l)),i}}function Ue(t,e,i){if(e&&e.length&&t>=0&&1>=t){var n=t*(e.length-1),r=Math.floor(n),a=Math.ceil(n),o=He(e[r]),s=He(e[a]),l=n-r,h=Qe([Oe(Fe(o[0],s[0],l)),Oe(Fe(o[1],s[1],l)),Oe(Fe(o[2],s[2],l)),Ee(Fe(o[3],s[3],l))],"rgba");return i?{color:h,leftIndex:r,rightIndex:a,value:n}:h}}function $e(t,e,i,n){return t=He(t),t?(t=Xe(t),null!=e&&(t[0]=ze(e)),null!=i&&(t[1]=Be(i)),null!=n&&(t[2]=Be(n)),Qe(Ze(t),"rgba")):void 0}function Ke(t,e){return t=He(t),t&&null!=e?(t[3]=Ee(e),Qe(t,"rgba")):void 0}function Qe(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return("rgba"===e||"hsva"===e||"hsla"===e)&&(i+=","+t[3]),e+"("+i+")"}}function Je(t,e){return t[e]}function ti(t,e,i){t[e]=i}function ei(t,e,i){return(e-t)*i+t}function ii(t,e,i){return i>.5?e:t}function ni(t,e,i,n,r){var a=t.length;if(1==r)for(var o=0;a>o;o++)n[o]=ei(t[o],e[o],i);else for(var s=a&&t[0].length,o=0;a>o;o++)for(var l=0;s>l;l++)n[o][l]=ei(t[o][l],e[o][l],i)}function ri(t,e,i){var n=t.length,r=e.length;if(n!==r){var a=n>r;if(a)t.length=r;else for(var o=n;r>o;o++)t.push(1===i?e[o]:$g.call(e[o]))}for(var s=t[0]&&t[0].length,o=0;ol;l++)isNaN(t[o][l])&&(t[o][l]=e[o][l])}function ai(t,e,i){if(t===e)return!0;var n=t.length;if(n!==e.length)return!1;if(1===i){for(var r=0;n>r;r++)if(t[r]!==e[r])return!1}else for(var a=t[0].length,r=0;n>r;r++)for(var o=0;a>o;o++)if(t[r][o]!==e[r][o])return!1;return!0}function oi(t,e,i,n,r,a,o,s,l){var h=t.length;if(1==l)for(var u=0;h>u;u++)s[u]=si(t[u],e[u],i[u],n[u],r,a,o);else for(var c=t[0].length,u=0;h>u;u++)for(var d=0;c>d;d++)s[u][d]=si(t[u][d],e[u][d],i[u][d],n[u][d],r,a,o)}function si(t,e,i,n,r,a,o){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*o+(-3*(e-i)-2*s-l)*a+s*r+e}function li(t){if(d(t)){var e=t.length;if(d(t[0])){for(var i=[],n=0;e>n;n++)i.push($g.call(t[n]));return i}return $g.call(t)}return t}function hi(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function ui(t){var e=t[t.length-1].value;return d(e&&e[0])?2:1}function ci(t,e,i,n,r,a){var o=t._getter,s=t._setter,l="spline"===e,h=n.length;if(h){var u,c=n[0].value,f=d(c),p=!1,g=!1,v=f?ui(n):0;n.sort(function(t,e){return t.time-e.time}),u=n[h-1].time;for(var m=[],y=[],x=n[0].value,_=!0,w=0;h>w;w++){m.push(n[w].time/u);var b=n[w].value;if(f&&ai(b,x,v)||!f&&b===x||(_=!1),x=b,"string"==typeof b){var S=He(b);S?(b=S,p=!0):g=!0}y.push(b)}if(a||!_){for(var M=y[h-1],w=0;h-1>w;w++)f?ri(y[w],M,v):!isNaN(y[w])||isNaN(M)||g||p||(y[w]=M);f&&ri(o(t._target,r),M,v);var I,T,C,A,D,k,P=0,L=0;if(p)var O=[0,0,0,0];var z=function(t,e){var i;if(0>e)i=0;else if(L>e){for(I=Math.min(P+1,h-1),i=I;i>=0&&!(m[i]<=e);i--);i=Math.min(i,h-2)}else{for(i=P;h>i&&!(m[i]>e);i++);i=Math.min(i-1,h-2)}P=i,L=e;var n=m[i+1]-m[i];if(0!==n)if(T=(e-m[i])/n,l)if(A=y[i],C=y[0===i?i:i-1],D=y[i>h-2?h-1:i+1],k=y[i>h-3?h-1:i+2],f)oi(C,A,D,k,T,T*T,T*T*T,o(t,r),v);else{var a;if(p)a=oi(C,A,D,k,T,T*T,T*T*T,O,1),a=hi(O);else{if(g)return ii(A,D,T);a=si(C,A,D,k,T,T*T,T*T*T)}s(t,r,a)}else if(f)ni(y[i],y[i+1],T,o(t,r),v);else{var a;if(p)ni(y[i],y[i+1],T,O,1),a=hi(O);else{if(g)return ii(y[i],y[i+1],T);a=ei(y[i],y[i+1],T)}s(t,r,a)}},E=new Le({target:t._target,life:u,loop:t._loop,delay:t._delay,onframe:z,ondestroy:i});return e&&"spline"!==e&&(E.easing=e),E}}}function di(t,e,i,n,r,a,o,s){function l(){u--,u||a&&a()}b(n)?(a=r,r=n,n=0):w(r)?(a=r,r="linear",n=0):w(n)?(a=n,n=0):w(i)?(a=i,i=500):i||(i=500),t.stopAnimation(),fi(t,"",t,e,i,n,s);var h=t.animators.slice(),u=h.length;u||a&&a();for(var c=0;c0&&t.animate(e,!1).when(null==r?500:r,s).delay(a||0)}function pi(t,e,i,n){if(e){var r={};r[e]={},r[e][i]=n,t.attr(r)}else t.attr(i,n)}function gi(t,e,i,n){0>i&&(t+=i,i=-i),0>n&&(e+=n,n=-n),this.x=t,this.y=e,this.width=i,this.height=n}function vi(t){for(var e=0;t>=hv;)e|=1&t,t>>=1;return t+e}function mi(t,e,i,n){var r=e+1;if(r===i)return 1;if(n(t[r++],t[e])<0){for(;i>r&&n(t[r],t[r-1])<0;)r++;yi(t,e,r)}else for(;i>r&&n(t[r],t[r-1])>=0;)r++;return r-e}function yi(t,e,i){for(i--;i>e;){var n=t[e];t[e++]=t[i],t[i--]=n}}function xi(t,e,i,n,r){for(n===e&&n++;i>n;n++){for(var a,o=t[n],s=e,l=n;l>s;)a=s+l>>>1,r(o,t[a])<0?l=a:s=a+1;var h=n-s;switch(h){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;h>0;)t[s+h]=t[s+h-1],h--}t[s]=o}}function _i(t,e,i,n,r,a){var o=0,s=0,l=1;if(a(t,e[i+r])>0){for(s=n-r;s>l&&a(t,e[i+r+l])>0;)o=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s),o+=r,l+=r}else{for(s=r+1;s>l&&a(t,e[i+r-l])<=0;)o=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s);var h=o;o=r-l,l=r-h}for(o++;l>o;){var u=o+(l-o>>>1);a(t,e[i+u])>0?o=u+1:l=u}return l}function wi(t,e,i,n,r,a){var o=0,s=0,l=1;if(a(t,e[i+r])<0){for(s=r+1;s>l&&a(t,e[i+r-l])<0;)o=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s);var h=o;o=r-l,l=r-h}else{for(s=n-r;s>l&&a(t,e[i+r+l])>=0;)o=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s),o+=r,l+=r}for(o++;l>o;){var u=o+(l-o>>>1);a(t,e[i+u])<0?l=u:o=u+1}return l}function bi(t,e){function i(t,e){l[c]=t,h[c]=e,c+=1}function n(){for(;c>1;){var t=c-2;if(t>=1&&h[t-1]<=h[t]+h[t+1]||t>=2&&h[t-2]<=h[t]+h[t-1])h[t-1]h[t+1])break;a(t)}}function r(){for(;c>1;){var t=c-2;t>0&&h[t-1]=r?o(n,r,a,u):s(n,r,a,u)))}function o(i,n,r,a){var o=0;for(o=0;n>o;o++)d[o]=t[i+o];var s=0,l=r,h=i;if(t[h++]=t[l++],0!==--a){if(1===n){for(o=0;a>o;o++)t[h+o]=t[l+o];return void(t[h+a]=d[s])}for(var c,f,p,g=u;;){c=0,f=0,p=!1;do if(e(t[l],d[s])<0){if(t[h++]=t[l++],f++,c=0,0===--a){p=!0;break}}else if(t[h++]=d[s++],c++,f=0,1===--n){p=!0;break}while(g>(c|f));if(p)break;do{if(c=wi(t[l],d,s,n,0,e),0!==c){for(o=0;c>o;o++)t[h+o]=d[s+o];if(h+=c,s+=c,n-=c,1>=n){p=!0;break}}if(t[h++]=t[l++],0===--a){p=!0;break}if(f=_i(d[s],t,l,a,0,e),0!==f){for(o=0;f>o;o++)t[h+o]=t[l+o];if(h+=f,l+=f,a-=f,0===a){p=!0;break}}if(t[h++]=d[s++],1===--n){p=!0;break}g--}while(c>=uv||f>=uv);if(p)break;0>g&&(g=0),g+=2}if(u=g,1>u&&(u=1),1===n){for(o=0;a>o;o++)t[h+o]=t[l+o];t[h+a]=d[s]}else{if(0===n)throw new Error;for(o=0;n>o;o++)t[h+o]=d[s+o]}}else for(o=0;n>o;o++)t[h+o]=d[s+o]}function s(i,n,r,a){var o=0;for(o=0;a>o;o++)d[o]=t[r+o];var s=i+n-1,l=a-1,h=r+a-1,c=0,f=0;if(t[h--]=t[s--],0!==--n){if(1===a){for(h-=n,s-=n,f=h+1,c=s+1,o=n-1;o>=0;o--)t[f+o]=t[c+o];return void(t[h]=d[l])}for(var p=u;;){var g=0,v=0,m=!1;do if(e(d[l],t[s])<0){if(t[h--]=t[s--],g++,v=0,0===--n){m=!0;break}}else if(t[h--]=d[l--],v++,g=0,1===--a){m=!0;break}while(p>(g|v));if(m)break;do{if(g=n-wi(d[l],t,i,n,n-1,e),0!==g){for(h-=g,s-=g,n-=g,f=h+1,c=s+1,o=g-1;o>=0;o--)t[f+o]=t[c+o];if(0===n){m=!0;break}}if(t[h--]=d[l--],1===--a){m=!0;break}if(v=a-_i(t[s],d,0,a,a-1,e),0!==v){for(h-=v,l-=v,a-=v,f=h+1,c=l+1,o=0;v>o;o++)t[f+o]=d[c+o];if(1>=a){m=!0;break}}if(t[h--]=t[s--],0===--n){m=!0;break}p--}while(g>=uv||v>=uv);if(m)break;0>p&&(p=0),p+=2}if(u=p,1>u&&(u=1),1===a){for(h-=n,s-=n,f=h+1,c=s+1,o=n-1;o>=0;o--)t[f+o]=t[c+o];t[h]=d[l]}else{if(0===a)throw new Error;for(c=h-(a-1),o=0;a>o;o++)t[c+o]=d[o]}}else for(c=h-(a-1),o=0;a>o;o++)t[c+o]=d[o]}var l,h,u=uv,c=0,d=[];l=[],h=[],this.mergeRuns=n,this.forceMergeRuns=r,this.pushRun=i}function Si(t,e,i,n){i||(i=0),n||(n=t.length);var r=n-i;if(!(2>r)){var a=0;if(hv>r)return a=mi(t,i,n,e),void xi(t,i,n,i+a,e);var o=new bi(t,e),s=vi(r);do{if(a=mi(t,i,n,e),s>a){var l=r;l>s&&(l=s),xi(t,i,i+l,i+a,e),a=l}o.pushRun(i,a),o.mergeRuns(),r-=a,i+=a}while(0!==r);o.forceMergeRuns()}}function Mi(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function Ii(t,e,i){var n=null==e.x?0:e.x,r=null==e.x2?1:e.x2,a=null==e.y?0:e.y,o=null==e.y2?0:e.y2;e.global||(n=n*i.width+i.x,r=r*i.width+i.x,a=a*i.height+i.y,o=o*i.height+i.y),n=isNaN(n)?0:n,r=isNaN(r)?1:r,a=isNaN(a)?0:a,o=isNaN(o)?0:o;var s=t.createLinearGradient(n,a,r,o);return s}function Ti(t,e,i){var n=i.width,r=i.height,a=Math.min(n,r),o=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;e.global||(o=o*n+i.x,s=s*r+i.y,l*=a);var h=t.createRadialGradient(o,s,0,o,s,l);return h}function Ci(){return!1}function Ai(t,e,i){var n=cg(),r=e.getWidth(),a=e.getHeight(),o=n.style;return o&&(o.position="absolute",o.left=0,o.top=0,o.width=r+"px",o.height=a+"px",n.setAttribute("data-zr-dom-id",t)),n.width=r*i,n.height=a*i,n}function Di(t){if("string"==typeof t){var e=bv.get(t);return e&&e.image}return t}function ki(t,e,i,n,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!i)return e;var a=bv.get(t),o={hostEl:i,cb:n,cbPayload:r};return a?(e=a.image,!Li(e)&&a.pending.push(o)):(!e&&(e=new Image),e.onload=e.onerror=Pi,bv.put(t,e.__cachedImgObj={image:e,pending:[o]}),e.src=e.__zrImageSrc=t),e}return t}return e}function Pi(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;ea;a++)r=Math.max(Yi(n[a],e).width,r);return Mv>Iv&&(Mv=0,Sv={}),Mv++,Sv[i]=r,r}function Ei(t,e,i,n,r,a,o){return a?Bi(t,e,i,n,r,a,o):Ri(t,e,i,n,r,o)}function Ri(t,e,i,n,r,a){var o=ji(t,e,r,a),s=zi(t,e);r&&(s+=r[1]+r[3]);var l=o.outerHeight,h=Ni(0,s,i),u=Fi(0,l,n),c=new gi(h,u,s,l);return c.lineHeight=o.lineHeight,c}function Bi(t,e,i,n,r,a,o){var s=qi(t,{rich:a,truncate:o,font:e,textAlign:i,textPadding:r}),l=s.outerWidth,h=s.outerHeight,u=Ni(0,l,i),c=Fi(0,h,n);return new gi(u,c,l,h)}function Ni(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function Fi(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function Vi(t,e,i){var n=e.x,r=e.y,a=e.height,o=e.width,s=a/2,l="left",h="top";switch(t){case"left":n-=i,r+=s,l="right",h="middle";break;case"right":n+=i+o,r+=s,h="middle";break;case"top":n+=o/2,r-=i,l="center",h="bottom";break;case"bottom":n+=o/2,r+=a+i,l="center";break;case"inside":n+=o/2,r+=s,l="center",h="middle";break;case"insideLeft":n+=i,r+=s,h="middle";break;case"insideRight":n+=o-i,r+=s,l="right",h="middle";break;case"insideTop":n+=o/2,r+=i,l="center";break;case"insideBottom":n+=o/2,r+=a-i,l="center",h="bottom";break;case"insideTopLeft":n+=i,r+=i;break;case"insideTopRight":n+=o-i,r+=i,l="right";break;case"insideBottomLeft":n+=i,r+=a-i,h="bottom";break;case"insideBottomRight":n+=o-i,r+=a-i,l="right",h="bottom"}return{x:n,y:r,textAlign:l,textVerticalAlign:h}}function Wi(t,e,i,n,r){if(!e)return"";var a=(t+"").split("\n");r=Gi(e,i,n,r);for(var o=0,s=a.length;s>o;o++)a[o]=Hi(a[o],r);return a.join("\n")}function Gi(t,e,i,n){n=o({},n),n.font=e;var i=D(i,"...");n.maxIterations=D(n.maxIterations,2);var r=n.minChar=D(n.minChar,0);n.cnCharWidth=zi("国",e);var a=n.ascCharWidth=zi("a",e);n.placeholder=D(n.placeholder,"");for(var s=t=Math.max(0,t-1),l=0;r>l&&s>=a;l++)s-=a;var h=zi(i);return h>s&&(i="",h=0),s=t-h,n.ellipsis=i,n.ellipsisWidth=h,n.contentWidth=s,n.containerWidth=t,n}function Hi(t,e){var i=e.containerWidth,n=e.font,r=e.contentWidth;if(!i)return"";var a=zi(t,n);if(i>=a)return t;for(var o=0;;o++){if(r>=a||o>=e.maxIterations){t+=e.ellipsis;break}var s=0===o?Zi(t,r,e.ascCharWidth,e.cnCharWidth):a>0?Math.floor(t.length*r/a):0;t=t.substr(0,s),a=zi(t,n)}return""===t&&(t=e.placeholder),t}function Zi(t,e,i,n){for(var r=0,a=0,o=t.length;o>a&&e>r;a++){var s=t.charCodeAt(a);r+=s>=0&&127>=s?i:n}return a}function Xi(t){return zi("国",t)}function Yi(t,e){return Av.measureText(t,e)}function ji(t,e,i,n){null!=t&&(t+="");var r=Xi(e),a=t?t.split("\n"):[],o=a.length*r,s=o;if(i&&(s+=i[0]+i[2]),t&&n){var l=n.outerHeight,h=n.outerWidth;if(null!=l&&s>l)t="",a=[];else if(null!=h)for(var u=Gi(h-(i?i[1]+i[3]:0),e,n.ellipsis,{minChar:n.minChar,placeholder:n.placeholder}),c=0,d=a.length;d>c;c++)a[c]=Hi(a[c],u)}return{lines:a,height:o,outerHeight:s,lineHeight:r}}function qi(t,e){var i={lines:[],width:0,height:0};if(null!=t&&(t+=""),!t)return i;for(var n,r=Tv.lastIndex=0;null!=(n=Tv.exec(t));){var a=n.index;a>r&&Ui(i,t.substring(r,a)),Ui(i,n[2],n[1]),r=Tv.lastIndex}rf)return{lines:[],width:0,height:0};x.textWidth=zi(x.text,b);var M=_.textWidth,I=null==M||"auto"===M;if("string"==typeof M&&"%"===M.charAt(M.length-1))x.percentWidth=M,h.push(x),M=0;else{if(I){M=x.textWidth;var T=_.textBackgroundColor,C=T&&T.image;C&&(C=Di(C),Li(C)&&(M=Math.max(M,C.width*S/C.height)))}var A=w?w[1]+w[3]:0;M+=A;var P=null!=d?d-m:null;null!=P&&M>P&&(!I||A>P?(x.text="",x.textWidth=M=0):(x.text=Wi(x.text,P-A,b,c.ellipsis,{minChar:c.minChar}),x.textWidth=zi(x.text,b),M=x.textWidth+A))}m+=x.width=M,_&&(v=Math.max(v,x.lineHeight))}g.width=m,g.lineHeight=v,s+=v,l=Math.max(l,m)}i.outerWidth=i.width=D(e.textWidth,l),i.outerHeight=i.height=D(e.textHeight,s),u&&(i.outerWidth+=u[1]+u[3],i.outerHeight+=u[0]+u[2]);for(var p=0;pl&&(o+=l,l=-l),0>h&&(s+=h,h=-h),"number"==typeof u?i=n=r=a=u:u instanceof Array?1===u.length?i=n=r=a=u[0]:2===u.length?(i=r=u[0],n=a=u[1]):3===u.length?(i=u[0],n=a=u[1],r=u[2]):(i=u[0],n=u[1],r=u[2],a=u[3]):i=n=r=a=0;var c;i+n>l&&(c=i+n,i*=l/c,n*=l/c),r+a>l&&(c=r+a,r*=l/c,a*=l/c),n+r>h&&(c=n+r,n*=h/c,r*=h/c),i+a>h&&(c=i+a,i*=h/c,a*=h/c),t.moveTo(o+i,s),t.lineTo(o+l-n,s),0!==n&&t.arc(o+l-n,s+n,n,-Math.PI/2,0),t.lineTo(o+l,s+h-r),0!==r&&t.arc(o+l-r,s+h-r,r,0,Math.PI/2),t.lineTo(o+a,s+h),0!==a&&t.arc(o+a,s+h-a,a,Math.PI/2,Math.PI),t.lineTo(o,s+i),0!==i&&t.arc(o+i,s+i,i,Math.PI,1.5*Math.PI)}function Qi(t){return Ji(t),f(t.rich,Ji),t}function Ji(t){if(t){t.font=$i(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Dv[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||kv[i]?i:"top";var n=t.textPadding;n&&(t.textPadding=L(t.textPadding))}}function tn(t,e,i,n,r,a){n.rich?nn(t,e,i,n,r):en(t,e,i,n,r,a)}function en(t,e,i,n,r,a){var o=a&&a.style,s=o&&"text"===a.type,l=n.font||Cv;s&&l===(o.font||Cv)||(e.font=l);var h=t.__computedFont;t.__styleFont!==l&&(t.__styleFont=l,h=t.__computedFont=e.font);var u=n.textPadding,c=t.__textCotentBlock;(!c||t.__dirtyText)&&(c=t.__textCotentBlock=ji(i,h,u,n.truncate));var d=c.outerHeight,f=c.lines,p=c.lineHeight,g=un(d,n,r),v=g.baseX,m=g.baseY,y=g.textAlign||"left",x=g.textVerticalAlign;an(e,n,r,v,m);var _=Fi(m,d,x),w=v,b=_,S=sn(n);if(S||u){var M=zi(i,h),I=M;u&&(I+=u[1]+u[3]);var T=Ni(v,I,y);S&&ln(t,e,n,T,_,I,d),u&&(w=gn(v,y,u),b+=u[0])}e.textAlign=y,e.textBaseline="middle";for(var C=0;CT&&(_=b[T],!_.textAlign||"left"===_.textAlign);)on(t,e,_,n,M,m,C,"left"),I-=_.width,C+=_.width,T++;for(;D>=0&&(_=b[D],"right"===_.textAlign);)on(t,e,_,n,M,m,A,"right"),I-=_.width,A-=_.width,D--;for(C+=(a-(C-v)-(y-A)-I)/2;D>=T;)_=b[T],on(t,e,_,n,M,m,C+_.width/2,"center"),C+=_.width,T++;m+=M}}function an(t,e,i,n,r){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,r=i.height/2+i.y):a&&(n=a[0]+i.x,r=a[1]+i.y),t.translate(n,r),t.rotate(-e.textRotation),t.translate(-n,-r)}}function on(t,e,i,n,r,a,o,s){var l=n.rich[i.styleName]||{};l.text=i.text;var h=i.textVerticalAlign,u=a+r/2;"top"===h?u=a+i.height/2:"bottom"===h&&(u=a+r-i.height/2),!i.isLineHolder&&sn(l)&&ln(t,e,l,"right"===s?o-i.width:"center"===s?o-i.width/2:o,u-i.height/2,i.width,i.height);var c=i.textPadding;c&&(o=gn(o,s,c),u-=i.height/2-c[2]-i.textHeight/2),cn(e,"shadowBlur",k(l.textShadowBlur,n.textShadowBlur,0)),cn(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),cn(e,"shadowOffsetX",k(l.textShadowOffsetX,n.textShadowOffsetX,0)),cn(e,"shadowOffsetY",k(l.textShadowOffsetY,n.textShadowOffsetY,0)),cn(e,"textAlign",s),cn(e,"textBaseline","middle"),cn(e,"font",i.font||Cv);var d=dn(l.textStroke||n.textStroke,p),f=fn(l.textFill||n.textFill),p=D(l.textStrokeWidth,n.textStrokeWidth);d&&(cn(e,"lineWidth",p),cn(e,"strokeStyle",d),e.strokeText(i.text,o,u)),f&&(cn(e,"fillStyle",f),e.fillText(i.text,o,u))}function sn(t){return t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor}function ln(t,e,i,n,r,a,o){var s=i.textBackgroundColor,l=i.textBorderWidth,h=i.textBorderColor,u=b(s);if(cn(e,"shadowBlur",i.textBoxShadowBlur||0),cn(e,"shadowColor",i.textBoxShadowColor||"transparent"),cn(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),cn(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),u||l&&h){e.beginPath();var c=i.textBorderRadius;c?Ki(e,{x:n,y:r,width:a,height:o,r:c}):e.rect(n,r,a,o),e.closePath()}if(u)if(cn(e,"fillStyle",s),null!=i.fillOpacity){var d=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=d}else e.fill();else if(w(s))cn(e,"fillStyle",s(i)),e.fill();else if(S(s)){var f=s.image;f=ki(f,null,t,hn,s),f&&Li(f)&&e.drawImage(f,n,r,a,o)}if(l&&h)if(cn(e,"lineWidth",l),cn(e,"strokeStyle",h),null!=i.strokeOpacity){var d=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=d}else e.stroke()}function hn(t,e){e.image=t}function un(t,e,i){var n=e.x||0,r=e.y||0,a=e.textAlign,o=e.textVerticalAlign;if(i){var s=e.textPosition;if(s instanceof Array)n=i.x+pn(s[0],i.width),r=i.y+pn(s[1],i.height);else{var l=Vi(s,i,e.textDistance);n=l.x,r=l.y,a=a||l.textAlign,o=o||l.textVerticalAlign}var h=e.textOffset;h&&(n+=h[0],r+=h[1])}return{baseX:n,baseY:r,textAlign:a,textVerticalAlign:o}}function cn(t,e,i){return t[e]=fv(t,e,i),t[e]}function dn(t,e){return null==t||0>=e||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function fn(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function pn(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function gn(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function vn(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function mn(t){t=t||{},rv.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new gv(t.style,this),this._rect=null,this.__clipPaths=[]
+}function yn(t){mn.call(this,t)}function xn(t){return parseInt(t,10)}function _n(t){return t?t.__builtin__?!0:"function"!=typeof t.resize||"function"!=typeof t.refresh?!1:!0:!1}function wn(t,e,i){return Nv.copy(t.getBoundingRect()),t.transform&&Nv.applyTransform(t.transform),Fv.width=e,Fv.height=i,!Nv.intersect(Fv)}function bn(t,e){if(t==e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;in;n++){var a=i[n];!t.emphasis[e].hasOwnProperty(a)&&t[e].hasOwnProperty(a)&&(t.emphasis[e][a]=t[e][a])}}}function Vn(t){return!rm(t)||am(t)||t instanceof Date?t:t.value}function Wn(t){return rm(t)&&!(t instanceof Array)}function Gn(t,e){e=(e||[]).slice();var i=p(t||[],function(t){return{exist:t}});return nm(e,function(t,n){if(rm(t)){for(var r=0;r=i.length&&i.push({option:t})}}),i}function Hn(t){var e=N();nm(t,function(t){var i=t.exist;i&&e.set(i.id,t)}),nm(t,function(t){var i=t.option;O(!i||null==i.id||!e.get(i.id)||e.get(i.id)===t,"id duplicates: "+(i&&i.id)),i&&null!=i.id&&e.set(i.id,t),!t.keyInfo&&(t.keyInfo={})}),nm(t,function(t,i){var n=t.exist,r=t.option,a=t.keyInfo;if(rm(r)){if(a.name=null!=r.name?r.name+"":n?n.name:om+i,n)a.id=n.id;else if(null!=r.id)a.id=r.id+"";else{var o=0;do a.id="\x00"+a.name+"\x00"+o++;while(e.get(a.id))}e.set(a.id,t)}})}function Zn(t){var e=t.name;return!(!e||!e.indexOf(om))}function Xn(t){return rm(t)&&t.id&&0===(t.id+"").indexOf("\x00_ec_\x00")}function Yn(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e.dataIndex?_(e.dataIndex)?p(e.dataIndex,function(e){return t.indexOfRawIndex(e)}):t.indexOfRawIndex(e.dataIndex):null!=e.name?_(e.name)?p(e.name,function(e){return t.indexOfName(e)}):t.indexOfName(e.name):void 0}function jn(){var t="__\x00ec_inner_"+lm++ +"_"+Math.random().toFixed(5);return function(e){return e[t]||(e[t]={})}}function qn(t,e,i){if(b(e)){var n={};n[e+"Index"]=0,e=n}var r=i&&i.defaultMainType;!r||Un(e,r+"Index")||Un(e,r+"Id")||Un(e,r+"Name")||(e[r+"Index"]=0);var a={};return nm(e,function(n,r){var n=e[r];if("dataIndex"===r||"dataIndexInside"===r)return void(a[r]=n);var o=r.match(/^(\w+)(Index|Id|Name)$/)||[],s=o[1],l=(o[2]||"").toLowerCase();if(!(!s||!l||null==n||"index"===l&&"none"===n||i&&i.includeMainTypes&&h(i.includeMainTypes,s)<0)){var u={mainType:s};("index"!==l||"all"!==n)&&(u[l]=n);var c=t.queryComponents(u);a[s+"Models"]=c,a[s+"Model"]=c[0]}}),a}function Un(t,e){return t&&t.hasOwnProperty(e)}function $n(t,e,i){t.setAttribute?t.setAttribute(e,i):t[e]=i}function Kn(t,e){return t.getAttribute?t.getAttribute(e):t[e]}function Qn(t){return"auto"===t?tg.domSupported?"html":"richText":t||"html"}function Jn(t){var e={main:"",sub:""};return t&&(t=t.split(hm),e.main=t[0]||"",e.sub=t[1]||""),e}function tr(t){O(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function er(t){t.$constructor=t,t.extend=function(t){var e=this,i=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return o(i.prototype,t),i.extend=this.extend,i.superCall=nr,i.superApply=rr,u(i,this),i.superClass=e,i}}function ir(t){var e=["__\x00is_clz",cm++,Math.random().toFixed(3)].join("_");t.prototype[e]=!0,t.isInstance=function(t){return!(!t||!t[e])}}function nr(t,e){var i=P(arguments,2);return this.superClass.prototype[e].apply(t,i)}function rr(t,e,i){return this.superClass.prototype[e].apply(t,i)}function ar(t,e){function i(t){var e=n[t.main];return e&&e[um]||(e=n[t.main]={},e[um]=!0),e}e=e||{};var n={};if(t.registerClass=function(t,e){if(e)if(tr(e),e=Jn(e),e.sub){if(e.sub!==um){var r=i(e);r[e.sub]=t}}else n[e.main]=t;return t},t.getClass=function(t,e,i){var r=n[t];if(r&&r[um]&&(r=e?r[e]:null),i&&!r)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return r},t.getClassesByMainType=function(t){t=Jn(t);var e=[],i=n[t.main];return i&&i[um]?f(i,function(t,i){i!==um&&e.push(t)}):e.push(i),e},t.hasClass=function(t){return t=Jn(t),!!n[t.main]},t.getAllClassMainTypes=function(){var t=[];return f(n,function(e,i){t.push(i)}),t},t.hasSubTypes=function(t){t=Jn(t);var e=n[t.main];return e&&e[um]},t.parseClassType=Jn,e.registerWhenExtend){var r=t.extend;r&&(t.extend=function(e){var i=r.call(this,e);return t.registerClass(i,e.type)})}return t}function or(t){return t>-xm&&xm>t}function sr(t){return t>xm||-xm>t}function lr(t,e,i,n,r){var a=1-r;return a*a*(a*t+3*r*e)+r*r*(r*n+3*a*i)}function hr(t,e,i,n,r){var a=1-r;return 3*(((e-t)*a+2*(i-e)*r)*a+(n-i)*r*r)}function ur(t,e,i,n,r,a){var o=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),h=t-r,u=s*s-3*o*l,c=s*l-9*o*h,d=l*l-3*s*h,f=0;if(or(u)&&or(c))if(or(s))a[0]=0;else{var p=-l/s;p>=0&&1>=p&&(a[f++]=p)}else{var g=c*c-4*u*d;if(or(g)){var v=c/u,p=-s/o+v,m=-v/2;p>=0&&1>=p&&(a[f++]=p),m>=0&&1>=m&&(a[f++]=m)}else if(g>0){var y=ym(g),x=u*s+1.5*o*(-c+y),_=u*s+1.5*o*(-c-y);x=0>x?-mm(-x,bm):mm(x,bm),_=0>_?-mm(-_,bm):mm(_,bm);var p=(-s-(x+_))/(3*o);p>=0&&1>=p&&(a[f++]=p)}else{var w=(2*u*s-3*o*c)/(2*ym(u*u*u)),b=Math.acos(w)/3,S=ym(u),M=Math.cos(b),p=(-s-2*S*M)/(3*o),m=(-s+S*(M+wm*Math.sin(b)))/(3*o),I=(-s+S*(M-wm*Math.sin(b)))/(3*o);p>=0&&1>=p&&(a[f++]=p),m>=0&&1>=m&&(a[f++]=m),I>=0&&1>=I&&(a[f++]=I)}}return f}function cr(t,e,i,n,r){var a=6*i-12*e+6*t,o=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if(or(o)){if(sr(a)){var h=-s/a;h>=0&&1>=h&&(r[l++]=h)}}else{var u=a*a-4*o*s;if(or(u))r[0]=-a/(2*o);else if(u>0){var c=ym(u),h=(-a+c)/(2*o),d=(-a-c)/(2*o);h>=0&&1>=h&&(r[l++]=h),d>=0&&1>=d&&(r[l++]=d)}}return l}function dr(t,e,i,n,r,a){var o=(e-t)*r+t,s=(i-e)*r+e,l=(n-i)*r+i,h=(s-o)*r+o,u=(l-s)*r+s,c=(u-h)*r+h;a[0]=t,a[1]=o,a[2]=h,a[3]=c,a[4]=c,a[5]=u,a[6]=l,a[7]=n}function fr(t,e,i,n,r,a,o,s,l,h,u){var c,d,f,p,g,v=.005,m=1/0;Sm[0]=l,Sm[1]=h;for(var y=0;1>y;y+=.05)Mm[0]=lr(t,i,r,o,y),Mm[1]=lr(e,n,a,s,y),p=xg(Sm,Mm),m>p&&(c=y,m=p);m=1/0;for(var x=0;32>x&&!(_m>v);x++)d=c-v,f=c+v,Mm[0]=lr(t,i,r,o,d),Mm[1]=lr(e,n,a,s,d),p=xg(Mm,Sm),d>=0&&m>p?(c=d,m=p):(Im[0]=lr(t,i,r,o,f),Im[1]=lr(e,n,a,s,f),g=xg(Im,Sm),1>=f&&m>g?(c=f,m=g):v*=.5);return u&&(u[0]=lr(t,i,r,o,c),u[1]=lr(e,n,a,s,c)),ym(m)}function pr(t,e,i,n){var r=1-n;return r*(r*t+2*n*e)+n*n*i}function gr(t,e,i,n){return 2*((1-n)*(e-t)+n*(i-e))}function vr(t,e,i,n,r){var a=t-2*e+i,o=2*(e-t),s=t-n,l=0;if(or(a)){if(sr(o)){var h=-s/o;h>=0&&1>=h&&(r[l++]=h)}}else{var u=o*o-4*a*s;if(or(u)){var h=-o/(2*a);h>=0&&1>=h&&(r[l++]=h)}else if(u>0){var c=ym(u),h=(-o+c)/(2*a),d=(-o-c)/(2*a);h>=0&&1>=h&&(r[l++]=h),d>=0&&1>=d&&(r[l++]=d)}}return l}function mr(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function yr(t,e,i,n,r){var a=(e-t)*n+t,o=(i-e)*n+e,s=(o-a)*n+a;r[0]=t,r[1]=a,r[2]=s,r[3]=s,r[4]=o,r[5]=i}function xr(t,e,i,n,r,a,o,s,l){var h,u=.005,c=1/0;Sm[0]=o,Sm[1]=s;for(var d=0;1>d;d+=.05){Mm[0]=pr(t,i,r,d),Mm[1]=pr(e,n,a,d);var f=xg(Sm,Mm);c>f&&(h=d,c=f)}c=1/0;for(var p=0;32>p&&!(_m>u);p++){var g=h-u,v=h+u;Mm[0]=pr(t,i,r,g),Mm[1]=pr(e,n,a,g);var f=xg(Mm,Sm);if(g>=0&&c>f)h=g,c=f;else{Im[0]=pr(t,i,r,v),Im[1]=pr(e,n,a,v);var m=xg(Im,Sm);1>=v&&c>m?(h=v,c=m):u*=.5}}return l&&(l[0]=pr(t,i,r,h),l[1]=pr(e,n,a,h)),ym(c)}function _r(t,e,i){if(0!==t.length){var n,r=t[0],a=r[0],o=r[0],s=r[1],l=r[1];for(n=1;nu;u++){var p=d(t,i,r,o,zm[u]);l[0]=Tm(p,l[0]),h[0]=Cm(p,h[0])}for(f=c(e,n,a,s,Em),u=0;f>u;u++){var g=d(e,n,a,s,Em[u]);l[1]=Tm(g,l[1]),h[1]=Cm(g,h[1])}l[0]=Tm(t,l[0]),h[0]=Cm(t,h[0]),l[0]=Tm(o,l[0]),h[0]=Cm(o,h[0]),l[1]=Tm(e,l[1]),h[1]=Cm(e,h[1]),l[1]=Tm(s,l[1]),h[1]=Cm(s,h[1])}function Sr(t,e,i,n,r,a,o,s){var l=mr,h=pr,u=Cm(Tm(l(t,i,r),1),0),c=Cm(Tm(l(e,n,a),1),0),d=h(t,i,r,u),f=h(e,n,a,c);o[0]=Tm(t,r,d),o[1]=Tm(e,a,f),s[0]=Cm(t,r,d),s[1]=Cm(e,a,f)}function Mr(t,e,i,n,r,a,o,s,l){var h=oe,u=se,c=Math.abs(r-a);if(1e-4>c%km&&c>1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(Pm[0]=Dm(r)*i+t,Pm[1]=Am(r)*n+e,Lm[0]=Dm(a)*i+t,Lm[1]=Am(a)*n+e,h(s,Pm,Lm),u(l,Pm,Lm),r%=km,0>r&&(r+=km),a%=km,0>a&&(a+=km),r>a&&!o?a+=km:a>r&&o&&(r+=km),o){var d=a;a=r,r=d}for(var f=0;a>f;f+=Math.PI/2)f>r&&(Om[0]=Dm(f)*i+t,Om[1]=Am(f)*n+e,h(s,Om,s),u(l,Om,l))}function Ir(t,e,i,n,r,a,o){if(0===r)return!1;var s=r,l=0,h=t;if(o>e+s&&o>n+s||e-s>o&&n-s>o||a>t+s&&a>i+s||t-s>a&&i-s>a)return!1;if(t===i)return Math.abs(a-t)<=s/2;l=(e-n)/(t-i),h=(t*n-i*e)/(t-i);var u=l*a-o+h,c=u*u/(l*l+1);return s/2*s/2>=c}function Tr(t,e,i,n,r,a,o,s,l,h,u){if(0===l)return!1;var c=l;if(u>e+c&&u>n+c&&u>a+c&&u>s+c||e-c>u&&n-c>u&&a-c>u&&s-c>u||h>t+c&&h>i+c&&h>r+c&&h>o+c||t-c>h&&i-c>h&&r-c>h&&o-c>h)return!1;var d=fr(t,e,i,n,r,a,o,s,h,u,null);return c/2>=d}function Cr(t,e,i,n,r,a,o,s,l){if(0===o)return!1;var h=o;if(l>e+h&&l>n+h&&l>a+h||e-h>l&&n-h>l&&a-h>l||s>t+h&&s>i+h&&s>r+h||t-h>s&&i-h>s&&r-h>s)return!1;var u=xr(t,e,i,n,r,a,s,l,null);return h/2>=u}function Ar(t){return t%=Um,0>t&&(t+=Um),t}function Dr(t,e,i,n,r,a,o,s,l){if(0===o)return!1;var h=o;s-=t,l-=e;var u=Math.sqrt(s*s+l*l);if(u-h>i||i>u+h)return!1;if(Math.abs(n-r)%$m<1e-4)return!0;if(a){var c=n;n=Ar(r),r=Ar(c)}else n=Ar(n),r=Ar(r);n>r&&(r+=$m);var d=Math.atan2(l,s);return 0>d&&(d+=$m),d>=n&&r>=d||d+$m>=n&&r>=d+$m}function kr(t,e,i,n,r,a){if(a>e&&a>n||e>a&&n>a)return 0;if(n===e)return 0;var o=e>n?1:-1,s=(a-e)/(n-e);(1===s||0===s)&&(o=e>n?.5:-.5);var l=s*(i-t)+t;return l===r?1/0:l>r?o:0}function Pr(t,e){return Math.abs(t-e)e&&h>n&&h>a&&h>s||e>h&&n>h&&a>h&&s>h)return 0;var u=ur(e,n,a,s,h,ty);if(0===u)return 0;for(var c,d,f=0,p=-1,g=0;u>g;g++){var v=ty[g],m=0===v||1===v?.5:1,y=lr(t,i,r,o,v);l>y||(0>p&&(p=cr(e,n,a,s,ey),ey[1]1&&Lr(),c=lr(e,n,a,s,ey[0]),p>1&&(d=lr(e,n,a,s,ey[1]))),f+=2==p?vc?m:-m:vd?m:-m:d>s?m:-m:vc?m:-m:c>s?m:-m)}return f}function zr(t,e,i,n,r,a,o,s){if(s>e&&s>n&&s>a||e>s&&n>s&&a>s)return 0;var l=vr(e,n,a,s,ty);if(0===l)return 0;var h=mr(e,n,a);if(h>=0&&1>=h){for(var u=0,c=pr(e,n,a,h),d=0;l>d;d++){var f=0===ty[d]||1===ty[d]?.5:1,p=pr(t,i,r,ty[d]);o>p||(u+=ty[d]c?f:-f:c>a?f:-f)}return u}var f=0===ty[0]||1===ty[0]?.5:1,p=pr(t,i,r,ty[0]);return o>p?0:e>a?f:-f}function Er(t,e,i,n,r,a,o,s){if(s-=e,s>i||-i>s)return 0;var l=Math.sqrt(i*i-s*s);ty[0]=-l,ty[1]=l;var h=Math.abs(n-r);if(1e-4>h)return 0;if(1e-4>h%Qm){n=0,r=Qm;var u=a?1:-1;return o>=ty[0]+t&&o<=ty[1]+t?u:0}if(a){var l=n;n=Ar(r),r=Ar(l)}else n=Ar(n),r=Ar(r);n>r&&(r+=Qm);for(var c=0,d=0;2>d;d++){var f=ty[d];if(f+t>o){var p=Math.atan2(s,f),u=a?1:-1;0>p&&(p=Qm+p),(p>=n&&r>=p||p+Qm>=n&&r>=p+Qm)&&(p>Math.PI/2&&p<1.5*Math.PI&&(u=-u),c+=u)}}return c}function Rr(t,e,i,n,r){for(var a=0,o=0,s=0,l=0,h=0,u=0;u1&&(i||(a+=kr(o,s,l,h,n,r))),1==u&&(o=t[u],s=t[u+1],l=o,h=s),c){case Km.M:l=t[u++],h=t[u++],o=l,s=h;break;case Km.L:if(i){if(Ir(o,s,t[u],t[u+1],e,n,r))return!0}else a+=kr(o,s,t[u],t[u+1],n,r)||0;o=t[u++],s=t[u++];break;case Km.C:if(i){if(Tr(o,s,t[u++],t[u++],t[u++],t[u++],t[u],t[u+1],e,n,r))return!0}else a+=Or(o,s,t[u++],t[u++],t[u++],t[u++],t[u],t[u+1],n,r)||0;o=t[u++],s=t[u++];break;case Km.Q:if(i){if(Cr(o,s,t[u++],t[u++],t[u],t[u+1],e,n,r))return!0}else a+=zr(o,s,t[u++],t[u++],t[u],t[u+1],n,r)||0;o=t[u++],s=t[u++];break;case Km.A:var d=t[u++],f=t[u++],p=t[u++],g=t[u++],v=t[u++],m=t[u++],y=(t[u++],1-t[u++]),x=Math.cos(v)*p+d,_=Math.sin(v)*g+f;u>1?a+=kr(o,s,x,_,n,r):(l=x,h=_);var w=(n-d)*g/p+d;if(i){if(Dr(d,f,g,v,v+m,y,e,w,r))return!0}else a+=Er(d,f,g,v,v+m,y,w,r);o=Math.cos(v+m)*p+d,s=Math.sin(v+m)*g+f;break;case Km.R:l=o=t[u++],h=s=t[u++];var b=t[u++],S=t[u++],x=l+b,_=h+S;if(i){if(Ir(l,h,x,h,e,n,r)||Ir(x,h,x,_,e,n,r)||Ir(x,_,l,_,e,n,r)||Ir(l,_,l,h,e,n,r))return!0}else a+=kr(x,h,x,_,n,r),a+=kr(l,_,l,h,n,r);break;case Km.Z:if(i){if(Ir(o,s,l,h,e,n,r))return!0}else a+=kr(o,s,l,h,n,r);o=l,s=h}}return i||Pr(s,h)||(a+=kr(o,s,l,h,n,r)||0),0!==a}function Br(t,e,i){return Rr(t,0,!1,e,i)}function Nr(t,e,i,n){return Rr(t,e,!0,i,n)}function Fr(t){mn.call(this,t),this.path=null}function Vr(t,e,i,n,r,a,o,s,l,h,u){var c=l*(fy/180),d=dy(c)*(t-i)/2+cy(c)*(e-n)/2,f=-1*cy(c)*(t-i)/2+dy(c)*(e-n)/2,p=d*d/(o*o)+f*f/(s*s);p>1&&(o*=uy(p),s*=uy(p));var g=(r===a?-1:1)*uy((o*o*s*s-o*o*f*f-s*s*d*d)/(o*o*f*f+s*s*d*d))||0,v=g*o*f/s,m=g*-s*d/o,y=(t+i)/2+dy(c)*v-cy(c)*m,x=(e+n)/2+cy(c)*v+dy(c)*m,_=vy([1,0],[(d-v)/o,(f-m)/s]),w=[(d-v)/o,(f-m)/s],b=[(-1*d-v)/o,(-1*f-m)/s],S=vy(w,b);gy(w,b)<=-1&&(S=fy),gy(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*fy),1===a&&0>S&&(S+=2*fy),u.addData(h,y,x,o,s,_,S,c,a)}function Wr(t){if(!t)return new qm;for(var e,i=0,n=0,r=i,a=n,o=new qm,s=qm.CMD,l=t.match(my),h=0;hg;g++)f[g]=parseFloat(f[g]);for(var v=0;p>v;){var m,y,x,_,w,b,S,M=i,I=n;switch(d){case"l":i+=f[v++],n+=f[v++],u=s.L,o.addData(u,i,n);break;case"L":i=f[v++],n=f[v++],u=s.L,o.addData(u,i,n);break;case"m":i+=f[v++],n+=f[v++],u=s.M,o.addData(u,i,n),r=i,a=n,d="l";break;case"M":i=f[v++],n=f[v++],u=s.M,o.addData(u,i,n),r=i,a=n,d="L";break;case"h":i+=f[v++],u=s.L,o.addData(u,i,n);break;case"H":i=f[v++],u=s.L,o.addData(u,i,n);break;case"v":n+=f[v++],u=s.L,o.addData(u,i,n);break;case"V":n=f[v++],u=s.L,o.addData(u,i,n);break;case"C":u=s.C,o.addData(u,f[v++],f[v++],f[v++],f[v++],f[v++],f[v++]),i=f[v-2],n=f[v-1];break;case"c":u=s.C,o.addData(u,f[v++]+i,f[v++]+n,f[v++]+i,f[v++]+n,f[v++]+i,f[v++]+n),i+=f[v-2],n+=f[v-1];break;case"S":m=i,y=n;var T=o.len(),C=o.data;e===s.C&&(m+=i-C[T-4],y+=n-C[T-3]),u=s.C,M=f[v++],I=f[v++],i=f[v++],n=f[v++],o.addData(u,m,y,M,I,i,n);break;case"s":m=i,y=n;var T=o.len(),C=o.data;e===s.C&&(m+=i-C[T-4],y+=n-C[T-3]),u=s.C,M=i+f[v++],I=n+f[v++],i+=f[v++],n+=f[v++],o.addData(u,m,y,M,I,i,n);break;case"Q":M=f[v++],I=f[v++],i=f[v++],n=f[v++],u=s.Q,o.addData(u,M,I,i,n);break;case"q":M=f[v++]+i,I=f[v++]+n,i+=f[v++],n+=f[v++],u=s.Q,o.addData(u,M,I,i,n);break;case"T":m=i,y=n;var T=o.len(),C=o.data;e===s.Q&&(m+=i-C[T-4],y+=n-C[T-3]),i=f[v++],n=f[v++],u=s.Q,o.addData(u,m,y,i,n);break;case"t":m=i,y=n;var T=o.len(),C=o.data;e===s.Q&&(m+=i-C[T-4],y+=n-C[T-3]),i+=f[v++],n+=f[v++],u=s.Q,o.addData(u,m,y,i,n);break;case"A":x=f[v++],_=f[v++],w=f[v++],b=f[v++],S=f[v++],M=i,I=n,i=f[v++],n=f[v++],u=s.A,Vr(M,I,i,n,b,S,x,_,w,u,o);break;case"a":x=f[v++],_=f[v++],w=f[v++],b=f[v++],S=f[v++],M=i,I=n,i+=f[v++],n+=f[v++],u=s.A,Vr(M,I,i,n,b,S,x,_,w,u,o)}}("z"===d||"Z"===d)&&(u=s.Z,o.addData(u),i=r,n=a),e=u}return o.toStatic(),o}function Gr(t,e){var i=Wr(t);return e=e||{},e.buildPath=function(t){if(t.setData){t.setData(i.data);var e=t.getContext();e&&t.rebuildPath(e)}else{var e=t;i.rebuildPath(e)}},e.applyTransform=function(t){hy(i,t),this.dirty(!0)},e}function Hr(t,e){return new Fr(Gr(t,e))}function Zr(t,e){return Fr.extend(Gr(t,e))}function Xr(t,e){for(var i=[],n=t.length,r=0;n>r;r++){var a=t[r];a.path||a.createPathProxy(),a.__dirtyPath&&a.buildPath(a.path,a.shape,!0),i.push(a.path)}var o=new Fr(e);return o.createPathProxy(),o.buildPath=function(t){t.appendPath(i);var e=t.getContext();e&&t.rebuildPath(e)},o}function Yr(t,e,i,n,r,a,o){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*o+(-3*(e-i)-2*s-l)*a+s*r+e}function jr(t,e,i){var n=e.points,r=e.smooth;if(n&&n.length>=2){if(r&&"spline"!==r){var a=Ty(n,r,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var o=n.length,s=0;(i?o:o-1)>s;s++){var l=a[2*s],h=a[2*s+1],u=n[(s+1)%o];t.bezierCurveTo(l[0],l[1],h[0],h[1],u[0],u[1])}}else{"spline"===r&&(n=Iy(n,i)),t.moveTo(n[0][0],n[0][1]);for(var s=1,c=n.length;c>s;s++)t.lineTo(n[s][0],n[s][1])}i&&t.closePath()}}function qr(t,e,i){var n=t.cpx2,r=t.cpy2;return null===n||null===r?[(i?hr:lr)(t.x1,t.cpx1,t.cpx2,t.x2,e),(i?hr:lr)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(i?gr:pr)(t.x1,t.cpx1,t.x2,e),(i?gr:pr)(t.y1,t.cpy1,t.y2,e)]}function Ur(t){mn.call(this,t),this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.notClear=!0}function $r(t){return Fr.extend(t)}function Kr(t,e){return Zr(t,e)}function Qr(t,e,i,n){var r=Hr(t,e);return i&&("center"===n&&(i=ta(i,r.getBoundingRect())),ea(r,i)),r}function Jr(t,e,i){var n=new yn({style:{image:t,x:e.x,y:e.y,width:e.width,height:e.height},onload:function(t){if("center"===i){var r={width:t.width,height:t.height};n.setStyle(ta(e,r))}}});return n}function ta(t,e){var i,n=e.width/e.height,r=t.height*n;r<=t.width?i=t.height:(r=t.width,i=r/n);var a=t.x+t.width/2,o=t.y+t.height/2;return{x:a-r/2,y:o-i/2,width:r,height:i}}function ea(t,e){if(t.applyTransform){var i=t.getBoundingRect(),n=i.calculateTransform(e);t.applyTransform(n)}}function ia(t){var e=t.shape,i=t.style.lineWidth;return Fy(2*e.x1)===Fy(2*e.x2)&&(e.x1=e.x2=ra(e.x1,i,!0)),Fy(2*e.y1)===Fy(2*e.y2)&&(e.y1=e.y2=ra(e.y1,i,!0)),t}function na(t){var e=t.shape,i=t.style.lineWidth,n=e.x,r=e.y,a=e.width,o=e.height;return e.x=ra(e.x,i,!0),e.y=ra(e.y,i,!0),e.width=Math.max(ra(n+a,i,!1)-e.x,0===a?0:1),e.height=Math.max(ra(r+o,i,!1)-e.y,0===o?0:1),t}function ra(t,e,i){var n=Fy(2*t);return(n+Fy(e))%2===0?n/2:(n+(i?1:-1))/2}function aa(t){return null!=t&&"none"!==t}function oa(t){if("string"!=typeof t)return t;var e=Zy.get(t);return e||(e=Ye(t,-.1),1e4>Xy&&(Zy.set(t,e),Xy++)),e}function sa(t){if(t.__hoverStlDirty){t.__hoverStlDirty=!1;var e=t.__hoverStl;if(!e)return void(t.__normalStl=null);var i=t.__normalStl={},n=t.style;for(var r in e)null!=e[r]&&(i[r]=n[r]);i.fill=n.fill,i.stroke=n.stroke}}function la(t){var e=t.__hoverStl;if(e&&!t.__highlighted){var i=t.useHoverLayer;t.__highlighted=i?"layer":"plain";var n=t.__zr;if(n||!i){var r=t,a=t.style;i&&(r=n.addHover(t),a=r.style),Da(a),i||sa(r),a.extendFrom(e),ha(a,e,"fill"),ha(a,e,"stroke"),Aa(a),i||(t.dirty(!1),t.z2+=1)}}}function ha(t,e,i){!aa(e[i])&&aa(t[i])&&(t[i]=oa(t[i]))}function ua(t){t.__highlighted&&(ca(t),t.__highlighted=!1)}function ca(t){var e=t.__highlighted;if("layer"===e)t.__zr&&t.__zr.removeHover(t);else if(e){var i=t.style,n=t.__normalStl;n&&(Da(i),t.setStyle(n),Aa(i),t.z2-=1)}}function da(t,e){t.isGroup?t.traverse(function(t){!t.isGroup&&e(t)}):e(t)}function fa(t,e){e=t.__hoverStl=e!==!1&&(e||{}),t.__hoverStlDirty=!0,t.__highlighted&&(ua(t),la(t))}function pa(t){return t&&t.__isEmphasisEntered}function ga(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasisEntered&&da(this,la)}function va(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasisEntered&&da(this,ua)}function ma(){this.__isEmphasisEntered=!0,da(this,la)}function ya(){this.__isEmphasisEntered=!1,da(this,ua)}function xa(t,e,i){t.isGroup?t.traverse(function(t){!t.isGroup&&fa(t,t.hoverStyle||e)}):fa(t,t.hoverStyle||e),_a(t,i)}function _a(t,e){var i=e===!1;if(t.__hoverSilentOnTouch=null!=e&&e.hoverSilentOnTouch,!i||t.__hoverStyleTrigger){var n=i?"off":"on";t[n]("mouseover",ga)[n]("mouseout",va),t[n]("emphasis",ma)[n]("normal",ya),t.__hoverStyleTrigger=!i}}function wa(t,e,i,n,r,a,o){r=r||Gy;var s,l=r.labelFetcher,h=r.labelDataIndex,u=r.labelDimIndex,c=i.getShallow("show"),d=n.getShallow("show");(c||d)&&(l&&(s=l.getFormattedLabel(h,"normal",null,u)),null==s&&(s=w(r.defaultText)?r.defaultText(h,r):r.defaultText));var f=c?s:null,p=d?D(l?l.getFormattedLabel(h,"emphasis",null,u):null,s):null;(null!=f||null!=p)&&(ba(t,i,a,r),ba(e,n,o,r,!0)),t.text=f,e.text=p}function ba(t,e,i,n,r){return Ma(t,e,n,r),i&&o(t,i),t}function Sa(t,e,i){var n,r={isRectText:!0};i===!1?n=!0:r.autoColor=i,Ma(t,e,r,n)}function Ma(t,e,i,n){if(i=i||Gy,i.isRectText){var r=e.getShallow("position")||(n?null:"inside");"outside"===r&&(r="top"),t.textPosition=r,t.textOffset=e.getShallow("offset");var a=e.getShallow("rotate");null!=a&&(a*=Math.PI/180),t.textRotation=a,t.textDistance=D(e.getShallow("distance"),n?null:5)}var o,s=e.ecModel,l=s&&s.option.textStyle,h=Ia(e);if(h){o={};for(var u in h)if(h.hasOwnProperty(u)){var c=e.getModel(["rich",u]);Ta(o[u]={},c,l,i,n)}}return t.rich=o,Ta(t,e,l,i,n,!0),i.forceRich&&!i.textStyle&&(i.textStyle={}),t}function Ia(t){for(var e;t&&t!==t.ecModel;){var i=(t.option||Gy).rich;if(i){e=e||{};for(var n in i)i.hasOwnProperty(n)&&(e[n]=1)}t=t.parentModel}return e}function Ta(t,e,i,n,r,a){i=!r&&i||Gy,t.textFill=Ca(e.getShallow("color"),n)||i.color,t.textStroke=Ca(e.getShallow("textBorderColor"),n)||i.textBorderColor,t.textStrokeWidth=D(e.getShallow("textBorderWidth"),i.textBorderWidth),t.insideRawTextPosition=t.textPosition,r||(a&&(t.insideRollbackOpt=n,Aa(t)),null==t.textFill&&(t.textFill=n.autoColor)),t.fontStyle=e.getShallow("fontStyle")||i.fontStyle,t.fontWeight=e.getShallow("fontWeight")||i.fontWeight,t.fontSize=e.getShallow("fontSize")||i.fontSize,t.fontFamily=e.getShallow("fontFamily")||i.fontFamily,t.textAlign=e.getShallow("align"),t.textVerticalAlign=e.getShallow("verticalAlign")||e.getShallow("baseline"),t.textLineHeight=e.getShallow("lineHeight"),t.textWidth=e.getShallow("width"),t.textHeight=e.getShallow("height"),t.textTag=e.getShallow("tag"),a&&n.disableBox||(t.textBackgroundColor=Ca(e.getShallow("backgroundColor"),n),t.textPadding=e.getShallow("padding"),t.textBorderColor=Ca(e.getShallow("borderColor"),n),t.textBorderWidth=e.getShallow("borderWidth"),t.textBorderRadius=e.getShallow("borderRadius"),t.textBoxShadowColor=e.getShallow("shadowColor"),t.textBoxShadowBlur=e.getShallow("shadowBlur"),t.textBoxShadowOffsetX=e.getShallow("shadowOffsetX"),t.textBoxShadowOffsetY=e.getShallow("shadowOffsetY")),t.textShadowColor=e.getShallow("textShadowColor")||i.textShadowColor,t.textShadowBlur=e.getShallow("textShadowBlur")||i.textShadowBlur,t.textShadowOffsetX=e.getShallow("textShadowOffsetX")||i.textShadowOffsetX,t.textShadowOffsetY=e.getShallow("textShadowOffsetY")||i.textShadowOffsetY}function Ca(t,e){return"auto"!==t?t:e&&e.autoColor?e.autoColor:null}function Aa(t){var e=t.insideRollbackOpt;if(e&&null==t.textFill){var i,n=e.useInsideStyle,r=t.insideRawTextPosition,a=e.autoColor;n!==!1&&(n===!0||e.isRectText&&r&&"string"==typeof r&&r.indexOf("inside")>=0)?(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))):null!=a&&(i={textFill:null},t.textFill=a),i&&(t.insideRollback=i)}}function Da(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function ka(t,e){var i=e||e.getModel("textStyle");return z([t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" "))}function Pa(t,e,i,n,r,a){"function"==typeof r&&(a=r,r=null);var o=n&&n.isAnimationEnabled();if(o){var s=t?"Update":"",l=n.getShallow("animationDuration"+s),h=n.getShallow("animationEasing"+s),u=n.getShallow("animationDelay"+s);"function"==typeof u&&(u=u(r,n.getAnimationDelayParams?n.getAnimationDelayParams(e,r):null)),"function"==typeof l&&(l=l(r)),l>0?e.animateTo(i,l,u||0,h,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function La(t,e,i,n,r){Pa(!0,t,e,i,n,r)}function Oa(t,e,i,n,r){Pa(!1,t,e,i,n,r)}function za(t,e){for(var i=Se([]);t&&t!==e;)Ie(i,t.getLocalTransform(),i),t=t.parent;return i}function Ea(t,e,i){return e&&!d(e)&&(e=Og.getLocalTransform(e)),i&&(e=De([],e)),ae([],t,e)}function Ra(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),r=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-r:"bottom"===t?r:0];return a=Ea(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Ba(t,e,i){function n(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}function r(t){var e={position:H(t.position),rotation:t.rotation};return t.shape&&(e.shape=o({},t.shape)),e}if(t&&e){var a=n(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=a[t.anid];if(e){var n=r(t);t.attr(r(e)),La(t,n,i,t.dataIndex)}}})}}function Na(t,e){return p(t,function(t){var i=t[0];i=Vy(i,e.x),i=Wy(i,e.x+e.width);var n=t[1];return n=Vy(n,e.y),n=Wy(n,e.y+e.height),[i,n]})}function Fa(t,e){var i=Vy(t.x,e.x),n=Wy(t.x+t.width,e.x+e.width),r=Vy(t.y,e.y),a=Wy(t.y+t.height,e.y+e.height);return n>=i&&a>=r?{x:i,y:r,width:n-i,height:a-r}:void 0}function Va(t,e,i){e=o({rectHover:!0},e);var n=e.style={strokeNoScale:!0};return i=i||{x:-1,y:-1,width:2,height:2},t?0===t.indexOf("image://")?(n.image=t.slice(8),s(n,i),new yn(e)):Qr(t.replace("path://",""),e,i,"center"):void 0}function Wa(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function Ga(t,e,i){for(var n=0;n=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,n,r){function a(t){l[t].entryCount--,0===l[t].entryCount&&h.push(t)}function o(t){u[t]=!0,a(t)}if(t.length){var s=i(e),l=s.graph,h=s.noEntryList,u={};for(f(t,function(t){u[t]=!0});h.length;){var c=h.pop(),d=l[c],p=!!u[c];p&&(n.call(r,c,d.originalDeps.slice()),delete u[c]),f(d.successor,p?o:a)}f(u,function(){throw new Error("Circle dependency may exists")})}}}function ja(t){return t.replace(/^\s+/,"").replace(/\s+$/,"")}function qa(t,e,i,n){var r=e[1]-e[0],a=i[1]-i[0];if(0===r)return 0===a?i[0]:(i[0]+i[1])/2;if(n)if(r>0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/r*a+i[0]}function Ua(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?ja(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?0/0:+t}function $a(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Ka(t){return t.sort(function(t,e){return t-e}),t}function Qa(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Ja(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return 0>n?-n:0}var r=e.indexOf(".");return 0>r?0:e.length-1-r}function to(t,e){var i=Math.log,n=Math.LN10,r=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),o=Math.min(Math.max(-r+a,0),20);return isFinite(o)?o:20}function eo(t,e,i){if(!t[e])return 0;var n=g(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var r=Math.pow(10,i),a=p(t,function(t){return(isNaN(t)?0:t)/n*r*100}),o=100*r,s=p(a,function(t){return Math.floor(t)}),l=g(s,function(t,e){return t+e},0),h=p(a,function(t,e){return t-s[e]});o>l;){for(var u=Number.NEGATIVE_INFINITY,c=null,d=0,f=h.length;f>d;++d)h[d]>u&&(u=h[d],c=d);++s[c],h[c]=0,++l}return s[e]/r}function io(t){var e=2*Math.PI;return(t%e+e)%e}function no(t){return t>-tx&&tx>t}function ro(t){if(t instanceof Date)return t;if("string"==typeof t){var e=ix.exec(t);if(!e)return new Date(0/0);if(e[8]){var i=+e[4]||0;return"Z"!==e[8].toUpperCase()&&(i-=e[8].slice(0,3)),new Date(Date.UTC(+e[1],+(e[2]||1)-1,+e[3]||1,i,+(e[5]||0),+e[6]||0,+e[7]||0))}return new Date(+e[1],+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0),+e[6]||0,+e[7]||0)}return new Date(null==t?0/0:Math.round(t))}function ao(t){return Math.pow(10,oo(t))}function oo(t){return Math.floor(Math.log(t)/Math.LN10)}function so(t,e){var i,n=oo(t),r=Math.pow(10,n),a=t/r;return i=e?1.5>a?1:2.5>a?2:4>a?3:7>a?5:10:1>a?1:2>a?2:3>a?3:5>a?5:10,t=i*r,n>=-20?+t.toFixed(0>n?-n:0):t}function lo(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),r=+t[n-1],a=i-n;return a?r+a*(t[n]-r):r}function ho(t){function e(t,i,n){return t.interval[n]s;s++)a[s]<=i&&(a[s]=i,o[s]=s?1:1-n),i=a[s],n=o[s];a[0]===a[1]&&o[0]*o[1]!==1?t.splice(r,1):r++}return t}function uo(t){return t-parseFloat(t)>=0}function co(t){return isNaN(t)?"-":(t=(t+"").split("."),t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:""))}function fo(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}function po(t){return null==t?"":(t+"").replace(ax,function(t,e){return ox[e]})}function go(t,e,i){_(e)||(e=[e]);var n=e.length;if(!n)return"";for(var r=e[0].$vars||[],a=0;as;s++)for(var l=0;l':' ':{renderMode:r,content:"{marker"+a+"|} ",style:{color:i}}:""
+}function yo(t,e){return t+="","0000".substr(0,e-t.length)+t}function xo(t,e,i){("week"===t||"month"===t||"quarter"===t||"half-year"===t||"year"===t)&&(t="MM-dd\nyyyy");var n=ro(e),r=i?"UTC":"",a=n["get"+r+"FullYear"](),o=n["get"+r+"Month"]()+1,s=n["get"+r+"Date"](),l=n["get"+r+"Hours"](),h=n["get"+r+"Minutes"](),u=n["get"+r+"Seconds"](),c=n["get"+r+"Milliseconds"]();return t=t.replace("MM",yo(o,2)).replace("M",o).replace("yyyy",a).replace("yy",a%100).replace("dd",yo(s,2)).replace("d",s).replace("hh",yo(l,2)).replace("h",l).replace("mm",yo(h,2)).replace("m",h).replace("ss",yo(u,2)).replace("s",u).replace("SSS",yo(c,3))}function _o(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function wo(t,e,i,n,r){var a=0,o=0;null==n&&(n=1/0),null==r&&(r=1/0);var s=0;e.eachChild(function(l,h){var u,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(h+1),g=p&&p.getBoundingRect();if("horizontal"===t){var v=f.width+(g?-g.x+f.x:0);u=a+v,u>n||l.newline?(a=0,u=v,o+=s+i,s=f.height):s=Math.max(s,f.height)}else{var m=f.height+(g?-g.y+f.y:0);c=o+m,c>r||l.newline?(a+=s+i,o=0,c=m,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=o,"horizontal"===t?a=u+i:o=c+i)})}function bo(t,e,i){i=rx(i||0);var n=e.width,r=e.height,a=Ua(t.left,n),o=Ua(t.top,r),s=Ua(t.right,n),l=Ua(t.bottom,r),h=Ua(t.width,n),u=Ua(t.height,r),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(h)&&(h=n-s-d-a),isNaN(u)&&(u=r-l-c-o),null!=f&&(isNaN(h)&&isNaN(u)&&(f>n/r?h=.8*n:u=.8*r),isNaN(h)&&(h=f*u),isNaN(u)&&(u=h/f)),isNaN(a)&&(a=n-s-h-d),isNaN(o)&&(o=r-l-u-c),t.left||t.right){case"center":a=n/2-h/2-i[3];break;case"right":a=n-h-d}switch(t.top||t.bottom){case"middle":case"center":o=r/2-u/2-i[0];break;case"bottom":o=r-u-c}a=a||0,o=o||0,isNaN(h)&&(h=n-d-a-(s||0)),isNaN(u)&&(u=r-c-o-(l||0));var p=new gi(a+i[3],o+i[0],h,u);return p.margin=i,p}function So(t,e,i){function n(i,n){var o={},l=0,h={},u=0,c=2;if(dx(i,function(e){h[e]=t[e]}),dx(i,function(t){r(e,t)&&(o[t]=h[t]=e[t]),a(o,t)&&l++,a(h,t)&&u++}),s[n])return a(e,i[1])?h[i[2]]=null:a(e,i[2])&&(h[i[1]]=null),h;if(u!==c&&l){if(l>=c)return o;for(var d=0;dn;n++)if(t[n].length>e)return t[n];return t[i-1]}function Ao(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:N(),categoryAxisMap:N()},n=Mx[e];return n?(n(t,i,i.axisMap,i.categoryAxisMap),i):void 0}function Do(t){return"category"===t.get("type")}function ko(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===Ax?{}:[]),this.sourceFormat=t.sourceFormat||Dx,this.seriesLayoutBy=t.seriesLayoutBy||Px,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&N(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function Po(t){var e=t.option.source,i=Dx;if(I(e))i=kx;else if(_(e)){0===e.length&&(i=Tx);for(var n=0,r=e.length;r>n;n++){var a=e[n];if(null!=a){if(_(a)){i=Tx;break}if(S(a)){i=Cx;break}}}}else if(S(e)){for(var o in e)if(e.hasOwnProperty(o)&&d(e[o])){i=Ax;break}}else if(null!=e)throw new Error("Invalid data");Ox(t).sourceFormat=i}function Lo(t){return Ox(t).source}function Oo(t){Ox(t).datasetMap=N()}function zo(t){var e=t.option,i=e.data,n=I(i)?kx:Ix,r=!1,a=e.seriesLayoutBy,o=e.sourceHeader,s=e.dimensions,l=Vo(t);if(l){var h=l.option;i=h.source,n=Ox(l).sourceFormat,r=!0,a=a||h.seriesLayoutBy,null==o&&(o=h.sourceHeader),s=s||h.dimensions}var u=Eo(i,n,a,o,s),c=e.encode;!c&&l&&(c=Fo(t,l,i,n,a,u)),Ox(t).source=new ko({data:i,fromDataset:r,seriesLayoutBy:a,sourceFormat:n,dimensionsDefine:u.dimensionsDefine,startIndex:u.startIndex,dimensionsDetectCount:u.dimensionsDetectCount,encodeDefine:c})}function Eo(t,e,i,n,r){if(!t)return{dimensionsDefine:Ro(r)};var a,o,s;if(e===Tx)"auto"===n||null==n?Bo(function(t){null!=t&&"-"!==t&&(b(t)?null==o&&(o=1):o=0)},i,t,10):o=n?1:0,r||1!==o||(r=[],Bo(function(t,e){r[e]=null!=t?t:""},i,t)),a=r?r.length:i===Lx?t.length:t[0]?t[0].length:null;else if(e===Cx)r||(r=No(t),s=!0);else if(e===Ax)r||(r=[],s=!0,f(t,function(t,e){r.push(e)}));else if(e===Ix){var l=Vn(t[0]);a=_(l)&&l.length||1}var h;return s&&f(r,function(t,e){"name"===(S(t)?t.name:t)&&(h=e)}),{startIndex:o,dimensionsDefine:Ro(r),dimensionsDetectCount:a,potentialNameDimIndex:h}}function Ro(t){if(t){var e=N();return p(t,function(t){if(t=o({},S(t)?t:{name:t}),null==t.name)return t;t.name+="",null==t.displayName&&(t.displayName=t.name);var i=e.get(t.name);return i?t.name+="-"+i.count++:e.set(t.name,{count:1}),t})}}function Bo(t,e,i,n){if(null==n&&(n=1/0),e===Lx)for(var r=0;rr;r++)t(i[r]?i[r][0]:null,r);else for(var a=i[0]||[],r=0;rr;r++)t(a[r],r)}function No(t){for(var e,i=0;ix&&null==y;x++)Go(i,n,r,a.dimensionsDefine,a.startIndex,x)||(y=x);if(null!=y){s.value=y;var _=a.potentialNameDimIndex||Math.max(y-1,0);h.push(_),l.push(_)}}return l.length&&(s.itemName=l),h.length&&(s.seriesName=h),s}function Vo(t){var e=t.option,i=e.data;return i?void 0:t.ecModel.getComponent("dataset",e.datasetIndex||0)}function Wo(t,e){return Go(t.data,t.sourceFormat,t.seriesLayoutBy,t.dimensionsDefine,t.startIndex,e)}function Go(t,e,i,n,r,a){function o(t){return null!=t&&isFinite(t)&&""!==t?!1:b(t)&&"-"!==t?!0:void 0}var s,l=5;if(I(t))return!1;var h;if(n&&(h=n[a],h=S(h)?h.name:h),e===Tx)if(i===Lx){for(var u=t[a],c=0;c<(u||[]).length&&l>c;c++)if(null!=(s=o(u[r+c])))return s}else for(var c=0;cc;c++){var d=t[r+c];if(d&&null!=(s=o(d[a])))return s}else if(e===Cx){if(!h)return;for(var c=0;cc;c++){var f=t[c];if(f&&null!=(s=o(f[h])))return s}}else if(e===Ax){if(!h)return;var u=t[h];if(!u||I(u))return!1;for(var c=0;cc;c++)if(null!=(s=o(u[c])))return s}else if(e===Ix)for(var c=0;cc;c++){var f=t[c],p=Vn(f);if(!_(p))return!1;if(null!=(s=o(p[a])))return s}return!1}function Ho(t,e){if(e){var i=e.seiresIndex,n=e.seriesId,r=e.seriesName;return null!=i&&t.componentIndex!==i||null!=n&&t.id!==n||null!=r&&t.name!==r}}function Zo(t,e){var i=t.color&&!t.colorLayer;f(e,function(e,a){"colorLayer"===a&&i||yx.hasClass(a)||("object"==typeof e?t[a]=t[a]?r(t[a],e,!1):n(e):null==t[a]&&(t[a]=e))})}function Xo(t){t=t,this.option={},this.option[zx]=1,this._componentsMap=N({series:[]}),this._seriesIndices,this._seriesIndicesMap,Zo(t,this._theme.option),r(t,_x,!1),this.mergeOption(t)}function Yo(t,e){_(e)||(e=e?[e]:[]);var i={};return f(e,function(e){i[e]=(t.get(e)||[]).slice()}),i}function jo(t,e,i){var n=e.type?e.type:i?i.subType:yx.determineSubType(t,e);return n}function qo(t,e){t._seriesIndicesMap=N(t._seriesIndices=p(e,function(t){return t.componentIndex})||[])}function Uo(t,e){return e.hasOwnProperty("subType")?v(t,function(t){return t.subType===e.subType}):t}function $o(t){f(Rx,function(e){this[e]=y(t[e],t)},this)}function Ko(){this._coordinateSystems=[]}function Qo(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function Jo(t,e,i){var n,r,a=[],o=[],s=t.timeline;if(t.baseOption&&(r=t.baseOption),(s||t.options)&&(r=r||{},a=(t.options||[]).slice()),t.media){r=r||{};var l=t.media;Nx(l,function(t){t&&t.option&&(t.query?o.push(t):n||(n=t))})}return r||(r=t),r.timeline||(r.timeline=s),Nx([r].concat(a).concat(p(o,function(t){return t.option})),function(t){Nx(e,function(e){e(t,i)})}),{baseOption:r,timelineOptions:a,mediaDefault:n,mediaList:o}}function ts(t,e,i){var n={width:e,height:i,aspectratio:e/i},r=!0;return f(t,function(t,e){var i=e.match(Gx);if(i&&i[1]&&i[2]){var a=i[1],o=i[2].toLowerCase();es(n[o],t,a)||(r=!1)}}),r}function es(t,e,i){return"min"===i?t>=e:"max"===i?e>=t:t===e}function is(t,e){return t.join(",")===e.join(",")}function ns(t,e){e=e||{},Nx(e,function(e,i){if(null!=e){var n=t[i];if(yx.hasClass(i)){e=Nn(e),n=Nn(n);var r=Gn(n,e);t[i]=Vx(r,function(t){return t.option&&t.exist?Wx(t.exist,t.option,!0):t.exist||t.option})}else t[i]=Wx(n,e,!0)}})}function rs(t){var e=t&&t.itemStyle;if(e)for(var i=0,n=Xx.length;n>i;i++){var a=Xx[i],o=e.normal,s=e.emphasis;o&&o[a]&&(t[a]=t[a]||{},t[a].normal?r(t[a].normal,o[a]):t[a].normal=o[a],o[a]=null),s&&s[a]&&(t[a]=t[a]||{},t[a].emphasis?r(t[a].emphasis,s[a]):t[a].emphasis=s[a],s[a]=null)}}function as(t,e,i){if(t&&t[e]&&(t[e].normal||t[e].emphasis)){var n=t[e].normal,r=t[e].emphasis;n&&(i?(t[e].normal=t[e].emphasis=null,s(t[e],n)):t[e]=n),r&&(t.emphasis=t.emphasis||{},t.emphasis[e]=r)}}function os(t){as(t,"itemStyle"),as(t,"lineStyle"),as(t,"areaStyle"),as(t,"label"),as(t,"labelLine"),as(t,"upperLabel"),as(t,"edgeLabel")}function ss(t,e){var i=Zx(t)&&t[e],n=Zx(i)&&i.textStyle;if(n)for(var r=0,a=sm.length;a>r;r++){var e=sm[r];n.hasOwnProperty(e)&&(i[e]=n[e])}}function ls(t){t&&(os(t),ss(t,"label"),t.emphasis&&ss(t.emphasis,"label"))}function hs(t){if(Zx(t)){rs(t),os(t),ss(t,"label"),ss(t,"upperLabel"),ss(t,"edgeLabel"),t.emphasis&&(ss(t.emphasis,"label"),ss(t.emphasis,"upperLabel"),ss(t.emphasis,"edgeLabel"));var e=t.markPoint;e&&(rs(e),ls(e));var i=t.markLine;i&&(rs(i),ls(i));var n=t.markArea;n&&ls(n);var r=t.data;if("graph"===t.type){r=r||t.nodes;var a=t.links||t.edges;if(a&&!I(a))for(var o=0;o=0;p--){var g=t[p];if(s||(d=g.data.rawIndexOf(g.stackedByDimension,c)),d>=0){var v=g.data.getByRawIndex(g.stackResultDimension,d);if(u>=0&&v>0||0>=u&&0>v){u+=v,f=v;break}}}return n[0]=u,n[1]=f,n});o.hostModel.setData(l),e.data=l})}function vs(t,e){ko.isInstance(t)||(t=ko.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===kx&&(this._offset=0,this._dimSize=e,this._data=i);var r=Qx[n===Tx?n+"_"+t.seriesLayoutBy:n];o(this,r)}function ms(){return this._data.length}function ys(t){return this._data[t]}function xs(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function zs(t,e){f(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,x(Es,e))})}function Es(t){var e=Rs(t);e&&e.setOutputEnd(this.count())}function Rs(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var r=n.agentStubMap;r&&(n=r.get(t.uid))}return n}}function Bs(){this.group=new lv,this.uid=Za("viewChart"),this.renderTask=Is({plan:Vs,reset:Ws}),this.renderTask.context={view:this}}function Ns(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i=0?n():c=setTimeout(n,-a),h=r};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){l=t},d}function Hs(t,e,i,n){var r=t[e];if(r){var a=r[p_]||r,o=r[v_],s=r[g_];if(s!==i||o!==n){if(null==i||!n)return t[e]=a;r=t[e]=Gs(a,i,"debounce"===n),r[p_]=a,r[v_]=n,r[g_]=i}return r}}function Zs(t,e){var i=t[e];i&&i[p_]&&(t[e]=i[p_])}function Xs(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;var i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=N()}function Ys(t,e,i,n,r){function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}r=r||{};var o;f(e,function(e){if(!r.visualType||r.visualType===e.visualType){var s=t._stageTaskMap.get(e.uid),l=s.seriesTaskMap,h=s.overallTask;if(h){var u,c=h.agentStubMap;c.each(function(t){a(r,t)&&(t.dirty(),u=!0)}),u&&h.dirty(),S_(h,n);var d=t.getPerformArgs(h,r.block);c.each(function(t){t.perform(d)}),o|=h.perform(d)}else l&&l.each(function(s){a(r,s)&&s.dirty();var l=t.getPerformArgs(s,r.block);l.skip=!e.performRawSeries&&i.isSeriesFiltered(s.context.model),S_(s,n),o|=s.perform(l)})}}),t.unfinished|=o}function js(t,e,i,n,r){function a(i){var a=i.uid,s=o.get(a)||o.set(a,Is({plan:Js,reset:tl,count:il}));s.context={model:i,ecModel:n,api:r,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},nl(t,i,s)}var o=i.seriesTaskMap||(i.seriesTaskMap=N()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(a):s?n.eachRawSeriesByType(s,a):l&&l(n,r).each(a);var h=t._pipelineMap;o.each(function(t,e){h.get(e)||(t.dispose(),o.removeKey(e))})}function qs(t,e,i,n,r){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,Is({reset:$s,onDirty:Qs})),o.dirty()),n.context={model:e,overallProgress:u,modifyOutputEnd:c},n.agent=o,n.__block=u,nl(t,e,n)}var o=i.overallTask=i.overallTask||Is({reset:Us});o.context={ecModel:n,api:r,overallReset:e.overallReset,scheduler:t};var s=o.agentStubMap=o.agentStubMap||N(),l=e.seriesType,h=e.getTargetSeries,u=!0,c=e.modifyOutputEnd;l?n.eachRawSeriesByType(l,a):h?h(n,r).each(a):(u=!1,f(n.getSeries(),a));var d=t._pipelineMap;s.each(function(t,e){d.get(e)||(t.dispose(),o.dirty(),s.removeKey(e))})}function Us(t){t.overallReset(t.ecModel,t.api,t.payload)}function $s(t){return t.overallProgress&&Ks}function Ks(){this.agent.dirty(),this.getDownstream().dirty()}function Qs(){this.agent&&this.agent.dirty()}function Js(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function tl(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Nn(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?p(e,function(t,e){return el(e)}):M_}function el(t){return function(e,i){var n=i.data,r=i.resetDefines[t];if(r&&r.dataEach)for(var a=e.start;a0?parseInt(n,10)/100:n?parseFloat(n):0;var r=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,r)}i=i.nextSibling}}function hl(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),s(e.__inheritedStyle,t.__inheritedStyle))}function ul(t){for(var e=z(t).split(E_),i=[],n=0;n0;a-=2){var o=r[a],s=r[a-1];switch(n=n||be(),s){case"translate":o=z(o).split(E_),Te(n,n,[parseFloat(o[0]),parseFloat(o[1]||0)]);break;case"scale":o=z(o).split(E_),Ae(n,n,[parseFloat(o[0]),parseFloat(o[1]||o[0])]);break;case"rotate":o=z(o).split(E_),Ce(n,n,parseFloat(o[0]));break;case"skew":o=z(o).split(E_),console.warn("Skew transform is not supported yet");break;case"matrix":var o=z(o).split(E_);n[0]=parseFloat(o[0]),n[1]=parseFloat(o[1]),n[2]=parseFloat(o[2]),n[3]=parseFloat(o[3]),n[4]=parseFloat(o[4]),n[5]=parseFloat(o[5])}}}e.setLocalTransform(n)}function pl(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};W_.lastIndex=0;for(var r;null!=(r=W_.exec(e));)n[r[1]]=r[2];for(var a in N_)N_.hasOwnProperty(a)&&null!=n[a]&&(i[N_[a]]=n[a]);return i}function gl(t,e,i){var n=e/t.width,r=i/t.height,a=Math.min(n,r),o=[a,a],s=[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2];return{scale:o,position:s}}function vl(t){return function(e,i,n){e=e&&e.toLowerCase(),bg.prototype[t].call(this,e,i,n)}}function ml(){bg.call(this)}function yl(t,e,i){function r(t,e){return t.__prio-e.__prio}i=i||{},"string"==typeof e&&(e=xw[e]),this.id,this.group,this._dom=t;var a="canvas",o=this._zr=On(t,{renderer:i.renderer||a,devicePixelRatio:i.devicePixelRatio,width:i.width,height:i.height});this._throttledZrFlush=Gs(y(o.flush,o),17);var e=n(e);e&&Ux(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Ko;var s=this._api=Rl(this);Si(yw,r),Si(gw,r),this._scheduler=new Xs(this,s,gw,yw),bg.call(this,this._ecEventProcessor=new Bl),this._messageCenter=new ml,this._initEvents(),this.resize=y(this.resize,this),this._pendingActions=[],o.animation.on("frame",this._onframe,this),Tl(o,this),E(this)}function xl(t,e,i){var n,r=this._model,a=this._coordSysMgr.getCoordinateSystems();e=qn(r,e);for(var o=0;oe.get("hoverLayerThreshold")&&!tg.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function zl(t,e){var i=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==i&&t.setStyle("blend",i),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",i)})})}function El(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function Rl(t){var e=t._coordSysMgr;return o(new $o(t),{getCoordinateSystems:y(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function Bl(){this.eventInfo}function Nl(t){function e(t,e){for(var i=0;i65535?Ow:zw}function vh(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function mh(t,e){f(Ew.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,f(Rw,function(i){t[i]=n(e[i])}),t._calculationInfo=o(e._calculationInfo)}function yh(t){var e=t._invertedIndicesMap;f(e,function(i,n){var r=t._dimensionInfos[n],a=r.ordinalMeta;if(a){i=e[n]=new Ow(a.categories.length);for(var o=0;o=0?this._indices[t]:-1}function bh(t,e){var i=t._idList[e];return null==i&&(i=xh(t,t._idDimIdx,e)),null==i&&(i=Pw+e),i}function Sh(t){return _(t)||(t=[t]),t}function Mh(t,e){var i=t.dimensions,n=new Bw(p(i,t.getDimensionInfo,t),t.hostModel);mh(n,t);for(var r=n._storage={},a=t._storage,o=0;o=0?(r[s]=Ih(a[s]),n._rawExtent[s]=Th(),n._extent[s]=null):r[s]=a[s])}return n}function Ih(t){for(var e=new Array(t.length),i=0;ip;p++){var g=a[p]=o({},S(a[p])?a[p]:{name:a[p]}),v=g.name,m=c[p]={otherDims:{}};null!=v&&null==h.get(v)&&(m.name=m.displayName=v,h.set(v,p)),null!=g.type&&(m.type=g.type),null!=g.displayName&&(m.displayName=g.displayName)}l.each(function(t,e){if(t=Nn(t).slice(),1===t.length&&t[0]<0)return void l.set(e,!1);var i=l.set(e,[]);f(t,function(t,n){b(t)&&(t=h.get(t)),null!=t&&d>t&&(i[n]=t,r(c[t],e,n))})});var y=0;f(t,function(t){var e,t,i,a;if(b(t))e=t,t={};else{e=t.name;var o=t.ordinalMeta;t.ordinalMeta=null,t=n(t),t.ordinalMeta=o,i=t.dimsDef,a=t.otherDims,t.name=t.coordDim=t.coordDimIndex=t.dimsDef=t.otherDims=null}var h=l.get(e);if(h!==!1){var h=Nn(h);if(!h.length)for(var u=0;u<(i&&i.length||1);u++){for(;yI;I++){var m=c[I]=c[I]||{},T=m.coordDim;null==T&&(m.coordDim=Dh(M,u,w),m.coordDimIndex=0,(!x||0>=_)&&(m.isExtraCoord=!0),_--),null==m.name&&(m.name=Dh(m.coordDim,h)),null==m.type&&Wo(e,I,m.name)&&(m.type="ordinal")}return c}function Ah(t,e,i,n){var r=Math.max(t.dimensionsDetectCount||1,e.length,i.length,n||0);return f(e,function(t){var e=t.dimsDef;e&&(r=Math.max(r,e.length))
+}),r}function Dh(t,e,i){if(i||null!=e.get(t)){for(var n=0;null!=e.get(t+n);)n++;t+=n}return e.set(t,!0),t}function kh(t,e,i){i=i||{};var n,r,a,o,s=i.byIndex,l=i.stackedCoordDimension,h=!(!t||!t.get("stack"));if(f(e,function(t,i){b(t)&&(e[i]=t={name:t}),h&&!t.isExtraCoord&&(s||n||!t.ordinalMeta||(n=t),r||"ordinal"===t.type||"time"===t.type||l&&l!==t.coordDim||(r=t))}),!r||s||n||(s=!0),r){a="__\x00ecstackresult",o="__\x00ecstackedover",n&&(n.createInvertedIndices=!0);var u=r.coordDim,c=r.type,d=0;f(e,function(t){t.coordDim===u&&d++}),e.push({name:a,coordDim:u,coordDimIndex:d,type:c,isExtraCoord:!0,isCalculationCoord:!0}),d++,e.push({name:o,coordDim:o,coordDimIndex:d,type:c,isExtraCoord:!0,isCalculationCoord:!0})}return{stackedDimension:r&&r.name,stackedByDimension:n&&n.name,isStackedByIndex:s,stackedOverDimension:o,stackResultDimension:a}}function Ph(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function Lh(t,e){return Ph(t,e)?t.getCalculationInfo("stackResultDimension"):e}function Oh(t,e,i){i=i||{},ko.isInstance(t)||(t=ko.seriesDataToSource(t));var n,r=e.get("coordinateSystem"),a=Ko.get(r),o=Ao(e);o&&(n=p(o.coordSysDims,function(t){var e={name:t},i=o.axisMap.get(t);if(i){var n=i.get("type");e.type=fh(n)}return e})),n||(n=a&&(a.getDimensionsInfo?a.getDimensionsInfo():a.dimensions.slice())||["x","y"]);var s,l,h=Vw(t,{coordDimensions:n,generateCoord:i.generateCoord});o&&f(h,function(t,e){var i=t.coordDim,n=o.categoryAxisMap.get(i);n&&(null==s&&(s=e),t.ordinalMeta=n.getOrdinalMeta()),null!=t.otherDims.itemName&&(l=!0)}),l||null==s||(h[s].otherDims.itemName=0);var u=kh(e,h),c=new Bw(h,e);c.setCalculationInfo(u);var d=null!=s&&zh(t)?function(t,e,i,n){return n===s?i:this.defaultDimValueGetter(t,e,i,n)}:null;return c.hasItemOption=!1,c.initData(t,null,d),c}function zh(t){if(t.sourceFormat===Ix){var e=Eh(t.data||[]);return null!=e&&!_(Vn(e))}}function Eh(t){for(var e=0;eo&&(o=r.interval=i),null!=n&&o>n&&(o=r.interval=n);var s=r.intervalPrecision=Wh(o),l=r.niceTickExtent=[Zw(Math.ceil(t[0]/o)*o,s),Zw(Math.floor(t[1]/o)*o,s)];return Hh(l,t),r}function Wh(t){return Ja(t)+2}function Gh(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Hh(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Gh(t,0,e),Gh(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Zh(t,e,i,n){var r=[];if(!t)return r;var a=1e4;e[0]a)return[];return e[1]>(r.length?r[r.length-1]:i[1])&&r.push(e[1]),r}function Xh(t){return t.get("stack")||jw+t.seriesIndex}function Yh(t){return t.dim+t.index}function jh(t){var e=[],i=t.axis,n="axis0";if("category"===i.type){for(var r=i.getBandWidth(),a=0;ae&&(e=Math.min(e,s),t.width&&(e=Math.min(e,t.width)),s-=e,t.width=e,l--)}),h=(s-a)/(l+(l-1)*o),h=Math.max(h,0);var u,c=0;f(n,function(t){t.width||(t.width=h),u=t,c+=t.width*(1+o)}),u&&(c-=u.width*o);var d=-c/2;f(n,function(t,n){i[e][n]=i[e][n]||{offset:d,width:t.width},d+=t.width*(1+o)})}),i}function Kh(t,e,i){if(t&&e){var n=t[Yh(e)];return null!=n&&null!=i&&(n=n[Xh(i)]),n}}function Qh(t,e){var i=qh(t,e),n=Uh(i),r={};f(i,function(t){var e=t.getData(),i=t.coordinateSystem,a=i.getBaseAxis(),o=Xh(t),s=n[Yh(a)][o],l=s.offset,h=s.width,u=i.getOtherAxis(a),c=t.get("barMinHeight")||0;r[o]=r[o]||[],e.setLayout({offset:l,size:h});for(var d=e.mapDimension(u.dim),f=e.mapDimension(a.dim),p=Ph(e,d),g=u.isHorizontal(),v=eu(a,u,p),m=0,y=e.count();y>m;m++){var x=e.get(d,m),_=e.get(f,m);if(!isNaN(x)){var w=x>=0?"p":"n",b=v;p&&(r[o][_]||(r[o][_]={p:v,n:v}),b=r[o][_][w]);var S,M,I,T;if(g){var C=i.dataToPoint([x,_]);S=b,M=C[1]+l,I=C[0]-v,T=h,Math.abs(I)I?-1:1)*c),p&&(r[o][_][w]+=I)}else{var C=i.dataToPoint([_,x]);S=C[0]+l,M=b,I=h,T=C[1]-v,Math.abs(T)=T?-1:1)*c),p&&(r[o][_][w]+=T)}e.setItemLayout(m,{x:S,y:M,width:I,height:T})}}},this)}function Jh(t){return t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type}function tu(t){return t.pipelineContext&&t.pipelineContext.large}function eu(t,e){var i,n,r=e.getGlobalExtent();r[0]>r[1]?(i=r[1],n=r[0]):(i=r[0],n=r[1]);var a=e.toGlobalCoord(e.dataToCoord(0));return i>a&&(a=i),a>n&&(a=n),a}function iu(t,e){return ub(t,hb(e))}function nu(t,e){var i,n,r,a=t.type,o=e.getMin(),s=e.getMax(),l=null!=o,h=null!=s,u=t.getExtent();"ordinal"===a?i=e.getCategories().length:(n=e.get("boundaryGap"),_(n)||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=Ua(n[0],1),n[1]=Ua(n[1],1),r=u[1]-u[0]||Math.abs(u[0])),null==o&&(o="ordinal"===a?i?0:0/0:u[0]-n[0]*r),null==s&&(s="ordinal"===a?i?i-1:0/0:u[1]+n[1]*r),"dataMin"===o?o=u[0]:"function"==typeof o&&(o=o({min:u[0],max:u[1]})),"dataMax"===s?s=u[1]:"function"==typeof s&&(s=s({min:u[0],max:u[1]})),(null==o||!isFinite(o))&&(o=0/0),(null==s||!isFinite(s))&&(s=0/0),t.setBlank(C(o)||C(s)||"ordinal"===a&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(o>0&&s>0&&!l&&(o=0),0>o&&0>s&&!h&&(s=0));var c=e.ecModel;if(c&&"time"===a){var d,p=qh("bar",c);if(f(p,function(t){d|=t.getBaseAxis()===e.axis}),d){var g=Uh(p),v=ru(o,s,e,g);o=v.min,s=v.max}}return[o,s]}function ru(t,e,i,n){var r=i.axis.getExtent(),a=r[1]-r[0],o=Kh(n,i.axis);if(void 0===o)return{min:t,max:e};var s=1/0;f(o,function(t){s=Math.min(t.offset,s)});var l=-1/0;f(o,function(t){l=Math.max(t.offset+t.width,l)}),s=Math.abs(s),l=Math.abs(l);var h=s+l,u=e-t,c=1-(s+l)/a,d=u/c-u;return e+=d*(l/h),t-=d*(s/h),{min:t,max:e}}function au(t,e){var i=nu(t,e),n=null!=e.getMin(),r=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var o=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:r,minInterval:"interval"===o||"time"===o?e.get("minInterval"):null,maxInterval:"interval"===o||"time"===o?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)}function ou(t,e){if(e=e||t.get("type"))switch(e){case"category":return new Hw(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new Yw;default:return(Rh.getClass(e)||Yw).create(t)}}function su(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||0>i&&0>n)}function lu(t){var e=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof e?e=function(e){return function(i){return i=t.scale.getLabel(i),e.replace("{value}",null!=i?i:"")}}(e):"function"==typeof e?function(n,r){return null!=i&&(r=n-i),e(hu(t,n),r)}:function(e){return t.scale.getLabel(e)}}function hu(t,e){return"category"===t.type?t.scale.getLabel(e):e}function uu(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,r,a="category"===t.type,o=i.getExtent();a?r=i.count():(n=i.getTicks(),r=n.length);var s,l=t.getLabelModel(),h=lu(t),u=1;r>40&&(u=Math.ceil(r/40));for(var c=0;r>c;c+=u){var d=n?n[c]:o[0]+c,f=h(d),p=l.getTextRect(f),g=cu(p,l.get("rotate")||0);s?s.union(g):s=g}return s}}function cu(t,e){var i=e*Math.PI/180,n=t.plain(),r=n.width,a=n.height,o=r*Math.cos(i)+a*Math.sin(i),s=r*Math.sin(i)+a*Math.cos(i),l=new gi(n.x,n.y,o,s);return l}function du(t,e){if("image"!==this.type){var i=this.style,n=this.shape;n&&"line"===n.symbolType?i.stroke=t:this.__isEmptyBrush?(i.stroke=t,i.fill=e||"#fff"):(i.fill&&(i.fill=t),i.stroke&&(i.stroke=t)),this.dirty(!1)}}function fu(t,e,i,n,r,a,o){var s=0===t.indexOf("empty");s&&(t=t.substr(5,1).toLowerCase()+t.substr(6));var l;return l=0===t.indexOf("image://")?Jr(t.slice(8),new gi(e,i,n,r),o?"center":"cover"):0===t.indexOf("path://")?Qr(t.slice(7),{},new gi(e,i,n,r),o?"center":"cover"):new Mb({shape:{symbolType:t,x:e,y:i,width:n,height:r}}),l.__isEmptyBrush=s,l.setColor=du,l.setColor(a),l}function pu(t){return Oh(t.getSource(),t)}function gu(t,e){var i=e;Wa.isInstance(e)||(i=new Wa(e),c(i,vb));var n=ou(i);return n.setExtent(t[0],t[1]),au(n,i),n}function vu(t){c(t,vb)}function mu(t,e){return Math.abs(t-e)>1^-(1&s),l=l>>1^-(1&l),s+=r,l+=a,r=s,a=l,n.push([s/i,l/i])}return n}function bu(t){return"category"===t.type?Mu(t):Cu(t)}function Su(t,e){return"category"===t.type?Tu(t,e):{ticks:t.scale.getTicks()}}function Mu(t){var e=t.getLabelModel(),i=Iu(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function Iu(t,e){var i=Au(t,"labels"),n=Ru(e),r=Du(i,n);if(r)return r;var a,o;return w(n)?a=Eu(t,n):(o="auto"===n?Pu(t):n,a=zu(t,o)),ku(i,n,{labels:a,labelCategoryInterval:o})}function Tu(t,e){var i=Au(t,"ticks"),n=Ru(e),r=Du(i,n);if(r)return r;var a,o;if((!e.get("show")||t.scale.isBlank())&&(a=[]),w(n))a=Eu(t,n,!0);else if("auto"===n){var s=Iu(t,t.getLabelModel());o=s.labelCategoryInterval,a=p(s.labels,function(t){return t.tickValue})}else o=n,a=zu(t,o,!0);return ku(i,n,{ticks:a,tickCategoryInterval:o})}function Cu(t){var e=t.scale.getTicks(),i=lu(t);return{labels:p(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function Au(t,e){return Db(t)[e]||(Db(t)[e]=[])}function Du(t,e){for(var i=0;i40&&(s=Math.max(1,Math.floor(o/40)));for(var l=a[0],h=t.dataToCoord(l+1)-t.dataToCoord(l),u=Math.abs(h*Math.cos(n)),c=Math.abs(h*Math.sin(n)),d=0,f=0;l<=a[1];l+=s){var p=0,g=0,v=Ei(i(l),e.font,"center","top");p=1.3*v.width,g=1.3*v.height,d=Math.max(d,p,7),f=Math.max(f,g,7)}var m=d/u,y=f/c;isNaN(m)&&(m=1/0),isNaN(y)&&(y=1/0);var x=Math.max(0,Math.floor(Math.min(m,y))),_=Db(t.model),w=_.lastAutoInterval,b=_.lastTickCount;return null!=w&&null!=b&&Math.abs(w-x)<=1&&Math.abs(b-o)<=1&&w>x?x=w:(_.lastTickCount=o,_.lastAutoInterval=x),x}function Ou(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function zu(t,e,i){function n(t){l.push(i?t:{formattedLabel:r(t),rawLabel:a.getLabel(t),tickValue:t})}var r=lu(t),a=t.scale,o=a.getExtent(),s=t.getLabelModel(),l=[],h=Math.max((e||0)+1,1),u=o[0],c=a.count();0!==u&&h>1&&c/h>2&&(u=Math.round(Math.ceil(u/h)*h));var d={min:s.get("showMinLabel"),max:s.get("showMaxLabel")};d.min&&u!==o[0]&&n(o[0]);for(var f=u;f<=o[1];f+=h)n(f);return d.max&&f!==o[1]&&n(o[1]),l}function Eu(t,e,i){var n=t.scale,r=lu(t),a=[];return f(n.getTicks(),function(t){var o=n.getLabel(t);e(t,o)&&a.push(i?t:{formattedLabel:r(t),rawLabel:o,tickValue:t})}),a}function Ru(t){var e=t.get("interval");return null==e?"auto":e}function Bu(t,e){var i=t[1]-t[0],n=e,r=i/n/2;t[0]+=r,t[1]-=r}function Nu(t,e,i,n,r){function a(t,e){return u?t>e:e>t}var o=e.length;if(t.onBand&&!n&&o){var s,l=t.getExtent();if(1===o)e[0].coord=l[0],s=e[1]={coord:l[0]};else{var h=e[1].coord-e[0].coord;f(e,function(t){t.coord-=h/2;var e=e||0;e%2>0&&(t.coord-=h/(2*(e+1)))}),s={coord:e[o-1].coord+h},e.push(s)}var u=l[0]>l[1];a(e[0].coord,l[0])&&(r?e[0].coord=l[0]:e.shift()),r&&a(l[0],e[0].coord)&&e.unshift({coord:l[0]}),a(l[1],s.coord)&&(r?s.coord=l[1]:e.pop()),r&&a(s.coord,l[1])&&e.push({coord:l[1]})}}function Fu(t){return this._axes[t]}function Vu(t){Eb.call(this,t)}function Wu(t,e){return e.type||(e.data?"category":"value")}function Gu(t,e){return t.getCoordSysModel()===e}function Hu(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function Zu(t,e,i,n){function r(t){return t.dim+"_"+t.index}i.getAxesOnZeroOf=function(){return a?[a]:[]};var a,o=t[e],s=i.model,l=s.get("axisLine.onZero"),h=s.get("axisLine.onZeroAxisIndex");if(l){if(null!=h)Xu(o[h])&&(a=o[h]);else for(var u in o)if(o.hasOwnProperty(u)&&Xu(o[u])&&!n[r(o[u])]){a=o[u];break}a&&(n[r(a)]=!0)}}function Xu(t){return t&&"category"!==t.type&&"time"!==t.type&&su(t)}function Yu(t,e){var i=t.getExtent(),n=i[0]+i[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}function ju(t){return p(Zb,function(e){var i=t.getReferringComponents(e)[0];return i})}function qu(t){return"cartesian2d"===t.get("coordinateSystem")}function Uu(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return Ss(t,e,i[0]);if(n){for(var r=[],a=0;a0?"bottom":"top":r.width>0?"left":"right";l||$u(t.style,d,n,h,a,i,p),xa(t,d)}function ec(t,e){var i=t.get(qb)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function ic(t,e,i){var n=t.getData(),r=[],a=n.getLayout("valueAxisHorizontal")?1:0;r[1-a]=n.getLayout("valueAxisStart");var o=new Kb({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:r,__valueIdx:a});e.add(o),nc(o,t,n)}function nc(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),r=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(r),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}function rc(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function ac(t,e,i,n){var r,a,o=io(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return no(o-Qb/2)?(a=l?"bottom":"top",r="center"):no(o-1.5*Qb)?(a=l?"top":"bottom",r="center"):(a="middle",r=1.5*Qb>o&&o>Qb/2?l?"left":"right":l?"right":"left"),{rotation:o,textAlign:r,textVerticalAlign:a}}function oc(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function sc(t,e,i){var n=t.get("axisLabel.showMinLabel"),r=t.get("axisLabel.showMaxLabel");e=e||[],i=i||[];var a=e[0],o=e[1],s=e[e.length-1],l=e[e.length-2],h=i[0],u=i[1],c=i[i.length-1],d=i[i.length-2];n===!1?(lc(a),lc(h)):hc(a,o)&&(n?(lc(o),lc(u)):(lc(a),lc(h))),r===!1?(lc(s),lc(c)):hc(l,s)&&(r?(lc(l),lc(d)):(lc(s),lc(c)))}function lc(t){t&&(t.ignore=!0)}function hc(t,e){var i=t&&t.getBoundingRect().clone(),n=e&&e.getBoundingRect().clone();if(i&&n){var r=Se([]);return Ce(r,r,-t.rotation),i.applyTransform(Ie([],r,t.getLocalTransform())),n.applyTransform(Ie([],r,e.getLocalTransform())),i.intersect(n)}}function uc(t){return"middle"===t||"center"===t}function cc(t,e,i){var n=e.axis;if(e.get("axisTick.show")&&!n.scale.isBlank()){for(var r=e.getModel("axisTick"),a=r.getModel("lineStyle"),o=r.get("length"),l=n.getTicksCoords(),h=[],u=[],c=t._transform,d=[],f=0;f=0||t===e}function xc(t){var e=_c(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,r=i.option,a=i.get("status"),o=i.get("value");null!=o&&(o=n.parse(o));var s=bc(i);null==a&&(r.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==o||o>l[1])&&(o=l[1]),o0?i=n[0]:n[1]<0&&(i=n[1]),i}function Vc(t,e,i,n){var r=0/0;t.stacked&&(r=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(r)&&(r=t.valueStart);var a=t.baseDataOffset,o=[];return o[a]=i.get(t.baseDim,n),o[1-a]=r,e.dataToPoint(o)}function Wc(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}function Gc(t){return isNaN(t[0])||isNaN(t[1])}function Hc(t,e,i,n,r,a,o,s,l,h){return"none"!==h&&h?Zc.apply(this,arguments):Xc.apply(this,arguments)}function Zc(t,e,i,n,r,a,o,s,l,h,u){for(var c=0,d=i,f=0;n>f;f++){var p=e[d];if(d>=r||0>d)break;if(Gc(p)){if(u){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]);else if(l>0){var g=e[c],v="y"===h?1:0,m=(p[v]-g[v])*l;_S(bS,g),bS[v]=g[v]+m,_S(SS,p),SS[v]=p[v]-m,t.bezierCurveTo(bS[0],bS[1],SS[0],SS[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Xc(t,e,i,n,r,a,o,s,l,h,u){for(var c=0,d=i,f=0;n>f;f++){var p=e[d];if(d>=r||0>d)break;if(Gc(p)){if(u){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),_S(bS,p);else if(l>0){var g=d+a,v=e[g];if(u)for(;v&&Gc(e[g]);)g+=a,v=e[g];var m=.5,y=e[c],v=e[g];if(!v||Gc(v))_S(SS,p);else{Gc(v)&&!u&&(v=p),j(wS,v,y);var x,_;if("x"===h||"y"===h){var w="x"===h?0:1;x=Math.abs(p[w]-y[w]),_=Math.abs(p[w]-v[w])}else x=yg(p,y),_=yg(p,v);m=_/(_+x),xS(SS,p,wS,-l*(1-m))}mS(bS,bS,s),yS(bS,bS,o),mS(SS,SS,s),yS(SS,SS,o),t.bezierCurveTo(bS[0],bS[1],SS[0],SS[1],p[0],p[1]),xS(bS,p,wS,l*m)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Yc(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var r=0;rn[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}function jc(t,e){if(t.length===e.length){for(var i=0;ie[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function $c(t,e,i){if(!i.valueDim)return[];for(var n=[],r=0,a=e.count();a>r;r++)n.push(Vc(i,t,e,r));return n}function Kc(t,e,i,n){var r=Uc(t.getAxis("x")),a=Uc(t.getAxis("y")),o=t.getBaseAxis().isHorizontal(),s=Math.min(r[0],r[1]),l=Math.min(a[0],a[1]),h=Math.max(r[0],r[1])-s,u=Math.max(a[0],a[1])-l;if(i)s-=.5,h+=.5,l-=.5,u+=.5;else{var c=n.get("lineStyle.width")||2,d=n.get("clipOverflow")?c/2:Math.max(h,u);o?(l-=d,u+=2*d):(s-=d,h+=2*d)}var f=new Dy({shape:{x:s,y:l,width:h,height:u}});return e&&(f.shape[o?"width":"height"]=0,Oa(f,{shape:{width:h,height:u}},n)),f}function Qc(t,e,i,n){var r=t.getAngleAxis(),a=t.getRadiusAxis(),o=a.getExtent().slice();o[0]>o[1]&&o.reverse();var s=r.getExtent(),l=Math.PI/180;i&&(o[0]-=.5,o[1]+=.5);var h=new Sy({shape:{cx:$a(t.cx,1),cy:$a(t.cy,1),r0:$a(o[0],1),r:$a(o[1],1),startAngle:-s[0]*l,endAngle:-s[1]*l,clockwise:r.inverse}});return e&&(h.shape.endAngle=-s[0]*l,Oa(h,{shape:{endAngle:-s[1]*l}},n)),h}function Jc(t,e,i,n){return"polar"===t.type?Qc(t,e,i,n):Kc(t,e,i,n)}function td(t,e,i){for(var n=e.getBaseAxis(),r="x"===n.dim||"radius"===n.dim?0:1,a=[],o=0;o=0;a--){var o=i[a].dimension,s=t.dimensions[o],l=t.getDimensionInfo(s);if(n=l&&l.coordDim,"x"===n||"y"===n){r=i[a];break}}if(r){var h=e.getAxis(n),u=p(r.stops,function(t){return{coord:h.toGlobalCoord(h.dataToCoord(t.value)),color:t.color}}),c=u.length,d=r.outerColors.slice();c&&u[0].coord>u[c-1].coord&&(u.reverse(),d.reverse());var g=10,v=u[0].coord-g,m=u[c-1].coord+g,y=m-v;if(.001>y)return"transparent";f(u,function(t){t.offset=(t.coord-v)/y}),u.push({offset:c?u[c-1].offset:.5,color:d[1]||"transparent"}),u.unshift({offset:c?u[0].offset:.5,color:d[0]||"transparent"});var x=new Ry(0,0,0,0,u,!0);return x[n]=v,x[n+"2"]=m,x}}}function id(t,e,i){var n=t.get("showAllSymbol"),r="auto"===n;if(!n||r){var a=i.getAxesByScale("ordinal")[0];if(a&&(!r||!nd(a,e))){var o=e.mapDimension(a.dim),s={};return f(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(o,t))}}}}function nd(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var r=e.count(),a=Math.max(1,Math.round(r/5)),o=0;r>o;o+=a)if(1.5*Cc.getSymbolSize(e,o)[t.isHorizontal()?1:0]>n)return!1;return!0}function rd(t,e,i,n){var r=e.getData(),a=this.dataIndex,o=r.getName(a),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:o,seriesId:e.id}),r.each(function(t){ad(r.getItemGraphicEl(t),r.getItemLayout(t),e.isSelected(r.getName(t)),s,i)})}function ad(t,e,i,n,r){var a=(e.startAngle+e.endAngle)/2,o=Math.cos(a),s=Math.sin(a),l=i?n:0,h=[o*l,s*l];r?t.animate().when(200,{position:h}).start("bounceOut"):t.attr("position",h)}function od(t,e){function i(){a.ignore=a.hoverIgnore,o.ignore=o.hoverIgnore}function n(){a.ignore=a.normalIgnore,o.ignore=o.normalIgnore}lv.call(this);var r=new Sy({z2:2}),a=new Ay,o=new xy;this.add(r),this.add(a),this.add(o),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function sd(t,e,i,n,r,a,o){function s(e,i,n){for(var r=e;i>r;r++)if(t[r].y+=n,r>e&&i>r+1&&t[r+1].y>t[r].y+t[r].height)return void l(r,n/2);l(i-1,n/2)}function l(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function h(t,e,i,n,r,a){for(var o=a>0?e?Number.MAX_VALUE:0:e?Number.MAX_VALUE:0,s=0,l=t.length;l>s;s++)if("center"!==t[s].position){var h=Math.abs(t[s].y-n),u=t[s].len,c=t[s].len2,d=r+u>h?Math.sqrt((r+u+c)*(r+u+c)-h*h):Math.abs(t[s].x-i);e&&d>=o&&(d=o-10),!e&&o>=d&&(d=o+10),t[s].x=i+d*a,o=d}}t.sort(function(t,e){return t.y-e.y});for(var u,c=0,d=t.length,f=[],p=[],g=0;d>g;g++)u=t[g].y-c,0>u&&s(g,d,-u,r),c=t[g].y+t[g].height;0>o-c&&l(d-1,c-o);for(var g=0;d>g;g++)t[g].y>=i?p.push(t[g]):f.push(t[g]);h(f,!1,e,i,n,r),h(p,!0,e,i,n,r)}function ld(t,e,i,n,r,a){for(var o=[],s=[],l=0;lu;u++)a[u]&&xd(t.childAt(u),e,a[u],n,t,r)}}function wd(t){new uh(t.oldChildren,t.newChildren,bd,bd,t).add(Sd).update(Sd).remove(Md).execute()}function bd(t,e){var i=t&&t.name;return null!=i?i:KS+e}function Sd(t,e){var i=this.context,n=null!=t?i.newChildren[t]:null,r=null!=e?i.oldChildren[e]:null;xd(r,i.dataIndex,n,i.animatableModel,i.group,i.data)}function Md(t){var e=this.context,i=e.oldChildren[t];i&&e.group.remove(i)}function Id(t){return t&&(t.pathData||t.d)}function Td(t){return t&&(t.hasOwnProperty("pathData")||t.hasOwnProperty("d"))}function Cd(t,e){return t&&t.hasOwnProperty(e)}function Ad(t,e,i){var n,r={},a="toggleSelected"===t;return i.eachComponent("legend",function(i){a&&null!=n?i[n?"select":"unSelect"](e.name):(i[t](e.name),n=i.isSelected(e.name));var o=i.getData();f(o,function(t){var e=t.get("name");if("\n"!==e&&""!==e){var n=i.isSelected(e);r[e]=r.hasOwnProperty(e)?r[e]&&n:n}})}),{name:e.name,selected:r}}function Dd(t,e){var i=rx(e.get("padding")),n=e.getItemStyle(["color","opacity"]);n.fill=e.get("backgroundColor");var t=new Dy({shape:{x:t.x-i[3],y:t.y-i[0],width:t.width+i[1]+i[3],height:t.height+i[0]+i[2],r:e.get("borderRadius")},style:n,silent:!0,z2:-1});return t}function kd(t,e){e.dispatchAction({type:"legendToggleSelect",name:t})}function Pd(t,e,i,n){var r=i.getZr().storage.getDisplayList()[0];r&&r.useHoverLayer||i.dispatchAction({type:"highlight",seriesName:t,name:e,excludeSeriesId:n})}function Ld(t,e,i,n){var r=i.getZr().storage.getDisplayList()[0];r&&r.useHoverLayer||i.dispatchAction({type:"downplay",seriesName:t,name:e,excludeSeriesId:n})}function Od(t,e,i){var n=t.getOrient(),r=[1,1];r[n.index]=0,So(e,i,{type:"box",ignoreSize:r})}function zd(t,e,i,n,r){var a=t.axis;if(!a.scale.isBlank()&&a.containData(e)){if(!t.involveSeries)return void i.showPointer(t,e);var s=Ed(e,t),l=s.payloadBatch,h=s.snapToValue;l[0]&&null==r.seriesIndex&&o(r,l[0]),!n&&t.snap&&a.containData(h)&&null!=h&&(e=h),i.showPointer(t,e,l,r),i.showTooltip(t,s,h)}}function Ed(t,e){var i=e.axis,n=i.dim,r=t,a=[],o=Number.MAX_VALUE,s=-1;return cM(e.seriesModels,function(e){var l,h,u=e.getData().mapDimension(n,!0);if(e.getAxisTooltipData){var c=e.getAxisTooltipData(u,t,i);h=c.dataIndices,l=c.nestestValue}else{if(h=e.getData().indicesOfNearest(u[0],t,"category"===i.type?.5:null),!h.length)return;l=e.getData().get(u[0],h[0])}if(null!=l&&isFinite(l)){var d=t-l,f=Math.abs(d);o>=f&&((o>f||d>=0&&0>s)&&(o=f,s=d,r=l,a.length=0),cM(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:r}}function Rd(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function Bd(t,e,i,n){var r=i.payloadBatch,a=e.axis,o=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&r.length){var l=e.coordSys.model,h=Sc(l),u=t.map[h];u||(u=t.map[h]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(u)),u.dataByAxis.push({axisDim:a.dim,axisIndex:o.componentIndex,axisType:o.type,axisId:o.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:r.slice()})}}function Nd(t,e,i){var n=i.axesInfo=[];cM(e,function(e,i){var r=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(r.status="show"),r.value=a.value,r.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(r.status="hide"),"show"===r.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:r.value})})}function Fd(t,e,i,n){if(Hd(e)||!t.list.length)return void n({type:"hideTip"});var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}function Vd(t,e,i){var n=i.getZr(),r="axisPointerLastHighlights",a=fM(n)[r]||{},o=fM(n)[r]={};cM(t,function(t){var e=t.axisPointerModel.option;"show"===e.status&&cM(e.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;o[e]=t})});var s=[],l=[];f(a,function(t,e){!o[e]&&l.push(t)}),f(o,function(t,e){!a[e]&&s.push(t)}),l.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:l}),s.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:s})}function Wd(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}function Gd(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function Hd(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function Zd(t,e,i){if(!tg.node){var n=e.getZr();gM(n).records||(gM(n).records={}),Xd(n,e);var r=gM(n).records[t]||(gM(n).records[t]={});r.handler=i}}function Xd(t,e){function i(i,n){t.on(i,function(i){var r=Ud(e);vM(gM(t).records,function(t){t&&n(t,i,r.dispatchAction)}),Yd(r.pendings,e)})}gM(t).initialized||(gM(t).initialized=!0,i("click",x(qd,"click")),i("mousemove",x(qd,"mousemove")),i("globalout",jd))}function Yd(t,e){var i,n=t.showTip.length,r=t.hideTip.length;n?i=t.showTip[n-1]:r&&(i=t.hideTip[r-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function jd(t,e,i){t.handler("leave",null,i)}function qd(t,e,i,n){e.handler(t,i,n)}function Ud(t){var e={showTip:[],hideTip:[]},i=function(n){var r=e[n.type];r?r.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}function $d(t,e){if(!tg.node){var i=e.getZr(),n=(gM(i).records||{})[t];n&&(gM(i).records[t]=null)}}function Kd(){}function Qd(t,e,i,n){Jd(yM(i).lastProp,n)||(yM(i).lastProp=n,e?La(i,n,t):(i.stopAnimation(),i.attr(n)))}function Jd(t,e){if(S(t)&&S(e)){var i=!0;return f(e,function(e,n){i=i&&Jd(t[n],e)}),!!i}return t===e}function tf(t,e){t[e.get("label.show")?"show":"hide"]()}function ef(t){return{position:t.position.slice(),rotation:t.rotation||0}}function nf(t,e,i){var n=e.get("z"),r=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=r&&(t.zlevel=r),t.silent=i)})}function rf(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle(),e.fill=null):"shadow"===i&&(e=n.getAreaStyle(),e.stroke=null),e}function af(t,e,i,n,r){var a=i.get("value"),o=sf(a,e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),s=i.getModel("label"),l=rx(s.get("padding")||0),h=s.getFont(),u=Ei(o,h),c=r.position,d=u.width+l[1]+l[3],f=u.height+l[0]+l[2],p=r.align;"right"===p&&(c[0]-=d),"center"===p&&(c[0]-=d/2);var g=r.verticalAlign;"bottom"===g&&(c[1]-=f),"middle"===g&&(c[1]-=f/2),of(c,d,f,n);var v=s.get("backgroundColor");v&&"auto"!==v||(v=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:d,height:f,r:s.get("borderRadius")},position:c.slice(),style:{text:o,textFont:h,textFill:s.getTextColor(),textPosition:"inside",fill:v,stroke:s.get("borderColor")||"transparent",lineWidth:s.get("borderWidth")||0,shadowBlur:s.get("shadowBlur"),shadowColor:s.get("shadowColor"),shadowOffsetX:s.get("shadowOffsetX"),shadowOffsetY:s.get("shadowOffsetY")},z2:10}}function of(t,e,i,n){var r=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function sf(t,e,i,n,r){t=e.scale.parse(t);var a=e.scale.getLabel(t,{precision:r.precision}),o=r.formatter;if(o){var s={value:hu(e,t),seriesData:[]};f(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,r=e&&e.getDataParams(n);r&&s.seriesData.push(r)}),b(o)?a=o.replace("{value}",a):w(o)&&(a=o(s))}return a}function lf(t,e,i){var n=be();return Ce(n,n,i.rotation),Te(n,n,i.position),Ea([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function hf(t,e,i,n,r,a){var o=Jb.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=r.get("label.margin"),af(e,n,r,a,{position:lf(n.axis,t,i),align:o.textAlign,verticalAlign:o.textVerticalAlign})}function uf(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}}function cf(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}function df(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function ff(t){return"x"===t.dim?0:1}function pf(t){var e="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+t+"s "+e+",top "+t+"s "+e;return p(IM,function(t){return t+"transition:"+i}).join(";")}function gf(t){var e=[],i=t.get("fontSize"),n=t.getTextColor();return n&&e.push("color:"+n),e.push("font:"+t.getFont()),i&&e.push("line-height:"+Math.round(3*i/2)+"px"),SM(["decoration","align"],function(i){var n=t.get(i);n&&e.push("text-"+i+":"+n)}),e.join(";")}function vf(t){var e=[],i=t.get("transitionDuration"),n=t.get("backgroundColor"),r=t.getModel("textStyle"),a=t.get("padding");return i&&e.push(pf(i)),n&&(tg.canvasSupported?e.push("background-Color:"+n):(e.push("background-Color:#"+je(n)),e.push("filter:alpha(opacity=70)"))),SM(["width","color","radius"],function(i){var n="border-"+i,r=MM(n),a=t.get(r);null!=a&&e.push(n+":"+a+("color"===i?"":"px"))}),e.push(gf(r)),null!=a&&e.push("padding:"+rx(a).join("px ")+"px"),e.join(";")+";"}function mf(t,e){if(tg.wxa)return null;var i=document.createElement("div"),n=this._zr=e.getZr();this.el=i,this._x=e.getWidth()/2,this._y=e.getHeight()/2,t.appendChild(i),this._container=t,this._show=!1,this._hideTimeout;var r=this;i.onmouseenter=function(){r._enterable&&(clearTimeout(r._hideTimeout),r._show=!0),r._inContent=!0},i.onmousemove=function(e){if(e=e||window.event,!r._enterable){var i=n.handler;pe(t,e,!0),i.dispatch("mousemove",e)}},i.onmouseleave=function(){r._enterable&&r._show&&r.hideLater(r._hideDelay),r._inContent=!1}}function yf(t){this._zr=t.getZr(),this._show=!1,this._hideTimeout}function xf(t){for(var e=t.pop();t.length;){var i=t.pop();i&&(Wa.isInstance(i)&&(i=i.get("tooltip",!0)),"string"==typeof i&&(i={formatter:i}),e=new Wa(i,e,e.ecModel))}return e}function _f(t,e){return t.dispatchAction||y(e.dispatchAction,e)}function wf(t,e,i,n,r,a,o){var s=i.getOuterSize(),l=s.width,h=s.height;return null!=a&&(t+l+a>n?t-=l+a:t+=a),null!=o&&(e+h+o>r?e-=h+o:e+=o),[t,e]}function bf(t,e,i,n,r){var a=i.getOuterSize(),o=a.width,s=a.height;return t=Math.min(t+o,n)-o,e=Math.min(e+s,r)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function Sf(t,e,i){var n=i[0],r=i[1],a=5,o=0,s=0,l=e.width,h=e.height;switch(t){case"inside":o=e.x+l/2-n/2,s=e.y+h/2-r/2;break;case"top":o=e.x+l/2-n/2,s=e.y-r-a;break;case"bottom":o=e.x+l/2-n/2,s=e.y+h+a;break;case"left":o=e.x-n-a,s=e.y+h/2-r/2;break;case"right":o=e.x+l+a,s=e.y+h/2-r/2}return[o,s]}function Mf(t){return"center"===t||"middle"===t}function If(t){Fn(t,"label",["show"])}function Tf(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}function Cf(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}function Af(t,e,i,n,r,a){var o=[],s=Ph(e,n),l=s?e.getCalculationInfo("stackResultDimension"):n,h=zf(e,l,t),u=e.indicesOfNearest(l,h)[0];o[r]=e.get(i,u),o[a]=e.get(n,u);var c=Qa(e.get(n,u));return c=Math.min(c,20),c>=0&&(o[a]=+o[a].toFixed(c)),o}function Df(t,e){var i=t.getData(),r=t.coordinateSystem;if(e&&!Cf(e)&&!_(e.coord)&&r){var a=r.dimensions,o=kf(e,i,r,t);if(e=n(e),e.type&&RM[e.type]&&o.baseAxis&&o.valueAxis){var s=zM(a,o.baseAxis.dim),l=zM(a,o.valueAxis.dim);e.coord=RM[e.type](i,o.baseDataDim,o.valueDataDim,s,l),e.value=e.coord[l]}else{for(var h=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],u=0;2>u;u++)RM[h[u]]&&(h[u]=zf(i,i.mapDimension(a[u]),h[u]));e.coord=h}}return e}function kf(t,e,i,n){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=i.getAxis(Pf(n,r.valueDataDim)),r.baseAxis=i.getOtherAxis(r.valueAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim)):(r.baseAxis=n.getBaseAxis(),r.valueAxis=i.getOtherAxis(r.baseAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim),r.valueDataDim=e.mapDimension(r.valueAxis.dim)),r}function Pf(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var r=0;rn?t.coord&&t.coord[n]:t.value}function zf(t,e,i){if("average"===i){var n=0,r=0;return t.each(e,function(t){isNaN(t)||(n+=t,r++)}),n/r}return"median"===i?t.getMedian(e):t.getDataExtent(e,!0)["max"===i?1:0]}function Ef(t,e,i){var n=e.coordinateSystem;t.each(function(r){var a,o=t.getItemModel(r),s=Ua(o.get("x"),i.getWidth()),l=Ua(o.get("y"),i.getHeight());if(isNaN(s)||isNaN(l)){if(e.getMarkerPosition)a=e.getMarkerPosition(t.getValues(t.dimensions,r));else if(n){var h=t.get(n.dimensions[0],r),u=t.get(n.dimensions[1],r);a=n.dataToPoint([h,u])}}else a=[s,l];isNaN(s)||(a[0]=s),isNaN(l)||(a[1]=l),t.setItemLayout(r,a)})}function Rf(t,e,i){var n;n=t?p(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.getData().mapDimension(t))||{};return s({name:t},i)}):[{name:"value",type:"float"}];var r=new Bw(n,i),a=p(i.get("data"),x(Df,e));return t&&(a=v(a,x(Lf,t))),r.initData(a,null,t?Of:function(t){return t.value}),r}function Bf(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}function Nf(t){return"_"+t+"Type"}function Ff(t,e,i){var n=e.getItemVisual(i,"color"),r=e.getItemVisual(i,t),a=e.getItemVisual(i,t+"Size");if(r&&"none"!==r){_(a)||(a=[a,a]);var o=fu(r,-a[0]/2,-a[1]/2,a[0],a[1],n);return o.name=t,o}}function Vf(t){var e=new VM({name:"line"});return Wf(e.shape,t),e}function Wf(t,e){var i=e[0],n=e[1],r=e[2];t.x1=i[0],t.y1=i[1],t.x2=n[0],t.y2=n[1],t.percent=1,r?(t.cpx1=r[0],t.cpy1=r[1]):(t.cpx1=0/0,t.cpy1=0/0)}function Gf(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var r=1,a=this.parent;a;)a.scale&&(r/=a.scale[0]),a=a.parent;var o=t.childOfName("line");if(this.__dirty||o.__dirty){var s=o.shape.percent,l=o.pointAt(0),h=o.pointAt(s),u=j([],h,l);if(te(u,u),e){e.attr("position",l);var c=o.tangentAt(0);e.attr("rotation",Math.PI/2-Math.atan2(c[1],c[0])),e.attr("scale",[r*s,r*s])}if(i){i.attr("position",h);var c=o.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(c[1],c[0])),i.attr("scale",[r*s,r*s])}if(!n.ignore){n.attr("position",h);var d,f,p,g=5*r;if("end"===n.__position)d=[u[0]*g+h[0],u[1]*g+h[1]],f=u[0]>.8?"left":u[0]<-.8?"right":"center",p=u[1]>.8?"top":u[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var v=s/2,c=o.tangentAt(v),m=[c[1],-c[0]],y=o.pointAt(v);m[1]>0&&(m[0]=-m[0],m[1]=-m[1]),d=[y[0]+m[0]*g,y[1]+m[1]*g],f="center",p="bottom";var x=-Math.atan2(c[1],c[0]);h[0].8?"right":u[0]<-.8?"left":"center",p=u[1]>.8?"bottom":u[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||p,textAlign:n.__textAlign||f},position:d,scale:[r,r]})}}}}function Hf(t,e,i){lv.call(this),this._createLine(t,e,i)}function Zf(t){this._ctor=t||Hf,this.group=new lv}function Xf(t,e,i,n){var r=e.getItemLayout(i);if(Uf(r)){var a=new t._ctor(e,i,n);e.setItemGraphicEl(i,a),t.group.add(a)}}function Yf(t,e,i,n,r,a){var o=e.getItemGraphicEl(n);return Uf(i.getItemLayout(r))?(o?o.updateData(i,r,a):o=new t._ctor(i,r,a),i.setItemGraphicEl(r,o),void t.group.add(o)):void t.group.remove(o)}function jf(t){var e=t.hostModel;return{lineStyle:e.getModel("lineStyle").getLineStyle(),hoverLineStyle:e.getModel("emphasis.lineStyle").getLineStyle(),labelModel:e.getModel("label"),hoverLabelModel:e.getModel("emphasis.label")}}function qf(t){return isNaN(t[0])||isNaN(t[1])}function Uf(t){return!qf(t[0])&&!qf(t[1])}function $f(t){return!isNaN(t)&&!isFinite(t)}function Kf(t,e,i,n){var r=1-t,a=n.dimensions[t];return $f(e[r])&&$f(i[r])&&e[t]===i[t]&&n.getAxis(a).containData(e[t])}function Qf(t,e){if("cartesian2d"===t.type){var i=e[0].coord,n=e[1].coord;if(i&&n&&(Kf(1,i,n,t)||Kf(0,i,n,t)))return!0}return Lf(t,e[0])&&Lf(t,e[1])}function Jf(t,e,i,n,r){var a,o=n.coordinateSystem,s=t.getItemModel(e),l=Ua(s.get("x"),r.getWidth()),h=Ua(s.get("y"),r.getHeight());if(isNaN(l)||isNaN(h)){if(n.getMarkerPosition)a=n.getMarkerPosition(t.getValues(t.dimensions,e));else{var u=o.dimensions,c=t.get(u[0],e),d=t.get(u[1],e);a=o.dataToPoint([c,d])}if("cartesian2d"===o.type){var f=o.getAxis("x"),p=o.getAxis("y"),u=o.dimensions;$f(t.get(u[0],e))?a[0]=f.toGlobalCoord(f.getExtent()[i?0:1]):$f(t.get(u[1],e))&&(a[1]=p.toGlobalCoord(p.getExtent()[i?0:1]))}isNaN(l)||(a[0]=l),isNaN(h)||(a[1]=h)}else a=[l,h];t.setItemLayout(e,a)}function tp(t,e,i){var n;n=t?p(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.getData().mapDimension(t))||{};return s({name:t},i)}):[{name:"value",type:"float"}];var r=new Bw(n,i),a=new Bw(n,i),o=new Bw([],i),l=p(i.get("data"),x(ZM,e,t,i));t&&(l=v(l,x(Qf,t)));var h=t?Of:function(t){return t.value};return r.initData(p(l,function(t){return t[0]}),null,h),a.initData(p(l,function(t){return t[1]}),null,h),o.initData(p(l,function(t){return t[2]})),o.hasItemOption=!0,{from:r,to:a,line:o}}function ep(t){return!isNaN(t)&&!isFinite(t)}function ip(t,e,i){var n=1-t;return ep(e[n])&&ep(i[n])}function np(t,e){var i=e.coord[0],n=e.coord[1];return"cartesian2d"===t.type&&i&&n&&(ip(1,i,n,t)||ip(0,i,n,t))?!0:Lf(t,{coord:i,x:e.x0,y:e.y0})||Lf(t,{coord:n,x:e.x1,y:e.y1})}function rp(t,e,i,n,r){var a,o=n.coordinateSystem,s=t.getItemModel(e),l=Ua(s.get(i[0]),r.getWidth()),h=Ua(s.get(i[1]),r.getHeight());if(isNaN(l)||isNaN(h)){if(n.getMarkerPosition)a=n.getMarkerPosition(t.getValues(i,e));else{var u=t.get(i[0],e),c=t.get(i[1],e),d=[u,c];o.clampData&&o.clampData(d,d),a=o.dataToPoint(d,!0)}if("cartesian2d"===o.type){var f=o.getAxis("x"),p=o.getAxis("y"),u=t.get(i[0],e),c=t.get(i[1],e);ep(u)?a[0]=f.toGlobalCoord(f.getExtent()["x0"===i[0]?0:1]):ep(c)&&(a[1]=p.toGlobalCoord(p.getExtent()["y0"===i[1]?0:1]))}isNaN(l)||(a[0]=l),isNaN(h)||(a[1]=h)}else a=[l,h];return a}function ap(t,e,i){var n,r,a=["x0","y0","x1","y1"];t?(n=p(t&&t.dimensions,function(t){var i=e.getData(),n=i.getDimensionInfo(i.mapDimension(t))||{};return s({name:t},n)}),r=new Bw(p(a,function(t,e){return{name:t,type:n[e%2].type}}),i)):(n=[{name:"value",type:"float"}],r=new Bw(n,i));var o=p(i.get("data"),x(XM,e,t,i));t&&(o=v(o,x(np,t)));var l=t?function(t,e,i,n){return t.coord[Math.floor(n/2)][n%2]}:function(t){return t.value};return r.initData(o,null,l),r.hasItemOption=!0,r}function op(t){var e=t.type,i={number:"value",time:"time"};if(i[e]&&(t.axisType=i[e],delete t.type),sp(t),lp(t,"controlPosition")){var n=t.controlStyle||(t.controlStyle={});lp(n,"position")||(n.position=t.controlPosition),"none"!==n.position||lp(n,"show")||(n.show=!1,delete n.position),delete t.controlPosition}f(t.data||[],function(t){S(t)&&!_(t)&&(!lp(t,"value")&&lp(t,"name")&&(t.value=t.name),sp(t))})}function sp(t){var e=t.itemStyle||(t.itemStyle={}),i=e.emphasis||(e.emphasis={}),n=t.label||t.label||{},r=n.normal||(n.normal={}),a={normal:1,emphasis:1};f(n,function(t,e){a[e]||lp(r,e)||(r[e]=t)}),i.label&&!lp(n,"emphasis")&&(n.emphasis=i.label,delete i.label)}function lp(t,e){return t.hasOwnProperty(e)}function hp(t,e){return bo(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}function up(t,e,i,r){var a=Qr(t.get(e).replace(/^path:\/\//,""),n(r||{}),new gi(i[0],i[1],i[2],i[3]),"center");return a}function cp(t,e,i,n,a,o){var s=e.get("color");if(a)a.setColor(s),i.add(a),o&&o.onUpdate(a);else{var l=t.get("symbol");a=fu(l,-1,-1,2,2,s),a.setStyle("strokeNoScale",!0),i.add(a),o&&o.onCreate(a)}var h=e.getItemStyle(["color","symbol","symbolSize"]);a.setStyle(h),n=r({rectHover:!0,z2:100},n,!0);var u=t.get("symbolSize");u=u instanceof Array?u.slice():[+u,+u],u[0]/=2,u[1]/=2,n.scale=u;var c=t.get("symbolOffset");if(c){var d=n.position=n.position||[0,0];d[0]+=Ua(c[0],u[0]),d[1]+=Ua(c[1],u[1])}var f=t.get("symbolRotate");return n.rotation=(f||0)*Math.PI/180||0,a.attr(n),a.updateTransform(),a}function dp(t,e,i,n,r){if(!t.dragging){var a=n.getModel("checkpointStyle"),o=i.dataToCoord(n.getData().get(["value"],e));r||!a.get("animation",!0)?t.attr({position:[o,0]}):(t.stopAnimation(!0),t.animateTo({position:[o,0]},a.get("animationDuration",!0),a.get("animationEasing",!0)))}}function fp(t){return h(iI,t)>=0}function pp(t,e){t=t.slice();var i=p(t,_o);e=(e||[]).slice();var n=p(e,_o);return function(r,a){f(t,function(t,o){for(var s={name:t,capital:i[o]},l=0;l=0}function r(t,n){var r=!1;return e(function(e){f(i(t,e)||[],function(t){n.records[e.name][t]&&(r=!0)})}),r}function a(t,n){n.nodes.push(t),e(function(e){f(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){function o(t){!n(t,s)&&r(t,s)&&(a(t,s),l=!0)}var s={nodes:[],records:{}};if(e(function(t){s.records[t.name]={}}),!i)return s;a(i,s);var l;do l=!1,t(o);while(l);return s}}function vp(t,e,i){var n=[1/0,-1/0];return rI(i,function(t){var i=t.getData();i&&rI(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]n[1]&&(n[1]=e[1])})}),n[1]0?0:0/0);var o=i.getMax(!0);return null!=o&&"dataMax"!==o&&"function"!=typeof o?e[1]=o:r&&(e[1]=a>0?a-1:0/0),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function yp(t,e){var i=t.getAxisModel(),n=t._percentWindow,r=t._valueWindow;if(n){var a=to(r,[0,500]);a=Math.min(a,20);var o=e||0===n[0]&&100===n[1];i.setRange(o?null:+r[0].toFixed(a),o?null:+r[1].toFixed(a))}}function xp(t){var e=t._minMaxSpan={},i=t._dataZoomModel;rI(["min","max"],function(n){e[n+"Span"]=i.get(n+"Span");var r=i.get(n+"ValueSpan");if(null!=r&&(e[n+"ValueSpan"]=r,r=t.getAxisModel().axis.scale.parse(r),null!=r)){var a=t._dataExtent;e[n+"Span"]=qa(a[0]+r,a,[0,100],!0)}})}function _p(t){var e={};return sI(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function wp(t,e){var i=t._rangePropMode,n=t.get("rangeMode");sI([["start","startValue"],["end","endValue"]],function(t,r){var a=null!=e[t[0]],o=null!=e[t[1]];a&&!o?i[r]="percent":!a&&o?i[r]="value":n?i[r]=n[r]:a&&(i[r]="percent")})}function bp(t,e){var i=t[e]-t[1-e];return{span:Math.abs(i),sign:i>0?-1:0>i?1:e?-1:1}}function Sp(t,e){return Math.min(e[1],Math.max(e[0],t))}function Mp(t){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[t]}function Ip(t){return"vertical"===t?"ns-resize":"ew-resize"}function Tp(t,e){return!!Cp(t)[e]}function Cp(t){return t[II]||(t[II]={})}function Ap(t){this.pointerChecker,this._zr=t,this._opt={};var e=y,i=e(Dp,this),r=e(kp,this),a=e(Pp,this),o=e(Lp,this),l=e(Op,this);bg.call(this),this.setPointerChecker=function(t){this.pointerChecker=t},this.enable=function(e,h){this.disable(),this._opt=s(n(h)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),null==e&&(e=!0),(e===!0||"move"===e||"pan"===e)&&(t.on("mousedown",i),t.on("mousemove",r),t.on("mouseup",a)),(e===!0||"scale"===e||"zoom"===e)&&(t.on("mousewheel",o),t.on("pinch",l))},this.disable=function(){t.off("mousedown",i),t.off("mousemove",r),t.off("mouseup",a),t.off("mousewheel",o),t.off("pinch",l)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}function Dp(t){if(!(me(t)||t.target&&t.target.draggable)){var e=t.offsetX,i=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,i)&&(this._x=e,this._y=i,this._dragging=!0)}}function kp(t){if(!me(t)&&Rp("moveOnMouseMove",t,this._opt)&&this._dragging&&"pinch"!==t.gestureEvent&&!Tp(this._zr,"globalPan")){var e=t.offsetX,i=t.offsetY,n=this._x,r=this._y,a=e-n,o=i-r;this._x=e,this._y=i,this._opt.preventDefaultMouseMove&&Ig(t.event),Ep(this,"pan","moveOnMouseMove",t,{dx:a,dy:o,oldX:n,oldY:r,newX:e,newY:i})}}function Pp(t){me(t)||(this._dragging=!1)}function Lp(t){var e=Rp("zoomOnMouseWheel",t,this._opt),i=Rp("moveOnMouseWheel",t,this._opt),n=t.wheelDelta,r=Math.abs(n),a=t.offsetX,o=t.offsetY;if(0!==n&&(e||i)){if(e){var s=r>3?1.4:r>1?1.2:1.1,l=n>0?s:1/s;zp(this,"zoom","zoomOnMouseWheel",t,{scale:l,originX:a,originY:o})}if(i){var h=Math.abs(n),u=(n>0?1:-1)*(h>3?.4:h>1?.15:.05);zp(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:u,originX:a,originY:o})}}}function Op(t){if(!Tp(this._zr,"globalPan")){var e=t.pinchScale>1?1.1:1/1.1;zp(this,"zoom",null,t,{scale:e,originX:t.pinchX,originY:t.pinchY})}}function zp(t,e,i,n,r){t.pointerChecker&&t.pointerChecker(n,r.originX,r.originY)&&(Ig(n.event),Ep(t,e,i,n,r))}function Ep(t,e,i,n,r){r.isAvailableBehavior=y(Rp,null,i,n),t.trigger(e,r)}function Rp(t,e,i){var n=i[t];return!t||n&&(!b(n)||e.event[n+"Key"])}function Bp(t,e){var i=Vp(t),n=e.dataZoomId,r=e.coordId;f(i,function(t){var i=t.dataZoomInfos;i[n]&&h(e.allCoordIds,r)<0&&(delete i[n],t.count--)}),Gp(i);var a=i[r];a||(a=i[r]={coordId:r,dataZoomInfos:{},count:0},a.controller=Wp(t,a),a.dispatchAction=x(Hp,t)),!a.dataZoomInfos[n]&&a.count++,a.dataZoomInfos[n]=e;var o=Zp(a.dataZoomInfos);a.controller.enable(o.controlType,o.opt),a.controller.setPointerChecker(e.containsPoint),Hs(a,"dispatchAction",e.dataZoomModel.get("throttle",!0),"fixRate")}function Np(t,e){var i=Vp(t);f(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),Gp(i)}function Fp(t){return t.type+"\x00_"+t.id}function Vp(t){var e=t.getZr();return e[TI]||(e[TI]={})}function Wp(t,e){var i=new Ap(t.getZr());return f(["pan","zoom","scrollMove"],function(t){i.on(t,function(i){var n=[];f(e.dataZoomInfos,function(r){if(i.isAvailableBehavior(r.dataZoomModel.option)){var a=(r.getRange||{})[t],o=a&&a(e.controller,i);!r.dataZoomModel.get("disabled",!0)&&o&&n.push({dataZoomId:r.dataZoomId,start:o[0],end:o[1]})}}),n.length&&e.dispatchAction(n)})}),i}function Gp(t){f(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function Hp(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function Zp(t){var e,i="type_",n={type_true:2,type_move:1,type_false:0,type_undefined:-1},r=!0;return f(t,function(t){var a=t.dataZoomModel,o=a.get("disabled",!0)?!1:a.get("zoomLock",!0)?"move":!0;n[i+o]>n[i+e]&&(e=o),r&=a.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!r}}}function Xp(t){return function(e,i,n,r){var a=this._range,o=a.slice(),s=e.axisModels[0];if(s){var l=t(o,s,e,i,n,r);return cI(l,o,[0,100],"all"),this._range=o,a[0]!==o[0]||a[1]!==o[1]?o:void 0}}}function Yp(t){return PI(t)}function jp(){if(!zI&&EI){zI=!0;var t=EI.styleSheets;t.length<31?EI.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}function qp(t){return parseInt(t,10)}function Up(t,e){jp(),this.root=t,this.storage=e;var i=document.createElement("div"),n=document.createElement("div");i.style.cssText="display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;",n.style.cssText="position:absolute;left:0;top:0;",t.appendChild(i),this._vmlRoot=n,this._vmlViewport=i,this.resize();var r=e.delFromStorage,a=e.addToStorage;e.delFromStorage=function(t){r.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)
+},this._firstPaint=!0}function $p(t){return function(){iv('In IE8.0 VML mode painter not support method "'+t+'"')}}var Kp=2311,Qp=function(){return Kp++},Jp={};Jp="object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?{browser:{},os:{},node:!1,wxa:!0,canvasSupported:!0,svgSupported:!1,touchEventsSupported:!0,domSupported:!1}:"undefined"==typeof document&&"undefined"!=typeof self?{browser:{},os:{},node:!1,worker:!0,canvasSupported:!0,domSupported:!1}:"undefined"==typeof navigator?{browser:{},os:{},node:!0,worker:!1,canvasSupported:!0,svgSupported:!0,domSupported:!1}:e(navigator.userAgent);var tg=Jp,eg={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},ig={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},ng=Object.prototype.toString,rg=Array.prototype,ag=rg.forEach,og=rg.filter,sg=rg.slice,lg=rg.map,hg=rg.reduce,ug={},cg=function(){return ug.createCanvas()};ug.createCanvas=function(){return document.createElement("canvas")};var dg,fg="__ec_primitive__";B.prototype={constructor:B,get:function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},set:function(t,e){return this.data[t]=e},each:function(t,e){void 0!==e&&(t=y(t,e));for(var i in this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var pg=(Object.freeze||Object)({$override:i,clone:n,merge:r,mergeAll:a,extend:o,defaults:s,createCanvas:cg,getContext:l,indexOf:h,inherits:u,mixin:c,isArrayLike:d,each:f,map:p,reduce:g,filter:v,find:m,bind:y,curry:x,isArray:_,isFunction:w,isString:b,isObject:S,isBuiltInObject:M,isTypedArray:I,isDom:T,eqNaN:C,retrieve:A,retrieve2:D,retrieve3:k,slice:P,normalizeCssArray:L,assert:O,trim:z,setAsPrimitive:E,isPrimitive:R,createHashMap:N,concatArray:F,noop:V}),gg="undefined"==typeof Float32Array?Array:Float32Array,vg=q,mg=U,yg=ee,xg=ie,_g=(Object.freeze||Object)({create:W,copy:G,clone:H,set:Z,add:X,scaleAndAdd:Y,sub:j,len:q,length:vg,lenSquare:U,lengthSquare:mg,mul:$,div:K,dot:Q,scale:J,normalize:te,distance:ee,dist:yg,distanceSquare:ie,distSquare:xg,negate:ne,lerp:re,applyTransform:ae,min:oe,max:se});le.prototype={constructor:le,_dragStart:function(t){var e=t.target;e&&e.draggable&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(he(e,t),"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var i=t.offsetX,n=t.offsetY,r=i-this._x,a=n-this._y;this._x=i,this._y=n,e.drift(r,a,t),this.dispatchToElement(he(e,t),"drag",t.event);var o=this.findHover(i,n,e).target,s=this._dropTarget;this._dropTarget=o,e!==o&&(s&&o!==s&&this.dispatchToElement(he(s,t),"dragleave",t.event),o&&o!==s&&this.dispatchToElement(he(o,t),"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(he(e,t),"dragend",t.event),this._dropTarget&&this.dispatchToElement(he(this._dropTarget,t),"drop",t.event),this._draggingTarget=null,this._dropTarget=null}};var wg=Array.prototype.slice,bg=function(t){this._$handlers={},this._$eventProcessor=t};bg.prototype={constructor:bg,one:function(t,e,i,n){var r=this._$handlers;if("function"==typeof e&&(n=i,i=e,e=null),!i||!t)return this;e=ue(this,e),r[t]||(r[t]=[]);for(var a=0;ar;r++)i[t][r].h!==e&&n.push(i[t][r]);i[t]=n}i[t]&&0===i[t].length&&delete i[t]}else delete i[t];return this},trigger:function(t){var e=this._$handlers[t],i=this._$eventProcessor;if(e){var n=arguments,r=n.length;r>3&&(n=wg.call(n,1));for(var a=e.length,o=0;a>o;){var s=e[o];if(i&&i.filter&&null!=s.query&&!i.filter(t,s.query))o++;else{switch(r){case 1:s.h.call(s.ctx);break;case 2:s.h.call(s.ctx,n[1]);break;case 3:s.h.call(s.ctx,n[1],n[2]);break;default:s.h.apply(s.ctx,n)}s.one?(e.splice(o,1),a--):o++}}}return i&&i.afterTrigger&&i.afterTrigger(t),this},triggerWithContext:function(t){var e=this._$handlers[t],i=this._$eventProcessor;if(e){var n=arguments,r=n.length;r>4&&(n=wg.call(n,1,n.length-1));for(var a=n[n.length-1],o=e.length,s=0;o>s;){var l=e[s];if(i&&i.filter&&null!=l.query&&!i.filter(t,l.query))s++;else{switch(r){case 1:l.h.call(a);break;case 2:l.h.call(a,n[1]);break;case 3:l.h.call(a,n[1],n[2]);break;default:l.h.apply(a,n)}l.one?(e.splice(s,1),o--):s++}}}return i&&i.afterTrigger&&i.afterTrigger(t),this}};var Sg="undefined"!=typeof window&&!!window.addEventListener,Mg=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ig=Sg?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0},Tg="silent";_e.prototype.dispose=function(){};var Cg=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],Ag=function(t,e,i,n){bg.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new _e,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,le.call(this),this.setHandlerProxy(i)};Ag.prototype={constructor:Ag,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(f(Cg,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,r=n.target;r&&!r.__zr&&(n=this.findHover(n.x,n.y),r=n.target);var a=this._hovered=this.findHover(e,i),o=a.target,s=this.proxy;s.setCursor&&s.setCursor(o?o.cursor:"default"),r&&o!==r&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(a,"mousemove",t),o&&o!==r&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do i=i&&i.parentNode;while(i&&9!=i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){t=t||{};var n=t.target;if(!n||!n.silent){for(var r="on"+e,a=ye(e,t,i);n&&(n[r]&&(a.cancelBubble=n[r].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[r]&&t[r].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),r={x:t,y:e},a=n.length-1;a>=0;a--){var o;if(n[a]!==i&&!n[a].ignore&&(o=we(n[a],t,e))&&(!r.topTarget&&(r.topTarget=n[a]),o!==Tg)){r.target=n[a];break}}return r}},f(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){Ag.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downEl=n,this._downPoint=[e.zrX,e.zrY],this._upEl=n;else if("mouseup"===t)this._upEl=n;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||yg(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(i,t,e)}}),c(Ag,bg),c(Ag,le);var Dg="undefined"==typeof Float32Array?Array:Float32Array,kg=(Object.freeze||Object)({create:be,identity:Se,copy:Me,mul:Ie,translate:Te,rotate:Ce,scale:Ae,invert:De,clone:ke}),Pg=Se,Lg=5e-5,Og=function(t){t=t||{},t.position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},zg=Og.prototype;zg.transform=null,zg.needLocalTransform=function(){return Pe(this.rotation)||Pe(this.position[0])||Pe(this.position[1])||Pe(this.scale[0]-1)||Pe(this.scale[1]-1)};var Eg=[];zg.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(!i&&!e)return void(n&&Pg(n));n=n||be(),i?this.getLocalTransform(n):Pg(n),e&&(i?Ie(n,t.transform,n):Me(n,t.transform)),this.transform=n;var r=this.globalScaleRatio;if(null!=r&&1!==r){this.getGlobalScale(Eg);var a=Eg[0]<0?-1:1,o=Eg[1]<0?-1:1,s=((Eg[0]-a)*r+a)/Eg[0]||0,l=((Eg[1]-o)*r+o)/Eg[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||be(),De(this.invTransform,n)},zg.getLocalTransform=function(t){return Og.getLocalTransform(this,t)},zg.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},zg.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var Rg=[],Bg=be();zg.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,r=this.scale;Pe(e-1)&&(e=Math.sqrt(e)),Pe(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],r[0]=e,r[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},zg.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(Ie(Rg,t.invTransform,e),e=Rg);var i=this.origin;i&&(i[0]||i[1])&&(Bg[4]=i[0],Bg[5]=i[1],Ie(Rg,e,Bg),Rg[4]-=i[0],Rg[5]-=i[1],e=Rg),this.setLocalTransform(e)}},zg.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},zg.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&ae(i,i,n),i},zg.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&ae(i,i,n),i},Og.getLocalTransform=function(t,e){e=e||[],Pg(e);var i=t.origin,n=t.scale||[1,1],r=t.rotation||0,a=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),Ae(e,e,n),r&&Ce(e,e,r),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=a[0],e[5]+=a[1],e};var Ng={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(-Math.pow(2,-10*(t-1))+2)},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||1>i?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),-(i*Math.pow(2,10*(t-=1))*Math.sin(2*(t-e)*Math.PI/n)))},elasticOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||1>i?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin(2*(t-e)*Math.PI/n)+1)},elasticInOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||1>i?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?-.5*i*Math.pow(2,10*(t-=1))*Math.sin(2*(t-e)*Math.PI/n):i*Math.pow(2,-10*(t-=1))*Math.sin(2*(t-e)*Math.PI/n)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?.5*t*t*((e+1)*t-e):.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-Ng.bounceOut(1-t)},bounceOut:function(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return.5>t?.5*Ng.bounceIn(2*t):.5*Ng.bounceOut(2*t-1)+.5}};Le.prototype={constructor:Le,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)return void(this._pausedTime+=e);var i=(t-this._startTime-this._pausedTime)/this._life;if(!(0>i)){i=Math.min(i,1);var n=this.easing,r="string"==typeof n?Ng[n]:n,a="function"==typeof r?r(i):i;return this.fire("frame",a),1==i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){t="on"+t,this[t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var Fg=function(){this.head=null,this.tail=null,this._len=0},Vg=Fg.prototype;Vg.insert=function(t){var e=new Wg(t);return this.insertEntry(e),e},Vg.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},Vg.remove=function(t){var e=t.prev,i=t.next;e?e.next=i:this.head=i,i?i.prev=e:this.tail=e,t.next=t.prev=null,this._len--},Vg.len=function(){return this._len},Vg.clear=function(){this.head=this.tail=null,this._len=0};var Wg=function(t){this.value=t,this.next,this.prev},Gg=function(t){this._list=new Fg,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},Hg=Gg.prototype;Hg.put=function(t,e){var i=this._list,n=this._map,r=null;if(null==n[t]){var a=i.len(),o=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=i.head;i.remove(s),delete n[s.key],r=s.value,this._lastRemovedEntry=s}o?o.value=e:o=new Wg(e),o.key=t,i.insertEntry(o),n[t]=o}return r},Hg.get=function(t){var e=this._map[t],i=this._list;return null!=e?(e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value):void 0},Hg.clear=function(){this._list.clear(),this._map={}};var Zg={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]},Xg=new Gg(20),Yg=null,jg=qe,qg=Ue,Ug=(Object.freeze||Object)({parse:He,lift:Ye,toHex:je,fastLerp:qe,fastMapToColor:jg,lerp:Ue,mapToColor:qg,modifyHSL:$e,modifyAlpha:Ke,stringify:Qe}),$g=Array.prototype.slice,Kg=function(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||Je,this._setter=n||ti,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};Kg.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var r=this._getter(this._target,n);if(null==r)continue;0!==t&&i[n].push({time:0,value:li(r)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;ti;i++)t[i].call(this)},start:function(t,e){var i,n=this,r=0,a=function(){r--,r||n._doneCallback()};for(var o in this._tracks)if(this._tracks.hasOwnProperty(o)){var s=ci(this,t,a,this._tracks[o],o,e);s&&(this._clipList.push(s),r++,this.animation&&this.animation.addClip(s),i=s)}if(i){var l=i.onframe;i.onframe=function(t,e){l(t,e);for(var i=0;i1&&(ev=function(){for(var t in arguments)console.log(arguments[t])});var iv=ev,nv=function(){this.animators=[]};nv.prototype={constructor:nv,animate:function(t,e){var i,n=!1,r=this,a=this.__zr;if(t){var o=t.split("."),s=r;n="shape"===o[0];for(var l=0,u=o.length;u>l;l++)s&&(s=s[o[l]]);s&&(i=s)}else i=r;if(!i)return void iv('Property "'+t+'" is not existed in element '+r.id);var c=r.animators,d=new Kg(i,e);return d.during(function(){r.dirty(n)}).done(function(){c.splice(h(c,d),1)}),c.push(d),a&&a.animation.addAnimator(d),d},stopAnimation:function(t){for(var e=this.animators,i=e.length,n=0;i>n;n++)e[n].stop(t);return e.length=0,this},animateTo:function(t,e,i,n,r,a){di(this,t,e,i,n,r,a)},animateFrom:function(t,e,i,n,r,a){di(this,t,e,i,n,r,a,!0)}};var rv=function(t){Og.call(this,t),bg.call(this,t),nv.call(this,t),this.id=t.id||Qp()};rv.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,isGroup:!1,drift:function(t,e){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=e,this.decomposeTransform(),this.dirty(!1)},beforeUpdate:function(){},afterUpdate:function(){},update:function(){this.updateTransform()},traverse:function(){},attrKV:function(t,e){if("position"===t||"scale"===t||"origin"===t){if(e){var i=this[t];i||(i=this[t]=[]),i[0]=e[0],i[1]=e[1]}}else this[t]=e},hide:function(){this.ignore=!0,this.__zr&&this.__zr.refresh()},show:function(){this.ignore=!1,this.__zr&&this.__zr.refresh()},attr:function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(S(t))for(var i in t)t.hasOwnProperty(i)&&this.attrKV(i,t[i]);return this.dirty(!1),this},setClipPath:function(t){var e=this.__zr;e&&t.addSelfToZr(e),this.clipPath&&this.clipPath!==t&&this.removeClipPath(),this.clipPath=t,t.__zr=e,t.__clipTarget=this,this.dirty(!1)},removeClipPath:function(){var t=this.clipPath;t&&(t.__zr&&t.removeSelfFromZr(t.__zr),t.__zr=null,t.__clipTarget=null,this.clipPath=null,this.dirty(!1))},addSelfToZr:function(t){this.__zr=t;var e=this.animators;if(e)for(var i=0;in||i>s||l>a||r>h)},contain:function(t,e){var i=this;return t>=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new gi(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},gi.create=function(t){return new gi(t.x,t.y,t.width,t.height)};var lv=function(t){t=t||{},rv.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};lv.prototype={constructor:lv,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof lv&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,r=h(n,t);return 0>r?this:(n.splice(r,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof lv&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;en;n++)this._updateAndAddDisplayable(e[n],null,t);i.length=this._displayListLen,tg.canvasSupported&&Si(i,Mi)},_updateAndAddDisplayable:function(t,e,i){if(!t.ignore||i){t.beforeUpdate(),t.__dirty&&t.update(),t.afterUpdate();var n=t.clipPath;if(n){e=e?e.slice():[];for(var r=n,a=t;r;)r.parent=a,r.updateTransform(),e.push(r),a=r,r=r.clipPath}if(t.isGroup){for(var o=t._children,s=0;se;e++)this.delRoot(t[e]);else{var r=h(this._roots,t);r>=0&&(this.delFromStorage(t),this._roots.splice(r,1),t instanceof lv&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:Mi};var dv={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},fv=function(t,e,i){return dv.hasOwnProperty(e)?i*=t.dpr:i},pv=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],gv=function(t){this.extendFrom(t,!1)};gv.prototype={constructor:gv,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){for(var n=this,r=i&&i.style,a=!r,o=0;o0},extendFrom:function(t,e){if(t)for(var i in t)!t.hasOwnProperty(i)||e!==!0&&(e===!1?this.hasOwnProperty(i):null==t[i])||(this[i]=t[i])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,i){for(var n="radial"===e.type?Ti:Ii,r=n(t,e,i),a=e.colorStops,o=0;o=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(){for(var t=this._hoverElements,e=0;er;){var a=t[r],o=a.__from;o&&o.__zr?(r++,o.invisible||(a.transform=o.transform,a.invTransform=o.invTransform,a.__clipPaths=o.__clipPaths,this._doPaintEl(a,i,!0,n))):(t.splice(r,1),o.__hoverMir=null,e--)}i.ctx.restore()}},getHoverLayer:function(){return this.getLayer(zv)},_paintList:function(t,e,i){if(this._redrawId===i){e=e||!1,this._updateLayerStatus(t);var n=this._doPaintList(t,e);if(this._needsManuallyCompositing&&this._compositeManually(),!n){var r=this;wv(function(){r._paintList(t,e,i)})}}},_compositeManually:function(){var t=this.getLayer(Ev).ctx,e=this._domRoot.width,i=this._domRoot.height;t.clearRect(0,0,e,i),this.eachBuiltinLayer(function(n){n.virtual&&t.drawImage(n.dom,0,0,e,i)})},_doPaintList:function(t,e){for(var i=[],n=0;n15)break}}a.__drawIndex=v,a.__drawIndex0&&t>n[0]){for(o=0;r-1>o&&!(n[o]t);o++);a=i[n[o]]}if(n.splice(o+1,0,t),i[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)},eachLayer:function(t,e){var i,n,r=this._zlevelList;for(n=0;n0?Rv:0),this._needsManuallyCompositing),o.__builtin__||iv("ZLevel "+s+" has been used by unkown layer "+o.id),o!==r&&(o.__used=!0,o.__startIndex!==i&&(o.__dirty=!0),o.__startIndex=i,o.__drawIndex=o.incremental?-1:i,e(i),r=o),n.__dirty&&(o.__dirty=!0,o.incremental&&o.__drawIndex<0&&(o.__drawIndex=i))}e(i),this.eachBuiltinLayer(function(t){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?r(i[t],e,!0):i[t]=e;for(var n=0;n=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;io;o++){var s=i[o],l=s.step(t,e);l&&(r.push(l),a.push(s))}for(var o=0;n>o;)i[o]._needsRemove?(i[o]=i[n-1],i.pop(),n--):o++;n=r.length;for(var o=0;n>o;o++)a[o].fire(r[o]);this._time=t,this.onframe(e),this.trigger("frame",e),this.stage.update&&this.stage.update()},_startLoop:function(){function t(){e._running&&(wv(t),!e._paused&&e._update())}var e=this;this._running=!0,wv(t)},start:function(){this._time=(new Date).getTime(),this._pausedTime=0,this._startLoop()},stop:function(){this._running=!1},pause:function(){this._paused||(this._pauseStart=(new Date).getTime(),this._paused=!0)},resume:function(){this._paused&&(this._pausedTime+=(new Date).getTime()-this._pauseStart,this._paused=!1)},clear:function(){this._clips=[]},isFinished:function(){return!this._clips.length},animate:function(t,e){e=e||{};var i=new Kg(t,e.loop,e.getter,e.setter);return this.addAnimator(i),i}},c(Wv,bg);var Gv=function(){this._track=[]};Gv.prototype={constructor:Gv,recognize:function(t,e,i){return this._doTrack(t,e,i),this._recognize(t)},clear:function(){return this._track.length=0,this},_doTrack:function(t,e,i){var n=t.touches;if(n){for(var r={points:[],touches:[],target:e,event:t},a=0,o=n.length;o>a;a++){var s=n[a],l=de(i,s,{});r.points.push([l.zrX,l.zrY]),r.touches.push(s)}this._track.push(r)}},_recognize:function(t){for(var e in Hv)if(Hv.hasOwnProperty(e)){var i=Hv[e](this._track,t);if(i)return i}}};var Hv={pinch:function(t,e){var i=t.length;if(i){var n=(t[i-1]||{}).points,r=(t[i-2]||{}).points||n;if(r&&r.length>1&&n&&n.length>1){var a=In(n)/In(r);!isFinite(a)&&(a=1),e.pinchScale=a;var o=Tn(n);return e.pinchX=o[0],e.pinchY=o[1],{type:"pinch",target:t[0].target,event:e}}}}},Zv=300,Xv=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],Yv=["touchstart","touchend","touchmove"],jv={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},qv=p(Xv,function(t){var e=t.replace("mouse","pointer");return jv[e]?e:t}),Uv={mousemove:function(t){t=pe(this.dom,t),this.trigger("mousemove",t)},mouseout:function(t){t=pe(this.dom,t);var e=t.toElement||t.relatedTarget;if(e!=this.dom)for(;e&&9!=e.nodeType;){if(e===this.dom)return;e=e.parentNode}this.trigger("mouseout",t)},touchstart:function(t){t=pe(this.dom,t),t.zrByTouch=!0,this._lastTouchMoment=new Date,An(this,t,"start"),Uv.mousemove.call(this,t),Uv.mousedown.call(this,t),Dn(this)},touchmove:function(t){t=pe(this.dom,t),t.zrByTouch=!0,An(this,t,"change"),Uv.mousemove.call(this,t),Dn(this)},touchend:function(t){t=pe(this.dom,t),t.zrByTouch=!0,An(this,t,"end"),Uv.mouseup.call(this,t),+new Date-this._lastTouchMoment=0||n&&h(n,o)<0)){var s=e.getShallow(o);null!=s&&(r[t[a][0]]=s)}}return r}},fm=dm([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),pm={getLineStyle:function(t){var e=fm(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"===e||null==e?null:"dashed"===e?[n,n]:[i,i]}},gm=dm([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),vm={getAreaStyle:function(t,e){return gm(this,t,e)}},mm=Math.pow,ym=Math.sqrt,xm=1e-8,_m=1e-4,wm=ym(3),bm=1/3,Sm=W(),Mm=W(),Im=W(),Tm=Math.min,Cm=Math.max,Am=Math.sin,Dm=Math.cos,km=2*Math.PI,Pm=W(),Lm=W(),Om=W(),zm=[],Em=[],Rm={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Bm=[],Nm=[],Fm=[],Vm=[],Wm=Math.min,Gm=Math.max,Hm=Math.cos,Zm=Math.sin,Xm=Math.sqrt,Ym=Math.abs,jm="undefined"!=typeof Float32Array,qm=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};qm.prototype={constructor:qm,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=Ym(1/tv/t)||0,this._uy=Ym(1/tv/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(Rm.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var i=Ym(t-this._xi)>this._ux||Ym(e-this._yi)>this._uy||this._len<5;return this.addData(Rm.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,r,a){return this.addData(Rm.C,t,e,i,n,r,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,r,a):this._ctx.bezierCurveTo(t,e,i,n,r,a)),this._xi=r,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(Rm.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,r,a){return this.addData(Rm.A,t,e,i,i,n,r-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,r,a),this._xi=Hm(r)*i+t,this._yi=Zm(r)*i+e,this},arcTo:function(t,e,i,n,r){return this._ctx&&this._ctx.arcTo(t,e,i,n,r),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(Rm.R,t,e,i,n),this},closePath:function(){this.addData(Rm.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,i=0;ii;i++)this.data[i]=t[i];this._len=e},appendPath:function(t){t instanceof Array||(t=[t]);for(var e=t.length,i=0,n=this._len,r=0;e>r;r++)i+=t[r].len();jm&&this.data instanceof Float32Array&&(this.data=new Float32Array(n+i));for(var r=0;e>r;r++)for(var a=t[r].data,o=0;oe.length&&(this._expandData(),e=this.data);for(var i=0;ia&&(a=r+a),a%=r,f-=a*u,p-=a*c;u>0&&t>=f||0>u&&f>=t||0==u&&(c>0&&e>=p||0>c&&p>=e);)n=this._dashIdx,i=o[n],f+=u*i,p+=c*i,this._dashIdx=(n+1)%g,u>0&&l>f||0>u&&f>l||c>0&&h>p||0>c&&p>h||s[n%2?"moveTo":"lineTo"](u>=0?Wm(f,t):Gm(f,t),c>=0?Wm(p,e):Gm(p,e));u=f-t,c=p-e,this._dashOffset=-Xm(u*u+c*c)},_dashedBezierTo:function(t,e,i,n,r,a){var o,s,l,h,u,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,v=this._yi,m=lr,y=0,x=this._dashIdx,_=f.length,w=0;for(0>d&&(d=c+d),d%=c,o=0;1>o;o+=.1)s=m(g,t,i,r,o+.1)-m(g,t,i,r,o),l=m(v,e,n,a,o+.1)-m(v,e,n,a,o),y+=Xm(s*s+l*l);for(;_>x&&(w+=f[x],!(w>d));x++);for(o=(w-d)/y;1>=o;)h=m(g,t,i,r,o),u=m(v,e,n,a,o),x%2?p.moveTo(h,u):p.lineTo(h,u),o+=f[x]/y,x=(x+1)%_;x%2!==0&&p.lineTo(r,a),s=r-h,l=a-u,this._dashOffset=-Xm(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var r=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,r,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,jm&&(this.data=new Float32Array(t)))},getBoundingRect:function(){Bm[0]=Bm[1]=Fm[0]=Fm[1]=Number.MAX_VALUE,Nm[0]=Nm[1]=Vm[0]=Vm[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,r=0,a=0;ac;){var d=s[c++];switch(1==c&&(n=s[c],r=s[c+1],e=n,i=r),d){case Rm.M:e=n=s[c++],i=r=s[c++],t.moveTo(n,r);break;case Rm.L:a=s[c++],o=s[c++],(Ym(a-n)>l||Ym(o-r)>h||c===u-1)&&(t.lineTo(a,o),n=a,r=o);break;case Rm.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],r=s[c-1];break;case Rm.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],r=s[c-1];break;case Rm.A:var f=s[c++],p=s[c++],g=s[c++],v=s[c++],m=s[c++],y=s[c++],x=s[c++],_=s[c++],w=g>v?g:v,b=g>v?1:g/v,S=g>v?v/g:1,M=Math.abs(g-v)>.001,I=m+y;M?(t.translate(f,p),t.rotate(x),t.scale(b,S),t.arc(0,0,w,m,I,1-_),t.scale(1/b,1/S),t.rotate(-x),t.translate(-f,-p)):t.arc(f,p,w,m,I,1-_),1==c&&(e=Hm(m)*g+f,i=Zm(m)*v+p),n=Hm(I)*g+f,r=Zm(I)*v+p;break;case Rm.R:e=n=s[c],i=r=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case Rm.Z:t.closePath(),n=e,r=i}}}},qm.CMD=Rm;var Um=2*Math.PI,$m=2*Math.PI,Km=qm.CMD,Qm=2*Math.PI,Jm=1e-4,ty=[-1,-1,-1],ey=[-1,-1],iy=xv.prototype.getCanvasPattern,ny=Math.abs,ry=new qm(!0);Fr.prototype={constructor:Fr,type:"path",__dirtyPath:!0,strokeContainThreshold:5,brush:function(t,e){var i=this.style,n=this.path||ry,r=i.hasStroke(),a=i.hasFill(),o=i.fill,s=i.stroke,l=a&&!!o.colorStops,h=r&&!!s.colorStops,u=a&&!!o.image,c=r&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var d;l&&(d=d||this.getBoundingRect(),this._fillGradient=i.getGradient(t,o,d)),h&&(d=d||this.getBoundingRect(),this._strokeGradient=i.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:u&&(t.fillStyle=iy.call(o,t)),h?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=iy.call(s,t));var f=i.lineDash,p=i.lineDashOffset,g=!!t.setLineDash,v=this.getGlobalScale();if(n.setScale(v[0],v[1]),this.__dirtyPath||f&&!g&&r?(n.beginPath(t),f&&!g&&(n.setLineDash(f),n.setLineDashOffset(p)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),a)if(null!=i.fillOpacity){var m=t.globalAlpha;t.globalAlpha=i.fillOpacity*i.opacity,n.fill(t),t.globalAlpha=m}else n.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),r)if(null!=i.strokeOpacity){var m=t.globalAlpha;t.globalAlpha=i.strokeOpacity*i.opacity,n.stroke(t),t.globalAlpha=m}else n.stroke(t);f&&g&&t.setLineDash([]),null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(){},createPathProxy:function(){this.path=new qm},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new qm),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var r=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){r.copy(t);var a=e.lineWidth,o=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),o>1e-10&&(r.width+=a/o,r.height+=a/o,r.x-=a/o/2,r.y-=a/o/2)}return r}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),r=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(r.hasStroke()){var o=r.lineWidth,s=r.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(r.hasFill()||(o=Math.max(o,this.strokeContainThreshold)),Nr(a,o/s,t,e)))return!0}if(r.hasFill())return Br(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):mn.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(S(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&ny(t[0]-1)>1e-10&&ny(t[3]-1)>1e-10?Math.sqrt(ny(t[0]*t[3]-t[2]*t[1])):1}},Fr.extend=function(t){var e=function(e){Fr.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var n=this.shape;for(var r in i)!n.hasOwnProperty(r)&&i.hasOwnProperty(r)&&(n[r]=i[r])}t.init&&t.init.call(this,e)};u(e,Fr);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(Fr,mn);var ay=qm.CMD,oy=[[],[],[]],sy=Math.sqrt,ly=Math.atan2,hy=function(t,e){var i,n,r,a,o,s,l=t.data,h=ay.M,u=ay.C,c=ay.L,d=ay.R,f=ay.A,p=ay.Q;for(r=0,a=0;ro;o++){var s=oy[o];s[0]=l[r++],s[1]=l[r++],ae(s,s,e),l[a++]=s[0],l[a++]=s[1]}}},uy=Math.sqrt,cy=Math.sin,dy=Math.cos,fy=Math.PI,py=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},gy=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(py(t)*py(e))},vy=function(t,e){return(t[0]*e[1]=11?function(){var e,i=this.__clipPaths,n=this.style;if(i)for(var r=0;ra;a++)r+=ee(t[a-1],t[a]);var o=r/2;o=i>o?i:o;for(var a=0;o>a;a++){var s,l,h,u=a/(o-1)*(e?i:i-1),c=Math.floor(u),d=u-c,f=t[c%i];e?(s=t[(c-1+i)%i],l=t[(c+1)%i],h=t[(c+2)%i]):(s=t[0===c?c:c-1],l=t[c>i-2?i-1:c+1],h=t[c>i-3?i-1:c+2]);var p=d*d,g=d*p;n.push([Yr(s[0],f[0],l[0],h[0],d,p,g),Yr(s[1],f[1],l[1],h[1],d,p,g)])}return n},Ty=function(t,e,i,n){var r,a,o,s,l=[],h=[],u=[],c=[];if(n){o=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;f>d;d++)oe(o,o,t[d]),se(s,s,t[d]);oe(o,o,n[0]),se(s,s,n[1])}for(var d=0,f=t.length;f>d;d++){var p=t[d];if(i)r=t[d?d-1:f-1],a=t[(d+1)%f];else{if(0===d||d===f-1){l.push(H(t[d]));continue}r=t[d-1],a=t[d+1]}j(h,a,r),J(h,h,e);var g=ee(p,r),v=ee(p,a),m=g+v;0!==m&&(g/=m,v/=m),J(u,h,-g),J(c,h,v);var y=X([],p,u),x=X([],p,c);n&&(se(y,y,o),oe(y,y,s),se(x,x,o),oe(x,x,s)),l.push(y),l.push(x)}return i&&l.push(l.shift()),l},Cy=Fr.extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){jr(t,e,!0)}}),Ay=Fr.extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){jr(t,e,!1)}}),Dy=Fr.extend({type:"rect",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,r=e.width,a=e.height;e.r?Ki(t,e):t.rect(i,n,r,a),t.closePath()}}),ky=Fr.extend({type:"line",shape:{x1:0,y1:0,x2:0,y2:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.x1,n=e.y1,r=e.x2,a=e.y2,o=e.percent;0!==o&&(t.moveTo(i,n),1>o&&(r=i*(1-o)+r*o,a=n*(1-o)+a*o),t.lineTo(r,a))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}}),Py=[],Ly=Fr.extend({type:"bezier-curve",shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.x1,n=e.y1,r=e.x2,a=e.y2,o=e.cpx1,s=e.cpy1,l=e.cpx2,h=e.cpy2,u=e.percent;0!==u&&(t.moveTo(i,n),null==l||null==h?(1>u&&(yr(i,o,r,u,Py),o=Py[1],r=Py[2],yr(n,s,a,u,Py),s=Py[1],a=Py[2]),t.quadraticCurveTo(o,s,r,a)):(1>u&&(dr(i,o,l,r,u,Py),o=Py[1],l=Py[2],r=Py[3],dr(n,s,h,a,u,Py),s=Py[1],h=Py[2],a=Py[3]),t.bezierCurveTo(o,s,l,h,r,a)))},pointAt:function(t){return qr(this.shape,t,!1)},tangentAt:function(t){var e=qr(this.shape,t,!0);return te(e,e)}}),Oy=Fr.extend({type:"arc",shape:{cx:0,cy:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.cx,n=e.cy,r=Math.max(e.r,0),a=e.startAngle,o=e.endAngle,s=e.clockwise,l=Math.cos(a),h=Math.sin(a);t.moveTo(l*r+i,h*r+n),t.arc(i,n,r,a,o,!s)}}),zy=Fr.extend({type:"compound",shape:{paths:null},_updatePathDirty:function(){for(var t=this.__dirtyPath,e=this.shape.paths,i=0;i"'])/g,ox={"&":"&","<":"<",">":">",'"':""","'":"'"},sx=["a","b","c","d","e","f","g"],lx=function(t,e){return"{"+t+(null==e?"":e)+"}"},hx=Wi,ux=Ei,cx=(Object.freeze||Object)({addCommas:co,toCamelCase:fo,normalizeCssArray:rx,encodeHTML:po,formatTpl:go,formatTplSimple:vo,getTooltipMarker:mo,formatTime:xo,capitalFirst:_o,truncateText:hx,getTextRect:ux}),dx=f,fx=["left","right","top","bottom","width","height"],px=[["width","left","right"],["height","top","bottom"]],gx=wo,vx=(x(wo,"vertical"),x(wo,"horizontal"),{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}}),mx=jn(),yx=Wa.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){Wa.call(this,t,e,i,n),this.uid=Za("ec_cpt_model")},init:function(t,e,i){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?Mo(t):{},a=e.getTheme();r(t,a.get(this.mainType)),r(t,this.getDefaultOption()),i&&So(t,n,i)},mergeOption:function(t){r(this.option,t,!0);var e=this.layoutMode;e&&So(this.option,t,e)},optionUpdated:function(){},getDefaultOption:function(){var t=mx(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var n=i.prototype.defaultOption;n&&e.push(n),i=i.superClass}for(var a={},o=e.length-1;o>=0;o--)a=r(a,e[o],!0);t.defaultOption=a}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});ar(yx,{registerWhenExtend:!0}),Xa(yx),Ya(yx,To),c(yx,vx);var xx="";"undefined"!=typeof navigator&&(xx=navigator.platform||"");var _x={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:xx.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},bx=jn(),Sx={clearColorPalette:function(){bx(this).colorIdx=0,bx(this).colorNameMap={}},getColorFromPalette:function(t,e,i){e=e||this;var n=bx(e),r=n.colorIdx||0,a=n.colorNameMap=n.colorNameMap||{};if(a.hasOwnProperty(t))return a[t];var o=Nn(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?Co(s,i):o;if(l=l||o,l&&l.length){var h=l[r];return t&&(a[t]=h),n.colorIdx=(r+1)%l.length,h}}},Mx={cartesian2d:function(t,e,i,n){var r=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",r),i.set("y",a),Do(r)&&(n.set("x",r),e.firstCategoryDimIndex=0),Do(a)&&(n.set("y",a),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var r=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",r),Do(r)&&(n.set("single",r),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var r=t.getReferringComponents("polar")[0],a=r.findAxisModel("radiusAxis"),o=r.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",o),Do(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),Do(o)&&(n.set("angle",o),e.firstCategoryDimIndex=1)},geo:function(t,e){e.coordSysDims=["lng","lat"]},parallel:function(t,e,i,n){var r=t.ecModel,a=r.getComponent("parallel",t.get("parallelIndex")),o=e.coordSysDims=a.dimensions.slice();f(a.parallelAxisIndex,function(t,a){var s=r.getComponent("parallelAxis",t),l=o[a];i.set(l,s),Do(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},Ix="original",Tx="arrayRows",Cx="objectRows",Ax="keyedColumns",Dx="unknown",kx="typedArray",Px="column",Lx="row";ko.seriesDataToSource=function(t){return new ko({data:t,sourceFormat:I(t)?kx:Ix,fromDataset:!1})},ir(ko);var Ox=jn(),zx="\x00_ec_inner",Ex=Wa.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new Wa(i),this._optionManager=n},setOption:function(t,e){O(!(zx in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,i=this._optionManager;if(!t||"recreate"===t){var n=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(n)):Xo.call(this,n),e=!0}if(("timeline"===t||"media"===t)&&this.restoreData(),!t||"recreate"===t||"timeline"===t){var r=i.getTimelineOption(this);r&&(this.mergeOption(r),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&f(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){function e(e,n){var r=Nn(t[e]),s=Gn(a.get(e),r);Hn(s),f(s,function(t){var i=t.option;S(i)&&(t.keyInfo.mainType=e,t.keyInfo.subType=jo(e,i,t.exist))});var l=Yo(a,n);i[e]=[],a.set(e,[]),f(s,function(t,n){var r=t.exist,s=t.option;if(O(S(s)||r,"Empty component definition"),s){var h=yx.getClass(e,t.keyInfo.subType,!0);if(r&&r instanceof h)r.name=t.keyInfo.name,r.mergeOption(s,this),r.optionUpdated(s,!1);else{var u=o({dependentModels:l,componentIndex:n},t.keyInfo);r=new h(s,this,this,u),o(r,u),r.init(s,this,this,u),r.optionUpdated(null,!0)}}else r.mergeOption({},this),r.optionUpdated({},!1);a.get(e)[n]=r,i[e][n]=r.option},this),"series"===e&&qo(this,a.get("series"))}var i=this.option,a=this._componentsMap,s=[];Oo(this),f(t,function(t,e){null!=t&&(yx.hasClass(e)?e&&s.push(e):i[e]=null==i[e]?n(t):r(i[e],t,!0))}),yx.topologicalTravel(s,yx.getAllClassMainTypes(),e,this),this._seriesIndicesMap=N(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=n(this.option);return f(t,function(e,i){if(yx.hasClass(i)){for(var e=Nn(e),n=e.length-1;n>=0;n--)Xn(e[n])&&e.splice(n,1);t[i]=e}}),delete t[zx],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);return i?i[e||0]:void 0},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,r=t.name,a=this._componentsMap.get(e);if(!a||!a.length)return[];var o;if(null!=i)_(i)||(i=[i]),o=v(p(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=_(n);o=v(a,function(t){return s&&h(n,t.id)>=0||!s&&t.id===n})}else if(null!=r){var l=_(r);o=v(a,function(t){return l&&h(r,t.name)>=0||!l&&t.name===r})}else o=a.slice();return Uo(o,t)},findComponents:function(t){function e(t){var e=r+"Index",i=r+"Id",n=r+"Name";return!t||null==t[e]&&null==t[i]&&null==t[n]?null:{mainType:r,index:t[e],id:t[i],name:t[n]}}function i(e){return t.filter?v(e,t.filter):e}var n=t.query,r=t.mainType,a=e(n),o=a?this.queryComponents(a):this._componentsMap.get(r);return i(Uo(o,t))},eachComponent:function(t,e,i){var n=this._componentsMap;if("function"==typeof t)i=e,e=t,n.each(function(t,n){f(t,function(t,r){e.call(i,n,t,r)})});else if(b(t))f(n.get(t),e,i);else if(S(t)){var r=this.findComponents(t);f(r,e,i)}},getSeriesByName:function(t){var e=this._componentsMap.get("series");return v(e,function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){var e=this._componentsMap.get("series");return v(e,function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){f(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){f(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){f(this._seriesIndices,function(n){var r=this._componentsMap.get("series")[n];r.subType===t&&e.call(i,r,n)},this)},eachRawSeriesByType:function(t,e,i){return f(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){var i=v(this._componentsMap.get("series"),t,e);qo(this,i)},restoreData:function(t){var e=this._componentsMap;qo(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),yx.topologicalTravel(i,yx.getAllClassMainTypes(),function(i){f(e.get(i),function(e){("series"!==i||!Ho(e,t))&&e.restoreData()})})}});c(Ex,Sx);var Rx=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],Bx={};Ko.prototype={constructor:Ko,create:function(t,e){var i=[];f(Bx,function(n){var r=n.create(t,e);i=i.concat(r||[])}),this._coordinateSystems=i},update:function(t,e){f(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},Ko.register=function(t,e){Bx[t]=e},Ko.get=function(t){return Bx[t]};var Nx=f,Fx=n,Vx=p,Wx=r,Gx=/^(min|max)?(.+)$/;Qo.prototype={constructor:Qo,setOption:function(t,e){t&&f(Nn(t.series),function(t){t&&t.data&&I(t.data)&&E(t.data)}),t=Fx(t,!0);var i=this._optionBackup,n=Jo.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(ns(i.baseOption,n.baseOption),n.timelineOptions.length&&(i.timelineOptions=n.timelineOptions),n.mediaList.length&&(i.mediaList=n.mediaList),n.mediaDefault&&(i.mediaDefault=n.mediaDefault)):this._optionBackup=n},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=Vx(e.timelineOptions,Fx),this._mediaList=Vx(e.mediaList,Fx),this._mediaDefault=Fx(e.mediaDefault),this._currentMediaIndices=[],Fx(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=Fx(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(){var t=this._api.getWidth(),e=this._api.getHeight(),i=this._mediaList,n=this._mediaDefault,r=[],a=[];if(!i.length&&!n)return a;for(var o=0,s=i.length;s>o;o++)ts(i[o].query,t,e)&&r.push(o);return!r.length&&n&&(r=[-1]),r.length&&!is(r,this._currentMediaIndices)&&(a=Vx(r,function(t){return Fx(-1===t?n.option:i[t].option)})),this._currentMediaIndices=r,a}};var Hx=f,Zx=S,Xx=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"],Yx=function(t,e){Hx(us(t.series),function(t){Zx(t)&&hs(t)});var i=["xAxis","yAxis","radiusAxis","angleAxis","singleAxis","parallelAxis","radar"];e&&i.push("valueAxis","categoryAxis","logAxis","timeAxis"),Hx(i,function(e){Hx(us(t[e]),function(t){t&&(ss(t,"axisLabel"),ss(t.axisPointer,"label"))})}),Hx(us(t.parallel),function(t){var e=t&&t.parallelAxisDefault;ss(e,"axisLabel"),ss(e&&e.axisPointer,"label")}),Hx(us(t.calendar),function(t){as(t,"itemStyle"),ss(t,"dayLabel"),ss(t,"monthLabel"),ss(t,"yearLabel")}),Hx(us(t.radar),function(t){ss(t,"name")}),Hx(us(t.geo),function(t){Zx(t)&&(ls(t),Hx(us(t.regions),function(t){ls(t)}))}),Hx(us(t.timeline),function(t){ls(t),as(t,"label"),as(t,"itemStyle"),as(t,"controlStyle",!0);var e=t.data;_(e)&&f(e,function(t){S(t)&&(as(t,"label"),as(t,"itemStyle"))})}),Hx(us(t.toolbox),function(t){as(t,"iconStyle"),Hx(t.feature,function(t){as(t,"iconStyle")})}),ss(cs(t.axisPointer),"label"),ss(cs(t.tooltip).axisPointer,"label")},jx=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],qx=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],Ux=function(t,e){Yx(t,e),t.series=Nn(t.series),f(t.series,function(t){if(S(t)){var e=t.type;if(("pie"===e||"gauge"===e)&&null!=t.clockWise&&(t.clockwise=t.clockWise),"gauge"===e){var i=ds(t,"pointer.color");null!=i&&fs(t,"itemStyle.normal.color",i)}ps(t)}}),t.dataRange&&(t.visualMap=t.dataRange),f(qx,function(e){var i=t[e];i&&(_(i)||(i=[i]),f(i,function(t){ps(t)}))})},$x=function(t){var e=N();t.eachSeries(function(t){var i=t.get("stack");if(i){var n=e.get(i)||e.set(i,[]),r=t.getData(),a={stackResultDimension:r.getCalculationInfo("stackResultDimension"),stackedOverDimension:r.getCalculationInfo("stackedOverDimension"),stackedDimension:r.getCalculationInfo("stackedDimension"),stackedByDimension:r.getCalculationInfo("stackedByDimension"),isStackedByIndex:r.getCalculationInfo("isStackedByIndex"),data:r,seriesModel:t};if(!a.stackedDimension||!a.isStackedByIndex&&!a.stackedByDimension)return;n.length&&r.setCalculationInfo("stackedOnSeries",n[n.length-1].seriesModel),n.push(a)}}),e.each(gs)},Kx=vs.prototype;Kx.pure=!1,Kx.persistent=!0,Kx.getSource=function(){return this._source};var Qx={arrayRows_column:{pure:!0,count:function(){return Math.max(0,this._data.length-this._source.startIndex)},getItem:function(t){return this._data[t+this._source.startIndex]},appendData:xs},arrayRows_row:{pure:!0,count:function(){var t=this._data[0];return t?Math.max(0,t.length-this._source.startIndex):0},getItem:function(t){t+=this._source.startIndex;for(var e=[],i=this._data,n=0;n=1)&&(t=1),t}var i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var r=this.context;r.data=r.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var o=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),h=t&&t.modDataCount||0;(o!==l||s!==h)&&(a="reset");var u;(this._dirty||"reset"===a)&&(this._dirty=!1,u=As(this,n)),this._modBy=l,this._modDataCount=h;var c=t&&t.step;if(this._dueEnd=i?i._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!n&&(u||f>d)){var p=this._progress;if(_(p))for(var g=0;gn?n++:null}function e(){var t=n%o*r+Math.ceil(n/o),e=n>=i?null:a>t?t:n;return n++,e}var i,n,r,a,o,s={reset:function(l,h,u,c){n=l,i=h,r=u,a=c,o=Math.ceil(a/r),s.next=r>1&&a>0?e:t}};return s}();n_.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},n_.unfinished=function(){return this._progress&&this._dueIndex":"",v=p+s.join(p||", ");return{renderMode:n,content:v,style:h}}function a(t){return{renderMode:n,content:po(co(t)),style:h}}var o=this;n=n||"html";var s="html"===n?" ":"\n",l="richText"===n,h={},u=0,c=this.getData(),d=c.mapDimension("defaultedTooltip",!0),p=d.length,v=this.getRawValue(t),m=_(v),y=c.getItemVisual(t,"color");S(y)&&y.colorStops&&(y=(y.colorStops[0]||{}).color),y=y||"transparent";var x=p>1||m&&!p?r(v):a(p?Ss(c,t,d[0]):m?v[0]:v),w=x.content,b=o.seriesIndex+"at"+u,M=mo({color:y,type:"item",renderMode:n,markerId:b});h[b]=y,++u;var I=c.getName(t),T=this.name;Zn(this)||(T=""),T=T?po(T)+(e?": ":s):"";var C="string"==typeof M?M:M.content,A=e?C+T+w:T+C+(I?po(I)+": "+w:w);return{html:A,markers:h}},isAnimationEnabled:function(){if(tg.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,r=Sx.getColorFromPalette.call(this,t,e,i);return r||(r=n.getColorFromPalette(t,e,i)),r},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});c(o_,i_),c(o_,Sx);var s_=function(){this.group=new lv,this.uid=Za("viewComponent")};s_.prototype={constructor:s_,init:function(){},render:function(){},dispose:function(){},filterForExposedEvent:null};var l_=s_.prototype;l_.updateView=l_.updateLayout=l_.updateVisual=function(){},er(s_),ar(s_,{registerWhenExtend:!0});var h_=function(){var t=jn();return function(e){var i=t(e),n=e.pipelineContext,r=i.large,a=i.progressiveRender,o=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(r^o||a^s)&&"reset"}},u_=jn(),c_=h_();Bs.prototype={type:"chart",init:function(){},render:function(){},highlight:function(t,e,i,n){Fs(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Fs(t.getData(),n,"normal")},remove:function(){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var d_=Bs.prototype;d_.updateView=d_.updateLayout=d_.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},er(Bs,["dispose"]),ar(Bs,{registerWhenExtend:!0}),Bs.markUpdateMethod=function(t,e){u_(t).updateMethod=e
+};var f_={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},p_="\x00__throttleOriginMethod",g_="\x00__throttleRate",v_="\x00__throttleType",m_={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=(t.visualColorAccessPath||"itemStyle.color").split("."),r=t.get(n)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(i.setVisual("color",r),!e.isSeriesFiltered(t)){"function"!=typeof r||r instanceof Ey||i.each(function(e){i.setItemVisual(e,"color",r(t.getDataParams(e)))});var a=function(t,e){var i=t.getItemModel(e),r=i.get(n,!0);null!=r&&t.setItemVisual(e,"color",r)};return{dataEach:i.hasItemOption?a:null}}}},y_={toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},x_=function(t,e){function i(t,e){if("string"!=typeof t)return t;var i=t;return f(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function n(t){var e=o.get(t);if(null==e){for(var i=t.split("."),n=y_.aria,r=0;rs)){var d=r();l=d?i(n("general.withTitle"),{title:d}):n("general.withoutTitle");var p=[],g=s>1?"series.multiple.prefix":"series.single.prefix";l+=i(n(g),{seriesCount:s}),e.eachSeries(function(t,e){if(c>e){var r,o=t.get("name"),l="series."+(s>1?"multiple":"single")+".";r=n(o?l+"withName":l+"withoutName"),r=i(r,{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:a(t.subType)});var u=t.getData();window.data=u,r+=u.count()>h?i(n("data.partialData"),{displayCnt:h}):n("data.allData");for(var d=[],f=0;ff){var g=u.getName(f),v=Ss(u,f);d.push(i(n(g?"data.withName":"data.withoutName"),{name:g,value:v}))}r+=d.join(n("data.separator.middle"))+n("data.separator.end"),p.push(r)}}),l+=p.join(n("series.multiple.separator.middle"))+n("series.multiple.separator.end"),t.setAttribute("aria-label",l)}}},__=Math.PI,w_=function(t,e){e=e||{},s(e,{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new Dy({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new Oy({shape:{startAngle:-__/2,endAngle:-__/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),r=new Dy({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});n.animateShape(!0).when(1e3,{endAngle:3*__/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*__/2}).delay(300).start("circularInOut");var a=new lv;return a.add(n),a.add(r),a.add(i),a.resize=function(){var e=t.getWidth()/2,a=t.getHeight()/2;n.setShape({cx:e,cy:a});var o=n.shape.r;r.setShape({x:e-o,y:a-o,width:2*o,height:2*o}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},a.resize(),a},b_=Xs.prototype;b_.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each(function(t){var e=t.overallTask;e&&e.dirty()})},b_.getPerformArgs=function(t,e){if(t.__pipeline){var i=this._pipelineMap.get(t.__pipeline.id),n=i.context,r=!e&&i.progressiveEnabled&&(!n||n.progressiveRender)&&t.__idxInPipeline>i.blockIndex,a=r?i.step:null,o=n&&n.modDataCount,s=null!=o?Math.ceil(o/a):null;return{step:a,modBy:s,modDataCount:o}}},b_.getPipeline=function(t){return this._pipelineMap.get(t)},b_.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData(),r=n.count(),a=i.progressiveEnabled&&e.incrementalPrepareRender&&r>=i.threshold,o=t.get("large")&&r>=t.get("largeThreshold"),s="mod"===t.get("progressiveChunkMode")?r:null;t.pipelineContext=i.context={progressiveRender:a,modDataCount:s,large:o}},b_.restorePipelines=function(t){var e=this,i=e._pipelineMap=N();t.eachSeries(function(t){var n=t.getProgressive(),r=t.uid;i.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:n&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(n||700),count:0}),nl(e,t,t.dataTask)})},b_.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),i=this.api;f(this._allHandlers,function(n){var r=t.get(n.uid)||t.set(n.uid,[]);n.reset&&js(this,n,r,e,i),n.overallReset&&qs(this,n,r,e,i)},this)},b_.prepareView=function(t,e,i,n){var r=t.renderTask,a=r.context;a.model=e,a.ecModel=i,a.api=n,r.__block=!t.incrementalPrepareRender,nl(this,e,r)},b_.performDataProcessorTasks=function(t,e){Ys(this,this._dataProcessorHandlers,t,e,{block:!0})},b_.performVisualTasks=function(t,e,i){Ys(this,this._visualHandlers,t,e,i)},b_.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},b_.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var S_=b_.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},M_=el(0);Xs.wrapStageHandler=function(t,e){return w(t)&&(t={overallReset:t,seriesType:rl(t)}),t.uid=Za("stageHandler"),e&&(t.visualType=e),t};var I_,T_={},C_={};al(T_,Ex),al(C_,$o),T_.eachSeriesByType=T_.eachRawSeriesByType=function(t){I_=t},T_.eachComponent=function(t){"series"===t.mainType&&t.subType&&(I_=t.subType)};var A_=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],D_={color:A_,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],A_]},k_="#eee",P_=function(){return{axisLine:{lineStyle:{color:k_}},axisTick:{lineStyle:{color:k_}},axisLabel:{textStyle:{color:k_}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:k_}}}},L_=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],O_={color:L_,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:k_},crossStyle:{color:k_}}},legend:{textStyle:{color:k_}},textStyle:{color:k_},title:{textStyle:{color:k_}},toolbox:{iconStyle:{normal:{borderColor:k_}}},dataZoom:{textStyle:{color:k_}},visualMap:{textStyle:{color:k_}},timeline:{lineStyle:{color:k_},itemStyle:{normal:{color:L_[1]}},label:{normal:{textStyle:{color:k_}}},controlStyle:{normal:{color:k_,borderColor:k_}}},timeAxis:P_(),logAxis:P_(),valueAxis:P_(),categoryAxis:P_(),line:{symbol:"circle"},graph:{color:L_},gauge:{title:{textStyle:{color:k_}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};O_.categoryAxis.splitLine.show=!1,yx.extend({type:"dataset",defaultOption:{seriesLayoutBy:Px,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){Po(this)}}),s_.extend({type:"dataset"});var z_=Fr.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=.5522848,n=e.cx,r=e.cy,a=e.rx,o=e.ry,s=a*i,l=o*i;t.moveTo(n-a,r),t.bezierCurveTo(n-a,r-l,n-s,r-o,n,r-o),t.bezierCurveTo(n+s,r-o,n+a,r-l,n+a,r),t.bezierCurveTo(n+a,r+l,n+s,r+o,n,r+o),t.bezierCurveTo(n-s,r+o,n-a,r+l,n-a,r),t.closePath()}}),E_=/[\s,]+/;sl.prototype.parse=function(t,e){e=e||{};var i=ol(t);if(!i)throw new Error("Illegal svg");var n=new lv;this._root=n;var r=i.getAttribute("viewBox")||"",a=parseFloat(i.getAttribute("width")||e.width),o=parseFloat(i.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(o)&&(o=null),cl(i,n,null,!0);for(var s=i.firstChild;s;)this._parseNode(s,n),s=s.nextSibling;var l,h;if(r){var u=z(r).split(E_);u.length>=4&&(l={x:parseFloat(u[0]||0),y:parseFloat(u[1]||0),width:parseFloat(u[2]),height:parseFloat(u[3])})}if(l&&null!=a&&null!=o&&(h=gl(l,a,o),!e.ignoreViewBox)){var c=n;n=new lv,n.add(c),c.scale=h.scale.slice(),c.position=h.position.slice()}return e.ignoreRootClip||null==a||null==o||n.setClipPath(new Dy({shape:{x:0,y:0,width:a,height:o}})),{root:n,width:a,height:o,viewBoxRect:l,viewBoxTransform:h}},sl.prototype._parseNode=function(t,e){var i=t.nodeName.toLowerCase();"defs"===i?this._isDefine=!0:"text"===i&&(this._isText=!0);var n;if(this._isDefine){var r=B_[i];if(r){var a=r.call(this,t),o=t.getAttribute("id");o&&(this._defs[o]=a)}}else{var r=R_[i];r&&(n=r.call(this,t,e),e.add(n))}for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,n),3===s.nodeType&&this._isText&&this._parseText(s,n),s=s.nextSibling;"defs"===i?this._isDefine=!1:"text"===i&&(this._isText=!1)},sl.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var r=new xy({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});hl(e,r),cl(t,r,this._defs);var a=r.style.fontSize;a&&9>a&&(r.style.fontSize=9,r.scale=r.scale||[1,1],r.scale[0]*=a/9,r.scale[1]*=a/9);var o=r.getBoundingRect();return this._textX+=o.width,e.add(r),r};var R_={g:function(t,e){var i=new lv;return hl(e,i),cl(t,i,this._defs),i},rect:function(t,e){var i=new Dy;return hl(e,i),cl(t,i,this._defs),i.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),i},circle:function(t,e){var i=new _y;return hl(e,i),cl(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),i},line:function(t,e){var i=new ky;return hl(e,i),cl(t,i,this._defs),i.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),i},ellipse:function(t,e){var i=new z_;return hl(e,i),cl(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),i},polygon:function(t,e){var i=t.getAttribute("points");i&&(i=ul(i));var n=new Cy({shape:{points:i||[]}});return hl(e,n),cl(t,n,this._defs),n},polyline:function(t,e){var i=new Fr;hl(e,i),cl(t,i,this._defs);var n=t.getAttribute("points");n&&(n=ul(n));var r=new Ay({shape:{points:n||[]}});return r},image:function(t,e){var i=new yn;return hl(e,i),cl(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,r=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(r),this._textY=parseFloat(n)+parseFloat(a);var o=new lv;return hl(e,o),cl(t,o,this._defs),o},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var r=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0,o=new lv;return hl(e,o),cl(t,o,this._defs),this._textX+=r,this._textY+=a,o},path:function(t,e){var i=t.getAttribute("d")||"",n=Hr(i);return hl(e,n),cl(t,n,this._defs),n}},B_={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),r=parseInt(t.getAttribute("y2")||0,10),a=new Ry(e,i,n,r);return ll(t,a),a},radialgradient:function(){}},N_={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-align":"textAlign","alignment-baseline":"textBaseline"},F_=/url\(\s*#(.*?)\)/,V_=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,W_=/([^\s:;]+)\s*:\s*([^:;]+)/g,G_=N(),H_={registerMap:function(t,e,i){var n;return _(e)?n=e:e.svg?n=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),n=[{type:"geoJSON",source:e,specialAreas:i}]),f(n,function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON");var i=Z_[e];i(t)}),G_.set(t,n)},retrieveMap:function(t){return G_.get(t)}},Z_={geoJSON:function(t){var e=t.source;t.geoJSON=b(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=ol(t.source)}},X_=O,Y_=f,j_=w,q_=S,U_=yx.parseClassType,$_="4.2.0",K_={zrender:"4.0.5"},Q_=1,J_=1e3,tw=5e3,ew=1e3,iw=2e3,nw=3e3,rw=4e3,aw=5e3,ow={PROCESSOR:{FILTER:J_,STATISTIC:tw},VISUAL:{LAYOUT:ew,GLOBAL:iw,CHART:nw,COMPONENT:rw,BRUSH:aw}},sw="__flagInMainProcess",lw="__optionUpdated",hw=/^[a-zA-Z0-9_]+$/;ml.prototype.on=vl("on"),ml.prototype.off=vl("off"),ml.prototype.one=vl("one"),c(ml,bg);var uw=yl.prototype;uw._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[lw]){var e=this[lw].silent;this[sw]=!0,_l(this),cw.update.call(this),this[sw]=!1,this[lw]=!1,Ml.call(this,e),Il.call(this,e)}else if(t.unfinished){var i=Q_,n=this._model,r=this._api;t.unfinished=!1;do{var a=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),bl(this,n),t.performVisualTasks(n),Pl(this,this._model,r,"remain"),i-=+new Date-a}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},uw.getDom=function(){return this._dom},uw.getZr=function(){return this._zr},uw.setOption=function(t,e,i){var n;if(q_(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[sw]=!0,!this._model||e){var r=new Qo(this._api),a=this._theme,o=this._model=new Ex(null,null,a,r);o.scheduler=this._scheduler,o.init(null,null,a,r)}this._model.setOption(t,vw),i?(this[lw]={silent:n},this[sw]=!1):(_l(this),cw.update.call(this),this._zr.flush(),this[lw]=!1,this[sw]=!1,Ml.call(this,n),Il.call(this,n))},uw.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},uw.getModel=function(){return this._model},uw.getOption=function(){return this._model&&this._model.getOption()},uw.getWidth=function(){return this._zr.getWidth()},uw.getHeight=function(){return this._zr.getHeight()},uw.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},uw.getRenderedCanvas=function(t){if(tg.canvasSupported){t=t||{},t.pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor");var e=this._zr;return e.painter.getRenderedCanvas(t)}},uw.getSvgDataUrl=function(){if(tg.svgSupported){var t=this._zr,e=t.storage.getDisplayList();return f(e,function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},uw.getDataURL=function(t){t=t||{};var e=t.excludeComponents,i=this._model,n=[],r=this;Y_(e,function(t){i.eachComponent({mainType:t},function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return Y_(n,function(t){t.group.ignore=!1}),a},uw.getConnectedDataURL=function(t){if(tg.canvasSupported){var e=this.group,i=Math.min,r=Math.max,a=1/0;if(bw[e]){var o=a,s=a,l=-a,h=-a,u=[],c=t&&t.pixelRatio||1;f(ww,function(a){if(a.group===e){var c=a.getRenderedCanvas(n(t)),d=a.getDom().getBoundingClientRect();o=i(d.left,o),s=i(d.top,s),l=r(d.right,l),h=r(d.bottom,h),u.push({dom:c,left:d.left,top:d.top})}}),o*=c,s*=c,l*=c,h*=c;var d=l-o,p=h-s,g=cg();g.width=d,g.height=p;var v=On(g);return Y_(u,function(t){var e=new yn({style:{x:t.left*c-o,y:t.top*c-s,image:t.dom}});v.add(e)}),v.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},uw.convertToPixel=x(xl,"convertToPixel"),uw.convertFromPixel=x(xl,"convertFromPixel"),uw.containPixel=function(t,e){var i,n=this._model;return t=qn(n,t),f(t,function(t,n){n.indexOf("Models")>=0&&f(t,function(t){var r=t.coordinateSystem;if(r&&r.containPoint)i|=!!r.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},uw.getVisual=function(t,e){var i=this._model;t=qn(i,t,{defaultMainType:"series"});var n=t.seriesModel,r=n.getData(),a=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?r.indexOfRawIndex(t.dataIndex):null;return null!=a?r.getItemVisual(a,e):r.getVisual(e)},uw.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},uw.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var cw={prepareAndUpdate:function(t){_l(this),cw.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,r=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),r.create(e,i),a.performDataProcessorTasks(e,t),bl(this,e),r.update(e,i),Al(e),a.performVisualTasks(e,t),Dl(this,e,i,t);var o=e.get("backgroundColor")||"transparent";if(tg.canvasSupported)n.setBackgroundColor(o);else{var s=He(o);o=Qe(s,"rgb"),0===s[3]&&(o="transparent")}Ll(e,i)}},updateTransform:function(t){var e=this._model,i=this,n=this._api;if(e){var r=[];e.eachComponent(function(a,o){var s=i.getViewOfComponentModel(o);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(o,e,n,t);l&&l.update&&r.push(s)}else r.push(s)});var a=N();e.eachSeries(function(r){var o=i._chartsMap[r.__viewId];if(o.updateTransform){var s=o.updateTransform(r,e,n,t);s&&s.update&&a.set(r.uid,1)}else a.set(r.uid,1)}),Al(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),Pl(i,e,n,t,a),Ll(e,this._api)}},updateView:function(t){var e=this._model;e&&(Bs.markUpdateMethod(t,"updateView"),Al(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),Dl(this,this._model,this._api,t),Ll(e,this._api))},updateVisual:function(t){cw.update.call(this,t)},updateLayout:function(t){cw.update.call(this,t)}};uw.resize=function(t){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var i=e.resetOption("media"),n=t&&t.silent;this[sw]=!0,i&&_l(this),cw.update.call(this),this[sw]=!1,Ml.call(this,n),Il.call(this,n)}},uw.showLoading=function(t,e){if(q_(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),_w[t]){var i=_w[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},uw.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},uw.makeActionFromEvent=function(t){var e=o({},t);return e.type=pw[t.type],e},uw.dispatchAction=function(t,e){if(q_(e)||(e={silent:!!e}),fw[t.type]&&this._model){if(this[sw])return void this._pendingActions.push(t);Sl.call(this,t,e.silent),e.flush?this._zr.flush(!0):e.flush!==!1&&tg.browser.weChat&&this._throttledZrFlush(),Ml.call(this,e.silent),Il.call(this,e.silent)}},uw.appendData=function(t){var e=t.seriesIndex,i=this.getModel(),n=i.getSeriesByIndex(e);n.appendData(t),this._scheduler.unfinished=!0},uw.on=vl("on"),uw.off=vl("off"),uw.one=vl("one");var dw=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];uw._initEvents=function(){Y_(dw,function(t){this._zr.on(t,function(e){var i,n=this.getModel(),r=e.target,a="globalout"===t;if(a)i={};else if(r&&null!=r.dataIndex){var s=r.dataModel||n.getSeriesByIndex(r.seriesIndex);i=s&&s.getDataParams(r.dataIndex,r.dataType,r)||{}}else r&&r.eventData&&(i=o({},r.eventData));if(i){var l=i.componentType,h=i.componentIndex;("markLine"===l||"markPoint"===l||"markArea"===l)&&(l="series",h=i.seriesIndex);var u=l&&null!=h&&n.getComponent(l,h),c=u&&this["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];i.event=e,i.type=t,this._ecEventProcessor.eventInfo={targetEl:r,packedEvent:i,model:u,view:c},this.trigger(t,i)}},this)},this),Y_(pw,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},uw.isDisposed=function(){return this._disposed},uw.clear=function(){this.setOption({series:[]},!0)},uw.dispose=function(){if(!this._disposed){this._disposed=!0,$n(this.getDom(),Iw,"");var t=this._api,e=this._model;Y_(this._componentsViews,function(i){i.dispose(e,t)}),Y_(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete ww[this.id]}},c(yl,bg),Bl.prototype={constructor:Bl,normalizeQuery:function(t){var e={},i={},n={};if(b(t)){var r=U_(t);e.mainType=r.main||null,e.subType=r.sub||null}else{var a=["Index","Name","Id"],o={name:1,dataIndex:1,dataType:1};f(t,function(t,r){for(var s=!1,l=0;l0&&u===r.length-h.length){var c=r.slice(0,u);"data"!==c&&(e.mainType=c,e[h.toLowerCase()]=t,s=!0)}}o.hasOwnProperty(r)&&(i[r]=t,s=!0),s||(n[r]=t)})}return{cptQuery:e,dataQuery:i,otherQuery:n}},filter:function(t,e){function i(t,e,i,n){return null==t[i]||e[n||i]===t[i]}var n=this.eventInfo;if(!n)return!0;var r=n.targetEl,a=n.packedEvent,o=n.model,s=n.view;if(!o||!s)return!0;var l=e.cptQuery,h=e.dataQuery;return i(l,o,"mainType")&&i(l,o,"subType")&&i(l,o,"index","componentIndex")&&i(l,o,"name")&&i(l,o,"id")&&i(h,a,"name")&&i(h,a,"dataIndex")&&i(h,a,"dataType")&&(!s.filterForExposedEvent||s.filterForExposedEvent(t,e.otherQuery,r,a))},afterTrigger:function(){this.eventInfo=null}};var fw={},pw={},gw=[],vw=[],mw=[],yw=[],xw={},_w={},ww={},bw={},Sw=new Date-0,Mw=new Date-0,Iw="_echarts_instance_",Tw=Wl;Jl(iw,m_),Yl(Ux),jl(tw,$x),eh("default",w_),Ul({type:"highlight",event:"highlight",update:"highlight"},V),Ul({type:"downplay",event:"downplay",update:"downplay"},V),Xl("light",D_),Xl("dark",O_);var Cw={};uh.prototype={constructor:uh,add:function(t){return this._add=t,this},update:function(t){return this._update=t,this},remove:function(t){return this._remove=t,this},execute:function(){var t,e=this._old,i=this._new,n={},r={},a=[],o=[];for(ch(e,n,a,"_oldKeyGetter",this),ch(i,r,o,"_newKeyGetter",this),t=0;tu;u++)this._add&&this._add(l[u]);else this._add&&this._add(l)}}}};var Aw=N(["tooltip","label","itemName","itemId","seriesName"]),Dw=S,kw="undefined",Pw="e\x00\x00",Lw={"float":typeof Float64Array===kw?Array:Float64Array,"int":typeof Int32Array===kw?Array:Int32Array,ordinal:Array,number:Array,time:Array},Ow=typeof Uint32Array===kw?Array:Uint32Array,zw=typeof Uint16Array===kw?Array:Uint16Array,Ew=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_rawData","_chunkSize","_chunkCount","_dimValueGetter","_count","_rawCount","_nameDimIdx","_idDimIdx"],Rw=["_extent","_approximateExtent","_rawExtent"],Bw=function(t,e){t=t||["x","y"];for(var i={},n=[],r={},a=0;a=e)){for(var i,n=this._chunkSize,r=this._rawData,a=this._storage,o=this.dimensions,s=o.length,l=this._dimensionInfos,h=this._nameList,u=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=f-1,g=0;s>g;g++){var v=o[g];c[v]||(c[v]=Th());var m=l[v];0===m.otherDims.itemName&&(i=this._nameDimIdx=g),0===m.otherDims.itemId&&(this._idDimIdx=g);var y=Lw[m.type];a[v]||(a[v]=[]);var x=a[v][p];if(x&&x.lengthb;b+=n)a[v].push(new y(Math.min(e-b,n)));this._chunkCount=a[v].length}for(var S=new Array(s),M=t;e>M;M++){S=r.getItem(M,S);for(var I=Math.floor(M/n),T=M%n,b=0;s>b;b++){var v=o[b],C=a[v][I],A=this._dimValueGetter(S,v,M,b);C[T]=A;var D=c[v];AD[1]&&(D[1]=A)}if(!r.pure){var k=h[M];if(S&&null==k)if(null!=S.name)h[M]=k=S.name;else if(null!=i){var P=o[i],L=a[P][I];if(L){k=L[T];var O=l[P].ordinalMeta;O&&O.categories.length&&(k=O.categories[k])}}var z=null==S?null:S.id;null==z&&null!=k&&(d[k]=d[k]||0,z=k,d[k]>0&&(z+="__ec__"+d[k]),d[k]++),null!=z&&(u[M]=z)}}!r.persistent&&r.clean&&r.clean(),this._rawCount=this._count=e,this._extent={},yh(this)}},Nw.count=function(){return this._count},Nw.getIndices=function(){var t,e=this._indices;if(e){var i=e.constructor,n=this._count;if(i===Array){t=new i(n);for(var r=0;n>r;r++)t[r]=e[r]}else t=new i(e.buffer,0,n)}else for(var i=gh(this),t=new i(this.count()),r=0;r=0&&e=0&&en;n++)i.push(this.get(t[n],e));return i},Nw.hasValue=function(t){for(var e=this._dimensionsSummary.dataDimsOnCoord,i=this._dimensionInfos,n=0,r=e.length;r>n;n++)if("ordinal"!==i[e[n]].type&&isNaN(this.get(e[n],t)))return!1;return!0},Nw.getDataExtent=function(t){t=this.getDimension(t);var e=this._storage[t],i=Th();if(!e)return i;var n,r=this.count(),a=!this._indices;if(a)return this._rawExtent[t].slice();if(n=this._extent[t])return n.slice();n=i;for(var o=n[0],s=n[1],l=0;r>l;l++){var h=this._getFast(t,this.getRawIndex(l));o>h&&(o=h),h>s&&(s=h)}return n=[o,s],this._extent[t]=n,n},Nw.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},Nw.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},Nw.getCalculationInfo=function(t){return this._calculationInfo[t]},Nw.setCalculationInfo=function(t,e){Dw(t)?o(this._calculationInfo,t):this._calculationInfo[t]=e},Nw.getSum=function(t){var e=this._storage[t],i=0;if(e)for(var n=0,r=this.count();r>n;n++){var a=this.get(t,n);isNaN(a)||(i+=a)}return i},Nw.getMedian=function(t){var e=[];this.each(t,function(t){isNaN(t)||e.push(t)});var i=[].concat(e).sort(function(t,e){return t-e}),n=this.count();return 0===n?0:n%2===1?i[(n-1)/2]:(i[n/2]+i[n/2-1])/2},Nw.rawIndexOf=function(t,e){var i=t&&this._invertedIndicesMap[t],n=i[e];return null==n||isNaN(n)?-1:n},Nw.indexOfName=function(t){for(var e=0,i=this.count();i>e;e++)if(this.getName(e)===t)return e;return-1},Nw.indexOfRawIndex=function(t){if(!this._indices)return t;if(t>=this._rawCount||0>t)return-1;var e=this._indices,i=e[t];if(null!=i&&i=n;){var a=(n+r)/2|0;if(e[a]t))return a;r=a-1}}return-1},Nw.indicesOfNearest=function(t,e,i){var n=this._storage,r=n[t],a=[];if(!r)return a;null==i&&(i=1/0);for(var o=Number.MAX_VALUE,s=-1,l=0,h=this.count();h>l;l++){var u=e-this.get(t,l),c=Math.abs(u);i>=u&&o>=c&&((o>c||u>=0&&0>s)&&(o=c,s=u,a.length=0),a.push(l))}return a},Nw.getRawIndex=_h,Nw.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;io;o++)s[o]=this.get(t[o],a);s[o]=a,e.apply(i,s)}}},Nw.filterSelf=function(t,e,i,n){if(this._count){"function"==typeof t&&(n=i,i=e,e=t,t=[]),i=i||n||this,t=p(Sh(t),this.getDimension,this);for(var r=this.count(),a=gh(this),o=new a(r),s=[],l=t.length,h=0,u=t[0],c=0;r>c;c++){var d,f=this.getRawIndex(c);if(0===l)d=e.call(i,c);else if(1===l){var g=this._getFast(u,f);d=e.call(i,g,c)}else{for(var v=0;l>v;v++)s[v]=this._getFast(u,f);s[v]=c,d=e.apply(i,s)}d&&(o[h++]=f)}return r>h&&(this._indices=o),this._count=h,this._extent={},this.getRawIndex=this._indices?wh:_h,this}},Nw.selectRange=function(t){if(this._count){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(i);var n=e.length;if(n){var r=this.count(),a=gh(this),o=new a(r),s=0,l=e[0],h=t[l][0],u=t[l][1],c=!1;if(!this._indices){var d=0;if(1===n){for(var f=this._storage[e[0]],p=0;pm;m++){var y=g[m];(y>=h&&u>=y||isNaN(y))&&(o[s++]=d),d++}c=!0}else if(2===n){for(var f=this._storage[l],x=this._storage[e[1]],_=t[e[1]][0],w=t[e[1]][1],p=0;pm;m++){var y=g[m],S=b[m];
+ (y>=h&&u>=y||isNaN(y))&&(S>=_&&w>=S||isNaN(S))&&(o[s++]=d),d++}c=!0}}if(!c)if(1===n)for(var m=0;r>m;m++){var M=this.getRawIndex(m),y=this._getFast(l,M);(y>=h&&u>=y||isNaN(y))&&(o[s++]=M)}else for(var m=0;r>m;m++){for(var I=!0,M=this.getRawIndex(m),p=0;n>p;p++){var T=e[p],y=this._getFast(i,M);(yt[T][1])&&(I=!1)}I&&(o[s++]=this.getRawIndex(m))}return r>s&&(this._indices=o),this._count=s,this._extent={},this.getRawIndex=this._indices?wh:_h,this}}},Nw.mapArray=function(t,e,i,n){"function"==typeof t&&(n=i,i=e,e=t,t=[]),i=i||n||this;var r=[];return this.each(t,function(){r.push(e&&e.apply(this,arguments))},i),r},Nw.map=function(t,e,i,n){i=i||n||this,t=p(Sh(t),this.getDimension,this);var r=Mh(this,t);r._indices=this._indices,r.getRawIndex=r._indices?wh:_h;for(var a=r._storage,o=[],s=this._chunkSize,l=t.length,h=this.count(),u=[],c=r._rawExtent,d=0;h>d;d++){for(var f=0;l>f;f++)u[f]=this.get(t[f],d);u[l]=d;var g=e&&e.apply(i,u);if(null!=g){"object"!=typeof g&&(o[0]=g,g=o);for(var v=this.getRawIndex(d),m=Math.floor(v/s),y=v%s,x=0;xb[1]&&(b[1]=w)}}}return r},Nw.downSample=function(t,e,i,n){for(var r=Mh(this,[t]),a=r._storage,o=[],s=Math.floor(1/e),l=a[t],h=this.count(),u=this._chunkSize,c=r._rawExtent[t],d=new(gh(this))(h),f=0,p=0;h>p;p+=s){s>h-p&&(s=h-p,o.length=s);for(var g=0;s>g;g++){var v=this.getRawIndex(p+g),m=Math.floor(v/u),y=v%u;o[g]=l[m][y]}var x=i(o),_=this.getRawIndex(Math.min(p+n(o,x)||0,h-1)),w=Math.floor(_/u),b=_%u;l[w][b]=x,xc[1]&&(c[1]=x),d[f++]=_}return r._count=f,r._indices=d,r.getRawIndex=wh,r},Nw.getItemModel=function(t){var e=this.hostModel;return new Wa(this.getRawDataItem(t),e,e&&e.ecModel)},Nw.diff=function(t){var e=this;return new uh(t?t.getIndices():[],this.getIndices(),function(e){return bh(t,e)},function(t){return bh(e,t)})},Nw.getVisual=function(t){var e=this._visual;return e&&e[t]},Nw.setVisual=function(t,e){if(Dw(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},Nw.setLayout=function(t,e){if(Dw(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},Nw.getLayout=function(t){return this._layout[t]},Nw.getItemLayout=function(t){return this._itemLayouts[t]},Nw.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?o(this._itemLayouts[t]||{},e):e},Nw.clearItemLayouts=function(){this._itemLayouts.length=0},Nw.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],r=n&&n[e];return null!=r||i?r:this.getVisual(e)},Nw.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},r=this.hasItemVisual;if(this._itemVisuals[t]=n,Dw(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],r[a]=!0);else n[e]=i,r[e]=!0},Nw.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var Fw=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};Nw.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(Fw,e)),this._graphicEls[t]=e},Nw.getItemGraphicEl=function(t){return this._graphicEls[t]},Nw.eachItemGraphicEl=function(t,e){f(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},Nw.cloneShallow=function(t){if(!t){var e=p(this.dimensions,this.getDimensionInfo,this);t=new Bw(e,this.hostModel)}if(t._storage=this._storage,mh(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?wh:_h,t},Nw.wrapMethod=function(t,e){var i=this[t];"function"==typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(P(arguments)))})},Nw.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],Nw.CHANGABLE_METHODS=["filterSelf","selectRange"];var Vw=function(t,e){return e=e||{},Ch(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};Rh.prototype.parse=function(t){return t},Rh.prototype.getSetting=function(t){return this._setting[t]},Rh.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},Rh.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},Rh.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},Rh.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},Rh.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},Rh.prototype.getExtent=function(){return this._extent.slice()},Rh.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},Rh.prototype.isBlank=function(){return this._isBlank},Rh.prototype.setBlank=function(t){this._isBlank=t},Rh.prototype.getLabel=null,er(Rh),ar(Rh,{registerWhenExtend:!0}),Bh.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&p(i,Fh);return new Bh({categories:n,needCollect:!n,deduplication:e.dedplication!==!1})};var Ww=Bh.prototype;Ww.getOrdinal=function(t){return Nh(this).get(t)},Ww.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!=typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=Nh(this);return e=n.get(t),null==e&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=0/0),e};var Gw=Rh.prototype,Hw=Rh.extend({type:"ordinal",init:function(t,e){(!t||_(t))&&(t=new Bh({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),Gw.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return Gw.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(Gw.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){return this.isBlank()?void 0:this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:V,niceExtent:V});Hw.create=function(){return new Hw};var Zw=$a,Xw=$a,Yw=Rh.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),Yw.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Wh(t)},getTicks:function(){return Zh(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getLabel:function(t,e){if(null==t)return"";var i=e&&e.precision;return null==i?i=Ja(t)||0:"auto"===i&&(i=this._intervalPrecision),t=Xw(t,i,!0),co(t)},niceTicks:function(t,e,i){t=t||5;var n=this._extent,r=n[1]-n[0];if(isFinite(r)){0>r&&(r=-r,n.reverse());var a=Vh(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax?e[0]-=i/2:(e[1]+=i/2,e[0]-=i/2)}else e[1]=1;var n=e[1]-e[0];isFinite(n)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var r=this._interval;t.fixMin||(e[0]=Xw(Math.floor(e[0]/r)*r)),t.fixMax||(e[1]=Xw(Math.ceil(e[1]/r)*r))}});Yw.create=function(){return new Yw};var jw="__ec_stack_",qw=.5,Uw="undefined"!=typeof Float32Array?Float32Array:Array,$w={seriesType:"bar",plan:h_(),reset:function(t){function e(t,e){for(var i,c=new Uw(2*t.count),d=[],f=[],p=0;null!=(i=t.next());)f[h]=e.get(o,i),f[1-h]=e.get(s,i),d=n.dataToPoint(f,null,d),c[p++]=d[0],c[p++]=d[1];e.setLayout({largePoints:c,barWidth:u,valueAxisStart:eu(r,a,!1),valueAxisHorizontal:l})}if(Jh(t)&&tu(t)){var i=t.getData(),n=t.coordinateSystem,r=n.getBaseAxis(),a=n.getOtherAxis(r),o=i.mapDimension(a.dim),s=i.mapDimension(r.dim),l=a.isHorizontal(),h=l?0:1,u=Kh(Uh([t]),r,t).width;return u>qw||(u=qw),{progress:e}}}},Kw=Yw.prototype,Qw=Math.ceil,Jw=Math.floor,tb=1e3,eb=60*tb,ib=60*eb,nb=24*ib,rb=function(t,e,i,n){for(;n>i;){var r=i+n>>>1;t[r][1]a&&(a=e),null!=i&&a>i&&(a=i);var o=ob.length,s=rb(ob,a,0,o),l=ob[Math.min(s,o-1)],h=l[1];if("year"===l[0]){var u=r/h,c=so(u/t,!0);h*=c}var d=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,f=[Math.round(Qw((n[0]-d)/h)*h+d),Math.round(Jw((n[1]-d)/h)*h+d)];Hh(f,n),this._stepLvl=l,this._interval=h,this._niceExtent=f},parse:function(t){return+ro(t)}});f(["contain","normalize"],function(t){ab.prototype[t]=function(e){return Kw[t].call(this,this.parse(e))}});var ob=[["hh:mm:ss",tb],["hh:mm:ss",5*tb],["hh:mm:ss",10*tb],["hh:mm:ss",15*tb],["hh:mm:ss",30*tb],["hh:mm\nMM-dd",eb],["hh:mm\nMM-dd",5*eb],["hh:mm\nMM-dd",10*eb],["hh:mm\nMM-dd",15*eb],["hh:mm\nMM-dd",30*eb],["hh:mm\nMM-dd",ib],["hh:mm\nMM-dd",2*ib],["hh:mm\nMM-dd",6*ib],["hh:mm\nMM-dd",12*ib],["MM-dd\nyyyy",nb],["MM-dd\nyyyy",2*nb],["MM-dd\nyyyy",3*nb],["MM-dd\nyyyy",4*nb],["MM-dd\nyyyy",5*nb],["MM-dd\nyyyy",6*nb],["week",7*nb],["MM-dd\nyyyy",10*nb],["week",14*nb],["week",21*nb],["month",31*nb],["week",42*nb],["month",62*nb],["week",70*nb],["quarter",95*nb],["month",31*nb*4],["month",31*nb*5],["half-year",380*nb/2],["month",31*nb*8],["month",31*nb*10],["year",380*nb]];ab.create=function(t){return new ab({useUTC:t.ecModel.get("useUTC")})};var sb=Rh.prototype,lb=Yw.prototype,hb=Ja,ub=$a,cb=Math.floor,db=Math.ceil,fb=Math.pow,pb=Math.log,gb=Rh.extend({type:"log",base:10,$constructor:function(){Rh.apply(this,arguments),this._originalScale=new Yw},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return p(lb.getTicks.call(this),function(n){var r=$a(fb(this.base,n));return r=n===e[0]&&t.__fixMin?iu(r,i[0]):r,r=n===e[1]&&t.__fixMax?iu(r,i[1]):r},this)},getLabel:lb.getLabel,scale:function(t){return t=sb.scale.call(this,t),fb(this.base,t)},setExtent:function(t,e){var i=this.base;t=pb(t)/pb(i),e=pb(e)/pb(i),lb.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=sb.getExtent.call(this);e[0]=fb(t,e[0]),e[1]=fb(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=iu(e[0],n[0])),i.__fixMax&&(e[1]=iu(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=pb(t[0])/pb(e),t[1]=pb(t[1])/pb(e),sb.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(1/0===i||0>=i)){var n=ao(i),r=t/i*n;for(.5>=r&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var a=[$a(db(e[0]/n)*n),$a(cb(e[1]/n)*n)];this._interval=n,this._niceExtent=a}},niceExtent:function(t){lb.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});f(["contain","normalize"],function(t){gb.prototype[t]=function(e){return e=pb(e)/pb(this.base),sb[t].call(this,e)}}),gb.create=function(){return new gb};var vb={getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&"function"!=typeof i&&!C(i)&&(i=this.axis.scale.parse(i)),i},getMax:function(t){var e=this.option,i=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=i&&"dataMax"!==i&&"function"!=typeof i&&!C(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null!=t.rangeStart||null!=t.rangeEnd?!1:!t.scale},getCoordSysModel:V,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},mb=$r({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,r=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+r,n+a),t.lineTo(i-r,n+a),t.closePath()}}),yb=$r({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,r=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+r,n),t.lineTo(i,n+a),t.lineTo(i-r,n),t.closePath()}}),xb=$r({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,r=e.width/5*3,a=Math.max(r,e.height),o=r/2,s=o*o/(a-o),l=n-a+o+s,h=Math.asin(s/o),u=Math.cos(h)*o,c=Math.sin(h),d=Math.cos(h),f=.6*o,p=.7*o;t.moveTo(i-u,l+s),t.arc(i,l,o,Math.PI-h,2*Math.PI+h),t.bezierCurveTo(i+u-c*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-u+c*f,l+s+d*f,i-u,l+s),t.closePath()}}),_b=$r({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,r=e.x,a=e.y,o=n/3*2;t.moveTo(r,a),t.lineTo(r+o,a+i),t.lineTo(r,a+i/4*3),t.lineTo(r-o,a+i),t.lineTo(r,a),t.closePath()}}),wb={line:ky,rect:Dy,roundRect:Dy,square:Dy,circle:_y,diamond:yb,pin:xb,arrow:_b,triangle:mb},bb={line:function(t,e,i,n,r){r.x1=t,r.y1=e+n/2,r.x2=t+i,r.y2=e+n/2},rect:function(t,e,i,n,r){r.x=t,r.y=e,r.width=i,r.height=n},roundRect:function(t,e,i,n,r){r.x=t,r.y=e,r.width=i,r.height=n,r.r=Math.min(i,n)/4},square:function(t,e,i,n,r){var a=Math.min(i,n);r.x=t,r.y=e,r.width=a,r.height=a},circle:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.r=Math.min(i,n)/2},diamond:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.width=i,r.height=n},pin:function(t,e,i,n,r){r.x=t+i/2,r.y=e+n/2,r.width=i,r.height=n},arrow:function(t,e,i,n,r){r.x=t+i/2,r.y=e+n/2,r.width=i,r.height=n},triangle:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.width=i,r.height=n}},Sb={};f(wb,function(t,e){Sb[e]=new t});var Mb=$r({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style,e=this.shape;"pin"===e.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,r=Sb[n];"none"!==e.symbolType&&(r||(n="rect",r=Sb[n]),bb[n](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,i))}}),Ib={isDimensionStacked:Ph,enableDataStack:kh,getStackedDimension:Lh},Tb=(Object.freeze||Object)({createList:pu,getLayoutRect:bo,dataStack:Ib,createScale:gu,mixinAxisModelCommonMethods:vu,completeDimensions:Ch,createDimensions:Vw,createSymbol:fu}),Cb=1e-8;xu.prototype={constructor:xu,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],r=[],a=[],o=this.geometries,s=0;sn;n++)if("polygon"===i[n].type){var a=i[n].exterior,o=i[n].interiors;if(yu(a,t[0],t[1])){for(var s=0;s<(o?o.length:0);s++)if(yu(o[s]))continue t;return!0}}return!1},transformTo:function(t,e,i,n){var r=this.getBoundingRect(),a=r.width/r.height;i?n||(n=i/a):i=a*n;for(var o=new gi(t,e,i,n),s=r.calculateTransform(o),l=this.geometries,h=0;h0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,r=[];"Polygon"===i.type&&r.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&f(n,function(t){t[0]&&r.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var a=new xu(e.name,r,e.cp);return a.properties=e,a})},Db=jn(),kb=[0,1],Pb=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};Pb.prototype={constructor:Pb,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&n>=t},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return to(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,n=this.scale;return t=n.normalize(t),this.onBand&&"ordinal"===n.type&&(i=i.slice(),Bu(i,n.count())),qa(t,kb,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&(i=i.slice(),Bu(i,n.count()));var r=qa(t,i,kb,e);return this.scale.scale(r)},pointToData:function(){},getTicksCoords:function(t){t=t||{};var e=t.tickModel||this.getTickModel(),i=Su(this,e),n=i.ticks,r=p(n,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),a=e.get("alignWithLabel");return Nu(this,r,i.tickCategoryInterval,a,t.clamp),r},getViewLabels:function(){return bu(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return Lu(this)}};var Lb=Ab,Ob={};f(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){Ob[t]=pg[t]});var zb={};f(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){zb[t]=Yy[t]});var Eb=function(t){this._axes={},this._dimList=[],this.name=t||""};Eb.prototype={constructor:Eb,type:"cartesian",getAxis:function(t){return this._axes[t]},getAxes:function(){return p(this._dimList,Fu,this)},getAxesByScale:function(t){return t=t.toLowerCase(),v(this.getAxes(),function(e){return e.scale.type===t})},addAxis:function(t){var e=t.dim;this._axes[e]=t,this._dimList.push(e)},dataToCoord:function(t){return this._dataCoordConvert(t,"dataToCoord")},coordToData:function(t){return this._dataCoordConvert(t,"coordToData")},_dataCoordConvert:function(t,e){for(var i=this._dimList,n=t instanceof Array?[]:{},r=0;re[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},u(Rb,Pb);var Bb={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},Nb={};Nb.categoryAxis=r({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},Bb),Nb.valueAxis=r({boundaryGap:[0,0],splitNumber:5},Bb),Nb.timeAxis=s({scale:!0,min:"dataMin",max:"dataMax"},Nb.valueAxis),Nb.logAxis=s({scale:!0,logBase:10},Nb.valueAxis);var Fb=["value","category","time","log"],Vb=function(t,e,i,n){f(Fb,function(o){e.extend({type:t+"Axis."+o,mergeDefaultAndTheme:function(e,n){var a=this.layoutMode,s=a?Mo(e):{},l=n.getTheme();r(e,l.get(o+"Axis")),r(e,this.getDefaultOption()),e.type=i(t,e),a&&So(e,s,a)},optionUpdated:function(){var t=this.option;"category"===t.type&&(this.__ordinalMeta=Bh.createByAxisModel(this))},getCategories:function(t){var e=this.option;return"category"===e.type?t?e.data:this.__ordinalMeta.categories:void 0},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:a([{},Nb[o+"Axis"],n],!0)})}),yx.registerSubTypeDefaulter(t+"Axis",x(i,t))},Wb=yx.extend({type:"cartesian2dAxis",axis:null,init:function(){Wb.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){Wb.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){Wb.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});r(Wb.prototype,vb);var Gb={offset:0};Vb("x",Wb,Wu,Gb),Vb("y",Wb,Wu,Gb),yx.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var Hb=Hu.prototype;Hb.type="grid",Hb.axisPointerEnabled=!0,Hb.getRect=function(){return this._rect},Hb.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),f(i.x,function(t){au(t.scale,t.model)}),f(i.y,function(t){au(t.scale,t.model)});var n={};f(i.x,function(t){Zu(i,"y",t,n)}),f(i.y,function(t){Zu(i,"x",t,n)}),this.resize(this.model,e)},Hb.resize=function(t,e,i){function n(){f(a,function(t){var e=t.isHorizontal(),i=e?[0,r.width]:[0,r.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),Yu(t,e?r.x:r.y)})}var r=bo(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=r;var a=this._axesList;n(),!i&&t.get("containLabel")&&(f(a,function(t){if(!t.model.get("axisLabel.inside")){var e=uu(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");r[i]-=e[i]+n,"top"===t.position?r.y+=e.height+n:"left"===t.position&&(r.x+=e.width+n)}}}),n())},Hb.getAxis=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},Hb.getAxes=function(){return this._axesList.slice()},Hb.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}S(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,r=this._coordsList;nt&&(t=e),t}});var Yb=dm([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),jb={getBarItemStyle:function(t){var e=Yb(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},qb=["itemStyle","barBorderWidth"];o(Wa.prototype,jb),ah({type:"bar",render:function(t,e,i){this._updateDrawMode(t);var n=t.get("coordinateSystem");return("cartesian2d"===n||"polar"===n)&&(this._isLargeDraw?this._renderLarge(t,e,i):this._renderNormal(t,e,i)),this.group},incrementalPrepareRender:function(t){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t){var e,i=this.group,n=t.getData(),r=this._data,a=t.coordinateSystem,o=a.getBaseAxis();"cartesian2d"===a.type?e=o.isHorizontal():"polar"===a.type&&(e="angle"===o.dim);var s=t.isAnimationEnabled()?t:null;n.diff(r).add(function(r){if(n.hasValue(r)){var o=n.getItemModel(r),l=$b[a.type](n,r,o),h=Ub[a.type](n,r,o,l,e,s);n.setItemGraphicEl(r,h),i.add(h),tc(h,n,r,o,l,t,e,"polar"===a.type)}}).update(function(o,l){var h=r.getItemGraphicEl(l);if(!n.hasValue(o))return void i.remove(h);var u=n.getItemModel(o),c=$b[a.type](n,o,u);h?La(h,{shape:c},s,o):h=Ub[a.type](n,o,u,c,e,s,!0),n.setItemGraphicEl(o,h),i.add(h),tc(h,n,o,u,c,t,e,"polar"===a.type)}).remove(function(t){var e=r.getItemGraphicEl(t);"cartesian2d"===a.type?e&&Qu(t,s,e):e&&Ju(t,s,e)}).execute(),this._data=n},_renderLarge:function(t){this._clear(),ic(t,this.group)},_incrementalRenderLarge:function(t,e){ic(e,this.group,!0)},dispose:V,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,i=this._data;t&&t.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(e){"sector"===e.type?Ju(e.dataIndex,t,e):Qu(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var Ub={cartesian2d:function(t,e,i,n,r,a,s){var l=new Dy({shape:o({},n)});if(a){var h=l.shape,u=r?"height":"width",c={};h[u]=0,c[u]=n[u],Yy[s?"updateProps":"initProps"](l,{shape:c},a,e)}return l},polar:function(t,e,i,n,r,a,o){var l=n.startAngle0?1:-1,o=n.height>0?1:-1;return{x:n.x+a*r/2,y:n.y+o*r/2,width:n.width-a*r,height:n.height-o*r}},polar:function(t,e){var i=t.getItemLayout(e);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle}}},Kb=Fr.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,r=this.__valueIdx,a=0;ah[1]?-1:1,c=["start"===r?h[0]-u*l:"end"===r?h[1]+u*l:(h[0]+h[1])/2,uc(r)?t.labelOffset+a*l:0],d=e.get("nameRotate");null!=d&&(d=d*Qb/180);var f;uc(r)?n=eS(t.rotation,null!=d?d:t.rotation,a):(n=ac(t,r,d||0,h),f=t.axisNameAvailableWidth,null!=f&&(f=Math.abs(f/Math.sin(n.rotation)),!isFinite(f)&&(f=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},v=g.ellipsis,m=A(t.nameTruncateMaxWidth,g.maxWidth,f),y=null!=v&&null!=m?hx(i,m,p,v,{minChar:2,placeholder:g.placeholder}):i,x=e.get("tooltip",!0),_=e.mainType,w={componentType:_,name:i,$vars:["name"]};w[_+"Index"]=e.componentIndex;var b=new xy({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:oc(e),z2:1,tooltip:x&&x.show?o({content:i,formatter:function(){return i},formatterParams:w},x):null});ba(b.style,s,{text:y,textFont:p,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:n.textAlign,textVerticalAlign:n.textVerticalAlign}),e.get("triggerEvent")&&(b.eventData=rc(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},eS=Jb.innerTextLayout=function(t,e,i){var n,r,a=io(e-t);return no(a)?(r=i>0?"top":"bottom",n="center"):no(a-Qb)?(r=i>0?"bottom":"top",n="center"):(r="middle",n=a>0&&Qb>a?i>0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:r}},iS=f,nS=x,rS=nh({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&xc(t),rS.superApply(this,"render",arguments),Mc(this,t,e,i,n,!0)},updateAxisPointer:function(t,e,i,n){Mc(this,t,e,i,n,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),rS.superApply(this,"remove",arguments)},dispose:function(t,e){Ic(this,e),rS.superApply(this,"dispose",arguments)}}),aS=[];rS.registerAxisPointerClass=function(t,e){aS[t]=e},rS.getAxisPointerClass=function(t){return t&&aS[t]};var oS=["axisLine","axisTickLabel","axisName"],sS=["splitArea","splitLine"],lS=rS.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,i,n){this.group.removeAll();var r=this._axisGroup;if(this._axisGroup=new lv,this.group.add(this._axisGroup),t.get("show")){var a=t.getCoordSysModel(),o=Tc(a,t),s=new Jb(t,o);f(oS,s.add,s),this._axisGroup.add(s.getGroup()),f(sS,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Ba(r,this._axisGroup,t),lS.superCall(this,"render",t,e,i,n)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),r=n.getModel("lineStyle"),a=r.get("color");a=_(a)?a:[a];for(var o=e.coordinateSystem.getRect(),l=i.isHorizontal(),h=0,u=i.getTicksCoords({tickModel:n}),c=[],d=[],f=r.getLineStyle(),p=0;p0&&Gc(i[r-1]);r--);for(;r>n&&Gc(i[n]);n++);}for(;r>n;)n+=Hc(t,i,n,r,r,1,a.min,a.max,e.smooth,e.smoothMonotone,e.connectNulls)+1}}),IS=Fr.extend({type:"ec-polygon",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},brush:by(Fr.prototype.brush),buildPath:function(t,e){var i=e.points,n=e.stackedOnPoints,r=0,a=i.length,o=e.smoothMonotone,s=Yc(i,e.smoothConstraint),l=Yc(n,e.smoothConstraint);if(e.connectNulls){for(;a>0&&Gc(i[a-1]);a--);for(;a>r&&Gc(i[r]);r++);}for(;a>r;){var h=Hc(t,i,r,a,a,1,s.min,s.max,e.smooth,o,e.connectNulls);Hc(t,n,r+h-1,h,a,-1,l.min,l.max,e.stackedOnSmooth,o,e.connectNulls),r+=h+1,t.closePath()}}});Bs.extend({type:"line",init:function(){var t=new lv,e=new zc;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,i){var n=t.coordinateSystem,r=this.group,a=t.getData(),o=t.getModel("lineStyle"),l=t.getModel("areaStyle"),h=a.mapArray(a.getItemLayout),u="polar"===n.type,c=this._coordSys,d=this._symbolDraw,f=this._polyline,p=this._polygon,g=this._lineGroup,v=t.get("animation"),m=!l.isEmpty(),y=l.get("origin"),x=Nc(n,a,y),_=$c(n,a,x),w=t.get("showSymbol"),b=w&&!u&&id(t,a,n),S=this._data;S&&S.eachItemGraphicEl(function(t,e){t.__temp&&(r.remove(t),S.setItemGraphicEl(e,null))}),w||d.remove(),r.add(g);var M=!u&&t.get("step");f&&c.type===n.type&&M===this._step?(m&&!p?p=this._newPolygon(h,_,n,v):p&&!m&&(g.remove(p),p=this._polygon=null),g.setClipPath(Jc(n,!1,!1,t)),w&&d.updateData(a,{isIgnore:b,clipShape:Jc(n,!1,!0,t)}),a.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),jc(this._stackedOnPoints,_)&&jc(this._points,h)||(v?this._updateAnimation(a,_,n,i,M,y):(M&&(h=td(h,n,M),_=td(_,n,M)),f.setShape({points:h}),p&&p.setShape({points:h,stackedOnPoints:_})))):(w&&d.updateData(a,{isIgnore:b,clipShape:Jc(n,!1,!0,t)}),M&&(h=td(h,n,M),_=td(_,n,M)),f=this._newPolyline(h,n,v),m&&(p=this._newPolygon(h,_,n,v)),g.setClipPath(Jc(n,!0,!1,t)));var I=ed(a,n)||a.getVisual("color");f.useStyle(s(o.getLineStyle(),{fill:"none",stroke:I,lineJoin:"bevel"}));var T=t.get("smooth");if(T=qc(t.get("smooth")),f.setShape({smooth:T,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),p){var C=a.getCalculationInfo("stackedOnSeries"),A=0;p.useStyle(s(l.getAreaStyle(),{fill:I,opacity:.7,lineJoin:"bevel"})),C&&(A=qc(C.get("smooth"))),p.setShape({smooth:T,stackedOnSmooth:A,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=a,this._coordSys=n,this._stackedOnPoints=_,this._points=h,this._step=M,this._valueOrigin=y},dispose:function(){},highlight:function(t,e,i,n){var r=t.getData(),a=Yn(r,n);if(!(a instanceof Array)&&null!=a&&a>=0){var o=r.getItemGraphicEl(a);if(!o){var s=r.getItemLayout(a);if(!s)return;o=new Cc(r,a),o.position=s,o.setZ(t.get("zlevel"),t.get("z")),o.ignore=isNaN(s[0])||isNaN(s[1]),o.__temp=!0,r.setItemGraphicEl(a,o),o.stopSymbolAnimation(!0),this.group.add(o)}o.highlight()}else Bs.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var r=t.getData(),a=Yn(r,n);if(null!=a&&a>=0){var o=r.getItemGraphicEl(a);o&&(o.__temp?(r.setItemGraphicEl(a,null),this.group.remove(o)):o.downplay())}else Bs.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new MS({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new IS({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_updateAnimation:function(t,e,i,n,r,a){var o=this._polyline,s=this._polygon,l=t.hostModel,h=vS(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),u=h.current,c=h.stackedOnCurrent,d=h.next,f=h.stackedOnNext;r&&(u=td(h.current,i,r),c=td(h.stackedOnCurrent,i,r),d=td(h.next,i,r),f=td(h.stackedOnNext,i,r)),o.shape.__points=h.current,o.shape.points=u,La(o,{shape:{points:d}},l),s&&(s.setShape({points:u,stackedOnPoints:c}),La(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=h.status,v=0;ve&&(e=t[i]);return isFinite(e)?e:0/0},min:function(t){for(var e=1/0,i=0;i1){var h;"string"==typeof i?h=AS[i]:"function"==typeof i&&(h=i),h&&t.setData(e.downSample(e.mapDimension(a.dim),1/l,h,DS))}}}}};Jl(TS("line","circle","line")),Ql(CS("line")),jl(ow.PROCESSOR.STATISTIC,kS("line"));var PS=function(t,e,i){e=_(e)&&{coordDimensions:e}||o({},e);var n=t.getSource(),r=Vw(n,e),a=new Bw(r,t);return a.initData(n,i),a},LS={updateSelectedMap:function(t){this._targetList=_(t)?t.slice():[],this._selectTargetMap=g(t||[],function(t,e){return t.set(e.name,e),t},N())},select:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t),n=this.get("selectedMode");"single"===n&&this._selectTargetMap.each(function(t){t.selected=!1}),i&&(i.selected=!0)},unSelect:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);i&&(i.selected=!1)},toggleSelected:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);return null!=i?(this[i.selected?"unSelect":"select"](t,e),i.selected):void 0},isSelected:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);return i&&i.selected}},OS=rh({type:"series.pie",init:function(t){OS.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this.updateSelectedMap(this._createSelectableList()),this._defaultLabelLine(t)},mergeOption:function(t){OS.superCall(this,"mergeOption",t),this.updateSelectedMap(this._createSelectableList())},getInitialData:function(){return PS(this,["value"])},_createSelectableList:function(){for(var t=this.getRawData(),e=t.mapDimension("value"),i=[],n=0,r=t.count();r>n;n++)i.push({name:t.getName(n),value:t.get(e,n),selected:Ms(t,n,"selected")});return i},getDataParams:function(t){var e=this.getData(),i=OS.superCall(this,"getDataParams",t),n=[];return e.each(e.mapDimension("value"),function(t){n.push(t)}),i.percent=eo(n,t,e.hostModel.get("percentPrecision")),i.$vars.push("percent"),i},_defaultLabelLine:function(t){Fn(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,selectedOffset:10,hoverOffset:10,avoidLabelOverlap:!0,percentPrecision:2,stillShowZeroSum:!0,label:{rotate:!1,show:!0,position:"outer"},labelLine:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1},animationType:"expansion",animationEasing:"cubicOut"}});c(OS,LS);var zS=od.prototype;zS.updateData=function(t,e,i){function n(){a.stopAnimation(!0),a.animateTo({shape:{r:u.r+l.get("hoverOffset")}},300,"elasticOut")}function r(){a.stopAnimation(!0),a.animateTo({shape:{r:u.r}},300,"elasticOut")}var a=this.childAt(0),l=t.hostModel,h=t.getItemModel(e),u=t.getItemLayout(e),c=o({},u);if(c.label=null,i){a.setShape(c);var d=l.getShallow("animationType");"scale"===d?(a.shape.r=u.r0,Oa(a,{shape:{r:u.r}},l,e)):(a.shape.endAngle=u.startAngle,La(a,{shape:{endAngle:u.endAngle}},l,e))}else La(a,{shape:c},l,e);var f=t.getItemVisual(e,"color");a.useStyle(s({lineJoin:"bevel",fill:f},h.getModel("itemStyle").getItemStyle())),a.hoverStyle=h.getModel("emphasis.itemStyle").getItemStyle();var p=h.getShallow("cursor");p&&a.attr("cursor",p),ad(this,t.getItemLayout(e),l.isSelected(null,e),l.get("selectedOffset"),l.get("animation")),a.off("mouseover").off("mouseout").off("emphasis").off("normal"),h.get("hoverAnimation")&&l.isAnimationEnabled()&&a.on("mouseover",n).on("mouseout",r).on("emphasis",n).on("normal",r),this._updateLabel(t,e),xa(this)},zS._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),r=t.hostModel,a=t.getItemModel(e),o=t.getItemLayout(e),s=o.label,l=t.getItemVisual(e,"color");La(i,{shape:{points:s.linePoints||[[s.x,s.y],[s.x,s.y],[s.x,s.y]]}},r,e),La(n,{style:{x:s.x,y:s.y}},r,e),n.attr({rotation:s.rotation,origin:[s.x,s.y],z2:10});var h=a.getModel("label"),u=a.getModel("emphasis.label"),c=a.getModel("labelLine"),d=a.getModel("emphasis.labelLine"),l=t.getItemVisual(e,"color");wa(n.style,n.hoverStyle={},h,u,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:l,useInsideStyle:!!s.inside},{textAlign:s.textAlign,textVerticalAlign:s.verticalAlign,opacity:t.getItemVisual(e,"opacity")}),n.ignore=n.normalIgnore=!h.get("show"),n.hoverIgnore=!u.get("show"),i.ignore=i.normalIgnore=!c.get("show"),i.hoverIgnore=!d.get("show"),i.setStyle({stroke:l,opacity:t.getItemVisual(e,"opacity")}),i.setStyle(c.getModel("lineStyle").getLineStyle()),i.hoverStyle=d.getModel("lineStyle").getLineStyle();var f=c.get("smooth");f&&f===!0&&(f=.4),i.setShape({smooth:f})},u(od,lv);var ES=(Bs.extend({type:"pie",init:function(){var t=new lv;this._sectorGroup=t},render:function(t,e,i,n){if(!n||n.from!==this.uid){var r=t.getData(),a=this._data,o=this.group,s=e.get("animation"),l=!a,h=t.get("animationType"),u=x(rd,this.uid,t,s,i),c=t.get("selectedMode");if(r.diff(a).add(function(t){var e=new od(r,t);l&&"scale"!==h&&e.eachChild(function(t){t.stopAnimation(!0)}),c&&e.on("click",u),r.setItemGraphicEl(t,e),o.add(e)}).update(function(t,e){var i=a.getItemGraphicEl(e);i.updateData(r,t),i.off("click"),c&&i.on("click",u),o.add(i),r.setItemGraphicEl(t,i)}).remove(function(t){var e=a.getItemGraphicEl(t);o.remove(e)}).execute(),s&&l&&r.count()>0&&"scale"!==h){var d=r.getItemLayout(0),f=Math.max(i.getWidth(),i.getHeight())/2,p=y(o.removeClipPath,o);o.setClipPath(this._createClipPath(d.cx,d.cy,f,d.startAngle,d.clockwise,p,t))}else o.removeClipPath();this._data=r}},dispose:function(){},_createClipPath:function(t,e,i,n,r,a,o){var s=new Sy({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:r}});return Oa(s,{shape:{endAngle:n+(r?1:-1)*Math.PI*2}},o,a),s},containPoint:function(t,e){var i=e.getData(),n=i.getItemLayout(0);if(n){var r=t[0]-n.cx,a=t[1]-n.cy,o=Math.sqrt(r*r+a*a);return o<=n.r&&o>=n.r0}}}),function(t,e){f(e,function(e){e.update="updateView",Ul(e,function(i,n){var r={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name,i.dataIndex);var n=t.getData();n.each(function(e){var i=n.getName(e);r[i]=t.isSelected(i)||!1})}),{name:i.name,selected:r}})})}),RS=function(t){return{getTargetSeries:function(e){var i={},n=N();return e.eachSeriesByType(t,function(t){t.__paletteScope=i,n.set(t.uid,t)}),n},reset:function(t){var e=t.getRawData(),i={},n=t.getData();n.each(function(t){var e=n.getRawIndex(t);i[e]=t}),e.each(function(r){var a=i[r],o=null!=a&&n.getItemVisual(a,"color",!0);if(o)e.setItemVisual(r,"color",o);else{var s=e.getItemModel(r),l=s.get("itemStyle.color")||t.getColorFromPalette(e.getName(r)||r+"",t.__paletteScope,e.count());e.setItemVisual(r,"color",l),null!=a&&n.setItemVisual(a,"color",l)}})}}},BS=function(t,e,i,n){var r,a,o=t.getData(),s=[],l=!1;o.each(function(i){var n,h,u,c,d=o.getItemLayout(i),f=o.getItemModel(i),p=f.getModel("label"),g=p.get("position")||f.get("emphasis.label.position"),v=f.getModel("labelLine"),m=v.get("length"),y=v.get("length2"),x=(d.startAngle+d.endAngle)/2,_=Math.cos(x),w=Math.sin(x);r=d.cx,a=d.cy;var b="inside"===g||"inner"===g;if("center"===g)n=d.cx,h=d.cy,c="center";else{var S=(b?(d.r+d.r0)/2*_:d.r*_)+r,M=(b?(d.r+d.r0)/2*w:d.r*w)+a;if(n=S+3*_,h=M+3*w,!b){var I=S+_*(m+e-d.r),T=M+w*(m+e-d.r),C=I+(0>_?-1:1)*y,A=T;n=C+(0>_?-5:5),h=A,u=[[S,M],[I,T],[C,A]]}c=b?"center":_>0?"left":"right"}var D=p.getFont(),k=p.get("rotate")?0>_?-x+Math.PI:-x:0,P=t.getFormattedLabel(i,"normal")||o.getName(i),L=Ei(P,D,c,"top");l=!!k,d.label={x:n,y:h,position:g,height:L.height,len:m,len2:y,linePoints:u,textAlign:c,verticalAlign:"middle",rotation:k,inside:b},b||s.push(d.label)}),!l&&t.get("avoidLabelOverlap")&&ld(s,r,a,e,i,n)},NS=2*Math.PI,FS=Math.PI/180,VS=function(t,e,i){e.eachSeriesByType(t,function(t){var e=t.getData(),n=e.mapDimension("value"),r=t.get("center"),a=t.get("radius");_(a)||(a=[0,a]),_(r)||(r=[r,r]);var o=i.getWidth(),s=i.getHeight(),l=Math.min(o,s),h=Ua(r[0],o),u=Ua(r[1],s),c=Ua(a[0],l/2),d=Ua(a[1],l/2),f=-t.get("startAngle")*FS,p=t.get("minAngle")*FS,g=0;e.each(n,function(t){!isNaN(t)&&g++});var v=e.getSum(n),m=Math.PI/(v||g)*2,y=t.get("clockwise"),x=t.get("roseType"),w=t.get("stillShowZeroSum"),b=e.getDataExtent(n);b[0]=0;var S=NS,M=0,I=f,T=y?1:-1;if(e.each(n,function(t,i){var n;if(isNaN(t))return void e.setItemLayout(i,{angle:0/0,startAngle:0/0,endAngle:0/0,clockwise:y,cx:h,cy:u,r0:c,r:x?0/0:d});n="area"!==x?0===v&&w?m:t*m:NS/g,p>n?(n=p,S-=p):M+=t;var r=I+T*n;e.setItemLayout(i,{angle:n,startAngle:I,endAngle:r,clockwise:y,cx:h,cy:u,r0:c,r:x?qa(t,b,[c,d]):d}),I=r}),NS>S&&g)if(.001>=S){var C=NS/g;e.each(n,function(t,i){if(!isNaN(t)){var n=e.getItemLayout(i);n.angle=C,n.startAngle=f+T*i*C,n.endAngle=f+T*(i+1)*C}})}else m=S/M,I=f,e.each(n,function(t,i){if(!isNaN(t)){var n=e.getItemLayout(i),r=n.angle===p?p:t*m;n.startAngle=I,n.endAngle=I+T*r,I+=T*r}});BS(t,d,o,s)})},WS=function(t){return{seriesType:t,reset:function(t,e){var i=e.findComponents({mainType:"legend"});if(i&&i.length){var n=t.getData();n.filterSelf(function(t){for(var e=n.getName(t),r=0;rn[1]&&n.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:n[1],r0:n[0]},api:{coord:y(function(n){var r=e.dataToRadius(n[0]),a=i.dataToAngle(n[1]),o=t.coordToPoint([r,a]);return o.push(r,a*Math.PI/180),o}),size:y(dd,t)}}},YS=function(t){var e=t.getRect(),i=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:i.start,end:i.end,weeks:i.weeks,dayCount:i.allDay}},api:{coord:function(e,i){return t.dataToPoint(e,i)}}}},jS=["itemStyle"],qS=["emphasis","itemStyle"],US=["label"],$S=["emphasis","label"],KS="e\x00\x00",QS={cartesian2d:GS,geo:HS,singleAxis:ZS,polar:XS,calendar:YS};o_.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0},getInitialData:function(){return Oh(this.getSource(),this)},getDataParams:function(t,e,i){var n=o_.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Bs.extend({type:"custom",_data:null,render:function(t,e,i,n){var r=this._data,a=t.getData(),o=this.group,s=vd(t,a,e,i);a.diff(r).add(function(e){yd(null,e,s(e,n),t,o,a)}).update(function(e,i){var l=r.getItemGraphicEl(i);yd(l,e,s(e,n),t,o,a)}).remove(function(t){var e=r.getItemGraphicEl(t);e&&o.remove(e)}).execute(),this._data=a},incrementalPrepareRender:function(){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,r){function a(t){t.isGroup||(t.incremental=!0,t.useHoverLayer=!0)}for(var o=e.getData(),s=vd(e,o,i,n),l=t.start;l=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});Ul("legendToggleSelect","legendselectchanged",x(Ad,"toggleSelected")),Ul("legendSelect","legendselected",x(Ad,"select")),Ul("legendUnSelect","legendunselected",x(Ad,"unSelect"));var tM=x,eM=f,iM=lv,nM=nh({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new iM),this._backgroundEl},getContentGroup:function(){return this._contentGroup},render:function(t,e,i){if(this.resetInner(),t.get("show",!0)){var n=t.get("align");n&&"auto"!==n||(n="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left"),this.renderInner(n,t,e,i);var r=t.getBoxLayoutParams(),a={width:i.getWidth(),height:i.getHeight()},o=t.get("padding"),l=bo(r,a,o),h=this.layoutInner(t,n,l),u=bo(s({width:h.width,height:h.height},r),a,o);this.group.attr("position",[u.x-h.x,u.y-h.y]),this.group.add(this._backgroundEl=Dd(h,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl)},renderInner:function(t,e,i,n){var r=this.getContentGroup(),a=N(),o=e.get("selectedMode"),s=[];i.eachRawSeries(function(t){!t.get("legendHoverLink")&&s.push(t.id)}),eM(e.getData(),function(l,h){var u=l.get("name");if(!this.newlineDisabled&&(""===u||"\n"===u))return void r.add(new iM({newline:!0}));var c=i.getSeriesByName(u)[0];if(!a.get(u))if(c){var d=c.getData(),f=d.getVisual("color");"function"==typeof f&&(f=f(c.getDataParams(0)));var p=d.getVisual("legendSymbol")||"roundRect",g=d.getVisual("symbol"),v=this._createItem(u,h,l,e,p,g,t,f,o);v.on("click",tM(kd,u,n)).on("mouseover",tM(Pd,c.name,null,n,s)).on("mouseout",tM(Ld,c.name,null,n,s)),a.set(u,!0)}else i.eachRawSeries(function(i){if(!a.get(u)&&i.legendDataProvider){var r=i.legendDataProvider(),c=r.indexOfName(u);if(0>c)return;var d=r.getItemVisual(c,"color"),f="roundRect",p=this._createItem(u,h,l,e,f,null,t,d,o);p.on("click",tM(kd,u,n)).on("mouseover",tM(Pd,null,u,n,s)).on("mouseout",tM(Ld,null,u,n,s)),a.set(u,!0)}},this)},this)},_createItem:function(t,e,i,n,r,a,s,l,h){var u=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("symbolKeepAspect"),p=n.isSelected(t),g=new iM,v=i.getModel("textStyle"),m=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(r=m||r,g.add(fu(r,0,0,u,c,p?l:d,null==f?!0:f)),!m&&a&&(a!==r||"none"===a)){var _=.8*c;"none"===a&&(a="circle"),g.add(fu(a,(u-_)/2,(c-_)/2,_,_,p?l:d,null==f?!0:f))}var w="left"===s?u+5:-5,b=s,S=n.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t)),g.add(new xy({style:ba({},v,{text:M,x:w,y:c/2,textFill:p?v.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new Dy({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?o({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(I),g.eachChild(function(t){t.silent=!0}),I.silent=!h,this.getContentGroup().add(g),xa(g),g.__legendDataIndex=e,g},layoutInner:function(t,e,i){var n=this.getContentGroup();gx(t.get("orient"),n,t.get("itemGap"),i.width,i.height);var r=n.getBoundingRect();return n.attr("position",[-r.x,-r.y]),this.group.getBoundingRect()}}),rM=function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;ii[s],f=[-u.x,-u.y];f[o]=n.position[o];var p=[0,0],g=[-c.x,-c.y],v=D(t.get("pageButtonGap",!0),t.get("itemGap",!0));if(d){var m=t.get("pageButtonPosition",!0);"end"===m?g[o]+=i[s]-c[s]:p[o]+=c[s]+v}g[1-o]+=u[l]/2-c[l]/2,n.attr("position",f),r.attr("position",p),a.attr("position",g);var y=this.group.getBoundingRect(),y={x:0,y:0};if(y[s]=d?i[s]:u[s],y[l]=Math.max(u[l],c[l]),y[h]=Math.min(0,c[h]+g[1-o]),r.__rectSize=i[s],d){var x={x:0,y:0};x[s]=Math.max(i[s]-c[s]-v,0),x[l]=y[l],r.setClipPath(new Dy({shape:x})),r.__rectSize=x[s]}else a.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&La(n,{position:_.contentPosition},d?t:!1),this._updatePageInfoView(t,_),y},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(t,e){var i=this._controllerGroup;f(["pagePrev","pageNext"],function(n){var r=null!=e[n+"DataIndex"],a=i.childOfName(n);a&&(a.setStyle("fill",r?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=r?"pointer":"default")});var n=i.childOfName("pageText"),r=t.get("pageFormatter"),a=e.pageIndex,o=null!=a?a+1:0,s=e.pageCount;n&&r&&n.setStyle("text",b(r)?r.replace("{current}",o).replace("{total}",s):r({current:o,total:s}))},_getPageInfo:function(t){function e(t){var e=t.getBoundingRect().clone();return e[f]+=t.position[u],e}var i,n,r,a,o=t.get("scrollDataIndex",!0),s=this.getContentGroup(),l=s.getBoundingRect(),h=this._containerGroup.__rectSize,u=t.getOrient().index,c=sM[u],d=sM[1-u],f=lM[u],p=s.position.slice();this._showController?s.eachChild(function(t){t.__legendDataIndex===o&&(a=t)}):a=s.childAt(0);var g=h?Math.ceil(l[c]/h):0;if(a){var v=a.getBoundingRect(),m=a.position[u]+v[f];p[u]=-m-l[f],i=Math.floor(g*(m+v[f]+h/2)/l[c]),i=l[c]&&g?Math.max(0,Math.min(g-1,i)):-1;var y={x:0,y:0};y[c]=h,y[d]=l[d],y[f]=-p[u]-l[f];var x,_=s.children();if(s.eachChild(function(t,i){var n=e(t);n.intersect(y)&&(null==x&&(x=i),r=t.__legendDataIndex),i===_.length-1&&n[f]+n[c]<=y[f]+y[c]&&(r=null)}),null!=x){var w=_[x],b=e(w);if(y[f]=b[f]+b[c]-y[c],0>=x&&b[f]>=y[f])n=null;else{for(;x>0&&e(_[x-1]).intersect(y);)x--;n=_[x].__legendDataIndex}}}return{contentPosition:p,pageIndex:i,pageCount:g,pagePrevDataIndex:n,pageNextDataIndex:r}}});Ul("legendScroll","legendscroll",function(t,e){var i=t.scrollDataIndex;null!=i&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},function(t){t.setScrollDataIndex(i)})});var uM=function(t,e){var i,n=[],r=t.seriesIndex;if(null==r||!(i=e.getSeriesByIndex(r)))return{point:[]};var a=i.getData(),o=Yn(a,t);if(null==o||0>o||_(o))return{point:[]};var s=a.getItemGraphicEl(o),l=i.coordinateSystem;if(i.getTooltipPosition)n=i.getTooltipPosition(o)||[];else if(l&&l.dataToPoint)n=l.dataToPoint(a.getValues(p(l.dimensions,function(t){return a.mapDimension(t)}),o,!0))||[];else if(s){var h=s.getBoundingRect().clone();h.applyTransform(s.transform),n=[h.x+h.width/2,h.y+h.height/2]}return{point:n,el:s}},cM=f,dM=x,fM=jn(),pM=function(t,e,i){var n=t.currTrigger,r=[t.x,t.y],a=t,o=t.dispatchAction||y(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){Hd(r)&&(r=uM({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var l=Hd(r),h=a.axesInfo,u=s.axesInfo,c="leave"===n||Hd(r),d={},f={},p={list:[],map:{}},g={showPointer:dM(Rd,f),showTooltip:dM(Bd,p)};cM(s.coordSysMap,function(t,e){var i=l||t.containPoint(r);cM(s.coordSysAxesInfo[e],function(t){var e=t.axis,n=Wd(h,t);if(!c&&i&&(!h||n)){var a=n&&n.value;null!=a||l||(a=e.pointToData(r)),null!=a&&zd(t,a,g,!1,d)}})});var v={};return cM(u,function(t,e){var i=t.linkGroup;i&&!f[e]&&cM(i.axesInfo,function(e,n){var r=f[n];if(e!==t&&r){var a=r.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,Gd(e),Gd(t)))),v[t.key]=a}})}),cM(v,function(t,e){zd(u[e],t,g,!0,d)}),Nd(f,u,d),Fd(p,r,t,o),Vd(u,o,i),d}},gM=(ih({type:"axisPointer",coordSysAxesInfo:null,defaultOption:{show:"auto",triggerOn:null,zlevel:0,z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#aaa",width:1,type:"solid"},shadowStyle:{color:"rgba(150,150,150,0.3)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,shadowBlur:3,shadowColor:"#aaa"},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}}}),jn()),vM=f,mM=nh({type:"axisPointer",render:function(t,e,i){var n=e.getComponent("tooltip"),r=t.get("triggerOn")||n&&n.get("triggerOn")||"mousemove|click";Zd("axisPointer",i,function(t,e,i){"none"!==r&&("leave"===t||r.indexOf(t)>=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){$d(e.getZr(),"axisPointer"),mM.superApply(this._model,"remove",arguments)},dispose:function(t,e){$d("axisPointer",e),mM.superApply(this._model,"dispose",arguments)}}),yM=jn(),xM=n,_M=y;Kd.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var r=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==r||this._lastStatus!==a){this._lastValue=r,this._lastStatus=a;var o=this._group,s=this._handle;if(!a||"hide"===a)return o&&o.hide(),void(s&&s.hide());o&&o.show(),s&&s.show();var l={};this.makeElOption(l,r,t,e,i);var h=l.graphicKey;h!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=h;var u=this._moveAnimation=this.determineAnimation(t,e);if(o){var c=x(Qd,e,u);this.updatePointerEl(o,l,c,e),this.updateLabelEl(o,l,c,e)}else o=this._group=new lv,this.createPointerEl(o,l,t,e),this.createLabelEl(o,l,t,e),i.getZr().add(o);nf(o,e,!0),this._renderHandle(r)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,r="category"===n.type,a=e.get("snap");if(!a&&!r)return!1;if("auto"===i||null==i){var o=this.animationThreshold;if(r&&n.getBandWidth()>o)return!0;if(a){var s=_c(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>o}return!1}return i===!0},makeElOption:function(){},createPointerEl:function(t,e){var i=e.pointer;if(i){var n=yM(t).pointerEl=new Yy[i.type](xM(e.pointer));t.add(n)}},createLabelEl:function(t,e,i,n){if(e.label){var r=yM(t).labelEl=new Dy(xM(e.label));t.add(r),tf(r,n)}},updatePointerEl:function(t,e,i){var n=yM(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var r=yM(t).labelEl;r&&(r.setStyle(e.label.style),i(r,{shape:e.label.shape,position:e.label.position}),tf(r,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,r=e.getModel("handle"),a=e.get("status");if(!r.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var o;this._handle||(o=!0,n=this._handle=Va(r.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){Ig(t.event)},onmousedown:_M(this._onHandleDragMove,this,0,0),drift:_M(this._onHandleDragMove,this),ondragend:_M(this._onHandleDragEnd,this)}),i.add(n)),nf(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(r.getItemStyle(null,s));var l=r.get("size");_(l)||(l=[l,l]),n.attr("scale",[l[0]/2,l[1]/2]),Hs(this,"_doDispatchAxisPointer",r.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,o)}},_moveHandleToValue:function(t,e){Qd(this._axisPointerModel,!e&&this._moveAnimation,this._handle,ef(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(ef(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(ef(n)),yM(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){var t=this._handle;if(t){var e=this._payloadInfo,i=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,axesInfo:[{axisDim:i.axis.dim,axisIndex:i.componentIndex}]})}},_onHandleDragEnd:function(){this._dragging=!1;var t=this._handle;if(t){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}},Kd.prototype.constructor=Kd,er(Kd);var wM=Kd.extend({makeElOption:function(t,e,i,n,r){var a=i.axis,o=a.grid,s=n.get("type"),l=df(o,a).getOtherAxis(a).getGlobalExtent(),h=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var u=rf(n),c=bM[s](a,h,l,u);c.style=u,t.graphicKey=c.type,t.pointer=c}var d=Tc(o.model,i);hf(e,t,d,i,n,r)},getHandleTransform:function(t,e,i){var n=Tc(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:lf(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i){var n=i.axis,r=n.grid,a=n.getGlobalExtent(!0),o=df(r,n).getOtherAxis(n).getGlobalExtent(),s="x"===n.dim?0:1,l=t.position;l[s]+=e[s],l[s]=Math.min(a[1],l[s]),l[s]=Math.max(a[0],l[s]);var h=(o[1]+o[0])/2,u=[h,h];u[s]=l[s];var c=[{verticalAlign:"middle"},{align:"center"}];return{position:l,rotation:t.rotation,cursorPoint:u,tooltipOption:c[s]}}}),bM={line:function(t,e,i,n){var r=uf([e,i[0]],[e,i[1]],ff(t));return ia({shape:r,style:n}),{type:"Line",shape:r}},shadow:function(t,e,i){var n=Math.max(1,t.getBandWidth()),r=i[1]-i[0];return{type:"Rect",shape:cf([e-n/2,i[0]],[n,r],ff(t))}}};rS.registerAxisPointerClass("CartesianAxisPointer",wM),Yl(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!_(e)&&(t.axisPointer.link=[e])}}),jl(ow.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=fc(t,e)}),Ul({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},pM),ih({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"rgba(50,50,50,0.7)",borderColor:"#333",borderRadius:4,borderWidth:0,padding:5,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#fff",fontSize:14}}});var SM=f,MM=fo,IM=["","-webkit-","-moz-","-o-"],TM="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;";mf.prototype={constructor:mf,_enterable:!0,update:function(){var t=this._container,e=t.currentStyle||document.defaultView.getComputedStyle(t),i=t.style;"absolute"!==i.position&&"absolute"!==e.position&&(i.position="relative")},show:function(t){clearTimeout(this._hideTimeout);var e=this.el;e.style.cssText=TM+vf(t)+";left:"+this._x+"px;top:"+this._y+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",e.style.pointerEvents=this._enterable?"auto":"none",this._show=!0},setContent:function(t){this.el.innerHTML=null==t?"":t},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el;return[t.clientWidth,t.clientHeight]},moveTo:function(t,e){var i,n=this._zr;n&&n.painter&&(i=n.painter.getViewportRootOffset())&&(t+=i.offsetLeft,e+=i.offsetTop);var r=this.el.style;r.left=t+"px",r.top=e+"px",this._x=t,this._y=e},hide:function(){this.el.style.display="none",this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(y(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){var t=this.el.clientWidth,e=this.el.clientHeight;if(document.defaultView&&document.defaultView.getComputedStyle){var i=document.defaultView.getComputedStyle(this.el);i&&(t+=parseInt(i.paddingLeft,10)+parseInt(i.paddingRight,10)+parseInt(i.borderLeftWidth,10)+parseInt(i.borderRightWidth,10),e+=parseInt(i.paddingTop,10)+parseInt(i.paddingBottom,10)+parseInt(i.borderTopWidth,10)+parseInt(i.borderBottomWidth,10))}return{width:t,height:e}}},yf.prototype={constructor:yf,_enterable:!0,update:function(){},show:function(){this._hideTimeout&&clearTimeout(this._hideTimeout),this.el.attr("show",!0),this._show=!0},setContent:function(t,e,i){this.el&&this._zr.remove(this.el);for(var n={},r=t,a="{marker",o="|}",s=r.indexOf(a);s>=0;){var l=r.indexOf(o),h=r.substr(s+a.length,l-s-a.length);n["marker"+h]=h.indexOf("sub")>-1?{textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[h],textOffset:[3,0]}:{textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[h]},r=r.substr(l+1),s=r.indexOf("{marker")}this.el=new xy({style:{rich:n,text:t,textLineHeight:20,textBackgroundColor:i.get("backgroundColor"),textBorderRadius:i.get("borderRadius"),textFill:i.get("textStyle.color"),textPadding:i.get("padding")},z:i.get("z")}),this._zr.add(this.el);var u=this;this.el.on("mouseover",function(){u._enterable&&(clearTimeout(u._hideTimeout),u._show=!0),u._inContent=!0}),this.el.on("mouseout",function(){u._enterable&&u._show&&u.hideLater(u._hideDelay),u._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){this.el&&this.el.attr("position",[t,e])},hide:function(){this.el.hide(),this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(y(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var CM=y,AM=f,DM=Ua,kM=new Dy({shape:{x:-1,y:-1,width:2,height:2}});nh({type:"tooltip",init:function(t,e){if(!tg.node){var i=t.getComponent("tooltip"),n=i.get("renderMode");this._renderMode=Qn(n);var r;"html"===this._renderMode?(r=new mf(e.getDom(),e),this._newLine=" "):(r=new yf(e),this._newLine="\n"),this._tooltipContent=r}},render:function(t,e,i){if(!tg.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel,e=t.get("triggerOn");Zd("itemTooltip",this._api,CM(function(t,i,n){"none"!==e&&(e.indexOf(t)>=0?this._tryShow(i,n):"leave"===t&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!tg.node){var r=_f(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var o=kM;o.position=[n.x,n.y],o.update(),o.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:o},r)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},r);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=uM(n,e),l=s.point[0],h=s.point[1];null!=l&&null!=h&&this._tryShow({offsetX:l,offsetY:h,position:n.position,target:s.el,event:{}},r)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},r))}},manuallyHideTip:function(t,e,i,n){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(_f(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var r=n.seriesIndex,a=n.dataIndex,o=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=a&&null!=o){var s=e.getSeriesByIndex(r);if(s){var l=s.getData(),t=xf([l.getItemModel(a),s,(s.coordinateSystem||{}).model,t]);if("axis"===t.get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:a,position:n.position}),!0}}},_tryShow:function(t,e){var i=t.target,n=this._tooltipModel;if(n){this._lastX=t.offsetX,this._lastY=t.offsetY;var r=t.dataByCoordSys;r&&r.length?this._showAxisTooltip(r,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=y(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,n=this._tooltipModel,a=[e.offsetX,e.offsetY],o=[],s=[],l=xf([e.tooltipOption,n]),h=this._renderMode,u=this._newLine,c={};AM(t,function(t){AM(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),n=t.value,a=[];if(e&&null!=n){var l=sf(n,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);f(t.seriesDataIndices,function(o){var u=i.getSeriesByIndex(o.seriesIndex),d=o.dataIndexInside,f=u&&u.getDataParams(d);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=hu(e.axis,n),f.axisValueLabel=l,f){s.push(f);var p,g=u.formatTooltip(d,!0,null,h);if(S(g)){p=g.html;var v=g.markers;r(c,v)}else p=g;a.push(p)}});var d=l;o.push("html"!==h?a.join(u):(d?po(d)+u:"")+a.join(u))}})},this),o.reverse(),o=o.join(this._newLine+this._newLine);var d=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,d,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,o,s,Math.random(),a[0],a[1],d,void 0,c)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,r=e.seriesIndex,a=n.getSeriesByIndex(r),o=e.dataModel||a,s=e.dataIndex,l=e.dataType,h=o.getData(),u=xf([h.getItemModel(s),o,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),c=u.get("trigger");if(null==c||"item"===c){var d,f,p=o.getDataParams(s,l),g=o.formatTooltip(s,!1,l,this._renderMode);S(g)?(d=g.html,f=g.markers):(d=g,f=null);var v="item_"+o.name+"_"+s;this._showOrMove(u,function(){this._showTooltipContent(u,d,p,v,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:s,dataIndex:h.getRawIndex(s),seriesIndex:r,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var r=n;n={content:r,formatter:r}}var a=new Wa(n,this._tooltipModel,this._ecModel),o=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,o,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,r,a,o,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var h=this._tooltipContent,u=t.get("formatter");o=o||t.get("position");var c=e;if(u&&"string"==typeof u)c=go(u,i,!0);else if("function"==typeof u){var d=CM(function(e,n){e===this._ticket&&(h.setContent(n,l,t),this._updatePosition(t,o,r,a,h,i,s))},this);this._ticket=n,c=u(i,n,d)}h.setContent(c,l,t),h.show(t),this._updatePosition(t,o,r,a,h,i,s)}},_updatePosition:function(t,e,i,n,r,a,o){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var h=r.getSize(),u=t.get("align"),c=t.get("verticalAlign"),d=o&&o.getBoundingRect().clone();if(o&&d.applyTransform(o.transform),"function"==typeof e&&(e=e([i,n],a,r.el,d,{viewSize:[s,l],contentSize:h.slice()})),_(e))i=DM(e[0],s),n=DM(e[1],l);else if(S(e)){e.width=h[0],e.height=h[1];var f=bo(e,{width:s,height:l});i=f.x,n=f.y,u=null,c=null}else if("string"==typeof e&&o){var p=Sf(e,d,h);i=p[0],n=p[1]}else{var p=wf(i,n,r,s,l,u?null:20,c?null:20);i=p[0],n=p[1]}if(u&&(i-=Mf(u)?h[0]/2:"right"===u?h[0]:0),c&&(n-=Mf(c)?h[1]/2:"bottom"===c?h[1]:0),t.get("confine")){var p=bf(i,n,r,s,l);i=p[0],n=p[1]}r.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&AM(e,function(e,n){var r=e.dataByAxis||{},a=t[n]||{},o=a.dataByAxis||[];i&=r.length===o.length,i&&AM(r,function(t,e){var n=o[e]||{},r=t.seriesDataIndices||[],a=n.seriesDataIndices||[];i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&r.length===a.length,i&&AM(r,function(t,e){var n=a[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){tg.node||(this._tooltipContent.hide(),$d("itemTooltip",e))}}),Ul({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Ul({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){});var PM=co,LM=po,OM=ih({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(tg.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,n){var r=this.constructor,a=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType,!0),s=t[a];return i&&i.data?(s?s.mergeOption(i,e,!0):(n&&If(i),f(i.data,function(t){t instanceof Array?(If(t[0]),If(t[1])):If(t)}),s=new r(i,this,e),o(s,{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),void(t[a]=s)):void(t[a]=null)},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=_(i)?p(i,PM).join(", "):PM(i),r=e.getName(t),a=LM(this.name);return(null!=i||r)&&(a+=" "),r&&(a+=LM(r),null!=i&&(a+=" : ")),null!=i&&(a+=LM(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});c(OM,i_),OM.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var zM=h,EM=x,RM={min:EM(Af,"min"),max:EM(Af,"max"),average:EM(Af,"average")},BM=nh({type:"marker",init:function(){this.markerGroupMap=N()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var r=this.type+"Model";e.eachSeries(function(t){var n=t[r];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});BM.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(Ef(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var r=t.coordinateSystem,a=t.id,o=t.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,new zc),h=Rf(r,t,e);e.setData(h),Ef(e.getData(),t,n),h.each(function(t){var i=h.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),h.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||o.getVisual("color"),symbol:i.getShallow("symbol")})}),l.updateData(h),this.group.add(l.group),h.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e
+ })}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Yl(function(t){t.markPoint=t.markPoint||{}}),OM.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});var NM=ky.prototype,FM=Ly.prototype,VM=$r({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){(Bf(e)?NM:FM).buildPath(t,e)},pointAt:function(t){return Bf(this.shape)?NM.pointAt.call(this,t):FM.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=Bf(e)?[e.x2-e.x1,e.y2-e.y1]:FM.tangentAt.call(this,t);return te(i,i)}}),WM=["fromSymbol","toSymbol"],GM=Hf.prototype;GM.beforeUpdate=Gf,GM._createLine=function(t,e,i){var n=t.hostModel,r=t.getItemLayout(e),a=Vf(r);a.shape.percent=0,Oa(a,{shape:{percent:1}},n,e),this.add(a);var o=new xy({name:"label"});this.add(o),f(WM,function(i){var n=Ff(i,t,e);this.add(n),this[Nf(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},GM.updateData=function(t,e,i){var n=t.hostModel,r=this.childOfName("line"),a=t.getItemLayout(e),o={shape:{}};Wf(o.shape,a),La(r,o,n,e),f(WM,function(i){var n=t.getItemVisual(e,i),r=Nf(i);if(this[r]!==n){this.remove(this.childOfName(i));var a=Ff(i,t,e);this.add(a)}this[r]=n},this),this._updateCommonStl(t,e,i)},GM._updateCommonStl=function(t,e,i){var n=t.hostModel,r=this.childOfName("line"),a=i&&i.lineStyle,o=i&&i.hoverLineStyle,l=i&&i.labelModel,h=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var u=t.getItemModel(e);a=u.getModel("lineStyle").getLineStyle(),o=u.getModel("emphasis.lineStyle").getLineStyle(),l=u.getModel("label"),h=u.getModel("emphasis.label")}var c=t.getItemVisual(e,"color"),d=k(t.getItemVisual(e,"opacity"),a.opacity,1);r.useStyle(s({strokeNoScale:!0,fill:"none",stroke:c,opacity:d},a)),r.hoverStyle=o,f(WM,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:d}))},this);var p,g,v=l.getShallow("show"),m=h.getShallow("show"),y=this.childOfName("label");if((v||m)&&(p=c||"#000",g=n.getFormattedLabel(e,"normal",t.dataType),null==g)){var x=n.getRawValue(e);g=null==x?t.getName(e):isFinite(x)?$a(x):x}var _=v?g:null,w=m?D(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;(null!=_||null!=w)&&(ba(y.style,l,{text:_},{autoColor:p}),y.__textAlign=b.textAlign,y.__verticalAlign=b.textVerticalAlign,y.__position=l.get("position")||"middle"),y.hoverStyle=null!=w?{text:w,textFill:h.getTextColor(!0),fontStyle:h.getShallow("fontStyle"),fontWeight:h.getShallow("fontWeight"),fontSize:h.getShallow("fontSize"),fontFamily:h.getShallow("fontFamily")}:{text:null},y.ignore=!v&&!m,xa(this)},GM.highlight=function(){this.trigger("emphasis")},GM.downplay=function(){this.trigger("normal")},GM.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},GM.setLinePoints=function(t){var e=this.childOfName("line");Wf(e.shape,t),e.dirty()},u(Hf,lv);var HM=Zf.prototype;HM.isPersistent=function(){return!0},HM.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var r=jf(t);t.diff(n).add(function(i){Xf(e,t,i,r)}).update(function(i,a){Yf(e,n,t,a,i,r)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},HM.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},HM.incrementalPrepareUpdate=function(t){this._seriesScope=jf(t),this._lineData=null,this.group.removeAll()},HM.incrementalUpdate=function(t,e){function i(t){t.isGroup||(t.incremental=t.useHoverLayer=!0)}for(var n=t.start;n=0&&"number"==typeof c&&(c=+c.toFixed(Math.min(m,20))),g.coord[f]=v.coord[f]=c,a=[g,v,{type:l,valueIndex:a.valueIndex,value:c}]}return a=[Df(t,a[0]),Df(t,a[1]),o({},a[2])],a[2].type=a[2].type||"",r(a[2],a[0]),r(a[2],a[1]),a};BM.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),r=e.__from,a=e.__to;r.each(function(e){Jf(r,e,!0,t,i),Jf(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[r.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function r(e,i,r){var a=e.getItemModel(i);Jf(e,i,r,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||g[r?0:1],symbol:a.get("symbol",!0)||p[r?0:1],color:a.get("itemStyle.color")||s.getVisual("color")})}var a=t.coordinateSystem,o=t.id,s=t.getData(),l=this.markerGroupMap,h=l.get(o)||l.set(o,new Zf);this.group.add(h.group);var u=tp(a,t,e),c=u.from,d=u.to,f=u.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");_(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),u.from.each(function(t){r(c,t,!0),r(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),h.updateData(f),u.line.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),h.__keep=!0,h.group.silent=e.get("silent")||t.get("silent")}}),Yl(function(t){t.markLine=t.markLine||{}}),OM.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});var XM=function(t,e,i,n){var r=Df(t,n[0]),o=Df(t,n[1]),s=A,l=r.coord,h=o.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),h[0]=s(h[0],1/0),h[1]=s(h[1],1/0);var u=a([{},r,o]);return u.coord=[r.coord,o.coord],u.x0=r.x,u.y0=r.y,u.x1=o.x,u.y1=o.y,u},YM=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];BM.extend({type:"markArea",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var r=p(YM,function(r){return rp(n,e,r,t,i)});n.setItemLayout(e,r);var a=n.getItemGraphicEl(e);a.setShape("points",r)})}},this)},renderSeries:function(t,e,i,n){var r=t.coordinateSystem,a=t.id,o=t.getData(),l=this.markerGroupMap,h=l.get(a)||l.set(a,{group:new lv});this.group.add(h.group),h.__keep=!0;var u=ap(r,t,e);e.setData(u),u.each(function(e){u.setItemLayout(e,p(YM,function(i){return rp(u,e,i,t,n)})),u.setItemVisual(e,{color:o.getVisual("color")})}),u.diff(h.__data).add(function(t){var e=new Cy({shape:{points:u.getItemLayout(t)}});u.setItemGraphicEl(t,e),h.group.add(e)}).update(function(t,i){var n=h.__data.getItemGraphicEl(i);La(n,{shape:{points:u.getItemLayout(t)}},e,t),h.group.add(n),u.setItemGraphicEl(t,n)}).remove(function(t){var e=h.__data.getItemGraphicEl(t);h.group.remove(e)}).execute(),u.eachItemGraphicEl(function(t,i){var n=u.getItemModel(i),r=n.getModel("label"),a=n.getModel("emphasis.label"),o=u.getItemVisual(i,"color");t.useStyle(s(n.getModel("itemStyle").getItemStyle(),{fill:Ke(o,.4),stroke:o})),t.hoverStyle=n.getModel("emphasis.itemStyle").getItemStyle(),wa(t.style,t.hoverStyle,r,a,{labelFetcher:e,labelDataIndex:i,defaultText:u.getName(i)||"",isRectText:!0,autoColor:o}),xa(t,{}),t.dataModel=e}),h.__data=u,h.group.silent=e.get("silent")||t.get("silent")}}),Yl(function(t){t.markArea=t.markArea||{}});var jM=function(t){var e=t&&t.timeline;_(e)||(e=e?[e]:[]),f(e,function(t){t&&op(t)})};yx.registerSubTypeDefaulter("timeline",function(){return"slider"}),Ul({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),s({currentIndex:i.option.currentIndex},t)}),Ul({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var qM=yx.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(){qM.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),0>t&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],i=t.axisType,r=this._names=[];if("category"===i){var a=[];f(e,function(t,e){var i,o=Vn(t);S(t)?(i=n(t),i.value=e):i=e,a.push(i),b(o)||null!=o&&!isNaN(o)||(o=""),r.push(o+"")}),e=a}var o={category:"ordinal",time:"time"}[i]||"number",s=this._data=new Bw([{name:"value",type:o}],this);s.initData(e,r)},getData:function(){return this._data},getCategories:function(){return"category"===this.get("axisType")?this._names.slice():void 0}}),UM=qM.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}});c(UM,i_);var $M=s_.extend({type:"timeline"}),KM=function(t,e,i,n){Pb.call(this,t,e,i),this.type=n||"value",this.model=null};KM.prototype={constructor:KM,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(KM,Pb);var QM=y,JM=f,tI=Math.PI;$M.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(t,e,i){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var n=this._layout(t,i),r=this._createGroup("mainGroup"),a=this._createGroup("labelGroup"),o=this._axis=this._createAxis(n,t);t.formatTooltip=function(t){return po(o.scale.getLabel(t))},JM(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](n,r,o,t)},this),this._renderAxisLabel(n,a,o,t),this._position(n,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),r=hp(t,e);null==i||"auto"===i?i="horizontal"===n?r.y+r.height/2=0||"+"===i?"left":"right"},o={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},s={horizontal:0,vertical:tI/2},l="vertical"===n?r.height:r.width,h=t.getModel("controlStyle"),u=h.get("show",!0),c=u?h.get("itemSize"):0,d=u?h.get("itemGap"):0,f=c+d,p=t.get("label.rotate")||0;p=p*tI/180;var g,v,m,y,x=h.get("position",!0),_=u&&h.get("showPlayBtn",!0),w=u&&h.get("showPrevBtn",!0),b=u&&h.get("showNextBtn",!0),S=0,M=l;return"left"===x||"bottom"===x?(_&&(g=[0,0],S+=f),w&&(v=[S,0],S+=f),b&&(m=[M-c,0],M-=f)):(_&&(g=[M-c,0],M-=f),w&&(v=[0,0],S+=f),b&&(m=[M-c,0],M-=f)),y=[S,M],t.get("inverse")&&y.reverse(),{viewRect:r,mainLength:l,orient:n,rotation:s[n],labelRotation:p,labelPosOpt:i,labelAlign:t.get("label.align")||a[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||o[n],playPosition:g,prevBtnPosition:v,nextBtnPosition:m,axisExtent:y,controlSize:c,controlGap:d}},_position:function(t){function e(t){var e=t.position;t.origin=[u[0][0]-e[0],u[1][0]-e[1]]}function i(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function n(t,e,i,n,r){t[n]+=i[n][r]-e[n][r]}var r=this._mainGroup,a=this._labelGroup,o=t.viewRect;if("vertical"===t.orient){var s=be(),l=o.x,h=o.y+o.height;Te(s,s,[-l,-h]),Ce(s,s,-tI/2),Te(s,s,[l,h]),o=o.clone(),o.applyTransform(s)}var u=i(o),c=i(r.getBoundingRect()),d=i(a.getBoundingRect()),f=r.position,p=a.position;p[0]=f[0]=u[0][0];var g=t.labelPosOpt;if(isNaN(g)){var v="+"===g?0:1;n(f,c,u,1,v),n(p,d,u,1,1-v)}else{var v=g>=0?0:1;n(f,c,u,1,v),p[1]=f[1]+g}r.attr("position",f),a.attr("position",p),r.rotation=a.rotation=t.rotation,e(r),e(a)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),r=ou(e,n);r.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var a=i.getDataExtent("value");r.setExtent(a[0],a[1]),r.niceTicks();var o=new KM("value",r,t.axisExtent,n);return o.model=e,o},_createGroup:function(t){var e=this["_"+t]=new lv;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var r=i.getExtent();n.get("lineStyle.show")&&e.add(new ky({shape:{x1:r[0],y1:0,x2:r[1],y2:0},style:o({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var r=n.getData(),a=i.scale.getTicks();JM(a,function(t){var a=i.dataToCoord(t),o=r.getItemModel(t),s=o.getModel("itemStyle"),l=o.getModel("emphasis.itemStyle"),h={position:[a,0],onclick:QM(this._changeTimeline,this,t)},u=cp(o,s,e,h);xa(u,l.getItemStyle()),o.get("tooltip")?(u.dataIndex=t,u.dataModel=n):u.dataIndex=u.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){var r=i.getLabelModel();if(r.get("show")){var a=n.getData(),o=i.getViewLabels();JM(o,function(n){var r=n.tickValue,o=a.getItemModel(r),s=o.getModel("label"),l=o.getModel("emphasis.label"),h=i.dataToCoord(n.tickValue),u=new xy({position:[h,0],rotation:t.labelRotation-t.rotation,onclick:QM(this._changeTimeline,this,r),silent:!1});ba(u.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(u),xa(u,ba({},l))},this)}},_renderControl:function(t,e,i,n){function r(t,i,r,u){if(t){var c={position:t,origin:[a/2,0],rotation:u?-o:0,rectHover:!0,style:s,onclick:r},d=up(n,i,h,c);e.add(d),xa(d,l)}}var a=t.controlSize,o=t.rotation,s=n.getModel("controlStyle").getItemStyle(),l=n.getModel("emphasis.controlStyle").getItemStyle(),h=[0,-a/2,a,a],u=n.getPlayState(),c=n.get("inverse",!0);r(t.nextBtnPosition,"controlStyle.nextIcon",QM(this._changeTimeline,this,c?"-":"+")),r(t.prevBtnPosition,"controlStyle.prevIcon",QM(this._changeTimeline,this,c?"+":"-")),r(t.playPosition,"controlStyle."+(u?"stopIcon":"playIcon"),QM(this._handlePlayClick,this,!u),!0)},_renderCurrentPointer:function(t,e,i,n){var r=n.getData(),a=n.getCurrentIndex(),o=r.getItemModel(a).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=QM(s._handlePointerDrag,s),t.ondragend=QM(s._handlePointerDragend,s),dp(t,a,i,n,!0)},onUpdate:function(t){dp(t,a,i,n)}};this._currentPointer=cp(o,o,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i.offsetX,i.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=this._axis,r=Ka(n.getExtent().slice());i>r[1]&&(i=r[1]),is&&(n=s,e=a)}),e},_clearTimer:function(){this._timer&&(clearTimeout(this._timer),this._timer=null)},_changeTimeline:function(t){var e=this.model.getCurrentIndex();"+"===t?t=e+1:"-"===t&&(t=e-1),this.api.dispatchAction({type:"timelineChange",currentIndex:t,from:this.uid})}}),Yl(jM),yx.registerSubTypeDefaulter("dataZoom",function(){return"slider"});var eI=["x","y","z","radius","angle","single"],iI=["cartesian2d","polar","singleAxis"],nI=pp(eI,["axisIndex","axis","index","id"]),rI=f,aI=Ka,oI=function(t,e,i,n){this._dimName=t,this._axisIndex=e,this._valueWindow,this._percentWindow,this._dataExtent,this._minMaxSpan,this.ecModel=n,this._dataZoomModel=i};oI.prototype={constructor:oI,hostedBy:function(t){return this._dataZoomModel===t},getDataValueWindow:function(){return this._valueWindow.slice()},getDataPercentWindow:function(){return this._percentWindow.slice()},getTargetSeriesModels:function(){var t=[],e=this.ecModel;return e.eachSeries(function(i){if(fp(i.get("coordinateSystem"))){var n=this._dimName,r=e.queryComponents({mainType:n+"Axis",index:i.get(n+"AxisIndex"),id:i.get(n+"AxisId")})[0];this._axisIndex===(r&&r.componentIndex)&&t.push(i)}},this),t},getAxisModel:function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},getOtherAxisModel:function(){var t,e,i=this._dimName,n=this.ecModel,r=this.getAxisModel(),a="x"===i||"y"===i;a?(e="gridIndex",t="x"===i?"y":"x"):(e="polarIndex",t="angle"===i?"radius":"angle");var o;return n.eachComponent(t+"Axis",function(t){(t.get(e)||0)===(r.get(e)||0)&&(o=t)}),o},getMinMaxSpan:function(){return n(this._minMaxSpan)},calculateDataWindow:function(t){var e=this._dataExtent,i=this.getAxisModel(),n=i.axis.scale,r=this._dataZoomModel.getRangePropMode(),a=[0,100],o=[t.start,t.end],s=[];return rI(["startValue","endValue"],function(e){s.push(null!=t[e]?n.parse(t[e]):null)}),rI([0,1],function(t){var i=s[t],l=o[t];"percent"===r[t]?(null==l&&(l=a[t]),i=n.parse(qa(l,a,e,!0))):l=qa(i,e,a,!0),s[t]=i,o[t]=l}),{valueWindow:aI(s),percentWindow:aI(o)}},reset:function(t){if(t===this._dataZoomModel){var e=this.getTargetSeriesModels();this._dataExtent=vp(this,this._dimName,e);var i=this.calculateDataWindow(t.option);this._valueWindow=i.valueWindow,this._percentWindow=i.percentWindow,xp(this),yp(this)}},restore:function(t){t===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,yp(this,!0))},filterData:function(t){function e(t){return t>=a[0]&&t<=a[1]}if(t===this._dataZoomModel){var i=this._dimName,n=this.getTargetSeriesModels(),r=t.get("filterMode"),a=this._valueWindow;"none"!==r&&rI(n,function(t){var n=t.getData(),o=n.mapDimension(i,!0);o.length&&("weakFilter"===r?n.filterSelf(function(t){for(var e,i,r,s=0;sa[1];if(h&&!u&&!c)return!0;h&&(r=!0),u&&(e=!0),c&&(i=!0)}return r&&e&&i}):rI(o,function(i){if("empty"===r)t.setData(n.map(i,function(t){return e(t)?t:0/0}));else{var o={};o[i]=a,n.selectRange(o)}}),rI(o,function(t){n.setApproximateExtent(a,t)}))})}}};var sI=f,lI=nI,hI=ih({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var n=_p(t);this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=_p(t);r(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;tg.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),wp(this,t),sI([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,r){var a=this.dependentModels[e.axis][i],o=a.__dzAxisProxy||(a.__dzAxisProxy=new oI(e.name,i,this,r));t[e.name+"_"+i]=o},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();lI(function(e){var i=e.axisIndex;t[i]=Nn(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;lI(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var r="vertical"===e?"y":"x";n[r+"Axis"].length?(i[r+"AxisIndex"]=[0],t=!1):sI(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&lI(function(e){if(t){var n=[],r=this.dependentModels[e.axis];if(r.length&&!n.length)for(var a=0,o=r.length;o>a;a++)"category"===r[a].get("type")&&n.push(a);i[e.axisIndex]=n,n.length&&(t=!1)}},this),t&&this.ecModel.eachSeries(function(t){this._isSeriesHasAllAxesTypeOf(t,"value")&&lI(function(e){var n=i[e.axisIndex],r=t.get(e.axisIndex),a=t.get(e.axisId),o=t.ecModel.queryComponents({mainType:e.axis,index:r,id:a})[0];r=o.componentIndex,h(n,r)<0&&n.push(r)})},this)},_autoSetOrient:function(){var t;this.eachTargetAxis(function(e){!t&&(t=e.name)},this),this.option.orient="y"===t?"vertical":"horizontal"},_isSeriesHasAllAxesTypeOf:function(t,e){var i=!0;return lI(function(n){var r=t.get(n.axisIndex),a=this.dependentModels[n.axis][r];a&&a.get("type")===e||(i=!1)},this),i},_setDefaultThrottle:function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var e=this.ecModel.option;this.option.throttle=e.animation&&e.animationDurationUpdate>0?100:20}},getFirstTargetAxisModel:function(){var t;return lI(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;lI(function(n){sI(this.get(n.axisIndex),function(r){t.call(e,n,r,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(t,e){var i=this.option;sI([["start","startValue"],["end","endValue"]],function(e){(null!=t[e[0]]||null!=t[e[1]])&&(i[e[0]]=t[e[0]],i[e[1]]=t[e[1]])},this),!e&&wp(this,t)},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();return t?t.getDataPercentWindow():void 0},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var i in e)if(e.hasOwnProperty(i)&&e[i].hostedBy(this))return e[i];for(var i in e)if(e.hasOwnProperty(i)&&!e[i].hostedBy(this))return e[i]},getRangePropMode:function(){return this._rangePropMode.slice()}}),uI=s_.extend({type:"dataZoom",render:function(t,e,i){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var r,a=0;aa&&(e[1-n]=e[n]+u.sign*a),e}),dI=Dy,fI=qa,pI=Ka,gI=y,vI=f,mI=7,yI=1,xI=30,_I="horizontal",wI="vertical",bI=5,SI=["line","bar","candlestick","scatter"],MI=uI.extend({type:"dataZoom.slider",init:function(t,e){this._displayables={},this._orient,this._range,this._handleEnds,this._size,this._handleWidth,this._handleHeight,this._location,this._dragging,this._dataShadowInfo,this.api=e},render:function(t,e,i,n){return MI.superApply(this,"render",arguments),Hs(this,"_dispatchZoomAction",this.dataZoomModel.get("throttle"),"fixRate"),this._orient=t.get("orient"),this.dataZoomModel.get("show")===!1?void this.group.removeAll():(n&&"dataZoom"===n.type&&n.from===this.uid||this._buildView(),void this._updateView())},remove:function(){MI.superApply(this,"remove",arguments),Zs(this,"_dispatchZoomAction")},dispose:function(){MI.superApply(this,"dispose",arguments),Zs(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t.removeAll(),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new lv;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},_resetLocation:function(){var t=this.dataZoomModel,e=this.api,i=this._findCoordRect(),n={width:e.getWidth(),height:e.getHeight()},r=this._orient===_I?{right:n.width-i.x-i.width,top:n.height-xI-mI,width:i.width,height:xI}:{right:mI,top:i.y,width:xI,height:i.height},a=Mo(t.option);f(["right","top","width","height"],function(t){"ph"===a[t]&&(a[t]=r[t])});var o=bo(a,n,t.padding);this._location={x:o.x,y:o.y},this._size=[o.width,o.height],this._orient===wI&&this._size.reverse()},_positionGroup:function(){var t=this.group,e=this._location,i=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),r=n&&n.get("inverse"),a=this._displayables.barGroup,o=(this._dataShadowInfo||{}).otherAxisInverse;a.attr(i!==_I||r?i===_I&&r?{scale:o?[-1,1]:[-1,-1]}:i!==wI||r?{scale:o?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:o?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:o?[1,1]:[1,-1]});var s=t.getBoundingRect([a]);t.attr("position",[e.x-s.x,e.y-s.y])},_getViewExtent:function(){return[0,this._size[0]]},_renderBackground:function(){var t=this.dataZoomModel,e=this._size,i=this._displayables.barGroup;i.add(new dI({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40})),i.add(new dI({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:y(this._onClickPanelClick,this)}))},_renderDataShadow:function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(t){var e=this._size,i=t.series,n=i.getRawData(),r=i.getShadowDim?i.getShadowDim():t.otherDim;if(null!=r){var a=n.getDataExtent(r),o=.3*(a[1]-a[0]);a=[a[0]-o,a[1]+o];var l,h=[0,e[1]],u=[0,e[0]],c=[[e[0],0],[0,0]],d=[],f=u[1]/(n.count()-1),p=0,g=Math.round(n.count()/e[0]);n.each([r],function(t,e){if(g>0&&e%g)return void(p+=f);var i=null==t||isNaN(t)||""===t,n=i?0:fI(t,a,h,!0);i&&!l&&e?(c.push([c[c.length-1][0],0]),d.push([d[d.length-1][0],0])):!i&&l&&(c.push([p,0]),d.push([p,0])),c.push([p,n]),d.push([p,n]),p+=f,l=i});var v=this.dataZoomModel;this._displayables.barGroup.add(new Cy({shape:{points:c},style:s({fill:v.get("dataBackgroundColor")},v.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new Ay({shape:{points:d},style:v.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(e!==!1){var i,n=this.ecModel;return t.eachTargetAxis(function(r,a){var o=t.getAxisProxy(r.name,a).getTargetSeriesModels();f(o,function(t){if(!(i||e!==!0&&h(SI,t.get("type"))<0)){var o,s=n.getComponent(r.axis,a).axis,l=Mp(r.name),u=t.coordinateSystem;null!=l&&u.getOtherAxis&&(o=u.getOtherAxis(s).inverse),l=t.getData().mapDimension(l),i={thisAxis:s,series:t,thisDim:r.name,otherDim:l,otherAxisInverse:o}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,r=this._size,a=this.dataZoomModel;n.add(t.filler=new dI({draggable:!0,cursor:Ip(this._orient),drift:gI(this._onDragMove,this,"all"),onmousemove:function(t){Ig(t.event)},ondragstart:gI(this._showDataInfo,this,!0),ondragend:gI(this._onDragEnd,this),onmouseover:gI(this._showDataInfo,this,!0),onmouseout:gI(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new dI(na({silent:!0,shape:{x:0,y:0,width:r[0],height:r[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:yI,fill:"rgba(0,0,0,0)"}}))),vI([0,1],function(t){var r=Va(a.get("handleIcon"),{cursor:Ip(this._orient),draggable:!0,drift:gI(this._onDragMove,this,t),onmousemove:function(t){Ig(t.event)
+ },ondragend:gI(this._onDragEnd,this),onmouseover:gI(this._showDataInfo,this,!0),onmouseout:gI(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),o=r.getBoundingRect();this._handleHeight=Ua(a.get("handleSize"),this._size[1]),this._handleWidth=o.width/o.height*this._handleHeight,r.setStyle(a.getModel("handleStyle").getItemStyle());var s=a.get("handleColor");null!=s&&(r.style.fill=s),n.add(e[t]=r);var l=a.textStyleModel;this.group.add(i[t]=new xy({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:l.getTextColor(),textFont:l.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[fI(t[0],[0,100],e,!0),fI(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,r=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),o=[0,100];cI(e,n,r,i.get("zoomLock")?"all":t,null!=a.minSpan?fI(a.minSpan,o,r,!0):null,null!=a.maxSpan?fI(a.maxSpan,o,r,!0):null);var s=this._range,l=this._range=pI([fI(n[0],r,o,!0),fI(n[1],r,o,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=pI(i.slice()),r=this._size;vI([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a/2,a/2],position:[i[t],r[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:r[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=za(n.handles[t].parent,this.group),i=Ra(0===t?"right":"left",e),s=this._handleWidth/2+bI,l=Ea([c[t]+(0===t?-s:s),this._size[1]/2],e);r[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===_I?"middle":i,textAlign:a===_I?i:"center",text:o[t]})}var i=this.dataZoomModel,n=this._displayables,r=n.handleLabels,a=this._orient,o=["",""];if(i.get("showDetail")){var s=i.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,h=this._range,u=t?s.calculateDataWindow({start:h[0],end:h[1]}).valueWindow:s.getDataValueWindow();o=[this._formatLabel(u[0],l),this._formatLabel(u[1],l)]}}var c=pI(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),r=i.get("labelPrecision");(null==r||"auto"===r)&&(r=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(r,20));return w(n)?n(t,a):b(n)?n.replace("{value}",a):a},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i){this._dragging=!0;var n=this._displayables.barGroup.getLocalTransform(),r=Ea([e,i],n,!0),a=this._updateInterval(t,r[0]),o=this.dataZoomModel.get("realtime");this._updateView(!o),a&&o&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1);var t=this.dataZoomModel.get("realtime");!t&&this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,i=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(i[0]<0||i[0]>e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,r=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-r);this._updateView(),a&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var t;if(vI(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});hI.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var II="\x00_ec_interaction_mutex";Ul({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),c(Ap,bg);var TI="\x00_ec_dataZoom_roams",CI=y,AI=uI.extend({type:"dataZoom.inside",init:function(){this._range},render:function(t,e,i){AI.superApply(this,"render",arguments),this._range=t.getPercentRange(),f(this.getTargetCoordInfo(),function(e,n){var r=p(e,function(t){return Fp(t.model)});f(e,function(e){var a=e.model,o={};f(["pan","zoom","scrollMove"],function(t){o[t]=CI(DI[t],this,e,n)},this),Bp(i,{coordId:Fp(a),allCoordIds:r,containsPoint:function(t,e,i){return a.coordinateSystem.containPoint([e,i])},dataZoomId:t.id,dataZoomModel:t,getRange:o})},this)},this)},dispose:function(){Np(this.api,this.dataZoomModel.id),AI.superApply(this,"dispose",arguments),this._range=null}}),DI={zoom:function(t,e,i,n){var r=this._range,a=r.slice(),o=t.axisModels[0];if(o){var s=kI[e](null,[n.originX,n.originY],o,i,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],h=Math.max(1/n.scale,0);a[0]=(a[0]-l)*h+l,a[1]=(a[1]-l)*h+l;var u=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return cI(0,a,[0,100],0,u.minSpan,u.maxSpan),this._range=a,r[0]!==a[0]||r[1]!==a[1]?a:void 0}},pan:Xp(function(t,e,i,n,r,a){var o=kI[n]([a.oldX,a.oldY],[a.newX,a.newY],e,r,i);return o.signal*(t[1]-t[0])*o.pixel/o.pixelLength}),scrollMove:Xp(function(t,e,i,n,r,a){var o=kI[n]([0,0],[a.scrollDelta,a.scrollDelta],e,r,i);return o.signal*(t[1]-t[0])*a.scrollDelta})},kI={grid:function(t,e,i,n,r){var a=i.axis,o={},s=r.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(o.pixel=e[0]-t[0],o.pixelLength=s.width,o.pixelStart=s.x,o.signal=a.inverse?1:-1):(o.pixel=e[1]-t[1],o.pixelLength=s.height,o.pixelStart=s.y,o.signal=a.inverse?-1:1),o},polar:function(t,e,i,n,r){var a=i.axis,o={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),h=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.mainType?(o.pixel=e[0]-t[0],o.pixelLength=l[1]-l[0],o.pixelStart=l[0],o.signal=a.inverse?1:-1):(o.pixel=e[1]-t[1],o.pixelLength=h[1]-h[0],o.pixelStart=h[0],o.signal=a.inverse?-1:1),o},singleAxis:function(t,e,i,n,r){var a=i.axis,o=r.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=o.width,s.pixelStart=o.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=o.height,s.pixelStart=o.y,s.signal=a.inverse?-1:1),s}};jl({getTargetSeries:function(t){var e=N();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){var r=n.getAxisProxy(t.name,i);f(r.getTargetSeriesModels(),function(t){e.set(t.uid,t)})})}),e},modifyOutputEnd:!0,overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).reset(n,e)}),t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).filterData(n,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})}}),Ul("dataZoom",function(t,e){var i=gp(y(e.eachComponent,e,"dataZoom"),nI,function(t,e){return t.get(e.axisIndex)}),n=[];e.eachComponent({mainType:"dataZoom",query:t},function(t){n.push.apply(n,i(t).nodes)}),f(n,function(e){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})});var PI,LI="urn:schemas-microsoft-com:vml",OI="undefined"==typeof window?null:window,zI=!1,EI=OI&&OI.document;if(EI&&!tg.canvasSupported)try{!EI.namespaces.zrvml&&EI.namespaces.add("zrvml",LI),PI=function(t){return EI.createElement("')}}catch(RI){PI=function(t){return EI.createElement("<"+t+' xmlns="'+LI+'" class="zrvml">')}}var BI=qm.CMD,NI=Math.round,FI=Math.sqrt,VI=Math.abs,WI=Math.cos,GI=Math.sin,HI=Math.max;if(!tg.canvasSupported){var ZI=",",XI="progid:DXImageTransform.Microsoft",YI=21600,jI=YI/2,qI=1e5,UI=1e3,$I=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=YI+","+YI,t.coordorigin="0,0"},KI=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},QI=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},JI=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},tT=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},eT=function(t,e,i){return(parseFloat(t)||0)*qI+(parseFloat(e)||0)*UI+i},iT=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},nT=function(t,e,i){var n=He(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=QI(n[0],n[1],n[2]),t.opacity=i*n[3])},rT=function(t){var e=He(t);return[QI(e[0],e[1],e[2]),e[3]]},aT=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof Ey){var r,a=0,o=[0,0],s=0,l=1,h=i.getBoundingRect(),u=h.width,c=h.height;if("linear"===n.type){r="gradient";var d=i.transform,f=[n.x*u,n.y*c],p=[n.x2*u,n.y2*c];d&&(ae(f,f,d),ae(p,p,d));var g=p[0]-f[0],v=p[1]-f[1];a=180*Math.atan2(g,v)/Math.PI,0>a&&(a+=360),1e-6>a&&(a=0)}else{r="gradientradial";var f=[n.x*u,n.y*c],d=i.transform,m=i.scale,y=u,x=c;o=[(f[0]-h.x)/y,(f[1]-h.y)/x],d&&ae(f,f,d),y/=m[0]*YI,x/=m[1]*YI;var _=HI(y,x);s=0/_,l=2*n.r/_-s}var w=n.colorStops.slice();w.sort(function(t,e){return t.offset-e.offset});for(var b=w.length,S=[],M=[],I=0;b>I;I++){var T=w[I],C=rT(T.color);M.push(T.offset*l+s+" "+C[0]),(0===I||I===b-1)&&S.push(C)}if(b>=2){var A=S[0][0],D=S[1][0],k=S[0][1]*e.opacity,P=S[1][1]*e.opacity;t.type=r,t.method="none",t.focus="100%",t.angle=a,t.color=A,t.color2=D,t.colors=M.join(","),t.opacity=P,t.opacity2=k}"radial"===r&&(t.focusposition=o.join(","))}else nT(t,n,e.opacity)},oT=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof Ey||nT(t,e.stroke,e.opacity)},sT=function(t,e,i,n){var r="fill"==e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(r||!r&&i.lineWidth)?(t[r?"filled":"stroked"]="true",i[e]instanceof Ey&&tT(t,a),a||(a=Yp(e)),r?aT(a,i,n):oT(a,i),JI(t,a)):(t[r?"filled":"stroked"]="false",tT(t,a))},lT=[[],[],[]],hT=function(t,e){var i,n,r,a,o,s,l=BI.M,h=BI.C,u=BI.L,c=BI.A,d=BI.Q,f=[],p=t.data,g=t.len();for(a=0;g>a;){switch(r=p[a++],n="",i=0,r){case l:n=" m ",i=1,o=p[a++],s=p[a++],lT[0][0]=o,lT[0][1]=s;break;case u:n=" l ",i=1,o=p[a++],s=p[a++],lT[0][0]=o,lT[0][1]=s;break;case d:case h:n=" c ",i=3;var v,m,y=p[a++],x=p[a++],_=p[a++],w=p[a++];r===d?(v=_,m=w,_=(_+2*y)/3,w=(w+2*x)/3,y=(o+2*y)/3,x=(s+2*x)/3):(v=p[a++],m=p[a++]),lT[0][0]=y,lT[0][1]=x,lT[1][0]=_,lT[1][1]=w,lT[2][0]=v,lT[2][1]=m,o=v,s=m;break;case c:var b=0,S=0,M=1,I=1,T=0;e&&(b=e[4],S=e[5],M=FI(e[0]*e[0]+e[1]*e[1]),I=FI(e[2]*e[2]+e[3]*e[3]),T=Math.atan2(-e[1]/I,e[0]/M));var C=p[a++],A=p[a++],D=p[a++],k=p[a++],P=p[a++]+T,L=p[a++]+P+T;a++;var O=p[a++],z=C+WI(P)*D,E=A+GI(P)*k,y=C+WI(L)*D,x=A+GI(L)*k,R=O?" wa ":" at ";Math.abs(z-y)<1e-4&&(Math.abs(L-P)>.01?O&&(z+=270/YI):Math.abs(E-A)<1e-4?O&&C>z||!O&&z>C?x-=270/YI:x+=270/YI:O&&A>E||!O&&E>A?y+=270/YI:y-=270/YI),f.push(R,NI(((C-D)*M+b)*YI-jI),ZI,NI(((A-k)*I+S)*YI-jI),ZI,NI(((C+D)*M+b)*YI-jI),ZI,NI(((A+k)*I+S)*YI-jI),ZI,NI((z*M+b)*YI-jI),ZI,NI((E*I+S)*YI-jI),ZI,NI((y*M+b)*YI-jI),ZI,NI((x*I+S)*YI-jI)),o=y,s=x;break;case BI.R:var B=lT[0],N=lT[1];B[0]=p[a++],B[1]=p[a++],N[0]=B[0]+p[a++],N[1]=B[1]+p[a++],e&&(ae(B,B,e),ae(N,N,e)),B[0]=NI(B[0]*YI-jI),N[0]=NI(N[0]*YI-jI),B[1]=NI(B[1]*YI-jI),N[1]=NI(N[1]*YI-jI),f.push(" m ",B[0],ZI,B[1]," l ",N[0],ZI,B[1]," l ",N[0],ZI,N[1]," l ",B[0],ZI,N[1]);break;case BI.Z:f.push(" x ")}if(i>0){f.push(n);for(var F=0;i>F;F++){var V=lT[F];e&&ae(V,V,e),f.push(NI(V[0]*YI-jI),ZI,NI(V[1]*YI-jI),i-1>F?ZI:"")}}}return f.join("")};Fr.prototype.brushVML=function(t){var e=this.style,i=this._vmlEl;i||(i=Yp("shape"),$I(i),this._vmlEl=i),sT(i,"fill",e,this),sT(i,"stroke",e,this);var n=this.transform,r=null!=n,a=i.getElementsByTagName("stroke")[0];if(a){var o=e.lineWidth;if(r&&!e.strokeNoScale){var s=n[0]*n[3]-n[1]*n[2];o*=FI(VI(s))}a.weight=o+"px"}var l=this.path||(this.path=new qm);this.__dirtyPath&&(l.beginPath(),this.buildPath(l,this.shape),l.toStatic(),this.__dirtyPath=!1),i.path=hT(l,this.transform),i.style.zIndex=eT(this.zlevel,this.z,this.z2),JI(t,i),null!=e.text?this.drawRectText(t,this.getBoundingRect()):this.removeRectText(t)},Fr.prototype.onRemove=function(t){tT(t,this._vmlEl),this.removeRectText(t)},Fr.prototype.onAdd=function(t){JI(t,this._vmlEl),this.appendRectText(t)};var uT=function(t){return"object"==typeof t&&t.tagName&&"IMG"===t.tagName.toUpperCase()};yn.prototype.brushVML=function(t){var e,i,n=this.style,r=n.image;if(uT(r)){var a=r.src;if(a===this._imageSrc)e=this._imageWidth,i=this._imageHeight;else{var o=r.runtimeStyle,s=o.width,l=o.height;o.width="auto",o.height="auto",e=r.width,i=r.height,o.width=s,o.height=l,this._imageSrc=a,this._imageWidth=e,this._imageHeight=i}r=a}else r===this._imageSrc&&(e=this._imageWidth,i=this._imageHeight);if(r){var h=n.x||0,u=n.y||0,c=n.width,d=n.height,f=n.sWidth,p=n.sHeight,g=n.sx||0,v=n.sy||0,m=f&&p,y=this._vmlEl;y||(y=EI.createElement("div"),$I(y),this._vmlEl=y);var x,_=y.style,w=!1,b=1,S=1;if(this.transform&&(x=this.transform,b=FI(x[0]*x[0]+x[1]*x[1]),S=FI(x[2]*x[2]+x[3]*x[3]),w=x[1]||x[2]),w){var M=[h,u],I=[h+c,u],T=[h,u+d],C=[h+c,u+d];ae(M,M,x),ae(I,I,x),ae(T,T,x),ae(C,C,x);var A=HI(M[0],I[0],T[0],C[0]),D=HI(M[1],I[1],T[1],C[1]),k=[];k.push("M11=",x[0]/b,ZI,"M12=",x[2]/S,ZI,"M21=",x[1]/b,ZI,"M22=",x[3]/S,ZI,"Dx=",NI(h*b+x[4]),ZI,"Dy=",NI(u*S+x[5])),_.padding="0 "+NI(A)+"px "+NI(D)+"px 0",_.filter=XI+".Matrix("+k.join("")+", SizingMethod=clip)"}else x&&(h=h*b+x[4],u=u*S+x[5]),_.filter="",_.left=NI(h)+"px",_.top=NI(u)+"px";var P=this._imageEl,L=this._cropEl;P||(P=EI.createElement("div"),this._imageEl=P);var O=P.style;if(m){if(e&&i)O.width=NI(b*e*c/f)+"px",O.height=NI(S*i*d/p)+"px";else{var z=new Image,E=this;z.onload=function(){z.onload=null,e=z.width,i=z.height,O.width=NI(b*e*c/f)+"px",O.height=NI(S*i*d/p)+"px",E._imageWidth=e,E._imageHeight=i,E._imageSrc=r},z.src=r}L||(L=EI.createElement("div"),L.style.overflow="hidden",this._cropEl=L);var R=L.style;R.width=NI((c+g*c/f)*b),R.height=NI((d+v*d/p)*S),R.filter=XI+".Matrix(Dx="+-g*c/f*b+",Dy="+-v*d/p*S+")",L.parentNode||y.appendChild(L),P.parentNode!=L&&L.appendChild(P)}else O.width=NI(b*c)+"px",O.height=NI(S*d)+"px",y.appendChild(P),L&&L.parentNode&&(y.removeChild(L),this._cropEl=null);var B="",N=n.opacity;1>N&&(B+=".Alpha(opacity="+NI(100*N)+") "),B+=XI+".AlphaImageLoader(src="+r+", SizingMethod=scale)",O.filter=B,y.style.zIndex=eT(this.zlevel,this.z,this.z2),JI(t,y),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},yn.prototype.onRemove=function(t){tT(t,this._vmlEl),this._vmlEl=null,this._cropEl=null,this._imageEl=null,this.removeRectText(t)},yn.prototype.onAdd=function(t){JI(t,this._vmlEl),this.appendRectText(t)};var cT,dT="normal",fT={},pT=0,gT=100,vT=document.createElement("div"),mT=function(t){var e=fT[t];if(!e){pT>gT&&(pT=0,fT={});var i,n=vT.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(r){}e={style:n.fontStyle||dT,variant:n.fontVariant||dT,weight:n.fontWeight||dT,size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},fT[t]=e,pT++}return e};Oi("measureText",function(t,e){var i=EI;cT||(cT=i.createElement("div"),cT.style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",EI.body.appendChild(cT));try{cT.style.font=e}catch(n){}return cT.innerHTML="",cT.appendChild(i.createTextNode(t)),{width:cT.offsetWidth}});for(var yT=new gi,xT=function(t,e,i,n){var r=this.style;this.__dirty&&Qi(r,!0);var a=r.text;if(null!=a&&(a+=""),a){if(r.rich){var o=qi(a,r);a=[];for(var s=0;s';
+
+ oriIcon += ' ';
+
+ var selectHtml = '' +
+ '
' +
+ '
' +
+ '' +
+ oriIcon +
+ ' ' +
+ ' ' +
+ '
' +
+ '
' +
+ '
' +
+ '123' +
+ '
';
+ $(elem).after(selectHtml);
+ return a;
+ },
+ /**
+ * 展开/折叠下拉框
+ */
+ toggleSelect: function () {
+ var item = '#' + TITLE_ID + ' .layui-iconpicker-item,#' + TITLE_ID + ' .layui-iconpicker-item .layui-edge';
+ a.event('click', item, function (e) {
+ var $icon = $('#' + ICON_BODY);
+ if ($icon.hasClass(selected)) {
+ $icon.removeClass(selected).addClass(unselect);
+ } else {
+ // 隐藏其他picker
+ $('.layui-form-select').removeClass(selected);
+ // 显示当前picker
+ $icon.addClass(selected).removeClass(unselect);
+ }
+ e.stopPropagation();
+ });
+ return a;
+ },
+ /**
+ * 绘制主体部分
+ */
+ createBody: function () {
+ // 获取数据
+ var searchHtml = '';
+
+ if (search) {
+ searchHtml = '
' +
+ ' ' +
+ ' ' +
+ '
';
+ }
+
+ // 组合dom
+ var bodyHtml = '
' +
+ searchHtml +
+ '
' +
+ '
';
+ $('#' + ICON_BODY).find('.layui-anim').eq(0).html(bodyHtml);
+ a.search().createList().check().page();
+
+ return a;
+ },
+ /**
+ * 绘制图标列表
+ * @param text 模糊查询关键字
+ * @returns {string}
+ */
+ createList: function (text) {
+ var d = data,
+ l = d.length,
+ pageHtml = '',
+ listHtml = $('
')//'
';
+
+ // 计算分页数据
+ var _limit = limit, // 每页显示数量
+ _pages = l % _limit === 0 ? l / _limit : parseInt(l / _limit + 1), // 总计多少页
+ _id = PAGE_ID;
+
+ // 图标列表
+ var icons = [];
+
+ for (var i = 0; i < l; i++) {
+ var obj = d[i];
+
+ // 判断是否模糊查询
+ if (text && obj.indexOf(text) === -1) {
+ continue;
+ }
+
+ // 是否自定义格子宽度
+ var style = '';
+ if (cellWidth !== null) {
+ style += ' style="width:' + cellWidth + '"';
+ }
+
+ // 每个图标dom
+ var icon = '
';
+
+ icon += ' ';
+
+ icon += '
';
+
+ icons.push(icon);
+ }
+
+ // 查询出图标后再分页
+ l = icons.length;
+ _pages = l % _limit === 0 ? l / _limit : parseInt(l / _limit + 1);
+ for (var i = 0; i < _pages; i++) {
+ // 按limit分块
+ var lm = $('
');
+
+ for (var j = i * _limit; j < (i + 1) * _limit && j < l; j++) {
+ lm.append(icons[j]);
+ }
+
+ listHtml.append(lm);
+ }
+
+ // 无数据
+ if (l === 0) {
+ listHtml.append('
无数据
');
+ }
+
+ // 判断是否分页
+ if (page) {
+ $('#' + PICKER_BODY).addClass('layui-iconpicker-body-page');
+ pageHtml = '
' +
+ '
' +
+ '1 /' +
+ '' + _pages + ' ' +
+ ' (' + l + ' )' +
+ '
' +
+ '
' +
+ ' ' +
+ ' ' +
+ '
' +
+ '
';
+ }
+
+
+ $('#' + ICON_BODY).find('.layui-anim').find('.' + LIST_BOX).html('').append(listHtml).append(pageHtml);
+ return a;
+ },
+ // 阻止Layui的一些默认事件
+ preventEvent: function () {
+ var item = '#' + ICON_BODY + ' .layui-anim';
+ a.event('click', item, function (e) {
+ e.stopPropagation();
+ });
+ return a;
+ },
+ // 分页
+ page: function () {
+ var icon = '#' + PAGE_ID + ' .layui-iconpicker-page-operate .layui-icon';
+
+ $(icon).unbind('click');
+ a.event('click', icon, function (e) {
+ var elem = e.currentTarget,
+ total = parseInt($('#' + PAGE_ID + '-pages').html()),
+ isPrev = $(elem).attr('prev') !== undefined,
+ // 按钮上标的页码
+ index = parseInt($(elem).attr('data-index')),
+ $cur = $('#' + PAGE_ID + '-current'),
+ // 点击时正在显示的页码
+ current = parseInt($cur.html());
+
+ // 分页数据
+ if (isPrev && current > 1) {
+ current = current - 1;
+ $(icon + '[prev]').attr('data-index', current);
+ } else if (!isPrev && current < total) {
+ current = current + 1;
+ $(icon + '[next]').attr('data-index', current);
+ }
+ $cur.html(current);
+
+ // 图标数据
+ $('#' + ICON_BODY + ' .layui-iconpicker-icon-limit').hide();
+ $('#layui-iconpicker-icon-limit-' + tmp + current).show();
+ e.stopPropagation();
+ });
+ return a;
+ },
+ /**
+ * 搜索
+ */
+ search: function () {
+ var item = '#' + PICKER_BODY + ' .layui-iconpicker-search .layui-input';
+ a.event('input propertychange', item, function (e) {
+ var elem = e.target,
+ t = $(elem).val();
+ a.createList(t);
+ });
+ return a;
+ },
+ /**
+ * 点击选中图标
+ */
+ check: function () {
+ var item = '#' + PICKER_BODY + ' .layui-iconpicker-icon-item';
+ a.event('click', item, function (e) {
+ var el = $(e.currentTarget).find('.fa'),
+ icon = '';
+
+ var clsArr = el.attr('class').split(/[\s\n]/),
+ cls = clsArr[1],
+ icon = cls;
+ $('#' + TITLE_ID).find('.layui-iconpicker-item .fa').html('').attr('class', clsArr.join(' '));
+
+
+ $('#' + ICON_BODY).removeClass(selected).addClass(unselect);
+ $(elem).val(icon).attr('value', icon);
+ // 回调
+ if (click) {
+ click({
+ icon: icon
+ });
+ }
+
+ });
+ return a;
+ },
+ // 监听原始input数值改变
+ inputListen: function () {
+ var el = $(elem);
+ a.event('change', elem, function () {
+ var value = el.val();
+ })
+ // el.change(function(){
+
+ // });
+ return a;
+ },
+ event: function (evt, el, fn) {
+ $(BODY).on(evt, el, fn);
+ }
+ };
+
+ var common = {
+ /**
+ * 加载样式表
+ */
+ loadCss: function () {
+ var css = '.layui-iconpicker {max-width: 280px;}.layui-iconpicker .layui-anim{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box;}.layui-iconpicker-item{border:1px solid #e6e6e6;width:90px;height:38px;border-radius:4px;cursor:pointer;position:relative;}.layui-iconpicker-icon{border-right:1px solid #e6e6e6;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:60px;height:100%;float:left;text-align:center;background:#fff;transition:all .3s;}.layui-iconpicker-icon i{line-height:38px;font-size:18px;}.layui-iconpicker-item > .layui-edge{left:70px;}.layui-iconpicker-item:hover{border-color:#D2D2D2!important;}.layui-iconpicker-item:hover .layui-iconpicker-icon{border-color:#D2D2D2!important;}.layui-iconpicker.layui-form-selected .layui-anim{display:block;}.layui-iconpicker-body{padding:6px;}.layui-iconpicker .layui-iconpicker-list{background-color:#fff;border:1px solid #ccc;border-radius:4px;}.layui-iconpicker .layui-iconpicker-icon-item{display:inline-block;width:21.1%;line-height:36px;text-align:center;cursor:pointer;vertical-align:top;height:36px;margin:4px;border:1px solid #ddd;border-radius:2px;transition:300ms;}.layui-iconpicker .layui-iconpicker-icon-item i.layui-icon{font-size:17px;}.layui-iconpicker .layui-iconpicker-icon-item:hover{background-color:#eee;border-color:#ccc;-webkit-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;-moz-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;box-shadow:0 0 2px #aaa,0 0 2px #fff inset;text-shadow:0 0 1px #fff;}.layui-iconpicker-search{position:relative;margin:0 0 6px 0;border:1px solid #e6e6e6;border-radius:2px;transition:300ms;}.layui-iconpicker-search:hover{border-color:#D2D2D2!important;}.layui-iconpicker-search .layui-input{cursor:text;display:inline-block;width:86%;border:none;padding-right:0;margin-top:1px;}.layui-iconpicker-search .layui-icon{position:absolute;top:11px;right:4%;}.layui-iconpicker-tips{text-align:center;padding:8px 0;cursor:not-allowed;}.layui-iconpicker-page{margin-top:6px;margin-bottom:-6px;font-size:12px;padding:0 2px;}.layui-iconpicker-page-count{display:inline-block;}.layui-iconpicker-page-operate{display:inline-block;float:right;cursor:default;}.layui-iconpicker-page-operate .layui-icon{font-size:12px;cursor:pointer;}.layui-iconpicker-body-page .layui-iconpicker-icon-limit{display:none;}.layui-iconpicker-body-page .layui-iconpicker-icon-limit:first-child{display:block;}';
+ var $style = $('head').find('style[iconpicker]');
+ if ($style.length === 0) {
+ $('head').append('');
+ }
+ },
+
+ /**
+ * 获取数据
+ */
+ getData: function (url) {
+ var iconlist = [];
+ $.ajax({
+ url: url,
+ type: 'get',
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ async: false,
+ success: function (ret) {
+ var exp = /fa-var-(.*):/ig;
+ var result;
+ while ((result = exp.exec(ret)) != null) {
+ iconlist.push('fa-' + result[1]);
+ }
+ },
+ error: function (xhr, textstatus, thrown) {
+ layer.msg('fa图标接口有误');
+ }
+ });
+ return iconlist;
+ }
+ };
+
+ a.init();
+ return new IconPicker();
+ };
+
+ /**
+ * 选中图标
+ * @param filter lay-filter
+ * @param iconName 图标名称,自动识别fontClass/unicode
+ */
+ IconPicker.prototype.checkIcon = function (filter, iconName) {
+ var el = $('*[lay-filter=' + filter + ']'),
+ p = el.next().find('.layui-iconpicker-item .fa'),
+ c = iconName;
+
+ if (c.indexOf('#xe') > 0) {
+ p.html(c);
+ } else {
+ p.html('').attr('class', 'fa ' + c);
+ }
+ el.attr('value', c).val(c);
+ };
+
+ var iconPicker = new IconPicker();
+ exports(_MOD, iconPicker);
+});
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/js/lay-module/layarea/layarea.js b/ss-admin/src/main/resources/static/js/lay-module/layarea/layarea.js
new file mode 100644
index 0000000..d62e384
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/layarea/layarea.js
@@ -0,0 +1,4040 @@
+layui.define(['layer', 'form', 'laytpl'], function (exports) {
+ "use strict";
+
+ let $ = layui.$
+ , form = layui.form
+ , layarea = {
+ _id: 0
+ , config: {}
+ , set: function (options) {
+ let that = this;
+ that.config = $.extend({}, that.config, options);
+ return that;
+ }
+ , on: function (events, callback) {
+ return layui.onevent.call(this, 'layarea', events, callback);
+ }
+ }
+ , thisArea = function () {
+ let that = this;
+ return {
+ layarea: function (files) {
+ that.layarea.call(that, files);
+ }
+ , config: that.config
+ }
+ }
+ , Class = function (options) {
+ let that = this;
+ that.config = $.extend({}, that.config, layarea.config, options);
+ that.render();
+ };
+
+ let areaList = {
+ province_list: {
+ 110000: '北京市',
+ 120000: '天津市',
+ 130000: '河北省',
+ 140000: '山西省',
+ 150000: '内蒙古自治区',
+ 210000: '辽宁省',
+ 220000: '吉林省',
+ 230000: '黑龙江省',
+ 310000: '上海市',
+ 320000: '江苏省',
+ 330000: '浙江省',
+ 340000: '安徽省',
+ 350000: '福建省',
+ 360000: '江西省',
+ 370000: '山东省',
+ 410000: '河南省',
+ 420000: '湖北省',
+ 430000: '湖南省',
+ 440000: '广东省',
+ 450000: '广西壮族自治区',
+ 460000: '海南省',
+ 500000: '重庆市',
+ 510000: '四川省',
+ 520000: '贵州省',
+ 530000: '云南省',
+ 540000: '西藏自治区',
+ 610000: '陕西省',
+ 620000: '甘肃省',
+ 630000: '青海省',
+ 640000: '宁夏回族自治区',
+ 650000: '新疆维吾尔自治区',
+ 710000: '台湾省',
+ 810000: '香港特别行政区',
+ 820000: '澳门特别行政区',
+ 900000: '海外'
+ },
+ city_list: {
+ 110100: '北京市',
+ 120100: '天津市',
+ 130100: '石家庄市',
+ 130200: '唐山市',
+ 130300: '秦皇岛市',
+ 130400: '邯郸市',
+ 130500: '邢台市',
+ 130600: '保定市',
+ 130700: '张家口市',
+ 130800: '承德市',
+ 130900: '沧州市',
+ 131000: '廊坊市',
+ 131100: '衡水市',
+ 139000: '省直辖县',
+ 140100: '太原市',
+ 140200: '大同市',
+ 140300: '阳泉市',
+ 140400: '长治市',
+ 140500: '晋城市',
+ 140600: '朔州市',
+ 140700: '晋中市',
+ 140800: '运城市',
+ 140900: '忻州市',
+ 141000: '临汾市',
+ 141100: '吕梁市',
+ 150100: '呼和浩特市',
+ 150200: '包头市',
+ 150300: '乌海市',
+ 150400: '赤峰市',
+ 150500: '通辽市',
+ 150600: '鄂尔多斯市',
+ 150700: '呼伦贝尔市',
+ 150800: '巴彦淖尔市',
+ 150900: '乌兰察布市',
+ 152200: '兴安盟',
+ 152500: '锡林郭勒盟',
+ 152900: '阿拉善盟',
+ 210100: '沈阳市',
+ 210200: '大连市',
+ 210300: '鞍山市',
+ 210400: '抚顺市',
+ 210500: '本溪市',
+ 210600: '丹东市',
+ 210700: '锦州市',
+ 210800: '营口市',
+ 210900: '阜新市',
+ 211000: '辽阳市',
+ 211100: '盘锦市',
+ 211200: '铁岭市',
+ 211300: '朝阳市',
+ 211400: '葫芦岛市',
+ 220100: '长春市',
+ 220200: '吉林市',
+ 220300: '四平市',
+ 220400: '辽源市',
+ 220500: '通化市',
+ 220600: '白山市',
+ 220700: '松原市',
+ 220800: '白城市',
+ 222400: '延边朝鲜族自治州',
+ 230100: '哈尔滨市',
+ 230200: '齐齐哈尔市',
+ 230300: '鸡西市',
+ 230400: '鹤岗市',
+ 230500: '双鸭山市',
+ 230600: '大庆市',
+ 230700: '伊春市',
+ 230800: '佳木斯市',
+ 230900: '七台河市',
+ 231000: '牡丹江市',
+ 231100: '黑河市',
+ 231200: '绥化市',
+ 232700: '大兴安岭地区',
+ 310100: '上海市',
+ 320100: '南京市',
+ 320200: '无锡市',
+ 320300: '徐州市',
+ 320400: '常州市',
+ 320500: '苏州市',
+ 320600: '南通市',
+ 320700: '连云港市',
+ 320800: '淮安市',
+ 320900: '盐城市',
+ 321000: '扬州市',
+ 321100: '镇江市',
+ 321200: '泰州市',
+ 321300: '宿迁市',
+ 330100: '杭州市',
+ 330200: '宁波市',
+ 330300: '温州市',
+ 330400: '嘉兴市',
+ 330500: '湖州市',
+ 330600: '绍兴市',
+ 330700: '金华市',
+ 330800: '衢州市',
+ 330900: '舟山市',
+ 331000: '台州市',
+ 331100: '丽水市',
+ 340100: '合肥市',
+ 340200: '芜湖市',
+ 340300: '蚌埠市',
+ 340400: '淮南市',
+ 340500: '马鞍山市',
+ 340600: '淮北市',
+ 340700: '铜陵市',
+ 340800: '安庆市',
+ 341000: '黄山市',
+ 341100: '滁州市',
+ 341200: '阜阳市',
+ 341300: '宿州市',
+ 341500: '六安市',
+ 341600: '亳州市',
+ 341700: '池州市',
+ 341800: '宣城市',
+ 350100: '福州市',
+ 350200: '厦门市',
+ 350300: '莆田市',
+ 350400: '三明市',
+ 350500: '泉州市',
+ 350600: '漳州市',
+ 350700: '南平市',
+ 350800: '龙岩市',
+ 350900: '宁德市',
+ 360100: '南昌市',
+ 360200: '景德镇市',
+ 360300: '萍乡市',
+ 360400: '九江市',
+ 360500: '新余市',
+ 360600: '鹰潭市',
+ 360700: '赣州市',
+ 360800: '吉安市',
+ 360900: '宜春市',
+ 361000: '抚州市',
+ 361100: '上饶市',
+ 370100: '济南市',
+ 370200: '青岛市',
+ 370300: '淄博市',
+ 370400: '枣庄市',
+ 370500: '东营市',
+ 370600: '烟台市',
+ 370700: '潍坊市',
+ 370800: '济宁市',
+ 370900: '泰安市',
+ 371000: '威海市',
+ 371100: '日照市',
+ 371200: '莱芜市',
+ 371300: '临沂市',
+ 371400: '德州市',
+ 371500: '聊城市',
+ 371600: '滨州市',
+ 371700: '菏泽市',
+ 410100: '郑州市',
+ 410200: '开封市',
+ 410300: '洛阳市',
+ 410400: '平顶山市',
+ 410500: '安阳市',
+ 410600: '鹤壁市',
+ 410700: '新乡市',
+ 410800: '焦作市',
+ 410900: '濮阳市',
+ 411000: '许昌市',
+ 411100: '漯河市',
+ 411200: '三门峡市',
+ 411300: '南阳市',
+ 411400: '商丘市',
+ 411500: '信阳市',
+ 411600: '周口市',
+ 411700: '驻马店市',
+ 419000: '省直辖县',
+ 420100: '武汉市',
+ 420200: '黄石市',
+ 420300: '十堰市',
+ 420500: '宜昌市',
+ 420600: '襄阳市',
+ 420700: '鄂州市',
+ 420800: '荆门市',
+ 420900: '孝感市',
+ 421000: '荆州市',
+ 421100: '黄冈市',
+ 421200: '咸宁市',
+ 421300: '随州市',
+ 422800: '恩施土家族苗族自治州',
+ 429000: '省直辖县',
+ 430100: '长沙市',
+ 430200: '株洲市',
+ 430300: '湘潭市',
+ 430400: '衡阳市',
+ 430500: '邵阳市',
+ 430600: '岳阳市',
+ 430700: '常德市',
+ 430800: '张家界市',
+ 430900: '益阳市',
+ 431000: '郴州市',
+ 431100: '永州市',
+ 431200: '怀化市',
+ 431300: '娄底市',
+ 433100: '湘西土家族苗族自治州',
+ 440100: '广州市',
+ 440200: '韶关市',
+ 440300: '深圳市',
+ 440400: '珠海市',
+ 440500: '汕头市',
+ 440600: '佛山市',
+ 440700: '江门市',
+ 440800: '湛江市',
+ 440900: '茂名市',
+ 441200: '肇庆市',
+ 441300: '惠州市',
+ 441400: '梅州市',
+ 441500: '汕尾市',
+ 441600: '河源市',
+ 441700: '阳江市',
+ 441800: '清远市',
+ 441900: '东莞市',
+ 442000: '中山市',
+ 445100: '潮州市',
+ 445200: '揭阳市',
+ 445300: '云浮市',
+ 450100: '南宁市',
+ 450200: '柳州市',
+ 450300: '桂林市',
+ 450400: '梧州市',
+ 450500: '北海市',
+ 450600: '防城港市',
+ 450700: '钦州市',
+ 450800: '贵港市',
+ 450900: '玉林市',
+ 451000: '百色市',
+ 451100: '贺州市',
+ 451200: '河池市',
+ 451300: '来宾市',
+ 451400: '崇左市',
+ 460100: '海口市',
+ 460200: '三亚市',
+ 460300: '三沙市',
+ 460400: '儋州市',
+ 469000: '省直辖县',
+ 500100: '重庆市',
+ 500200: '县',
+ 510100: '成都市',
+ 510300: '自贡市',
+ 510400: '攀枝花市',
+ 510500: '泸州市',
+ 510600: '德阳市',
+ 510700: '绵阳市',
+ 510800: '广元市',
+ 510900: '遂宁市',
+ 511000: '内江市',
+ 511100: '乐山市',
+ 511300: '南充市',
+ 511400: '眉山市',
+ 511500: '宜宾市',
+ 511600: '广安市',
+ 511700: '达州市',
+ 511800: '雅安市',
+ 511900: '巴中市',
+ 512000: '资阳市',
+ 513200: '阿坝藏族羌族自治州',
+ 513300: '甘孜藏族自治州',
+ 513400: '凉山彝族自治州',
+ 520100: '贵阳市',
+ 520200: '六盘水市',
+ 520300: '遵义市',
+ 520400: '安顺市',
+ 520500: '毕节市',
+ 520600: '铜仁市',
+ 522300: '黔西南布依族苗族自治州',
+ 522600: '黔东南苗族侗族自治州',
+ 522700: '黔南布依族苗族自治州',
+ 530100: '昆明市',
+ 530300: '曲靖市',
+ 530400: '玉溪市',
+ 530500: '保山市',
+ 530600: '昭通市',
+ 530700: '丽江市',
+ 530800: '普洱市',
+ 530900: '临沧市',
+ 532300: '楚雄彝族自治州',
+ 532500: '红河哈尼族彝族自治州',
+ 532600: '文山壮族苗族自治州',
+ 532800: '西双版纳傣族自治州',
+ 532900: '大理白族自治州',
+ 533100: '德宏傣族景颇族自治州',
+ 533300: '怒江傈僳族自治州',
+ 533400: '迪庆藏族自治州',
+ 540100: '拉萨市',
+ 540200: '日喀则市',
+ 540300: '昌都市',
+ 540400: '林芝市',
+ 540500: '山南市',
+ 540600: '那曲市',
+ 542500: '阿里地区',
+ 610100: '西安市',
+ 610200: '铜川市',
+ 610300: '宝鸡市',
+ 610400: '咸阳市',
+ 610500: '渭南市',
+ 610600: '延安市',
+ 610700: '汉中市',
+ 610800: '榆林市',
+ 610900: '安康市',
+ 611000: '商洛市',
+ 620100: '兰州市',
+ 620200: '嘉峪关市',
+ 620300: '金昌市',
+ 620400: '白银市',
+ 620500: '天水市',
+ 620600: '武威市',
+ 620700: '张掖市',
+ 620800: '平凉市',
+ 620900: '酒泉市',
+ 621000: '庆阳市',
+ 621100: '定西市',
+ 621200: '陇南市',
+ 622900: '临夏回族自治州',
+ 623000: '甘南藏族自治州',
+ 630100: '西宁市',
+ 630200: '海东市',
+ 632200: '海北藏族自治州',
+ 632300: '黄南藏族自治州',
+ 632500: '海南藏族自治州',
+ 632600: '果洛藏族自治州',
+ 632700: '玉树藏族自治州',
+ 632800: '海西蒙古族藏族自治州',
+ 640100: '银川市',
+ 640200: '石嘴山市',
+ 640300: '吴忠市',
+ 640400: '固原市',
+ 640500: '中卫市',
+ 650100: '乌鲁木齐市',
+ 650200: '克拉玛依市',
+ 650400: '吐鲁番市',
+ 650500: '哈密市',
+ 652300: '昌吉回族自治州',
+ 652700: '博尔塔拉蒙古自治州',
+ 652800: '巴音郭楞蒙古自治州',
+ 652900: '阿克苏地区',
+ 653000: '克孜勒苏柯尔克孜自治州',
+ 653100: '喀什地区',
+ 653200: '和田地区',
+ 654000: '伊犁哈萨克自治州',
+ 654200: '塔城地区',
+ 654300: '阿勒泰地区',
+ 659000: '自治区直辖县级行政区划',
+ 710100: '台北市',
+ 710200: '高雄市',
+ 710300: '台南市',
+ 710400: '台中市',
+ 710500: '金门县',
+ 710600: '南投县',
+ 710700: '基隆市',
+ 710800: '新竹市',
+ 710900: '嘉义市',
+ 711100: '新北市',
+ 711200: '宜兰县',
+ 711300: '新竹县',
+ 711400: '桃园县',
+ 711500: '苗栗县',
+ 711700: '彰化县',
+ 711900: '嘉义县',
+ 712100: '云林县',
+ 712400: '屏东县',
+ 712500: '台东县',
+ 712600: '花莲县',
+ 712700: '澎湖县',
+ 712800: '连江县',
+ 810100: '香港岛',
+ 810200: '九龙',
+ 810300: '新界',
+ 820100: '澳门半岛',
+ 820200: '离岛',
+ 912400: '加拿大',
+ 941000: '韩国',
+ 984000: '美国'
+ },
+ county_list: {
+ 110101: '东城区',
+ 110102: '西城区',
+ 110105: '朝阳区',
+ 110106: '丰台区',
+ 110107: '石景山区',
+ 110108: '海淀区',
+ 110109: '门头沟区',
+ 110111: '房山区',
+ 110112: '通州区',
+ 110113: '顺义区',
+ 110114: '昌平区',
+ 110115: '大兴区',
+ 110116: '怀柔区',
+ 110117: '平谷区',
+ 110118: '密云区',
+ 110119: '延庆区',
+ 120101: '和平区',
+ 120102: '河东区',
+ 120103: '河西区',
+ 120104: '南开区',
+ 120105: '河北区',
+ 120106: '红桥区',
+ 120110: '东丽区',
+ 120111: '西青区',
+ 120112: '津南区',
+ 120113: '北辰区',
+ 120114: '武清区',
+ 120115: '宝坻区',
+ 120116: '滨海新区',
+ 120117: '宁河区',
+ 120118: '静海区',
+ 120119: '蓟州区',
+ 130102: '长安区',
+ 130104: '桥西区',
+ 130105: '新华区',
+ 130107: '井陉矿区',
+ 130108: '裕华区',
+ 130109: '藁城区',
+ 130110: '鹿泉区',
+ 130111: '栾城区',
+ 130121: '井陉县',
+ 130123: '正定县',
+ 130125: '行唐县',
+ 130126: '灵寿县',
+ 130127: '高邑县',
+ 130128: '深泽县',
+ 130129: '赞皇县',
+ 130130: '无极县',
+ 130131: '平山县',
+ 130132: '元氏县',
+ 130133: '赵县',
+ 130181: '辛集市',
+ 130183: '晋州市',
+ 130184: '新乐市',
+ 130202: '路南区',
+ 130203: '路北区',
+ 130204: '古冶区',
+ 130205: '开平区',
+ 130207: '丰南区',
+ 130208: '丰润区',
+ 130209: '曹妃甸区',
+ 130223: '滦县',
+ 130224: '滦南县',
+ 130225: '乐亭县',
+ 130227: '迁西县',
+ 130229: '玉田县',
+ 130281: '遵化市',
+ 130283: '迁安市',
+ 130302: '海港区',
+ 130303: '山海关区',
+ 130304: '北戴河区',
+ 130306: '抚宁区',
+ 130321: '青龙满族自治县',
+ 130322: '昌黎县',
+ 130324: '卢龙县',
+ 130390: '经济技术开发区',
+ 130402: '邯山区',
+ 130403: '丛台区',
+ 130404: '复兴区',
+ 130406: '峰峰矿区',
+ 130407: '肥乡区',
+ 130408: '永年区',
+ 130423: '临漳县',
+ 130424: '成安县',
+ 130425: '大名县',
+ 130426: '涉县',
+ 130427: '磁县',
+ 130430: '邱县',
+ 130431: '鸡泽县',
+ 130432: '广平县',
+ 130433: '馆陶县',
+ 130434: '魏县',
+ 130435: '曲周县',
+ 130481: '武安市',
+ 130502: '桥东区',
+ 130503: '桥西区',
+ 130521: '邢台县',
+ 130522: '临城县',
+ 130523: '内丘县',
+ 130524: '柏乡县',
+ 130525: '隆尧县',
+ 130526: '任县',
+ 130527: '南和县',
+ 130528: '宁晋县',
+ 130529: '巨鹿县',
+ 130530: '新河县',
+ 130531: '广宗县',
+ 130532: '平乡县',
+ 130533: '威县',
+ 130534: '清河县',
+ 130535: '临西县',
+ 130581: '南宫市',
+ 130582: '沙河市',
+ 130602: '竞秀区',
+ 130606: '莲池区',
+ 130607: '满城区',
+ 130608: '清苑区',
+ 130609: '徐水区',
+ 130623: '涞水县',
+ 130624: '阜平县',
+ 130626: '定兴县',
+ 130627: '唐县',
+ 130628: '高阳县',
+ 130629: '容城县',
+ 130630: '涞源县',
+ 130631: '望都县',
+ 130632: '安新县',
+ 130633: '易县',
+ 130634: '曲阳县',
+ 130635: '蠡县',
+ 130636: '顺平县',
+ 130637: '博野县',
+ 130638: '雄县',
+ 130681: '涿州市',
+ 130682: '定州市',
+ 130683: '安国市',
+ 130684: '高碑店市',
+ 130702: '桥东区',
+ 130703: '桥西区',
+ 130705: '宣化区',
+ 130706: '下花园区',
+ 130708: '万全区',
+ 130709: '崇礼区',
+ 130722: '张北县',
+ 130723: '康保县',
+ 130724: '沽源县',
+ 130725: '尚义县',
+ 130726: '蔚县',
+ 130727: '阳原县',
+ 130728: '怀安县',
+ 130730: '怀来县',
+ 130731: '涿鹿县',
+ 130732: '赤城县',
+ 130802: '双桥区',
+ 130803: '双滦区',
+ 130804: '鹰手营子矿区',
+ 130821: '承德县',
+ 130822: '兴隆县',
+ 130824: '滦平县',
+ 130825: '隆化县',
+ 130826: '丰宁满族自治县',
+ 130827: '宽城满族自治县',
+ 130828: '围场满族蒙古族自治县',
+ 130881: '平泉市',
+ 130902: '新华区',
+ 130903: '运河区',
+ 130921: '沧县',
+ 130922: '青县',
+ 130923: '东光县',
+ 130924: '海兴县',
+ 130925: '盐山县',
+ 130926: '肃宁县',
+ 130927: '南皮县',
+ 130928: '吴桥县',
+ 130929: '献县',
+ 130930: '孟村回族自治县',
+ 130981: '泊头市',
+ 130982: '任丘市',
+ 130983: '黄骅市',
+ 130984: '河间市',
+ 131002: '安次区',
+ 131003: '广阳区',
+ 131022: '固安县',
+ 131023: '永清县',
+ 131024: '香河县',
+ 131025: '大城县',
+ 131026: '文安县',
+ 131028: '大厂回族自治县',
+ 131081: '霸州市',
+ 131082: '三河市',
+ 131090: '开发区',
+ 131102: '桃城区',
+ 131103: '冀州区',
+ 131121: '枣强县',
+ 131122: '武邑县',
+ 131123: '武强县',
+ 131124: '饶阳县',
+ 131125: '安平县',
+ 131126: '故城县',
+ 131127: '景县',
+ 131128: '阜城县',
+ 131182: '深州市',
+ 140105: '小店区',
+ 140106: '迎泽区',
+ 140107: '杏花岭区',
+ 140108: '尖草坪区',
+ 140109: '万柏林区',
+ 140110: '晋源区',
+ 140121: '清徐县',
+ 140122: '阳曲县',
+ 140123: '娄烦县',
+ 140181: '古交市',
+ 140202: '城区',
+ 140203: '矿区',
+ 140211: '南郊区',
+ 140212: '新荣区',
+ 140221: '阳高县',
+ 140222: '天镇县',
+ 140223: '广灵县',
+ 140224: '灵丘县',
+ 140225: '浑源县',
+ 140226: '左云县',
+ 140227: '大同县',
+ 140302: '城区',
+ 140303: '矿区',
+ 140311: '郊区',
+ 140321: '平定县',
+ 140322: '盂县',
+ 140402: '城区',
+ 140411: '郊区',
+ 140421: '长治县',
+ 140423: '襄垣县',
+ 140424: '屯留县',
+ 140425: '平顺县',
+ 140426: '黎城县',
+ 140427: '壶关县',
+ 140428: '长子县',
+ 140429: '武乡县',
+ 140430: '沁县',
+ 140431: '沁源县',
+ 140481: '潞城市',
+ 140502: '城区',
+ 140521: '沁水县',
+ 140522: '阳城县',
+ 140524: '陵川县',
+ 140525: '泽州县',
+ 140581: '高平市',
+ 140602: '朔城区',
+ 140603: '平鲁区',
+ 140621: '山阴县',
+ 140622: '应县',
+ 140623: '右玉县',
+ 140624: '怀仁县',
+ 140702: '榆次区',
+ 140721: '榆社县',
+ 140722: '左权县',
+ 140723: '和顺县',
+ 140724: '昔阳县',
+ 140725: '寿阳县',
+ 140726: '太谷县',
+ 140727: '祁县',
+ 140728: '平遥县',
+ 140729: '灵石县',
+ 140781: '介休市',
+ 140802: '盐湖区',
+ 140821: '临猗县',
+ 140822: '万荣县',
+ 140823: '闻喜县',
+ 140824: '稷山县',
+ 140825: '新绛县',
+ 140826: '绛县',
+ 140827: '垣曲县',
+ 140828: '夏县',
+ 140829: '平陆县',
+ 140830: '芮城县',
+ 140881: '永济市',
+ 140882: '河津市',
+ 140902: '忻府区',
+ 140921: '定襄县',
+ 140922: '五台县',
+ 140923: '代县',
+ 140924: '繁峙县',
+ 140925: '宁武县',
+ 140926: '静乐县',
+ 140927: '神池县',
+ 140928: '五寨县',
+ 140929: '岢岚县',
+ 140930: '河曲县',
+ 140931: '保德县',
+ 140932: '偏关县',
+ 140981: '原平市',
+ 141002: '尧都区',
+ 141021: '曲沃县',
+ 141022: '翼城县',
+ 141023: '襄汾县',
+ 141024: '洪洞县',
+ 141025: '古县',
+ 141026: '安泽县',
+ 141027: '浮山县',
+ 141028: '吉县',
+ 141029: '乡宁县',
+ 141030: '大宁县',
+ 141031: '隰县',
+ 141032: '永和县',
+ 141033: '蒲县',
+ 141034: '汾西县',
+ 141081: '侯马市',
+ 141082: '霍州市',
+ 141102: '离石区',
+ 141121: '文水县',
+ 141122: '交城县',
+ 141123: '兴县',
+ 141124: '临县',
+ 141125: '柳林县',
+ 141126: '石楼县',
+ 141127: '岚县',
+ 141128: '方山县',
+ 141129: '中阳县',
+ 141130: '交口县',
+ 141181: '孝义市',
+ 141182: '汾阳市',
+ 150102: '新城区',
+ 150103: '回民区',
+ 150104: '玉泉区',
+ 150105: '赛罕区',
+ 150121: '土默特左旗',
+ 150122: '托克托县',
+ 150123: '和林格尔县',
+ 150124: '清水河县',
+ 150125: '武川县',
+ 150202: '东河区',
+ 150203: '昆都仑区',
+ 150204: '青山区',
+ 150205: '石拐区',
+ 150206: '白云鄂博矿区',
+ 150207: '九原区',
+ 150221: '土默特右旗',
+ 150222: '固阳县',
+ 150223: '达尔罕茂明安联合旗',
+ 150302: '海勃湾区',
+ 150303: '海南区',
+ 150304: '乌达区',
+ 150402: '红山区',
+ 150403: '元宝山区',
+ 150404: '松山区',
+ 150421: '阿鲁科尔沁旗',
+ 150422: '巴林左旗',
+ 150423: '巴林右旗',
+ 150424: '林西县',
+ 150425: '克什克腾旗',
+ 150426: '翁牛特旗',
+ 150428: '喀喇沁旗',
+ 150429: '宁城县',
+ 150430: '敖汉旗',
+ 150502: '科尔沁区',
+ 150521: '科尔沁左翼中旗',
+ 150522: '科尔沁左翼后旗',
+ 150523: '开鲁县',
+ 150524: '库伦旗',
+ 150525: '奈曼旗',
+ 150526: '扎鲁特旗',
+ 150581: '霍林郭勒市',
+ 150602: '东胜区',
+ 150603: '康巴什区',
+ 150621: '达拉特旗',
+ 150622: '准格尔旗',
+ 150623: '鄂托克前旗',
+ 150624: '鄂托克旗',
+ 150625: '杭锦旗',
+ 150626: '乌审旗',
+ 150627: '伊金霍洛旗',
+ 150702: '海拉尔区',
+ 150703: '扎赉诺尔区',
+ 150721: '阿荣旗',
+ 150722: '莫力达瓦达斡尔族自治旗',
+ 150723: '鄂伦春自治旗',
+ 150724: '鄂温克族自治旗',
+ 150725: '陈巴尔虎旗',
+ 150726: '新巴尔虎左旗',
+ 150727: '新巴尔虎右旗',
+ 150781: '满洲里市',
+ 150782: '牙克石市',
+ 150783: '扎兰屯市',
+ 150784: '额尔古纳市',
+ 150785: '根河市',
+ 150802: '临河区',
+ 150821: '五原县',
+ 150822: '磴口县',
+ 150823: '乌拉特前旗',
+ 150824: '乌拉特中旗',
+ 150825: '乌拉特后旗',
+ 150826: '杭锦后旗',
+ 150902: '集宁区',
+ 150921: '卓资县',
+ 150922: '化德县',
+ 150923: '商都县',
+ 150924: '兴和县',
+ 150925: '凉城县',
+ 150926: '察哈尔右翼前旗',
+ 150927: '察哈尔右翼中旗',
+ 150928: '察哈尔右翼后旗',
+ 150929: '四子王旗',
+ 150981: '丰镇市',
+ 152201: '乌兰浩特市',
+ 152202: '阿尔山市',
+ 152221: '科尔沁右翼前旗',
+ 152222: '科尔沁右翼中旗',
+ 152223: '扎赉特旗',
+ 152224: '突泉县',
+ 152501: '二连浩特市',
+ 152502: '锡林浩特市',
+ 152522: '阿巴嘎旗',
+ 152523: '苏尼特左旗',
+ 152524: '苏尼特右旗',
+ 152525: '东乌珠穆沁旗',
+ 152526: '西乌珠穆沁旗',
+ 152527: '太仆寺旗',
+ 152528: '镶黄旗',
+ 152529: '正镶白旗',
+ 152530: '正蓝旗',
+ 152531: '多伦县',
+ 152921: '阿拉善左旗',
+ 152922: '阿拉善右旗',
+ 152923: '额济纳旗',
+ 210102: '和平区',
+ 210103: '沈河区',
+ 210104: '大东区',
+ 210105: '皇姑区',
+ 210106: '铁西区',
+ 210111: '苏家屯区',
+ 210112: '浑南区',
+ 210113: '沈北新区',
+ 210114: '于洪区',
+ 210115: '辽中区',
+ 210123: '康平县',
+ 210124: '法库县',
+ 210181: '新民市',
+ 210190: '经济技术开发区',
+ 210202: '中山区',
+ 210203: '西岗区',
+ 210204: '沙河口区',
+ 210211: '甘井子区',
+ 210212: '旅顺口区',
+ 210213: '金州区',
+ 210214: '普兰店区',
+ 210224: '长海县',
+ 210281: '瓦房店市',
+ 210283: '庄河市',
+ 210302: '铁东区',
+ 210303: '铁西区',
+ 210304: '立山区',
+ 210311: '千山区',
+ 210321: '台安县',
+ 210323: '岫岩满族自治县',
+ 210381: '海城市',
+ 210390: '高新区',
+ 210402: '新抚区',
+ 210403: '东洲区',
+ 210404: '望花区',
+ 210411: '顺城区',
+ 210421: '抚顺县',
+ 210422: '新宾满族自治县',
+ 210423: '清原满族自治县',
+ 210502: '平山区',
+ 210503: '溪湖区',
+ 210504: '明山区',
+ 210505: '南芬区',
+ 210521: '本溪满族自治县',
+ 210522: '桓仁满族自治县',
+ 210602: '元宝区',
+ 210603: '振兴区',
+ 210604: '振安区',
+ 210624: '宽甸满族自治县',
+ 210681: '东港市',
+ 210682: '凤城市',
+ 210702: '古塔区',
+ 210703: '凌河区',
+ 210711: '太和区',
+ 210726: '黑山县',
+ 210727: '义县',
+ 210781: '凌海市',
+ 210782: '北镇市',
+ 210793: '经济技术开发区',
+ 210802: '站前区',
+ 210803: '西市区',
+ 210804: '鲅鱼圈区',
+ 210811: '老边区',
+ 210881: '盖州市',
+ 210882: '大石桥市',
+ 210902: '海州区',
+ 210903: '新邱区',
+ 210904: '太平区',
+ 210905: '清河门区',
+ 210911: '细河区',
+ 210921: '阜新蒙古族自治县',
+ 210922: '彰武县',
+ 211002: '白塔区',
+ 211003: '文圣区',
+ 211004: '宏伟区',
+ 211005: '弓长岭区',
+ 211011: '太子河区',
+ 211021: '辽阳县',
+ 211081: '灯塔市',
+ 211102: '双台子区',
+ 211103: '兴隆台区',
+ 211104: '大洼区',
+ 211122: '盘山县',
+ 211202: '银州区',
+ 211204: '清河区',
+ 211221: '铁岭县',
+ 211223: '西丰县',
+ 211224: '昌图县',
+ 211281: '调兵山市',
+ 211282: '开原市',
+ 211302: '双塔区',
+ 211303: '龙城区',
+ 211321: '朝阳县',
+ 211322: '建平县',
+ 211324: '喀喇沁左翼蒙古族自治县',
+ 211381: '北票市',
+ 211382: '凌源市',
+ 211402: '连山区',
+ 211403: '龙港区',
+ 211404: '南票区',
+ 211421: '绥中县',
+ 211422: '建昌县',
+ 211481: '兴城市',
+ 215090: '工业园区',
+ 220102: '南关区',
+ 220103: '宽城区',
+ 220104: '朝阳区',
+ 220105: '二道区',
+ 220106: '绿园区',
+ 220112: '双阳区',
+ 220113: '九台区',
+ 220122: '农安县',
+ 220182: '榆树市',
+ 220183: '德惠市',
+ 220192: '经济技术开发区',
+ 220202: '昌邑区',
+ 220203: '龙潭区',
+ 220204: '船营区',
+ 220211: '丰满区',
+ 220221: '永吉县',
+ 220281: '蛟河市',
+ 220282: '桦甸市',
+ 220283: '舒兰市',
+ 220284: '磐石市',
+ 220302: '铁西区',
+ 220303: '铁东区',
+ 220322: '梨树县',
+ 220323: '伊通满族自治县',
+ 220381: '公主岭市',
+ 220382: '双辽市',
+ 220402: '龙山区',
+ 220403: '西安区',
+ 220421: '东丰县',
+ 220422: '东辽县',
+ 220502: '东昌区',
+ 220503: '二道江区',
+ 220521: '通化县',
+ 220523: '辉南县',
+ 220524: '柳河县',
+ 220581: '梅河口市',
+ 220582: '集安市',
+ 220602: '浑江区',
+ 220605: '江源区',
+ 220621: '抚松县',
+ 220622: '靖宇县',
+ 220623: '长白朝鲜族自治县',
+ 220681: '临江市',
+ 220702: '宁江区',
+ 220721: '前郭尔罗斯蒙古族自治县',
+ 220722: '长岭县',
+ 220723: '乾安县',
+ 220781: '扶余市',
+ 220802: '洮北区',
+ 220821: '镇赉县',
+ 220822: '通榆县',
+ 220881: '洮南市',
+ 220882: '大安市',
+ 221090: '工业园区',
+ 222401: '延吉市',
+ 222402: '图们市',
+ 222403: '敦化市',
+ 222404: '珲春市',
+ 222405: '龙井市',
+ 222406: '和龙市',
+ 222424: '汪清县',
+ 222426: '安图县',
+ 230102: '道里区',
+ 230103: '南岗区',
+ 230104: '道外区',
+ 230108: '平房区',
+ 230109: '松北区',
+ 230110: '香坊区',
+ 230111: '呼兰区',
+ 230112: '阿城区',
+ 230113: '双城区',
+ 230123: '依兰县',
+ 230124: '方正县',
+ 230125: '宾县',
+ 230126: '巴彦县',
+ 230127: '木兰县',
+ 230128: '通河县',
+ 230129: '延寿县',
+ 230183: '尚志市',
+ 230184: '五常市',
+ 230202: '龙沙区',
+ 230203: '建华区',
+ 230204: '铁锋区',
+ 230205: '昂昂溪区',
+ 230206: '富拉尔基区',
+ 230207: '碾子山区',
+ 230208: '梅里斯达斡尔族区',
+ 230221: '龙江县',
+ 230223: '依安县',
+ 230224: '泰来县',
+ 230225: '甘南县',
+ 230227: '富裕县',
+ 230229: '克山县',
+ 230230: '克东县',
+ 230231: '拜泉县',
+ 230281: '讷河市',
+ 230302: '鸡冠区',
+ 230303: '恒山区',
+ 230304: '滴道区',
+ 230305: '梨树区',
+ 230306: '城子河区',
+ 230307: '麻山区',
+ 230321: '鸡东县',
+ 230381: '虎林市',
+ 230382: '密山市',
+ 230402: '向阳区',
+ 230403: '工农区',
+ 230404: '南山区',
+ 230405: '兴安区',
+ 230406: '东山区',
+ 230407: '兴山区',
+ 230421: '萝北县',
+ 230422: '绥滨县',
+ 230502: '尖山区',
+ 230503: '岭东区',
+ 230505: '四方台区',
+ 230506: '宝山区',
+ 230521: '集贤县',
+ 230522: '友谊县',
+ 230523: '宝清县',
+ 230524: '饶河县',
+ 230602: '萨尔图区',
+ 230603: '龙凤区',
+ 230604: '让胡路区',
+ 230605: '红岗区',
+ 230606: '大同区',
+ 230621: '肇州县',
+ 230622: '肇源县',
+ 230623: '林甸县',
+ 230624: '杜尔伯特蒙古族自治县',
+ 230702: '伊春区',
+ 230703: '南岔区',
+ 230704: '友好区',
+ 230705: '西林区',
+ 230706: '翠峦区',
+ 230707: '新青区',
+ 230708: '美溪区',
+ 230709: '金山屯区',
+ 230710: '五营区',
+ 230711: '乌马河区',
+ 230712: '汤旺河区',
+ 230713: '带岭区',
+ 230714: '乌伊岭区',
+ 230715: '红星区',
+ 230716: '上甘岭区',
+ 230722: '嘉荫县',
+ 230781: '铁力市',
+ 230803: '向阳区',
+ 230804: '前进区',
+ 230805: '东风区',
+ 230811: '郊区',
+ 230822: '桦南县',
+ 230826: '桦川县',
+ 230828: '汤原县',
+ 230881: '同江市',
+ 230882: '富锦市',
+ 230883: '抚远市',
+ 230902: '新兴区',
+ 230903: '桃山区',
+ 230904: '茄子河区',
+ 230921: '勃利县',
+ 231002: '东安区',
+ 231003: '阳明区',
+ 231004: '爱民区',
+ 231005: '西安区',
+ 231025: '林口县',
+ 231081: '绥芬河市',
+ 231083: '海林市',
+ 231084: '宁安市',
+ 231085: '穆棱市',
+ 231086: '东宁市',
+ 231102: '爱辉区',
+ 231121: '嫩江县',
+ 231123: '逊克县',
+ 231124: '孙吴县',
+ 231181: '北安市',
+ 231182: '五大连池市',
+ 231202: '北林区',
+ 231221: '望奎县',
+ 231222: '兰西县',
+ 231223: '青冈县',
+ 231224: '庆安县',
+ 231225: '明水县',
+ 231226: '绥棱县',
+ 231281: '安达市',
+ 231282: '肇东市',
+ 231283: '海伦市',
+ 232721: '呼玛县',
+ 232722: '塔河县',
+ 232723: '漠河县',
+ 232790: '松岭区',
+ 232791: '呼中区',
+ 232792: '加格达奇区',
+ 232793: '新林区',
+ 310101: '黄浦区',
+ 310104: '徐汇区',
+ 310105: '长宁区',
+ 310106: '静安区',
+ 310107: '普陀区',
+ 310109: '虹口区',
+ 310110: '杨浦区',
+ 310112: '闵行区',
+ 310113: '宝山区',
+ 310114: '嘉定区',
+ 310115: '浦东新区',
+ 310116: '金山区',
+ 310117: '松江区',
+ 310118: '青浦区',
+ 310120: '奉贤区',
+ 310151: '崇明区',
+ 320102: '玄武区',
+ 320104: '秦淮区',
+ 320105: '建邺区',
+ 320106: '鼓楼区',
+ 320111: '浦口区',
+ 320113: '栖霞区',
+ 320114: '雨花台区',
+ 320115: '江宁区',
+ 320116: '六合区',
+ 320117: '溧水区',
+ 320118: '高淳区',
+ 320205: '锡山区',
+ 320206: '惠山区',
+ 320211: '滨湖区',
+ 320213: '梁溪区',
+ 320214: '新吴区',
+ 320281: '江阴市',
+ 320282: '宜兴市',
+ 320302: '鼓楼区',
+ 320303: '云龙区',
+ 320305: '贾汪区',
+ 320311: '泉山区',
+ 320312: '铜山区',
+ 320321: '丰县',
+ 320322: '沛县',
+ 320324: '睢宁县',
+ 320381: '新沂市',
+ 320382: '邳州市',
+ 320391: '工业园区',
+ 320402: '天宁区',
+ 320404: '钟楼区',
+ 320411: '新北区',
+ 320412: '武进区',
+ 320413: '金坛区',
+ 320481: '溧阳市',
+ 320505: '虎丘区',
+ 320506: '吴中区',
+ 320507: '相城区',
+ 320508: '姑苏区',
+ 320509: '吴江区',
+ 320581: '常熟市',
+ 320582: '张家港市',
+ 320583: '昆山市',
+ 320585: '太仓市',
+ 320590: '工业园区',
+ 320591: '高新区',
+ 320602: '崇川区',
+ 320611: '港闸区',
+ 320612: '通州区',
+ 320621: '海安县',
+ 320623: '如东县',
+ 320681: '启东市',
+ 320682: '如皋市',
+ 320684: '海门市',
+ 320691: '高新区',
+ 320703: '连云区',
+ 320706: '海州区',
+ 320707: '赣榆区',
+ 320722: '东海县',
+ 320723: '灌云县',
+ 320724: '灌南县',
+ 320803: '淮安区',
+ 320804: '淮阴区',
+ 320812: '清江浦区',
+ 320813: '洪泽区',
+ 320826: '涟水县',
+ 320830: '盱眙县',
+ 320831: '金湖县',
+ 320890: '经济开发区',
+ 320902: '亭湖区',
+ 320903: '盐都区',
+ 320904: '大丰区',
+ 320921: '响水县',
+ 320922: '滨海县',
+ 320923: '阜宁县',
+ 320924: '射阳县',
+ 320925: '建湖县',
+ 320981: '东台市',
+ 321002: '广陵区',
+ 321003: '邗江区',
+ 321012: '江都区',
+ 321023: '宝应县',
+ 321081: '仪征市',
+ 321084: '高邮市',
+ 321090: '经济开发区',
+ 321102: '京口区',
+ 321111: '润州区',
+ 321112: '丹徒区',
+ 321181: '丹阳市',
+ 321182: '扬中市',
+ 321183: '句容市',
+ 321202: '海陵区',
+ 321203: '高港区',
+ 321204: '姜堰区',
+ 321281: '兴化市',
+ 321282: '靖江市',
+ 321283: '泰兴市',
+ 321302: '宿城区',
+ 321311: '宿豫区',
+ 321322: '沭阳县',
+ 321323: '泗阳县',
+ 321324: '泗洪县',
+ 330102: '上城区',
+ 330103: '下城区',
+ 330104: '江干区',
+ 330105: '拱墅区',
+ 330106: '西湖区',
+ 330108: '滨江区',
+ 330109: '萧山区',
+ 330110: '余杭区',
+ 330111: '富阳区',
+ 330112: '临安区',
+ 330122: '桐庐县',
+ 330127: '淳安县',
+ 330182: '建德市',
+ 330203: '海曙区',
+ 330205: '江北区',
+ 330206: '北仑区',
+ 330211: '镇海区',
+ 330212: '鄞州区',
+ 330213: '奉化区',
+ 330225: '象山县',
+ 330226: '宁海县',
+ 330281: '余姚市',
+ 330282: '慈溪市',
+ 330302: '鹿城区',
+ 330303: '龙湾区',
+ 330304: '瓯海区',
+ 330305: '洞头区',
+ 330324: '永嘉县',
+ 330326: '平阳县',
+ 330327: '苍南县',
+ 330328: '文成县',
+ 330329: '泰顺县',
+ 330381: '瑞安市',
+ 330382: '乐清市',
+ 330402: '南湖区',
+ 330411: '秀洲区',
+ 330421: '嘉善县',
+ 330424: '海盐县',
+ 330481: '海宁市',
+ 330482: '平湖市',
+ 330483: '桐乡市',
+ 330502: '吴兴区',
+ 330503: '南浔区',
+ 330521: '德清县',
+ 330522: '长兴县',
+ 330523: '安吉县',
+ 330602: '越城区',
+ 330603: '柯桥区',
+ 330604: '上虞区',
+ 330624: '新昌县',
+ 330681: '诸暨市',
+ 330683: '嵊州市',
+ 330702: '婺城区',
+ 330703: '金东区',
+ 330723: '武义县',
+ 330726: '浦江县',
+ 330727: '磐安县',
+ 330781: '兰溪市',
+ 330782: '义乌市',
+ 330783: '东阳市',
+ 330784: '永康市',
+ 330802: '柯城区',
+ 330803: '衢江区',
+ 330822: '常山县',
+ 330824: '开化县',
+ 330825: '龙游县',
+ 330881: '江山市',
+ 330902: '定海区',
+ 330903: '普陀区',
+ 330921: '岱山县',
+ 330922: '嵊泗县',
+ 331002: '椒江区',
+ 331003: '黄岩区',
+ 331004: '路桥区',
+ 331022: '三门县',
+ 331023: '天台县',
+ 331024: '仙居县',
+ 331081: '温岭市',
+ 331082: '临海市',
+ 331083: '玉环市',
+ 331102: '莲都区',
+ 331121: '青田县',
+ 331122: '缙云县',
+ 331123: '遂昌县',
+ 331124: '松阳县',
+ 331125: '云和县',
+ 331126: '庆元县',
+ 331127: '景宁畲族自治县',
+ 331181: '龙泉市',
+ 340102: '瑶海区',
+ 340103: '庐阳区',
+ 340104: '蜀山区',
+ 340111: '包河区',
+ 340121: '长丰县',
+ 340122: '肥东县',
+ 340123: '肥西县',
+ 340124: '庐江县',
+ 340181: '巢湖市',
+ 340190: '高新技术开发区',
+ 340191: '经济技术开发区',
+ 340202: '镜湖区',
+ 340203: '弋江区',
+ 340207: '鸠江区',
+ 340208: '三山区',
+ 340221: '芜湖县',
+ 340222: '繁昌县',
+ 340223: '南陵县',
+ 340225: '无为县',
+ 340302: '龙子湖区',
+ 340303: '蚌山区',
+ 340304: '禹会区',
+ 340311: '淮上区',
+ 340321: '怀远县',
+ 340322: '五河县',
+ 340323: '固镇县',
+ 340402: '大通区',
+ 340403: '田家庵区',
+ 340404: '谢家集区',
+ 340405: '八公山区',
+ 340406: '潘集区',
+ 340421: '凤台县',
+ 340422: '寿县',
+ 340503: '花山区',
+ 340504: '雨山区',
+ 340506: '博望区',
+ 340521: '当涂县',
+ 340522: '含山县',
+ 340523: '和县',
+ 340602: '杜集区',
+ 340603: '相山区',
+ 340604: '烈山区',
+ 340621: '濉溪县',
+ 340705: '铜官区',
+ 340706: '义安区',
+ 340711: '郊区',
+ 340722: '枞阳县',
+ 340802: '迎江区',
+ 340803: '大观区',
+ 340811: '宜秀区',
+ 340822: '怀宁县',
+ 340824: '潜山县',
+ 340825: '太湖县',
+ 340826: '宿松县',
+ 340827: '望江县',
+ 340828: '岳西县',
+ 340881: '桐城市',
+ 341002: '屯溪区',
+ 341003: '黄山区',
+ 341004: '徽州区',
+ 341021: '歙县',
+ 341022: '休宁县',
+ 341023: '黟县',
+ 341024: '祁门县',
+ 341102: '琅琊区',
+ 341103: '南谯区',
+ 341122: '来安县',
+ 341124: '全椒县',
+ 341125: '定远县',
+ 341126: '凤阳县',
+ 341181: '天长市',
+ 341182: '明光市',
+ 341202: '颍州区',
+ 341203: '颍东区',
+ 341204: '颍泉区',
+ 341221: '临泉县',
+ 341222: '太和县',
+ 341225: '阜南县',
+ 341226: '颍上县',
+ 341282: '界首市',
+ 341302: '埇桥区',
+ 341321: '砀山县',
+ 341322: '萧县',
+ 341323: '灵璧县',
+ 341324: '泗县',
+ 341390: '经济开发区',
+ 341502: '金安区',
+ 341503: '裕安区',
+ 341504: '叶集区',
+ 341522: '霍邱县',
+ 341523: '舒城县',
+ 341524: '金寨县',
+ 341525: '霍山县',
+ 341602: '谯城区',
+ 341621: '涡阳县',
+ 341622: '蒙城县',
+ 341623: '利辛县',
+ 341702: '贵池区',
+ 341721: '东至县',
+ 341722: '石台县',
+ 341723: '青阳县',
+ 341802: '宣州区',
+ 341821: '郎溪县',
+ 341822: '广德县',
+ 341823: '泾县',
+ 341824: '绩溪县',
+ 341825: '旌德县',
+ 341881: '宁国市',
+ 350102: '鼓楼区',
+ 350103: '台江区',
+ 350104: '仓山区',
+ 350105: '马尾区',
+ 350111: '晋安区',
+ 350112: '长乐区',
+ 350121: '闽侯县',
+ 350122: '连江县',
+ 350123: '罗源县',
+ 350124: '闽清县',
+ 350125: '永泰县',
+ 350128: '平潭县',
+ 350181: '福清市',
+ 350203: '思明区',
+ 350205: '海沧区',
+ 350206: '湖里区',
+ 350211: '集美区',
+ 350212: '同安区',
+ 350213: '翔安区',
+ 350302: '城厢区',
+ 350303: '涵江区',
+ 350304: '荔城区',
+ 350305: '秀屿区',
+ 350322: '仙游县',
+ 350402: '梅列区',
+ 350403: '三元区',
+ 350421: '明溪县',
+ 350423: '清流县',
+ 350424: '宁化县',
+ 350425: '大田县',
+ 350426: '尤溪县',
+ 350427: '沙县',
+ 350428: '将乐县',
+ 350429: '泰宁县',
+ 350430: '建宁县',
+ 350481: '永安市',
+ 350502: '鲤城区',
+ 350503: '丰泽区',
+ 350504: '洛江区',
+ 350505: '泉港区',
+ 350521: '惠安县',
+ 350524: '安溪县',
+ 350525: '永春县',
+ 350526: '德化县',
+ 350527: '金门县',
+ 350581: '石狮市',
+ 350582: '晋江市',
+ 350583: '南安市',
+ 350602: '芗城区',
+ 350603: '龙文区',
+ 350622: '云霄县',
+ 350623: '漳浦县',
+ 350624: '诏安县',
+ 350625: '长泰县',
+ 350626: '东山县',
+ 350627: '南靖县',
+ 350628: '平和县',
+ 350629: '华安县',
+ 350681: '龙海市',
+ 350702: '延平区',
+ 350703: '建阳区',
+ 350721: '顺昌县',
+ 350722: '浦城县',
+ 350723: '光泽县',
+ 350724: '松溪县',
+ 350725: '政和县',
+ 350781: '邵武市',
+ 350782: '武夷山市',
+ 350783: '建瓯市',
+ 350802: '新罗区',
+ 350803: '永定区',
+ 350821: '长汀县',
+ 350823: '上杭县',
+ 350824: '武平县',
+ 350825: '连城县',
+ 350881: '漳平市',
+ 350902: '蕉城区',
+ 350921: '霞浦县',
+ 350922: '古田县',
+ 350923: '屏南县',
+ 350924: '寿宁县',
+ 350925: '周宁县',
+ 350926: '柘荣县',
+ 350981: '福安市',
+ 350982: '福鼎市',
+ 360102: '东湖区',
+ 360103: '西湖区',
+ 360104: '青云谱区',
+ 360105: '湾里区',
+ 360111: '青山湖区',
+ 360112: '新建区',
+ 360121: '南昌县',
+ 360123: '安义县',
+ 360124: '进贤县',
+ 360190: '经济技术开发区',
+ 360192: '高新区',
+ 360202: '昌江区',
+ 360203: '珠山区',
+ 360222: '浮梁县',
+ 360281: '乐平市',
+ 360302: '安源区',
+ 360313: '湘东区',
+ 360321: '莲花县',
+ 360322: '上栗县',
+ 360323: '芦溪县',
+ 360402: '濂溪区',
+ 360403: '浔阳区',
+ 360404: '柴桑区',
+ 360423: '武宁县',
+ 360424: '修水县',
+ 360425: '永修县',
+ 360426: '德安县',
+ 360428: '都昌县',
+ 360429: '湖口县',
+ 360430: '彭泽县',
+ 360481: '瑞昌市',
+ 360482: '共青城市',
+ 360483: '庐山市',
+ 360490: '经济技术开发区',
+ 360502: '渝水区',
+ 360521: '分宜县',
+ 360602: '月湖区',
+ 360622: '余江县',
+ 360681: '贵溪市',
+ 360702: '章贡区',
+ 360703: '南康区',
+ 360704: '赣县区',
+ 360722: '信丰县',
+ 360723: '大余县',
+ 360724: '上犹县',
+ 360725: '崇义县',
+ 360726: '安远县',
+ 360727: '龙南县',
+ 360728: '定南县',
+ 360729: '全南县',
+ 360730: '宁都县',
+ 360731: '于都县',
+ 360732: '兴国县',
+ 360733: '会昌县',
+ 360734: '寻乌县',
+ 360735: '石城县',
+ 360781: '瑞金市',
+ 360802: '吉州区',
+ 360803: '青原区',
+ 360821: '吉安县',
+ 360822: '吉水县',
+ 360823: '峡江县',
+ 360824: '新干县',
+ 360825: '永丰县',
+ 360826: '泰和县',
+ 360827: '遂川县',
+ 360828: '万安县',
+ 360829: '安福县',
+ 360830: '永新县',
+ 360881: '井冈山市',
+ 360902: '袁州区',
+ 360921: '奉新县',
+ 360922: '万载县',
+ 360923: '上高县',
+ 360924: '宜丰县',
+ 360925: '靖安县',
+ 360926: '铜鼓县',
+ 360981: '丰城市',
+ 360982: '樟树市',
+ 360983: '高安市',
+ 361002: '临川区',
+ 361003: '东乡区',
+ 361021: '南城县',
+ 361022: '黎川县',
+ 361023: '南丰县',
+ 361024: '崇仁县',
+ 361025: '乐安县',
+ 361026: '宜黄县',
+ 361027: '金溪县',
+ 361028: '资溪县',
+ 361030: '广昌县',
+ 361102: '信州区',
+ 361103: '广丰区',
+ 361121: '上饶县',
+ 361123: '玉山县',
+ 361124: '铅山县',
+ 361125: '横峰县',
+ 361126: '弋阳县',
+ 361127: '余干县',
+ 361128: '鄱阳县',
+ 361129: '万年县',
+ 361130: '婺源县',
+ 361181: '德兴市',
+ 370102: '历下区',
+ 370103: '市中区',
+ 370104: '槐荫区',
+ 370105: '天桥区',
+ 370112: '历城区',
+ 370113: '长清区',
+ 370114: '章丘区',
+ 370124: '平阴县',
+ 370125: '济阳县',
+ 370126: '商河县',
+ 370190: '高新区',
+ 370202: '市南区',
+ 370203: '市北区',
+ 370211: '黄岛区',
+ 370212: '崂山区',
+ 370213: '李沧区',
+ 370214: '城阳区',
+ 370215: '即墨区',
+ 370281: '胶州市',
+ 370283: '平度市',
+ 370285: '莱西市',
+ 370290: '开发区',
+ 370302: '淄川区',
+ 370303: '张店区',
+ 370304: '博山区',
+ 370305: '临淄区',
+ 370306: '周村区',
+ 370321: '桓台县',
+ 370322: '高青县',
+ 370323: '沂源县',
+ 370402: '市中区',
+ 370403: '薛城区',
+ 370404: '峄城区',
+ 370405: '台儿庄区',
+ 370406: '山亭区',
+ 370481: '滕州市',
+ 370502: '东营区',
+ 370503: '河口区',
+ 370505: '垦利区',
+ 370522: '利津县',
+ 370523: '广饶县',
+ 370602: '芝罘区',
+ 370611: '福山区',
+ 370612: '牟平区',
+ 370613: '莱山区',
+ 370634: '长岛县',
+ 370681: '龙口市',
+ 370682: '莱阳市',
+ 370683: '莱州市',
+ 370684: '蓬莱市',
+ 370685: '招远市',
+ 370686: '栖霞市',
+ 370687: '海阳市',
+ 370690: '开发区',
+ 370702: '潍城区',
+ 370703: '寒亭区',
+ 370704: '坊子区',
+ 370705: '奎文区',
+ 370724: '临朐县',
+ 370725: '昌乐县',
+ 370781: '青州市',
+ 370782: '诸城市',
+ 370783: '寿光市',
+ 370784: '安丘市',
+ 370785: '高密市',
+ 370786: '昌邑市',
+ 370790: '开发区',
+ 370791: '高新区',
+ 370811: '任城区',
+ 370812: '兖州区',
+ 370826: '微山县',
+ 370827: '鱼台县',
+ 370828: '金乡县',
+ 370829: '嘉祥县',
+ 370830: '汶上县',
+ 370831: '泗水县',
+ 370832: '梁山县',
+ 370881: '曲阜市',
+ 370883: '邹城市',
+ 370890: '高新区',
+ 370902: '泰山区',
+ 370911: '岱岳区',
+ 370921: '宁阳县',
+ 370923: '东平县',
+ 370982: '新泰市',
+ 370983: '肥城市',
+ 371002: '环翠区',
+ 371003: '文登区',
+ 371082: '荣成市',
+ 371083: '乳山市',
+ 371091: '经济技术开发区',
+ 371102: '东港区',
+ 371103: '岚山区',
+ 371121: '五莲县',
+ 371122: '莒县',
+ 371202: '莱城区',
+ 371203: '钢城区',
+ 371302: '兰山区',
+ 371311: '罗庄区',
+ 371312: '河东区',
+ 371321: '沂南县',
+ 371322: '郯城县',
+ 371323: '沂水县',
+ 371324: '兰陵县',
+ 371325: '费县',
+ 371326: '平邑县',
+ 371327: '莒南县',
+ 371328: '蒙阴县',
+ 371329: '临沭县',
+ 371402: '德城区',
+ 371403: '陵城区',
+ 371422: '宁津县',
+ 371423: '庆云县',
+ 371424: '临邑县',
+ 371425: '齐河县',
+ 371426: '平原县',
+ 371427: '夏津县',
+ 371428: '武城县',
+ 371481: '乐陵市',
+ 371482: '禹城市',
+ 371502: '东昌府区',
+ 371521: '阳谷县',
+ 371522: '莘县',
+ 371523: '茌平县',
+ 371524: '东阿县',
+ 371525: '冠县',
+ 371526: '高唐县',
+ 371581: '临清市',
+ 371602: '滨城区',
+ 371603: '沾化区',
+ 371621: '惠民县',
+ 371622: '阳信县',
+ 371623: '无棣县',
+ 371625: '博兴县',
+ 371626: '邹平县',
+ 371702: '牡丹区',
+ 371703: '定陶区',
+ 371721: '曹县',
+ 371722: '单县',
+ 371723: '成武县',
+ 371724: '巨野县',
+ 371725: '郓城县',
+ 371726: '鄄城县',
+ 371728: '东明县',
+ 410102: '中原区',
+ 410103: '二七区',
+ 410104: '管城回族区',
+ 410105: '金水区',
+ 410106: '上街区',
+ 410108: '惠济区',
+ 410122: '中牟县',
+ 410181: '巩义市',
+ 410182: '荥阳市',
+ 410183: '新密市',
+ 410184: '新郑市',
+ 410185: '登封市',
+ 410190: '高新技术开发区',
+ 410191: '经济技术开发区',
+ 410202: '龙亭区',
+ 410203: '顺河回族区',
+ 410204: '鼓楼区',
+ 410205: '禹王台区',
+ 410212: '祥符区',
+ 410221: '杞县',
+ 410222: '通许县',
+ 410223: '尉氏县',
+ 410225: '兰考县',
+ 410302: '老城区',
+ 410303: '西工区',
+ 410304: '瀍河回族区',
+ 410305: '涧西区',
+ 410306: '吉利区',
+ 410311: '洛龙区',
+ 410322: '孟津县',
+ 410323: '新安县',
+ 410324: '栾川县',
+ 410325: '嵩县',
+ 410326: '汝阳县',
+ 410327: '宜阳县',
+ 410328: '洛宁县',
+ 410329: '伊川县',
+ 410381: '偃师市',
+ 410402: '新华区',
+ 410403: '卫东区',
+ 410404: '石龙区',
+ 410411: '湛河区',
+ 410421: '宝丰县',
+ 410422: '叶县',
+ 410423: '鲁山县',
+ 410425: '郏县',
+ 410481: '舞钢市',
+ 410482: '汝州市',
+ 410502: '文峰区',
+ 410503: '北关区',
+ 410505: '殷都区',
+ 410506: '龙安区',
+ 410522: '安阳县',
+ 410523: '汤阴县',
+ 410526: '滑县',
+ 410527: '内黄县',
+ 410581: '林州市',
+ 410590: '开发区',
+ 410602: '鹤山区',
+ 410603: '山城区',
+ 410611: '淇滨区',
+ 410621: '浚县',
+ 410622: '淇县',
+ 410702: '红旗区',
+ 410703: '卫滨区',
+ 410704: '凤泉区',
+ 410711: '牧野区',
+ 410721: '新乡县',
+ 410724: '获嘉县',
+ 410725: '原阳县',
+ 410726: '延津县',
+ 410727: '封丘县',
+ 410728: '长垣县',
+ 410781: '卫辉市',
+ 410782: '辉县市',
+ 410802: '解放区',
+ 410803: '中站区',
+ 410804: '马村区',
+ 410811: '山阳区',
+ 410821: '修武县',
+ 410822: '博爱县',
+ 410823: '武陟县',
+ 410825: '温县',
+ 410882: '沁阳市',
+ 410883: '孟州市',
+ 410902: '华龙区',
+ 410922: '清丰县',
+ 410923: '南乐县',
+ 410926: '范县',
+ 410927: '台前县',
+ 410928: '濮阳县',
+ 411002: '魏都区',
+ 411003: '建安区',
+ 411024: '鄢陵县',
+ 411025: '襄城县',
+ 411081: '禹州市',
+ 411082: '长葛市',
+ 411102: '源汇区',
+ 411103: '郾城区',
+ 411104: '召陵区',
+ 411121: '舞阳县',
+ 411122: '临颍县',
+ 411202: '湖滨区',
+ 411203: '陕州区',
+ 411221: '渑池县',
+ 411224: '卢氏县',
+ 411281: '义马市',
+ 411282: '灵宝市',
+ 411302: '宛城区',
+ 411303: '卧龙区',
+ 411321: '南召县',
+ 411322: '方城县',
+ 411323: '西峡县',
+ 411324: '镇平县',
+ 411325: '内乡县',
+ 411326: '淅川县',
+ 411327: '社旗县',
+ 411328: '唐河县',
+ 411329: '新野县',
+ 411330: '桐柏县',
+ 411381: '邓州市',
+ 411402: '梁园区',
+ 411403: '睢阳区',
+ 411421: '民权县',
+ 411422: '睢县',
+ 411423: '宁陵县',
+ 411424: '柘城县',
+ 411425: '虞城县',
+ 411426: '夏邑县',
+ 411481: '永城市',
+ 411502: '浉河区',
+ 411503: '平桥区',
+ 411521: '罗山县',
+ 411522: '光山县',
+ 411523: '新县',
+ 411524: '商城县',
+ 411525: '固始县',
+ 411526: '潢川县',
+ 411527: '淮滨县',
+ 411528: '息县',
+ 411602: '川汇区',
+ 411621: '扶沟县',
+ 411622: '西华县',
+ 411623: '商水县',
+ 411624: '沈丘县',
+ 411625: '郸城县',
+ 411626: '淮阳县',
+ 411627: '太康县',
+ 411628: '鹿邑县',
+ 411681: '项城市',
+ 411690: '经济开发区',
+ 411702: '驿城区',
+ 411721: '西平县',
+ 411722: '上蔡县',
+ 411723: '平舆县',
+ 411724: '正阳县',
+ 411725: '确山县',
+ 411726: '泌阳县',
+ 411727: '汝南县',
+ 411728: '遂平县',
+ 411729: '新蔡县',
+ 419001: '济源市',
+ 420102: '江岸区',
+ 420103: '江汉区',
+ 420104: '硚口区',
+ 420105: '汉阳区',
+ 420106: '武昌区',
+ 420107: '青山区',
+ 420111: '洪山区',
+ 420112: '东西湖区',
+ 420113: '汉南区',
+ 420114: '蔡甸区',
+ 420115: '江夏区',
+ 420116: '黄陂区',
+ 420117: '新洲区',
+ 420202: '黄石港区',
+ 420203: '西塞山区',
+ 420204: '下陆区',
+ 420205: '铁山区',
+ 420222: '阳新县',
+ 420281: '大冶市',
+ 420302: '茅箭区',
+ 420303: '张湾区',
+ 420304: '郧阳区',
+ 420322: '郧西县',
+ 420323: '竹山县',
+ 420324: '竹溪县',
+ 420325: '房县',
+ 420381: '丹江口市',
+ 420502: '西陵区',
+ 420503: '伍家岗区',
+ 420504: '点军区',
+ 420505: '猇亭区',
+ 420506: '夷陵区',
+ 420525: '远安县',
+ 420526: '兴山县',
+ 420527: '秭归县',
+ 420528: '长阳土家族自治县',
+ 420529: '五峰土家族自治县',
+ 420581: '宜都市',
+ 420582: '当阳市',
+ 420583: '枝江市',
+ 420590: '经济开发区',
+ 420602: '襄城区',
+ 420606: '樊城区',
+ 420607: '襄州区',
+ 420624: '南漳县',
+ 420625: '谷城县',
+ 420626: '保康县',
+ 420682: '老河口市',
+ 420683: '枣阳市',
+ 420684: '宜城市',
+ 420702: '梁子湖区',
+ 420703: '华容区',
+ 420704: '鄂城区',
+ 420802: '东宝区',
+ 420804: '掇刀区',
+ 420821: '京山县',
+ 420822: '沙洋县',
+ 420881: '钟祥市',
+ 420902: '孝南区',
+ 420921: '孝昌县',
+ 420922: '大悟县',
+ 420923: '云梦县',
+ 420981: '应城市',
+ 420982: '安陆市',
+ 420984: '汉川市',
+ 421002: '沙市区',
+ 421003: '荆州区',
+ 421022: '公安县',
+ 421023: '监利县',
+ 421024: '江陵县',
+ 421081: '石首市',
+ 421083: '洪湖市',
+ 421087: '松滋市',
+ 421102: '黄州区',
+ 421121: '团风县',
+ 421122: '红安县',
+ 421123: '罗田县',
+ 421124: '英山县',
+ 421125: '浠水县',
+ 421126: '蕲春县',
+ 421127: '黄梅县',
+ 421181: '麻城市',
+ 421182: '武穴市',
+ 421202: '咸安区',
+ 421221: '嘉鱼县',
+ 421222: '通城县',
+ 421223: '崇阳县',
+ 421224: '通山县',
+ 421281: '赤壁市',
+ 421303: '曾都区',
+ 421321: '随县',
+ 421381: '广水市',
+ 422801: '恩施市',
+ 422802: '利川市',
+ 422822: '建始县',
+ 422823: '巴东县',
+ 422825: '宣恩县',
+ 422826: '咸丰县',
+ 422827: '来凤县',
+ 422828: '鹤峰县',
+ 429004: '仙桃市',
+ 429005: '潜江市',
+ 429006: '天门市',
+ 429021: '神农架林区',
+ 430102: '芙蓉区',
+ 430103: '天心区',
+ 430104: '岳麓区',
+ 430105: '开福区',
+ 430111: '雨花区',
+ 430112: '望城区',
+ 430121: '长沙县',
+ 430181: '浏阳市',
+ 430182: '宁乡市',
+ 430202: '荷塘区',
+ 430203: '芦淞区',
+ 430204: '石峰区',
+ 430211: '天元区',
+ 430221: '株洲县',
+ 430223: '攸县',
+ 430224: '茶陵县',
+ 430225: '炎陵县',
+ 430281: '醴陵市',
+ 430302: '雨湖区',
+ 430304: '岳塘区',
+ 430321: '湘潭县',
+ 430381: '湘乡市',
+ 430382: '韶山市',
+ 430405: '珠晖区',
+ 430406: '雁峰区',
+ 430407: '石鼓区',
+ 430408: '蒸湘区',
+ 430412: '南岳区',
+ 430421: '衡阳县',
+ 430422: '衡南县',
+ 430423: '衡山县',
+ 430424: '衡东县',
+ 430426: '祁东县',
+ 430481: '耒阳市',
+ 430482: '常宁市',
+ 430502: '双清区',
+ 430503: '大祥区',
+ 430511: '北塔区',
+ 430521: '邵东县',
+ 430522: '新邵县',
+ 430523: '邵阳县',
+ 430524: '隆回县',
+ 430525: '洞口县',
+ 430527: '绥宁县',
+ 430528: '新宁县',
+ 430529: '城步苗族自治县',
+ 430581: '武冈市',
+ 430602: '岳阳楼区',
+ 430603: '云溪区',
+ 430611: '君山区',
+ 430621: '岳阳县',
+ 430623: '华容县',
+ 430624: '湘阴县',
+ 430626: '平江县',
+ 430681: '汨罗市',
+ 430682: '临湘市',
+ 430702: '武陵区',
+ 430703: '鼎城区',
+ 430721: '安乡县',
+ 430722: '汉寿县',
+ 430723: '澧县',
+ 430724: '临澧县',
+ 430725: '桃源县',
+ 430726: '石门县',
+ 430781: '津市市',
+ 430802: '永定区',
+ 430811: '武陵源区',
+ 430821: '慈利县',
+ 430822: '桑植县',
+ 430902: '资阳区',
+ 430903: '赫山区',
+ 430921: '南县',
+ 430922: '桃江县',
+ 430923: '安化县',
+ 430981: '沅江市',
+ 431002: '北湖区',
+ 431003: '苏仙区',
+ 431021: '桂阳县',
+ 431022: '宜章县',
+ 431023: '永兴县',
+ 431024: '嘉禾县',
+ 431025: '临武县',
+ 431026: '汝城县',
+ 431027: '桂东县',
+ 431028: '安仁县',
+ 431081: '资兴市',
+ 431102: '零陵区',
+ 431103: '冷水滩区',
+ 431121: '祁阳县',
+ 431122: '东安县',
+ 431123: '双牌县',
+ 431124: '道县',
+ 431125: '江永县',
+ 431126: '宁远县',
+ 431127: '蓝山县',
+ 431128: '新田县',
+ 431129: '江华瑶族自治县',
+ 431202: '鹤城区',
+ 431221: '中方县',
+ 431222: '沅陵县',
+ 431223: '辰溪县',
+ 431224: '溆浦县',
+ 431225: '会同县',
+ 431226: '麻阳苗族自治县',
+ 431227: '新晃侗族自治县',
+ 431228: '芷江侗族自治县',
+ 431229: '靖州苗族侗族自治县',
+ 431230: '通道侗族自治县',
+ 431281: '洪江市',
+ 431302: '娄星区',
+ 431321: '双峰县',
+ 431322: '新化县',
+ 431381: '冷水江市',
+ 431382: '涟源市',
+ 433101: '吉首市',
+ 433122: '泸溪县',
+ 433123: '凤凰县',
+ 433124: '花垣县',
+ 433125: '保靖县',
+ 433126: '古丈县',
+ 433127: '永顺县',
+ 433130: '龙山县',
+ 440103: '荔湾区',
+ 440104: '越秀区',
+ 440105: '海珠区',
+ 440106: '天河区',
+ 440111: '白云区',
+ 440112: '黄埔区',
+ 440113: '番禺区',
+ 440114: '花都区',
+ 440115: '南沙区',
+ 440117: '从化区',
+ 440118: '增城区',
+ 440203: '武江区',
+ 440204: '浈江区',
+ 440205: '曲江区',
+ 440222: '始兴县',
+ 440224: '仁化县',
+ 440229: '翁源县',
+ 440232: '乳源瑶族自治县',
+ 440233: '新丰县',
+ 440281: '乐昌市',
+ 440282: '南雄市',
+ 440303: '罗湖区',
+ 440304: '福田区',
+ 440305: '南山区',
+ 440306: '宝安区',
+ 440307: '龙岗区',
+ 440308: '盐田区',
+ 440309: '龙华区',
+ 440310: '坪山区',
+ 440402: '香洲区',
+ 440403: '斗门区',
+ 440404: '金湾区',
+ 440507: '龙湖区',
+ 440511: '金平区',
+ 440512: '濠江区',
+ 440513: '潮阳区',
+ 440514: '潮南区',
+ 440515: '澄海区',
+ 440523: '南澳县',
+ 440604: '禅城区',
+ 440605: '南海区',
+ 440606: '顺德区',
+ 440607: '三水区',
+ 440608: '高明区',
+ 440703: '蓬江区',
+ 440704: '江海区',
+ 440705: '新会区',
+ 440781: '台山市',
+ 440783: '开平市',
+ 440784: '鹤山市',
+ 440785: '恩平市',
+ 440802: '赤坎区',
+ 440803: '霞山区',
+ 440804: '坡头区',
+ 440811: '麻章区',
+ 440823: '遂溪县',
+ 440825: '徐闻县',
+ 440881: '廉江市',
+ 440882: '雷州市',
+ 440883: '吴川市',
+ 440890: '经济技术开发区',
+ 440902: '茂南区',
+ 440904: '电白区',
+ 440981: '高州市',
+ 440982: '化州市',
+ 440983: '信宜市',
+ 441202: '端州区',
+ 441203: '鼎湖区',
+ 441204: '高要区',
+ 441223: '广宁县',
+ 441224: '怀集县',
+ 441225: '封开县',
+ 441226: '德庆县',
+ 441284: '四会市',
+ 441302: '惠城区',
+ 441303: '惠阳区',
+ 441322: '博罗县',
+ 441323: '惠东县',
+ 441324: '龙门县',
+ 441402: '梅江区',
+ 441403: '梅县区',
+ 441422: '大埔县',
+ 441423: '丰顺县',
+ 441424: '五华县',
+ 441426: '平远县',
+ 441427: '蕉岭县',
+ 441481: '兴宁市',
+ 441502: '城区',
+ 441521: '海丰县',
+ 441523: '陆河县',
+ 441581: '陆丰市',
+ 441602: '源城区',
+ 441621: '紫金县',
+ 441622: '龙川县',
+ 441623: '连平县',
+ 441624: '和平县',
+ 441625: '东源县',
+ 441702: '江城区',
+ 441704: '阳东区',
+ 441721: '阳西县',
+ 441781: '阳春市',
+ 441802: '清城区',
+ 441803: '清新区',
+ 441821: '佛冈县',
+ 441823: '阳山县',
+ 441825: '连山壮族瑶族自治县',
+ 441826: '连南瑶族自治县',
+ 441881: '英德市',
+ 441882: '连州市',
+ 441901: '中堂镇',
+ 441903: '南城区',
+ 441904: '长安镇',
+ 441905: '东坑镇',
+ 441906: '樟木头镇',
+ 441907: '莞城区',
+ 441908: '石龙镇',
+ 441909: '桥头镇',
+ 441910: '万江区',
+ 441911: '麻涌镇',
+ 441912: '虎门镇',
+ 441913: '谢岗镇',
+ 441914: '石碣镇',
+ 441915: '茶山镇',
+ 441916: '东城区',
+ 441917: '洪梅镇',
+ 441918: '道滘镇',
+ 441919: '高埗镇',
+ 441920: '企石镇',
+ 441921: '凤岗镇',
+ 441922: '大岭山镇',
+ 441923: '松山湖',
+ 441924: '清溪镇',
+ 441925: '望牛墩镇',
+ 441926: '厚街镇',
+ 441927: '常平镇',
+ 441928: '寮步镇',
+ 441929: '石排镇',
+ 441930: '横沥镇',
+ 441931: '塘厦镇',
+ 441932: '黄江镇',
+ 441933: '大朗镇',
+ 441990: '沙田镇',
+ 442001: '南头镇',
+ 442002: '神湾镇',
+ 442003: '东凤镇',
+ 442004: '五桂山镇',
+ 442005: '黄圃镇',
+ 442006: '小榄镇',
+ 442007: '石岐区街道',
+ 442008: '横栏镇',
+ 442009: '三角镇',
+ 442010: '三乡镇',
+ 442011: '港口镇',
+ 442012: '沙溪镇',
+ 442013: '板芙镇',
+ 442014: '沙朗镇',
+ 442015: '东升镇',
+ 442016: '阜沙镇',
+ 442017: '民众镇',
+ 442018: '东区街道',
+ 442019: '火炬开发区',
+ 442020: '西区街道',
+ 442021: '南区街道',
+ 442022: '古镇',
+ 442023: '坦洲镇',
+ 442024: '大涌镇',
+ 442025: '南朗镇',
+ 445102: '湘桥区',
+ 445103: '潮安区',
+ 445122: '饶平县',
+ 445202: '榕城区',
+ 445203: '揭东区',
+ 445222: '揭西县',
+ 445224: '惠来县',
+ 445281: '普宁市',
+ 445302: '云城区',
+ 445303: '云安区',
+ 445321: '新兴县',
+ 445322: '郁南县',
+ 445381: '罗定市',
+ 450102: '兴宁区',
+ 450103: '青秀区',
+ 450105: '江南区',
+ 450107: '西乡塘区',
+ 450108: '良庆区',
+ 450109: '邕宁区',
+ 450110: '武鸣区',
+ 450123: '隆安县',
+ 450124: '马山县',
+ 450125: '上林县',
+ 450126: '宾阳县',
+ 450127: '横县',
+ 450202: '城中区',
+ 450203: '鱼峰区',
+ 450204: '柳南区',
+ 450205: '柳北区',
+ 450206: '柳江区',
+ 450222: '柳城县',
+ 450223: '鹿寨县',
+ 450224: '融安县',
+ 450225: '融水苗族自治县',
+ 450226: '三江侗族自治县',
+ 450302: '秀峰区',
+ 450303: '叠彩区',
+ 450304: '象山区',
+ 450305: '七星区',
+ 450311: '雁山区',
+ 450312: '临桂区',
+ 450321: '阳朔县',
+ 450323: '灵川县',
+ 450324: '全州县',
+ 450325: '兴安县',
+ 450326: '永福县',
+ 450327: '灌阳县',
+ 450328: '龙胜各族自治县',
+ 450329: '资源县',
+ 450330: '平乐县',
+ 450331: '荔浦县',
+ 450332: '恭城瑶族自治县',
+ 450403: '万秀区',
+ 450405: '长洲区',
+ 450406: '龙圩区',
+ 450421: '苍梧县',
+ 450422: '藤县',
+ 450423: '蒙山县',
+ 450481: '岑溪市',
+ 450502: '海城区',
+ 450503: '银海区',
+ 450512: '铁山港区',
+ 450521: '合浦县',
+ 450602: '港口区',
+ 450603: '防城区',
+ 450621: '上思县',
+ 450681: '东兴市',
+ 450702: '钦南区',
+ 450703: '钦北区',
+ 450721: '灵山县',
+ 450722: '浦北县',
+ 450802: '港北区',
+ 450803: '港南区',
+ 450804: '覃塘区',
+ 450821: '平南县',
+ 450881: '桂平市',
+ 450902: '玉州区',
+ 450903: '福绵区',
+ 450921: '容县',
+ 450922: '陆川县',
+ 450923: '博白县',
+ 450924: '兴业县',
+ 450981: '北流市',
+ 451002: '右江区',
+ 451021: '田阳县',
+ 451022: '田东县',
+ 451023: '平果县',
+ 451024: '德保县',
+ 451026: '那坡县',
+ 451027: '凌云县',
+ 451028: '乐业县',
+ 451029: '田林县',
+ 451030: '西林县',
+ 451031: '隆林各族自治县',
+ 451081: '靖西市',
+ 451102: '八步区',
+ 451103: '平桂区',
+ 451121: '昭平县',
+ 451122: '钟山县',
+ 451123: '富川瑶族自治县',
+ 451202: '金城江区',
+ 451203: '宜州区',
+ 451221: '南丹县',
+ 451222: '天峨县',
+ 451223: '凤山县',
+ 451224: '东兰县',
+ 451225: '罗城仫佬族自治县',
+ 451226: '环江毛南族自治县',
+ 451227: '巴马瑶族自治县',
+ 451228: '都安瑶族自治县',
+ 451229: '大化瑶族自治县',
+ 451302: '兴宾区',
+ 451321: '忻城县',
+ 451322: '象州县',
+ 451323: '武宣县',
+ 451324: '金秀瑶族自治县',
+ 451381: '合山市',
+ 451402: '江州区',
+ 451421: '扶绥县',
+ 451422: '宁明县',
+ 451423: '龙州县',
+ 451424: '大新县',
+ 451425: '天等县',
+ 451481: '凭祥市',
+ 460105: '秀英区',
+ 460106: '龙华区',
+ 460107: '琼山区',
+ 460108: '美兰区',
+ 460202: '海棠区',
+ 460203: '吉阳区',
+ 460204: '天涯区',
+ 460205: '崖州区',
+ 460321: '西沙群岛',
+ 460322: '南沙群岛',
+ 460323: '中沙群岛的岛礁及其海域',
+ 460401: '那大镇',
+ 460402: '和庆镇',
+ 460403: '南丰镇',
+ 460404: '大成镇',
+ 460405: '雅星镇',
+ 460406: '兰洋镇',
+ 460407: '光村镇',
+ 460408: '木棠镇',
+ 460409: '海头镇',
+ 460410: '峨蔓镇',
+ 460411: '王五镇',
+ 460412: '白马井镇',
+ 460413: '中和镇',
+ 460414: '排浦镇',
+ 460415: '东成镇',
+ 460416: '新州镇',
+ 469001: '五指山市',
+ 469002: '琼海市',
+ 469005: '文昌市',
+ 469006: '万宁市',
+ 469007: '东方市',
+ 469021: '定安县',
+ 469022: '屯昌县',
+ 469023: '澄迈县',
+ 469024: '临高县',
+ 469025: '白沙黎族自治县',
+ 469026: '昌江黎族自治县',
+ 469027: '乐东黎族自治县',
+ 469028: '陵水黎族自治县',
+ 469029: '保亭黎族苗族自治县',
+ 469030: '琼中黎族苗族自治县',
+ 500101: '万州区',
+ 500102: '涪陵区',
+ 500103: '渝中区',
+ 500104: '大渡口区',
+ 500105: '江北区',
+ 500106: '沙坪坝区',
+ 500107: '九龙坡区',
+ 500108: '南岸区',
+ 500109: '北碚区',
+ 500110: '綦江区',
+ 500111: '大足区',
+ 500112: '渝北区',
+ 500113: '巴南区',
+ 500114: '黔江区',
+ 500115: '长寿区',
+ 500116: '江津区',
+ 500117: '合川区',
+ 500118: '永川区',
+ 500119: '南川区',
+ 500120: '璧山区',
+ 500151: '铜梁区',
+ 500152: '潼南区',
+ 500153: '荣昌区',
+ 500154: '开州区',
+ 500155: '梁平区',
+ 500156: '武隆区',
+ 500229: '城口县',
+ 500230: '丰都县',
+ 500231: '垫江县',
+ 500233: '忠县',
+ 500235: '云阳县',
+ 500236: '奉节县',
+ 500237: '巫山县',
+ 500238: '巫溪县',
+ 500240: '石柱土家族自治县',
+ 500241: '秀山土家族苗族自治县',
+ 500242: '酉阳土家族苗族自治县',
+ 500243: '彭水苗族土家族自治县',
+ 510104: '锦江区',
+ 510105: '青羊区',
+ 510106: '金牛区',
+ 510107: '武侯区',
+ 510108: '成华区',
+ 510112: '龙泉驿区',
+ 510113: '青白江区',
+ 510114: '新都区',
+ 510115: '温江区',
+ 510116: '双流区',
+ 510117: '郫都区',
+ 510121: '金堂县',
+ 510129: '大邑县',
+ 510131: '蒲江县',
+ 510132: '新津县',
+ 510181: '都江堰市',
+ 510182: '彭州市',
+ 510183: '邛崃市',
+ 510184: '崇州市',
+ 510185: '简阳市',
+ 510191: '高新区',
+ 510302: '自流井区',
+ 510303: '贡井区',
+ 510304: '大安区',
+ 510311: '沿滩区',
+ 510321: '荣县',
+ 510322: '富顺县',
+ 510402: '东区',
+ 510403: '西区',
+ 510411: '仁和区',
+ 510421: '米易县',
+ 510422: '盐边县',
+ 510502: '江阳区',
+ 510503: '纳溪区',
+ 510504: '龙马潭区',
+ 510521: '泸县',
+ 510522: '合江县',
+ 510524: '叙永县',
+ 510525: '古蔺县',
+ 510603: '旌阳区',
+ 510604: '罗江区',
+ 510623: '中江县',
+ 510681: '广汉市',
+ 510682: '什邡市',
+ 510683: '绵竹市',
+ 510703: '涪城区',
+ 510704: '游仙区',
+ 510705: '安州区',
+ 510722: '三台县',
+ 510723: '盐亭县',
+ 510725: '梓潼县',
+ 510726: '北川羌族自治县',
+ 510727: '平武县',
+ 510781: '江油市',
+ 510791: '高新区',
+ 510802: '利州区',
+ 510811: '昭化区',
+ 510812: '朝天区',
+ 510821: '旺苍县',
+ 510822: '青川县',
+ 510823: '剑阁县',
+ 510824: '苍溪县',
+ 510903: '船山区',
+ 510904: '安居区',
+ 510921: '蓬溪县',
+ 510922: '射洪县',
+ 510923: '大英县',
+ 511002: '市中区',
+ 511011: '东兴区',
+ 511024: '威远县',
+ 511025: '资中县',
+ 511083: '隆昌市',
+ 511102: '市中区',
+ 511111: '沙湾区',
+ 511112: '五通桥区',
+ 511113: '金口河区',
+ 511123: '犍为县',
+ 511124: '井研县',
+ 511126: '夹江县',
+ 511129: '沐川县',
+ 511132: '峨边彝族自治县',
+ 511133: '马边彝族自治县',
+ 511181: '峨眉山市',
+ 511302: '顺庆区',
+ 511303: '高坪区',
+ 511304: '嘉陵区',
+ 511321: '南部县',
+ 511322: '营山县',
+ 511323: '蓬安县',
+ 511324: '仪陇县',
+ 511325: '西充县',
+ 511381: '阆中市',
+ 511402: '东坡区',
+ 511403: '彭山区',
+ 511421: '仁寿县',
+ 511423: '洪雅县',
+ 511424: '丹棱县',
+ 511425: '青神县',
+ 511502: '翠屏区',
+ 511503: '南溪区',
+ 511521: '宜宾县',
+ 511523: '江安县',
+ 511524: '长宁县',
+ 511525: '高县',
+ 511526: '珙县',
+ 511527: '筠连县',
+ 511528: '兴文县',
+ 511529: '屏山县',
+ 511602: '广安区',
+ 511603: '前锋区',
+ 511621: '岳池县',
+ 511622: '武胜县',
+ 511623: '邻水县',
+ 511681: '华蓥市',
+ 511702: '通川区',
+ 511703: '达川区',
+ 511722: '宣汉县',
+ 511723: '开江县',
+ 511724: '大竹县',
+ 511725: '渠县',
+ 511781: '万源市',
+ 511802: '雨城区',
+ 511803: '名山区',
+ 511822: '荥经县',
+ 511823: '汉源县',
+ 511824: '石棉县',
+ 511825: '天全县',
+ 511826: '芦山县',
+ 511827: '宝兴县',
+ 511902: '巴州区',
+ 511903: '恩阳区',
+ 511921: '通江县',
+ 511922: '南江县',
+ 511923: '平昌县',
+ 512002: '雁江区',
+ 512021: '安岳县',
+ 512022: '乐至县',
+ 513201: '马尔康市',
+ 513221: '汶川县',
+ 513222: '理县',
+ 513223: '茂县',
+ 513224: '松潘县',
+ 513225: '九寨沟县',
+ 513226: '金川县',
+ 513227: '小金县',
+ 513228: '黑水县',
+ 513230: '壤塘县',
+ 513231: '阿坝县',
+ 513232: '若尔盖县',
+ 513233: '红原县',
+ 513301: '康定市',
+ 513322: '泸定县',
+ 513323: '丹巴县',
+ 513324: '九龙县',
+ 513325: '雅江县',
+ 513326: '道孚县',
+ 513327: '炉霍县',
+ 513328: '甘孜县',
+ 513329: '新龙县',
+ 513330: '德格县',
+ 513331: '白玉县',
+ 513332: '石渠县',
+ 513333: '色达县',
+ 513334: '理塘县',
+ 513335: '巴塘县',
+ 513336: '乡城县',
+ 513337: '稻城县',
+ 513338: '得荣县',
+ 513401: '西昌市',
+ 513422: '木里藏族自治县',
+ 513423: '盐源县',
+ 513424: '德昌县',
+ 513425: '会理县',
+ 513426: '会东县',
+ 513427: '宁南县',
+ 513428: '普格县',
+ 513429: '布拖县',
+ 513430: '金阳县',
+ 513431: '昭觉县',
+ 513432: '喜德县',
+ 513433: '冕宁县',
+ 513434: '越西县',
+ 513435: '甘洛县',
+ 513436: '美姑县',
+ 513437: '雷波县',
+ 520102: '南明区',
+ 520103: '云岩区',
+ 520111: '花溪区',
+ 520112: '乌当区',
+ 520113: '白云区',
+ 520115: '观山湖区',
+ 520121: '开阳县',
+ 520122: '息烽县',
+ 520123: '修文县',
+ 520181: '清镇市',
+ 520201: '钟山区',
+ 520203: '六枝特区',
+ 520221: '水城县',
+ 520281: '盘州市',
+ 520302: '红花岗区',
+ 520303: '汇川区',
+ 520304: '播州区',
+ 520322: '桐梓县',
+ 520323: '绥阳县',
+ 520324: '正安县',
+ 520325: '道真仡佬族苗族自治县',
+ 520326: '务川仡佬族苗族自治县',
+ 520327: '凤冈县',
+ 520328: '湄潭县',
+ 520329: '余庆县',
+ 520330: '习水县',
+ 520381: '赤水市',
+ 520382: '仁怀市',
+ 520402: '西秀区',
+ 520403: '平坝区',
+ 520422: '普定县',
+ 520423: '镇宁布依族苗族自治县',
+ 520424: '关岭布依族苗族自治县',
+ 520425: '紫云苗族布依族自治县',
+ 520502: '七星关区',
+ 520521: '大方县',
+ 520522: '黔西县',
+ 520523: '金沙县',
+ 520524: '织金县',
+ 520525: '纳雍县',
+ 520526: '威宁彝族回族苗族自治县',
+ 520527: '赫章县',
+ 520602: '碧江区',
+ 520603: '万山区',
+ 520621: '江口县',
+ 520622: '玉屏侗族自治县',
+ 520623: '石阡县',
+ 520624: '思南县',
+ 520625: '印江土家族苗族自治县',
+ 520626: '德江县',
+ 520627: '沿河土家族自治县',
+ 520628: '松桃苗族自治县',
+ 522301: '兴义市',
+ 522322: '兴仁县',
+ 522323: '普安县',
+ 522324: '晴隆县',
+ 522325: '贞丰县',
+ 522326: '望谟县',
+ 522327: '册亨县',
+ 522328: '安龙县',
+ 522601: '凯里市',
+ 522622: '黄平县',
+ 522623: '施秉县',
+ 522624: '三穗县',
+ 522625: '镇远县',
+ 522626: '岑巩县',
+ 522627: '天柱县',
+ 522628: '锦屏县',
+ 522629: '剑河县',
+ 522630: '台江县',
+ 522631: '黎平县',
+ 522632: '榕江县',
+ 522633: '从江县',
+ 522634: '雷山县',
+ 522635: '麻江县',
+ 522636: '丹寨县',
+ 522701: '都匀市',
+ 522702: '福泉市',
+ 522722: '荔波县',
+ 522723: '贵定县',
+ 522725: '瓮安县',
+ 522726: '独山县',
+ 522727: '平塘县',
+ 522728: '罗甸县',
+ 522729: '长顺县',
+ 522730: '龙里县',
+ 522731: '惠水县',
+ 522732: '三都水族自治县',
+ 530102: '五华区',
+ 530103: '盘龙区',
+ 530111: '官渡区',
+ 530112: '西山区',
+ 530113: '东川区',
+ 530114: '呈贡区',
+ 530115: '晋宁区',
+ 530124: '富民县',
+ 530125: '宜良县',
+ 530126: '石林彝族自治县',
+ 530127: '嵩明县',
+ 530128: '禄劝彝族苗族自治县',
+ 530129: '寻甸回族彝族自治县',
+ 530181: '安宁市',
+ 530302: '麒麟区',
+ 530303: '沾益区',
+ 530321: '马龙县',
+ 530322: '陆良县',
+ 530323: '师宗县',
+ 530324: '罗平县',
+ 530325: '富源县',
+ 530326: '会泽县',
+ 530381: '宣威市',
+ 530402: '红塔区',
+ 530403: '江川区',
+ 530422: '澄江县',
+ 530423: '通海县',
+ 530424: '华宁县',
+ 530425: '易门县',
+ 530426: '峨山彝族自治县',
+ 530427: '新平彝族傣族自治县',
+ 530428: '元江哈尼族彝族傣族自治县',
+ 530502: '隆阳区',
+ 530521: '施甸县',
+ 530523: '龙陵县',
+ 530524: '昌宁县',
+ 530581: '腾冲市',
+ 530602: '昭阳区',
+ 530621: '鲁甸县',
+ 530622: '巧家县',
+ 530623: '盐津县',
+ 530624: '大关县',
+ 530625: '永善县',
+ 530626: '绥江县',
+ 530627: '镇雄县',
+ 530628: '彝良县',
+ 530629: '威信县',
+ 530630: '水富县',
+ 530702: '古城区',
+ 530721: '玉龙纳西族自治县',
+ 530722: '永胜县',
+ 530723: '华坪县',
+ 530724: '宁蒗彝族自治县',
+ 530802: '思茅区',
+ 530821: '宁洱哈尼族彝族自治县',
+ 530822: '墨江哈尼族自治县',
+ 530823: '景东彝族自治县',
+ 530824: '景谷傣族彝族自治县',
+ 530825: '镇沅彝族哈尼族拉祜族自治县',
+ 530826: '江城哈尼族彝族自治县',
+ 530827: '孟连傣族拉祜族佤族自治县',
+ 530828: '澜沧拉祜族自治县',
+ 530829: '西盟佤族自治县',
+ 530902: '临翔区',
+ 530921: '凤庆县',
+ 530922: '云县',
+ 530923: '永德县',
+ 530924: '镇康县',
+ 530925: '双江拉祜族佤族布朗族傣族自治县',
+ 530926: '耿马傣族佤族自治县',
+ 530927: '沧源佤族自治县',
+ 532301: '楚雄市',
+ 532322: '双柏县',
+ 532323: '牟定县',
+ 532324: '南华县',
+ 532325: '姚安县',
+ 532326: '大姚县',
+ 532327: '永仁县',
+ 532328: '元谋县',
+ 532329: '武定县',
+ 532331: '禄丰县',
+ 532501: '个旧市',
+ 532502: '开远市',
+ 532503: '蒙自市',
+ 532504: '弥勒市',
+ 532523: '屏边苗族自治县',
+ 532524: '建水县',
+ 532525: '石屏县',
+ 532527: '泸西县',
+ 532528: '元阳县',
+ 532529: '红河县',
+ 532530: '金平苗族瑶族傣族自治县',
+ 532531: '绿春县',
+ 532532: '河口瑶族自治县',
+ 532601: '文山市',
+ 532622: '砚山县',
+ 532623: '西畴县',
+ 532624: '麻栗坡县',
+ 532625: '马关县',
+ 532626: '丘北县',
+ 532627: '广南县',
+ 532628: '富宁县',
+ 532801: '景洪市',
+ 532822: '勐海县',
+ 532823: '勐腊县',
+ 532901: '大理市',
+ 532922: '漾濞彝族自治县',
+ 532923: '祥云县',
+ 532924: '宾川县',
+ 532925: '弥渡县',
+ 532926: '南涧彝族自治县',
+ 532927: '巍山彝族回族自治县',
+ 532928: '永平县',
+ 532929: '云龙县',
+ 532930: '洱源县',
+ 532931: '剑川县',
+ 532932: '鹤庆县',
+ 533102: '瑞丽市',
+ 533103: '芒市',
+ 533122: '梁河县',
+ 533123: '盈江县',
+ 533124: '陇川县',
+ 533301: '泸水市',
+ 533323: '福贡县',
+ 533324: '贡山独龙族怒族自治县',
+ 533325: '兰坪白族普米族自治县',
+ 533401: '香格里拉市',
+ 533422: '德钦县',
+ 533423: '维西傈僳族自治县',
+ 540102: '城关区',
+ 540103: '堆龙德庆区',
+ 540104: '达孜区',
+ 540121: '林周县',
+ 540122: '当雄县',
+ 540123: '尼木县',
+ 540124: '曲水县',
+ 540127: '墨竹工卡县',
+ 540202: '桑珠孜区',
+ 540221: '南木林县',
+ 540222: '江孜县',
+ 540223: '定日县',
+ 540224: '萨迦县',
+ 540225: '拉孜县',
+ 540226: '昂仁县',
+ 540227: '谢通门县',
+ 540228: '白朗县',
+ 540229: '仁布县',
+ 540230: '康马县',
+ 540231: '定结县',
+ 540232: '仲巴县',
+ 540233: '亚东县',
+ 540234: '吉隆县',
+ 540235: '聂拉木县',
+ 540236: '萨嘎县',
+ 540237: '岗巴县',
+ 540302: '卡若区',
+ 540321: '江达县',
+ 540322: '贡觉县',
+ 540323: '类乌齐县',
+ 540324: '丁青县',
+ 540325: '察雅县',
+ 540326: '八宿县',
+ 540327: '左贡县',
+ 540328: '芒康县',
+ 540329: '洛隆县',
+ 540330: '边坝县',
+ 540402: '巴宜区',
+ 540421: '工布江达县',
+ 540422: '米林县',
+ 540423: '墨脱县',
+ 540424: '波密县',
+ 540425: '察隅县',
+ 540426: '朗县',
+ 540502: '乃东区',
+ 540521: '扎囊县',
+ 540522: '贡嘎县',
+ 540523: '桑日县',
+ 540524: '琼结县',
+ 540525: '曲松县',
+ 540526: '措美县',
+ 540527: '洛扎县',
+ 540528: '加查县',
+ 540529: '隆子县',
+ 540530: '错那县',
+ 540531: '浪卡子县',
+ 540602: '色尼区',
+ 542421: '那曲县',
+ 542422: '嘉黎县',
+ 542423: '比如县',
+ 542424: '聂荣县',
+ 542425: '安多县',
+ 542426: '申扎县',
+ 542427: '索县',
+ 542428: '班戈县',
+ 542429: '巴青县',
+ 542430: '尼玛县',
+ 542431: '双湖县',
+ 542521: '普兰县',
+ 542522: '札达县',
+ 542523: '噶尔县',
+ 542524: '日土县',
+ 542525: '革吉县',
+ 542526: '改则县',
+ 542527: '措勤县',
+ 610102: '新城区',
+ 610103: '碑林区',
+ 610104: '莲湖区',
+ 610111: '灞桥区',
+ 610112: '未央区',
+ 610113: '雁塔区',
+ 610114: '阎良区',
+ 610115: '临潼区',
+ 610116: '长安区',
+ 610117: '高陵区',
+ 610118: '鄠邑区',
+ 610122: '蓝田县',
+ 610124: '周至县',
+ 610202: '王益区',
+ 610203: '印台区',
+ 610204: '耀州区',
+ 610222: '宜君县',
+ 610302: '渭滨区',
+ 610303: '金台区',
+ 610304: '陈仓区',
+ 610322: '凤翔县',
+ 610323: '岐山县',
+ 610324: '扶风县',
+ 610326: '眉县',
+ 610327: '陇县',
+ 610328: '千阳县',
+ 610329: '麟游县',
+ 610330: '凤县',
+ 610331: '太白县',
+ 610402: '秦都区',
+ 610403: '杨陵区',
+ 610404: '渭城区',
+ 610422: '三原县',
+ 610423: '泾阳县',
+ 610424: '乾县',
+ 610425: '礼泉县',
+ 610426: '永寿县',
+ 610427: '彬县',
+ 610428: '长武县',
+ 610429: '旬邑县',
+ 610430: '淳化县',
+ 610431: '武功县',
+ 610481: '兴平市',
+ 610502: '临渭区',
+ 610503: '华州区',
+ 610522: '潼关县',
+ 610523: '大荔县',
+ 610524: '合阳县',
+ 610525: '澄城县',
+ 610526: '蒲城县',
+ 610527: '白水县',
+ 610528: '富平县',
+ 610581: '韩城市',
+ 610582: '华阴市',
+ 610602: '宝塔区',
+ 610603: '安塞区',
+ 610621: '延长县',
+ 610622: '延川县',
+ 610623: '子长县',
+ 610625: '志丹县',
+ 610626: '吴起县',
+ 610627: '甘泉县',
+ 610628: '富县',
+ 610629: '洛川县',
+ 610630: '宜川县',
+ 610631: '黄龙县',
+ 610632: '黄陵县',
+ 610702: '汉台区',
+ 610703: '南郑区',
+ 610722: '城固县',
+ 610723: '洋县',
+ 610724: '西乡县',
+ 610725: '勉县',
+ 610726: '宁强县',
+ 610727: '略阳县',
+ 610728: '镇巴县',
+ 610729: '留坝县',
+ 610730: '佛坪县',
+ 610802: '榆阳区',
+ 610803: '横山区',
+ 610822: '府谷县',
+ 610824: '靖边县',
+ 610825: '定边县',
+ 610826: '绥德县',
+ 610827: '米脂县',
+ 610828: '佳县',
+ 610829: '吴堡县',
+ 610830: '清涧县',
+ 610831: '子洲县',
+ 610881: '神木市',
+ 610902: '汉滨区',
+ 610921: '汉阴县',
+ 610922: '石泉县',
+ 610923: '宁陕县',
+ 610924: '紫阳县',
+ 610925: '岚皋县',
+ 610926: '平利县',
+ 610927: '镇坪县',
+ 610928: '旬阳县',
+ 610929: '白河县',
+ 611002: '商州区',
+ 611021: '洛南县',
+ 611022: '丹凤县',
+ 611023: '商南县',
+ 611024: '山阳县',
+ 611025: '镇安县',
+ 611026: '柞水县',
+ 620102: '城关区',
+ 620103: '七里河区',
+ 620104: '西固区',
+ 620105: '安宁区',
+ 620111: '红古区',
+ 620121: '永登县',
+ 620122: '皋兰县',
+ 620123: '榆中县',
+ 620201: '市辖区',
+ 620290: '雄关区',
+ 620291: '长城区',
+ 620292: '镜铁区',
+ 620293: '新城镇',
+ 620294: '峪泉镇',
+ 620295: '文殊镇',
+ 620302: '金川区',
+ 620321: '永昌县',
+ 620402: '白银区',
+ 620403: '平川区',
+ 620421: '靖远县',
+ 620422: '会宁县',
+ 620423: '景泰县',
+ 620502: '秦州区',
+ 620503: '麦积区',
+ 620521: '清水县',
+ 620522: '秦安县',
+ 620523: '甘谷县',
+ 620524: '武山县',
+ 620525: '张家川回族自治县',
+ 620602: '凉州区',
+ 620621: '民勤县',
+ 620622: '古浪县',
+ 620623: '天祝藏族自治县',
+ 620702: '甘州区',
+ 620721: '肃南裕固族自治县',
+ 620722: '民乐县',
+ 620723: '临泽县',
+ 620724: '高台县',
+ 620725: '山丹县',
+ 620802: '崆峒区',
+ 620821: '泾川县',
+ 620822: '灵台县',
+ 620823: '崇信县',
+ 620824: '华亭县',
+ 620825: '庄浪县',
+ 620826: '静宁县',
+ 620902: '肃州区',
+ 620921: '金塔县',
+ 620922: '瓜州县',
+ 620923: '肃北蒙古族自治县',
+ 620924: '阿克塞哈萨克族自治县',
+ 620981: '玉门市',
+ 620982: '敦煌市',
+ 621002: '西峰区',
+ 621021: '庆城县',
+ 621022: '环县',
+ 621023: '华池县',
+ 621024: '合水县',
+ 621025: '正宁县',
+ 621026: '宁县',
+ 621027: '镇原县',
+ 621102: '安定区',
+ 621121: '通渭县',
+ 621122: '陇西县',
+ 621123: '渭源县',
+ 621124: '临洮县',
+ 621125: '漳县',
+ 621126: '岷县',
+ 621202: '武都区',
+ 621221: '成县',
+ 621222: '文县',
+ 621223: '宕昌县',
+ 621224: '康县',
+ 621225: '西和县',
+ 621226: '礼县',
+ 621227: '徽县',
+ 621228: '两当县',
+ 622901: '临夏市',
+ 622921: '临夏县',
+ 622922: '康乐县',
+ 622923: '永靖县',
+ 622924: '广河县',
+ 622925: '和政县',
+ 622926: '东乡族自治县',
+ 622927: '积石山保安族东乡族撒拉族自治县',
+ 623001: '合作市',
+ 623021: '临潭县',
+ 623022: '卓尼县',
+ 623023: '舟曲县',
+ 623024: '迭部县',
+ 623025: '玛曲县',
+ 623026: '碌曲县',
+ 623027: '夏河县',
+ 630102: '城东区',
+ 630103: '城中区',
+ 630104: '城西区',
+ 630105: '城北区',
+ 630121: '大通回族土族自治县',
+ 630122: '湟中县',
+ 630123: '湟源县',
+ 630202: '乐都区',
+ 630203: '平安区',
+ 630222: '民和回族土族自治县',
+ 630223: '互助土族自治县',
+ 630224: '化隆回族自治县',
+ 630225: '循化撒拉族自治县',
+ 632221: '门源回族自治县',
+ 632222: '祁连县',
+ 632223: '海晏县',
+ 632224: '刚察县',
+ 632321: '同仁县',
+ 632322: '尖扎县',
+ 632323: '泽库县',
+ 632324: '河南蒙古族自治县',
+ 632521: '共和县',
+ 632522: '同德县',
+ 632523: '贵德县',
+ 632524: '兴海县',
+ 632525: '贵南县',
+ 632621: '玛沁县',
+ 632622: '班玛县',
+ 632623: '甘德县',
+ 632624: '达日县',
+ 632625: '久治县',
+ 632626: '玛多县',
+ 632701: '玉树市',
+ 632722: '杂多县',
+ 632723: '称多县',
+ 632724: '治多县',
+ 632725: '囊谦县',
+ 632726: '曲麻莱县',
+ 632801: '格尔木市',
+ 632802: '德令哈市',
+ 632821: '乌兰县',
+ 632822: '都兰县',
+ 632823: '天峻县',
+ 640104: '兴庆区',
+ 640105: '西夏区',
+ 640106: '金凤区',
+ 640121: '永宁县',
+ 640122: '贺兰县',
+ 640181: '灵武市',
+ 640202: '大武口区',
+ 640205: '惠农区',
+ 640221: '平罗县',
+ 640302: '利通区',
+ 640303: '红寺堡区',
+ 640323: '盐池县',
+ 640324: '同心县',
+ 640381: '青铜峡市',
+ 640402: '原州区',
+ 640422: '西吉县',
+ 640423: '隆德县',
+ 640424: '泾源县',
+ 640425: '彭阳县',
+ 640502: '沙坡头区',
+ 640521: '中宁县',
+ 640522: '海原县',
+ 650102: '天山区',
+ 650103: '沙依巴克区',
+ 650104: '新市区',
+ 650105: '水磨沟区',
+ 650106: '头屯河区',
+ 650107: '达坂城区',
+ 650109: '米东区',
+ 650121: '乌鲁木齐县',
+ 650202: '独山子区',
+ 650203: '克拉玛依区',
+ 650204: '白碱滩区',
+ 650205: '乌尔禾区',
+ 650402: '高昌区',
+ 650421: '鄯善县',
+ 650422: '托克逊县',
+ 650502: '伊州区',
+ 650521: '巴里坤哈萨克自治县',
+ 650522: '伊吾县',
+ 652301: '昌吉市',
+ 652302: '阜康市',
+ 652323: '呼图壁县',
+ 652324: '玛纳斯县',
+ 652325: '奇台县',
+ 652327: '吉木萨尔县',
+ 652328: '木垒哈萨克自治县',
+ 652701: '博乐市',
+ 652702: '阿拉山口市',
+ 652722: '精河县',
+ 652723: '温泉县',
+ 652801: '库尔勒市',
+ 652822: '轮台县',
+ 652823: '尉犁县',
+ 652824: '若羌县',
+ 652825: '且末县',
+ 652826: '焉耆回族自治县',
+ 652827: '和静县',
+ 652828: '和硕县',
+ 652829: '博湖县',
+ 652901: '阿克苏市',
+ 652922: '温宿县',
+ 652923: '库车县',
+ 652924: '沙雅县',
+ 652925: '新和县',
+ 652926: '拜城县',
+ 652927: '乌什县',
+ 652928: '阿瓦提县',
+ 652929: '柯坪县',
+ 653001: '阿图什市',
+ 653022: '阿克陶县',
+ 653023: '阿合奇县',
+ 653024: '乌恰县',
+ 653101: '喀什市',
+ 653121: '疏附县',
+ 653122: '疏勒县',
+ 653123: '英吉沙县',
+ 653124: '泽普县',
+ 653125: '莎车县',
+ 653126: '叶城县',
+ 653127: '麦盖提县',
+ 653128: '岳普湖县',
+ 653129: '伽师县',
+ 653130: '巴楚县',
+ 653131: '塔什库尔干塔吉克自治县',
+ 653201: '和田市',
+ 653221: '和田县',
+ 653222: '墨玉县',
+ 653223: '皮山县',
+ 653224: '洛浦县',
+ 653225: '策勒县',
+ 653226: '于田县',
+ 653227: '民丰县',
+ 654002: '伊宁市',
+ 654003: '奎屯市',
+ 654004: '霍尔果斯市',
+ 654021: '伊宁县',
+ 654022: '察布查尔锡伯自治县',
+ 654023: '霍城县',
+ 654024: '巩留县',
+ 654025: '新源县',
+ 654026: '昭苏县',
+ 654027: '特克斯县',
+ 654028: '尼勒克县',
+ 654201: '塔城市',
+ 654202: '乌苏市',
+ 654221: '额敏县',
+ 654223: '沙湾县',
+ 654224: '托里县',
+ 654225: '裕民县',
+ 654226: '和布克赛尔蒙古自治县',
+ 654301: '阿勒泰市',
+ 654321: '布尔津县',
+ 654322: '富蕴县',
+ 654323: '福海县',
+ 654324: '哈巴河县',
+ 654325: '青河县',
+ 654326: '吉木乃县',
+ 659001: '石河子市',
+ 659002: '阿拉尔市',
+ 659003: '图木舒克市',
+ 659004: '五家渠市',
+ 659005: '北屯市',
+ 659006: '铁门关市',
+ 659007: '双河市',
+ 659008: '可克达拉市',
+ 659009: '昆玉市',
+ 710101: '中正区',
+ 710102: '大同区',
+ 710103: '中山区',
+ 710104: '松山区',
+ 710105: '大安区',
+ 710106: '万华区',
+ 710107: '信义区',
+ 710108: '士林区',
+ 710109: '北投区',
+ 710110: '内湖区',
+ 710111: '南港区',
+ 710112: '文山区',
+ 710199: '其它区',
+ 710201: '新兴区',
+ 710202: '前金区',
+ 710203: '芩雅区',
+ 710204: '盐埕区',
+ 710205: '鼓山区',
+ 710206: '旗津区',
+ 710207: '前镇区',
+ 710208: '三民区',
+ 710209: '左营区',
+ 710210: '楠梓区',
+ 710211: '小港区',
+ 710241: '苓雅区',
+ 710242: '仁武区',
+ 710243: '大社区',
+ 710244: '冈山区',
+ 710245: '路竹区',
+ 710246: '阿莲区',
+ 710247: '田寮区',
+ 710248: '燕巢区',
+ 710249: '桥头区',
+ 710250: '梓官区',
+ 710251: '弥陀区',
+ 710252: '永安区',
+ 710253: '湖内区',
+ 710254: '凤山区',
+ 710255: '大寮区',
+ 710256: '林园区',
+ 710257: '鸟松区',
+ 710258: '大树区',
+ 710259: '旗山区',
+ 710260: '美浓区',
+ 710261: '六龟区',
+ 710262: '内门区',
+ 710263: '杉林区',
+ 710264: '甲仙区',
+ 710265: '桃源区',
+ 710266: '那玛夏区',
+ 710267: '茂林区',
+ 710268: '茄萣区',
+ 710299: '其它区',
+ 710301: '中西区',
+ 710302: '东区',
+ 710303: '南区',
+ 710304: '北区',
+ 710305: '安平区',
+ 710306: '安南区',
+ 710339: '永康区',
+ 710340: '归仁区',
+ 710341: '新化区',
+ 710342: '左镇区',
+ 710343: '玉井区',
+ 710344: '楠西区',
+ 710345: '南化区',
+ 710346: '仁德区',
+ 710347: '关庙区',
+ 710348: '龙崎区',
+ 710349: '官田区',
+ 710350: '麻豆区',
+ 710351: '佳里区',
+ 710352: '西港区',
+ 710353: '七股区',
+ 710354: '将军区',
+ 710355: '学甲区',
+ 710356: '北门区',
+ 710357: '新营区',
+ 710358: '后壁区',
+ 710359: '白河区',
+ 710360: '东山区',
+ 710361: '六甲区',
+ 710362: '下营区',
+ 710363: '柳营区',
+ 710364: '盐水区',
+ 710365: '善化区',
+ 710366: '大内区',
+ 710367: '山上区',
+ 710368: '新市区',
+ 710369: '安定区',
+ 710399: '其它区',
+ 710401: '中区',
+ 710402: '东区',
+ 710403: '南区',
+ 710404: '西区',
+ 710405: '北区',
+ 710406: '北屯区',
+ 710407: '西屯区',
+ 710408: '南屯区',
+ 710431: '太平区',
+ 710432: '大里区',
+ 710433: '雾峰区',
+ 710434: '乌日区',
+ 710435: '丰原区',
+ 710436: '后里区',
+ 710437: '石冈区',
+ 710438: '东势区',
+ 710439: '和平区',
+ 710440: '新社区',
+ 710441: '潭子区',
+ 710442: '大雅区',
+ 710443: '神冈区',
+ 710444: '大肚区',
+ 710445: '沙鹿区',
+ 710446: '龙井区',
+ 710447: '梧栖区',
+ 710448: '清水区',
+ 710449: '大甲区',
+ 710450: '外埔区',
+ 710451: '大安区',
+ 710499: '其它区',
+ 710507: '金沙镇',
+ 710508: '金湖镇',
+ 710509: '金宁乡',
+ 710510: '金城镇',
+ 710511: '烈屿乡',
+ 710512: '乌坵乡',
+ 710614: '南投市',
+ 710615: '中寮乡',
+ 710616: '草屯镇',
+ 710617: '国姓乡',
+ 710618: '埔里镇',
+ 710619: '仁爱乡',
+ 710620: '名间乡',
+ 710621: '集集镇',
+ 710622: '水里乡',
+ 710623: '鱼池乡',
+ 710624: '信义乡',
+ 710625: '竹山镇',
+ 710626: '鹿谷乡',
+ 710701: '仁爱区',
+ 710702: '信义区',
+ 710703: '中正区',
+ 710704: '中山区',
+ 710705: '安乐区',
+ 710706: '暖暖区',
+ 710707: '七堵区',
+ 710799: '其它区',
+ 710801: '东区',
+ 710802: '北区',
+ 710803: '香山区',
+ 710899: '其它区',
+ 710901: '东区',
+ 710902: '西区',
+ 710999: '其它区',
+ 711130: '万里区',
+ 711132: '板桥区',
+ 711133: '汐止区',
+ 711134: '深坑区',
+ 711136: '瑞芳区',
+ 711137: '平溪区',
+ 711138: '双溪区',
+ 711140: '新店区',
+ 711141: '坪林区',
+ 711142: '乌来区',
+ 711143: '永和区',
+ 711144: '中和区',
+ 711145: '土城区',
+ 711146: '三峡区',
+ 711147: '树林区',
+ 711149: '三重区',
+ 711150: '新庄区',
+ 711151: '泰山区',
+ 711152: '林口区',
+ 711154: '五股区',
+ 711155: '八里区',
+ 711156: '淡水区',
+ 711157: '三芝区',
+ 711287: '宜兰市',
+ 711288: '头城镇',
+ 711289: '礁溪乡',
+ 711290: '壮围乡',
+ 711291: '员山乡',
+ 711292: '罗东镇',
+ 711293: '三星乡',
+ 711294: '大同乡',
+ 711295: '五结乡',
+ 711296: '冬山乡',
+ 711297: '苏澳镇',
+ 711298: '南澳乡',
+ 711299: '钓鱼台',
+ 711387: '竹北市',
+ 711388: '湖口乡',
+ 711389: '新丰乡',
+ 711390: '新埔镇',
+ 711391: '关西镇',
+ 711392: '芎林乡',
+ 711393: '宝山乡',
+ 711394: '竹东镇',
+ 711395: '五峰乡',
+ 711396: '横山乡',
+ 711397: '尖石乡',
+ 711398: '北埔乡',
+ 711399: '峨眉乡',
+ 711487: '中坜市',
+ 711488: '平镇市',
+ 711489: '龙潭乡',
+ 711490: '杨梅市',
+ 711491: '新屋乡',
+ 711492: '观音乡',
+ 711493: '桃园市',
+ 711494: '龟山乡',
+ 711495: '八德市',
+ 711496: '大溪镇',
+ 711497: '复兴乡',
+ 711498: '大园乡',
+ 711499: '芦竹乡',
+ 711582: '竹南镇',
+ 711583: '头份镇',
+ 711584: '三湾乡',
+ 711585: '南庄乡',
+ 711586: '狮潭乡',
+ 711587: '后龙镇',
+ 711588: '通霄镇',
+ 711589: '苑里镇',
+ 711590: '苗栗市',
+ 711591: '造桥乡',
+ 711592: '头屋乡',
+ 711593: '公馆乡',
+ 711594: '大湖乡',
+ 711595: '泰安乡',
+ 711596: '铜锣乡',
+ 711597: '三义乡',
+ 711598: '西湖乡',
+ 711599: '卓兰镇',
+ 711774: '彰化市',
+ 711775: '芬园乡',
+ 711776: '花坛乡',
+ 711777: '秀水乡',
+ 711778: '鹿港镇',
+ 711779: '福兴乡',
+ 711780: '线西乡',
+ 711781: '和美镇',
+ 711782: '伸港乡',
+ 711783: '员林镇',
+ 711784: '社头乡',
+ 711785: '永靖乡',
+ 711786: '埔心乡',
+ 711787: '溪湖镇',
+ 711788: '大村乡',
+ 711789: '埔盐乡',
+ 711790: '田中镇',
+ 711791: '北斗镇',
+ 711792: '田尾乡',
+ 711793: '埤头乡',
+ 711794: '溪州乡',
+ 711795: '竹塘乡',
+ 711796: '二林镇',
+ 711797: '大城乡',
+ 711798: '芳苑乡',
+ 711799: '二水乡',
+ 711982: '番路乡',
+ 711983: '梅山乡',
+ 711984: '竹崎乡',
+ 711985: '阿里山乡',
+ 711986: '中埔乡',
+ 711987: '大埔乡',
+ 711988: '水上乡',
+ 711989: '鹿草乡',
+ 711990: '太保市',
+ 711991: '朴子市',
+ 711992: '东石乡',
+ 711993: '六脚乡',
+ 711994: '新港乡',
+ 711995: '民雄乡',
+ 711996: '大林镇',
+ 711997: '溪口乡',
+ 711998: '义竹乡',
+ 711999: '布袋镇',
+ 712180: '斗南镇',
+ 712181: '大埤乡',
+ 712182: '虎尾镇',
+ 712183: '土库镇',
+ 712184: '褒忠乡',
+ 712185: '东势乡',
+ 712186: '台西乡',
+ 712187: '仑背乡',
+ 712188: '麦寮乡',
+ 712189: '斗六市',
+ 712190: '林内乡',
+ 712191: '古坑乡',
+ 712192: '莿桐乡',
+ 712193: '西螺镇',
+ 712194: '二仑乡',
+ 712195: '北港镇',
+ 712196: '水林乡',
+ 712197: '口湖乡',
+ 712198: '四湖乡',
+ 712199: '元长乡',
+ 712467: '屏东市',
+ 712468: '三地门乡',
+ 712469: '雾台乡',
+ 712470: '玛家乡',
+ 712471: '九如乡',
+ 712472: '里港乡',
+ 712473: '高树乡',
+ 712474: '盐埔乡',
+ 712475: '长治乡',
+ 712476: '麟洛乡',
+ 712477: '竹田乡',
+ 712478: '内埔乡',
+ 712479: '万丹乡',
+ 712480: '潮州镇',
+ 712481: '泰武乡',
+ 712482: '来义乡',
+ 712483: '万峦乡',
+ 712484: '莰顶乡',
+ 712485: '新埤乡',
+ 712486: '南州乡',
+ 712487: '林边乡',
+ 712488: '东港镇',
+ 712489: '琉球乡',
+ 712490: '佳冬乡',
+ 712491: '新园乡',
+ 712492: '枋寮乡',
+ 712493: '枋山乡',
+ 712494: '春日乡',
+ 712495: '狮子乡',
+ 712496: '车城乡',
+ 712497: '牡丹乡',
+ 712498: '恒春镇',
+ 712499: '满州乡',
+ 712584: '台东市',
+ 712585: '绿岛乡',
+ 712586: '兰屿乡',
+ 712587: '延平乡',
+ 712588: '卑南乡',
+ 712589: '鹿野乡',
+ 712590: '关山镇',
+ 712591: '海端乡',
+ 712592: '池上乡',
+ 712593: '东河乡',
+ 712594: '成功镇',
+ 712595: '长滨乡',
+ 712596: '金峰乡',
+ 712597: '大武乡',
+ 712598: '达仁乡',
+ 712599: '太麻里乡',
+ 712686: '花莲市',
+ 712687: '新城乡',
+ 712688: '太鲁阁',
+ 712689: '秀林乡',
+ 712690: '吉安乡',
+ 712691: '寿丰乡',
+ 712692: '凤林镇',
+ 712693: '光复乡',
+ 712694: '丰滨乡',
+ 712695: '瑞穗乡',
+ 712696: '万荣乡',
+ 712697: '玉里镇',
+ 712698: '卓溪乡',
+ 712699: '富里乡',
+ 712794: '马公市',
+ 712795: '西屿乡',
+ 712796: '望安乡',
+ 712797: '七美乡',
+ 712798: '白沙乡',
+ 712799: '湖西乡',
+ 712896: '南竿乡',
+ 712897: '北竿乡',
+ 712898: '东引乡',
+ 712899: '莒光乡',
+ 810101: '中西区',
+ 810102: '湾仔',
+ 810103: '东区',
+ 810104: '南区',
+ 810201: '九龙城区',
+ 810202: '油尖旺区',
+ 810203: '深水埗区',
+ 810204: '黄大仙区',
+ 810205: '观塘区',
+ 810301: '北区',
+ 810302: '大埔区',
+ 810303: '沙田区',
+ 810304: '西贡区',
+ 810305: '元朗区',
+ 810306: '屯门区',
+ 810307: '荃湾区',
+ 810308: '葵青区',
+ 810309: '离岛区',
+ 820101: '澳门半岛',
+ 820201: '离岛'
+ }
+ };
+
+
+ Class.prototype.config = {
+ elem: '',
+ data: {
+ province: '',
+ city: '',
+ county: '',
+ provinceCode: 0,
+ cityCode: 0,
+ countyCode: 0,
+ },
+ change: function(result){}
+ };
+
+ Class.prototype.index = 0;
+
+ Class.prototype.render = function () {
+ let that = this, options = that.config;
+ options.elem = $(options.elem);
+ options.bindAction = $(options.bindAction);
+
+ that.events();
+ };
+
+ Class.prototype.events = function () {
+ let that = this, options = that.config, index;
+ let provinceFilter = 'province-' + layarea._id;
+ let cityFilter = 'city-' + layarea._id;
+ let countyFilter = 'county-' + layarea._id;
+
+ let provinceEl = options.elem.find('.province-selector');
+ let cityEl = options.elem.find('.city-selector');
+ let countyEl = options.elem.find('.county-selector');
+
+ //filter
+ if(provinceEl.attr('lay-filter')){
+ provinceFilter = provinceEl.attr('lay-filter');
+ }
+ if(cityEl.attr('lay-filter')){
+ cityFilter = cityEl.attr('lay-filter');
+ }
+ if(countyEl.attr('lay-filter')){
+ countyFilter = countyEl.attr('lay-filter');
+ }
+ provinceEl.attr('lay-filter', provinceFilter);
+ cityEl.attr('lay-filter', cityFilter);
+ countyEl.attr('lay-filter', countyFilter);
+
+ //获取默认值
+ if(provinceEl.data('value')){
+ options.data.province = provinceEl.data('value');
+ options.data.provinceCode = getCode('province', options.data.province);
+ }
+ if(cityEl.data('value')){
+ options.data.city = cityEl.data('value');
+ let code = getCode('city', options.data.city, options.data.provinceCode.slice(0, 2));
+ options.data.cityCode = code;
+ }
+ if(countyEl.data('value')){
+ options.data.county = countyEl.data('value');
+ options.data.countyCode = getCode('county', options.data.county, options.data.cityCode.slice(0, 4));
+ }
+ provinceEl.attr('lay-filter', provinceFilter);
+ cityEl.attr('lay-filter', cityFilter);
+ countyEl.attr('lay-filter', countyFilter);
+
+ //监听结果
+ form.on('select('+provinceFilter+')', function(data){
+ options.data.province = data.value;
+ options.data.provinceCode = getCode('province', data.value);
+ renderCity(options.data.provinceCode);
+
+ options.change(options.data);
+ });
+ form.on('select('+cityFilter+')', function(data){
+ options.data.city = data.value;
+ if(options.data.provinceCode){
+ options.data.cityCode = getCode('city', data.value, options.data.provinceCode.slice(0, 2));
+ renderCounty(options.data.cityCode);
+ }
+
+ options.change(options.data);
+ });
+ form.on('select('+countyFilter+')', function(data){
+ options.data.county = data.value;
+ if(options.data.cityCode){
+ options.data.countyCode = getCode('county', data.value, options.data.cityCode.slice(0, 4));
+ }
+ options.change(options.data);
+ });
+
+ renderProvince();
+
+ //查找province
+ function renderProvince(){
+ let tpl = '
--选择省-- ';
+ let provinceList = getList("province");
+ let currentCode = '';
+ let currentName = '';
+ provinceList.forEach(function(_item){
+ // if (!currentCode){
+ // currentCode = _item.code;
+ // currentName = _item.name;
+ // }
+ if(_item.name === options.data.province){
+ currentCode = _item.code;
+ currentName = _item.name;
+ }
+ tpl += '
'+_item.name+' ';
+ });
+ provinceEl.html(tpl);
+ provinceEl.val(options.data.province);
+ form.render('select');
+ renderCity(currentCode);
+ }
+
+ function renderCity(provinceCode){
+ let tpl = '
--选择市-- ';
+ let cityList = getList('city', provinceCode.slice(0, 2));
+ let currentCode = '';
+ let currentName = '';
+ cityList.forEach(function(_item){
+ // if (!currentCode){
+ // currentCode = _item.code;
+ // currentName = _item.name;
+ // }
+ if(_item.name === options.data.city){
+ currentCode = _item.code;
+ currentName = _item.name;
+ }
+ tpl += '
'+_item.name+' ';
+ });
+ options.data.city = currentName;
+ cityEl.html(tpl);
+ cityEl.val(options.data.city);
+ form.render('select');
+ renderCounty(currentCode);
+ }
+
+ function renderCounty(cityCode){
+ let tpl = '
--选择区-- ';
+ let countyList = getList('county', cityCode.slice(0, 4));
+ let currentCode = '';
+ let currentName = '';
+ countyList.forEach(function(_item){
+ // if (!currentCode){
+ // currentCode = _item.code;
+ // currentName = _item.name;
+ // }
+ if(_item.name === options.data.county){
+ currentCode = _item.code;
+ currentName = _item.name;
+ }
+ tpl += '
'+_item.name+' ';
+ });
+ options.data.county = currentName;
+ countyEl.html(tpl);
+ countyEl.val(options.data.county);
+
+ form.render('select');
+ }
+
+ function getList(type, code) {
+ let result = [];
+
+ if (type !== 'province' && !code) {
+ return result;
+ }
+
+ let list = areaList[type + "_list"] || {};
+ result = Object.keys(list).map(function (code) {
+ return {
+ code: code,
+ name: list[code]
+ };
+ });
+
+ if (code) {
+ // oversea code
+ if (code[0] === '9' && type === 'city') {
+ code = '9';
+ }
+
+ result = result.filter(function (item) {
+ return item.code.indexOf(code) === 0;
+ });
+ }
+
+ return result;
+ }
+
+ function getCode(type, name, parentCode = 0){
+ let code = '';
+ let list = areaList[type + "_list"] || {};
+ let result = {};
+ Object.keys(list).map(function (_code) {
+ if(parentCode){
+ if(_code.indexOf(parentCode) === 0){
+ result[_code] = list[_code];
+ }
+ }else{
+ result[_code] = list[_code];
+ }
+ });
+ layui.each(result, function(_code, _name){
+ if(_name === name){
+ code = _code;
+ }
+ });
+
+ return code;
+ }
+ };
+
+ layarea.render = function (options) {
+ let inst = new Class(options);
+ layarea._id++;
+ return thisArea.call(inst);
+ };
+
+ //暴露接口
+ exports('layarea', layarea);
+});
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniAdmin.js b/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniAdmin.js
new file mode 100644
index 0000000..08b4b6b
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniAdmin.js
@@ -0,0 +1,350 @@
+/**
+ * date:2020/02/27
+ * author:Mr.Chung
+ * version:2.0
+ * description:layuimini 主体框架扩展
+ */
+layui.define(["jquery", "miniMenu", "element","miniTab", "miniTheme"], function (exports) {
+ var $ = layui.$,
+ layer = layui.layer,
+ miniMenu = layui.miniMenu,
+ miniTheme = layui.miniTheme,
+ element = layui.element ,
+ miniTab = layui.miniTab;
+
+ if (!/http(s*):\/\//.test(location.href)) {
+ var tips = "请先将项目部署至web容器(Apache/Tomcat/Nginx/IIS/等),否则部分数据将无法显示";
+ return layer.alert(tips);
+ }
+
+ var miniAdmin = {
+
+ /**
+ * 后台框架初始化
+ * @param options.iniUrl 后台初始化接口地址
+ * @param options.clearUrl 后台清理缓存接口
+ * @param options.urlHashLocation URL地址hash定位
+ * @param options.bgColorDefault 默认皮肤
+ * @param options.multiModule 是否开启多模块
+ * @param options.menuChildOpen 是否展开子菜单
+ * @param options.loadingTime 初始化加载时间
+ * @param options.pageAnim iframe窗口动画
+ * @param options.maxTabNum 最大的tab打开数量
+ */
+ render: function (options) {
+ options.iniUrl = options.iniUrl || null;
+ options.clearUrl = options.clearUrl || null;
+ options.urlHashLocation = options.urlHashLocation || false;
+ options.bgColorDefault = options.bgColorDefault || 0;
+ options.multiModule = options.multiModule || false;
+ options.menuChildOpen = options.menuChildOpen || false;
+ options.loadingTime = options.loadingTime || 1;
+ options.pageAnim = options.pageAnim || false;
+ options.maxTabNum = options.maxTabNum || 20;
+ $.getJSON(options.iniUrl, function (data) {
+ if (data == null) {
+ miniAdmin.error('暂无菜单信息')
+ } else {
+ miniAdmin.renderLogo(data.logoInfo);
+ miniAdmin.renderClear(options.clearUrl);
+ miniAdmin.renderHome(data.homeInfo);
+ miniAdmin.renderAnim(options.pageAnim);
+ miniAdmin.listen();
+ miniMenu.render({
+ menuList: data.menuInfo,
+ multiModule: options.multiModule,
+ menuChildOpen: options.menuChildOpen
+ });
+ miniTab.render({
+ filter: 'layuiminiTab',
+ urlHashLocation: options.urlHashLocation,
+ multiModule: options.multiModule,
+ menuChildOpen: options.menuChildOpen,
+ maxTabNum: options.maxTabNum,
+ menuList: data.menuInfo,
+ homeInfo: data.homeInfo,
+ listenSwichCallback: function () {
+ miniAdmin.renderDevice();
+ }
+ });
+ miniTheme.render({
+ bgColorDefault: options.bgColorDefault,
+ listen: true,
+ });
+ miniAdmin.deleteLoader(options.loadingTime);
+ }
+ }).fail(function () {
+ miniAdmin.error('菜单接口有误');
+ });
+ },
+
+ /**
+ * 初始化logo
+ * @param data
+ */
+ renderLogo: function (data) {
+ var html = '
' + data.title + ' ';
+ $('.layuimini-logo').html(html);
+ },
+
+ /**
+ * 初始化首页
+ * @param data
+ */
+ renderHome: function (data) {
+ sessionStorage.setItem('layuiminiHomeHref', data.href);
+ $('#layuiminiHomeTabId').html('
' + data.title + ' ဆ ');
+ $('#layuiminiHomeTabId').attr('lay-id', data.href);
+ $('#layuiminiHomeTabIframe').html('
');
+ },
+
+ /**
+ * 初始化缓存地址
+ * @param clearUrl
+ */
+ renderClear: function (clearUrl) {
+ $('.layuimini-clear').attr('data-href',clearUrl);
+ },
+
+ /**
+ * 初始化iframe窗口动画
+ * @param anim
+ */
+ renderAnim: function (anim) {
+ if (anim) {
+ $('#layuimini-bg-color').after('');
+ }
+ },
+
+ fullScreen: function () {
+ var el = document.documentElement;
+ var rfs = el.requestFullScreen || el.webkitRequestFullScreen;
+ if (typeof rfs != "undefined" && rfs) {
+ rfs.call(el);
+ } else if (typeof window.ActiveXObject != "undefined") {
+ var wscript = new ActiveXObject("WScript.Shell");
+ if (wscript != null) {
+ wscript.SendKeys("{F11}");
+ }
+ } else if (el.msRequestFullscreen) {
+ el.msRequestFullscreen();
+ } else if (el.oRequestFullscreen) {
+ el.oRequestFullscreen();
+ } else if (el.webkitRequestFullscreen) {
+ el.webkitRequestFullscreen();
+ } else if (el.mozRequestFullScreen) {
+ el.mozRequestFullScreen();
+ } else {
+ miniAdmin.error('浏览器不支持全屏调用!');
+ }
+ },
+
+ /**
+ * 退出全屏
+ */
+ exitFullScreen: function () {
+ var el = document;
+ var cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.exitFullScreen;
+ if (typeof cfs != "undefined" && cfs) {
+ cfs.call(el);
+ } else if (typeof window.ActiveXObject != "undefined") {
+ var wscript = new ActiveXObject("WScript.Shell");
+ if (wscript != null) {
+ wscript.SendKeys("{F11}");
+ }
+ } else if (el.msExitFullscreen) {
+ el.msExitFullscreen();
+ } else if (el.oRequestFullscreen) {
+ el.oCancelFullScreen();
+ }else if (el.mozCancelFullScreen) {
+ el.mozCancelFullScreen();
+ } else if (el.webkitCancelFullScreen) {
+ el.webkitCancelFullScreen();
+ } else {
+ miniAdmin.error('浏览器不支持全屏调用!');
+ }
+ },
+
+ /**
+ * 初始化设备端
+ */
+ renderDevice: function () {
+ if (miniAdmin.checkMobile()) {
+ $('.layuimini-tool i').attr('data-side-fold', 1);
+ $('.layuimini-tool i').attr('class', 'fa fa-outdent');
+ $('.layui-layout-body').removeClass('layuimini-mini');
+ $('.layui-layout-body').addClass('layuimini-all');
+ }
+ },
+
+
+ /**
+ * 初始化加载时间
+ * @param loadingTime
+ */
+ deleteLoader: function (loadingTime) {
+ setTimeout(function () {
+ $('.layuimini-loader').fadeOut();
+ }, loadingTime * 1000)
+ },
+
+ /**
+ * 成功
+ * @param title
+ * @returns {*}
+ */
+ success: function (title) {
+ return layer.msg(title, {icon: 1, shade: this.shade, scrollbar: false, time: 2000, shadeClose: true});
+ },
+
+ /**
+ * 失败
+ * @param title
+ * @returns {*}
+ */
+ error: function (title) {
+ return layer.msg(title, {icon: 2, shade: this.shade, scrollbar: false, time: 3000, shadeClose: true});
+ },
+
+ /**
+ * 判断是否为手机
+ * @returns {boolean}
+ */
+ checkMobile: function () {
+ var ua = navigator.userAgent.toLocaleLowerCase();
+ var pf = navigator.platform.toLocaleLowerCase();
+ var isAndroid = (/android/i).test(ua) || ((/iPhone|iPod|iPad/i).test(ua) && (/linux/i).test(pf))
+ || (/ucweb.*linux/i.test(ua));
+ var isIOS = (/iPhone|iPod|iPad/i).test(ua) && !isAndroid;
+ var isWinPhone = (/Windows Phone|ZuneWP7/i).test(ua);
+ var clientWidth = document.documentElement.clientWidth;
+ if (!isAndroid && !isIOS && !isWinPhone && clientWidth > 1024) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+
+ /**
+ * 监听
+ */
+ listen: function () {
+
+ /**
+ * 清理
+ */
+ $('body').on('click', '[data-clear]', function () {
+ var loading = layer.load(0, {shade: false, time: 2 * 1000});
+ sessionStorage.clear();
+
+ // 判断是否清理服务端
+ var clearUrl = $(this).attr('data-href');
+ if (clearUrl != undefined && clearUrl != '' && clearUrl != null) {
+ $.getJSON(clearUrl, function (data, status) {
+ layer.close(loading);
+ if (data.code != 1) {
+ return miniAdmin.error(data.msg);
+ } else {
+ return miniAdmin.success(data.msg);
+ }
+ }).fail(function () {
+ layer.close(loading);
+ return miniAdmin.error('清理缓存接口有误');
+ });
+ } else {
+ layer.close(loading);
+ return miniAdmin.success('清除缓存成功');
+ }
+ });
+
+ /**
+ * 刷新
+ */
+ $('body').on('click', '[data-refresh]', function () {
+ $(".layui-tab-item.layui-show").find("iframe")[0].contentWindow.location.reload();
+ miniAdmin.success('刷新成功');
+ });
+
+ /**
+ * 监听提示信息
+ */
+ $("body").on("mouseenter", ".layui-nav-tree .menu-li", function () {
+ if (miniAdmin.checkMobile()) {
+ return false;
+ }
+ var classInfo = $(this).attr('class'),
+ tips = $(this).prop("innerHTML"),
+ isShow = $('.layuimini-tool i').attr('data-side-fold');
+ if (isShow == 0 && tips) {
+ tips = "" ;
+ window.openTips = layer.tips(tips, $(this), {
+ tips: [2, '#2f4056'],
+ time: 300000,
+ skin:"popup-tips",
+ success:function (el) {
+ var left = $(el).position().left - 10 ;
+ $(el).css({ left:left });
+ element.render();
+ }
+ });
+ }
+ });
+
+ $("body").on("mouseleave", ".popup-tips", function () {
+ if (miniAdmin.checkMobile()) {
+ return false;
+ }
+ var isShow = $('.layuimini-tool i').attr('data-side-fold');
+ if (isShow == 0) {
+ try {
+ layer.close(window.openTips);
+ } catch (e) {
+ console.log(e.message);
+ }
+ }
+ });
+
+
+ /**
+ * 全屏
+ */
+ $('body').on('click', '[data-check-screen]', function () {
+ var check = $(this).attr('data-check-screen');
+ if (check == 'full') {
+ miniAdmin.fullScreen();
+ $(this).attr('data-check-screen', 'exit');
+ $(this).html('
');
+ } else {
+ miniAdmin.exitFullScreen();
+ $(this).attr('data-check-screen', 'full');
+ $(this).html('
');
+ }
+ });
+
+ /**
+ * 点击遮罩层
+ */
+ $('body').on('click', '.layuimini-make', function () {
+ miniAdmin.renderDevice();
+ });
+
+ }
+ };
+
+
+ exports("miniAdmin", miniAdmin);
+});
diff --git a/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniMenu.js b/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniMenu.js
new file mode 100644
index 0000000..507eae3
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniMenu.js
@@ -0,0 +1,250 @@
+/**
+ * date:2020/02/27
+ * author:Mr.Chung
+ * version:2.0
+ * description:layuimini 菜单框架扩展
+ */
+layui.define(["element","laytpl" ,"jquery"], function (exports) {
+ var element = layui.element,
+ $ = layui.$,
+ laytpl = layui.laytpl,
+ layer = layui.layer;
+
+ var miniMenu = {
+
+ /**
+ * 菜单初始化
+ * @param options.menuList 菜单数据信息
+ * @param options.multiModule 是否开启多模块
+ * @param options.menuChildOpen 是否展开子菜单
+ */
+ render: function (options) {
+ options.menuList = options.menuList || [];
+ options.multiModule = options.multiModule || false;
+ options.menuChildOpen = options.menuChildOpen || false;
+ if (options.multiModule) {
+ miniMenu.renderMultiModule(options.menuList, options.menuChildOpen);
+ } else {
+ miniMenu.renderSingleModule(options.menuList, options.menuChildOpen);
+ }
+ miniMenu.listen();
+ },
+
+ /**
+ * 单模块
+ * @param menuList 菜单数据
+ * @param menuChildOpen 是否默认展开
+ */
+ renderSingleModule: function (menuList, menuChildOpen) {
+ menuList = menuList || [];
+ var leftMenuHtml = '',
+ childOpenClass = '',
+ leftMenuCheckDefault = 'layui-this';
+ var me = this ;
+ if (menuChildOpen) childOpenClass = ' layui-nav-itemed';
+ leftMenuHtml = this.renderLeftMenu(menuList,{ childOpenClass:childOpenClass }) ;
+ $('.layui-layout-body').addClass('layuimini-single-module'); //单模块标识
+ $('.layuimini-header-menu').remove();
+ $('.layuimini-menu-left').html(leftMenuHtml);
+
+ element.init();
+ },
+
+ /**
+ * 渲染一级菜单
+ */
+ compileMenu: function(menu,isSub){
+ var menuHtml = '' ;
+ if(isSub){
+ menuHtml = ''
+ }
+ return laytpl(menuHtml).render(menu);
+ },
+ compileMenuContainer :function(menu,isSub){
+ var wrapperHtml = '
' ;
+ if(isSub){
+ wrapperHtml = '
{{d.children}} ' ;
+ }
+ if(!menu.children){
+ return "";
+ }
+ return laytpl(wrapperHtml).render(menu);
+ },
+
+ each:function(list,callback){
+ var _list = [];
+ for(var i = 0 ,length = list.length ; i
")}if(E.width){A.$view.css("width",E.width);A.$tHeadGroup.css("width",E.width);A.$tBodyGroup.css("width",E.width)}var v=this.resize(true);var D="
"+this.renderBodyTh()+" ";A.$tBodyGroup.children("style").remove();if(E.height){A.$tHead.html(v+D);A.$tBody.html(v+"
");if(E.height.indexOf("full-")===0){var z=parseFloat(E.height.substring(5))+A.$toolbar.outerHeight()+A.$tHeadGroup.outerHeight()+1;A.$tBodyGroup.append(['"].join(""));A.$tBodyGroup.data("full",z);A.$tBodyGroup.css("height","")}else{A.$tBodyGroup.css("height",E.height);A.$tBodyGroup.data("full","")}A.$tHeadGroup.show()}else{A.$tHeadGroup.hide();var x={lg:50,sm:30,md:38};A.$tBodyGroup.append(['"].join(""));A.$tBody.html(v+D+"
")}c.render("checkbox",B);function t(H){var F=H.data("parent"),G;if(!F){return}var I=A.$table.children("thead").children("tr").children('[data-key="'+F+'"]');var J=I.attr("colspan")-1;I.attr("colspan",J);if(J===0){I.addClass("layui-hide")}t(I)}A.$table.children("thead").children("tr").children("th.layui-hide").each(function(){t(g(this))});if(E.reqData){this.options.data=undefined;this.renderBodyAsync()}else{if(E.data&&E.data.length>0){this.renderBodyData(E.data)}else{A.$loading.hide();A.$empty.show()}}};p.prototype.bindEvents=function(){var v=this;var t=this.options;var u=this.getComponents();var w=u.$table.children("tbody");var x=function(y){var z=g(this);if(!z.is("tr")){var C=z.parent("tr");if(C.length>0){z=C}else{z=z.parentsUntil("tr").last().parent()}}var A=v.getDataByTr(z);var B={tr:z,data:A,del:function(){var F=z.data("index");var D=parseInt(z.data("indent"));z.nextAll("tr").each(function(){if(parseInt(g(this).data("indent"))<=D){return false}g(this).remove()});var G=(typeof F==="number"?1:F.split("-").length);z.nextAll("tr").each(function(){var H=g(this);if(parseInt(H.data("indent"))
=D){return true}v.checkParentCB(g(this));D=H});v.checkChooseAllCB();if(t.data.length===0){u.$empty.show()}f(u.$view)},update:function(E){A=g.extend(true,A,E);var D=parseInt(z.data("indent"));v.renderBodyTr(A,D,undefined,z);c.render(null,u.filter);v.renderNumberCol();z.prevAll("tr").each(function(){var F=parseInt(g(this).data("indent"));if(F>=D){return true}v.checkParentCB(g(this));D=F});v.checkChooseAllCB()}};return g.extend(B,y)};w.off("click.fold").on("click.fold",".ew-tree-pack",function(C){layui.stope(C);var A=g(this).parentsUntil("tr").last().parent();if(A.hasClass("ew-tree-table-loading")){return}var y=A.data("have-child");if(y!==true&&y!=="true"){return}var z=A.hasClass("ew-tree-table-open");var B=v.getDataByTr(A);if(!z&&!B[t.tree.childName]){v.renderBodyAsync(B,A)}else{B[t.tree.openName]=i(A)}});w.off("click.tool").on("click.tool","*[lay-event]",function(z){layui.stope(z);var y=g(this);layui.event.call(this,h,"tool("+u.filter+")",x.call(this,{event:y.attr("lay-event")}))});c.on("radio("+u.radioFilter+")",function(y){var z=v.getDataByTr(g(y.elem).parentsUntil("tr").last().parent());v.removeAllChecked();z.LAY_CHECKED=true;z.LAY_INDETERMINATE=false;layui.event.call(this,h,"checkbox("+u.filter+")",{checked:true,data:z,type:"one"})});c.on("checkbox("+u.checkboxFilter+")",function(C){var B=C.elem.checked;var E=g(C.elem);var z=E.next(".layui-form-checkbox");if(!B&&E.hasClass("ew-form-indeterminate")){B=true;E.prop("checked",B);z.addClass("layui-form-checked");E.removeClass("ew-form-indeterminate")}var A=E.parentsUntil("tr").last().parent();var D=v.getDataByTr(A);D.LAY_CHECKED=B;D.LAY_INDETERMINATE=false;if(D[t.tree.childName]&&D[t.tree.childName].length>0){v.checkSubCB(A,B)}var y=parseInt(A.data("indent"));A.prevAll("tr").each(function(){var F=parseInt(g(this).data("indent"));if(F0){return}var B=y.data("index");var z=y.find(".ew-tree-table-indent").length;var D=v.getDataByTr(y.parent());if("text"===H||"number"===H){var F=g(' ');F[0].value=D[G];y.append(F);F.focus();F.blur(function(){var K=g(this).val();if(K==D[G]){return g(this).remove()}var I=layui.event.call(this,h,"edit("+u.filter+")",x.call(this,{value:K,field:G}));if(I===false){g(this).addClass("layui-form-danger");g(this).focus()}else{D[G]=K;var J=y.data("key").split("-");v.renderBodyTd(D,z,B,y,t.cols[J[0]][J[1]])}})}else{console.error("不支持的单元格编辑类型:"+H)}}else{var A=layui.event.call(this,h,"cell("+u.filter+")",x.call(this,{td:y,field:G}));if(A===false){layui.stope(C)}}});w.off("dblclick.cellDouble").on("dblclick.cellDouble","td",function(C){var D=g(this);var z=D.data("type");if(z==="checkbox"||z==="radio"){return layui.stope(C)}var A=D.data("edit");var B=D.data("field");if(A){return layui.stope(C)}var y=layui.event.call(this,h,"cellDouble("+u.filter+")",x.call(this,{td:D,field:B}));if(y===false){layui.stope(C)}});u.$toolbar.off("click.toolbar").on("click.toolbar","*[lay-event]",function(A){layui.stope(A);var z=g(this);var y=z.attr("lay-event");if("LAYTABLE_COLS"===y){v.toggleCol()}else{if("LAYTABLE_EXPORT"===y){v.exportData("show")}else{if("LAYTABLE_PRINT"===y){v.printTable()}else{layui.event.call(this,h,"toolbar("+u.filter+")",{event:y,elem:z})}}}});u.$tBodyGroup.on("scroll",function(){var y=g(this);u.$tHeadGroup.scrollLeft(y.scrollLeft())});u.$toolbar.off("click.export").on("click.export",".layui-table-tool-panel>[data-type]",function(){var y=g(this).data("type");if("csv"===y||"xls"===y){v.exportData(y)}});u.$toolbar.off("click.panel").on("click.panel",".layui-table-tool-panel",function(y){layui.stope(y)});c.on("checkbox("+u.colsToggleFilter+")",function(y){v.toggleCol(y.elem.checked,undefined,y.value)})};p.prototype.getComponents=function(){var v=g(this.options.elem).next(".ew-tree-table");var t=v.attr("lay-filter");var w=v.children(".ew-tree-table-head");var u=v.children(".ew-tree-table-box");return{$view:v,filter:t,$tHeadGroup:w,$tBodyGroup:u,$tHead:w.children(".layui-table"),$tBody:u.children(".layui-table"),$table:v.find(".layui-table"),$toolbar:v.children(".ew-tree-table-tool"),$empty:u.children(".ew-tree-table-empty"),$loading:u.children(".ew-tree-table-loading"),checkboxFilter:"ew_tb_checkbox_"+t,radioFilter:"ew_tb_radio_"+t,chooseAllFilter:"ew_tb_choose_all_"+t,colsToggleFilter:"ew_tb_toggle_cols"+t}};p.prototype.eachCols=function(w,v){if(!v){v=this.options.colArrays}for(var t=0;t0){u.$loading.addClass("ew-loading-float")}u.$loading.show()}t.reqData(x,function(y){if(typeof y!=="string"&&y&&y.length>0&&t.tree.isPidData){y=a.pidToChildren(y,t.tree.idName,t.tree.pidName,t.tree.childName)}v.renderBodyData(y,x,w)})};p.prototype.renderBodyData=function(w,A,x){var u;if(typeof w==="string"){u=w;w=[]}var z=this;var C=this.options;var y=this.getComponents();if(A===undefined){C.data=w}else{A[C.tree.childName]=w}var v;if(x){v=parseInt(x.data("indent"))+1;A[C.tree.openName]=true}var t=this.renderBody(w,v,A);if(x){x.nextAll("tr").each(function(){if(parseInt(g(this).data("indent"))<=(v-1)){return false}g(this).remove()});x.after(t).addClass("ew-tree-table-open")}else{y.$tBody.children("tbody").html(t)}c.render(null,y.filter);this.renderNumberCol();if(x){this.checkParentCB(x);x.prevAll("tr").each(function(){var D=parseInt(g(this).data("indent"));if(D<(v-1)){z.checkParentCB(g(this));v=D+1}});x.removeClass("ew-tree-table-loading");var B=x.find(".ew-tree-pack").children(".ew-tree-table-arrow");B.removeClass("layui-anim layui-anim-rotate layui-anim-loop");if(u){x.removeClass("ew-tree-table-open")}else{if(w&&w.length===0){A[C.tree.haveChildName]=false;x.data("have-child",false);B.addClass("ew-tree-table-arrow-hide");B.next(".ew-tree-icon").after(C.tree.getIcon(A)).remove()}}}else{y.$loading.hide();y.$loading.removeClass("ew-loading-float");if(w&&w.length>0){y.$empty.hide()}else{y.$empty.show();if(u){y.$empty.text(u)}else{y.$empty.html(C.text.none)}}}this.checkChooseAllCB();f(y.$view);C.done&&C.done(w)};p.prototype.renderBody=function(z,t,y){var u=this.options;if(!t){t=0}var x="";if(!z||z.length===0){return x}var w=y?!y[u.tree.openName]:undefined;for(var v=0;v0}if(w){w.data("have-child",A?"true":"false");w.data("indent",u);w.removeClass("ew-tree-table-loading")}var v="');var y=0;this.eachCols(function(E,D){if(D.colGroup){return}v+=z.renderBodyTd(B,u,y,w?w.children("td").eq(y):undefined,D);y++});v+=" ";return v};p.prototype.renderBodyTd=function(C,v,A,t,u){if(u.colGroup){return""}var F=this.options;var y=this.getComponents();if(!v){v=0}var B="",E="",D="";if(u.type==="numbers"){B=' '}else{if(u.type==="checkbox"){B=[' '].join("")}else{if(u.type==="radio"){B=[' '].join("")}else{if(u.templet){if(typeof u.templet==="function"){B=u.templet(C)}else{if(typeof u.templet==="string"){d(g(u.templet).html()).render(C,function(G){B=G})}}}else{if(u.toolbar){if(typeof u.toolbar==="function"){B=u.toolbar(C)}else{if(typeof u.toolbar==="string"){d(g(u.toolbar).html()).render(C,function(G){B=G})}}}else{if(u.field&&C[u.field]!==undefined&&C[u.field]!==null){B=b.escape(C[u.field]===0?"0":C[u.field])}}}}}}if(A===F.tree.iconIndex){for(var w=0;w'}D+='';var z=C[F.tree.haveChildName];if(z===undefined){z=C[F.tree.childName]&&C[F.tree.childName].length>0}D+=(' ');D+=F.tree.getIcon(C);B=""+B+" ";if(F.tree.onlyIconControl){B=D+" "+B}else{B=D+B+""}}E=['"].join("");if(t){t.html(E)}var x=""+E+" ");return x};p.prototype.renderBodyTh=function(){var t=this.options;var v=this.getComponents();var u=[];g.each(t.cols,function(x,w){u.push("");g.each(w,function(A,z){u.push("");u.push('");u.push('
');var y=' ';if(z.type==="checkbox"){u.push(y)}else{u.push(z.title||"")}u.push('
');u.push('
');if(!z.colGroup&&!z.unresize){u.push(' ')}u.push(" ")});u.push(" ")});return u.join("")};p.prototype.resize=function(z){var t=this.options;var x=this.getComponents();var v=1,u=1,A=true,w=0;this.eachCols(function(B,C){if(C.colGroup||C.hide){return}if(C.width){u+=(C.width+1);if(C.minWidth){if(C.width ")});y=y.join("");if(z){return""+y+" "}x.$table.children("colgroup").html(y)};p.prototype.getDataByTr=function(v){var w,t;if(typeof v!=="string"&&typeof v!=="number"){if(v){t=v.data("index")}}else{t=v}if(t===undefined){return}if(typeof t==="number"){t=[t]}else{t=t.split("-")}for(var u=0;u0&&v===0){A.prop("checked",true);A.removeClass("ew-form-indeterminate");A.next(".layui-form-checkbox").addClass("layui-form-checked");z.LAY_CHECKED=true;z.LAY_INDETERMINATE=false}else{if(y===0&&v>0){A.prop("checked",false);A.removeClass("ew-form-indeterminate");A.next(".layui-form-checkbox").removeClass("layui-form-checked");z.LAY_CHECKED=false;z.LAY_INDETERMINATE=false}else{if(y>0&&v>0){A.prop("checked",true);A.data("indeterminate","true");A.addClass("ew-form-indeterminate");A.next(".layui-form-checkbox").addClass("layui-form-checked");z.LAY_CHECKED=true;z.LAY_INDETERMINATE=true}}}};p.prototype.checkChooseAllCB=function(){var u=this.options;var w=this.getComponents();var x=0,v=0;function t(A){for(var z=0;z0&&v===0){y.prop("checked",true);y.removeClass("ew-form-indeterminate");y.next(".layui-form-checkbox").addClass("layui-form-checked")}else{if((x===0&&v>0)||(x===0&&v===0)){y.prop("checked",false);y.removeClass("ew-form-indeterminate");y.next(".layui-form-checkbox").removeClass("layui-form-checked")}else{if(x>0&&v>0){y.prop("checked",true);y.addClass("ew-form-indeterminate");y.next(".layui-form-checkbox").addClass("layui-form-checked")}}}};p.prototype.renderNumberCol=function(){this.getComponents().$tBody.children("tbody").children("tr").each(function(t){g(this).children("td").find(".ew-tree-table-numbers").text(t+1)})};p.prototype.getIndexById=function(v){var t=this.options;function u(x,y){for(var w=0;w0){t.each(function(){var x=w.getDataByTr(g(this).parentsUntil("tr").parent());if(x&&u[u.length-1]==x[w.options.tree.idName]){g(this).next(".layui-form-radio").trigger("click");return false}})}else{v.$table.find('input[lay-filter="'+v.checkboxFilter+'"]').each(function(){var C=g(this);var y=C.next(".layui-form-checkbox");var z=C.prop("checked");var B=C.hasClass("ew-form-indeterminate");var A=w.getDataByTr(C.parentsUntil("tr").parent());for(var x=0;x0){continue}if(!z||B){y.trigger("click")}}}})}};p.prototype.removeAllChecked=function(){this.checkSubCB(this.getComponents().$table.children("tbody"),false)};p.prototype.exportData=function(w){var y=this.getComponents();if("show"===w){y.$toolbar.find(".layui-table-tool-panel").remove();y.$toolbar.find('[lay-event="LAYTABLE_EXPORT"]').append(['"].join(""))}else{if(o.ie){return layer.msg("不支持ie导出")}if(!w){w="xls"}var u=[],t=[];this.eachCols(function(A,B){if(B.type!=="normal"||B.hide){return}u.push(B.title||"")});y.$tBody.children("tbody").children("tr").each(function(){var A=[];g(this).children("td").each(function(){var B=g(this);if(B.data("type")!=="normal"||B.hasClass("layui-hide")){return true}A.push(B.text().trim().replace(/,/g,","))});t.push(A.join(","))});var v=document.createElement("a");var x=encodeURIComponent(u.join(",")+"\r\n"+t.join("\r\n"));var z=({csv:"text/csv",xls:"application/vnd.ms-excel"})[w];v.href="data:"+z+";charset=utf-8,\ufeff"+x;v.download=(this.options.title||"table")+"."+w;document.body.appendChild(v);v.click();document.body.removeChild(v)}};p.prototype.printTable=function(){var w=this.getComponents();var z=w.$tHead.children("thead").html();if(!z){z=w.$tBody.children("thead").html()}var x=w.$tBody.children("tbody").html();var v=w.$tBody.children("colgroup").html();var u=g([''," ",v," "," ",z," "," ",x," ","
"].join(""));u.find('col[data-type="checkbox"],col[data-type="radio"],col[data-type="tool"]').remove();u.find('td[data-type="checkbox"],td[data-type="radio"],td[data-type="tool"],.layui-hide').remove();function A(F){var C=F.data("parent"),D;if(!C){return}var E=u.children("thead").children("tr").children('[data-key="'+C+'"]');var G=parseInt(E.attr("colspan"))-1;E.attr("colspan",G);if(G===0){E.remove()}A(E)}u.find('th[data-type="checkbox"],th[data-type="radio"],th[data-type="tool"]').each(function(){A(g(this))}).remove();var t=[""].join("");var y=window.open("","_blank");y.focus();var B=y.document;B.open();B.write(u[0].outerHTML+t);B.close();y.print();y.close()};p.prototype.toggleCol=function(A,z,B){var w=this.getComponents();if(A===undefined){w.$toolbar.find(".layui-table-tool-panel").remove();var x=['");c.render("checkbox",w.filter)}else{if(B){var u=w.$table.children("tbody").children("tr").children('[data-key="'+B+'"]');var C=w.$table.children("thead").children("tr").children('[data-key="'+B+'"]');if(A){u.removeClass("layui-hide");C.removeClass("layui-hide")}else{u.addClass("layui-hide");C.addClass("layui-hide")}var y=B.split("-");var v=this.options.cols[y[0]][y[1]];v.hide=!A;function t(G){var D=G.data("parent"),E;if(!D){return}var F=w.$table.children("thead").children("tr").children('[data-key="'+D+'"]');var H=F.attr("colspan");A?H++:H--;F.attr("colspan",H);if(H===0){F.addClass("layui-hide")}else{F.removeClass("layui-hide")}t(F)}t(C);this.eachCols(function(D,E){if(E.key===B){E.hide=v.hide}});this.resize()}}};p.prototype.filterData=function(y){var A=this.getComponents();A.$loading.show();if(this.options.data.length>0){A.$loading.addClass("ew-loading-float")}var x=A.$table.children("tbody").children("tr");var u=[];if(typeof y==="string"){x.each(function(){var B=g(this).data("index");g(this).children("td").each(function(){if(g(this).text().indexOf(y)!==-1){u.push(B);return false}})})}else{for(var w=0;w0){t.$empty.hide()}f(t.$view)};p.prototype.refresh=function(x,v){if(l(x)==="Array"){v=x;x=undefined}var u=this.getComponents();var w,t;if(x!==undefined){t=u.$table.children("tbody").children('tr[data-index="'+this.getIndexById(x)+'"]');w=this.getDataByTr(t)}if(v){if(this.data.length>0){u.$loading.addClass("ew-loading-float")}u.$loading.show();if(v.length>0&&this.options.tree.isPidData){this.renderBodyData(a.pidToChildren(v,this.options.tree.idName,this.options.tree.pidName,this.options.tree.childName),w,t)}else{this.renderBodyData(v,w,t)}}else{this.renderBodyAsync(w,t)}};p.prototype.del=function(x,u){if(u===undefined){u=this.getIndexById(x)}var t=(typeof u==="number"?[u]:u.split("-"));var w=this.options.data;if(t.length>1){for(var v=0;vw){return true}g(this).removeClass("ew-tree-tb-hide");if(!g(this).hasClass("ew-tree-table-open")){w=parseInt(g(this).data("indent"))}else{w=undefined}})}f(v.parentsUntil(".ew-tree-table").last().parent());return u}function f(w){var t=w.children(".ew-tree-table-head");var u=w.children(".ew-tree-table-box");var v=u.width()-u.prop("clientWidth");t.css("border-right",(v>0?v:0)+"px solid #f2f2f2")}g(window).resize(function(){g(".ew-tree-table").each(function(){f(g(this));var u=g(this).children(".ew-tree-table-box");var t=u.data("full");if(t&&o.ie&&o.ie<10){u.css("height",m()-t)}})});g(document).on("mouseenter",".ew-tree-table-cell.single-line",function(){var t=g(this).children(".ew-tree-table-cell-content");if(t.prop("scrollWidth")>t.outerWidth()){g(this).children(".layui-table-grid-down").show()}}).on("mouseleave",".ew-tree-table-cell.single-line",function(){g(this).children(".layui-table-grid-down").hide()});g(document).on("click",".ew-tree-table-cell>.layui-table-grid-down",function(w){w.stopPropagation();j();var u=g(this).parent();u.addClass("ew-tree-tips-open");u.children(".layui-table-grid-down").hide();var t=u.parent().outerWidth()+4;if(u.outerWidth()v.offset().left+v.outerWidth()){u.addClass("ew-show-left")}if((u.outerHeight()+u.offset().top+10)>v.offset().top+v.outerHeight()){u.addClass("ew-show-bottom")}});g(document).on("click",".ew-tree-table-cell>.ew-tree-tips-c",function(){j()});g(document).on("click",function(){j();g(".ew-tree-table .layui-table-tool-panel").remove()});g(document).on("click",".ew-tree-table-cell.ew-tree-tips-open",function(t){t.stopPropagation()});function j(){g(".ew-tree-table-cell").removeClass("ew-tree-tips-open ew-show-left ew-show-bottom");g(".ew-tree-table-cell>.ew-tree-table-cell-content").css({"width":"","max-width":""})}g(document).on("mousedown",".ew-tb-resize",function(x){layui.stope(x);var v=g(this);v.attr("move","true");var u=v.parent().data("key");v.data("x",x.clientX);var t=v.parent().parent().parent().parent().children("colgroup").children('col[data-key="'+u+'"]').attr("width");if(!t||t.toString().indexOf("%")!==-1){t=v.parent().outerWidth()}v.data("width",t);g("body").addClass("ew-tree-table-resizing")}).on("mousemove",function(B){var y=g('.ew-tree-table .ew-tb-resize[move="true"]');if(y.length===0){return}layui.stope(B);var t=y.data("x");var v=y.data("width");var u=parseFloat(v)+B.clientX-parseFloat(t);if(u<=0){u=1}var z=k[y.parentsUntil(".ew-tree-table").last().parent().attr("lay-filter")];var A=y.parent().data("key");var C=A.split("-");z.options.cols[C[0]][C[1]].width=u;z.eachCols(function(w,x){if(x.key===A){x.width=u}});z.resize()}).on("mouseup",function(t){g('.ew-tree-table .ew-tb-resize[move="true"]').attr("move","false");g("body").removeClass("ew-tree-table-resizing")}).on("mouseleave",function(t){g('.ew-tree-table .ew-tb-resize[move="true"]').attr("move","false");g("body").removeClass("ew-tree-table-resizing")});function q(x,u,z){var y=[];for(var w=0;w0){z[w][t]=v}y.push(z[w])}}return y}};g("head").append(['"].join(""));s("treeTable",a)});
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.css b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.css
new file mode 100644
index 0000000..584b2f8
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.css
@@ -0,0 +1,18 @@
+.treeTable-empty {
+ width: 20px;
+ display: inline-block;
+}
+
+.treeTable-icon {
+ cursor: pointer;
+}
+
+.treeTable-icon .layui-icon-triangle-d:before {
+ content: "\e623";
+}
+
+.treeTable-icon.open .layui-icon-triangle-d:before {
+ content: "\e625";
+ background-color: transparent;
+}
+
diff --git a/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.js b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.js
new file mode 100644
index 0000000..e38a5e1
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.js
@@ -0,0 +1,206 @@
+layui.define(['layer', 'table'], function (exports) {
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var table = layui.table;
+
+ var treetable = {
+ // 渲染树形表格
+ render: function (param) {
+ // 检查参数
+ if (!treetable.checkParam(param)) {
+ return;
+ }
+ // 获取数据
+ if (param.data) {
+ treetable.init(param, param.data);
+ } else {
+ $.getJSON(param.url, param.where, function (res) {
+ treetable.init(param, res.data);
+ });
+ }
+ },
+ // 渲染表格
+ init: function (param, data) {
+ var mData = [];
+ var doneCallback = param.done;
+ var tNodes = data;
+ // 补上id和pid字段
+ for (var i = 0; i < tNodes.length; i++) {
+ var tt = tNodes[i];
+ if (!tt.id) {
+ if (!param.treeIdName) {
+ layer.msg('参数treeIdName不能为空', {icon: 5});
+ return;
+ }
+ tt.id = tt[param.treeIdName];
+ }
+ if (!tt.pid) {
+ if (!param.treePidName) {
+ layer.msg('参数treePidName不能为空', {icon: 5});
+ return;
+ }
+ tt.pid = tt[param.treePidName];
+ }
+ }
+
+ // 对数据进行排序
+ var sort = function (s_pid, data) {
+ for (var i = 0; i < data.length; i++) {
+ if (data[i].pid == s_pid) {
+ var len = mData.length;
+ if (len > 0 && mData[len - 1].id == s_pid) {
+ mData[len - 1].isParent = true;
+ }
+ mData.push(data[i]);
+ sort(data[i].id, data);
+ }
+ }
+ };
+ sort(param.treeSpid, tNodes);
+
+ // 重写参数
+ param.url = undefined;
+ param.data = mData;
+ param.page = {
+ count: param.data.length,
+ limit: param.data.length
+ };
+ param.cols[0][param.treeColIndex].templet = function (d) {
+ var mId = d.id;
+ var mPid = d.pid;
+ var isDir = d.isParent;
+ var emptyNum = treetable.getEmptyNum(mPid, mData);
+ var iconHtml = '';
+ for (var i = 0; i < emptyNum; i++) {
+ iconHtml += ' ';
+ }
+ if (isDir) {
+ iconHtml += ' ';
+ } else {
+ iconHtml += ' ';
+ }
+ iconHtml += ' ';
+ var ttype = isDir ? 'dir' : 'file';
+ var vg = '';
+ return vg + iconHtml + d[param.cols[0][param.treeColIndex].field] + ' '
+ };
+
+ param.done = function (res, curr, count) {
+ $(param.elem).next().addClass('treeTable');
+ $('.treeTable .layui-table-page').css('display', 'none');
+ $(param.elem).next().attr('treeLinkage', param.treeLinkage);
+ // 绑定事件换成对body绑定
+ /*$('.treeTable .treeTable-icon').click(function () {
+ treetable.toggleRows($(this), param.treeLinkage);
+ });*/
+ if (param.treeDefaultClose) {
+ treetable.foldAll(param.elem);
+ }
+ if (doneCallback) {
+ doneCallback(res, curr, count);
+ }
+ };
+
+ // 渲染表格
+ table.render(param);
+ },
+ // 计算缩进的数量
+ getEmptyNum: function (pid, data) {
+ var num = 0;
+ if (!pid) {
+ return num;
+ }
+ var tPid;
+ for (var i = 0; i < data.length; i++) {
+ if (pid == data[i].id) {
+ num += 1;
+ tPid = data[i].pid;
+ break;
+ }
+ }
+ return num + treetable.getEmptyNum(tPid, data);
+ },
+ // 展开/折叠行
+ toggleRows: function ($dom, linkage) {
+ var type = $dom.attr('lay-ttype');
+ if ('file' == type) {
+ return;
+ }
+ var mId = $dom.attr('lay-tid');
+ var isOpen = $dom.hasClass('open');
+ if (isOpen) {
+ $dom.removeClass('open');
+ } else {
+ $dom.addClass('open');
+ }
+ $dom.closest('tbody').find('tr').each(function () {
+ var $ti = $(this).find('.treeTable-icon');
+ var pid = $ti.attr('lay-tpid');
+ var ttype = $ti.attr('lay-ttype');
+ var tOpen = $ti.hasClass('open');
+ if (mId == pid) {
+ if (isOpen) {
+ $(this).hide();
+ if ('dir' == ttype && tOpen == isOpen) {
+ $ti.trigger('click');
+ }
+ } else {
+ $(this).show();
+ if (linkage && 'dir' == ttype && tOpen == isOpen) {
+ $ti.trigger('click');
+ }
+ }
+ }
+ });
+ },
+ // 检查参数
+ checkParam: function (param) {
+ if (!param.treeSpid && param.treeSpid != 0) {
+ layer.msg('参数treeSpid不能为空', {icon: 5});
+ return false;
+ }
+
+ if (!param.treeColIndex && param.treeColIndex != 0) {
+ layer.msg('参数treeColIndex不能为空', {icon: 5});
+ return false;
+ }
+ return true;
+ },
+ // 展开所有
+ expandAll: function (dom) {
+ $(dom).next('.treeTable').find('.layui-table-body tbody tr').each(function () {
+ var $ti = $(this).find('.treeTable-icon');
+ var ttype = $ti.attr('lay-ttype');
+ var tOpen = $ti.hasClass('open');
+ if ('dir' == ttype && !tOpen) {
+ $ti.trigger('click');
+ }
+ });
+ },
+ // 折叠所有
+ foldAll: function (dom) {
+ $(dom).next('.treeTable').find('.layui-table-body tbody tr').each(function () {
+ var $ti = $(this).find('.treeTable-icon');
+ var ttype = $ti.attr('lay-ttype');
+ var tOpen = $ti.hasClass('open');
+ if ('dir' == ttype && tOpen) {
+ $ti.trigger('click');
+ }
+ });
+ }
+ };
+
+ layui.link(layui.cache.base + 'treetable-lay/treetable.css');
+
+ // 给图标列绑定事件
+ $('body').on('click', '.treeTable .treeTable-icon', function () {
+ var treeLinkage = $(this).parents('.treeTable').attr('treeLinkage');
+ if ('true' == treeLinkage) {
+ treetable.toggleRows($(this), true);
+ } else {
+ treetable.toggleRows($(this), false);
+ }
+ });
+
+ exports('treetable', treetable);
+});
diff --git a/ss-admin/src/main/resources/static/js/lay-module/wangEditor/fonts/w-e-icon.woff b/ss-admin/src/main/resources/static/js/lay-module/wangEditor/fonts/w-e-icon.woff
new file mode 100644
index 0000000..6dc5b5a
Binary files /dev/null and b/ss-admin/src/main/resources/static/js/lay-module/wangEditor/fonts/w-e-icon.woff differ
diff --git a/ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.css b/ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.css
new file mode 100644
index 0000000..5502c55
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.css
@@ -0,0 +1,411 @@
+.w-e-toolbar,
+.w-e-text-container,
+.w-e-menu-panel {
+ padding: 0;
+ margin: 0;
+ box-sizing: border-box;
+}
+.w-e-toolbar *,
+.w-e-text-container *,
+.w-e-menu-panel * {
+ padding: 0;
+ margin: 0;
+ box-sizing: border-box;
+}
+.w-e-clear-fix:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.w-e-toolbar .w-e-droplist {
+ position: absolute;
+ left: 0;
+ top: 0;
+ background-color: #fff;
+ border: 1px solid #f1f1f1;
+ border-right-color: #ccc;
+ border-bottom-color: #ccc;
+}
+.w-e-toolbar .w-e-droplist .w-e-dp-title {
+ text-align: center;
+ color: #999;
+ line-height: 2;
+ border-bottom: 1px solid #f1f1f1;
+ font-size: 13px;
+}
+.w-e-toolbar .w-e-droplist ul.w-e-list {
+ list-style: none;
+ line-height: 1;
+}
+.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item {
+ color: #333;
+ padding: 5px 0;
+}
+.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item:hover {
+ background-color: #f1f1f1;
+}
+.w-e-toolbar .w-e-droplist ul.w-e-block {
+ list-style: none;
+ text-align: left;
+ padding: 5px;
+}
+.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ padding: 3px 5px;
+}
+.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item:hover {
+ background-color: #f1f1f1;
+}
+
+@font-face {
+ font-family: 'w-e-icon';
+ src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAABhQAAsAAAAAGAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIPBGNtYXAAAAFoAAABBAAAAQQrSf4BZ2FzcAAAAmwAAAAIAAAACAAAABBnbHlmAAACdAAAEvAAABLwfpUWUWhlYWQAABVkAAAANgAAADYQp00kaGhlYQAAFZwAAAAkAAAAJAfEA+FobXR4AAAVwAAAAIQAAACEeAcD7GxvY2EAABZEAAAARAAAAERBSEX+bWF4cAAAFogAAAAgAAAAIAAsALZuYW1lAAAWqAAAAYYAAAGGmUoJ+3Bvc3QAABgwAAAAIAAAACAAAwAAAAMD3gGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA8fwDwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEAOgAAAA2ACAABAAWAAEAIOkG6Q3pEulH6Wbpd+m56bvpxunL6d/qDepc6l/qZepo6nHqefAN8BTxIPHc8fz//f//AAAAAAAg6QbpDekS6UfpZel36bnpu+nG6cvp3+oN6lzqX+pi6mjqcep38A3wFPEg8dzx/P/9//8AAf/jFv4W+Bb0FsAWoxaTFlIWURZHFkMWMBYDFbUVsxWxFa8VpxWiEA8QCQ7+DkMOJAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACAAD/wAQAA8AABAATAAABNwEnAQMuAScTNwEjAQMlATUBBwGAgAHAQP5Anxc7MmOAAYDA/oDAAoABgP6ATgFAQAHAQP5A/p0yOxcBEU4BgP6A/YDAAYDA/oCAAAQAAAAABAADgAAQACEALQA0AAABOAExETgBMSE4ATEROAExITUhIgYVERQWMyEyNjURNCYjBxQGIyImNTQ2MzIWEyE1EwEzNwPA/IADgPyAGiYmGgOAGiYmGoA4KCg4OCgoOED9AOABAEDgA0D9AAMAQCYa/QAaJiYaAwAaJuAoODgoKDg4/biAAYD+wMAAAAIAAABABAADQAA4ADwAAAEmJy4BJyYjIgcOAQcGBwYHDgEHBhUUFx4BFxYXFhceARcWMzI3PgE3Njc2Nz4BNzY1NCcuAScmJwERDQED1TY4OXY8PT8/PTx2OTg2CwcICwMDAwMLCAcLNjg5djw9Pz89PHY5ODYLBwgLAwMDAwsIBwv9qwFA/sADIAgGBggCAgICCAYGCCkqKlktLi8vLi1ZKiopCAYGCAICAgIIBgYIKSoqWS0uLy8uLVkqKin94AGAwMAAAAAAAgDA/8ADQAPAABsAJwAAASIHDgEHBhUUFx4BFxYxMDc+ATc2NTQnLgEnJgMiJjU0NjMyFhUUBgIAQjs6VxkZMjJ4MjIyMngyMhkZVzo7QlBwcFBQcHADwBkZVzo7Qnh9fcxBQUFBzH19eEI7OlcZGf4AcFBQcHBQUHAAAAEAAAAABAADgAArAAABIgcOAQcGBycRISc+ATMyFx4BFxYVFAcOAQcGBxc2Nz4BNzY1NCcuAScmIwIANTIyXCkpI5YBgJA1i1BQRUZpHh4JCSIYGB5VKCAgLQwMKCiLXl1qA4AKCycbHCOW/oCQNDweHmlGRVArKClJICEaYCMrK2I2NjlqXV6LKCgAAQAAAAAEAAOAACoAABMUFx4BFxYXNyYnLgEnJjU0Nz4BNzYzMhYXByERByYnLgEnJiMiBw4BBwYADAwtICAoVR4YGCIJCR4eaUZFUFCLNZABgJYjKSlcMjI1al1eiygoAYA5NjZiKysjYBohIEkpKCtQRUZpHh48NJABgJYjHBsnCwooKIteXQAAAAACAAAAQAQBAwAAJgBNAAATMhceARcWFRQHDgEHBiMiJy4BJyY1JzQ3PgE3NjMVIgYHDgEHPgEhMhceARcWFRQHDgEHBiMiJy4BJyY1JzQ3PgE3NjMVIgYHDgEHPgHhLikpPRESEhE9KSkuLikpPRESASMjelJRXUB1LQkQBwgSAkkuKSk9ERISET0pKS4uKSk9ERIBIyN6UlFdQHUtCRAHCBICABIRPSkpLi4pKT0REhIRPSkpLiBdUVJ6IyOAMC4IEwoCARIRPSkpLi4pKT0REhIRPSkpLiBdUVJ6IyOAMC4IEwoCAQAABgBA/8AEAAPAAAMABwALABEAHQApAAAlIRUhESEVIREhFSEnESM1IzUTFTMVIzU3NSM1MxUVESM1MzUjNTM1IzUBgAKA/YACgP2AAoD9gMBAQECAwICAwMCAgICAgIACAIACAIDA/wDAQP3yMkCSPDJAku7+wEBAQEBAAAYAAP/ABAADwAADAAcACwAXACMALwAAASEVIREhFSERIRUhATQ2MzIWFRQGIyImETQ2MzIWFRQGIyImETQ2MzIWFRQGIyImAYACgP2AAoD9gAKA/YD+gEs1NUtLNTVLSzU1S0s1NUtLNTVLSzU1SwOAgP8AgP8AgANANUtLNTVLS/61NUtLNTVLS/61NUtLNTVLSwADAAAAAAQAA6AAAwANABQAADchFSElFSE1EyEVITUhJQkBIxEjEQAEAPwABAD8AIABAAEAAQD9YAEgASDggEBAwEBAAQCAgMABIP7g/wABAAAAAAACAB7/zAPiA7QAMwBkAAABIiYnJicmNDc2PwE+ATMyFhcWFxYUBwYPAQYiJyY0PwE2NCcuASMiBg8BBhQXFhQHDgEjAyImJyYnJjQ3Nj8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFxYUBwYPAQ4BIwG4ChMIIxISEhIjwCNZMTFZIyMSEhISI1gPLA8PD1gpKRQzHBwzFMApKQ8PCBMKuDFZIyMSEhISI1gPLA8PD1gpKRQzHBwzFMApKQ8PDysQIxISEhIjwCNZMQFECAckLS1eLS0kwCIlJSIkLS1eLS0kVxAQDysPWCl0KRQVFRTAKXQpDysQBwj+iCUiJC0tXi0tJFcQEA8rD1gpdCkUFRUUwCl0KQ8rEA8PJC0tXi0tJMAiJQAAAAAFAAD/wAQAA8AAGwA3AFMAXwBrAAAFMjc+ATc2NTQnLgEnJiMiBw4BBwYVFBceARcWEzIXHgEXFhUUBw4BBwYjIicuAScmNTQ3PgE3NhMyNz4BNzY3BgcOAQcGIyInLgEnJicWFx4BFxYnNDYzMhYVFAYjIiYlNDYzMhYVFAYjIiYCAGpdXosoKCgoi15dampdXosoKCgoi15dalZMTHEgISEgcUxMVlZMTHEgISEgcUxMVisrKlEmJiMFHBtWODc/Pzc4VhscBSMmJlEqK9UlGxslJRsbJQGAJRsbJSUbGyVAKCiLXl1qal1eiygoKCiLXl1qal1eiygoA6AhIHFMTFZWTExxICEhIHFMTFZWTExxICH+CQYGFRAQFEM6OlYYGRkYVjo6QxQQEBUGBvcoODgoKDg4KCg4OCgoODgAAAMAAP/ABAADwAAbADcAQwAAASIHDgEHBhUUFx4BFxYzMjc+ATc2NTQnLgEnJgMiJy4BJyY1NDc+ATc2MzIXHgEXFhUUBw4BBwYTBycHFwcXNxc3JzcCAGpdXosoKCgoi15dampdXosoKCgoi15dalZMTHEgISEgcUxMVlZMTHEgISEgcUxMSqCgYKCgYKCgYKCgA8AoKIteXWpqXV6LKCgoKIteXWpqXV6LKCj8YCEgcUxMVlZMTHEgISEgcUxMVlZMTHEgIQKgoKBgoKBgoKBgoKAAAQBl/8ADmwPAACkAAAEiJiMiBw4BBwYVFBYzLgE1NDY3MAcGAgcGBxUhEzM3IzceATMyNjcOAQMgRGhGcVNUbRobSUgGDWVKEBBLPDxZAT1sxizXNC1VJi5QGB09A7AQHh1hPj9BTTsLJjeZbwN9fv7Fj5AjGQIAgPYJDzdrCQcAAAAAAgAAAAAEAAOAAAkAFwAAJTMHJzMRIzcXIyURJyMRMxUhNTMRIwcRA4CAoKCAgKCggP8AQMCA/oCAwEDAwMACAMDAwP8AgP1AQEACwIABAAADAMAAAANAA4AAFgAfACgAAAE+ATU0Jy4BJyYjIREhMjc+ATc2NTQmATMyFhUUBisBEyMRMzIWFRQGAsQcIBQURi4vNf7AAYA1Ly5GFBRE/oRlKjw8KWafn58sPj4B2yJULzUvLkYUFPyAFBRGLi81RnQBRks1NUv+gAEASzU1SwAAAAACAMAAAANAA4AAHwAjAAABMxEUBw4BBwYjIicuAScmNREzERQWFx4BMzI2Nz4BNQEhFSECwIAZGVc6O0JCOzpXGRmAGxgcSSgoSRwYG/4AAoD9gAOA/mA8NDVOFhcXFk41NDwBoP5gHjgXGBsbGBc4Hv6ggAAAAAABAIAAAAOAA4AACwAAARUjATMVITUzASM1A4CA/sCA/kCAAUCAA4BA/QBAQAMAQAABAAAAAAQAA4AAPQAAARUjHgEVFAYHDgEjIiYnLgE1MxQWMzI2NTQmIyE1IS4BJy4BNTQ2Nz4BMzIWFx4BFSM0JiMiBhUUFjMyFhcEAOsVFjUwLHE+PnEsMDWAck5OcnJO/gABLAIEATA1NTAscT4+cSwwNYByTk5yck47bisBwEAdQSI1YiQhJCQhJGI1NExMNDRMQAEDASRiNTViJCEkJCEkYjU0TEw0NEwhHwAAAAcAAP/ABAADwAADAAcACwAPABMAGwAjAAATMxUjNzMVIyUzFSM3MxUjJTMVIwMTIRMzEyETAQMhAyMDIQMAgIDAwMABAICAwMDAAQCAgBAQ/QAQIBACgBD9QBADABAgEP2AEAHAQEBAQEBAQEBAAkD+QAHA/oABgPwAAYD+gAFA/sAAAAoAAAAABAADgAADAAcACwAPABMAFwAbAB8AIwAnAAATESERATUhFR0BITUBFSE1IxUhNREhFSElIRUhETUhFQEhFSEhNSEVAAQA/YABAP8AAQD/AED/AAEA/wACgAEA/wABAPyAAQD/AAKAAQADgPyAA4D9wMDAQMDAAgDAwMDA/wDAwMABAMDA/sDAwMAAAAUAAAAABAADgAADAAcACwAPABMAABMhFSEVIRUhESEVIREhFSERIRUhAAQA/AACgP2AAoD9gAQA/AAEAPwAA4CAQID/AIABQID/AIAAAAAABQAAAAAEAAOAAAMABwALAA8AEwAAEyEVIRchFSERIRUhAyEVIREhFSEABAD8AMACgP2AAoD9gMAEAPwABAD8AAOAgECA/wCAAUCA/wCAAAAFAAAAAAQAA4AAAwAHAAsADwATAAATIRUhBSEVIREhFSEBIRUhESEVIQAEAPwAAYACgP2AAoD9gP6ABAD8AAQA/AADgIBAgP8AgAFAgP8AgAAAAAABAD8APwLmAuYALAAAJRQPAQYjIi8BBwYjIi8BJjU0PwEnJjU0PwE2MzIfATc2MzIfARYVFA8BFxYVAuYQThAXFxCoqBAXFhBOEBCoqBAQThAWFxCoqBAXFxBOEBCoqBDDFhBOEBCoqBAQThAWFxCoqBAXFxBOEBCoqBAQThAXFxCoqBAXAAAABgAAAAADJQNuABQAKAA8AE0AVQCCAAABERQHBisBIicmNRE0NzY7ATIXFhUzERQHBisBIicmNRE0NzY7ATIXFhcRFAcGKwEiJyY1ETQ3NjsBMhcWExEhERQXFhcWMyEyNzY3NjUBIScmJyMGBwUVFAcGKwERFAcGIyEiJyY1ESMiJyY9ATQ3NjsBNzY3NjsBMhcWHwEzMhcWFQElBgUIJAgFBgYFCCQIBQaSBQUIJQgFBQUFCCUIBQWSBQUIJQgFBQUFCCUIBQVJ/gAEBAUEAgHbAgQEBAT+gAEAGwQGtQYEAfcGBQg3Ghsm/iUmGxs3CAUFBQUIsSgIFxYXtxcWFgkosAgFBgIS/rcIBQUFBQgBSQgFBgYFCP63CAUFBQUIAUkIBQYGBQj+twgFBQUFCAFJCAUGBgX+WwId/eMNCwoFBQUFCgsNAmZDBQICBVUkCAYF/eMwIiMhIi8CIAUGCCQIBQVgFQ8PDw8VYAUFCAACAAcASQO3Aq8AGgAuAAAJAQYjIi8BJjU0PwEnJjU0PwE2MzIXARYVFAcBFRQHBiMhIicmPQE0NzYzITIXFgFO/vYGBwgFHQYG4eEGBh0FCAcGAQoGBgJpBQUI/dsIBQUFBQgCJQgFBQGF/vYGBhwGCAcG4OEGBwcGHQUF/vUFCAcG/vslCAUFBQUIJQgFBQUFAAAAAQAjAAAD3QNuALMAACUiJyYjIgcGIyInJjU0NzY3Njc2NzY9ATQnJiMhIgcGHQEUFxYXFjMWFxYVFAcGIyInJiMiBwYjIicmNTQ3Njc2NzY3Nj0BETQ1NDU0JzQnJicmJyYnJicmIyInJjU0NzYzMhcWMzI3NjMyFxYVFAcGIwYHBgcGHQEUFxYzITI3Nj0BNCcmJyYnJjU0NzYzMhcWMzI3NjMyFxYVFAcGByIHBgcGFREUFxYXFhcyFxYVFAcGIwPBGTMyGhkyMxkNCAcJCg0MERAKEgEHFf5+FgcBFQkSEw4ODAsHBw4bNTUaGDExGA0HBwkJCwwQDwkSAQIBAgMEBAUIEhENDQoLBwcOGjU1GhgwMRgOBwcJCgwNEBAIFAEHDwGQDgcBFAoXFw8OBwcOGTMyGRkxMRkOBwcKCg0NEBEIFBQJEREODQoLBwcOAAICAgIMCw8RCQkBAQMDBQxE4AwFAwMFDNRRDQYBAgEICBIPDA0CAgICDAwOEQgJAQIDAwUNRSEB0AINDQgIDg4KCgsLBwcDBgEBCAgSDwwNAgICAg0MDxEICAECAQYMULYMBwEBBwy2UAwGAQEGBxYPDA0CAgICDQwPEQgIAQECBg1P/eZEDAYCAgEJCBEPDA0AAAIAAP+3A/8DtwATADkAAAEyFxYVFAcCBwYjIicmNTQ3ATYzARYXFh8BFgcGIyInJicmJyY1FhcWFxYXFjMyNzY3Njc2NzY3NjcDmygeHhq+TDdFSDQ0NQFtISn9+BcmJy8BAkxMe0c2NiEhEBEEExQQEBIRCRcIDxITFRUdHR4eKQO3GxooJDP+mUY0NTRJSTABSx/9sSsfHw0oek1MGhsuLzo6RAMPDgsLCgoWJRsaEREKCwQEAgABAAAAAAAA9evv618PPPUACwQAAAAAANbEBFgAAAAA1sQEWAAA/7cEAQPAAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAD//wQBAAEAAAAAAAAAAAAAAAAAAAAhBAAAAAAAAAAAAAAAAgAAAAQAAAAEAAAABAAAAAQAAMAEAAAABAAAAAQAAAAEAABABAAAAAQAAAAEAAAeBAAAAAQAAAAEAABlBAAAAAQAAMAEAADABAAAgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMlAD8DJQAAA74ABwQAACMD/wAAAAAAAAAKABQAHgBMAJQA+AE2AXwBwgI2AnQCvgLoA34EHgSIBMoE8gU0BXAFiAXgBiIGagaSBroG5AcoB+AIKgkcCXgAAQAAACEAtAAKAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGljb21vb24AaQBjAG8AbQBvAG8AblZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGljb21vb24AaQBjAG8AbQBvAG8Abmljb21vb24AaQBjAG8AbQBvAG8AblJlZ3VsYXIAUgBlAGcAdQBsAGEAcmljb21vb24AaQBjAG8AbQBvAG8AbkZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format('truetype');
+ font-weight: normal;
+ font-style: normal;
+}
+[class^="w-e-icon-"],
+[class*=" w-e-icon-"] {
+ /* use !important to prevent issues with browser extensions that change fonts */
+ font-family: 'w-e-icon' !important;
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.w-e-icon-close:before {
+ content: "\f00d";
+}
+.w-e-icon-upload2:before {
+ content: "\e9c6";
+}
+.w-e-icon-trash-o:before {
+ content: "\f014";
+}
+.w-e-icon-header:before {
+ content: "\f1dc";
+}
+.w-e-icon-pencil2:before {
+ content: "\e906";
+}
+.w-e-icon-paint-brush:before {
+ content: "\f1fc";
+}
+.w-e-icon-image:before {
+ content: "\e90d";
+}
+.w-e-icon-play:before {
+ content: "\e912";
+}
+.w-e-icon-location:before {
+ content: "\e947";
+}
+.w-e-icon-undo:before {
+ content: "\e965";
+}
+.w-e-icon-redo:before {
+ content: "\e966";
+}
+.w-e-icon-quotes-left:before {
+ content: "\e977";
+}
+.w-e-icon-list-numbered:before {
+ content: "\e9b9";
+}
+.w-e-icon-list2:before {
+ content: "\e9bb";
+}
+.w-e-icon-link:before {
+ content: "\e9cb";
+}
+.w-e-icon-happy:before {
+ content: "\e9df";
+}
+.w-e-icon-bold:before {
+ content: "\ea62";
+}
+.w-e-icon-underline:before {
+ content: "\ea63";
+}
+.w-e-icon-italic:before {
+ content: "\ea64";
+}
+.w-e-icon-strikethrough:before {
+ content: "\ea65";
+}
+.w-e-icon-table2:before {
+ content: "\ea71";
+}
+.w-e-icon-paragraph-left:before {
+ content: "\ea77";
+}
+.w-e-icon-paragraph-center:before {
+ content: "\ea78";
+}
+.w-e-icon-paragraph-right:before {
+ content: "\ea79";
+}
+.w-e-icon-terminal:before {
+ content: "\f120";
+}
+.w-e-icon-page-break:before {
+ content: "\ea68";
+}
+.w-e-icon-cancel-circle:before {
+ content: "\ea0d";
+}
+.w-e-icon-font:before {
+ content: "\ea5c";
+}
+.w-e-icon-text-heigh:before {
+ content: "\ea5f";
+}
+
+.w-e-toolbar {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0 5px;
+ /* flex-wrap: wrap; */
+ /* 单个菜单 */
+}
+.w-e-toolbar .w-e-menu {
+ position: relative;
+ text-align: center;
+ padding: 5px 10px;
+ cursor: pointer;
+}
+.w-e-toolbar .w-e-menu i {
+ color: #999;
+}
+.w-e-toolbar .w-e-menu:hover i {
+ color: #333;
+}
+.w-e-toolbar .w-e-active i {
+ color: #1e88e5;
+}
+.w-e-toolbar .w-e-active:hover i {
+ color: #1e88e5;
+}
+
+.w-e-text-container .w-e-panel-container {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ border: 1px solid #ccc;
+ border-top: 0;
+ box-shadow: 1px 1px 2px #ccc;
+ color: #333;
+ background-color: #fff;
+ /* 为 emotion panel 定制的样式 */
+ /* 上传图片的 panel 定制样式 */
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-close {
+ position: absolute;
+ right: 0;
+ top: 0;
+ padding: 5px;
+ margin: 2px 5px 0 0;
+ cursor: pointer;
+ color: #999;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-close:hover {
+ color: #333;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-title {
+ list-style: none;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ font-size: 14px;
+ margin: 2px 10px 0 10px;
+ border-bottom: 1px solid #f1f1f1;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-item {
+ padding: 3px 5px;
+ color: #999;
+ cursor: pointer;
+ margin: 0 3px;
+ position: relative;
+ top: 1px;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-active {
+ color: #333;
+ border-bottom: 1px solid #333;
+ cursor: default;
+ font-weight: 700;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content {
+ padding: 10px 15px 10px 15px;
+ font-size: 16px;
+ /* 输入框的样式 */
+ /* 按钮的样式 */
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input:focus,
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus,
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content button:focus {
+ outline: none;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea {
+ width: 100%;
+ border: 1px solid #ccc;
+ padding: 5px;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus {
+ border-color: #1e88e5;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text] {
+ border: none;
+ border-bottom: 1px solid #ccc;
+ font-size: 14px;
+ height: 20px;
+ color: #333;
+ text-align: left;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].small {
+ width: 30px;
+ text-align: center;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].block {
+ display: block;
+ width: 100%;
+ margin: 10px 0;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text]:focus {
+ border-bottom: 2px solid #1e88e5;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button {
+ font-size: 14px;
+ color: #1e88e5;
+ border: none;
+ padding: 5px 10px;
+ background-color: #fff;
+ cursor: pointer;
+ border-radius: 3px;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.left {
+ float: left;
+ margin-right: 10px;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.right {
+ float: right;
+ margin-left: 10px;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.gray {
+ color: #999;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.red {
+ color: #c24f4a;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button:hover {
+ background-color: #f1f1f1;
+}
+.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+.w-e-text-container .w-e-panel-container .w-e-emoticon-container .w-e-item {
+ cursor: pointer;
+ font-size: 18px;
+ padding: 0 3px;
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+.w-e-text-container .w-e-panel-container .w-e-up-img-container {
+ text-align: center;
+}
+.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ color: #999;
+ cursor: pointer;
+ font-size: 60px;
+ line-height: 1;
+}
+.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn:hover {
+ color: #333;
+}
+
+.w-e-text-container {
+ position: relative;
+}
+.w-e-text-container .w-e-progress {
+ position: absolute;
+ background-color: #1e88e5;
+ bottom: 0;
+ left: 0;
+ height: 1px;
+}
+.w-e-text {
+ padding: 0 10px;
+ overflow-y: scroll;
+}
+.w-e-text p,
+.w-e-text h1,
+.w-e-text h2,
+.w-e-text h3,
+.w-e-text h4,
+.w-e-text h5,
+.w-e-text table,
+.w-e-text pre {
+ margin: 10px 0;
+ line-height: 1.5;
+}
+.w-e-text ul,
+.w-e-text ol {
+ margin: 10px 0 10px 20px;
+}
+.w-e-text blockquote {
+ display: block;
+ border-left: 8px solid #d0e5f2;
+ padding: 5px 10px;
+ margin: 10px 0;
+ line-height: 1.4;
+ font-size: 100%;
+ background-color: #f1f1f1;
+}
+.w-e-text code {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ background-color: #f1f1f1;
+ border-radius: 3px;
+ padding: 3px 5px;
+ margin: 0 3px;
+}
+.w-e-text pre code {
+ display: block;
+}
+.w-e-text table {
+ border-top: 1px solid #ccc;
+ border-left: 1px solid #ccc;
+}
+.w-e-text table td,
+.w-e-text table th {
+ border-bottom: 1px solid #ccc;
+ border-right: 1px solid #ccc;
+ padding: 3px 5px;
+}
+.w-e-text table th {
+ border-bottom: 2px solid #ccc;
+ text-align: center;
+}
+.w-e-text:focus {
+ outline: none;
+}
+.w-e-text img {
+ cursor: pointer;
+}
+.w-e-text img:hover {
+ box-shadow: 0 0 5px #333;
+}
diff --git a/ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.js b/ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.js
new file mode 100644
index 0000000..fe909c8
--- /dev/null
+++ b/ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.js
@@ -0,0 +1,4678 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global.wangEditor = factory());
+}(this, (function () { 'use strict';
+
+/*
+ poly-fill
+*/
+
+var polyfill = function () {
+
+ // Object.assign
+ if (typeof Object.assign != 'function') {
+ Object.assign = function (target, varArgs) {
+ // .length of function is 2
+ if (target == null) {
+ // TypeError if undefined or null
+ throw new TypeError('Cannot convert undefined or null to object');
+ }
+
+ var to = Object(target);
+
+ for (var index = 1; index < arguments.length; index++) {
+ var nextSource = arguments[index];
+
+ if (nextSource != null) {
+ // Skip over if undefined or null
+ for (var nextKey in nextSource) {
+ // Avoid bugs when hasOwnProperty is shadowed
+ if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
+ to[nextKey] = nextSource[nextKey];
+ }
+ }
+ }
+ }
+ return to;
+ };
+ }
+
+ // IE 中兼容 Element.prototype.matches
+ if (!Element.prototype.matches) {
+ Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
+ var matches = (this.document || this.ownerDocument).querySelectorAll(s),
+ i = matches.length;
+ while (--i >= 0 && matches.item(i) !== this) {}
+ return i > -1;
+ };
+ }
+};
+
+/*
+ DOM 操作 API
+*/
+
+// 根据 html 代码片段创建 dom 对象
+function createElemByHTML(html) {
+ var div = void 0;
+ div = document.createElement('div');
+ div.innerHTML = html;
+ return div.children;
+}
+
+// 是否是 DOM List
+function isDOMList(selector) {
+ if (!selector) {
+ return false;
+ }
+ if (selector instanceof HTMLCollection || selector instanceof NodeList) {
+ return true;
+ }
+ return false;
+}
+
+// 封装 document.querySelectorAll
+function querySelectorAll(selector) {
+ var result = document.querySelectorAll(selector);
+ if (isDOMList(result)) {
+ return result;
+ } else {
+ return [result];
+ }
+}
+
+// 记录所有的事件绑定
+var eventList = [];
+
+// 创建构造函数
+function DomElement(selector) {
+ if (!selector) {
+ return;
+ }
+
+ // selector 本来就是 DomElement 对象,直接返回
+ if (selector instanceof DomElement) {
+ return selector;
+ }
+
+ this.selector = selector;
+ var nodeType = selector.nodeType;
+
+ // 根据 selector 得出的结果(如 DOM,DOM List)
+ var selectorResult = [];
+ if (nodeType === 9) {
+ // document 节点
+ selectorResult = [selector];
+ } else if (nodeType === 1) {
+ // 单个 DOM 节点
+ selectorResult = [selector];
+ } else if (isDOMList(selector) || selector instanceof Array) {
+ // DOM List 或者数组
+ selectorResult = selector;
+ } else if (typeof selector === 'string') {
+ // 字符串
+ selector = selector.replace('/\n/mg', '').trim();
+ if (selector.indexOf('<') === 0) {
+ // 如
+ selectorResult = createElemByHTML(selector);
+ } else {
+ // 如 #id .class
+ selectorResult = querySelectorAll(selector);
+ }
+ }
+
+ var length = selectorResult.length;
+ if (!length) {
+ // 空数组
+ return this;
+ }
+
+ // 加入 DOM 节点
+ var i = void 0;
+ for (i = 0; i < length; i++) {
+ this[i] = selectorResult[i];
+ }
+ this.length = length;
+}
+
+// 修改原型
+DomElement.prototype = {
+ constructor: DomElement,
+
+ // 类数组,forEach
+ forEach: function forEach(fn) {
+ var i = void 0;
+ for (i = 0; i < this.length; i++) {
+ var elem = this[i];
+ var result = fn.call(elem, elem, i);
+ if (result === false) {
+ break;
+ }
+ }
+ return this;
+ },
+
+ // clone
+ clone: function clone(deep) {
+ var cloneList = [];
+ this.forEach(function (elem) {
+ cloneList.push(elem.cloneNode(!!deep));
+ });
+ return $(cloneList);
+ },
+
+ // 获取第几个元素
+ get: function get(index) {
+ var length = this.length;
+ if (index >= length) {
+ index = index % length;
+ }
+ return $(this[index]);
+ },
+
+ // 第一个
+ first: function first() {
+ return this.get(0);
+ },
+
+ // 最后一个
+ last: function last() {
+ var length = this.length;
+ return this.get(length - 1);
+ },
+
+ // 绑定事件
+ on: function on(type, selector, fn) {
+ // selector 不为空,证明绑定事件要加代理
+ if (!fn) {
+ fn = selector;
+ selector = null;
+ }
+
+ // type 是否有多个
+ var types = [];
+ types = type.split(/\s+/);
+
+ return this.forEach(function (elem) {
+ types.forEach(function (type) {
+ if (!type) {
+ return;
+ }
+
+ // 记录下,方便后面解绑
+ eventList.push({
+ elem: elem,
+ type: type,
+ fn: fn
+ });
+
+ if (!selector) {
+ // 无代理
+ elem.addEventListener(type, fn);
+ return;
+ }
+
+ // 有代理
+ elem.addEventListener(type, function (e) {
+ var target = e.target;
+ if (target.matches(selector)) {
+ fn.call(target, e);
+ }
+ });
+ });
+ });
+ },
+
+ // 取消事件绑定
+ off: function off(type, fn) {
+ return this.forEach(function (elem) {
+ elem.removeEventListener(type, fn);
+ });
+ },
+
+ // 获取/设置 属性
+ attr: function attr(key, val) {
+ if (val == null) {
+ // 获取值
+ return this[0].getAttribute(key);
+ } else {
+ // 设置值
+ return this.forEach(function (elem) {
+ elem.setAttribute(key, val);
+ });
+ }
+ },
+
+ // 添加 class
+ addClass: function addClass(className) {
+ if (!className) {
+ return this;
+ }
+ return this.forEach(function (elem) {
+ var arr = void 0;
+ if (elem.className) {
+ // 解析当前 className 转换为数组
+ arr = elem.className.split(/\s/);
+ arr = arr.filter(function (item) {
+ return !!item.trim();
+ });
+ // 添加 class
+ if (arr.indexOf(className) < 0) {
+ arr.push(className);
+ }
+ // 修改 elem.class
+ elem.className = arr.join(' ');
+ } else {
+ elem.className = className;
+ }
+ });
+ },
+
+ // 删除 class
+ removeClass: function removeClass(className) {
+ if (!className) {
+ return this;
+ }
+ return this.forEach(function (elem) {
+ var arr = void 0;
+ if (elem.className) {
+ // 解析当前 className 转换为数组
+ arr = elem.className.split(/\s/);
+ arr = arr.filter(function (item) {
+ item = item.trim();
+ // 删除 class
+ if (!item || item === className) {
+ return false;
+ }
+ return true;
+ });
+ // 修改 elem.class
+ elem.className = arr.join(' ');
+ }
+ });
+ },
+
+ // 修改 css
+ css: function css(key, val) {
+ var currentStyle = key + ':' + val + ';';
+ return this.forEach(function (elem) {
+ var style = (elem.getAttribute('style') || '').trim();
+ var styleArr = void 0,
+ resultArr = [];
+ if (style) {
+ // 将 style 按照 ; 拆分为数组
+ styleArr = style.split(';');
+ styleArr.forEach(function (item) {
+ // 对每项样式,按照 : 拆分为 key 和 value
+ var arr = item.split(':').map(function (i) {
+ return i.trim();
+ });
+ if (arr.length === 2) {
+ resultArr.push(arr[0] + ':' + arr[1]);
+ }
+ });
+ // 替换或者新增
+ resultArr = resultArr.map(function (item) {
+ if (item.indexOf(key) === 0) {
+ return currentStyle;
+ } else {
+ return item;
+ }
+ });
+ if (resultArr.indexOf(currentStyle) < 0) {
+ resultArr.push(currentStyle);
+ }
+ // 结果
+ elem.setAttribute('style', resultArr.join('; '));
+ } else {
+ // style 无值
+ elem.setAttribute('style', currentStyle);
+ }
+ });
+ },
+
+ // 显示
+ show: function show() {
+ return this.css('display', 'block');
+ },
+
+ // 隐藏
+ hide: function hide() {
+ return this.css('display', 'none');
+ },
+
+ // 获取子节点
+ children: function children() {
+ var elem = this[0];
+ if (!elem) {
+ return null;
+ }
+
+ return $(elem.children);
+ },
+
+ // 获取子节点(包括文本节点)
+ childNodes: function childNodes() {
+ var elem = this[0];
+ if (!elem) {
+ return null;
+ }
+
+ return $(elem.childNodes);
+ },
+
+ // 增加子节点
+ append: function append($children) {
+ return this.forEach(function (elem) {
+ $children.forEach(function (child) {
+ elem.appendChild(child);
+ });
+ });
+ },
+
+ // 移除当前节点
+ remove: function remove() {
+ return this.forEach(function (elem) {
+ if (elem.remove) {
+ elem.remove();
+ } else {
+ var parent = elem.parentElement;
+ parent && parent.removeChild(elem);
+ }
+ });
+ },
+
+ // 是否包含某个子节点
+ isContain: function isContain($child) {
+ var elem = this[0];
+ var child = $child[0];
+ return elem.contains(child);
+ },
+
+ // 尺寸数据
+ getSizeData: function getSizeData() {
+ var elem = this[0];
+ return elem.getBoundingClientRect(); // 可得到 bottom height left right top width 的数据
+ },
+
+ // 封装 nodeName
+ getNodeName: function getNodeName() {
+ var elem = this[0];
+ return elem.nodeName;
+ },
+
+ // 从当前元素查找
+ find: function find(selector) {
+ var elem = this[0];
+ return $(elem.querySelectorAll(selector));
+ },
+
+ // 获取当前元素的 text
+ text: function text(val) {
+ if (!val) {
+ // 获取 text
+ var elem = this[0];
+ return elem.innerHTML.replace(/<.*?>/g, function () {
+ return '';
+ });
+ } else {
+ // 设置 text
+ return this.forEach(function (elem) {
+ elem.innerHTML = val;
+ });
+ }
+ },
+
+ // 获取 html
+ html: function html(value) {
+ var elem = this[0];
+ if (value == null) {
+ return elem.innerHTML;
+ } else {
+ elem.innerHTML = value;
+ return this;
+ }
+ },
+
+ // 获取 value
+ val: function val() {
+ var elem = this[0];
+ return elem.value.trim();
+ },
+
+ // focus
+ focus: function focus() {
+ return this.forEach(function (elem) {
+ elem.focus();
+ });
+ },
+
+ // parent
+ parent: function parent() {
+ var elem = this[0];
+ return $(elem.parentElement);
+ },
+
+ // parentUntil 找到符合 selector 的父节点
+ parentUntil: function parentUntil(selector, _currentElem) {
+ var results = document.querySelectorAll(selector);
+ var length = results.length;
+ if (!length) {
+ // 传入的 selector 无效
+ return null;
+ }
+
+ var elem = _currentElem || this[0];
+ if (elem.nodeName === 'BODY') {
+ return null;
+ }
+
+ var parent = elem.parentElement;
+ var i = void 0;
+ for (i = 0; i < length; i++) {
+ if (parent === results[i]) {
+ // 找到,并返回
+ return $(parent);
+ }
+ }
+
+ // 继续查找
+ return this.parentUntil(selector, parent);
+ },
+
+ // 判断两个 elem 是否相等
+ equal: function equal($elem) {
+ if ($elem.nodeType === 1) {
+ return this[0] === $elem;
+ } else {
+ return this[0] === $elem[0];
+ }
+ },
+
+ // 将该元素插入到某个元素前面
+ insertBefore: function insertBefore(selector) {
+ var $referenceNode = $(selector);
+ var referenceNode = $referenceNode[0];
+ if (!referenceNode) {
+ return this;
+ }
+ return this.forEach(function (elem) {
+ var parent = referenceNode.parentNode;
+ parent.insertBefore(elem, referenceNode);
+ });
+ },
+
+ // 将该元素插入到某个元素后面
+ insertAfter: function insertAfter(selector) {
+ var $referenceNode = $(selector);
+ var referenceNode = $referenceNode[0];
+ if (!referenceNode) {
+ return this;
+ }
+ return this.forEach(function (elem) {
+ var parent = referenceNode.parentNode;
+ if (parent.lastChild === referenceNode) {
+ // 最后一个元素
+ parent.appendChild(elem);
+ } else {
+ // 不是最后一个元素
+ parent.insertBefore(elem, referenceNode.nextSibling);
+ }
+ });
+ }
+};
+
+// new 一个对象
+function $(selector) {
+ return new DomElement(selector);
+}
+
+// 解绑所有事件,用于销毁编辑器
+$.offAll = function () {
+ eventList.forEach(function (item) {
+ var elem = item.elem;
+ var type = item.type;
+ var fn = item.fn;
+ // 解绑
+ elem.removeEventListener(type, fn);
+ });
+};
+
+/*
+ 配置信息
+*/
+
+var config = {
+
+ // 默认菜单配置
+ menus: ['head', 'bold', 'fontSize', 'fontName', 'italic', 'underline', 'strikeThrough', 'foreColor', 'backColor', 'link', 'list', 'justify', 'quote', 'emoticon', 'image', 'table', 'video', 'code', 'undo', 'redo'],
+
+ fontNames: ['宋体', '微软雅黑', 'Arial', 'Tahoma', 'Verdana'],
+
+ colors: ['#000000', '#eeece0', '#1c487f', '#4d80bf', '#c24f4a', '#8baa4a', '#7b5ba1', '#46acc8', '#f9963b', '#ffffff'],
+
+ // // 语言配置
+ // lang: {
+ // '设置标题': 'title',
+ // '正文': 'p',
+ // '链接文字': 'link text',
+ // '链接': 'link',
+ // '插入': 'insert',
+ // '创建': 'init'
+ // },
+
+ // 表情
+ emotions: [{
+ // tab 的标题
+ title: '默认',
+ // type -> 'emoji' / 'image'
+ type: 'image',
+ // content -> 数组
+ content: [{
+ alt: '[坏笑]',
+ src: 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/50/pcmoren_huaixiao_org.png'
+ }, {
+ alt: '[舔屏]',
+ src: 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/pcmoren_tian_org.png'
+ }, {
+ alt: '[污]',
+ src: 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/pcmoren_wu_org.png'
+ }]
+ }, {
+ // tab 的标题
+ title: '新浪',
+ // type -> 'emoji' / 'image'
+ type: 'image',
+ // content -> 数组
+ content: [{
+ src: 'http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/7a/shenshou_thumb.gif',
+ alt: '[草泥马]'
+ }, {
+ src: 'http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/60/horse2_thumb.gif',
+ alt: '[神马]'
+ }, {
+ src: 'http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/bc/fuyun_thumb.gif',
+ alt: '[浮云]'
+ }]
+ }, {
+ // tab 的标题
+ title: 'emoji',
+ // type -> 'emoji' / 'image'
+ type: 'emoji',
+ // content -> 数组
+ content: '😀 😃 😄 😁 😆 😅 😂 😊 😇 🙂 🙃 😉 😓 😪 😴 🙄 🤔 😬 🤐'.split(/\s/)
+ }],
+
+ // 编辑区域的 z-index
+ zIndex: 10000,
+
+ // 是否开启 debug 模式(debug 模式下错误会 throw error 形式抛出)
+ debug: false,
+
+ // 插入链接时候的格式校验
+ linkCheck: function linkCheck(text, link) {
+ // text 是插入的文字
+ // link 是插入的链接
+ return true; // 返回 true 即表示成功
+ // return '校验失败' // 返回字符串即表示失败的提示信息
+ },
+
+ // 插入网络图片的校验
+ linkImgCheck: function linkImgCheck(src) {
+ // src 即图片的地址
+ return true; // 返回 true 即表示成功
+ // return '校验失败' // 返回字符串即表示失败的提示信息
+ },
+
+ // 粘贴过滤样式,默认开启
+ pasteFilterStyle: true,
+
+ // 粘贴内容时,忽略图片。默认关闭
+ pasteIgnoreImg: false,
+
+ // 对粘贴的文字进行自定义处理,返回处理后的结果。编辑器会将处理后的结果粘贴到编辑区域中。
+ // IE 暂时不支持
+ pasteTextHandle: function pasteTextHandle(content) {
+ // content 即粘贴过来的内容(html 或 纯文本),可进行自定义处理然后返回
+ return content;
+ },
+
+ // onchange 事件
+ // onchange: function (html) {
+ // // html 即变化之后的内容
+ // console.log(html)
+ // },
+
+ // 是否显示添加网络图片的 tab
+ showLinkImg: true,
+
+ // 插入网络图片的回调
+ linkImgCallback: function linkImgCallback(url) {
+ // console.log(url) // url 即插入图片的地址
+ },
+
+ // 默认上传图片 max size: 5M
+ uploadImgMaxSize: 5 * 1024 * 1024,
+
+ // 配置一次最多上传几个图片
+ // uploadImgMaxLength: 5,
+
+ // 上传图片,是否显示 base64 格式
+ uploadImgShowBase64: false,
+
+ // 上传图片,server 地址(如果有值,则 base64 格式的配置则失效)
+ // uploadImgServer: '/upload',
+
+ // 自定义配置 filename
+ uploadFileName: '',
+
+ // 上传图片的自定义参数
+ uploadImgParams: {
+ // token: 'abcdef12345'
+ },
+
+ // 上传图片的自定义header
+ uploadImgHeaders: {
+ // 'Accept': 'text/x-json'
+ },
+
+ // 配置 XHR withCredentials
+ withCredentials: false,
+
+ // 自定义上传图片超时时间 ms
+ uploadImgTimeout: 10000,
+
+ // 上传图片 hook
+ uploadImgHooks: {
+ // customInsert: function (insertLinkImg, result, editor) {
+ // console.log('customInsert')
+ // // 图片上传并返回结果,自定义插入图片的事件,而不是编辑器自动插入图片
+ // const data = result.data1 || []
+ // data.forEach(link => {
+ // insertLinkImg(link)
+ // })
+ // },
+ before: function before(xhr, editor, files) {
+ // 图片上传之前触发
+
+ // 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传
+ // return {
+ // prevent: true,
+ // msg: '放弃上传'
+ // }
+ },
+ success: function success(xhr, editor, result) {
+ // 图片上传并返回结果,图片插入成功之后触发
+ },
+ fail: function fail(xhr, editor, result) {
+ // 图片上传并返回结果,但图片插入错误时触发
+ },
+ error: function error(xhr, editor) {
+ // 图片上传出错时触发
+ },
+ timeout: function timeout(xhr, editor) {
+ // 图片上传超时时触发
+ }
+ },
+
+ // 是否上传七牛云,默认为 false
+ qiniu: false
+
+};
+
+/*
+ 工具
+*/
+
+// 和 UA 相关的属性
+var UA = {
+ _ua: navigator.userAgent,
+
+ // 是否 webkit
+ isWebkit: function isWebkit() {
+ var reg = /webkit/i;
+ return reg.test(this._ua);
+ },
+
+ // 是否 IE
+ isIE: function isIE() {
+ return 'ActiveXObject' in window;
+ }
+};
+
+// 遍历对象
+function objForEach(obj, fn) {
+ var key = void 0,
+ result = void 0;
+ for (key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ result = fn.call(obj, key, obj[key]);
+ if (result === false) {
+ break;
+ }
+ }
+ }
+}
+
+// 遍历类数组
+function arrForEach(fakeArr, fn) {
+ var i = void 0,
+ item = void 0,
+ result = void 0;
+ var length = fakeArr.length || 0;
+ for (i = 0; i < length; i++) {
+ item = fakeArr[i];
+ result = fn.call(fakeArr, item, i);
+ if (result === false) {
+ break;
+ }
+ }
+}
+
+// 获取随机数
+function getRandom(prefix) {
+ return prefix + Math.random().toString().slice(2);
+}
+
+// 替换 html 特殊字符
+function replaceHtmlSymbol(html) {
+ if (html == null) {
+ return '';
+ }
+ return html.replace(//gm, '>').replace(/"/gm, '"').replace(/(\r\n|\r|\n)/g, '
');
+}
+
+// 返回百分比的格式
+
+
+// 判断是不是 function
+function isFunction(fn) {
+ return typeof fn === 'function';
+}
+
+/*
+ bold-menu
+*/
+// 构造函数
+function Bold(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'click';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Bold.prototype = {
+ constructor: Bold,
+
+ // 点击事件
+ onClick: function onClick(e) {
+ // 点击菜单将触发这里
+
+ var editor = this.editor;
+ var isSeleEmpty = editor.selection.isSelectionEmpty();
+
+ if (isSeleEmpty) {
+ // 选区是空的,插入并选中一个“空白”
+ editor.selection.createEmptyRange();
+ }
+
+ // 执行 bold 命令
+ editor.cmd.do('bold');
+
+ if (isSeleEmpty) {
+ // 需要将选取折叠起来
+ editor.selection.collapseRange();
+ editor.selection.restoreSelection();
+ }
+ },
+
+ // 试图改变 active 状态
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ if (editor.cmd.queryCommandState('bold')) {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ 替换多语言
+ */
+
+var replaceLang = function (editor, str) {
+ var langArgs = editor.config.langArgs || [];
+ var result = str;
+
+ langArgs.forEach(function (item) {
+ var reg = item.reg;
+ var val = item.val;
+
+ if (reg.test(result)) {
+ result = result.replace(reg, function () {
+ return val;
+ });
+ }
+ });
+
+ return result;
+};
+
+/*
+ droplist
+*/
+var _emptyFn = function _emptyFn() {};
+
+// 构造函数
+function DropList(menu, opt) {
+ var _this = this;
+
+ // droplist 所依附的菜单
+ var editor = menu.editor;
+ this.menu = menu;
+ this.opt = opt;
+ // 容器
+ var $container = $('
');
+
+ // 标题
+ var $title = opt.$title;
+ var titleHtml = void 0;
+ if ($title) {
+ // 替换多语言
+ titleHtml = $title.html();
+ titleHtml = replaceLang(editor, titleHtml);
+ $title.html(titleHtml);
+
+ $title.addClass('w-e-dp-title');
+ $container.append($title);
+ }
+
+ var list = opt.list || [];
+ var type = opt.type || 'list'; // 'list' 列表形式(如“标题”菜单) / 'inline-block' 块状形式(如“颜色”菜单)
+ var onClick = opt.onClick || _emptyFn;
+
+ // 加入 DOM 并绑定事件
+ var $list = $('
');
+ $container.append($list);
+ list.forEach(function (item) {
+ var $elem = item.$elem;
+
+ // 替换多语言
+ var elemHtml = $elem.html();
+ elemHtml = replaceLang(editor, elemHtml);
+ $elem.html(elemHtml);
+
+ var value = item.value;
+ var $li = $('
');
+ if ($elem) {
+ $li.append($elem);
+ $list.append($li);
+ $li.on('click', function (e) {
+ onClick(value);
+
+ // 隐藏
+ _this.hideTimeoutId = setTimeout(function () {
+ _this.hide();
+ }, 0);
+ });
+ }
+ });
+
+ // 绑定隐藏事件
+ $container.on('mouseleave', function (e) {
+ _this.hideTimeoutId = setTimeout(function () {
+ _this.hide();
+ }, 0);
+ });
+
+ // 记录属性
+ this.$container = $container;
+
+ // 基本属性
+ this._rendered = false;
+ this._show = false;
+}
+
+// 原型
+DropList.prototype = {
+ constructor: DropList,
+
+ // 显示(插入DOM)
+ show: function show() {
+ if (this.hideTimeoutId) {
+ // 清除之前的定时隐藏
+ clearTimeout(this.hideTimeoutId);
+ }
+
+ var menu = this.menu;
+ var $menuELem = menu.$elem;
+ var $container = this.$container;
+ if (this._show) {
+ return;
+ }
+ if (this._rendered) {
+ // 显示
+ $container.show();
+ } else {
+ // 加入 DOM 之前先定位位置
+ var menuHeight = $menuELem.getSizeData().height || 0;
+ var width = this.opt.width || 100; // 默认为 100
+ $container.css('margin-top', menuHeight + 'px').css('width', width + 'px');
+
+ // 加入到 DOM
+ $menuELem.append($container);
+ this._rendered = true;
+ }
+
+ // 修改属性
+ this._show = true;
+ },
+
+ // 隐藏(移除DOM)
+ hide: function hide() {
+ if (this.showTimeoutId) {
+ // 清除之前的定时显示
+ clearTimeout(this.showTimeoutId);
+ }
+
+ var $container = this.$container;
+ if (!this._show) {
+ return;
+ }
+ // 隐藏并需改属性
+ $container.hide();
+ this._show = false;
+ }
+};
+
+/*
+ menu - header
+*/
+// 构造函数
+function Head(editor) {
+ var _this = this;
+
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'droplist';
+
+ // 当前是否 active 状态
+ this._active = false;
+
+ // 初始化 droplist
+ this.droplist = new DropList(this, {
+ width: 100,
+ $title: $('
设置标题
'),
+ type: 'list', // droplist 以列表形式展示
+ list: [{ $elem: $('
H1 '), value: '
' }, { $elem: $('H2 '), value: '' }, { $elem: $('H3 '), value: '' }, { $elem: $('H4 '), value: '' }, { $elem: $('H5 '), value: '' }, { $elem: $(' 正文
'), value: '
' }],
+ onClick: function onClick(value) {
+ // 注意 this 是指向当前的 Head 对象
+ _this._command(value);
+ }
+ });
+}
+
+// 原型
+Head.prototype = {
+ constructor: Head,
+
+ // 执行命令
+ _command: function _command(value) {
+ var editor = this.editor;
+
+ var $selectionElem = editor.selection.getSelectionContainerElem();
+ if (editor.$textElem.equal($selectionElem)) {
+ // 不能选中多行来设置标题,否则会出现问题
+ // 例如选中的是
xxx
yyy
来设置标题,设置之后会成为
xxx yyy 不符合预期
+ return;
+ }
+
+ editor.cmd.do('formatBlock', value);
+ },
+
+ // 试图改变 active 状态
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ var reg = /^h/i;
+ var cmdValue = editor.cmd.queryCommandValue('formatBlock');
+ if (reg.test(cmdValue)) {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ menu - fontSize
+*/
+
+// 构造函数
+function FontSize(editor) {
+ var _this = this;
+
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'droplist';
+
+ // 当前是否 active 状态
+ this._active = false;
+
+ // 初始化 droplist
+ this.droplist = new DropList(this, {
+ width: 160,
+ $title: $('
字号
'),
+ type: 'list', // droplist 以列表形式展示
+ list: [{ $elem: $('
x-small '), value: '1' }, { $elem: $('
small '), value: '2' }, { $elem: $('
normal '), value: '3' }, { $elem: $('
large '), value: '4' }, { $elem: $('
x-large '), value: '5' }, { $elem: $('
xx-large '), value: '6' }],
+ onClick: function onClick(value) {
+ // 注意 this 是指向当前的 FontSize 对象
+ _this._command(value);
+ }
+ });
+}
+
+// 原型
+FontSize.prototype = {
+ constructor: FontSize,
+
+ // 执行命令
+ _command: function _command(value) {
+ var editor = this.editor;
+ editor.cmd.do('fontSize', value);
+ }
+};
+
+/*
+ menu - fontName
+*/
+
+// 构造函数
+function FontName(editor) {
+ var _this = this;
+
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'droplist';
+
+ // 当前是否 active 状态
+ this._active = false;
+
+ // 获取配置的字体
+ var config = editor.config;
+ var fontNames = config.fontNames || [];
+
+ // 初始化 droplist
+ this.droplist = new DropList(this, {
+ width: 100,
+ $title: $('
字体
'),
+ type: 'list', // droplist 以列表形式展示
+ list: fontNames.map(function (fontName) {
+ return { $elem: $('
' + fontName + ' '), value: fontName };
+ }),
+ onClick: function onClick(value) {
+ // 注意 this 是指向当前的 FontName 对象
+ _this._command(value);
+ }
+ });
+}
+
+// 原型
+FontName.prototype = {
+ constructor: FontName,
+
+ _command: function _command(value) {
+ var editor = this.editor;
+ editor.cmd.do('fontName', value);
+ }
+};
+
+/*
+ panel
+*/
+
+var emptyFn = function emptyFn() {};
+
+// 记录已经显示 panel 的菜单
+var _isCreatedPanelMenus = [];
+
+// 构造函数
+function Panel(menu, opt) {
+ this.menu = menu;
+ this.opt = opt;
+}
+
+// 原型
+Panel.prototype = {
+ constructor: Panel,
+
+ // 显示(插入DOM)
+ show: function show() {
+ var _this = this;
+
+ var menu = this.menu;
+ if (_isCreatedPanelMenus.indexOf(menu) >= 0) {
+ // 该菜单已经创建了 panel 不能再创建
+ return;
+ }
+
+ var editor = menu.editor;
+ var $body = $('body');
+ var $textContainerElem = editor.$textContainerElem;
+ var opt = this.opt;
+
+ // panel 的容器
+ var $container = $('
');
+ var width = opt.width || 300; // 默认 300px
+ $container.css('width', width + 'px').css('margin-left', (0 - width) / 2 + 'px');
+
+ // 添加关闭按钮
+ var $closeBtn = $('
');
+ $container.append($closeBtn);
+ $closeBtn.on('click', function () {
+ _this.hide();
+ });
+
+ // 准备 tabs 容器
+ var $tabTitleContainer = $('
');
+ var $tabContentContainer = $('
');
+ $container.append($tabTitleContainer).append($tabContentContainer);
+
+ // 设置高度
+ var height = opt.height;
+ if (height) {
+ $tabContentContainer.css('height', height + 'px').css('overflow-y', 'auto');
+ }
+
+ // tabs
+ var tabs = opt.tabs || [];
+ var tabTitleArr = [];
+ var tabContentArr = [];
+ tabs.forEach(function (tab, tabIndex) {
+ if (!tab) {
+ return;
+ }
+ var title = tab.title || '';
+ var tpl = tab.tpl || '';
+
+ // 替换多语言
+ title = replaceLang(editor, title);
+ tpl = replaceLang(editor, tpl);
+
+ // 添加到 DOM
+ var $title = $('
' + title + ' ');
+ $tabTitleContainer.append($title);
+ var $content = $(tpl);
+ $tabContentContainer.append($content);
+
+ // 记录到内存
+ $title._index = tabIndex;
+ tabTitleArr.push($title);
+ tabContentArr.push($content);
+
+ // 设置 active 项
+ if (tabIndex === 0) {
+ $title._active = true;
+ $title.addClass('w-e-active');
+ } else {
+ $content.hide();
+ }
+
+ // 绑定 tab 的事件
+ $title.on('click', function (e) {
+ if ($title._active) {
+ return;
+ }
+ // 隐藏所有的 tab
+ tabTitleArr.forEach(function ($title) {
+ $title._active = false;
+ $title.removeClass('w-e-active');
+ });
+ tabContentArr.forEach(function ($content) {
+ $content.hide();
+ });
+
+ // 显示当前的 tab
+ $title._active = true;
+ $title.addClass('w-e-active');
+ $content.show();
+ });
+ });
+
+ // 绑定关闭事件
+ $container.on('click', function (e) {
+ // 点击时阻止冒泡
+ e.stopPropagation();
+ });
+ $body.on('click', function (e) {
+ _this.hide();
+ });
+
+ // 添加到 DOM
+ $textContainerElem.append($container);
+
+ // 绑定 opt 的事件,只有添加到 DOM 之后才能绑定成功
+ tabs.forEach(function (tab, index) {
+ if (!tab) {
+ return;
+ }
+ var events = tab.events || [];
+ events.forEach(function (event) {
+ var selector = event.selector;
+ var type = event.type;
+ var fn = event.fn || emptyFn;
+ var $content = tabContentArr[index];
+ $content.find(selector).on(type, function (e) {
+ e.stopPropagation();
+ var needToHide = fn(e);
+ // 执行完事件之后,是否要关闭 panel
+ if (needToHide) {
+ _this.hide();
+ }
+ });
+ });
+ });
+
+ // focus 第一个 elem
+ var $inputs = $container.find('input[type=text],textarea');
+ if ($inputs.length) {
+ $inputs.get(0).focus();
+ }
+
+ // 添加到属性
+ this.$container = $container;
+
+ // 隐藏其他 panel
+ this._hideOtherPanels();
+ // 记录该 menu 已经创建了 panel
+ _isCreatedPanelMenus.push(menu);
+ },
+
+ // 隐藏(移除DOM)
+ hide: function hide() {
+ var menu = this.menu;
+ var $container = this.$container;
+ if ($container) {
+ $container.remove();
+ }
+
+ // 将该 menu 记录中移除
+ _isCreatedPanelMenus = _isCreatedPanelMenus.filter(function (item) {
+ if (item === menu) {
+ return false;
+ } else {
+ return true;
+ }
+ });
+ },
+
+ // 一个 panel 展示时,隐藏其他 panel
+ _hideOtherPanels: function _hideOtherPanels() {
+ if (!_isCreatedPanelMenus.length) {
+ return;
+ }
+ _isCreatedPanelMenus.forEach(function (menu) {
+ var panel = menu.panel || {};
+ if (panel.hide) {
+ panel.hide();
+ }
+ });
+ }
+};
+
+/*
+ menu - link
+*/
+// 构造函数
+function Link(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'panel';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Link.prototype = {
+ constructor: Link,
+
+ // 点击事件
+ onClick: function onClick(e) {
+ var editor = this.editor;
+ var $linkelem = void 0;
+
+ if (this._active) {
+ // 当前选区在链接里面
+ $linkelem = editor.selection.getSelectionContainerElem();
+ if (!$linkelem) {
+ return;
+ }
+ // 将该元素都包含在选取之内,以便后面整体替换
+ editor.selection.createRangeByElem($linkelem);
+ editor.selection.restoreSelection();
+ // 显示 panel
+ this._createPanel($linkelem.text(), $linkelem.attr('href'));
+ } else {
+ // 当前选区不在链接里面
+ if (editor.selection.isSelectionEmpty()) {
+ // 选区是空的,未选中内容
+ this._createPanel('', '');
+ } else {
+ // 选中内容了
+ this._createPanel(editor.selection.getSelectionText(), '');
+ }
+ }
+ },
+
+ // 创建 panel
+ _createPanel: function _createPanel(text, link) {
+ var _this = this;
+
+ // panel 中需要用到的id
+ var inputLinkId = getRandom('input-link');
+ var inputTextId = getRandom('input-text');
+ var btnOkId = getRandom('btn-ok');
+ var btnDelId = getRandom('btn-del');
+
+ // 是否显示“删除链接”
+ var delBtnDisplay = this._active ? 'inline-block' : 'none';
+
+ // 初始化并显示 panel
+ var panel = new Panel(this, {
+ width: 300,
+ // panel 中可包含多个 tab
+ tabs: [{
+ // tab 的标题
+ title: '链接',
+ // 模板
+ tpl: '
',
+ // 事件绑定
+ events: [
+ // 插入链接
+ {
+ selector: '#' + btnOkId,
+ type: 'click',
+ fn: function fn() {
+ // 执行插入链接
+ var $link = $('#' + inputLinkId);
+ var $text = $('#' + inputTextId);
+ var link = $link.val();
+ var text = $text.val();
+ _this._insertLink(text, link);
+
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ },
+ // 删除链接
+ {
+ selector: '#' + btnDelId,
+ type: 'click',
+ fn: function fn() {
+ // 执行删除链接
+ _this._delLink();
+
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }]
+ } // tab end
+ ] // tabs end
+ });
+
+ // 显示 panel
+ panel.show();
+
+ // 记录属性
+ this.panel = panel;
+ },
+
+ // 删除当前链接
+ _delLink: function _delLink() {
+ if (!this._active) {
+ return;
+ }
+ var editor = this.editor;
+ var $selectionELem = editor.selection.getSelectionContainerElem();
+ if (!$selectionELem) {
+ return;
+ }
+ var selectionText = editor.selection.getSelectionText();
+ editor.cmd.do('insertHTML', '
' + selectionText + ' ');
+ },
+
+ // 插入链接
+ _insertLink: function _insertLink(text, link) {
+ var editor = this.editor;
+ var config = editor.config;
+ var linkCheck = config.linkCheck;
+ var checkResult = true; // 默认为 true
+ if (linkCheck && typeof linkCheck === 'function') {
+ checkResult = linkCheck(text, link);
+ }
+ if (checkResult === true) {
+ editor.cmd.do('insertHTML', '
' + text + ' ');
+ } else {
+ alert(checkResult);
+ }
+ },
+
+ // 试图改变 active 状态
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ var $selectionELem = editor.selection.getSelectionContainerElem();
+ if (!$selectionELem) {
+ return;
+ }
+ if ($selectionELem.getNodeName() === 'A') {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ italic-menu
+*/
+// 构造函数
+function Italic(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'click';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Italic.prototype = {
+ constructor: Italic,
+
+ // 点击事件
+ onClick: function onClick(e) {
+ // 点击菜单将触发这里
+
+ var editor = this.editor;
+ var isSeleEmpty = editor.selection.isSelectionEmpty();
+
+ if (isSeleEmpty) {
+ // 选区是空的,插入并选中一个“空白”
+ editor.selection.createEmptyRange();
+ }
+
+ // 执行 italic 命令
+ editor.cmd.do('italic');
+
+ if (isSeleEmpty) {
+ // 需要将选取折叠起来
+ editor.selection.collapseRange();
+ editor.selection.restoreSelection();
+ }
+ },
+
+ // 试图改变 active 状态
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ if (editor.cmd.queryCommandState('italic')) {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ redo-menu
+*/
+// 构造函数
+function Redo(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'click';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Redo.prototype = {
+ constructor: Redo,
+
+ // 点击事件
+ onClick: function onClick(e) {
+ // 点击菜单将触发这里
+
+ var editor = this.editor;
+
+ // 执行 redo 命令
+ editor.cmd.do('redo');
+ }
+};
+
+/*
+ strikeThrough-menu
+*/
+// 构造函数
+function StrikeThrough(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'click';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+StrikeThrough.prototype = {
+ constructor: StrikeThrough,
+
+ // 点击事件
+ onClick: function onClick(e) {
+ // 点击菜单将触发这里
+
+ var editor = this.editor;
+ var isSeleEmpty = editor.selection.isSelectionEmpty();
+
+ if (isSeleEmpty) {
+ // 选区是空的,插入并选中一个“空白”
+ editor.selection.createEmptyRange();
+ }
+
+ // 执行 strikeThrough 命令
+ editor.cmd.do('strikeThrough');
+
+ if (isSeleEmpty) {
+ // 需要将选取折叠起来
+ editor.selection.collapseRange();
+ editor.selection.restoreSelection();
+ }
+ },
+
+ // 试图改变 active 状态
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ if (editor.cmd.queryCommandState('strikeThrough')) {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ underline-menu
+*/
+// 构造函数
+function Underline(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'click';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Underline.prototype = {
+ constructor: Underline,
+
+ // 点击事件
+ onClick: function onClick(e) {
+ // 点击菜单将触发这里
+
+ var editor = this.editor;
+ var isSeleEmpty = editor.selection.isSelectionEmpty();
+
+ if (isSeleEmpty) {
+ // 选区是空的,插入并选中一个“空白”
+ editor.selection.createEmptyRange();
+ }
+
+ // 执行 underline 命令
+ editor.cmd.do('underline');
+
+ if (isSeleEmpty) {
+ // 需要将选取折叠起来
+ editor.selection.collapseRange();
+ editor.selection.restoreSelection();
+ }
+ },
+
+ // 试图改变 active 状态
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ if (editor.cmd.queryCommandState('underline')) {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ undo-menu
+*/
+// 构造函数
+function Undo(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'click';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Undo.prototype = {
+ constructor: Undo,
+
+ // 点击事件
+ onClick: function onClick(e) {
+ // 点击菜单将触发这里
+
+ var editor = this.editor;
+
+ // 执行 undo 命令
+ editor.cmd.do('undo');
+ }
+};
+
+/*
+ menu - list
+*/
+// 构造函数
+function List(editor) {
+ var _this = this;
+
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'droplist';
+
+ // 当前是否 active 状态
+ this._active = false;
+
+ // 初始化 droplist
+ this.droplist = new DropList(this, {
+ width: 120,
+ $title: $('
设置列表
'),
+ type: 'list', // droplist 以列表形式展示
+ list: [{ $elem: $('
有序列表'), value: 'insertOrderedList' }, { $elem: $('
无序列表'), value: 'insertUnorderedList' }],
+ onClick: function onClick(value) {
+ // 注意 this 是指向当前的 List 对象
+ _this._command(value);
+ }
+ });
+}
+
+// 原型
+List.prototype = {
+ constructor: List,
+
+ // 执行命令
+ _command: function _command(value) {
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+ editor.selection.restoreSelection();
+ if (editor.cmd.queryCommandState(value)) {
+ return;
+ }
+ editor.cmd.do(value);
+
+ // 验证列表是否被包裹在
之内
+ var $selectionElem = editor.selection.getSelectionContainerElem();
+ if ($selectionElem.getNodeName() === 'LI') {
+ $selectionElem = $selectionElem.parent();
+ }
+ if (/^ol|ul$/i.test($selectionElem.getNodeName()) === false) {
+ return;
+ }
+ if ($selectionElem.equal($textElem)) {
+ // 证明是顶级标签,没有被
包裹
+ return;
+ }
+ var $parent = $selectionElem.parent();
+ if ($parent.equal($textElem)) {
+ // $parent 是顶级标签,不能删除
+ return;
+ }
+
+ $selectionElem.insertAfter($parent);
+ $parent.remove();
+ },
+
+ // 试图改变 active 状态
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ if (editor.cmd.queryCommandState('insertUnOrderedList') || editor.cmd.queryCommandState('insertOrderedList')) {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ menu - justify
+*/
+// 构造函数
+function Justify(editor) {
+ var _this = this;
+
+ this.editor = editor;
+ this.$elem = $('
');
+ this.type = 'droplist';
+
+ // 当前是否 active 状态
+ this._active = false;
+
+ // 初始化 droplist
+ this.droplist = new DropList(this, {
+ width: 100,
+ $title: $('
对齐方式
'),
+ type: 'list', // droplist 以列表形式展示
+ list: [{ $elem: $('
靠左'), value: 'justifyLeft' }, { $elem: $('
居中'), value: 'justifyCenter' }, { $elem: $('
靠右'), value: 'justifyRight' }],
+ onClick: function onClick(value) {
+ // 注意 this 是指向当前的 List 对象
+ _this._command(value);
+ }
+ });
+}
+
+// 原型
+Justify.prototype = {
+ constructor: Justify,
+
+ // 执行命令
+ _command: function _command(value) {
+ var editor = this.editor;
+ editor.cmd.do(value);
+ }
+};
+
+/*
+ menu - Forecolor
+*/
+// 构造函数
+function ForeColor(editor) {
+ var _this = this;
+
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'droplist';
+
+ // 获取配置的颜色
+ var config = editor.config;
+ var colors = config.colors || [];
+
+ // 当前是否 active 状态
+ this._active = false;
+
+ // 初始化 droplist
+ this.droplist = new DropList(this, {
+ width: 120,
+ $title: $('
文字颜色
'),
+ type: 'inline-block', // droplist 内容以 block 形式展示
+ list: colors.map(function (color) {
+ return { $elem: $('
'), value: color };
+ }),
+ onClick: function onClick(value) {
+ // 注意 this 是指向当前的 ForeColor 对象
+ _this._command(value);
+ }
+ });
+}
+
+// 原型
+ForeColor.prototype = {
+ constructor: ForeColor,
+
+ // 执行命令
+ _command: function _command(value) {
+ var editor = this.editor;
+ editor.cmd.do('foreColor', value);
+ }
+};
+
+/*
+ menu - BackColor
+*/
+// 构造函数
+function BackColor(editor) {
+ var _this = this;
+
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'droplist';
+
+ // 获取配置的颜色
+ var config = editor.config;
+ var colors = config.colors || [];
+
+ // 当前是否 active 状态
+ this._active = false;
+
+ // 初始化 droplist
+ this.droplist = new DropList(this, {
+ width: 120,
+ $title: $('
背景色
'),
+ type: 'inline-block', // droplist 内容以 block 形式展示
+ list: colors.map(function (color) {
+ return { $elem: $('
'), value: color };
+ }),
+ onClick: function onClick(value) {
+ // 注意 this 是指向当前的 BackColor 对象
+ _this._command(value);
+ }
+ });
+}
+
+// 原型
+BackColor.prototype = {
+ constructor: BackColor,
+
+ // 执行命令
+ _command: function _command(value) {
+ var editor = this.editor;
+ editor.cmd.do('backColor', value);
+ }
+};
+
+/*
+ menu - quote
+*/
+// 构造函数
+function Quote(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'click';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Quote.prototype = {
+ constructor: Quote,
+
+ onClick: function onClick(e) {
+ var editor = this.editor;
+ var $selectionElem = editor.selection.getSelectionContainerElem();
+ var nodeName = $selectionElem.getNodeName();
+
+ if (!UA.isIE()) {
+ if (nodeName === 'BLOCKQUOTE') {
+ // 撤销 quote
+ editor.cmd.do('formatBlock', '
');
+ } else {
+ // 转换为 quote
+ editor.cmd.do('formatBlock', '
');
+ }
+ return;
+ }
+
+ // IE 中不支持 formatBlock ,要用其他方式兼容
+ var content = void 0,
+ $targetELem = void 0;
+ if (nodeName === 'P') {
+ // 将 P 转换为 quote
+ content = $selectionElem.text();
+ $targetELem = $('' + content + ' ');
+ $targetELem.insertAfter($selectionElem);
+ $selectionElem.remove();
+ return;
+ }
+ if (nodeName === 'BLOCKQUOTE') {
+ // 撤销 quote
+ content = $selectionElem.text();
+ $targetELem = $('' + content + '
');
+ $targetELem.insertAfter($selectionElem);
+ $selectionElem.remove();
+ }
+ },
+
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ var reg = /^BLOCKQUOTE$/i;
+ var cmdValue = editor.cmd.queryCommandValue('formatBlock');
+ if (reg.test(cmdValue)) {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ menu - code
+*/
+// 构造函数
+function Code(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'panel';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Code.prototype = {
+ constructor: Code,
+
+ onClick: function onClick(e) {
+ var editor = this.editor;
+ var $startElem = editor.selection.getSelectionStartElem();
+ var $endElem = editor.selection.getSelectionEndElem();
+ var isSeleEmpty = editor.selection.isSelectionEmpty();
+ var selectionText = editor.selection.getSelectionText();
+ var $code = void 0;
+
+ if (!$startElem.equal($endElem)) {
+ // 跨元素选择,不做处理
+ editor.selection.restoreSelection();
+ return;
+ }
+ if (!isSeleEmpty) {
+ // 选取不是空,用 包裹即可
+ $code = $('' + selectionText + '');
+ editor.cmd.do('insertElem', $code);
+ editor.selection.createRangeByElem($code, false);
+ editor.selection.restoreSelection();
+ return;
+ }
+
+ // 选取是空,且没有夸元素选择,则插入
+ if (this._active) {
+ // 选中状态,将编辑内容
+ this._createPanel($startElem.html());
+ } else {
+ // 未选中状态,将创建内容
+ this._createPanel();
+ }
+ },
+
+ _createPanel: function _createPanel(value) {
+ var _this = this;
+
+ // value - 要编辑的内容
+ value = value || '';
+ var type = !value ? 'new' : 'edit';
+ var textId = getRandom('texxt');
+ var btnId = getRandom('btn');
+
+ var panel = new Panel(this, {
+ width: 500,
+ // 一个 Panel 包含多个 tab
+ tabs: [{
+ // 标题
+ title: '插入代码',
+ // 模板
+ tpl: '\n
\n
\n \u63D2\u5165 \n
\n
',
+ // 事件绑定
+ events: [
+ // 插入代码
+ {
+ selector: '#' + btnId,
+ type: 'click',
+ fn: function fn() {
+ var $text = $('#' + textId);
+ var text = $text.val() || $text.html();
+ text = replaceHtmlSymbol(text);
+ if (type === 'new') {
+ // 新插入
+ _this._insertCode(text);
+ } else {
+ // 编辑更新
+ _this._updateCode(text);
+ }
+
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }]
+ } // first tab end
+ ] // tabs end
+ }); // new Panel end
+
+ // 显示 panel
+ panel.show();
+
+ // 记录属性
+ this.panel = panel;
+ },
+
+ // 插入代码
+ _insertCode: function _insertCode(value) {
+ var editor = this.editor;
+ editor.cmd.do('insertHTML', '
' + value + '
');
+ },
+
+ // 更新代码
+ _updateCode: function _updateCode(value) {
+ var editor = this.editor;
+ var $selectionELem = editor.selection.getSelectionContainerElem();
+ if (!$selectionELem) {
+ return;
+ }
+ $selectionELem.html(value);
+ editor.selection.restoreSelection();
+ },
+
+ // 试图改变 active 状态
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ var $selectionELem = editor.selection.getSelectionContainerElem();
+ if (!$selectionELem) {
+ return;
+ }
+ var $parentElem = $selectionELem.parent();
+ if ($selectionELem.getNodeName() === 'CODE' && $parentElem.getNodeName() === 'PRE') {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ menu - emoticon
+*/
+// 构造函数
+function Emoticon(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'panel';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Emoticon.prototype = {
+ constructor: Emoticon,
+
+ onClick: function onClick() {
+ this._createPanel();
+ },
+
+ _createPanel: function _createPanel() {
+ var _this = this;
+
+ var editor = this.editor;
+ var config = editor.config;
+ // 获取表情配置
+ var emotions = config.emotions || [];
+
+ // 创建表情 dropPanel 的配置
+ var tabConfig = [];
+ emotions.forEach(function (emotData) {
+ var emotType = emotData.type;
+ var content = emotData.content || [];
+
+ // 这一组表情最终拼接出来的 html
+ var faceHtml = '';
+
+ // emoji 表情
+ if (emotType === 'emoji') {
+ content.forEach(function (item) {
+ if (item) {
+ faceHtml += '
' + item + ' ';
+ }
+ });
+ }
+ // 图片表情
+ if (emotType === 'image') {
+ content.forEach(function (item) {
+ var src = item.src;
+ var alt = item.alt;
+ if (src) {
+ // 加一个 data-w-e 属性,点击图片的时候不再提示编辑图片
+ faceHtml += '
';
+ }
+ });
+ }
+
+ tabConfig.push({
+ title: emotData.title,
+ tpl: '
' + faceHtml + '
',
+ events: [{
+ selector: 'span.w-e-item',
+ type: 'click',
+ fn: function fn(e) {
+ var target = e.target;
+ var $target = $(target);
+ var nodeName = $target.getNodeName();
+
+ var insertHtml = void 0;
+ if (nodeName === 'IMG') {
+ // 插入图片
+ insertHtml = $target.parent().html();
+ } else {
+ // 插入 emoji
+ insertHtml = '
' + $target.html() + ' ';
+ }
+
+ _this._insert(insertHtml);
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }]
+ });
+ });
+
+ var panel = new Panel(this, {
+ width: 300,
+ height: 200,
+ // 一个 Panel 包含多个 tab
+ tabs: tabConfig
+ });
+
+ // 显示 panel
+ panel.show();
+
+ // 记录属性
+ this.panel = panel;
+ },
+
+ // 插入表情
+ _insert: function _insert(emotHtml) {
+ var editor = this.editor;
+ editor.cmd.do('insertHTML', emotHtml);
+ }
+};
+
+/*
+ menu - table
+*/
+// 构造函数
+function Table(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'panel';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Table.prototype = {
+ constructor: Table,
+
+ onClick: function onClick() {
+ if (this._active) {
+ // 编辑现有表格
+ this._createEditPanel();
+ } else {
+ // 插入新表格
+ this._createInsertPanel();
+ }
+ },
+
+ // 创建插入新表格的 panel
+ _createInsertPanel: function _createInsertPanel() {
+ var _this = this;
+
+ // 用到的 id
+ var btnInsertId = getRandom('btn');
+ var textRowNum = getRandom('row');
+ var textColNum = getRandom('col');
+
+ var panel = new Panel(this, {
+ width: 250,
+ // panel 包含多个 tab
+ tabs: [{
+ // 标题
+ title: '插入表格',
+ // 模板
+ tpl: '
',
+ // 事件绑定
+ events: [{
+ // 点击按钮,插入表格
+ selector: '#' + btnInsertId,
+ type: 'click',
+ fn: function fn() {
+ var rowNum = parseInt($('#' + textRowNum).val());
+ var colNum = parseInt($('#' + textColNum).val());
+
+ if (rowNum && colNum && rowNum > 0 && colNum > 0) {
+ // form 数据有效
+ _this._insert(rowNum, colNum);
+ }
+
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }]
+ } // first tab end
+ ] // tabs end
+ }); // panel end
+
+ // 展示 panel
+ panel.show();
+
+ // 记录属性
+ this.panel = panel;
+ },
+
+ // 插入表格
+ _insert: function _insert(rowNum, colNum) {
+ // 拼接 table 模板
+ var r = void 0,
+ c = void 0;
+ var html = '
';
+ for (r = 0; r < rowNum; r++) {
+ html += '';
+ if (r === 0) {
+ for (c = 0; c < colNum; c++) {
+ html += ' ';
+ }
+ } else {
+ for (c = 0; c < colNum; c++) {
+ html += ' ';
+ }
+ }
+ html += ' ';
+ }
+ html += '
';
+
+ // 执行命令
+ var editor = this.editor;
+ editor.cmd.do('insertHTML', html);
+
+ // 防止 firefox 下出现 resize 的控制点
+ editor.cmd.do('enableObjectResizing', false);
+ editor.cmd.do('enableInlineTableEditing', false);
+ },
+
+ // 创建编辑表格的 panel
+ _createEditPanel: function _createEditPanel() {
+ var _this2 = this;
+
+ // 可用的 id
+ var addRowBtnId = getRandom('add-row');
+ var addColBtnId = getRandom('add-col');
+ var delRowBtnId = getRandom('del-row');
+ var delColBtnId = getRandom('del-col');
+ var delTableBtnId = getRandom('del-table');
+
+ // 创建 panel 对象
+ var panel = new Panel(this, {
+ width: 320,
+ // panel 包含多个 tab
+ tabs: [{
+ // 标题
+ title: '编辑表格',
+ // 模板
+ tpl: '
\n
\n \u589E\u52A0\u884C \n \u5220\u9664\u884C \n \u589E\u52A0\u5217 \n \u5220\u9664\u5217 \n
\n
\n \u5220\u9664\u8868\u683C \n \n
',
+ // 事件绑定
+ events: [{
+ // 增加行
+ selector: '#' + addRowBtnId,
+ type: 'click',
+ fn: function fn() {
+ _this2._addRow();
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }, {
+ // 增加列
+ selector: '#' + addColBtnId,
+ type: 'click',
+ fn: function fn() {
+ _this2._addCol();
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }, {
+ // 删除行
+ selector: '#' + delRowBtnId,
+ type: 'click',
+ fn: function fn() {
+ _this2._delRow();
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }, {
+ // 删除列
+ selector: '#' + delColBtnId,
+ type: 'click',
+ fn: function fn() {
+ _this2._delCol();
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }, {
+ // 删除表格
+ selector: '#' + delTableBtnId,
+ type: 'click',
+ fn: function fn() {
+ _this2._delTable();
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }]
+ }]
+ });
+ // 显示 panel
+ panel.show();
+ },
+
+ // 获取选中的单元格的位置信息
+ _getLocationData: function _getLocationData() {
+ var result = {};
+ var editor = this.editor;
+ var $selectionELem = editor.selection.getSelectionContainerElem();
+ if (!$selectionELem) {
+ return;
+ }
+ var nodeName = $selectionELem.getNodeName();
+ if (nodeName !== 'TD' && nodeName !== 'TH') {
+ return;
+ }
+
+ // 获取 td index
+ var $tr = $selectionELem.parent();
+ var $tds = $tr.children();
+ var tdLength = $tds.length;
+ $tds.forEach(function (td, index) {
+ if (td === $selectionELem[0]) {
+ // 记录并跳出循环
+ result.td = {
+ index: index,
+ elem: td,
+ length: tdLength
+ };
+ return false;
+ }
+ });
+
+ // 获取 tr index
+ var $tbody = $tr.parent();
+ var $trs = $tbody.children();
+ var trLength = $trs.length;
+ $trs.forEach(function (tr, index) {
+ if (tr === $tr[0]) {
+ // 记录并跳出循环
+ result.tr = {
+ index: index,
+ elem: tr,
+ length: trLength
+ };
+ return false;
+ }
+ });
+
+ // 返回结果
+ return result;
+ },
+
+ // 增加行
+ _addRow: function _addRow() {
+ // 获取当前单元格的位置信息
+ var locationData = this._getLocationData();
+ if (!locationData) {
+ return;
+ }
+ var trData = locationData.tr;
+ var $currentTr = $(trData.elem);
+ var tdData = locationData.td;
+ var tdLength = tdData.length;
+
+ // 拼接即将插入的字符串
+ var newTr = document.createElement('tr');
+ var tpl = '',
+ i = void 0;
+ for (i = 0; i < tdLength; i++) {
+ tpl += '
';
+ }
+ newTr.innerHTML = tpl;
+ // 插入
+ $(newTr).insertAfter($currentTr);
+ },
+
+ // 增加列
+ _addCol: function _addCol() {
+ // 获取当前单元格的位置信息
+ var locationData = this._getLocationData();
+ if (!locationData) {
+ return;
+ }
+ var trData = locationData.tr;
+ var tdData = locationData.td;
+ var tdIndex = tdData.index;
+ var $currentTr = $(trData.elem);
+ var $trParent = $currentTr.parent();
+ var $trs = $trParent.children();
+
+ // 遍历所有行
+ $trs.forEach(function (tr) {
+ var $tr = $(tr);
+ var $tds = $tr.children();
+ var $currentTd = $tds.get(tdIndex);
+ var name = $currentTd.getNodeName().toLowerCase();
+
+ // new 一个 td,并插入
+ var newTd = document.createElement(name);
+ $(newTd).insertAfter($currentTd);
+ });
+ },
+
+ // 删除行
+ _delRow: function _delRow() {
+ // 获取当前单元格的位置信息
+ var locationData = this._getLocationData();
+ if (!locationData) {
+ return;
+ }
+ var trData = locationData.tr;
+ var $currentTr = $(trData.elem);
+ $currentTr.remove();
+ },
+
+ // 删除列
+ _delCol: function _delCol() {
+ // 获取当前单元格的位置信息
+ var locationData = this._getLocationData();
+ if (!locationData) {
+ return;
+ }
+ var trData = locationData.tr;
+ var tdData = locationData.td;
+ var tdIndex = tdData.index;
+ var $currentTr = $(trData.elem);
+ var $trParent = $currentTr.parent();
+ var $trs = $trParent.children();
+
+ // 遍历所有行
+ $trs.forEach(function (tr) {
+ var $tr = $(tr);
+ var $tds = $tr.children();
+ var $currentTd = $tds.get(tdIndex);
+ // 删除
+ $currentTd.remove();
+ });
+ },
+
+ // 删除表格
+ _delTable: function _delTable() {
+ var editor = this.editor;
+ var $selectionELem = editor.selection.getSelectionContainerElem();
+ if (!$selectionELem) {
+ return;
+ }
+ var $table = $selectionELem.parentUntil('table');
+ if (!$table) {
+ return;
+ }
+ $table.remove();
+ },
+
+ // 试图改变 active 状态
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ var $selectionELem = editor.selection.getSelectionContainerElem();
+ if (!$selectionELem) {
+ return;
+ }
+ var nodeName = $selectionELem.getNodeName();
+ if (nodeName === 'TD' || nodeName === 'TH') {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ menu - video
+*/
+// 构造函数
+function Video(editor) {
+ this.editor = editor;
+ this.$elem = $('');
+ this.type = 'panel';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Video.prototype = {
+ constructor: Video,
+
+ onClick: function onClick() {
+ this._createPanel();
+ },
+
+ _createPanel: function _createPanel() {
+ var _this = this;
+
+ // 创建 id
+ var textValId = getRandom('text-val');
+ var btnId = getRandom('btn');
+
+ // 创建 panel
+ var panel = new Panel(this, {
+ width: 350,
+ // 一个 panel 多个 tab
+ tabs: [{
+ // 标题
+ title: '插入视频',
+ // 模板
+ tpl: '
\n
\n
\n \u63D2\u5165 \n
\n
',
+ // 事件绑定
+ events: [{
+ selector: '#' + btnId,
+ type: 'click',
+ fn: function fn() {
+ var $text = $('#' + textValId);
+ var val = $text.val().trim();
+
+ // 测试用视频地址
+ //
+
+ if (val) {
+ // 插入视频
+ _this._insert(val);
+ }
+
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }]
+ } // first tab end
+ ] // tabs end
+ }); // panel end
+
+ // 显示 panel
+ panel.show();
+
+ // 记录属性
+ this.panel = panel;
+ },
+
+ // 插入视频
+ _insert: function _insert(val) {
+ var editor = this.editor;
+ editor.cmd.do('insertHTML', val + '
');
+ }
+};
+
+/*
+ menu - img
+*/
+// 构造函数
+function Image(editor) {
+ this.editor = editor;
+ var imgMenuId = getRandom('w-e-img');
+ this.$elem = $('');
+ editor.imgMenuId = imgMenuId;
+ this.type = 'panel';
+
+ // 当前是否 active 状态
+ this._active = false;
+}
+
+// 原型
+Image.prototype = {
+ constructor: Image,
+
+ onClick: function onClick() {
+ var editor = this.editor;
+ var config = editor.config;
+ if (config.qiniu) {
+ return;
+ }
+ if (this._active) {
+ this._createEditPanel();
+ } else {
+ this._createInsertPanel();
+ }
+ },
+
+ _createEditPanel: function _createEditPanel() {
+ var editor = this.editor;
+
+ // id
+ var width30 = getRandom('width-30');
+ var width50 = getRandom('width-50');
+ var width100 = getRandom('width-100');
+ var delBtn = getRandom('del-btn');
+
+ // tab 配置
+ var tabsConfig = [{
+ title: '编辑图片',
+ tpl: '
\n
\n \u6700\u5927\u5BBD\u5EA6\uFF1A \n 30% \n 50% \n 100% \n
\n
\n \u5220\u9664\u56FE\u7247 \n \n
',
+ events: [{
+ selector: '#' + width30,
+ type: 'click',
+ fn: function fn() {
+ var $img = editor._selectedImg;
+ if ($img) {
+ $img.css('max-width', '30%');
+ }
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }, {
+ selector: '#' + width50,
+ type: 'click',
+ fn: function fn() {
+ var $img = editor._selectedImg;
+ if ($img) {
+ $img.css('max-width', '50%');
+ }
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }, {
+ selector: '#' + width100,
+ type: 'click',
+ fn: function fn() {
+ var $img = editor._selectedImg;
+ if ($img) {
+ $img.css('max-width', '100%');
+ }
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }, {
+ selector: '#' + delBtn,
+ type: 'click',
+ fn: function fn() {
+ var $img = editor._selectedImg;
+ if ($img) {
+ $img.remove();
+ }
+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
+ return true;
+ }
+ }]
+ }];
+
+ // 创建 panel 并显示
+ var panel = new Panel(this, {
+ width: 300,
+ tabs: tabsConfig
+ });
+ panel.show();
+
+ // 记录属性
+ this.panel = panel;
+ },
+
+ _createInsertPanel: function _createInsertPanel() {
+ var editor = this.editor;
+ var uploadImg = editor.uploadImg;
+ var config = editor.config;
+
+ // id
+ var upTriggerId = getRandom('up-trigger');
+ var upFileId = getRandom('up-file');
+ var linkUrlId = getRandom('link-url');
+ var linkBtnId = getRandom('link-btn');
+
+ // tabs 的配置
+ var tabsConfig = [{
+ title: '上传图片',
+ tpl: '
',
+ events: [{
+ // 触发选择图片
+ selector: '#' + upTriggerId,
+ type: 'click',
+ fn: function fn() {
+ var $file = $('#' + upFileId);
+ var fileElem = $file[0];
+ if (fileElem) {
+ fileElem.click();
+ } else {
+ // 返回 true 可关闭 panel
+ return true;
+ }
+ }
+ }, {
+ // 选择图片完毕
+ selector: '#' + upFileId,
+ type: 'change',
+ fn: function fn() {
+ var $file = $('#' + upFileId);
+ var fileElem = $file[0];
+ if (!fileElem) {
+ // 返回 true 可关闭 panel
+ return true;
+ }
+
+ // 获取选中的 file 对象列表
+ var fileList = fileElem.files;
+ if (fileList.length) {
+ uploadImg.uploadImg(fileList);
+ }
+
+ // 返回 true 可关闭 panel
+ return true;
+ }
+ }]
+ }, // first tab end
+ {
+ title: '网络图片',
+ tpl: '
\n
\n
\n \u63D2\u5165 \n
\n
',
+ events: [{
+ selector: '#' + linkBtnId,
+ type: 'click',
+ fn: function fn() {
+ var $linkUrl = $('#' + linkUrlId);
+ var url = $linkUrl.val().trim();
+
+ if (url) {
+ uploadImg.insertLinkImg(url);
+ }
+
+ // 返回 true 表示函数执行结束之后关闭 panel
+ return true;
+ }
+ }]
+ } // second tab end
+ ]; // tabs end
+
+ // 判断 tabs 的显示
+ var tabsConfigResult = [];
+ if ((config.uploadImgShowBase64 || config.uploadImgServer || config.customUploadImg) && window.FileReader) {
+ // 显示“上传图片”
+ tabsConfigResult.push(tabsConfig[0]);
+ }
+ if (config.showLinkImg) {
+ // 显示“网络图片”
+ tabsConfigResult.push(tabsConfig[1]);
+ }
+
+ // 创建 panel 并显示
+ var panel = new Panel(this, {
+ width: 300,
+ tabs: tabsConfigResult
+ });
+ panel.show();
+
+ // 记录属性
+ this.panel = panel;
+ },
+
+ // 试图改变 active 状态
+ tryChangeActive: function tryChangeActive(e) {
+ var editor = this.editor;
+ var $elem = this.$elem;
+ if (editor._selectedImg) {
+ this._active = true;
+ $elem.addClass('w-e-active');
+ } else {
+ this._active = false;
+ $elem.removeClass('w-e-active');
+ }
+ }
+};
+
+/*
+ 所有菜单的汇总
+*/
+
+// 存储菜单的构造函数
+var MenuConstructors = {};
+
+MenuConstructors.bold = Bold;
+
+MenuConstructors.head = Head;
+
+MenuConstructors.fontSize = FontSize;
+
+MenuConstructors.fontName = FontName;
+
+MenuConstructors.link = Link;
+
+MenuConstructors.italic = Italic;
+
+MenuConstructors.redo = Redo;
+
+MenuConstructors.strikeThrough = StrikeThrough;
+
+MenuConstructors.underline = Underline;
+
+MenuConstructors.undo = Undo;
+
+MenuConstructors.list = List;
+
+MenuConstructors.justify = Justify;
+
+MenuConstructors.foreColor = ForeColor;
+
+MenuConstructors.backColor = BackColor;
+
+MenuConstructors.quote = Quote;
+
+MenuConstructors.code = Code;
+
+MenuConstructors.emoticon = Emoticon;
+
+MenuConstructors.table = Table;
+
+MenuConstructors.video = Video;
+
+MenuConstructors.image = Image;
+
+/*
+ 菜单集合
+*/
+// 构造函数
+function Menus(editor) {
+ this.editor = editor;
+ this.menus = {};
+}
+
+// 修改原型
+Menus.prototype = {
+ constructor: Menus,
+
+ // 初始化菜单
+ init: function init() {
+ var _this = this;
+
+ var editor = this.editor;
+ var config = editor.config || {};
+ var configMenus = config.menus || []; // 获取配置中的菜单
+
+ // 根据配置信息,创建菜单
+ configMenus.forEach(function (menuKey) {
+ var MenuConstructor = MenuConstructors[menuKey];
+ if (MenuConstructor && typeof MenuConstructor === 'function') {
+ // 创建单个菜单
+ _this.menus[menuKey] = new MenuConstructor(editor);
+ }
+ });
+
+ // 添加到菜单栏
+ this._addToToolbar();
+
+ // 绑定事件
+ this._bindEvent();
+ },
+
+ // 添加到菜单栏
+ _addToToolbar: function _addToToolbar() {
+ var editor = this.editor;
+ var $toolbarElem = editor.$toolbarElem;
+ var menus = this.menus;
+ var config = editor.config;
+ // config.zIndex 是配置的编辑区域的 z-index,菜单的 z-index 得在其基础上 +1
+ var zIndex = config.zIndex + 1;
+ objForEach(menus, function (key, menu) {
+ var $elem = menu.$elem;
+ if ($elem) {
+ // 设置 z-index
+ $elem.css('z-index', zIndex);
+ $toolbarElem.append($elem);
+ }
+ });
+ },
+
+ // 绑定菜单 click mouseenter 事件
+ _bindEvent: function _bindEvent() {
+ var menus = this.menus;
+ var editor = this.editor;
+ objForEach(menus, function (key, menu) {
+ var type = menu.type;
+ if (!type) {
+ return;
+ }
+ var $elem = menu.$elem;
+ var droplist = menu.droplist;
+ var panel = menu.panel;
+
+ // 点击类型,例如 bold
+ if (type === 'click' && menu.onClick) {
+ $elem.on('click', function (e) {
+ if (editor.selection.getRange() == null) {
+ return;
+ }
+ menu.onClick(e);
+ });
+ }
+
+ // 下拉框,例如 head
+ if (type === 'droplist' && droplist) {
+ $elem.on('mouseenter', function (e) {
+ if (editor.selection.getRange() == null) {
+ return;
+ }
+ // 显示
+ droplist.showTimeoutId = setTimeout(function () {
+ droplist.show();
+ }, 200);
+ }).on('mouseleave', function (e) {
+ // 隐藏
+ droplist.hideTimeoutId = setTimeout(function () {
+ droplist.hide();
+ }, 0);
+ });
+ }
+
+ // 弹框类型,例如 link
+ if (type === 'panel' && menu.onClick) {
+ $elem.on('click', function (e) {
+ e.stopPropagation();
+ if (editor.selection.getRange() == null) {
+ return;
+ }
+ // 在自定义事件中显示 panel
+ menu.onClick(e);
+ });
+ }
+ });
+ },
+
+ // 尝试修改菜单状态
+ changeActive: function changeActive() {
+ var menus = this.menus;
+ objForEach(menus, function (key, menu) {
+ if (menu.tryChangeActive) {
+ setTimeout(function () {
+ menu.tryChangeActive();
+ }, 100);
+ }
+ });
+ }
+};
+
+/*
+ 粘贴信息的处理
+*/
+
+// 获取粘贴的纯文本
+function getPasteText(e) {
+ var clipboardData = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData;
+ var pasteText = void 0;
+ if (clipboardData == null) {
+ pasteText = window.clipboardData && window.clipboardData.getData('text');
+ } else {
+ pasteText = clipboardData.getData('text/plain');
+ }
+
+ return replaceHtmlSymbol(pasteText);
+}
+
+// 获取粘贴的html
+function getPasteHtml(e, filterStyle, ignoreImg) {
+ var clipboardData = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData;
+ var pasteText = void 0,
+ pasteHtml = void 0;
+ if (clipboardData == null) {
+ pasteText = window.clipboardData && window.clipboardData.getData('text');
+ } else {
+ pasteText = clipboardData.getData('text/plain');
+ pasteHtml = clipboardData.getData('text/html');
+ }
+ if (!pasteHtml && pasteText) {
+ pasteHtml = '
' + replaceHtmlSymbol(pasteText) + '
';
+ }
+ if (!pasteHtml) {
+ return;
+ }
+
+ // 过滤word中状态过来的无用字符
+ var docSplitHtml = pasteHtml.split('');
+ if (docSplitHtml.length === 2) {
+ pasteHtml = docSplitHtml[0];
+ }
+
+ // 过滤无用标签
+ pasteHtml = pasteHtml.replace(/<(meta|script|link).+?>/igm, '');
+ // 去掉注释
+ pasteHtml = pasteHtml.replace(//mg, '');
+ // 过滤 data-xxx 属性
+ pasteHtml = pasteHtml.replace(/\s?data-.+?=('|").+?('|")/igm, '');
+
+ if (ignoreImg) {
+ // 忽略图片
+ pasteHtml = pasteHtml.replace(/
/igm, '');
+ }
+
+ if (filterStyle) {
+ // 过滤样式
+ pasteHtml = pasteHtml.replace(/\s?(class|style)=('|").*?('|")/igm, '');
+ } else {
+ // 保留样式
+ pasteHtml = pasteHtml.replace(/\s?class=('|").*?('|")/igm, '');
+ }
+
+ return pasteHtml;
+}
+
+// 获取粘贴的图片文件
+function getPasteImgs(e) {
+ var result = [];
+ var txt = getPasteText(e);
+ if (txt) {
+ // 有文字,就忽略图片
+ return result;
+ }
+
+ var clipboardData = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData || {};
+ var items = clipboardData.items;
+ if (!items) {
+ return result;
+ }
+
+ objForEach(items, function (key, value) {
+ var type = value.type;
+ if (/image/i.test(type)) {
+ result.push(value.getAsFile());
+ }
+ });
+
+ return result;
+}
+
+/*
+ 编辑区域
+*/
+
+// 获取一个 elem.childNodes 的 JSON 数据
+function getChildrenJSON($elem) {
+ var result = [];
+ var $children = $elem.childNodes() || []; // 注意 childNodes() 可以获取文本节点
+ $children.forEach(function (curElem) {
+ var elemResult = void 0;
+ var nodeType = curElem.nodeType;
+
+ // 文本节点
+ if (nodeType === 3) {
+ elemResult = curElem.textContent;
+ elemResult = replaceHtmlSymbol(elemResult);
+ }
+
+ // 普通 DOM 节点
+ if (nodeType === 1) {
+ elemResult = {};
+
+ // tag
+ elemResult.tag = curElem.nodeName.toLowerCase();
+ // attr
+ var attrData = [];
+ var attrList = curElem.attributes || {};
+ var attrListLength = attrList.length || 0;
+ for (var i = 0; i < attrListLength; i++) {
+ var attr = attrList[i];
+ attrData.push({
+ name: attr.name,
+ value: attr.value
+ });
+ }
+ elemResult.attrs = attrData;
+ // children(递归)
+ elemResult.children = getChildrenJSON($(curElem));
+ }
+
+ result.push(elemResult);
+ });
+ return result;
+}
+
+// 构造函数
+function Text(editor) {
+ this.editor = editor;
+}
+
+// 修改原型
+Text.prototype = {
+ constructor: Text,
+
+ // 初始化
+ init: function init() {
+ // 绑定事件
+ this._bindEvent();
+ },
+
+ // 清空内容
+ clear: function clear() {
+ this.html('
');
+ },
+
+ // 获取 设置 html
+ html: function html(val) {
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+ var html = void 0;
+ if (val == null) {
+ html = $textElem.html();
+ // 未选中任何内容的时候点击“加粗”或者“斜体”等按钮,就得需要一个空的占位符 ,这里替换掉
+ html = html.replace(/\u200b/gm, '');
+ return html;
+ } else {
+ $textElem.html(val);
+
+ // 初始化选取,将光标定位到内容尾部
+ editor.initSelection();
+ }
+ },
+
+ // 获取 JSON
+ getJSON: function getJSON() {
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+ return getChildrenJSON($textElem);
+ },
+
+ // 获取 设置 text
+ text: function text(val) {
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+ var text = void 0;
+ if (val == null) {
+ text = $textElem.text();
+ // 未选中任何内容的时候点击“加粗”或者“斜体”等按钮,就得需要一个空的占位符 ,这里替换掉
+ text = text.replace(/\u200b/gm, '');
+ return text;
+ } else {
+ $textElem.text('' + val + '
');
+
+ // 初始化选取,将光标定位到内容尾部
+ editor.initSelection();
+ }
+ },
+
+ // 追加内容
+ append: function append(html) {
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+ $textElem.append($(html));
+
+ // 初始化选取,将光标定位到内容尾部
+ editor.initSelection();
+ },
+
+ // 绑定事件
+ _bindEvent: function _bindEvent() {
+ // 实时保存选取
+ this._saveRangeRealTime();
+
+ // 按回车建时的特殊处理
+ this._enterKeyHandle();
+
+ // 清空时保留
+ this._clearHandle();
+
+ // 粘贴事件(粘贴文字,粘贴图片)
+ this._pasteHandle();
+
+ // tab 特殊处理
+ this._tabHandle();
+
+ // img 点击
+ this._imgHandle();
+
+ // 拖拽事件
+ this._dragHandle();
+ },
+
+ // 实时保存选取
+ _saveRangeRealTime: function _saveRangeRealTime() {
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+
+ // 保存当前的选区
+ function saveRange(e) {
+ // 随时保存选区
+ editor.selection.saveRange();
+ // 更新按钮 ative 状态
+ editor.menus.changeActive();
+ }
+ // 按键后保存
+ $textElem.on('keyup', saveRange);
+ $textElem.on('mousedown', function (e) {
+ // mousedown 状态下,鼠标滑动到编辑区域外面,也需要保存选区
+ $textElem.on('mouseleave', saveRange);
+ });
+ $textElem.on('mouseup', function (e) {
+ saveRange();
+ // 在编辑器区域之内完成点击,取消鼠标滑动到编辑区外面的事件
+ $textElem.off('mouseleave', saveRange);
+ });
+ },
+
+ // 按回车键时的特殊处理
+ _enterKeyHandle: function _enterKeyHandle() {
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+
+ function insertEmptyP($selectionElem) {
+ var $p = $('
');
+ $p.insertBefore($selectionElem);
+ editor.selection.createRangeByElem($p, true);
+ editor.selection.restoreSelection();
+ $selectionElem.remove();
+ }
+
+ // 将回车之后生成的非 的顶级标签,改为
+ function pHandle(e) {
+ var $selectionElem = editor.selection.getSelectionContainerElem();
+ var $parentElem = $selectionElem.parent();
+
+ if ($parentElem.html() === '') {
+ // 回车之前光标所在一个
.....
,忽然回车生成一个空的
+ // 而且继续回车跳不出去,因此只能特殊处理
+ insertEmptyP($selectionElem);
+ return;
+ }
+
+ if (!$parentElem.equal($textElem)) {
+ // 不是顶级标签
+ return;
+ }
+
+ var nodeName = $selectionElem.getNodeName();
+ if (nodeName === 'P') {
+ // 当前的标签是 P ,不用做处理
+ return;
+ }
+
+ if ($selectionElem.text()) {
+ // 有内容,不做处理
+ return;
+ }
+
+ // 插入 ,并将选取定位到
,删除当前标签
+ insertEmptyP($selectionElem);
+ }
+
+ $textElem.on('keyup', function (e) {
+ if (e.keyCode !== 13) {
+ // 不是回车键
+ return;
+ }
+ // 将回车之后生成的非
的顶级标签,改为
+ pHandle(e);
+ });
+
+ //
回车时 特殊处理
+ function codeHandle(e) {
+ var $selectionElem = editor.selection.getSelectionContainerElem();
+ if (!$selectionElem) {
+ return;
+ }
+ var $parentElem = $selectionElem.parent();
+ var selectionNodeName = $selectionElem.getNodeName();
+ var parentNodeName = $parentElem.getNodeName();
+
+ if (selectionNodeName !== 'CODE' || parentNodeName !== 'PRE') {
+ // 不符合要求 忽略
+ return;
+ }
+
+ if (!editor.cmd.queryCommandSupported('insertHTML')) {
+ // 必须原生支持 insertHTML 命令
+ return;
+ }
+
+ // 处理:光标定位到代码末尾,联系点击两次回车,即跳出代码块
+ if (editor._willBreakCode === true) {
+ // 此时可以跳出代码块
+ // 插入 ,并将选取定位到
+ var $p = $('
');
+ $p.insertAfter($parentElem);
+ editor.selection.createRangeByElem($p, true);
+ editor.selection.restoreSelection();
+
+ // 修改状态
+ editor._willBreakCode = false;
+
+ e.preventDefault();
+ return;
+ }
+
+ var _startOffset = editor.selection.getRange().startOffset;
+
+ // 处理:回车时,不能插入 而是插入 \n ,因为是在 pre 标签里面
+ editor.cmd.do('insertHTML', '\n');
+ editor.selection.saveRange();
+ if (editor.selection.getRange().startOffset === _startOffset) {
+ // 没起作用,再来一遍
+ editor.cmd.do('insertHTML', '\n');
+ }
+
+ var codeLength = $selectionElem.html().length;
+ if (editor.selection.getRange().startOffset + 1 === codeLength) {
+ // 说明光标在代码最后的位置,执行了回车操作
+ // 记录下来,以便下次回车时候跳出 code
+ editor._willBreakCode = true;
+ }
+
+ // 阻止默认行为
+ e.preventDefault();
+ }
+
+ $textElem.on('keydown', function (e) {
+ if (e.keyCode !== 13) {
+ // 不是回车键
+ // 取消即将跳转代码块的记录
+ editor._willBreakCode = false;
+ return;
+ }
+ // 回车时 特殊处理
+ codeHandle(e);
+ });
+ },
+
+ // 清空时保留
+ _clearHandle: function _clearHandle() {
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+
+ $textElem.on('keydown', function (e) {
+ if (e.keyCode !== 8) {
+ return;
+ }
+ var txtHtml = $textElem.html().toLowerCase().trim();
+ if (txtHtml === '
') {
+ // 最后剩下一个空行,就不再删除了
+ e.preventDefault();
+ return;
+ }
+ });
+
+ $textElem.on('keyup', function (e) {
+ if (e.keyCode !== 8) {
+ return;
+ }
+ var $p = void 0;
+ var txtHtml = $textElem.html().toLowerCase().trim();
+
+ // firefox 时用 txtHtml === ' ' 判断,其他用 !txtHtml 判断
+ if (!txtHtml || txtHtml === ' ') {
+ // 内容空了
+ $p = $('
');
+ $textElem.html(''); // 一定要先清空,否则在 firefox 下有问题
+ $textElem.append($p);
+ editor.selection.createRangeByElem($p, false, true);
+ editor.selection.restoreSelection();
+ }
+ });
+ },
+
+ // 粘贴事件(粘贴文字 粘贴图片)
+ _pasteHandle: function _pasteHandle() {
+ var editor = this.editor;
+ var config = editor.config;
+ var pasteFilterStyle = config.pasteFilterStyle;
+ var pasteTextHandle = config.pasteTextHandle;
+ var ignoreImg = config.pasteIgnoreImg;
+ var $textElem = editor.$textElem;
+
+ // 粘贴图片、文本的事件,每次只能执行一个
+ // 判断该次粘贴事件是否可以执行
+ var pasteTime = 0;
+ function canDo() {
+ var now = Date.now();
+ var flag = false;
+ if (now - pasteTime >= 100) {
+ // 间隔大于 100 ms ,可以执行
+ flag = true;
+ }
+ pasteTime = now;
+ return flag;
+ }
+ function resetTime() {
+ pasteTime = 0;
+ }
+
+ // 粘贴文字
+ $textElem.on('paste', function (e) {
+ if (UA.isIE()) {
+ return;
+ } else {
+ // 阻止默认行为,使用 execCommand 的粘贴命令
+ e.preventDefault();
+ }
+
+ // 粘贴图片和文本,只能同时使用一个
+ if (!canDo()) {
+ return;
+ }
+
+ // 获取粘贴的文字
+ var pasteHtml = getPasteHtml(e, pasteFilterStyle, ignoreImg);
+ var pasteText = getPasteText(e);
+ pasteText = pasteText.replace(/\n/gm, ' ');
+
+ var $selectionElem = editor.selection.getSelectionContainerElem();
+ if (!$selectionElem) {
+ return;
+ }
+ var nodeName = $selectionElem.getNodeName();
+
+ // code 中只能粘贴纯文本
+ if (nodeName === 'CODE' || nodeName === 'PRE') {
+ if (pasteTextHandle && isFunction(pasteTextHandle)) {
+ // 用户自定义过滤处理粘贴内容
+ pasteText = '' + (pasteTextHandle(pasteText) || '');
+ }
+ editor.cmd.do('insertHTML', '' + pasteText + '
');
+ return;
+ }
+
+ // 先放开注释,有问题再追查 ————
+ // // 表格中忽略,可能会出现异常问题
+ // if (nodeName === 'TD' || nodeName === 'TH') {
+ // return
+ // }
+
+ if (!pasteHtml) {
+ // 没有内容,可继续执行下面的图片粘贴
+ resetTime();
+ return;
+ }
+ try {
+ // firefox 中,获取的 pasteHtml 可能是没有 包裹的
+ // 因此执行 insertHTML 会报错
+ if (pasteTextHandle && isFunction(pasteTextHandle)) {
+ // 用户自定义过滤处理粘贴内容
+ pasteHtml = '' + (pasteTextHandle(pasteHtml) || '');
+ }
+ editor.cmd.do('insertHTML', pasteHtml);
+ } catch (ex) {
+ // 此时使用 pasteText 来兼容一下
+ if (pasteTextHandle && isFunction(pasteTextHandle)) {
+ // 用户自定义过滤处理粘贴内容
+ pasteText = '' + (pasteTextHandle(pasteText) || '');
+ }
+ editor.cmd.do('insertHTML', '' + pasteText + '
');
+ }
+ });
+
+ // 粘贴图片
+ $textElem.on('paste', function (e) {
+ if (UA.isIE()) {
+ return;
+ } else {
+ e.preventDefault();
+ }
+
+ // 粘贴图片和文本,只能同时使用一个
+ if (!canDo()) {
+ return;
+ }
+
+ // 获取粘贴的图片
+ var pasteFiles = getPasteImgs(e);
+ if (!pasteFiles || !pasteFiles.length) {
+ return;
+ }
+
+ // 获取当前的元素
+ var $selectionElem = editor.selection.getSelectionContainerElem();
+ if (!$selectionElem) {
+ return;
+ }
+ var nodeName = $selectionElem.getNodeName();
+
+ // code 中粘贴忽略
+ if (nodeName === 'CODE' || nodeName === 'PRE') {
+ return;
+ }
+
+ // 上传图片
+ var uploadImg = editor.uploadImg;
+ uploadImg.uploadImg(pasteFiles);
+ });
+ },
+
+ // tab 特殊处理
+ _tabHandle: function _tabHandle() {
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+
+ $textElem.on('keydown', function (e) {
+ if (e.keyCode !== 9) {
+ return;
+ }
+ if (!editor.cmd.queryCommandSupported('insertHTML')) {
+ // 必须原生支持 insertHTML 命令
+ return;
+ }
+ var $selectionElem = editor.selection.getSelectionContainerElem();
+ if (!$selectionElem) {
+ return;
+ }
+ var $parentElem = $selectionElem.parent();
+ var selectionNodeName = $selectionElem.getNodeName();
+ var parentNodeName = $parentElem.getNodeName();
+
+ if (selectionNodeName === 'CODE' && parentNodeName === 'PRE') {
+ // 里面
+ editor.cmd.do('insertHTML', ' ');
+ } else {
+ // 普通文字
+ editor.cmd.do('insertHTML', ' ');
+ }
+
+ e.preventDefault();
+ });
+ },
+
+ // img 点击
+ _imgHandle: function _imgHandle() {
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+
+ // 为图片增加 selected 样式
+ $textElem.on('click', 'img', function (e) {
+ var img = this;
+ var $img = $(img);
+
+ if ($img.attr('data-w-e') === '1') {
+ // 是表情图片,忽略
+ return;
+ }
+
+ // 记录当前点击过的图片
+ editor._selectedImg = $img;
+
+ // 修改选区并 restore ,防止用户此时点击退格键,会删除其他内容
+ editor.selection.createRangeByElem($img);
+ editor.selection.restoreSelection();
+ });
+
+ // 去掉图片的 selected 样式
+ $textElem.on('click keyup', function (e) {
+ if (e.target.matches('img')) {
+ // 点击的是图片,忽略
+ return;
+ }
+ // 删除记录
+ editor._selectedImg = null;
+ });
+ },
+
+ // 拖拽事件
+ _dragHandle: function _dragHandle() {
+ var editor = this.editor;
+
+ // 禁用 document 拖拽事件
+ var $document = $(document);
+ $document.on('dragleave drop dragenter dragover', function (e) {
+ e.preventDefault();
+ });
+
+ // 添加编辑区域拖拽事件
+ var $textElem = editor.$textElem;
+ $textElem.on('drop', function (e) {
+ e.preventDefault();
+ var files = e.dataTransfer && e.dataTransfer.files;
+ if (!files || !files.length) {
+ return;
+ }
+
+ // 上传图片
+ var uploadImg = editor.uploadImg;
+ uploadImg.uploadImg(files);
+ });
+ }
+};
+
+/*
+ 命令,封装 document.execCommand
+*/
+
+// 构造函数
+function Command(editor) {
+ this.editor = editor;
+}
+
+// 修改原型
+Command.prototype = {
+ constructor: Command,
+
+ // 执行命令
+ do: function _do(name, value) {
+ var editor = this.editor;
+
+ // 使用 styleWithCSS
+ if (!editor._useStyleWithCSS) {
+ document.execCommand('styleWithCSS', null, true);
+ editor._useStyleWithCSS = true;
+ }
+
+ // 如果无选区,忽略
+ if (!editor.selection.getRange()) {
+ return;
+ }
+
+ // 恢复选取
+ editor.selection.restoreSelection();
+
+ // 执行
+ var _name = '_' + name;
+ if (this[_name]) {
+ // 有自定义事件
+ this[_name](value);
+ } else {
+ // 默认 command
+ this._execCommand(name, value);
+ }
+
+ // 修改菜单状态
+ editor.menus.changeActive();
+
+ // 最后,恢复选取保证光标在原来的位置闪烁
+ editor.selection.saveRange();
+ editor.selection.restoreSelection();
+
+ // 触发 onchange
+ editor.change && editor.change();
+ },
+
+ // 自定义 insertHTML 事件
+ _insertHTML: function _insertHTML(html) {
+ var editor = this.editor;
+ var range = editor.selection.getRange();
+
+ if (this.queryCommandSupported('insertHTML')) {
+ // W3C
+ this._execCommand('insertHTML', html);
+ } else if (range.insertNode) {
+ // IE
+ range.deleteContents();
+ range.insertNode($(html)[0]);
+ } else if (range.pasteHTML) {
+ // IE <= 10
+ range.pasteHTML(html);
+ }
+ },
+
+ // 插入 elem
+ _insertElem: function _insertElem($elem) {
+ var editor = this.editor;
+ var range = editor.selection.getRange();
+
+ if (range.insertNode) {
+ range.deleteContents();
+ range.insertNode($elem[0]);
+ }
+ },
+
+ // 封装 execCommand
+ _execCommand: function _execCommand(name, value) {
+ document.execCommand(name, false, value);
+ },
+
+ // 封装 document.queryCommandValue
+ queryCommandValue: function queryCommandValue(name) {
+ return document.queryCommandValue(name);
+ },
+
+ // 封装 document.queryCommandState
+ queryCommandState: function queryCommandState(name) {
+ return document.queryCommandState(name);
+ },
+
+ // 封装 document.queryCommandSupported
+ queryCommandSupported: function queryCommandSupported(name) {
+ return document.queryCommandSupported(name);
+ }
+};
+
+/*
+ selection range API
+*/
+
+// 构造函数
+function API(editor) {
+ this.editor = editor;
+ this._currentRange = null;
+}
+
+// 修改原型
+API.prototype = {
+ constructor: API,
+
+ // 获取 range 对象
+ getRange: function getRange() {
+ return this._currentRange;
+ },
+
+ // 保存选区
+ saveRange: function saveRange(_range) {
+ if (_range) {
+ // 保存已有选区
+ this._currentRange = _range;
+ return;
+ }
+
+ // 获取当前的选区
+ var selection = window.getSelection();
+ if (selection.rangeCount === 0) {
+ return;
+ }
+ var range = selection.getRangeAt(0);
+
+ // 判断选区内容是否在编辑内容之内
+ var $containerElem = this.getSelectionContainerElem(range);
+ if (!$containerElem) {
+ return;
+ }
+
+ // 判断选区内容是否在不可编辑区域之内
+ if ($containerElem.attr('contenteditable') === 'false' || $containerElem.parentUntil('[contenteditable=false]')) {
+ return;
+ }
+
+ var editor = this.editor;
+ var $textElem = editor.$textElem;
+ if ($textElem.isContain($containerElem)) {
+ // 是编辑内容之内的
+ this._currentRange = range;
+ }
+ },
+
+ // 折叠选区
+ collapseRange: function collapseRange(toStart) {
+ if (toStart == null) {
+ // 默认为 false
+ toStart = false;
+ }
+ var range = this._currentRange;
+ if (range) {
+ range.collapse(toStart);
+ }
+ },
+
+ // 选中区域的文字
+ getSelectionText: function getSelectionText() {
+ var range = this._currentRange;
+ if (range) {
+ return this._currentRange.toString();
+ } else {
+ return '';
+ }
+ },
+
+ // 选区的 $Elem
+ getSelectionContainerElem: function getSelectionContainerElem(range) {
+ range = range || this._currentRange;
+ var elem = void 0;
+ if (range) {
+ elem = range.commonAncestorContainer;
+ return $(elem.nodeType === 1 ? elem : elem.parentNode);
+ }
+ },
+ getSelectionStartElem: function getSelectionStartElem(range) {
+ range = range || this._currentRange;
+ var elem = void 0;
+ if (range) {
+ elem = range.startContainer;
+ return $(elem.nodeType === 1 ? elem : elem.parentNode);
+ }
+ },
+ getSelectionEndElem: function getSelectionEndElem(range) {
+ range = range || this._currentRange;
+ var elem = void 0;
+ if (range) {
+ elem = range.endContainer;
+ return $(elem.nodeType === 1 ? elem : elem.parentNode);
+ }
+ },
+
+ // 选区是否为空
+ isSelectionEmpty: function isSelectionEmpty() {
+ var range = this._currentRange;
+ if (range && range.startContainer) {
+ if (range.startContainer === range.endContainer) {
+ if (range.startOffset === range.endOffset) {
+ return true;
+ }
+ }
+ }
+ return false;
+ },
+
+ // 恢复选区
+ restoreSelection: function restoreSelection() {
+ var selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(this._currentRange);
+ },
+
+ // 创建一个空白(即 字符)选区
+ createEmptyRange: function createEmptyRange() {
+ var editor = this.editor;
+ var range = this.getRange();
+ var $elem = void 0;
+
+ if (!range) {
+ // 当前无 range
+ return;
+ }
+ if (!this.isSelectionEmpty()) {
+ // 当前选区必须没有内容才可以
+ return;
+ }
+
+ try {
+ // 目前只支持 webkit 内核
+ if (UA.isWebkit()) {
+ // 插入
+ editor.cmd.do('insertHTML', '');
+ // 修改 offset 位置
+ range.setEnd(range.endContainer, range.endOffset + 1);
+ // 存储
+ this.saveRange(range);
+ } else {
+ $elem = $(' ');
+ editor.cmd.do('insertElem', $elem);
+ this.createRangeByElem($elem, true);
+ }
+ } catch (ex) {
+ // 部分情况下会报错,兼容一下
+ }
+ },
+
+ // 根据 $Elem 设置选区
+ createRangeByElem: function createRangeByElem($elem, toStart, isContent) {
+ // $elem - 经过封装的 elem
+ // toStart - true 开始位置,false 结束位置
+ // isContent - 是否选中Elem的内容
+ if (!$elem.length) {
+ return;
+ }
+
+ var elem = $elem[0];
+ var range = document.createRange();
+
+ if (isContent) {
+ range.selectNodeContents(elem);
+ } else {
+ range.selectNode(elem);
+ }
+
+ if (typeof toStart === 'boolean') {
+ range.collapse(toStart);
+ }
+
+ // 存储 range
+ this.saveRange(range);
+ }
+};
+
+/*
+ 上传进度条
+*/
+
+function Progress(editor) {
+ this.editor = editor;
+ this._time = 0;
+ this._isShow = false;
+ this._isRender = false;
+ this._timeoutId = 0;
+ this.$textContainer = editor.$textContainerElem;
+ this.$bar = $('
');
+}
+
+Progress.prototype = {
+ constructor: Progress,
+
+ show: function show(progress) {
+ var _this = this;
+
+ // 状态处理
+ if (this._isShow) {
+ return;
+ }
+ this._isShow = true;
+
+ // 渲染
+ var $bar = this.$bar;
+ if (!this._isRender) {
+ var $textContainer = this.$textContainer;
+ $textContainer.append($bar);
+ } else {
+ this._isRender = true;
+ }
+
+ // 改变进度(节流,100ms 渲染一次)
+ if (Date.now() - this._time > 100) {
+ if (progress <= 1) {
+ $bar.css('width', progress * 100 + '%');
+ this._time = Date.now();
+ }
+ }
+
+ // 隐藏
+ var timeoutId = this._timeoutId;
+ if (timeoutId) {
+ clearTimeout(timeoutId);
+ }
+ timeoutId = setTimeout(function () {
+ _this._hide();
+ }, 500);
+ },
+
+ _hide: function _hide() {
+ var $bar = this.$bar;
+ $bar.remove();
+
+ // 修改状态
+ this._time = 0;
+ this._isShow = false;
+ this._isRender = false;
+ }
+};
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+} : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+};
+
+/*
+ 上传图片
+*/
+
+// 构造函数
+function UploadImg(editor) {
+ this.editor = editor;
+}
+
+// 原型
+UploadImg.prototype = {
+ constructor: UploadImg,
+
+ // 根据 debug 弹出不同的信息
+ _alert: function _alert(alertInfo, debugInfo) {
+ var editor = this.editor;
+ var debug = editor.config.debug;
+ var customAlert = editor.config.customAlert;
+
+ if (debug) {
+ throw new Error('wangEditor: ' + (debugInfo || alertInfo));
+ } else {
+ if (customAlert && typeof customAlert === 'function') {
+ customAlert(alertInfo);
+ } else {
+ alert(alertInfo);
+ }
+ }
+ },
+
+ // 根据链接插入图片
+ insertLinkImg: function insertLinkImg(link) {
+ var _this2 = this;
+
+ if (!link) {
+ return;
+ }
+ var editor = this.editor;
+ var config = editor.config;
+
+ // 校验格式
+ var linkImgCheck = config.linkImgCheck;
+ var checkResult = void 0;
+ if (linkImgCheck && typeof linkImgCheck === 'function') {
+ checkResult = linkImgCheck(link);
+ if (typeof checkResult === 'string') {
+ // 校验失败,提示信息
+ alert(checkResult);
+ return;
+ }
+ }
+
+ editor.cmd.do('insertHTML', ' ');
+
+ // 验证图片 url 是否有效,无效的话给出提示
+ var img = document.createElement('img');
+ img.onload = function () {
+ var callback = config.linkImgCallback;
+ if (callback && typeof callback === 'function') {
+ callback(link);
+ }
+
+ img = null;
+ };
+ img.onerror = function () {
+ img = null;
+ // 无法成功下载图片
+ _this2._alert('插入图片错误', 'wangEditor: \u63D2\u5165\u56FE\u7247\u51FA\u9519\uFF0C\u56FE\u7247\u94FE\u63A5\u662F "' + link + '"\uFF0C\u4E0B\u8F7D\u8BE5\u94FE\u63A5\u5931\u8D25');
+ return;
+ };
+ img.onabort = function () {
+ img = null;
+ };
+ img.src = link;
+ },
+
+ // 上传图片
+ uploadImg: function uploadImg(files) {
+ var _this3 = this;
+
+ if (!files || !files.length) {
+ return;
+ }
+
+ // ------------------------------ 获取配置信息 ------------------------------
+ var editor = this.editor;
+ var config = editor.config;
+ var uploadImgServer = config.uploadImgServer;
+ var uploadImgShowBase64 = config.uploadImgShowBase64;
+
+ var maxSize = config.uploadImgMaxSize;
+ var maxSizeM = maxSize / 1024 / 1024;
+ var maxLength = config.uploadImgMaxLength || 10000;
+ var uploadFileName = config.uploadFileName || '';
+ var uploadImgParams = config.uploadImgParams || {};
+ var uploadImgParamsWithUrl = config.uploadImgParamsWithUrl;
+ var uploadImgHeaders = config.uploadImgHeaders || {};
+ var hooks = config.uploadImgHooks || {};
+ var timeout = config.uploadImgTimeout || 3000;
+ var withCredentials = config.withCredentials;
+ if (withCredentials == null) {
+ withCredentials = false;
+ }
+ var customUploadImg = config.customUploadImg;
+
+ if (!customUploadImg) {
+ // 没有 customUploadImg 的情况下,需要如下两个配置才能继续进行图片上传
+ if (!uploadImgServer && !uploadImgShowBase64) {
+ return;
+ }
+ }
+
+ // ------------------------------ 验证文件信息 ------------------------------
+ var resultFiles = [];
+ var errInfo = [];
+ arrForEach(files, function (file) {
+ var name = file.name;
+ var size = file.size;
+
+ // chrome 低版本 name === undefined
+ if (!name || !size) {
+ return;
+ }
+
+ if (/\.(jpg|jpeg|png|bmp|gif|webp)$/i.test(name) === false) {
+ // 后缀名不合法,不是图片
+ errInfo.push('\u3010' + name + '\u3011\u4E0D\u662F\u56FE\u7247');
+ return;
+ }
+ if (maxSize < size) {
+ // 上传图片过大
+ errInfo.push('\u3010' + name + '\u3011\u5927\u4E8E ' + maxSizeM + 'M');
+ return;
+ }
+
+ // 验证通过的加入结果列表
+ resultFiles.push(file);
+ });
+ // 抛出验证信息
+ if (errInfo.length) {
+ this._alert('图片验证未通过: \n' + errInfo.join('\n'));
+ return;
+ }
+ if (resultFiles.length > maxLength) {
+ this._alert('一次最多上传' + maxLength + '张图片');
+ return;
+ }
+
+ // ------------------------------ 自定义上传 ------------------------------
+ if (customUploadImg && typeof customUploadImg === 'function') {
+ customUploadImg(resultFiles, this.insertLinkImg.bind(this));
+
+ // 阻止以下代码执行
+ return;
+ }
+
+ // 添加图片数据
+ var formdata = new FormData();
+ arrForEach(resultFiles, function (file) {
+ var name = uploadFileName || file.name;
+ formdata.append(name, file);
+ });
+
+ // ------------------------------ 上传图片 ------------------------------
+ if (uploadImgServer && typeof uploadImgServer === 'string') {
+ // 添加参数
+ var uploadImgServerArr = uploadImgServer.split('#');
+ uploadImgServer = uploadImgServerArr[0];
+ var uploadImgServerHash = uploadImgServerArr[1] || '';
+ objForEach(uploadImgParams, function (key, val) {
+ // 因使用者反应,自定义参数不能默认 encode ,由 v3.1.1 版本开始注释掉
+ // val = encodeURIComponent(val)
+
+ // 第一,将参数拼接到 url 中
+ if (uploadImgParamsWithUrl) {
+ if (uploadImgServer.indexOf('?') > 0) {
+ uploadImgServer += '&';
+ } else {
+ uploadImgServer += '?';
+ }
+ uploadImgServer = uploadImgServer + key + '=' + val;
+ }
+
+ // 第二,将参数添加到 formdata 中
+ formdata.append(key, val);
+ });
+ if (uploadImgServerHash) {
+ uploadImgServer += '#' + uploadImgServerHash;
+ }
+
+ // 定义 xhr
+ var xhr = new XMLHttpRequest();
+ xhr.open('POST', uploadImgServer);
+
+ // 设置超时
+ xhr.timeout = timeout;
+ xhr.ontimeout = function () {
+ // hook - timeout
+ if (hooks.timeout && typeof hooks.timeout === 'function') {
+ hooks.timeout(xhr, editor);
+ }
+
+ _this3._alert('上传图片超时');
+ };
+
+ // 监控 progress
+ if (xhr.upload) {
+ xhr.upload.onprogress = function (e) {
+ var percent = void 0;
+ // 进度条
+ var progressBar = new Progress(editor);
+ if (e.lengthComputable) {
+ percent = e.loaded / e.total;
+ progressBar.show(percent);
+ }
+ };
+ }
+
+ // 返回数据
+ xhr.onreadystatechange = function () {
+ var result = void 0;
+ if (xhr.readyState === 4) {
+ if (xhr.status < 200 || xhr.status >= 300) {
+ // hook - error
+ if (hooks.error && typeof hooks.error === 'function') {
+ hooks.error(xhr, editor);
+ }
+
+ // xhr 返回状态错误
+ _this3._alert('上传图片发生错误', '\u4E0A\u4F20\u56FE\u7247\u53D1\u751F\u9519\u8BEF\uFF0C\u670D\u52A1\u5668\u8FD4\u56DE\u72B6\u6001\u662F ' + xhr.status);
+ return;
+ }
+
+ result = xhr.responseText;
+ if ((typeof result === 'undefined' ? 'undefined' : _typeof(result)) !== 'object') {
+ try {
+ result = JSON.parse(result);
+ } catch (ex) {
+ // hook - fail
+ if (hooks.fail && typeof hooks.fail === 'function') {
+ hooks.fail(xhr, editor, result);
+ }
+
+ _this3._alert('上传图片失败', '上传图片返回结果错误,返回结果是: ' + result);
+ return;
+ }
+ }
+ if (!hooks.customInsert && result.errno != '0') {
+ // hook - fail
+ if (hooks.fail && typeof hooks.fail === 'function') {
+ hooks.fail(xhr, editor, result);
+ }
+
+ // 数据错误
+ _this3._alert('上传图片失败', '上传图片返回结果错误,返回结果 errno=' + result.errno);
+ } else {
+ if (hooks.customInsert && typeof hooks.customInsert === 'function') {
+ // 使用者自定义插入方法
+ hooks.customInsert(_this3.insertLinkImg.bind(_this3), result, editor);
+ } else {
+ // 将图片插入编辑器
+ var data = result.data || [];
+ data.forEach(function (link) {
+ _this3.insertLinkImg(link);
+ });
+ }
+
+ // hook - success
+ if (hooks.success && typeof hooks.success === 'function') {
+ hooks.success(xhr, editor, result);
+ }
+ }
+ }
+ };
+
+ // hook - before
+ if (hooks.before && typeof hooks.before === 'function') {
+ var beforeResult = hooks.before(xhr, editor, resultFiles);
+ if (beforeResult && (typeof beforeResult === 'undefined' ? 'undefined' : _typeof(beforeResult)) === 'object') {
+ if (beforeResult.prevent) {
+ // 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传
+ this._alert(beforeResult.msg);
+ return;
+ }
+ }
+ }
+
+ // 自定义 headers
+ objForEach(uploadImgHeaders, function (key, val) {
+ xhr.setRequestHeader(key, val);
+ });
+
+ // 跨域传 cookie
+ xhr.withCredentials = withCredentials;
+
+ // 发送请求
+ xhr.send(formdata);
+
+ // 注意,要 return 。不去操作接下来的 base64 显示方式
+ return;
+ }
+
+ // ------------------------------ 显示 base64 格式 ------------------------------
+ if (uploadImgShowBase64) {
+ arrForEach(files, function (file) {
+ var _this = _this3;
+ var reader = new FileReader();
+ reader.readAsDataURL(file);
+ reader.onload = function () {
+ _this.insertLinkImg(this.result);
+ };
+ });
+ }
+ }
+};
+
+/*
+ 编辑器构造函数
+*/
+
+// id,累加
+var editorId = 1;
+
+// 构造函数
+function Editor(toolbarSelector, textSelector) {
+ if (toolbarSelector == null) {
+ // 没有传入任何参数,报错
+ throw new Error('错误:初始化编辑器时候未传入任何参数,请查阅文档');
+ }
+ // id,用以区分单个页面不同的编辑器对象
+ this.id = 'wangEditor-' + editorId++;
+
+ this.toolbarSelector = toolbarSelector;
+ this.textSelector = textSelector;
+
+ // 自定义配置
+ this.customConfig = {};
+}
+
+// 修改原型
+Editor.prototype = {
+ constructor: Editor,
+
+ // 初始化配置
+ _initConfig: function _initConfig() {
+ // _config 是默认配置,this.customConfig 是用户自定义配置,将它们 merge 之后再赋值
+ var target = {};
+ this.config = Object.assign(target, config, this.customConfig);
+
+ // 将语言配置,生成正则表达式
+ var langConfig = this.config.lang || {};
+ var langArgs = [];
+ objForEach(langConfig, function (key, val) {
+ // key 即需要生成正则表达式的规则,如“插入链接”
+ // val 即需要被替换成的语言,如“insert link”
+ langArgs.push({
+ reg: new RegExp(key, 'img'),
+ val: val
+
+ });
+ });
+ this.config.langArgs = langArgs;
+ },
+
+ // 初始化 DOM
+ _initDom: function _initDom() {
+ var _this = this;
+
+ var toolbarSelector = this.toolbarSelector;
+ var $toolbarSelector = $(toolbarSelector);
+ var textSelector = this.textSelector;
+
+ var config$$1 = this.config;
+ var zIndex = config$$1.zIndex;
+
+ // 定义变量
+ var $toolbarElem = void 0,
+ $textContainerElem = void 0,
+ $textElem = void 0,
+ $children = void 0;
+
+ if (textSelector == null) {
+ // 只传入一个参数,即是容器的选择器或元素,toolbar 和 text 的元素自行创建
+ $toolbarElem = $('
');
+ $textContainerElem = $('
');
+
+ // 将编辑器区域原有的内容,暂存起来
+ $children = $toolbarSelector.children();
+
+ // 添加到 DOM 结构中
+ $toolbarSelector.append($toolbarElem).append($textContainerElem);
+
+ // 自行创建的,需要配置默认的样式
+ $toolbarElem.css('background-color', '#f1f1f1').css('border', '1px solid #ccc');
+ $textContainerElem.css('border', '1px solid #ccc').css('border-top', 'none').css('height', '300px');
+ } else {
+ // toolbar 和 text 的选择器都有值,记录属性
+ $toolbarElem = $toolbarSelector;
+ $textContainerElem = $(textSelector);
+ // 将编辑器区域原有的内容,暂存起来
+ $children = $textContainerElem.children();
+ }
+
+ // 编辑区域
+ $textElem = $('
');
+ $textElem.attr('contenteditable', 'true').css('width', '100%').css('height', '100%');
+
+ // 初始化编辑区域内容
+ if ($children && $children.length) {
+ $textElem.append($children);
+ } else {
+ $textElem.append($('
'));
+ }
+
+ // 编辑区域加入DOM
+ $textContainerElem.append($textElem);
+
+ // 设置通用的 class
+ $toolbarElem.addClass('w-e-toolbar');
+ $textContainerElem.addClass('w-e-text-container');
+ $textContainerElem.css('z-index', zIndex);
+ $textElem.addClass('w-e-text');
+
+ // 添加 ID
+ var toolbarElemId = getRandom('toolbar-elem');
+ $toolbarElem.attr('id', toolbarElemId);
+ var textElemId = getRandom('text-elem');
+ $textElem.attr('id', textElemId);
+
+ // 记录属性
+ this.$toolbarElem = $toolbarElem;
+ this.$textContainerElem = $textContainerElem;
+ this.$textElem = $textElem;
+ this.toolbarElemId = toolbarElemId;
+ this.textElemId = textElemId;
+
+ // 记录输入法的开始和结束
+ var compositionEnd = true;
+ $textContainerElem.on('compositionstart', function () {
+ // 输入法开始输入
+ compositionEnd = false;
+ });
+ $textContainerElem.on('compositionend', function () {
+ // 输入法结束输入
+ compositionEnd = true;
+ });
+
+ // 绑定 onchange
+ $textContainerElem.on('click keyup', function () {
+ // 输入法结束才出发 onchange
+ compositionEnd && _this.change && _this.change();
+ });
+ $toolbarElem.on('click', function () {
+ this.change && this.change();
+ });
+
+ //绑定 onfocus 与 onblur 事件
+ if (config$$1.onfocus || config$$1.onblur) {
+ // 当前编辑器是否是焦点状态
+ this.isFocus = false;
+
+ $(document).on('click', function (e) {
+ //判断当前点击元素是否在编辑器内
+ var isChild = $textElem.isContain($(e.target));
+
+ //判断当前点击元素是否为工具栏
+ var isToolbar = $toolbarElem.isContain($(e.target));
+ var isMenu = $toolbarElem[0] == e.target ? true : false;
+
+ if (!isChild) {
+ //若为选择工具栏中的功能,则不视为成blur操作
+ if (isToolbar && !isMenu) {
+ return;
+ }
+
+ if (_this.isFocus) {
+ _this.onblur && _this.onblur();
+ }
+ _this.isFocus = false;
+ } else {
+ if (!_this.isFocus) {
+ _this.onfocus && _this.onfocus();
+ }
+ _this.isFocus = true;
+ }
+ });
+ }
+ },
+
+ // 封装 command
+ _initCommand: function _initCommand() {
+ this.cmd = new Command(this);
+ },
+
+ // 封装 selection range API
+ _initSelectionAPI: function _initSelectionAPI() {
+ this.selection = new API(this);
+ },
+
+ // 添加图片上传
+ _initUploadImg: function _initUploadImg() {
+ this.uploadImg = new UploadImg(this);
+ },
+
+ // 初始化菜单
+ _initMenus: function _initMenus() {
+ this.menus = new Menus(this);
+ this.menus.init();
+ },
+
+ // 添加 text 区域
+ _initText: function _initText() {
+ this.txt = new Text(this);
+ this.txt.init();
+ },
+
+ // 初始化选区,将光标定位到内容尾部
+ initSelection: function initSelection(newLine) {
+ var $textElem = this.$textElem;
+ var $children = $textElem.children();
+ if (!$children.length) {
+ // 如果编辑器区域无内容,添加一个空行,重新设置选区
+ $textElem.append($('
'));
+ this.initSelection();
+ return;
+ }
+
+ var $last = $children.last();
+
+ if (newLine) {
+ // 新增一个空行
+ var html = $last.html().toLowerCase();
+ var nodeName = $last.getNodeName();
+ if (html !== ' ' && html !== ' ' || nodeName !== 'P') {
+ // 最后一个元素不是
,添加一个空行,重新设置选区
+ $textElem.append($('
'));
+ this.initSelection();
+ return;
+ }
+ }
+
+ this.selection.createRangeByElem($last, false, true);
+ this.selection.restoreSelection();
+ },
+
+ // 绑定事件
+ _bindEvent: function _bindEvent() {
+ // -------- 绑定 onchange 事件 --------
+ var onChangeTimeoutId = 0;
+ var beforeChangeHtml = this.txt.html();
+ var config$$1 = this.config;
+
+ // onchange 触发延迟时间
+ var onchangeTimeout = config$$1.onchangeTimeout;
+ onchangeTimeout = parseInt(onchangeTimeout, 10);
+ if (!onchangeTimeout || onchangeTimeout <= 0) {
+ onchangeTimeout = 200;
+ }
+
+ var onchange = config$$1.onchange;
+ if (onchange && typeof onchange === 'function') {
+ // 触发 change 的有三个场景:
+ // 1. $textContainerElem.on('click keyup')
+ // 2. $toolbarElem.on('click')
+ // 3. editor.cmd.do()
+ this.change = function () {
+ // 判断是否有变化
+ var currentHtml = this.txt.html();
+
+ if (currentHtml.length === beforeChangeHtml.length) {
+ // 需要比较每一个字符
+ if (currentHtml === beforeChangeHtml) {
+ return;
+ }
+ }
+
+ // 执行,使用节流
+ if (onChangeTimeoutId) {
+ clearTimeout(onChangeTimeoutId);
+ }
+ onChangeTimeoutId = setTimeout(function () {
+ // 触发配置的 onchange 函数
+ onchange(currentHtml);
+ beforeChangeHtml = currentHtml;
+ }, onchangeTimeout);
+ };
+ }
+
+ // -------- 绑定 onblur 事件 --------
+ var onblur = config$$1.onblur;
+ if (onblur && typeof onblur === 'function') {
+ this.onblur = function () {
+ var currentHtml = this.txt.html();
+ onblur(currentHtml);
+ };
+ }
+
+ // -------- 绑定 onfocus 事件 --------
+ var onfocus = config$$1.onfocus;
+ if (onfocus && typeof onfocus === 'function') {
+ this.onfocus = function () {
+ onfocus();
+ };
+ }
+ },
+
+ // 创建编辑器
+ create: function create() {
+ // 初始化配置信息
+ this._initConfig();
+
+ // 初始化 DOM
+ this._initDom();
+
+ // 封装 command API
+ this._initCommand();
+
+ // 封装 selection range API
+ this._initSelectionAPI();
+
+ // 添加 text
+ this._initText();
+
+ // 初始化菜单
+ this._initMenus();
+
+ // 添加 图片上传
+ this._initUploadImg();
+
+ // 初始化选区,将光标定位到内容尾部
+ this.initSelection(true);
+
+ // 绑定事件
+ this._bindEvent();
+ },
+
+ // 解绑所有事件(暂时不对外开放)
+ _offAllEvent: function _offAllEvent() {
+ $.offAll();
+ }
+};
+
+// 检验是否浏览器环境
+try {
+ document;
+} catch (ex) {
+ throw new Error('请在浏览器环境下运行');
+}
+
+// polyfill
+polyfill();
+
+// 这里的 `inlinecss` 将被替换成 css 代码的内容,详情可去 ./gulpfile.js 中搜索 `inlinecss` 关键字
+var inlinecss = '.w-e-toolbar,.w-e-text-container,.w-e-menu-panel { padding: 0; margin: 0; box-sizing: border-box;}.w-e-toolbar *,.w-e-text-container *,.w-e-menu-panel * { padding: 0; margin: 0; box-sizing: border-box;}.w-e-clear-fix:after { content: ""; display: table; clear: both;}.w-e-toolbar .w-e-droplist { position: absolute; left: 0; top: 0; background-color: #fff; border: 1px solid #f1f1f1; border-right-color: #ccc; border-bottom-color: #ccc;}.w-e-toolbar .w-e-droplist .w-e-dp-title { text-align: center; color: #999; line-height: 2; border-bottom: 1px solid #f1f1f1; font-size: 13px;}.w-e-toolbar .w-e-droplist ul.w-e-list { list-style: none; line-height: 1;}.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item { color: #333; padding: 5px 0;}.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item:hover { background-color: #f1f1f1;}.w-e-toolbar .w-e-droplist ul.w-e-block { list-style: none; text-align: left; padding: 5px;}.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item { display: inline-block; *display: inline; *zoom: 1; padding: 3px 5px;}.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item:hover { background-color: #f1f1f1;}@font-face { font-family: \'w-e-icon\'; src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAABhQAAsAAAAAGAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIPBGNtYXAAAAFoAAABBAAAAQQrSf4BZ2FzcAAAAmwAAAAIAAAACAAAABBnbHlmAAACdAAAEvAAABLwfpUWUWhlYWQAABVkAAAANgAAADYQp00kaGhlYQAAFZwAAAAkAAAAJAfEA+FobXR4AAAVwAAAAIQAAACEeAcD7GxvY2EAABZEAAAARAAAAERBSEX+bWF4cAAAFogAAAAgAAAAIAAsALZuYW1lAAAWqAAAAYYAAAGGmUoJ+3Bvc3QAABgwAAAAIAAAACAAAwAAAAMD3gGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA8fwDwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEAOgAAAA2ACAABAAWAAEAIOkG6Q3pEulH6Wbpd+m56bvpxunL6d/qDepc6l/qZepo6nHqefAN8BTxIPHc8fz//f//AAAAAAAg6QbpDekS6UfpZel36bnpu+nG6cvp3+oN6lzqX+pi6mjqcep38A3wFPEg8dzx/P/9//8AAf/jFv4W+Bb0FsAWoxaTFlIWURZHFkMWMBYDFbUVsxWxFa8VpxWiEA8QCQ7+DkMOJAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACAAD/wAQAA8AABAATAAABNwEnAQMuAScTNwEjAQMlATUBBwGAgAHAQP5Anxc7MmOAAYDA/oDAAoABgP6ATgFAQAHAQP5A/p0yOxcBEU4BgP6A/YDAAYDA/oCAAAQAAAAABAADgAAQACEALQA0AAABOAExETgBMSE4ATEROAExITUhIgYVERQWMyEyNjURNCYjBxQGIyImNTQ2MzIWEyE1EwEzNwPA/IADgPyAGiYmGgOAGiYmGoA4KCg4OCgoOED9AOABAEDgA0D9AAMAQCYa/QAaJiYaAwAaJuAoODgoKDg4/biAAYD+wMAAAAIAAABABAADQAA4ADwAAAEmJy4BJyYjIgcOAQcGBwYHDgEHBhUUFx4BFxYXFhceARcWMzI3PgE3Njc2Nz4BNzY1NCcuAScmJwERDQED1TY4OXY8PT8/PTx2OTg2CwcICwMDAwMLCAcLNjg5djw9Pz89PHY5ODYLBwgLAwMDAwsIBwv9qwFA/sADIAgGBggCAgICCAYGCCkqKlktLi8vLi1ZKiopCAYGCAICAgIIBgYIKSoqWS0uLy8uLVkqKin94AGAwMAAAAAAAgDA/8ADQAPAABsAJwAAASIHDgEHBhUUFx4BFxYxMDc+ATc2NTQnLgEnJgMiJjU0NjMyFhUUBgIAQjs6VxkZMjJ4MjIyMngyMhkZVzo7QlBwcFBQcHADwBkZVzo7Qnh9fcxBQUFBzH19eEI7OlcZGf4AcFBQcHBQUHAAAAEAAAAABAADgAArAAABIgcOAQcGBycRISc+ATMyFx4BFxYVFAcOAQcGBxc2Nz4BNzY1NCcuAScmIwIANTIyXCkpI5YBgJA1i1BQRUZpHh4JCSIYGB5VKCAgLQwMKCiLXl1qA4AKCycbHCOW/oCQNDweHmlGRVArKClJICEaYCMrK2I2NjlqXV6LKCgAAQAAAAAEAAOAACoAABMUFx4BFxYXNyYnLgEnJjU0Nz4BNzYzMhYXByERByYnLgEnJiMiBw4BBwYADAwtICAoVR4YGCIJCR4eaUZFUFCLNZABgJYjKSlcMjI1al1eiygoAYA5NjZiKysjYBohIEkpKCtQRUZpHh48NJABgJYjHBsnCwooKIteXQAAAAACAAAAQAQBAwAAJgBNAAATMhceARcWFRQHDgEHBiMiJy4BJyY1JzQ3PgE3NjMVIgYHDgEHPgEhMhceARcWFRQHDgEHBiMiJy4BJyY1JzQ3PgE3NjMVIgYHDgEHPgHhLikpPRESEhE9KSkuLikpPRESASMjelJRXUB1LQkQBwgSAkkuKSk9ERISET0pKS4uKSk9ERIBIyN6UlFdQHUtCRAHCBICABIRPSkpLi4pKT0REhIRPSkpLiBdUVJ6IyOAMC4IEwoCARIRPSkpLi4pKT0REhIRPSkpLiBdUVJ6IyOAMC4IEwoCAQAABgBA/8AEAAPAAAMABwALABEAHQApAAAlIRUhESEVIREhFSEnESM1IzUTFTMVIzU3NSM1MxUVESM1MzUjNTM1IzUBgAKA/YACgP2AAoD9gMBAQECAwICAwMCAgICAgIACAIACAIDA/wDAQP3yMkCSPDJAku7+wEBAQEBAAAYAAP/ABAADwAADAAcACwAXACMALwAAASEVIREhFSERIRUhATQ2MzIWFRQGIyImETQ2MzIWFRQGIyImETQ2MzIWFRQGIyImAYACgP2AAoD9gAKA/YD+gEs1NUtLNTVLSzU1S0s1NUtLNTVLSzU1SwOAgP8AgP8AgANANUtLNTVLS/61NUtLNTVLS/61NUtLNTVLSwADAAAAAAQAA6AAAwANABQAADchFSElFSE1EyEVITUhJQkBIxEjEQAEAPwABAD8AIABAAEAAQD9YAEgASDggEBAwEBAAQCAgMABIP7g/wABAAAAAAACAB7/zAPiA7QAMwBkAAABIiYnJicmNDc2PwE+ATMyFhcWFxYUBwYPAQYiJyY0PwE2NCcuASMiBg8BBhQXFhQHDgEjAyImJyYnJjQ3Nj8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFxYUBwYPAQ4BIwG4ChMIIxISEhIjwCNZMTFZIyMSEhISI1gPLA8PD1gpKRQzHBwzFMApKQ8PCBMKuDFZIyMSEhISI1gPLA8PD1gpKRQzHBwzFMApKQ8PDysQIxISEhIjwCNZMQFECAckLS1eLS0kwCIlJSIkLS1eLS0kVxAQDysPWCl0KRQVFRTAKXQpDysQBwj+iCUiJC0tXi0tJFcQEA8rD1gpdCkUFRUUwCl0KQ8rEA8PJC0tXi0tJMAiJQAAAAAFAAD/wAQAA8AAGwA3AFMAXwBrAAAFMjc+ATc2NTQnLgEnJiMiBw4BBwYVFBceARcWEzIXHgEXFhUUBw4BBwYjIicuAScmNTQ3PgE3NhMyNz4BNzY3BgcOAQcGIyInLgEnJicWFx4BFxYnNDYzMhYVFAYjIiYlNDYzMhYVFAYjIiYCAGpdXosoKCgoi15dampdXosoKCgoi15dalZMTHEgISEgcUxMVlZMTHEgISEgcUxMVisrKlEmJiMFHBtWODc/Pzc4VhscBSMmJlEqK9UlGxslJRsbJQGAJRsbJSUbGyVAKCiLXl1qal1eiygoKCiLXl1qal1eiygoA6AhIHFMTFZWTExxICEhIHFMTFZWTExxICH+CQYGFRAQFEM6OlYYGRkYVjo6QxQQEBUGBvcoODgoKDg4KCg4OCgoODgAAAMAAP/ABAADwAAbADcAQwAAASIHDgEHBhUUFx4BFxYzMjc+ATc2NTQnLgEnJgMiJy4BJyY1NDc+ATc2MzIXHgEXFhUUBw4BBwYTBycHFwcXNxc3JzcCAGpdXosoKCgoi15dampdXosoKCgoi15dalZMTHEgISEgcUxMVlZMTHEgISEgcUxMSqCgYKCgYKCgYKCgA8AoKIteXWpqXV6LKCgoKIteXWpqXV6LKCj8YCEgcUxMVlZMTHEgISEgcUxMVlZMTHEgIQKgoKBgoKBgoKBgoKAAAQBl/8ADmwPAACkAAAEiJiMiBw4BBwYVFBYzLgE1NDY3MAcGAgcGBxUhEzM3IzceATMyNjcOAQMgRGhGcVNUbRobSUgGDWVKEBBLPDxZAT1sxizXNC1VJi5QGB09A7AQHh1hPj9BTTsLJjeZbwN9fv7Fj5AjGQIAgPYJDzdrCQcAAAAAAgAAAAAEAAOAAAkAFwAAJTMHJzMRIzcXIyURJyMRMxUhNTMRIwcRA4CAoKCAgKCggP8AQMCA/oCAwEDAwMACAMDAwP8AgP1AQEACwIABAAADAMAAAANAA4AAFgAfACgAAAE+ATU0Jy4BJyYjIREhMjc+ATc2NTQmATMyFhUUBisBEyMRMzIWFRQGAsQcIBQURi4vNf7AAYA1Ly5GFBRE/oRlKjw8KWafn58sPj4B2yJULzUvLkYUFPyAFBRGLi81RnQBRks1NUv+gAEASzU1SwAAAAACAMAAAANAA4AAHwAjAAABMxEUBw4BBwYjIicuAScmNREzERQWFx4BMzI2Nz4BNQEhFSECwIAZGVc6O0JCOzpXGRmAGxgcSSgoSRwYG/4AAoD9gAOA/mA8NDVOFhcXFk41NDwBoP5gHjgXGBsbGBc4Hv6ggAAAAAABAIAAAAOAA4AACwAAARUjATMVITUzASM1A4CA/sCA/kCAAUCAA4BA/QBAQAMAQAABAAAAAAQAA4AAPQAAARUjHgEVFAYHDgEjIiYnLgE1MxQWMzI2NTQmIyE1IS4BJy4BNTQ2Nz4BMzIWFx4BFSM0JiMiBhUUFjMyFhcEAOsVFjUwLHE+PnEsMDWAck5OcnJO/gABLAIEATA1NTAscT4+cSwwNYByTk5yck47bisBwEAdQSI1YiQhJCQhJGI1NExMNDRMQAEDASRiNTViJCEkJCEkYjU0TEw0NEwhHwAAAAcAAP/ABAADwAADAAcACwAPABMAGwAjAAATMxUjNzMVIyUzFSM3MxUjJTMVIwMTIRMzEyETAQMhAyMDIQMAgIDAwMABAICAwMDAAQCAgBAQ/QAQIBACgBD9QBADABAgEP2AEAHAQEBAQEBAQEBAAkD+QAHA/oABgPwAAYD+gAFA/sAAAAoAAAAABAADgAADAAcACwAPABMAFwAbAB8AIwAnAAATESERATUhFR0BITUBFSE1IxUhNREhFSElIRUhETUhFQEhFSEhNSEVAAQA/YABAP8AAQD/AED/AAEA/wACgAEA/wABAPyAAQD/AAKAAQADgPyAA4D9wMDAQMDAAgDAwMDA/wDAwMABAMDA/sDAwMAAAAUAAAAABAADgAADAAcACwAPABMAABMhFSEVIRUhESEVIREhFSERIRUhAAQA/AACgP2AAoD9gAQA/AAEAPwAA4CAQID/AIABQID/AIAAAAAABQAAAAAEAAOAAAMABwALAA8AEwAAEyEVIRchFSERIRUhAyEVIREhFSEABAD8AMACgP2AAoD9gMAEAPwABAD8AAOAgECA/wCAAUCA/wCAAAAFAAAAAAQAA4AAAwAHAAsADwATAAATIRUhBSEVIREhFSEBIRUhESEVIQAEAPwAAYACgP2AAoD9gP6ABAD8AAQA/AADgIBAgP8AgAFAgP8AgAAAAAABAD8APwLmAuYALAAAJRQPAQYjIi8BBwYjIi8BJjU0PwEnJjU0PwE2MzIfATc2MzIfARYVFA8BFxYVAuYQThAXFxCoqBAXFhBOEBCoqBAQThAWFxCoqBAXFxBOEBCoqBDDFhBOEBCoqBAQThAWFxCoqBAXFxBOEBCoqBAQThAXFxCoqBAXAAAABgAAAAADJQNuABQAKAA8AE0AVQCCAAABERQHBisBIicmNRE0NzY7ATIXFhUzERQHBisBIicmNRE0NzY7ATIXFhcRFAcGKwEiJyY1ETQ3NjsBMhcWExEhERQXFhcWMyEyNzY3NjUBIScmJyMGBwUVFAcGKwERFAcGIyEiJyY1ESMiJyY9ATQ3NjsBNzY3NjsBMhcWHwEzMhcWFQElBgUIJAgFBgYFCCQIBQaSBQUIJQgFBQUFCCUIBQWSBQUIJQgFBQUFCCUIBQVJ/gAEBAUEAgHbAgQEBAT+gAEAGwQGtQYEAfcGBQg3Ghsm/iUmGxs3CAUFBQUIsSgIFxYXtxcWFgkosAgFBgIS/rcIBQUFBQgBSQgFBgYFCP63CAUFBQUIAUkIBQYGBQj+twgFBQUFCAFJCAUGBgX+WwId/eMNCwoFBQUFCgsNAmZDBQICBVUkCAYF/eMwIiMhIi8CIAUGCCQIBQVgFQ8PDw8VYAUFCAACAAcASQO3Aq8AGgAuAAAJAQYjIi8BJjU0PwEnJjU0PwE2MzIXARYVFAcBFRQHBiMhIicmPQE0NzYzITIXFgFO/vYGBwgFHQYG4eEGBh0FCAcGAQoGBgJpBQUI/dsIBQUFBQgCJQgFBQGF/vYGBhwGCAcG4OEGBwcGHQUF/vUFCAcG/vslCAUFBQUIJQgFBQUFAAAAAQAjAAAD3QNuALMAACUiJyYjIgcGIyInJjU0NzY3Njc2NzY9ATQnJiMhIgcGHQEUFxYXFjMWFxYVFAcGIyInJiMiBwYjIicmNTQ3Njc2NzY3Nj0BETQ1NDU0JzQnJicmJyYnJicmIyInJjU0NzYzMhcWMzI3NjMyFxYVFAcGIwYHBgcGHQEUFxYzITI3Nj0BNCcmJyYnJjU0NzYzMhcWMzI3NjMyFxYVFAcGByIHBgcGFREUFxYXFhcyFxYVFAcGIwPBGTMyGhkyMxkNCAcJCg0MERAKEgEHFf5+FgcBFQkSEw4ODAsHBw4bNTUaGDExGA0HBwkJCwwQDwkSAQIBAgMEBAUIEhENDQoLBwcOGjU1GhgwMRgOBwcJCgwNEBAIFAEHDwGQDgcBFAoXFw8OBwcOGTMyGRkxMRkOBwcKCg0NEBEIFBQJEREODQoLBwcOAAICAgIMCw8RCQkBAQMDBQxE4AwFAwMFDNRRDQYBAgEICBIPDA0CAgICDAwOEQgJAQIDAwUNRSEB0AINDQgIDg4KCgsLBwcDBgEBCAgSDwwNAgICAg0MDxEICAECAQYMULYMBwEBBwy2UAwGAQEGBxYPDA0CAgICDQwPEQgIAQECBg1P/eZEDAYCAgEJCBEPDA0AAAIAAP+3A/8DtwATADkAAAEyFxYVFAcCBwYjIicmNTQ3ATYzARYXFh8BFgcGIyInJicmJyY1FhcWFxYXFjMyNzY3Njc2NzY3NjcDmygeHhq+TDdFSDQ0NQFtISn9+BcmJy8BAkxMe0c2NiEhEBEEExQQEBIRCRcIDxITFRUdHR4eKQO3GxooJDP+mUY0NTRJSTABSx/9sSsfHw0oek1MGhsuLzo6RAMPDgsLCgoWJRsaEREKCwQEAgABAAAAAAAA9evv618PPPUACwQAAAAAANbEBFgAAAAA1sQEWAAA/7cEAQPAAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAD//wQBAAEAAAAAAAAAAAAAAAAAAAAhBAAAAAAAAAAAAAAAAgAAAAQAAAAEAAAABAAAAAQAAMAEAAAABAAAAAQAAAAEAABABAAAAAQAAAAEAAAeBAAAAAQAAAAEAABlBAAAAAQAAMAEAADABAAAgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMlAD8DJQAAA74ABwQAACMD/wAAAAAAAAAKABQAHgBMAJQA+AE2AXwBwgI2AnQCvgLoA34EHgSIBMoE8gU0BXAFiAXgBiIGagaSBroG5AcoB+AIKgkcCXgAAQAAACEAtAAKAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGljb21vb24AaQBjAG8AbQBvAG8AblZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGljb21vb24AaQBjAG8AbQBvAG8Abmljb21vb24AaQBjAG8AbQBvAG8AblJlZ3VsYXIAUgBlAGcAdQBsAGEAcmljb21vb24AaQBjAG8AbQBvAG8AbkZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format(\'truetype\'); font-weight: normal; font-style: normal;}[class^="w-e-icon-"],[class*=" w-e-icon-"] { /* use !important to prevent issues with browser extensions that change fonts */ font-family: \'w-e-icon\' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}.w-e-icon-close:before { content: "\\f00d";}.w-e-icon-upload2:before { content: "\\e9c6";}.w-e-icon-trash-o:before { content: "\\f014";}.w-e-icon-header:before { content: "\\f1dc";}.w-e-icon-pencil2:before { content: "\\e906";}.w-e-icon-paint-brush:before { content: "\\f1fc";}.w-e-icon-image:before { content: "\\e90d";}.w-e-icon-play:before { content: "\\e912";}.w-e-icon-location:before { content: "\\e947";}.w-e-icon-undo:before { content: "\\e965";}.w-e-icon-redo:before { content: "\\e966";}.w-e-icon-quotes-left:before { content: "\\e977";}.w-e-icon-list-numbered:before { content: "\\e9b9";}.w-e-icon-list2:before { content: "\\e9bb";}.w-e-icon-link:before { content: "\\e9cb";}.w-e-icon-happy:before { content: "\\e9df";}.w-e-icon-bold:before { content: "\\ea62";}.w-e-icon-underline:before { content: "\\ea63";}.w-e-icon-italic:before { content: "\\ea64";}.w-e-icon-strikethrough:before { content: "\\ea65";}.w-e-icon-table2:before { content: "\\ea71";}.w-e-icon-paragraph-left:before { content: "\\ea77";}.w-e-icon-paragraph-center:before { content: "\\ea78";}.w-e-icon-paragraph-right:before { content: "\\ea79";}.w-e-icon-terminal:before { content: "\\f120";}.w-e-icon-page-break:before { content: "\\ea68";}.w-e-icon-cancel-circle:before { content: "\\ea0d";}.w-e-icon-font:before { content: "\\ea5c";}.w-e-icon-text-heigh:before { content: "\\ea5f";}.w-e-toolbar { display: -webkit-box; display: -ms-flexbox; display: flex; padding: 0 5px; /* flex-wrap: wrap; */ /* 单个菜单 */}.w-e-toolbar .w-e-menu { position: relative; text-align: center; padding: 5px 10px; cursor: pointer;}.w-e-toolbar .w-e-menu i { color: #999;}.w-e-toolbar .w-e-menu:hover i { color: #333;}.w-e-toolbar .w-e-active i { color: #1e88e5;}.w-e-toolbar .w-e-active:hover i { color: #1e88e5;}.w-e-text-container .w-e-panel-container { position: absolute; top: 0; left: 50%; border: 1px solid #ccc; border-top: 0; box-shadow: 1px 1px 2px #ccc; color: #333; background-color: #fff; /* 为 emotion panel 定制的样式 */ /* 上传图片的 panel 定制样式 */}.w-e-text-container .w-e-panel-container .w-e-panel-close { position: absolute; right: 0; top: 0; padding: 5px; margin: 2px 5px 0 0; cursor: pointer; color: #999;}.w-e-text-container .w-e-panel-container .w-e-panel-close:hover { color: #333;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title { list-style: none; display: -webkit-box; display: -ms-flexbox; display: flex; font-size: 14px; margin: 2px 10px 0 10px; border-bottom: 1px solid #f1f1f1;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-item { padding: 3px 5px; color: #999; cursor: pointer; margin: 0 3px; position: relative; top: 1px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-active { color: #333; border-bottom: 1px solid #333; cursor: default; font-weight: 700;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content { padding: 10px 15px 10px 15px; font-size: 16px; /* 输入框的样式 */ /* 按钮的样式 */}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input:focus,.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus,.w-e-text-container .w-e-panel-container .w-e-panel-tab-content button:focus { outline: none;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea { width: 100%; border: 1px solid #ccc; padding: 5px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus { border-color: #1e88e5;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text] { border: none; border-bottom: 1px solid #ccc; font-size: 14px; height: 20px; color: #333; text-align: left;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].small { width: 30px; text-align: center;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].block { display: block; width: 100%; margin: 10px 0;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text]:focus { border-bottom: 2px solid #1e88e5;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button { font-size: 14px; color: #1e88e5; border: none; padding: 5px 10px; background-color: #fff; cursor: pointer; border-radius: 3px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.left { float: left; margin-right: 10px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.right { float: right; margin-left: 10px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.gray { color: #999;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.red { color: #c24f4a;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button:hover { background-color: #f1f1f1;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container:after { content: ""; display: table; clear: both;}.w-e-text-container .w-e-panel-container .w-e-emoticon-container .w-e-item { cursor: pointer; font-size: 18px; padding: 0 3px; display: inline-block; *display: inline; *zoom: 1;}.w-e-text-container .w-e-panel-container .w-e-up-img-container { text-align: center;}.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn { display: inline-block; *display: inline; *zoom: 1; color: #999; cursor: pointer; font-size: 60px; line-height: 1;}.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn:hover { color: #333;}.w-e-text-container { position: relative;}.w-e-text-container .w-e-progress { position: absolute; background-color: #1e88e5; bottom: 0; left: 0; height: 1px;}.w-e-text { padding: 0 10px; overflow-y: scroll;}.w-e-text p,.w-e-text h1,.w-e-text h2,.w-e-text h3,.w-e-text h4,.w-e-text h5,.w-e-text table,.w-e-text pre { margin: 10px 0; line-height: 1.5;}.w-e-text ul,.w-e-text ol { margin: 10px 0 10px 20px;}.w-e-text blockquote { display: block; border-left: 8px solid #d0e5f2; padding: 5px 10px; margin: 10px 0; line-height: 1.4; font-size: 100%; background-color: #f1f1f1;}.w-e-text code { display: inline-block; *display: inline; *zoom: 1; background-color: #f1f1f1; border-radius: 3px; padding: 3px 5px; margin: 0 3px;}.w-e-text pre code { display: block;}.w-e-text table { border-top: 1px solid #ccc; border-left: 1px solid #ccc;}.w-e-text table td,.w-e-text table th { border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; padding: 3px 5px;}.w-e-text table th { border-bottom: 2px solid #ccc; text-align: center;}.w-e-text:focus { outline: none;}.w-e-text img { cursor: pointer;}.w-e-text img:hover { box-shadow: 0 0 5px #333;}';
+
+// 将 css 代码添加到 "].join(""),a=f(o.layHeader.html());a.append(o.layMain.find("table").html()),a.append(o.layTotal.find("table").html()),a.find("th.layui-table-patch").remove(),a.find("thead>tr>th."+F).filter(function(e,t){return!f(t).children("."+u).length}).remove(),a.find("tbody>tr>td."+F).remove(),t.document.write(e+a.prop("outerHTML")),t.document.close(),layui.device("edg").edg?(t.onafterprint=t.close,t.print()):(t.print(),t.close())}}});"object"==typeof e.defaultToolbar&&(l=[],e.defaultToolbar=f.map(e.defaultToolbar,function(e,t){var a="string"==typeof e,i=a?n[e]:e;return i&&(!(i=i.name&&n[i.name]?f.extend({},n[i.name],i):i).name&&a&&(i.name=e),l.push('
')),i}),o.layTool.find(".layui-table-tool-self").html(l.join("")))},n.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},n.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](W),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},n.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},n.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+u)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(W)||0o.layMain.prop("clientHeight")&&(e.style.width=parseFloat(e.style.width)-i+"px")}),!p&&h?y.width(o.getContentWidth(l)):y.width("auto"),o.setGroupWidth()},n.prototype.resize=function(){var e=this;e.layMain&&("isConnected"in e.layMain[0]?e.layMain[0].isConnected:f.contains(document.body,e.layMain[0]))&&(e.fullSize(),e.setColsWidth(),e.scrollPatch())},n.prototype.reload=function(e,t,a){var i=this;e=e||{},delete i.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete i.config[e]}),i.config=f.extend(t,{},i.config,e),"reloadData"!==a&&(layui.each(i.config.cols,function(e,t){layui.each(t,function(e,t){delete t.colspan2})}),delete i.config.HAS_SET_COLS_PATCH),i.render(a)},n.prototype.errorView=function(e){var t=this,a=t.layMain.find("."+h),e=f(''+(e||"Error")+"
");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(W),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(P).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth(),t.loading(!1)},n.prototype.page=1,n.prototype.pullData=function(i,l){var e,t,n=this,o=n.config,a=(o.HAS_SET_COLS_PATCH||n.setColsPatch(),o.HAS_SET_COLS_PATCH=!0,o.request),d=o.response,r=function(){"object"==typeof o.initSort&&n.sort({field:o.initSort.field,type:o.initSort.type,reloadType:l.type})},c=function(e,t){n.setColsWidth(),n.loading(!1),"function"==typeof o.done&&o.done(e,i,e[d.countName],t)};l=l||{},"function"==typeof o.before&&o.before(o),n.startTime=(new Date).getTime(),l.renderData?((e={})[d.dataName]=k.cache[n.key],e[d.countName]=o.url?"object"===layui.type(o.page)?o.page.count:e[d.dataName].length:o.data.length,"object"==typeof o.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),n.renderData({res:e,curr:i,count:e[d.countName],type:l.type,sort:!0}),c(e,"renderData")):o.url?(t={},o.page&&(t[a.pageName]=i,t[a.limitName]=o.limit),a=f.extend(t,o.where),o.contentType&&0==o.contentType.indexOf("application/json")&&(a=JSON.stringify(a)),n.loading(!0),n._xhr&&4!==n._xhr.readyState&&(n._xhrAbort=!0,n._xhr.abort()),n._xhr=f.ajax({type:o.method||"get",url:o.url,contentType:o.contentType,data:a,dataType:o.dataType||"json",jsonpCallback:o.jsonpCallback,headers:o.headers||{},complete:"function"==typeof o.complete?o.complete:undefined,success:function(e){var t,a;(e="function"==typeof o.parseData?o.parseData(e)||e:e)[d.statusName]!=d.statusCode?n.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(t=e[d.countName],(a=Math.ceil(t/o.limit)||1)',' "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return' ';case"radio":return' ';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
"].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+A+'"'),e=e.join(" "),y.push(""+i.join("")+" "),h.push(""+d.join("")+" "),p.push(""+r.join("")+" "))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},n.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,g.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](W),a.layPage.find(P)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(W),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(W),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:' ',next:' ',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,p.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},n.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var e=t.field||e,a=o&&o[t.field],i="totalRowDecimals"in t?t.totalRowDecimals:2,i=s[e]?parseFloat(s[e]||0).toFixed(i):"",i=(n=t.totalRowText||"",(l={LAY_COL:t})[e]=i,l=t.totalRow&&T.call(r,{item3:t,content:i,tplData:l})||n,a||l),l="string"==typeof(n=t.totalRow||c.totalRow)?m(n).render(f.extend({TOTAL_NUMS:a||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):i,n=(t.field&&r.dataTotal.push({field:t.field,total:f(""+l+"
").text()}),['','"+l,"
"].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+" "))},n.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},n.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");i.render(e,t)},n.prototype.renderFormByElem=function(a){layui.each(["input","select"],function(e,t){i.render(a.find(t))})},n.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}))},n.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},n.prototype.setRowChecked=function(i){var a,e,l,t,n,o,d,r=this,c=r.config,s="all"===i.index,u="array"===layui.type(i.index),y=s||u;c.tree&&c.tree.view||y&&(r.layBox.addClass(O),"radio"===i.type)||(u&&(a={},layui.each(i.index,function(e,t){a[t]=!0}),i.index=a),e=r.layBody.children(".layui-table").children("tbody"),d=y?"tr":'tr[data-index="'+i.index+'"]',d=e.children(d),e=s?d:d.filter(u?function(){var e=f(this).data("index");return i.index[e]}:'[data-index="'+i.index+'"]'),i=f.extend({type:"checkbox"},i),l=k.cache[r.key],t="checked"in i,n=function(e){return"radio"===i.type||(t?i.checked:!e)},e.each(function(){var e=f(this),t=e.attr("data-index"),a=l[t];t&&"array"!==layui.type(a)&&!a[c.disabledName]&&(a=a[c.checkName]=n(e.hasClass(A)),e.toggleClass(A,!!a),"radio"===i.type)&&(o=t,e.siblings().removeClass(A))}),o&&layui.each(l,function(e,t){Number(o)!==Number(e)&&delete t[c.checkName]}),d=(u=(s=e.children("td").children(".layui-table-cell").children('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')).last()).closest(I),("radio"===i.type&&d.hasClass(W)?s.first():s).prop("checked",n(u.prop("checked"))),r.syncCheckAll(),y&&setTimeout(function(){r.layBox.removeClass(O)},100))},n.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(L);t.layHeader.find("th").find(L).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.initIndexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,R,"sort("+n+")",f.extend({config:i},i.initSort)))},n.prototype.loading=function(e){this.config.loading&&this.layBox.find(".layui-table-init").toggleClass(W,!e)},n.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},n.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap?(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135):i.customHeightFunc&&(l=i.customHeightFunc())<135&&(l=135),1
')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(D).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0 ');a.html(t),s.height&&a.css("max-height",s.height-(c.layTool.outerHeight()||50)),i.find("."+S)[0]||i.append(a),c.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};layui.stope(e),z.trigger("table.tool.panel.remove"),g.close(c.tipsIndex),layui.each(s.defaultToolbar,function(e,t){if(t.layEvent===a)return"function"==typeof t.onClick&&t.onClick({data:l,config:s,openPanel:n,elem:i}),!0}),layui.event.call(this,R,"toolbar("+o+")",f.extend({event:a,config:s},{}))}),c.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=c.col(t);layui.event.call(this,R,"colTool("+o+")",f.extend({event:a,config:s,col:t},{}))}),c.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,R,"pagebar("+o+")",f.extend({event:t,config:s},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(r.allowResize=t.width()-e<=10,d.css("cursor",r.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||(r.allowResize=!1,d.css("cursor",""))}).on("mousedown",function(e){var t,a=f(this);r.allowResize&&(t=a.data("key"),e.preventDefault(),r.offset=[e.clientX,e.clientY],c.cssRules(t,function(e){var t=e.style.width||a.outerWidth();r.rule=e,r.ruleWidth=parseFloat(t),r.minWidth=a.data("minwidth")||s.cellMinWidth,r.maxWidth=a.data("maxwidth")||s.cellMaxWidth}),a.data(j,r),w.eventMoveElem=a)}),w.docEvent||z.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(j)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+_).attr(N),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),g.close(c.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+_).attr(N),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),r={},d.css("cursor",""),a.scrollPatch(),t.removeData(j),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],R,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(L),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");c.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(L+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?c.sort({field:t,type:"asc",fromEvent:!0}):c.sort({field:t,type:"desc",fromEvent:!0})}),c.commonMember=function(e){var a=f(this).parents("tr").eq(0).data("index"),t=c.layBody.find('tr[data-index="'+a+'"]'),i=(k.cache[c.key]||[])[a]||{},l={tr:t,config:s,data:k.clearCacheKey(i),dataCache:i,index:a,del:function(){k.cache[c.key][a]=[],t.remove(),c.scrollPatch()},update:function(e,t){c.updateRow({index:a,data:e=e||{},related:t},function(e,t){l.data[e]=t})},setRowChecked:function(e){c.setRowChecked(f.extend({index:a},e))}};return f.extend(l,e)}),t=(c.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(c.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?c.setRowChecked({index:"all",checked:l}):c.setRowChecked({index:i,checked:l}),layui.stope(e),layui.event.call(t[0],R,"checkbox("+o+")",y.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return c.col(a.data("key"))}})))}),c.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;c.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],R,"radio("+o+")",y.call(t[0],{checked:i,getCol:function(){return c.col(a.data("key"))}}))}),c.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").addClass(M)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").removeClass(M)}).on("click","tr",function(e){t.call(this,"row",e)}).on("dblclick","tr",function(e){t.call(this,"rowDouble",e)}).on("contextmenu","tr",function(e){s.defaultContextmenu||e.preventDefault(),t.call(this,"rowContextmenu",e)}),function(e,t){var a=f(this);if(!a.data("off")){if("rowContextmenu"!==e){var i=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");if(f(t.target).is(i)||f(t.target).closest(i)[0])return}layui.event.call(this,R,e+"("+o+")",y.call(a.children("td")[0],{e:t}))}}),n=function(e,t){var a,i,l;(e=f(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=c.col(i),a=e.closest("tr").data("index"),a=k.cache[c.key][a],e.children(u),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=f("textarea"===i?'':' '))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+E)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(c.layBody.on("change","."+E,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[c.key][e],l=y.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return c.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],R,"edit("+o+")",l)}).on("blur","."+E,function(){f(this).remove()}),c.layBody.on(s.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){a.call(this)}).on("mouseleave","td",function(){a.call(this,"hide")}),c.layTotal.on("mouseenter","td",function(){a.call(this)}).on("mouseleave","td",function(){a.call(this,"hide")}),"layui-table-grid-down"),a=function(e){var t=f(this),a=t.children(u);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.prop("clientWidth")||0 '))},l=function(e,t){var a=f(this),i=a.parent(),l=i.data("key"),n=c.col(l),o=i.parent().data("index"),d=i.children(u),i="layui-table-cell-c",r=f('
');"tips"===(t=t||n.expandedMode||s.cellExpandedMode)?c.tipsIndex=g.tips([' ',d.html(),"
",' '].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:c.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){g.close(t)})}}):(c.elem.find("."+i).trigger("click"),c.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||s.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')):t.field&&"normal"!==t.type&&0==i&&(u[t.field]=!0)}),c.push(n.join(","))}),o&&layui.each(o.dataTotal,function(e,t){u[t.field]||s.push('"'+(t.total||"")+'"')}),r.join(",")+"\r\n"+c.join("\r\n")+"\r\n"+s.join(","))),d.download=(a.title||l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(d),d.click(),document.body.removeChild(d)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](W),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](W),n.setParentCol(i,t))})})),f("."+S).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new n(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.initIndexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),s(R,k)});layui.define(["table"],function(e){"use strict";var P=layui.$,h=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=P.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},F=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},L="lay-table-id",q="layui-hide",s=".layui-table-body",R=".layui-table-main",Y=".layui-table-fixed-l",z=".layui-table-fixed-r",l="layui-table-checked",m="layui-table-tree",H="LAY_DATA_INDEX",b="LAY_DATA_INDEX_HISTORY",p="LAY_PARENT_INDEX",g="LAY_CHECKBOX_HALF",X="LAY_EXPAND",V="LAY_HAS_EXPANDED",U="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=/<[^>]+?>/,f=["flexIconClose","flexIconOpen","iconClose","iconOpen","iconLeaf","icon"],a=function(e){var t=this;t.index=++j.index,t.config=P.extend(!0,{},t.config,j.config,e),t.init(),t.render()},x=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[H]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&x(n,i,t[i])})},d=function(d,a,e){var r=F(d),o=("reloadData"!==e&&(r.status={expand:{}}),P.extend(!0,{},r.getOptions(),a)),n=o.tree,c=n.customName.children,i=n.customName.id,l=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},o.cols),a.parseData),u=a.done;"reloadData"===e&&"fixed"===o.scrollPos&&(r.scrollTopCache=r.config.elem.next().find(s).scrollTop()),o.url?e&&(!l||l.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(l)&&(a=l.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=r.flatToTree(a[t])),N(a[t],function(e){e[X]=X in e?e[X]:e[i]!==undefined&&r.status.expand[e[i]]},c),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),r.initData(a[t]),a},a.parseData.mod=!0):a.data!==undefined&&(a.data=a.data||[],n.data.isSimpleData&&(a.data=r.flatToTree(a.data)),r.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n="renderData"===a,i=(n||delete r.isExpandAll,this.elem.next()),l=(r.updateStatus(null,{LAY_HAS_EXPANDED:!1}),x(d,c),i.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(l.length&&(e=j.checkStatus(d),l.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!n&&o.autoSort&&o.initSort&&o.initSort.type&&j.sort(d),r.renderTreeTable(i),"reloadData"===a&&"fixed"===this.scrollPos&&i.find(s).scrollTop(r.scrollTopCache),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0),a&&a.tree&&a.tree.view&&layui.each(f,function(e,t){a.tree.view[t]!==undefined&&(a.tree.view[t]=r.normalizedIcon(a.tree.view[t]))})};a.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(P.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},a.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:' ',flexIconOpen:' ',showIcon:!0,icon:"",iconClose:' ',iconOpen:' ',iconLeaf:' ',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},a.prototype.normalizedIcon=function(e){return e?t.test(e)?e:' ':""},a.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},a.prototype.flatToTree=function(e){var n,i,l,d,r,o,c,u,t=this.getOptions(),a=t.tree,s=a.customName,t=t.id;return e=e||B.cache[t],t=e,n=s.id,i=s.pid,l=s.children,d=a.data.rootPid,n=n||"id",i=i||"parentId",l=l||"children",c={},u=[],layui.each(t,function(e,t){r=n+t[n],o=n+t[i],c[r]||(c[r]={},c[r][l]=[]);var a={};a[l]=c[r][l],c[r]=P.extend({},t,a),((d?c[r][i]===d:!c[r][i])?u:(c[o]||(c[o]={},c[o][l]=[]),c[o][l])).push(c[r])}),u},a.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=P.extend({},t);a[o]="undefined"!=typeof t[o]?t[o]:n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},a.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[H],getParentNode:function(){return n.getNodeByIndex(e[p])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[H],getParentNode:function(){return n.getNodeByIndex(i[p])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,P.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,P.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[H],!0}),i)return this.getNodeByIndex(i)},a.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return P.extend(l,a),t?P.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o '),I=function(e){p[U]="success",p[f.children]=e,u.initData(p[f.children],p[H]),K(t,!0,!x&&n,i,l,d)},D=b.format,"function"===layui.type(D)?D(p,c,I):(C=P.extend({},b.where||c.where),D=b.autoParam,layui.each(D,function(e,t){t=t.split("=");C[t[0].trim()]=p[(t[1]||t[0]).trim()]}),(D=b.contentType||c.contentType)&&0==D.indexOf("application/json")&&(C=JSON.stringify(C)),S=b.method||c.method,T=b.dataType||c.dataType,_=b.jsonpCallback||c.jsonpCallback,k=b.headers||c.headers,w=b.parseData||c.parseData,O=b.response||c.response,P.ajax({type:S||"get",url:g,contentType:D,data:C,dataType:T||"json",jsonpCallback:_,headers:k||{},success:function(e){(e="function"==typeof w?w.call(c,e)||e:e)[O.statusName]!=O.statusCode?(p[U]="error",p[X]=!1,v.html('
')):I(e[O.dataName])},error:function(e,t){p[U]="error",p[X]=!1,"function"==typeof c.error&&c.error(e,t)}})),m;p[V]=!0,N.length&&(!c.initSort||c.url&&!c.autoSort||((b=c.initSort).type?layui.sort(N,b.field,"desc"===b.type,!0):layui.sort(N,B.config.indexName,null,!0)),u.initData(p[f.children],p[H]),S=B.getTrHtml(o,N,null,null,e),E={trs:P(S.trs.join("")),trs_fixed:P(S.trs_fixed.join("")),trs_fixed_r:P(S.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(N,function(e,t){E.trs.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":A}).data("index",t[H]),E.trs_fixed.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":A}).data("index",t[H]),E.trs_fixed_r.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":A}).data("index",t[H])}),r.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(E.trs),r.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(E.trs_fixed),r.find(z).find('tbody tr[lay-data-index="'+e+'"]').after(E.trs_fixed_r),u.renderTreeTable(E.trs,A),n)&&!x&&layui.each(N,function(e,t){K({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:o,options:c},a,n,i,l,d)})}else u.isExpandAll=!1,(n&&!x?(layui.each(N,function(e,t){K({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:o,options:c},a,n,i,l,d)}),r.find(N.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(","))):(g=u.treeToFlat(N,p[f.id],e),r.find(g.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")))).addClass(q);J("resize-"+o,function(){j.resize(o)},0)(),l&&"loading"!==p[U]&&(D=s.callback.onExpand,"function"===layui.type(D))&&D(o,p,h),"function"===layui.type(d)&&"loading"!==p[U]&&d(o,p,h)}return m},v=(j.expandNode=function(e,t){var a,n,i,l,e=F(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,l=t.callbackFlag,e=e.getOptions().elem.next(),K({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,l,t.done)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=F(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[U])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[H],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[V])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[X]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(q),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[X]=!0,e[V]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:P(n.trs.join("")),trs_fixed:P(n.trs_fixed.join("")),trs_fixed_r:P(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[H].split("-").length-1;s={"data-index":t[H],"lay-data-index":t[H],"data-level":a},f.trs.eq(e).attr(s).data("index",t[H]),f.trs_fixed.eq(e).attr(s).data("index",t[H]),f.trs_fixed_r.eq(e).attr(s).data("index",t[H])}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[X]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(q),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},a.prototype.updateNodeIcon=function(e){var t=this.getOptions().tree||{},a=e.scopeEl,n=e.isExpand,e=e.isParent;a.find(".layui-table-tree-flexIcon").css("visibility",e||t.view.showFlexIconIfNotParent?"visible":"hidden").html(n?t.view.flexIconOpen:t.view.flexIconClose),t.view.showIcon&&(a=a.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)"),n=e?n?t.view.iconOpen:t.view.iconClose:t.view.iconLeaf,a.toggleClass("layui-table-tree-iconLeaf",!e).html(n))},a.prototype.renderTreeTable=function(e,t,a){var l=this,n=l.getOptions(),d=n.elem.next(),i=(d.hasClass(m)||d.addClass(m),n.id),r=n.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(d.attr("lay-filter"),l),f=n.data.length,y=((t=t||0)||(d.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[i],function(e,t){f&&(t[H]=String(e));t=t[H];d.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t),d.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t),d.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t)})),null),p=c.name,x=o.indent||14;if(layui.each(e.find('td[data-field="'+p+'"]'),function(e,t){var a,n,i=(t=P(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=d.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[X]&&a[u]&&((y=y||{})[n]=!0),a[g]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+p+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
',a[X]?o.flexIconOpen:o.flexIconClose,"
",o.showIcon?'
'+(l.normalizedIcon(a[c.icon])||o.icon||(a[u]?a[X]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),K({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&l.isExpandAll===undefined)return j.expandAll(i,!0);(!1!==a&&y?(layui.each(y,function(e,t){e=d.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),K({trElem:e.first()},!0)}),J("renderTreeTable2-"+i,function(){h.render(P(".layui-table-tree["+L+'="'+i+'"]'))},0)):J("renderTreeTable-"+i,function(){n.hasNumberCol&&v(l),h.render(P(".layui-table-tree["+L+'="'+i+'"]'))},0))()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[H]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),N=(a.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,P.extend(!0,{},t.config)),t.config=t.tableIns.config},a.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=P.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=P.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):P.extend(t,a),l.push(P.extend({},t)),i||(l=l.concat(N(t[n],a,n,i)))}),l}),o=(a.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],N(e,t,i.customName.children,a)},a.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=F(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t,a,i,l,n,d=F(e);d&&(n=(t=d.getOptions()).tree,a=j.getData(e),i=n.customName.children,l=function(e,a,n){layui.sort(e,a,n,!0),layui.each(e,function(e,t){l(t[i]||[],a,n)})},t.autoSort)&&((n=t.initSort).type?l(a,n.field,"desc"===n.type):l(a,B.config.indexName,null),B.cache[e]=a,d.initData(a),j.renderData(e))},function(n){var t=n.config.id,i=F(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[H],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(P.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=F(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(P(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}).data("index",i))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t,a){var n=F(e);if(n){var i,l=n.getOptions(),d=l.tree,r=d.customName.isParent,o=d.customName.children,c=l.elem.next(),u=[],s=B.cache[e],t=n.getNodeDataByIndex("string"===layui.type(t)?t:t[H],!1,"delete"),f=n.getNodeDataByIndex(t[p]),d=(n.updateCheckStatus(f),n.treeToFlat([t],t[d.customName.pid],t[p])),t=(layui.each(d,function(e,t){t=t[H];u.push('tr[lay-data-index="'+t+'"]'),-1!==t.indexOf("-")&&delete s[t]}),c.find(u.join(",")).remove(),n.initData());for(i in s)-1!==i.indexOf("-")&&i!==s[i][H]&&delete s[i];layui.each(n.treeToFlat(t),function(e,t){t[b]&&t[b]!==t[H]&&c.find('tr[lay-data-index="'+t[b]+'"]').attr({"data-index":t[H],"lay-data-index":t[H]}).data("index",t[H])}),layui.each(s,function(e,t){c.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e).data("index",e)}),l.hasNumberCol&&v(n),f&&(d=c.find('tr[lay-data-index="'+f[H]+'"]'),a||(f[r]=!(!f[o]||!f[o].length)),n.updateNodeIcon({scopeEl:d,isExpand:f[X],isParent:f[r]})),j.resize(e)}},j.addNodes=function(e,t){var a=F(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=P.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[V]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).remove(),a.initData(),u[V]=!1,u[U]="local",K({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:P(f.trs.join("")),trs_fixed:P(f.trs_fixed.join("")),trs_fixed_r:P(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[H],"lay-data-index":t[H],"data-level":"0"},h.trs.eq(e).attr(x).data("index",t[H]),h.trs_fixed.eq(e).attr(x).data("index",t[H]),h.trs_fixed_r.eq(e).attr(x).data("index",t[H])}),parseInt(c[0][H])-1),y=l.find(R),n=l.find(Y),f=l.find(z);-1==r?y.find('tr[data-level="0"][data-index="0"]')[0]?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):(y.find("tbody").prepend(h.trs),n.find("tbody").prepend(h.trs_fixed),f.find("tbody").prepend(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][b],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e).data("index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")))}return a.updateCheckStatus(u),u&&(o=l.find('tr[lay-data-index="'+u[H]+'"]'),a.updateNodeIcon({scopeEl:o,isExpand:u[X],isParent:u[s]})),j.resize(e),t&&l.find(R).find('tr[lay-data-index="'+c[0][H]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=F(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[g]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(m)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(m)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&(o(e),(t.tree||{}).view.dblClickExpand)&&K({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(m)&&(a=F(t),o(e),u.call(a,e.tr,e.checked))}),a.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=P(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},a.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[H]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),a.prop({checked:n,indeterminate:t[g]})})),o=!(r=!0),0<(e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]})).length?layui.each(e,function(e,t){if((t[l]||t[g])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}):r=!1,o=o&&!r,i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o}),r)},a.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[g]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[g]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[g])return a[g]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[g]=!n&&0
li"],n.bodyElem=["."+C.CONST.BODY+":eq(0)",">."+C.CONST.ITEM],n.getContainer=function(){var e=n.documentElem||t.elem;return{header:{elem:e.find(n.headerElem[0]),items:e.find(n.headerElem.join(""))},body:{elem:e.find(n.bodyElem[0]),items:e.find(n.bodyElem.join(""))}}},"array"===layui.type(t.header)?"string"==typeof t.header[0]?(n.headerElem=t.header.concat(),n.documentElem=p(document)):(n.elemView=p('
'),t.className&&n.elemView.addClass(t.className),a=p(''),i=p('
'),layui.each(t.header,function(e,t){t=n.renderHeaderItem(t);a.append(t)}),layui.each(t.body,function(e,t){t=n.renderBodyItem(t);i.append(t)}),n.elemView.append(a).append(i),t.elem.html(n.elemView)):n.renderClose(),"array"===layui.type(t.body)&&"string"==typeof t.body[0]&&(n.documentElem=p(document),n.bodyElem=t.body.concat()),n.data());"index"in t&&e.index!=t.index?n.change(n.findHeaderItem(t.index),!0):-1===e.index&&n.change(n.findHeaderItem(0),!0),n.roll("auto"),t.elem.hasClass(C.CONST.CLASS_HIDEV)&&t.elem.removeClass(C.CONST.CLASS_HIDEV),"function"==typeof t.afterRender&&t.afterRender(e),layui.event.call(t.elem[0],C.CONST.MOD_NAME,"afterRender("+t.id+")",e)},events:function(){var e,t=this,a=t.config,i=t.getContainer(),n=C.CONST.MOD_NAME,i=(t.documentElem?i.header:a).elem,a=a.trigger+(".lay_"+n+"_trigger"),n=t.documentElem?t.headerElem[1]:t.headerElem.join("");i.off(a).on(a,n,function(){t.change(p(this))}),r.onresize||(p(window).on("resize",function(){clearTimeout(e),e=setTimeout(function(){layui.each(C.cache.id,function(e){e=C.getInst(e);e&&e.roll("init")})},50)}),r.onresize=!0)}}),r={},t=C.Class;t.prototype.add=function(e){var t,a,i=this,n=(i.config,i.getContainer()),r=i.renderHeaderItem(e),d=i.renderBodyItem(e),o=i.data();e=p.extend({active:!0},e),/(before|after)/.test(e.mode)?(a=(t=e.hasOwnProperty("index"))?i.findHeaderItem(e.index):o.thisHeaderItem,t=t?i.findBodyItem(e.index):o.thisHeaderItem,a[e.mode](r),t[e.mode](d)):(a={prepend:"prepend",append:"append"}[e.mode||"append"]||"append",n.header.elem[a](r),n.body.elem[a](d)),e.active?i.change(r,!0):i.roll("auto"),"function"==typeof e.done&&e.done(p.extend(o,{headerItem:r,bodyItem:d}))},t.prototype.close=function(e,t){if(e&&e[0]){var a=this,i=a.config,n=e.attr("lay-id"),r=e.index();if("false"!==e.attr("lay-closable")){var d=a.data();if(!t)if(!1===layui.event.call(e[0],C.CONST.MOD_NAME,"beforeClose("+i.id+")",p.extend(d,{index:r})))return;e.hasClass(C.CONST.CLASS_THIS)&&(e.next()[0]?a.change(e.next(),!0):e.prev()[0]&&a.change(e.prev(),!0)),a.findBodyItem(n||r).remove(),e.remove(),a.roll("auto",r);d=a.data();layui.event.call(d.thisHeaderItem[0],C.CONST.MOD_NAME,"afterClose("+i.id+")",d)}}},t.prototype.closeMult=function(i,e){var n=this,t=n.config,a=n.getContainer(),r=n.data(),d=a.header.items,a=(a.body.items,'[lay-closable="false"]'),o=(e=e===undefined?r.index:e,n.findHeaderItem(e)),l=(n.findBodyItem(e),o.index()),r=("false"!==r.thisHeaderItem.attr("lay-closable")&&("all"!==i&&i?e!==r.index&&n.change(o,!0):(e=d.filter(":gt("+r.index+")"+a).eq(0),o=p(d.filter(":lt("+r.index+")"+a).get().reverse()).eq(0),e[0]?n.change(e,!0):o[0]&&n.change(o,!0))),d.each(function(e){var t=p(this),a=t.attr("lay-id"),a=n.findBodyItem(a||e);"false"!==t.attr("lay-closable")&&("other"===i&&e!==l||"right"===i&&l");return t.html(e.title||"New Tab").attr("lay-id",e.id),this.appendClose(t,e),t},t.prototype.renderBodyItem=function(e){var t=this.config,t=p(e.bodyItem||t.bodyItem||'
');return t.html(e.content||"").attr("lay-id",e.id),t},t.prototype.appendClose=function(e,t){var a=this;a.config.closable&&(0==(t=t||{}).closable&&e.attr("lay-closable","false"),"false"===e.attr("lay-closable")||e.find("."+C.CONST.CLOSE)[0]||((t=p(' ')).on("click",function(){return a.close(p(this).parent()),!1}),e.append(t)))},t.prototype.renderClose=function(){var t=this,a=t.config;t.getContainer().header.items.each(function(){var e=p(this);a.closable?t.appendClose(e):e.find("."+C.CONST.CLOSE).remove()})},t.prototype.roll=function(e,i){var n=this,t=n.config,a=n.getContainer(),r=a.header.elem,d=a.header.items,a=r.prop("scrollWidth"),o=Math.ceil(r.outerWidth()),l=r.data("left")||0,s="scroll"===t.headerMode,c="layui-tabs-scroll",f="layui-tabs-bar",u=["layui-icon-prev","layui-icon-next"],m={elem:p('
'),bar:p(['',' ',' ',"
"].join(""))};if("normal"!==t.headerMode){var h,y=r.parent("."+c);if(s||!s&&o=o-l)return r.css("left",-a).data("left",-a),!1}),l=r.data("left")||0,y.find("."+u[0])[l<0?"removeClass":"addClass"](C.CONST.CLASS_DISABLED),y.find("."+u[1])[0 ')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
'+i.text.none+"
"),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0
"),c=p(['
','
','
',s.showLine?t?'
':'
':'
',s.showCheckbox?'
':"",s.isJump&&i.href?'
'+(i[o.title]||i.label||s.text.defaultNodeName)+" ":'
'+(i[o.title]||i.label||s.text.defaultNodeName)+" ","
",s.edit?(a={add:'
',update:'
',del:'
'},n=['
'],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
"):void 0):"","
"].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
'));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append('
'),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=f.escape(e.val().trim())||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "
'+(d[u.title]||"")+' " \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var d=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=d.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},s="layui-hide",u="layui-btn-disabled",c="layui-none",r="layui-transfer-box",h="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
','","{{# if(d.data.showSearch){ }}",'
',' ',' ',"
","{{# } }}",'
',"
"].join("")},p=['
"].join(""),v=function(e){var t=this;t.index=++i.index,t.config=d.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=d.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=d(n(p,{open:"{{",close:"}}",tagStyle:"legacy"}).render({data:t,index:e.index})),i=t.elem=d(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+r),e.layHeader=e.elem.find("."+h),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
",' '," "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(c){var r=this,o=r.config;c=c||{},r.layBox.each(function(e){var t=d(this),a=t.find("."+f),t=t.find("."+h).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=d(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),r.layBtn.eq(e)[l?"removeClass":"addClass"](u),c.stopNone||(i=a.children("li:not(."+s+")").length,r.noneView(a,i?"":o.text.none))}),r.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=d('
'+(t||"")+"
");e.find("."+c)[0]&&e.find("."+c).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){d(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=d.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),c=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+r).find("."+f).append(t.clone()),t.remove(),c.push(a[0].value),i.setValue()):l.each(function(e){d(this).find("."+f).children("li").each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+r).find("."+f).append(e.clone()),e.remove(),c.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+r).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(c),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=d(this).prev(),t=e[0].checked,a=e.parents("."+r).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=d(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent().data("index");a[0].disabled||!1!==("function"==typeof l.dblclick?l.dblclick({elem:t,data:n.getData([a[0].value])[0],index:i}):null)&&n.transfer(i,t)}),n.layBtn.on("click",function(){var e=d(this),t=e.data("index");e.hasClass(u)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=d(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](s),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+s).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var o=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=o.extend({},n.config,e),n},on:function(e,n){return layui.onevent.call(this,r,e,n)}}),r="carousel",s="layui-this",u="layui-carousel-left",c="layui-carousel-right",m="layui-carousel-prev",h="layui-carousel-next",a="layui-carousel-arrow",d="layui-carousel-ind",n=function(e){var n=this;n.config=o.extend({},n.config,t.config,e),n.render()};n.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},n.prototype.render=function(){var e=this,n=e.config,i=o(n.elem);if(1
*[carousel-item]>*"),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(s),e.indicator(),e.arrow(),e.autoplay(),1=this.elemItem.length?0:e},n.prototype.addIndex=function(e){var n=this.config;n.index=n.index+(e=e||1),n.index>=this.elemItem.length&&(n.index=0)},n.prototype.subIndex=function(e){var n=this.config;n.index=n.index-(e=e||1),n.index<0&&(n.index=this.elemItem.length-1)},n.prototype.autoplay=function(){var e=this,n=e.config,i=e.elemItem.length;n.autoplay&&(clearInterval(e.timer),1',' '].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+a)[0]&&e.elem.find("."+a).remove(),1i.index?n.slide("add",e-i.index):e',(n=[],layui.each(e.elemItem,function(e){n.push(" ")}),n.join(""))," "].join(""));i.elem.attr("lay-indicator",i.indicator),i.elem.find("."+d)[0]&&i.elem.find("."+d).remove(),1t[a?"height":"width"]()/3)&&o.slide(0a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'"),i=1;i<=a.length;i++){var n=' ";a.half&&parseInt(a.value)!==a.value&&i==Math.ceil(a.value)?t=t+' ":t+=n}t+=" ",a.text&&(t+=''+a.value+" ");var s=a.elem,o=s.next("."+c.ELEM);o[0]&&o.remove(),e.elemTemplate=u(t),a.span=e.elemTemplate.next("span"),a.setText&&a.setText(a.value),s.html(e.elemTemplate),s.addClass("layui-inline"),a.readonly||e.action()},extendsInstance:function(){var a=this,l=a.config;return{setvalue:function(e){l.value=e,a.render()}}}}),c=l.CONST;l.Class.prototype.action=function(){var n=this.config,t=this.elemTemplate,i=t.find("i").width(),l=t.children("li");l.each(function(e){var a=e+1,l=u(this);l.on("click",function(e){n.value=a,n.half&&e.pageX-u(this).offset().left<=i/2&&(n.value=n.value-.5),n.text&&t.next("span").text(n.value),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value)}),l.on("mousemove",function(e){t.find("i").each(function(){u(this).addClass(c.ICON_RATE).removeClass(c.ICON_SOLID_HALF)}),t.find("i:lt("+a+")").each(function(){u(this).addClass(c.ICON_RATE_SOLID).removeClass(c.ICON_HALF_RATE)}),n.half&&e.pageX-u(this).offset().left<=i/2&&l.children("i").addClass(c.ICON_RATE_HALF).removeClass(c.ICON_RATE_SOLID)}),l.on("mouseleave",function(){t.find("i").each(function(){u(this).addClass(c.ICON_RATE).removeClass(c.ICON_SOLID_HALF)}),t.find("i:lt("+Math.floor(n.value)+")").each(function(){u(this).addClass(c.ICON_RATE_SOLID).removeClass(c.ICON_HALF_RATE)}),n.half&&parseInt(n.value)!==n.value&&t.children("li:eq("+Math.floor(n.value)+")").children("i").addClass(c.ICON_RATE_HALF).removeClass(c.ICON_SOLID_RATE)})}),a.touchSwipe(t,{onTouchMove:function(e,a){var i;Date.now()-a.timeStart<=200||(a=e.touches[0].pageX,e=t.width()/n.length,a=(a-t.offset().left)/e,(i=(i=(e=a%1)<=.5&&n.half?.5+(a-e):Math.ceil(a))>n.length?n.length:i)<0&&(i=0),l.each(function(e){var a=u(this).children("i"),l=Math.ceil(i)-e==1,t=Math.ceil(i)>e,e=i-e==.5;t?(a.addClass(c.ICON_RATE_SOLID).removeClass(c.ICON_HALF_RATE),n.half&&e&&a.addClass(c.ICON_RATE_HALF).removeClass(c.ICON_RATE_SOLID)):a.addClass(c.ICON_RATE).removeClass(c.ICON_SOLID_HALF),a.toggleClass("layui-rate-hover",l)}),n.value=i,n.text&&t.next("span").text(n.value),n.setText&&n.setText(n.value))},onTouchEnd:function(e,a){Date.now()-a.timeStart<=200||(t.find("i").removeClass("layui-rate-hover"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value))}})},e(c.MOD_NAME,l)});layui.define("jquery",function(o){"use strict";var w=layui.$,l=function(o){};l.prototype.load=function(o){var i,n,r,l,c,m,e,t,a,f,s,u,p,d,y,g=this,h=0,v=w((o=o||{}).elem);if(v[0])return c=w(o.scrollElem||document),m="mb"in o?o.mb:50,e=!("isAuto"in o)||o.isAuto,t=o.moreText||"\u52a0\u8f7d\u66f4\u591a",a=o.end||"\u6ca1\u6709\u66f4\u591a\u4e86",f="top"===(o.direction||"bottom"),g._cleanup(v,c),s=o.scrollElem&&o.scrollElem!==document,p=w('"),v.find(".layui-flow-more")[0]||v[f?"prepend":"append"](p),d=function(o,l){var e=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,t=c.scrollTop();o=w(o),p[f?"after":"before"](o),(l=0==l||null)?p.html(a):p.find("a").html(u),n=l,i=null,r&&r(),f&&(o=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,1===h?c.scrollTop(o):1'),"function"==typeof o.done&&o.done(++h,d)})(),p.find("a").on("click.flow",function(){w(this);n||i||y()}),o.isLazyimg&&(r=g.lazyimg({elem:o.elem+" img",scrollElem:o.scrollElem,direction:o.direction})),e&&c.on("scroll.flow",function(){var e=w(this),t=e.scrollTop();l&&clearTimeout(l),!n&&v.width()&&(l=setTimeout(function(){var o=(s?e:w(window)).height(),l=s?e.prop("scrollHeight"):document.documentElement.scrollHeight;(f?t<=m:l-t-o<=m)&&!i&&y()},100))}),g},l.prototype.lazyimg=function(o){var l,m=this,a=0,f=w((o=o||{}).scrollElem||document),s=o.elem||"img",n="top"===(o.direction||"bottom"),u=o.scrollElem&&o.scrollElem!==document,p=function(l,o){var e,t=f.scrollTop(),o=t+o,i=u?l.offset().top-f.offset().top+t:l.offset().top;(n?i+l.height():i)>=t&&i<=o&&l.attr("lay-src")&&(e=l.attr("lay-src"),layui.img(e,function(){var o=m.lazyimg.elem.eq(a);l.attr("src",e).removeAttr("lay-src"),o[0]&&r(o),a++},function(){m.lazyimg.elem.eq(a);l.removeAttr("lay-src")}))},r=function(o,l){var e=(u?l||f:w(window)).height(),t=f.scrollTop(),i=t+e;if(m.lazyimg.elem=w(s),o)p(o,e);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},R=layui.code?layui.code.index+1e4:0,j=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['',D.digit(t+1)+".","
"].join(""):"",'',e||" ","
"," "].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++R,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code)),a="function"==typeof l.onCopy;lay.clipboard.writeText({text:t,done:function(){if(a&&!1===l.onCopy(t,!0))return;W.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){if(a&&!1===l.onCopy(t,!1))return;W.msg("\u590d\u5236\u5931\u8d25",{icon:2})}})}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x(''),C=x('
'),r=x('
'),_=x('
'),u=x('
'),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(' '))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){N.render(e.find(".layui-form")),S.render(),I.render({elem:["."+A.ELEM_PREVIEW,".layui-tabs"].join(" ")})}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
'),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH ')).html(l.title||l.text.code),o.prepend(_)),M=x('
'),l.copy&&!l.preview&&((C=x(['
',' '," "].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append('
'+l.lang+" "),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss");
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/layui.css b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/layui.css
new file mode 100644
index 0000000..7d0659d
--- /dev/null
+++ b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/layui.css
@@ -0,0 +1,5787 @@
+.layui-inline, img {
+ display: inline-block;
+ vertical-align: middle
+}
+
+h1, h2, h3, h4, h5, h6 {
+ font-weight: 400
+}
+
+a, body {
+ color: #333
+}
+
+.layui-edge, .layui-header, .layui-inline, .layui-main {
+ position: relative
+}
+
+.layui-edge, hr {
+ height: 0;
+ overflow: hidden
+}
+
+.layui-layout-body, .layui-side, .layui-side-scroll {
+ overflow-x: hidden
+}
+
+.layui-btn, .layui-edge, .layui-inline, img {
+ vertical-align: middle
+}
+
+.layui-btn, .layui-disabled, .layui-icon, .layui-unselect {
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ -ms-user-select: none
+}
+
+.layui-elip, .layui-form-checkbox span, .layui-form-pane .layui-form-label {
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.layui-edge, .layui-elip, hr {
+ overflow: hidden
+}
+
+blockquote, body, button, dd, div, dl, dt, form, h1, h2, h3, h4, h5, h6, input, li, ol, p, pre, td, textarea, th, ul {
+ margin: 0;
+ padding: 0;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
+}
+
+a:active, a:hover {
+ outline: 0
+}
+
+img {
+ border: none
+}
+
+li {
+ list-style: none
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0
+}
+
+h4, h5, h6 {
+ font-size: 100%
+}
+
+button, input, optgroup, option, select, textarea {
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+ font-weight: inherit;
+ outline: 0
+}
+
+pre {
+ white-space: pre-wrap;
+ white-space: -moz-pre-wrap;
+ white-space: -pre-wrap;
+ white-space: -o-pre-wrap;
+ word-wrap: break-word
+}
+
+body {
+ line-height: 1.6;
+ color: rgba(0, 0, 0, .85);
+ font: 14px Helvetica Neue, Helvetica, PingFang SC, Tahoma, Arial, sans-serif
+}
+
+hr {
+ line-height: 0;
+ margin: 10px 0;
+ padding: 0;
+ border: none !important;
+ border-bottom: 1px solid #eee !important;
+ clear: both;
+ background: 0 0
+}
+
+a {
+ text-decoration: none
+}
+
+a:hover {
+ color: #777
+}
+
+a cite {
+ font-style: normal;
+ *cursor: pointer
+}
+
+.layui-border-box, .layui-border-box * {
+ box-sizing: border-box
+}
+
+.layui-box, .layui-box * {
+ box-sizing: content-box
+}
+
+.layui-clear {
+ clear: both;
+ *zoom: 1
+}
+
+.layui-clear:after {
+ content: '\20';
+ clear: both;
+ *zoom: 1;
+ display: block;
+ height: 0
+}
+
+.layui-inline {
+ *display: inline;
+ *zoom: 1
+}
+
+.layui-edge {
+ display: inline-block;
+ width: 0;
+ border-width: 6px;
+ border-style: dashed;
+ border-color: transparent
+}
+
+.layui-edge-top {
+ top: -4px;
+ border-bottom-color: #999;
+ border-bottom-style: solid
+}
+
+.layui-edge-right {
+ border-left-color: #999;
+ border-left-style: solid
+}
+
+.layui-edge-bottom {
+ top: 2px;
+ border-top-color: #999;
+ border-top-style: solid
+}
+
+.layui-edge-left {
+ border-right-color: #999;
+ border-right-style: solid
+}
+
+.layui-disabled, .layui-disabled:hover {
+ color: #d2d2d2 !important;
+ cursor: not-allowed !important
+}
+
+.layui-circle {
+ border-radius: 100%
+}
+
+.layui-show {
+ display: block !important
+}
+
+.layui-hide {
+ display: none !important
+}
+
+.layui-show-v {
+ visibility: visible !important
+}
+
+.layui-hide-v {
+ visibility: hidden !important
+}
+
+@font-face {
+ font-family: layui-icon;
+ src: url(../font/iconfont.eot?v=256);
+ src: url(../font/iconfont.eot?v=256#iefix) format('embedded-opentype'), url(../font/iconfont.woff2?v=256) format('woff2'), url(../font/iconfont.woff?v=256) format('woff'), url(../font/iconfont.ttf?v=256) format('truetype'), url(../font/iconfont.svg?v=256#layui-icon) format('svg')
+}
+
+.layui-icon {
+ font-family: layui-icon !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+.layui-icon-reply-fill:before {
+ content: "\e611"
+}
+
+.layui-icon-set-fill:before {
+ content: "\e614"
+}
+
+.layui-icon-menu-fill:before {
+ content: "\e60f"
+}
+
+.layui-icon-search:before {
+ content: "\e615"
+}
+
+.layui-icon-share:before {
+ content: "\e641"
+}
+
+.layui-icon-set-sm:before {
+ content: "\e620"
+}
+
+.layui-icon-engine:before {
+ content: "\e628"
+}
+
+.layui-icon-close:before {
+ content: "\1006"
+}
+
+.layui-icon-close-fill:before {
+ content: "\1007"
+}
+
+.layui-icon-chart-screen:before {
+ content: "\e629"
+}
+
+.layui-icon-star:before {
+ content: "\e600"
+}
+
+.layui-icon-circle-dot:before {
+ content: "\e617"
+}
+
+.layui-icon-chat:before {
+ content: "\e606"
+}
+
+.layui-icon-release:before {
+ content: "\e609"
+}
+
+.layui-icon-list:before {
+ content: "\e60a"
+}
+
+.layui-icon-chart:before {
+ content: "\e62c"
+}
+
+.layui-icon-ok-circle:before {
+ content: "\1005"
+}
+
+.layui-icon-layim-theme:before {
+ content: "\e61b"
+}
+
+.layui-icon-table:before {
+ content: "\e62d"
+}
+
+.layui-icon-right:before {
+ content: "\e602"
+}
+
+.layui-icon-left:before {
+ content: "\e603"
+}
+
+.layui-icon-cart-simple:before {
+ content: "\e698"
+}
+
+.layui-icon-face-cry:before {
+ content: "\e69c"
+}
+
+.layui-icon-face-smile:before {
+ content: "\e6af"
+}
+
+.layui-icon-survey:before {
+ content: "\e6b2"
+}
+
+.layui-icon-tree:before {
+ content: "\e62e"
+}
+
+.layui-icon-ie:before {
+ content: "\e7bb"
+}
+
+.layui-icon-upload-circle:before {
+ content: "\e62f"
+}
+
+.layui-icon-add-circle:before {
+ content: "\e61f"
+}
+
+.layui-icon-download-circle:before {
+ content: "\e601"
+}
+
+.layui-icon-templeate-1:before {
+ content: "\e630"
+}
+
+.layui-icon-util:before {
+ content: "\e631"
+}
+
+.layui-icon-face-surprised:before {
+ content: "\e664"
+}
+
+.layui-icon-edit:before {
+ content: "\e642"
+}
+
+.layui-icon-speaker:before {
+ content: "\e645"
+}
+
+.layui-icon-down:before {
+ content: "\e61a"
+}
+
+.layui-icon-file:before {
+ content: "\e621"
+}
+
+.layui-icon-layouts:before {
+ content: "\e632"
+}
+
+.layui-icon-rate-half:before {
+ content: "\e6c9"
+}
+
+.layui-icon-add-circle-fine:before {
+ content: "\e608"
+}
+
+.layui-icon-prev-circle:before {
+ content: "\e633"
+}
+
+.layui-icon-read:before {
+ content: "\e705"
+}
+
+.layui-icon-404:before {
+ content: "\e61c"
+}
+
+.layui-icon-carousel:before {
+ content: "\e634"
+}
+
+.layui-icon-help:before {
+ content: "\e607"
+}
+
+.layui-icon-code-circle:before {
+ content: "\e635"
+}
+
+.layui-icon-windows:before {
+ content: "\e67f"
+}
+
+.layui-icon-water:before {
+ content: "\e636"
+}
+
+.layui-icon-username:before {
+ content: "\e66f"
+}
+
+.layui-icon-find-fill:before {
+ content: "\e670"
+}
+
+.layui-icon-about:before {
+ content: "\e60b"
+}
+
+.layui-icon-location:before {
+ content: "\e715"
+}
+
+.layui-icon-up:before {
+ content: "\e619"
+}
+
+.layui-icon-pause:before {
+ content: "\e651"
+}
+
+.layui-icon-date:before {
+ content: "\e637"
+}
+
+.layui-icon-layim-uploadfile:before {
+ content: "\e61d"
+}
+
+.layui-icon-delete:before {
+ content: "\e640"
+}
+
+.layui-icon-play:before {
+ content: "\e652"
+}
+
+.layui-icon-top:before {
+ content: "\e604"
+}
+
+.layui-icon-firefox:before {
+ content: "\e686"
+}
+
+.layui-icon-friends:before {
+ content: "\e612"
+}
+
+.layui-icon-refresh-3:before {
+ content: "\e9aa"
+}
+
+.layui-icon-ok:before {
+ content: "\e605"
+}
+
+.layui-icon-layer:before {
+ content: "\e638"
+}
+
+.layui-icon-face-smile-fine:before {
+ content: "\e60c"
+}
+
+.layui-icon-dollar:before {
+ content: "\e659"
+}
+
+.layui-icon-group:before {
+ content: "\e613"
+}
+
+.layui-icon-layim-download:before {
+ content: "\e61e"
+}
+
+.layui-icon-picture-fine:before {
+ content: "\e60d"
+}
+
+.layui-icon-link:before {
+ content: "\e64c"
+}
+
+.layui-icon-diamond:before {
+ content: "\e735"
+}
+
+.layui-icon-log:before {
+ content: "\e60e"
+}
+
+.layui-icon-key:before {
+ content: "\e683"
+}
+
+.layui-icon-rate-solid:before {
+ content: "\e67a"
+}
+
+.layui-icon-fonts-del:before {
+ content: "\e64f"
+}
+
+.layui-icon-unlink:before {
+ content: "\e64d"
+}
+
+.layui-icon-fonts-clear:before {
+ content: "\e639"
+}
+
+.layui-icon-triangle-r:before {
+ content: "\e623"
+}
+
+.layui-icon-circle:before {
+ content: "\e63f"
+}
+
+.layui-icon-radio:before {
+ content: "\e643"
+}
+
+.layui-icon-align-center:before {
+ content: "\e647"
+}
+
+.layui-icon-align-right:before {
+ content: "\e648"
+}
+
+.layui-icon-align-left:before {
+ content: "\e649"
+}
+
+.layui-icon-loading-1:before {
+ content: "\e63e"
+}
+
+.layui-icon-return:before {
+ content: "\e65c"
+}
+
+.layui-icon-fonts-strong:before {
+ content: "\e62b"
+}
+
+.layui-icon-upload:before {
+ content: "\e67c"
+}
+
+.layui-icon-dialogue:before {
+ content: "\e63a"
+}
+
+.layui-icon-video:before {
+ content: "\e6ed"
+}
+
+.layui-icon-headset:before {
+ content: "\e6fc"
+}
+
+.layui-icon-cellphone-fine:before {
+ content: "\e63b"
+}
+
+.layui-icon-add-1:before {
+ content: "\e654"
+}
+
+.layui-icon-face-smile-b:before {
+ content: "\e650"
+}
+
+.layui-icon-fonts-html:before {
+ content: "\e64b"
+}
+
+.layui-icon-screen-full:before {
+ content: "\e622"
+}
+
+.layui-icon-form:before {
+ content: "\e63c"
+}
+
+.layui-icon-cart:before {
+ content: "\e657"
+}
+
+.layui-icon-camera-fill:before {
+ content: "\e65d"
+}
+
+.layui-icon-tabs:before {
+ content: "\e62a"
+}
+
+.layui-icon-heart-fill:before {
+ content: "\e68f"
+}
+
+.layui-icon-fonts-code:before {
+ content: "\e64e"
+}
+
+.layui-icon-ios:before {
+ content: "\e680"
+}
+
+.layui-icon-at:before {
+ content: "\e687"
+}
+
+.layui-icon-fire:before {
+ content: "\e756"
+}
+
+.layui-icon-set:before {
+ content: "\e716"
+}
+
+.layui-icon-fonts-u:before {
+ content: "\e646"
+}
+
+.layui-icon-triangle-d:before {
+ content: "\e625"
+}
+
+.layui-icon-tips:before {
+ content: "\e702"
+}
+
+.layui-icon-picture:before {
+ content: "\e64a"
+}
+
+.layui-icon-more-vertical:before {
+ content: "\e671"
+}
+
+.layui-icon-bluetooth:before {
+ content: "\e689"
+}
+
+.layui-icon-flag:before {
+ content: "\e66c"
+}
+
+.layui-icon-loading:before {
+ content: "\e63d"
+}
+
+.layui-icon-fonts-i:before {
+ content: "\e644"
+}
+
+.layui-icon-refresh-1:before {
+ content: "\e666"
+}
+
+.layui-icon-rmb:before {
+ content: "\e65e"
+}
+
+.layui-icon-addition:before {
+ content: "\e624"
+}
+
+.layui-icon-home:before {
+ content: "\e68e"
+}
+
+.layui-icon-time:before {
+ content: "\e68d"
+}
+
+.layui-icon-user:before {
+ content: "\e770"
+}
+
+.layui-icon-notice:before {
+ content: "\e667"
+}
+
+.layui-icon-chrome:before {
+ content: "\e68a"
+}
+
+.layui-icon-edge:before {
+ content: "\e68b"
+}
+
+.layui-icon-login-weibo:before {
+ content: "\e675"
+}
+
+.layui-icon-voice:before {
+ content: "\e688"
+}
+
+.layui-icon-upload-drag:before {
+ content: "\e681"
+}
+
+.layui-icon-login-qq:before {
+ content: "\e676"
+}
+
+.layui-icon-snowflake:before {
+ content: "\e6b1"
+}
+
+.layui-icon-heart:before {
+ content: "\e68c"
+}
+
+.layui-icon-logout:before {
+ content: "\e682"
+}
+
+.layui-icon-file-b:before {
+ content: "\e655"
+}
+
+.layui-icon-template:before {
+ content: "\e663"
+}
+
+.layui-icon-transfer:before {
+ content: "\e691"
+}
+
+.layui-icon-auz:before {
+ content: "\e672"
+}
+
+.layui-icon-console:before {
+ content: "\e665"
+}
+
+.layui-icon-app:before {
+ content: "\e653"
+}
+
+.layui-icon-prev:before {
+ content: "\e65a"
+}
+
+.layui-icon-website:before {
+ content: "\e7ae"
+}
+
+.layui-icon-next:before {
+ content: "\e65b"
+}
+
+.layui-icon-component:before {
+ content: "\e857"
+}
+
+.layui-icon-android:before {
+ content: "\e684"
+}
+
+.layui-icon-more:before {
+ content: "\e65f"
+}
+
+.layui-icon-login-wechat:before {
+ content: "\e677"
+}
+
+.layui-icon-shrink-right:before {
+ content: "\e668"
+}
+
+.layui-icon-spread-left:before {
+ content: "\e66b"
+}
+
+.layui-icon-camera:before {
+ content: "\e660"
+}
+
+.layui-icon-note:before {
+ content: "\e66e"
+}
+
+.layui-icon-refresh:before {
+ content: "\e669"
+}
+
+.layui-icon-female:before {
+ content: "\e661"
+}
+
+.layui-icon-male:before {
+ content: "\e662"
+}
+
+.layui-icon-screen-restore:before {
+ content: "\e758"
+}
+
+.layui-icon-password:before {
+ content: "\e673"
+}
+
+.layui-icon-senior:before {
+ content: "\e674"
+}
+
+.layui-icon-theme:before {
+ content: "\e66a"
+}
+
+.layui-icon-tread:before {
+ content: "\e6c5"
+}
+
+.layui-icon-praise:before {
+ content: "\e6c6"
+}
+
+.layui-icon-star-fill:before {
+ content: "\e658"
+}
+
+.layui-icon-rate:before {
+ content: "\e67b"
+}
+
+.layui-icon-template-1:before {
+ content: "\e656"
+}
+
+.layui-icon-vercode:before {
+ content: "\e679"
+}
+
+.layui-icon-service:before {
+ content: "\e626"
+}
+
+.layui-icon-cellphone:before {
+ content: "\e678"
+}
+
+.layui-icon-print:before {
+ content: "\e66d"
+}
+
+.layui-icon-cols:before {
+ content: "\e610"
+}
+
+.layui-icon-wifi:before {
+ content: "\e7e0"
+}
+
+.layui-icon-export:before {
+ content: "\e67d"
+}
+
+.layui-icon-rss:before {
+ content: "\e808"
+}
+
+.layui-icon-slider:before {
+ content: "\e714"
+}
+
+.layui-icon-email:before {
+ content: "\e618"
+}
+
+.layui-icon-subtraction:before {
+ content: "\e67e"
+}
+
+.layui-icon-mike:before {
+ content: "\e6dc"
+}
+
+.layui-icon-light:before {
+ content: "\e748"
+}
+
+.layui-icon-gift:before {
+ content: "\e627"
+}
+
+.layui-icon-mute:before {
+ content: "\e685"
+}
+
+.layui-icon-reduce-circle:before {
+ content: "\e616"
+}
+
+.layui-icon-music:before {
+ content: "\e690"
+}
+
+.layui-main {
+ width: 1140px;
+ margin: 0 auto
+}
+
+.layui-header {
+ z-index: 1000;
+ height: 60px
+}
+
+.layui-header a:hover {
+ transition: all .5s;
+ -webkit-transition: all .5s
+}
+
+.layui-side {
+ position: fixed;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ z-index: 999;
+ width: 200px
+}
+
+.layui-side-scroll {
+ position: relative;
+ width: 220px;
+ height: 100%
+}
+
+.layui-body {
+ position: relative;
+ left: 200px;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ z-index: 900;
+ width: auto;
+ box-sizing: border-box
+}
+
+.layui-layout-admin .layui-header {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ background-color: #23262E
+}
+
+.layui-layout-admin .layui-side {
+ top: 60px;
+ width: 200px;
+ overflow-x: hidden
+}
+
+.layui-layout-admin .layui-body {
+ position: absolute;
+ top: 60px;
+ padding-bottom: 10px
+}
+
+.layui-layout-admin .layui-main {
+ width: auto;
+ margin: 0 15px
+}
+
+.layui-layout-admin .layui-footer {
+ position: fixed;
+ left: 200px;
+ right: 0;
+ bottom: 0;
+ z-index: 990;
+ height: 44px;
+ line-height: 44px;
+ padding: 0 15px;
+ box-shadow: -1px 0 4px rgb(0 0 0 / 12%);
+ background-color: #FAFAFA
+}
+
+.layui-layout-admin .layui-logo {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 200px;
+ height: 100%;
+ line-height: 60px;
+ text-align: center;
+ color: #009688;
+ font-size: 16px
+}
+
+.layui-layout-admin .layui-header .layui-nav {
+ background: 0 0
+}
+
+.layui-layout-left {
+ position: absolute !important;
+ left: 200px;
+ top: 0
+}
+
+.layui-layout-right {
+ position: absolute !important;
+ right: 0;
+ top: 0
+}
+
+.layui-container {
+ position: relative;
+ margin: 0 auto;
+ padding: 0 15px;
+ box-sizing: border-box
+}
+
+.layui-fluid {
+ position: relative;
+ margin: 0 auto;
+ padding: 0 15px
+}
+
+.layui-row:after, .layui-row:before {
+ content: "";
+ display: block;
+ clear: both
+}
+
+.layui-col-lg1, .layui-col-lg10, .layui-col-lg11, .layui-col-lg12, .layui-col-lg2, .layui-col-lg3, .layui-col-lg4, .layui-col-lg5, .layui-col-lg6, .layui-col-lg7, .layui-col-lg8, .layui-col-lg9, .layui-col-md1, .layui-col-md10, .layui-col-md11, .layui-col-md12, .layui-col-md2, .layui-col-md3, .layui-col-md4, .layui-col-md5, .layui-col-md6, .layui-col-md7, .layui-col-md8, .layui-col-md9, .layui-col-sm1, .layui-col-sm10, .layui-col-sm11, .layui-col-sm12, .layui-col-sm2, .layui-col-sm3, .layui-col-sm4, .layui-col-sm5, .layui-col-sm6, .layui-col-sm7, .layui-col-sm8, .layui-col-sm9, .layui-col-xs1, .layui-col-xs10, .layui-col-xs11, .layui-col-xs12, .layui-col-xs2, .layui-col-xs3, .layui-col-xs4, .layui-col-xs5, .layui-col-xs6, .layui-col-xs7, .layui-col-xs8, .layui-col-xs9 {
+ position: relative;
+ display: block;
+ box-sizing: border-box
+}
+
+.layui-col-xs1, .layui-col-xs10, .layui-col-xs11, .layui-col-xs12, .layui-col-xs2, .layui-col-xs3, .layui-col-xs4, .layui-col-xs5, .layui-col-xs6, .layui-col-xs7, .layui-col-xs8, .layui-col-xs9 {
+ float: left
+}
+
+.layui-col-xs1 {
+ width: 8.33333333%
+}
+
+.layui-col-xs2 {
+ width: 16.66666667%
+}
+
+.layui-col-xs3 {
+ width: 25%
+}
+
+.layui-col-xs4 {
+ width: 33.33333333%
+}
+
+.layui-col-xs5 {
+ width: 41.66666667%
+}
+
+.layui-col-xs6 {
+ width: 50%
+}
+
+.layui-col-xs7 {
+ width: 58.33333333%
+}
+
+.layui-col-xs8 {
+ width: 66.66666667%
+}
+
+.layui-col-xs9 {
+ width: 75%
+}
+
+.layui-col-xs10 {
+ width: 83.33333333%
+}
+
+.layui-col-xs11 {
+ width: 91.66666667%
+}
+
+.layui-col-xs12 {
+ width: 100%
+}
+
+.layui-col-xs-offset1 {
+ margin-left: 8.33333333%
+}
+
+.layui-col-xs-offset2 {
+ margin-left: 16.66666667%
+}
+
+.layui-col-xs-offset3 {
+ margin-left: 25%
+}
+
+.layui-col-xs-offset4 {
+ margin-left: 33.33333333%
+}
+
+.layui-col-xs-offset5 {
+ margin-left: 41.66666667%
+}
+
+.layui-col-xs-offset6 {
+ margin-left: 50%
+}
+
+.layui-col-xs-offset7 {
+ margin-left: 58.33333333%
+}
+
+.layui-col-xs-offset8 {
+ margin-left: 66.66666667%
+}
+
+.layui-col-xs-offset9 {
+ margin-left: 75%
+}
+
+.layui-col-xs-offset10 {
+ margin-left: 83.33333333%
+}
+
+.layui-col-xs-offset11 {
+ margin-left: 91.66666667%
+}
+
+.layui-col-xs-offset12 {
+ margin-left: 100%
+}
+
+@media screen and (max-width: 768px) {
+ .layui-hide-xs {
+ display: none !important
+ }
+
+ .layui-show-xs-block {
+ display: block !important
+ }
+
+ .layui-show-xs-inline {
+ display: inline !important
+ }
+
+ .layui-show-xs-inline-block {
+ display: inline-block !important
+ }
+}
+
+@media screen and (min-width: 768px) {
+ .layui-container {
+ width: 750px
+ }
+
+ .layui-hide-sm {
+ display: none !important
+ }
+
+ .layui-show-sm-block {
+ display: block !important
+ }
+
+ .layui-show-sm-inline {
+ display: inline !important
+ }
+
+ .layui-show-sm-inline-block {
+ display: inline-block !important
+ }
+
+ .layui-col-sm1, .layui-col-sm10, .layui-col-sm11, .layui-col-sm12, .layui-col-sm2, .layui-col-sm3, .layui-col-sm4, .layui-col-sm5, .layui-col-sm6, .layui-col-sm7, .layui-col-sm8, .layui-col-sm9 {
+ float: left
+ }
+
+ .layui-col-sm1 {
+ width: 8.33333333%
+ }
+
+ .layui-col-sm2 {
+ width: 16.66666667%
+ }
+
+ .layui-col-sm3 {
+ width: 25%
+ }
+
+ .layui-col-sm4 {
+ width: 33.33333333%
+ }
+
+ .layui-col-sm5 {
+ width: 41.66666667%
+ }
+
+ .layui-col-sm6 {
+ width: 50%
+ }
+
+ .layui-col-sm7 {
+ width: 58.33333333%
+ }
+
+ .layui-col-sm8 {
+ width: 66.66666667%
+ }
+
+ .layui-col-sm9 {
+ width: 75%
+ }
+
+ .layui-col-sm10 {
+ width: 83.33333333%
+ }
+
+ .layui-col-sm11 {
+ width: 91.66666667%
+ }
+
+ .layui-col-sm12 {
+ width: 100%
+ }
+
+ .layui-col-sm-offset1 {
+ margin-left: 8.33333333%
+ }
+
+ .layui-col-sm-offset2 {
+ margin-left: 16.66666667%
+ }
+
+ .layui-col-sm-offset3 {
+ margin-left: 25%
+ }
+
+ .layui-col-sm-offset4 {
+ margin-left: 33.33333333%
+ }
+
+ .layui-col-sm-offset5 {
+ margin-left: 41.66666667%
+ }
+
+ .layui-col-sm-offset6 {
+ margin-left: 50%
+ }
+
+ .layui-col-sm-offset7 {
+ margin-left: 58.33333333%
+ }
+
+ .layui-col-sm-offset8 {
+ margin-left: 66.66666667%
+ }
+
+ .layui-col-sm-offset9 {
+ margin-left: 75%
+ }
+
+ .layui-col-sm-offset10 {
+ margin-left: 83.33333333%
+ }
+
+ .layui-col-sm-offset11 {
+ margin-left: 91.66666667%
+ }
+
+ .layui-col-sm-offset12 {
+ margin-left: 100%
+ }
+}
+
+@media screen and (min-width: 992px) {
+ .layui-container {
+ width: 970px
+ }
+
+ .layui-hide-md {
+ display: none !important
+ }
+
+ .layui-show-md-block {
+ display: block !important
+ }
+
+ .layui-show-md-inline {
+ display: inline !important
+ }
+
+ .layui-show-md-inline-block {
+ display: inline-block !important
+ }
+
+ .layui-col-md1, .layui-col-md10, .layui-col-md11, .layui-col-md12, .layui-col-md2, .layui-col-md3, .layui-col-md4, .layui-col-md5, .layui-col-md6, .layui-col-md7, .layui-col-md8, .layui-col-md9 {
+ float: left
+ }
+
+ .layui-col-md1 {
+ width: 8.33333333%
+ }
+
+ .layui-col-md2 {
+ width: 16.66666667%
+ }
+
+ .layui-col-md3 {
+ width: 25%
+ }
+
+ .layui-col-md4 {
+ width: 33.33333333%
+ }
+
+ .layui-col-md5 {
+ width: 41.66666667%
+ }
+
+ .layui-col-md6 {
+ width: 50%
+ }
+
+ .layui-col-md7 {
+ width: 58.33333333%
+ }
+
+ .layui-col-md8 {
+ width: 66.66666667%
+ }
+
+ .layui-col-md9 {
+ width: 75%
+ }
+
+ .layui-col-md10 {
+ width: 83.33333333%
+ }
+
+ .layui-col-md11 {
+ width: 91.66666667%
+ }
+
+ .layui-col-md12 {
+ width: 100%
+ }
+
+ .layui-col-md-offset1 {
+ margin-left: 8.33333333%
+ }
+
+ .layui-col-md-offset2 {
+ margin-left: 16.66666667%
+ }
+
+ .layui-col-md-offset3 {
+ margin-left: 25%
+ }
+
+ .layui-col-md-offset4 {
+ margin-left: 33.33333333%
+ }
+
+ .layui-col-md-offset5 {
+ margin-left: 41.66666667%
+ }
+
+ .layui-col-md-offset6 {
+ margin-left: 50%
+ }
+
+ .layui-col-md-offset7 {
+ margin-left: 58.33333333%
+ }
+
+ .layui-col-md-offset8 {
+ margin-left: 66.66666667%
+ }
+
+ .layui-col-md-offset9 {
+ margin-left: 75%
+ }
+
+ .layui-col-md-offset10 {
+ margin-left: 83.33333333%
+ }
+
+ .layui-col-md-offset11 {
+ margin-left: 91.66666667%
+ }
+
+ .layui-col-md-offset12 {
+ margin-left: 100%
+ }
+}
+
+@media screen and (min-width: 1200px) {
+ .layui-container {
+ width: 1170px
+ }
+
+ .layui-hide-lg {
+ display: none !important
+ }
+
+ .layui-show-lg-block {
+ display: block !important
+ }
+
+ .layui-show-lg-inline {
+ display: inline !important
+ }
+
+ .layui-show-lg-inline-block {
+ display: inline-block !important
+ }
+
+ .layui-col-lg1, .layui-col-lg10, .layui-col-lg11, .layui-col-lg12, .layui-col-lg2, .layui-col-lg3, .layui-col-lg4, .layui-col-lg5, .layui-col-lg6, .layui-col-lg7, .layui-col-lg8, .layui-col-lg9 {
+ float: left
+ }
+
+ .layui-col-lg1 {
+ width: 8.33333333%
+ }
+
+ .layui-col-lg2 {
+ width: 16.66666667%
+ }
+
+ .layui-col-lg3 {
+ width: 25%
+ }
+
+ .layui-col-lg4 {
+ width: 33.33333333%
+ }
+
+ .layui-col-lg5 {
+ width: 41.66666667%
+ }
+
+ .layui-col-lg6 {
+ width: 50%
+ }
+
+ .layui-col-lg7 {
+ width: 58.33333333%
+ }
+
+ .layui-col-lg8 {
+ width: 66.66666667%
+ }
+
+ .layui-col-lg9 {
+ width: 75%
+ }
+
+ .layui-col-lg10 {
+ width: 83.33333333%
+ }
+
+ .layui-col-lg11 {
+ width: 91.66666667%
+ }
+
+ .layui-col-lg12 {
+ width: 100%
+ }
+
+ .layui-col-lg-offset1 {
+ margin-left: 8.33333333%
+ }
+
+ .layui-col-lg-offset2 {
+ margin-left: 16.66666667%
+ }
+
+ .layui-col-lg-offset3 {
+ margin-left: 25%
+ }
+
+ .layui-col-lg-offset4 {
+ margin-left: 33.33333333%
+ }
+
+ .layui-col-lg-offset5 {
+ margin-left: 41.66666667%
+ }
+
+ .layui-col-lg-offset6 {
+ margin-left: 50%
+ }
+
+ .layui-col-lg-offset7 {
+ margin-left: 58.33333333%
+ }
+
+ .layui-col-lg-offset8 {
+ margin-left: 66.66666667%
+ }
+
+ .layui-col-lg-offset9 {
+ margin-left: 75%
+ }
+
+ .layui-col-lg-offset10 {
+ margin-left: 83.33333333%
+ }
+
+ .layui-col-lg-offset11 {
+ margin-left: 91.66666667%
+ }
+
+ .layui-col-lg-offset12 {
+ margin-left: 100%
+ }
+}
+
+.layui-col-space1 {
+ margin: -.5px
+}
+
+.layui-col-space1 > * {
+ padding: .5px
+}
+
+.layui-col-space2 {
+ margin: -1px
+}
+
+.layui-col-space2 > * {
+ padding: 1px
+}
+
+.layui-col-space4 {
+ margin: -2px
+}
+
+.layui-col-space4 > * {
+ padding: 2px
+}
+
+.layui-col-space5 {
+ margin: -2.5px
+}
+
+.layui-col-space5 > * {
+ padding: 2.5px
+}
+
+.layui-col-space6 {
+ margin: -3px
+}
+
+.layui-col-space6 > * {
+ padding: 3px
+}
+
+.layui-col-space8 {
+ margin: -4px
+}
+
+.layui-col-space8 > * {
+ padding: 4px
+}
+
+.layui-col-space10 {
+ margin: -5px
+}
+
+.layui-col-space10 > * {
+ padding: 5px
+}
+
+.layui-col-space12 {
+ margin: -6px
+}
+
+.layui-col-space12 > * {
+ padding: 6px
+}
+
+.layui-col-space14 {
+ margin: -7px
+}
+
+.layui-col-space14 > * {
+ padding: 7px
+}
+
+.layui-col-space15 {
+ margin: -7.5px
+}
+
+.layui-col-space15 > * {
+ padding: 7.5px
+}
+
+.layui-col-space16 {
+ margin: -8px
+}
+
+.layui-col-space16 > * {
+ padding: 8px
+}
+
+.layui-col-space18 {
+ margin: -9px
+}
+
+.layui-col-space18 > * {
+ padding: 9px
+}
+
+.layui-col-space20 {
+ margin: -10px
+}
+
+.layui-col-space20 > * {
+ padding: 10px
+}
+
+.layui-col-space22 {
+ margin: -11px
+}
+
+.layui-col-space22 > * {
+ padding: 11px
+}
+
+.layui-col-space24 {
+ margin: -12px
+}
+
+.layui-col-space24 > * {
+ padding: 12px
+}
+
+.layui-col-space25 {
+ margin: -12.5px
+}
+
+.layui-col-space25 > * {
+ padding: 12.5px
+}
+
+.layui-col-space26 {
+ margin: -13px
+}
+
+.layui-col-space26 > * {
+ padding: 13px
+}
+
+.layui-col-space28 {
+ margin: -14px
+}
+
+.layui-col-space28 > * {
+ padding: 14px
+}
+
+.layui-col-space30 {
+ margin: -15px
+}
+
+.layui-col-space30 > * {
+ padding: 15px
+}
+
+.layui-btn, .layui-input, .layui-select, .layui-textarea, .layui-upload-button {
+ outline: 0;
+ -webkit-appearance: none;
+ transition: all .3s;
+ -webkit-transition: all .3s;
+ box-sizing: border-box
+}
+
+.layui-elem-quote {
+ margin-bottom: 10px;
+ padding: 15px;
+ line-height: 1.6;
+ border-left: 5px solid #5FB878;
+ border-radius: 0 2px 2px 0;
+ background-color: #FAFAFA
+}
+
+.layui-quote-nm {
+ border-style: solid;
+ border-width: 1px 1px 1px 5px;
+ background: 0 0
+}
+
+.layui-elem-field {
+ margin-bottom: 10px;
+ padding: 0;
+ border-width: 1px;
+ border-style: solid
+}
+
+.layui-elem-field legend {
+ margin-left: 20px;
+ padding: 0 10px;
+ font-size: 20px;
+ font-weight: 300
+}
+
+.layui-field-title {
+ margin: 10px 0 20px;
+ border-width: 1px 0 0
+}
+
+.layui-field-box {
+ padding: 15px
+}
+
+.layui-field-title .layui-field-box {
+ padding: 10px 0
+}
+
+.layui-progress {
+ position: relative;
+ height: 6px;
+ border-radius: 20px;
+ background-color: #eee
+}
+
+.layui-progress-bar {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 0;
+ max-width: 100%;
+ height: 6px;
+ border-radius: 20px;
+ text-align: right;
+ background-color: #5FB878;
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-progress-big, .layui-progress-big .layui-progress-bar {
+ height: 18px;
+ line-height: 18px
+}
+
+.layui-progress-text {
+ position: relative;
+ top: -20px;
+ line-height: 18px;
+ font-size: 12px;
+ color: #666
+}
+
+.layui-progress-big .layui-progress-text {
+ position: static;
+ padding: 0 10px;
+ color: #fff
+}
+
+.layui-collapse {
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px
+}
+
+.layui-colla-content, .layui-colla-item {
+ border-top-width: 1px;
+ border-top-style: solid
+}
+
+.layui-colla-item:first-child {
+ border-top: none
+}
+
+.layui-colla-title {
+ position: relative;
+ height: 42px;
+ line-height: 42px;
+ padding: 0 15px 0 35px;
+ color: #333;
+ background-color: #FAFAFA;
+ cursor: pointer;
+ font-size: 14px;
+ overflow: hidden
+}
+
+.layui-colla-content {
+ display: none;
+ padding: 10px 15px;
+ line-height: 1.6;
+ color: #666
+}
+
+.layui-colla-icon {
+ position: absolute;
+ left: 15px;
+ top: 0;
+ font-size: 14px
+}
+
+.layui-card {
+ margin-bottom: 15px;
+ border-radius: 2px;
+ background-color: #fff;
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05)
+}
+
+.layui-card:last-child {
+ margin-bottom: 0
+}
+
+.layui-card-header {
+ position: relative;
+ height: 42px;
+ line-height: 42px;
+ padding: 0 15px;
+ border-bottom: 1px solid #f6f6f6;
+ color: #333;
+ border-radius: 2px 2px 0 0;
+ font-size: 14px
+}
+
+.layui-card-body {
+ position: relative;
+ padding: 10px 15px;
+ line-height: 24px
+}
+
+.layui-card-body[pad15] {
+ padding: 15px
+}
+
+.layui-card-body[pad20] {
+ padding: 20px
+}
+
+.layui-card-body .layui-table {
+ margin: 5px 0
+}
+
+.layui-card .layui-tab {
+ margin: 0
+}
+
+.layui-panel {
+ position: relative;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ box-shadow: 1px 1px 4px rgb(0 0 0 / 8%);
+ background-color: #fff;
+ color: #666
+}
+
+.layui-bg-black, .layui-bg-blue, .layui-bg-cyan, .layui-bg-green, .layui-bg-orange, .layui-bg-red {
+ color: #fff !important
+}
+
+.layui-panel-window {
+ position: relative;
+ padding: 15px;
+ border-radius: 0;
+ border-top: 5px solid #eee;
+ background-color: #fff
+}
+
+.layui-border, .layui-border-black, .layui-border-blue, .layui-border-cyan, .layui-border-green, .layui-border-orange, .layui-border-red {
+ border-width: 1px;
+ border-style: solid
+}
+
+.layui-auxiliar-moving {
+ position: fixed;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 100%;
+ height: 100%;
+ background: 0 0;
+ z-index: 9999999999
+}
+
+.layui-form-label, .layui-form-mid, .layui-form-select, .layui-input-block, .layui-input-inline, .layui-textarea {
+ position: relative
+}
+
+.layui-bg-red {
+ background-color: #FF5722 !important
+}
+
+.layui-bg-orange {
+ background-color: #FFB800 !important
+}
+
+.layui-bg-green {
+ background-color: #009688 !important
+}
+
+.layui-bg-cyan {
+ background-color: #2F4056 !important
+}
+
+.layui-bg-blue {
+ background-color: #1E9FFF !important
+}
+
+.layui-bg-black {
+ background-color: #393D49 !important
+}
+
+.layui-bg-gray {
+ background-color: #FAFAFA !important;
+ color: #666 !important
+}
+
+.layui-badge-rim, .layui-border, .layui-colla-content, .layui-colla-item, .layui-collapse, .layui-elem-field, .layui-form-pane .layui-form-item[pane], .layui-form-pane .layui-form-label, .layui-input, .layui-layedit, .layui-layedit-tool, .layui-panel, .layui-quote-nm, .layui-select, .layui-tab-bar, .layui-tab-card, .layui-tab-title, .layui-tab-title .layui-this:after, .layui-textarea {
+ border-color: #eee
+}
+
+.layui-border {
+ color: #666 !important
+}
+
+.layui-border-red {
+ border-color: #FF5722 !important;
+ color: #FF5722 !important
+}
+
+.layui-border-orange {
+ border-color: #FFB800 !important;
+ color: #FFB800 !important
+}
+
+.layui-border-green {
+ border-color: #009688 !important;
+ color: #009688 !important
+}
+
+.layui-border-cyan {
+ border-color: #2F4056 !important;
+ color: #2F4056 !important
+}
+
+.layui-border-blue {
+ border-color: #1E9FFF !important;
+ color: #1E9FFF !important
+}
+
+.layui-border-black {
+ border-color: #393D49 !important;
+ color: #393D49 !important
+}
+
+.layui-timeline-item:before {
+ background-color: #eee
+}
+
+.layui-text {
+ line-height: 1.6;
+ font-size: 14px;
+ color: #666
+}
+
+.layui-text h1, .layui-text h2, .layui-text h3 {
+ font-weight: 500;
+ color: #333
+}
+
+.layui-text h1 {
+ font-size: 30px
+}
+
+.layui-text h2 {
+ font-size: 24px
+}
+
+.layui-text h3 {
+ font-size: 18px
+}
+
+.layui-text a:not(.layui-btn) {
+ color: #01AAED
+}
+
+.layui-text a:not(.layui-btn):hover {
+ text-decoration: underline
+}
+
+.layui-text ul {
+ padding: 5px 0 5px 15px
+}
+
+.layui-text ul li {
+ margin-top: 5px;
+ list-style-type: disc
+}
+
+.layui-text em, .layui-word-aux {
+ color: #999 !important;
+ padding-left: 5px !important;
+ padding-right: 5px !important
+}
+
+.layui-font-12 {
+ font-size: 12px
+}
+
+.layui-font-14 {
+ font-size: 14px
+}
+
+.layui-font-16 {
+ font-size: 16px
+}
+
+.layui-font-18 {
+ font-size: 18px
+}
+
+.layui-font-20 {
+ font-size: 20px
+}
+
+.layui-font-red {
+ color: #FF5722 !important
+}
+
+.layui-font-orange {
+ color: #FFB800 !important
+}
+
+.layui-font-green {
+ color: #009688 !important
+}
+
+.layui-font-cyan {
+ color: #2F4056 !important
+}
+
+.layui-font-blue {
+ color: #01AAED !important
+}
+
+.layui-font-black {
+ color: #000 !important
+}
+
+.layui-font-gray {
+ color: #c2c2c2 !important
+}
+
+.layui-btn {
+ display: inline-block;
+ height: 38px;
+ line-height: 38px;
+ padding: 0 18px;
+ border: 1px solid transparent;
+ background-color: #009688;
+ color: #fff;
+ white-space: nowrap;
+ text-align: center;
+ font-size: 14px;
+ border-radius: 2px;
+ cursor: pointer
+}
+
+.layui-btn:hover {
+ opacity: .8;
+ filter: alpha(opacity=80);
+ color: #fff
+}
+
+.layui-btn:active {
+ opacity: 1;
+ filter: alpha(opacity=100)
+}
+
+.layui-btn + .layui-btn {
+ margin-left: 10px
+}
+
+.layui-btn-container {
+ font-size: 0
+}
+
+.layui-btn-container .layui-btn {
+ margin-right: 10px;
+ margin-bottom: 10px
+}
+
+.layui-btn-container .layui-btn + .layui-btn {
+ margin-left: 0
+}
+
+.layui-table .layui-btn-container .layui-btn {
+ margin-bottom: 9px
+}
+
+.layui-btn-radius {
+ border-radius: 100px
+}
+
+.layui-btn .layui-icon {
+ padding: 0 2px;
+ vertical-align: middle \9;
+ vertical-align: bottom
+}
+
+.layui-btn-primary {
+ border-color: #d2d2d2;
+ background: 0 0;
+ color: #666
+}
+
+.layui-btn-primary:hover {
+ border-color: #009688;
+ color: #333
+}
+
+.layui-btn-normal {
+ background-color: #1E9FFF
+}
+
+.layui-btn-warm {
+ background-color: #FFB800
+}
+
+.layui-btn-danger {
+ background-color: #FF5722
+}
+
+.layui-btn-checked {
+ background-color: #5FB878
+}
+
+.layui-btn-disabled, .layui-btn-disabled:active, .layui-btn-disabled:hover {
+ border-color: #eee;
+ background-color: #FBFBFB;
+ color: #d2d2d2;
+ cursor: not-allowed;
+ opacity: 1
+}
+
+.layui-btn-lg {
+ height: 44px;
+ line-height: 44px;
+ padding: 0 25px;
+ font-size: 16px
+}
+
+.layui-btn-sm {
+ height: 30px;
+ line-height: 30px;
+ padding: 0 10px;
+ font-size: 12px
+}
+
+.layui-btn-xs {
+ height: 22px;
+ line-height: 22px;
+ padding: 0 5px;
+ font-size: 12px
+}
+
+.layui-btn-xs i {
+ font-size: 12px !important
+}
+
+.layui-btn-group {
+ display: inline-block;
+ vertical-align: middle;
+ font-size: 0
+}
+
+.layui-btn-group .layui-btn {
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ border-left: 1px solid rgba(255, 255, 255, .5);
+ border-radius: 0
+}
+
+.layui-btn-group .layui-btn-primary {
+ border-left: none
+}
+
+.layui-btn-group .layui-btn-primary:hover {
+ border-color: #d2d2d2;
+ color: #009688
+}
+
+.layui-btn-group .layui-btn:first-child {
+ border-left: none;
+ border-radius: 2px 0 0 2px
+}
+
+.layui-btn-group .layui-btn-primary:first-child {
+ border-left: 1px solid #d2d2d2
+}
+
+.layui-btn-group .layui-btn:last-child {
+ border-radius: 0 2px 2px 0
+}
+
+.layui-btn-group .layui-btn + .layui-btn {
+ margin-left: 0
+}
+
+.layui-btn-group + .layui-btn-group {
+ margin-left: 10px
+}
+
+.layui-btn-fluid {
+ width: 100%
+}
+
+.layui-input, .layui-select, .layui-textarea {
+ height: 38px;
+ line-height: 1.3;
+ line-height: 38px \9;
+ border-width: 1px;
+ border-style: solid;
+ background-color: #fff;
+ border-radius: 2px
+}
+
+.layui-input::-webkit-input-placeholder, .layui-select::-webkit-input-placeholder, .layui-textarea::-webkit-input-placeholder {
+ line-height: 1.3
+}
+
+.layui-input, .layui-textarea {
+ display: block;
+ width: 100%;
+ padding-left: 10px
+}
+
+.layui-input:hover, .layui-textarea:hover {
+ border-color: #eee !important
+}
+
+.layui-input:focus, .layui-textarea:focus {
+ border-color: #d2d2d2 !important
+}
+
+.layui-textarea {
+ min-height: 100px;
+ height: auto;
+ line-height: 20px;
+ padding: 6px 10px;
+ resize: vertical
+}
+
+.layui-select {
+ padding: 0 10px
+}
+
+.layui-form input[type=checkbox], .layui-form input[type=radio], .layui-form select {
+ display: none
+}
+
+.layui-form [lay-ignore] {
+ display: initial
+}
+
+.layui-form-item {
+ margin-bottom: 15px;
+ clear: both;
+ *zoom: 1
+}
+
+.layui-form-item:after {
+ content: '\20';
+ clear: both;
+ *zoom: 1;
+ display: block;
+ height: 0
+}
+
+.layui-form-label {
+ float: left;
+ display: block;
+ padding: 9px 15px;
+ width: 80px;
+ font-weight: 400;
+ line-height: 20px;
+ text-align: right
+}
+
+.layui-form-label-col {
+ display: block;
+ float: none;
+ padding: 9px 0;
+ line-height: 20px;
+ text-align: left
+}
+
+.layui-form-item .layui-inline {
+ margin-bottom: 5px;
+ margin-right: 10px
+}
+
+.layui-input-block {
+ margin-left: 110px;
+ min-height: 36px
+}
+
+.layui-input-inline {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-form-item .layui-input-inline {
+ float: left;
+ width: 190px;
+ margin-right: 10px
+}
+
+.layui-form-text .layui-input-inline {
+ width: auto
+}
+
+.layui-form-mid {
+ float: left;
+ display: block;
+ padding: 9px 0 !important;
+ line-height: 20px;
+ margin-right: 10px
+}
+
+.layui-form-danger + .layui-form-select .layui-input, .layui-form-danger:focus {
+ border-color: #FF5722 !important
+}
+
+.layui-form-select .layui-input {
+ padding-right: 30px;
+ cursor: pointer
+}
+
+.layui-form-select .layui-edge {
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ margin-top: -3px;
+ cursor: pointer;
+ border-width: 6px;
+ border-top-color: #c2c2c2;
+ border-top-style: solid;
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-form-select dl {
+ display: none;
+ position: absolute;
+ left: 0;
+ top: 42px;
+ padding: 5px 0;
+ z-index: 899;
+ min-width: 100%;
+ border: 1px solid #d2d2d2;
+ max-height: 300px;
+ overflow-y: auto;
+ background-color: #fff;
+ border-radius: 2px;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, .12);
+ box-sizing: border-box
+}
+
+.layui-form-select dl dd, .layui-form-select dl dt {
+ padding: 0 10px;
+ line-height: 36px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis
+}
+
+.layui-form-select dl dt {
+ font-size: 12px;
+ color: #999
+}
+
+.layui-form-select dl dd {
+ cursor: pointer
+}
+
+.layui-form-select dl dd:hover {
+ background-color: #F6F6F6;
+ -webkit-transition: .5s all;
+ transition: .5s all
+}
+
+.layui-form-select .layui-select-group dd {
+ padding-left: 20px
+}
+
+.layui-form-select dl dd.layui-select-tips {
+ padding-left: 10px !important;
+ color: #999
+}
+
+.layui-form-select dl dd.layui-this {
+ background-color: #5FB878;
+ color: #fff
+}
+
+.layui-form-checkbox, .layui-form-select dl dd.layui-disabled {
+ background-color: #fff
+}
+
+.layui-form-selected dl {
+ display: block
+}
+
+.layui-form-checkbox, .layui-form-checkbox *, .layui-form-switch {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-form-selected .layui-edge {
+ margin-top: -9px;
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg);
+ margin-top: -3px \9
+}
+
+:root .layui-form-selected .layui-edge {
+ margin-top: -9px \0/ IE9
+}
+
+.layui-form-selectup dl {
+ top: auto;
+ bottom: 42px
+}
+
+.layui-select-none {
+ margin: 5px 0;
+ text-align: center;
+ color: #999
+}
+
+.layui-select-disabled .layui-disabled {
+ border-color: #eee !important
+}
+
+.layui-select-disabled .layui-edge {
+ border-top-color: #d2d2d2
+}
+
+.layui-form-checkbox {
+ position: relative;
+ height: 30px;
+ line-height: 30px;
+ margin-right: 10px;
+ padding-right: 30px;
+ cursor: pointer;
+ font-size: 0;
+ -webkit-transition: .1s linear;
+ transition: .1s linear;
+ box-sizing: border-box
+}
+
+.layui-form-checkbox span {
+ padding: 0 10px;
+ height: 100%;
+ font-size: 14px;
+ border-radius: 2px 0 0 2px;
+ background-color: #d2d2d2;
+ color: #fff;
+ overflow: hidden
+}
+
+.layui-form-checkbox:hover span {
+ background-color: #c2c2c2
+}
+
+.layui-form-checkbox i {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 30px;
+ height: 28px;
+ border: 1px solid #d2d2d2;
+ border-left: none;
+ border-radius: 0 2px 2px 0;
+ color: #fff;
+ font-size: 20px;
+ text-align: center
+}
+
+.layui-form-checkbox:hover i {
+ border-color: #c2c2c2;
+ color: #c2c2c2
+}
+
+.layui-form-checked, .layui-form-checked:hover {
+ border-color: #5FB878
+}
+
+.layui-form-checked span, .layui-form-checked:hover span {
+ background-color: #5FB878
+}
+
+.layui-form-checked i, .layui-form-checked:hover i {
+ color: #5FB878
+}
+
+.layui-form-item .layui-form-checkbox {
+ margin-top: 4px
+}
+
+.layui-form-checkbox[lay-skin=primary] {
+ height: auto !important;
+ line-height: normal !important;
+ min-width: 18px;
+ min-height: 18px;
+ border: none !important;
+ margin-right: 0;
+ padding-left: 28px;
+ padding-right: 0;
+ background: 0 0
+}
+
+.layui-form-checkbox[lay-skin=primary] span {
+ padding-left: 0;
+ padding-right: 15px;
+ line-height: 18px;
+ background: 0 0;
+ color: #666
+}
+
+.layui-form-checkbox[lay-skin=primary] i {
+ right: auto;
+ left: 0;
+ width: 16px;
+ height: 16px;
+ line-height: 16px;
+ border: 1px solid #d2d2d2;
+ font-size: 12px;
+ border-radius: 2px;
+ background-color: #fff;
+ -webkit-transition: .1s linear;
+ transition: .1s linear
+}
+
+.layui-form-checkbox[lay-skin=primary]:hover i {
+ border-color: #5FB878;
+ color: #fff
+}
+
+.layui-form-checked[lay-skin=primary] i {
+ border-color: #5FB878 !important;
+ background-color: #5FB878;
+ color: #fff
+}
+
+.layui-checkbox-disbaled[lay-skin=primary] span {
+ background: 0 0 !important;
+ color: #c2c2c2 !important
+}
+
+.layui-checkbox-disbaled[lay-skin=primary]:hover i {
+ border-color: #d2d2d2
+}
+
+.layui-form-item .layui-form-checkbox[lay-skin=primary] {
+ margin-top: 10px
+}
+
+.layui-form-switch {
+ position: relative;
+ height: 22px;
+ line-height: 22px;
+ min-width: 35px;
+ padding: 0 5px;
+ margin-top: 8px;
+ border: 1px solid #d2d2d2;
+ border-radius: 20px;
+ cursor: pointer;
+ background-color: #fff;
+ -webkit-transition: .1s linear;
+ transition: .1s linear
+}
+
+.layui-form-switch i {
+ position: absolute;
+ left: 5px;
+ top: 3px;
+ width: 16px;
+ height: 16px;
+ border-radius: 20px;
+ background-color: #d2d2d2;
+ -webkit-transition: .1s linear;
+ transition: .1s linear
+}
+
+.layui-form-switch em {
+ position: relative;
+ top: 0;
+ width: 25px;
+ margin-left: 21px;
+ padding: 0 !important;
+ text-align: center !important;
+ color: #999 !important;
+ font-style: normal !important;
+ font-size: 12px
+}
+
+.layui-form-onswitch {
+ border-color: #5FB878;
+ background-color: #5FB878
+}
+
+.layui-checkbox-disbaled, .layui-checkbox-disbaled i {
+ border-color: #eee !important
+}
+
+.layui-form-onswitch i {
+ left: 100%;
+ margin-left: -21px;
+ background-color: #fff
+}
+
+.layui-form-onswitch em {
+ margin-left: 5px;
+ margin-right: 21px;
+ color: #fff !important
+}
+
+.layui-checkbox-disbaled span {
+ background-color: #eee !important
+}
+
+.layui-checkbox-disbaled em {
+ color: #d2d2d2 !important
+}
+
+.layui-checkbox-disbaled:hover i {
+ color: #fff !important
+}
+
+[lay-radio] {
+ display: none
+}
+
+.layui-form-radio, .layui-form-radio * {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-form-radio {
+ line-height: 28px;
+ margin: 6px 10px 0 0;
+ padding-right: 10px;
+ cursor: pointer;
+ font-size: 0
+}
+
+.layui-form-radio * {
+ font-size: 14px
+}
+
+.layui-form-radio > i {
+ margin-right: 8px;
+ font-size: 22px;
+ color: #c2c2c2
+}
+
+.layui-form-radio:hover *, .layui-form-radioed, .layui-form-radioed > i {
+ color: #5FB878
+}
+
+.layui-radio-disbaled > i {
+ color: #eee !important
+}
+
+.layui-radio-disbaled * {
+ color: #c2c2c2 !important
+}
+
+.layui-form-pane .layui-form-label {
+ width: 110px;
+ padding: 8px 15px;
+ height: 38px;
+ line-height: 20px;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px 0 0 2px;
+ text-align: center;
+ background-color: #FBFBFB;
+ overflow: hidden;
+ box-sizing: border-box
+}
+
+.layui-form-pane .layui-input-inline {
+ margin-left: -1px
+}
+
+.layui-form-pane .layui-input-block {
+ margin-left: 110px;
+ left: -1px
+}
+
+.layui-form-pane .layui-input {
+ border-radius: 0 2px 2px 0
+}
+
+.layui-form-pane .layui-form-text .layui-form-label {
+ float: none;
+ width: 100%;
+ border-radius: 2px;
+ box-sizing: border-box;
+ text-align: left
+}
+
+.layui-form-pane .layui-form-text .layui-input-inline {
+ display: block;
+ margin: 0;
+ top: -1px;
+ clear: both
+}
+
+.layui-form-pane .layui-form-text .layui-input-block {
+ margin: 0;
+ left: 0;
+ top: -1px
+}
+
+.layui-form-pane .layui-form-text .layui-textarea {
+ min-height: 100px;
+ border-radius: 0 0 2px 2px
+}
+
+.layui-form-pane .layui-form-checkbox {
+ margin: 4px 0 4px 10px
+}
+
+.layui-form-pane .layui-form-radio, .layui-form-pane .layui-form-switch {
+ margin-top: 6px;
+ margin-left: 10px
+}
+
+.layui-form-pane .layui-form-item[pane] {
+ position: relative;
+ border-width: 1px;
+ border-style: solid
+}
+
+.layui-form-pane .layui-form-item[pane] .layui-form-label {
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 100%;
+ border-width: 0 1px 0 0
+}
+
+.layui-form-pane .layui-form-item[pane] .layui-input-inline {
+ margin-left: 110px
+}
+
+@media screen and (max-width: 450px) {
+ .layui-form-item .layui-form-label {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap
+ }
+
+ .layui-form-item .layui-inline {
+ display: block;
+ margin-right: 0;
+ margin-bottom: 20px;
+ clear: both
+ }
+
+ .layui-form-item .layui-inline:after {
+ content: '\20';
+ clear: both;
+ display: block;
+ height: 0
+ }
+
+ .layui-form-item .layui-input-inline {
+ display: block;
+ float: none;
+ left: -3px;
+ width: auto;
+ margin: 0 0 10px 112px
+ }
+
+ .layui-form-item .layui-input-inline + .layui-form-mid {
+ margin-left: 110px;
+ top: -5px;
+ padding: 0
+ }
+
+ .layui-form-item .layui-form-checkbox {
+ margin-right: 5px;
+ margin-bottom: 5px
+ }
+}
+
+.layui-layedit {
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px
+}
+
+.layui-layedit-tool {
+ padding: 3px 5px;
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ font-size: 0
+}
+
+.layedit-tool-fixed {
+ position: fixed;
+ top: 0;
+ border-top: 1px solid #eee
+}
+
+.layui-layedit-tool .layedit-tool-mid, .layui-layedit-tool .layui-icon {
+ display: inline-block;
+ vertical-align: middle;
+ text-align: center;
+ font-size: 14px
+}
+
+.layui-layedit-tool .layui-icon {
+ position: relative;
+ width: 32px;
+ height: 30px;
+ line-height: 30px;
+ margin: 3px 5px;
+ color: #777;
+ cursor: pointer;
+ border-radius: 2px
+}
+
+.layui-layedit-tool .layui-icon:hover {
+ color: #393D49
+}
+
+.layui-layedit-tool .layui-icon:active {
+ color: #000
+}
+
+.layui-layedit-tool .layedit-tool-active {
+ background-color: #eee;
+ color: #000
+}
+
+.layui-layedit-tool .layui-disabled, .layui-layedit-tool .layui-disabled:hover {
+ color: #d2d2d2;
+ cursor: not-allowed
+}
+
+.layui-layedit-tool .layedit-tool-mid {
+ width: 1px;
+ height: 18px;
+ margin: 0 10px;
+ background-color: #d2d2d2
+}
+
+.layedit-tool-html {
+ width: 50px !important;
+ font-size: 30px !important
+}
+
+.layedit-tool-b, .layedit-tool-code, .layedit-tool-help {
+ font-size: 16px !important
+}
+
+.layedit-tool-d, .layedit-tool-face, .layedit-tool-image, .layedit-tool-unlink {
+ font-size: 18px !important
+}
+
+.layedit-tool-image input {
+ position: absolute;
+ font-size: 0;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ opacity: .01;
+ filter: Alpha(opacity=1);
+ cursor: pointer
+}
+
+.layui-layedit-iframe iframe {
+ display: block;
+ width: 100%
+}
+
+#LAY_layedit_code {
+ overflow: hidden
+}
+
+.layui-laypage {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ vertical-align: middle;
+ margin: 10px 0;
+ font-size: 0
+}
+
+.layui-laypage > a:first-child, .layui-laypage > a:first-child em {
+ border-radius: 2px 0 0 2px
+}
+
+.layui-laypage > a:last-child, .layui-laypage > a:last-child em {
+ border-radius: 0 2px 2px 0
+}
+
+.layui-laypage > :first-child {
+ margin-left: 0 !important
+}
+
+.layui-laypage > :last-child {
+ margin-right: 0 !important
+}
+
+.layui-laypage a, .layui-laypage button, .layui-laypage input, .layui-laypage select, .layui-laypage span {
+ border: 1px solid #eee
+}
+
+.layui-laypage a, .layui-laypage span {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ vertical-align: middle;
+ padding: 0 15px;
+ height: 28px;
+ line-height: 28px;
+ margin: 0 -1px 5px 0;
+ background-color: #fff;
+ color: #333;
+ font-size: 12px
+}
+
+.layui-flow-more a *, .layui-laypage input, .layui-table-view select[lay-ignore] {
+ display: inline-block
+}
+
+.layui-laypage a:hover {
+ color: #009688
+}
+
+.layui-laypage em {
+ font-style: normal
+}
+
+.layui-laypage .layui-laypage-spr {
+ color: #999;
+ font-weight: 700
+}
+
+.layui-laypage a {
+ text-decoration: none
+}
+
+.layui-laypage .layui-laypage-curr {
+ position: relative
+}
+
+.layui-laypage .layui-laypage-curr em {
+ position: relative;
+ color: #fff
+}
+
+.layui-laypage .layui-laypage-curr .layui-laypage-em {
+ position: absolute;
+ left: -1px;
+ top: -1px;
+ padding: 1px;
+ width: 100%;
+ height: 100%;
+ background-color: #009688
+}
+
+.layui-laypage-em {
+ border-radius: 2px
+}
+
+.layui-laypage-next em, .layui-laypage-prev em {
+ font-family: Sim sun;
+ font-size: 16px
+}
+
+.layui-laypage .layui-laypage-count, .layui-laypage .layui-laypage-limits, .layui-laypage .layui-laypage-refresh, .layui-laypage .layui-laypage-skip {
+ margin-left: 10px;
+ margin-right: 10px;
+ padding: 0;
+ border: none
+}
+
+.layui-laypage .layui-laypage-limits, .layui-laypage .layui-laypage-refresh {
+ vertical-align: top
+}
+
+.layui-laypage .layui-laypage-refresh i {
+ font-size: 18px;
+ cursor: pointer
+}
+
+.layui-laypage select {
+ height: 22px;
+ padding: 3px;
+ border-radius: 2px;
+ cursor: pointer
+}
+
+.layui-laypage .layui-laypage-skip {
+ height: 30px;
+ line-height: 30px;
+ color: #999
+}
+
+.layui-laypage button, .layui-laypage input {
+ height: 30px;
+ line-height: 30px;
+ border-radius: 2px;
+ vertical-align: top;
+ background-color: #fff;
+ box-sizing: border-box
+}
+
+.layui-laypage input {
+ width: 40px;
+ margin: 0 10px;
+ padding: 0 3px;
+ text-align: center
+}
+
+.layui-laypage input:focus, .layui-laypage select:focus {
+ border-color: #009688 !important
+}
+
+.layui-laypage button {
+ margin-left: 10px;
+ padding: 0 10px;
+ cursor: pointer
+}
+
+.layui-table, .layui-table-view {
+ margin: 10px 0
+}
+
+.layui-flow-more {
+ margin: 10px 0;
+ text-align: center;
+ color: #999;
+ font-size: 14px
+}
+
+.layui-flow-more a {
+ height: 32px;
+ line-height: 32px
+}
+
+.layui-flow-more a * {
+ vertical-align: top
+}
+
+.layui-flow-more a cite {
+ padding: 0 20px;
+ border-radius: 3px;
+ background-color: #eee;
+ color: #333;
+ font-style: normal
+}
+
+.layui-flow-more a cite:hover {
+ opacity: .8
+}
+
+.layui-flow-more a i {
+ font-size: 30px;
+ color: #737383
+}
+
+.layui-table {
+ width: 100%;
+ background-color: #fff;
+ color: #666
+}
+
+.layui-table tr {
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-table th {
+ text-align: left;
+ font-weight: 400
+}
+
+.layui-table tbody tr:hover, .layui-table thead tr, .layui-table-click, .layui-table-header, .layui-table-hover, .layui-table-mend, .layui-table-patch, .layui-table-tool, .layui-table-total, .layui-table-total tr, .layui-table[lay-even] tr:nth-child(even) {
+ background-color: #FAFAFA
+}
+
+.layui-table td, .layui-table th, .layui-table-col-set, .layui-table-fixed-r, .layui-table-grid-down, .layui-table-header, .layui-table-page, .layui-table-tips-main, .layui-table-tool, .layui-table-total, .layui-table-view, .layui-table[lay-skin=line], .layui-table[lay-skin=row] {
+ border-width: 1px;
+ border-style: solid;
+ border-color: #eee
+}
+
+.layui-table td, .layui-table th {
+ position: relative;
+ padding: 9px 15px;
+ min-height: 20px;
+ line-height: 20px;
+ font-size: 14px
+}
+
+.layui-table[lay-skin=line] td, .layui-table[lay-skin=line] th {
+ border-width: 0 0 1px
+}
+
+.layui-table[lay-skin=row] td, .layui-table[lay-skin=row] th {
+ border-width: 0 1px 0 0
+}
+
+.layui-table[lay-skin=nob] td, .layui-table[lay-skin=nob] th {
+ border: none
+}
+
+.layui-table img {
+ max-width: 100px
+}
+
+.layui-table[lay-size=lg] td, .layui-table[lay-size=lg] th {
+ padding: 15px 30px
+}
+
+.layui-table-view .layui-table[lay-size=lg] .layui-table-cell {
+ height: 40px;
+ line-height: 40px
+}
+
+.layui-table[lay-size=sm] td, .layui-table[lay-size=sm] th {
+ font-size: 12px;
+ padding: 5px 10px
+}
+
+.layui-table-view .layui-table[lay-size=sm] .layui-table-cell {
+ height: 20px;
+ line-height: 20px
+}
+
+.layui-table[lay-data] {
+ display: none
+}
+
+.layui-table-box {
+ position: relative;
+ overflow: hidden
+}
+
+.layui-table-view .layui-table {
+ position: relative;
+ width: auto;
+ margin: 0
+}
+
+.layui-table-view .layui-table[lay-skin=line] {
+ border-width: 0 1px 0 0
+}
+
+.layui-table-view .layui-table[lay-skin=row] {
+ border-width: 0 0 1px
+}
+
+.layui-table-view .layui-table td, .layui-table-view .layui-table th {
+ padding: 5px 0;
+ border-top: none;
+ border-left: none
+}
+
+.layui-table-view .layui-table th.layui-unselect .layui-table-cell span {
+ cursor: pointer
+}
+
+.layui-table-view .layui-table td {
+ cursor: default
+}
+
+.layui-table-view .layui-table td[data-edit=text] {
+ cursor: text
+}
+
+.layui-table-view .layui-form-checkbox[lay-skin=primary] i {
+ width: 18px;
+ height: 18px
+}
+
+.layui-table-view .layui-form-radio {
+ line-height: 0;
+ padding: 0
+}
+
+.layui-table-view .layui-form-radio > i {
+ margin: 0;
+ font-size: 20px
+}
+
+.layui-table-init {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ text-align: center;
+ z-index: 110
+}
+
+.layui-table-init .layui-icon {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ margin: -15px 0 0 -15px;
+ font-size: 30px;
+ color: #c2c2c2
+}
+
+.layui-table-header {
+ border-width: 0 0 1px;
+ overflow: hidden
+}
+
+.layui-table-header .layui-table {
+ margin-bottom: -1px
+}
+
+.layui-table-tool .layui-inline[lay-event] {
+ position: relative;
+ width: 26px;
+ height: 26px;
+ padding: 5px;
+ line-height: 16px;
+ margin-right: 10px;
+ text-align: center;
+ color: #333;
+ border: 1px solid #ccc;
+ cursor: pointer;
+ -webkit-transition: .5s all;
+ transition: .5s all
+}
+
+.layui-table-tool .layui-inline[lay-event]:hover {
+ border: 1px solid #999
+}
+
+.layui-table-tool-temp {
+ padding-right: 120px
+}
+
+.layui-table-tool-self {
+ position: absolute;
+ right: 17px;
+ top: 10px
+}
+
+.layui-table-tool .layui-table-tool-self .layui-inline[lay-event] {
+ margin: 0 0 0 10px
+}
+
+.layui-table-tool-panel {
+ position: absolute;
+ top: 29px;
+ left: -1px;
+ padding: 5px 0;
+ min-width: 150px;
+ min-height: 40px;
+ border: 1px solid #d2d2d2;
+ text-align: left;
+ overflow-y: auto;
+ background-color: #fff;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, .12)
+}
+
+.layui-table-cell, .layui-table-tool-panel li {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.layui-table-tool-panel li {
+ padding: 0 10px;
+ line-height: 30px;
+ -webkit-transition: .5s all;
+ transition: .5s all
+}
+
+.layui-menu li, .layui-menu-body-title a:hover, .layui-menu-body-title > .layui-icon:hover {
+ transition: all .3s
+}
+
+.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] {
+ width: 100%;
+ padding-left: 28px
+}
+
+.layui-table-tool-panel li:hover {
+ background-color: #F6F6F6
+}
+
+.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i {
+ position: absolute;
+ left: 0;
+ top: 0
+}
+
+.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span {
+ padding: 0
+}
+
+.layui-table-tool .layui-table-tool-self .layui-table-tool-panel {
+ left: auto;
+ right: -1px
+}
+
+.layui-table-col-set {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 20px;
+ height: 100%;
+ border-width: 0 0 0 1px;
+ background-color: #fff
+}
+
+.layui-table-sort {
+ width: 10px;
+ height: 20px;
+ margin-left: 5px;
+ cursor: pointer !important
+}
+
+.layui-table-sort .layui-edge {
+ position: absolute;
+ left: 5px;
+ border-width: 5px
+}
+
+.layui-table-sort .layui-table-sort-asc {
+ top: 3px;
+ border-top: none;
+ border-bottom-style: solid;
+ border-bottom-color: #b2b2b2
+}
+
+.layui-table-sort .layui-table-sort-asc:hover {
+ border-bottom-color: #666
+}
+
+.layui-table-sort .layui-table-sort-desc {
+ bottom: 5px;
+ border-bottom: none;
+ border-top-style: solid;
+ border-top-color: #b2b2b2
+}
+
+.layui-table-sort .layui-table-sort-desc:hover {
+ border-top-color: #666
+}
+
+.layui-table-sort[lay-sort=asc] .layui-table-sort-asc {
+ border-bottom-color: #000
+}
+
+.layui-table-sort[lay-sort=desc] .layui-table-sort-desc {
+ border-top-color: #000
+}
+
+.layui-table-cell {
+ height: 28px;
+ line-height: 28px;
+ padding: 0 15px;
+ position: relative;
+ box-sizing: border-box
+}
+
+.layui-table-cell .layui-form-checkbox[lay-skin=primary] {
+ top: -1px;
+ padding: 0
+}
+
+.layui-table-cell .layui-table-link {
+ color: #01AAED
+}
+
+.laytable-cell-checkbox, .laytable-cell-numbers, .laytable-cell-radio, .laytable-cell-space {
+ padding: 0;
+ text-align: center
+}
+
+.layui-table-body {
+ position: relative;
+ overflow: auto;
+ margin-right: -1px;
+ margin-bottom: -1px
+}
+
+.layui-table-body .layui-none {
+ line-height: 26px;
+ padding: 15px;
+ text-align: center;
+ color: #999
+}
+
+.layui-table-fixed {
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 101
+}
+
+.layui-table-fixed .layui-table-body {
+ overflow: hidden
+}
+
+.layui-table-fixed-l {
+ box-shadow: 0 -1px 8px rgba(0, 0, 0, .08)
+}
+
+.layui-table-fixed-r {
+ left: auto;
+ right: -1px;
+ border-width: 0 0 0 1px;
+ box-shadow: -1px 0 8px rgba(0, 0, 0, .08)
+}
+
+.layui-table-fixed-r .layui-table-header {
+ position: relative;
+ overflow: visible
+}
+
+.layui-table-mend {
+ position: absolute;
+ right: -49px;
+ top: 0;
+ height: 100%;
+ width: 50px
+}
+
+.layui-table-tool {
+ position: relative;
+ z-index: 890;
+ width: 100%;
+ min-height: 50px;
+ line-height: 30px;
+ padding: 10px 15px;
+ border-width: 0 0 1px
+}
+
+.layui-table-tool .layui-btn-container {
+ margin-bottom: -10px
+}
+
+.layui-table-page, .layui-table-total {
+ border-width: 1px 0 0;
+ margin-bottom: -1px;
+ overflow: hidden
+}
+
+.layui-table-page {
+ position: relative;
+ width: 100%;
+ padding: 7px 7px 0;
+ height: 41px;
+ font-size: 12px;
+ white-space: nowrap
+}
+
+.layui-table-page > div {
+ height: 26px
+}
+
+.layui-table-page .layui-laypage {
+ margin: 0
+}
+
+.layui-table-page .layui-laypage a, .layui-table-page .layui-laypage span {
+ height: 26px;
+ line-height: 26px;
+ margin-bottom: 10px;
+ border: none;
+ background: 0 0
+}
+
+.layui-table-page .layui-laypage a, .layui-table-page .layui-laypage span.layui-laypage-curr {
+ padding: 0 12px
+}
+
+.layui-table-page .layui-laypage span {
+ margin-left: 0;
+ padding: 0
+}
+
+.layui-table-page .layui-laypage .layui-laypage-prev {
+ margin-left: -7px !important
+}
+
+.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em {
+ left: 0;
+ top: 0;
+ padding: 0
+}
+
+.layui-table-page .layui-laypage button, .layui-table-page .layui-laypage input {
+ height: 26px;
+ line-height: 26px
+}
+
+.layui-table-page .layui-laypage input {
+ width: 40px
+}
+
+.layui-table-page .layui-laypage button {
+ padding: 0 10px
+}
+
+.layui-table-page select {
+ height: 18px
+}
+
+.layui-table-patch .layui-table-cell {
+ padding: 0;
+ width: 30px
+}
+
+.layui-table-edit {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ padding: 0 14px 1px;
+ border-radius: 0;
+ box-shadow: 1px 1px 20px rgba(0, 0, 0, .15)
+}
+
+.layui-table-edit:focus {
+ border-color: #5FB878 !important
+}
+
+select.layui-table-edit {
+ padding: 0 0 0 10px;
+ border-color: #d2d2d2
+}
+
+.layui-table-view .layui-form-checkbox, .layui-table-view .layui-form-radio, .layui-table-view .layui-form-switch {
+ top: 0;
+ margin: 0;
+ box-sizing: content-box
+}
+
+.layui-colorpicker-alpha-slider, .layui-colorpicker-side-slider, .layui-menu, .layui-menu *, .layui-nav {
+ box-sizing: border-box
+}
+
+.layui-table-view .layui-form-checkbox {
+ top: -1px;
+ height: 26px;
+ line-height: 26px
+}
+
+.layui-table-view .layui-form-checkbox i {
+ height: 26px
+}
+
+.layui-table-grid .layui-table-cell {
+ overflow: visible
+}
+
+.layui-table-grid-down {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 26px;
+ height: 100%;
+ padding: 5px 0;
+ border-width: 0 0 0 1px;
+ text-align: center;
+ background-color: #fff;
+ color: #999;
+ cursor: pointer
+}
+
+.layui-table-grid-down .layui-icon {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin: -8px 0 0 -8px
+}
+
+.layui-table-grid-down:hover {
+ background-color: #fbfbfb
+}
+
+body .layui-table-tips .layui-layer-content {
+ background: 0 0;
+ padding: 0;
+ box-shadow: 0 1px 6px rgba(0, 0, 0, .12)
+}
+
+.layui-table-tips-main {
+ margin: -44px 0 0 -1px;
+ max-height: 150px;
+ padding: 8px 15px;
+ font-size: 14px;
+ overflow-y: scroll;
+ background-color: #fff;
+ color: #666
+}
+
+.layui-table-tips-c {
+ position: absolute;
+ right: -3px;
+ top: -13px;
+ width: 20px;
+ height: 20px;
+ padding: 3px;
+ cursor: pointer;
+ background-color: #666;
+ border-radius: 50%;
+ color: #fff
+}
+
+.layui-table-tips-c:hover {
+ background-color: #777
+}
+
+.layui-table-tips-c:before {
+ position: relative;
+ right: -2px
+}
+
+.layui-upload-file {
+ display: none !important;
+ opacity: .01;
+ filter: Alpha(opacity=1)
+}
+
+.layui-upload-drag, .layui-upload-form, .layui-upload-wrap {
+ display: inline-block
+}
+
+.layui-upload-list {
+ margin: 10px 0
+}
+
+.layui-upload-choose {
+ padding: 0 10px;
+ color: #999
+}
+
+.layui-upload-drag {
+ position: relative;
+ padding: 30px;
+ border: 1px dashed #e2e2e2;
+ background-color: #fff;
+ text-align: center;
+ cursor: pointer;
+ color: #999
+}
+
+.layui-upload-drag .layui-icon {
+ font-size: 50px;
+ color: #009688
+}
+
+.layui-upload-drag[lay-over] {
+ border-color: #009688
+}
+
+.layui-upload-iframe {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border: 0;
+ visibility: hidden
+}
+
+.layui-upload-wrap {
+ position: relative;
+ vertical-align: middle
+}
+
+.layui-upload-wrap .layui-upload-file {
+ display: block !important;
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 10;
+ font-size: 100px;
+ width: 100%;
+ height: 100%;
+ opacity: .01;
+ filter: Alpha(opacity=1);
+ cursor: pointer
+}
+
+.layui-menu {
+ position: relative;
+ margin: 5px 0;
+ background-color: #fff
+}
+
+.layui-menu li, .layui-menu-body-title a {
+ padding: 5px 15px
+}
+
+.layui-menu li {
+ position: relative;
+ margin: 1px 0;
+ width: calc(100% + 1px);
+ line-height: 22px;
+ color: rgba(0, 0, 0, .8);
+ font-size: 14px;
+ white-space: nowrap;
+ cursor: pointer
+}
+
+.layui-menu li:hover {
+ background-color: #F6F6F6
+}
+
+.layui-menu-item-parent:hover > .layui-menu-body-panel {
+ display: block;
+ animation-name: layui-fadein;
+ animation-duration: .3s;
+ animation-fill-mode: both;
+ animation-delay: .2s
+}
+
+.layui-menu-item-group .layui-menu-body-title, .layui-menu-item-parent .layui-menu-body-title {
+ padding-right: 25px
+}
+
+.layui-menu .layui-menu-item-divider:hover, .layui-menu .layui-menu-item-group:hover, .layui-menu .layui-menu-item-none:hover {
+ background: 0 0;
+ cursor: default
+}
+
+.layui-menu .layui-menu-item-group > ul {
+ margin: 5px 0 -5px
+}
+
+.layui-menu .layui-menu-item-group > .layui-menu-body-title {
+ color: rgba(0, 0, 0, .35);
+ user-select: none
+}
+
+.layui-menu .layui-menu-item-none {
+ color: rgba(0, 0, 0, .35);
+ cursor: default;
+ text-align: center
+}
+
+.layui-menu .layui-menu-item-divider {
+ margin: 5px 0;
+ padding: 0;
+ height: 0;
+ line-height: 0;
+ border-bottom: 1px solid #eee;
+ overflow: hidden
+}
+
+.layui-menu .layui-menu-item-down:hover, .layui-menu .layui-menu-item-up:hover {
+ cursor: pointer
+}
+
+.layui-menu .layui-menu-item-up > .layui-menu-body-title {
+ color: rgba(0, 0, 0, .8)
+}
+
+.layui-menu .layui-menu-item-up > ul {
+ visibility: hidden;
+ height: 0;
+ overflow: hidden
+}
+
+.layui-menu .layui-menu-item-down:hover > .layui-menu-body-title > .layui-icon, .layui-menu .layui-menu-item-up > .layui-menu-body-title:hover > .layui-icon {
+ color: rgba(0, 0, 0, 1)
+}
+
+.layui-menu .layui-menu-item-down > ul {
+ visibility: visible;
+ height: auto
+}
+
+.layui-breadcrumb, .layui-tree-btnGroup {
+ visibility: hidden
+}
+
+.layui-menu .layui-menu-item-checked, .layui-menu .layui-menu-item-checked2 {
+ background-color: #F6F6F6 !important;
+ color: #5FB878
+}
+
+.layui-menu .layui-menu-item-checked a, .layui-menu .layui-menu-item-checked2 a {
+ color: #5FB878
+}
+
+.layui-menu .layui-menu-item-checked:after {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ border-right: 3px solid #5FB878;
+ content: ""
+}
+
+.layui-menu-body-title {
+ position: relative;
+ overflow: hidden;
+ text-overflow: ellipsis
+}
+
+.layui-menu-body-title a {
+ display: block;
+ margin: -5px -15px;
+ color: rgba(0, 0, 0, .8)
+}
+
+.layui-menu-body-title > .layui-icon {
+ position: absolute;
+ right: 0;
+ top: 0;
+ font-size: 14px
+}
+
+.layui-menu-body-title > .layui-icon-right {
+ right: -1px
+}
+
+.layui-menu-body-panel {
+ display: none;
+ position: absolute;
+ top: -7px;
+ left: 100%;
+ z-index: 1000;
+ margin-left: 13px;
+ padding: 5px 0
+}
+
+.layui-transfer-active, .layui-transfer-box {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-menu-body-panel:before {
+ content: "";
+ position: absolute;
+ width: 20px;
+ left: -16px;
+ top: 0;
+ bottom: 0
+}
+
+.layui-menu-body-panel-left {
+ left: auto;
+ right: 100%;
+ margin: 0 13px
+}
+
+.layui-menu-body-panel-left:before {
+ left: auto;
+ right: -16px
+}
+
+.layui-menu-lg li {
+ line-height: 32px
+}
+
+.layui-menu-lg .layui-menu-body-title a:hover, .layui-menu-lg li:hover {
+ background: 0 0;
+ color: #5FB878
+}
+
+.layui-menu-lg li .layui-menu-body-panel {
+ margin-left: 14px
+}
+
+.layui-menu-lg li .layui-menu-body-panel-left {
+ margin: 0 15px
+}
+
+.layui-dropdown {
+ position: absolute;
+ left: -999999px;
+ top: -999999px;
+ z-index: 66666666;
+ margin: 5px 0;
+ min-width: 100px
+}
+
+.layui-dropdown:before {
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 6px;
+ left: 0;
+ top: -6px
+}
+
+.layui-transfer-box, .layui-transfer-header, .layui-transfer-search {
+ border-width: 0;
+ border-style: solid;
+ border-color: #eee
+}
+
+.layui-transfer-box {
+ position: relative;
+ border-width: 1px;
+ width: 200px;
+ height: 360px;
+ border-radius: 2px;
+ background-color: #fff
+}
+
+.layui-transfer-box .layui-form-checkbox {
+ width: 100%;
+ margin: 0 !important
+}
+
+.layui-transfer-header {
+ height: 38px;
+ line-height: 38px;
+ padding: 0 10px;
+ border-bottom-width: 1px
+}
+
+.layui-transfer-search {
+ position: relative;
+ padding: 10px;
+ border-bottom-width: 1px
+}
+
+.layui-transfer-search .layui-input {
+ height: 32px;
+ padding-left: 30px;
+ font-size: 12px
+}
+
+.layui-transfer-search .layui-icon-search {
+ position: absolute;
+ left: 20px;
+ top: 50%;
+ margin-top: -8px;
+ color: #666
+}
+
+.layui-transfer-active {
+ margin: 0 15px
+}
+
+.layui-transfer-active .layui-btn {
+ display: block;
+ margin: 0;
+ padding: 0 15px;
+ background-color: #5FB878;
+ border-color: #5FB878;
+ color: #fff
+}
+
+.layui-transfer-active .layui-btn-disabled {
+ background-color: #FBFBFB;
+ border-color: #eee;
+ color: #d2d2d2
+}
+
+.layui-transfer-active .layui-btn:first-child {
+ margin-bottom: 15px
+}
+
+.layui-transfer-active .layui-btn .layui-icon {
+ margin: 0;
+ font-size: 14px !important
+}
+
+.layui-transfer-data {
+ padding: 5px 0;
+ overflow: auto
+}
+
+.layui-transfer-data li {
+ height: 32px;
+ line-height: 32px;
+ padding: 0 10px
+}
+
+.layui-transfer-data li:hover {
+ background-color: #F6F6F6;
+ transition: .5s all
+}
+
+.layui-transfer-data .layui-none {
+ padding: 15px 10px;
+ text-align: center;
+ color: #999
+}
+
+.layui-nav {
+ position: relative;
+ padding: 0 20px;
+ background-color: #393D49;
+ color: #fff;
+ border-radius: 2px;
+ font-size: 0
+}
+
+.layui-nav * {
+ font-size: 14px
+}
+
+.layui-nav .layui-nav-item {
+ position: relative;
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ vertical-align: middle;
+ line-height: 60px
+}
+
+.layui-nav .layui-nav-item a {
+ display: block;
+ padding: 0 20px;
+ color: #fff;
+ color: rgba(255, 255, 255, .7);
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-nav .layui-this:after, .layui-nav-bar, .layui-nav-tree .layui-nav-itemed:after {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 0;
+ height: 5px;
+ background-color: #5FB878;
+ transition: all .2s;
+ -webkit-transition: all .2s
+}
+
+.layui-nav-bar {
+ z-index: 1000
+}
+
+.layui-nav .layui-nav-item a:hover, .layui-nav .layui-this a {
+ color: #fff
+}
+
+.layui-nav .layui-this:after {
+ content: "";
+ top: auto;
+ bottom: 0;
+ width: 100%
+}
+
+.layui-nav-img {
+ width: 30px;
+ height: 30px;
+ margin-right: 10px;
+ border-radius: 50%
+}
+
+.layui-nav .layui-nav-more {
+ content: "";
+ width: 0;
+ height: 0;
+ border-style: solid dashed dashed;
+ border-color: #fff transparent transparent;
+ overflow: hidden;
+ cursor: pointer;
+ transition: all .2s;
+ -webkit-transition: all .2s;
+ position: absolute;
+ top: 50%;
+ right: 3px;
+ margin-top: -4px;
+ border-width: 6px;
+ border-top-color: rgba(255, 255, 255, .7)
+}
+
+.layui-nav .layui-nav-mored, .layui-nav-itemed > a .layui-nav-more {
+ margin-top: -9px;
+ border-style: dashed dashed solid;
+ border-color: transparent transparent #fff
+}
+
+.layui-nav-child {
+ display: none;
+ position: absolute;
+ left: 0;
+ top: 65px;
+ min-width: 100%;
+ line-height: 36px;
+ padding: 5px 0;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, .12);
+ border: 1px solid #d2d2d2;
+ background-color: #fff;
+ z-index: 100;
+ border-radius: 2px;
+ white-space: nowrap
+}
+
+.layui-nav .layui-nav-child a {
+ color: #333
+}
+
+.layui-nav .layui-nav-child a:hover {
+ background-color: #F6F6F6;
+ color: #5FB878
+}
+
+.layui-nav-child dd {
+ position: relative
+}
+
+.layui-nav .layui-nav-child dd.layui-this a, .layui-nav-child dd.layui-this {
+ background-color: #5FB878;
+ color: #fff
+}
+
+.layui-nav-child dd.layui-this:after {
+ display: none
+}
+
+.layui-nav-tree {
+ width: 200px;
+ padding: 0
+}
+
+.layui-nav-tree .layui-nav-item {
+ display: block;
+ width: 100%;
+ line-height: 45px
+}
+
+.layui-nav-tree .layui-nav-item a {
+ position: relative;
+ height: 45px;
+ line-height: 45px;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap
+}
+
+.layui-nav-tree .layui-nav-item a:hover {
+ background-color: #4E5465
+}
+
+.layui-nav-tree .layui-nav-bar {
+ width: 5px;
+ height: 0;
+ background-color: #009688
+}
+
+.layui-nav-tree .layui-nav-child dd.layui-this, .layui-nav-tree .layui-nav-child dd.layui-this a, .layui-nav-tree .layui-this, .layui-nav-tree .layui-this > a, .layui-nav-tree .layui-this > a:hover {
+ background-color: #009688;
+ color: #fff
+}
+
+.layui-nav-tree .layui-this:after {
+ display: none
+}
+
+.layui-nav-itemed > a, .layui-nav-tree .layui-nav-title a, .layui-nav-tree .layui-nav-title a:hover {
+ color: #fff !important
+}
+
+.layui-nav-tree .layui-nav-child {
+ position: relative;
+ z-index: 0;
+ top: 0;
+ border: none;
+ box-shadow: none
+}
+
+.layui-nav-tree .layui-nav-child a {
+ height: 40px;
+ line-height: 40px;
+ color: #fff;
+ color: rgba(255, 255, 255, .7)
+}
+
+.layui-nav-tree .layui-nav-child, .layui-nav-tree .layui-nav-child a:hover {
+ background: 0 0;
+ color: #fff
+}
+
+.layui-nav-tree .layui-nav-more {
+ right: 10px
+}
+
+.layui-nav-itemed > .layui-nav-child {
+ display: block;
+ padding: 0;
+ background-color: rgba(0, 0, 0, .3) !important
+}
+
+.layui-nav-itemed > .layui-nav-child > .layui-this > .layui-nav-child {
+ display: block
+}
+
+.layui-nav-side {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ overflow-x: hidden;
+ z-index: 999
+}
+
+.layui-bg-blue .layui-nav-bar, .layui-bg-blue .layui-nav-itemed:after, .layui-bg-blue .layui-this:after {
+ background-color: #93D1FF
+}
+
+.layui-bg-blue .layui-nav-child dd.layui-this {
+ background-color: #1E9FFF
+}
+
+.layui-bg-blue .layui-nav-itemed > a, .layui-nav-tree.layui-bg-blue .layui-nav-title a, .layui-nav-tree.layui-bg-blue .layui-nav-title a:hover {
+ background-color: #007DDB !important
+}
+
+.layui-breadcrumb {
+ font-size: 0
+}
+
+.layui-breadcrumb > * {
+ font-size: 14px
+}
+
+.layui-breadcrumb a {
+ color: #999 !important
+}
+
+.layui-breadcrumb a:hover {
+ color: #5FB878 !important
+}
+
+.layui-breadcrumb a cite {
+ color: #666;
+ font-style: normal
+}
+
+.layui-breadcrumb span[lay-separator] {
+ margin: 0 10px;
+ color: #999
+}
+
+.layui-tab {
+ margin: 10px 0;
+ text-align: left !important
+}
+
+.layui-tab[overflow] > .layui-tab-title {
+ overflow: hidden
+}
+
+.layui-tab-title {
+ position: relative;
+ left: 0;
+ height: 40px;
+ white-space: nowrap;
+ font-size: 0;
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ transition: all .2s;
+ -webkit-transition: all .2s
+}
+
+.layui-tab-title li {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ vertical-align: middle;
+ font-size: 14px;
+ transition: all .2s;
+ -webkit-transition: all .2s;
+ position: relative;
+ line-height: 40px;
+ min-width: 65px;
+ padding: 0 15px;
+ text-align: center;
+ cursor: pointer
+}
+
+.layui-tab-title li a {
+ display: block
+}
+
+.layui-tab-title .layui-this {
+ color: #000
+}
+
+.layui-tab-title .layui-this:after {
+ position: absolute;
+ left: 0;
+ top: 0;
+ content: "";
+ width: 100%;
+ height: 41px;
+ border-width: 1px;
+ border-style: solid;
+ border-bottom-color: #fff;
+ border-radius: 2px 2px 0 0;
+ box-sizing: border-box;
+ pointer-events: none
+}
+
+.layui-tab-bar {
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 10;
+ width: 30px;
+ height: 39px;
+ line-height: 39px;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ text-align: center;
+ background-color: #fff;
+ cursor: pointer
+}
+
+.layui-tab-bar .layui-icon {
+ position: relative;
+ display: inline-block;
+ top: 3px;
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-tab-item {
+ display: none
+}
+
+.layui-tab-more {
+ padding-right: 30px;
+ height: auto !important;
+ white-space: normal !important
+}
+
+.layui-tab-more li.layui-this:after {
+ border-bottom-color: #eee;
+ border-radius: 2px
+}
+
+.layui-tab-more .layui-tab-bar .layui-icon {
+ top: -2px;
+ top: 3px \9;
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg)
+}
+
+:root .layui-tab-more .layui-tab-bar .layui-icon {
+ top: -2px \0/ IE9
+}
+
+.layui-tab-content {
+ padding: 15px 0
+}
+
+.layui-tab-title li .layui-tab-close {
+ position: relative;
+ display: inline-block;
+ width: 18px;
+ height: 18px;
+ line-height: 20px;
+ margin-left: 8px;
+ top: 1px;
+ text-align: center;
+ font-size: 14px;
+ color: #c2c2c2;
+ transition: all .2s;
+ -webkit-transition: all .2s
+}
+
+.layui-tab-title li .layui-tab-close:hover {
+ border-radius: 2px;
+ background-color: #FF5722;
+ color: #fff
+}
+
+.layui-tab-brief > .layui-tab-title .layui-this {
+ color: #009688
+}
+
+.layui-tab-brief > .layui-tab-more li.layui-this:after, .layui-tab-brief > .layui-tab-title .layui-this:after {
+ border: none;
+ border-radius: 0;
+ border-bottom: 2px solid #5FB878
+}
+
+.layui-tab-brief[overflow] > .layui-tab-title .layui-this:after {
+ top: -1px
+}
+
+.layui-tab-card {
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 2px;
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .1)
+}
+
+.layui-tab-card > .layui-tab-title {
+ background-color: #FAFAFA
+}
+
+.layui-tab-card > .layui-tab-title li {
+ margin-right: -1px;
+ margin-left: -1px
+}
+
+.layui-tab-card > .layui-tab-title .layui-this {
+ background-color: #fff
+}
+
+.layui-tab-card > .layui-tab-title .layui-this:after {
+ border-top: none;
+ border-width: 1px;
+ border-bottom-color: #fff
+}
+
+.layui-tab-card > .layui-tab-title .layui-tab-bar {
+ height: 40px;
+ line-height: 40px;
+ border-radius: 0;
+ border-top: none;
+ border-right: none
+}
+
+.layui-tab-card > .layui-tab-more .layui-this {
+ background: 0 0;
+ color: #5FB878
+}
+
+.layui-tab-card > .layui-tab-more .layui-this:after {
+ border: none
+}
+
+.layui-timeline {
+ padding-left: 5px
+}
+
+.layui-timeline-item {
+ position: relative;
+ padding-bottom: 20px
+}
+
+.layui-timeline-axis {
+ position: absolute;
+ left: -5px;
+ top: 0;
+ z-index: 10;
+ width: 20px;
+ height: 20px;
+ line-height: 20px;
+ background-color: #fff;
+ color: #5FB878;
+ border-radius: 50%;
+ text-align: center;
+ cursor: pointer
+}
+
+.layui-timeline-axis:hover {
+ color: #FF5722
+}
+
+.layui-timeline-item:before {
+ content: "";
+ position: absolute;
+ left: 5px;
+ top: 0;
+ z-index: 0;
+ width: 1px;
+ height: 100%
+}
+
+.layui-timeline-item:first-child:before {
+ display: block
+}
+
+.layui-timeline-item:last-child:before {
+ display: none
+}
+
+.layui-timeline-content {
+ padding-left: 25px
+}
+
+.layui-timeline-title {
+ position: relative;
+ margin-bottom: 10px;
+ line-height: 22px
+}
+
+.layui-badge, .layui-badge-dot, .layui-badge-rim {
+ position: relative;
+ display: inline-block;
+ padding: 0 6px;
+ font-size: 12px;
+ text-align: center;
+ background-color: #FF5722;
+ color: #fff;
+ border-radius: 2px
+}
+
+.layui-badge {
+ height: 18px;
+ line-height: 18px
+}
+
+.layui-badge-dot {
+ width: 8px;
+ height: 8px;
+ padding: 0;
+ border-radius: 50%
+}
+
+.layui-badge-rim {
+ height: 18px;
+ line-height: 18px;
+ border-width: 1px;
+ border-style: solid;
+ background-color: #fff;
+ color: #666
+}
+
+.layui-btn .layui-badge, .layui-btn .layui-badge-dot {
+ margin-left: 5px
+}
+
+.layui-nav .layui-badge, .layui-nav .layui-badge-dot {
+ position: absolute;
+ top: 50%;
+ margin: -5px 6px 0
+}
+
+.layui-nav .layui-badge {
+ margin-top: -10px
+}
+
+.layui-tab-title .layui-badge, .layui-tab-title .layui-badge-dot {
+ left: 5px;
+ top: -2px
+}
+
+.layui-carousel {
+ position: relative;
+ left: 0;
+ top: 0;
+ background-color: #f8f8f8
+}
+
+.layui-carousel > [carousel-item] {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ overflow: hidden
+}
+
+.layui-carousel > [carousel-item]:before {
+ position: absolute;
+ content: '\e63d';
+ left: 50%;
+ top: 50%;
+ width: 100px;
+ line-height: 20px;
+ margin: -10px 0 0 -50px;
+ text-align: center;
+ color: #c2c2c2;
+ font-family: layui-icon !important;
+ font-size: 30px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+.layui-carousel > [carousel-item] > * {
+ display: none;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: #f8f8f8;
+ transition-duration: .3s;
+ -webkit-transition-duration: .3s
+}
+
+.layui-carousel-updown > * {
+ -webkit-transition: .3s ease-in-out up;
+ transition: .3s ease-in-out up
+}
+
+.layui-carousel-arrow {
+ display: none \9;
+ opacity: 0;
+ position: absolute;
+ left: 10px;
+ top: 50%;
+ margin-top: -18px;
+ width: 36px;
+ height: 36px;
+ line-height: 36px;
+ text-align: center;
+ font-size: 20px;
+ border: 0;
+ border-radius: 50%;
+ background-color: rgba(0, 0, 0, .2);
+ color: #fff;
+ -webkit-transition-duration: .3s;
+ transition-duration: .3s;
+ cursor: pointer
+}
+
+.layui-carousel-arrow[lay-type=add] {
+ left: auto !important;
+ right: 10px
+}
+
+.layui-carousel:hover .layui-carousel-arrow[lay-type=add], .layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add] {
+ right: 20px
+}
+
+.layui-carousel[lay-arrow=always] .layui-carousel-arrow {
+ opacity: 1;
+ left: 20px
+}
+
+.layui-carousel[lay-arrow=none] .layui-carousel-arrow {
+ display: none
+}
+
+.layui-carousel-arrow:hover, .layui-carousel-ind ul:hover {
+ background-color: rgba(0, 0, 0, .35)
+}
+
+.layui-carousel:hover .layui-carousel-arrow {
+ display: block \9;
+ opacity: 1;
+ left: 20px
+}
+
+.layui-carousel-ind {
+ position: relative;
+ top: -35px;
+ width: 100%;
+ line-height: 0 !important;
+ text-align: center;
+ font-size: 0
+}
+
+.layui-carousel[lay-indicator=outside] {
+ margin-bottom: 30px
+}
+
+.layui-carousel[lay-indicator=outside] .layui-carousel-ind {
+ top: 10px
+}
+
+.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul {
+ background-color: rgba(0, 0, 0, .5)
+}
+
+.layui-carousel[lay-indicator=none] .layui-carousel-ind {
+ display: none
+}
+
+.layui-carousel-ind ul {
+ display: inline-block;
+ padding: 5px;
+ background-color: rgba(0, 0, 0, .2);
+ border-radius: 10px;
+ -webkit-transition-duration: .3s;
+ transition-duration: .3s
+}
+
+.layui-carousel-ind li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 0 3px;
+ font-size: 14px;
+ background-color: #eee;
+ background-color: rgba(255, 255, 255, .5);
+ border-radius: 50%;
+ cursor: pointer;
+ -webkit-transition-duration: .3s;
+ transition-duration: .3s
+}
+
+.layui-carousel-ind li:hover {
+ background-color: rgba(255, 255, 255, .7)
+}
+
+.layui-carousel-ind li.layui-this {
+ background-color: #fff
+}
+
+.layui-carousel > [carousel-item] > .layui-carousel-next, .layui-carousel > [carousel-item] > .layui-carousel-prev, .layui-carousel > [carousel-item] > .layui-this {
+ display: block
+}
+
+.layui-carousel > [carousel-item] > .layui-this {
+ left: 0
+}
+
+.layui-carousel > [carousel-item] > .layui-carousel-prev {
+ left: -100%
+}
+
+.layui-carousel > [carousel-item] > .layui-carousel-next {
+ left: 100%
+}
+
+.layui-carousel > [carousel-item] > .layui-carousel-next.layui-carousel-left, .layui-carousel > [carousel-item] > .layui-carousel-prev.layui-carousel-right {
+ left: 0
+}
+
+.layui-carousel > [carousel-item] > .layui-this.layui-carousel-left {
+ left: -100%
+}
+
+.layui-carousel > [carousel-item] > .layui-this.layui-carousel-right {
+ left: 100%
+}
+
+.layui-carousel[lay-anim=updown] .layui-carousel-arrow {
+ left: 50% !important;
+ top: 20px;
+ margin: 0 0 0 -18px
+}
+
+.layui-carousel[lay-anim=updown] > [carousel-item] > *, .layui-carousel[lay-anim=fade] > [carousel-item] > * {
+ left: 0 !important
+}
+
+.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add] {
+ top: auto !important;
+ bottom: 20px
+}
+
+.layui-carousel[lay-anim=updown] .layui-carousel-ind {
+ position: absolute;
+ top: 50%;
+ right: 20px;
+ width: auto;
+ height: auto
+}
+
+.layui-carousel[lay-anim=updown] .layui-carousel-ind ul {
+ padding: 3px 5px
+}
+
+.layui-carousel[lay-anim=updown] .layui-carousel-ind li {
+ display: block;
+ margin: 6px 0
+}
+
+.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-this {
+ top: 0
+}
+
+.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-carousel-prev {
+ top: -100%
+}
+
+.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-carousel-next {
+ top: 100%
+}
+
+.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-carousel-next.layui-carousel-left, .layui-carousel[lay-anim=updown] > [carousel-item] > .layui-carousel-prev.layui-carousel-right {
+ top: 0
+}
+
+.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-this.layui-carousel-left {
+ top: -100%
+}
+
+.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-this.layui-carousel-right {
+ top: 100%
+}
+
+.layui-carousel[lay-anim=fade] > [carousel-item] > .layui-carousel-next, .layui-carousel[lay-anim=fade] > [carousel-item] > .layui-carousel-prev {
+ opacity: 0
+}
+
+.layui-carousel[lay-anim=fade] > [carousel-item] > .layui-carousel-next.layui-carousel-left, .layui-carousel[lay-anim=fade] > [carousel-item] > .layui-carousel-prev.layui-carousel-right {
+ opacity: 1
+}
+
+.layui-carousel[lay-anim=fade] > [carousel-item] > .layui-this.layui-carousel-left, .layui-carousel[lay-anim=fade] > [carousel-item] > .layui-this.layui-carousel-right {
+ opacity: 0
+}
+
+.layui-fixbar {
+ position: fixed;
+ right: 15px;
+ bottom: 15px;
+ z-index: 999999
+}
+
+.layui-fixbar li {
+ width: 50px;
+ height: 50px;
+ line-height: 50px;
+ margin-bottom: 1px;
+ text-align: center;
+ cursor: pointer;
+ font-size: 30px;
+ background-color: #9F9F9F;
+ color: #fff;
+ border-radius: 2px;
+ opacity: .95
+}
+
+.layui-fixbar li:hover {
+ opacity: .85
+}
+
+.layui-fixbar li:active {
+ opacity: 1
+}
+
+.layui-fixbar .layui-fixbar-top {
+ display: none;
+ font-size: 40px
+}
+
+body .layui-util-face {
+ border: none;
+ background: 0 0
+}
+
+body .layui-util-face .layui-layer-content {
+ padding: 0;
+ background-color: #fff;
+ color: #666;
+ box-shadow: none
+}
+
+.layui-util-face .layui-layer-TipsG {
+ display: none
+}
+
+.layui-util-face ul {
+ position: relative;
+ width: 372px;
+ padding: 10px;
+ border: 1px solid #D9D9D9;
+ background-color: #fff;
+ box-shadow: 0 0 20px rgba(0, 0, 0, .2)
+}
+
+.layui-util-face ul li {
+ cursor: pointer;
+ float: left;
+ border: 1px solid #e8e8e8;
+ height: 22px;
+ width: 26px;
+ overflow: hidden;
+ margin: -1px 0 0 -1px;
+ padding: 4px 2px;
+ text-align: center
+}
+
+.layui-util-face ul li:hover {
+ position: relative;
+ z-index: 2;
+ border: 1px solid #eb7350;
+ background: #fff9ec
+}
+
+.layui-code {
+ position: relative;
+ margin: 10px 0;
+ padding: 15px;
+ line-height: 20px;
+ border: 1px solid #eee;
+ border-left-width: 6px;
+ background-color: #FAFAFA;
+ color: #333;
+ font-family: Courier New;
+ font-size: 12px
+}
+
+.layui-rate, .layui-rate * {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-rate {
+ padding: 10px 5px 10px 0;
+ font-size: 0
+}
+
+.layui-rate li i.layui-icon {
+ font-size: 20px;
+ color: #FFB800;
+ margin-right: 5px;
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-rate li i:hover {
+ cursor: pointer;
+ transform: scale(1.12);
+ -webkit-transform: scale(1.12)
+}
+
+.layui-rate[readonly] li i:hover {
+ cursor: default;
+ transform: scale(1)
+}
+
+.layui-colorpicker {
+ width: 26px;
+ height: 26px;
+ border: 1px solid #eee;
+ padding: 5px;
+ border-radius: 2px;
+ line-height: 24px;
+ display: inline-block;
+ cursor: pointer;
+ transition: all .3s;
+ -webkit-transition: all .3s
+}
+
+.layui-colorpicker:hover {
+ border-color: #d2d2d2
+}
+
+.layui-colorpicker.layui-colorpicker-lg {
+ width: 34px;
+ height: 34px;
+ line-height: 32px
+}
+
+.layui-colorpicker.layui-colorpicker-sm {
+ width: 24px;
+ height: 24px;
+ line-height: 22px
+}
+
+.layui-colorpicker.layui-colorpicker-xs {
+ width: 22px;
+ height: 22px;
+ line-height: 20px
+}
+
+.layui-colorpicker-trigger-bgcolor {
+ display: block;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);
+ border-radius: 2px
+}
+
+.layui-colorpicker-trigger-span {
+ display: block;
+ height: 100%;
+ box-sizing: border-box;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-radius: 2px;
+ text-align: center
+}
+
+.layui-colorpicker-trigger-i {
+ display: inline-block;
+ color: #FFF;
+ font-size: 12px
+}
+
+.layui-colorpicker-trigger-i.layui-icon-close {
+ color: #999
+}
+
+.layui-colorpicker-main {
+ position: absolute;
+ z-index: 66666666;
+ width: 280px;
+ padding: 7px;
+ background: #FFF;
+ border: 1px solid #d2d2d2;
+ border-radius: 2px;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, .12)
+}
+
+.layui-colorpicker-main-wrapper {
+ height: 180px;
+ position: relative
+}
+
+.layui-colorpicker-basis {
+ width: 260px;
+ height: 100%;
+ position: relative
+}
+
+.layui-colorpicker-basis-white {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background: linear-gradient(90deg, #FFF, hsla(0, 0%, 100%, 0))
+}
+
+.layui-colorpicker-basis-black {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background: linear-gradient(0deg, #000, transparent)
+}
+
+.layui-colorpicker-basis-cursor {
+ width: 10px;
+ height: 10px;
+ border: 1px solid #FFF;
+ border-radius: 50%;
+ position: absolute;
+ top: -3px;
+ right: -3px;
+ cursor: pointer
+}
+
+.layui-colorpicker-side {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 12px;
+ height: 100%;
+ background: linear-gradient(red, #FF0, #0F0, #0FF, #00F, #F0F, red)
+}
+
+.layui-colorpicker-side-slider {
+ width: 100%;
+ height: 5px;
+ box-shadow: 0 0 1px #888;
+ background: #FFF;
+ border-radius: 1px;
+ border: 1px solid #f0f0f0;
+ cursor: pointer;
+ position: absolute;
+ left: 0
+}
+
+.layui-colorpicker-main-alpha {
+ display: none;
+ height: 12px;
+ margin-top: 7px;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)
+}
+
+.layui-colorpicker-alpha-bgcolor {
+ height: 100%;
+ position: relative
+}
+
+.layui-colorpicker-alpha-slider {
+ width: 5px;
+ height: 100%;
+ box-shadow: 0 0 1px #888;
+ background: #FFF;
+ border-radius: 1px;
+ border: 1px solid #f0f0f0;
+ cursor: pointer;
+ position: absolute;
+ top: 0
+}
+
+.layui-colorpicker-main-pre {
+ padding-top: 7px;
+ font-size: 0
+}
+
+.layui-colorpicker-pre {
+ width: 20px;
+ height: 20px;
+ border-radius: 2px;
+ display: inline-block;
+ margin-left: 6px;
+ margin-bottom: 7px;
+ cursor: pointer
+}
+
+.layui-colorpicker-pre:nth-child(11n+1) {
+ margin-left: 0
+}
+
+.layui-colorpicker-pre-isalpha {
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)
+}
+
+.layui-colorpicker-pre.layui-this {
+ box-shadow: 0 0 3px 2px rgba(0, 0, 0, .15)
+}
+
+.layui-colorpicker-pre > div {
+ height: 100%;
+ border-radius: 2px
+}
+
+.layui-colorpicker-main-input {
+ text-align: right;
+ padding-top: 7px
+}
+
+.layui-colorpicker-main-input .layui-btn-container .layui-btn {
+ margin: 0 0 0 10px
+}
+
+.layui-colorpicker-main-input div.layui-inline {
+ float: left;
+ margin-right: 10px;
+ font-size: 14px
+}
+
+.layui-colorpicker-main-input input.layui-input {
+ width: 150px;
+ height: 30px;
+ color: #666
+}
+
+.layui-slider {
+ height: 4px;
+ background: #eee;
+ border-radius: 3px;
+ position: relative;
+ cursor: pointer
+}
+
+.layui-slider-bar {
+ border-radius: 3px;
+ position: absolute;
+ height: 100%
+}
+
+.layui-slider-step {
+ position: absolute;
+ top: 0;
+ width: 4px;
+ height: 4px;
+ border-radius: 50%;
+ background: #FFF;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%)
+}
+
+.layui-slider-wrap {
+ width: 36px;
+ height: 36px;
+ position: absolute;
+ top: -16px;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%);
+ z-index: 10;
+ text-align: center
+}
+
+.layui-slider-wrap-btn {
+ width: 12px;
+ height: 12px;
+ border-radius: 50%;
+ background: #FFF;
+ display: inline-block;
+ vertical-align: middle;
+ cursor: pointer;
+ transition: .3s
+}
+
+.layui-slider-wrap:after {
+ content: "";
+ height: 100%;
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-slider-wrap-btn.layui-slider-hover, .layui-slider-wrap-btn:hover {
+ transform: scale(1.2)
+}
+
+.layui-slider-wrap-btn.layui-disabled:hover {
+ transform: scale(1) !important
+}
+
+.layui-slider-tips {
+ position: absolute;
+ top: -42px;
+ z-index: 66666666;
+ white-space: nowrap;
+ display: none;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%);
+ color: #FFF;
+ background: #000;
+ border-radius: 3px;
+ height: 25px;
+ line-height: 25px;
+ padding: 0 10px
+}
+
+.layui-slider-tips:after {
+ content: "";
+ position: absolute;
+ bottom: -12px;
+ left: 50%;
+ margin-left: -6px;
+ width: 0;
+ height: 0;
+ border-width: 6px;
+ border-style: solid;
+ border-color: #000 transparent transparent
+}
+
+.layui-slider-input {
+ width: 70px;
+ height: 32px;
+ border: 1px solid #eee;
+ border-radius: 3px;
+ font-size: 16px;
+ line-height: 32px;
+ position: absolute;
+ right: 0;
+ top: -14px
+}
+
+.layui-slider-input-btn {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 20px;
+ height: 100%;
+ border-left: 1px solid #eee
+}
+
+.layui-slider-input-btn i {
+ cursor: pointer;
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ width: 20px;
+ height: 50%;
+ font-size: 12px;
+ line-height: 16px;
+ text-align: center;
+ color: #999
+}
+
+.layui-slider-input-btn i:first-child {
+ top: 0;
+ border-bottom: 1px solid #eee
+}
+
+.layui-slider-input-txt {
+ height: 100%;
+ font-size: 14px
+}
+
+.layui-slider-input-txt input {
+ height: 100%;
+ border: none
+}
+
+.layui-slider-input-btn i:hover {
+ color: #009688
+}
+
+.layui-slider-vertical {
+ width: 4px;
+ margin-left: 33px
+}
+
+.layui-slider-vertical .layui-slider-bar {
+ width: 4px
+}
+
+.layui-slider-vertical .layui-slider-step {
+ top: auto;
+ left: 0;
+ -webkit-transform: translateY(50%);
+ transform: translateY(50%)
+}
+
+.layui-slider-vertical .layui-slider-wrap {
+ top: auto;
+ left: -16px;
+ -webkit-transform: translateY(50%);
+ transform: translateY(50%)
+}
+
+.layui-slider-vertical .layui-slider-tips {
+ top: auto;
+ left: 2px
+}
+
+@media \0screen {
+ .layui-slider-wrap-btn {
+ margin-left: -20px
+ }
+
+ .layui-slider-vertical .layui-slider-wrap-btn {
+ margin-left: 0;
+ margin-bottom: -20px
+ }
+
+ .layui-slider-vertical .layui-slider-tips {
+ margin-left: -8px
+ }
+
+ .layui-slider > span {
+ margin-left: 8px
+ }
+}
+
+.layui-tree {
+ line-height: 22px
+}
+
+.layui-tree .layui-form-checkbox {
+ margin: 0 !important
+}
+
+.layui-tree-set {
+ width: 100%;
+ position: relative
+}
+
+.layui-tree-pack {
+ display: none;
+ padding-left: 20px;
+ position: relative
+}
+
+.layui-tree-iconClick, .layui-tree-main {
+ display: inline-block;
+ vertical-align: middle
+}
+
+.layui-tree-line .layui-tree-pack {
+ padding-left: 27px
+}
+
+.layui-tree-line .layui-tree-set .layui-tree-set:after {
+ content: "";
+ position: absolute;
+ top: 14px;
+ left: -9px;
+ width: 17px;
+ height: 0;
+ border-top: 1px dotted #c0c4cc
+}
+
+.layui-tree-entry {
+ position: relative;
+ padding: 3px 0;
+ height: 20px;
+ white-space: nowrap
+}
+
+.layui-tree-entry:hover {
+ background-color: #eee
+}
+
+.layui-tree-line .layui-tree-entry:hover {
+ background-color: rgba(0, 0, 0, 0)
+}
+
+.layui-tree-line .layui-tree-entry:hover .layui-tree-txt {
+ color: #999;
+ text-decoration: underline;
+ transition: .3s
+}
+
+.layui-tree-main {
+ cursor: pointer;
+ padding-right: 10px
+}
+
+.layui-tree-line .layui-tree-set:before {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: -9px;
+ width: 0;
+ height: 100%;
+ border-left: 1px dotted #c0c4cc
+}
+
+.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before {
+ height: 13px
+}
+
+.layui-tree-line .layui-tree-set.layui-tree-setHide:before {
+ height: 0
+}
+
+.layui-tree-iconClick {
+ position: relative;
+ height: 20px;
+ line-height: 20px;
+ margin: 0 10px;
+ color: #c0c4cc
+}
+
+.layui-tree-icon {
+ height: 12px;
+ line-height: 12px;
+ width: 12px;
+ text-align: center;
+ border: 1px solid #c0c4cc
+}
+
+.layui-tree-iconClick .layui-icon {
+ font-size: 18px
+}
+
+.layui-tree-icon .layui-icon {
+ font-size: 12px;
+ color: #666
+}
+
+.layui-tree-iconArrow {
+ padding: 0 5px
+}
+
+.layui-tree-iconArrow:after {
+ content: "";
+ position: absolute;
+ left: 4px;
+ top: 3px;
+ z-index: 100;
+ width: 0;
+ height: 0;
+ border-width: 5px;
+ border-style: solid;
+ border-color: transparent transparent transparent #c0c4cc;
+ transition: .5s
+}
+
+.layui-tree-btnGroup, .layui-tree-editInput {
+ position: relative;
+ vertical-align: middle;
+ display: inline-block
+}
+
+.layui-tree-spread > .layui-tree-entry > .layui-tree-iconClick > .layui-tree-iconArrow:after {
+ transform: rotate(90deg) translate(3px, 4px)
+}
+
+.layui-tree-txt {
+ display: inline-block;
+ vertical-align: middle;
+ color: #555
+}
+
+.layui-tree-search {
+ margin-bottom: 15px;
+ color: #666
+}
+
+.layui-tree-btnGroup .layui-icon {
+ display: inline-block;
+ vertical-align: middle;
+ padding: 0 2px;
+ cursor: pointer
+}
+
+.layui-tree-btnGroup .layui-icon:hover {
+ color: #999;
+ transition: .3s
+}
+
+.layui-tree-entry:hover .layui-tree-btnGroup {
+ visibility: visible
+}
+
+.layui-tree-editInput {
+ height: 20px;
+ line-height: 20px;
+ padding: 0 3px;
+ border: none;
+ background-color: rgba(0, 0, 0, .05)
+}
+
+.layui-tree-emptyText {
+ text-align: center;
+ color: #999
+}
+
+.layui-anim {
+ -webkit-animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-duration: .2s;
+ animation-fill-mode: both
+}
+
+.layui-anim.layui-icon {
+ display: inline-block
+}
+
+.layui-anim-loop {
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite
+}
+
+.layui-trans, .layui-trans a {
+ transition: all .2s;
+ -webkit-transition: all .2s
+}
+
+@-webkit-keyframes layui-rotate {
+ from {
+ -webkit-transform: rotate(0)
+ }
+ to {
+ -webkit-transform: rotate(360deg)
+ }
+}
+
+@keyframes layui-rotate {
+ from {
+ transform: rotate(0)
+ }
+ to {
+ transform: rotate(360deg)
+ }
+}
+
+.layui-anim-rotate {
+ -webkit-animation-name: layui-rotate;
+ animation-name: layui-rotate;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+@-webkit-keyframes layui-up {
+ from {
+ -webkit-transform: translate3d(0, 100%, 0);
+ opacity: .3
+ }
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ opacity: 1
+ }
+}
+
+@keyframes layui-up {
+ from {
+ transform: translate3d(0, 100%, 0);
+ opacity: .3
+ }
+ to {
+ transform: translate3d(0, 0, 0);
+ opacity: 1
+ }
+}
+
+.layui-anim-up {
+ -webkit-animation-name: layui-up;
+ animation-name: layui-up
+}
+
+@-webkit-keyframes layui-upbit {
+ from {
+ -webkit-transform: translate3d(0, 15px, 0);
+ opacity: .3
+ }
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ opacity: 1
+ }
+}
+
+@keyframes layui-upbit {
+ from {
+ transform: translate3d(0, 15px, 0);
+ opacity: .3
+ }
+ to {
+ transform: translate3d(0, 0, 0);
+ opacity: 1
+ }
+}
+
+.layui-anim-upbit {
+ -webkit-animation-name: layui-upbit;
+ animation-name: layui-upbit
+}
+
+@keyframes layui-down {
+ 0% {
+ opacity: .3;
+ transform: translate3d(0, -100%, 0)
+ }
+ 100% {
+ opacity: 1;
+ transform: translate3d(0, 0, 0)
+ }
+}
+
+.layui-anim-down {
+ animation-name: layui-down
+}
+
+@keyframes layui-downbit {
+ 0% {
+ opacity: .3;
+ transform: translate3d(0, -5px, 0)
+ }
+ 100% {
+ opacity: 1;
+ transform: translate3d(0, 0, 0)
+ }
+}
+
+.layui-anim-downbit {
+ animation-name: layui-downbit
+}
+
+@-webkit-keyframes layui-scale {
+ 0% {
+ opacity: .3;
+ -webkit-transform: scale(.5)
+ }
+ 100% {
+ opacity: 1;
+ -webkit-transform: scale(1)
+ }
+}
+
+@keyframes layui-scale {
+ 0% {
+ opacity: .3;
+ -ms-transform: scale(.5);
+ transform: scale(.5)
+ }
+ 100% {
+ opacity: 1;
+ -ms-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+.layui-anim-scale {
+ -webkit-animation-name: layui-scale;
+ animation-name: layui-scale
+}
+
+@-webkit-keyframes layui-scale-spring {
+ 0% {
+ opacity: .5;
+ -webkit-transform: scale(.5)
+ }
+ 80% {
+ opacity: .8;
+ -webkit-transform: scale(1.1)
+ }
+ 100% {
+ opacity: 1;
+ -webkit-transform: scale(1)
+ }
+}
+
+@keyframes layui-scale-spring {
+ 0% {
+ opacity: .5;
+ transform: scale(.5)
+ }
+ 80% {
+ opacity: .8;
+ transform: scale(1.1)
+ }
+ 100% {
+ opacity: 1;
+ transform: scale(1)
+ }
+}
+
+.layui-anim-scaleSpring {
+ -webkit-animation-name: layui-scale-spring;
+ animation-name: layui-scale-spring
+}
+
+@keyframes layui-scalesmall {
+ 0% {
+ opacity: .3;
+ transform: scale(1.5)
+ }
+ 100% {
+ opacity: 1;
+ transform: scale(1)
+ }
+}
+
+.layui-anim-scalesmall {
+ animation-name: layui-scalesmall
+}
+
+@keyframes layui-scalesmall-spring {
+ 0% {
+ opacity: .3;
+ transform: scale(1.5)
+ }
+ 80% {
+ opacity: .8;
+ transform: scale(.9)
+ }
+ 100% {
+ opacity: 1;
+ transform: scale(1)
+ }
+}
+
+.layui-anim-scalesmall-spring {
+ animation-name: layui-scalesmall-spring
+}
+
+@-webkit-keyframes layui-fadein {
+ 0% {
+ opacity: 0
+ }
+ 100% {
+ opacity: 1
+ }
+}
+
+@keyframes layui-fadein {
+ 0% {
+ opacity: 0
+ }
+ 100% {
+ opacity: 1
+ }
+}
+
+.layui-anim-fadein {
+ -webkit-animation-name: layui-fadein;
+ animation-name: layui-fadein
+}
+
+@-webkit-keyframes layui-fadeout {
+ 0% {
+ opacity: 1
+ }
+ 100% {
+ opacity: 0
+ }
+}
+
+@keyframes layui-fadeout {
+ 0% {
+ opacity: 1
+ }
+ 100% {
+ opacity: 0
+ }
+}
+
+.layui-anim-fadeout {
+ -webkit-animation-name: layui-fadeout;
+ animation-name: layui-fadeout
+}
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/code.css b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/code.css
new file mode 100644
index 0000000..0fee0c5
--- /dev/null
+++ b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/code.css
@@ -0,0 +1 @@
+html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 10px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view .layui-code-ol li:first-child{padding-top:10px}.layui-code-view .layui-code-ol li:last-child{padding-bottom:10px}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}.layui-code-demo .layui-code{visibility:visible!important;margin:-15px;border-top:none;border-right:none;border-bottom:none}.layui-code-demo .layui-tab-content{padding:15px;border-top:none}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/laydate/default/laydate.css b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/laydate/default/laydate.css
new file mode 100644
index 0000000..9f3064b
--- /dev/null
+++ b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/laydate/default/laydate.css
@@ -0,0 +1 @@
+.laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;animation-name:laydate-downbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.laydate-set-ym span,.layui-laydate-header i{padding:0 5px;cursor:pointer}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;color:#999;font-size:18px}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;height:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px 20px}.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px}.layui-laydate-footer span:hover{color:#5FB878}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{height:26px;line-height:26px;margin:0 0 0 -1px;padding:0 10px;border:1px solid #C9C9C9;background-color:#fff;white-space:nowrap;vertical-align:top;border-radius:2px}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#B5FFF8}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/icon-ext.png b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/icon-ext.png
new file mode 100644
index 0000000..bbbb669
Binary files /dev/null and b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/icon-ext.png differ
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/icon.png b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/icon.png
new file mode 100644
index 0000000..3e17da8
Binary files /dev/null and b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/icon.png differ
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/layer.css b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/layer.css
new file mode 100644
index 0000000..ef1db1d
--- /dev/null
+++ b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/layer.css
@@ -0,0 +1 @@
+.layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-load{background:url(loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:50px;line-height:50px;border-bottom:1px solid #F0F0F0;font-size:14px;color:#333;overflow:hidden;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:17px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:1px -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:300px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:20px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:300px;padding:0 20px;text-align:center;overflow:hidden;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{-webkit-animation-duration:.8s;animation-duration:.8s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}}
\ No newline at end of file
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-0.gif b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-0.gif
new file mode 100644
index 0000000..6f3c953
Binary files /dev/null and b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-0.gif differ
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-1.gif b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-1.gif
new file mode 100644
index 0000000..db3a483
Binary files /dev/null and b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-1.gif differ
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-2.gif b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-2.gif
new file mode 100644
index 0000000..5bb90fd
Binary files /dev/null and b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-2.gif differ
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.eot b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.eot
new file mode 100644
index 0000000..622d7ec
Binary files /dev/null and b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.eot differ
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.svg b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.svg
new file mode 100644
index 0000000..999ca1f
--- /dev/null
+++ b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.svg
@@ -0,0 +1,554 @@
+
+
+
+
+
+Created by iconfont
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.ttf b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.ttf
new file mode 100644
index 0000000..06e30f9
Binary files /dev/null and b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.ttf differ
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.woff b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.woff
new file mode 100644
index 0000000..66a1783
Binary files /dev/null and b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.woff differ
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.woff2 b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.woff2
new file mode 100644
index 0000000..47e9980
Binary files /dev/null and b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.woff2 differ
diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/layui.js b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/layui.js
new file mode 100644
index 0000000..f74410d
--- /dev/null
+++ b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/layui.js
@@ -0,0 +1,5 @@
+/** layui v2.6.3 | Released under the MIT license */
+ ;!function(t){"use strict";var e=document,n={modules:{},status:{},timeout:10,event:{}},r=function(){this.v="2.6.3"},o=function(){var t=e.currentScript?e.currentScript.src:function(){for(var t,n=e.scripts,r=n.length-1,o=r;o>0;o--)if("interactive"===n[o].readyState){t=n[o].src;break}return t||n[r].src}();return t.substring(0,t.lastIndexOf("/")+1)}(),a=function(e,n){n=n||"log",t.console&&console[n]&&console[n]("layui error hint: "+e)},i="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u=n.builtin={lay:"lay",layer:"layer",laydate:"laydate",laypage:"laypage",laytpl:"laytpl",layedit:"layedit",form:"form",upload:"upload",dropdown:"dropdown",transfer:"transfer",tree:"tree",table:"table",element:"element",rate:"rate",colorpicker:"colorpicker",slider:"slider",carousel:"carousel",flow:"flow",util:"util",code:"code",jquery:"jquery",all:"all","layui.all":"layui.all"};r.prototype.cache=n,r.prototype.define=function(t,e){var r=this,o="function"==typeof t,a=function(){var t=function(t,e){layui[t]=e,n.status[t]=!0};return"function"==typeof e&&e(function(r,o){t(r,o),n.callback[r]=function(){e(t)}}),this};return o&&(e=t,t=[]),r.use(t,a),r},r.prototype.use=function(t,r,l){function c(t,e){var r="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===t.type||r.test((t.currentTarget||t.srcElement).readyState))&&(n.modules[d]=e,y.removeChild(m),function o(){return++v>1e3*n.timeout/4?a(d+" is not a valid module","error"):void(n.status[d]?s():setTimeout(o,4))}())}function s(){l.push(layui[d]),t.length>1?p.use(t.slice(1),r,l):"function"==typeof r&&function(){return layui.jquery&&"function"==typeof layui.jquery?layui.jquery(function(){r.apply(layui,l)}):void r.apply(layui,l)}()}var p=this,f=n.dir=n.dir?n.dir:o,y=e.getElementsByTagName("head")[0];t=function(){return"string"==typeof t?[t]:"function"==typeof t?(r=t,["all"]):t}();var d=t[0],v=0;if(l=l||[],n.host=n.host||(f.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===t.length||layui["layui.all"]&&u[d])return s(),p;var h=(u[d]?f+"modules/":/^\{\/\}/.test(p.modules[d])?"":n.base||"")+(p.modules[d]||d)+".js";if(h=h.replace(/^\{\/\}/,""),!n.modules[d]&&layui[d]&&(n.modules[d]=h),n.modules[d])!function g(){return++v>1e3*n.timeout/4?a(d+" is not a valid module","error"):void("string"==typeof n.modules[d]&&n.status[d]?s():setTimeout(g,4))}();else{var m=e.createElement("script");m.async=!0,m.charset="utf-8",m.src=h+function(){var t=n.version===!0?n.v||(new Date).getTime():n.version||"";return t?"?v="+t:""}(),y.appendChild(m),!m.attachEvent||m.attachEvent.toString&&m.attachEvent.toString().indexOf("[native code")<0||i?m.addEventListener("load",function(t){c(t,h)},!1):m.attachEvent("onreadystatechange",function(t){c(t,h)}),n.modules[d]=h}return p},r.prototype.getStyle=function(e,n){var r=e.currentStyle?e.currentStyle:t.getComputedStyle(e,null);return r[r.getPropertyValue?"getPropertyValue":"getAttribute"](n)},r.prototype.link=function(t,r,o){var i=this,u=e.createElement("link"),l=e.getElementsByTagName("head")[0];"string"==typeof r&&(o=r);var c=(o||t).replace(/\.|\//g,""),s=u.id="layuicss-"+c,p=0;return u.rel="stylesheet",u.href=t+(n.debug?"?v="+(new Date).getTime():""),u.media="all",e.getElementById(s)||l.appendChild(u),"function"!=typeof r?i:(function f(){return++p>1e3*n.timeout/100?a(t+" timeout"):void(1989===parseInt(i.getStyle(e.getElementById(s),"width"))?function(){r()}():setTimeout(f,100))}(),i)},n.callback={},r.prototype.factory=function(t){if(layui[t])return"function"==typeof n.callback[t]?n.callback[t]:null},r.prototype.addcss=function(t,e,r){return layui.link(n.dir+"css/"+t,e,r)},r.prototype.img=function(t,e,n){var r=new Image;return r.src=t,r.complete?e(r):(r.onload=function(){r.onload=null,"function"==typeof e&&e(r)},void(r.onerror=function(t){r.onerror=null,"function"==typeof n&&n(t)}))},r.prototype.config=function(t){t=t||{};for(var e in t)n[e]=t[e];return this},r.prototype.modules=function(){var t={};for(var e in u)t[e]=u[e];return t}(),r.prototype.extend=function(t){var e=this;t=t||{};for(var n in t)e[n]||e.modules[n]?a(n+" Module already exists","error"):e.modules[n]=t[n];return e},r.prototype.router=function(t){var e=this,t=t||location.hash,n={path:[],search:{},hash:(t.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)?(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],e.each(t,function(t,e){/^\w+=/.test(e)?function(){e=e.split("="),n.search[e[0]]=e[1]}():n.path.push(e)}),n):n},r.prototype.url=function(t){var e=this,n={pathname:function(){var e=t?function(){var e=(t.match(/\.[^.]+?\/.+/)||[])[0]||"";return e.replace(/^[^\/]+/,"").replace(/\?.+/,"")}():location.pathname;return e.replace(/^\//,"").split("/")}(),search:function(){var n={},r=(t?function(){var e=(t.match(/\?.+/)||[])[0]||"";return e.replace(/\#.+/,"")}():location.search).replace(/^\?+/,"").split("&");return e.each(r,function(t,e){var r=e.indexOf("="),o=function(){return r<0?e.substr(0,e.length):0!==r&&e.substr(0,r)}();o&&(n[o]=r>0?e.substr(r+1):null)}),n}(),hash:e.router(function(){return t?(t.match(/#.+/)||[])[0]||"":location.hash}())};return n},r.prototype.data=function(e,n,r){if(e=e||"layui",r=r||localStorage,t.JSON&&t.JSON.parse){if(null===n)return delete r[e];n="object"==typeof n?n:{key:n};try{var o=JSON.parse(r[e])}catch(a){var o={}}return"value"in n&&(o[n.key]=n.value),n.remove&&delete o[n.key],r[e]=JSON.stringify(o),n.key?o[n.key]:o}},r.prototype.sessionData=function(t,e){return this.data(t,e,sessionStorage)},r.prototype.device=function(e){var n=navigator.userAgent.toLowerCase(),r=function(t){var e=new RegExp(t+"/([^\\s\\_\\-]+)");return t=(n.match(e)||[])[1],t||!1},o={os:function(){return/windows/.test(n)?"windows":/linux/.test(n)?"linux":/iphone|ipod|ipad|ios/.test(n)?"ios":/mac/.test(n)?"mac":void 0}(),ie:function(){return!!(t.ActiveXObject||"ActiveXObject"in t)&&((n.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:r("micromessenger")};return e&&!o[e]&&(o[e]=r(e)),o.android=/android/.test(n),o.ios="ios"===o.os,o.mobile=!(!o.android&&!o.ios),o},r.prototype.hint=function(){return{error:a}},r.prototype.each=function(t,e){var n,r=this;if("function"!=typeof e)return r;if(t=t||[],t.constructor===Object){for(n in t)if(e.call(t[n],n,t[n]))break}else for(n=0;n
a?1:o0;o--)if("interactive"===n[o].readyState){t=n[o].src;break}return t||n[r].src}();return t.substring(0,t.lastIndexOf("/")+1)},n.stope=function(t){t=t||window.event,t.stopPropagation?t.stopPropagation():t.cancelBubble=!0},n.each=function(t,e){var n,r=this;if("function"!=typeof e)return r;if(t=t||[],t.constructor===Object){for(n in t)if(e.call(t[n],n,t[n]))break}else for(n=0;n80?window.console&&console.error(u+".css: Invalid"):void(1989===parseInt(n.getStyle(e.getElementById(a),"width"))?r():setTimeout(l,100))}()},n.hasScrollbar=function(){return e.body.scrollHeight>(window.innerHeight||e.documentElement.clientHeight)},n.position=function(t,r,o){if(r){o=o||{},t!==e&&t!==n("body")[0]||(o.clickType="right");var i="right"===o.clickType?function(){var t=o.e||window.event||{};return{left:t.clientX,top:t.clientY,right:t.clientX,bottom:t.clientY}}():t.getBoundingClientRect(),c=r.offsetWidth,u=r.offsetHeight,a=function(t){return t=t?"scrollLeft":"scrollTop",e.body[t]|e.documentElement[t]},s=function(t){return e.documentElement[t?"clientWidth":"clientHeight"]},l=5,f=i.left,p=i.bottom;f+c+l>s("width")&&(f=s("width")-c-l),p+u+l>s()&&(i.top>u+l?p=i.top-u-2*l:"right"===o.clickType&&(p=s()-u-2*l,p<0&&(p=0)));var h=o.position;if(h&&(r.style.position=h),r.style.left=f+("fixed"===h?0:a(1))+"px",r.style.top=p+("fixed"===h?0:a())+"px",!n.hasScrollbar()){var d=r.getBoundingClientRect();!o.SYSTEM_RELOAD&&d.bottom+l>s()&&(o.SYSTEM_RELOAD=!0,setTimeout(function(){n.position(t,r,o)},50))}}},n.options=function(t,e){var r=n(t),o=e||"lay-options";try{return new Function("return "+(r.attr(o)||"{}"))()}catch(i){return hint.error("parseerror:"+i,"error"),{}}},n.isTopElem=function(t){var r=[e,n("body")[0]],o=!1;return n.each(r,function(e,n){if(n===t)return o=!0}),o},r.addStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),n.each(e,function(e,n){new RegExp("\\b"+n+"\\b").test(t)||(t=t+" "+n)}),t.replace(/^\s|\s$/,"")},r.removeStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),n.each(e,function(e,n){var r=new RegExp("\\b"+n+"\\b");r.test(t)&&(t=t.replace(r,""))}),t.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.prototype.find=function(t){var e=this,r=0,o=[],i="object"==typeof t;return this.each(function(n,c){for(var u=i?[t]:c.querySelectorAll(t||null);r0)return r[0].style[t]}():r.each(function(r,i){"object"==typeof t?n.each(t,function(t,e){i.style[t]=o(e)}):i.style[t]=o(e)})},r.prototype.width=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetWidth}():e.each(function(n,r){e.css("width",t)})},r.prototype.height=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetHeight}():e.each(function(n,r){e.css("height",t)})},r.prototype.attr=function(t,e){var n=this;return void 0===e?function(){if(n.length>0)return n[0].getAttribute(t)}():n.each(function(n,r){r.setAttribute(t,e)})},r.prototype.removeAttr=function(t){return this.each(function(e,n){n.removeAttribute(t)})},r.prototype.html=function(t){return this.each(function(e,n){n.innerHTML=t})},r.prototype.val=function(t){return this.each(function(e,n){n.value=t})},r.prototype.append=function(t){return this.each(function(e,n){"object"==typeof t?n.appendChild(t):n.innerHTML=n.innerHTML+t})},r.prototype.remove=function(t){return this.each(function(e,n){t?n.removeChild(t):n.parentNode.removeChild(n)})},r.prototype.on=function(t,e){return this.each(function(n,r){r.attachEvent?r.attachEvent("on"+t,function(t){t.target=t.srcElement,e.call(r,t)}):r.addEventListener(t,e,!1)})},r.prototype.off=function(t,e){return this.each(function(n,r){r.detachEvent?r.detachEvent("on"+t,e):r.removeEventListener(t,e,!1)})},window.lay=n,window.layui&&layui.define&&layui.define(function(e){e(t,n)})}();layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error: ";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?''+a.prev+" ":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push(''+(a.first||1)+" ");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r2&&e.push('… ');r<=u;r++)r===a.curr?e.push('"+r+" "):e.push(''+r+" ");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1…'),0!==t&&e.push(''+(a.last||a.pages)+" ")),e.join("")}(),next:function(){return a.next?''+a.next+" ":""}(),count:'共 '+a.count+" 条 ",limit:function(){var e=[''];return layui.each(a.limits,function(t,n){e.push('"+n+" 条/页 ")}),e.join("")+" "}(),refresh:['',' '," "].join(""),skip:function(){return['到第',' ','页确定 '," "].join("")}()};return['',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"
"].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;oi.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});!function(e){"use strict";var t=e.layui&&layui.define,a={getPath:e.lay&&lay.getPath?lay.getPath():"",link:function(t,a,l){n.path&&e.lay&&lay.link&&lay.link(n.path+t,a,l)}},n={v:"5.2.1",config:{},index:e.laydate&&e.laydate.v?1e5:0,path:a.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var l="laydate",i="",r=(t?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+i;return t?layui.addcss(r,e,l):a.link(r,e,l),this}},l=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",y=[100,2e5],d="layui-laydate-static",m="layui-laydate-list",c="laydate-selected",u="layui-laydate-hint",h="layui-laydate-footer",f=".laydate-btns-confirm",p="laydate-time-text",g=".laydate-btns-time",v=function(e){var t=this;t.index=++n.index,t.config=lay.extend({},t.config,n.config,e),n.ready(function(){t.init()})};v.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},v.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,isInitValue:!0,min:"1900-1-1",max:"2099-12-31",trigger:"click",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},v.prototype.lang=function(){var e=this,t=e.config,a={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"},timeout:"结束时间不能早于开始时间 请重新选择",invalidDate:"不在有效日期或时间范围内",formatError:["日期格式不合法 必须遵循下述格式: "," 已为你重置"]},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time Please re-select",invalidDate:"Invalid date",formatError:["The date format error Must be followed: "," It has been reset"]}};return a[t.lang]||a.cn},v.prototype.init=function(){var t=this,a=t.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",l="static"===a.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};a.elem=lay(a.elem),a.eventElem=lay(a.eventElem),a.elem[0]&&(a.range===!0&&(a.range="-"),i[a.type]||(e.console&&console.error&&console.error("laydate type error:'"+a.type+"' is not supported"),a.type="date"),a.format===i.date&&(a.format=i[a.type]||i.date),t.format=a.format.match(new RegExp(n+"|.","g"))||[],t.EXP_IF="",t.EXP_SPLIT="",lay.each(t.format,function(e,a){var l=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(t.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;t.EXP_IF=t.EXP_IF+l,t.EXP_SPLIT=t.EXP_SPLIT+"("+l+")"}),t.EXP_IF=new RegExp("^"+(a.range?t.EXP_IF+"\\s\\"+a.range+"\\s"+t.EXP_IF:t.EXP_IF)+"$"),t.EXP_SPLIT=new RegExp("^"+t.EXP_SPLIT+"$",""),t.isInput(a.elem[0])||"focus"===a.trigger&&(a.trigger="click"),a.elem.attr("lay-key")||(a.elem.attr("lay-key",t.index),a.eventElem.attr("lay-key",t.index)),a.mark=lay.extend({},a.calendar&&"cn"===a.lang?{"0-1-1":"元旦","0-2-14":"情人","0-3-8":"妇女","0-3-12":"植树","0-4-1":"愚人","0-5-1":"劳动","0-5-4":"青年","0-6-1":"儿童","0-9-10":"教师","0-9-18":"国耻","0-10-1":"国庆","0-12-25":"圣诞"}:{},a.mark),lay.each(["min","max"],function(e,t){var n=[],l=[];if("number"==typeof a[t]){var i=a[t],r=(new Date).getTime(),o=864e5,s=new Date(i?i0)return!0;var n=lay.elem("div",{"class":"layui-laydate-header"}),l=[function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("div",{"class":"laydate-set-ym"}),t=lay.elem("span"),a=lay.elem("span");return e.appendChild(t),e.appendChild(a),e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],y=lay.elem("div",{"class":"layui-laydate-content"}),d=lay.elem("table"),m=lay.elem("thead"),c=lay.elem("tr");lay.each(l,function(e,t){n.appendChild(t)}),m.appendChild(c),lay.each(new Array(6),function(e){var t=d.insertRow(0);lay.each(new Array(7),function(n){if(0===e){var l=lay.elem("th");l.innerHTML=a.weeks[n],c.appendChild(l)}t.insertCell(n)})}),d.insertBefore(m,d.children[0]),y.appendChild(d),i[e]=lay.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),i[e].appendChild(n),i[e].appendChild(y),r.push(l),o.push(y),s.push(d)}),lay(y).html(function(){var e=[],l=[];return"datetime"===t.type&&e.push(''+a.timeTips+" "),lay.each(t.btns,function(e,i){var r=a.tools[i]||"btn";t.range&&"now"===i||(n&&"clear"===i&&(r="cn"===t.lang?"重置":"Reset"),l.push(''+r+" "))}),e.push('"),e.join("")}()),lay.each(i,function(e,t){l.appendChild(t)}),t.showBottom&&l.appendChild(y),/^#/.test(t.theme)){var m=lay.elem("style"),c=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in m?(m.setAttribute("type","text/css"),m.styleSheet.cssText=c):m.innerHTML=c,lay(l).addClass("laydate-theme-molv"),l.appendChild(m)}e.remove(v.thisElemDate),n?t.elem.append(l):(document.body.appendChild(l),e.position()),e.checkDate().calendar(null,0,"init"),e.changeEvent(),v.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(lay.extend({},t.dateTime,{month:t.dateTime.month+1}))},v.prototype.remove=function(e){var t=this,a=(t.config,lay("#"+(e||t.elemID)));return a[0]?(a.hasClass(d)||t.checkDate(function(){a.remove(),delete t.endDate}),t):t},v.prototype.position=function(){var e=this,t=e.config;return lay.position(e.bindElem||t.elem[0],e.elem,{position:t.position}),e},v.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":u}));t.elem&&(a.innerHTML=e||"",lay(t.elem).find("."+u).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+u).remove()},3e3))},v.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},v.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},v.prototype.checkDate=function(e){var t,a,l=this,i=(new Date,l.config),r=l.lang(),o=i.dateTime=i.dateTime||l.systemDate(),s=l.bindElem||i.elem[0],d=(l.isInput(s)?"val":"html",l.isInput(s)?s.value:"static"===i.position?"":s.innerHTML),m=function(e){e.year>y[1]&&(e.year=y[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},c=function(e,t,n){var r=["startTime","endTime"];t=(t.match(l.EXP_SPLIT)||[]).slice(1),n=n||0,i.range&&(l[r[n]]=l[r[n]]||{}),lay.each(l.format,function(o,s){var d=parseFloat(t[o]);t[o].length'+a+""),n},v.prototype.limit=function(e,t,a,n){var l,i=this,r=i.config,o={},y=r[a>41?"endDate":"dateTime"],d=lay.extend({},y,t||{});return lay.each({now:d,min:r.min,max:r.max},function(e,t){o[e]=i.newDate(lay.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return lay.each(n,function(a,n){e[n]=t[n]}),e}())).getTime()}),l=o.nowo.max,e&&e[l?"addClass":"removeClass"](s),l},v.prototype.thisDateTime=function(e){var t=this,a=t.config;return e?t.endDate:a.dateTime},v.prototype.calendar=function(e,t,a){var l,i,r,s=this,d=s.config,t=t?1:0,m=e||s.thisDateTime(t),c=new Date,u=s.lang(),h="date"!==d.type&&"datetime"!==d.type,p=lay(s.table[t]).find("td"),g=lay(s.elemHeader[t][2]).find("span");return m.yeary[1]&&(m.year=y[1],s.hint(u.invalidDate)),s.firstDate||(s.firstDate=lay.extend({},m)),c.setFullYear(m.year,m.month,1),l=c.getDay(),i=n.getEndDate(m.month||12,m.year),r=n.getEndDate(m.month+1,m.year),lay.each(p,function(e,t){var a=[m.year,m.month],n=0;t=lay(t),t.removeAttr("class"),e=l&&e=a.firstDate.year&&(i.month=n.max.month,i.date=n.max.date),a.limit(lay(l),i,t),C++}),lay(c[v?0:1]).attr("lay-ym",C-8+"-"+D[1]).html(w+T+" - "+(C-1+T))}else if("month"===e)lay.each(new Array(12),function(e){var l=lay.elem("li",{"lay-ym":e}),r={year:D[0],month:e};e+1==D[1]&&lay(l).addClass(o),l.innerHTML=i.month[e]+(v?"月":""),y.appendChild(l),D[0]=a.firstDate.year&&(r.date=n.max.date),a.limit(lay(l),r,t)}),lay(c[v?0:1]).attr("lay-ym",D[0]+"-"+D[1]).html(D[0]+T);else if("time"===e){var k=function(){lay(y).find("ol").each(function(e,n){lay(n).find("li").each(function(n,l){a.limit(lay(l),[{hours:n},{hours:a[x].hours,minutes:n},{hours:a[x].hours,minutes:a[x].minutes,seconds:n}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),n.range||a.limit(lay(a.footer).find(f),a[x],0,["hours","minutes","seconds"])};n.range?a[x]||(a[x]={hours:0,minutes:0,seconds:0}):a[x]=l,lay.each([24,60,60],function(e,t){var n=lay.elem("li"),l=[""+i.time[e]+"
"];lay.each(new Array(t),function(t){l.push(""+lay.digit(t,2)+" ")}),n.innerHTML=l.join("")+" ",y.appendChild(n)}),k()}if(h&&u.removeChild(h),u.appendChild(y),"year"===e||"month"===e)lay(a.elemMain[t]).addClass("laydate-ym-show"),lay(y).find("li").on("click",function(){var i=0|lay(this).attr("lay-ym");if(!lay(this).hasClass(s)){0===t?(l[e]=i,a.limit(lay(a.footer).find(f),null,0)):a.endDate[e]=i;var d="year"===n.type||"month"===n.type;d?(lay(y).find("."+o).removeClass(o),lay(this).addClass(o),"month"===n.type&&"year"===e&&(a.listYM[t][0]=i,r&&(t?l.year=i:a.endDate.year=i),a.list("month",t))):(a.checkDate("limit").calendar(null,t),a.closeList()),a.setBtnStatus(),n.range||(("month"===n.type&&"month"===e||"year"===n.type&&"year"===e)&&a.setValue(a.parse()).remove().done(),a.done(null,"change")),lay(a.footer).find(g).removeClass(s)}});else{var E=lay.elem("span",{"class":p}),b=function(){lay(y).find("ol").each(function(e){var t=this,n=lay(t).find("li");t.scrollTop=30*(a[x][M[e]]-2),t.scrollTop<=0&&n.each(function(e,a){if(!lay(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=lay(d[2]).find("."+p);b(),E.innerHTML=n.range?[i.startTime,i.endTime][t]:i.timeTips,lay(a.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),d[2].appendChild(E),lay(y).find("ol").each(function(e){var t=this;lay(t).find("li").on("click",function(){var i=0|this.innerHTML;lay(this).hasClass(s)||(n.range?a[x][M[e]]=i:l[M[e]]=i,lay(t).find("."+o).removeClass(o),lay(this).addClass(o),k(),b(),(a.endDate||"time"===n.type)&&a.done(null,"change"),a.setBtnStatus())})})}return a},v.prototype.listYM=[],v.prototype.closeList=function(){var e=this;e.config;lay.each(e.elemCont,function(t,a){lay(this).find("."+m).remove(),lay(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),lay(e.elem).find("."+p).remove()},v.prototype.setBtnStatus=function(e,t,a){var n,l=this,i=l.config,r=l.lang(),o=lay(l.footer).find(f);i.range&&"time"!==i.type&&(t=t||i.dateTime,a=a||l.endDate,n=l.newDate(t).getTime()>l.newDate(a).getTime(),l.limit(null,t)||l.limit(null,a)?o.addClass(s):o[n?"addClass":"removeClass"](s),e&&n&&l.hint("string"==typeof e?r.timeout.replace(/日期/g,e):r.timeout))},v.prototype.parse=function(e,t){var a=this,n=a.config,l=t||(e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},n.dateTime,a.startTime):n.dateTime),i=a.format.concat();return lay.each(i,function(e,t){/yyyy|y/.test(t)?i[e]=lay.digit(l.year,t.length):/MM|M/.test(t)?i[e]=lay.digit(l.month+1,t.length):/dd|d/.test(t)?i[e]=lay.digit(l.date,t.length):/HH|H/.test(t)?i[e]=lay.digit(l.hours,t.length):/mm|m/.test(t)?i[e]=lay.digit(l.minutes,t.length):/ss|s/.test(t)&&(i[e]=lay.digit(l.seconds,t.length))}),n.range&&!e?i.join("")+" "+n.range+" "+a.parse(1):i.join("")},v.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},v.prototype.setValue=function(e){var t=this,a=t.config,n=t.bindElem||a.elem[0],l=t.isInput(n)?"val":"html";return"static"===a.position||lay(n)[l](e||""),this},v.prototype.stampRange=function(e,t){var a,n,l=this,i=l.config;i.range&&(a=l.newDate(i.dateTime).getTime(),n=l.newDate(l.endDate).getTime(),lay.each(t,function(t,i){var r=lay(i).attr("lay-ymd").split("-"),o=l.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();0==e?o>a&&lay(i).addClass(c):o0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(re.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(re.addEventListener||"load"===e.event.type||"complete"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(_e,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||"string"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),"object"!=typeof t&&"function"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,"")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||".5",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval",!t||pe._data(t[r],"globalEval"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,"input"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),"script"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||"")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r1&&"string"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,"script"),C),a=s.length;c ")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a=0&&n=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,"constructor")&&!ce.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ue[le.call(e)]||"object":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,"ms-").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;iT.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h="0",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG("*",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P="sizzle"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ye=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,xe=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||F.push(".#.+[+~]")}),i(function(e){var t=H.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),M.push("!=",oe)}),F=F.length&&new RegExp(F.join("|")),M=M.length&&new RegExp(M.join("|")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,"='$1']"),w.matchesSelector&&_&&!X[n+" "]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&$(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2],
+d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[P]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,"$1"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split("").sort(U).join("")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement("div"))}),i(function(e){return e.innerHTML=" ","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML=" ",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[":"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ce=/^.[^:#\[\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t1?pe.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,"string"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,"string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,"parentNode")},parentsUntil:function(e,t,n){return xe(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return xe(e,"nextSibling")},prevAll:function(e){return xe(e,"previousSibling")},nextUntil:function(e,t,n){return xe(e,"nextSibling",n)},prevUntil:function(e,t,n){return xe(e,"previousSibling",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\S+/g;pe.Callbacks=function(e){e="string"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[["resolve","done",pe.Callbacks("once memory"),"resolved"],["reject","fail",pe.Callbacks("once memory"),"rejected"],["notify","progress",pe.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler("ready"),pe(re).off("ready"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),"complete"===re.readyState||"loading"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener("DOMContentLoaded",s),e.addEventListener("load",s);else{re.attachEvent("onreadystatechange",s),e.attachEvent("onload",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll("left")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst="0"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName("body")[0],n&&n.style&&(t=re.createElement("div"),r=re.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement("div");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute("classid")===t)},qe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks("once memory").add(function(){pe._removeData(e,t+"queue"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length a ",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName("tbody").length,fe.htmlSerialize=!!e.getElementsByTagName("link").length,fe.html5Clone="<:nav>"!==re.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML="",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,""," "],legend:[1,""," "],area:[1,""," "],param:[1,""," "],thead:[1,""],tr:[2,""],col:[2,""],td:[3,""],_default:fe.htmlSerialize?[0,"",""]:[1,"X","
"]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|?\w+;/,Ve=/-1&&(h=p.split("."),p=h.shift(),h.sort()),a=p.indexOf(":")<0&&"on"+p,t=t[pe.expando]?t:new pe.Event(p,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,"events")||{})[t.type]&&pe._data(s,"handle"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,"events")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s ]","i"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,nt=/
+
+
+
+