javaweb-plus/javaweb-admin/src/main/java/com/javaweb/web/controller/system/SysIndexController.java
@@ -10,14 +10,20 @@ import com.javaweb.common.utils.Arith; import com.javaweb.common.utils.StringUtils; import com.javaweb.geo.domain.Hole; import com.javaweb.geo.domain.HoleMedia; import com.javaweb.geo.domain.Project; import com.javaweb.geo.enums.RecordType; import com.javaweb.geo.mapper.HoleMapper; import com.javaweb.geo.service.IHoleMediaService; import com.javaweb.geo.service.IHoleService; import com.javaweb.geo.service.IProjectService; import com.javaweb.geo.vo.IndexVo; import com.javaweb.geo.vo.ProjectProcessVO; import com.javaweb.system.service.ISysConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.GetMapping; import com.javaweb.common.config.Global; import com.javaweb.common.core.controller.BaseController; @@ -39,8 +45,7 @@ * @author ruoyi */ @Controller public class SysIndexController extends BaseController { public class SysIndexController extends BaseController { @Autowired private ISysMenuService menuService; @@ -51,7 +56,10 @@ private IProjectService projectService; @Autowired private HoleMapper holeMapper; private IHoleService holeService; @Autowired private IHoleMediaService holeMediaService; private String getAdminIndex(){ return configService.selectConfigByKey(CmsConstants.KEY_ADMIN_INDEX); @@ -64,8 +72,7 @@ // 系统首页 @GetMapping("/index") public String index(ModelMap mmap) { public String index(ModelMap mmap) { // 取身份信息 SysUser user = ShiroUtils.getSysUser(); // 根据用户id取出菜单 @@ -86,26 +93,24 @@ // 系统首页顶部菜单 @PostMapping("/index/getMenu") @ResponseBody public AjaxResult getMenu(HttpServletRequest request) { public AjaxResult getMenu(HttpServletRequest request) { // 取身份信息 SysUser user = ShiroUtils.getSysUser(); // 根据用户id取出菜单 List<SysMenu> menus = menuService.selectMenusByUser(user); return AjaxResult.success(menus); } // 切换主题 @GetMapping("/system/switchSkin") public String switchSkin(ModelMap mmap) { public String switchSkin(ModelMap mmap) { return "skin"; } // 系统介绍 @GetMapping("/system/main") public String main(ModelMap mmap) { public String main(ModelMap mmap) { mmap.put("version", Global.getVersion()); return "main"; @@ -114,23 +119,22 @@ // 系统介绍 @ResponseBody @GetMapping("/system/project") public AjaxResult project() { public AjaxResult project() { AjaxResult ajaxResult = AjaxResult.success(); List<Project> projects = projectService.selectProjectList(new Project()); ajaxResult.put("projects",projects); return ajaxResult; } /** * 总进度 * @return */ @ResponseBody @GetMapping("/system/totalProcess") public AjaxResult totalProcess() { public AjaxResult totalProcess() { AjaxResult ajaxResult = AjaxResult.success(); Hole hole = holeMapper.selectHoleTotalProcess(); Hole hole = holeService.selectHoleTotalProcess(); Double data = Arith.div(hole.getFootageCpl(),hole.getFootage(),2) ; ajaxResult.put("pointerData",data); return ajaxResult; @@ -142,10 +146,9 @@ */ @ResponseBody @GetMapping("/system/projectProcess") public AjaxResult projectProcess() { public AjaxResult projectProcess() { AjaxResult ajaxResult = AjaxResult.success(); List<Hole> holes = holeMapper.selectHoleProjectProcess(); List<Hole> holes = holeService.selectHoleProjectProcess(); Map<String,Double> holeMap = new HashMap<>(); for(Hole hole : holes){ Double val = Arith.div(hole.getFootageCpl(),hole.getFootage(),2) ; @@ -155,22 +158,73 @@ List<Project> projects = projectService.selectProjectList(new Project()); List<ProjectProcessVO> vos = new ArrayList<>(); ProjectProcessVO vo; if (!ObjectUtils.isEmpty(projects)) { for(int i = 0 ; i<projects.size();i++ ){ String ids= projects.get(i).getIds(); Double val = holeMap.get(ids); ProjectProcessVO vo = new ProjectProcessVO(); vo = new ProjectProcessVO(); vo.setRanking(i + 1); vo.setStation(projects.get(i).getCode()); vo.setValue(val); if(val==null){ vo.setValue(0.0d); } vo.setStatus(projects.get(i).getStatus()); vos.add(vo); } } ajaxResult.put("projectData",vos); return ajaxResult; } /** * 数量统计 * * @return */ @ResponseBody @GetMapping("/system/indexVo") public AjaxResult projectProcess2() { IndexVo result = new IndexVo(); //=============================查询场地数量=============================== List<Project> projectList = projectService.selectProjectCountByStatus(); if (!ObjectUtils.isEmpty(projectList)) { for (Project item : projectList) { if (RecordType.projectStatus0.getId().equals(item.getStatus())) { result.setProjectStatus0(item.getStatusNumber()); } if (RecordType.projectStatus1.getId().equals(item.getStatus())) { result.setProjectStatus0(item.getStatusNumber()); } if (RecordType.projectStatus2.getId().equals(item.getStatus())) { result.setProjectStatus0(item.getStatusNumber()); } } } if (ObjectUtils.isEmpty(result.getProjectStatus1())) { result.setProjectStatus0(0); } if (ObjectUtils.isEmpty(result.getProjectStatus2())) { result.setProjectStatus0(0); } if (ObjectUtils.isEmpty(result.getProjectStatus2())) { result.setProjectStatus0(0); } //=============================查询进尺=============================== Hole hole = holeService.selectHoleTotalProcess(); result.setFootageCplCount(hole.getFootageCpl()); result.setFootageCount(hole.getFootage()); //=============================查询资料=============================== HoleMedia holeMedia = holeMediaService.selectHoleMediaNumber(); result.setFileCount(holeMedia.getNumber()); return AjaxResult.success("查询成功",result); } } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/domain/HoleMedia.java
@@ -61,6 +61,11 @@ @Excel(name = "上传人") private String uploadUser; /** * 统计资料数量 */ private Long number; public void setIds(String ids) { this.ids = ids; } @@ -125,6 +130,14 @@ this.projectId = projectId; } public Long getNumber() { return number; } public void setNumber(Long number) { this.number = number; } @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/domain/Project.java
@@ -120,6 +120,9 @@ @Excel(name = "项目状态") private String status; /** 统计状态数量 */ private Integer statusNumber; /** 是否删除 */ @Excel(name = "是否删除") private String isDeleted; @@ -149,6 +152,7 @@ /** 数据来源 */ private String dataSource; public Integer getHoleNum() { return holeNum; @@ -300,6 +304,15 @@ { return status; } public Integer getStatusNumber() { return statusNumber; } public void setStatusNumber(Integer statusNumber) { this.statusNumber = statusNumber; } public void setIsDeleted(String isDeleted) { this.isDeleted = isDeleted; javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/enums/RecordType.java
@@ -9,6 +9,13 @@ deviceLog_out("out","出库"), /** * 出入库状态 */ projectStatus0("0","未协调"), projectStatus1("1","已协调"), projectStatus2("2","施工中"), /** * 记录分类(必填,直接填写汉字,因考虑历史数据原因, * “机长”表示司钻员) * 回次、岩土、取土、标贯、动探、水位、取水、负责人、工程师、机长、钻机 @@ -25,13 +32,6 @@ jz("机长","机长"), zj("钻机","钻机"), /** * 项目状态 */ projectStatus0("0","项目未完成"), projectStatus1("1","项目验收完成"), /** * 是否删除 javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/mapper/HoleMediaMapper.java
@@ -69,4 +69,10 @@ public int deleteHoleMediaByIds(String[] idss); Long countNumberByProjectId(@Param("projectId") String projectId); /** * 统计资料数量 * @return */ HoleMedia selectHoleMediaNumber(); } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/mapper/ProjectMapper.java
@@ -63,5 +63,9 @@ */ public int deleteProjectByIds(String[] idss); /** * 查询场地数量 * @return */ List<Project> selectProjectCountByStatus(); } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/IHoleMediaService.java
@@ -58,4 +58,11 @@ * @return 结果 */ public int deleteHoleMediaById(String ids); /** * 统计资料数量 * * @return */ HoleMedia selectHoleMediaNumber(); } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/IHoleService.java
@@ -65,4 +65,16 @@ * 导入钻孔 */ String importHole(String projectId, MultipartFile file, boolean updateSupport); /** * 总进度 * @return */ Hole selectHoleTotalProcess(); /** * 场地进度 * @return */ List<Hole> selectHoleProjectProcess(); } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/IProjectService.java
@@ -62,4 +62,9 @@ public int deleteProjectById(String ids); /** * 查询场地数量 * @return */ List<Project> selectProjectCountByStatus(); } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/HoleMediaServiceImpl.java
@@ -1,6 +1,7 @@ package com.javaweb.geo.service.impl; import java.util.List; import com.javaweb.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -16,8 +17,7 @@ * @date 2022-10-20 */ @Service public class HoleMediaServiceImpl implements IHoleMediaService { public class HoleMediaServiceImpl implements IHoleMediaService { @Autowired private HoleMediaMapper holeMediaMapper; @@ -28,8 +28,7 @@ * @return 钻孔图片、视频 */ @Override public HoleMedia selectHoleMediaById(String ids) { public HoleMedia selectHoleMediaById(String ids) { return holeMediaMapper.selectHoleMediaById(ids); } @@ -40,8 +39,7 @@ * @return 钻孔图片、视频 */ @Override public List<HoleMedia> selectHoleMediaList(HoleMedia holeMedia) { public List<HoleMedia> selectHoleMediaList(HoleMedia holeMedia) { return holeMediaMapper.selectHoleMediaList(holeMedia); } @@ -52,8 +50,7 @@ * @return 结果 */ @Override public int insertHoleMedia(HoleMedia holeMedia) { public int insertHoleMedia(HoleMedia holeMedia) { holeMedia.setCreateTime(DateUtils.getNowDate()); return holeMediaMapper.insertHoleMedia(holeMedia); } @@ -65,8 +62,7 @@ * @return 结果 */ @Override public int updateHoleMedia(HoleMedia holeMedia) { public int updateHoleMedia(HoleMedia holeMedia) { return holeMediaMapper.updateHoleMedia(holeMedia); } @@ -77,8 +73,7 @@ * @return 结果 */ @Override public int deleteHoleMediaByIds(String ids) { public int deleteHoleMediaByIds(String ids) { return holeMediaMapper.deleteHoleMediaByIds(Convert.toStrArray(ids)); } @@ -89,8 +84,17 @@ * @return 结果 */ @Override public int deleteHoleMediaById(String ids) { public int deleteHoleMediaById(String ids) { return holeMediaMapper.deleteHoleMediaById(ids); } /** * 统计资料数量 * * @return */ @Override public HoleMedia selectHoleMediaNumber() { return holeMediaMapper.selectHoleMediaNumber(); } } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/HoleServiceImpl.java
@@ -182,6 +182,25 @@ return "导入完毕" ; } /** * 总进度 * @return */ @Override public Hole selectHoleTotalProcess() { return holeMapper.selectHoleTotalProcess(); } /** * 场地进度 * @return */ @Override public List<Hole> selectHoleProjectProcess() { return holeMapper.selectHoleProjectProcess(); } private String saveExcel(MultipartFile file) { String filename = file.getOriginalFilename(); File dir = new File(fileSaveDir); javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/ProjectServiceImpl.java
@@ -88,9 +88,17 @@ */ @Override public int deleteProjectById(String ids) { return projectMapper.deleteProjectById(ids); } /** * 查询场地数量 * @return */ @Override public List<Project> selectProjectCountByStatus() { return projectMapper.selectProjectCountByStatus(); } } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/vo/IndexVo.java
New file @@ -0,0 +1,85 @@ package com.javaweb.geo.vo; /** * @author mzy-cxy */ public class IndexVo { /** * 未协调 */ private Integer projectStatus0; /** * 已协调 */ private Integer projectStatus1; /** * 施工中 */ private Integer projectStatus2; /** * 总进尺 */ private Double footageCount; /** * 已完成进尺 */ private Double footageCplCount; /** * 资料 */ private Long fileCount; public Integer getProjectStatus0() { return projectStatus0; } public void setProjectStatus0(Integer projectStatus0) { this.projectStatus0 = projectStatus0; } public Integer getProjectStatus1() { return projectStatus1; } public void setProjectStatus1(Integer projectStatus1) { this.projectStatus1 = projectStatus1; } public Integer getProjectStatus2() { return projectStatus2; } public void setProjectStatus2(Integer projectStatus2) { this.projectStatus2 = projectStatus2; } public Double getFootageCount() { return footageCount; } public void setFootageCount(Double footageCount) { this.footageCount = footageCount; } public Double getFootageCplCount() { return footageCplCount; } public void setFootageCplCount(Double footageCplCount) { this.footageCplCount = footageCplCount; } public Long getFileCount() { return fileCount; } public void setFileCount(Long fileCount) { this.fileCount = fileCount; } } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/vo/ProjectProcessVO.java
@@ -9,6 +9,7 @@ private Integer ranking; private String station; private Double value; private String status; public Integer getRanking() { return ranking; @@ -33,4 +34,12 @@ public void setValue(Double value) { this.value = value; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } } javaweb-plus/javaweb-cms/src/main/resources/mapper/geo/HoleMediaMapper.xml
@@ -14,6 +14,7 @@ <result property="internetPath" column="internet_path" /> <result property="createUser" column="create_user" /> <result property="uploadUser" column="upload_user" /> <result property="number" column="number" /> </resultMap> <sql id="selectHoleMediaVo"> @@ -42,6 +43,10 @@ SELECT count(ids) FROM js_hole_media where project_id = #{projectId} </select> <select id="selectHoleMediaNumber" resultMap="HoleMediaResult"> select count(ids) as number from js_hole_media </select> <insert id="insertHoleMedia" parameterType="HoleMedia"> insert into js_hole_media <trim prefix="(" suffix=")" suffixOverrides=","> javaweb-plus/javaweb-cms/src/main/resources/mapper/geo/ProjectMapper.xml
@@ -23,6 +23,7 @@ <result property="serialNumber" column="serial_number" /> <result property="describe" column="describe" /> <result property="status" column="status" /> <result property="statusNumber" column="status_number" /> <result property="isDeleted" column="is_deleted" /> <result property="statusChangeUser" column="status_change_user" /> <result property="statusChangeReason" column="status_change_reason" /> @@ -60,6 +61,10 @@ WHERE ids = #{ids} </select> <select id="selectProjectCountByStatus" resultMap="ProjectResult"> SELECT `status`, count( * ) as status_number FROM js_project GROUP BY `status` </select> <insert id="insertProject" parameterType="Project"> insert into js_project <trim prefix="(" suffix=")" suffixOverrides=","> javaweb-plus/javaweb-cms/src/main/resources/static/images/loginPage/bg0521.png
javaweb-plus/javaweb-cms/src/main/resources/static/images/loginPage/pass0521.png
javaweb-plus/javaweb-cms/src/main/resources/static/images/loginPage/user0521.png
javaweb-plus/javaweb-cms/src/main/resources/templates/geo/project/add.html
@@ -21,6 +21,14 @@ <input name="fullName" class="form-control" required type="text"> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">场地状态:</label> <div class="col-sm-8"> <select name="status" class="form-control m-b" th:with="type=${@dict.getType('project_status')}"> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> </select> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">区县:</label> javaweb-plus/javaweb-cms/src/main/resources/templates/geo/project/edit.html
@@ -22,6 +22,14 @@ </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">场地状态:</label> <div class="col-sm-8"> <select name="status" class="form-control m-b" th:with="type=${@dict.getType('project_status')}"> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{status}"></option> </select> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">区县:</label> <div class="col-sm-8"> <select name="district" class="form-control m-b" th:with="type=${@dict.getType('sys_district')}"> javaweb-plus/javaweb-cms/src/main/resources/templates/geo/project/project.html
@@ -20,6 +20,13 @@ <input type="text" name="code"/> </li> <li> <p>项目状态:</p> <select name="status" th:with="type=${@dict.getType('project_status')}"> <option value="">所有</option> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> </select> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 重置</a> </li> @@ -48,6 +55,7 @@ <script th:inline="javascript"> var editFlag = [[${@permission.hasPermi('geo:project:edit')}]]; var removeFlag = [[${@permission.hasPermi('geo:project:remove')}]]; var statusDatas = [[${@dict.getType('project_status')}]]; var prefix = ctx + "geo/project"; $(function() { @@ -98,13 +106,9 @@ }, { field : 'status', title : '场地状态', title : '项目状态', formatter: function(value, row, index) { if(row.status =='0'){ return "未验收"; }else{ return "验收"; } return $.table.selectDictLabel(statusDatas, value); } }, { javaweb-plus/javaweb-cms/src/main/resources/templates/loginPage/process/login.html
@@ -16,9 +16,39 @@ if(window.top!==window.self){window.top.location=window.location}; </script> <style> body,html{color:#000;margin:0;overflow:hidden;font:400 13px arial,Microsoft Yahei!important}a{font-size:inherit;text-decoration:none;color:#666;cursor:pointer}.txt{width:90%;padding:4px 20px;border-radius:22px;border:solid 1px #ccc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:3.6em;outline:0}.txt:focus{border-color:#4386f5}.button{background:#4386f5;color:#fff;padding:6px 0;height:25px;line-height:25px;border-radius:5px;width:90%;border-radius:22px;display:inline-block;cursor:pointer}.page-con{text-align:center;width:400px;margin:0 auto;height:362px;position:absolute;top:50%;margin-top:-181px;left:50%;margin-left:-200px;background-color:#fff;padding:27px;border-radius:5px;border:1px solid #e8e1e1;}.page-con .sep{border-top:1px solid #ddd;height:20px;text-align:center}.page-con label{color:#666;display:inline-block;padding:0 10px;}.page-con .signup{font-size:12px;margin-top:19px;color:#666;text-align:left;padding-left:26px}.page-con .signup a{color:#333}#bg-canvas{position:absolute;z-index:-1}#logo-text{display:inline-block;margin-left:8px;font-size:35px;vertical-align:7px;font-family:arial;height:60px;text-shadow:1px 1px 2px #bbb inset}#logo-text .logo-dot{width:68px;height:6px;display:inline-block;position:absolute;left:50%;top:50%;margin-left:-34px;margin-top:-3px;display:none}#logo-text .logo-dot:after{width:6px;background:#4386f5;height:6px;display:inline-block;position:absolute;right:-4px;border-radius:50%;content:""}#logo-text label{display:inline-block;background:#4386f5;border-radius:50%;color:#fff;padding:11px 8px;margin-left:6px;position:relative;box-shadow:1px 1px 6px #ccc}.login-input{position:relative}.login-input a{position:absolute;right:33px;top:13px;width:auto;height:20px;line-height:20px;text-align:right;color:#888;z-index:1}.weixin-con{display:none;padding:15px;background:#fff;position:absolute;z-index:9;width:362px;height:410px;left:50%;top:50%;margin-left:-181px;margin-top:-205px;text-align:center;border-raidus:5px;box-shadow:1px 1px 4px #ccc}.error-tip{height:30px;line-height:30px;position:absolute;right:32px;color:red;bottom:6px;font-size:12px;z-index:2;background:#fff}.success-tip{position:absolute;width:194px;top:155px;display:none;right:96px;padding:5px 8px;border:1px solid green;border-radius:3px;box-shadow:1px 1px 5px #d6e9c6;background-color:#dff0d8;color:#468847;text-shadow:0 1px 0 rgba(255,255,255,.5)}.icons{background:url(/resources/images/login_processon.png) no-repeat;display:inline-block;width:42px;height:42px;cursor:pointer;}.icons.weixin{background-position:0 0;background-size:42px}.icons.qq{background-position:0 -85px;background-size:43px}.icons.weibo{background-position:0 -131px;background-size:44px}.icons.google{background-position:0 -45px;background-size:44px}.icons.somemore{border-radius:100%;border:1px solid #ddd;background-position:-1px -165px;background-size:42px;width:38px;height:38px}.icons.somemore:hover{-webkit-box-shadow:inset 0 0 1px rgba(0,0,0,.2);-moz-box-shadow:inset 0 0 1px rgba(0,0,0,.2);box-shadow:inset 0 0 1px rgba(0,0,0,.2);cursor:pointer}.morelogo-con{background-color:#fff;padding:10px;position:absolute;left:249px;opacity:0;top:30px;z-index:3;border-radius:5px;box-shadow:0 1px 2px 0 rgba(0,0,0,.2);-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-ms-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.morelogo-con.popover{opacity:1;top:45px}.morelogo-con>span{display:block;font-size:13px;color:#3d474d}.morelogo-con .mingdao{display:inline-block;vertical-align:middle;background-position:0 -257px;background-size:44px;margin-right:11px}.rotate{animation:.8s infinite rotate;-webkit-animation:.8s infinite rotate;-o-animation:.8s infinite rotate;-moz-animation:.8s infinite rotate;-ms-animation:.8s infinite rotate}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotate{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-ms-keyframes rotate{from{-ms-transform:rotate(0)}to{-ms-transform:rotate(360deg)}}@-o-keyframes rotate{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.bind{width:600px;margin-left:-300px}.bind .button,.bind .txt{width:55%}.bind #logo-text{vertical-align:-7px}.bind .icons{background:url(/resources/images/login_processon.png) no-repeat;display:inline-block;width:74px;height:74px;vertical-align:top}.bind .icons.weixin{background-position:0 0;background-size:70px;width:70px;height:68px}.bind .icons.qq{background-position:0 -141px;background-size:70px;width:70px;height:68px}.bind .icons.weibo{background-position:0 -211px;background-size:70px;width:70px;height:68px}.bind .icons.google{background-position:0 -73px;background-size:70px;width:70px;height:68px}.bind_item{position:relative}.bind-arrow{margin-left:30px;display:inline-block;position:relative;color:#666;margin-right:30px}.bind-tip{margin-top:40px}.des{margin-top:10px;font-size:14px}@media screen and (max-width:760px){.page-con{width:100%;left:0;margin-left:0}} body,html{color:#000;margin:0;overflow:hidden;font:400 13px arial,Microsoft Yahei!important}a{font-size:inherit;text-decoration:none;color:#666;cursor:pointer} .txt{width:90%;padding:4px 20px;border-radius:22px;border:solid 1px #ccc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:3.6em;outline:0} .txt:focus{border-color:#4386f5}.button{background:#4386f5;color:#fff;padding:6px 0;height:25px;line-height:25px;border-radius:5px;width:90%;border-radius:22px;display:inline-block;cursor:pointer} .container{text-align:center; /*width:400px;*/ margin:0 auto; /*height:362px;*/ position:absolute; top:30%; margin-top:-181px; /*left:50%;*/ margin-left:-200px; /*background-color:#fff;*/ /*padding:27px;*/ /*border-radius:5px;*/ /*border:1px solid #e8e1e1;*/ } .page-con .sep{border-top:1px solid #ddd;height:20px;text-align:center} .page-con label{color:#666;display:inline-block;padding:0 10px;} .page-con .signup{font-size:12px;margin-top:19px;color:#666;text-align:left;padding-left:26px} .page-con .signup a{color:#333}#bg-canvas{position:absolute;z-index:-1} #logo-text{ display:inline-block; /*margin-left:8px;*/ font-size:35px; vertical-align:7px; font-family:arial; /*height:60px;*/ text-shadow:1px 1px 2px #bbb inset } #logo-text .logo-dot{width:68px;height:6px;display:inline-block;position:absolute;left:50%;top:50%;margin-left:-34px;margin-top:-3px;display:none}#logo-text .logo-dot:after{width:6px;background:#4386f5;height:6px;display:inline-block;position:absolute;right:-4px;border-radius:50%;content:""}#logo-text label{display:inline-block;background:#4386f5;border-radius:50%;color:#fff;padding:11px 8px;margin-left:6px;position:relative;box-shadow:1px 1px 6px #ccc}.login-input{position:relative}.login-input a{position:absolute;right:33px;top:13px;width:auto;height:20px;line-height:20px;text-align:right;color:#888;z-index:1}.weixin-con{display:none;padding:15px;background:#fff;position:absolute;z-index:9;width:362px;height:410px;left:50%;top:50%;margin-left:-181px;margin-top:-205px;text-align:center;border-raidus:5px;box-shadow:1px 1px 4px #ccc}.error-tip{height:30px;line-height:30px;position:absolute;right:32px;color:red;bottom:6px;font-size:12px;z-index:2;background:#fff}.success-tip{position:absolute;width:194px;top:155px;display:none;right:96px;padding:5px 8px;border:1px solid green;border-radius:3px;box-shadow:1px 1px 5px #d6e9c6;background-color:#dff0d8;color:#468847;text-shadow:0 1px 0 rgba(255,255,255,.5)}.icons{background:url(/resources/images/login_processon.png) no-repeat;display:inline-block;width:42px;height:42px;cursor:pointer;}.icons.weixin{background-position:0 0;background-size:42px}.icons.qq{background-position:0 -85px;background-size:43px}.icons.weibo{background-position:0 -131px;background-size:44px}.icons.google{background-position:0 -45px;background-size:44px}.icons.somemore{border-radius:100%;border:1px solid #ddd;background-position:-1px -165px;background-size:42px;width:38px;height:38px}.icons.somemore:hover{-webkit-box-shadow:inset 0 0 1px rgba(0,0,0,.2);-moz-box-shadow:inset 0 0 1px rgba(0,0,0,.2);box-shadow:inset 0 0 1px rgba(0,0,0,.2);cursor:pointer}.morelogo-con{background-color:#fff;padding:10px;position:absolute;left:249px;opacity:0;top:30px;z-index:3;border-radius:5px;box-shadow:0 1px 2px 0 rgba(0,0,0,.2);-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-ms-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.morelogo-con.popover{opacity:1;top:45px}.morelogo-con>span{display:block;font-size:13px;color:#3d474d}.morelogo-con .mingdao{display:inline-block;vertical-align:middle;background-position:0 -257px;background-size:44px;margin-right:11px}.rotate{animation:.8s infinite rotate;-webkit-animation:.8s infinite rotate;-o-animation:.8s infinite rotate;-moz-animation:.8s infinite rotate;-ms-animation:.8s infinite rotate}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotate{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@-ms-keyframes rotate{from{-ms-transform:rotate(0)}to{-ms-transform:rotate(360deg)}}@-o-keyframes rotate{from{-o-transform:rotate(0)}to{-o-transform:rotate(360deg)}}@keyframes rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.bind{width:600px;margin-left:-300px}.bind .button,.bind .txt{width:55%}.bind #logo-text{vertical-align:-7px}.bind .icons{background:url(/resources/images/login_processon.png) no-repeat;display:inline-block;width:74px;height:74px;vertical-align:top}.bind .icons.weixin{background-position:0 0;background-size:70px;width:70px;height:68px}.bind .icons.qq{background-position:0 -141px;background-size:70px;width:70px;height:68px}.bind .icons.weibo{background-position:0 -211px;background-size:70px;width:70px;height:68px}.bind .icons.google{background-position:0 -73px;background-size:70px;width:70px;height:68px}.bind_item{position:relative}.bind-arrow{margin-left:30px;display:inline-block;position:relative;color:#666;margin-right:30px}.bind-tip{margin-top:40px}.des{margin-top:10px;font-size:14px}@media screen and (max-width:760px){.page-con{width:100%;left:0;margin-left:0}} body{ background-image :url(images/loginPage/bg11.png); background-image :url(images/loginPage/bg0521.png); background-size:100% 100%; } html,body{ @@ -30,18 +60,26 @@ } #logo-text{ /*color: rgba(51, 51, 51, 1);*/ font-size: 40px; margin-left: 25px; color: white; margin-bottom: 20px; font-size: 32px; /*margin-left: 25px;*/ color: #065deb; /*margin-bottom: 20px;*/ } .page-con{ .container{ width: 495px; height: 621px; border-radius: 24px; background-color: #ffffff; box-shadow: 0 3px 6px -4px rgba(0, 0, 0, .12), 0 6px 16px 0 rgba(0, 0, 0, .08), 0 9px 28px 8px rgba(0, 0, 0, .05); border-width: 0px; margin-left: 0px; /*text-align: left;*/ left: 38%; left: 60%; padding: 0px; color: white; } .page-con{ padding:20px; } .bar-line{ display: block; @@ -53,21 +91,28 @@ .txt{ border-radius: 0px; border-width: 0px; font-size: 16px; font-size: 18px; padding: 0px 0px 0px 10px; height: 45px; } .input-container{ /*border-bottom: 1px solid rgba(187, 187, 187, 1);*/ margin: auto; box-sizing: border-box; width:340px; height:60px; border:1px solid #065deb; padding: 18px 28px 18px 28px; border-radius: 10px; display: flex; align-items: center; } #signin_btn{ width: 230px; height: 50px; line-height: 50px; border-radius: 4px; background-color: rgba(28,29,29, 1); width: 340px; height: 60px; line-height: 60px; border-radius: 10px; background-color: #065deb; /*background-color: rgba(94, 131, 248, 1);*/ color: rgba(255, 255, 255, 1); font-size: 20px; @@ -95,19 +140,20 @@ </head> <body> <div class="page-con" style="background-color:transparent"> <div class="container"> <div class="page-con" > <span class="bar-line"></span> <form name="loginform" id="loginform"> <input type="hidden" id="redirectUrl" name="redirectUrl" value="${redirectUrl}" > <div><span id="logo-text">北京市地面沉降监测网建设工程</span></div> <div class="input-container" style="margin-top:25px;position:relative;"> <img src="images/loginPage/user3.png" style="margin-right:5px;"/> <div style="width:100%"> <div class="input-container" style="margin-top:124px;position:relative;"> <img src="images/loginPage/user0521.png" style="margin-right:5px;"/> <input id="username" name="username" class="txt" value="admin" type="text" autocomplete="off" placeholder="请输入用户名/邮箱" > <div class="error-tip"></div> </div> <div class="login-input input-container" style="margin-top:30px;position:relative;"> <img class="password-icon" src="images/loginPage/pass1.png"/> <div class="login-input input-container" style="margin-top:42px;position:relative;"> <img class="password-icon" src="images/loginPage/pass0521.png"style="margin-top:-5px"/> <input name="password" id="password" value="admin123" class="txt" type="password" placeholder="请输入登录密码" autocomplete="off" > <div class="error-tip"></div> </div> @@ -120,9 +166,11 @@ </a> <div style="display: inline-block;float: left;position: relative;top:10px;right: 150px;" class="error-tip"></div> </div> </div> <div class="validate-line" style="clear:both;"></div> <div style="margin-top:30px;"> <span id="signin_btn" onclick="login.login();" class="button">登  录</span> <div style="margin-top:96px;"> <span id="signin_btn" onclick="login.login();" class="button">登录</span> </div> <div class="signup"> <label for="rememberMe" style="float:right;margin-right: 15px;color:#000;" > @@ -131,6 +179,8 @@ </form> </div> </div> <div class="weixin-con" id="weixin_dlg"><div style="margin-top:200px;">加载中...</div></div> <script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]];var captchaEnabled= [[${captchaEnabled}]]; </script>