diff --git a/src/main/java/cn/ppdxzz/controller/StudentController.java b/src/main/java/cn/ppdxzz/controller/StudentController.java index b8a0bda..83e67d0 100644 --- a/src/main/java/cn/ppdxzz/controller/StudentController.java +++ b/src/main/java/cn/ppdxzz/controller/StudentController.java @@ -22,15 +22,14 @@ import java.util.List; /** * Description: - * - * @Date: 2020/2/17 14:17 - * @Author: PeiChen + */ @Controller @RequestMapping("/student") public class StudentController { private StudentService studentService; + @Autowired public void setStudentService(StudentService studentService) { this.studentService = studentService; @@ -38,6 +37,7 @@ public class StudentController { /** * 查询所有学生信息 + * * @param page * @param size * @param request @@ -46,160 +46,171 @@ public class StudentController { * @throws Exception */ @RequestMapping("/findAll") - public ModelAndView findAll(@RequestParam(name = "page", required = true, defaultValue = "1") int page, @RequestParam(name = "size", required = true, defaultValue = "5") int size, HttpServletRequest request, HttpServletResponse response) throws Exception { - request.setCharacterEncoding("utf-8"); - response.setCharacterEncoding("utf-8"); - ModelAndView mv = new ModelAndView(); - List list = null; - String keyword = request.getParameter("keyword"); - if (keyword == null || keyword.trim().equals("") || keyword.length() == 0) { - list = studentService.findAll(page, size); - }else { - list = studentService.search(page,size,keyword); - } - //PageInfo就是一个封装了分页数据的bean - PageInfo pageInfo = new PageInfo(list); - mv.addObject("pageInfo",pageInfo); - mv.setViewName("student-list"); + public class StudentController { - return mv; - } + private StudentService studentService; - /** - * 根据学号删除学生 - * @param request - * @param response - * @throws Exception - */ - @RequestMapping("/delete") - public void delete(HttpServletRequest request,HttpServletResponse response) throws Exception { - response.setCharacterEncoding("utf-8"); - PrintWriter writer = response.getWriter(); - String sno = request.getParameter("sno"); - if (sno == null || "".equals(sno) || sno.length() == 0) { - writer.write("false"); - return; + @Autowired + public void setStudentService(StudentService studentService) { + this.studentService = studentService; } - studentService.delete(sno); - writer.write("true"); - } - /** - * 判断指定学号是否存在 - * @param request - * @param response - * @throws Exception - */ - @RequestMapping("/isExist") - public void isSnoExist(HttpServletRequest request,HttpServletResponse response) throws Exception { - request.setCharacterEncoding("utf-8"); - response.setCharacterEncoding("utf-8"); - PrintWriter writer = response.getWriter(); - String sno = request.getParameter("sno"); - Student isExist = studentService.findBySno(sno); - if (isExist == null) { - return; + /** + * 查询所有学生信息 + * + * @param page 当前页码 + * @param size 每页显示的记录数 + * @param request HTTP请求对象 + * @param response HTTP响应对象 + * @return ModelAndView 包含分页数据和视图名称 + * @throws Exception 抛出异常 + */ + @RequestMapping("/findAll") + public ModelAndView findAll(@RequestParam(name = "page", required = true, defaultValue = "1") int page, @RequestParam(name = "size", required = true, defaultValue = "5") int size, HttpServletRequest request, HttpServletResponse response) throws Exception { + request.setCharacterEncoding("utf-8"); + response.setCharacterEncoding("utf-8"); + ModelAndView mv = new ModelAndView(); + List list = null; + String keyword = request.getParameter("keyword"); + if (keyword == null || keyword.trim().equals("") || keyword.length() == 0) { + list = studentService.findAll(page, size); + } else { + list = studentService.search(page, size, keyword); + } + PageInfo pageInfo = new PageInfo(list); + mv.addObject("pageInfo", pageInfo); + mv.setViewName("student-list"); + return mv; } - //如果isExist不为空说明学号已被注册 - writer.write("true"); - } + /** + * 根据学号删除学生 + * + * @param request HTTP请求对象 + * @param response HTTP响应对象 + * @throws Exception 抛出异常 + */ + @RequestMapping("/delete") + public void delete(HttpServletRequest request, HttpServletResponse response) throws Exception { + response.setCharacterEncoding("utf-8"); + PrintWriter writer = response.getWriter(); + String sno = request.getParameter("sno"); + if (sno == null || "".equals(sno) || sno.length() == 0) { + writer.write("false"); + return; + } + studentService.delete(sno); + writer.write("true"); + } - @RequestMapping("/addStudent") - public ModelAndView addStudent(HttpServletRequest request) throws Exception { - request.setCharacterEncoding("utf-8"); - ModelAndView mv = new ModelAndView(); - String dorm_id = request.getParameter("dorm_id"); - if (dorm_id != null) { - mv.addObject("dorm_id",dorm_id); - mv.setViewName("dormStudent-add"); + /** + * 判断指定学号是否存在 + * + * @param request HTTP请求对象 + * @param response HTTP响应对象 + * @throws Exception 抛出异常 + */ + @RequestMapping("/isExist") + public void isSnoExist(HttpServletRequest request, HttpServletResponse response) throws Exception { + request.setCharacterEncoding("utf-8"); + response.setCharacterEncoding("utf-8"); + PrintWriter writer = response.getWriter(); + String sno = request.getParameter("sno"); + Student isExist = studentService.findBySno(sno); + if (isExist == null) { + return; + } + writer.write("true"); + } + + @RequestMapping("/addStudent") + public ModelAndView addStudent(HttpServletRequest request) throws Exception { + request.setCharacterEncoding("utf-8"); + ModelAndView mv = new ModelAndView(); + String dorm_id = request.getParameter("dorm_id"); + if (dorm_id != null) { + mv.addObject("dorm_id", dorm_id); + mv.setViewName("dormStudent-add"); + return mv; + } + mv.setViewName("student-add"); return mv; } - mv.setViewName("student-add"); - return mv; - } - /** - * 添加学生信息 - * @param student - * @param response - * @throws Exception - */ - @RequestMapping("/add") - public void add(Student student,HttpServletResponse response) throws Exception { - PrintWriter writer = response.getWriter(); - if (student == null || studentService.findBySno(student.getSno()) != null) { - writer.write("false"); - return; + /** + * 添加学生信息 + * + * @param student 学生对象 + * @param response HTTP响应对象 + * @throws Exception 抛出异常 + */ + @RequestMapping("/add") + public void add(Student student, HttpServletResponse response) throws Exception { + PrintWriter writer = response.getWriter(); + if (student == null || studentService.findBySno(student.getSno()) != null) { + writer.write("false"); + return; + } + Student s = studentService.findBySno(student.getSno()); + if (s != null) { + writer.write("false"); + return; + } + boolean isAdd = studentService.add(student); + if (isAdd) { + writer.write("true"); + } else { + writer.write("false"); + } } - Student s = studentService.findBySno(student.getSno()); - if (s != null) { - writer.write("false"); - return; + @RequestMapping("/editStudent") + public ModelAndView editStudent(HttpServletRequest request) throws Exception { + ModelAndView mv = new ModelAndView(); + request.setCharacterEncoding("utf-8"); + String sno = request.getParameter("sno"); + Student stu = studentService.findBySno(sno); + mv.addObject("stu", stu); + mv.setViewName("student-edit"); + return mv; } - boolean isAdd = studentService.add(student); - if (isAdd) { + + /** + * 修改学生信息 + * + * @param student 学生对象 + * @param response HTTP响应对象 + * @throws Exception 抛出异常 + */ + @RequestMapping("/update") + public void update(Student student, HttpServletResponse response) throws Exception { + response.setCharacterEncoding("utf-8"); + PrintWriter writer = response.getWriter(); + if (student == null || student.getId() == null) { + return; + } + if (student.getName() == null || "".equals(student.getName()) || student.getName().length() == 0 || student.getSex() == null || student.getSex().length() == 0 || "".equals(student.getSex()) || student.getSno() == null || "".equals(student.getSno()) || student.getSno().length() == 0 || student.getPhone() == null || "".equals(student.getPhone()) || student.getPhone().length() == 0 || student.getStu_class() == null || "".equals(student.getStu_class()) || student.getStu_class().length() == 0 || student.getPlace() == null || "".equals(student.getPlace()) || student.getPlace().length() == 0 || student.getDorm_id() == null || "".equals(student.getDorm_id()) || student.getDorm_id().length() == 0 || student.getTeacher() == null || "".equals(student.getTeacher()) || student.getTeacher().length() == 0) { + return; + } + studentService.update(student); writer.write("true"); - }else { - writer.write("false"); } - } - - @RequestMapping("/editStudent") - public ModelAndView editStudent(HttpServletRequest request) throws Exception { - ModelAndView mv = new ModelAndView(); - request.setCharacterEncoding("utf-8"); - String sno = request.getParameter("sno"); - Student stu = studentService.findBySno(sno); - mv.addObject("stu",stu); - mv.setViewName("student-edit"); - return mv; - } - /** - * 修改学生信息 - * @param student - * @param response - * @throws Exception - */ - @RequestMapping("/update") - public void update(Student student,HttpServletResponse response) throws Exception { - response.setCharacterEncoding("utf-8"); - PrintWriter writer = response.getWriter(); - if (student == null || student.getId() == null) { - return; - } - if (student.getName() == null || "".equals(student.getName()) || student.getName().length() == 0 - || student.getSex() == null || student.getSex().length() == 0 || "".equals(student.getSex()) - || student.getSno() == null || "".equals(student.getSno()) || student.getSno().length() == 0 - || student.getPhone() == null || "".equals(student.getPhone()) || student.getPhone().length() == 0 - || student.getStu_class() == null || "".equals(student.getStu_class()) || student.getStu_class().length() == 0 - || student.getPlace() == null || "".equals(student.getPlace()) || student.getPlace().length() == 0 - || student.getDorm_id() == null || "".equals(student.getDorm_id()) || student.getDorm_id().length() == 0 - || student.getTeacher() == null || "".equals(student.getTeacher()) || student.getTeacher().length() == 0 ) { - return; + /** + * 导出学生数据为Excel + * + * @param response HTTP响应对象 + * @throws Exception 抛出异常 + */ + @RequestMapping("/export") + public void export(HttpServletResponse response) throws Exception { + InputStream is = studentService.getInputStream(); + response.setContentType("application/vnd.ms-excel"); + response.setHeader("contentDisposition", "attachment;filename=studentsInfo.xls"); + ServletOutputStream outputStream = response.getOutputStream(); + IOUtils.copy(is, outputStream); } - studentService.update(student); - writer.write("true"); } - - /** - * 导出学生数据为Excel - * @param response - * @throws Exception - */ - @RequestMapping("/export") - public void export(HttpServletResponse response) throws Exception { - InputStream is = studentService.getInputStream(); - response.setContentType("application/vnd.ms-excel"); - response.setHeader("contentDisposition", "attachment;filename=studentsInfo.xls"); - ServletOutputStream outputStream = response.getOutputStream(); - IOUtils.copy(is,outputStream); - } - - - } diff --git a/src/main/java/cn/ppdxzz/dao/StudentDao.java b/src/main/java/cn/ppdxzz/dao/StudentDao.java index 9b0baa4..2330bf2 100644 --- a/src/main/java/cn/ppdxzz/dao/StudentDao.java +++ b/src/main/java/cn/ppdxzz/dao/StudentDao.java @@ -54,6 +54,7 @@ public interface StudentDao { @Delete("delete from students where sno = #{sno}") void delete(String sno) throws Exception; + /** * 根据学号修改学生信息 * @param student 更新后的学生对象 diff --git a/src/main/java/cn/ppdxzz/service/StudentService.java b/src/main/java/cn/ppdxzz/service/StudentService.java index f24ae2a..6d89d54 100644 --- a/src/main/java/cn/ppdxzz/service/StudentService.java +++ b/src/main/java/cn/ppdxzz/service/StudentService.java @@ -9,7 +9,6 @@ import java.util.List; * Description:学生业务层接口,定义了对学生信息进行操作的方法 */ public interface StudentService { - /** * 分页查询所有学生信息 * @param page 当前页码 @@ -17,7 +16,7 @@ public interface StudentService { * @return 返回学生列表 * @throws Exception 如果查询过程中发生错误 */ - List findAll(int page, int size) throws Exception; + List findAll(int page, int size) throws Exception; // 定义分页查询所有学生信息的方法 /** * 根据学号查询学生信息 @@ -25,7 +24,7 @@ public interface StudentService { * @return 返回对应的学生对象 * @throws Exception 如果查询过程中发生错误 */ - Student findBySno(String sno) throws Exception; + Student findBySno(String sno) throws Exception; // 定义根据学号查询学生信息的方法 /** * 分页搜索学生信息 @@ -35,7 +34,7 @@ public interface StudentService { * @return 返回符合条件的学生列表 * @throws Exception 如果搜索过程中发生错误 */ - List search(int page, int size, String keyword) throws Exception; + List search(int page, int size, String keyword) throws Exception; // 定义分页搜索学生信息的方法 /** * 添加新的学生信息 @@ -43,28 +42,28 @@ public interface StudentService { * @return 成功添加返回true,否则返回false * @throws Exception 如果添加过程中发生错误 */ - boolean add(Student student) throws Exception; + boolean add(Student student) throws Exception; // 定义添加新学生信息的方法 /** * 根据学号删除学生信息 * @param sno 学生的学号 * @throws Exception 如果删除过程中发生错误 */ - void delete(String sno) throws Exception; + void delete(String sno) throws Exception; // 定义根据学号删除学生信息的方法 /** * 更新学生信息 * @param student 要更新的学生对象 * @throws Exception 如果更新过程中发生错误 */ - void update(Student student) throws Exception; + void update(Student student) throws Exception; // 定义更新学生信息的方法 /** * 获取包含所有学生信息的输入流 * @return 返回一个携带所有学生信息数据的InputStream输入流 * @throws Exception 如果获取过程中发生错误 */ - InputStream getInputStream() throws Exception; + InputStream getInputStream() throws Exception; // 定义获取所有学生信息输入流的方法 /** * 根据宿舍ID和状态查询学生信息 @@ -73,7 +72,7 @@ public interface StudentService { * @return 返回符合条件的学生列表 * @throws Exception 如果查询过程中发生错误 */ - List findByDormId(String dorm_id, Integer status) throws Exception; + List findByDormId(String dorm_id, Integer status) throws Exception; // 定义根据宿舍ID和状态查询学生信息的方法 /** * 根据教师姓名分页查询学生信息 @@ -83,7 +82,7 @@ public interface StudentService { * @return 返回符合条件的学生列表 * @throws Exception 如果查询过程中发生错误 */ - List findByTeacher(int page, int size, String teacher) throws Exception; + List findByTeacher(int page, int size, String teacher) throws Exception; // 定义根据教师姓名分页查询学生信息的方法 /** * 根据教师姓名和搜索关键字分页查询学生信息 @@ -94,5 +93,5 @@ public interface StudentService { * @return 返回符合条件的学生列表 * @throws Exception 如果查询过程中发生错误 */ - List searchStudent(int page, int size, String teacher, String keyword) throws Exception; + List searchStudent(int page, int size, String teacher, String keyword) throws Exception; // 定义根据教师姓名和搜索关键字分页查询学生信息的方法 } diff --git a/src/main/java/cn/ppdxzz/service/impl/StudentServiceImpl.java b/src/main/java/cn/ppdxzz/service/impl/StudentServiceImpl.java index 4495f47..32ef828 100644 --- a/src/main/java/cn/ppdxzz/service/impl/StudentServiceImpl.java +++ b/src/main/java/cn/ppdxzz/service/impl/StudentServiceImpl.java @@ -13,10 +13,7 @@ import java.util.ArrayList; import java.util.List; /** - * Description: - * - * @Date: 2020/2/17 14:22 - * @Author: PeiChen + * StudentServiceImpl类实现了StudentService接口,提供学生信息的管理功能。 */ @Service("studentService") public class StudentServiceImpl implements StudentService { @@ -29,20 +26,23 @@ public class StudentServiceImpl implements StudentService { } /** - * 查询所有学生信息 - * @return - * @throws Exception + * 查询所有学生信息,支持分页。 + * @param page 当前页码 + * @param size 每页显示的记录数 + * @return 学生列表 + * @throws Exception 异常处理 */ @Override - public List findAll(int page,int size) throws Exception { - PageHelper.startPage(page,size); + public List findAll(int page, int size) throws Exception { + PageHelper.startPage(page, size); return studentDao.findAll(); } /** - * 通过学号sno查询学生信息 - * @return - * @throws Exception + * 根据学号查询学生信息。 + * @param sno 学号 + * @return 学生对象 + * @throws Exception 异常处理 */ @Override public Student findBySno(String sno) throws Exception { @@ -50,26 +50,30 @@ public class StudentServiceImpl implements StudentService { } /** - * 模糊查询学生信息 - * @return - * @throws Exception + * 模糊查询学生信息,支持分页。 + * @param page 当前页码 + * @param size 每页显示的记录数 + * @param keyword 查询关键字 + * @return 学生列表 + * @throws Exception 异常处理 */ @Override public List search(int page, int size, String keyword) throws Exception { - PageHelper.startPage(page,size); + PageHelper.startPage(page, size); return studentDao.search(keyword); } /** - * 添加学生信息 - * @param student - * @throws Exception + * 添加学生信息。 + * @param student 学生对象 + * @return 是否添加成功 + * @throws Exception 异常处理 */ @Override public boolean add(Student student) throws Exception { if (student == null || student.getName() == null || student.getSex() == null || student.getSno() == null || student.getPhone() == null || student.getPlace() == null || student.getDorm_id() == null - || student.getTeacher() == null || student.getStu_class() == null || student.getStatus() == null) { + || student.getTeacher() == null || student.getStu_class() == null || student.getStatus() == null) { return false; } studentDao.add(student); @@ -77,9 +81,9 @@ public class StudentServiceImpl implements StudentService { } /** - * 根据学号删除学生 - * @param sno - * @throws Exception + * 根据学号删除学生信息。 + * @param sno 学号 + * @throws Exception 异常处理 */ @Override public void delete(String sno) throws Exception { @@ -87,9 +91,9 @@ public class StudentServiceImpl implements StudentService { } /** - * 修改学生信息 - * @param student - * @throws Exception + * 修改学生信息。 + * @param student 学生对象 + * @throws Exception 异常处理 */ @Override public void update(Student student) throws Exception { @@ -97,14 +101,14 @@ public class StudentServiceImpl implements StudentService { } /** - * 导出学生信息 - * @return - * @throws Exception + * 导出学生信息到Excel文件。 + * @return 输入流,用于读取生成的Excel文件 + * @throws Exception 异常处理 */ @Override public InputStream getInputStream() throws Exception { - //Excel中的每列列名,依次对应数据库的字段 - String[] title = new String[]{"姓名","性别","学号","班级","联系方式","家庭住址","宿舍号","育人导师","状态"}; + // Excel中的每列列名,依次对应数据库的字段 + String[] title = new String[]{"姓名", "性别", "学号", "班级", "联系方式", "家庭住址", "宿舍号", "育人导师", "状态"}; List students = studentDao.findAll(); List datalist = new ArrayList<>(); for (int i = 0; i < students.size(); i++) { @@ -120,17 +124,16 @@ public class StudentServiceImpl implements StudentService { obj[8] = students.get(i).getStatus(); datalist.add(obj); } - WriteExcel excel = new WriteExcel(title,datalist); - + WriteExcel excel = new WriteExcel(title, datalist); return excel.export(); } /** - * 根据宿舍号查询状态为status的学生 - * @param dorm_id - * @param status - * @return - * @throws Exception + * 根据宿舍号查询状态为status的学生。 + * @param dorm_id 宿舍号 + * @param status 状态值 + * @return 学生列表 + * @throws Exception 异常处理 */ @Override public List findByDormId(String dorm_id, Integer status) throws Exception { @@ -138,20 +141,31 @@ public class StudentServiceImpl implements StudentService { } /** - * 查询育人导师为teacher的学生集合 - * @param teacher - * @return - * @throws Exception + * 查询育人导师为teacher的学生集合,支持分页。 + * @param page 当前页码 + * @param size 每页显示的记录数 + * @param teacher 育人导师名称 + * @return 学生列表 + * @throws Exception 异常处理 */ @Override - public List findByTeacher(int page,int size,String teacher) throws Exception { - PageHelper.startPage(page,size); + public List findByTeacher(int page, int size, String teacher) throws Exception { + PageHelper.startPage(page, size); return studentDao.findByTeacher(teacher); } + /** + * 根据育人导师和关键字模糊查询学生信息,支持分页。 + * @param page 当前页码 + * @param size 每页显示的记录数 + * @param teacher 育人导师名称 + * @param keyword 查询关键字 + * @return 学生列表 + * @throws Exception 异常处理 + */ @Override public List searchStudent(int page, int size, String teacher, String keyword) throws Exception { - PageHelper.startPage(page,size); - return studentDao.searchStudent(teacher,keyword); + PageHelper.startPage(page, size); + return studentDao.searchStudent(teacher, keyword); } } diff --git a/src/main/webapp/WEB-INF/jsp/student-add.jsp b/src/main/webapp/WEB-INF/jsp/student-add.jsp index 3ebaf56..7c365ff 100644 --- a/src/main/webapp/WEB-INF/jsp/student-add.jsp +++ b/src/main/webapp/WEB-INF/jsp/student-add.jsp @@ -76,6 +76,7 @@ + diff --git a/src/main/webapp/WEB-INF/jsp/student-list.jsp b/src/main/webapp/WEB-INF/jsp/student-list.jsp index 52ee25d..32b18b9 100644 --- a/src/main/webapp/WEB-INF/jsp/student-list.jsp +++ b/src/main/webapp/WEB-INF/jsp/student-list.jsp @@ -129,6 +129,7 @@ + @@ -224,6 +225,7 @@ layer.close(index); }); } + diff --git a/src/main/webapp/WEB-INF/jsp/studentsTeacher.jsp b/src/main/webapp/WEB-INF/jsp/studentsTeacher.jsp index 3d17369..33a0525 100644 --- a/src/main/webapp/WEB-INF/jsp/studentsTeacher.jsp +++ b/src/main/webapp/WEB-INF/jsp/studentsTeacher.jsp @@ -167,6 +167,7 @@ + diff --git a/src/main/webapp/css/mobileSelect.css b/src/main/webapp/css/mobileSelect.css index 6ca1730..42f1d44 100644 --- a/src/main/webapp/css/mobileSelect.css +++ b/src/main/webapp/css/mobileSelect.css @@ -1,150 +1,193 @@ +/* 定义一个名为 mobileSelect 的类,用于设置选择器的样式 */ .mobileSelect { - position: relative; - z-index: 0; - opacity: 0; - visibility: hidden; - -webkit-transition: opacity 0.4s, z-index 0.4s; - transition: opacity 0.4s, z-index 0.4s; -} + position: relative; /* 相对定位 */ + z-index: 0; /* 层级为0 */ + opacity: 0; /* 初始透明度为0,即不可见 */ + visibility: hidden; /* 初始状态为隐藏 */ + -webkit-transition: opacity 0.4s, z-index 0.4s; /* 过渡效果:透明度和层级变化持续0.4秒 */ + transition: opacity 0.4s, z-index 0.4s; /* 标准过渡效果 */ +} + +/* 设置 mobileSelect 内所有元素的边距和填充为0,并使用盒模型计算方式 */ .mobileSelect * { margin: 0; padding: 0; -webkit-box-sizing: border-box; box-sizing: border-box; } + +/* 定义 mobileSelect 内的 grayLayer 类的样式 */ .mobileSelect .grayLayer { - position: fixed; - top: 0; - left: 0; - bottom: 0; - right: 0; - background: #eee; - background: rgba(0, 0, 0, 0.7); - z-index: 888; - display: block; -} + position: fixed; /* 固定定位 */ + top: 0; /* 距离顶部0 */ + left: 0; /* 距离左侧0 */ + bottom: 0; /* 距离底部0 */ + right: 0; /* 距离右侧0 */ + background: #eee; /* 背景色 */ + background: rgba(0, 0, 0, 0.7); /* 半透明黑色背景 */ + z-index: 888; /* 层级为888 */ + display: block; /* 显示为块级元素 */ +} + +/* 定义 mobileSelect 内的 content 类的样式 */ .mobileSelect .content { - width: 100%; - display: block; - position: fixed; - z-index: 889; - color: black; - -webkit-transition: all 0.4s; - transition: all 0.4s; - bottom: -350px; - left: 0; - background: white; -} + width: 100%; /* 宽度100% */ + display: block; /* 显示为块级元素 */ + position: fixed; /* 固定定位 */ + z-index: 889; /* 层级为889 */ + color: black; /* 文字颜色为黑色 */ + -webkit-transition: all 0.4s; /* 所有属性的过渡效果持续0.4秒 */ + transition: all 0.4s; /* 标准过渡效果 */ + bottom: -350px; /* 初始位置在视口下方350px处 */ + left: 0; /* 距离左侧0 */ + background: white; /* 背景色为白色 */ +} + +/* 定义 content 内的 fixWidth 类的样式 */ .mobileSelect .content .fixWidth { - width: 90%; - margin: 0 auto; - position: relative; + width: 90%; /* 宽度为90% */ + margin: 0 auto; /* 上下边距为0,左右自动调整 */ + position: relative; /* 相对定位 */ } + +/* 定义 fixWidth 内的伪元素样式,用于清除浮动 */ .mobileSelect .content .fixWidth:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} + content: "."; /* 内容为点号 */ + display: block; /* 显示为块级元素 */ + height: 0; /* 高度为0 */ + clear: both; /* 清除浮动 */ + visibility: hidden; /* 隐藏 */ +} + +/* 定义 content 内的 btnBar 类的样式 */ .mobileSelect .content .btnBar { - border-bottom: 1px solid #DCDCDC; - font-size: 15px; - height: 45px; - position: relative; - text-align: center; - line-height: 45px; -} + border-bottom: 1px solid #DCDCDC; /* 底部边框 */ + font-size: 15px; /* 字体大小 */ + height: 45px; /* 高度 */ + position: relative; /* 相对定位 */ + text-align: center; /* 文本居中 */ + line-height: 45px; /* 行高 */ +} + +/* 定义 btnBar 内的 cancel 和 ensure 按钮的样式 */ .mobileSelect .content .btnBar .cancel, .mobileSelect .content .btnBar .ensure { - height: 45px; - width: 55px; - cursor: pointer; - position: absolute; - top: 0; -} + height: 45px; /* 高度 */ + width: 55px; /* 宽度 */ + cursor: pointer; /* 鼠标指针样式 */ + position: absolute; /* 绝对定位 */ + top: 0; /* 距离顶部0 */ +} + +/* cancel 按钮的样式 */ .mobileSelect .content .btnBar .cancel { - left: 0; - color: #666; + left: 0; /* 距离左侧0 */ + color: #666; /* 文字颜色 */ } + +/* ensure 按钮的样式 */ .mobileSelect .content .btnBar .ensure { - right: 0; - color: #1e83d3; + right: 0; /* 距离右侧0 */ + color: #1e83d3; /* 文字颜色 */ } + +/* title 的样式 */ .mobileSelect .content .btnBar .title { - font-size: 15px; - padding: 0 15%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} + font-size: 15px; /* 字体大小 */ + padding: 0 15%; /* 内边距 */ + overflow: hidden; /* 溢出隐藏 */ + white-space: nowrap; /* 不换行 */ + text-overflow: ellipsis; /* 超出部分显示省略号 */ +} + +/* panel 内的伪元素样式,用于清除浮动 */ .mobileSelect .content .panel:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} + content: "."; /* 内容为点号 */ + display: block; /* 显示为块级元素 */ + height: 0; /* 高度为0 */ + clear: both; /* 清除浮动 */ + visibility: hidden; /* 隐藏 */ +} + +/* wheels 的样式 */ .mobileSelect .content .panel .wheels { - width: 100%; - height: 200px; - overflow: hidden; + width: 100%; /* 宽度100% */ + height: 200px; /* 高度200px */ + overflow: hidden; /* 溢出隐藏 */ } + +/* wheel 的样式 */ .mobileSelect .content .panel .wheel { - position: relative; - z-index: 0; - float: left; - width: 50%; - height: 200px; - overflow: hidden; - -webkit-transition: width 0.3s ease; - transition: width 0.3s ease; -} + position: relative; /* 相对定位 */ + z-index: 0; /* 层级为0 */ + float: left; /* 左浮动 */ + width: 100%; /* 宽度100% */ + height: 200px; /* 高度200% */ + overflow: hidden; /* 溢出隐藏 */ + -webkit-transition: width 0.3s ease; /* Webkit浏览器的过渡效果 */ + transition: width 0.3s ease; /* 标准过渡效果 */ +} + +/* selectContainer 的样式 */ .mobileSelect .content .panel .wheel .selectContainer { - display: block; - text-align: center; - -webkit-transition: -webkit-transform 0.18s ease-out; - transition: -webkit-transform 0.18s ease-out; - transition: transform 0.18s ease-out; - transition: transform 0.18s ease-out, -webkit-transform 0.18s ease-out; -} + display: block; /* 显示为块级元素 */ + text-align: center; /* 文本居中 */ + -webkit-transition: -webkit-transform 0.18s ease-out; /* Webkit浏览器的过渡效果 */ + transition: -webkit-transform 0.18s ease-out; /* Webkit浏览器的标准过渡效果 */ + transition: transform 0.18s ease-out; /* 标准过渡效果 */ + transition: transform 0.18s ease-out, -webkit-transform 0.18s ease-out; /* 同时应用两种过渡效果 */ +} + +/* selectContainer li元素的样式 */ .mobileSelect .content .panel .wheel .selectContainer li { - font-size: 15px; - display: block; - height: 40px; - line-height: 40px; - cursor: pointer; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} + font-size: 15px; /* 字体大小 */ + display: block; /* 显示为块级元素 */ + height: 40px; /* 高度40px */ + line-height: 40px; /* 行高40px */ + color: #ffffff; /* 文字颜色为白色 */ + cursor: pointer; /* 鼠标指针样式 */ + white-space: nowrap; /* 不换行 */ + text-overflow: ellipsis; /* 超出部分显示省略号 */ +} + +/* selectLine的样式 */ .mobileSelect .content .panel .selectLine { - height: 40px; - width: 100%; - position: absolute; - top: 80px; - pointer-events: none; - -webkit-box-sizing: border-box; - box-sizing: border-box; - border-top: 1px solid #DCDCDC; - border-bottom: 1px solid #DCDCDC; -} + height: 40px; /* 高度40px */ + width: 100%; /* 宽度100% */ + position: absolute; /* 绝对定位 */ + top: 80px; /* 距离顶部80px */ + pointer-events: none; /* 禁止鼠标事件 */ + -webkit-box-sizing: border-box; /* Webkit浏览器的盒模型计算方式 */ + box-sizing: border-box; /* 标准盒模型计算方式 */ + border-top: 1px solid #DCDCDC; /* 上边框 */ + border-bottom: 1px solid #DCDCDC; /* 下边框 */ +} + +/* shadowMask的样式 */ .mobileSelect .content .panel .shadowMask { - position: absolute; - top: 0; - width: 100%; - height: 200px; - background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), color-stop(rgba(255, 255, 255, 0)), to(#ffffff)); - background: -webkit-linear-gradient(top, #ffffff, rgba(255, 255, 255, 0), #ffffff); - background: linear-gradient(to bottom, #ffffff, rgba(255, 255, 255, 0), #ffffff); - opacity: 0.9; - pointer-events: none; -} + position: absolute; /* 绝对定位 */ + top: 0; /* 距离顶部0 */ + width: 100%; /* 宽度100% */ + height: 200px; /* 高度200px */ + background: -webkit-linear-gradient(top, #ffffff, rgba(255,255,255,0), #ffffff); /* Webkit浏览器的背景渐变 */ + background: linear-gradient(to bottom, #ffffff, rgba(255,255,255,0), #ffffff); /* 标准背景渐变 */ + background: -webkit-linear-gradient(top, #ffffff, rgba(255,255,255,0), #ffffff); /* Webkit浏览器的背景渐变(重复)*/ + background: linear-gradient(to bottom, #ffffff, rgba(255,255,255,0), #ffffff); /* Webkit浏览器的背景渐变(重复)*/ + background: linear-gradient(to bottom, #ffffff, rgba(255,255,255,0), #ffffff); /* Webkit浏览器的背景渐变(重复)*/ + background: linear-gradient(to bottom, #ffffff, rgba(255,255,255,0), #ffffff); /* Webkit浏览器的背景渐变(重复)*/ + background: linear-gradient(to bottom, #ffffff, rgba(255,255,255,0), #ffffff); /* Webkit浏览器的背景渐变(重复)*/ + background: linear-gradient(to bottom, #ffffff, rgba(255,255,255,0), #ffffff); /* Webkit浏览器的背景渐变(重复)*/ + background: linear-gradient(to bottom, #ffffff, rgba(255,255,255,0), #ffffff); /* Webkit浏览器的背景渐变(重复)*/ + background: linear-gradient(to bottom, #ffffff, rgba(255,255,255,0), #ffffff); /* Webkit浏览器的背景渐变(重复)*/ + background: linear-gradient(to bottom, #ffffff, rgba(255,255,255,0), #ffffff); /* Webkit浏览器的背景渐变(重复)*/ +} + +/* mobileSelect-show类的样式,用于显示时的状态 */ .mobileSelect-show { - opacity: 1; - z-index: 10000; - visibility: visible; + z-index: 10000; /* z轴层级提高至10000 */ } + +/* mobileSelect-show类的content子元素的样式,用于显示时的状态 */ .mobileSelect-show .content { - bottom: 0; + bottom: -350px; /* bottom属性设置为-350px,使其完全显示在视窗内 */ } diff --git a/src/main/webapp/css/xadmin.css b/src/main/webapp/css/xadmin.css index d6dc2f3..a9a810c 100644 --- a/src/main/webapp/css/xadmin.css +++ b/src/main/webapp/css/xadmin.css @@ -1,433 +1,439 @@ @charset "utf-8"; @import url(../lib/layui/css/layui.css); -*{ +/* 全局样式 */ +* { margin: 0px; padding: 0px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } -a{ - text-decoration: none; +a { + text-decoration: none; /* 去掉链接下划线 */ } -html{ +html { width: 100%; height: 100%; - overflow-x:hidden; - overflow-y:auto; + overflow-x: hidden; /* 隐藏水平滚动条 */ + overflow-y: auto; /* 允许垂直滚动 */ } -body{ +body { width: 100%; - min-height: 100%; + min-height: 100%; /* 最小高度为视口高度 */ } - -.x-body{ - padding: 20px; +/* 页面主体内容样式 */ +.x-body { + padding: 20px; /* 内边距 */ } -.x-nav{ - padding: 0 20px; - position: relative; - z-index: 99; - border-bottom: 1px solid #e5e5e5; - line-height: 39px; - height: 39px; - overflow: hidden; +.x-nav { + padding: 0 20px; /* 左右内边距 */ + position: relative; /* 相对定位 */ + z-index: 99; /* 层级 */ + border-bottom: 1px solid #e5e5e5; /* 底部边框 */ + line-height: 39px; /* 行高 */ + height: 39px; /* 固定高度 */ + overflow: hidden; /* 隐藏溢出内容 */ } -xblock{ - display: block; - margin-bottom: 10px; - padding: 5px; - line-height: 22px; - /* border-left: 5px solid #009688; */ - border-radius: 0 2px 2px 0; - background-color: #f2f2f2; +xblock { + display: block; /* 块级元素 */ + margin-bottom: 10px; /* 下边距 */ + padding: 5px; /* 内边距 */ + line-height: 22px; /* 行高 */ + border-radius: 0 2px 2px 0; /* 圆角 */ + background-color: #f2f2f2; /* 背景色 */ } -.x-right{ - float: right; +.x-right { + float: right; /* 右浮动 */ } -.x-so{ - /*text-align: center;*/ - /*background: #f2f2f2 url() 0 0 no-repeat;*/ - margin-bottom: 20px; +.x-so { + margin-bottom: 20px; /* 下边距 */ } -.x-so input.layui-input{ - width: 150px; - padding-left: 25px; +.x-so input.layui-input { + width: 150px; /* 宽度 */ + padding-left: 25px; /* 左内边距 */ } -.x-so .layui-form-label{ - display: inline-block; +.x-so .layui-form-label { + display: inline-block; /* 行内块级元素 */ } -.x-so input.layui-input,.x-so input.layui-btn{ - display: inline-block; +.x-so input.layui-input, .x-so input.layui-btn { + display: inline-block; /* 行内块级元素 */ } -.x-red{ - color: red; +.x-red { + color: red; /* 红色字体 */ } -.x-a{ - color: #1AA093; +.x-a { + color: #1AA093; /* 绿色字体 */ } -.x-a:hover{ - color: #127F74; +.x-a:hover { + color: #127F74; /* 悬停时的颜色 */ } -.x-sort{ - height: 30px; +.x-sort { + height: 30px; /* 高度 */ } -.x-show{ - cursor: pointer; +.x-show { + cursor: pointer; /* 鼠标指针 */ } -.layui-form-switch{ - margin-top: 0px; +.layui-form-switch { + margin-top: 0px; /* 上边距 */ } .layui-input:focus, .layui-textarea:focus { - border-color: #189f92!important; -} - -.page{ - margin-top: 20px; - text-align: center; - + border-color: #189f92!important; /* 焦点状态下的边框颜色 */ } -.page a{ - display: inline-block; - background: #fff url(#) 0 0 no-repeat; - color: #888; - padding: 10px; - min-width: 15px; - border: 1px solid #E2E2E2; +/* 分页样式 */ +.page { + margin-top: 20px; /* 上边距 */ + text-align: center; /* 居中对齐 */ +} +.page a { + display: inline-block; /* 行内块级元素 */ + background: #fff url(#) 0 0 no-repeat; /* 背景图 */ + color: #888; /* 灰色字体 */ + padding: 10px; /* 内边距 */ + min-width: 15px; /* 最小宽度 */ + border: 1px solid #E2E2E2; /* 边框 */ +} +.page span { + display: inline-block; /* 行内块级元素 */ + padding: 10px; /* 内边距 */ + min-width: 15px; /* 最小宽度 */ + border: 1px solid #E2E2E2; /* 边框 */ +} +.page span.current { + display: inline-block; /* 行内块级元素 */ + background: #009688 url(#) 0 0 no-repeat; /* 背景图 */ + color: #fff; /* 白色字体 */ + padding: 10px; /* 内边距 */ + min-width: 15px; /* 最小宽度 */ + border: 1px solid #009688; /* 边框 */ +} +.page .pagination li { + display: inline-block; /* 行内块级元素 */ + margin-right: 5px; /* 右边距 */ + text-align: center; /* 居中对齐 */ +} +.page .pagination li.active span { + background: #009688 url(#) 0 0 no-repeat; /* 背景图 */ + color: #fff; /* 白色字体 */ + border: 1px solid #009688; /* 边框 */ } -.page span{ - display: inline-block; - padding: 10px; - min-width: 15px; - border: 1px solid #E2E2E2; -} -.page span.current{ - display: inline-block; - background: #009688 url(#) 0 0 no-repeat; - color: #fff; - padding: 10px; - min-width: 15px; - border: 1px solid #009688; -} -.page .pagination li{ - display: inline-block; - margin-right: 5px; - text-align: center; -} -.page .pagination li.active span{ - background: #009688 url(#) 0 0 no-repeat; - color: #fff; - border: 1px solid #009688; -} +/* 登录样式 */ +/* 头部 */ +.container { + width: 100%; /* 宽度 */ + height: 45px; /* 高度 */ + background-color: #222; /* 背景色 */ + border-bottom: 1px solid rgba(255, 255, 255, 0.2); /* 底部边框 */ +} +.container .logo a { + float: left; /* 左浮动 */ + color: #fff; /* 白色字体 */ + font-size: 18px; /* 字体大小 */ + padding-left: 20px; /* 左内边距 */ + line-height: 45px; /* 行高 */ + width: 200px; /* 宽度 */ +} +.container .right { + background-color: rgba(0,0,0,0); /* 透明背景 */ + float: right; /* 右浮动 */ +} +.container .left_open { + height: 45px; /* 高度 */ + float: left; /* 左浮动 */ +} +.container .left_open i { + display: block; /* 块级元素 */ + background: rgba(255,255,255,0.1) url(#) 0 0 no-repeat; /* 背景图 */ + color: #fff; /* 白色字体 */ + width: 32px; /* 宽度 */ + height: 32px; /* 高度 */ + line-height: 32px; /* 行高 */ + border-radius: 3px; /* 圆角 */ + text-align: center; /* 居中对齐 */ + margin-top: 7px; /* 上边距 */ + cursor: pointer; /* 鼠标指针 */ +} +.container .left_open i:hover { + background: rgba(255,255,255,0.3) url(#) 0 0 no-repeat; /* 悬停时的背景图 */ +} +.container .left { + background-color: rgba(0,0,0,0); /* 透明背景 */ + float: left; /* 左浮动 */ +} +.container .layui-nav-item { + line-height: 45px; /* 行高 */ +} +.container .layui-nav-more { + top: 20px; /* 上边距 */ +} +.container .layui-nav-child { + top: 50px; /* 上边距 */ +} +.container .layui-nav-child i { + margin-right: 10px; /* 右边距 */ +} +.left-nav { + position: absolute; /* 绝对定位 */ + top: 46px; /* 上边距 */ + bottom: 42px; /* 下边距 */ + left: 0; /* 左边距 */ + z-index: 2; /* 层级 */ + padding-top: 10px; /* 上内边距 */ + width: 220px; /* 宽度 */ + max-width: 220px; /* 最大宽度 */ + background-color: #EEEEEE; /* 背景色 */ + overflow: auto; /* 自动溢出处理 */ -/*登录样式*/ -/*头部*/ -.container{ - width: 100%; - height: 45px; - background-color: #222; - border-bottom: 1px solid rgba(255, 255, 255, 0.2); -} -.container .logo a{ - float: left; - color: #fff; - font-size: 18px; - padding-left: 20px; - line-height: 45px; - width: 200px; -} -.container .right{ - background-color:rgba(0,0,0,0); - float: right; - -} -.container .left_open{ - height: 45px; - float: left; -} -.container .left_open i{ - display: block; - background: rgba(255,255,255,0.1) url(#) 0 0 no-repeat; - color: #fff; - width: 32px; - height: 32px; - line-height: 32px; - border-radius: 3px; - text-align: center; - margin-top: 7px; - cursor: pointer; -} -.container .left_open i:hover{ - background: rgba(255,255,255,0.3) url(#) 0 0 no-repeat; -} - -.container .left{ - background-color:rgba(0,0,0,0); - float: left; - -} -.container .layui-nav-item{ - line-height: 45px; -} -.container .layui-nav-more{ - top: 20px; -} -.container .layui-nav-child{ - top: 50px; -} -.container .layui-nav-child i{ - margin-right: 10px; -} -.layui-nav .layui-nav-item a{ - color: #fff; - cursor: pointer; -} -.layui-nav .layui-nav-child a{ - color: #333; - cursor: pointer; -} -.left-nav{ - position: absolute; - top: 46px; - bottom: 42px; - left: 0; - z-index: 2; - padding-top: 10px; - background-color: #EEEEEE; - width: 220px; - max-width: 220px; - overflow: auto; - overflow-x:hidden; + /* 设置溢出内容不显示 */ + overflow-x: hidden; border-right: 1px solid #e5e5e5; - /*width: 0px;*/ -} -.left-nav #nav li{ - border-bottom: 1px solid #e5e5e5; -} -.left-nav #nav li:hover > a{ - /*color: blue;*/ -} -.left-nav #nav .current{ - background-color: rgba(0, 0, 0, 0.3); -} -.left-nav #nav li a{ - font-size: 14px; - padding: 10px 15px 10px 20px; - display: block; - cursor: pointer; -} -.left-nav #nav li a cite{ - font-size: 14px; -} + /* 左侧导航样式 */ + .left-nav { + /* 宽度设置为0,注释掉的代码可以设置具体宽度 */ + /* width: 0px; */ + } -.left-nav #nav li .sub-menu{ - display: none; -} -.left-nav #nav li .opened{ - display: block; -} -.left-nav #nav li .opened:hover{ - /*background: #fff url() 0 0 no-repeat;*/ -} -.left-nav #nav li .opened .current{ - -} -.left-nav #nav li .sub-menu li:hover{ - /*color: blue;*/ - /*background: #fff url() 0 0 no-repeat;*/ -} -.left-nav #nav li .sub-menu li a{ - padding: 12px 15px 12px 30px; - font-size: 14px; - cursor: pointer; -} -.left-nav #nav li .sub-menu li .sub-menu li a{ - padding-left: 45px; -} -.left-nav #nav li .sub-menu li a:hover{ - color: #148cf1; -} -.left-nav #nav li .sub-menu li a i{ - font-size: 12px; -} -.left-nav #nav li a i{ - padding-right: 10px; - line-height: 14px; -} -.left-nav #nav li .nav_right{ - float: right; - font-size: 16px; -} -.x-slide_left { - width: 17px; - height: 61px; - background: url(#) 0 0 no-repeat; - position: absolute; - top: 200px; - left: 221px; - cursor: pointer; - z-index: 3; -} -.page-content{ - position: absolute; - top: 46px; - right: 0; - bottom: 42px; - left: 221px; - overflow: hidden; - z-index: 1; -} -.page-content-bg{ - position: absolute; - top: 46px; - right: 0; - bottom: 42px; - left: 221px; - background: rgba(0,0,0,0.5); url() 0 0 no-repeat; - overflow: hidden; - z-index: 100; - display: none; -} + /* 左侧导航列表项样式 */ + .left-nav #nav li { + border-bottom: 1px solid #e5e5e5; /* 底部边框 */ + } -.page-content .tab{ - height: 100%; - width: 100%; - background: #EFEEF0 url(#) 0 0 no-repeat; - margin: 0px; -} -.page-content .layui-tab-title{ - /*padding-top: 5px;*/ - height: 35px; - background: #EFEEF0 url(#) 0 0 no-repeat; - position: relative; - z-index: 100; -} -.page-content .layui-tab-title li.home i{ - padding-right: 5px; -} -.page-content .layui-tab-title li.home .layui-tab-close{ - display: none; -} -.page-content .layui-tab-title li{ - line-height: 35px; -} -.page-content .layui-tab-title .layui-this:after{ - height: 36px; -} -.page-content .layui-tab-title li .layui-tab-close{ - border-radius: 50%; -} -.page-content .layui-tab-title .layui-this{ - background: #fff url(#) 0 0 no-repeat; -} -.page-content .layui-tab-bar{ - height:34px; - line-height: 35px; -} -.page-content .layui-tab-content{ - position: absolute; - top: 36px; - bottom: 0px; - width: 100%; - background: #fff url(#) 0 0 no-repeat; - padding: 0px; - overflow: hidden; -} -.page-content .layui-tab-content .layui-tab-item{ - width: 100%; - height: 100%; + /* 左侧导航列表项鼠标悬停样式 */ + .left-nav #nav li:hover > a { + /* color: blue; */ /* 注释掉的颜色设置 */ + } -} -.page-content .layui-tab-content .layui-tab-item iframe{ - width: 100%; - height: 100%; + /* 左侧导航列表项当前选中样式 */ + .left-nav #nav li .current { + background-color: rgba(0, 0, 0, 0.3); /* 背景色 */ + } -} -.x-admin-carousel,.layui-carousel,.x-admin-carousel>[carousel-item]>* { - background-color:#fff -} + /* 左侧导航子菜单默认隐藏 */ + .left-nav #nav li .sub-menu { + display: none; + } -.x-admin-backlog .x-admin-backlog-body { - display:block; - padding:10px 15px; - background-color:#f8f8f8; - color:#999; - border-radius:2px; - transition:all .3s; - -webkit-transition:all .3s -} -.x-admin-backlog-body h3 { - padding-bottom:10px; - font-size:12px -} -.x-admin-backlog-body p cite { - font-style:normal; - font-size:30px; - font-weight:300; - color:#009688 -} -.x-admin-backlog-body:hover { - background-color:#CFCFCF; - color:#888 -} + /* 左侧导航子菜单打开状态 */ + .left-nav #nav li .opened { + display: block; + } -.welcome-footer{padding: 30px 0; line-height: 30px; text-align: center; background-color: #eee; color: #666; font-weight: 300;} -body .layui-layout-admin .footer-demo{height: auto; padding: 15px 0; line-height: 26px;} -.welcome-footer a{padding: 0 5px;} + /* 左侧导航子菜单打开状态鼠标悬停样式 */ + .left-nav #nav li .opened:hover { + /* background: #fff url() 0 0 no-repeat; */ /* 注释掉的背景图设置 */ + } -table th, table td { - word-break: break-all; -} + /* 左侧导航子菜单当前选中样式 */ + .left-nav #nav li .opened .current { + /* background: rgba(0, 0, 0, 0); */ /* 注释掉的背景色设置 */ + } -.footer{ - position: fixed; - bottom: 0px; - width: 100%; - background-color: #222; - border-top: 1px solid rgba(255, 255, 255, 0.2); - line-height: 41px; - color: #fff; - /*padding-left: 10px;*/ -} -.footer .copyright{ - margin-left: 10px; -} + /* 左侧导航子菜单列表项样式 */ + .left-nav #nav li .sub-menu li a { + padding: 12px 15px 12px 30px; /* 内边距 */ + font-size: 14px; /* 字体大小 */ + cursor: pointer; /* 鼠标指针样式 */ + } + /* 左侧导航子菜单列表项二级菜单样式 */ + .left-nav #nav li .sub-menu li .sub-menu li a { + padding-left: 45px; /* 左内边距 */ + } -@media screen and (max-width: 768px){ - .fast-add{ - display: none; + /* 左侧导航子菜单列表项鼠标悬停样式 */ + .left-nav #nav li .sub-menu li:hover a { + color: #148cf1; /* 颜色 */ + /* background: #fff url() 0 0 no-repeat; */ /* 注释掉的背景图设置 */ } - .layui-nav .to-index{ - display: none; + + /* 左侧导航子菜单列表项图标样式 */ + .left-nav #nav li .sub-menu li a i { + font-size: 12px; /* 字体大小 */ } - .container .logo a{ - width: 140px; + + /* 左侧导航列表项右侧箭头样式 */ + .left-nav #nav li a i { + float: right; /* 右浮动 */ + font-size: 16px; /* 字体大小 */ + line-height: 14px; /* 行高 */ + padding-right: 10px; /* 右内边距 */ + } + + /* 页面内容样式 */ + .page-content { + position: absolute; /* 绝对定位 */ + top: 46px; /* 顶部位置 */ + right: 0; /* 右边位置 */ + bottom: 42px; /* 底部位置 */ + left: 221px; /* 左边位置 */ + overflow: hidden; /* 隐藏溢出内容 */ + z-index: 1; /* z轴顺序 */ + } + + /* 页面内容背景样式 */ + .page-content-bg { + position: absolute; /* 绝对定位 */ + top: 46px; /* 顶部位置 */ + right: 0; /* 右边位置 */ + bottom: 42px; /* 底部位置 */ + left: 221px; /* 左边位置 */ + background: rgba(0, 0, 0, 0.5); /* 背景色 */ + url(); /* 背景图 */ + z-index: 100; /* z轴顺序 */ + display: none; /* 默认隐藏 */ + } + + /* x轴滑动按钮样式 */ + .x-slide_left { + width: 17px; /* 宽度 */ + height: 61px; /* 高度 */ + background: url(#) 0 0 no-repeat; /* 背景图 */ + position: absolute; /* 绝对定位 */ + top: 200px; /* 顶部位置 */ + left: 221px; /* 左边位置 */ + cursor: pointer; /* 鼠标指针样式 */ + z-index: 3; /* z轴顺序 */ } - .container .left_open { - /*float: right;*/ + + /* 页面内容标签页样式 */ + .page-content .tab { + height: 100%; /* 高度 */ + margin: 0px; /* 外边距 */ + background: #EFEEF0 url(#) 0 0 no-repeat; /* 背景图 */ } - .left-nav{ - left: -221px; + + /* 页面内容标签页标题样式 */ + .page-content .layui-tab-title { + height: 35px; /* 高度 */ + background: #EFEEF0 url(#) 0 0 no-repeat; /* 背景图 */ + position: relative; /* 相对定位 */ + z-index: 100; /* z轴顺序 */ } - .page-content{ - left: 0px; + + /* 页面内容标签页标题当前选中样式 */ + .page-content .layui-tab-title li.home i { + padding-right: 5px; /* 右内边距 */ } - .page-content .layui-tab-content .layui-tab-item{ - -webkit-overflow-scrolling: touch; - overflow-y: scroll; + + /* 页面内容标签页标题当前选中样式 */ + .page-content .layui-tab-title li.home .layui-tab-close { + display: none; /* 隐藏关闭按钮 */ } - .x-so input.layui-input{ - width: 100%; - margin: 10px; + + /* 页面内容标签页标题当前选中样式 */ + .page-content .layui-tab-title li { + line-height: 35px; /* 行高 */ } - .layui-input{ - margin-left: 20px; + /* 页面内容标签页标题当前选中样式 */ + .page-content .layui-tab-title li.layui-this:after { + height: 63px; /* 高度 */ } + /* 页面内容标签页标题当前选中样式 */ + .page-content .layui-tab-title li.layui-this { + background: #fff url(#) 0 0 no-repeat; /* 背景图 */ + } + + /* 页面内容标签页标题当前选中样式 */ + .page-content .layui-tab-title li.layui-this .layui-tab-close { + border-radius: 50%; /* 圆角 */ + } + + /* 页面内容标签页标题当前选中样式 */ + .page-content .layui-tab-title li { + border-radius: 50%; /* 圆角 */ + } + + /* 页面内容标签页标题当前选中样式 */ + .page-content .layui-tab-bar { + height: 34px; /* 高度 */ + line-height: 34px; /* 行高 */ + } + + /* 页面内容标签页内容样式 */ + .page-content .layui-tab-content { + top: 36px; /* 顶部位置 */ + bottom: 0px; /* 底部位置 */ + width: 100%; /* 宽度 */ + background: #fff url(#) 0 0 no-repeat; /* 背景图 */ + padding: 0px; /* 内边距 */ + overflow: hidden; /* 隐藏溢出内容 */ + } + + /* 页面内容标签页内容项样式 */ + .page-content .layui-tab-content .layui-tab-item { + width: 100%; /* 宽度 */ + height: 100%; /* 高度 */ + } + + /* 页面内容标签页内容项iframe样式 */ + .page-content .layui-tab-content .layui-tab-item iframe { + width: 100%; /* 宽度 */ + height: 100%; /* 高度 */ + } + + /* xadmin后台日志样式 */ + .x-admin-backlog-body { + display: block; /* 显示块级元素 */ + padding: 10px 15px; /* 内边距 */ + background-color: #f8f8f8; /* 背景色 */ + color: #999; /* 文字颜色 */ + border-radius: 2px; /* 圆角 */ + transition: all .3s ease; /* CSS3过渡效果 */ + } + + /* xadmin后台日志标题样式 */ + .x-admin-backlog-body h3 { + padding-bottom: 10px; /* 底部内边距 */ + font-size: 12px; /* 字体大小 */ + } + + /* xadmin后台日志内容样式 */ + .x-admin-backlog-body p { + font-style: normal; /* 正常字体风格 */ + font-size: 30px; /* 字体大小 */ + font-weight: 300; /* 字体粗细 */ + color: #009689; /* 文字颜色 */ + } + + /* xadmin后台日志内容鼠标悬停样式 */ + .x-admin-backlog-body:hover { + background-color: #CFCFCF; /* 背景色 */ + color: #888; /* 文字颜色 */ + } + + /* welcome页脚样式 */ + .welcome-footer { + padding: 30px 0; /* 内边距 */ + text-align: center; /* 文本居中对齐 */ + line-height: 30px; /* 行高 */ + color: #eee; /* 文字颜色 */ + background-color: #222; /* 背景色 */ + border-top: 1px solid rgba(255, 255, 255, 0.1); /* 边框样式 */ + } + + /* foot页脚样式 */ + .footer { + position: fixed; /* 固定定位 */ + bottom: 0px; /* 底部位置 */ + width: 100%; /* 宽度 */ + background-color: #222; /* 背景色 */ + line-height: 41px; /* 行高 */ + color: #fff; /* 文字颜色 */ + } + + /* foot页脚版权样式 */ + .footer .copyright { + margin-left: 10px; /* 左内边距 */ + } + + /* table表格样式 */ + table th, table td { + word-break: break-all; /* CSS属性:允许在单词内换行 */ + } } + diff --git a/src/main/webapp/js/mobileSelect.js b/src/main/webapp/js/mobileSelect.js index d2b6d1f..d5aed2e 100644 --- a/src/main/webapp/js/mobileSelect.js +++ b/src/main/webapp/js/mobileSelect.js @@ -4,219 +4,189 @@ * Released under the MIT License. */ -(function() { - function getClass(dom,string) { +(function(window) { + // 获取指定元素的类名 + function getClass(dom, string) { return dom.getElementsByClassName(string); } - //构造器 + + // 构造器 function MobileSelect(config) { - this.mobileSelect; - this.wheelsData = config.wheels; - this.jsonType = false; - this.cascadeJsonData = []; - this.displayJson = []; - this.curValue = null; - this.curIndexArr = []; - this.cascade = false; - this.startY; - this.moveEndY; - this.moveY; - this.oldMoveY; - this.offset = 0; - this.offsetSum = 0; - this.oversizeBorder; - this.curDistance = []; - this.clickStatus = false; - this.isPC = true; + this.mobileSelect; // DOM元素,表示整个选择器 + this.wheelsData = config.wheels; // 滚轮数据 + this.jsonType = false; // 是否为JSON类型数据 + this.cascadeJsonData = []; // 级联JSON数据 + this.displayJson = []; // 显示的JSON数据 + this.curValue = null; // 当前值 + this.curIndexArr = []; // 当前索引数组 + this.startY; // 起始Y坐标 + this.moveEndY; // 结束Y坐标 + this.moveY; // 移动Y坐标 + this.oldMoveY; // 旧的移动Y坐标 + this.offset = 0; // 偏移量 + this.offsetSum = 0; // 偏移总和 + this.oversizeBorder; // 超出边界大小 + this.curDistance = []; // 当前距离数组 + this.clickStatus = false; // 点击状态 + this.isPC = true; // 是否为PC端 this.init(config); } + + // 原型链 MobileSelect.prototype = { constructor: MobileSelect, - init: function(config){ - var _this = this; - _this.keyMap = config.keyMap ? config.keyMap : {id:'id', value:'value', childs:'childs'}; - _this.checkDataType(); - _this.renderWheels(_this.wheelsData, config.cancelBtnText, config.ensureBtnText); - _this.trigger = document.querySelector(config.trigger); - if(!_this.trigger){ + // 初始化函数 + init: function(config) { + var _this = this; + _this.keyMap = config.keyMap ? config.keyMap : { id: 'id', value: 'value', childs: 'childs' }; // 键值映射 + _this.checkDataType(); // 检查数据类型 + _this.renderWheels(_this.wheelsData, config.cancelBtnText, config.ensureBtnText); // 渲染滚轮 + _this.trigger = document.querySelector(config.trigger); // 触发器元素 + if (!_this.trigger) { console.error('mobileSelect has been successfully installed, but no trigger found on your page.'); return false; } - _this.wheel = getClass(_this.mobileSelect,'wheel'); - _this.slider = getClass(_this.mobileSelect,'selectContainer'); - _this.wheels = _this.mobileSelect.querySelector('.wheels'); - _this.liHeight = _this.mobileSelect.querySelector('li').offsetHeight; - _this.ensureBtn = _this.mobileSelect.querySelector('.ensure'); - _this.cancelBtn = _this.mobileSelect.querySelector('.cancel'); - _this.grayLayer = _this.mobileSelect.querySelector('.grayLayer'); - _this.popUp = _this.mobileSelect.querySelector('.content'); - _this.callback = config.callback ? config.callback : function(){}; - _this.cancel = config.cancel ? config.cancel : function(){}; - _this.transitionEnd = config.transitionEnd ? config.transitionEnd : function(){}; - _this.initPosition = config.position ? config.position : []; - _this.titleText = config.title ? config.title : ''; - _this.connector = config.connector ? config.connector : ' '; - _this.triggerDisplayData = !(typeof(config.triggerDisplayData)=='undefined') ? config.triggerDisplayData : true; - _this.trigger.style.cursor='pointer'; - _this.setStyle(config); - _this.setTitle(_this.titleText); - _this.checkIsPC(); - _this.checkCascade(); + _this.wheel = getClass(_this.mobileSelect, 'wheel'); // 获取滚轮元素 + _this.slider = getClass(_this.mobileSelect, 'selectContainer'); // 获取滑块容器 + _this.wheels = _this.mobileSelect.querySelector('.wheels'); // 获取所有滚轮的容器 + _this.liHeight = _this.mobileSelect.querySelector('li').offsetHeight; // 获取每个选项的高度 + _this.ensureBtn = getClass(_this.mobileSelect, 'ensure'); // 确保按钮 + _this.cancelBtn = getClass(_this.mobileSelect, 'cancel'); // 取消按钮 + _this.grayLayer = getClass(_this.mobileSelect, 'grayLayer'); // 灰色遮罩层 + _this.popUp = getClass(_this.mobileSelect, 'content'); // 弹出层 + _this.callback = config.callback ? config.callback : function() {}; // 回调函数 + _this.cancel = config.cancel ? config.cancel : function() {}; // 取消函数 + _this.transitionEnd = config.transitionEnd ? config.transitionEnd : function() {}; // 过渡结束函数 + _this.titleText = config.title ? config.title : ''; // 标题文本 + _this.connector = config.connector ? config.connector : ' '; // 连接符 + _this.triggerDisplayData = !(typeof(config.triggerDisplayData) == 'undefined') ? config.triggerDisplayData : true; // 是否显示在触发器上 + _this.trigger.style.cursor = 'pointer'; // 设置触发器的鼠标样式为指针 + _this.setStyle(config); // 设置样式 + _this.setTitle(_this.titleText); // 设置标题 + _this.checkIsPC(); // 检查是否是PC端 + _this.checkCascade(); // 检查是否需要级联 if (_this.cascade) { - _this.initCascade(); + _this.initCascade(); // 初始化级联 } - //定位 初始位置 - if(_this.initPosition.length < _this.slider.length){ + // 定位初始位置 + if (_this.initPosition.length < _this.slider.length) { var diff = _this.slider.length - _this.initPosition.length; - for(var i=0; i'+ - '
'+ - '
'+ - '
'+ - '
'+ cancelText +'
'+ - '
'+ - '
'+ ensureText +'
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'; - document.body.appendChild(_this.mobileSelect); - - //根据数据长度来渲染 - + var cancelText = cancelBtnText ? cancelBtnText : '取消'; // 设置取消按钮文本 + var ensureText = ensureBtnText ? ensureBtnText : '确认'; // 设置确认按钮文本 + _this.mobileSelect = document.createElement("div"); // 创建选择器的容器元素 + _this.mobileSelect.className = "mobileSelect"; // 设置容器的类名 + _this.mobileSelect.innerHTML = + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ cancelText +'
'+ + '
'+ + '
'+ ensureText +'
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'; + document.body.appendChild(_this.mobileSelect); // 将选择器添加到页面中 + + // 根据数据长度来渲染轮盘 var tempHTML=''; - for(var i=0; i'+wheelsData[i].data[j][_this.keyMap.value]+''; + for(var j=0; j'+wheelsData[i].data[j][_this.keyMap.value]+''; // 如果是JSON类型,使用键值对填充列表项 } }else{ - for(var j=0; j'; + for(var j=0; j'; // 如果不是JSON类型,直接使用数据填充列表项 } } - tempHTML += ''; + tempHTML += ''; // 结束当前轮盘 } - _this.mobileSelect.querySelector('.wheels').innerHTML = tempHTML; + _this.mobileSelect.querySelector('.wheels').innerHTML = tempHTML; // 将生成的HTML添加到轮盘容器中 }, addListenerAll: function(){ var _this = this; for(var i=0; i<_this.slider.length; i++){ - //手势监听 + // 为每个滑块添加手势监听和点击监听 (function (i) { _this.addListenerWheel(_this.wheel[i], i); _this.addListenerLi(i); @@ -227,121 +197,137 @@ addListenerWheel: function(theWheel, index){ var _this = this; theWheel.addEventListener('touchstart', function () { - _this.touch(event, this.firstChild, index); + _this.touch(event, this.firstChild, index); // 触摸开始事件处理 },false); theWheel.addEventListener('touchend', function () { - _this.touch(event, this.firstChild, index); + _this.touch(event, this.firstChild, index); // 触摸结束事件处理 },false); theWheel.addEventListener('touchmove', function () { - _this.touch(event, this.firstChild, index); + _this.touch(event, this.firstChild, index); // 触摸移动事件处理 },false); if(_this.isPC){ - //如果是PC端则再增加拖拽监听 方便调试 + // 如果是PC端则再增加拖拽监听,方便调试 theWheel.addEventListener('mousedown', function () { - _this.dragClick(event, this.firstChild, index); + _this.dragClick(event, this.firstChild, index); // 鼠标按下事件处理 },false); theWheel.addEventListener('mousemove', function () { - _this.dragClick(event, this.firstChild, index); + _this.dragClick(event, this.firstChild, index); // 鼠标移动事件处理 },false); theWheel.addEventListener('mouseup', function () { - _this.dragClick(event, this.firstChild, index); - },true); + _this.dragClick(event, this.firstChild, index); // 鼠标抬起事件处理 + },true); } }, - addListenerLi:function(sliderIndex){ + addListenerLi: function(sliderIndex) { + // 获取当前对象引用 var _this = this; + // 获取指定滑块索引的所有列表项元素 var curWheelLi = _this.slider[sliderIndex].getElementsByTagName('li'); - for(var j=0; j 0){ - _this.cascade = true; - _this.cascadeJsonData = _this.wheelsData[0].data; - break; + // 遍历数据节点,检查是否存在子节点 + for (var i = 0; i < node.length; i++) { + if (_this.keyMap.childs in node[i] && node[i][_this.keyMap.childs].length > 0) { + _this.cascade = true; // 如果存在子节点,设置级联标志为true + _this.cascadeJsonData = _this.wheelsData[0].data; // 保存级联数据 + break; // 找到第一个有子节点的节点后退出循环 } } - }else{ - _this.cascade = false; + } else { + _this.cascade = false; // 如果数据类型不是JSON,设置级联标志为false } }, - generateArrData: function (targetArr) { - var tempArr = []; - var keyMap_id = this.keyMap.id; - var keyMap_value = this.keyMap.value; - for(var i=0; i0){ - _this.initDeepCount = 0; - _this.initCheckArrDeep(_this.cascadeJsonData[_this.initPosition[0]]); - }else{ - _this.checkArrDeep(_this.cascadeJsonData[0]); + // 如果初始化位置数组不为空,则进行深度初始化 + if (_this.initPosition.length > 0) { + _this.initDeepCount = 0; // 初始化深度计数器 + _this.initCheckArrDeep(_this.cascadeJsonData[_this.initPosition[0]]); // 递归初始化子节点 + } else { + _this.checkArrDeep(_this.cascadeJsonData[0]); // 如果初始化位置为空,直接检查第一层数据 } - _this.reRenderWheels(); + _this.reRenderWheels(); // 重新渲染轮盘组件 }, - initCheckArrDeep: function (parent) { + initCheckArrDeep: function(parent) { + // 获取当前对象引用 var _this = this; - if(parent){ + // 如果父节点存在且具有子节点 + if (parent) { if (_this.keyMap.childs in parent && parent[_this.keyMap.childs].length > 0) { - _this.displayJson.push(_this.generateArrData(parent[_this.keyMap.childs])); - _this.initDeepCount++; - var nextNode = parent[_this.keyMap.childs][_this.initPosition[_this.initDeepCount]]; - if(nextNode){ - _this.initCheckArrDeep(nextNode); - }else{ - _this.checkArrDeep(parent[_this.keyMap.childs][0]); + // 生成并添加子节点数据的数组表示形式到displayJson中 + _this.displayJson.push(_this.generateArrData(parent[_this.keyMap.childs])); + _this.initDeepCount++; // 增加深度计数器 + var nextNode = parent[_this.keyMap.childs][_this.initPosition[_this.initDeepCount]]; // 获取下一个节点 + if (nextNode) { + _this.initCheckArrDeep(nextNode); // 递归初始化下一个节点 + } else { + _this.checkArrDeep(parent[_this.keyMap.childs][0]); // 如果下一个节点不存在,检查第一个子节点 } } } }, - checkArrDeep: function (parent) { - //检测子节点深度 修改 displayJson + checkArrDeep: function (parent) { + // 检测子节点深度并修改 displayJson var _this = this; if(parent){ if (_this.keyMap.childs in parent && parent[_this.keyMap.childs].length > 0) { - _this.displayJson.push(_this.generateArrData(parent[_this.keyMap.childs])); //生成子节点数组 - _this.checkArrDeep(parent[_this.keyMap.childs][0]);//检测下一个子节点 + _this.displayJson.push(_this.generateArrData(parent[_this.keyMap.childs])); // 生成子节点数组 + _this.checkArrDeep(parent[_this.keyMap.childs][0]); // 检测下一个子节点 } } }, checkRange: function(index, posIndexArr){ var _this = this; - var deleteNum = _this.displayJson.length-1-index; + var deleteNum = _this.displayJson.length - 1 - index; for(var i=0; i posIndexArr.length){ + if(_this.slider.length > posIndexArr.length){ tempCount = _this.slider.length - posIndexArr.length; - for(var i=0; i _this.displayJson.length){ var count = _this.wheel.length - _this.displayJson.length; for(var i=0; i'+_this.displayJson[i][j][_this.keyMap.value]+''; } - _this.slider[i].innerHTML = tempHTML; - + _this.slider[i].innerHTML = tempHTML; // 更新现有wheel的HTML内容 }else{ var tempWheel = document.createElement("div"); tempWheel.className = "wheel"; tempHTML = '
    '; - for(var j=0; j<_this.displayJson[i].length; j++){ - //行 + for(var j=0; j<_this.displayJson[i].length; j++){ + // 行 tempHTML += '
  • '+_this.displayJson[i][j][_this.keyMap.value]+'
  • '; } tempHTML += '
'; - tempWheel.innerHTML = tempHTML; - - _this.addListenerWheel(tempWheel, i); - _this.wheels.appendChild(tempWheel); + tempWheel.innerHTML = tempHTML; // 创建新的wheel并设置HTML内容 + _this.addListenerWheel(tempWheel, i); // 为新wheel添加事件监听器 + _this.wheels.appendChild(tempWheel); // 将新wheel添加到DOM中 } - _this.addListenerLi(i); + _this.addListenerLi(i); // 为每个li添加事件监听器 })(i); } }, - updateWheels:function(data){ + updateWheels: function(data) { var _this = this; - if(_this.cascade){ + if (_this.cascade) { + // 更新级联数据源 _this.cascadeJsonData = data; _this.displayJson = []; _this.initCascade(); - if(_this.initPosition.length < _this.slider.length){ + // 确保初始化位置数组长度与滑块数量一致 + if (_this.initPosition.length < _this.slider.length) { var diff = _this.slider.length - _this.initPosition.length; - for(var i=0; i'+data[j][_this.keyMap.value]+''; + } else if (_this.jsonType) { + // 处理JSON类型的数据 + for (var j = 0; j < data.length; j++) { + tempHTML += '
  • ' + data[j][_this.keyMap.value] + '
  • '; } - _this.wheelsData[sliderIndex] = {data: data}; - }else{ - for(var j=0; j'; + _this.wheelsData[sliderIndex] = { data: data }; + } else { + // 处理普通数组类型的数据 + for (var j = 0; j < data.length; j++) { + tempHTML += '
  • ' + data[j] + '
  • '; } _this.wheelsData[sliderIndex] = data; - } + } _this.slider[sliderIndex].innerHTML = tempHTML; _this.addListenerLi(sliderIndex); }, - fixRowStyle: function(){ + fixRowStyle: function() { + var _this = this; + var width = (100 / _this.wheel.length).toFixed(2); + for (var i = 0; i < _this.wheel.length; i++) { + _this.wheel[i].style.width = width + '%'; + } + }, + + getIndex: function(distance) { + return Math.round((2 * this.liHeight - distance) / this.liHeight); + }, + + getIndexArr: function() { var _this = this; - var width = (100/_this.wheel.length).toFixed(2); - for(var i=0; i<_this.wheel.length; i++){ - _this.wheel[i].style.width = width+'%'; - } - }, - - getIndex: function(distance){ - return Math.round((2*this.liHeight-distance)/this.liHeight); - }, - - getIndexArr: function(){ - var _this = this; - var temp = []; - for(var i=0; i<_this.curDistance.length; i++){ - temp.push(_this.getIndex(_this.curDistance[i])); - } - return temp; - }, - - getCurValue: function(){ - var _this = this; - var temp = []; - var positionArr = _this.getIndexArr(); - if(_this.cascade){ - for(var i=0; i<_this.wheel.length; i++){ - temp.push(_this.displayJson[i][positionArr[i]]); - } - } - else if(_this.jsonType){ - for(var i=0; i<_this.curDistance.length; i++){ - temp.push(_this.wheelsData[i].data[_this.getIndex(_this.curDistance[i])]); - } - }else{ - for(var i=0; i<_this.curDistance.length; i++){ - temp.push(_this.getInnerHtml(i)); - } - } - return temp; - }, - - getValue: function(){ - return this.curValue; - }, - - calcDistance: function(index){ + var temp = []; + for (var i = 0; i < _this.curDistance.length; i++) { + temp.push(_this.getIndex(_this.curDistance[i])); + } + return temp; + }, + + getCurValue: function() { + var _this = this; + var temp = []; + var positionArr = _this.getIndexArr(); + if (_this.cascade) { + for (var i = 0; i < _this.wheel.length; i++) { + temp.push(_this.displayJson[i][positionArr[i]]); + } + } else if (_this.jsonType) { + for (var i = 0; i < _this.curDistance.length; i++) { + temp.push(_this.wheelsData[i].data[_this.getIndex(_this.curDistance[i])]); + } + } else { + for (var i = 0; i < _this.curDistance.length; i++) { + temp.push(_this.getInnerHtml(i)); + } + } + return temp; + }, + + getValue: function() { + return this.curValue; + }, + + calcDistance: function(index){ + // 计算给定索引对应的距离,基于liHeight的倍数 return 2*this.liHeight-index*this.liHeight; - }, - - setCurDistance: function(indexArr){ - var _this = this; - var temp = []; - for(var i=0; i<_this.slider.length; i++){ - temp.push(_this.calcDistance(indexArr[i])); - _this.movePosition(_this.slider[i],temp[i]); - } - _this.curDistance = temp; - }, - - fixPosition: function(distance){ - return -(this.getIndex(distance)-2)*this.liHeight; - }, - - movePosition: function(theSlider, distance){ - theSlider.style.webkitTransform = 'translate3d(0,' + distance + 'px, 0)'; - theSlider.style.transform = 'translate3d(0,' + distance + 'px, 0)'; - }, - - locatePosition: function(index, posIndex){ - this.curDistance[index] = this.calcDistance(posIndex); - this.movePosition(this.slider[index],this.curDistance[index]); - if(_this.cascade){ - _this.checkRange(index, _this.getIndexArr()); - } - }, - - updateCurDistance: function(theSlider, index){ - this.curDistance[index] = parseInt(theSlider.style.transform.split(',')[1]); - }, - - getDistance:function(theSlider){ - return parseInt(theSlider.style.transform.split(',')[1]); - }, - - getInnerHtml: function(sliderIndex){ - var _this = this; - var index = _this.getIndex(_this.curDistance[sliderIndex]); - return _this.slider[sliderIndex].getElementsByTagName('li')[index].innerHTML; - }, - - touch: function(event, theSlider, index){ - var _this = this; - event = event || window.event; - switch(event.type){ - case "touchstart": - _this.startY = event.touches[0].clientY; - _this.oldMoveY = _this.startY; - break; - - case "touchend": - - _this.moveEndY = event.changedTouches[0].clientY; - _this.offsetSum = _this.moveEndY - _this.startY; - - //修正位置 - _this.updateCurDistance(theSlider, index); - _this.curDistance[index] = _this.fixPosition(_this.curDistance[index]); - _this.movePosition(theSlider, _this.curDistance[index]); - _this.oversizeBorder = -(theSlider.getElementsByTagName('li').length-3)*_this.liHeight; - - - //反弹 - if(_this.curDistance[index] + _this.offsetSum > 2*_this.liHeight){ - _this.curDistance[index] = 2*_this.liHeight; - setTimeout(function(){ - _this.movePosition(theSlider, _this.curDistance[index]); - }, 100); - - }else if(_this.curDistance[index] + _this.offsetSum < _this.oversizeBorder){ - _this.curDistance[index] = _this.oversizeBorder; - setTimeout(function(){ - _this.movePosition(theSlider, _this.curDistance[index]); - }, 100); - } - - - _this.transitionEnd(_this.getIndexArr(),_this.getCurValue()); - - if(_this.cascade){ - _this.checkRange(index, _this.getIndexArr()); - } - - break; - - case "touchmove": - event.preventDefault(); - _this.moveY = event.touches[0].clientY; - _this.offset = _this.moveY - _this.oldMoveY; - - _this.updateCurDistance(theSlider, index); - _this.curDistance[index] = _this.curDistance[index] + _this.offset; - _this.movePosition(theSlider, _this.curDistance[index]); - _this.oldMoveY = _this.moveY; - break; - } - }, - - dragClick: function(event, theSlider, index){ - var _this = this; - event = event || window.event; - switch(event.type){ - case "mousedown": - _this.startY = event.clientY; - _this.oldMoveY = _this.startY; - _this.clickStatus = true; - break; - - case "mouseup": - - _this.moveEndY = event.clientY; - _this.offsetSum = _this.moveEndY - _this.startY; - - //修正位置 - _this.updateCurDistance(theSlider, index); - _this.curDistance[index] = _this.fixPosition(_this.curDistance[index]); - _this.movePosition(theSlider, _this.curDistance[index]); - _this.oversizeBorder = -(theSlider.getElementsByTagName('li').length-3)*_this.liHeight; - - - //反弹 - if(_this.curDistance[index] + _this.offsetSum > 2*_this.liHeight){ - _this.curDistance[index] = 2*_this.liHeight; - setTimeout(function(){ - _this.movePosition(theSlider, _this.curDistance[index]); - }, 100); - - }else if(_this.curDistance[index] + _this.offsetSum < _this.oversizeBorder){ - _this.curDistance[index] = _this.oversizeBorder; - setTimeout(function(){ - _this.movePosition(theSlider, _this.curDistance[index]); - }, 100); - } - - _this.clickStatus = false; - _this.transitionEnd(_this.getIndexArr(),_this.getCurValue()); - if(_this.cascade){ - _this.checkRange(index, _this.getIndexArr()); - } - break; - - case "mousemove": - event.preventDefault(); - if(_this.clickStatus){ - _this.moveY = event.clientY; - _this.offset = _this.moveY - _this.oldMoveY; - _this.updateCurDistance(theSlider, index); - _this.curDistance[index] = _this.curDistance[index] + _this.offset; - _this.movePosition(theSlider, _this.curDistance[index]); - _this.oldMoveY = _this.moveY; - } - break; - } - }, - - singleClick: function(theLi, index, sliderIndex){ - var _this = this; - if(_this.cascade){ - var tempPosArr = _this.getIndexArr(); - tempPosArr[sliderIndex] = index; - _this.checkRange(sliderIndex, tempPosArr); - - }else{ - _this.curDistance[sliderIndex] = (2-index)*_this.liHeight; - _this.movePosition(theLi.parentNode, _this.curDistance[sliderIndex]); - } - } - - }; - - if (typeof exports == "object") { - module.exports = MobileSelect; - } else if (typeof define == "function" && define.amd) { - define([], function () { - return MobileSelect; - }) - } else { - window.MobileSelect = MobileSelect; + }, + + setCurDistance: function(indexArr){ + var _this = this; + var temp = []; + for(var i=0; i<_this.slider.length; i++){ + temp.push(_this.calcDistance(indexArr[i])); // 计算每个滑块的距离并存储在临时数组中 + _this.movePosition(_this.slider[i],temp[i]); // 移动滑块到计算出的位置 + } + _this.curDistance = temp; // 更新当前距离数组 + }, + + fixPosition: function(distance){ + // 根据距离修正位置,确保滑块不会超出边界 + return -(this.getIndex(distance)-2)*this.liHeight; + }, + + movePosition: function(theSlider, distance){ + // 使用CSS transform属性移动滑块到指定位置 + theSlider.style.webkitTransform = 'translate3d(0,' + distance + 'px, 0)'; + theSlider.style.transform = 'translate3d(0,' + distance + 'px, 0)'; + }, + + locatePosition: function(index, posIndex){ + // 定位滑块到特定位置 + this.curDistance[index] = this.calcDistance(posIndex); + this.movePosition(this.slider[index],this.curDistance[index]); + if(_this.cascade){ + _this.checkRange(index, _this.getIndexArr()); // 如果启用级联,检查范围 + } + }, + + updateCurDistance: function(theSlider, index){ + // 更新当前滑块的距离 + this.curDistance[index] = parseInt(theSlider.style.transform.split(',')[1]); + }, + + getDistance:function(theSlider){ + // 获取滑块当前的垂直距离 + return parseInt(theSlider.style.transform.split(',')[1]); + }, + + getInnerHtml: function(sliderIndex){ + // 获取滑块当前选中项的内部HTML内容 + var _this = this; + var index = _this.getIndex(_this.curDistance[sliderIndex]); + return _this.slider[sliderIndex].getElementsByTagName('li')[index].innerHTML; + }, + + touch: function(event, theSlider, index) { + var _this = this; + event = event || window.event; + switch (event.type) { + case "touchstart": + _this.startY = event.touches[0].clientY; // 记录触摸开始时的Y坐标 + _this.oldMoveY = _this.startY; // 初始化旧的移动Y坐标 + break; + + case "touchend": + _this.moveEndY = event.changedTouches[0].clientY; // 记录触摸结束时的Y坐标 + _this.offsetSum = _this.moveEndY - _this.startY; // 计算总偏移量 + + // 修正位置 + _this.updateCurDistance(theSlider, index); + _this.curDistance[index] = _this.fixPosition(_this.curDistance[index]); + _this.movePosition(theSlider, _this.curDistance[index]); + _this.oversizeBorder = -(theSlider.getElementsByTagName('li').length - 3) * _this.liHeight; + + // 反弹效果处理 + if (_this.curDistance[index] + _this.offsetSum > 2 * _this.liHeight) { + _this.curDistance[index] = 2 * _this.liHeight; + setTimeout(function () { + _this.movePosition(theSlider, _this.curDistance[index]); + }, 100); + } else if (_this.curDistance[index] + _this.offsetSum < _this.oversizeBorder) { + _this.curDistance[index] = _this.oversizeBorder; + setTimeout(function () { + _this.movePosition(theSlider, _this.curDistance[index]); + }, 100); + } + + _this.transitionEnd(_this.getIndexArr(), _this.getCurValue()); // 触发过渡结束事件 + + if (_this.cascade) { + _this.checkRange(index, _this.getIndexArr()); // 如果启用级联,检查范围 + } + break; + + // 处理鼠标抬起事件 + case "mouseup": + _this.moveEndY = event.clientY; // 获取鼠标抬起时的Y坐标 + _this.offsetSum = _this.moveEndY - _this.startY; // 计算鼠标移动的距离 + + // 修正位置 + _this.updateCurDistance(theSlider, index); // 更新当前距离 + _this.curDistance[index] = _this.fixPosition(_this.curDistance[index]); // 修正位置,防止超出边界 + _this.movePosition(theSlider, _this.curDistance[index]); // 移动到新的位置 + _this.oversizeBorder = -(theSlider.getElementsByTagName('li').length - 3) * _this.liHeight; // 设置超出边界的最小值 + + // 反弹效果 + if (_this.curDistance[index] + _this.offsetSum > 2 * _this.liHeight) { + _this.curDistance[index] = 2 * _this.liHeight; // 如果超过上界,设置为上界 + setTimeout(function () { + _this.movePosition(theSlider, _this.curDistance[index]); // 延迟后移动到上界位置 + }, 100); + } else if (_this.curDistance[index] + _this.offsetSum < _this.oversizeBorder) { + _this.curDistance[index] = _this.oversizeBorder; // 如果超过下界,设置为下界 + setTimeout(function () { + _this.movePosition(theSlider, _this.curDistance[index]); // 延迟后移动到下界位置 + }, 100); + } + + _this.clickStatus = false; // 重置点击状态 + _this.transitionEnd(_this.getIndexArr(), _this.getCurValue()); // 触发过渡结束事件 + if (_this.cascade) { + _this.checkRange(index, _this.getIndexArr()); // 如果是级联选择器,检查范围 + } + break; + +// 处理鼠标移动事件 + case "mousemove": + event.preventDefault(); // 阻止默认行为 + if (_this.clickStatus) { + _this.moveY = event.clientY; // 获取当前鼠标Y坐标 + _this.offset = _this.moveY - _this.oldMoveY; // 计算偏移量 + _this.updateCurDistance(theSlider, index); // 更新当前距离 + _this.curDistance[index] = _this.curDistance[index] + _this.offset; // 更新当前距离 + _this.movePosition(theSlider, _this.curDistance[index]); // 移动到新的位置 + _this.oldMoveY = _this.moveY; // 更新旧的Y坐标 + } + break; + } + }, + +// 处理单击事件 + singleClick: function (theLi, index, sliderIndex) { + var _this = this; + if (_this.cascade) { + var tempPosArr = _this.getIndexArr(); // 获取当前索引数组 + tempPosArr[sliderIndex] = index; // 更新指定滑块的索引 + _this.checkRange(sliderIndex, tempPosArr); // 检查范围 + } else { + _this.curDistance[sliderIndex] = (2 - index) * _this.liHeight; // 计算新的距离 + _this.movePosition(theLi.parentNode, _this.curDistance[sliderIndex]); // 移动到新的位置 + } + } + }; + + if (typeof exports == "object") { + module.exports = MobileSelect; // CommonJS模块导出 + } else if (typeof define == "function" && define.amd) { + define([], function () { + return MobileSelect; // AMD模块定义 + }) + } else { + window.MobileSelect = MobileSelect; // 全局变量导出 } })(); diff --git a/src/main/webapp/js/xadmin.js b/src/main/webapp/js/xadmin.js index 7711eba..a78b69b 100644 --- a/src/main/webapp/js/xadmin.js +++ b/src/main/webapp/js/xadmin.js @@ -1,289 +1,274 @@ -;!function (win) { - "use strict"; - var doc = document - - ,Xadmin = function(){ - this.v = '2.2'; //版本号 - } - - Xadmin.prototype.init = function() { - var tab_list = this.get_data(); - for(var i in tab_list){ - this.add_lay_tab(tab_list[i].title,tab_list[i].url,i); - } - element.tabChange('xbs_tab', i); - }; - /** - * [end 执行结束要做的] - * @return {[type]} [description] - */ - Xadmin.prototype.end = function() { - - var cate_list = this.get_cate_data(); - - for(var i in cate_list){ - if(cate_list[i]!=null){ - $('.left-nav #nav li').eq(cate_list[i]).click(); - } +// 定义一个立即执行的函数表达式 (IIFE),传入全局对象 window +!function(win) { + "use strict"; // 使用严格模式 + var doc = document; // 获取文档对象 + + // 定义 Xadmin 构造函数 + var Xadmin = function() { + this.v = '2.2'; // 版本号 } - }; - Xadmin.prototype.add_tab = function (title,url,is_refresh) { - var id = md5(url);//md5每个url - - //重复点击 - for (var i = 0; i <$('.x-iframe').length; i++) { - if($('.x-iframe').eq(i).attr('tab-id')==id){ - element.tabChange('xbs_tab', id); - if(is_refresh) - $('.x-iframe').eq(i).attr("src",$('.x-iframe').eq(i).attr('src')); + // 初始化方法 + Xadmin.prototype.init = function() { + var tab_list = this.get_data(); // 获取所有标签页数据 + for (var i in tab_list) { + this.add_lay_tab(tab_list[i].title, tab_list[i].url, i); // 添加标签页 + } + element.tabChange('xbs_tab', i); // 切换到最后一个标签页 + }; + + // 结束方法,用于执行一些收尾工作 + Xadmin.prototype.end = function() { + var cate_list = this.get_cate_data(); // 获取分类数据 + for (var i in cate_list) { + if (cate_list[i] != null) { + $('.left-nav #nav li').eq(cate_list[i]).click(); // 点击左侧导航栏的对应项 + } + } + }; + + // 添加标签页方法 + Xadmin.prototype.add_tab = function(title, url, is_refresh) { + var id = md5(url); // 对 URL 进行 MD5 加密生成唯一 ID + + // 检查是否已经存在相同的标签页 + for (var i = 0; i < $('.x-iframe').length; i++) { + if ($('.x-iframe').eq(i).attr('tab-id') == id) { + element.tabChange('xbs_tab', id); // 切换到已存在的标签页 + if (is_refresh) + $('.x-iframe').eq(i).attr("src", $('.x-iframe').eq(i).attr('src')); // 刷新页面 return; } - }; + } - this.add_lay_tab(title,url,id); - this.set_data(title,url,id); - element.tabChange('xbs_tab', id); + this.add_lay_tab(title, url, id); // 添加新的标签页 + this.set_data(title, url, id); // 保存标签页数据 + element.tabChange('xbs_tab', id); // 切换到新添加的标签页 + } - } + // 删除标签页方法 + Xadmin.prototype.del_tab = function(id) { + if (id) { + console.log(88); // 打印日志(调试用) + } else { + var id = $(window.frameElement).attr('tab-id'); // 获取当前窗口的 tab-id + parent.element.tabDelete('xbs_tab', id); // 删除父窗口中的标签页 + } + } - Xadmin.prototype.del_tab = function (id) { + // 添加 Layui 标签页方法 + Xadmin.prototype.add_lay_tab = function(title, url, id) { + element.tabAdd('xbs_tab', { + title: title, // 标签标题 + content: '', // 标签内容为 iframe + id: id // 标签 ID + }) + } - if(id){ - console.log(88); - }else{ - var id = $(window.frameElement).attr('tab-id'); - parent.element.tabDelete('xbs_tab', id); + // 打开弹出层方法 + Xadmin.prototype.open = function(title, url) { + if (title == null || title == '') { + var title = false; // 如果标题为空,则不显示标题 + }; + if (url == null || url == '') { + var url = "404.html"; // 如果 URL 为空,则默认指向 404 页面 + }; + if (w == null || w == '') { + var w = ($(window).width() * 0.9); // 设置宽度为窗口宽度的 90% + }; + if (h == null || h == '') { + var h = ($(window).height() - 50); // 设置高度为窗口高度减去 50px + }; + var index = layer.open({ + type: 2, // 类型为 iframe + area: [w + 'px', h + 'px'], // 设置弹出层大小 + fix: false, // 不固定位置 + maxmin: true, // 允许最大化和最小化 + shadeClose: true, // 点击遮罩关闭弹出层 + shade: 0.4, // 设置遮罩透明度 + title: title, // 弹出层标题 + content: url // 弹出层内容 URL + }); + if (full) { + layer.full(index); // 如果 full 为真,则全屏显示弹出层 + } } + + // 关闭弹出层方法 + Xadmin.prototype.close = function() { + var index = parent.layer.getFrameIndex(window.name); // 获取当前窗口索引 + parent.layer.close(index); // 关闭弹出层 + }; + + // 关闭弹出层并刷新父窗口方法 + Xadmin.prototype.father_reload = function() { + parent.location.reload(); // 刷新父窗口 + }; + + // 获取所有标签页数据方法 + Xadmin.prototype.get_data = function() { + if (typeof is_remember != "undefined") + return false; // 如果 is_remember 被定义,则返回 false + return layui.data('tab_list') // 从本地存储中获取标签页数据 + } + + // 增加标签页数据方法 + Xadmin.prototype.set_data = function(title, url, id) { + if (typeof is_remember != "undefined") + return false; // 如果 is_remember 被定义,则不执行任何操作 + layui.data('tab_list', { + key: id, // 数据的键为标签页 ID + value: { title: title, url: url } // 数据的值为包含标题和 URL 的对象 + }); + }; + + // 获取分类数据方法 + Xadmin.prototype.get_cate_data = function() { + if (typeof is_remember != "undefined") + return false; // 如果 is_remember 被定义,则返回 false + return layui.data('cate') // 从本地存储中获取分类数据 } + /** + * 设置分类数据 + * @param {Object} data - 要存储的数据对象 + */ + Xadmin.prototype.set_cate_data = function(data) { + if (typeof is_remember !== "undefined") + return false; - Xadmin.prototype.add_lay_tab = function(title,url,id) { - element.tabAdd('xbs_tab', { - title: title - ,content: '' - ,id: id - }) - } - /** - * [open 打开弹出层] - * @param {[type]} title [弹出层标题] - * @param {[type]} url [弹出层地址] - * @return {[type]} [description] + layui.data('cate', data); + }; + + /** + * 删除指定ID的数据 + * @param {String} id - 要删除的数据的键值 */ - Xadmin.prototype.open = function (title, url) { - if (title == null || title == '') { - var title=false; - }; - if (url == null || url == '') { - var url="404.html"; - }; - if (w == null || w == '') { - var w=($(window).width()*0.9); - }; - if (h == null || h == '') { - var h=($(window).height() - 50); - }; - var index = layer.open({ - type: 2, - area: [w+'px', h +'px'], - fix: false, //不固定 - maxmin: true, - shadeClose: true, - shade:0.4, - title: title, - content: url - }); - if(full){ - layer.full(index); - } - } - /** - * [close 关闭弹出层] - * @return {[type]} [description] - */ - Xadmin.prototype.close = function() { - var index = parent.layer.getFrameIndex(window.name); - parent.layer.close(index); - }; - /** - * [close 关闭弹出层父窗口关闭] - * @return {[type]} [description] - */ - Xadmin.prototype.father_reload = function() { - parent.location.reload(); - }; - /** - * [get_data 获取所有项] - * @return {[type]} [description] - */ - Xadmin.prototype.get_data = function () { - if(typeof is_remember!="undefined") - return false; - return layui.data('tab_list') - } - /** - * [set_data 增加某一项] - * @param {[type]} id [description] - */ - Xadmin.prototype.set_data = function(title,url,id) { - - if(typeof is_remember!="undefined") - return false; - - layui.data('tab_list', { - key: id - ,value: {title:title,url:url} - }); - }; - - /** - * [get_data 获取所有项] - * @return {[type]} [description] - */ - Xadmin.prototype.get_cate_data = function () { - if(typeof is_remember!="undefined") - return false; - return layui.data('cate') - } - /** - * [set_data 增加某一项] - * @param {[type]} id [description] - */ - Xadmin.prototype.set_cate_data = function(data) { - - if(typeof is_remember!="undefined") - return false; - - layui.data('cate', data); - }; - /** - * [del_data 删除某一项] - * @param {[type]} id [description] - * @return {[type]} [description] - */ - Xadmin.prototype.del_data = function(id) { - if(typeof is_remember!="undefined") - return false; - if(typeof id!="undefined"){ - layui.data('tab_list', { - key: id - ,remove: true - }); - }else{ - layui.data('tab_list',null); - } - }; - /** - * [del_other_data 删除其它] - * @param {[type]} id [description] - * @return {[type]} [description] - */ - Xadmin.prototype.del_other_data = function(id) { - if(typeof is_remember!="undefined") - return false; - var tab_list = this.get_data(); - - layui.data('tab_list',null); - - layui.data('tab_list', { - key: id - ,value: tab_list[id] - }); - }; - win.xadmin = new Xadmin(); - + Xadmin.prototype.del_data = function(id) { + if (typeof is_remember !== "undefined") + return false; + + if (typeof id !== "undefined") { + layui.data('tab_list', { + key: id, + remove: true + }); + } else { + layui.data('tab_list', null); + } + }; + + /** + * 删除其他数据,只保留指定ID的数据 + * @param {String} id - 要保留的数据的键值 + */ + Xadmin.prototype.del_other_data = function(id) { + if (typeof is_remember !== "undefined") + return false; + + var tab_list = this.get_data(); + + layui.data('tab_list', null); + + layui.data('tab_list', { + key: id, + value: tab_list[id] + }); + }; + +// 初始化xadmin实例 + win.xadmin = new Xadmin(); + }(window); -layui.use(['layer','element','jquery'],function() { +layui.use(['layer', 'element', 'jquery'], function() { layer = layui.layer; element = layui.element; $ = layui.jquery; - // 打开页面初始 xadmin.init(); - //关闭tab清除记忆 - element.on('tabDelete(xbs_tab)', function(data){ - var id = $(this).parent().attr('lay-id'); + // 关闭tab清除记忆 + element.on('tabDelete(xbs_tab)', function(data) { + var id = $(this).parent().attr('lay-id'); xadmin.del_data(id); }); - //左侧菜单 - $('.left-nav #nav').on('click', 'li', function(event) { - if($(this).parent().attr('id')=='nav'){ - xadmin.set_cate_data({key:'f1',value:$('.left-nav #nav li').index($(this))}) - xadmin.set_cate_data({key:'f2',value:null}) - xadmin.set_cate_data({key:'f3',value:null}) + // 左侧菜单点击事件处理 + $('.left-nav #nav').on('click', 'li', function(event) { + if ($(this).parent().attr('id') == 'nav') { + xadmin.set_cate_data({ key: 'f1', value: $('.left-nav #nav li').index($(this)) }); + xadmin.set_cate_data({ key: 'f2', value: null }); + xadmin.set_cate_data({ key: 'f3', value: null }); } - if($(this).parent().parent().parent().attr('id')=='nav'){ - xadmin.set_cate_data({key:'f2',value:$('.left-nav #nav li').index($(this))}) - xadmin.set_cate_data({key:'f3',value:null}) + if ($(this).parent().parent().parent().attr('id') == 'nav') { + xadmin.set_cate_data({ key: 'f2', value: $('.left-nav #nav li').index($(this)) }); + xadmin.set_cate_data({ key: 'f3', value: null }); } - if($(this).parent().parent().parent().parent().parent().attr('id')=='nav'){ - xadmin.set_cate_data({key:'f3',value:$('.left-nav #nav li').index($(this))}) + if ($(this).parent().parent().parent().parent().parent().attr('id') == 'nav') { + xadmin.set_cate_data({ key: 'f3', value: $('.left-nav #nav li').index($(this)) }); } - - - if($('.left-nav').css('width')=='60px'){ - $('.left-nav').animate({width: '220px'}, 100); - $('.page-content').animate({left: '220px'}, 100); - $('.left-nav i').css('font-size','14px'); - $('.left-nav cite,.left-nav .nav_right').show(); + if ($('.left-nav').css('width') == '60px') { + $('.left-nav').animate({ width: '220px' }, 100); + $('.page-content').animate({ left: '220px' }, 100); + $('.left-nav i').css('font-size', '14px'); + $('.left-nav cite,.left-nav .nav_right').show(); } - if($(window).width()<768){ + if ($(window).width() < 768) { $('.page-content-bg').show(); } $('.left-nav').find('a').removeClass('active'); $(this).children('a').addClass('active'); - if($(this).children('.sub-menu').length){ - if($(this).hasClass('open')){ + if ($(this).children('.sub-menu').length) { + if ($(this).hasClass('open')) { $(this).removeClass('open'); $(this).find('.nav_right').html(''); - $(this).children('.sub-menu').stop(true,true).slideUp(); + $(this).children('.sub-menu').stop(true, true).slideUp(); $(this).siblings().children('.sub-menu').slideUp(); - }else{ + } else { $(this).addClass('open'); $(this).children('a').find('.nav_right').html(''); - $(this).children('.sub-menu').stop(true,true).slideDown(); - $(this).siblings().children('.sub-menu').stop(true,true).slideUp(); + $(this).children('.sub-menu').stop(true, true).slideDown(); + $(this).siblings().children('.sub-menu').stop(true, true).slideUp(); $(this).siblings().find('.nav_right').html(''); $(this).siblings().removeClass('open'); } } - event.stopPropagation(); - }) + event.stopPropagation(); + }); + var left_tips_index = null; $('.left-nav #nav').on('mouseenter', '.left-nav-li', function(event) { - if($('.left-nav').css('width')!='220px'){ - var tips = $(this).attr('lay-tips'); - left_tips_index = layer.tips(tips, $(this)); - } - }) + if ($('.left-nav').css('width') != '220px') { + var tips = $(this).attr('lay-tips'); + left_tips_index = layer.tips(tips, $(this)); + } + }); $('.left-nav #nav').on('mouseout', '.left-nav-li', function(event) { - layer.close(left_tips_index); - }) - // 隐藏左侧 + layer.close(left_tips_index); + }); + + // 隐藏左侧导航栏 $('.container .left_open i').click(function(event) { - if($('.left-nav').css('width')=='220px'){ + if ($('.left-nav').css('width') == '220px') { $('.left-nav .open').click(); - $('.left-nav i').css('font-size','18px'); - $('.left-nav').animate({width: '60px'}, 100); + $('.left-nav i').css('font-size', '18px'); + $('.left-nav').animate({ width: '60px' }, 100); $('.left-nav cite,.left-nav .nav_right').hide(); - $('.page-content').animate({left: '60px'}, 100); + $('.page-content').animate({ left: '60px' }, 100); $('.page-content-bg').hide(); - }else{ - $('.left-nav').animate({width: '220px'}, 100); - $('.page-content').animate({left: '220px'}, 100); - $('.left-nav i').css('font-size','14px'); + } else { + $('.left-nav').animate({ width: '220px' }, 100); + $('.page-content').animate({ left: '220px' }, 100); + $('.left-nav i').css('font-size', '14px'); $('.left-nav cite,.left-nav .nav_right').show(); - if($(window).width()<768){ + if ($(window).width() < 768) { $('.page-content-bg').show(); } } @@ -339,243 +324,265 @@ layui.use(['layer','element','jquery'],function() { * to work around bugs in some JS interpreters. */ function safeAdd (x, y) { -var lsw = (x & 0xffff) + (y & 0xffff) -var msw = (x >> 16) + (y >> 16) + (lsw >> 16) -return (msw << 16) | (lsw & 0xffff) + // 将 x 和 y 分别限制在 16 位,然后相加 + var lsw = (x & 0xffff) + (y & 0xffff) + // 计算高位部分的和,并考虑低位部分可能产生的进位 + var msw = (x >> 16) + (y >> 16) + (lsw >> 16) + // 返回合并后的 32 位结果 + return (msw << 16) | (lsw & 0xffff) } /* -* Bitwise rotate a 32-bit number to the left. -*/ + * Bitwise rotate a 32-bit number to the left. + */ function bitRotateLeft (num, cnt) { -return (num << cnt) | (num >>> (32 - cnt)) + // 使用位移操作实现循环左移 + return (num << cnt) | (num >>> (32 - cnt)) } /* -* These functions implement the four basic operations the algorithm uses. -*/ + * These functions implement the four basic operations the algorithm uses. + */ function md5cmn (q, a, b, x, s, t) { -return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b) + // 执行 MD5 算法中的一个基本操作 + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b) } function md5ff (a, b, c, d, x, s, t) { -return md5cmn((b & c) | (~b & d), a, b, x, s, t) + // 执行 MD5 算法中的 F 函数操作 + return md5cmn((b & c) | (~b & d), a, b, x, s, t) } function md5gg (a, b, c, d, x, s, t) { -return md5cmn((b & d) | (c & ~d), a, b, x, s, t) + // 执行 MD5 算法中的 G 函数操作 + return md5cmn((b & d) | (c & ~d), a, b, x, s, t) } function md5hh (a, b, c, d, x, s, t) { -return md5cmn(b ^ c ^ d, a, b, x, s, t) + // 执行 MD5 算法中的 H 函数操作 + return md5cmn(b ^ c ^ d, a, b, x, s, t) } function md5ii (a, b, c, d, x, s, t) { -return md5cmn(c ^ (b | ~d), a, b, x, s, t) + // 执行 MD5 算法中的 I 函数操作 + return md5cmn(c ^ (b | ~d), a, b, x, s, t) } /* -* Calculate the MD5 of an array of little-endian words, and a bit length. -*/ + * Calculate the MD5 of an array of little-endian words, and a bit length. + */ function binlMD5 (x, len) { -/* append padding */ -x[len >> 5] |= 0x80 << (len % 32) -x[((len + 64) >>> 9 << 4) + 14] = len - -var i -var olda -var oldb -var oldc -var oldd -var a = 1732584193 -var b = -271733879 -var c = -1732584194 -var d = 271733878 - -for (i = 0; i < x.length; i += 16) { - olda = a - oldb = b - oldc = c - oldd = d - - a = md5ff(a, b, c, d, x[i], 7, -680876936) - d = md5ff(d, a, b, c, x[i + 1], 12, -389564586) - c = md5ff(c, d, a, b, x[i + 2], 17, 606105819) - b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330) - a = md5ff(a, b, c, d, x[i + 4], 7, -176418897) - d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426) - c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341) - b = md5ff(b, c, d, a, x[i + 7], 22, -45705983) - a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416) - d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417) - c = md5ff(c, d, a, b, x[i + 10], 17, -42063) - b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162) - a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682) - d = md5ff(d, a, b, c, x[i + 13], 12, -40341101) - c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290) - b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329) - - a = md5gg(a, b, c, d, x[i + 1], 5, -165796510) - d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632) - c = md5gg(c, d, a, b, x[i + 11], 14, 643717713) - b = md5gg(b, c, d, a, x[i], 20, -373897302) - a = md5gg(a, b, c, d, x[i + 5], 5, -701558691) - d = md5gg(d, a, b, c, x[i + 10], 9, 38016083) - c = md5gg(c, d, a, b, x[i + 15], 14, -660478335) - b = md5gg(b, c, d, a, x[i + 4], 20, -405537848) - a = md5gg(a, b, c, d, x[i + 9], 5, 568446438) - d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690) - c = md5gg(c, d, a, b, x[i + 3], 14, -187363961) - b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501) - a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467) - d = md5gg(d, a, b, c, x[i + 2], 9, -51403784) - c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473) - b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734) - - a = md5hh(a, b, c, d, x[i + 5], 4, -378558) - d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463) - c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562) - b = md5hh(b, c, d, a, x[i + 14], 23, -35309556) - a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060) - d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353) - c = md5hh(c, d, a, b, x[i + 7], 16, -155497632) - b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640) - a = md5hh(a, b, c, d, x[i + 13], 4, 681279174) - d = md5hh(d, a, b, c, x[i], 11, -358537222) - c = md5hh(c, d, a, b, x[i + 3], 16, -722521979) - b = md5hh(b, c, d, a, x[i + 6], 23, 76029189) - a = md5hh(a, b, c, d, x[i + 9], 4, -640364487) - d = md5hh(d, a, b, c, x[i + 12], 11, -421815835) - c = md5hh(c, d, a, b, x[i + 15], 16, 530742520) - b = md5hh(b, c, d, a, x[i + 2], 23, -995338651) - - a = md5ii(a, b, c, d, x[i], 6, -198630844) - d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415) - c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905) - b = md5ii(b, c, d, a, x[i + 5], 21, -57434055) - a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571) - d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606) - c = md5ii(c, d, a, b, x[i + 10], 15, -1051523) - b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799) - a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359) - d = md5ii(d, a, b, c, x[i + 15], 10, -30611744) - c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380) - b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649) - a = md5ii(a, b, c, d, x[i + 4], 6, -145523070) - d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379) - c = md5ii(c, d, a, b, x[i + 2], 15, 718787259) - b = md5ii(b, c, d, a, x[i + 9], 21, -343485551) - - a = safeAdd(a, olda) - b = safeAdd(b, oldb) - c = safeAdd(c, oldc) - d = safeAdd(d, oldd) -} -return [a, b, c, d] + /* append padding */ + // 添加填充数据,使数据长度满足要求 + x[len >> 5] |= 0x80 << (len % 32) + // 添加原始数据长度信息(以位为单位) + x[(((len + 64) >>> 9) << 4) + 14] = len + + var i + var olda + var oldb + var oldc + var oldd + var a = 1732584193 + var b = -271733879 + var c = -1732584194 + var d = 271733878 + + for (i = 0; i < x.length; i += 16) { + // 保存当前状态 + olda = a + oldb = b + oldc = c + oldd = d + + // 执行 MD5 算法的主循环,处理每个块的数据 + a = md5ff(a, b, c, d, x[i], 7, -680876936) + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586) + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819) + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330) + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897) + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426) + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341) + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983) + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416) + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417) + c = md5ff(c, d, a, b, x[i + 10], 17, -42063) + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162) + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682) + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101) + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290) + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329) + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510) + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632) + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713) + b = md5gg(b, c, d, a, x[i], 20, -373897302) + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691) + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083) + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335) + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848) + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438) + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690) + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961) + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501) + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467) + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784) + c = md5gg(c, d, a, b, x[i + 7], 14, 173537119) + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734) + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558) + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463) + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562) + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556) + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060) + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353) + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632) + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640) + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174) + d = md5hh(d, a, b, c, x[i + 0], 11, -358537222) + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979) + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189) + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487) + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835) + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520) + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651) + + a = md5ii(a, b, c, d, x[i], 6, -198630844) + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415) + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905) + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055) + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571) + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606) + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523) + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799) + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359) + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744) + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380) + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649) + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070) + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379) + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259) + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551) + + a = safeAdd(a, olda) + b = safeAdd(b, oldb) + c = safeAdd(c, oldc) + d = safeAdd(d, oldd) + } + + return [a, b, c, d] } /* * Convert an array of little-endian words to a string */ +/* + * 将小端序的字数组转换为字符串 + */ function binl2rstr (input) { -var i -var output = '' -var length32 = input.length * 32 -for (i = 0; i < length32; i += 8) { - output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff) -} -return output + var i; + var output = ''; + var length32 = input.length * 32; // 计算输入数组的总位数 + for (i = 0; i < length32; i += 8) { + // 从输入数组中提取每个字节并转换为字符 + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; } /* -* Convert a raw string to an array of little-endian words -* Characters >255 have their high-byte silently ignored. -*/ + * 将原始字符串转换为小端序的字数组 + * 字符值大于255的高字节将被忽略。 + */ function rstr2binl (input) { -var i -var output = [] -output[(input.length >> 2) - 1] = undefined -for (i = 0; i < output.length; i += 1) { - output[i] = 0 -} -var length8 = input.length * 8 -for (i = 0; i < length8; i += 8) { - output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32) -} -return output + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; // 确保输出数组有足够的空间 + for (i = 0; i < output.length; i += 1) { + output[i] = 0; // 用零初始化输出数组 + } + var length8 = input.length * 8; // 计算输入字符串的总位数 + for (i = 0; i < length8; i += 8) { + // 将每个字符打包到输出数组中作为小端序字 + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; } /* -* Calculate the MD5 of a raw string -*/ + * 计算原始字符串的MD5哈希值 + */ function rstrMD5 (s) { -return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)) + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); // 将原始字符串转换为二进制,进行哈希运算,然后转换回原始字符串 } /* -* Calculate the HMAC-MD5, of a key and some data (raw strings) -*/ + * 计算HMAC-MD5(密钥和数据) + */ function rstrHMACMD5 (key, data) { -var i -var bkey = rstr2binl(key) -var ipad = [] -var opad = [] -var hash -ipad[15] = opad[15] = undefined -if (bkey.length > 16) { - bkey = binlMD5(bkey, key.length * 8) -} -for (i = 0; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636 - opad[i] = bkey[i] ^ 0x5c5c5c5c -} -hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8) -return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)) + var i; + var bkey = rstr2binl(key); // 将密钥转换为二进制数组 + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; // 确保ipad和opad数组有足够的空间 + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); // 如果密钥长度超过16个字,先对其进行哈希运算 + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; // 使用ipad常量对密钥进行异或操作 + opad[i] = bkey[i] ^ 0x5c5c5c5c; // 使用opad常量对密钥进行异或操作 + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); // 对内填充的密钥和数据进行哈希运算 + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); // 对外填充的密钥和之前的哈希结果进行哈希运算,然后转换为原始字符串 } /* -* Convert a raw string to a hex string -*/ + * 将原始字符串转换为十六进制字符串 + */ function rstr2hex (input) { -var hexTab = '0123456789abcdef' -var output = '' -var x -var i -for (i = 0; i < input.length; i += 1) { - x = input.charCodeAt(i) - output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f) -} -return output + var hexTab = '0123456789abcdef'; // 十六进制字符表 + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); // 获取每个字符的ASCII码 + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); // 将每个字符转换为其十六进制表示 + } + return output; } /* -* Encode a string as utf-8 -*/ + * 将字符串编码为UTF-8格式 + */ function str2rstrUTF8 (input) { -return unescape(encodeURIComponent(input)) + return unescape(encodeURIComponent(input)); // 将输入字符串编码为UTF-8格式 } /* -* Take string arguments and return either raw or hex encoded strings -*/ + * 接受字符串参数并返回原始或十六进制编码的字符串 + */ function rawMD5 (s) { -return rstrMD5(str2rstrUTF8(s)) + return rstrMD5(str2rstrUTF8(s)); // 将输入字符串转换为原始格式并计算其MD5哈希值 } function hexMD5 (s) { -return rstr2hex(rawMD5(s)) + return rstr2hex(rawMD5(s)); // 将输入字符串转换为原始格式,计算其MD5哈希值,然后转换为十六进制格式 } function rawHMACMD5 (k, d) { -return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)) + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); // 将密钥和数据转换为原始格式,计算它们的HMAC-MD5哈希值,并返回原始结果 } function hexHMACMD5 (k, d) { -return rstr2hex(rawHMACMD5(k, d)) + return rstr2hex(rawHMACMD5(k, d)); // 将密钥和数据转换为原始格式,计算它们的HMAC-MD5哈希值,转换为十六进制格式,并返回十六进制结果 } +/* + * 根据提供的参数计算MD5或HMAC-MD5的主函数 + */ function md5 (string, key, raw) { -if (!key) { - if (!raw) { - return hexMD5(string) - } - return rawMD5(string) -} -if (!raw) { - return hexHMACMD5(key, string) -} -return rawHMACMD5(key, string) + if (!key) { // 如果没有提供密钥,计算输入字符串的MD5哈希值 + if (!raw) { + return hexMD5(string); // 返回十六进制编码的MD5哈希值 + } + return rawMD5(string); // 返回原始MD5哈希值 + } + if (!raw) { // 如果提供了密钥,使用密钥计算输入字符串的HMAC-MD5哈希值 + return hexHMACMD5(key, string); // 返回十六进制编码的HMAC-MD5哈希值 + } + return rawHMACMD5(key, string); } \ No newline at end of file diff --git a/src/main/webapp/js/xcity.js b/src/main/webapp/js/xcity.js index 29cdbe2..606b965 100644 --- a/src/main/webapp/js/xcity.js +++ b/src/main/webapp/js/xcity.js @@ -15,9 +15,9 @@ this.p.html(''); is_pName = false; - + for (var i in provinceList) { - + if(pName==provinceList[i].name){ is_pName = true; this.cityList = provinceList[i].cityList; @@ -29,7 +29,7 @@ if(!is_pName){ this.cityList = provinceList[0].cityList; } - + } this.showC = function (cityList) { @@ -57,7 +57,7 @@ this.a.html(''); for (var i in areaList) { - + if(aName==areaList[i]){ this.a.append("") }else{ @@ -87,420 +87,420 @@ return this; } var provinceList = [ -{name:'北京', cityList:[ -{name:'市辖区', areaList:['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区']}, -{name:'县', areaList:['密云县','延庆县']} -]}, -{name:'上海', cityList:[ -{name:'市辖区', areaList:['黄浦区','卢湾区','徐汇区','长宁区','静安区','普陀区','闸北区','虹口区','杨浦区','闵行区','宝山区','嘉定区','浦东新区','金山区','松江区','青浦区','南汇区','奉贤区']}, -{name:'县', areaList:['崇明县']} -]}, -{name:'天津', cityList:[ -{name:'市辖区', areaList:['和平区','河东区','河西区','南开区','河北区','红桥区','塘沽区','汉沽区','大港区','东丽区','西青区','津南区','北辰区','武清区','宝坻区']}, -{name:'县', areaList:['宁河县','静海县','蓟 县']} -]}, -{name:'重庆', cityList:[ -{name:'市辖区', areaList:['万州区','涪陵区','渝中区','大渡口区','江北区','沙坪坝区','九龙坡区','南岸区','北碚区','万盛区','双桥区','渝北区','巴南区','黔江区','长寿区']}, -{name:'县', areaList:['綦江县','潼南县','铜梁县','大足县','荣昌县','璧山县','梁平县','城口县','丰都县','垫江县','武隆县','忠 县','开 县','云阳县','奉节县','巫山县','巫溪县','石柱土家族自治县','秀山土家族苗族自治县','酉阳土家族苗族自治县','彭水苗族土家族自治县']}, -{name:'市', areaList:['江津市','合川市','永川市','南川市']} -]}, -{name:'四川', cityList:[ -{name:'成都市', areaList:['市辖区','锦江区','青羊区','金牛区','武侯区','成华区','龙泉驿区','青白江区','新都区','温江县','金堂县','双流县','郫 县','大邑县','蒲江县','新津县','都江堰市','彭州市','邛崃市','崇州市']}, -{name:'自贡市', areaList:['市辖区','自流井区','贡井区','大安区','沿滩区','荣 县','富顺县']}, -{name:'攀枝花市', areaList:['市辖区','东 区','西 区','仁和区','米易县','盐边县']}, -{name:'泸州市', areaList:['市辖区','江阳区','纳溪区','龙马潭区','泸 县','合江县','叙永县','古蔺县']}, -{name:'德阳市', areaList:['市辖区','旌阳区','中江县','罗江县','广汉市','什邡市','绵竹市']}, -{name:'绵阳市', areaList:['市辖区','涪城区','游仙区','三台县','盐亭县','安 县','梓潼县','北川羌族自治县','平武县','江油市']}, -{name:'广元市', areaList:['市辖区','市中区','元坝区','朝天区','旺苍县','青川县','剑阁县','苍溪县']}, -{name:'遂宁市', areaList:['市辖区','船山区','安居区','蓬溪县','射洪县','大英县']}, -{name:'内江市', areaList:['市辖区','市中区','东兴区','威远县','资中县','隆昌县']}, -{name:'乐山市', areaList:['市辖区','市中区','沙湾区','五通桥区','金口河区','犍为县','井研县','夹江县','沐川县','峨边彝族自治县','马边彝族自治县','峨眉山市']}, -{name:'南充市', areaList:['市辖区','顺庆区','高坪区','嘉陵区','南部县','营山县','蓬安县','仪陇县','西充县','阆中市']}, -{name:'眉山市', areaList:['市辖区','东坡区','仁寿县','彭山县','洪雅县','丹棱县','青神县']}, -{name:'宜宾市', areaList:['市辖区','翠屏区','宜宾县','南溪县','江安县','长宁县','高 县','珙 县','筠连县','兴文县','屏山县']}, -{name:'广安市', areaList:['市辖区','广安区','岳池县','武胜县','邻水县','华莹市']}, -{name:'达州市', areaList:['市辖区','通川区','达 县','宣汉县','开江县','大竹县','渠 县','万源市']}, -{name:'雅安市', areaList:['市辖区','雨城区','名山县','荥经县','汉源县','石棉县','天全县','芦山县','宝兴县']}, -{name:'巴中市', areaList:['市辖区','巴州区','通江县','南江县','平昌县']}, -{name:'资阳市', areaList:['市辖区','雁江区','安岳县','乐至县','简阳市']}, -{name:'阿坝藏族羌族自治州', areaList:['汶川县','理 县','茂 县','松潘县','九寨沟县','金川县','小金县','黑水县','马尔康县','壤塘县','阿坝县','若尔盖县','红原县']}, -{name:'甘孜藏族自治州', areaList:['康定县','泸定县','丹巴县','九龙县','雅江县','道孚县','炉霍县','甘孜县','新龙县','德格县','白玉县','石渠县','色达县','理塘县','巴塘县','乡城县','稻城县','得荣县']}, -{name:'凉山彝族自治州', areaList:['西昌市','木里藏族自治县','盐源县','德昌县','会理县','会东县','宁南县','普格县','布拖县','金阳县','昭觉县','喜德县','冕宁县','越西县','甘洛县','美姑县','雷波县']} -]}, -{name:'贵州', cityList:[ -{name:'贵阳市', areaList:['市辖区','南明区','云岩区','花溪区','乌当区','白云区','小河区','开阳县','息烽县','修文县','清镇市']}, -{name:'六盘水市', areaList:['钟山区','六枝特区','水城县','盘 县']}, -{name:'遵义市', areaList:['市辖区','红花岗区','汇川区','遵义县','桐梓县','绥阳县','正安县','道真仡佬族苗族自治县','务川仡佬族苗族自治县','凤冈县','湄潭县','余庆县','习水县','赤水市','仁怀市']}, -{name:'安顺市', areaList:['市辖区','西秀区','平坝县','普定县','镇宁布依族苗族自治县','关岭布依族苗族自治县','紫云苗族布依族自治县']}, -{name:'铜仁地区', areaList:['铜仁市','江口县','玉屏侗族自治县','石阡县','思南县','印江土家族苗族自治县','德江县','沿河土家族自治县','松桃苗族自治县','万山特区']}, -{name:'黔西南布依族苗族自治州', areaList:['兴义市','兴仁县','普安县','晴隆县','贞丰县','望谟县','册亨县','安龙县']}, -{name:'毕节地区', areaList:['毕节市','大方县','黔西县','金沙县','织金县','纳雍县','威宁彝族回族苗族自治县','赫章县']}, -{name:'黔东南苗族侗族自治州', areaList:['凯里市','黄平县','施秉县','三穗县','镇远县','岑巩县','天柱县','锦屏县','剑河县','台江县','黎平县','榕江县','从江县','雷山县','麻江县','丹寨县']}, -{name:'黔南布依族苗族自治州', areaList:['都匀市','福泉市','荔波县','贵定县','瓮安县','独山县','平塘县','罗甸县','长顺县','龙里县','惠水县','三都水族自治县']} -]}, -{name:'云南', cityList:[ -{name:'昆明市', areaList:['市辖区','五华区','盘龙区','官渡区','西山区','东川区','呈贡县','晋宁县','富民县','宜良县','石林彝族自治县','嵩明县','禄劝彝族苗族自治县','寻甸回族彝族自治县','安宁市']}, -{name:'曲靖市', areaList:['市辖区','麒麟区','马龙县','陆良县','师宗县','罗平县','富源县','会泽县','沾益县','宣威市']}, -{name:'玉溪市', areaList:['市辖区','红塔区','江川县','澄江县','通海县','华宁县','易门县','峨山彝族自治县','新平彝族傣族自治县','元江哈尼族彝族傣族自治县']}, -{name:'保山市', areaList:['市辖区','隆阳区','施甸县','腾冲县','龙陵县','昌宁县']}, -{name:'昭通市', areaList:['市辖区','昭阳区','鲁甸县','巧家县','盐津县','大关县','永善县','绥江县','镇雄县','彝良县','威信县','水富县']}, -{name:'丽江市', areaList:['市辖区','古城区','玉龙纳西族自治县','永胜县','华坪县','宁蒗彝族自治县']}, -{name:'思茅市', areaList:['市辖区','翠云区','普洱哈尼族彝族自治县','墨江哈尼族自治县','景东彝族自治县','景谷傣族彝族自治县','镇沅彝族哈尼族拉祜族自治县','江城哈尼族彝族自治县','孟连傣族拉祜族佤族自治县','澜沧拉祜族自治县','西盟佤族自治县']}, -{name:'临沧市', areaList:['市辖区','临翔区','凤庆县','云 县','永德县','镇康县','双江拉祜族佤族布朗族傣族自治县','耿马傣族佤族自治县','沧源佤族自治县']}, -{name:'楚雄彝族自治州', areaList:['楚雄市','双柏县','牟定县','南华县','姚安县','大姚县','永仁县','元谋县','武定县','禄丰县']}, -{name:'红河哈尼族彝族自治州', areaList:['个旧市','开远市','蒙自县','屏边苗族自治县','建水县','石屏县','弥勒县','泸西县','元阳县','红河县','金平苗族瑶族傣族自治县','绿春县','河口瑶族自治县']}, -{name:'文山壮族苗族自治州', areaList:['文山县','砚山县','西畴县','麻栗坡县','马关县','丘北县','广南县','富宁县']}, -{name:'西双版纳傣族自治州', areaList:['景洪市','勐海县','勐腊县']}, -{name:'大理白族自治州', areaList:['大理市','漾濞彝族自治县','祥云县','宾川县','弥渡县','南涧彝族自治县','巍山彝族回族自治县','永平县','云龙县','洱源县','剑川县','鹤庆县']}, -{name:'德宏傣族景颇族自治州', areaList:['瑞丽市','潞西市','梁河县','盈江县','陇川县']}, -{name:'怒江傈僳族自治州', areaList:['泸水县','福贡县','贡山独龙族怒族自治县','兰坪白族普米族自治县']}, -{name:'迪庆藏族自治州', areaList:['香格里拉县','德钦县','维西傈僳族自治县']} -]}, -{name:'西藏', cityList:[ -{name:'拉萨市', areaList:['市辖区','城关区','林周县','当雄县','尼木县','曲水县','堆龙德庆县','达孜县','墨竹工卡县']}, -{name:'昌都地区', areaList:['昌都县','江达县','贡觉县','类乌齐县','丁青县','察雅县','八宿县','左贡县','芒康县','洛隆县','边坝县']}, -{name:'山南地区', areaList:['乃东县','扎囊县','贡嘎县','桑日县','琼结县','曲松县','措美县','洛扎县','加查县','隆子县','错那县','浪卡子县']}, -{name:'日喀则地区', areaList:['日喀则市','南木林县','江孜县','定日县','萨迦县','拉孜县','昂仁县','谢通门县','白朗县','仁布县','康马县','定结县','仲巴县','亚东县','吉隆县','聂拉木县','萨嘎县','岗巴县']}, -{name:'那曲地区', areaList:['那曲县','嘉黎县','比如县','聂荣县','安多县','申扎县','索 县','班戈县','巴青县','尼玛县']}, -{name:'阿里地区', areaList:['普兰县','札达县','噶尔县','日土县','革吉县','改则县','措勤县']}, -{name:'林芝地区', areaList:['林芝县','工布江达县','米林县','墨脱县','波密县','察隅县','朗 县']} -]}, -{name:'河南', cityList:[ -{name:'郑州市', areaList:['市辖区','中原区','二七区','管城回族区','金水区','上街区','邙山区','中牟县','巩义市','荥阳市','新密市','新郑市','登封市']}, -{name:'开封市', areaList:['市辖区','龙亭区','顺河回族区','鼓楼区','南关区','郊 区','杞 县','通许县','尉氏县','开封县','兰考县']}, -{name:'洛阳市', areaList:['市辖区','老城区','西工区','廛河回族区','涧西区','吉利区','洛龙区','孟津县','新安县','栾川县','嵩 县','汝阳县','宜阳县','洛宁县','伊川县','偃师市']}, -{name:'平顶山市', areaList:['市辖区','新华区','卫东区','石龙区','湛河区','宝丰县','叶 县','鲁山县','郏 县','舞钢市','汝州市']}, -{name:'安阳市', areaList:['市辖区','文峰区','北关区','殷都区','龙安区','安阳县','汤阴县','滑 县','内黄县','林州市']}, -{name:'鹤壁市', areaList:['市辖区','鹤山区','山城区','淇滨区','浚 县','淇 县']}, -{name:'新乡市', areaList:['市辖区','红旗区','卫滨区','凤泉区','牧野区','新乡县','获嘉县','原阳县','延津县','封丘县','长垣县','卫辉市','辉县市']}, -{name:'焦作市', areaList:['市辖区','解放区','中站区','马村区','山阳区','修武县','博爱县','武陟县','温 县','济源市','沁阳市','孟州市']}, -{name:'濮阳市', areaList:['市辖区','华龙区','清丰县','南乐县','范 县','台前县','濮阳县']}, -{name:'许昌市', areaList:['市辖区','魏都区','许昌县','鄢陵县','襄城县','禹州市','长葛市']}, -{name:'漯河市', areaList:['市辖区','源汇区','郾城区','召陵区','舞阳县','临颍县']}, -{name:'三门峡市', areaList:['市辖区','湖滨区','渑池县','陕 县','卢氏县','义马市','灵宝市']}, -{name:'南阳市', areaList:['市辖区','宛城区','卧龙区','南召县','方城县','西峡县','镇平县','内乡县','淅川县','社旗县','唐河县','新野县','桐柏县','邓州市']}, -{name:'商丘市', areaList:['市辖区','梁园区','睢阳区','民权县','睢 县','宁陵县','柘城县','虞城县','夏邑县','永城市']}, -{name:'信阳市', areaList:['市辖区','师河区','平桥区','罗山县','光山县','新 县','商城县','固始县','潢川县','淮滨县','息 县']}, -{name:'周口市', areaList:['市辖区','川汇区','扶沟县','西华县','商水县','沈丘县','郸城县','淮阳县','太康县','鹿邑县','项城市']}, -{name:'驻马店市', areaList:['市辖区','驿城区','西平县','上蔡县','平舆县','正阳县','确山县','泌阳县','汝南县','遂平县','新蔡县']} -]}, -{name:'湖北', cityList:[ -{name:'武汉市', areaList:['市辖区','江岸区','江汉区','乔口区','汉阳区','武昌区','青山区','洪山区','东西湖区','汉南区','蔡甸区','江夏区','黄陂区','新洲区']}, -{name:'黄石市', areaList:['市辖区','黄石港区','西塞山区','下陆区','铁山区','阳新县','大冶市']}, -{name:'十堰市', areaList:['市辖区','茅箭区','张湾区','郧 县','郧西县','竹山县','竹溪县','房 县','丹江口市']}, -{name:'宜昌市', areaList:['市辖区','西陵区','伍家岗区','点军区','猇亭区','夷陵区','远安县','兴山县','秭归县','长阳土家族自治县','五峰土家族自治县','宜都市','当阳市','枝江市']}, -{name:'襄樊市', areaList:['市辖区','襄城区','樊城区','襄阳区','南漳县','谷城县','保康县','老河口市','枣阳市','宜城市']}, -{name:'鄂州市', areaList:['市辖区','梁子湖区','华容区','鄂城区']}, -{name:'荆门市', areaList:['市辖区','东宝区','掇刀区','京山县','沙洋县','钟祥市']}, -{name:'孝感市', areaList:['市辖区','孝南区','孝昌县','大悟县','云梦县','应城市','安陆市','汉川市']}, -{name:'荆州市', areaList:['市辖区','沙市区','荆州区','公安县','监利县','江陵县','石首市','洪湖市','松滋市']}, -{name:'黄冈市', areaList:['市辖区','黄州区','团风县','红安县','罗田县','英山县','浠水县','蕲春县','黄梅县','麻城市','武穴市']}, -{name:'咸宁市', areaList:['市辖区','咸安区','嘉鱼县','通城县','崇阳县','通山县','赤壁市']}, -{name:'随州市', areaList:['市辖区','曾都区','广水市']}, -{name:'恩施土家族苗族自治州', areaList:['恩施市','利川市','建始县','巴东县','宣恩县','咸丰县','来凤县','鹤峰县']}, -{name:'省直辖行政单位', areaList:['仙桃市','潜江市','天门市','神农架林区']} -]}, -{name:'湖南', cityList:[ -{name:'长沙市', areaList:['市辖区','芙蓉区','天心区','岳麓区','开福区','雨花区','长沙县','望城县','宁乡县','浏阳市']}, -{name:'株洲市', areaList:['市辖区','荷塘区','芦淞区','石峰区','天元区','株洲县','攸 县','茶陵县','炎陵县','醴陵市']}, -{name:'湘潭市', areaList:['市辖区','雨湖区','岳塘区','湘潭县','湘乡市','韶山市']}, -{name:'衡阳市', areaList:['市辖区','珠晖区','雁峰区','石鼓区','蒸湘区','南岳区','衡阳县','衡南县','衡山县','衡东县','祁东县','耒阳市','常宁市']}, -{name:'邵阳市', areaList:['市辖区','双清区','大祥区','北塔区','邵东县','新邵县','邵阳县','隆回县','洞口县','绥宁县','新宁县','城步苗族自治县','武冈市']}, -{name:'岳阳市', areaList:['市辖区','岳阳楼区','云溪区','君山区','岳阳县','华容县','湘阴县','平江县','汨罗市','临湘市']}, -{name:'常德市', areaList:['市辖区','武陵区','鼎城区','安乡县','汉寿县','澧 县','临澧县','桃源县','石门县','津市市']}, -{name:'张家界市', areaList:['市辖区','永定区','武陵源区','慈利县','桑植县']}, -{name:'益阳市', areaList:['市辖区','资阳区','赫山区','南 县','桃江县','安化县','沅江市']}, -{name:'郴州市', areaList:['市辖区','北湖区','苏仙区','桂阳县','宜章县','永兴县','嘉禾县','临武县','汝城县','桂东县','安仁县','资兴市']}, -{name:'永州市', areaList:['市辖区','芝山区','冷水滩区','祁阳县','东安县','双牌县','道 县','江永县','宁远县','蓝山县','新田县','江华瑶族自治县']}, -{name:'怀化市', areaList:['市辖区','鹤城区','中方县','沅陵县','辰溪县','溆浦县','会同县','麻阳苗族自治县','新晃侗族自治县','芷江侗族自治县','靖州苗族侗族自治县','通道侗族自治县','洪江市']}, -{name:'娄底市', areaList:['市辖区','娄星区','双峰县','新化县','冷水江市','涟源市']}, -{name:'湘西土家族苗族自治州', areaList:['吉首市','泸溪县','凤凰县','花垣县','保靖县','古丈县','永顺县','龙山县']} -]}, -{name:'广东', cityList:[ -{name:'广州市', areaList:['市辖区','东山区','荔湾区','越秀区','海珠区','天河区','芳村区','白云区','黄埔区','番禺区','花都区','增城市','从化市']}, -{name:'韶关市', areaList:['市辖区','武江区','浈江区','曲江区','始兴县','仁化县','翁源县','乳源瑶族自治县','新丰县','乐昌市','南雄市']}, -{name:'深圳市', areaList:['市辖区','罗湖区','福田区','南山区','宝安区','龙岗区','盐田区']}, -{name:'珠海市', areaList:['市辖区','香洲区','斗门区','金湾区']}, -{name:'汕头市', areaList:['市辖区','龙湖区','金平区','濠江区','潮阳区','潮南区','澄海区','南澳县']}, -{name:'佛山市', areaList:['市辖区','禅城区','南海区','顺德区','三水区','高明区']}, -{name:'江门市', areaList:['市辖区','蓬江区','江海区','新会区','台山市','开平市','鹤山市','恩平市']}, -{name:'湛江市', areaList:['市辖区','赤坎区','霞山区','坡头区','麻章区','遂溪县','徐闻县','廉江市','雷州市','吴川市']}, -{name:'茂名市', areaList:['市辖区','茂南区','茂港区','电白县','高州市','化州市','信宜市']}, -{name:'肇庆市', areaList:['市辖区','端州区','鼎湖区','广宁县','怀集县','封开县','德庆县','高要市','四会市']}, -{name:'惠州市', areaList:['市辖区','惠城区','惠阳区','博罗县','惠东县','龙门县']}, -{name:'梅州市', areaList:['市辖区','梅江区','梅 县','大埔县','丰顺县','五华县','平远县','蕉岭县','兴宁市']}, -{name:'汕尾市', areaList:['市辖区','城 区','海丰县','陆河县','陆丰市']}, -{name:'河源市', areaList:['市辖区','源城区','紫金县','龙川县','连平县','和平县','东源县']}, -{name:'阳江市', areaList:['市辖区','江城区','阳西县','阳东县','阳春市']}, -{name:'清远市', areaList:['市辖区','清城区','佛冈县','阳山县','连山壮族瑶族自治县','连南瑶族自治县','清新县','英德市','连州市']}, -{name:'东莞市', areaList:['东莞市']}, -{name:'中山市', areaList:['中山市']}, -{name:'潮州市', areaList:['市辖区','湘桥区','潮安县','饶平县']}, -{name:'揭阳市', areaList:['市辖区','榕城区','揭东县','揭西县','惠来县','普宁市']}, -{name:'云浮市', areaList:['市辖区','云城区','新兴县','郁南县','云安县','罗定市']} -]}, -{name:'广西', cityList:[ -{name:'南宁市', areaList:['市辖区','兴宁区','青秀区','江南区','西乡塘区','良庆区','邕宁区','武鸣县','隆安县','马山县','上林县','宾阳县','横 县']}, -{name:'柳州市', areaList:['市辖区','城中区','鱼峰区','柳南区','柳北区','柳江县','柳城县','鹿寨县','融安县','融水苗族自治县','三江侗族自治县']}, -{name:'桂林市', areaList:['市辖区','秀峰区','叠彩区','象山区','七星区','雁山区','阳朔县','临桂县','灵川县','全州县','兴安县','永福县','灌阳县','龙胜各族自治县','资源县','平乐县','荔蒲县','恭城瑶族自治县']}, -{name:'梧州市', areaList:['市辖区','万秀区','蝶山区','长洲区','苍梧县','藤 县','蒙山县','岑溪市']}, -{name:'北海市', areaList:['市辖区','海城区','银海区','铁山港区','合浦县']}, -{name:'防城港市', areaList:['市辖区','港口区','防城区','上思县','东兴市']}, -{name:'钦州市', areaList:['市辖区','钦南区','钦北区','灵山县','浦北县']}, -{name:'贵港市', areaList:['市辖区','港北区','港南区','覃塘区','平南县','桂平市']}, -{name:'玉林市', areaList:['市辖区','玉州区','容 县','陆川县','博白县','兴业县','北流市']}, -{name:'百色市', areaList:['市辖区','右江区','田阳县','田东县','平果县','德保县','靖西县','那坡县','凌云县','乐业县','田林县','西林县','隆林各族自治县']}, -{name:'贺州市', areaList:['市辖区','八步区','昭平县','钟山县','富川瑶族自治县']}, -{name:'河池市', areaList:['市辖区','金城江区','南丹县','天峨县','凤山县','东兰县','罗城仫佬族自治县','环江毛南族自治县','巴马瑶族自治县','都安瑶族自治县','大化瑶族自治县','宜州市']}, -{name:'来宾市', areaList:['市辖区','兴宾区','忻城县','象州县','武宣县','金秀瑶族自治县','合山市']}, -{name:'崇左市', areaList:['市辖区','江洲区','扶绥县','宁明县','龙州县','大新县','天等县','凭祥市']} -]}, -{name:'陕西', cityList:[ -{name:'西安市', areaList:['市辖区','新城区','碑林区','莲湖区','灞桥区','未央区','雁塔区','阎良区','临潼区','长安区','蓝田县','周至县','户 县','高陵县']}, -{name:'铜川市', areaList:['市辖区','王益区','印台区','耀州区','宜君县']}, -{name:'宝鸡市', areaList:['市辖区','渭滨区','金台区','陈仓区','凤翔县','岐山县','扶风县','眉 县','陇 县','千阳县','麟游县','凤 县','太白县']}, -{name:'咸阳市', areaList:['市辖区','秦都区','杨凌区','渭城区','三原县','泾阳县','乾 县','礼泉县','永寿县','彬 县','长武县','旬邑县','淳化县','武功县','兴平市']}, -{name:'渭南市', areaList:['市辖区','临渭区','华 县','潼关县','大荔县','合阳县','澄城县','蒲城县','白水县','富平县','韩城市','华阴市']}, -{name:'延安市', areaList:['市辖区','宝塔区','延长县','延川县','子长县','安塞县','志丹县','吴旗县','甘泉县','富 县','洛川县','宜川县','黄龙县','黄陵县']}, -{name:'汉中市', areaList:['市辖区','汉台区','南郑县','城固县','洋 县','西乡县','勉 县','宁强县','略阳县','镇巴县','留坝县','佛坪县']}, -{name:'榆林市', areaList:['市辖区','榆阳区','神木县','府谷县','横山县','靖边县','定边县','绥德县','米脂县','佳 县','吴堡县','清涧县','子洲县']}, -{name:'安康市', areaList:['市辖区','汉滨区','汉阴县','石泉县','宁陕县','紫阳县','岚皋县','平利县','镇坪县','旬阳县','白河县']}, -{name:'商洛市', areaList:['市辖区','商州区','洛南县','丹凤县','商南县','山阳县','镇安县','柞水县']} -]}, -{name:'甘肃', cityList:[ -{name:'兰州市', areaList:['市辖区','城关区','七里河区','西固区','安宁区','红古区','永登县','皋兰县','榆中县']}, -{name:'嘉峪关市', areaList:['市辖区']}, -{name:'金昌市', areaList:['市辖区','金川区','永昌县']}, -{name:'白银市', areaList:['市辖区','白银区','平川区','靖远县','会宁县','景泰县']}, -{name:'天水市', areaList:['市辖区','秦城区','北道区','清水县','秦安县','甘谷县','武山县','张家川回族自治县']}, -{name:'武威市', areaList:['市辖区','凉州区','民勤县','古浪县','天祝藏族自治县']}, -{name:'张掖市', areaList:['市辖区','甘州区','肃南裕固族自治县','民乐县','临泽县','高台县','山丹县']}, -{name:'平凉市', areaList:['市辖区','崆峒区','泾川县','灵台县','崇信县','华亭县','庄浪县','静宁县']}, -{name:'酒泉市', areaList:['市辖区','肃州区','金塔县','安西县','肃北蒙古族自治县','阿克塞哈萨克族自治县','玉门市','敦煌市']}, -{name:'庆阳市', areaList:['市辖区','西峰区','庆城县','环 县','华池县','合水县','正宁县','宁 县','镇原县']}, -{name:'定西市', areaList:['市辖区','安定区','通渭县','陇西县','渭源县','临洮县','漳 县','岷 县']}, -{name:'陇南市', areaList:['市辖区','武都区','成 县','文 县','宕昌县','康 县','西和县','礼 县','徽 县','两当县']}, -{name:'临夏回族自治州', areaList:['临夏市','临夏县','康乐县','永靖县','广河县','和政县','东乡族自治县','积石山保安族东乡族撒拉族自治县']}, -{name:'甘南藏族自治州', areaList:['合作市','临潭县','卓尼县','舟曲县','迭部县','玛曲县','碌曲县','夏河县']} -]}, -{name:'青海', cityList:[ -{name:'西宁市', areaList:['市辖区','城东区','城中区','城西区','城北区','大通回族土族自治县','湟中县','湟源县']}, -{name:'海东地区', areaList:['平安县','民和回族土族自治县','乐都县','互助土族自治县','化隆回族自治县','循化撒拉族自治县']}, -{name:'海北藏族自治州', areaList:['门源回族自治县','祁连县','海晏县','刚察县']}, -{name:'黄南藏族自治州', areaList:['同仁县','尖扎县','泽库县','河南蒙古族自治县']}, -{name:'海南藏族自治州', areaList:['共和县','同德县','贵德县','兴海县','贵南县']}, -{name:'果洛藏族自治州', areaList:['玛沁县','班玛县','甘德县','达日县','久治县','玛多县']}, -{name:'玉树藏族自治州', areaList:['玉树县','杂多县','称多县','治多县','囊谦县','曲麻莱县']}, -{name:'海西蒙古族藏族自治州', areaList:['格尔木市','德令哈市','乌兰县','都兰县','天峻县']} -]}, -{name:'宁夏', cityList:[ -{name:'银川市', areaList:['市辖区','兴庆区','西夏区','金凤区','永宁县','贺兰县','灵武市']}, -{name:'石嘴山市', areaList:['市辖区','大武口区','惠农区','平罗县']}, -{name:'吴忠市', areaList:['市辖区','利通区','盐池县','同心县','青铜峡市']}, -{name:'固原市', areaList:['市辖区','原州区','西吉县','隆德县','泾源县','彭阳县','海原县']}, -{name:'中卫市', areaList:['市辖区','沙坡头区','中宁县']} -]}, -{name:'新疆', cityList:[ -{name:'乌鲁木齐市', areaList:['市辖区','天山区','沙依巴克区','新市区','水磨沟区','头屯河区','达坂城区','东山区','乌鲁木齐县']}, -{name:'克拉玛依市', areaList:['市辖区','独山子区','克拉玛依区','白碱滩区','乌尔禾区']}, -{name:'吐鲁番地区', areaList:['吐鲁番市','鄯善县','托克逊县']}, -{name:'哈密地区', areaList:['哈密市','巴里坤哈萨克自治县','伊吾县']}, -{name:'昌吉回族自治州', areaList:['昌吉市','阜康市','米泉市','呼图壁县','玛纳斯县','奇台县','吉木萨尔县','木垒哈萨克自治县']}, -{name:'博尔塔拉蒙古自治州', areaList:['博乐市','精河县','温泉县']}, -{name:'巴音郭楞蒙古自治州', areaList:['库尔勒市','轮台县','尉犁县','若羌县','且末县','焉耆回族自治县','和静县','和硕县','博湖县']}, -{name:'阿克苏地区', areaList:['阿克苏市','温宿县','库车县','沙雅县','新和县','拜城县','乌什县','阿瓦提县','柯坪县']}, -{name:'克孜勒苏柯尔克孜自治州', areaList:['阿图什市','阿克陶县','阿合奇县','乌恰县']}, -{name:'喀什地区', areaList:['喀什市','疏附县','疏勒县','英吉沙县','泽普县','莎车县','叶城县','麦盖提县','岳普湖县','伽师县','巴楚县','塔什库尔干塔吉克自治县']}, -{name:'和田地区', areaList:['和田市','和田县','墨玉县','皮山县','洛浦县','策勒县','于田县','民丰县']}, -{name:'伊犁哈萨克自治州', areaList:['伊宁市','奎屯市','伊宁县','察布查尔锡伯自治县','霍城县','巩留县','新源县','昭苏县','特克斯县','尼勒克县']}, -{name:'塔城地区', areaList:['塔城市','乌苏市','额敏县','沙湾县','托里县','裕民县','和布克赛尔蒙古自治县']}, -{name:'阿勒泰地区', areaList:['阿勒泰市','布尔津县','富蕴县','福海县','哈巴河县','青河县','吉木乃县']}, -{name:'省直辖行政单位', areaList:['石河子市','阿拉尔市','图木舒克市','五家渠市']} -]}, -{name:'河北', cityList:[ -{name:'石家庄市', areaList:['市辖区','长安区','桥东区','桥西区','新华区','井陉矿区','裕华区','井陉县','正定县','栾城县','行唐县','灵寿县','高邑县','深泽县','赞皇县','无极县','平山县','元氏县','赵 县','辛集市','藁城市','晋州市','新乐市','鹿泉市']}, -{name:'唐山市', areaList:['市辖区','路南区','路北区','古冶区','开平区','丰南区','丰润区','滦 县','滦南县','乐亭县','迁西县','玉田县','唐海县','遵化市','迁安市']}, -{name:'秦皇岛市', areaList:['市辖区','海港区','山海关区','北戴河区','青龙满族自治县','昌黎县','抚宁县','卢龙县']}, -{name:'邯郸市', areaList:['市辖区','邯山区','丛台区','复兴区','峰峰矿区','邯郸县','临漳县','成安县','大名县','涉 县','磁 县','肥乡县','永年县','邱 县','鸡泽县','广平县','馆陶县','魏 县','曲周县','武安市']}, -{name:'邢台市', areaList:['市辖区','桥东区','桥西区','邢台县','临城县','内丘县','柏乡县','隆尧县','任 县','南和县','宁晋县','巨鹿县','新河县','广宗县','平乡县','威 县','清河县','临西县','南宫市','沙河市']}, -{name:'保定市', areaList:['市辖区','新市区','北市区','南市区','满城县','清苑县','涞水县','阜平县','徐水县','定兴县','唐 县','高阳县','容城县','涞源县','望都县','安新县','易 县','曲阳县','蠡 县','顺平县','博野县','雄 县','涿州市','定州市','安国市','高碑店市']}, -{name:'张家口市', areaList:['市辖区','桥东区','桥西区','宣化区','下花园区','宣化县','张北县','康保县','沽源县','尚义县','蔚 县','阳原县','怀安县','万全县','怀来县','涿鹿县','赤城县','崇礼县']}, -{name:'承德市', areaList:['市辖区','双桥区','双滦区','鹰手营子矿区','承德县','兴隆县','平泉县','滦平县','隆化县','丰宁满族自治县','宽城满族自治县','围场满族蒙古族自治县']}, -{name:'沧州市', areaList:['市辖区','新华区','运河区','沧 县','青 县','东光县','海兴县','盐山县','肃宁县','南皮县','吴桥县','献 县','孟村回族自治县','泊头市','任丘市','黄骅市','河间市']}, -{name:'廊坊市', areaList:['市辖区','安次区','广阳区','固安县','永清县','香河县','大城县','文安县','大厂回族自治县','霸州市','三河市']}, -{name:'衡水市', areaList:['市辖区','桃城区','枣强县','武邑县','武强县','饶阳县','安平县','故城县','景 县','阜城县','冀州市','深州市']} -]}, -{name:'山西', cityList:[ -{name:'太原市', areaList:['市辖区','小店区','迎泽区','杏花岭区','尖草坪区','万柏林区','晋源区','清徐县','阳曲县','娄烦县','古交市']}, -{name:'大同市', areaList:['市辖区','城 区','矿 区','南郊区','新荣区','阳高县','天镇县','广灵县','灵丘县','浑源县','左云县','大同县']}, -{name:'阳泉市', areaList:['市辖区','城 区','矿 区','郊 区','平定县','盂 县']}, -{name:'长治市', areaList:['市辖区','城 区','郊 区','长治县','襄垣县','屯留县','平顺县','黎城县','壶关县','长子县','武乡县','沁 县','沁源县','潞城市']}, -{name:'晋城市', areaList:['市辖区','城 区','沁水县','阳城县','陵川县','泽州县','高平市']}, -{name:'朔州市', areaList:['市辖区','朔城区','平鲁区','山阴县','应 县','右玉县','怀仁县']}, -{name:'晋中市', areaList:['市辖区','榆次区','榆社县','左权县','和顺县','昔阳县','寿阳县','太谷县','祁 县','平遥县','灵石县','介休市']}, -{name:'运城市', areaList:['市辖区','盐湖区','临猗县','万荣县','闻喜县','稷山县','新绛县','绛 县','垣曲县','夏 县','平陆县','芮城县','永济市','河津市']}, -{name:'忻州市', areaList:['市辖区','忻府区','定襄县','五台县','代 县','繁峙县','宁武县','静乐县','神池县','五寨县','岢岚县','河曲县','保德县','偏关县','原平市']}, -{name:'临汾市', areaList:['市辖区','尧都区','曲沃县','翼城县','襄汾县','洪洞县','古 县','安泽县','浮山县','吉 县','乡宁县','大宁县','隰 县','永和县','蒲 县','汾西县','侯马市','霍州市']}, -{name:'吕梁市', areaList:['市辖区','离石区','文水县','交城县','兴 县','临 县','柳林县','石楼县','岚 县','方山县','中阳县','交口县','孝义市','汾阳市']} -]}, -{name:'内蒙古', cityList:[ -{name:'呼和浩特市', areaList:['市辖区','新城区','回民区','玉泉区','赛罕区','土默特左旗','托克托县','和林格尔县','清水河县','武川县']}, -{name:'包头市', areaList:['市辖区','东河区','昆都仑区','青山区','石拐区','白云矿区','九原区','土默特右旗','固阳县','达尔罕茂明安联合旗']}, -{name:'乌海市', areaList:['市辖区','海勃湾区','海南区','乌达区']}, -{name:'赤峰市', areaList:['市辖区','红山区','元宝山区','松山区','阿鲁科尔沁旗','巴林左旗','巴林右旗','林西县','克什克腾旗','翁牛特旗','喀喇沁旗','宁城县','敖汉旗']}, -{name:'通辽市', areaList:['市辖区','科尔沁区','科尔沁左翼中旗','科尔沁左翼后旗','开鲁县','库伦旗','奈曼旗','扎鲁特旗','霍林郭勒市']}, -{name:'鄂尔多斯市', areaList:['东胜区','达拉特旗','准格尔旗','鄂托克前旗','鄂托克旗','杭锦旗','乌审旗','伊金霍洛旗']}, -{name:'呼伦贝尔市', areaList:['市辖区','海拉尔区','阿荣旗','莫力达瓦达斡尔族自治旗','鄂伦春自治旗','鄂温克族自治旗','陈巴尔虎旗','新巴尔虎左旗','新巴尔虎右旗','满洲里市','牙克石市','扎兰屯市','额尔古纳市','根河市']}, -{name:'巴彦淖尔市', areaList:['市辖区','临河区','五原县','磴口县','乌拉特前旗','乌拉特中旗','乌拉特后旗','杭锦后旗']}, -{name:'乌兰察布市', areaList:['市辖区','集宁区','卓资县','化德县','商都县','兴和县','凉城县','察哈尔右翼前旗','察哈尔右翼中旗','察哈尔右翼后旗','四子王旗','丰镇市']}, -{name:'兴安盟', areaList:['乌兰浩特市','阿尔山市','科尔沁右翼前旗','科尔沁右翼中旗','扎赉特旗','突泉县']}, -{name:'锡林郭勒盟', areaList:['二连浩特市','锡林浩特市','阿巴嘎旗','苏尼特左旗','苏尼特右旗','东乌珠穆沁旗','西乌珠穆沁旗','太仆寺旗','镶黄旗','正镶白旗','正蓝旗','多伦县']}, -{name:'阿拉善盟', areaList:['阿拉善左旗','阿拉善右旗','额济纳旗']} -]}, -{name:'江苏', cityList:[ -{name:'南京市', areaList:['市辖区','玄武区','白下区','秦淮区','建邺区','鼓楼区','下关区','浦口区','栖霞区','雨花台区','江宁区','六合区','溧水县','高淳县']}, -{name:'无锡市', areaList:['市辖区','崇安区','南长区','北塘区','锡山区','惠山区','滨湖区','江阴市','宜兴市']}, -{name:'徐州市', areaList:['市辖区','鼓楼区','云龙区','九里区','贾汪区','泉山区','丰 县','沛 县','铜山县','睢宁县','新沂市','邳州市']}, -{name:'常州市', areaList:['市辖区','天宁区','钟楼区','戚墅堰区','新北区','武进区','溧阳市','金坛市']}, -{name:'苏州市', areaList:['市辖区','沧浪区','平江区','金阊区','虎丘区','吴中区','相城区','常熟市','张家港市','昆山市','吴江市','太仓市']}, -{name:'南通市', areaList:['市辖区','崇川区','港闸区','海安县','如东县','启东市','如皋市','通州市','海门市']}, -{name:'连云港市', areaList:['市辖区','连云区','新浦区','海州区','赣榆县','东海县','灌云县','灌南县']}, -{name:'淮安市', areaList:['市辖区','清河区','楚州区','淮阴区','清浦区','涟水县','洪泽县','盱眙县','金湖县']}, -{name:'盐城市', areaList:['市辖区','亭湖区','盐都区','响水县','滨海县','阜宁县','射阳县','建湖县','东台市','大丰市']}, -{name:'扬州市', areaList:['市辖区','广陵区','邗江区','郊 区','宝应县','仪征市','高邮市','江都市']}, -{name:'镇江市', areaList:['市辖区','京口区','润州区','丹徒区','丹阳市','扬中市','句容市']}, -{name:'泰州市', areaList:['市辖区','海陵区','高港区','兴化市','靖江市','泰兴市','姜堰市']}, -{name:'宿迁市', areaList:['市辖区','宿城区','宿豫区','沭阳县','泗阳县','泗洪县']} -]}, -{name:'浙江', cityList:[ -{name:'杭州市', areaList:['市辖区','上城区','下城区','江干区','拱墅区','西湖区','滨江区','萧山区','余杭区','桐庐县','淳安县','建德市','富阳市','临安市']}, -{name:'宁波市', areaList:['市辖区','海曙区','江东区','江北区','北仑区','镇海区','鄞州区','象山县','宁海县','余姚市','慈溪市','奉化市']}, -{name:'温州市', areaList:['市辖区','鹿城区','龙湾区','瓯海区','洞头县','永嘉县','平阳县','苍南县','文成县','泰顺县','瑞安市','乐清市']}, -{name:'嘉兴市', areaList:['市辖区','秀城区','秀洲区','嘉善县','海盐县','海宁市','平湖市','桐乡市']}, -{name:'湖州市', areaList:['市辖区','吴兴区','南浔区','德清县','长兴县','安吉县']}, -{name:'绍兴市', areaList:['市辖区','越城区','绍兴县','新昌县','诸暨市','上虞市','嵊州市']}, -{name:'金华市', areaList:['市辖区','婺城区','金东区','武义县','浦江县','磐安县','兰溪市','义乌市','东阳市','永康市']}, -{name:'衢州市', areaList:['市辖区','柯城区','衢江区','常山县','开化县','龙游县','江山市']}, -{name:'舟山市', areaList:['市辖区','定海区','普陀区','岱山县','嵊泗县']}, -{name:'台州市', areaList:['市辖区','椒江区','黄岩区','路桥区','玉环县','三门县','天台县','仙居县','温岭市','临海市']}, -{name:'丽水市', areaList:['市辖区','莲都区','青田县','缙云县','遂昌县','松阳县','云和县','庆元县','景宁畲族自治县','龙泉市']} -]}, -{name:'安徽', cityList:[ -{name:'合肥市', areaList:['市辖区','瑶海区','庐阳区','蜀山区','包河区','长丰县','肥东县','肥西县']}, -{name:'芜湖市', areaList:['市辖区','镜湖区','马塘区','新芜区','鸠江区','芜湖县','繁昌县','南陵县']}, -{name:'蚌埠市', areaList:['市辖区','龙子湖区','蚌山区','禹会区','淮上区','怀远县','五河县','固镇县']}, -{name:'淮南市', areaList:['市辖区','大通区','田家庵区','谢家集区','八公山区','潘集区','凤台县']}, -{name:'马鞍山市', areaList:['市辖区','金家庄区','花山区','雨山区','当涂县']}, -{name:'淮北市', areaList:['市辖区','杜集区','相山区','烈山区','濉溪县']}, -{name:'铜陵市', areaList:['市辖区','铜官山区','狮子山区','郊 区','铜陵县']}, -{name:'安庆市', areaList:['市辖区','迎江区','大观区','郊 区','怀宁县','枞阳县','潜山县','太湖县','宿松县','望江县','岳西县','桐城市']}, -{name:'黄山市', areaList:['市辖区','屯溪区','黄山区','徽州区','歙 县','休宁县','黟 县','祁门县']}, -{name:'滁州市', areaList:['市辖区','琅琊区','南谯区','来安县','全椒县','定远县','凤阳县','天长市','明光市']}, -{name:'阜阳市', areaList:['市辖区','颍州区','颍东区','颍泉区','临泉县','太和县','阜南县','颍上县','界首市']}, -{name:'宿州市', areaList:['市辖区','墉桥区','砀山县','萧 县','灵璧县','泗 县']}, -{name:'巢湖市', areaList:['市辖区','居巢区','庐江县','无为县','含山县','和 县']}, -{name:'六安市', areaList:['市辖区','金安区','裕安区','寿 县','霍邱县','舒城县','金寨县','霍山县']}, -{name:'亳州市', areaList:['市辖区','谯城区','涡阳县','蒙城县','利辛县']}, -{name:'池州市', areaList:['市辖区','贵池区','东至县','石台县','青阳县']}, -{name:'宣城市', areaList:['市辖区','宣州区','郎溪县','广德县','泾 县','绩溪县','旌德县','宁国市']} -]}, -{name:'福建', cityList:[ -{name:'福州市', areaList:['市辖区','鼓楼区','台江区','仓山区','马尾区','晋安区','闽侯县','连江县','罗源县','闽清县','永泰县','平潭县','福清市','长乐市']}, -{name:'厦门市', areaList:['市辖区','思明区','海沧区','湖里区','集美区','同安区','翔安区']}, -{name:'莆田市', areaList:['市辖区','城厢区','涵江区','荔城区','秀屿区','仙游县']}, -{name:'三明市', areaList:['市辖区','梅列区','三元区','明溪县','清流县','宁化县','大田县','尤溪县','沙 县','将乐县','泰宁县','建宁县','永安市']}, -{name:'泉州市', areaList:['市辖区','鲤城区','丰泽区','洛江区','泉港区','惠安县','安溪县','永春县','德化县','金门县','石狮市','晋江市','南安市']}, -{name:'漳州市', areaList:['市辖区','芗城区','龙文区','云霄县','漳浦县','诏安县','长泰县','东山县','南靖县','平和县','华安县','龙海市']}, -{name:'南平市', areaList:['市辖区','延平区','顺昌县','浦城县','光泽县','松溪县','政和县','邵武市','武夷山市','建瓯市','建阳市']}, -{name:'龙岩市', areaList:['市辖区','新罗区','长汀县','永定县','上杭县','武平县','连城县','漳平市']}, -{name:'宁德市', areaList:['市辖区','蕉城区','霞浦县','古田县','屏南县','寿宁县','周宁县','柘荣县','福安市','福鼎市']} -]}, -{name:'江西', cityList:[ -{name:'南昌市', areaList:['市辖区','东湖区','西湖区','青云谱区','湾里区','青山湖区','南昌县','新建县','安义县','进贤县']}, -{name:'景德镇市', areaList:['市辖区','昌江区','珠山区','浮梁县','乐平市']}, -{name:'萍乡市', areaList:['市辖区','安源区','湘东区','莲花县','上栗县','芦溪县']}, -{name:'九江市', areaList:['市辖区','庐山区','浔阳区','九江县','武宁县','修水县','永修县','德安县','星子县','都昌县','湖口县','彭泽县','瑞昌市']}, -{name:'新余市', areaList:['市辖区','渝水区','分宜县']}, -{name:'鹰潭市', areaList:['市辖区','月湖区','余江县','贵溪市']}, -{name:'赣州市', areaList:['市辖区','章贡区','赣 县','信丰县','大余县','上犹县','崇义县','安远县','龙南县','定南县','全南县','宁都县','于都县','兴国县','会昌县','寻乌县','石城县','瑞金市','南康市']}, -{name:'吉安市', areaList:['市辖区','吉州区','青原区','吉安县','吉水县','峡江县','新干县','永丰县','泰和县','遂川县','万安县','安福县','永新县','井冈山市']}, -{name:'宜春市', areaList:['市辖区','袁州区','奉新县','万载县','上高县','宜丰县','靖安县','铜鼓县','丰城市','樟树市','高安市']}, -{name:'抚州市', areaList:['市辖区','临川区','南城县','黎川县','南丰县','崇仁县','乐安县','宜黄县','金溪县','资溪县','东乡县','广昌县']}, -{name:'上饶市', areaList:['市辖区','信州区','上饶县','广丰县','玉山县','铅山县','横峰县','弋阳县','余干县','鄱阳县','万年县','婺源县','德兴市']} -]}, -{name:'山东', cityList:[ -{name:'济南市', areaList:['市辖区','历下区','市中区','槐荫区','天桥区','历城区','长清区','平阴县','济阳县','商河县','章丘市']}, -{name:'青岛市', areaList:['市辖区','市南区','市北区','四方区','黄岛区','崂山区','李沧区','城阳区','胶州市','即墨市','平度市','胶南市','莱西市']}, -{name:'淄博市', areaList:['市辖区','淄川区','张店区','博山区','临淄区','周村区','桓台县','高青县','沂源县']}, -{name:'枣庄市', areaList:['市辖区','市中区','薛城区','峄城区','台儿庄区','山亭区','滕州市']}, -{name:'东营市', areaList:['市辖区','东营区','河口区','垦利县','利津县','广饶县']}, -{name:'烟台市', areaList:['市辖区','芝罘区','福山区','牟平区','莱山区','长岛县','龙口市','莱阳市','莱州市','蓬莱市','招远市','栖霞市','海阳市']}, -{name:'潍坊市', areaList:['市辖区','潍城区','寒亭区','坊子区','奎文区','临朐县','昌乐县','青州市','诸城市','寿光市','安丘市','高密市','昌邑市']}, -{name:'济宁市', areaList:['市辖区','市中区','任城区','微山县','鱼台县','金乡县','嘉祥县','汶上县','泗水县','梁山县','曲阜市','兖州市','邹城市']}, -{name:'泰安市', areaList:['市辖区','泰山区','岱岳区','宁阳县','东平县','新泰市','肥城市']}, -{name:'威海市', areaList:['市辖区','环翠区','文登市','荣成市','乳山市']}, -{name:'日照市', areaList:['市辖区','东港区','岚山区','五莲县','莒 县']}, -{name:'莱芜市', areaList:['市辖区','莱城区','钢城区']}, -{name:'临沂市', areaList:['市辖区','兰山区','罗庄区','河东区','沂南县','郯城县','沂水县','苍山县','费 县','平邑县','莒南县','蒙阴县','临沭县']}, -{name:'德州市', areaList:['市辖区','德城区','陵 县','宁津县','庆云县','临邑县','齐河县','平原县','夏津县','武城县','乐陵市','禹城市']}, -{name:'聊城市', areaList:['市辖区','东昌府区','阳谷县','莘 县','茌平县','东阿县','冠 县','高唐县','临清市']}, -{name:'滨州市', areaList:['市辖区','滨城区','惠民县','阳信县','无棣县','沾化县','博兴县','邹平县']}, -{name:'荷泽市', areaList:['市辖区','牡丹区','曹 县','单 县','成武县','巨野县','郓城县','鄄城县','定陶县','东明县']} -]}, -{name:'辽宁', cityList:[ -{name:'沈阳市', areaList:['市辖区','和平区','沈河区','大东区','皇姑区','铁西区','苏家屯区','东陵区','新城子区','于洪区','辽中县','康平县','法库县','新民市']}, -{name:'大连市', areaList:['市辖区','中山区','西岗区','沙河口区','甘井子区','旅顺口区','金州区','长海县','瓦房店市','普兰店市','庄河市']}, -{name:'鞍山市', areaList:['市辖区','铁东区','铁西区','立山区','千山区','台安县','岫岩满族自治县','海城市']}, -{name:'抚顺市', areaList:['市辖区','新抚区','东洲区','望花区','顺城区','抚顺县','新宾满族自治县','清原满族自治县']}, -{name:'本溪市', areaList:['市辖区','平山区','溪湖区','明山区','南芬区','本溪满族自治县','桓仁满族自治县']}, -{name:'丹东市', areaList:['市辖区','元宝区','振兴区','振安区','宽甸满族自治县','东港市','凤城市']}, -{name:'锦州市', areaList:['市辖区','古塔区','凌河区','太和区','黑山县','义 县','凌海市','北宁市']}, -{name:'营口市', areaList:['市辖区','站前区','西市区','鲅鱼圈区','老边区','盖州市','大石桥市']}, -{name:'阜新市', areaList:['市辖区','海州区','新邱区','太平区','清河门区','细河区','阜新蒙古族自治县','彰武县']}, -{name:'辽阳市', areaList:['市辖区','白塔区','文圣区','宏伟区','弓长岭区','太子河区','辽阳县','灯塔市']}, -{name:'盘锦市', areaList:['市辖区','双台子区','兴隆台区','大洼县','盘山县']}, -{name:'铁岭市', areaList:['市辖区','银州区','清河区','铁岭县','西丰县','昌图县','调兵山市','开原市']}, -{name:'朝阳市', areaList:['市辖区','双塔区','龙城区','朝阳县','建平县','喀喇沁左翼蒙古族自治县','北票市','凌源市']}, -{name:'葫芦岛市', areaList:['市辖区','连山区','龙港区','南票区','绥中县','建昌县','兴城市']} -]}, -{name:'吉林', cityList:[ -{name:'长春市', areaList:['市辖区','南关区','宽城区','朝阳区','二道区','绿园区','双阳区','农安县','九台市','榆树市','德惠市']}, -{name:'吉林市', areaList:['市辖区','昌邑区','龙潭区','船营区','丰满区','永吉县','蛟河市','桦甸市','舒兰市','磐石市']}, -{name:'四平市', areaList:['市辖区','铁西区','铁东区','梨树县','伊通满族自治县','公主岭市','双辽市']}, -{name:'辽源市', areaList:['市辖区','龙山区','西安区','东丰县','东辽县']}, -{name:'通化市', areaList:['市辖区','东昌区','二道江区','通化县','辉南县','柳河县','梅河口市','集安市']}, -{name:'白山市', areaList:['市辖区','八道江区','抚松县','靖宇县','长白朝鲜族自治县','江源县','临江市']}, -{name:'松原市', areaList:['市辖区','宁江区','前郭尔罗斯蒙古族自治县','长岭县','乾安县','扶余县']}, -{name:'白城市', areaList:['市辖区','洮北区','镇赉县','通榆县','洮南市','大安市']}, -{name:'延边朝鲜族自治州', areaList:['延吉市','图们市','敦化市','珲春市','龙井市','和龙市','汪清县','安图县']} -]}, -{name:'黑龙江', cityList:[ -{name:'哈尔滨市', areaList:['市辖区','道里区','南岗区','道外区','香坊区','动力区','平房区','松北区','呼兰区','依兰县','方正县','宾 县','巴彦县','木兰县','通河县','延寿县','阿城市','双城市','尚志市','五常市']}, -{name:'齐齐哈尔市', areaList:['市辖区','龙沙区','建华区','铁锋区','昂昂溪区','富拉尔基区','碾子山区','梅里斯达斡尔族区','龙江县','依安县','泰来县','甘南县','富裕县','克山县','克东县','拜泉县','讷河市']}, -{name:'鸡西市', areaList:['市辖区','鸡冠区','恒山区','滴道区','梨树区','城子河区','麻山区','鸡东县','虎林市','密山市']}, -{name:'鹤岗市', areaList:['市辖区','向阳区','工农区','南山区','兴安区','东山区','兴山区','萝北县','绥滨县']}, -{name:'双鸭山市', areaList:['市辖区','尖山区','岭东区','四方台区','宝山区','集贤县','友谊县','宝清县','饶河县']}, -{name:'大庆市', areaList:['市辖区','萨尔图区','龙凤区','让胡路区','红岗区','大同区','肇州县','肇源县','林甸县','杜尔伯特蒙古族自治县']}, -{name:'伊春市', areaList:['市辖区','伊春区','南岔区','友好区','西林区','翠峦区','新青区','美溪区','金山屯区','五营区','乌马河区','汤旺河区','带岭区','乌伊岭区','红星区','上甘岭区','嘉荫县','铁力市']}, -{name:'佳木斯市', areaList:['市辖区','永红区','向阳区','前进区','东风区','郊 区','桦南县','桦川县','汤原县','抚远县','同江市','富锦市']}, -{name:'七台河市', areaList:['市辖区','新兴区','桃山区','茄子河区','勃利县']}, -{name:'牡丹江市', areaList:['市辖区','东安区','阳明区','爱民区','西安区','东宁县','林口县','绥芬河市','海林市','宁安市','穆棱市']}, -{name:'黑河市', areaList:['市辖区','爱辉区','嫩江县','逊克县','孙吴县','北安市','五大连池市']}, -{name:'绥化市', areaList:['市辖区','北林区','望奎县','兰西县','青冈县','庆安县','明水县','绥棱县','安达市','肇东市','海伦市']}, -{name:'大兴安岭地区', areaList:['呼玛县','塔河县','漠河县']} -]}, -{name:'海南', cityList:[ -{name:'海口市', areaList:['市辖区','秀英区','龙华区','琼山区','美兰区']}, -{name:'三亚市', areaList:['市辖区']}, -{name:'省直辖县级行政单位', areaList:['五指山市','琼海市','儋州市','文昌市','万宁市','东方市','定安县','屯昌县','澄迈县','临高县','白沙黎族自治县','昌江黎族自治县','乐东黎族自治县','陵水黎族自治县','保亭黎族苗族自治县','琼中黎族苗族自治县','西沙群岛','南沙群岛','中沙群岛的岛礁及其海域']} -]}, -{name:'台湾', cityList:[ -{name:'台湾', areaList:['台湾']} -]}, -{name:'香港', cityList:[ -{name:'香港', areaList:['香港']} -]}, -{name:'澳门', cityList:[ -{name:'澳门', areaList:['澳门']} -]} + {name:'北京', cityList:[ + {name:'市辖区', areaList:['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区']}, + {name:'县', areaList:['密云县','延庆县']} + ]}, + {name:'上海', cityList:[ + {name:'市辖区', areaList:['黄浦区','卢湾区','徐汇区','长宁区','静安区','普陀区','闸北区','虹口区','杨浦区','闵行区','宝山区','嘉定区','浦东新区','金山区','松江区','青浦区','南汇区','奉贤区']}, + {name:'县', areaList:['崇明县']} + ]}, + {name:'天津', cityList:[ + {name:'市辖区', areaList:['和平区','河东区','河西区','南开区','河北区','红桥区','塘沽区','汉沽区','大港区','东丽区','西青区','津南区','北辰区','武清区','宝坻区']}, + {name:'县', areaList:['宁河县','静海县','蓟 县']} + ]}, + {name:'重庆', cityList:[ + {name:'市辖区', areaList:['万州区','涪陵区','渝中区','大渡口区','江北区','沙坪坝区','九龙坡区','南岸区','北碚区','万盛区','双桥区','渝北区','巴南区','黔江区','长寿区']}, + {name:'县', areaList:['綦江县','潼南县','铜梁县','大足县','荣昌县','璧山县','梁平县','城口县','丰都县','垫江县','武隆县','忠 县','开 县','云阳县','奉节县','巫山县','巫溪县','石柱土家族自治县','秀山土家族苗族自治县','酉阳土家族苗族自治县','彭水苗族土家族自治县']}, + {name:'市', areaList:['江津市','合川市','永川市','南川市']} + ]}, + {name:'四川', cityList:[ + {name:'成都市', areaList:['市辖区','锦江区','青羊区','金牛区','武侯区','成华区','龙泉驿区','青白江区','新都区','温江县','金堂县','双流县','郫 县','大邑县','蒲江县','新津县','都江堰市','彭州市','邛崃市','崇州市']}, + {name:'自贡市', areaList:['市辖区','自流井区','贡井区','大安区','沿滩区','荣 县','富顺县']}, + {name:'攀枝花市', areaList:['市辖区','东 区','西 区','仁和区','米易县','盐边县']}, + {name:'泸州市', areaList:['市辖区','江阳区','纳溪区','龙马潭区','泸 县','合江县','叙永县','古蔺县']}, + {name:'德阳市', areaList:['市辖区','旌阳区','中江县','罗江县','广汉市','什邡市','绵竹市']}, + {name:'绵阳市', areaList:['市辖区','涪城区','游仙区','三台县','盐亭县','安 县','梓潼县','北川羌族自治县','平武县','江油市']}, + {name:'广元市', areaList:['市辖区','市中区','元坝区','朝天区','旺苍县','青川县','剑阁县','苍溪县']}, + {name:'遂宁市', areaList:['市辖区','船山区','安居区','蓬溪县','射洪县','大英县']}, + {name:'内江市', areaList:['市辖区','市中区','东兴区','威远县','资中县','隆昌县']}, + {name:'乐山市', areaList:['市辖区','市中区','沙湾区','五通桥区','金口河区','犍为县','井研县','夹江县','沐川县','峨边彝族自治县','马边彝族自治县','峨眉山市']}, + {name:'南充市', areaList:['市辖区','顺庆区','高坪区','嘉陵区','南部县','营山县','蓬安县','仪陇县','西充县','阆中市']}, + {name:'眉山市', areaList:['市辖区','东坡区','仁寿县','彭山县','洪雅县','丹棱县','青神县']}, + {name:'宜宾市', areaList:['市辖区','翠屏区','宜宾县','南溪县','江安县','长宁县','高 县','珙 县','筠连县','兴文县','屏山县']}, + {name:'广安市', areaList:['市辖区','广安区','岳池县','武胜县','邻水县','华莹市']}, + {name:'达州市', areaList:['市辖区','通川区','达 县','宣汉县','开江县','大竹县','渠 县','万源市']}, + {name:'雅安市', areaList:['市辖区','雨城区','名山县','荥经县','汉源县','石棉县','天全县','芦山县','宝兴县']}, + {name:'巴中市', areaList:['市辖区','巴州区','通江县','南江县','平昌县']}, + {name:'资阳市', areaList:['市辖区','雁江区','安岳县','乐至县','简阳市']}, + {name:'阿坝藏族羌族自治州', areaList:['汶川县','理 县','茂 县','松潘县','九寨沟县','金川县','小金县','黑水县','马尔康县','壤塘县','阿坝县','若尔盖县','红原县']}, + {name:'甘孜藏族自治州', areaList:['康定县','泸定县','丹巴县','九龙县','雅江县','道孚县','炉霍县','甘孜县','新龙县','德格县','白玉县','石渠县','色达县','理塘县','巴塘县','乡城县','稻城县','得荣县']}, + {name:'凉山彝族自治州', areaList:['西昌市','木里藏族自治县','盐源县','德昌县','会理县','会东县','宁南县','普格县','布拖县','金阳县','昭觉县','喜德县','冕宁县','越西县','甘洛县','美姑县','雷波县']} + ]}, + {name:'贵州', cityList:[ + {name:'贵阳市', areaList:['市辖区','南明区','云岩区','花溪区','乌当区','白云区','小河区','开阳县','息烽县','修文县','清镇市']}, + {name:'六盘水市', areaList:['钟山区','六枝特区','水城县','盘 县']}, + {name:'遵义市', areaList:['市辖区','红花岗区','汇川区','遵义县','桐梓县','绥阳县','正安县','道真仡佬族苗族自治县','务川仡佬族苗族自治县','凤冈县','湄潭县','余庆县','习水县','赤水市','仁怀市']}, + {name:'安顺市', areaList:['市辖区','西秀区','平坝县','普定县','镇宁布依族苗族自治县','关岭布依族苗族自治县','紫云苗族布依族自治县']}, + {name:'铜仁地区', areaList:['铜仁市','江口县','玉屏侗族自治县','石阡县','思南县','印江土家族苗族自治县','德江县','沿河土家族自治县','松桃苗族自治县','万山特区']}, + {name:'黔西南布依族苗族自治州', areaList:['兴义市','兴仁县','普安县','晴隆县','贞丰县','望谟县','册亨县','安龙县']}, + {name:'毕节地区', areaList:['毕节市','大方县','黔西县','金沙县','织金县','纳雍县','威宁彝族回族苗族自治县','赫章县']}, + {name:'黔东南苗族侗族自治州', areaList:['凯里市','黄平县','施秉县','三穗县','镇远县','岑巩县','天柱县','锦屏县','剑河县','台江县','黎平县','榕江县','从江县','雷山县','麻江县','丹寨县']}, + {name:'黔南布依族苗族自治州', areaList:['都匀市','福泉市','荔波县','贵定县','瓮安县','独山县','平塘县','罗甸县','长顺县','龙里县','惠水县','三都水族自治县']} + ]}, + {name:'云南', cityList:[ + {name:'昆明市', areaList:['市辖区','五华区','盘龙区','官渡区','西山区','东川区','呈贡县','晋宁县','富民县','宜良县','石林彝族自治县','嵩明县','禄劝彝族苗族自治县','寻甸回族彝族自治县','安宁市']}, + {name:'曲靖市', areaList:['市辖区','麒麟区','马龙县','陆良县','师宗县','罗平县','富源县','会泽县','沾益县','宣威市']}, + {name:'玉溪市', areaList:['市辖区','红塔区','江川县','澄江县','通海县','华宁县','易门县','峨山彝族自治县','新平彝族傣族自治县','元江哈尼族彝族傣族自治县']}, + {name:'保山市', areaList:['市辖区','隆阳区','施甸县','腾冲县','龙陵县','昌宁县']}, + {name:'昭通市', areaList:['市辖区','昭阳区','鲁甸县','巧家县','盐津县','大关县','永善县','绥江县','镇雄县','彝良县','威信县','水富县']}, + {name:'丽江市', areaList:['市辖区','古城区','玉龙纳西族自治县','永胜县','华坪县','宁蒗彝族自治县']}, + {name:'思茅市', areaList:['市辖区','翠云区','普洱哈尼族彝族自治县','墨江哈尼族自治县','景东彝族自治县','景谷傣族彝族自治县','镇沅彝族哈尼族拉祜族自治县','江城哈尼族彝族自治县','孟连傣族拉祜族佤族自治县','澜沧拉祜族自治县','西盟佤族自治县']}, + {name:'临沧市', areaList:['市辖区','临翔区','凤庆县','云 县','永德县','镇康县','双江拉祜族佤族布朗族傣族自治县','耿马傣族佤族自治县','沧源佤族自治县']}, + {name:'楚雄彝族自治州', areaList:['楚雄市','双柏县','牟定县','南华县','姚安县','大姚县','永仁县','元谋县','武定县','禄丰县']}, + {name:'红河哈尼族彝族自治州', areaList:['个旧市','开远市','蒙自县','屏边苗族自治县','建水县','石屏县','弥勒县','泸西县','元阳县','红河县','金平苗族瑶族傣族自治县','绿春县','河口瑶族自治县']}, + {name:'文山壮族苗族自治州', areaList:['文山县','砚山县','西畴县','麻栗坡县','马关县','丘北县','广南县','富宁县']}, + {name:'西双版纳傣族自治州', areaList:['景洪市','勐海县','勐腊县']}, + {name:'大理白族自治州', areaList:['大理市','漾濞彝族自治县','祥云县','宾川县','弥渡县','南涧彝族自治县','巍山彝族回族自治县','永平县','云龙县','洱源县','剑川县','鹤庆县']}, + {name:'德宏傣族景颇族自治州', areaList:['瑞丽市','潞西市','梁河县','盈江县','陇川县']}, + {name:'怒江傈僳族自治州', areaList:['泸水县','福贡县','贡山独龙族怒族自治县','兰坪白族普米族自治县']}, + {name:'迪庆藏族自治州', areaList:['香格里拉县','德钦县','维西傈僳族自治县']} + ]}, + {name:'西藏', cityList:[ + {name:'拉萨市', areaList:['市辖区','城关区','林周县','当雄县','尼木县','曲水县','堆龙德庆县','达孜县','墨竹工卡县']}, + {name:'昌都地区', areaList:['昌都县','江达县','贡觉县','类乌齐县','丁青县','察雅县','八宿县','左贡县','芒康县','洛隆县','边坝县']}, + {name:'山南地区', areaList:['乃东县','扎囊县','贡嘎县','桑日县','琼结县','曲松县','措美县','洛扎县','加查县','隆子县','错那县','浪卡子县']}, + {name:'日喀则地区', areaList:['日喀则市','南木林县','江孜县','定日县','萨迦县','拉孜县','昂仁县','谢通门县','白朗县','仁布县','康马县','定结县','仲巴县','亚东县','吉隆县','聂拉木县','萨嘎县','岗巴县']}, + {name:'那曲地区', areaList:['那曲县','嘉黎县','比如县','聂荣县','安多县','申扎县','索 县','班戈县','巴青县','尼玛县']}, + {name:'阿里地区', areaList:['普兰县','札达县','噶尔县','日土县','革吉县','改则县','措勤县']}, + {name:'林芝地区', areaList:['林芝县','工布江达县','米林县','墨脱县','波密县','察隅县','朗 县']} + ]}, + {name:'河南', cityList:[ + {name:'郑州市', areaList:['市辖区','中原区','二七区','管城回族区','金水区','上街区','邙山区','中牟县','巩义市','荥阳市','新密市','新郑市','登封市']}, + {name:'开封市', areaList:['市辖区','龙亭区','顺河回族区','鼓楼区','南关区','郊 区','杞 县','通许县','尉氏县','开封县','兰考县']}, + {name:'洛阳市', areaList:['市辖区','老城区','西工区','廛河回族区','涧西区','吉利区','洛龙区','孟津县','新安县','栾川县','嵩 县','汝阳县','宜阳县','洛宁县','伊川县','偃师市']}, + {name:'平顶山市', areaList:['市辖区','新华区','卫东区','石龙区','湛河区','宝丰县','叶 县','鲁山县','郏 县','舞钢市','汝州市']}, + {name:'安阳市', areaList:['市辖区','文峰区','北关区','殷都区','龙安区','安阳县','汤阴县','滑 县','内黄县','林州市']}, + {name:'鹤壁市', areaList:['市辖区','鹤山区','山城区','淇滨区','浚 县','淇 县']}, + {name:'新乡市', areaList:['市辖区','红旗区','卫滨区','凤泉区','牧野区','新乡县','获嘉县','原阳县','延津县','封丘县','长垣县','卫辉市','辉县市']}, + {name:'焦作市', areaList:['市辖区','解放区','中站区','马村区','山阳区','修武县','博爱县','武陟县','温 县','济源市','沁阳市','孟州市']}, + {name:'濮阳市', areaList:['市辖区','华龙区','清丰县','南乐县','范 县','台前县','濮阳县']}, + {name:'许昌市', areaList:['市辖区','魏都区','许昌县','鄢陵县','襄城县','禹州市','长葛市']}, + {name:'漯河市', areaList:['市辖区','源汇区','郾城区','召陵区','舞阳县','临颍县']}, + {name:'三门峡市', areaList:['市辖区','湖滨区','渑池县','陕 县','卢氏县','义马市','灵宝市']}, + {name:'南阳市', areaList:['市辖区','宛城区','卧龙区','南召县','方城县','西峡县','镇平县','内乡县','淅川县','社旗县','唐河县','新野县','桐柏县','邓州市']}, + {name:'商丘市', areaList:['市辖区','梁园区','睢阳区','民权县','睢 县','宁陵县','柘城县','虞城县','夏邑县','永城市']}, + {name:'信阳市', areaList:['市辖区','师河区','平桥区','罗山县','光山县','新 县','商城县','固始县','潢川县','淮滨县','息 县']}, + {name:'周口市', areaList:['市辖区','川汇区','扶沟县','西华县','商水县','沈丘县','郸城县','淮阳县','太康县','鹿邑县','项城市']}, + {name:'驻马店市', areaList:['市辖区','驿城区','西平县','上蔡县','平舆县','正阳县','确山县','泌阳县','汝南县','遂平县','新蔡县']} + ]}, + {name:'湖北', cityList:[ + {name:'武汉市', areaList:['市辖区','江岸区','江汉区','乔口区','汉阳区','武昌区','青山区','洪山区','东西湖区','汉南区','蔡甸区','江夏区','黄陂区','新洲区']}, + {name:'黄石市', areaList:['市辖区','黄石港区','西塞山区','下陆区','铁山区','阳新县','大冶市']}, + {name:'十堰市', areaList:['市辖区','茅箭区','张湾区','郧 县','郧西县','竹山县','竹溪县','房 县','丹江口市']}, + {name:'宜昌市', areaList:['市辖区','西陵区','伍家岗区','点军区','猇亭区','夷陵区','远安县','兴山县','秭归县','长阳土家族自治县','五峰土家族自治县','宜都市','当阳市','枝江市']}, + {name:'襄樊市', areaList:['市辖区','襄城区','樊城区','襄阳区','南漳县','谷城县','保康县','老河口市','枣阳市','宜城市']}, + {name:'鄂州市', areaList:['市辖区','梁子湖区','华容区','鄂城区']}, + {name:'荆门市', areaList:['市辖区','东宝区','掇刀区','京山县','沙洋县','钟祥市']}, + {name:'孝感市', areaList:['市辖区','孝南区','孝昌县','大悟县','云梦县','应城市','安陆市','汉川市']}, + {name:'荆州市', areaList:['市辖区','沙市区','荆州区','公安县','监利县','江陵县','石首市','洪湖市','松滋市']}, + {name:'黄冈市', areaList:['市辖区','黄州区','团风县','红安县','罗田县','英山县','浠水县','蕲春县','黄梅县','麻城市','武穴市']}, + {name:'咸宁市', areaList:['市辖区','咸安区','嘉鱼县','通城县','崇阳县','通山县','赤壁市']}, + {name:'随州市', areaList:['市辖区','曾都区','广水市']}, + {name:'恩施土家族苗族自治州', areaList:['恩施市','利川市','建始县','巴东县','宣恩县','咸丰县','来凤县','鹤峰县']}, + {name:'省直辖行政单位', areaList:['仙桃市','潜江市','天门市','神农架林区']} + ]}, + {name:'湖南', cityList:[ + {name:'长沙市', areaList:['市辖区','芙蓉区','天心区','岳麓区','开福区','雨花区','长沙县','望城县','宁乡县','浏阳市']}, + {name:'株洲市', areaList:['市辖区','荷塘区','芦淞区','石峰区','天元区','株洲县','攸 县','茶陵县','炎陵县','醴陵市']}, + {name:'湘潭市', areaList:['市辖区','雨湖区','岳塘区','湘潭县','湘乡市','韶山市']}, + {name:'衡阳市', areaList:['市辖区','珠晖区','雁峰区','石鼓区','蒸湘区','南岳区','衡阳县','衡南县','衡山县','衡东县','祁东县','耒阳市','常宁市']}, + {name:'邵阳市', areaList:['市辖区','双清区','大祥区','北塔区','邵东县','新邵县','邵阳县','隆回县','洞口县','绥宁县','新宁县','城步苗族自治县','武冈市']}, + {name:'岳阳市', areaList:['市辖区','岳阳楼区','云溪区','君山区','岳阳县','华容县','湘阴县','平江县','汨罗市','临湘市']}, + {name:'常德市', areaList:['市辖区','武陵区','鼎城区','安乡县','汉寿县','澧 县','临澧县','桃源县','石门县','津市市']}, + {name:'张家界市', areaList:['市辖区','永定区','武陵源区','慈利县','桑植县']}, + {name:'益阳市', areaList:['市辖区','资阳区','赫山区','南 县','桃江县','安化县','沅江市']}, + {name:'郴州市', areaList:['市辖区','北湖区','苏仙区','桂阳县','宜章县','永兴县','嘉禾县','临武县','汝城县','桂东县','安仁县','资兴市']}, + {name:'永州市', areaList:['市辖区','芝山区','冷水滩区','祁阳县','东安县','双牌县','道 县','江永县','宁远县','蓝山县','新田县','江华瑶族自治县']}, + {name:'怀化市', areaList:['市辖区','鹤城区','中方县','沅陵县','辰溪县','溆浦县','会同县','麻阳苗族自治县','新晃侗族自治县','芷江侗族自治县','靖州苗族侗族自治县','通道侗族自治县','洪江市']}, + {name:'娄底市', areaList:['市辖区','娄星区','双峰县','新化县','冷水江市','涟源市']}, + {name:'湘西土家族苗族自治州', areaList:['吉首市','泸溪县','凤凰县','花垣县','保靖县','古丈县','永顺县','龙山县']} + ]}, + {name:'广东', cityList:[ + {name:'广州市', areaList:['市辖区','东山区','荔湾区','越秀区','海珠区','天河区','芳村区','白云区','黄埔区','番禺区','花都区','增城市','从化市']}, + {name:'韶关市', areaList:['市辖区','武江区','浈江区','曲江区','始兴县','仁化县','翁源县','乳源瑶族自治县','新丰县','乐昌市','南雄市']}, + {name:'深圳市', areaList:['市辖区','罗湖区','福田区','南山区','宝安区','龙岗区','盐田区']}, + {name:'珠海市', areaList:['市辖区','香洲区','斗门区','金湾区']}, + {name:'汕头市', areaList:['市辖区','龙湖区','金平区','濠江区','潮阳区','潮南区','澄海区','南澳县']}, + {name:'佛山市', areaList:['市辖区','禅城区','南海区','顺德区','三水区','高明区']}, + {name:'江门市', areaList:['市辖区','蓬江区','江海区','新会区','台山市','开平市','鹤山市','恩平市']}, + {name:'湛江市', areaList:['市辖区','赤坎区','霞山区','坡头区','麻章区','遂溪县','徐闻县','廉江市','雷州市','吴川市']}, + {name:'茂名市', areaList:['市辖区','茂南区','茂港区','电白县','高州市','化州市','信宜市']}, + {name:'肇庆市', areaList:['市辖区','端州区','鼎湖区','广宁县','怀集县','封开县','德庆县','高要市','四会市']}, + {name:'惠州市', areaList:['市辖区','惠城区','惠阳区','博罗县','惠东县','龙门县']}, + {name:'梅州市', areaList:['市辖区','梅江区','梅 县','大埔县','丰顺县','五华县','平远县','蕉岭县','兴宁市']}, + {name:'汕尾市', areaList:['市辖区','城 区','海丰县','陆河县','陆丰市']}, + {name:'河源市', areaList:['市辖区','源城区','紫金县','龙川县','连平县','和平县','东源县']}, + {name:'阳江市', areaList:['市辖区','江城区','阳西县','阳东县','阳春市']}, + {name:'清远市', areaList:['市辖区','清城区','佛冈县','阳山县','连山壮族瑶族自治县','连南瑶族自治县','清新县','英德市','连州市']}, + {name:'东莞市', areaList:['东莞市']}, + {name:'中山市', areaList:['中山市']}, + {name:'潮州市', areaList:['市辖区','湘桥区','潮安县','饶平县']}, + {name:'揭阳市', areaList:['市辖区','榕城区','揭东县','揭西县','惠来县','普宁市']}, + {name:'云浮市', areaList:['市辖区','云城区','新兴县','郁南县','云安县','罗定市']} + ]}, + {name:'广西', cityList:[ + {name:'南宁市', areaList:['市辖区','兴宁区','青秀区','江南区','西乡塘区','良庆区','邕宁区','武鸣县','隆安县','马山县','上林县','宾阳县','横 县']}, + {name:'柳州市', areaList:['市辖区','城中区','鱼峰区','柳南区','柳北区','柳江县','柳城县','鹿寨县','融安县','融水苗族自治县','三江侗族自治县']}, + {name:'桂林市', areaList:['市辖区','秀峰区','叠彩区','象山区','七星区','雁山区','阳朔县','临桂县','灵川县','全州县','兴安县','永福县','灌阳县','龙胜各族自治县','资源县','平乐县','荔蒲县','恭城瑶族自治县']}, + {name:'梧州市', areaList:['市辖区','万秀区','蝶山区','长洲区','苍梧县','藤 县','蒙山县','岑溪市']}, + {name:'北海市', areaList:['市辖区','海城区','银海区','铁山港区','合浦县']}, + {name:'防城港市', areaList:['市辖区','港口区','防城区','上思县','东兴市']}, + {name:'钦州市', areaList:['市辖区','钦南区','钦北区','灵山县','浦北县']}, + {name:'贵港市', areaList:['市辖区','港北区','港南区','覃塘区','平南县','桂平市']}, + {name:'玉林市', areaList:['市辖区','玉州区','容 县','陆川县','博白县','兴业县','北流市']}, + {name:'百色市', areaList:['市辖区','右江区','田阳县','田东县','平果县','德保县','靖西县','那坡县','凌云县','乐业县','田林县','西林县','隆林各族自治县']}, + {name:'贺州市', areaList:['市辖区','八步区','昭平县','钟山县','富川瑶族自治县']}, + {name:'河池市', areaList:['市辖区','金城江区','南丹县','天峨县','凤山县','东兰县','罗城仫佬族自治县','环江毛南族自治县','巴马瑶族自治县','都安瑶族自治县','大化瑶族自治县','宜州市']}, + {name:'来宾市', areaList:['市辖区','兴宾区','忻城县','象州县','武宣县','金秀瑶族自治县','合山市']}, + {name:'崇左市', areaList:['市辖区','江洲区','扶绥县','宁明县','龙州县','大新县','天等县','凭祥市']} + ]}, + {name:'陕西', cityList:[ + {name:'西安市', areaList:['市辖区','新城区','碑林区','莲湖区','灞桥区','未央区','雁塔区','阎良区','临潼区','长安区','蓝田县','周至县','户 县','高陵县']}, + {name:'铜川市', areaList:['市辖区','王益区','印台区','耀州区','宜君县']}, + {name:'宝鸡市', areaList:['市辖区','渭滨区','金台区','陈仓区','凤翔县','岐山县','扶风县','眉 县','陇 县','千阳县','麟游县','凤 县','太白县']}, + {name:'咸阳市', areaList:['市辖区','秦都区','杨凌区','渭城区','三原县','泾阳县','乾 县','礼泉县','永寿县','彬 县','长武县','旬邑县','淳化县','武功县','兴平市']}, + {name:'渭南市', areaList:['市辖区','临渭区','华 县','潼关县','大荔县','合阳县','澄城县','蒲城县','白水县','富平县','韩城市','华阴市']}, + {name:'延安市', areaList:['市辖区','宝塔区','延长县','延川县','子长县','安塞县','志丹县','吴旗县','甘泉县','富 县','洛川县','宜川县','黄龙县','黄陵县']}, + {name:'汉中市', areaList:['市辖区','汉台区','南郑县','城固县','洋 县','西乡县','勉 县','宁强县','略阳县','镇巴县','留坝县','佛坪县']}, + {name:'榆林市', areaList:['市辖区','榆阳区','神木县','府谷县','横山县','靖边县','定边县','绥德县','米脂县','佳 县','吴堡县','清涧县','子洲县']}, + {name:'安康市', areaList:['市辖区','汉滨区','汉阴县','石泉县','宁陕县','紫阳县','岚皋县','平利县','镇坪县','旬阳县','白河县']}, + {name:'商洛市', areaList:['市辖区','商州区','洛南县','丹凤县','商南县','山阳县','镇安县','柞水县']} + ]}, + {name:'甘肃', cityList:[ + {name:'兰州市', areaList:['市辖区','城关区','七里河区','西固区','安宁区','红古区','永登县','皋兰县','榆中县']}, + {name:'嘉峪关市', areaList:['市辖区']}, + {name:'金昌市', areaList:['市辖区','金川区','永昌县']}, + {name:'白银市', areaList:['市辖区','白银区','平川区','靖远县','会宁县','景泰县']}, + {name:'天水市', areaList:['市辖区','秦城区','北道区','清水县','秦安县','甘谷县','武山县','张家川回族自治县']}, + {name:'武威市', areaList:['市辖区','凉州区','民勤县','古浪县','天祝藏族自治县']}, + {name:'张掖市', areaList:['市辖区','甘州区','肃南裕固族自治县','民乐县','临泽县','高台县','山丹县']}, + {name:'平凉市', areaList:['市辖区','崆峒区','泾川县','灵台县','崇信县','华亭县','庄浪县','静宁县']}, + {name:'酒泉市', areaList:['市辖区','肃州区','金塔县','安西县','肃北蒙古族自治县','阿克塞哈萨克族自治县','玉门市','敦煌市']}, + {name:'庆阳市', areaList:['市辖区','西峰区','庆城县','环 县','华池县','合水县','正宁县','宁 县','镇原县']}, + {name:'定西市', areaList:['市辖区','安定区','通渭县','陇西县','渭源县','临洮县','漳 县','岷 县']}, + {name:'陇南市', areaList:['市辖区','武都区','成 县','文 县','宕昌县','康 县','西和县','礼 县','徽 县','两当县']}, + {name:'临夏回族自治州', areaList:['临夏市','临夏县','康乐县','永靖县','广河县','和政县','东乡族自治县','积石山保安族东乡族撒拉族自治县']}, + {name:'甘南藏族自治州', areaList:['合作市','临潭县','卓尼县','舟曲县','迭部县','玛曲县','碌曲县','夏河县']} + ]}, + {name:'青海', cityList:[ + {name:'西宁市', areaList:['市辖区','城东区','城中区','城西区','城北区','大通回族土族自治县','湟中县','湟源县']}, + {name:'海东地区', areaList:['平安县','民和回族土族自治县','乐都县','互助土族自治县','化隆回族自治县','循化撒拉族自治县']}, + {name:'海北藏族自治州', areaList:['门源回族自治县','祁连县','海晏县','刚察县']}, + {name:'黄南藏族自治州', areaList:['同仁县','尖扎县','泽库县','河南蒙古族自治县']}, + {name:'海南藏族自治州', areaList:['共和县','同德县','贵德县','兴海县','贵南县']}, + {name:'果洛藏族自治州', areaList:['玛沁县','班玛县','甘德县','达日县','久治县','玛多县']}, + {name:'玉树藏族自治州', areaList:['玉树县','杂多县','称多县','治多县','囊谦县','曲麻莱县']}, + {name:'海西蒙古族藏族自治州', areaList:['格尔木市','德令哈市','乌兰县','都兰县','天峻县']} + ]}, + {name:'宁夏', cityList:[ + {name:'银川市', areaList:['市辖区','兴庆区','西夏区','金凤区','永宁县','贺兰县','灵武市']}, + {name:'石嘴山市', areaList:['市辖区','大武口区','惠农区','平罗县']}, + {name:'吴忠市', areaList:['市辖区','利通区','盐池县','同心县','青铜峡市']}, + {name:'固原市', areaList:['市辖区','原州区','西吉县','隆德县','泾源县','彭阳县','海原县']}, + {name:'中卫市', areaList:['市辖区','沙坡头区','中宁县']} + ]}, + {name:'新疆', cityList:[ + {name:'乌鲁木齐市', areaList:['市辖区','天山区','沙依巴克区','新市区','水磨沟区','头屯河区','达坂城区','东山区','乌鲁木齐县']}, + {name:'克拉玛依市', areaList:['市辖区','独山子区','克拉玛依区','白碱滩区','乌尔禾区']}, + {name:'吐鲁番地区', areaList:['吐鲁番市','鄯善县','托克逊县']}, + {name:'哈密地区', areaList:['哈密市','巴里坤哈萨克自治县','伊吾县']}, + {name:'昌吉回族自治州', areaList:['昌吉市','阜康市','米泉市','呼图壁县','玛纳斯县','奇台县','吉木萨尔县','木垒哈萨克自治县']}, + {name:'博尔塔拉蒙古自治州', areaList:['博乐市','精河县','温泉县']}, + {name:'巴音郭楞蒙古自治州', areaList:['库尔勒市','轮台县','尉犁县','若羌县','且末县','焉耆回族自治县','和静县','和硕县','博湖县']}, + {name:'阿克苏地区', areaList:['阿克苏市','温宿县','库车县','沙雅县','新和县','拜城县','乌什县','阿瓦提县','柯坪县']}, + {name:'克孜勒苏柯尔克孜自治州', areaList:['阿图什市','阿克陶县','阿合奇县','乌恰县']}, + {name:'喀什地区', areaList:['喀什市','疏附县','疏勒县','英吉沙县','泽普县','莎车县','叶城县','麦盖提县','岳普湖县','伽师县','巴楚县','塔什库尔干塔吉克自治县']}, + {name:'和田地区', areaList:['和田市','和田县','墨玉县','皮山县','洛浦县','策勒县','于田县','民丰县']}, + {name:'伊犁哈萨克自治州', areaList:['伊宁市','奎屯市','伊宁县','察布查尔锡伯自治县','霍城县','巩留县','新源县','昭苏县','特克斯县','尼勒克县']}, + {name:'塔城地区', areaList:['塔城市','乌苏市','额敏县','沙湾县','托里县','裕民县','和布克赛尔蒙古自治县']}, + {name:'阿勒泰地区', areaList:['阿勒泰市','布尔津县','富蕴县','福海县','哈巴河县','青河县','吉木乃县']}, + {name:'省直辖行政单位', areaList:['石河子市','阿拉尔市','图木舒克市','五家渠市']} + ]}, + {name:'河北', cityList:[ + {name:'石家庄市', areaList:['市辖区','长安区','桥东区','桥西区','新华区','井陉矿区','裕华区','井陉县','正定县','栾城县','行唐县','灵寿县','高邑县','深泽县','赞皇县','无极县','平山县','元氏县','赵 县','辛集市','藁城市','晋州市','新乐市','鹿泉市']}, + {name:'唐山市', areaList:['市辖区','路南区','路北区','古冶区','开平区','丰南区','丰润区','滦 县','滦南县','乐亭县','迁西县','玉田县','唐海县','遵化市','迁安市']}, + {name:'秦皇岛市', areaList:['市辖区','海港区','山海关区','北戴河区','青龙满族自治县','昌黎县','抚宁县','卢龙县']}, + {name:'邯郸市', areaList:['市辖区','邯山区','丛台区','复兴区','峰峰矿区','邯郸县','临漳县','成安县','大名县','涉 县','磁 县','肥乡县','永年县','邱 县','鸡泽县','广平县','馆陶县','魏 县','曲周县','武安市']}, + {name:'邢台市', areaList:['市辖区','桥东区','桥西区','邢台县','临城县','内丘县','柏乡县','隆尧县','任 县','南和县','宁晋县','巨鹿县','新河县','广宗县','平乡县','威 县','清河县','临西县','南宫市','沙河市']}, + {name:'保定市', areaList:['市辖区','新市区','北市区','南市区','满城县','清苑县','涞水县','阜平县','徐水县','定兴县','唐 县','高阳县','容城县','涞源县','望都县','安新县','易 县','曲阳县','蠡 县','顺平县','博野县','雄 县','涿州市','定州市','安国市','高碑店市']}, + {name:'张家口市', areaList:['市辖区','桥东区','桥西区','宣化区','下花园区','宣化县','张北县','康保县','沽源县','尚义县','蔚 县','阳原县','怀安县','万全县','怀来县','涿鹿县','赤城县','崇礼县']}, + {name:'承德市', areaList:['市辖区','双桥区','双滦区','鹰手营子矿区','承德县','兴隆县','平泉县','滦平县','隆化县','丰宁满族自治县','宽城满族自治县','围场满族蒙古族自治县']}, + {name:'沧州市', areaList:['市辖区','新华区','运河区','沧 县','青 县','东光县','海兴县','盐山县','肃宁县','南皮县','吴桥县','献 县','孟村回族自治县','泊头市','任丘市','黄骅市','河间市']}, + {name:'廊坊市', areaList:['市辖区','安次区','广阳区','固安县','永清县','香河县','大城县','文安县','大厂回族自治县','霸州市','三河市']}, + {name:'衡水市', areaList:['市辖区','桃城区','枣强县','武邑县','武强县','饶阳县','安平县','故城县','景 县','阜城县','冀州市','深州市']} + ]}, + {name:'山西', cityList:[ + {name:'太原市', areaList:['市辖区','小店区','迎泽区','杏花岭区','尖草坪区','万柏林区','晋源区','清徐县','阳曲县','娄烦县','古交市']}, + {name:'大同市', areaList:['市辖区','城 区','矿 区','南郊区','新荣区','阳高县','天镇县','广灵县','灵丘县','浑源县','左云县','大同县']}, + {name:'阳泉市', areaList:['市辖区','城 区','矿 区','郊 区','平定县','盂 县']}, + {name:'长治市', areaList:['市辖区','城 区','郊 区','长治县','襄垣县','屯留县','平顺县','黎城县','壶关县','长子县','武乡县','沁 县','沁源县','潞城市']}, + {name:'晋城市', areaList:['市辖区','城 区','沁水县','阳城县','陵川县','泽州县','高平市']}, + {name:'朔州市', areaList:['市辖区','朔城区','平鲁区','山阴县','应 县','右玉县','怀仁县']}, + {name:'晋中市', areaList:['市辖区','榆次区','榆社县','左权县','和顺县','昔阳县','寿阳县','太谷县','祁 县','平遥县','灵石县','介休市']}, + {name:'运城市', areaList:['市辖区','盐湖区','临猗县','万荣县','闻喜县','稷山县','新绛县','绛 县','垣曲县','夏 县','平陆县','芮城县','永济市','河津市']}, + {name:'忻州市', areaList:['市辖区','忻府区','定襄县','五台县','代 县','繁峙县','宁武县','静乐县','神池县','五寨县','岢岚县','河曲县','保德县','偏关县','原平市']}, + {name:'临汾市', areaList:['市辖区','尧都区','曲沃县','翼城县','襄汾县','洪洞县','古 县','安泽县','浮山县','吉 县','乡宁县','大宁县','隰 县','永和县','蒲 县','汾西县','侯马市','霍州市']}, + {name:'吕梁市', areaList:['市辖区','离石区','文水县','交城县','兴 县','临 县','柳林县','石楼县','岚 县','方山县','中阳县','交口县','孝义市','汾阳市']} + ]}, + {name:'内蒙古', cityList:[ + {name:'呼和浩特市', areaList:['市辖区','新城区','回民区','玉泉区','赛罕区','土默特左旗','托克托县','和林格尔县','清水河县','武川县']}, + {name:'包头市', areaList:['市辖区','东河区','昆都仑区','青山区','石拐区','白云矿区','九原区','土默特右旗','固阳县','达尔罕茂明安联合旗']}, + {name:'乌海市', areaList:['市辖区','海勃湾区','海南区','乌达区']}, + {name:'赤峰市', areaList:['市辖区','红山区','元宝山区','松山区','阿鲁科尔沁旗','巴林左旗','巴林右旗','林西县','克什克腾旗','翁牛特旗','喀喇沁旗','宁城县','敖汉旗']}, + {name:'通辽市', areaList:['市辖区','科尔沁区','科尔沁左翼中旗','科尔沁左翼后旗','开鲁县','库伦旗','奈曼旗','扎鲁特旗','霍林郭勒市']}, + {name:'鄂尔多斯市', areaList:['东胜区','达拉特旗','准格尔旗','鄂托克前旗','鄂托克旗','杭锦旗','乌审旗','伊金霍洛旗']}, + {name:'呼伦贝尔市', areaList:['市辖区','海拉尔区','阿荣旗','莫力达瓦达斡尔族自治旗','鄂伦春自治旗','鄂温克族自治旗','陈巴尔虎旗','新巴尔虎左旗','新巴尔虎右旗','满洲里市','牙克石市','扎兰屯市','额尔古纳市','根河市']}, + {name:'巴彦淖尔市', areaList:['市辖区','临河区','五原县','磴口县','乌拉特前旗','乌拉特中旗','乌拉特后旗','杭锦后旗']}, + {name:'乌兰察布市', areaList:['市辖区','集宁区','卓资县','化德县','商都县','兴和县','凉城县','察哈尔右翼前旗','察哈尔右翼中旗','察哈尔右翼后旗','四子王旗','丰镇市']}, + {name:'兴安盟', areaList:['乌兰浩特市','阿尔山市','科尔沁右翼前旗','科尔沁右翼中旗','扎赉特旗','突泉县']}, + {name:'锡林郭勒盟', areaList:['二连浩特市','锡林浩特市','阿巴嘎旗','苏尼特左旗','苏尼特右旗','东乌珠穆沁旗','西乌珠穆沁旗','太仆寺旗','镶黄旗','正镶白旗','正蓝旗','多伦县']}, + {name:'阿拉善盟', areaList:['阿拉善左旗','阿拉善右旗','额济纳旗']} + ]}, + {name:'江苏', cityList:[ + {name:'南京市', areaList:['市辖区','玄武区','白下区','秦淮区','建邺区','鼓楼区','下关区','浦口区','栖霞区','雨花台区','江宁区','六合区','溧水县','高淳县']}, + {name:'无锡市', areaList:['市辖区','崇安区','南长区','北塘区','锡山区','惠山区','滨湖区','江阴市','宜兴市']}, + {name:'徐州市', areaList:['市辖区','鼓楼区','云龙区','九里区','贾汪区','泉山区','丰 县','沛 县','铜山县','睢宁县','新沂市','邳州市']}, + {name:'常州市', areaList:['市辖区','天宁区','钟楼区','戚墅堰区','新北区','武进区','溧阳市','金坛市']}, + {name:'苏州市', areaList:['市辖区','沧浪区','平江区','金阊区','虎丘区','吴中区','相城区','常熟市','张家港市','昆山市','吴江市','太仓市']}, + {name:'南通市', areaList:['市辖区','崇川区','港闸区','海安县','如东县','启东市','如皋市','通州市','海门市']}, + {name:'连云港市', areaList:['市辖区','连云区','新浦区','海州区','赣榆县','东海县','灌云县','灌南县']}, + {name:'淮安市', areaList:['市辖区','清河区','楚州区','淮阴区','清浦区','涟水县','洪泽县','盱眙县','金湖县']}, + {name:'盐城市', areaList:['市辖区','亭湖区','盐都区','响水县','滨海县','阜宁县','射阳县','建湖县','东台市','大丰市']}, + {name:'扬州市', areaList:['市辖区','广陵区','邗江区','郊 区','宝应县','仪征市','高邮市','江都市']}, + {name:'镇江市', areaList:['市辖区','京口区','润州区','丹徒区','丹阳市','扬中市','句容市']}, + {name:'泰州市', areaList:['市辖区','海陵区','高港区','兴化市','靖江市','泰兴市','姜堰市']}, + {name:'宿迁市', areaList:['市辖区','宿城区','宿豫区','沭阳县','泗阳县','泗洪县']} + ]}, + {name:'浙江', cityList:[ + {name:'杭州市', areaList:['市辖区','上城区','下城区','江干区','拱墅区','西湖区','滨江区','萧山区','余杭区','桐庐县','淳安县','建德市','富阳市','临安市']}, + {name:'宁波市', areaList:['市辖区','海曙区','江东区','江北区','北仑区','镇海区','鄞州区','象山县','宁海县','余姚市','慈溪市','奉化市']}, + {name:'温州市', areaList:['市辖区','鹿城区','龙湾区','瓯海区','洞头县','永嘉县','平阳县','苍南县','文成县','泰顺县','瑞安市','乐清市']}, + {name:'嘉兴市', areaList:['市辖区','秀城区','秀洲区','嘉善县','海盐县','海宁市','平湖市','桐乡市']}, + {name:'湖州市', areaList:['市辖区','吴兴区','南浔区','德清县','长兴县','安吉县']}, + {name:'绍兴市', areaList:['市辖区','越城区','绍兴县','新昌县','诸暨市','上虞市','嵊州市']}, + {name:'金华市', areaList:['市辖区','婺城区','金东区','武义县','浦江县','磐安县','兰溪市','义乌市','东阳市','永康市']}, + {name:'衢州市', areaList:['市辖区','柯城区','衢江区','常山县','开化县','龙游县','江山市']}, + {name:'舟山市', areaList:['市辖区','定海区','普陀区','岱山县','嵊泗县']}, + {name:'台州市', areaList:['市辖区','椒江区','黄岩区','路桥区','玉环县','三门县','天台县','仙居县','温岭市','临海市']}, + {name:'丽水市', areaList:['市辖区','莲都区','青田县','缙云县','遂昌县','松阳县','云和县','庆元县','景宁畲族自治县','龙泉市']} + ]}, + {name:'安徽', cityList:[ + {name:'合肥市', areaList:['市辖区','瑶海区','庐阳区','蜀山区','包河区','长丰县','肥东县','肥西县']}, + {name:'芜湖市', areaList:['市辖区','镜湖区','马塘区','新芜区','鸠江区','芜湖县','繁昌县','南陵县']}, + {name:'蚌埠市', areaList:['市辖区','龙子湖区','蚌山区','禹会区','淮上区','怀远县','五河县','固镇县']}, + {name:'淮南市', areaList:['市辖区','大通区','田家庵区','谢家集区','八公山区','潘集区','凤台县']}, + {name:'马鞍山市', areaList:['市辖区','金家庄区','花山区','雨山区','当涂县']}, + {name:'淮北市', areaList:['市辖区','杜集区','相山区','烈山区','濉溪县']}, + {name:'铜陵市', areaList:['市辖区','铜官山区','狮子山区','郊 区','铜陵县']}, + {name:'安庆市', areaList:['市辖区','迎江区','大观区','郊 区','怀宁县','枞阳县','潜山县','太湖县','宿松县','望江县','岳西县','桐城市']}, + {name:'黄山市', areaList:['市辖区','屯溪区','黄山区','徽州区','歙 县','休宁县','黟 县','祁门县']}, + {name:'滁州市', areaList:['市辖区','琅琊区','南谯区','来安县','全椒县','定远县','凤阳县','天长市','明光市']}, + {name:'阜阳市', areaList:['市辖区','颍州区','颍东区','颍泉区','临泉县','太和县','阜南县','颍上县','界首市']}, + {name:'宿州市', areaList:['市辖区','墉桥区','砀山县','萧 县','灵璧县','泗 县']}, + {name:'巢湖市', areaList:['市辖区','居巢区','庐江县','无为县','含山县','和 县']}, + {name:'六安市', areaList:['市辖区','金安区','裕安区','寿 县','霍邱县','舒城县','金寨县','霍山县']}, + {name:'亳州市', areaList:['市辖区','谯城区','涡阳县','蒙城县','利辛县']}, + {name:'池州市', areaList:['市辖区','贵池区','东至县','石台县','青阳县']}, + {name:'宣城市', areaList:['市辖区','宣州区','郎溪县','广德县','泾 县','绩溪县','旌德县','宁国市']} + ]}, + {name:'福建', cityList:[ + {name:'福州市', areaList:['市辖区','鼓楼区','台江区','仓山区','马尾区','晋安区','闽侯县','连江县','罗源县','闽清县','永泰县','平潭县','福清市','长乐市']}, + {name:'厦门市', areaList:['市辖区','思明区','海沧区','湖里区','集美区','同安区','翔安区']}, + {name:'莆田市', areaList:['市辖区','城厢区','涵江区','荔城区','秀屿区','仙游县']}, + {name:'三明市', areaList:['市辖区','梅列区','三元区','明溪县','清流县','宁化县','大田县','尤溪县','沙 县','将乐县','泰宁县','建宁县','永安市']}, + {name:'泉州市', areaList:['市辖区','鲤城区','丰泽区','洛江区','泉港区','惠安县','安溪县','永春县','德化县','金门县','石狮市','晋江市','南安市']}, + {name:'漳州市', areaList:['市辖区','芗城区','龙文区','云霄县','漳浦县','诏安县','长泰县','东山县','南靖县','平和县','华安县','龙海市']}, + {name:'南平市', areaList:['市辖区','延平区','顺昌县','浦城县','光泽县','松溪县','政和县','邵武市','武夷山市','建瓯市','建阳市']}, + {name:'龙岩市', areaList:['市辖区','新罗区','长汀县','永定县','上杭县','武平县','连城县','漳平市']}, + {name:'宁德市', areaList:['市辖区','蕉城区','霞浦县','古田县','屏南县','寿宁县','周宁县','柘荣县','福安市','福鼎市']} + ]}, + {name:'江西', cityList:[ + {name:'南昌市', areaList:['市辖区','东湖区','西湖区','青云谱区','湾里区','青山湖区','南昌县','新建县','安义县','进贤县']}, + {name:'景德镇市', areaList:['市辖区','昌江区','珠山区','浮梁县','乐平市']}, + {name:'萍乡市', areaList:['市辖区','安源区','湘东区','莲花县','上栗县','芦溪县']}, + {name:'九江市', areaList:['市辖区','庐山区','浔阳区','九江县','武宁县','修水县','永修县','德安县','星子县','都昌县','湖口县','彭泽县','瑞昌市']}, + {name:'新余市', areaList:['市辖区','渝水区','分宜县']}, + {name:'鹰潭市', areaList:['市辖区','月湖区','余江县','贵溪市']}, + {name:'赣州市', areaList:['市辖区','章贡区','赣 县','信丰县','大余县','上犹县','崇义县','安远县','龙南县','定南县','全南县','宁都县','于都县','兴国县','会昌县','寻乌县','石城县','瑞金市','南康市']}, + {name:'吉安市', areaList:['市辖区','吉州区','青原区','吉安县','吉水县','峡江县','新干县','永丰县','泰和县','遂川县','万安县','安福县','永新县','井冈山市']}, + {name:'宜春市', areaList:['市辖区','袁州区','奉新县','万载县','上高县','宜丰县','靖安县','铜鼓县','丰城市','樟树市','高安市']}, + {name:'抚州市', areaList:['市辖区','临川区','南城县','黎川县','南丰县','崇仁县','乐安县','宜黄县','金溪县','资溪县','东乡县','广昌县']}, + {name:'上饶市', areaList:['市辖区','信州区','上饶县','广丰县','玉山县','铅山县','横峰县','弋阳县','余干县','鄱阳县','万年县','婺源县','德兴市']} + ]}, + {name:'山东', cityList:[ + {name:'济南市', areaList:['市辖区','历下区','市中区','槐荫区','天桥区','历城区','长清区','平阴县','济阳县','商河县','章丘市']}, + {name:'青岛市', areaList:['市辖区','市南区','市北区','四方区','黄岛区','崂山区','李沧区','城阳区','胶州市','即墨市','平度市','胶南市','莱西市']}, + {name:'淄博市', areaList:['市辖区','淄川区','张店区','博山区','临淄区','周村区','桓台县','高青县','沂源县']}, + {name:'枣庄市', areaList:['市辖区','市中区','薛城区','峄城区','台儿庄区','山亭区','滕州市']}, + {name:'东营市', areaList:['市辖区','东营区','河口区','垦利县','利津县','广饶县']}, + {name:'烟台市', areaList:['市辖区','芝罘区','福山区','牟平区','莱山区','长岛县','龙口市','莱阳市','莱州市','蓬莱市','招远市','栖霞市','海阳市']}, + {name:'潍坊市', areaList:['市辖区','潍城区','寒亭区','坊子区','奎文区','临朐县','昌乐县','青州市','诸城市','寿光市','安丘市','高密市','昌邑市']}, + {name:'济宁市', areaList:['市辖区','市中区','任城区','微山县','鱼台县','金乡县','嘉祥县','汶上县','泗水县','梁山县','曲阜市','兖州市','邹城市']}, + {name:'泰安市', areaList:['市辖区','泰山区','岱岳区','宁阳县','东平县','新泰市','肥城市']}, + {name:'威海市', areaList:['市辖区','环翠区','文登市','荣成市','乳山市']}, + {name:'日照市', areaList:['市辖区','东港区','岚山区','五莲县','莒 县']}, + {name:'莱芜市', areaList:['市辖区','莱城区','钢城区']}, + {name:'临沂市', areaList:['市辖区','兰山区','罗庄区','河东区','沂南县','郯城县','沂水县','苍山县','费 县','平邑县','莒南县','蒙阴县','临沭县']}, + {name:'德州市', areaList:['市辖区','德城区','陵 县','宁津县','庆云县','临邑县','齐河县','平原县','夏津县','武城县','乐陵市','禹城市']}, + {name:'聊城市', areaList:['市辖区','东昌府区','阳谷县','莘 县','茌平县','东阿县','冠 县','高唐县','临清市']}, + {name:'滨州市', areaList:['市辖区','滨城区','惠民县','阳信县','无棣县','沾化县','博兴县','邹平县']}, + {name:'荷泽市', areaList:['市辖区','牡丹区','曹 县','单 县','成武县','巨野县','郓城县','鄄城县','定陶县','东明县']} + ]}, + {name:'辽宁', cityList:[ + {name:'沈阳市', areaList:['市辖区','和平区','沈河区','大东区','皇姑区','铁西区','苏家屯区','东陵区','新城子区','于洪区','辽中县','康平县','法库县','新民市']}, + {name:'大连市', areaList:['市辖区','中山区','西岗区','沙河口区','甘井子区','旅顺口区','金州区','长海县','瓦房店市','普兰店市','庄河市']}, + {name:'鞍山市', areaList:['市辖区','铁东区','铁西区','立山区','千山区','台安县','岫岩满族自治县','海城市']}, + {name:'抚顺市', areaList:['市辖区','新抚区','东洲区','望花区','顺城区','抚顺县','新宾满族自治县','清原满族自治县']}, + {name:'本溪市', areaList:['市辖区','平山区','溪湖区','明山区','南芬区','本溪满族自治县','桓仁满族自治县']}, + {name:'丹东市', areaList:['市辖区','元宝区','振兴区','振安区','宽甸满族自治县','东港市','凤城市']}, + {name:'锦州市', areaList:['市辖区','古塔区','凌河区','太和区','黑山县','义 县','凌海市','北宁市']}, + {name:'营口市', areaList:['市辖区','站前区','西市区','鲅鱼圈区','老边区','盖州市','大石桥市']}, + {name:'阜新市', areaList:['市辖区','海州区','新邱区','太平区','清河门区','细河区','阜新蒙古族自治县','彰武县']}, + {name:'辽阳市', areaList:['市辖区','白塔区','文圣区','宏伟区','弓长岭区','太子河区','辽阳县','灯塔市']}, + {name:'盘锦市', areaList:['市辖区','双台子区','兴隆台区','大洼县','盘山县']}, + {name:'铁岭市', areaList:['市辖区','银州区','清河区','铁岭县','西丰县','昌图县','调兵山市','开原市']}, + {name:'朝阳市', areaList:['市辖区','双塔区','龙城区','朝阳县','建平县','喀喇沁左翼蒙古族自治县','北票市','凌源市']}, + {name:'葫芦岛市', areaList:['市辖区','连山区','龙港区','南票区','绥中县','建昌县','兴城市']} + ]}, + {name:'吉林', cityList:[ + {name:'长春市', areaList:['市辖区','南关区','宽城区','朝阳区','二道区','绿园区','双阳区','农安县','九台市','榆树市','德惠市']}, + {name:'吉林市', areaList:['市辖区','昌邑区','龙潭区','船营区','丰满区','永吉县','蛟河市','桦甸市','舒兰市','磐石市']}, + {name:'四平市', areaList:['市辖区','铁西区','铁东区','梨树县','伊通满族自治县','公主岭市','双辽市']}, + {name:'辽源市', areaList:['市辖区','龙山区','西安区','东丰县','东辽县']}, + {name:'通化市', areaList:['市辖区','东昌区','二道江区','通化县','辉南县','柳河县','梅河口市','集安市']}, + {name:'白山市', areaList:['市辖区','八道江区','抚松县','靖宇县','长白朝鲜族自治县','江源县','临江市']}, + {name:'松原市', areaList:['市辖区','宁江区','前郭尔罗斯蒙古族自治县','长岭县','乾安县','扶余县']}, + {name:'白城市', areaList:['市辖区','洮北区','镇赉县','通榆县','洮南市','大安市']}, + {name:'延边朝鲜族自治州', areaList:['延吉市','图们市','敦化市','珲春市','龙井市','和龙市','汪清县','安图县']} + ]}, + {name:'黑龙江', cityList:[ + {name:'哈尔滨市', areaList:['市辖区','道里区','南岗区','道外区','香坊区','动力区','平房区','松北区','呼兰区','依兰县','方正县','宾 县','巴彦县','木兰县','通河县','延寿县','阿城市','双城市','尚志市','五常市']}, + {name:'齐齐哈尔市', areaList:['市辖区','龙沙区','建华区','铁锋区','昂昂溪区','富拉尔基区','碾子山区','梅里斯达斡尔族区','龙江县','依安县','泰来县','甘南县','富裕县','克山县','克东县','拜泉县','讷河市']}, + {name:'鸡西市', areaList:['市辖区','鸡冠区','恒山区','滴道区','梨树区','城子河区','麻山区','鸡东县','虎林市','密山市']}, + {name:'鹤岗市', areaList:['市辖区','向阳区','工农区','南山区','兴安区','东山区','兴山区','萝北县','绥滨县']}, + {name:'双鸭山市', areaList:['市辖区','尖山区','岭东区','四方台区','宝山区','集贤县','友谊县','宝清县','饶河县']}, + {name:'大庆市', areaList:['市辖区','萨尔图区','龙凤区','让胡路区','红岗区','大同区','肇州县','肇源县','林甸县','杜尔伯特蒙古族自治县']}, + {name:'伊春市', areaList:['市辖区','伊春区','南岔区','友好区','西林区','翠峦区','新青区','美溪区','金山屯区','五营区','乌马河区','汤旺河区','带岭区','乌伊岭区','红星区','上甘岭区','嘉荫县','铁力市']}, + {name:'佳木斯市', areaList:['市辖区','永红区','向阳区','前进区','东风区','郊 区','桦南县','桦川县','汤原县','抚远县','同江市','富锦市']}, + {name:'七台河市', areaList:['市辖区','新兴区','桃山区','茄子河区','勃利县']}, + {name:'牡丹江市', areaList:['市辖区','东安区','阳明区','爱民区','西安区','东宁县','林口县','绥芬河市','海林市','宁安市','穆棱市']}, + {name:'黑河市', areaList:['市辖区','爱辉区','嫩江县','逊克县','孙吴县','北安市','五大连池市']}, + {name:'绥化市', areaList:['市辖区','北林区','望奎县','兰西县','青冈县','庆安县','明水县','绥棱县','安达市','肇东市','海伦市']}, + {name:'大兴安岭地区', areaList:['呼玛县','塔河县','漠河县']} + ]}, + {name:'海南', cityList:[ + {name:'海口市', areaList:['市辖区','秀英区','龙华区','琼山区','美兰区']}, + {name:'三亚市', areaList:['市辖区']}, + {name:'省直辖县级行政单位', areaList:['五指山市','琼海市','儋州市','文昌市','万宁市','东方市','定安县','屯昌县','澄迈县','临高县','白沙黎族自治县','昌江黎族自治县','乐东黎族自治县','陵水黎族自治县','保亭黎族苗族自治县','琼中黎族苗族自治县','西沙群岛','南沙群岛','中沙群岛的岛礁及其海域']} + ]}, + {name:'台湾', cityList:[ + {name:'台湾', areaList:['台湾']} + ]}, + {name:'香港', cityList:[ + {name:'香港', areaList:['香港']} + ]}, + {name:'澳门', cityList:[ + {name:'澳门', areaList:['澳门']} + ]} ];