Commit bd1fd5fe12abfc8db192585feb623c7f38f077fd
1 parent
865aac0b
嘉定升级修改
Showing
31 changed files
with
2664 additions
and
265 deletions
src/main/java/com/bsth/WebAppConfiguration.java
| 1 | package com.bsth; | 1 | package com.bsth; |
| 2 | 2 | ||
| 3 | import com.bsth.filter.ResourceFilter; | 3 | import com.bsth.filter.ResourceFilter; |
| 4 | +import com.bsth.listener.UserLogoutSessionListener; | ||
| 4 | import com.bsth.websocket.WebSocketHandshakeInterceptor; | 5 | import com.bsth.websocket.WebSocketHandshakeInterceptor; |
| 5 | import com.bsth.websocket.handler.RealControlSocketHandler; | 6 | import com.bsth.websocket.handler.RealControlSocketHandler; |
| 6 | import org.slf4j.Logger; | 7 | import org.slf4j.Logger; |
| 7 | import org.slf4j.LoggerFactory; | 8 | import org.slf4j.LoggerFactory; |
| 8 | import org.springframework.boot.context.embedded.FilterRegistrationBean; | 9 | import org.springframework.boot.context.embedded.FilterRegistrationBean; |
| 10 | +import org.springframework.boot.context.embedded.ServletListenerRegistrationBean; | ||
| 9 | import org.springframework.context.annotation.Bean; | 11 | import org.springframework.context.annotation.Bean; |
| 10 | import org.springframework.context.annotation.ComponentScan; | 12 | import org.springframework.context.annotation.ComponentScan; |
| 11 | import org.springframework.context.annotation.Configuration; | 13 | import org.springframework.context.annotation.Configuration; |
| @@ -76,4 +78,16 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebS | @@ -76,4 +78,16 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebS | ||
| 76 | registry.addHandler(new RealControlSocketHandler(), "/sockjs/realcontrol","/freeLogin/sockjs/realcontrol").addInterceptors(new WebSocketHandshakeInterceptor()) | 78 | registry.addHandler(new RealControlSocketHandler(), "/sockjs/realcontrol","/freeLogin/sockjs/realcontrol").addInterceptors(new WebSocketHandshakeInterceptor()) |
| 77 | .withSockJS(); | 79 | .withSockJS(); |
| 78 | } | 80 | } |
| 81 | + //--------------------- 配置listener ---------------------// | ||
| 82 | + @Bean | ||
| 83 | + public ServletListenerRegistrationBean<UserLogoutSessionListener> UserLogoutSessionListenerRegistrationBean() { | ||
| 84 | + ServletListenerRegistrationBean<UserLogoutSessionListener> userLogoutSessionListenerRegistrationBean = | ||
| 85 | + new ServletListenerRegistrationBean<>(); | ||
| 86 | + userLogoutSessionListenerRegistrationBean.setListener(userLogoutSessionListenerBean()); | ||
| 87 | + return userLogoutSessionListenerRegistrationBean; | ||
| 88 | + } | ||
| 89 | + @Bean | ||
| 90 | + public UserLogoutSessionListener userLogoutSessionListenerBean() { | ||
| 91 | + return new UserLogoutSessionListener(); | ||
| 92 | + } | ||
| 79 | } | 93 | } |
src/main/java/com/bsth/controller/logger/UserSignController.java
0 → 100644
| 1 | +package com.bsth.controller.logger; | ||
| 2 | + | ||
| 3 | + | ||
| 4 | +import com.bsth.controller.schedule.BController; | ||
| 5 | +import com.bsth.entity.logger.UserSign; | ||
| 6 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 7 | +import org.springframework.web.bind.annotation.RestController; | ||
| 8 | + | ||
| 9 | +@RestController | ||
| 10 | +@RequestMapping("logger_user_sign") | ||
| 11 | +public class UserSignController extends BController<UserSign, Long> { | ||
| 12 | + | ||
| 13 | +} |
src/main/java/com/bsth/controller/sys/UserController.java
| @@ -8,6 +8,7 @@ import com.bsth.controller.sys.util.RSAUtils; | @@ -8,6 +8,7 @@ import com.bsth.controller.sys.util.RSAUtils; | ||
| 8 | import com.bsth.entity.sys.CompanyAuthority; | 8 | import com.bsth.entity.sys.CompanyAuthority; |
| 9 | import com.bsth.entity.sys.SysUser; | 9 | import com.bsth.entity.sys.SysUser; |
| 10 | import com.bsth.security.util.SecurityUtils; | 10 | import com.bsth.security.util.SecurityUtils; |
| 11 | +import com.bsth.service.logger.UserSignService; | ||
| 11 | import com.bsth.service.sys.CompanyAuthorityService; | 12 | import com.bsth.service.sys.CompanyAuthorityService; |
| 12 | import com.bsth.service.sys.SysUserService; | 13 | import com.bsth.service.sys.SysUserService; |
| 13 | import com.google.common.collect.ArrayListMultimap; | 14 | import com.google.common.collect.ArrayListMultimap; |
| @@ -42,6 +43,9 @@ public class UserController extends BaseController<SysUser, Integer> { | @@ -42,6 +43,9 @@ public class UserController extends BaseController<SysUser, Integer> { | ||
| 42 | @Autowired | 43 | @Autowired |
| 43 | CompanyAuthorityService companyAuthorityService; | 44 | CompanyAuthorityService companyAuthorityService; |
| 44 | 45 | ||
| 46 | + @Autowired | ||
| 47 | + UserSignService userLogInoutService; | ||
| 48 | + | ||
| 45 | @RequestMapping(value = "/login/jCryptionKey") | 49 | @RequestMapping(value = "/login/jCryptionKey") |
| 46 | public Map<String, Object> jCryptionKey(HttpServletRequest request) { | 50 | public Map<String, Object> jCryptionKey(HttpServletRequest request) { |
| 47 | //公匙返回页面 | 51 | //公匙返回页面 |
| @@ -128,6 +132,9 @@ public class UserController extends BaseController<SysUser, Integer> { | @@ -128,6 +132,9 @@ public class UserController extends BaseController<SysUser, Integer> { | ||
| 128 | 132 | ||
| 129 | captchaMap.remove(userName); | 133 | captchaMap.remove(userName); |
| 130 | rs.put("status", ResponseCode.SUCCESS); | 134 | rs.put("status", ResponseCode.SUCCESS); |
| 135 | + | ||
| 136 | + // 记录登录日志 | ||
| 137 | + userLogInoutService.userLogIn(user.getUserName(), session.getId(), new Date()); | ||
| 131 | } catch (Exception e) { | 138 | } catch (Exception e) { |
| 132 | logger.error("", e); | 139 | logger.error("", e); |
| 133 | rs.put("msg", "服务器出现异常,请联系管理员"); | 140 | rs.put("msg", "服务器出现异常,请联系管理员"); |
src/main/java/com/bsth/entity/logger/UserSign.java
0 → 100644
| 1 | +package com.bsth.entity.logger; | ||
| 2 | + | ||
| 3 | +import javax.persistence.*; | ||
| 4 | +import java.util.Date; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * 用户的登录登出日志。 | ||
| 8 | + */ | ||
| 9 | +@Entity | ||
| 10 | +@Table(name = "logger_user_sign") | ||
| 11 | +public class UserSign { | ||
| 12 | + @Id | ||
| 13 | + @GeneratedValue | ||
| 14 | + private Long id; | ||
| 15 | + | ||
| 16 | + /** sessionId */ | ||
| 17 | + @Column(nullable = false, unique = true) | ||
| 18 | + private String sessionId; | ||
| 19 | + | ||
| 20 | + /** 登录用户名 */ | ||
| 21 | + private String logName; | ||
| 22 | + /** 实际用户名 */ | ||
| 23 | + private String realName; | ||
| 24 | + | ||
| 25 | + /** 登录时间(包含日期和具体时刻)*/ | ||
| 26 | + @Temporal(TemporalType.TIMESTAMP) | ||
| 27 | + private Date logInDateTime; | ||
| 28 | + /** 登录时间(只包含日期) */ | ||
| 29 | + @Temporal(TemporalType.DATE) | ||
| 30 | + private Date logInDate; | ||
| 31 | + | ||
| 32 | + /** 登出时间(包含日期和具体时刻)*/ | ||
| 33 | + @Temporal(TemporalType.TIMESTAMP) | ||
| 34 | + private Date logOutDateTime; | ||
| 35 | + /** 登录时间(只包含日期) */ | ||
| 36 | + @Temporal(TemporalType.DATE) | ||
| 37 | + private Date logOutDate; | ||
| 38 | + | ||
| 39 | + @Version | ||
| 40 | + private int version; | ||
| 41 | + | ||
| 42 | + public Long getId() { | ||
| 43 | + return id; | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + public void setId(Long id) { | ||
| 47 | + this.id = id; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + public String getSessionId() { | ||
| 51 | + return sessionId; | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + public void setSessionId(String sessionId) { | ||
| 55 | + this.sessionId = sessionId; | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + public String getLogName() { | ||
| 59 | + return logName; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + public void setLogName(String logName) { | ||
| 63 | + this.logName = logName; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + public String getRealName() { | ||
| 67 | + return realName; | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + public void setRealName(String realName) { | ||
| 71 | + this.realName = realName; | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + public Date getLogInDateTime() { | ||
| 75 | + return logInDateTime; | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + public void setLogInDateTime(Date logInDateTime) { | ||
| 79 | + this.logInDateTime = logInDateTime; | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + public Date getLogInDate() { | ||
| 83 | + return logInDate; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + public void setLogInDate(Date logInDate) { | ||
| 87 | + this.logInDate = logInDate; | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + public Date getLogOutDateTime() { | ||
| 91 | + return logOutDateTime; | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + public void setLogOutDateTime(Date logOutDateTime) { | ||
| 95 | + this.logOutDateTime = logOutDateTime; | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + public Date getLogOutDate() { | ||
| 99 | + return logOutDate; | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + public void setLogOutDate(Date logOutDate) { | ||
| 103 | + this.logOutDate = logOutDate; | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + public int getVersion() { | ||
| 107 | + return version; | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + public void setVersion(int version) { | ||
| 111 | + this.version = version; | ||
| 112 | + } | ||
| 113 | +} |
src/main/java/com/bsth/listener/UserLogoutSessionListener.java
0 → 100644
| 1 | +package com.bsth.listener; | ||
| 2 | + | ||
| 3 | +import com.bsth.common.Constants; | ||
| 4 | +import com.bsth.service.logger.UserSignService; | ||
| 5 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 6 | + | ||
| 7 | +import javax.servlet.http.HttpSession; | ||
| 8 | +import javax.servlet.http.HttpSessionEvent; | ||
| 9 | +import javax.servlet.http.HttpSessionListener; | ||
| 10 | +import java.util.Date; | ||
| 11 | + | ||
| 12 | +public class UserLogoutSessionListener implements HttpSessionListener { | ||
| 13 | + @Autowired | ||
| 14 | + private UserSignService userLogInoutService; | ||
| 15 | + | ||
| 16 | + @Override | ||
| 17 | + public void sessionCreated(HttpSessionEvent se) { | ||
| 18 | + | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + @Override | ||
| 22 | + public void sessionDestroyed(HttpSessionEvent se) { | ||
| 23 | + HttpSession httpSession = se.getSession(); | ||
| 24 | + String userName = String.valueOf(httpSession.getAttribute(Constants.SESSION_USERNAME)); | ||
| 25 | + String sessionId = httpSession.getId(); | ||
| 26 | + | ||
| 27 | + userLogInoutService.userLogOut(userName, sessionId, new Date()); | ||
| 28 | + } | ||
| 29 | +} |
src/main/java/com/bsth/repository/logger/UserSignRepository.java
0 → 100644
| 1 | +package com.bsth.repository.logger; | ||
| 2 | + | ||
| 3 | +import com.bsth.entity.logger.UserSign; | ||
| 4 | +import com.bsth.repository.BaseRepository; | ||
| 5 | +import org.springframework.stereotype.Repository; | ||
| 6 | + | ||
| 7 | +@Repository | ||
| 8 | +public interface UserSignRepository extends BaseRepository<UserSign, Long> { | ||
| 9 | + UserSign findBySessionId(String sessionId); | ||
| 10 | +} |
src/main/java/com/bsth/service/logger/UserSignService.java
0 → 100644
| 1 | +package com.bsth.service.logger; | ||
| 2 | + | ||
| 3 | +import com.bsth.entity.logger.UserSign; | ||
| 4 | +import com.bsth.service.schedule.BService; | ||
| 5 | + | ||
| 6 | +import java.util.Date; | ||
| 7 | + | ||
| 8 | +public interface UserSignService extends BService<UserSign, Long> { | ||
| 9 | + | ||
| 10 | + /** | ||
| 11 | + * 用户登录日志。 | ||
| 12 | + * @param userName 登录用户名 | ||
| 13 | + * @param sessionId sessionId | ||
| 14 | + * @param logInDate 登入时间 | ||
| 15 | + */ | ||
| 16 | + void userLogIn(String userName, String sessionId, Date logInDate); | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * 用户登出日志。 | ||
| 20 | + * @param userName 登录用户名 | ||
| 21 | + * @param sessionId sessionId | ||
| 22 | + * @param logOutDate 登出时间 | ||
| 23 | + */ | ||
| 24 | + void userLogOut(String userName, String sessionId, Date logOutDate); | ||
| 25 | +} |
src/main/java/com/bsth/service/logger/impl/UserSignDataToolsImpl.java
0 → 100644
| 1 | +package com.bsth.service.logger.impl; | ||
| 2 | + | ||
| 3 | +import com.bsth.service.schedule.exception.ScheduleException; | ||
| 4 | +import com.bsth.service.schedule.utils.DataToolsFile; | ||
| 5 | +import com.bsth.service.schedule.utils.DataToolsProperties; | ||
| 6 | +import com.bsth.service.schedule.utils.DataToolsService; | ||
| 7 | +import org.slf4j.Logger; | ||
| 8 | +import org.slf4j.LoggerFactory; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.beans.factory.annotation.Qualifier; | ||
| 11 | +import org.springframework.boot.context.properties.EnableConfigurationProperties; | ||
| 12 | +import org.springframework.stereotype.Service; | ||
| 13 | + | ||
| 14 | +import java.io.File; | ||
| 15 | +import java.io.PrintWriter; | ||
| 16 | +import java.io.StringWriter; | ||
| 17 | +import java.util.HashMap; | ||
| 18 | +import java.util.Map; | ||
| 19 | + | ||
| 20 | +@EnableConfigurationProperties(DataToolsProperties.class) | ||
| 21 | +@Service(value = "usersign_dataTool") | ||
| 22 | +public class UserSignDataToolsImpl implements DataToolsService { | ||
| 23 | + /** 日志记录器 */ | ||
| 24 | + private final static Logger LOGGER = LoggerFactory.getLogger(UserSignDataToolsImpl.class); | ||
| 25 | + | ||
| 26 | + @Autowired | ||
| 27 | + @Qualifier(value = "dataToolsServiceImpl") | ||
| 28 | + private DataToolsService dataToolsService; | ||
| 29 | + | ||
| 30 | + @Autowired | ||
| 31 | + private DataToolsProperties dataToolsProperties; | ||
| 32 | + | ||
| 33 | + @Override | ||
| 34 | + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException { | ||
| 35 | + throw new RuntimeException("不支持DataToolsFile!"); | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + @Override | ||
| 39 | + public void importData(File file, Map<String, Object> params) throws ScheduleException { | ||
| 40 | + throw new RuntimeException("不支持importData!"); | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + @Override | ||
| 44 | + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException { | ||
| 45 | + try { | ||
| 46 | + LOGGER.info("//---------------- 导出用户登录日志 start... ----------------//"); | ||
| 47 | + // 创建ktr转换所需参数 | ||
| 48 | + Map<String, Object> ktrParms = new HashMap<>(); | ||
| 49 | + File ktrFile = new File(this.getClass().getResource( | ||
| 50 | + dataToolsProperties.getUsersignDataoutputktr()).toURI()); | ||
| 51 | + | ||
| 52 | + // 通用参数,转换文件路径,excel输出文件名 | ||
| 53 | + ktrParms.put("transpath", ktrFile.getAbsolutePath()); | ||
| 54 | + ktrParms.put("filename", "用户登录日志_download-"); | ||
| 55 | + | ||
| 56 | + ktrParms.putAll(params); | ||
| 57 | + | ||
| 58 | + DataToolsFile file = dataToolsService.exportData(ktrParms); | ||
| 59 | + | ||
| 60 | + LOGGER.info("//---------------- 导出用户登录日志 success... ----------------//"); | ||
| 61 | + | ||
| 62 | + return file; | ||
| 63 | + | ||
| 64 | + } catch (Exception exp) { | ||
| 65 | + LOGGER.info("//---------------- 导出用户登录日志 failed... ----------------//"); | ||
| 66 | + | ||
| 67 | + StringWriter sw = new StringWriter(); | ||
| 68 | + exp.printStackTrace(new PrintWriter(sw)); | ||
| 69 | + LOGGER.info(sw.toString()); | ||
| 70 | + | ||
| 71 | + throw new ScheduleException(exp.getMessage()); | ||
| 72 | + } | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | +} |
src/main/java/com/bsth/service/logger/impl/UserSignServiceImpl.java
0 → 100644
| 1 | +package com.bsth.service.logger.impl; | ||
| 2 | + | ||
| 3 | +import com.bsth.entity.logger.UserSign; | ||
| 4 | +import com.bsth.entity.sys.SysUser; | ||
| 5 | +import com.bsth.repository.logger.UserSignRepository; | ||
| 6 | +import com.bsth.service.logger.UserSignService; | ||
| 7 | +import com.bsth.service.schedule.exception.ScheduleException; | ||
| 8 | +import com.bsth.service.schedule.impl.BServiceImpl; | ||
| 9 | +import com.bsth.service.schedule.utils.DataToolsFile; | ||
| 10 | + import com.bsth.service.schedule.utils.DataToolsService; | ||
| 11 | +import com.bsth.service.sys.SysUserService; | ||
| 12 | +import org.joda.time.DateTime; | ||
| 13 | +import org.slf4j.Logger; | ||
| 14 | +import org.slf4j.LoggerFactory; | ||
| 15 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 16 | +import org.springframework.beans.factory.annotation.Qualifier; | ||
| 17 | +import org.springframework.stereotype.Service; | ||
| 18 | +import org.springframework.transaction.annotation.Isolation; | ||
| 19 | +import org.springframework.transaction.annotation.Propagation; | ||
| 20 | +import org.springframework.transaction.annotation.Transactional; | ||
| 21 | + | ||
| 22 | +import java.io.File; | ||
| 23 | +import java.util.Date; | ||
| 24 | +import java.util.List; | ||
| 25 | +import java.util.Map; | ||
| 26 | + | ||
| 27 | +@Service | ||
| 28 | +public class UserSignServiceImpl extends BServiceImpl<UserSign, Long> implements UserSignService { | ||
| 29 | + /** 日志记录器 */ | ||
| 30 | + private final static Logger LOG = LoggerFactory.getLogger(UserSignServiceImpl.class); | ||
| 31 | + | ||
| 32 | + @Autowired | ||
| 33 | + @Qualifier(value = "usersign_dataTool") | ||
| 34 | + private DataToolsService dataToolsService; | ||
| 35 | + | ||
| 36 | + @Autowired | ||
| 37 | + private UserSignRepository userLogInoutRepository; | ||
| 38 | + @Autowired | ||
| 39 | + private SysUserService sysUserService; | ||
| 40 | + | ||
| 41 | + @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) | ||
| 42 | + @Override | ||
| 43 | + public void userLogIn(String userName, String sessionId, Date logInDate) { | ||
| 44 | + try { | ||
| 45 | + SysUser user = sysUserService.findByUserName(userName); | ||
| 46 | + if (user == null) { | ||
| 47 | + LOG.warn("用户{}不存在!", userName); | ||
| 48 | + return; | ||
| 49 | + } | ||
| 50 | + if (!user.isEnabled()) { | ||
| 51 | + LOG.warn("用户{}被锁定!", userName); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + // joda日期转换 | ||
| 55 | + DateTime _jodaDT = new DateTime(logInDate.getTime()); | ||
| 56 | + | ||
| 57 | + UserSign userLogInout = new UserSign(); | ||
| 58 | + userLogInout.setLogName(userName); | ||
| 59 | + userLogInout.setRealName(user.getName()); | ||
| 60 | + userLogInout.setSessionId(sessionId); | ||
| 61 | + userLogInout.setLogInDate(_jodaDT.dayOfWeek().roundFloorCopy().toDate()); // 登录时间(不带时分秒) | ||
| 62 | + userLogInout.setLogInDateTime(_jodaDT.toDate()); // 登录时间(带时分秒) | ||
| 63 | + | ||
| 64 | + userLogInoutRepository.save(userLogInout); | ||
| 65 | + | ||
| 66 | + } catch (Exception exp) { | ||
| 67 | + LOG.error("用户登录日志异常!", exp); | ||
| 68 | + } | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + @Override | ||
| 72 | + public void userLogOut(String userName, String sessionId, Date logOutDate) { | ||
| 73 | + try { | ||
| 74 | + SysUser user = sysUserService.findByUserName(userName); | ||
| 75 | + if (user == null) { | ||
| 76 | + LOG.warn("用户{}不存在!", userName); | ||
| 77 | + return; | ||
| 78 | + } | ||
| 79 | + if (!user.isEnabled()) { | ||
| 80 | + LOG.warn("用户{}被锁定!", userName); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + // 根据sessionId查找对应的登录日志 | ||
| 84 | + UserSign userLogInout = userLogInoutRepository.findBySessionId(sessionId); | ||
| 85 | + | ||
| 86 | + // joda日期转换 | ||
| 87 | + DateTime _jodaDT = new DateTime(logOutDate.getTime()); | ||
| 88 | + | ||
| 89 | + if (userLogInout == null) { // 说明之前登录的操作没有记录日志 | ||
| 90 | + userLogInout = new UserSign(); | ||
| 91 | + userLogInout.setLogName(userName); | ||
| 92 | + userLogInout.setRealName(user.getName()); | ||
| 93 | + userLogInout.setSessionId(sessionId); | ||
| 94 | + userLogInout.setLogOutDate(_jodaDT.dayOfWeek().roundFloorCopy().toDate()); // 登出时间(不带时分秒) | ||
| 95 | + userLogInout.setLogOutDateTime(_jodaDT.toDate()); // 登出时间(带时分秒) | ||
| 96 | + } else { | ||
| 97 | + userLogInout.setLogOutDate(_jodaDT.dayOfWeek().roundFloorCopy().toDate()); // 登出时间(不带时分秒) | ||
| 98 | + userLogInout.setLogOutDateTime(_jodaDT.toDate()); // 登出时间(带时分秒) | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + userLogInoutRepository.save(userLogInout); | ||
| 102 | + | ||
| 103 | + } catch (Exception exp) { | ||
| 104 | + LOG.error("用户登出日志异常!", exp); | ||
| 105 | + } | ||
| 106 | + } | ||
| 107 | + | ||
| 108 | + @Override | ||
| 109 | + public UserSign save(UserSign userLogInout) { | ||
| 110 | + throw new RuntimeException("不支持save方法!"); | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + @Override | ||
| 114 | + public <S extends UserSign> List<S> bulkSave(List<S> entities) { | ||
| 115 | + throw new RuntimeException("不支持bulkSave方法!"); | ||
| 116 | + } | ||
| 117 | + | ||
| 118 | + @Override | ||
| 119 | + public void delete(Long aLong) throws ScheduleException { | ||
| 120 | + throw new RuntimeException("不支持delete方法!"); | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + @Override | ||
| 124 | + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException { | ||
| 125 | + throw new RuntimeException("不支持uploadFile方法!"); | ||
| 126 | + } | ||
| 127 | + | ||
| 128 | + @Override | ||
| 129 | + public void importData(File file, Map<String, Object> params) throws ScheduleException { | ||
| 130 | + throw new RuntimeException("不支持importData方法!"); | ||
| 131 | + } | ||
| 132 | + | ||
| 133 | + @Override | ||
| 134 | + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException { | ||
| 135 | + return dataToolsService.exportData(params); | ||
| 136 | + } | ||
| 137 | +} |
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
| @@ -115,6 +115,10 @@ public class DataToolsProperties { | @@ -115,6 +115,10 @@ public class DataToolsProperties { | ||
| 115 | /** 路牌信息导出 */ | 115 | /** 路牌信息导出 */ |
| 116 | private String guideboardsDataoutputktr; | 116 | private String guideboardsDataoutputktr; |
| 117 | 117 | ||
| 118 | + @NotNull | ||
| 119 | + /** 用户登录日志信息导出 */ | ||
| 120 | + private String usersignDataoutputktr; | ||
| 121 | + | ||
| 118 | // TODO: | 122 | // TODO: |
| 119 | 123 | ||
| 120 | public String getFileuploadDir() { | 124 | public String getFileuploadDir() { |
| @@ -364,4 +368,11 @@ public class DataToolsProperties { | @@ -364,4 +368,11 @@ public class DataToolsProperties { | ||
| 364 | public void setTtinfodetailDatainputktr2version2(String ttinfodetailDatainputktr2version2) { | 368 | public void setTtinfodetailDatainputktr2version2(String ttinfodetailDatainputktr2version2) { |
| 365 | this.ttinfodetailDatainputktr2version2 = ttinfodetailDatainputktr2version2; | 369 | this.ttinfodetailDatainputktr2version2 = ttinfodetailDatainputktr2version2; |
| 366 | } | 370 | } |
| 371 | + public String getUsersignDataoutputktr() { | ||
| 372 | + return usersignDataoutputktr; | ||
| 373 | + } | ||
| 374 | + | ||
| 375 | + public void setUsersignDataoutputktr(String usersignDataoutputktr) { | ||
| 376 | + this.usersignDataoutputktr = usersignDataoutputktr; | ||
| 377 | + } | ||
| 367 | } | 378 | } |
src/main/resources/datatools/config-dev.properties
| @@ -76,7 +76,8 @@ datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutpu | @@ -76,7 +76,8 @@ datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutpu | ||
| 76 | # 路牌信息导出 | 76 | # 路牌信息导出 |
| 77 | datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr | 77 | datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr |
| 78 | 78 | ||
| 79 | - | 79 | +# 用户登录日志导出 |
| 80 | +datatools.usersign_dataoutputktr=/datatools/ktrs/userSignLogOutput.ktr | ||
| 80 | # TODO: | 81 | # TODO: |
| 81 | 82 | ||
| 82 | 83 |
src/main/resources/datatools/config-prod.properties
| @@ -77,5 +77,6 @@ datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutpu | @@ -77,5 +77,6 @@ datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutpu | ||
| 77 | # 路牌信息导出 | 77 | # 路牌信息导出 |
| 78 | datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr | 78 | datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr |
| 79 | 79 | ||
| 80 | - | 80 | +# 用户登录日志导出 |
| 81 | +datatools.usersign_dataoutputktr=/datatools/ktrs/userSignLogOutput.ktr | ||
| 81 | # TODO: | 82 | # TODO: |
src/main/resources/datatools/ktrs/userSignLogOutput.ktr
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<transformation> | ||
| 3 | + <info> | ||
| 4 | + <name>用户登录日志导出</name> | ||
| 5 | + <description/> | ||
| 6 | + <extended_description/> | ||
| 7 | + <trans_version/> | ||
| 8 | + <trans_type>Normal</trans_type> | ||
| 9 | + <trans_status>0</trans_status> | ||
| 10 | + <directory>/</directory> | ||
| 11 | + <parameters> | ||
| 12 | + <parameter> | ||
| 13 | + <name>QUERY</name> | ||
| 14 | + <default_value/> | ||
| 15 | + <description>查询</description> | ||
| 16 | + </parameter> | ||
| 17 | + <parameter> | ||
| 18 | + <name>filepath</name> | ||
| 19 | + <default_value>1=1</default_value> | ||
| 20 | + <description>excel文件路径</description> | ||
| 21 | + </parameter> | ||
| 22 | + </parameters> | ||
| 23 | + <log> | ||
| 24 | +<trans-log-table><connection/> | ||
| 25 | +<schema/> | ||
| 26 | +<table/> | ||
| 27 | +<size_limit_lines/> | ||
| 28 | +<interval/> | ||
| 29 | +<timeout_days/> | ||
| 30 | +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table> | ||
| 31 | +<perf-log-table><connection/> | ||
| 32 | +<schema/> | ||
| 33 | +<table/> | ||
| 34 | +<interval/> | ||
| 35 | +<timeout_days/> | ||
| 36 | +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table> | ||
| 37 | +<channel-log-table><connection/> | ||
| 38 | +<schema/> | ||
| 39 | +<table/> | ||
| 40 | +<timeout_days/> | ||
| 41 | +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table> | ||
| 42 | +<step-log-table><connection/> | ||
| 43 | +<schema/> | ||
| 44 | +<table/> | ||
| 45 | +<timeout_days/> | ||
| 46 | +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table> | ||
| 47 | +<metrics-log-table><connection/> | ||
| 48 | +<schema/> | ||
| 49 | +<table/> | ||
| 50 | +<timeout_days/> | ||
| 51 | +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table> | ||
| 52 | + </log> | ||
| 53 | + <maxdate> | ||
| 54 | + <connection/> | ||
| 55 | + <table/> | ||
| 56 | + <field/> | ||
| 57 | + <offset>0.0</offset> | ||
| 58 | + <maxdiff>0.0</maxdiff> | ||
| 59 | + </maxdate> | ||
| 60 | + <size_rowset>10000</size_rowset> | ||
| 61 | + <sleep_time_empty>50</sleep_time_empty> | ||
| 62 | + <sleep_time_full>50</sleep_time_full> | ||
| 63 | + <unique_connections>N</unique_connections> | ||
| 64 | + <feedback_shown>Y</feedback_shown> | ||
| 65 | + <feedback_size>50000</feedback_size> | ||
| 66 | + <using_thread_priorities>Y</using_thread_priorities> | ||
| 67 | + <shared_objects_file/> | ||
| 68 | + <capture_step_performance>N</capture_step_performance> | ||
| 69 | + <step_performance_capturing_delay>1000</step_performance_capturing_delay> | ||
| 70 | + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit> | ||
| 71 | + <dependencies> | ||
| 72 | + </dependencies> | ||
| 73 | + <partitionschemas> | ||
| 74 | + </partitionschemas> | ||
| 75 | + <slaveservers> | ||
| 76 | + </slaveservers> | ||
| 77 | + <clusterschemas> | ||
| 78 | + </clusterschemas> | ||
| 79 | + <created_user>-</created_user> | ||
| 80 | + <created_date>2020/07/30 13:32:25.920</created_date> | ||
| 81 | + <modified_user>-</modified_user> | ||
| 82 | + <modified_date>2020/07/30 13:32:25.920</modified_date> | ||
| 83 | + <key_for_session_key/> | ||
| 84 | + <is_key_private>N</is_key_private> | ||
| 85 | + </info> | ||
| 86 | + <notepads> | ||
| 87 | + </notepads> | ||
| 88 | + <connection> | ||
| 89 | + <name>192.168.168.1_jwgl_dw</name> | ||
| 90 | + <server>192.168.168.1</server> | ||
| 91 | + <type>ORACLE</type> | ||
| 92 | + <access>Native</access> | ||
| 93 | + <database>orcl</database> | ||
| 94 | + <port>1521</port> | ||
| 95 | + <username>jwgl_dw</username> | ||
| 96 | + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password> | ||
| 97 | + <servername/> | ||
| 98 | + <data_tablespace/> | ||
| 99 | + <index_tablespace/> | ||
| 100 | + <attributes> | ||
| 101 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 102 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 103 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 104 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 105 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 106 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 107 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 108 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 109 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 110 | + </attributes> | ||
| 111 | + </connection> | ||
| 112 | + <connection> | ||
| 113 | + <name>bus_control_variable</name> | ||
| 114 | + <server>${v_db_ip}</server> | ||
| 115 | + <type>MYSQL</type> | ||
| 116 | + <access>Native</access> | ||
| 117 | + <database>${v_db_dname}</database> | ||
| 118 | + <port>3306</port> | ||
| 119 | + <username>${v_db_uname}</username> | ||
| 120 | + <password>${v_db_pwd}</password> | ||
| 121 | + <servername/> | ||
| 122 | + <data_tablespace/> | ||
| 123 | + <index_tablespace/> | ||
| 124 | + <attributes> | ||
| 125 | + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute> | ||
| 126 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 127 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 128 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 129 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 130 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 131 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 132 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 133 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 134 | + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute> | ||
| 135 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 136 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 137 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 138 | + </attributes> | ||
| 139 | + </connection> | ||
| 140 | + <connection> | ||
| 141 | + <name>bus_control_公司_201</name> | ||
| 142 | + <server>localhost</server> | ||
| 143 | + <type>MYSQL</type> | ||
| 144 | + <access>Native</access> | ||
| 145 | + <database>control</database> | ||
| 146 | + <port>3306</port> | ||
| 147 | + <username>root</username> | ||
| 148 | + <password>Encrypted </password> | ||
| 149 | + <servername/> | ||
| 150 | + <data_tablespace/> | ||
| 151 | + <index_tablespace/> | ||
| 152 | + <attributes> | ||
| 153 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 154 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 155 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 156 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 157 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 158 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 159 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 160 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 161 | + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute> | ||
| 162 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 163 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 164 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 165 | + </attributes> | ||
| 166 | + </connection> | ||
| 167 | + <connection> | ||
| 168 | + <name>bus_control_本机</name> | ||
| 169 | + <server>localhost</server> | ||
| 170 | + <type>MYSQL</type> | ||
| 171 | + <access>Native</access> | ||
| 172 | + <database>control</database> | ||
| 173 | + <port>3306</port> | ||
| 174 | + <username>root</username> | ||
| 175 | + <password>Encrypted </password> | ||
| 176 | + <servername/> | ||
| 177 | + <data_tablespace/> | ||
| 178 | + <index_tablespace/> | ||
| 179 | + <attributes> | ||
| 180 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 181 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 182 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 183 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 184 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 185 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 186 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 187 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 188 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 189 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 190 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 191 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 192 | + </attributes> | ||
| 193 | + </connection> | ||
| 194 | + <connection> | ||
| 195 | + <name>JGJW_VM</name> | ||
| 196 | + <server>192.168.198.240</server> | ||
| 197 | + <type>ORACLE</type> | ||
| 198 | + <access>Native</access> | ||
| 199 | + <database>orcl</database> | ||
| 200 | + <port>1521</port> | ||
| 201 | + <username>jwgl</username> | ||
| 202 | + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password> | ||
| 203 | + <servername/> | ||
| 204 | + <data_tablespace/> | ||
| 205 | + <index_tablespace/> | ||
| 206 | + <attributes> | ||
| 207 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 208 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 209 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 210 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 211 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 212 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 213 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 214 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 215 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 216 | + </attributes> | ||
| 217 | + </connection> | ||
| 218 | + <connection> | ||
| 219 | + <name>NHJW_VM</name> | ||
| 220 | + <server>192.168.198.240</server> | ||
| 221 | + <type>ORACLE</type> | ||
| 222 | + <access>Native</access> | ||
| 223 | + <database>orcl</database> | ||
| 224 | + <port>1521</port> | ||
| 225 | + <username>nhjw</username> | ||
| 226 | + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d09aa5cd</password> | ||
| 227 | + <servername/> | ||
| 228 | + <data_tablespace/> | ||
| 229 | + <index_tablespace/> | ||
| 230 | + <attributes> | ||
| 231 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 232 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 233 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 234 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 235 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 236 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 237 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 238 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 239 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 240 | + </attributes> | ||
| 241 | + </connection> | ||
| 242 | + <connection> | ||
| 243 | + <name>PDGJ_VM</name> | ||
| 244 | + <server>192.168.198.240</server> | ||
| 245 | + <type>ORACLE</type> | ||
| 246 | + <access>Native</access> | ||
| 247 | + <database>orcl</database> | ||
| 248 | + <port>1521</port> | ||
| 249 | + <username>pdgj</username> | ||
| 250 | + <password>Encrypted 2be98afc86aa7f2e4cb79ce10ce96a8d0</password> | ||
| 251 | + <servername/> | ||
| 252 | + <data_tablespace/> | ||
| 253 | + <index_tablespace/> | ||
| 254 | + <attributes> | ||
| 255 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 256 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 257 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 258 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 259 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 260 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 261 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 262 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 263 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 264 | + </attributes> | ||
| 265 | + </connection> | ||
| 266 | + <connection> | ||
| 267 | + <name>SNJW_VM</name> | ||
| 268 | + <server>192.168.198.240</server> | ||
| 269 | + <type>ORACLE</type> | ||
| 270 | + <access>Native</access> | ||
| 271 | + <database>orcl</database> | ||
| 272 | + <port>1521</port> | ||
| 273 | + <username>snjw</username> | ||
| 274 | + <password>Encrypted 2be98afc86aa7f2e4cb79ce10cd9ca5cd</password> | ||
| 275 | + <servername/> | ||
| 276 | + <data_tablespace/> | ||
| 277 | + <index_tablespace/> | ||
| 278 | + <attributes> | ||
| 279 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 280 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 281 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 282 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 283 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 284 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 285 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 286 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 287 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 288 | + </attributes> | ||
| 289 | + </connection> | ||
| 290 | + <connection> | ||
| 291 | + <name>test_control(本机)</name> | ||
| 292 | + <server>127.0.0.1</server> | ||
| 293 | + <type>MYSQL</type> | ||
| 294 | + <access>Native</access> | ||
| 295 | + <database>test_control</database> | ||
| 296 | + <port>3306</port> | ||
| 297 | + <username>root</username> | ||
| 298 | + <password>Encrypted </password> | ||
| 299 | + <servername/> | ||
| 300 | + <data_tablespace/> | ||
| 301 | + <index_tablespace/> | ||
| 302 | + <attributes> | ||
| 303 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 304 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 305 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 306 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 307 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 308 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 309 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 310 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 311 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 312 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 313 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 314 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 315 | + </attributes> | ||
| 316 | + </connection> | ||
| 317 | + <connection> | ||
| 318 | + <name>xlab_mysql_youle</name> | ||
| 319 | + <server>101.231.124.8</server> | ||
| 320 | + <type>MYSQL</type> | ||
| 321 | + <access>Native</access> | ||
| 322 | + <database>xlab_youle</database> | ||
| 323 | + <port>45687</port> | ||
| 324 | + <username>xlab-youle</username> | ||
| 325 | + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password> | ||
| 326 | + <servername/> | ||
| 327 | + <data_tablespace/> | ||
| 328 | + <index_tablespace/> | ||
| 329 | + <attributes> | ||
| 330 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 331 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 332 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 333 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 334 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 335 | + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute> | ||
| 336 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 337 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 338 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 339 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 340 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 341 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 342 | + </attributes> | ||
| 343 | + </connection> | ||
| 344 | + <connection> | ||
| 345 | + <name>xlab_mysql_youle(本机)</name> | ||
| 346 | + <server>localhost</server> | ||
| 347 | + <type>MYSQL</type> | ||
| 348 | + <access>Native</access> | ||
| 349 | + <database>xlab_youle</database> | ||
| 350 | + <port>3306</port> | ||
| 351 | + <username>root</username> | ||
| 352 | + <password>Encrypted </password> | ||
| 353 | + <servername/> | ||
| 354 | + <data_tablespace/> | ||
| 355 | + <index_tablespace/> | ||
| 356 | + <attributes> | ||
| 357 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 358 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 359 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 360 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 361 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 362 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 363 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 364 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 365 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 366 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 367 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 368 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 369 | + </attributes> | ||
| 370 | + </connection> | ||
| 371 | + <connection> | ||
| 372 | + <name>xlab_youle</name> | ||
| 373 | + <server/> | ||
| 374 | + <type>MYSQL</type> | ||
| 375 | + <access>JNDI</access> | ||
| 376 | + <database>xlab_youle</database> | ||
| 377 | + <port>1521</port> | ||
| 378 | + <username/> | ||
| 379 | + <password>Encrypted </password> | ||
| 380 | + <servername/> | ||
| 381 | + <data_tablespace/> | ||
| 382 | + <index_tablespace/> | ||
| 383 | + <attributes> | ||
| 384 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 385 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 386 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 387 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 388 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 389 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 390 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 391 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 392 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 393 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 394 | + </attributes> | ||
| 395 | + </connection> | ||
| 396 | + <connection> | ||
| 397 | + <name>YGJW_VM</name> | ||
| 398 | + <server>192.168.198.240</server> | ||
| 399 | + <type>ORACLE</type> | ||
| 400 | + <access>Native</access> | ||
| 401 | + <database>orcl</database> | ||
| 402 | + <port>1521</port> | ||
| 403 | + <username>ygjw</username> | ||
| 404 | + <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password> | ||
| 405 | + <servername/> | ||
| 406 | + <data_tablespace/> | ||
| 407 | + <index_tablespace/> | ||
| 408 | + <attributes> | ||
| 409 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 410 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 411 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 412 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 413 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 414 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 415 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 416 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 417 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 418 | + </attributes> | ||
| 419 | + </connection> | ||
| 420 | + <connection> | ||
| 421 | + <name>公司jgjw</name> | ||
| 422 | + <server>192.168.168.1</server> | ||
| 423 | + <type>ORACLE</type> | ||
| 424 | + <access>Native</access> | ||
| 425 | + <database>orcl</database> | ||
| 426 | + <port>1521</port> | ||
| 427 | + <username>jwgl</username> | ||
| 428 | + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password> | ||
| 429 | + <servername/> | ||
| 430 | + <data_tablespace/> | ||
| 431 | + <index_tablespace/> | ||
| 432 | + <attributes> | ||
| 433 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 434 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 435 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 436 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 437 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 438 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 439 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 440 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 441 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 442 | + </attributes> | ||
| 443 | + </connection> | ||
| 444 | + <connection> | ||
| 445 | + <name>公司snjw</name> | ||
| 446 | + <server>192.168.168.1</server> | ||
| 447 | + <type>ORACLE</type> | ||
| 448 | + <access>Native</access> | ||
| 449 | + <database>orcl</database> | ||
| 450 | + <port>1521</port> | ||
| 451 | + <username>snjw</username> | ||
| 452 | + <password>Encrypted 2be98afc86aa7f2e4cb79ce10cd9ca5cd</password> | ||
| 453 | + <servername/> | ||
| 454 | + <data_tablespace/> | ||
| 455 | + <index_tablespace/> | ||
| 456 | + <attributes> | ||
| 457 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 458 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 459 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 460 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 461 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 462 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 463 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 464 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 465 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 466 | + </attributes> | ||
| 467 | + </connection> | ||
| 468 | + <connection> | ||
| 469 | + <name>公司ygjw</name> | ||
| 470 | + <server>192.168.168.1</server> | ||
| 471 | + <type>ORACLE</type> | ||
| 472 | + <access>Native</access> | ||
| 473 | + <database>orcl</database> | ||
| 474 | + <port>1521</port> | ||
| 475 | + <username>ygjw</username> | ||
| 476 | + <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password> | ||
| 477 | + <servername/> | ||
| 478 | + <data_tablespace/> | ||
| 479 | + <index_tablespace/> | ||
| 480 | + <attributes> | ||
| 481 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 482 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 483 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 484 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 485 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 486 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 487 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 488 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 489 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 490 | + </attributes> | ||
| 491 | + </connection> | ||
| 492 | + <order> | ||
| 493 | + <hop> <from>用户登录日志输入</from><to>处理日期</to><enabled>Y</enabled> </hop> | ||
| 494 | + <hop> <from>处理日期</from><to>过滤日期为空</to><enabled>Y</enabled> </hop> | ||
| 495 | + <hop> <from>过滤日期为空</from><to>排序记录</to><enabled>Y</enabled> </hop> | ||
| 496 | + <hop> <from>排序记录</from><to>字段转换</to><enabled>Y</enabled> </hop> | ||
| 497 | + <hop> <from>字段转换</from><to>字段选择</to><enabled>Y</enabled> </hop> | ||
| 498 | + <hop> <from>字段选择</from><to>Excel输出</to><enabled>Y</enabled> </hop> | ||
| 499 | + </order> | ||
| 500 | + <step> | ||
| 501 | + <name>用户登录日志输入</name> | ||
| 502 | + <type>TableInput</type> | ||
| 503 | + <description/> | ||
| 504 | + <distribute>Y</distribute> | ||
| 505 | + <custom_distribution/> | ||
| 506 | + <copies>1</copies> | ||
| 507 | + <partitioning> | ||
| 508 | + <method>none</method> | ||
| 509 | + <schema_name/> | ||
| 510 | + </partitioning> | ||
| 511 | + <connection>bus_control_variable</connection> | ||
| 512 | + <sql>select * from logger_user_sign
where ${QUERY}</sql> | ||
| 513 | + <limit>0</limit> | ||
| 514 | + <lookup/> | ||
| 515 | + <execute_each_row>N</execute_each_row> | ||
| 516 | + <variables_active>Y</variables_active> | ||
| 517 | + <lazy_conversion_active>N</lazy_conversion_active> | ||
| 518 | + <cluster_schema/> | ||
| 519 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 520 | + <xloc>111</xloc> | ||
| 521 | + <yloc>60</yloc> | ||
| 522 | + <draw>Y</draw> | ||
| 523 | + </GUI> | ||
| 524 | + </step> | ||
| 525 | + | ||
| 526 | + <step> | ||
| 527 | + <name>处理日期</name> | ||
| 528 | + <type>ScriptValueMod</type> | ||
| 529 | + <description/> | ||
| 530 | + <distribute>Y</distribute> | ||
| 531 | + <custom_distribution/> | ||
| 532 | + <copies>1</copies> | ||
| 533 | + <partitioning> | ||
| 534 | + <method>none</method> | ||
| 535 | + <schema_name/> | ||
| 536 | + </partitioning> | ||
| 537 | + <compatible>N</compatible> | ||
| 538 | + <optimizationLevel>9</optimizationLevel> | ||
| 539 | + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 540 | + <jsScript_name>Script 1</jsScript_name> | ||
| 541 | + <jsScript_script>//Script here

/*
 计算日期,以登录时间为主,没有选择登出时间
*/
var _date_ = null;
if (log_in_date != null) {
 _date_ = log_in_date;
} else if (log_out_date != null) {
 _date_ = log_out_date;
}</jsScript_script> | ||
| 542 | + </jsScript> </jsScripts> <fields> <field> <name>_date_</name> | ||
| 543 | + <rename>_date_</rename> | ||
| 544 | + <type>Date</type> | ||
| 545 | + <length>-1</length> | ||
| 546 | + <precision>-1</precision> | ||
| 547 | + <replace>N</replace> | ||
| 548 | + </field> </fields> <cluster_schema/> | ||
| 549 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 550 | + <xloc>236</xloc> | ||
| 551 | + <yloc>60</yloc> | ||
| 552 | + <draw>Y</draw> | ||
| 553 | + </GUI> | ||
| 554 | + </step> | ||
| 555 | + | ||
| 556 | + <step> | ||
| 557 | + <name>过滤日期为空</name> | ||
| 558 | + <type>FilterRows</type> | ||
| 559 | + <description/> | ||
| 560 | + <distribute>Y</distribute> | ||
| 561 | + <custom_distribution/> | ||
| 562 | + <copies>1</copies> | ||
| 563 | + <partitioning> | ||
| 564 | + <method>none</method> | ||
| 565 | + <schema_name/> | ||
| 566 | + </partitioning> | ||
| 567 | +<send_true_to/> | ||
| 568 | +<send_false_to/> | ||
| 569 | + <compare> | ||
| 570 | +<condition> | ||
| 571 | + <negated>N</negated> | ||
| 572 | + <leftvalue>_date_</leftvalue> | ||
| 573 | + <function>IS NOT NULL</function> | ||
| 574 | + <rightvalue/> | ||
| 575 | + </condition> | ||
| 576 | + </compare> | ||
| 577 | + <cluster_schema/> | ||
| 578 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 579 | + <xloc>382</xloc> | ||
| 580 | + <yloc>61</yloc> | ||
| 581 | + <draw>Y</draw> | ||
| 582 | + </GUI> | ||
| 583 | + </step> | ||
| 584 | + | ||
| 585 | + <step> | ||
| 586 | + <name>排序记录</name> | ||
| 587 | + <type>SortRows</type> | ||
| 588 | + <description/> | ||
| 589 | + <distribute>Y</distribute> | ||
| 590 | + <custom_distribution/> | ||
| 591 | + <copies>1</copies> | ||
| 592 | + <partitioning> | ||
| 593 | + <method>none</method> | ||
| 594 | + <schema_name/> | ||
| 595 | + </partitioning> | ||
| 596 | + <directory>%%java.io.tmpdir%%</directory> | ||
| 597 | + <prefix>out</prefix> | ||
| 598 | + <sort_size>1000000</sort_size> | ||
| 599 | + <free_memory/> | ||
| 600 | + <compress>N</compress> | ||
| 601 | + <compress_variable/> | ||
| 602 | + <unique_rows>N</unique_rows> | ||
| 603 | + <fields> | ||
| 604 | + <field> | ||
| 605 | + <name>_date_</name> | ||
| 606 | + <ascending>Y</ascending> | ||
| 607 | + <case_sensitive>N</case_sensitive> | ||
| 608 | + <presorted>N</presorted> | ||
| 609 | + </field> | ||
| 610 | + </fields> | ||
| 611 | + <cluster_schema/> | ||
| 612 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 613 | + <xloc>511</xloc> | ||
| 614 | + <yloc>60</yloc> | ||
| 615 | + <draw>Y</draw> | ||
| 616 | + </GUI> | ||
| 617 | + </step> | ||
| 618 | + | ||
| 619 | + <step> | ||
| 620 | + <name>字段转换</name> | ||
| 621 | + <type>SelectValues</type> | ||
| 622 | + <description/> | ||
| 623 | + <distribute>Y</distribute> | ||
| 624 | + <custom_distribution/> | ||
| 625 | + <copies>1</copies> | ||
| 626 | + <partitioning> | ||
| 627 | + <method>none</method> | ||
| 628 | + <schema_name/> | ||
| 629 | + </partitioning> | ||
| 630 | + <fields> <select_unspecified>N</select_unspecified> | ||
| 631 | + <meta> <name>_date_</name> | ||
| 632 | + <rename>日期</rename> | ||
| 633 | + <type>String</type> | ||
| 634 | + <length>-2</length> | ||
| 635 | + <precision>-2</precision> | ||
| 636 | + <conversion_mask>yyyy/MM/dd</conversion_mask> | ||
| 637 | + <date_format_lenient>false</date_format_lenient> | ||
| 638 | + <date_format_locale/> | ||
| 639 | + <date_format_timezone/> | ||
| 640 | + <lenient_string_to_number>false</lenient_string_to_number> | ||
| 641 | + <encoding/> | ||
| 642 | + <decimal_symbol/> | ||
| 643 | + <grouping_symbol/> | ||
| 644 | + <currency_symbol/> | ||
| 645 | + <storage_type/> | ||
| 646 | + </meta> <meta> <name>log_name</name> | ||
| 647 | + <rename>账户名称</rename> | ||
| 648 | + <type>String</type> | ||
| 649 | + <length>-2</length> | ||
| 650 | + <precision>-2</precision> | ||
| 651 | + <conversion_mask/> | ||
| 652 | + <date_format_lenient>false</date_format_lenient> | ||
| 653 | + <date_format_locale/> | ||
| 654 | + <date_format_timezone/> | ||
| 655 | + <lenient_string_to_number>false</lenient_string_to_number> | ||
| 656 | + <encoding/> | ||
| 657 | + <decimal_symbol/> | ||
| 658 | + <grouping_symbol/> | ||
| 659 | + <currency_symbol/> | ||
| 660 | + <storage_type/> | ||
| 661 | + </meta> <meta> <name>real_name</name> | ||
| 662 | + <rename>姓名</rename> | ||
| 663 | + <type>String</type> | ||
| 664 | + <length>-2</length> | ||
| 665 | + <precision>-2</precision> | ||
| 666 | + <conversion_mask/> | ||
| 667 | + <date_format_lenient>false</date_format_lenient> | ||
| 668 | + <date_format_locale/> | ||
| 669 | + <date_format_timezone/> | ||
| 670 | + <lenient_string_to_number>false</lenient_string_to_number> | ||
| 671 | + <encoding/> | ||
| 672 | + <decimal_symbol/> | ||
| 673 | + <grouping_symbol/> | ||
| 674 | + <currency_symbol/> | ||
| 675 | + <storage_type/> | ||
| 676 | + </meta> <meta> <name>log_in_date_time</name> | ||
| 677 | + <rename>登入时间</rename> | ||
| 678 | + <type>String</type> | ||
| 679 | + <length>-2</length> | ||
| 680 | + <precision>-2</precision> | ||
| 681 | + <conversion_mask>yyyy/MM/dd HH:mm:ss</conversion_mask> | ||
| 682 | + <date_format_lenient>false</date_format_lenient> | ||
| 683 | + <date_format_locale/> | ||
| 684 | + <date_format_timezone/> | ||
| 685 | + <lenient_string_to_number>false</lenient_string_to_number> | ||
| 686 | + <encoding/> | ||
| 687 | + <decimal_symbol/> | ||
| 688 | + <grouping_symbol/> | ||
| 689 | + <currency_symbol/> | ||
| 690 | + <storage_type/> | ||
| 691 | + </meta> <meta> <name>log_out_date_time</name> | ||
| 692 | + <rename>登出时间</rename> | ||
| 693 | + <type>String</type> | ||
| 694 | + <length>-2</length> | ||
| 695 | + <precision>-2</precision> | ||
| 696 | + <conversion_mask>yyyy/MM/dd HH:mm:ss</conversion_mask> | ||
| 697 | + <date_format_lenient>false</date_format_lenient> | ||
| 698 | + <date_format_locale/> | ||
| 699 | + <date_format_timezone/> | ||
| 700 | + <lenient_string_to_number>false</lenient_string_to_number> | ||
| 701 | + <encoding/> | ||
| 702 | + <decimal_symbol/> | ||
| 703 | + <grouping_symbol/> | ||
| 704 | + <currency_symbol/> | ||
| 705 | + <storage_type/> | ||
| 706 | + </meta> </fields> <cluster_schema/> | ||
| 707 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 708 | + <xloc>631</xloc> | ||
| 709 | + <yloc>60</yloc> | ||
| 710 | + <draw>Y</draw> | ||
| 711 | + </GUI> | ||
| 712 | + </step> | ||
| 713 | + | ||
| 714 | + <step> | ||
| 715 | + <name>字段选择</name> | ||
| 716 | + <type>SelectValues</type> | ||
| 717 | + <description/> | ||
| 718 | + <distribute>Y</distribute> | ||
| 719 | + <custom_distribution/> | ||
| 720 | + <copies>1</copies> | ||
| 721 | + <partitioning> | ||
| 722 | + <method>none</method> | ||
| 723 | + <schema_name/> | ||
| 724 | + </partitioning> | ||
| 725 | + <fields> <field> <name>日期</name> | ||
| 726 | + <rename/> | ||
| 727 | + <length>-2</length> | ||
| 728 | + <precision>-2</precision> | ||
| 729 | + </field> <field> <name>账户名称</name> | ||
| 730 | + <rename/> | ||
| 731 | + <length>-2</length> | ||
| 732 | + <precision>-2</precision> | ||
| 733 | + </field> <field> <name>姓名</name> | ||
| 734 | + <rename/> | ||
| 735 | + <length>-2</length> | ||
| 736 | + <precision>-2</precision> | ||
| 737 | + </field> <field> <name>登入时间</name> | ||
| 738 | + <rename/> | ||
| 739 | + <length>-2</length> | ||
| 740 | + <precision>-2</precision> | ||
| 741 | + </field> <field> <name>登出时间</name> | ||
| 742 | + <rename/> | ||
| 743 | + <length>-2</length> | ||
| 744 | + <precision>-2</precision> | ||
| 745 | + </field> <select_unspecified>N</select_unspecified> | ||
| 746 | + </fields> <cluster_schema/> | ||
| 747 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 748 | + <xloc>761</xloc> | ||
| 749 | + <yloc>60</yloc> | ||
| 750 | + <draw>Y</draw> | ||
| 751 | + </GUI> | ||
| 752 | + </step> | ||
| 753 | + | ||
| 754 | + <step> | ||
| 755 | + <name>Excel输出</name> | ||
| 756 | + <type>ExcelOutput</type> | ||
| 757 | + <description/> | ||
| 758 | + <distribute>Y</distribute> | ||
| 759 | + <custom_distribution/> | ||
| 760 | + <copies>1</copies> | ||
| 761 | + <partitioning> | ||
| 762 | + <method>none</method> | ||
| 763 | + <schema_name/> | ||
| 764 | + </partitioning> | ||
| 765 | + <header>Y</header> | ||
| 766 | + <footer>N</footer> | ||
| 767 | + <encoding/> | ||
| 768 | + <append>N</append> | ||
| 769 | + <add_to_result_filenames>Y</add_to_result_filenames> | ||
| 770 | + <file> | ||
| 771 | + <name>${filepath}</name> | ||
| 772 | + <extention>xls</extention> | ||
| 773 | + <do_not_open_newfile_init>N</do_not_open_newfile_init> | ||
| 774 | + <create_parent_folder>N</create_parent_folder> | ||
| 775 | + <split>N</split> | ||
| 776 | + <add_date>N</add_date> | ||
| 777 | + <add_time>N</add_time> | ||
| 778 | + <SpecifyFormat>N</SpecifyFormat> | ||
| 779 | + <date_time_format/> | ||
| 780 | + <sheetname>Sheet1</sheetname> | ||
| 781 | + <autosizecolums>N</autosizecolums> | ||
| 782 | + <nullisblank>N</nullisblank> | ||
| 783 | + <protect_sheet>N</protect_sheet> | ||
| 784 | + <password>Encrypted </password> | ||
| 785 | + <splitevery>0</splitevery> | ||
| 786 | + <usetempfiles>N</usetempfiles> | ||
| 787 | + <tempdirectory/> | ||
| 788 | + </file> | ||
| 789 | + <template> | ||
| 790 | + <enabled>N</enabled> | ||
| 791 | + <append>N</append> | ||
| 792 | + <filename>template.xls</filename> | ||
| 793 | + </template> | ||
| 794 | + <fields> | ||
| 795 | + <field> | ||
| 796 | + <name>日期</name> | ||
| 797 | + <type>String</type> | ||
| 798 | + <format/> | ||
| 799 | + </field> | ||
| 800 | + <field> | ||
| 801 | + <name>账户名称</name> | ||
| 802 | + <type>String</type> | ||
| 803 | + <format/> | ||
| 804 | + </field> | ||
| 805 | + <field> | ||
| 806 | + <name>姓名</name> | ||
| 807 | + <type>String</type> | ||
| 808 | + <format/> | ||
| 809 | + </field> | ||
| 810 | + <field> | ||
| 811 | + <name>登入时间</name> | ||
| 812 | + <type>String</type> | ||
| 813 | + <format/> | ||
| 814 | + </field> | ||
| 815 | + <field> | ||
| 816 | + <name>登出时间</name> | ||
| 817 | + <type>String</type> | ||
| 818 | + <format/> | ||
| 819 | + </field> | ||
| 820 | + </fields> | ||
| 821 | + <custom> | ||
| 822 | + <header_font_name>arial</header_font_name> | ||
| 823 | + <header_font_size>10</header_font_size> | ||
| 824 | + <header_font_bold>N</header_font_bold> | ||
| 825 | + <header_font_italic>N</header_font_italic> | ||
| 826 | + <header_font_underline>no</header_font_underline> | ||
| 827 | + <header_font_orientation>horizontal</header_font_orientation> | ||
| 828 | + <header_font_color>black</header_font_color> | ||
| 829 | + <header_background_color>none</header_background_color> | ||
| 830 | + <header_row_height>255</header_row_height> | ||
| 831 | + <header_alignment>left</header_alignment> | ||
| 832 | + <header_image/> | ||
| 833 | + <row_font_name>arial</row_font_name> | ||
| 834 | + <row_font_size>10</row_font_size> | ||
| 835 | + <row_font_color>black</row_font_color> | ||
| 836 | + <row_background_color>none</row_background_color> | ||
| 837 | + </custom> | ||
| 838 | + <cluster_schema/> | ||
| 839 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 840 | + <xloc>766</xloc> | ||
| 841 | + <yloc>158</yloc> | ||
| 842 | + <draw>Y</draw> | ||
| 843 | + </GUI> | ||
| 844 | + </step> | ||
| 845 | + | ||
| 846 | + <step_error_handling> | ||
| 847 | + </step_error_handling> | ||
| 848 | + <slave-step-copy-partition-distribution> | ||
| 849 | +</slave-step-copy-partition-distribution> | ||
| 850 | + <slave_transformation>N</slave_transformation> | ||
| 851 | + | ||
| 852 | +</transformation> |
src/main/resources/static/pages/forms/statement/css/lbStatuAnaly.css
0 → 100644
| 1 | + | ||
| 2 | +.table-bordered { | ||
| 3 | + border: 1px solid; } | ||
| 4 | +.table-bordered > thead > tr > th, | ||
| 5 | +.table-bordered > thead > tr > td, | ||
| 6 | +.table-bordered > tbody > tr > th, | ||
| 7 | +.table-bordered > tbody > tr > td, | ||
| 8 | +.table-bordered > tfoot > tr > th, | ||
| 9 | +.table-bordered > tfoot > tr > td { | ||
| 10 | + border: 1px solid; } | ||
| 11 | +.table-bordered > thead > tr > th, | ||
| 12 | +.table-bordered > thead > tr > td { | ||
| 13 | + border-bottom-width: 2px; } | ||
| 14 | + | ||
| 15 | +.table > tbody + tbody { | ||
| 16 | + border-top: 1px solid; } | ||
| 17 | + | ||
| 18 | +#right_div td{ | ||
| 19 | + min-width: 80px; | ||
| 20 | + max-width: 80px; | ||
| 21 | + width: 80px; | ||
| 22 | +} | ||
| 23 | +#left_div{ | ||
| 24 | + width:200px; | ||
| 25 | + float: left; | ||
| 26 | +} | ||
| 27 | +#left_div1{ | ||
| 28 | + width: 100%; | ||
| 29 | +} | ||
| 30 | +#left_div2{ | ||
| 31 | + width: 100%; | ||
| 32 | + height: 10px; | ||
| 33 | + overflow: hidden; | ||
| 34 | +} | ||
| 35 | +#right_div{ | ||
| 36 | + width: 100%; | ||
| 37 | + float: left; | ||
| 38 | + margin-top: 15px; | ||
| 39 | +} | ||
| 40 | +#staticfw{ | ||
| 41 | + width: 100%; | ||
| 42 | + overflow: hidden; | ||
| 43 | +} | ||
| 44 | +#right_divx{ | ||
| 45 | + width:100%; | ||
| 46 | +} | ||
| 47 | +#right_div2{ | ||
| 48 | + width:101%; | ||
| 49 | + overflow: auto; | ||
| 50 | + margin-top: -20px; | ||
| 51 | +} | ||
| 52 | + | ||
| 53 | +#staticfw::-webkit-scrollbar { | ||
| 54 | + display:none | ||
| 55 | +} | ||
| 56 | + | ||
| 57 | +#right_divy td{ | ||
| 58 | + min-width: 80px; | ||
| 59 | + max-width: 80px; | ||
| 60 | + width: 80px; | ||
| 61 | +} | ||
| 62 | +#left_divy{ | ||
| 63 | + width:200px; | ||
| 64 | + float: left; | ||
| 65 | +} | ||
| 66 | +#left_div1y{ | ||
| 67 | + width: 100%; | ||
| 68 | +} | ||
| 69 | +#left_div2y{ | ||
| 70 | + width: 100%; | ||
| 71 | + height: 10px; | ||
| 72 | + overflow: hidden; | ||
| 73 | +} | ||
| 74 | +#right_divy{ | ||
| 75 | + width: 100%; | ||
| 76 | + float: left; | ||
| 77 | + margin-top: 15px; | ||
| 78 | +} | ||
| 79 | +#staticfwy{ | ||
| 80 | + width: 100%; | ||
| 81 | + overflow: hidden; | ||
| 82 | + | ||
| 83 | +} | ||
| 84 | + | ||
| 85 | +#right_divxy{ | ||
| 86 | + width:100%; | ||
| 87 | +} | ||
| 88 | +#right_div2y{ | ||
| 89 | + width:101%; | ||
| 90 | + height:540px; | ||
| 91 | + overflow: auto; | ||
| 92 | + margin-top: -65px; | ||
| 93 | +} | ||
| 94 | +#right_div2::-webkit-scrollbar { | ||
| 95 | + display:none | ||
| 96 | +} | ||
| 97 | +.tk th{ | ||
| 98 | + min-width: 80px; | ||
| 99 | + max-width: 80px; | ||
| 100 | + width:80px; | ||
| 101 | +} |
src/main/resources/static/pages/forms/statement/css/scheduleDaily.css
0 → 100644
| 1 | + | ||
| 2 | +.table-bordered { | ||
| 3 | + border: 1px solid; } | ||
| 4 | +.table-bordered > thead > tr > th, | ||
| 5 | +.table-bordered > thead > tr > td, | ||
| 6 | +.table-bordered > tbody > tr > th, | ||
| 7 | +.table-bordered > tbody > tr > td, | ||
| 8 | +.table-bordered > tfoot > tr > th, | ||
| 9 | +.table-bordered > tfoot > tr > td { | ||
| 10 | + border: 1px solid; } | ||
| 11 | +.table-bordered > thead > tr > th, | ||
| 12 | +.table-bordered > thead > tr > td { | ||
| 13 | + border-bottom-width: 2px; } | ||
| 14 | + | ||
| 15 | +.table > tbody + tbody { | ||
| 16 | + border-top: 1px solid; } | ||
| 17 | + | ||
| 18 | + | ||
| 19 | +.kfc td{ | ||
| 20 | + min-width: 140px; | ||
| 21 | + max-width: 140px; | ||
| 22 | + width: 140px; | ||
| 23 | +} | ||
| 24 | + | ||
| 25 | +#right_div td{ | ||
| 26 | + min-width: 140px; | ||
| 27 | + max-width: 140px; | ||
| 28 | + width: 140px; | ||
| 29 | +} | ||
| 30 | +#left_div{ | ||
| 31 | + width:200px; | ||
| 32 | + float: left; | ||
| 33 | +} | ||
| 34 | +#left_div1{ | ||
| 35 | + width: 100%; | ||
| 36 | +} | ||
| 37 | +#left_div2{ | ||
| 38 | + width: 100%; | ||
| 39 | + height: 10px; | ||
| 40 | + overflow: hidden; | ||
| 41 | +} | ||
| 42 | +#right_div{ | ||
| 43 | + width: 100%; | ||
| 44 | + float: left; | ||
| 45 | + margin-top: 15px; | ||
| 46 | +} | ||
| 47 | +#staticfw{ | ||
| 48 | + width: 100%; | ||
| 49 | + overflow: hidden; | ||
| 50 | +} | ||
| 51 | +#right_divx{ | ||
| 52 | + width:100%; | ||
| 53 | +} | ||
| 54 | +#right_div2{ | ||
| 55 | + width:101%; | ||
| 56 | + overflow: auto; | ||
| 57 | + margin-top: -65px; | ||
| 58 | +} | ||
| 59 | + | ||
| 60 | +#staticfw::-webkit-scrollbar { | ||
| 61 | + display:none | ||
| 62 | +} | ||
| 63 | + | ||
| 64 | +#right_divy td{ | ||
| 65 | + min-width: 140px; | ||
| 66 | + max-width: 140px; | ||
| 67 | + width: 140px; | ||
| 68 | +} | ||
| 69 | +#left_divy{ | ||
| 70 | + width:200px; | ||
| 71 | + float: left; | ||
| 72 | +} | ||
| 73 | +#left_div1y{ | ||
| 74 | + width: 100%; | ||
| 75 | +} | ||
| 76 | +#left_div2y{ | ||
| 77 | + width: 100%; | ||
| 78 | + height: 10px; | ||
| 79 | + overflow: hidden; | ||
| 80 | +} | ||
| 81 | +#right_divy{ | ||
| 82 | + width: 100%; | ||
| 83 | + float: left; | ||
| 84 | + height: 600px; | ||
| 85 | + margin-top: 15px; | ||
| 86 | +} | ||
| 87 | +#staticfwy{ | ||
| 88 | + width: 100%; | ||
| 89 | + overflow: hidden; | ||
| 90 | + | ||
| 91 | +} | ||
| 92 | +#right_divxy{ | ||
| 93 | + width:100%; | ||
| 94 | +} | ||
| 95 | +#right_div2y{ | ||
| 96 | + width:101%; | ||
| 97 | + height:500px; | ||
| 98 | + overflow: auto; | ||
| 99 | + margin-top: -20px; | ||
| 100 | +} | ||
| 101 | +#staticfwy::-webkit-scrollbar { | ||
| 102 | + display:none | ||
| 103 | +} | ||
| 104 | +#ddrbBody tr> td >span{ | ||
| 105 | + word-break: keep-all;white-space:nowrap; | ||
| 106 | +} |
src/main/resources/static/pages/forms/statement/css/statisticsDaily.css
0 → 100644
| 1 | + | ||
| 2 | + .table-bordered { | ||
| 3 | + border: 1px solid; } | ||
| 4 | +.table-bordered > thead > tr > th, | ||
| 5 | +.table-bordered > thead > tr > td, | ||
| 6 | +.table-bordered > tbody > tr > th, | ||
| 7 | +.table-bordered > tbody > tr > td, | ||
| 8 | +.table-bordered > tfoot > tr > th, | ||
| 9 | +.table-bordered > tfoot > tr > td { | ||
| 10 | + border: 1px solid; } | ||
| 11 | +.table-bordered > thead > tr > th, | ||
| 12 | +.table-bordered > thead > tr > td { | ||
| 13 | + border-bottom-width: 2px; } | ||
| 14 | + | ||
| 15 | +.table > tbody + tbody { | ||
| 16 | + border-top: 1px solid; } | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | +#right_div td{ | ||
| 21 | + min-width: 80px; | ||
| 22 | + max-width: 80px; | ||
| 23 | + width: 80px; | ||
| 24 | +} | ||
| 25 | +#left_div{ | ||
| 26 | + width:200px; | ||
| 27 | + float: left; | ||
| 28 | +} | ||
| 29 | +#left_div1{ | ||
| 30 | + width: 100%; | ||
| 31 | +} | ||
| 32 | +#left_div2{ | ||
| 33 | + width: 100%; | ||
| 34 | + height: 10px; | ||
| 35 | + overflow: hidden; | ||
| 36 | +} | ||
| 37 | +#right_div{ | ||
| 38 | + width: 100%; | ||
| 39 | + float: left; | ||
| 40 | + margin-top: 15px; | ||
| 41 | +} | ||
| 42 | +#staticfw{ | ||
| 43 | + width: 100%; | ||
| 44 | + overflow: hidden; | ||
| 45 | +} | ||
| 46 | +#right_divx{ | ||
| 47 | + width:100%; | ||
| 48 | +} | ||
| 49 | +#right_div2{ | ||
| 50 | + width:101%; | ||
| 51 | + overflow: auto; | ||
| 52 | + margin-top: -65px; | ||
| 53 | +} | ||
| 54 | + | ||
| 55 | +#staticfw::-webkit-scrollbar { | ||
| 56 | + display:none | ||
| 57 | +} | ||
| 58 | + | ||
| 59 | +#right_divy td{ | ||
| 60 | + min-width: 80px; | ||
| 61 | + max-width: 80px; | ||
| 62 | + width: 80px; | ||
| 63 | +} | ||
| 64 | +#left_divy{ | ||
| 65 | + width:200px; | ||
| 66 | + float: left; | ||
| 67 | +} | ||
| 68 | +#left_div1y{ | ||
| 69 | + width: 100%; | ||
| 70 | +} | ||
| 71 | +#left_div2y{ | ||
| 72 | + width: 100%; | ||
| 73 | + height: 10px; | ||
| 74 | + overflow: hidden; | ||
| 75 | +} | ||
| 76 | +#right_divy{ | ||
| 77 | + width: 100%; | ||
| 78 | + float: left; | ||
| 79 | + margin-top: 15px; | ||
| 80 | +} | ||
| 81 | +#staticfwy{ | ||
| 82 | + width: 100%; | ||
| 83 | + overflow: hidden; | ||
| 84 | + | ||
| 85 | +} | ||
| 86 | + | ||
| 87 | +#right_divxy{ | ||
| 88 | + width:100%; | ||
| 89 | +} | ||
| 90 | +#right_div2y{ | ||
| 91 | + width:101%; | ||
| 92 | + height:500px; | ||
| 93 | + overflow: auto; | ||
| 94 | + margin-top: -20px; | ||
| 95 | +} | ||
| 96 | +#staticfwy::-webkit-scrollbar { | ||
| 97 | + display:none | ||
| 98 | +} |
src/main/resources/static/pages/forms/statement/firstAndLastBus.html
| @@ -15,6 +15,32 @@ | @@ -15,6 +15,32 @@ | ||
| 15 | 15 | ||
| 16 | .table > tbody + tbody { | 16 | .table > tbody + tbody { |
| 17 | border-top: 1px solid; } | 17 | border-top: 1px solid; } |
| 18 | + | ||
| 19 | + .table-body{width:100%; height:94vh;overflow-y:scroll;} | ||
| 20 | + .table-head table,.table-body table{width:100%;} | ||
| 21 | + .table-container{ | ||
| 22 | + overflow-y:scroll;height: 540px; width: 100%; | ||
| 23 | + } | ||
| 24 | + .kwy td{ | ||
| 25 | + min-width: 80px; | ||
| 26 | + max-width: 80px; | ||
| 27 | + width: 80px; | ||
| 28 | + } | ||
| 29 | + .kyt th{ | ||
| 30 | + min-width: 80px; | ||
| 31 | + max-width: 80px; | ||
| 32 | + width: 80px; | ||
| 33 | + } | ||
| 34 | + .kw{ | ||
| 35 | + width: 98%; | ||
| 36 | + margin-top: 10px; | ||
| 37 | + overflow:auto; | ||
| 38 | + min-width: 600px | ||
| 39 | + } | ||
| 40 | + .kwy{ | ||
| 41 | + margin-top:-20px; overflow:auto;min-width: 906px ;width: 99% | ||
| 42 | + } | ||
| 43 | + | ||
| 18 | </style> | 44 | </style> |
| 19 | 45 | ||
| 20 | <div class="page-head"> | 46 | <div class="page-head"> |
| @@ -60,20 +86,20 @@ | @@ -60,20 +86,20 @@ | ||
| 60 | </form> | 86 | </form> |
| 61 | </div> | 87 | </div> |
| 62 | <div class="portlet-body"> | 88 | <div class="portlet-body"> |
| 63 | - <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px"> | ||
| 64 | - <table class="table table-bordered table-hover table-checkable" id="forms"> | 89 | + <div class="kw" style="margin-top: 10px;overflow:auto;min-width: 906px"> |
| 90 | + <table class="table table-bordered table-hover table-checkable" id=""> | ||
| 65 | <thead> | 91 | <thead> |
| 66 | <tr class="hidden"> | 92 | <tr class="hidden"> |
| 67 | - <th rowspan="2">日期</th> | ||
| 68 | - <th rowspan="2">公司</th> | ||
| 69 | - <th rowspan="2">分公司</th> | ||
| 70 | - <th rowspan="2">线路</th> | 93 | + <th rowspan="2" style="min-width: 80px;max-width: 80px;width: 80px">日期</th> |
| 94 | + <th rowspan="2" style="min-width: 80px;max-width: 80px;width: 80px">公司</th> | ||
| 95 | + <th rowspan="2" style="min-width: 80px;max-width: 80px;width: 80px">分公司</th> | ||
| 96 | + <th rowspan="2" style="min-width: 80px;max-width: 80px;width: 80px">线路</th> | ||
| 71 | <th colspan="4">上行首发</th> | 97 | <th colspan="4">上行首发</th> |
| 72 | <th colspan="4">上行末发</th> | 98 | <th colspan="4">上行末发</th> |
| 73 | <th colspan="4">下行首发</th> | 99 | <th colspan="4">下行首发</th> |
| 74 | <th colspan="4">下行末发</th> | 100 | <th colspan="4">下行末发</th> |
| 75 | </tr> | 101 | </tr> |
| 76 | - <tr class="hidden"> | 102 | + <tr class="hidden kyt"> |
| 77 | <th style="display: none;"></th> | 103 | <th style="display: none;"></th> |
| 78 | <th>站点</th> | 104 | <th>站点</th> |
| 79 | <th>计发</th> | 105 | <th>计发</th> |
| @@ -93,6 +119,11 @@ | @@ -93,6 +119,11 @@ | ||
| 93 | <th>快慢</th> | 119 | <th>快慢</th> |
| 94 | </tr> | 120 | </tr> |
| 95 | </thead> | 121 | </thead> |
| 122 | + | ||
| 123 | + </table> | ||
| 124 | + </div> | ||
| 125 | + <div class="table-container kwy" > | ||
| 126 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | ||
| 96 | <tbody> | 127 | <tbody> |
| 97 | 128 | ||
| 98 | </tbody> | 129 | </tbody> |
src/main/resources/static/pages/forms/statement/lbStatuAnaly.html
| 1 | -<style type="text/css"> | ||
| 2 | - .table-bordered { | ||
| 3 | - border: 1px solid; } | ||
| 4 | - .table-bordered > thead > tr > th, | ||
| 5 | - .table-bordered > thead > tr > td, | ||
| 6 | - .table-bordered > tbody > tr > th, | ||
| 7 | - .table-bordered > tbody > tr > td, | ||
| 8 | - .table-bordered > tfoot > tr > th, | ||
| 9 | - .table-bordered > tfoot > tr > td { | ||
| 10 | - border: 1px solid; } | ||
| 11 | - .table-bordered > thead > tr > th, | ||
| 12 | - .table-bordered > thead > tr > td { | ||
| 13 | - border-bottom-width: 2px; } | ||
| 14 | - .table > tbody + tbody { | ||
| 15 | - border-top: 1px solid; } | ||
| 16 | - #forms > tbody > tr{ | ||
| 17 | - background-color: #FFFFFF; | ||
| 18 | - } | ||
| 19 | -</style> | 1 | +<link rel="stylesheet" type="text/css" href="css/lbStatuAnaly.css" /> |
| 20 | 2 | ||
| 21 | <div class="page-head"> | 3 | <div class="page-head"> |
| 22 | <div class="page-title"> | 4 | <div class="page-title"> |
| @@ -25,7 +7,7 @@ | @@ -25,7 +7,7 @@ | ||
| 25 | </div> | 7 | </div> |
| 26 | 8 | ||
| 27 | <div class="row"> | 9 | <div class="row"> |
| 28 | - <div class="col-md-12"> | 10 | + <div class="col-md-12" style="background-color: white"> |
| 29 | <div class="portlet light porttlet-fit bordered"> | 11 | <div class="portlet light porttlet-fit bordered"> |
| 30 | <div class="portlet-title"> | 12 | <div class="portlet-title"> |
| 31 | <form id="history" class="form-inline" action=""> | 13 | <form id="history" class="form-inline" action=""> |
| @@ -101,20 +83,75 @@ | @@ -101,20 +83,75 @@ | ||
| 101 | </div> | 83 | </div> |
| 102 | </form> | 84 | </form> |
| 103 | </div> | 85 | </div> |
| 104 | - <div class="portlet-body"> | ||
| 105 | - <div class="table-container" id="table" style="margin-top: 0px;overflow:auto;min-width: 906px;"> | ||
| 106 | - <table class="table table-bordered table-hover table-checkable" id="forms"> | ||
| 107 | - <thead> | ||
| 108 | - | ||
| 109 | - </thead> | ||
| 110 | - <tbody> | 86 | + <!-- <div class="portlet-body"> |
| 87 | + <div class="table-container" id="table" style="margin-top: 0px;overflow:auto;min-width: 906px;"> | ||
| 88 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | ||
| 89 | + <thead> | ||
| 111 | 90 | ||
| 91 | + </thead> | ||
| 92 | + <tbody> | ||
| 93 | + | ||
| 94 | + </tbody> | ||
| 95 | + </table> | ||
| 96 | + <div style="text-align: right;"> | ||
| 97 | + <ul id="pagination" class="pagination"></ul> | ||
| 98 | + </div> | ||
| 99 | + </div> | ||
| 100 | + </div> | ||
| 101 | + | ||
| 102 | + --> | ||
| 103 | + | ||
| 104 | + | ||
| 105 | + <div id="left_div"> | ||
| 106 | + <div id="left_div1"> | ||
| 107 | + <table id="left_table1"></table> | ||
| 108 | + </div> | ||
| 109 | + <div id="left_div2"> | ||
| 110 | + <table id="left_table2"></table> | ||
| 111 | + </div> | ||
| 112 | + </div> | ||
| 113 | + <div id="right_div"> | ||
| 114 | + <div style="overflow:auto;min-width: 906px;" id="staticfw" > | ||
| 115 | + <div id="right_divx"> | ||
| 116 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | ||
| 117 | + <tbody class="stx"> | ||
| 118 | + </tbody> | ||
| 119 | + </table> | ||
| 120 | + </div> | ||
| 121 | + </div> | ||
| 122 | + <div id="right_div2"> | ||
| 123 | + <table class="table table-bordered table-hover table-checkable" id=""> | ||
| 124 | + <tbody class="staticlfwy"> | ||
| 112 | </tbody> | 125 | </tbody> |
| 113 | </table> | 126 | </table> |
| 114 | - <div style="text-align: right;"> | ||
| 115 | - <ul id="pagination" class="pagination"></ul> | 127 | + </div> |
| 128 | + </div> | ||
| 129 | + | ||
| 130 | + <div id="left_divy"> | ||
| 131 | + <div id="left_div1y"> | ||
| 132 | + <table id="left_table1y"></table> | ||
| 133 | + </div> | ||
| 134 | + <div id="left_div2y"> | ||
| 135 | + <table id="left_table2y"></table> | ||
| 136 | + </div> | ||
| 137 | + </div> | ||
| 138 | + | ||
| 139 | + <div id="right_divy"> | ||
| 140 | + <div style="overflow:auto;min-width: 906px;" id="staticfwy" > | ||
| 141 | + <div id="right_divxy"> | ||
| 142 | + <table class="table table-bordered table-hover table-checkable" id="fdx2"> | ||
| 143 | + <tbody class="stx"> | ||
| 144 | + </tbody> | ||
| 145 | + </table> | ||
| 116 | </div> | 146 | </div> |
| 117 | </div> | 147 | </div> |
| 148 | + <div class="table-container" style="overflow:auto;min-width: 906px;" id="right_div2y"> | ||
| 149 | + <table class="table table-bordered table-hover table-checkable" id="formsnc"> | ||
| 150 | + <tbody class="staticlfwync"> | ||
| 151 | + </tbody> | ||
| 152 | + </table> | ||
| 153 | + </div> | ||
| 154 | + | ||
| 118 | </div> | 155 | </div> |
| 119 | </div> | 156 | </div> |
| 120 | </div> | 157 | </div> |
| @@ -122,6 +159,18 @@ | @@ -122,6 +159,18 @@ | ||
| 122 | 159 | ||
| 123 | <script> | 160 | <script> |
| 124 | $(function(){ | 161 | $(function(){ |
| 162 | + | ||
| 163 | + | ||
| 164 | + | ||
| 165 | + var right_div2y = document.getElementById("right_div2y"); | ||
| 166 | + right_div2y.onscroll = function(){ | ||
| 167 | + var right_div2_topy = this.scrollTop; | ||
| 168 | + var right_div2_lefty = this.scrollLeft; | ||
| 169 | + document.getElementById("left_div2y").scrollTop = right_div2_topy; | ||
| 170 | + document.getElementById("staticfw").scrollLeft = right_div2_lefty; | ||
| 171 | + }; | ||
| 172 | + | ||
| 173 | + | ||
| 125 | $('#export').attr('disabled', "true"); | 174 | $('#export').attr('disabled', "true"); |
| 126 | 175 | ||
| 127 | // 关闭左侧栏 | 176 | // 关闭左侧栏 |
| @@ -365,6 +414,11 @@ | @@ -365,6 +414,11 @@ | ||
| 365 | var tbodyHtml = template('list_lbAnaly',{list:result, reason:reason, lb:lb}); | 414 | var tbodyHtml = template('list_lbAnaly',{list:result, reason:reason, lb:lb}); |
| 366 | // 把渲染好的模版html文本追加到表格中 | 415 | // 把渲染好的模版html文本追加到表格中 |
| 367 | $('#forms').html(tbodyHtml); | 416 | $('#forms').html(tbodyHtml); |
| 417 | + var tbodyHtml = template('list_lbAnaly2',{list:result, reason:reason, lb:lb}); | ||
| 418 | + // 把渲染好的模版html文本追加到表格中 | ||
| 419 | + $('#formsnc').html(tbodyHtml); | ||
| 420 | + | ||
| 421 | + | ||
| 368 | layer.close(i); | 422 | layer.close(i); |
| 369 | 423 | ||
| 370 | _w_table_rowspan("#forms", 1); | 424 | _w_table_rowspan("#forms", 1); |
| @@ -552,11 +606,11 @@ | @@ -552,11 +606,11 @@ | ||
| 552 | <thead> | 606 | <thead> |
| 553 | <tr> | 607 | <tr> |
| 554 | <th class="hidden"></th> | 608 | <th class="hidden"></th> |
| 555 | - <th rowspan="3" style=" width:120px;">日期</th> | ||
| 556 | - <th rowspan="3">时段</th> | ||
| 557 | - <th rowspan="3">公司</th> | ||
| 558 | - <th rowspan="3">分公司</th> | ||
| 559 | - <th rowspan="3">线路</th> | 609 | + <th rowspan="3" style="min-width: 80px;max-width: 80px;" width="80px" >日期</th> |
| 610 | + <th rowspan="3" style="min-width: 80px;max-width: 80px;" width="80px">时段</th> | ||
| 611 | + <th rowspan="3" style="min-width: 80px;max-width: 80px;" width="80px">公司</th> | ||
| 612 | + <th rowspan="3" style="min-width: 80px;max-width: 80px;" width="80px">分公司</th> | ||
| 613 | + <th rowspan="3" style="min-width: 80px;max-width: 80px;" width="80px">线路</th> | ||
| 560 | <th rowspan="2" colspan="3">总班次</th> | 614 | <th rowspan="2" colspan="3">总班次</th> |
| 561 | <th rowspan="2" colspan="3">总营运公里</th> | 615 | <th rowspan="2" colspan="3">总营运公里</th> |
| 562 | {{if lb != 0}} | 616 | {{if lb != 0}} |
| @@ -579,7 +633,7 @@ | @@ -579,7 +633,7 @@ | ||
| 579 | {{if reason[11].checked == true}}<th colspan="3">其他</th>{{/if}} | 633 | {{if reason[11].checked == true}}<th colspan="3">其他</th>{{/if}} |
| 580 | 634 | ||
| 581 | </tr> | 635 | </tr> |
| 582 | - <tr> | 636 | + <tr class="tk"> |
| 583 | <th class="hidden"></th> | 637 | <th class="hidden"></th> |
| 584 | <th>计划</th><th>实际</th><th>百分比</th> | 638 | <th>计划</th><th>实际</th><th>百分比</th> |
| 585 | <th>计划</th><th>实际</th><th>百分比</th> | 639 | <th>计划</th><th>实际</th><th>百分比</th> |
| @@ -597,6 +651,8 @@ | @@ -597,6 +651,8 @@ | ||
| 597 | {{if reason[11].checked==true}}<th>烂班班次</th><th>烂班公里</th><th>百分比</th>{{/if}} | 651 | {{if reason[11].checked==true}}<th>烂班班次</th><th>烂班公里</th><th>百分比</th>{{/if}} |
| 598 | </tr> | 652 | </tr> |
| 599 | </thead> | 653 | </thead> |
| 654 | + | ||
| 655 | +<script type="text/html" id="list_lbAnaly2"> | ||
| 600 | <tbody> | 656 | <tbody> |
| 601 | {{each list as obj i}} | 657 | {{each list as obj i}} |
| 602 | <tr> | 658 | <tr> |
src/main/resources/static/pages/forms/statement/scheduleDaily.html
| 1 | -<style type="text/css"> | ||
| 2 | - .table-bordered { | ||
| 3 | - border: 1px solid; } | ||
| 4 | - .table-bordered > thead > tr > th, | ||
| 5 | - .table-bordered > thead > tr > td, | ||
| 6 | - .table-bordered > tbody > tr > th, | ||
| 7 | - .table-bordered > tbody > tr > td, | ||
| 8 | - .table-bordered > tfoot > tr > th, | ||
| 9 | - .table-bordered > tfoot > tr > td { | ||
| 10 | - border: 1px solid; | ||
| 11 | - text-align: center; } | ||
| 12 | - .table-bordered > thead > tr > th, | ||
| 13 | - .table-bordered > thead > tr > td { | ||
| 14 | - border-bottom-width: 2px; } | ||
| 15 | - | ||
| 16 | - .table > tbody + tbody { | ||
| 17 | - border-top: 1px solid; } | ||
| 18 | - | 1 | +<link rel="stylesheet" type="text/css" href="css/scheduleDaily.css" /> |
| 19 | 2 | ||
| 20 | - | ||
| 21 | - #ddrbBody tr> td >span{ | ||
| 22 | - word-break: keep-all;white-space:nowrap; | ||
| 23 | - } | ||
| 24 | -</style> | ||
| 25 | 3 | ||
| 26 | <div class="page-head" > | 4 | <div class="page-head" > |
| 27 | <div class="page-title"> | 5 | <div class="page-title"> |
| @@ -58,7 +36,7 @@ | @@ -58,7 +36,7 @@ | ||
| 58 | </div> | 36 | </div> |
| 59 | </form> | 37 | </form> |
| 60 | </div> | 38 | </div> |
| 61 | - <div class="portlet-body" id="ddrbBody" style="overflow:auto;height: calc(100% - 80px)"> | 39 | + <div class="portlet-body" id="ddrbBody" style="overflow:auto;height: calc(100% - 40px)"> |
| 62 | <div class="table-container" style="margin-top: 10px;min-width: 906px"> | 40 | <div class="table-container" style="margin-top: 10px;min-width: 906px"> |
| 63 | <label>日期:<span id="rqxs"></span> 早高峰:6:31~8:30 晚高峰:16:01~18:00</label> | 41 | <label>日期:<span id="rqxs"></span> 早高峰:6:31~8:30 晚高峰:16:01~18:00</label> |
| 64 | <br/><label>计划+临加-少驶=<span id="jls"></span> 计算机实驶:<span id="jsjss"></span></label> | 42 | <br/><label>计划+临加-少驶=<span id="jls"></span> 计算机实驶:<span id="jsjss"></span></label> |
| @@ -218,56 +196,110 @@ | @@ -218,56 +196,110 @@ | ||
| 218 | <td colspan="40"> </td> | 196 | <td colspan="40"> </td> |
| 219 | </tr> | 197 | </tr> |
| 220 | </table> | 198 | </table> |
| 221 | - <table class="table table-bordered table-hover table-checkable" id="forms_2"> | ||
| 222 | - <tr> | ||
| 223 | - <td rowspan="2">路牌</td> | ||
| 224 | - <td colspan="2" rowspan="2" style="word-break: keep-all;white-space:nowrap;">起点站</td> | ||
| 225 | - <td colspan="4">到达时间</td> | ||
| 226 | - <td colspan="4">发车时间</td> | ||
| 227 | - <td colspan="2" rowspan="2">备注</td> | ||
| 228 | - <td rowspan="2">路牌</td> | ||
| 229 | - <td colspan="2" rowspan="2" style="word-break: keep-all;white-space:nowrap;">起点站</td> | ||
| 230 | - <td colspan="4">到达时间</td> | ||
| 231 | - <td colspan="4">发车时间</td> | ||
| 232 | - <td colspan="2" rowspan="2">备注</td> | ||
| 233 | - <td rowspan="2">路牌</td> | ||
| 234 | - <td colspan="2" rowspan="2" style="word-break: keep-all;white-space:nowrap;">起点站</td> | ||
| 235 | - <td colspan="4">到达时间</td> | ||
| 236 | - <td colspan="4">发车时间</td> | ||
| 237 | - <td colspan="2" rowspan="2">备注</td> | ||
| 238 | - <td> </td> | ||
| 239 | - </tr> | ||
| 240 | - <tr> | ||
| 241 | - <td>应到</td> | ||
| 242 | - <td>实到</td> | ||
| 243 | - <td>快</td> | ||
| 244 | - <td>慢</td> | ||
| 245 | - <td>应发</td> | ||
| 246 | - <td>实发</td> | ||
| 247 | - <td>快</td> | ||
| 248 | - <td>慢</td> | ||
| 249 | - <td>应到</td> | ||
| 250 | - <td>实到</td> | ||
| 251 | - <td>快</td> | ||
| 252 | - <td>慢</td> | ||
| 253 | - <td>应发</td> | ||
| 254 | - <td>实发</td> | ||
| 255 | - <td>快</td> | ||
| 256 | - <td>慢</td> | ||
| 257 | - <td>应到</td> | ||
| 258 | - <td>实到</td> | ||
| 259 | - <td>快</td> | ||
| 260 | - <td>慢</td> | ||
| 261 | - <td>应发</td> | ||
| 262 | - <td>实发</td> | ||
| 263 | - <td>快</td> | ||
| 264 | - <td>慢</td> | ||
| 265 | - <td> </td> | ||
| 266 | - </tr> | 199 | + <!-- <table class="table table-bordered table-hover table-checkable" id="forms_2"> |
| 200 | + | ||
| 267 | <tbody class="scheduleDaily_3"> | 201 | <tbody class="scheduleDaily_3"> |
| 268 | 202 | ||
| 269 | - </tbody> | 203 | + </tbody>--> |
| 270 | </table> | 204 | </table> |
| 205 | + | ||
| 206 | + | ||
| 207 | + <div id="left_div"> | ||
| 208 | + <div id="left_div1"> | ||
| 209 | + <table id="left_table1"></table> | ||
| 210 | + </div> | ||
| 211 | + <div id="left_div2"> | ||
| 212 | + <table id="left_table2"></table> | ||
| 213 | + </div> | ||
| 214 | + </div> | ||
| 215 | + <div id="right_div"> | ||
| 216 | + <div style="overflow:auto;min-width: 906px;" id="staticfw" > | ||
| 217 | + <div id="right_divx"> | ||
| 218 | + <table class="table table-bordered table-hover table-checkable" > | ||
| 219 | + <tbody class="stx"> | ||
| 220 | + <tr> | ||
| 221 | + <td rowspan="2">路牌</td> | ||
| 222 | + <td colspan="2" rowspan="2" style="word-break: keep-all;white-space:nowrap;">起点站</td> | ||
| 223 | + <td colspan="4">到达时间</td> | ||
| 224 | + <td colspan="4">发车时间</td> | ||
| 225 | + <td colspan="2" rowspan="2">备注</td> | ||
| 226 | + <td rowspan="2">路牌</td> | ||
| 227 | + <td colspan="2" rowspan="2" style="word-break: keep-all;white-space:nowrap;">起点站</td> | ||
| 228 | + <td colspan="4">到达时间</td> | ||
| 229 | + <td colspan="4">发车时间</td> | ||
| 230 | + <td colspan="2" rowspan="2">备注</td> | ||
| 231 | + <td rowspan="2">路牌</td> | ||
| 232 | + <td colspan="2" rowspan="2" style="word-break: keep-all;white-space:nowrap;">起点站</td> | ||
| 233 | + <td colspan="4">到达时间</td> | ||
| 234 | + <td colspan="4">发车时间</td> | ||
| 235 | + <td colspan="2" rowspan="2">备注</td> | ||
| 236 | + <td> </td> | ||
| 237 | + </tr> | ||
| 238 | + <tr class="kfc"> | ||
| 239 | + <td>应到</td> | ||
| 240 | + <td>实到</td> | ||
| 241 | + <td>快</td> | ||
| 242 | + <td>慢</td> | ||
| 243 | + <td>应发</td> | ||
| 244 | + <td>实发</td> | ||
| 245 | + <td>快</td> | ||
| 246 | + <td>慢</td> | ||
| 247 | + <td>应到</td> | ||
| 248 | + <td>实到</td> | ||
| 249 | + <td>快</td> | ||
| 250 | + <td>慢</td> | ||
| 251 | + <td>应发</td> | ||
| 252 | + <td>实发</td> | ||
| 253 | + <td>快</td> | ||
| 254 | + <td>慢</td> | ||
| 255 | + <td>应到</td> | ||
| 256 | + <td>实到</td> | ||
| 257 | + <td>快</td> | ||
| 258 | + <td>慢</td> | ||
| 259 | + <td>应发</td> | ||
| 260 | + <td>实发</td> | ||
| 261 | + <td>快</td> | ||
| 262 | + <td>慢</td> | ||
| 263 | + <td> </td> | ||
| 264 | + </tr> | ||
| 265 | + </tbody> | ||
| 266 | + </table> | ||
| 267 | + </div> | ||
| 268 | + </div> | ||
| 269 | + <div id="right_div2"> | ||
| 270 | + <table class="table table-bordered table-hover table-checkable" > | ||
| 271 | + <tbody class="staticlfwy"> | ||
| 272 | + </tbody> | ||
| 273 | + </table> | ||
| 274 | + </div> | ||
| 275 | + </div> | ||
| 276 | + | ||
| 277 | + <div id="left_divy"> | ||
| 278 | + <div id="left_div1y"> | ||
| 279 | + <table id="left_table1y"></table> | ||
| 280 | + </div> | ||
| 281 | + <div id="left_div2y"> | ||
| 282 | + <table id="left_table2y"></table> | ||
| 283 | + </div> | ||
| 284 | + </div> | ||
| 285 | + | ||
| 286 | + <div id="right_divy"> | ||
| 287 | + <div style="overflow:auto;min-width: 906px;" id="staticfwy" > | ||
| 288 | + <div id="right_divxy"> | ||
| 289 | + <table class="table table-bordered table-hover table-checkable" id=""> | ||
| 290 | + <tbody class=""> | ||
| 291 | + </tbody> | ||
| 292 | + </table> | ||
| 293 | + </div> | ||
| 294 | + </div> | ||
| 295 | + <div class="table-container" style="overflow:auto;min-width: 906px;" id="right_div2y"> | ||
| 296 | + <table class="table table-bordered table-hover table-checkable" id="forms_2"> | ||
| 297 | + <tbody class="scheduleDaily_3"> | ||
| 298 | + </tbody> | ||
| 299 | + </table> | ||
| 300 | + </div> | ||
| 301 | + | ||
| 302 | + </div> | ||
| 271 | </div> | 303 | </div> |
| 272 | </div> | 304 | </div> |
| 273 | <!-- </div> --> | 305 | <!-- </div> --> |
| @@ -276,6 +308,15 @@ | @@ -276,6 +308,15 @@ | ||
| 276 | 308 | ||
| 277 | <script> | 309 | <script> |
| 278 | $(function(){ | 310 | $(function(){ |
| 311 | + | ||
| 312 | + var right_div2y = document.getElementById("right_div2y"); | ||
| 313 | + right_div2y.onscroll = function(){ | ||
| 314 | + var right_div2_topy = this.scrollTop; | ||
| 315 | + var right_div2_lefty = this.scrollLeft; | ||
| 316 | + document.getElementById("left_div2y").scrollTop = right_div2_topy; | ||
| 317 | + document.getElementById("staticfw").scrollLeft = right_div2_lefty; | ||
| 318 | + }; | ||
| 319 | + | ||
| 279 | // 关闭左侧栏 | 320 | // 关闭左侧栏 |
| 280 | if (!$('body').hasClass('page-sidebar-closed')) | 321 | if (!$('body').hasClass('page-sidebar-closed')) |
| 281 | $('.menu-toggler.sidebar-toggler').click(); | 322 | $('.menu-toggler.sidebar-toggler').click(); |
src/main/resources/static/pages/forms/statement/statisticsDaily.html
| 1 | -<style type="text/css"> | ||
| 2 | - .table-bordered { | ||
| 3 | - border: 1px solid; } | ||
| 4 | - .table-bordered > thead > tr > th, | ||
| 5 | - .table-bordered > thead > tr > td, | ||
| 6 | - .table-bordered > tbody > tr > th, | ||
| 7 | - .table-bordered > tbody > tr > td, | ||
| 8 | - .table-bordered > tfoot > tr > th, | ||
| 9 | - .table-bordered > tfoot > tr > td { | ||
| 10 | - border: 1px solid; } | ||
| 11 | - .table-bordered > thead > tr > th, | ||
| 12 | - .table-bordered > thead > tr > td { | ||
| 13 | - border-bottom-width: 2px; } | ||
| 14 | - | ||
| 15 | - .table > tbody + tbody { | ||
| 16 | - border-top: 1px solid; } | ||
| 17 | - | ||
| 18 | - #forms > thead > tr> td >span{ | ||
| 19 | - width: 5px; | ||
| 20 | - word-wrap: break-word; | ||
| 21 | - letter-spacing: 20px; | ||
| 22 | - } | ||
| 23 | - | ||
| 24 | - #forms > thead > tr> td >label{ | ||
| 25 | - word-break: keep-all;white-space:nowrap; | ||
| 26 | - } | ||
| 27 | -</style> | 1 | +<link rel="stylesheet" type="text/css" href="css/statisticsDaily.css" /> |
| 28 | 2 | ||
| 29 | <div class="page-head"> | 3 | <div class="page-head"> |
| 30 | <div class="page-title"> | 4 | <div class="page-title"> |
| @@ -74,86 +48,135 @@ | @@ -74,86 +48,135 @@ | ||
| 74 | </div> | 48 | </div> |
| 75 | </form> | 49 | </form> |
| 76 | </div> | 50 | </div> |
| 77 | - <div class="portlet-body" id="tjrbBody" style="overflow:auto;height: calc(100% - 80px)"> | ||
| 78 | - <div class="table-container" style="margin-top: 10px;min-width: 906px"> | ||
| 79 | - <label>早高峰:6:31~8:30 晚高峰:16:01~18:00</label> | ||
| 80 | - <table class="table table-bordered table-hover table-checkable" id="forms"> | ||
| 81 | - <thead> | ||
| 82 | - <tr> | ||
| 83 | - <th colspan="45"><label id="tjrq"></label> 线路统计日报</th> | ||
| 84 | - </tr> | ||
| 85 | - <tr> | ||
| 86 | - <td rowspan="3"><span >分公司</span></td> | ||
| 87 | - <td rowspan="3"><span >路线名</span></td> | ||
| 88 | - <td colspan="21">全日营运里程(公里)(注:实际营运里程、实际空驶里程、实际总里程均已包含临加里程)</td> | ||
| 89 | - <td colspan="15">全日营运班次</td> | ||
| 90 | - <td colspan="9">大间隔情况</td> | ||
| 91 | - </tr> | ||
| 92 | - <tr> | ||
| 93 | - <td rowspan="2"><label>计划总</label> | ||
| 94 | - <label>公里 </label></td> | ||
| 95 | - <td rowspan="2"><label>计划营</label><label>运公里</label></td> | ||
| 96 | - <td rowspan="2"><label>计划空</label><label>驶公里</label></td> | ||
| 97 | - <td rowspan="2"><label>实际</label><label>总公里</label></td> | ||
| 98 | - <td rowspan="2"><label>实际营</label><label>运公里</label></td> | ||
| 99 | - <td rowspan="2"><label>实际空</label><label>驶公里</label></td> | ||
| 100 | - <td rowspan="2"><span>少驶公里</span></td> | ||
| 101 | - <td rowspan="2"><span>少驶班次</span></td> | ||
| 102 | - <td colspan="11">少驶原因(公里)</td> | ||
| 103 | - <td colspan="2">临加公里</td> | ||
| 104 | - <td colspan="3">计划班次</td> | ||
| 105 | - <td colspan="3">实际班次</td> | ||
| 106 | - <td colspan="3">临加班次</td> | ||
| 107 | - <td colspan="3">放站班次</td> | ||
| 108 | - <td colspan="3">调头班次</td> | ||
| 109 | - <td colspan="3">发生次数</td> | ||
| 110 | - <td rowspan="2">最大间隔时间(分)</td> | ||
| 111 | - <td rowspan="2">原因</td> | ||
| 112 | - </tr> | ||
| 113 | - <tr> | ||
| 114 | - <td><span >路阻</span></td> | ||
| 115 | - <td><span>吊慢</span></td> | ||
| 116 | - <td><span >故障</span></td> | ||
| 117 | - <td><span >纠纷</span></td> | ||
| 118 | - <td><span >肇事</span></td> | ||
| 119 | - <td><span>缺人</span></td> | ||
| 120 | - <td><span>缺车</span></td> | ||
| 121 | - <td><span >客稀</span></td> | ||
| 122 | - <td><span>气候</span></td> | ||
| 123 | - <td><span>援外</span></td> | ||
| 124 | - <td><span>其他</span></td> | ||
| 125 | - <td><span>营运</span></td> | ||
| 126 | - <td><span>空驶</span></td> | ||
| 127 | - <td><span>全日</span></td> | ||
| 128 | - <td><span>早高峰</span></td> | ||
| 129 | - <td><span>晚高峰</span></td> | ||
| 130 | - <td><span>全日</span></td> | ||
| 131 | - <td><span>早高峰</span></td> | ||
| 132 | - <td><span>晚高峰</span></td> | ||
| 133 | - <td><span>全日</span></td> | ||
| 134 | - <td><span>早高峰</span></td> | ||
| 135 | - <td><span>晚高峰</span></td> | ||
| 136 | - <td><span>全日</span></td> | ||
| 137 | - <td><span>早高峰</span></td> | ||
| 138 | - <td><span>晚高峰</span></td> | ||
| 139 | - <td><span>全日</span></td> | ||
| 140 | - <td><span>早高峰</span></td> | ||
| 141 | - <td><span>晚高峰</span></td> | ||
| 142 | - <td><span>全日</span></td> | ||
| 143 | - <td><span>早高峰</span></td> | ||
| 144 | - <td><span>晚高峰</span></td> | ||
| 145 | - </tr> | ||
| 146 | - </thead> | ||
| 147 | - <tbody class="statisticsDaily"> | ||
| 148 | - | 51 | + <div id="left_div"> |
| 52 | + <div id="left_div1"> | ||
| 53 | + <table id="left_table1"></table> | ||
| 54 | + </div> | ||
| 55 | + <div id="left_div2"> | ||
| 56 | + <table id="left_table2"></table> | ||
| 57 | + </div> | ||
| 58 | + </div> | ||
| 59 | + <div id="right_div"> | ||
| 60 | + <div style="overflow:auto;min-width: 906px;" id="staticfw" > | ||
| 61 | + <div id="right_divx"> | ||
| 62 | + <table class="table table-bordered table-hover table-checkable" id="fdx"> | ||
| 63 | + <tbody class="stx"> | ||
| 64 | + <tr> | ||
| 65 | + <th colspan="45"><label id="tjrq"></label> 线路统计日报</th> | ||
| 66 | + </tr> | ||
| 67 | + <tr> | ||
| 68 | + <td rowspan="3" style="min-width: 80px;max-width: 80px;" width="100px"><span >分公司</span></td> | ||
| 69 | + <td rowspan="3" style="min-width: 80px;max-width: 80px;" width="100px"><span >路线名</span></td> | ||
| 70 | + <td colspan="21">全日营运里程(公里)(注:实际营运里程、实际空驶里程、实际总里程均已包含临加里程)</td> | ||
| 71 | + <td colspan="15">全日营运班次</td> | ||
| 72 | + <td colspan="9">大间隔情况</td> | ||
| 73 | + </tr> | ||
| 74 | + <tr> | ||
| 75 | + <td rowspan="2" style="min-width: 80px;max-width: 80px;"width="80px"><label>计划总</label> | ||
| 76 | + <label>公里 </label></td> | ||
| 77 | + <td rowspan="2" style="min-width: 80px;max-width: 80px;" width="80px"><label>计划营</label><label>运公里</label></td> | ||
| 78 | + <td rowspan="2" style="min-width: 80px;max-width: 80px;" width="80px"><label>计划空</label><label>驶公里</label></td> | ||
| 79 | + <td rowspan="2" style="min-width: 80px;max-width: 80px;" width="80px"><label>实际</label><label>总公里</label></td> | ||
| 80 | + <td rowspan="2" style="min-width: 80px;max-width: 80px;" width="80px"><label>实际营</label><label>运公里</label></td> | ||
| 81 | + <td rowspan="2" style="min-width: 80px;max-width: 80px;" width="80px"><label>实际空</label><label>驶公里</label></td> | ||
| 82 | + <td rowspan="2" style="min-width: 80px;max-width: 80px;" width="80px"><span>少驶公里</span></td> | ||
| 83 | + <td rowspan="2" style="min-width: 80px;max-width: 80px;" width="80px"><span>少驶班次</span></td> | ||
| 84 | + <td colspan="11">少驶原因(公里)</td> | ||
| 85 | + <td colspan="2">临加公里</td> | ||
| 86 | + <td colspan="3">计划班次</td> | ||
| 87 | + <td colspan="3">实际班次</td> | ||
| 88 | + <td colspan="3">临加班次</td> | ||
| 89 | + <td colspan="3">放站班次</td> | ||
| 90 | + <td colspan="3">调头班次</td> | ||
| 91 | + <td colspan="3">发生次数</td> | ||
| 92 | + <td rowspan="2">最大间隔时间(分)</td> | ||
| 93 | + <td rowspan="2">原因</td> | ||
| 94 | + </tr> | ||
| 95 | + <tr class="kfc"> | ||
| 96 | + <td style="min-width: 80px;max-width: 80px;"><span>路阻</span></td> | ||
| 97 | + <td><span>吊慢</span></td> | ||
| 98 | + <td><span>故障</span></td> | ||
| 99 | + <td><span>纠纷</span></td> | ||
| 100 | + <td><span>肇事</span></td> | ||
| 101 | + <td><span>缺人</span></td> | ||
| 102 | + <td><span>缺车</span></td> | ||
| 103 | + <td><span>客稀</span></td> | ||
| 104 | + <td><span>气候</span></td> | ||
| 105 | + <td><span>援外</span></td> | ||
| 106 | + <td><span>其他</span></td> | ||
| 107 | + <td><span>营运</span></td> | ||
| 108 | + <td><span>空驶</span></td> | ||
| 109 | + <td><span>全日</span></td> | ||
| 110 | + <td><span>早高峰</span></td> | ||
| 111 | + <td><span>晚高峰</span></td> | ||
| 112 | + <td><span>全日</span></td> | ||
| 113 | + <td><span>早高峰</span></td> | ||
| 114 | + <td><span>晚高峰</span></td> | ||
| 115 | + <td><span>全日</span></td> | ||
| 116 | + <td><span>早高峰</span></td> | ||
| 117 | + <td><span>晚高峰</span></td> | ||
| 118 | + <td><span>全日</span></td> | ||
| 119 | + <td><span>早高峰</span></td> | ||
| 120 | + <td><span>晚高峰</span></td> | ||
| 121 | + <td><span>全日</span></td> | ||
| 122 | + <td><span>早高峰</span></td> | ||
| 123 | + <td><span>晚高峰</span></td> | ||
| 124 | + <td><span>全日</span></td> | ||
| 125 | + <td><span>早高峰</span></td> | ||
| 126 | + <td><span>晚高峰</span></td> | ||
| 127 | + </tr> | ||
| 128 | + </tbody> | ||
| 129 | + </table> | ||
| 130 | + </div> | ||
| 131 | + </div> | ||
| 132 | + <div id="right_div2"> | ||
| 133 | + <table class="table table-bordered table-hover table-checkable" id=""> | ||
| 134 | + <tbody class="staticlfwy"> | ||
| 135 | + </tbody> | ||
| 136 | + </table> | ||
| 137 | + </div> | ||
| 138 | + </div> | ||
| 139 | + | ||
| 140 | + <div id="left_divy"> | ||
| 141 | + <div id="left_div1y"> | ||
| 142 | + <table id="left_table1y"></table> | ||
| 143 | + </div> | ||
| 144 | + <div id="left_div2y"> | ||
| 145 | + <table id="left_table2y"></table> | ||
| 146 | + </div> | ||
| 147 | + </div> | ||
| 148 | + | ||
| 149 | + <div id="right_divy"> | ||
| 150 | + <div style="overflow:auto;min-width: 906px;" id="staticfwy" > | ||
| 151 | + <div id="right_divxy"> | ||
| 152 | + <table class="table table-bordered table-hover table-checkable" id="fdx2"> | ||
| 153 | + <tbody class="stx"> | ||
| 149 | </tbody> | 154 | </tbody> |
| 150 | </table> | 155 | </table> |
| 151 | </div> | 156 | </div> |
| 152 | </div> | 157 | </div> |
| 158 | + <div class="table-container" style="overflow:auto;min-width: 906px;" id="right_div2y"> | ||
| 159 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | ||
| 160 | + <tbody class="statisticsDaily"> | ||
| 161 | + </tbody> | ||
| 162 | + </table> | ||
| 163 | + </div> | ||
| 164 | + | ||
| 153 | </div> | 165 | </div> |
| 154 | 166 | ||
| 155 | <script> | 167 | <script> |
| 156 | $(function(){ | 168 | $(function(){ |
| 169 | + | ||
| 170 | + | ||
| 171 | + | ||
| 172 | + var right_div2y = document.getElementById("right_div2y"); | ||
| 173 | + right_div2y.onscroll = function(){ | ||
| 174 | + var right_div2_topy = this.scrollTop; | ||
| 175 | + var right_div2_lefty = this.scrollLeft; | ||
| 176 | + document.getElementById("left_div2y").scrollTop = right_div2_topy; | ||
| 177 | + document.getElementById("staticfw").scrollLeft = right_div2_lefty; | ||
| 178 | + }; | ||
| 179 | + | ||
| 157 | $('#export').attr('disabled', "true"); | 180 | $('#export').attr('disabled', "true"); |
| 158 | 181 | ||
| 159 | // 关闭左侧栏 | 182 | // 关闭左侧栏 |
src/main/resources/static/pages/forms/statement/waybill.html
| 1 | -<style type="text/css"> | ||
| 2 | - .table-bordered { | ||
| 3 | - border: 1px solid; } | ||
| 4 | - .table-bordered > thead > tr > th, | ||
| 5 | - .table-bordered > thead > tr > td, | ||
| 6 | - .table-bordered > tbody > tr > th, | ||
| 7 | - .table-bordered > tbody > tr > td, | ||
| 8 | - .table-bordered > tfoot > tr > th, | ||
| 9 | - .table-bordered > tfoot > tr > td { | ||
| 10 | - border: 1px solid; } | ||
| 11 | - .table-bordered > thead > tr > th, | ||
| 12 | - .table-bordered > thead > tr > td { | ||
| 13 | - border-bottom-width: 2px; } | ||
| 14 | - | ||
| 15 | - .table > tbody + tbody { | ||
| 16 | - border-top: 1px solid; } | ||
| 17 | -</style> | 1 | +<link rel="stylesheet" type="text/css" href="css/lbStatuAnaly.css" /> |
| 2 | + | ||
| 18 | 3 | ||
| 19 | <div class="page-head"> | 4 | <div class="page-head"> |
| 20 | <div class="page-title"> | 5 | <div class="page-title"> |
| @@ -71,7 +56,7 @@ | @@ -71,7 +56,7 @@ | ||
| 71 | </div> | 56 | </div> |
| 72 | </div> | 57 | </div> |
| 73 | <div class="col-md-9" id="printArea"> | 58 | <div class="col-md-9" id="printArea"> |
| 74 | - <div class="table-container" id="xcld_height" style="margin-top: 10px;overflow:auto;min-width: 906px;"> | 59 | + <!-- <div class="table-container" id="xcld_height" style="margin-top: 10px;overflow:auto;min-width: 906px;"> |
| 75 | <table class="table table-bordered table-checkable" id="forms"> | 60 | <table class="table table-bordered table-checkable" id="forms"> |
| 76 | <tbody class="ludan_1"> | 61 | <tbody class="ludan_1"> |
| 77 | 62 | ||
| @@ -86,7 +71,69 @@ | @@ -86,7 +71,69 @@ | ||
| 86 | 71 | ||
| 87 | </tbody> | 72 | </tbody> |
| 88 | </table> | 73 | </table> |
| 74 | + </div>--> | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + <div id="left_div"> | ||
| 78 | + <div id="left_div1"> | ||
| 79 | + <table id="left_table1"></table> | ||
| 80 | + </div> | ||
| 81 | + <div id="left_div2"> | ||
| 82 | + <table id="left_table2"></table> | ||
| 83 | + </div> | ||
| 84 | + </div> | ||
| 85 | + <div id="right_div"> | ||
| 86 | + <div style="overflow:auto;min-width: 906px;" id="staticfw" > | ||
| 87 | + <div id="right_divx"> | ||
| 88 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | ||
| 89 | + <tbody class="ludan_1"> | ||
| 90 | + | ||
| 91 | + </tbody> | ||
| 92 | + </table> | ||
| 93 | + </div> | ||
| 94 | + </div> | ||
| 95 | + <div id="right_div2"> | ||
| 96 | + <table class="table table-bordered table-hover table-checkable" id=""> | ||
| 97 | + <tbody class="staticlfwy"> | ||
| 98 | + </tbody> | ||
| 99 | + </table> | ||
| 100 | + </div> | ||
| 101 | + </div> | ||
| 102 | + | ||
| 103 | + <div id="left_divy"> | ||
| 104 | + <div id="left_div1y"> | ||
| 105 | + <table id="left_table1y"></table> | ||
| 106 | + </div> | ||
| 107 | + <div id="left_div2y"> | ||
| 108 | + <table id="left_table2y"></table> | ||
| 109 | + </div> | ||
| 110 | + </div> | ||
| 111 | + | ||
| 112 | + <div id="right_divy"> | ||
| 113 | + <div style="overflow:auto;min-width: 906px;" id="staticfwy" > | ||
| 114 | + <div id="right_divxy"> | ||
| 115 | + <table class="table table-bordered table-hover table-checkable" id="fdx2"> | ||
| 116 | + <tbody class="stx"> | ||
| 117 | + </tbody> | ||
| 118 | + </table> | ||
| 119 | + </div> | ||
| 120 | + </div> | ||
| 121 | + <div class="table-container" style="overflow:auto;min-width: 906px;" id="right_div2y"> | ||
| 122 | + <table class="table table-bordered table-hover table-checkable" id="formsnc"> | ||
| 123 | + <tbody class="ludan_2"> | ||
| 124 | + | ||
| 125 | + </tbody> | ||
| 126 | + <tbody class="ludan_3"> | ||
| 127 | + | ||
| 128 | + </tbody> | ||
| 129 | + <tbody class="ludan_4"> | ||
| 130 | + | ||
| 131 | + </tbody> | ||
| 132 | + </table> | ||
| 133 | + </div> | ||
| 134 | + | ||
| 89 | </div> | 135 | </div> |
| 136 | + | ||
| 90 | </div> | 137 | </div> |
| 91 | </div> | 138 | </div> |
| 92 | </div> | 139 | </div> |
| @@ -318,11 +365,11 @@ | @@ -318,11 +365,11 @@ | ||
| 318 | getTime(result); | 365 | getTime(result); |
| 319 | var ludan_2 = template('ludan_2',{list:result}); | 366 | var ludan_2 = template('ludan_2',{list:result}); |
| 320 | // 把渲染好的模版html文本追加到表格中 | 367 | // 把渲染好的模版html文本追加到表格中 |
| 321 | - $('#forms .ludan_2').html(ludan_2); | 368 | + $('#formsnc .ludan_2').html(ludan_2); |
| 322 | }); | 369 | }); |
| 323 | $get('/realSchedule/findKMBC',{jGh:jGh,clZbh:params[1],lpName:params[2],date:date,line:line},function(result){ | 370 | $get('/realSchedule/findKMBC',{jGh:jGh,clZbh:params[1],lpName:params[2],date:date,line:line},function(result){ |
| 324 | var ludan_3 = template('ludan_3',result); | 371 | var ludan_3 = template('ludan_3',result); |
| 325 | - $('#forms .ludan_3').html(ludan_3); | 372 | + $('#formsnc .ludan_3').html(ludan_3); |
| 326 | $("#info tbody tr").css('background-color', ''); | 373 | $("#info tbody tr").css('background-color', ''); |
| 327 | obj.css('background-color', '#99CCFF'); | 374 | obj.css('background-color', '#99CCFF'); |
| 328 | }); | 375 | }); |
src/main/resources/static/pages/mforms/singledatas/singledata.html
| @@ -15,6 +15,29 @@ | @@ -15,6 +15,29 @@ | ||
| 15 | 15 | ||
| 16 | .table > tbody + tbody { | 16 | .table > tbody + tbody { |
| 17 | border-top: 1px solid; } | 17 | border-top: 1px solid; } |
| 18 | + | ||
| 19 | + .table-body{width:100%; height:94vh;overflow-y:scroll;} | ||
| 20 | + .table-head table,.table-body table{width:100%;} | ||
| 21 | + .table-container{ | ||
| 22 | + overflow-y:scroll;height: 540px; width: 100%; | ||
| 23 | + } | ||
| 24 | + .kwy td{ | ||
| 25 | + | ||
| 26 | + width: 6.6%; | ||
| 27 | + } | ||
| 28 | + .kw th{ | ||
| 29 | + width: 6.6%; | ||
| 30 | + } | ||
| 31 | + .kw{ | ||
| 32 | + width: 98%; | ||
| 33 | + margin-top: 10px; | ||
| 34 | + overflow:auto; | ||
| 35 | + min-width: 600px | ||
| 36 | + } | ||
| 37 | + .kwy{ | ||
| 38 | + margin-top:-20px; overflow:auto;min-width: 906px ;width: 99% | ||
| 39 | + } | ||
| 40 | + | ||
| 18 | </style> | 41 | </style> |
| 19 | 42 | ||
| 20 | <div class="page-head"> | 43 | <div class="page-head"> |
| @@ -69,8 +92,8 @@ | @@ -69,8 +92,8 @@ | ||
| 69 | </form> | 92 | </form> |
| 70 | </div> | 93 | </div> |
| 71 | <div class="portlet-body"> | 94 | <div class="portlet-body"> |
| 72 | - <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px"> | ||
| 73 | - <table class="table table-bordered table-hover table-checkable" id="forms"> | 95 | + <div class="kw" style="margin-top: 10px;overflow:auto;min-width: 906px"> |
| 96 | + <table class="table table-bordered table-hover table-checkable" id=""> | ||
| 74 | <thead> | 97 | <thead> |
| 75 | <tr> | 98 | <tr> |
| 76 | <th>序号</th> | 99 | <th>序号</th> |
| @@ -90,10 +113,17 @@ | @@ -90,10 +113,17 @@ | ||
| 90 | <th>计划公里</th> | 113 | <th>计划公里</th> |
| 91 | </tr> | 114 | </tr> |
| 92 | </thead> | 115 | </thead> |
| 116 | + </table> | ||
| 117 | + </div> | ||
| 118 | + <div class="table-container kwy" > | ||
| 119 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | ||
| 93 | <tbody> | 120 | <tbody> |
| 94 | - | 121 | + |
| 95 | </tbody> | 122 | </tbody> |
| 96 | </table> | 123 | </table> |
| 124 | + <div style="text-align: right;"> | ||
| 125 | + <ul id="pagination" class="pagination"></ul> | ||
| 126 | + </div> | ||
| 97 | </div> | 127 | </div> |
| 98 | </div> | 128 | </div> |
| 99 | </div> | 129 | </div> |
src/main/resources/static/pages/scheduleApp/Gruntfile.js
| @@ -119,6 +119,7 @@ module.exports = function (grunt) { | @@ -119,6 +119,7 @@ module.exports = function (grunt) { | ||
| 119 | 'module/core/scheduleRuleManage/route.js', // 排班规则管理模块 | 119 | 'module/core/scheduleRuleManage/route.js', // 排班规则管理模块 |
| 120 | 'module/core/ttInfoManage/route.js', // 时刻表管理模块 | 120 | 'module/core/ttInfoManage/route.js', // 时刻表管理模块 |
| 121 | 'module/core/ttInfoManage/detailedit/route.js', // 时刻表明细管理模块 | 121 | 'module/core/ttInfoManage/detailedit/route.js', // 时刻表明细管理模块 |
| 122 | + "module/sys/userSignManage/route.js", // 用户登录日志管理模块 | ||
| 122 | 'module/core/ttInfoManage2/route.js' // 智能时刻表管理模块 | 123 | 'module/core/ttInfoManage2/route.js' // 智能时刻表管理模块 |
| 123 | ], | 124 | ], |
| 124 | dest: 'module/common/prj-common-ui-route-state.js' | 125 | dest: 'module/common/prj-common-ui-route-state.js' |
| @@ -139,6 +140,7 @@ module.exports = function (grunt) { | @@ -139,6 +140,7 @@ module.exports = function (grunt) { | ||
| 139 | 'module/core/schedulePlanManage/service.js', // 排班计划管理service | 140 | 'module/core/schedulePlanManage/service.js', // 排班计划管理service |
| 140 | 'module/core/scheduleRuleManage/service.js', // 排班规则管理service | 141 | 'module/core/scheduleRuleManage/service.js', // 排班规则管理service |
| 141 | 'module/core/ttInfoManage/service.js', // 时刻表管理service | 142 | 'module/core/ttInfoManage/service.js', // 时刻表管理service |
| 143 | + "module/sys/userSignManage/service.js", // 用户登录日志管理service | ||
| 142 | 'module/common/prj-common-globalservice-legacy.js' // 其他用service | 144 | 'module/common/prj-common-globalservice-legacy.js' // 其他用service |
| 143 | ], | 145 | ], |
| 144 | dest: 'module/common/prj-common-globalservice.js' | 146 | dest: 'module/common/prj-common-globalservice.js' |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
| 1 | -//所有模块service配置 | 1 | +//所有模块service配置 |
| 2 | // 车辆信息service | 2 | // 车辆信息service |
| 3 | angular.module('ScheduleApp').factory( | 3 | angular.module('ScheduleApp').factory( |
| 4 | 'BusInfoManageService_g', | 4 | 'BusInfoManageService_g', |
| @@ -79,7 +79,7 @@ angular.module('ScheduleApp').factory( | @@ -79,7 +79,7 @@ angular.module('ScheduleApp').factory( | ||
| 79 | 79 | ||
| 80 | } | 80 | } |
| 81 | ] | 81 | ] |
| 82 | -); | 82 | +); |
| 83 | // 车辆设备信息service | 83 | // 车辆设备信息service |
| 84 | angular.module('ScheduleApp').factory('DeviceInfoManageService_g', ['$resource', function($resource) { | 84 | angular.module('ScheduleApp').factory('DeviceInfoManageService_g', ['$resource', function($resource) { |
| 85 | return $resource( | 85 | return $resource( |
| @@ -119,7 +119,7 @@ angular.module('ScheduleApp').factory('DeviceInfoManageService_g', ['$resource', | @@ -119,7 +119,7 @@ angular.module('ScheduleApp').factory('DeviceInfoManageService_g', ['$resource', | ||
| 119 | } | 119 | } |
| 120 | } | 120 | } |
| 121 | ); | 121 | ); |
| 122 | -}]); | 122 | +}]); |
| 123 | // 人员信息service | 123 | // 人员信息service |
| 124 | angular.module('ScheduleApp').factory( | 124 | angular.module('ScheduleApp').factory( |
| 125 | 'EmployeeInfoManageService_g', | 125 | 'EmployeeInfoManageService_g', |
| @@ -183,7 +183,7 @@ angular.module('ScheduleApp').factory( | @@ -183,7 +183,7 @@ angular.module('ScheduleApp').factory( | ||
| 183 | } | 183 | } |
| 184 | ] | 184 | ] |
| 185 | ); | 185 | ); |
| 186 | - | 186 | + |
| 187 | // 车辆配置service | 187 | // 车辆配置service |
| 188 | angular.module('ScheduleApp').factory('BusConfigService_g', ['$resource', 'UserPrincipal', function($resource, UserPrincipal) { | 188 | angular.module('ScheduleApp').factory('BusConfigService_g', ['$resource', 'UserPrincipal', function($resource, UserPrincipal) { |
| 189 | return { | 189 | return { |
| @@ -238,7 +238,7 @@ angular.module('ScheduleApp').factory('BusConfigService_g', ['$resource', 'UserP | @@ -238,7 +238,7 @@ angular.module('ScheduleApp').factory('BusConfigService_g', ['$resource', 'UserP | ||
| 238 | } | 238 | } |
| 239 | ) | 239 | ) |
| 240 | }; | 240 | }; |
| 241 | -}]); | 241 | +}]); |
| 242 | // 线路运营统计service | 242 | // 线路运营统计service |
| 243 | angular.module('ScheduleApp').factory('BusLineInfoStatService_g', ['$resource', function($resource) { | 243 | angular.module('ScheduleApp').factory('BusLineInfoStatService_g', ['$resource', function($resource) { |
| 244 | return $resource( | 244 | return $resource( |
| @@ -254,7 +254,7 @@ angular.module('ScheduleApp').factory('BusLineInfoStatService_g', ['$resource', | @@ -254,7 +254,7 @@ angular.module('ScheduleApp').factory('BusLineInfoStatService_g', ['$resource', | ||
| 254 | } | 254 | } |
| 255 | ); | 255 | ); |
| 256 | }]); | 256 | }]); |
| 257 | - | 257 | + |
| 258 | // 人员配置service | 258 | // 人员配置service |
| 259 | angular.module('ScheduleApp').factory('EmployeeConfigService_g', ['$resource', function($resource) { | 259 | angular.module('ScheduleApp').factory('EmployeeConfigService_g', ['$resource', function($resource) { |
| 260 | return { | 260 | return { |
| @@ -338,7 +338,7 @@ angular.module('ScheduleApp').factory('EmployeeConfigService_g', ['$resource', f | @@ -338,7 +338,7 @@ angular.module('ScheduleApp').factory('EmployeeConfigService_g', ['$resource', f | ||
| 338 | } | 338 | } |
| 339 | ) | 339 | ) |
| 340 | }; | 340 | }; |
| 341 | -}]); | 341 | +}]); |
| 342 | // 路牌管理service | 342 | // 路牌管理service |
| 343 | angular.module('ScheduleApp').factory('GuideboardManageService_g', ['$resource', function($resource) { | 343 | angular.module('ScheduleApp').factory('GuideboardManageService_g', ['$resource', function($resource) { |
| 344 | return { | 344 | return { |
| @@ -411,7 +411,7 @@ angular.module('ScheduleApp').factory('GuideboardManageService_g', ['$resource', | @@ -411,7 +411,7 @@ angular.module('ScheduleApp').factory('GuideboardManageService_g', ['$resource', | ||
| 411 | } | 411 | } |
| 412 | ) | 412 | ) |
| 413 | }; | 413 | }; |
| 414 | -}]); | 414 | +}]); |
| 415 | // 套跑管理service | 415 | // 套跑管理service |
| 416 | angular.module('ScheduleApp').factory('rerunManageService_g', ['$resource', function($resource) { | 416 | angular.module('ScheduleApp').factory('rerunManageService_g', ['$resource', function($resource) { |
| 417 | return { | 417 | return { |
| @@ -453,7 +453,7 @@ angular.module('ScheduleApp').factory('rerunManageService_g', ['$resource', func | @@ -453,7 +453,7 @@ angular.module('ScheduleApp').factory('rerunManageService_g', ['$resource', func | ||
| 453 | } | 453 | } |
| 454 | ) | 454 | ) |
| 455 | }; | 455 | }; |
| 456 | -}]); | 456 | +}]); |
| 457 | // 排班计划管理service | 457 | // 排班计划管理service |
| 458 | angular.module('ScheduleApp').factory('SchedulePlanManageService_g', ['$resource', function($resource) { | 458 | angular.module('ScheduleApp').factory('SchedulePlanManageService_g', ['$resource', function($resource) { |
| 459 | return { | 459 | return { |
| @@ -621,7 +621,7 @@ angular.module('ScheduleApp').factory('SchedulePlanInfoManageService_g', ['$reso | @@ -621,7 +621,7 @@ angular.module('ScheduleApp').factory('SchedulePlanInfoManageService_g', ['$reso | ||
| 621 | 621 | ||
| 622 | 622 | ||
| 623 | }; | 623 | }; |
| 624 | -}]); | 624 | +}]); |
| 625 | // 排班管理service | 625 | // 排班管理service |
| 626 | angular.module('ScheduleApp').factory('ScheduleRuleManageService_g', ['$resource', function($resource) { | 626 | angular.module('ScheduleApp').factory('ScheduleRuleManageService_g', ['$resource', function($resource) { |
| 627 | return { | 627 | return { |
| @@ -680,7 +680,7 @@ angular.module('ScheduleApp').factory('ScheduleRuleManageService_g', ['$resource | @@ -680,7 +680,7 @@ angular.module('ScheduleApp').factory('ScheduleRuleManageService_g', ['$resource | ||
| 680 | ) | 680 | ) |
| 681 | }; | 681 | }; |
| 682 | }]); | 682 | }]); |
| 683 | - | 683 | + |
| 684 | // 时刻表管理service | 684 | // 时刻表管理service |
| 685 | angular.module('ScheduleApp').factory( | 685 | angular.module('ScheduleApp').factory( |
| 686 | 'TTInfoManageService_g', | 686 | 'TTInfoManageService_g', |
| @@ -898,7 +898,57 @@ angular.module('ScheduleApp').factory( | @@ -898,7 +898,57 @@ angular.module('ScheduleApp').factory( | ||
| 898 | } | 898 | } |
| 899 | 899 | ||
| 900 | ] | 900 | ] |
| 901 | -); | 901 | +); |
| 902 | + | ||
| 903 | +// 用户登录日志service | ||
| 904 | +angular.module('ScheduleApp').factory( | ||
| 905 | + "UserSignManageService_g", | ||
| 906 | + [ | ||
| 907 | + '$resource', | ||
| 908 | + function($resource) { | ||
| 909 | + return { | ||
| 910 | + rest: $resource( | ||
| 911 | + "/logger_user_sign/:id", | ||
| 912 | + {id: '@id'}, | ||
| 913 | + { | ||
| 914 | + list: { | ||
| 915 | + method: 'GET', | ||
| 916 | + params: { | ||
| 917 | + page: 0 | ||
| 918 | + }, | ||
| 919 | + transformResponse: function(rs) { | ||
| 920 | + var dst = angular.fromJson(rs); | ||
| 921 | + if (dst.status == 'SUCCESS') { | ||
| 922 | + return dst.data; | ||
| 923 | + } else { | ||
| 924 | + return dst; // 业务错误留给控制器处理 | ||
| 925 | + } | ||
| 926 | + } | ||
| 927 | + } | ||
| 928 | + } | ||
| 929 | + ), | ||
| 930 | + dataTools: $resource( | ||
| 931 | + '/logger_user_sign/:type', | ||
| 932 | + {}, | ||
| 933 | + { | ||
| 934 | + dataExport: { | ||
| 935 | + method: 'GET', | ||
| 936 | + responseType: "arraybuffer", | ||
| 937 | + params: { | ||
| 938 | + type: "exportFile" | ||
| 939 | + }, | ||
| 940 | + transformResponse: function(data, headers){ | ||
| 941 | + return {data : data}; | ||
| 942 | + } | ||
| 943 | + } | ||
| 944 | + } | ||
| 945 | + ) | ||
| 946 | + }; | ||
| 947 | + } | ||
| 948 | + ] | ||
| 949 | +); | ||
| 950 | + | ||
| 951 | + | ||
| 902 | // 项目通用的全局service服务,供不同的controller使用,自定义指令不使用 | 952 | // 项目通用的全局service服务,供不同的controller使用,自定义指令不使用 |
| 903 | 953 | ||
| 904 | // 文件下载服务 | 954 | // 文件下载服务 |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-ui-route-state.js
| @@ -91,7 +91,7 @@ ScheduleApp.config([ | @@ -91,7 +91,7 @@ ScheduleApp.config([ | ||
| 91 | } | 91 | } |
| 92 | }) | 92 | }) |
| 93 | } | 93 | } |
| 94 | -]); | 94 | +]); |
| 95 | // ui route 配置 | 95 | // ui route 配置 |
| 96 | 96 | ||
| 97 | /** 车辆设备信息模块配置route */ | 97 | /** 车辆设备信息模块配置route */ |
| @@ -185,7 +185,7 @@ ScheduleApp.config([ | @@ -185,7 +185,7 @@ ScheduleApp.config([ | ||
| 185 | }) | 185 | }) |
| 186 | 186 | ||
| 187 | } | 187 | } |
| 188 | -]); | 188 | +]); |
| 189 | // ui route 配置 | 189 | // ui route 配置 |
| 190 | 190 | ||
| 191 | /** 人员基础信息模块配置route */ | 191 | /** 人员基础信息模块配置route */ |
| @@ -279,7 +279,7 @@ ScheduleApp.config([ | @@ -279,7 +279,7 @@ ScheduleApp.config([ | ||
| 279 | } | 279 | } |
| 280 | }) | 280 | }) |
| 281 | 281 | ||
| 282 | -}]); | 282 | +}]); |
| 283 | // ui route 配置 | 283 | // ui route 配置 |
| 284 | 284 | ||
| 285 | /** 车辆配置模块页面route */ | 285 | /** 车辆配置模块页面route */ |
| @@ -376,7 +376,7 @@ ScheduleApp.config([ | @@ -376,7 +376,7 @@ ScheduleApp.config([ | ||
| 376 | ]); | 376 | ]); |
| 377 | 377 | ||
| 378 | 378 | ||
| 379 | - | 379 | + |
| 380 | // ui route 配置 | 380 | // ui route 配置 |
| 381 | 381 | ||
| 382 | /** 线路运营概览配置route */ | 382 | /** 线路运营概览配置route */ |
| @@ -413,7 +413,7 @@ ScheduleApp.config([ | @@ -413,7 +413,7 @@ ScheduleApp.config([ | ||
| 413 | }); | 413 | }); |
| 414 | 414 | ||
| 415 | } | 415 | } |
| 416 | -]); | 416 | +]); |
| 417 | // ui route 配置 | 417 | // ui route 配置 |
| 418 | 418 | ||
| 419 | /** 人员配置模块页面route */ | 419 | /** 人员配置模块页面route */ |
| @@ -508,7 +508,7 @@ ScheduleApp.config([ | @@ -508,7 +508,7 @@ ScheduleApp.config([ | ||
| 508 | }) | 508 | }) |
| 509 | 509 | ||
| 510 | } | 510 | } |
| 511 | -]); | 511 | +]); |
| 512 | // ui route 配置 | 512 | // ui route 配置 |
| 513 | 513 | ||
| 514 | /** 路牌管理配置所有模块页面route */ | 514 | /** 路牌管理配置所有模块页面route */ |
| @@ -603,7 +603,7 @@ ScheduleApp.config([ | @@ -603,7 +603,7 @@ ScheduleApp.config([ | ||
| 603 | }) | 603 | }) |
| 604 | 604 | ||
| 605 | 605 | ||
| 606 | -}]); | 606 | +}]); |
| 607 | // ui route 配置 | 607 | // ui route 配置 |
| 608 | 608 | ||
| 609 | /** 套跑管理模块配置页面route */ | 609 | /** 套跑管理模块配置页面route */ |
| @@ -696,7 +696,7 @@ ScheduleApp.config([ | @@ -696,7 +696,7 @@ ScheduleApp.config([ | ||
| 696 | } | 696 | } |
| 697 | }) | 697 | }) |
| 698 | } | 698 | } |
| 699 | -]); | 699 | +]); |
| 700 | // ui route 配置 | 700 | // ui route 配置 |
| 701 | 701 | ||
| 702 | /** 排班计划管理配置route */ | 702 | /** 排班计划管理配置route */ |
| @@ -758,7 +758,7 @@ ScheduleApp.config([ | @@ -758,7 +758,7 @@ ScheduleApp.config([ | ||
| 758 | 758 | ||
| 759 | 759 | ||
| 760 | } | 760 | } |
| 761 | -]); | 761 | +]); |
| 762 | // ui route 配置 | 762 | // ui route 配置 |
| 763 | 763 | ||
| 764 | /** 排班计划明细配置route */ | 764 | /** 排班计划明细配置route */ |
| @@ -814,7 +814,7 @@ ScheduleApp.config([ | @@ -814,7 +814,7 @@ ScheduleApp.config([ | ||
| 814 | }); | 814 | }); |
| 815 | 815 | ||
| 816 | } | 816 | } |
| 817 | -]); | 817 | +]); |
| 818 | // ui route 配置 | 818 | // ui route 配置 |
| 819 | 819 | ||
| 820 | /** 排班调度值勤日报配置route */ | 820 | /** 排班调度值勤日报配置route */ |
| @@ -876,7 +876,7 @@ ScheduleApp.config([ | @@ -876,7 +876,7 @@ ScheduleApp.config([ | ||
| 876 | }); | 876 | }); |
| 877 | 877 | ||
| 878 | } | 878 | } |
| 879 | -]); | 879 | +]); |
| 880 | // ui route 配置 | 880 | // ui route 配置 |
| 881 | 881 | ||
| 882 | /** 排班调度值勤日报配置route */ | 882 | /** 排班调度值勤日报配置route */ |
| @@ -934,7 +934,7 @@ ScheduleApp.config([ | @@ -934,7 +934,7 @@ ScheduleApp.config([ | ||
| 934 | }); | 934 | }); |
| 935 | 935 | ||
| 936 | } | 936 | } |
| 937 | -]); | 937 | +]); |
| 938 | // ui route 配置 | 938 | // ui route 配置 |
| 939 | 939 | ||
| 940 | /** 排班规则模块配置route */ | 940 | /** 排班规则模块配置route */ |
| @@ -1028,7 +1028,7 @@ ScheduleApp.config([ | @@ -1028,7 +1028,7 @@ ScheduleApp.config([ | ||
| 1028 | } | 1028 | } |
| 1029 | }) | 1029 | }) |
| 1030 | } | 1030 | } |
| 1031 | -]); | 1031 | +]); |
| 1032 | // ui route 配置 | 1032 | // ui route 配置 |
| 1033 | 1033 | ||
| 1034 | /** 时刻表管理配置route */ | 1034 | /** 时刻表管理配置route */ |
| @@ -1140,7 +1140,7 @@ ScheduleApp.config([ | @@ -1140,7 +1140,7 @@ ScheduleApp.config([ | ||
| 1140 | 1140 | ||
| 1141 | 1141 | ||
| 1142 | } | 1142 | } |
| 1143 | -]); | 1143 | +]); |
| 1144 | // ui route 配置 | 1144 | // ui route 配置 |
| 1145 | 1145 | ||
| 1146 | /** 时刻表编辑管理配置route */ | 1146 | /** 时刻表编辑管理配置route */ |
| @@ -1287,9 +1287,47 @@ ScheduleApp.config([ | @@ -1287,9 +1287,47 @@ ScheduleApp.config([ | ||
| 1287 | ; | 1287 | ; |
| 1288 | 1288 | ||
| 1289 | } | 1289 | } |
| 1290 | -]); | 1290 | +]); |
| 1291 | +// ui route 配置 | ||
| 1292 | + | ||
| 1293 | + | ||
| 1294 | +/** 用户登录日志模块配置route */ | ||
| 1295 | +ScheduleApp.config([ | ||
| 1296 | + '$stateProvider', | ||
| 1297 | + '$urlRouterProvider', | ||
| 1298 | + function($stateProvider, $urlRouterProvider) { | ||
| 1299 | + $stateProvider | ||
| 1300 | + .state("userSignManage", { // index页面 | ||
| 1301 | + url: "/userSignManage", | ||
| 1302 | + views: { | ||
| 1303 | + "": { | ||
| 1304 | + templateUrl: "pages/scheduleApp/module/sys/userSignManage/index.html" | ||
| 1305 | + }, | ||
| 1306 | + "userSignManage_list@userSignManage": { | ||
| 1307 | + templateUrl: "pages/scheduleApp/module/sys/userSignManage/list.html" | ||
| 1308 | + } | ||
| 1309 | + }, | ||
| 1310 | + | ||
| 1311 | + resolve: { | ||
| 1312 | + deps: ["$ocLazyLoad", function($ocLazyLoad) { | ||
| 1313 | + return $ocLazyLoad.load({ | ||
| 1314 | + name: 'userSignManage_module', | ||
| 1315 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | ||
| 1316 | + files: [ | ||
| 1317 | + "assets/bower_components/angular-ui-select/dist/select.min.css", | ||
| 1318 | + "assets/bower_components/angular-ui-select/dist/select.min.js", | ||
| 1319 | + "assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js", | ||
| 1320 | + "pages/scheduleApp/module/sys/userSignManage/module.js" | ||
| 1321 | + ] | ||
| 1322 | + }); | ||
| 1323 | + }] | ||
| 1324 | + } | ||
| 1325 | + }) | ||
| 1326 | + } | ||
| 1327 | +]); | ||
| 1291 | // ui route 配置 | 1328 | // ui route 配置 |
| 1292 | 1329 | ||
| 1330 | + | ||
| 1293 | /** 时刻表管理配置route */ | 1331 | /** 时刻表管理配置route */ |
| 1294 | ScheduleApp.config([ | 1332 | ScheduleApp.config([ |
| 1295 | '$stateProvider', | 1333 | '$stateProvider', |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/newest/list_newest.html
| @@ -163,7 +163,6 @@ | @@ -163,7 +163,6 @@ | ||
| 163 | last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>', | 163 | last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>', |
| 164 | page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>', | 164 | page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>', |
| 165 | onPageChange: function (num, type) { | 165 | onPageChange: function (num, type) { |
| 166 | - debugger; | ||
| 167 | if(initPagination){ | 166 | if(initPagination){ |
| 168 | initPagination = false; | 167 | initPagination = false; |
| 169 | return; | 168 | return; |
src/main/resources/static/pages/scheduleApp/module/sys/userSignManage/index.html
0 → 100644
| 1 | +<div class="page-head"> | ||
| 2 | + <div class="page-title"> | ||
| 3 | + <h1>用户登录日志管理</h1> | ||
| 4 | + </div> | ||
| 5 | +</div> | ||
| 6 | + | ||
| 7 | +<ul class="page-breadcrumb breadcrumb"> | ||
| 8 | + <li> | ||
| 9 | + <a href="/pages/home.html" data-pjax>首页</a> | ||
| 10 | + <i class="fa fa-circle"></i> | ||
| 11 | + </li> | ||
| 12 | + <li> | ||
| 13 | + <span class="active">权限管理</span> | ||
| 14 | + <i class="fa fa-circle"></i> | ||
| 15 | + </li> | ||
| 16 | + <li> | ||
| 17 | + <span class="active">用户登录日志管理</span> | ||
| 18 | + </li> | ||
| 19 | +</ul> | ||
| 20 | + | ||
| 21 | +<div class="row"> | ||
| 22 | + <div class="col-md-12" ng-controller="UserSignManageCtrl as ctrl"> | ||
| 23 | + <style> | ||
| 24 | + .dropdown-menu { | ||
| 25 | + border-color: #32c5d2; | ||
| 26 | + } | ||
| 27 | + .btn-group > .dropdown-menu:before { | ||
| 28 | + border-bottom-color: #32c5d2; | ||
| 29 | + } | ||
| 30 | + </style> | ||
| 31 | + | ||
| 32 | + <div class="portlet light bordered"> | ||
| 33 | + <div class="portlet-title"> | ||
| 34 | + <div class="caption font-dark"> | ||
| 35 | + <i class="fa fa-database font-dark"></i> | ||
| 36 | + <span class="caption-subject bold uppercase">用户登录日志</span> | ||
| 37 | + </div> | ||
| 38 | + <div class="actions"> | ||
| 39 | + | ||
| 40 | + <div class="btn-group"> | ||
| 41 | + <a href="javascript:" class="btn red btn-outline" data-toggle="dropdown"> | ||
| 42 | + <i class="fa fa-share"></i> | ||
| 43 | + <span>数据工具</span> | ||
| 44 | + <i class="fa fa-angle-down"></i> | ||
| 45 | + </a> | ||
| 46 | + <ul class="dropdown-menu pull-right"> | ||
| 47 | + | ||
| 48 | + <li> | ||
| 49 | + <a href="javascript:" class="tool-action" ng-click="ctrl.exportData()"> | ||
| 50 | + <i class="fa fa-file-excel-o"></i> | ||
| 51 | + 导出excel | ||
| 52 | + </a> | ||
| 53 | + </li> | ||
| 54 | + | ||
| 55 | + </ul> | ||
| 56 | + </div> | ||
| 57 | + </div> | ||
| 58 | + </div> | ||
| 59 | + | ||
| 60 | + <div class="portlet-body"> | ||
| 61 | + <div ui-view="userSignManage_list"></div> | ||
| 62 | + </div> | ||
| 63 | + </div> | ||
| 64 | + </div> | ||
| 65 | +</div> | ||
| 0 | \ No newline at end of file | 66 | \ No newline at end of file |
src/main/resources/static/pages/scheduleApp/module/sys/userSignManage/list.html
0 → 100644
| 1 | +<!-- ui-route userLoginManage_list --> | ||
| 2 | +<div ng-controller="UserSignManageListCtrl as ctrl"> | ||
| 3 | + <div class="fixDiv"> | ||
| 4 | + <table class="table fixTable table-striped table-bordered table-hover table-checkable order-column"> | ||
| 5 | + <thead> | ||
| 6 | + <tr role="row" class="heading"> | ||
| 7 | + <th style="width:70px;">序号</th> | ||
| 8 | + <th style="width: 150px;">登录用户名</th> | ||
| 9 | + <th style="width: 150px;">实际用户名</th> | ||
| 10 | + <th style="width: 450px;">登入/登出时间</th> | ||
| 11 | + <th >操作</th> | ||
| 12 | + </tr> | ||
| 13 | + <tr role="row" class="filter"> | ||
| 14 | + <td></td> | ||
| 15 | + <td> | ||
| 16 | + <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().logName_like" placeholder="输入登录用户名..."/> | ||
| 17 | + </td> | ||
| 18 | + <td> | ||
| 19 | + <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().realName_like" placeholder="输入实际用户名..."/> | ||
| 20 | + </td> | ||
| 21 | + | ||
| 22 | + <td> | ||
| 23 | + <div class="input-group" style="width:220px;"> | ||
| 24 | + <input type="text" class="form-control input-sm" | ||
| 25 | + name="statFromDateTime" placeholder="选择日期..." | ||
| 26 | + uib-datepicker-popup="yyyy-MM-dd" | ||
| 27 | + is-open="ctrl.statFromDateTime_open" | ||
| 28 | + ng-model="ctrl.statFromDateWithConditionGetSetFun" | ||
| 29 | + ng-model-options="{ getterSetter: true }" readonly/> | ||
| 30 | + <span class="input-group-btn"> | ||
| 31 | + <button type="button" class="btn btn-default btn-sm" ng-click="ctrl.statFromDateTime_open_fun()"> | ||
| 32 | + <i class="glyphicon glyphicon-calendar"></i> | ||
| 33 | + </button> | ||
| 34 | + </span> | ||
| 35 | + </div> | ||
| 36 | + | ||
| 37 | + </td> | ||
| 38 | + | ||
| 39 | + <td> | ||
| 40 | + <button class="btn btn-sm green btn-outline filter-submit margin-bottom" style="margin-right: 0;" | ||
| 41 | + ng-click="ctrl.doPage()"> | ||
| 42 | + <i class="fa fa-search"></i> | ||
| 43 | + 搜索 | ||
| 44 | + </button> | ||
| 45 | + | ||
| 46 | + <button class="btn btn-sm red btn-outline filter-cancel" | ||
| 47 | + ng-click="ctrl.reset()"> | ||
| 48 | + <i class="fa fa-times"></i> | ||
| 49 | + 重置 | ||
| 50 | + </button> | ||
| 51 | + | ||
| 52 | + </td> | ||
| 53 | + | ||
| 54 | + </tr> | ||
| 55 | + </thead> | ||
| 56 | + <tbody> | ||
| 57 | + <tr ng-repeat="info in ctrl.page()['content']" class="odd gradeX"> | ||
| 58 | + <td> | ||
| 59 | + <div> | ||
| 60 | + <a href="#"> | ||
| 61 | + <i class="fa fa-list-ol" aria-hidden="true"></i> | ||
| 62 | + {{$index + ctrl.page().number * 10 + 1}} | ||
| 63 | + </a> | ||
| 64 | + </div> | ||
| 65 | + </td> | ||
| 66 | + <td> | ||
| 67 | + <span ng-bind="info.logName"></span> | ||
| 68 | + </td> | ||
| 69 | + <td> | ||
| 70 | + <span ng-bind="info.realName"></span> | ||
| 71 | + </td> | ||
| 72 | + <td> | ||
| 73 | + <div style="float: left; width:200px; padding-right: 20px;"> | ||
| 74 | + <a href="#"> | ||
| 75 | + <i class="fa fa-sign-in" aria-hidden="true"></i> | ||
| 76 | + 登入 <span ng-bind="info.logInDateTime | date: 'yyyy-MM-dd HH:mm:ss'"></span> | ||
| 77 | + </a> | ||
| 78 | + </div> | ||
| 79 | + <div style="float: left;"> | ||
| 80 | + <a href="#"> | ||
| 81 | + <i class="fa fa-sign-out" aria-hidden="true"></i> | ||
| 82 | + 登出 <span ng-bind="info.logOutDateTime | date: 'yyyy-MM-dd HH:mm:ss'"></span> | ||
| 83 | + </a> | ||
| 84 | + </div> | ||
| 85 | + </td> | ||
| 86 | + | ||
| 87 | + <td></td> | ||
| 88 | + </tr> | ||
| 89 | + </tbody> | ||
| 90 | + </table> | ||
| 91 | + </div> | ||
| 92 | + | ||
| 93 | + <div class="pageBar"> | ||
| 94 | + <div class="pageBarLeft"> | ||
| 95 | + {{'显示从' + ctrl.page()['uiFromRecord'] + '到' + ctrl.page()['uiToRecord'] + ' 共' + ctrl.page()['totalElements'] + '条' + ' 每页显示10条'}} | ||
| 96 | + </div> | ||
| 97 | + | ||
| 98 | + <div class="pageBarRight"> | ||
| 99 | + <uib-pagination total-items="ctrl.page()['totalElements']" | ||
| 100 | + ng-model="ctrl.page()['uiNumber']" | ||
| 101 | + ng-change="ctrl.doPage()" | ||
| 102 | + rotate="false" | ||
| 103 | + max-size="10" | ||
| 104 | + boundary-links="true" | ||
| 105 | + first-text="首页" | ||
| 106 | + previous-text="上一页" | ||
| 107 | + next-text="下一页" | ||
| 108 | + last-text="尾页"> | ||
| 109 | + </uib-pagination> | ||
| 110 | + </div> | ||
| 111 | + </div> | ||
| 112 | + | ||
| 113 | +</div> |
src/main/resources/static/pages/scheduleApp/module/sys/userSignManage/module.js
0 → 100644
| 1 | +// 用户登录日志管理 | ||
| 2 | + | ||
| 3 | +angular.module('ScheduleApp').factory( | ||
| 4 | + 'UserSignManageService', | ||
| 5 | + [ | ||
| 6 | + 'UserSignManageService_g', | ||
| 7 | + function(service) { | ||
| 8 | + /** 当前的查询条件信息 */ | ||
| 9 | + var currentSearchCondition = { | ||
| 10 | + page: 0, | ||
| 11 | + "logName_like" : "", | ||
| 12 | + "realName_like" : "" | ||
| 13 | + }; | ||
| 14 | + // 当前查询返回的信息 | ||
| 15 | + var currentPage = { // 后台spring data返回的格式 | ||
| 16 | + totalElements: 0, | ||
| 17 | + number: 0, // 后台返回的页码,spring返回从0开始 | ||
| 18 | + content: [], | ||
| 19 | + | ||
| 20 | + uiNumber: 1, // 页面绑定的页码 | ||
| 21 | + uiFromRecord: 0, // 页面绑定,当前页第几条记录 | ||
| 22 | + uiToRecord: 0 // 页面绑定,当前页到第几条记录 | ||
| 23 | + }; | ||
| 24 | + | ||
| 25 | + // 查询对象 | ||
| 26 | + var queryClass = service.rest; | ||
| 27 | + | ||
| 28 | + return { | ||
| 29 | + getQueryClass: function() { | ||
| 30 | + return queryClass; | ||
| 31 | + }, | ||
| 32 | + /** | ||
| 33 | + * 获取查询条件信息, | ||
| 34 | + * 用于给controller用来和页面数据绑定。 | ||
| 35 | + */ | ||
| 36 | + getSearchCondition: function() { | ||
| 37 | + currentSearchCondition.page = currentPage.uiNumber - 1; | ||
| 38 | + return currentSearchCondition; | ||
| 39 | + }, | ||
| 40 | + /** | ||
| 41 | + * 组装查询参数,返回一个promise查询结果。 | ||
| 42 | + * @param params 查询参数 | ||
| 43 | + * @return 返回一个 promise | ||
| 44 | + */ | ||
| 45 | + getPage: function(page) { | ||
| 46 | + if (page) { | ||
| 47 | + currentPage.totalElements = page.totalElements; | ||
| 48 | + currentPage.number = page.number; | ||
| 49 | + currentPage.content = page.content; | ||
| 50 | + | ||
| 51 | + // 计算当前页开始记录,结束记录 | ||
| 52 | + if (page.numberOfElements && page.numberOfElements > 0) { | ||
| 53 | + currentPage.uiFromRecord = page.number * 10 + 1; | ||
| 54 | + currentPage.uiToRecord = page.number * 10 + page.numberOfElements; | ||
| 55 | + } | ||
| 56 | + } | ||
| 57 | + return currentPage; | ||
| 58 | + }, | ||
| 59 | + resetStatus: function() { | ||
| 60 | + currentSearchCondition = {page: 0}; | ||
| 61 | + currentPage = { | ||
| 62 | + totalElements: 0, | ||
| 63 | + number: 0, | ||
| 64 | + content: [], | ||
| 65 | + uiNumber: 1, | ||
| 66 | + uiFromRecord: 0, | ||
| 67 | + uiToRecord: 0 | ||
| 68 | + }; | ||
| 69 | + }, | ||
| 70 | + | ||
| 71 | + /** | ||
| 72 | + * 数据导出。 | ||
| 73 | + * @returns {*|Function|promise|n} | ||
| 74 | + */ | ||
| 75 | + dataExport: function(query) { | ||
| 76 | + return service.dataTools.dataExport( | ||
| 77 | + {'QUERY': query} | ||
| 78 | + ).$promise; | ||
| 79 | + } | ||
| 80 | + }; | ||
| 81 | + } | ||
| 82 | + ] | ||
| 83 | +); | ||
| 84 | + | ||
| 85 | +// index.html控制器 | ||
| 86 | +angular.module('ScheduleApp').controller( | ||
| 87 | + 'UserSignManageCtrl', | ||
| 88 | + [ | ||
| 89 | + 'UserSignManageService', | ||
| 90 | + '$state', | ||
| 91 | + 'FileDownload_g', | ||
| 92 | + function(busInfoManageService, $state, fileDownload) { | ||
| 93 | + var self = this; | ||
| 94 | + | ||
| 95 | + // 导出excel | ||
| 96 | + self.exportData = function() { | ||
| 97 | + // 组装查询条件(mysql) | ||
| 98 | + var QUERY = []; | ||
| 99 | + | ||
| 100 | + var condition = busInfoManageService.getSearchCondition(); | ||
| 101 | + | ||
| 102 | + // logName条件 | ||
| 103 | + if (condition["logName_like"]) { | ||
| 104 | + QUERY.push("(log_name like '%" + condition["logName_like"] + "%'" + ")"); | ||
| 105 | + } | ||
| 106 | + // realName条件 | ||
| 107 | + if (condition["realName_like"]) { | ||
| 108 | + QUERY.push("(real_name like '%" + condition["realName_like"] + "%'" + ")"); | ||
| 109 | + } | ||
| 110 | + // 日期条件 | ||
| 111 | + if (condition["logInDateTime_ge"]) { | ||
| 112 | + var _date_ = moment(condition["logInDateTime_ge"]); | ||
| 113 | + var _date_1_ = moment(condition["logInDateTime_le"]); | ||
| 114 | + var _date_query_ = []; | ||
| 115 | + _date_query_.push(" ( "); | ||
| 116 | + _date_query_.push(" ( "); | ||
| 117 | + _date_query_.push(" log_in_date_time >= '" + _date_.format("YYYY-MM-DD") + "' "); | ||
| 118 | + _date_query_.push(" and "); | ||
| 119 | + _date_query_.push(" log_in_date_time <= '" + _date_1_.format("YYYY-MM-DD") + "' "); | ||
| 120 | + _date_query_.push(" ) "); | ||
| 121 | + _date_query_.push(" or "); | ||
| 122 | + _date_query_.push(" ( "); | ||
| 123 | + _date_query_.push(" log_out_date_time >= '" + _date_.format("YYYY-MM-DD") + "' "); | ||
| 124 | + _date_query_.push(" and "); | ||
| 125 | + _date_query_.push(" log_out_date_time <= '" + _date_1_.format("YYYY-MM-DD") + "' "); | ||
| 126 | + _date_query_.push(" ) "); | ||
| 127 | + _date_query_.push(" ) "); | ||
| 128 | + QUERY.push(_date_query_.join("")); | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | + // console.log(QUERY.join(" and ")); | ||
| 132 | + | ||
| 133 | + if (QUERY.length == 0) { | ||
| 134 | + QUERY.push(" 1 = 1 "); | ||
| 135 | + } | ||
| 136 | + | ||
| 137 | + var p = busInfoManageService.dataExport(QUERY.join(" and ")); | ||
| 138 | + if (p) { | ||
| 139 | + p.then( | ||
| 140 | + function(result) { | ||
| 141 | + fileDownload.downloadFile(result.data, "application/octet-stream", "用户登录日志.xls"); | ||
| 142 | + }, | ||
| 143 | + function(result) { | ||
| 144 | + console.log("exportData failed:" + result); | ||
| 145 | + } | ||
| 146 | + ); | ||
| 147 | + } | ||
| 148 | + | ||
| 149 | + }; | ||
| 150 | + } | ||
| 151 | + ] | ||
| 152 | +); | ||
| 153 | + | ||
| 154 | +// list.html控制器 | ||
| 155 | +angular.module('ScheduleApp').controller( | ||
| 156 | + 'UserSignManageListCtrl', | ||
| 157 | + [ | ||
| 158 | + 'UserSignManageService', | ||
| 159 | + function(service) { | ||
| 160 | + var self = this; | ||
| 161 | + | ||
| 162 | + // 日期 日期控件开关 | ||
| 163 | + self.statFromDateTime_open = false; | ||
| 164 | + self.statFromDateTime_open_fun = function() { | ||
| 165 | + self.statFromDateTime_open = true; | ||
| 166 | + }; | ||
| 167 | + self.statFromDateTime = null; | ||
| 168 | + self.statFromDateWithConditionGetSetFun = function(value) { | ||
| 169 | + if (arguments.length == 0) { // 作为get方法 | ||
| 170 | + return self.statFromDateTime; | ||
| 171 | + } else { | ||
| 172 | + self.statFromDateTime = value; | ||
| 173 | + if (value) { | ||
| 174 | + // 计算条件,当前日期添加一天组成范围查询 | ||
| 175 | + var _date = moment(self.statFromDateTime); | ||
| 176 | + var _date_plus_day_1 = moment(self.statFromDateTime).add(1, 'd'); | ||
| 177 | + service.getSearchCondition()['logInDateTime_ge'] = _date.toDate(); | ||
| 178 | + service.getSearchCondition()['logInDateTime_le'] = _date_plus_day_1.toDate(); | ||
| 179 | + } else { | ||
| 180 | + service.getSearchCondition()['logInDateTime_ge'] = null; | ||
| 181 | + service.getSearchCondition()['logInDateTime_le'] = null; | ||
| 182 | + } | ||
| 183 | + | ||
| 184 | + } | ||
| 185 | + }; | ||
| 186 | + | ||
| 187 | + var UserLogInOut = service.getQueryClass(); | ||
| 188 | + | ||
| 189 | + self.page = function() { | ||
| 190 | + return service.getPage(); | ||
| 191 | + }; | ||
| 192 | + | ||
| 193 | + self.searchCondition = function() { | ||
| 194 | + return service.getSearchCondition(); | ||
| 195 | + }; | ||
| 196 | + | ||
| 197 | + self.doPage = function() { | ||
| 198 | + var result = UserLogInOut.list(self.searchCondition(), function() { | ||
| 199 | + if (!result.status) { | ||
| 200 | + service.getPage(result); | ||
| 201 | + } | ||
| 202 | + }); | ||
| 203 | + }; | ||
| 204 | + self.reset = function() { | ||
| 205 | + service.resetStatus(); | ||
| 206 | + self.statFromDateWithConditionGetSetFun(null); | ||
| 207 | + var result = UserLogInOut.list(self.searchCondition(), function() { | ||
| 208 | + if (!result.status) { | ||
| 209 | + service.getPage(result); | ||
| 210 | + } | ||
| 211 | + }); | ||
| 212 | + }; | ||
| 213 | + | ||
| 214 | + self.doPage(); | ||
| 215 | + | ||
| 216 | + } | ||
| 217 | + ] | ||
| 218 | +); | ||
| 219 | + | ||
| 220 | + | ||
| 221 | + | ||
| 222 | + | ||
| 223 | + | ||
| 224 | + | ||
| 225 | + | ||
| 226 | + | ||
| 227 | + | ||
| 228 | + |
src/main/resources/static/pages/scheduleApp/module/sys/userSignManage/route.js
0 → 100644
| 1 | +// ui route 配置 | ||
| 2 | + | ||
| 3 | +/** 用户登录日志模块配置route */ | ||
| 4 | +ScheduleApp.config([ | ||
| 5 | + '$stateProvider', | ||
| 6 | + '$urlRouterProvider', | ||
| 7 | + function($stateProvider, $urlRouterProvider) { | ||
| 8 | + $stateProvider | ||
| 9 | + .state("userSignManage", { // index页面 | ||
| 10 | + url: "/userSignManage", | ||
| 11 | + views: { | ||
| 12 | + "": { | ||
| 13 | + templateUrl: "pages/scheduleApp/module/sys/userSignManage/index.html" | ||
| 14 | + }, | ||
| 15 | + "userSignManage_list@userSignManage": { | ||
| 16 | + templateUrl: "pages/scheduleApp/module/sys/userSignManage/list.html" | ||
| 17 | + } | ||
| 18 | + }, | ||
| 19 | + | ||
| 20 | + resolve: { | ||
| 21 | + deps: ["$ocLazyLoad", function($ocLazyLoad) { | ||
| 22 | + return $ocLazyLoad.load({ | ||
| 23 | + name: 'userSignManage_module', | ||
| 24 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | ||
| 25 | + files: [ | ||
| 26 | + "assets/bower_components/angular-ui-select/dist/select.min.css", | ||
| 27 | + "assets/bower_components/angular-ui-select/dist/select.min.js", | ||
| 28 | + "assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js", | ||
| 29 | + "pages/scheduleApp/module/sys/userSignManage/module.js" | ||
| 30 | + ] | ||
| 31 | + }); | ||
| 32 | + }] | ||
| 33 | + } | ||
| 34 | + }) | ||
| 35 | + } | ||
| 36 | +]); | ||
| 0 | \ No newline at end of file | 37 | \ No newline at end of file |
src/main/resources/static/pages/scheduleApp/module/sys/userSignManage/service.js
0 → 100644
| 1 | +// 用户登录日志service | ||
| 2 | +angular.module('ScheduleApp').factory( | ||
| 3 | + "UserSignManageService_g", | ||
| 4 | + [ | ||
| 5 | + '$resource', | ||
| 6 | + function($resource) { | ||
| 7 | + return { | ||
| 8 | + rest: $resource( | ||
| 9 | + "/logger_user_sign/:id", | ||
| 10 | + {id: '@id'}, | ||
| 11 | + { | ||
| 12 | + list: { | ||
| 13 | + method: 'GET', | ||
| 14 | + params: { | ||
| 15 | + page: 0 | ||
| 16 | + }, | ||
| 17 | + transformResponse: function(rs) { | ||
| 18 | + var dst = angular.fromJson(rs); | ||
| 19 | + if (dst.status == 'SUCCESS') { | ||
| 20 | + return dst.data; | ||
| 21 | + } else { | ||
| 22 | + return dst; // 业务错误留给控制器处理 | ||
| 23 | + } | ||
| 24 | + } | ||
| 25 | + } | ||
| 26 | + } | ||
| 27 | + ), | ||
| 28 | + dataTools: $resource( | ||
| 29 | + '/logger_user_sign/:type', | ||
| 30 | + {}, | ||
| 31 | + { | ||
| 32 | + dataExport: { | ||
| 33 | + method: 'GET', | ||
| 34 | + responseType: "arraybuffer", | ||
| 35 | + params: { | ||
| 36 | + type: "exportFile" | ||
| 37 | + }, | ||
| 38 | + transformResponse: function(data, headers){ | ||
| 39 | + return {data : data}; | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | + } | ||
| 43 | + ) | ||
| 44 | + }; | ||
| 45 | + } | ||
| 46 | + ] | ||
| 47 | +); | ||
| 0 | \ No newline at end of file | 48 | \ No newline at end of file |