mirror of
https://gitee.com/dromara/MaxKey.git
synced 2025-12-06 17:08:29 +08:00
SessionManager and UI Fix
This commit is contained in:
parent
f22e71c1ef
commit
853f45a315
@ -275,9 +275,6 @@ subprojects {
|
|||||||
implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}"
|
||||||
implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}"
|
||||||
implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}"
|
||||||
//spring-session
|
|
||||||
implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}"
|
|
||||||
implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}"
|
|
||||||
|
|
||||||
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}"
|
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}"
|
||||||
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}"
|
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}"
|
||||||
|
|||||||
@ -240,10 +240,7 @@ subprojects {
|
|||||||
implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}"
|
||||||
implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}"
|
||||||
implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}"
|
||||||
//spring-session
|
|
||||||
implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}"
|
|
||||||
implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}"
|
|
||||||
|
|
||||||
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}"
|
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}"
|
||||||
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}"
|
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}"
|
||||||
//spring cloud
|
//spring cloud
|
||||||
|
|||||||
@ -240,10 +240,7 @@ subprojects {
|
|||||||
implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}"
|
||||||
implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}"
|
||||||
implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}"
|
||||||
//spring-session
|
|
||||||
implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}"
|
|
||||||
implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}"
|
|
||||||
|
|
||||||
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}"
|
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}"
|
||||||
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}"
|
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}"
|
||||||
//spring cloud
|
//spring cloud
|
||||||
|
|||||||
@ -275,10 +275,7 @@ subprojects {
|
|||||||
implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}"
|
||||||
implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}"
|
||||||
implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}"
|
implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}"
|
||||||
//spring-session
|
|
||||||
implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}"
|
|
||||||
implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}"
|
|
||||||
|
|
||||||
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}"
|
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}"
|
||||||
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}"
|
//implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}"
|
||||||
//spring cloud
|
//spring cloud
|
||||||
|
|||||||
@ -63,8 +63,8 @@ tomcatVersion =9.0.62
|
|||||||
tomcatembedloggingjuliVersion =8.5.2
|
tomcatembedloggingjuliVersion =8.5.2
|
||||||
#spring
|
#spring
|
||||||
springVersion =5.3.20
|
springVersion =5.3.20
|
||||||
springBootVersion =2.6.7
|
springBootVersion =2.6.8
|
||||||
springSecurityVersion =5.6.4
|
springSecurityVersion =5.6.5
|
||||||
springDataVersion =2.6.4
|
springDataVersion =2.6.4
|
||||||
springSessionVersion =2.6.3
|
springSessionVersion =2.6.3
|
||||||
springkafkaVersion =2.8.2
|
springkafkaVersion =2.8.2
|
||||||
@ -95,8 +95,8 @@ knife4jVersion =3.0.3
|
|||||||
#database
|
#database
|
||||||
postgresqlVersion =42.3.3
|
postgresqlVersion =42.3.3
|
||||||
mysqlconnectorjavaVersion =8.0.26
|
mysqlconnectorjavaVersion =8.0.26
|
||||||
druidVersion =1.2.8
|
druidVersion =1.2.9
|
||||||
druidspringbootstarterVersion =1.2.8
|
druidspringbootstarterVersion =1.2.9
|
||||||
jedisVersion =3.8.0
|
jedisVersion =3.8.0
|
||||||
ehcacheVersion =3.9.6
|
ehcacheVersion =3.9.6
|
||||||
caffeineVersion =2.9.2
|
caffeineVersion =2.9.2
|
||||||
|
|||||||
@ -17,8 +17,7 @@
|
|||||||
|
|
||||||
package org.maxkey.authn.session;
|
package org.maxkey.authn.session;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.LocalDateTime;
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@ -43,6 +42,7 @@ public class InMemorySessionManager implements SessionManager{
|
|||||||
|
|
||||||
public InMemorySessionManager(int validitySeconds) {
|
public InMemorySessionManager(int validitySeconds) {
|
||||||
super();
|
super();
|
||||||
|
this.validitySeconds = validitySeconds;
|
||||||
sessionStore =
|
sessionStore =
|
||||||
Caffeine.newBuilder()
|
Caffeine.newBuilder()
|
||||||
.expireAfterWrite(validitySeconds, TimeUnit.SECONDS)
|
.expireAfterWrite(validitySeconds, TimeUnit.SECONDS)
|
||||||
@ -53,6 +53,7 @@ public class InMemorySessionManager implements SessionManager{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void create(String sessionId, Session session) {
|
public void create(String sessionId, Session session) {
|
||||||
|
session.setExpiredTime(session.getLastAccessTime().plusSeconds(validitySeconds));
|
||||||
sessionStore.put(sessionId, session);
|
sessionStore.put(sessionId, session);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,10 +71,15 @@ public class InMemorySessionManager implements SessionManager{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Session refresh(String sessionId,LocalTime refreshTime) {
|
public Session refresh(String sessionId,LocalDateTime refreshTime) {
|
||||||
Session session = get(sessionId);
|
Session session = get(sessionId);
|
||||||
session.setLastAccessTime(refreshTime);
|
if(session != null) {
|
||||||
create(sessionId , session);
|
_logger.debug("refresh session Id {} at refreshTime {}",sessionId,refreshTime);
|
||||||
|
session.setLastAccessTime(refreshTime);
|
||||||
|
//invalidate sessionId then renew one
|
||||||
|
sessionStore.invalidate(sessionId);
|
||||||
|
create(sessionId , session);
|
||||||
|
}
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,18 +87,21 @@ public class InMemorySessionManager implements SessionManager{
|
|||||||
public Session refresh(String sessionId) {
|
public Session refresh(String sessionId) {
|
||||||
Session session = get(sessionId);
|
Session session = get(sessionId);
|
||||||
|
|
||||||
LocalTime currentTime = LocalTime.now();
|
if(session != null) {
|
||||||
Duration duration = Duration.between(currentTime, session.getLastAccessTime());
|
LocalDateTime currentTime = LocalDateTime.now();
|
||||||
|
_logger.debug("refresh session Id {} at time {}",sessionId,currentTime);
|
||||||
_logger.trace("Session duration " + duration.getSeconds());
|
|
||||||
|
|
||||||
if(duration.getSeconds() > Session.MAX_EXPIRY_DURATION) {
|
|
||||||
session.setLastAccessTime(currentTime);
|
session.setLastAccessTime(currentTime);
|
||||||
return refresh(sessionId,currentTime);
|
//invalidate sessionId then renew one
|
||||||
|
sessionStore.invalidate(sessionId);
|
||||||
|
create(sessionId , session);
|
||||||
}
|
}
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getValiditySeconds() {
|
||||||
|
return validitySeconds;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HistoryLogin> querySessions() {
|
public List<HistoryLogin> querySessions() {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|||||||
@ -17,8 +17,7 @@
|
|||||||
|
|
||||||
package org.maxkey.authn.session;
|
package org.maxkey.authn.session;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.LocalDateTime;
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.maxkey.entity.HistoryLogin;
|
import org.maxkey.entity.HistoryLogin;
|
||||||
@ -65,6 +64,7 @@ public class RedisSessionManager implements SessionManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void create(String sessionId, Session session) {
|
public void create(String sessionId, Session session) {
|
||||||
|
session.setExpiredTime(session.getLastAccessTime().plusSeconds(validitySeconds));
|
||||||
RedisConnection conn = connectionFactory.getConnection();
|
RedisConnection conn = connectionFactory.getConnection();
|
||||||
conn.setexObject( getKey(sessionId), validitySeconds, session);
|
conn.setexObject( getKey(sessionId), validitySeconds, session);
|
||||||
conn.close();
|
conn.close();
|
||||||
@ -97,25 +97,24 @@ public class RedisSessionManager implements SessionManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Session refresh(String sessionId,LocalTime refreshTime) {
|
public Session refresh(String sessionId,LocalDateTime refreshTime) {
|
||||||
Session session = get(sessionId);
|
Session session = get(sessionId);
|
||||||
session.setLastAccessTime(refreshTime);
|
if(session != null) {
|
||||||
create(sessionId , session);
|
_logger.debug("refresh session Id {} at {}",sessionId,refreshTime);
|
||||||
|
session.setLastAccessTime(refreshTime);
|
||||||
|
create(sessionId , session);
|
||||||
|
}
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Session refresh(String sessionId) {
|
public Session refresh(String sessionId) {
|
||||||
Session session = get(sessionId);
|
Session session = get(sessionId);
|
||||||
|
if(session != null) {
|
||||||
LocalTime currentTime = LocalTime.now();
|
LocalDateTime currentTime = LocalDateTime.now();
|
||||||
Duration duration = Duration.between(currentTime, session.getLastAccessTime());
|
_logger.debug("refresh session Id {} at time {}",sessionId,currentTime);
|
||||||
|
|
||||||
_logger.trace("Session duration " + duration.getSeconds());
|
|
||||||
|
|
||||||
if(duration.getSeconds() > Session.MAX_EXPIRY_DURATION) {
|
|
||||||
session.setLastAccessTime(currentTime);
|
session.setLastAccessTime(currentTime);
|
||||||
return refresh(sessionId,currentTime);
|
create(sessionId , session);
|
||||||
}
|
}
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
package org.maxkey.authn.session;
|
package org.maxkey.authn.session;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
import org.maxkey.entity.apps.Apps;
|
import org.maxkey.entity.apps.Apps;
|
||||||
@ -34,9 +34,11 @@ public class Session implements Serializable{
|
|||||||
|
|
||||||
public String id;
|
public String id;
|
||||||
|
|
||||||
public LocalTime startTimestamp;
|
public LocalDateTime startTimestamp;
|
||||||
|
|
||||||
public LocalTime lastAccessTime;
|
public LocalDateTime lastAccessTime;
|
||||||
|
|
||||||
|
public LocalDateTime expiredTime;
|
||||||
|
|
||||||
public Authentication authentication;
|
public Authentication authentication;
|
||||||
|
|
||||||
@ -45,23 +47,23 @@ public class Session implements Serializable{
|
|||||||
public Session() {
|
public Session() {
|
||||||
super();
|
super();
|
||||||
this.id = WebContext.genId();;
|
this.id = WebContext.genId();;
|
||||||
this.startTimestamp = LocalTime.now();
|
this.startTimestamp = LocalDateTime.now();
|
||||||
this.lastAccessTime = LocalTime.now();
|
this.lastAccessTime = LocalDateTime.now();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Session(String sessionId) {
|
public Session(String sessionId) {
|
||||||
super();
|
super();
|
||||||
this.id = sessionId;
|
this.id = sessionId;
|
||||||
this.startTimestamp = LocalTime.now();
|
this.startTimestamp = LocalDateTime.now();
|
||||||
this.lastAccessTime = LocalTime.now();
|
this.lastAccessTime = LocalDateTime.now();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Session(String sessionId,Authentication authentication) {
|
public Session(String sessionId,Authentication authentication) {
|
||||||
super();
|
super();
|
||||||
this.id = sessionId;
|
this.id = sessionId;
|
||||||
this.authentication = authentication;
|
this.authentication = authentication;
|
||||||
this.startTimestamp = LocalTime.now();
|
this.startTimestamp = LocalDateTime.now();
|
||||||
this.lastAccessTime = LocalTime.now();
|
this.lastAccessTime = LocalDateTime.now();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
@ -77,22 +79,30 @@ public class Session implements Serializable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public LocalTime getStartTimestamp() {
|
public LocalDateTime getStartTimestamp() {
|
||||||
return startTimestamp;
|
return startTimestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStartTimestamp(LocalTime startTimestamp) {
|
public void setStartTimestamp(LocalDateTime startTimestamp) {
|
||||||
this.startTimestamp = startTimestamp;
|
this.startTimestamp = startTimestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LocalTime getLastAccessTime() {
|
public LocalDateTime getLastAccessTime() {
|
||||||
return lastAccessTime;
|
return lastAccessTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLastAccessTime(LocalTime lastAccessTime) {
|
public void setLastAccessTime(LocalDateTime lastAccessTime) {
|
||||||
this.lastAccessTime = lastAccessTime;
|
this.lastAccessTime = lastAccessTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getExpiredTime() {
|
||||||
|
return expiredTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExpiredTime(LocalDateTime expiredTime) {
|
||||||
|
this.expiredTime = expiredTime;
|
||||||
|
}
|
||||||
|
|
||||||
public Authentication getAuthentication() {
|
public Authentication getAuthentication() {
|
||||||
return authentication;
|
return authentication;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
package org.maxkey.authn.session;
|
package org.maxkey.authn.session;
|
||||||
|
|
||||||
import java.time.LocalTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.maxkey.entity.HistoryLogin;
|
import org.maxkey.entity.HistoryLogin;
|
||||||
@ -30,11 +30,13 @@ public interface SessionManager {
|
|||||||
|
|
||||||
public Session get(String sessionId);
|
public Session get(String sessionId);
|
||||||
|
|
||||||
public Session refresh(String sessionId ,LocalTime refreshTime);
|
public Session refresh(String sessionId ,LocalDateTime refreshTime);
|
||||||
|
|
||||||
public Session refresh(String sessionId);
|
public Session refresh(String sessionId);
|
||||||
|
|
||||||
public List<HistoryLogin> querySessions();
|
public List<HistoryLogin> querySessions();
|
||||||
|
|
||||||
|
public int getValiditySeconds();
|
||||||
|
|
||||||
public void terminate(String sessionId,String userId,String username);
|
public void terminate(String sessionId,String userId,String username);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@ package org.maxkey.authn.session;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Types;
|
import java.sql.Types;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -34,6 +34,14 @@ import org.slf4j.LoggerFactory;
|
|||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SessionManager
|
||||||
|
* Level 1 in memory,store in Caffeine
|
||||||
|
* Level 2 in Redis
|
||||||
|
* user session status in database
|
||||||
|
* @author shimh
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class SessionManagerFactory implements SessionManager{
|
public class SessionManagerFactory implements SessionManager{
|
||||||
private static final Logger _logger =
|
private static final Logger _logger =
|
||||||
LoggerFactory.getLogger(SessionManagerFactory.class);
|
LoggerFactory.getLogger(SessionManagerFactory.class);
|
||||||
@ -53,12 +61,15 @@ public class SessionManagerFactory implements SessionManager{
|
|||||||
|
|
||||||
private RedisSessionManager redisSessionManager;
|
private RedisSessionManager redisSessionManager;
|
||||||
|
|
||||||
private boolean isRedis = false;
|
private boolean isRedis = false;
|
||||||
|
|
||||||
|
private int validitySeconds ;
|
||||||
|
|
||||||
public SessionManagerFactory(int persistence,
|
public SessionManagerFactory(int persistence,
|
||||||
JdbcTemplate jdbcTemplate,
|
JdbcTemplate jdbcTemplate,
|
||||||
RedisConnectionFactory redisConnFactory,
|
RedisConnectionFactory redisConnFactory,
|
||||||
int validitySeconds) {
|
int validitySeconds) {
|
||||||
|
this.validitySeconds = validitySeconds;
|
||||||
this.jdbcTemplate = jdbcTemplate;
|
this.jdbcTemplate = jdbcTemplate;
|
||||||
this.inMemorySessionManager =
|
this.inMemorySessionManager =
|
||||||
new InMemorySessionManager(validitySeconds);
|
new InMemorySessionManager(validitySeconds);
|
||||||
@ -94,11 +105,12 @@ public class SessionManagerFactory implements SessionManager{
|
|||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Session refresh(String sessionId, LocalTime refreshTime) {
|
public Session refresh(String sessionId, LocalDateTime refreshTime) {
|
||||||
Session session = null;
|
Session session = null;
|
||||||
if(isRedis) {
|
if(isRedis) {
|
||||||
session = redisSessionManager.refresh(sessionId,refreshTime);
|
session = redisSessionManager.refresh(sessionId,refreshTime);
|
||||||
//renew one
|
//renew one
|
||||||
|
inMemorySessionManager.remove(sessionId);
|
||||||
inMemorySessionManager.create(sessionId, session);
|
inMemorySessionManager.create(sessionId, session);
|
||||||
}else {
|
}else {
|
||||||
session = inMemorySessionManager.refresh(sessionId,refreshTime);
|
session = inMemorySessionManager.refresh(sessionId,refreshTime);
|
||||||
@ -111,6 +123,7 @@ public class SessionManagerFactory implements SessionManager{
|
|||||||
if(isRedis) {
|
if(isRedis) {
|
||||||
session = redisSessionManager.refresh(sessionId);
|
session = redisSessionManager.refresh(sessionId);
|
||||||
//renew one
|
//renew one
|
||||||
|
inMemorySessionManager.remove(sessionId);
|
||||||
inMemorySessionManager.create(sessionId, session);
|
inMemorySessionManager.create(sessionId, session);
|
||||||
}else {
|
}else {
|
||||||
session = inMemorySessionManager.refresh(sessionId);
|
session = inMemorySessionManager.refresh(sessionId);
|
||||||
@ -142,12 +155,16 @@ public class SessionManagerFactory implements SessionManager{
|
|||||||
|
|
||||||
public void terminate(String sessionId, String userId, String username) {
|
public void terminate(String sessionId, String userId, String username) {
|
||||||
String lastLogoffTime = DateUtils.formatDateTime(new Date());
|
String lastLogoffTime = DateUtils.formatDateTime(new Date());
|
||||||
_logger.trace("{} user {} terminate Ticket {} ." ,lastLogoffTime,username, sessionId);
|
_logger.trace("{} user {} terminate session {} ." ,lastLogoffTime,username, sessionId);
|
||||||
this.profileLastLogoffTime(userId, lastLogoffTime);
|
this.profileLastLogoffTime(userId, lastLogoffTime);
|
||||||
this.sessionLogoff(sessionId, lastLogoffTime);
|
this.sessionLogoff(sessionId, lastLogoffTime);
|
||||||
this.remove(sessionId);
|
this.remove(sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getValiditySeconds() {
|
||||||
|
return validitySeconds;
|
||||||
|
}
|
||||||
|
|
||||||
private final class OnlineTicketRowMapper implements RowMapper<HistoryLogin> {
|
private final class OnlineTicketRowMapper implements RowMapper<HistoryLogin> {
|
||||||
@Override
|
@Override
|
||||||
public HistoryLogin mapRow(ResultSet rs, int rowNum)
|
public HistoryLogin mapRow(ResultSet rs, int rowNum)
|
||||||
|
|||||||
@ -35,8 +35,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping(value = "/auth")
|
@RequestMapping(value = "/auth")
|
||||||
public class LoginRefreshPoint {
|
public class LoginTokenRefreshPoint {
|
||||||
private static final Logger _logger = LoggerFactory.getLogger(LoginRefreshPoint.class);
|
private static final Logger _logger = LoggerFactory.getLogger(LoginTokenRefreshPoint.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
AuthTokenService authTokenService;
|
AuthTokenService authTokenService;
|
||||||
@ -1,18 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
package org.maxkey.authn.web;
|
|
||||||
@ -202,7 +202,7 @@ public class AuthenticationAutoConfiguration implements InitializingBean {
|
|||||||
RedisConnectionFactory redisConnFactory,
|
RedisConnectionFactory redisConnFactory,
|
||||||
@Value("${maxkey.session.timeout:1800}") int timeout
|
@Value("${maxkey.session.timeout:1800}") int timeout
|
||||||
) {
|
) {
|
||||||
_logger.trace("session timeout " + timeout);
|
_logger.debug("session timeout " + timeout);
|
||||||
SessionManager sessionManager =
|
SessionManager sessionManager =
|
||||||
new SessionManagerFactory(
|
new SessionManagerFactory(
|
||||||
persistence, jdbcTemplate, redisConnFactory,timeout);
|
persistence, jdbcTemplate, redisConnFactory,timeout);
|
||||||
|
|||||||
@ -49,9 +49,14 @@ public class GroupPrivileges extends Apps implements Serializable{
|
|||||||
String id;
|
String id;
|
||||||
@Column
|
@Column
|
||||||
private String groupId;
|
private String groupId;
|
||||||
|
|
||||||
|
private String groupName;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
private String appId;
|
private String appId;
|
||||||
|
|
||||||
|
private String appName;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
private String instId;
|
private String instId;
|
||||||
|
|
||||||
@ -130,6 +135,26 @@ public class GroupPrivileges extends Apps implements Serializable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getGroupName() {
|
||||||
|
return groupName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setGroupName(String groupName) {
|
||||||
|
this.groupName = groupName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getAppName() {
|
||||||
|
return appName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setAppName(String appName) {
|
||||||
|
this.appName = appName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
|
|||||||
@ -128,7 +128,7 @@ public class PasswordPolicyValidator {
|
|||||||
DateTime badPasswordTime = DateTime.parse(badPasswordTimeString,
|
DateTime badPasswordTime = DateTime.parse(badPasswordTimeString,
|
||||||
DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
|
DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
|
||||||
Duration duration = new Duration(badPasswordTime, currentdateTime);
|
Duration duration = new Duration(badPasswordTime, currentdateTime);
|
||||||
int intDuration = Integer.parseInt(duration.getStandardHours() + "");
|
int intDuration = Integer.parseInt(duration.getStandardMinutes() + "");
|
||||||
_logger.debug("bad Password duration {} , " +
|
_logger.debug("bad Password duration {} , " +
|
||||||
"password policy Duration {} , "+
|
"password policy Duration {} , "+
|
||||||
"validate result {}" ,
|
"validate result {}" ,
|
||||||
|
|||||||
@ -1,48 +1,48 @@
|
|||||||
#password
|
#password
|
||||||
PasswordPolicy.HISTORY_VIOLATION=\u5bc6\u7801\u5339\u914d\u4e86{0}\u5386\u53f2\u5bc6\u7801.
|
PasswordPolicy.HISTORY_VIOLATION=\u5BC6\u7801\u5339\u914D\u4E86{0}\u5386\u53F2\u5BC6\u7801.
|
||||||
PasswordPolicy.ILLEGAL_WORD=\u5bc6\u7801\u5305\u542b\u5728\u5bc6\u7801\u5b57\u5178{0}.
|
PasswordPolicy.ILLEGAL_WORD=\u5BC6\u7801\u5305\u542B\u5728\u5BC6\u7801\u5B57\u5178{0}.
|
||||||
PasswordPolicy.ILLEGAL_WORD_REVERSED=\u5bc6\u7801\u5305\u542b\u5728\u5bc6\u7801\u5b57\u5178\u5012\u5e8f{0}.
|
PasswordPolicy.ILLEGAL_WORD_REVERSED=\u5BC6\u7801\u5305\u542B\u5728\u5BC6\u7801\u5B57\u5178\u5012\u5E8F{0}.
|
||||||
PasswordPolicy.ILLEGAL_DIGEST_WORD=\u5bc6\u7801\u5305\u542b\u5728\u5b57\u5178\u4e2d.
|
PasswordPolicy.ILLEGAL_DIGEST_WORD=\u5BC6\u7801\u5305\u542B\u5728\u5B57\u5178\u4E2D.
|
||||||
PasswordPolicy.ILLEGAL_DIGEST_WORD_REVERSED=\u5bc6\u7801\u5305\u542b\u5728\u5b57\u5178\u5012\u5e8f\u4e2d.
|
PasswordPolicy.ILLEGAL_DIGEST_WORD_REVERSED=\u5BC6\u7801\u5305\u542B\u5728\u5B57\u5178\u5012\u5E8F\u4E2D.
|
||||||
PasswordPolicy.ILLEGAL_MATCH=\u5bc6\u7801\u5339\u914d\u975e\u6cd5\u89c4\u5219{0}.
|
PasswordPolicy.ILLEGAL_MATCH=\u5BC6\u7801\u5339\u914D\u975E\u6CD5\u89C4\u5219{0}.
|
||||||
PasswordPolicy.ALLOWED_MATCH=\u5bc6\u7801\u5fc5\u987b\u5339\u914d\u89c4\u5219{0}.
|
PasswordPolicy.ALLOWED_MATCH=\u5BC6\u7801\u5FC5\u987B\u5339\u914D\u89C4\u5219{0}.
|
||||||
PasswordPolicy.ILLEGAL_CHAR=\u5bc6\u7801{1}\u5305\u542b\u975e\u6cd5\u5b57\u7b26{0}.
|
PasswordPolicy.ILLEGAL_CHAR=\u5BC6\u7801{1}\u5305\u542B\u975E\u6CD5\u5B57\u7B26{0}.
|
||||||
PasswordPolicy.ALLOWED_CHAR=\u5bc6\u7801{1}\u975e\u6cd5\u5b57\u7b26{0}.
|
PasswordPolicy.ALLOWED_CHAR=\u5BC6\u7801{1}\u975E\u6CD5\u5B57\u7B26{0}.
|
||||||
PasswordPolicy.ILLEGAL_QWERTY_SEQUENCE=\u5bc6\u7801\u5305\u542b\u952e\u76d8\u5e8f\u5217{0}.
|
PasswordPolicy.ILLEGAL_QWERTY_SEQUENCE=\u5BC6\u7801\u5305\u542B\u952E\u76D8\u5E8F\u5217{0}.
|
||||||
PasswordPolicy.ILLEGAL_ALPHABETICAL_SEQUENCE=\u5bc6\u7801\u5305\u542b\u5b57\u7b26\u5e8f\u5217{0}.
|
PasswordPolicy.ILLEGAL_ALPHABETICAL_SEQUENCE=\u5BC6\u7801\u5305\u542B\u5B57\u7B26\u5E8F\u5217{0}.
|
||||||
PasswordPolicy.ILLEGAL_NUMERICAL_SEQUENCE=\u5bc6\u7801\u5305\u542b\u6570\u5b57\u5e8f\u5217{0}.
|
PasswordPolicy.ILLEGAL_NUMERICAL_SEQUENCE=\u5BC6\u7801\u5305\u542B\u6570\u5B57\u5E8F\u5217{0}.
|
||||||
PasswordPolicy.ILLEGAL_USERNAME=\u5bc6\u7801\u4e0d\u80fd\u5305\u542b\u767b\u5f55\u540d{0}.
|
PasswordPolicy.ILLEGAL_USERNAME=\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u767B\u5F55\u540D{0}.
|
||||||
PasswordPolicy.ILLEGAL_USERNAME_REVERSED=\u5bc6\u7801{1} \u5305\u542b\u767b\u5f55\u540d{0}\u5012\u5e8f.
|
PasswordPolicy.ILLEGAL_USERNAME_REVERSED=\u5BC6\u7801{1} \u5305\u542B\u767B\u5F55\u540D{0}\u5012\u5E8F.
|
||||||
PasswordPolicy.ILLEGAL_WHITESPACE=\u5bc6\u7801{1}\u5305\u542b\u7a7a\u683c.
|
PasswordPolicy.ILLEGAL_WHITESPACE=\u5BC6\u7801{1}\u5305\u542B\u7A7A\u683C.
|
||||||
PasswordPolicy.ILLEGAL_NUMBER_RANGE=\u5bc6\u7801{1}\u6570\u5b57 {0}.
|
PasswordPolicy.ILLEGAL_NUMBER_RANGE=\u5BC6\u7801{1}\u6570\u5B57 {0}.
|
||||||
PasswordPolicy.ILLEGAL_REPEATED_CHARS=\u5bc6\u7801{2}\u5e8f\u5217{0}\u6216\u8005\u591a\u4e2a\u5b57\u7b26, \u4f46{1}\u5141\u8bb8:{3}\u6b21.
|
PasswordPolicy.ILLEGAL_REPEATED_CHARS=\u5BC6\u7801{2}\u5E8F\u5217{0}\u6216\u8005\u591A\u4E2A\u5B57\u7B26, \u4F46{1}\u5141\u8BB8:{3}\u6B21.
|
||||||
PasswordPolicy.INSUFFICIENT_UPPERCASE=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u5927\u5199\u5b57\u6bcd.
|
PasswordPolicy.INSUFFICIENT_UPPERCASE=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u5927\u5199\u5B57\u6BCD.
|
||||||
PasswordPolicy.INSUFFICIENT_LOWERCASE=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u5c0f\u5199\u5b57\u6bcd.
|
PasswordPolicy.INSUFFICIENT_LOWERCASE=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u5C0F\u5199\u5B57\u6BCD.
|
||||||
PasswordPolicy.INSUFFICIENT_ALPHABETICAL=\u5bc6\u7801\u5305\u542b\u5b57\u7b26\u5e8f\u5217{0}.
|
PasswordPolicy.INSUFFICIENT_ALPHABETICAL=\u5BC6\u7801\u5305\u542B\u5B57\u7B26\u5E8F\u5217{0}.
|
||||||
PasswordPolicy.INSUFFICIENT_DIGIT=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u6570\u5b57\u5b57\u6bcd.
|
PasswordPolicy.INSUFFICIENT_DIGIT=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u6570\u5B57\u5B57\u6BCD.
|
||||||
PasswordPolicy.INSUFFICIENT_SPECIAL=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u7279\u6b8a\u5b57\u7b26.
|
PasswordPolicy.INSUFFICIENT_SPECIAL=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u7279\u6B8A\u5B57\u7B26.
|
||||||
PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=\u5bc6\u7801\u5339\u914d {0} of{2}\u5b57\u7b26\u89c4\u5219, \u4f46{1} \u5fc5\u987b.
|
PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=\u5BC6\u7801\u5339\u914D {0} of{2}\u5B57\u7B26\u89C4\u5219, \u4F46{1} \u5FC5\u987B.
|
||||||
PasswordPolicy.INSUFFICIENT_COMPLEXITY=\u5bc6\u7801\u9047\u5230{1}\u590d\u6742\u89c4\u5219, \u4f46{2}\u5fc5\u987b.
|
PasswordPolicy.INSUFFICIENT_COMPLEXITY=\u5BC6\u7801\u9047\u5230{1}\u590D\u6742\u89C4\u5219, \u4F46{2}\u5FC5\u987B.
|
||||||
PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=\u6ca1\u6709\u914d\u7f6e\u5bc6\u7801\u957f\u5ea6\u89c4\u5219 {0}.
|
PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=\u6CA1\u6709\u914D\u7F6E\u5BC6\u7801\u957F\u5EA6\u89C4\u5219 {0}.
|
||||||
PasswordPolicy.SOURCE_VIOLATION=\u5bc6\u7801\u4e0d\u80fd\u5305\u542b{0}\u5bc6\u7801.
|
PasswordPolicy.SOURCE_VIOLATION=\u5BC6\u7801\u4E0D\u80FD\u5305\u542B{0}\u5BC6\u7801.
|
||||||
PasswordPolicy.TOO_LONG=\u5bc6\u7801\u6700\u591a{1}\u4f4d\u5b57\u7b26.
|
PasswordPolicy.TOO_LONG=\u5BC6\u7801\u6700\u591A{1}\u4F4D\u5B57\u7B26.
|
||||||
PasswordPolicy.TOO_SHORT=\u5bc6\u7801\u81f3\u5c11{0}\u4f4d\u5b57\u7b26.
|
PasswordPolicy.TOO_SHORT=\u5BC6\u7801\u81F3\u5C11{0}\u4F4D\u5B57\u7B26.
|
||||||
PasswordPolicy.TOO_MANY_OCCURRENCES=\u5bc6\u7801\u5305\u542b{0}\u51fa\u73b0{1}, \u6700\u591a{2} \u6b21.
|
PasswordPolicy.TOO_MANY_OCCURRENCES=\u5BC6\u7801\u5305\u542B{0}\u51FA\u73B0{1}, \u6700\u591A{2} \u6B21.
|
||||||
PasswordPolicy.OLD_PASSWORD_NOT_MATCH=\u539f\u5bc6\u7801\u4e0d\u5339\u914d.
|
PasswordPolicy.OLD_PASSWORD_NOT_MATCH=\u539F\u5BC6\u7801\u4E0D\u5339\u914D.
|
||||||
PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=\u65b0\u5bc6\u7801\u4e0e\u786e\u8ba4\u5bc6\u7801\u4e0d\u4e00\u81f4.
|
PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=\u65B0\u5BC6\u7801\u4E0E\u786E\u8BA4\u5BC6\u7801\u4E0D\u4E00\u81F4.
|
||||||
PasswordPolicy.OLD_PASSWORD_MATCH=\u65b0\u5bc6\u7801\u4e0d\u80fd\u4e0e\u65e7\u5bc6\u7801\u4e00\u81f4.
|
PasswordPolicy.OLD_PASSWORD_MATCH=\u65B0\u5BC6\u7801\u4E0D\u80FD\u4E0E\u65E7\u5BC6\u7801\u4E00\u81F4.
|
||||||
|
|
||||||
#\u7528\u6237\u767b\u5f55\u9519\u8bef\u63d0\u9192
|
#\u7528\u6237\u767B\u5F55\u9519\u8BEF\u63D0\u9192
|
||||||
login.error.attempts=\u767B\u5F55\u9519\u8BEF\u8fbe\u6700\u5927\u9650\u5236{0}\u6b21,\u8bf7{1}\u5C0F\u65F6\u540e\u91CD\u8BD5.
|
login.error.attempts=\u767B\u5F55\u9519\u8BEF\u8FBE\u6700\u5927\u9650\u5236{0}\u6B21,\u8BF7{1}\u5206\u949F\u540E\u91CD\u8BD5.
|
||||||
login.error.locked=\u7528\u6237\u88ab\u9501\u5b9a.
|
login.error.locked=\u7528\u6237\u88AB\u9501\u5B9A.
|
||||||
login.error.inactive=\u7528\u6237\u975e\u6d3b\u52a8\u72b6\u6001.
|
login.error.inactive=\u7528\u6237\u975E\u6D3B\u52A8\u72B6\u6001.
|
||||||
login.error.password=\u7528\u6237\u540D\u6216\u5bc6\u7801\u65e0\u6548.
|
login.error.password=\u7528\u6237\u540D\u6216\u5BC6\u7801\u65E0\u6548.
|
||||||
login.error.password.attempts=\u767B\u5F55\u5931\u8D25{0}\u6B21, \u5931\u8D25{1}\u6B21\u5C06\u9501\u5B9A{2}\u5C0F\u65F6.
|
login.error.password.attempts=\u767B\u5F55\u5931\u8D25{0}\u6B21, \u5931\u8D25{1}\u6B21\u5C06\u9501\u5B9A{2}\u5206\u949F.
|
||||||
login.error.username=\u7528\u6237\u540D\u6216\u5bc6\u7801\u65e0\u6548.
|
login.error.username=\u7528\u6237\u540D\u6216\u5BC6\u7801\u65E0\u6548.
|
||||||
login.error.username.null=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a.
|
login.error.username.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A.
|
||||||
login.error.email.null=\u767b\u5f55\u90ae\u7bb1\u4e0d\u80fd\u4e3a\u7a7a.
|
login.error.email.null=\u767B\u5F55\u90AE\u7BB1\u4E0D\u80FD\u4E3A\u7A7A.
|
||||||
login.error.password.null=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a.
|
login.error.password.null=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A.
|
||||||
login.error.captcha=\u9a8c\u8bc1\u7801\u9519\u8bef\uff0c\u8bf7\u91cd\u65b0\u767B\u5F55.
|
login.error.captcha=\u9A8C\u8BC1\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55.
|
||||||
login.error.authtype=\u767b\u5f55\u8ba4\u8bc1\u7c7b\u578b\u9519\u8bef.
|
login.error.authtype=\u767B\u5F55\u8BA4\u8BC1\u7C7B\u578B\u9519\u8BEF.
|
||||||
login.error.session=\u767b\u5f55\u4f1a\u8bdd\u5931\u6548\uff0c\u8bf7\u91cd\u65b0\u767b\u9646.
|
login.error.session=\u767B\u5F55\u4F1A\u8BDD\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u9646.
|
||||||
login.error.social=\u793e\u4ea4\u8d26\u53f7\u6388\u6743\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5.
|
login.error.social=\u793E\u4EA4\u8D26\u53F7\u6388\u6743\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5.
|
||||||
@ -33,11 +33,11 @@ PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=new password not match confirm password
|
|||||||
PasswordPolicy.OLD_PASSWORD_MATCH=new password match old password.
|
PasswordPolicy.OLD_PASSWORD_MATCH=new password match old password.
|
||||||
|
|
||||||
#for user login
|
#for user login
|
||||||
login.error.attempts=login attempts the maximum {0} times, please login {1} hours later.
|
login.error.attempts=login attempts the maximum {0} times, please login {1} minutes later.
|
||||||
login.error.locked=The user is locked.
|
login.error.locked=The user is locked.
|
||||||
login.error.inactive=User inactive state.
|
login.error.inactive=User inactive state.
|
||||||
login.error.password=Invalid username or password.
|
login.error.password=Invalid username or password.
|
||||||
login.error.password.attempts=login fail {0} times, fail {1} times will lock {2} hours.
|
login.error.password.attempts=login fail {0} times, fail {1} times will lock {2} minutes.
|
||||||
login.error.username=Invalid username or password.
|
login.error.username=Invalid username or password.
|
||||||
login.error.username.null=username cannot be empty.
|
login.error.username.null=username cannot be empty.
|
||||||
login.error.email.null=email cannot be empty.
|
login.error.email.null=email cannot be empty.
|
||||||
|
|||||||
@ -1,48 +1,48 @@
|
|||||||
#password
|
#password
|
||||||
PasswordPolicy.HISTORY_VIOLATION=\u5bc6\u7801\u5339\u914d\u4e86{0}\u5386\u53f2\u5bc6\u7801.
|
PasswordPolicy.HISTORY_VIOLATION=\u5BC6\u7801\u5339\u914D\u4E86{0}\u5386\u53F2\u5BC6\u7801.
|
||||||
PasswordPolicy.ILLEGAL_WORD=\u5bc6\u7801\u5305\u542b\u5728\u5bc6\u7801\u5b57\u5178{0}.
|
PasswordPolicy.ILLEGAL_WORD=\u5BC6\u7801\u5305\u542B\u5728\u5BC6\u7801\u5B57\u5178{0}.
|
||||||
PasswordPolicy.ILLEGAL_WORD_REVERSED=\u5bc6\u7801\u5305\u542b\u5728\u5bc6\u7801\u5b57\u5178\u5012\u5e8f{0}.
|
PasswordPolicy.ILLEGAL_WORD_REVERSED=\u5BC6\u7801\u5305\u542B\u5728\u5BC6\u7801\u5B57\u5178\u5012\u5E8F{0}.
|
||||||
PasswordPolicy.ILLEGAL_DIGEST_WORD=\u5bc6\u7801\u5305\u542b\u5728\u5b57\u5178\u4e2d.
|
PasswordPolicy.ILLEGAL_DIGEST_WORD=\u5BC6\u7801\u5305\u542B\u5728\u5B57\u5178\u4E2D.
|
||||||
PasswordPolicy.ILLEGAL_DIGEST_WORD_REVERSED=\u5bc6\u7801\u5305\u542b\u5728\u5b57\u5178\u5012\u5e8f\u4e2d.
|
PasswordPolicy.ILLEGAL_DIGEST_WORD_REVERSED=\u5BC6\u7801\u5305\u542B\u5728\u5B57\u5178\u5012\u5E8F\u4E2D.
|
||||||
PasswordPolicy.ILLEGAL_MATCH=\u5bc6\u7801\u5339\u914d\u975e\u6cd5\u89c4\u5219{0}.
|
PasswordPolicy.ILLEGAL_MATCH=\u5BC6\u7801\u5339\u914D\u975E\u6CD5\u89C4\u5219{0}.
|
||||||
PasswordPolicy.ALLOWED_MATCH=\u5bc6\u7801\u5fc5\u987b\u5339\u914d\u89c4\u5219{0}.
|
PasswordPolicy.ALLOWED_MATCH=\u5BC6\u7801\u5FC5\u987B\u5339\u914D\u89C4\u5219{0}.
|
||||||
PasswordPolicy.ILLEGAL_CHAR=\u5bc6\u7801{1}\u5305\u542b\u975e\u6cd5\u5b57\u7b26{0}.
|
PasswordPolicy.ILLEGAL_CHAR=\u5BC6\u7801{1}\u5305\u542B\u975E\u6CD5\u5B57\u7B26{0}.
|
||||||
PasswordPolicy.ALLOWED_CHAR=\u5bc6\u7801{1}\u975e\u6cd5\u5b57\u7b26{0}.
|
PasswordPolicy.ALLOWED_CHAR=\u5BC6\u7801{1}\u975E\u6CD5\u5B57\u7B26{0}.
|
||||||
PasswordPolicy.ILLEGAL_QWERTY_SEQUENCE=\u5bc6\u7801\u5305\u542b\u952e\u76d8\u5e8f\u5217{0}.
|
PasswordPolicy.ILLEGAL_QWERTY_SEQUENCE=\u5BC6\u7801\u5305\u542B\u952E\u76D8\u5E8F\u5217{0}.
|
||||||
PasswordPolicy.ILLEGAL_ALPHABETICAL_SEQUENCE=\u5bc6\u7801\u5305\u542b\u5b57\u7b26\u5e8f\u5217{0}.
|
PasswordPolicy.ILLEGAL_ALPHABETICAL_SEQUENCE=\u5BC6\u7801\u5305\u542B\u5B57\u7B26\u5E8F\u5217{0}.
|
||||||
PasswordPolicy.ILLEGAL_NUMERICAL_SEQUENCE=\u5bc6\u7801\u5305\u542b\u6570\u5b57\u5e8f\u5217{0}.
|
PasswordPolicy.ILLEGAL_NUMERICAL_SEQUENCE=\u5BC6\u7801\u5305\u542B\u6570\u5B57\u5E8F\u5217{0}.
|
||||||
PasswordPolicy.ILLEGAL_USERNAME=\u5bc6\u7801\u4e0d\u80fd\u5305\u542b\u767b\u5f55\u540d{0}.
|
PasswordPolicy.ILLEGAL_USERNAME=\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u767B\u5F55\u540D{0}.
|
||||||
PasswordPolicy.ILLEGAL_USERNAME_REVERSED=\u5bc6\u7801{1} \u5305\u542b\u767b\u5f55\u540d{0}\u5012\u5e8f.
|
PasswordPolicy.ILLEGAL_USERNAME_REVERSED=\u5BC6\u7801{1} \u5305\u542B\u767B\u5F55\u540D{0}\u5012\u5E8F.
|
||||||
PasswordPolicy.ILLEGAL_WHITESPACE=\u5bc6\u7801{1}\u5305\u542b\u7a7a\u683c.
|
PasswordPolicy.ILLEGAL_WHITESPACE=\u5BC6\u7801{1}\u5305\u542B\u7A7A\u683C.
|
||||||
PasswordPolicy.ILLEGAL_NUMBER_RANGE=\u5bc6\u7801{1}\u6570\u5b57 {0}.
|
PasswordPolicy.ILLEGAL_NUMBER_RANGE=\u5BC6\u7801{1}\u6570\u5B57 {0}.
|
||||||
PasswordPolicy.ILLEGAL_REPEATED_CHARS=\u5bc6\u7801{2}\u5e8f\u5217{0}\u6216\u8005\u591a\u4e2a\u5b57\u7b26, \u4f46{1}\u5141\u8bb8:{3}\u6b21.
|
PasswordPolicy.ILLEGAL_REPEATED_CHARS=\u5BC6\u7801{2}\u5E8F\u5217{0}\u6216\u8005\u591A\u4E2A\u5B57\u7B26, \u4F46{1}\u5141\u8BB8:{3}\u6B21.
|
||||||
PasswordPolicy.INSUFFICIENT_UPPERCASE=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u5927\u5199\u5b57\u6bcd.
|
PasswordPolicy.INSUFFICIENT_UPPERCASE=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u5927\u5199\u5B57\u6BCD.
|
||||||
PasswordPolicy.INSUFFICIENT_LOWERCASE=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u5c0f\u5199\u5b57\u6bcd.
|
PasswordPolicy.INSUFFICIENT_LOWERCASE=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u5C0F\u5199\u5B57\u6BCD.
|
||||||
PasswordPolicy.INSUFFICIENT_ALPHABETICAL=\u5bc6\u7801\u5305\u542b\u5b57\u7b26\u5e8f\u5217{0}.
|
PasswordPolicy.INSUFFICIENT_ALPHABETICAL=\u5BC6\u7801\u5305\u542B\u5B57\u7B26\u5E8F\u5217{0}.
|
||||||
PasswordPolicy.INSUFFICIENT_DIGIT=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u6570\u5b57\u5b57\u6bcd.
|
PasswordPolicy.INSUFFICIENT_DIGIT=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u6570\u5B57\u5B57\u6BCD.
|
||||||
PasswordPolicy.INSUFFICIENT_SPECIAL=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u7279\u6b8a\u5b57\u7b26.
|
PasswordPolicy.INSUFFICIENT_SPECIAL=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u7279\u6B8A\u5B57\u7B26.
|
||||||
PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=\u5bc6\u7801\u5339\u914d {0} of{2}\u5b57\u7b26\u89c4\u5219, \u4f46{1} \u5fc5\u987b.
|
PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=\u5BC6\u7801\u5339\u914D {0} of{2}\u5B57\u7B26\u89C4\u5219, \u4F46{1} \u5FC5\u987B.
|
||||||
PasswordPolicy.INSUFFICIENT_COMPLEXITY=\u5bc6\u7801\u9047\u5230{1}\u590d\u6742\u89c4\u5219, \u4f46{2}\u5fc5\u987b.
|
PasswordPolicy.INSUFFICIENT_COMPLEXITY=\u5BC6\u7801\u9047\u5230{1}\u590D\u6742\u89C4\u5219, \u4F46{2}\u5FC5\u987B.
|
||||||
PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=\u6ca1\u6709\u914d\u7f6e\u5bc6\u7801\u957f\u5ea6\u89c4\u5219 {0}.
|
PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=\u6CA1\u6709\u914D\u7F6E\u5BC6\u7801\u957F\u5EA6\u89C4\u5219 {0}.
|
||||||
PasswordPolicy.SOURCE_VIOLATION=\u5bc6\u7801\u4e0d\u80fd\u5305\u542b{0}\u5bc6\u7801.
|
PasswordPolicy.SOURCE_VIOLATION=\u5BC6\u7801\u4E0D\u80FD\u5305\u542B{0}\u5BC6\u7801.
|
||||||
PasswordPolicy.TOO_LONG=\u5bc6\u7801\u6700\u591a{1}\u4f4d\u5b57\u7b26.
|
PasswordPolicy.TOO_LONG=\u5BC6\u7801\u6700\u591A{1}\u4F4D\u5B57\u7B26.
|
||||||
PasswordPolicy.TOO_SHORT=\u5bc6\u7801\u81f3\u5c11{0}\u4f4d\u5b57\u7b26.
|
PasswordPolicy.TOO_SHORT=\u5BC6\u7801\u81F3\u5C11{0}\u4F4D\u5B57\u7B26.
|
||||||
PasswordPolicy.TOO_MANY_OCCURRENCES=\u5bc6\u7801\u5305\u542b{0}\u51fa\u73b0{1}, \u6700\u591a{2} \u6b21.
|
PasswordPolicy.TOO_MANY_OCCURRENCES=\u5BC6\u7801\u5305\u542B{0}\u51FA\u73B0{1}, \u6700\u591A{2} \u6B21.
|
||||||
PasswordPolicy.OLD_PASSWORD_NOT_MATCH=\u539f\u5bc6\u7801\u4e0d\u5339\u914d.
|
PasswordPolicy.OLD_PASSWORD_NOT_MATCH=\u539F\u5BC6\u7801\u4E0D\u5339\u914D.
|
||||||
PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=\u65b0\u5bc6\u7801\u4e0e\u786e\u8ba4\u5bc6\u7801\u4e0d\u4e00\u81f4.
|
PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=\u65B0\u5BC6\u7801\u4E0E\u786E\u8BA4\u5BC6\u7801\u4E0D\u4E00\u81F4.
|
||||||
PasswordPolicy.OLD_PASSWORD_MATCH=\u65b0\u5bc6\u7801\u4e0d\u80fd\u4e0e\u65e7\u5bc6\u7801\u4e00\u81f4.
|
PasswordPolicy.OLD_PASSWORD_MATCH=\u65B0\u5BC6\u7801\u4E0D\u80FD\u4E0E\u65E7\u5BC6\u7801\u4E00\u81F4.
|
||||||
|
|
||||||
#\u7528\u6237\u767b\u5f55\u9519\u8bef\u63d0\u9192
|
#\u7528\u6237\u767B\u5F55\u9519\u8BEF\u63D0\u9192
|
||||||
login.error.attempts=\u767B\u5F55\u9519\u8BEF\u8fbe\u6700\u5927\u9650\u5236{0}\u6b21,\u8bf7{1}\u5C0F\u65F6\u540e\u91CD\u8BD5.
|
login.error.attempts=\u767B\u5F55\u9519\u8BEF\u8FBE\u6700\u5927\u9650\u5236{0}\u6B21,\u8BF7{1}\u5206\u949F\u540E\u91CD\u8BD5.
|
||||||
login.error.locked=\u7528\u6237\u88ab\u9501\u5b9a.
|
login.error.locked=\u7528\u6237\u88AB\u9501\u5B9A.
|
||||||
login.error.inactive=\u7528\u6237\u975e\u6d3b\u52a8\u72b6\u6001.
|
login.error.inactive=\u7528\u6237\u975E\u6D3B\u52A8\u72B6\u6001.
|
||||||
login.error.password=\u7528\u6237\u540D\u6216\u5bc6\u7801\u65e0\u6548.
|
login.error.password=\u7528\u6237\u540D\u6216\u5BC6\u7801\u65E0\u6548.
|
||||||
login.error.password.attempts=\u767B\u5F55\u5931\u8D25{0}\u6B21, \u5931\u8D25{1}\u6B21\u5C06\u9501\u5B9A{2}\u5C0F\u65F6.
|
login.error.password.attempts=\u767B\u5F55\u5931\u8D25{0}\u6B21, \u5931\u8D25{1}\u6B21\u5C06\u9501\u5B9A{2}\u5206\u949F.
|
||||||
login.error.username=\u7528\u6237\u540D\u6216\u5bc6\u7801\u65e0\u6548.
|
login.error.username=\u7528\u6237\u540D\u6216\u5BC6\u7801\u65E0\u6548.
|
||||||
login.error.username.null=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a.
|
login.error.username.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A.
|
||||||
login.error.email.null=\u767b\u5f55\u90ae\u7bb1\u4e0d\u80fd\u4e3a\u7a7a.
|
login.error.email.null=\u767B\u5F55\u90AE\u7BB1\u4E0D\u80FD\u4E3A\u7A7A.
|
||||||
login.error.password.null=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a.
|
login.error.password.null=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A.
|
||||||
login.error.captcha=\u9a8c\u8bc1\u7801\u9519\u8bef\uff0c\u8bf7\u91cd\u65b0\u767B\u5F55.
|
login.error.captcha=\u9A8C\u8BC1\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55.
|
||||||
login.error.authtype=\u767b\u5f55\u8ba4\u8bc1\u7c7b\u578b\u9519\u8bef.
|
login.error.authtype=\u767B\u5F55\u8BA4\u8BC1\u7C7B\u578B\u9519\u8BEF.
|
||||||
login.error.session=\u767b\u5f55\u4f1a\u8bdd\u5931\u6548\uff0c\u8bf7\u91cd\u65b0\u767b\u9646.
|
login.error.session=\u767B\u5F55\u4F1A\u8BDD\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u9646.
|
||||||
login.error.social=\u793e\u4ea4\u8d26\u53f7\u6388\u6743\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5.
|
login.error.social=\u793E\u4EA4\u8D26\u53F7\u6388\u6743\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5.
|
||||||
@ -143,6 +143,7 @@ public class AccountsService extends JpaBaseService<Accounts>{
|
|||||||
account.setRelatedUsername(generateAccount(user,strategy));
|
account.setRelatedUsername(generateAccount(user,strategy));
|
||||||
account.setRelatedPassword(PasswordReciprocal.getInstance().encode(userInfoService.randomPassword()));
|
account.setRelatedPassword(PasswordReciprocal.getInstance().encode(userInfoService.randomPassword()));
|
||||||
|
|
||||||
|
account.setInstId(strategy.getInstId());
|
||||||
account.setCreateType("automatic");
|
account.setCreateType("automatic");
|
||||||
account.setStatus(ConstsStatus.ACTIVE);
|
account.setStatus(ConstsStatus.ACTIVE);
|
||||||
account.setStrategyId(strategy.getId());
|
account.setStrategyId(strategy.getId());
|
||||||
|
|||||||
@ -22,8 +22,10 @@
|
|||||||
select
|
select
|
||||||
gp.id,
|
gp.id,
|
||||||
gp.groupid,
|
gp.groupid,
|
||||||
|
g.name groupname,
|
||||||
gp.appid,
|
gp.appid,
|
||||||
apps.name,
|
apps.name,
|
||||||
|
apps.name appname,
|
||||||
apps.icon,
|
apps.icon,
|
||||||
apps.loginurl,
|
apps.loginurl,
|
||||||
apps.protocol,
|
apps.protocol,
|
||||||
@ -33,12 +35,18 @@
|
|||||||
apps.vendorurl
|
apps.vendorurl
|
||||||
from
|
from
|
||||||
mxk_apps apps,
|
mxk_apps apps,
|
||||||
mxk_group_privileges gp
|
mxk_group_privileges gp,
|
||||||
|
mxk_groups g
|
||||||
where
|
where
|
||||||
apps.instid = #{instId}
|
apps.instid = #{instId}
|
||||||
and gp.instid = #{instId}
|
and gp.instid = #{instId}
|
||||||
and gp.appid = apps.id
|
and g.instid = #{instId}
|
||||||
and gp.groupid = #{groupId}
|
and gp.appid = apps.id
|
||||||
|
and gp.groupid = g.id
|
||||||
|
<if test="groupId != null and groupId != ''">
|
||||||
|
and gp.groupid = #{groupId}
|
||||||
|
and g.id = #{groupId}
|
||||||
|
</if>
|
||||||
<include refid="where_statement"/>
|
<include refid="where_statement"/>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
@ -37,15 +37,40 @@
|
|||||||
|
|
||||||
<!-- DAY HOUR COUNT 当天每小时 -->
|
<!-- DAY HOUR COUNT 当天每小时 -->
|
||||||
<select id="analysisDayHour" parameterType="java.util.HashMap" resultType="Map">
|
<select id="analysisDayHour" parameterType="java.util.HashMap" resultType="Map">
|
||||||
select
|
select h.reportstring reportstring, ifnull(c.reportcount, 0) reportcount from (
|
||||||
count(id) reportcount,
|
select 0 reportstring union all
|
||||||
hour(logintime) reportstring
|
select 1 reportstring union all
|
||||||
from mxk_history_login
|
select 2 reportstring union all
|
||||||
where instid = #{instId}
|
select 3 reportstring union all
|
||||||
and date(logintime) =curdate()
|
select 4 reportstring union all
|
||||||
group by reportstring
|
select 5 reportstring union all
|
||||||
order by reportstring
|
select 6 reportstring union all
|
||||||
|
select 7 reportstring union all
|
||||||
|
select 8 reportstring union all
|
||||||
|
select 9 reportstring union all
|
||||||
|
select 10 reportstring union all
|
||||||
|
select 11 reportstring union all
|
||||||
|
select 12 reportstring union all
|
||||||
|
select 13 reportstring union all
|
||||||
|
select 14 reportstring union all
|
||||||
|
select 15 reportstring union all
|
||||||
|
select 16 reportstring union all
|
||||||
|
select 17 reportstring union all
|
||||||
|
select 18 reportstring union all
|
||||||
|
select 19 reportstring union all
|
||||||
|
select 20 reportstring union all
|
||||||
|
select 21 reportstring union all
|
||||||
|
select 22 reportstring union all
|
||||||
|
select 23 reportstring
|
||||||
|
) h left join(
|
||||||
|
select count(id) reportcount, hour(logintime) reportstring
|
||||||
|
from mxk_history_login
|
||||||
|
where instid = #{instId} and date(logintime) =curdate()
|
||||||
|
group by reportstring
|
||||||
|
)c on h.reportstring=c.reportstring
|
||||||
|
order by h.reportstring
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 30 DAY COUNT 最近30天每天访问量-->
|
<!-- 30 DAY COUNT 最近30天每天访问量-->
|
||||||
<select id="analysisMonth" parameterType="java.util.HashMap" resultType="Map">
|
<select id="analysisMonth" parameterType="java.util.HashMap" resultType="Map">
|
||||||
select
|
select
|
||||||
|
|||||||
@ -6,47 +6,32 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="username">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="username">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.username" [ngModelOptions]="{ standalone: true }" name="username"
|
||||||
nz-input
|
placeholder="" id="username" />
|
||||||
[(ngModel)]="query.params.username"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="username"
|
|
||||||
placeholder=""
|
|
||||||
id="username"
|
|
||||||
/>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 10" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 10" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.confirm' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.confirm' | i18n }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzBordered
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
||||||
@ -58,18 +43,17 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
<td nzAlign="left"> {{ data.username }}</td>
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
<td nzAlign="left"> {{ data.displayName }}</td>
|
||||||
></td>
|
<td nzAlign="left"> {{ data.employeeNumber }}</td>
|
||||||
<td nzAlign="center"> {{ data.username }}</td>
|
<td nzAlign="left"> {{ data.department }}</td>
|
||||||
<td nzAlign="center"> {{ data.displayName }}</td>
|
<td nzAlign="left"> {{ data.jobTitle }}</td>
|
||||||
<td nzAlign="center"> {{ data.employeeNumber }}</td>
|
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' |
|
||||||
<td nzAlign="center"> {{ data.department }}</td>
|
i18n) }}</td>
|
||||||
<td nzAlign="center"> {{ data.jobTitle }}</td>
|
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }}</td>
|
style="color: green"></i></td>
|
||||||
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill" style="color: green"></i></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
@ -77,4 +61,4 @@
|
|||||||
<div *nzModalFooter style="display: none">
|
<div *nzModalFooter style="display: none">
|
||||||
<button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
|
<button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
|
||||||
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
|
||||||
</div>
|
</div>
|
||||||
@ -8,18 +8,12 @@
|
|||||||
<nz-form-label nzFor="name">{{ 'mxk.groups.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.groups.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
nz-input
|
readonly placeholder="" id="name" />
|
||||||
[(ngModel)]="query.params.name"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="name"
|
|
||||||
readonly
|
|
||||||
placeholder=""
|
|
||||||
id="name"
|
|
||||||
/>
|
|
||||||
</nz-input-group>
|
</nz-input-group>
|
||||||
<ng-template #suffixButton>
|
<ng-template #suffixButton>
|
||||||
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n
|
||||||
|
}}</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
@ -28,23 +22,18 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.username" [ngModelOptions]="{ standalone: true }" name="username"
|
||||||
nz-input
|
placeholder="" id="username" />
|
||||||
[(ngModel)]="query.params.username"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="username"
|
|
||||||
placeholder=""
|
|
||||||
id="username"
|
|
||||||
/>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 4" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 4" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -55,69 +44,49 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col nzMd="24" nzSm="24">
|
<div nz-col nzMd="24" nzSm="24">
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber"
|
||||||
nzBordered
|
[nzLoading]="this.query.tableLoading" (nzQueryParams)="onQueryParamsChange($event)">
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center">{{ 'mxk.groups.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.groups.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
|
||||||
<th nzAlign="center">{{ 'mxk.users.employeeNumber' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.employeeNumber' | i18n }}</th>
|
||||||
|
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.department' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.department' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.jobTitle' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.jobTitle' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.gender' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.gender' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
<td nzAlign="left"> {{ data.groupName }}</td>
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
<td nzAlign="left"> {{ data.username }}</td>
|
||||||
></td>
|
<td nzAlign="left"> {{ data.employeeNumber }}</td>
|
||||||
<td nzAlign="center"> {{ data.groupName }}</td>
|
<td nzAlign="left"> {{ data.displayName }}</td>
|
||||||
<td nzAlign="center"> {{ data.username }}</td>
|
<td nzAlign="left"> {{ data.department }}</td>
|
||||||
<td nzAlign="center"> {{ data.displayName }}</td>
|
<td nzAlign="left"> {{ data.jobTitle }}</td>
|
||||||
<td nzAlign="center"> {{ data.employeeNumber }}</td>
|
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' |
|
||||||
<td nzAlign="center"> {{ data.department }}</td>
|
i18n) }}</td>
|
||||||
<td nzAlign="center"> {{ data.jobTitle }}</td>
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }}</td>
|
<div nz-col>
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
<button *ngIf="data.dynamic == '0'" nz-button type="button" (click)="onDelete($event, data.id)"
|
||||||
><div nz-col>
|
[nzType]="'primary'" nzDanger>{{ 'mxk.text.delete' | i18n }}</button>
|
||||||
<button
|
</div>
|
||||||
*ngIf="data.dynamic == '0'"
|
</td>
|
||||||
nz-button
|
|
||||||
type="button"
|
|
||||||
(click)="onDelete($event, data.id)"
|
|
||||||
[nzType]="'primary'"
|
|
||||||
nzDanger
|
|
||||||
>{{ 'mxk.text.delete' | i18n }}</button
|
|
||||||
></div
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -7,17 +7,19 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.groups.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.groups.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -27,61 +29,46 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzSize="small"
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzBordered
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
[nzScroll]="{ x: '100%', y: '100%' }"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
<th nzAlign="center">{{ 'mxk.groups.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.groups.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.groups.dynamic' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.groups.dynamic' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.description' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.description' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td nzAlign="left" nzBreakWord="false">{{ data.name }}</td>
|
<td nzAlign="left" nzBreakWord="false">{{ data.name }}</td>
|
||||||
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill" style="color: green"></i></td>
|
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
|
style="color: green"></i></td>
|
||||||
<td nzAlign="left">{{ data.description }}</td>
|
<td nzAlign="left">{{ data.description }}</td>
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
><div nz-col>
|
<div nz-col>
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.edit' | i18n
|
'mxk.text.edit' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -6,37 +6,28 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.groups.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.groups.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 10" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 10" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.confirm' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.confirm' | i18n }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzBordered
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th></th>
|
||||||
@ -47,16 +38,14 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td nzAlign="center"> {{ data.name }}</td>
|
<td nzAlign="left"> {{ data.name }}</td>
|
||||||
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill" style="color: green"></i></td>
|
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
|
style="color: green"></i></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
@ -64,4 +53,4 @@
|
|||||||
<div *nzModalFooter style="display: none">
|
<div *nzModalFooter style="display: none">
|
||||||
<button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
|
<button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
|
||||||
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
|
||||||
</div>
|
</div>
|
||||||
@ -8,18 +8,12 @@
|
|||||||
<nz-form-label nzFor="groupName">{{ 'mxk.groups.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="groupName">{{ 'mxk.groups.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.groupName" [ngModelOptions]="{ standalone: true }"
|
||||||
nz-input
|
name="groupName" readonly placeholder="" id="groupName" />
|
||||||
[(ngModel)]="query.params.groupName"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="groupName"
|
|
||||||
readonly
|
|
||||||
placeholder=""
|
|
||||||
id="groupName"
|
|
||||||
/>
|
|
||||||
</nz-input-group>
|
</nz-input-group>
|
||||||
<ng-template #suffixButton>
|
<ng-template #suffixButton>
|
||||||
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n
|
||||||
|
}}</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
@ -28,16 +22,18 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 4" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 4" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -48,58 +44,75 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col nzMd="24" nzSm="24">
|
<div nz-col nzMd="24" nzSm="24">
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber"
|
||||||
nzBordered
|
[nzLoading]="this.query.tableLoading" (nzQueryParams)="onQueryParamsChange($event)">
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
|
<th nzAlign="center">{{ 'mxk.groups.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.apps.icon' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.apps.icon' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.apps.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.apps.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.apps.protocol' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.apps.protocol' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.apps.category' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.apps.category' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
<td nzAlign="left"> {{ data.groupName }}</td>
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="center"><img height="30" border="0px" src="{{ data.iconBase64 }}" /></td>
|
<td nzAlign="center"><img height="30" border="0px" src="{{ data.iconBase64 }}" /></td>
|
||||||
<td nzAlign="center"> {{ data.name }}</td>
|
<td nzAlign="left"> {{ data.name }}</td>
|
||||||
<td nzAlign="center"> {{ data.protocol }}</td>
|
<td nzAlign="left"> {{ data.protocol }}</td>
|
||||||
<td nzAlign="left">{{ data.category }}</td>
|
<td nzAlign="left">
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
<div *ngIf="data.category == 'none'">{{ 'mxk.apps.category.none' | i18n }}</div>
|
||||||
><div nz-col>
|
<div *ngIf="data.category == '1011'">{{ 'mxk.apps.category.1011' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1012'">{{ 'mxk.apps.category.1012' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1013'">{{ 'mxk.apps.category.1013' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1014'">{{ 'mxk.apps.category.1014' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1015'">{{ 'mxk.apps.category.1015' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1016'">{{ 'mxk.apps.category.1016' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1017'">{{ 'mxk.apps.category.1017' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1111'">{{ 'mxk.apps.category.1111' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1112'">{{ 'mxk.apps.category.1112' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1113'">{{ 'mxk.apps.category.1113' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1114'">{{ 'mxk.apps.category.1114' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1211'">{{ 'mxk.apps.category.1211' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1212'">{{ 'mxk.apps.category.1212' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1213'">{{ 'mxk.apps.category.1213' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1214'">{{ 'mxk.apps.category.1214' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1215'">{{ 'mxk.apps.category.1215' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1311'">{{ 'mxk.apps.category.1311' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1411'">{{ 'mxk.apps.category.1411' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1511'">{{ 'mxk.apps.category.1511' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1512'">{{ 'mxk.apps.category.1512' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1611'">{{ 'mxk.apps.category.1611' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1711'">{{ 'mxk.apps.category.1711' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1712'">{{ 'mxk.apps.category.1712' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1811'">{{ 'mxk.apps.category.1811' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1812'">{{ 'mxk.apps.category.1812' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1911'">{{ 'mxk.apps.category.1911' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1912'">{{ 'mxk.apps.category.1912' | i18n }}</div>
|
||||||
|
</td>
|
||||||
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
|
<div nz-col>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -5,39 +5,35 @@
|
|||||||
<div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
|
<div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
|
||||||
<div nz-col nzMd="8" nzSm="24">
|
<div nz-col nzMd="8" nzSm="24">
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.accounts.username' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="appName">{{ 'mxk.accounts.appName' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
||||||
|
<input nz-input [(ngModel)]="query.params.appName" [ngModelOptions]="{ standalone: true }" name="appName"
|
||||||
|
readonly placeholder="" id="appName" />
|
||||||
|
</nz-input-group>
|
||||||
|
<ng-template #suffixButton>
|
||||||
|
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n
|
||||||
|
}}</button>
|
||||||
|
</ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzMd="8" nzSm="24">
|
<div nz-col nzMd="8" nzSm="24">
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="appName">{{ 'mxk.accounts.appName' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.accounts.username' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
<input nz-input [(ngModel)]="query.params.username" [ngModelOptions]="{ standalone: true }" name="username"
|
||||||
<input
|
placeholder="" id="username" />
|
||||||
nz-input
|
|
||||||
[(ngModel)]="query.params.appName"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="appName"
|
|
||||||
readonly
|
|
||||||
placeholder=""
|
|
||||||
id="appName"
|
|
||||||
/>
|
|
||||||
</nz-input-group>
|
|
||||||
<ng-template #suffixButton>
|
|
||||||
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n }}</button>
|
|
||||||
</ng-template>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm">{{ 'mxk.text.reset' | i18n }}</button>
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm">{{ 'mxk.text.reset' | i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -47,44 +43,29 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzSize="small"
|
(nzQueryParams)="onQueryParamsChange($event)">
|
||||||
nzBordered
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
<th nzAlign="center">{{ 'mxk.accounts.username' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.accounts.username' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.accounts.displayName' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.accounts.displayName' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.accounts.appName' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.accounts.appName' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.accounts.relatedUsername' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.accounts.relatedUsername' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.status' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.status' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
@ -92,18 +73,20 @@
|
|||||||
<td nzAlign="left" nzBreakWord="false">{{ data.displayName }}</td>
|
<td nzAlign="left" nzBreakWord="false">{{ data.displayName }}</td>
|
||||||
<td nzAlign="left" nzBreakWord="false">{{ data.appName }}</td>
|
<td nzAlign="left" nzBreakWord="false">{{ data.appName }}</td>
|
||||||
<td nzAlign="left" nzBreakWord="false">{{ data.relatedUsername }}</td>
|
<td nzAlign="left" nzBreakWord="false">{{ data.relatedUsername }}</td>
|
||||||
<td nzAlign="center"> <i *ngIf="data.status == 1" nz-icon nzType="check-circle" nzTheme="fill" style="color: green"></i></td>
|
<td nzAlign="center"> <i *ngIf="data.status == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
style="color: green"></i></td>
|
||||||
><div nz-col>
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<div nz-col>
|
||||||
|
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.edit' | i18n
|
'mxk.text.edit' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -36,7 +36,7 @@ import { AccountEditerComponent } from './account-editer/account-editer.componen
|
|||||||
export class AccountsComponent implements OnInit {
|
export class AccountsComponent implements OnInit {
|
||||||
query: {
|
query: {
|
||||||
params: {
|
params: {
|
||||||
name: String;
|
username: String;
|
||||||
displayName: String;
|
displayName: String;
|
||||||
employeeNumber: String;
|
employeeNumber: String;
|
||||||
appName: String;
|
appName: String;
|
||||||
@ -60,7 +60,7 @@ export class AccountsComponent implements OnInit {
|
|||||||
checked: boolean;
|
checked: boolean;
|
||||||
} = {
|
} = {
|
||||||
params: {
|
params: {
|
||||||
name: '',
|
username: '',
|
||||||
displayName: '',
|
displayName: '',
|
||||||
employeeNumber: '',
|
employeeNumber: '',
|
||||||
appName: '',
|
appName: '',
|
||||||
|
|||||||
@ -7,7 +7,8 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
@ -16,6 +17,7 @@
|
|||||||
<nz-form-label nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<nz-select [(ngModel)]="query.params.protocol" [ngModelOptions]="{ standalone: true }">
|
<nz-select [(ngModel)]="query.params.protocol" [ngModelOptions]="{ standalone: true }">
|
||||||
|
<nz-option nzValue="" nzLabel="ALL"></nz-option>
|
||||||
<nz-option nzValue="OAuth_v2.0" nzLabel="OAuth v2.0"></nz-option>
|
<nz-option nzValue="OAuth_v2.0" nzLabel="OAuth v2.0"></nz-option>
|
||||||
<nz-option nzValue="OAuth_v2.1" nzLabel="OAuth v2.1"></nz-option>
|
<nz-option nzValue="OAuth_v2.1" nzLabel="OAuth v2.1"></nz-option>
|
||||||
<nz-option nzValue="OpenID_Connect_v1.0" nzLabel="OpenID Connect v1.0"></nz-option>
|
<nz-option nzValue="OpenID_Connect_v1.0" nzLabel="OpenID Connect v1.0"></nz-option>
|
||||||
@ -32,12 +34,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 4" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 4" [class.text-right]="query.expandForm">
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
></nz-form-item
|
</nz-form-item>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -63,63 +66,80 @@
|
|||||||
|
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzSize="small"
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzBordered
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
<th nzAlign="center">{{ 'mxk.apps.icon' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.apps.icon' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.apps.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.apps.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.apps.protocol' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.apps.protocol' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.apps.category' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.apps.category' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center">{{ 'mxk.text.status' | i18n }}</th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td nzAlign="center"><img height="30" border="0px" src="{{ data.iconBase64 }}" /></td>
|
<td nzAlign="center"><img height="30" border="0px" src="{{ data.iconBase64 }}" /></td>
|
||||||
<td nzAlign="center"> {{ data.name }}</td>
|
<td nzAlign="left"> {{ data.name }}</td>
|
||||||
<td nzAlign="center"> {{ data.protocol }}</td>
|
<td nzAlign="left"> {{ data.protocol }}</td>
|
||||||
<td nzAlign="left">{{ data.category }}</td>
|
<td nzAlign="left">
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
<div *ngIf="data.category == 'none'">{{ 'mxk.apps.category.none' | i18n }}</div>
|
||||||
><div nz-col>
|
<div *ngIf="data.category == '1011'">{{ 'mxk.apps.category.1011' | i18n }}</div>
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id, data.protocol)" [nzType]="'primary'" style="float: left">{{
|
<div *ngIf="data.category == '1012'">{{ 'mxk.apps.category.1012' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1013'">{{ 'mxk.apps.category.1013' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1014'">{{ 'mxk.apps.category.1014' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1015'">{{ 'mxk.apps.category.1015' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1016'">{{ 'mxk.apps.category.1016' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1017'">{{ 'mxk.apps.category.1017' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1111'">{{ 'mxk.apps.category.1111' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1112'">{{ 'mxk.apps.category.1112' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1113'">{{ 'mxk.apps.category.1113' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1114'">{{ 'mxk.apps.category.1114' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1211'">{{ 'mxk.apps.category.1211' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1212'">{{ 'mxk.apps.category.1212' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1213'">{{ 'mxk.apps.category.1213' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1214'">{{ 'mxk.apps.category.1214' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1215'">{{ 'mxk.apps.category.1215' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1311'">{{ 'mxk.apps.category.1311' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1411'">{{ 'mxk.apps.category.1411' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1511'">{{ 'mxk.apps.category.1511' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1512'">{{ 'mxk.apps.category.1512' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1611'">{{ 'mxk.apps.category.1611' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1711'">{{ 'mxk.apps.category.1711' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1712'">{{ 'mxk.apps.category.1712' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1811'">{{ 'mxk.apps.category.1811' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1812'">{{ 'mxk.apps.category.1812' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1911'">{{ 'mxk.apps.category.1911' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1912'">{{ 'mxk.apps.category.1912' | i18n }}</div>
|
||||||
|
</td>
|
||||||
|
<td nzAlign="center"> <i *ngIf="data.status == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
|
style="color: green"></i></td>
|
||||||
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
|
<div nz-col>
|
||||||
|
<button nz-button type="button" (click)="onEdit($event, data.id, data.protocol)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.edit' | i18n
|
'mxk.text.edit' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -6,37 +6,28 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 10" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 10" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.confirm' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.confirm' | i18n }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzBordered
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th></th>
|
||||||
@ -49,19 +40,45 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td nzAlign="center"><img height="30" border="0px" src="{{ data.iconBase64 }}" /></td>
|
<td nzAlign="left"><img height="30" border="0px" src="{{ data.iconBase64 }}" /></td>
|
||||||
<td nzAlign="center"> {{ data.name }}</td>
|
<td nzAlign="left"> {{ data.name }}</td>
|
||||||
<td nzAlign="center"> {{ data.protocol }}</td>
|
<td nzAlign="left"> {{ data.protocol }}</td>
|
||||||
<td nzAlign="left">{{ data.category }}</td>
|
<td nzAlign="left">
|
||||||
|
<div *ngIf="data.category == 'none'">{{ 'mxk.apps.category.none' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1011'">{{ 'mxk.apps.category.1011' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1012'">{{ 'mxk.apps.category.1012' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1013'">{{ 'mxk.apps.category.1013' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1014'">{{ 'mxk.apps.category.1014' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1015'">{{ 'mxk.apps.category.1015' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1016'">{{ 'mxk.apps.category.1016' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1017'">{{ 'mxk.apps.category.1017' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1111'">{{ 'mxk.apps.category.1111' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1112'">{{ 'mxk.apps.category.1112' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1113'">{{ 'mxk.apps.category.1113' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1114'">{{ 'mxk.apps.category.1114' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1211'">{{ 'mxk.apps.category.1211' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1212'">{{ 'mxk.apps.category.1212' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1213'">{{ 'mxk.apps.category.1213' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1214'">{{ 'mxk.apps.category.1214' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1215'">{{ 'mxk.apps.category.1215' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1311'">{{ 'mxk.apps.category.1311' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1411'">{{ 'mxk.apps.category.1411' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1511'">{{ 'mxk.apps.category.1511' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1512'">{{ 'mxk.apps.category.1512' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1611'">{{ 'mxk.apps.category.1611' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1711'">{{ 'mxk.apps.category.1711' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1712'">{{ 'mxk.apps.category.1712' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1811'">{{ 'mxk.apps.category.1811' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1812'">{{ 'mxk.apps.category.1812' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1911'">{{ 'mxk.apps.category.1911' | i18n }}</div>
|
||||||
|
<div *ngIf="data.category == '1912'">{{ 'mxk.apps.category.1912' | i18n }}</div>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
@ -69,4 +86,4 @@
|
|||||||
<div *nzModalFooter style="display: none">
|
<div *nzModalFooter style="display: none">
|
||||||
<button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
|
<button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
|
||||||
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
|
||||||
</div>
|
</div>
|
||||||
@ -7,17 +7,19 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.accountsstrategy.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.accountsstrategy.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -27,64 +29,51 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzSize="small"
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzBordered
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
<th nzAlign="center">{{ 'mxk.accountsstrategy.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.accountsstrategy.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.accountsstrategy.appIcon' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.accountsstrategy.appIcon' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.accountsstrategy.appName' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.accountsstrategy.appName' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.accountsstrategy.createType' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.accountsstrategy.createType' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.status' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.status' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td nzAlign="center"> {{ data.name }}</td>
|
<td nzAlign="left"> {{ data.name }}</td>
|
||||||
<td nzAlign="center"><img height="30" border="0px" src="{{ data.appIconBase64 }}" /></td>
|
<td nzAlign="center"><img height="30" border="0px" src="{{ data.appIconBase64 }}" /></td>
|
||||||
<td nzAlign="center"> {{ data.appName }}</td>
|
<td nzAlign="left"> {{ data.appName }}</td>
|
||||||
<td nzAlign="left">{{ data.createType == 'manual' ? ('mxk.text.manual' | i18n) : ('mxk.text.manual' | i18n) }}</td>
|
<td nzAlign="center">{{ data.createType == 'manual' ? ('mxk.text.manual' | i18n) : ('mxk.text.manual' | i18n) }}
|
||||||
<td nzAlign="left">{{ data.status == '1' ? ('mxk.text.status.active' | i18n) : ('mxk.text.inactive' | i18n) }}</td>
|
</td>
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
<td nzAlign="center"> <i *ngIf="data.status == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
><div nz-col>
|
style="color: green"></i></td>
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
|
<div nz-col>
|
||||||
|
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.edit' | i18n
|
'mxk.text.edit' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -7,17 +7,19 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.adapters.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.adapters.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -27,62 +29,47 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzSize="small"
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzBordered
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
<th nzAlign="center">{{ 'mxk.adapters.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.adapters.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.adapters.protocol' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.adapters.protocol' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.sortIndex' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.sortIndex' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.description' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.description' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td nzAlign="left" nzBreakWord="false">{{ data.name }}</td>
|
<td nzAlign="left" nzBreakWord="false">{{ data.name }}</td>
|
||||||
<td nzAlign="center"> {{ data.protocol }}</td>
|
<td nzAlign="left"> {{ data.protocol }}</td>
|
||||||
<td nzAlign="center"> {{ data.sortIndex }}</td>
|
<td nzAlign="center"> {{ data.sortIndex }}</td>
|
||||||
<td nzAlign="left">{{ data.description }}</td>
|
<td nzAlign="left">{{ data.description }}</td>
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
><div nz-col>
|
<div nz-col>
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.edit' | i18n
|
'mxk.text.edit' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -4,11 +4,13 @@
|
|||||||
<nz-form-item style="display: none">
|
<nz-form-item style="display: none">
|
||||||
<nz-form-label [nzMd]="6" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
|
<nz-form-label [nzMd]="6" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
|
||||||
<nz-form-control [nzMd]="18" nzErrorTip="The input is not valid id!">
|
<nz-form-control [nzMd]="18" nzErrorTip="The input is not valid id!">
|
||||||
<input [(ngModel)]="form.model.id" [disabled]="true" [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id" />
|
<input [(ngModel)]="form.model.id" [disabled]="true" [ngModelOptions]="{ standalone: true }" nz-input name="id"
|
||||||
|
id="id" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="product">{{ 'mxk.ldapcontext.product' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="product">{{ 'mxk.ldapcontext.product' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid product !">
|
<nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid product !">
|
||||||
<nz-select [(ngModel)]="form.model.product" [ngModelOptions]="{ standalone: true }">
|
<nz-select [(ngModel)]="form.model.product" [ngModelOptions]="{ standalone: true }">
|
||||||
<nz-option nzValue="ActiveDirectory" nzLabel="ActiveDirectory"></nz-option>
|
<nz-option nzValue="ActiveDirectory" nzLabel="ActiveDirectory"></nz-option>
|
||||||
@ -20,87 +22,81 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="status">{{ 'mxk.text.status' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="status">{{ 'mxk.text.status' | i18n }}</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid status!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid status!">
|
||||||
<nz-switch
|
<nz-switch [(ngModel)]="form.model.switch_status" [ngModelOptions]="{ standalone: true }" name="status"
|
||||||
[(ngModel)]="form.model.switch_status"
|
[nzCheckedChildren]="checkedTemplate" [nzUnCheckedChildren]="unCheckedTemplate"></nz-switch>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="status"
|
|
||||||
[nzCheckedChildren]="checkedTemplate"
|
|
||||||
[nzUnCheckedChildren]="unCheckedTemplate"
|
|
||||||
></nz-switch>
|
|
||||||
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
||||||
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
|
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="providerUrl">{{ 'mxk.ldapcontext.providerUrl' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="providerUrl">{{ 'mxk.ldapcontext.providerUrl' | i18n }}
|
||||||
<nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid providerUrl !">
|
</nz-form-label>
|
||||||
<input [(ngModel)]="form.model.providerUrl" [ngModelOptions]="{ standalone: true }" nz-input name="providerUrl" id="providerUrl" />
|
<nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48"
|
||||||
|
nzErrorTip="The input is not valid providerUrl !">
|
||||||
|
<input [(ngModel)]="form.model.providerUrl" [ngModelOptions]="{ standalone: true }" nz-input name="providerUrl"
|
||||||
|
id="providerUrl" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="accountMapping">{{ 'mxk.ldapcontext.accountMapping' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="accountMapping">{{ 'mxk.ldapcontext.accountMapping' | i18n
|
||||||
|
}}</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid accountMapping!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid accountMapping!">
|
||||||
<nz-switch
|
<nz-switch [(ngModel)]="form.model.switch_accountMapping" [ngModelOptions]="{ standalone: true }"
|
||||||
[(ngModel)]="form.model.switch_accountMapping"
|
name="accountMapping" [nzCheckedChildren]="checkedTemplate" [nzUnCheckedChildren]="unCheckedTemplate">
|
||||||
[ngModelOptions]="{ standalone: true }"
|
</nz-switch>
|
||||||
name="accountMapping"
|
|
||||||
[nzCheckedChildren]="checkedTemplate"
|
|
||||||
[nzUnCheckedChildren]="unCheckedTemplate"
|
|
||||||
></nz-switch>
|
|
||||||
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
||||||
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
|
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="principal">{{ 'mxk.ldapcontext.principal' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="principal">{{ 'mxk.ldapcontext.principal' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid principal!">
|
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid principal!">
|
||||||
<input [(ngModel)]="form.model.principal" [ngModelOptions]="{ standalone: true }" nz-input name="principal" id="principal" />
|
<input [(ngModel)]="form.model.principal" [ngModelOptions]="{ standalone: true }" nz-input name="principal"
|
||||||
|
id="principal" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="credentials">{{ 'mxk.ldapcontext.credentials' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="credentials">{{ 'mxk.ldapcontext.credentials' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid upperCase!">
|
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid upperCase!">
|
||||||
<input
|
<input [(ngModel)]="form.model.credentials" [ngModelOptions]="{ standalone: true }" nz-input type="password"
|
||||||
[(ngModel)]="form.model.credentials"
|
name="credentials" id="credentials" />
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
nz-input
|
|
||||||
type="password"
|
|
||||||
name="credentials"
|
|
||||||
id="credentials"
|
|
||||||
/>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item *ngIf="form.model.product == 'ActiveDirectory'">
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="filters">{{ 'mxk.ldapcontext.filters' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="basedn">{{ 'mxk.ldapcontext.basedn' | i18n }}
|
||||||
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid filters!">
|
</nz-form-label>
|
||||||
<input [(ngModel)]="form.model.filters" [ngModelOptions]="{ standalone: true }" nz-input name="filters" id="filters" />
|
|
||||||
</nz-form-control>
|
|
||||||
</nz-form-item>
|
|
||||||
<nz-form-item>
|
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="basedn">{{ 'mxk.ldapcontext.basedn' | i18n }}</nz-form-label>
|
|
||||||
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid basedn!">
|
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid basedn!">
|
||||||
<input [(ngModel)]="form.model.basedn" [ngModelOptions]="{ standalone: true }" nz-input name="basedn" id="basedn" />
|
<input [(ngModel)]="form.model.basedn" [ngModelOptions]="{ standalone: true }" nz-input name="basedn"
|
||||||
|
id="basedn" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
|
<nz-form-item *ngIf="form.model.product == 'ActiveDirectory'">
|
||||||
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="filters">
|
||||||
|
{{ 'mxk.ldapcontext.filters' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
|
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid filters!">
|
||||||
|
<input [(ngModel)]="form.model.filters" [ngModelOptions]="{ standalone: true }" nz-input name="filters"
|
||||||
|
id="filters" />
|
||||||
|
</nz-form-control>
|
||||||
|
</nz-form-item>
|
||||||
|
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzFor="msadDomain">{{ 'mxk.ldapcontext.msadDomain' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzFor="msadDomain">{{ 'mxk.ldapcontext.msadDomain' | i18n }}</nz-form-label>
|
||||||
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid msadDomain!">
|
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid msadDomain!">
|
||||||
<input [(ngModel)]="form.model.msadDomain" [ngModelOptions]="{ standalone: true }" nz-input name="msadDomain" id="msadDomain" />
|
<input [(ngModel)]="form.model.msadDomain" [ngModelOptions]="{ standalone: true }" nz-input name="msadDomain"
|
||||||
|
id="msadDomain" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
|
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzFor="sslSwitch">{{ 'mxk.ldapcontext.sslSwitch' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzFor="sslSwitch">{{ 'mxk.ldapcontext.sslSwitch' | i18n }}</nz-form-label>
|
||||||
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid qwerty!">
|
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid qwerty!">
|
||||||
<nz-switch
|
<nz-switch [(ngModel)]="form.model.switch_sslSwitch" [ngModelOptions]="{ standalone: true }" name="sslSwitch"
|
||||||
[(ngModel)]="form.model.switch_sslSwitch"
|
[nzCheckedChildren]="checkedTemplate" [nzUnCheckedChildren]="unCheckedTemplate"></nz-switch>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="sslSwitch"
|
|
||||||
[nzCheckedChildren]="checkedTemplate"
|
|
||||||
[nzUnCheckedChildren]="unCheckedTemplate"
|
|
||||||
></nz-switch>
|
|
||||||
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
||||||
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
@ -108,19 +104,16 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzFor="trustStore">{{ 'mxk.ldapcontext.trustStore' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzFor="trustStore">{{ 'mxk.ldapcontext.trustStore' | i18n }}</nz-form-label>
|
||||||
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid trustStore!">
|
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid trustStore!">
|
||||||
<input [(ngModel)]="form.model.trustStore" [ngModelOptions]="{ standalone: true }" nz-input name="trustStore" id="trustStore" />
|
<input [(ngModel)]="form.model.trustStore" [ngModelOptions]="{ standalone: true }" nz-input name="trustStore"
|
||||||
|
id="trustStore" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzFor="trustStorePassword">{{ 'mxk.ldapcontext.trustStorePassword' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzFor="trustStorePassword">{{ 'mxk.ldapcontext.trustStorePassword' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid trustStorePassword!">
|
<nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid trustStorePassword!">
|
||||||
<input
|
<input [(ngModel)]="form.model.trustStorePassword" [ngModelOptions]="{ standalone: true }" nz-input
|
||||||
[(ngModel)]="form.model.trustStorePassword"
|
name="trustStorePassword" id="trustStorePassword" />
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
nz-input
|
|
||||||
name="trustStorePassword"
|
|
||||||
id="trustStorePassword"
|
|
||||||
/>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item style="width: 100%">
|
<nz-form-item style="width: 100%">
|
||||||
@ -129,4 +122,4 @@
|
|||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</form>
|
</form>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -4,237 +4,152 @@
|
|||||||
<nz-form-item style="display: none">
|
<nz-form-item style="display: none">
|
||||||
<nz-form-label [nzMd]="6" nzRequired nzFor="id">id</nz-form-label>
|
<nz-form-label [nzMd]="6" nzRequired nzFor="id">id</nz-form-label>
|
||||||
<nz-form-control [nzMd]="18" nzErrorTip="The input is not valid id!">
|
<nz-form-control [nzMd]="18" nzErrorTip="The input is not valid id!">
|
||||||
<input [(ngModel)]="form.model.id" [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id" value="id" />
|
<input [(ngModel)]="form.model.id" [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id"
|
||||||
|
value="id" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="minLength">{{ 'mxk.passwordpolicy.minLength' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="minLength">{{ 'mxk.passwordpolicy.minLength' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not validminLength!">
|
<nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not validminLength!">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.minLength" [ngModelOptions]="{ standalone: true }" [nzMin]="0"
|
||||||
[(ngModel)]="form.model.minLength"
|
[nzMax]="10" [nzStep]="1" name="minLength" id="minLength" value="0"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="0"
|
|
||||||
[nzMax]="10"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="minLength"
|
|
||||||
id="minLength"
|
|
||||||
value="0"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="maxLength">{{ 'mxk.passwordpolicy.maxLength' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="maxLength">{{ 'mxk.passwordpolicy.maxLength' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid maxLength!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid maxLength!">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.maxLength" [ngModelOptions]="{ standalone: true }" [nzMin]="0"
|
||||||
[(ngModel)]="form.model.maxLength"
|
[nzMax]="10" [nzStep]="1" name="maxLength" id="maxLength"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="0"
|
|
||||||
[nzMax]="10"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="maxLength"
|
|
||||||
id="maxLength"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="lowerCase">{{ 'mxk.passwordpolicy.lowerCase' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="lowerCase">{{ 'mxk.passwordpolicy.lowerCase' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid lowerCase!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid lowerCase!">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.lowerCase" [ngModelOptions]="{ standalone: true }" [nzMin]="0"
|
||||||
[(ngModel)]="form.model.lowerCase"
|
[nzMax]="10" [nzStep]="1" name="lowerCase" id="lowerCase"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="0"
|
|
||||||
[nzMax]="10"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="lowerCase"
|
|
||||||
id="lowerCase"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="upperCase">{{ 'mxk.passwordpolicy.upperCase' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="upperCase">{{ 'mxk.passwordpolicy.upperCase' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid upperCase!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid upperCase!">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.upperCase" [ngModelOptions]="{ standalone: true }" [nzMin]="0"
|
||||||
[(ngModel)]="form.model.upperCase"
|
[nzMax]="10" [nzStep]="1" name="upperCase" id="upperCase"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="0"
|
|
||||||
[nzMax]="10"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="upperCase"
|
|
||||||
id="upperCase"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="digits">{{ 'mxk.passwordpolicy.digits' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="digits">{{ 'mxk.passwordpolicy.digits' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid digits!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid digits!">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.digits" [ngModelOptions]="{ standalone: true }" [nzMin]="0"
|
||||||
[(ngModel)]="form.model.digits"
|
[nzMax]="10" [nzStep]="1" name="digits" id="digits"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="0"
|
|
||||||
[nzMax]="10"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="digits"
|
|
||||||
id="digits"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="specialChar">{{ 'mxk.passwordpolicy.specialChar' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="specialChar">{{ 'mxk.passwordpolicy.specialChar' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid specialChar!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid specialChar!">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.specialChar" [ngModelOptions]="{ standalone: true }" [nzMin]="0"
|
||||||
[(ngModel)]="form.model.specialChar"
|
[nzMax]="10" [nzStep]="1" name="specialChar" id="specialChar"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="0"
|
|
||||||
[nzMax]="10"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="specialChar"
|
|
||||||
id="specialChar"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="attempts">{{ 'mxk.passwordpolicy.attempts' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="attempts">{{ 'mxk.passwordpolicy.attempts' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid attempts!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid attempts!">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.attempts" [ngModelOptions]="{ standalone: true }" [nzMin]="0"
|
||||||
[(ngModel)]="form.model.attempts"
|
[nzMax]="10" [nzStep]="1" name="attempts" id="attempts"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="0"
|
|
||||||
[nzMax]="10"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="attempts"
|
|
||||||
id="attempts"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
|
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="duration">{{ 'mxk.passwordpolicy.duration' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="duration">{{ 'mxk.passwordpolicy.duration' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid duration!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid duration!">
|
||||||
<nz-input-group nzAddOnAfter="{{ 'mxk.text.hour' | i18n }}">
|
<nz-input-group nzAddOnAfter="{{ 'mxk.text.minute' | i18n }}">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.duration" [ngModelOptions]="{ standalone: true }" [nzMin]="0"
|
||||||
[(ngModel)]="form.model.duration"
|
[nzMax]="720" [nzStep]="1" name="duration" id="duration"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="0"
|
|
||||||
[nzMax]="24"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="duration"
|
|
||||||
id="duration"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-input-group>
|
</nz-input-group>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="occurances">{{ 'mxk.passwordpolicy.occurances' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="occurances">{{ 'mxk.passwordpolicy.occurances' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid occurances!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid occurances!">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.occurances" [ngModelOptions]="{ standalone: true }" [nzMin]="0"
|
||||||
[(ngModel)]="form.model.occurances"
|
[nzMax]="10" [nzStep]="1" name="occurances" id="occurances"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="0"
|
|
||||||
[nzMax]="10"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="occurances"
|
|
||||||
id="occurances"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="expiration">{{ 'mxk.passwordpolicy.expiration' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="expiration">{{ 'mxk.passwordpolicy.expiration' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid expiration!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid expiration!">
|
||||||
<nz-input-group nzAddOnAfter="{{ 'mxk.text.day' | i18n }}">
|
<nz-input-group nzAddOnAfter="{{ 'mxk.text.day' | i18n }}">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.expiration" [ngModelOptions]="{ standalone: true }" [nzMin]="30"
|
||||||
[(ngModel)]="form.model.expiration"
|
[nzMax]="365" [nzStep]="1" name="expiration" id="expiration"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="30"
|
|
||||||
[nzMax]="365"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="expiration"
|
|
||||||
id="expiration"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-input-group>
|
</nz-input-group>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="history">{{ 'mxk.passwordpolicy.history' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="history">{{ 'mxk.passwordpolicy.history' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid history!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid history!">
|
||||||
<nz-input-number
|
<nz-input-number [(ngModel)]="form.model.history" [ngModelOptions]="{ standalone: true }" [nzMin]="0"
|
||||||
[(ngModel)]="form.model.history"
|
[nzMax]="10" [nzStep]="1" name="history" id="history"></nz-input-number>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
[nzMin]="0"
|
|
||||||
[nzMax]="10"
|
|
||||||
[nzStep]="1"
|
|
||||||
name="history"
|
|
||||||
id="history"
|
|
||||||
></nz-input-number>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
|
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="username">{{ 'mxk.passwordpolicy.username' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="username">{{ 'mxk.passwordpolicy.username' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid username!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid username!">
|
||||||
<nz-switch
|
<nz-switch [(ngModel)]="form.model.switch_username" [ngModelOptions]="{ standalone: true }" name="username"
|
||||||
[(ngModel)]="form.model.switch_username"
|
[nzCheckedChildren]="checkedTemplate" [nzUnCheckedChildren]="unCheckedTemplate"></nz-switch>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="username"
|
|
||||||
[nzCheckedChildren]="checkedTemplate"
|
|
||||||
[nzUnCheckedChildren]="unCheckedTemplate"
|
|
||||||
></nz-switch>
|
|
||||||
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
||||||
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
|
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="dictionary">{{ 'mxk.passwordpolicy.dictionary' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="dictionary">{{ 'mxk.passwordpolicy.dictionary' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid dictionary!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid dictionary!">
|
||||||
<nz-switch
|
<nz-switch [(ngModel)]="form.model.switch_dictionary" [ngModelOptions]="{ standalone: true }" name="dictionary"
|
||||||
[(ngModel)]="form.model.switch_dictionary"
|
[nzCheckedChildren]="checkedTemplate" [nzUnCheckedChildren]="unCheckedTemplate"></nz-switch>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="dictionary"
|
|
||||||
[nzCheckedChildren]="checkedTemplate"
|
|
||||||
[nzUnCheckedChildren]="unCheckedTemplate"
|
|
||||||
></nz-switch>
|
|
||||||
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
||||||
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="alphabetical">{{ 'mxk.passwordpolicy.alphabetical' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="alphabetical">{{ 'mxk.passwordpolicy.alphabetical' | i18n
|
||||||
|
}}</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid alphabetical!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid alphabetical!">
|
||||||
<nz-switch
|
<nz-switch [(ngModel)]="form.model.switch_alphabetical" [ngModelOptions]="{ standalone: true }"
|
||||||
[(ngModel)]="form.model.switch_alphabetical"
|
name="alphabetical" [nzCheckedChildren]="checkedTemplate" [nzUnCheckedChildren]="unCheckedTemplate">
|
||||||
[ngModelOptions]="{ standalone: true }"
|
</nz-switch>
|
||||||
name="alphabetical"
|
|
||||||
[nzCheckedChildren]="checkedTemplate"
|
|
||||||
[nzUnCheckedChildren]="unCheckedTemplate"
|
|
||||||
></nz-switch>
|
|
||||||
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
||||||
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="numerical">{{ 'mxk.passwordpolicy.numerical' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="numerical">{{ 'mxk.passwordpolicy.numerical' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid numerical!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid numerical!">
|
||||||
<nz-switch
|
<nz-switch [(ngModel)]="form.model.switch_numerical" [ngModelOptions]="{ standalone: true }" name="numerical"
|
||||||
[(ngModel)]="form.model.switch_numerical"
|
[nzCheckedChildren]="checkedTemplate" [nzUnCheckedChildren]="unCheckedTemplate"></nz-switch>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="numerical"
|
|
||||||
[nzCheckedChildren]="checkedTemplate"
|
|
||||||
[nzUnCheckedChildren]="unCheckedTemplate"
|
|
||||||
></nz-switch>
|
|
||||||
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
||||||
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="qwerty">{{ 'mxk.passwordpolicy.qwerty' | i18n }}</nz-form-label>
|
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="qwerty">{{ 'mxk.passwordpolicy.qwerty' | i18n }}
|
||||||
|
</nz-form-label>
|
||||||
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid qwerty!">
|
<nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid qwerty!">
|
||||||
<nz-switch
|
<nz-switch [(ngModel)]="form.model.switch_qwerty" [ngModelOptions]="{ standalone: true }" name="qwerty"
|
||||||
[(ngModel)]="form.model.switch_qwerty"
|
[nzCheckedChildren]="checkedTemplate" [nzUnCheckedChildren]="unCheckedTemplate"></nz-switch>
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="qwerty"
|
|
||||||
[nzCheckedChildren]="checkedTemplate"
|
|
||||||
[nzUnCheckedChildren]="unCheckedTemplate"
|
|
||||||
></nz-switch>
|
|
||||||
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
<ng-template #checkedTemplate><i nz-icon nzType="check"></i></ng-template>
|
||||||
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
<ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
@ -246,4 +161,4 @@
|
|||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</form>
|
</form>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -7,24 +7,19 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.socialsproviders.providerName' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.socialsproviders.providerName' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.providerName" [ngModelOptions]="{ standalone: true }"
|
||||||
nz-input
|
name="providerName" placeholder="" id="providerName" />
|
||||||
[(ngModel)]="query.params.providerName"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="providerName"
|
|
||||||
placeholder=""
|
|
||||||
id="providerName"
|
|
||||||
/>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -34,64 +29,50 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzSize="small"
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzBordered
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
<th nzAlign="center">{{ 'mxk.socialsproviders.icon' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.socialsproviders.icon' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.socialsproviders.provider' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.socialsproviders.provider' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.socialsproviders.providerName' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.socialsproviders.providerName' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.sortIndex' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.sortIndex' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.description' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.status' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td nzAlign="left" nzBreakWord="false"><img src="{{ data.icon }}" /></td>
|
<td nzAlign="center" nzBreakWord="false"><img src="{{ data.icon }}" /></td>
|
||||||
<td nzAlign="center"> {{ data.provider }}</td>
|
<td nzAlign="left"> {{ data.provider }}</td>
|
||||||
<td nzAlign="center"> {{ data.providerName }}</td>
|
<td nzAlign="left"> {{ data.providerName }}</td>
|
||||||
<td nzAlign="center"> {{ data.sortIndex }}</td>
|
<td nzAlign="center"> {{ data.sortIndex }}</td>
|
||||||
<td nzAlign="left">{{ data.description }}</td>
|
<td nzAlign="center"> <i *ngIf="data.status == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
style="color: green"></i></td>
|
||||||
><div nz-col>
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<div nz-col>
|
||||||
|
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.edit' | i18n
|
'mxk.text.edit' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -7,17 +7,19 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.synchronizers.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.synchronizers.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -27,64 +29,51 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzSize="small"
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzBordered
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
<th nzAlign="center">{{ 'mxk.synchronizers.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.synchronizers.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.synchronizers.scheduler' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.synchronizers.scheduler' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.description' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.status' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td nzAlign="center"> {{ data.name }}</td>
|
<td nzAlign="left"> {{ data.name }}</td>
|
||||||
<td nzAlign="center"> {{ data.scheduler }}</td>
|
<td nzAlign="left"> {{ data.scheduler }}</td>
|
||||||
<td nzAlign="left">{{ data.description }}</td>
|
<td nzAlign="center"> <i *ngIf="data.status == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
style="color: green"></i></td>
|
||||||
><div nz-col>
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
<button nz-button type="button" (click)="onSynchr($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<div nz-col>
|
||||||
|
<button nz-button type="button" (click)="onSynchr($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.synchr' | i18n
|
'mxk.text.synchr' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.edit' | i18n
|
'mxk.text.edit' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -17,16 +17,8 @@
|
|||||||
<p class="text-nowrap mb0">{{ 'mxk.home.onlineUsers' | i18n }}</p>
|
<p class="text-nowrap mb0">{{ 'mxk.home.onlineUsers' | i18n }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzSpan="12">
|
<div nz-col nzSpan="12">
|
||||||
<g2-mini-bar
|
<g2-mini-bar *ngIf="simulateData" height="35" color="#fff" borderWidth="3" [padding]="[5, 30]"
|
||||||
*ngIf="simulateData"
|
[data]="simulateData" tooltipType="mini" (ready)="fixDark($event)"></g2-mini-bar>
|
||||||
height="35"
|
|
||||||
color="#fff"
|
|
||||||
borderWidth="3"
|
|
||||||
[padding]="[5, 30]"
|
|
||||||
[data]="simulateData"
|
|
||||||
tooltipType="mini"
|
|
||||||
(ready)="fixDark($event)"
|
|
||||||
></g2-mini-bar>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -37,16 +29,8 @@
|
|||||||
<p class="text-nowrap mb0">{{ 'mxk.home.dayCount' | i18n }}</p>
|
<p class="text-nowrap mb0">{{ 'mxk.home.dayCount' | i18n }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzSpan="12">
|
<div nz-col nzSpan="12">
|
||||||
<g2-mini-bar
|
<g2-mini-bar *ngIf="simulateData" height="35" color="#fff" borderWidth="3" [padding]="[5, 30]"
|
||||||
*ngIf="simulateData"
|
[data]="simulateData" tooltipType="mini" (ready)="fixDark($event)"></g2-mini-bar>
|
||||||
height="35"
|
|
||||||
color="#fff"
|
|
||||||
borderWidth="3"
|
|
||||||
[padding]="[5, 30]"
|
|
||||||
[data]="simulateData"
|
|
||||||
tooltipType="mini"
|
|
||||||
(ready)="fixDark($event)"
|
|
||||||
></g2-mini-bar>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -57,16 +41,8 @@
|
|||||||
<p class="text-nowrap mb0">{{ 'mxk.home.newUsers' | i18n }}</p>
|
<p class="text-nowrap mb0">{{ 'mxk.home.newUsers' | i18n }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzSpan="12">
|
<div nz-col nzSpan="12">
|
||||||
<g2-mini-bar
|
<g2-mini-bar *ngIf="simulateData" height="35" color="#fff" borderWidth="3" [padding]="[5, 30]"
|
||||||
*ngIf="simulateData"
|
[data]="simulateData" tooltipType="mini" (ready)="fixDark($event)"></g2-mini-bar>
|
||||||
height="35"
|
|
||||||
color="#fff"
|
|
||||||
borderWidth="3"
|
|
||||||
[padding]="[5, 30]"
|
|
||||||
[data]="simulateData"
|
|
||||||
tooltipType="mini"
|
|
||||||
(ready)="fixDark($event)"
|
|
||||||
></g2-mini-bar>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -77,16 +53,8 @@
|
|||||||
<p class="text-nowrap mb0">{{ 'mxk.home.activeUsers' | i18n }}</p>
|
<p class="text-nowrap mb0">{{ 'mxk.home.activeUsers' | i18n }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzSpan="12">
|
<div nz-col nzSpan="12">
|
||||||
<g2-mini-bar
|
<g2-mini-bar *ngIf="simulateData" height="35" color="#fff" borderWidth="3" [padding]="[5, 30]"
|
||||||
*ngIf="simulateData"
|
[data]="simulateData" tooltipType="mini" (ready)="fixDark($event)"></g2-mini-bar>
|
||||||
height="35"
|
|
||||||
color="#fff"
|
|
||||||
borderWidth="3"
|
|
||||||
[padding]="[5, 30]"
|
|
||||||
[data]="simulateData"
|
|
||||||
tooltipType="mini"
|
|
||||||
(ready)="fixDark($event)"
|
|
||||||
></g2-mini-bar>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -97,7 +65,8 @@
|
|||||||
<ng-template #dayAccessTitle>
|
<ng-template #dayAccessTitle>
|
||||||
{{ 'mxk.home.dayAccessCount' | i18n }}
|
{{ 'mxk.home.dayAccessCount' | i18n }}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<g2-bar *ngIf="dayData" height="275" [data]="dayData" color="#fa8c16"></g2-bar>
|
<!--<g2-bar *ngIf="dayData" height="275" [data]="dayData" color="#fa8c16"></g2-bar>-->
|
||||||
|
<g2-bar *ngIf="dayData" height="275" [data]="dayData"></g2-bar>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzXs="24" nzMd="24">
|
<div nz-col nzXs="24" nzMd="24">
|
||||||
@ -146,4 +115,4 @@
|
|||||||
</nz-table>
|
</nz-table>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -7,16 +7,18 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.organizations.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.organizations.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -27,18 +29,11 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzMd="8" nzSm="24">
|
<div nz-col nzMd="6" nzSm="24" class="grid-border">
|
||||||
<nz-tree
|
<nz-tree nzShowLine="false" [nzCheckable]="treeNodes.checkable" nzBlockNode [nzData]="treeNodes.nodes"
|
||||||
nzShowLine="false"
|
(nzClick)="activeNode($event)" (nzDblClick)="openFolder($event)" [nzTreeTemplate]="nzTreeTemplate"></nz-tree>
|
||||||
[nzCheckable]="treeNodes.checkable"
|
|
||||||
nzBlockNode
|
|
||||||
[nzData]="treeNodes.nodes"
|
|
||||||
(nzClick)="activeNode($event)"
|
|
||||||
(nzDblClick)="openFolder($event)"
|
|
||||||
[nzTreeTemplate]="nzTreeTemplate"
|
|
||||||
></nz-tree>
|
|
||||||
<ng-template #nzTreeTemplate let-node let-origin="origin">
|
<ng-template #nzTreeTemplate let-node let-origin="origin">
|
||||||
<span class="custom-node">
|
<span class="custom-node">
|
||||||
<span *ngIf="!node.isLeaf" (contextmenu)="contextMenu($event, menu)">
|
<span *ngIf="!node.isLeaf" (contextmenu)="contextMenu($event, menu)">
|
||||||
@ -58,58 +53,47 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</nz-dropdown-menu>
|
</nz-dropdown-menu>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzMd="16" nzSm="24">
|
<div nz-col nzMd="18" nzSm="24" class="grid-border">
|
||||||
<nz-table
|
<nz-table #dynamicTable nzBordered nzShowSizeChanger [nzData]="query.results.rows" [nzFrontPagination]="false"
|
||||||
#dynamicTable
|
[nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber"
|
||||||
nzBordered
|
[nzLoading]="this.query.tableLoading" (nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center">{{ 'mxk.organizations.code' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.organizations.code' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.organizations.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.organizations.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.sortIndex' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.sortIndex' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center">{{ 'mxk.text.status' | i18n }}</th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left">
|
<td nzAlign="left">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td nzAlign="center"> {{ data.name }}</td>
|
<td nzAlign="left"> {{ data.name }}</td>
|
||||||
<td nzAlign="center"> {{ data.sortIndex }}</td>
|
<td nzAlign="center"> {{ data.sortIndex }}</td>
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
<td nzAlign="center"> <i *ngIf="data.status == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
><div nz-col>
|
style="color: green"></i></td>
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
'mxk.text.edit' | i18n
|
<div nz-col>
|
||||||
}}</button>
|
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">
|
||||||
|
{{ 'mxk.text.edit' | i18n }}
|
||||||
|
</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -3,41 +3,37 @@
|
|||||||
<nz-card [nzBordered]="false">
|
<nz-card [nzBordered]="false">
|
||||||
<form nz-form [nzLayout]="'inline'" (ngSubmit)="onSearch()" class="search__form">
|
<form nz-form [nzLayout]="'inline'" (ngSubmit)="onSearch()" class="search__form">
|
||||||
<div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
|
<div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
|
||||||
<div nz-col nzMd="8" nzSm="24">
|
|
||||||
<nz-form-item>
|
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
|
|
||||||
<nz-form-control>
|
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
|
||||||
</nz-form-control>
|
|
||||||
</nz-form-item>
|
|
||||||
</div>
|
|
||||||
<div nz-col nzMd="10" nzSm="24">
|
<div nz-col nzMd="10" nzSm="24">
|
||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.resources.appName' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.resources.appName' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.appName" [ngModelOptions]="{ standalone: true }" name="appName"
|
||||||
nz-input
|
readonly placeholder="" id="appName" />
|
||||||
[(ngModel)]="query.params.appName"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="appName"
|
|
||||||
readonly
|
|
||||||
placeholder=""
|
|
||||||
id="appName"
|
|
||||||
/>
|
|
||||||
</nz-input-group>
|
</nz-input-group>
|
||||||
<ng-template #suffixButton>
|
<ng-template #suffixButton>
|
||||||
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n
|
||||||
|
}}</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
<div nz-col nzMd="8" nzSm="24">
|
||||||
|
<nz-form-item>
|
||||||
|
<nz-form-label nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
|
||||||
|
<nz-form-control>
|
||||||
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
|
</nz-form-control>
|
||||||
|
</nz-form-item>
|
||||||
|
</div>
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 6" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 6" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -47,59 +43,10 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onSave($event)">{{ 'mxk.text.save' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onSave($event)">{{ 'mxk.text.save' | i18n }}</button>
|
||||||
</div>
|
</div>
|
||||||
<div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
|
<div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
|
||||||
<div nz-col [nzSpan]="12">
|
<div nz-col [nzSpan]="10" class="grid-border">
|
||||||
<nz-table
|
<nz-tree #nzTreeComponent nzShowLine="false" [nzCheckable]="treeNodes.checkable"
|
||||||
#dynamicTable
|
[nzCheckedKeys]="treeNodes.checkedKeys" nzBlockNode [nzData]="treeNodes.nodes" (nzDblClick)="openFolder($event)"
|
||||||
nzTableLayout="auto"
|
[nzTreeTemplate]="nzTreeTemplate"></nz-tree>
|
||||||
nzSize="small"
|
|
||||||
nzBordered
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<!--<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
|
||||||
-->
|
|
||||||
<th nzAlign="center"></th>
|
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
|
||||||
<th nzAlign="center">{{ 'mxk.roles.name' | i18n }}</th>
|
|
||||||
<th nzAlign="center">{{ 'mxk.roles.dynamic' | i18n }}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr *ngFor="let data of query.results.rows">
|
|
||||||
<td
|
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
|
||||||
<span>{{ data.id }}</span>
|
|
||||||
</td>
|
|
||||||
<td nzAlign="left" nzBreakWord="false">{{ data.name }}</td>
|
|
||||||
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill" style="color: green"></i></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</nz-table>
|
|
||||||
</div>
|
|
||||||
<div nz-col [nzSpan]="12">
|
|
||||||
<nz-tree
|
|
||||||
#nzTreeComponent
|
|
||||||
nzShowLine="false"
|
|
||||||
[nzCheckable]="treeNodes.checkable"
|
|
||||||
[nzCheckedKeys]="treeNodes.checkedKeys"
|
|
||||||
nzBlockNode
|
|
||||||
[nzData]="treeNodes.nodes"
|
|
||||||
(nzDblClick)="openFolder($event)"
|
|
||||||
[nzTreeTemplate]="nzTreeTemplate"
|
|
||||||
></nz-tree>
|
|
||||||
<ng-template #nzTreeTemplate let-node let-origin="origin">
|
<ng-template #nzTreeTemplate let-node let-origin="origin">
|
||||||
<span class="custom-node">
|
<span class="custom-node">
|
||||||
<span *ngIf="!node.isLeaf">
|
<span *ngIf="!node.isLeaf">
|
||||||
@ -113,5 +60,35 @@
|
|||||||
</span>
|
</span>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</div>
|
</div>
|
||||||
|
<div nz-col [nzSpan]="14" class="grid-border">
|
||||||
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered nzShowSizeChanger
|
||||||
|
[nzData]="query.results.rows" [nzFrontPagination]="false" [nzTotal]="query.results.records"
|
||||||
|
[nzPageSizeOptions]="query.params.pageSizeOptions" [nzPageSize]="query.params.pageSize"
|
||||||
|
[nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
|
(nzQueryParams)="onQueryParamsChange($event)">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<!--<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
|
-->
|
||||||
|
<th nzAlign="center"></th>
|
||||||
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
|
<th nzAlign="center">{{ 'mxk.roles.name' | i18n }}</th>
|
||||||
|
<th nzAlign="center">{{ 'mxk.roles.dynamic' | i18n }}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr *ngFor="let data of query.results.rows">
|
||||||
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
|
<td nzAlign="left" style="display: none">
|
||||||
|
<span>{{ data.id }}</span>
|
||||||
|
</td>
|
||||||
|
<td nzAlign="left" nzBreakWord="false">{{ data.name }}</td>
|
||||||
|
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
|
style="color: green"></i></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</nz-table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -8,18 +8,12 @@
|
|||||||
<nz-form-label nzFor="name">{{ 'mxk.resources.appName' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.resources.appName' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.appName" [ngModelOptions]="{ standalone: true }" name="appName"
|
||||||
nz-input
|
readonly placeholder="" id="appName" />
|
||||||
[(ngModel)]="query.params.appName"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="appName"
|
|
||||||
readonly
|
|
||||||
placeholder=""
|
|
||||||
id="appName"
|
|
||||||
/>
|
|
||||||
</nz-input-group>
|
</nz-input-group>
|
||||||
<ng-template #suffixButton>
|
<ng-template #suffixButton>
|
||||||
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n
|
||||||
|
}}</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
@ -28,16 +22,18 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.resources.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.resources.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 4" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 4" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -48,18 +44,11 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzMd="8" nzSm="24">
|
<div nz-col nzMd="6" nzSm="24" class="grid-border">
|
||||||
<nz-tree
|
<nz-tree nzShowLine="false" [nzCheckable]="treeNodes.checkable" nzBlockNode [nzData]="treeNodes.nodes"
|
||||||
nzShowLine="false"
|
(nzClick)="activeNode($event)" (nzDblClick)="openFolder($event)" [nzTreeTemplate]="nzTreeTemplate"></nz-tree>
|
||||||
[nzCheckable]="treeNodes.checkable"
|
|
||||||
nzBlockNode
|
|
||||||
[nzData]="treeNodes.nodes"
|
|
||||||
(nzClick)="activeNode($event)"
|
|
||||||
(nzDblClick)="openFolder($event)"
|
|
||||||
[nzTreeTemplate]="nzTreeTemplate"
|
|
||||||
></nz-tree>
|
|
||||||
<ng-template #nzTreeTemplate let-node let-origin="origin">
|
<ng-template #nzTreeTemplate let-node let-origin="origin">
|
||||||
<span class="custom-node">
|
<span class="custom-node">
|
||||||
<span *ngIf="!node.isLeaf" (contextmenu)="contextMenu($event, menu)">
|
<span *ngIf="!node.isLeaf" (contextmenu)="contextMenu($event, menu)">
|
||||||
@ -79,60 +68,49 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</nz-dropdown-menu>
|
</nz-dropdown-menu>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzMd="16" nzSm="24">
|
<div nz-col nzMd="18" nzSm="24" class="grid-border">
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber"
|
||||||
nzBordered
|
[nzLoading]="this.query.tableLoading" (nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center">{{ 'mxk.resources.appName' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.resources.appName' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.resources.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.resources.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.resources.resourceType' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.resources.resourceType' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.sortIndex' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.sortIndex' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center">{{ 'mxk.text.status' | i18n }}</th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left">
|
<td nzAlign="left">
|
||||||
<span>{{ data.appName }}</span>
|
<span>{{ data.appName }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td nzAlign="center"> {{ data.name }}</td>
|
<td nzAlign="left"> {{ data.name }}</td>
|
||||||
<td nzAlign="center"> {{ data.resourceType }}</td>
|
<td nzAlign="left"> {{ data.resourceType }}</td>
|
||||||
<td nzAlign="center"> {{ data.sortIndex }}</td>
|
<td nzAlign="center"> {{ data.sortIndex }}</td>
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
<td nzAlign="center"> <i *ngIf="data.status == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
><div nz-col>
|
style="color: green"></i></td>
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
|
<div nz-col>
|
||||||
|
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.edit' | i18n
|
'mxk.text.edit' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -6,47 +6,32 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="username">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="username">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.username" [ngModelOptions]="{ standalone: true }" name="username"
|
||||||
nz-input
|
placeholder="" id="username" />
|
||||||
[(ngModel)]="query.params.username"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="username"
|
|
||||||
placeholder=""
|
|
||||||
id="username"
|
|
||||||
/>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 10" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 10" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.confirm' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.confirm' | i18n }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzBordered
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
||||||
@ -58,18 +43,17 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
<td nzAlign="left"> {{ data.username }}</td>
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
<td nzAlign="left"> {{ data.displayName }}</td>
|
||||||
></td>
|
<td nzAlign="left"> {{ data.employeeNumber }}</td>
|
||||||
<td nzAlign="center"> {{ data.username }}</td>
|
<td nzAlign="left"> {{ data.department }}</td>
|
||||||
<td nzAlign="center"> {{ data.displayName }}</td>
|
<td nzAlign="left"> {{ data.jobTitle }}</td>
|
||||||
<td nzAlign="center"> {{ data.employeeNumber }}</td>
|
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' |
|
||||||
<td nzAlign="center"> {{ data.department }}</td>
|
i18n) }}</td>
|
||||||
<td nzAlign="center"> {{ data.jobTitle }}</td>
|
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }}</td>
|
style="color: green"></i></td>
|
||||||
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill" style="color: green"></i></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
@ -77,4 +61,4 @@
|
|||||||
<div *nzModalFooter style="display: none">
|
<div *nzModalFooter style="display: none">
|
||||||
<button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
|
<button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
|
||||||
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
|
||||||
</div>
|
</div>
|
||||||
@ -8,18 +8,12 @@
|
|||||||
<nz-form-label nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
<nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.roleName" [ngModelOptions]="{ standalone: true }"
|
||||||
nz-input
|
name="roleName" readonly placeholder="" id="roleName" />
|
||||||
[(ngModel)]="query.params.roleName"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="roleName"
|
|
||||||
readonly
|
|
||||||
placeholder=""
|
|
||||||
id="roleName"
|
|
||||||
/>
|
|
||||||
</nz-input-group>
|
</nz-input-group>
|
||||||
<ng-template #suffixButton>
|
<ng-template #suffixButton>
|
||||||
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n
|
||||||
|
}}</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
@ -28,23 +22,18 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.username" [ngModelOptions]="{ standalone: true }" name="username"
|
||||||
nz-input
|
placeholder="" id="username" />
|
||||||
[(ngModel)]="query.params.username"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="username"
|
|
||||||
placeholder=""
|
|
||||||
id="username"
|
|
||||||
/>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 4" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 4" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -55,69 +44,49 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col nzMd="24" nzSm="24">
|
<div nz-col nzMd="24" nzSm="24">
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber"
|
||||||
nzBordered
|
[nzLoading]="this.query.tableLoading" (nzQueryParams)="onQueryParamsChange($event)">
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center">{{ 'mxk.roles.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.roles.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
|
||||||
<th nzAlign="center">{{ 'mxk.users.employeeNumber' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.employeeNumber' | i18n }}</th>
|
||||||
|
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.department' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.department' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.jobTitle' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.jobTitle' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.gender' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.gender' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
<td nzAlign="left"> {{ data.roleName }}</td>
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
<td nzAlign="left"> {{ data.username }}</td>
|
||||||
></td>
|
<td nzAlign="left"> {{ data.employeeNumber }}</td>
|
||||||
<td nzAlign="center"> {{ data.roleName }}</td>
|
<td nzAlign="left"> {{ data.displayName }}</td>
|
||||||
<td nzAlign="center"> {{ data.username }}</td>
|
<td nzAlign="left"> {{ data.department }}</td>
|
||||||
<td nzAlign="center"> {{ data.displayName }}</td>
|
<td nzAlign="left"> {{ data.jobTitle }}</td>
|
||||||
<td nzAlign="center"> {{ data.employeeNumber }}</td>
|
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' |
|
||||||
<td nzAlign="center"> {{ data.department }}</td>
|
i18n) }}</td>
|
||||||
<td nzAlign="center"> {{ data.jobTitle }}</td>
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }}</td>
|
<div nz-col>
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
<button *ngIf="data.dynamic == '0'" nz-button type="button" (click)="onDelete($event, data.id)"
|
||||||
><div nz-col>
|
[nzType]="'primary'" nzDanger>{{ 'mxk.text.delete' | i18n }}</button>
|
||||||
<button
|
</div>
|
||||||
*ngIf="data.dynamic == '0'"
|
</td>
|
||||||
nz-button
|
|
||||||
type="button"
|
|
||||||
(click)="onDelete($event, data.id)"
|
|
||||||
[nzType]="'primary'"
|
|
||||||
nzDanger
|
|
||||||
>{{ 'mxk.text.delete' | i18n }}</button
|
|
||||||
></div
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -7,17 +7,19 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name" placeholder="" id="name" />
|
<input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
|
||||||
|
placeholder="" id="name" />
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -27,61 +29,46 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered nzShowSizeChanger [nzData]="query.results.rows"
|
||||||
#dynamicTable
|
[nzFrontPagination]="false" [nzTotal]="query.results.records" [nzPageSizeOptions]="query.params.pageSizeOptions"
|
||||||
nzTableLayout="auto"
|
[nzPageSize]="query.params.pageSize" [nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzSize="small"
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
nzBordered
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
[nzScroll]="{ x: '100%', y: '100%' }"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">Id</th>
|
<th nzAlign="center" style="display: none">Id</th>
|
||||||
<th nzAlign="center">{{ 'mxk.roles.name' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.roles.name' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.roles.dynamic' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.roles.dynamic' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.text.description' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.text.description' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td nzAlign="left" nzBreakWord="false">{{ data.name }}</td>
|
<td nzAlign="left" nzBreakWord="false">{{ data.name }}</td>
|
||||||
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill" style="color: green"></i></td>
|
<td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill"
|
||||||
|
style="color: green"></i></td>
|
||||||
<td nzAlign="left">{{ data.description }}</td>
|
<td nzAlign="left">{{ data.description }}</td>
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
><div nz-col>
|
<div nz-col>
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.edit' | i18n
|
'mxk.text.edit' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -7,23 +7,18 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.username" [ngModelOptions]="{ standalone: true }" name="username"
|
||||||
nz-input
|
placeholder="" id="username" />
|
||||||
[(ngModel)]="query.params.username"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="username"
|
|
||||||
placeholder=""
|
|
||||||
id="username"
|
|
||||||
/>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 10" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 10" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.confirm' | i18n }}</button>
|
<button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.confirm' | i18n }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -32,15 +27,8 @@
|
|||||||
<nz-card [nzBordered]="false">
|
<nz-card [nzBordered]="false">
|
||||||
<div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
|
<div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
|
||||||
<div nz-col nzMd="6" nzSm="24">
|
<div nz-col nzMd="6" nzSm="24">
|
||||||
<nz-tree
|
<nz-tree nzShowLine="false" [nzCheckable]="treeNodes.checkable" nzBlockNode [nzData]="treeNodes.nodes"
|
||||||
nzShowLine="false"
|
(nzClick)="activeNode($event)" (nzDblClick)="openFolder($event)" [nzTreeTemplate]="nzTreeTemplate"></nz-tree>
|
||||||
[nzCheckable]="treeNodes.checkable"
|
|
||||||
nzBlockNode
|
|
||||||
[nzData]="treeNodes.nodes"
|
|
||||||
(nzClick)="activeNode($event)"
|
|
||||||
(nzDblClick)="openFolder($event)"
|
|
||||||
[nzTreeTemplate]="nzTreeTemplate"
|
|
||||||
></nz-tree>
|
|
||||||
<ng-template #nzTreeTemplate let-node let-origin="origin">
|
<ng-template #nzTreeTemplate let-node let-origin="origin">
|
||||||
<span class="custom-node">
|
<span class="custom-node">
|
||||||
<span *ngIf="!node.isLeaf">
|
<span *ngIf="!node.isLeaf">
|
||||||
@ -55,26 +43,15 @@
|
|||||||
</ng-template>
|
</ng-template>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzMd="18" nzSm="24">
|
<div nz-col nzMd="18" nzSm="24">
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered sizeChanger="true" nzShowSizeChanger
|
||||||
#dynamicTable
|
[nzData]="query.results.rows" [nzFrontPagination]="false" [nzTotal]="query.results.records"
|
||||||
nzTableLayout="auto"
|
[nzPageSizeOptions]="query.params.pageSizeOptions" [nzPageSize]="query.params.pageSize"
|
||||||
nzSize="small"
|
[nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzBordered
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
sizeChanger="true"
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">{{ 'mxk.text.id' | i18n }}</th>
|
<th nzAlign="center" style="display: none">{{ 'mxk.text.id' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
||||||
@ -82,30 +59,26 @@
|
|||||||
<th nzAlign="center">{{ 'mxk.users.department' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.department' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.jobTitle' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.jobTitle' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.gender' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.gender' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td nzAlign="center"> {{ data.username }}</td>
|
<td nzAlign="left"> {{ data.username }}</td>
|
||||||
<td nzAlign="center"> {{ data.displayName }}</td>
|
<td nzAlign="left"> {{ data.displayName }}</td>
|
||||||
<td nzAlign="center"> {{ data.employeeNumber }}</td>
|
<td nzAlign="left"> {{ data.employeeNumber }}</td>
|
||||||
<td nzAlign="center"> {{ data.department }}</td>
|
<td nzAlign="left"> {{ data.department }}</td>
|
||||||
<td nzAlign="center"> {{ data.jobTitle }}</td>
|
<td nzAlign="left"> {{ data.jobTitle }}</td>
|
||||||
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }}</td>
|
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' |
|
||||||
|
i18n) }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -7,23 +7,18 @@
|
|||||||
<nz-form-item>
|
<nz-form-item>
|
||||||
<nz-form-label nzFor="name">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
<nz-form-label nzFor="name">{{ 'mxk.users.username' | i18n }}</nz-form-label>
|
||||||
<nz-form-control>
|
<nz-form-control>
|
||||||
<input
|
<input nz-input [(ngModel)]="query.params.username" [ngModelOptions]="{ standalone: true }" name="username"
|
||||||
nz-input
|
placeholder="" id="username" />
|
||||||
[(ngModel)]="query.params.username"
|
|
||||||
[ngModelOptions]="{ standalone: true }"
|
|
||||||
name="username"
|
|
||||||
placeholder=""
|
|
||||||
id="username"
|
|
||||||
/>
|
|
||||||
</nz-form-control>
|
</nz-form-control>
|
||||||
</nz-form-item>
|
</nz-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
<div nz-col [nzSpan]="query.expandForm ? 24 : 8" [class.text-right]="query.expandForm">
|
||||||
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' | i18n }}</button>
|
<button nz-button type="submit" [nzType]="'primary'" [nzLoading]="query.submitLoading">{{ 'mxk.text.query' |
|
||||||
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' | i18n }}</button>
|
i18n }}</button>
|
||||||
|
<button nz-button type="reset" (click)="onReset()" class="mx-sm" style="display: none">{{ 'mxk.text.reset' |
|
||||||
|
i18n }}</button>
|
||||||
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
<button nz-button (click)="query.expandForm = !query.expandForm" class="mx-sm" style="display: none">
|
||||||
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button
|
{{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}</button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -34,18 +29,11 @@
|
|||||||
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
<button nz-button type="button" [nzType]="'primary'" (click)="onAdd($event)">{{ 'mxk.text.add' | i18n }}</button>
|
||||||
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
<button nz-button type="button" (click)="onBatchDelete($event)" [nzType]="'primary'" nzDanger class="mx-sm">{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzMd="6" nzSm="24">
|
<div nz-col nzMd="6" nzSm="24" class="grid-border">
|
||||||
<nz-tree
|
<nz-tree nzShowLine="false" [nzCheckable]="treeNodes.checkable" nzBlockNode [nzData]="treeNodes.nodes"
|
||||||
nzShowLine="false"
|
(nzClick)="activeNode($event)" (nzDblClick)="openFolder($event)" [nzTreeTemplate]="nzTreeTemplate"></nz-tree>
|
||||||
[nzCheckable]="treeNodes.checkable"
|
|
||||||
nzBlockNode
|
|
||||||
[nzData]="treeNodes.nodes"
|
|
||||||
(nzClick)="activeNode($event)"
|
|
||||||
(nzDblClick)="openFolder($event)"
|
|
||||||
[nzTreeTemplate]="nzTreeTemplate"
|
|
||||||
></nz-tree>
|
|
||||||
<ng-template #nzTreeTemplate let-node let-origin="origin">
|
<ng-template #nzTreeTemplate let-node let-origin="origin">
|
||||||
<span class="custom-node">
|
<span class="custom-node">
|
||||||
<span *ngIf="!node.isLeaf" (contextmenu)="contextMenu($event, menu)">
|
<span *ngIf="!node.isLeaf" (contextmenu)="contextMenu($event, menu)">
|
||||||
@ -65,27 +53,16 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</nz-dropdown-menu>
|
</nz-dropdown-menu>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col nzMd="18" nzSm="24">
|
<div nz-col nzMd="18" nzSm="24" class="grid-border">
|
||||||
<nz-table
|
<nz-table #dynamicTable nzTableLayout="auto" nzSize="small" nzBordered sizeChanger="true" nzShowSizeChanger
|
||||||
#dynamicTable
|
[nzData]="query.results.rows" [nzFrontPagination]="false" [nzTotal]="query.results.records"
|
||||||
nzTableLayout="auto"
|
[nzPageSizeOptions]="query.params.pageSizeOptions" [nzPageSize]="query.params.pageSize"
|
||||||
nzSize="small"
|
[nzPageIndex]="query.params.pageNumber" [nzLoading]="this.query.tableLoading"
|
||||||
nzBordered
|
(nzQueryParams)="onQueryParamsChange($event)" nzWidth="100%">
|
||||||
sizeChanger="true"
|
|
||||||
nzShowSizeChanger
|
|
||||||
[nzData]="query.results.rows"
|
|
||||||
[nzFrontPagination]="false"
|
|
||||||
[nzTotal]="query.results.records"
|
|
||||||
[nzPageSizeOptions]="query.params.pageSizeOptions"
|
|
||||||
[nzPageSize]="query.params.pageSize"
|
|
||||||
[nzPageIndex]="query.params.pageNumber"
|
|
||||||
[nzLoading]="this.query.tableLoading"
|
|
||||||
(nzQueryParams)="onQueryParamsChange($event)"
|
|
||||||
nzWidth="100%"
|
|
||||||
>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
|
<th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate"
|
||||||
|
(nzCheckedChange)="onTableAllChecked($event)"></th>
|
||||||
<th nzAlign="center" style="display: none">{{ 'mxk.text.id' | i18n }}</th>
|
<th nzAlign="center" style="display: none">{{ 'mxk.text.id' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
|
||||||
@ -93,40 +70,44 @@
|
|||||||
<th nzAlign="center">{{ 'mxk.users.department' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.department' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.jobTitle' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.jobTitle' | i18n }}</th>
|
||||||
<th nzAlign="center">{{ 'mxk.users.gender' | i18n }}</th>
|
<th nzAlign="center">{{ 'mxk.users.gender' | i18n }}</th>
|
||||||
<th nzAlign="center"
|
<th nzAlign="center">{{ 'mxk.text.status' | i18n }}</th>
|
||||||
><a>{{ 'mxk.text.action' | i18n }}</a></th
|
<th nzAlign="center"><a>{{ 'mxk.text.action' | i18n }}</a></th>
|
||||||
>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let data of query.results.rows">
|
<tr *ngFor="let data of query.results.rows">
|
||||||
<td
|
<td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
|
||||||
[nzChecked]="query.tableCheckedId.has(data.id)"
|
(nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
|
||||||
[nzDisabled]="data.disabled"
|
|
||||||
(nzCheckedChange)="onTableItemChecked(data.id, $event)"
|
|
||||||
></td>
|
|
||||||
<td nzAlign="left" style="display: none">
|
<td nzAlign="left" style="display: none">
|
||||||
<span>{{ data.id }}</span>
|
<span>{{ data.id }}</span>
|
||||||
</td>
|
</td>
|
||||||
<td nzAlign="center"> {{ data.username }}</td>
|
<td nzAlign="left"> {{ data.username }}</td>
|
||||||
<td nzAlign="center"> {{ data.displayName }}</td>
|
<td nzAlign="left"> {{ data.displayName }}</td>
|
||||||
<td nzAlign="center"> {{ data.employeeNumber }}</td>
|
<td nzAlign="left"> {{ data.employeeNumber }}</td>
|
||||||
<td nzAlign="center"> {{ data.department }}</td>
|
<td nzAlign="left"> {{ data.department }}</td>
|
||||||
<td nzAlign="center"> {{ data.jobTitle }}</td>
|
<td nzAlign="left"> {{ data.jobTitle }}</td>
|
||||||
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }}</td>
|
<td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' |
|
||||||
<td nzAlign="left" nzBreakWord="false"
|
i18n) }}</td>
|
||||||
><div nz-col>
|
<td nzAlign="center">
|
||||||
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'" style="float: left">{{
|
<i *ngIf="data.status == 1" nz-icon nzType="check-circle" nzTheme="fill" style="color: green"> </i>
|
||||||
|
<i *ngIf="data.status == 2" nz-icon nzType="stop" nzTheme="fill" style="color: gray"></i>
|
||||||
|
<i *ngIf="data.status == 5" nz-icon nzType="lock" nzTheme="fill" style="color: orange"></i>
|
||||||
|
<i *ngIf="data.status == 9" nz-icon nzType="close-circle" nzTheme="fill" style="color: red"></i>
|
||||||
|
</td>
|
||||||
|
<td nzAlign="left" nzBreakWord="false">
|
||||||
|
<div nz-col>
|
||||||
|
<button nz-button type="button" (click)="onEdit($event, data.id)" [nzType]="'primary'"
|
||||||
|
style="float: left">{{
|
||||||
'mxk.text.edit' | i18n
|
'mxk.text.edit' | i18n
|
||||||
}}</button>
|
}}</button>
|
||||||
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
<button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
|
||||||
'mxk.text.delete' | i18n
|
'mxk.text.delete' | i18n
|
||||||
}}</button></div
|
}}</button>
|
||||||
></td
|
</div>
|
||||||
>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</nz-table>
|
</nz-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -252,7 +252,7 @@
|
|||||||
"sslSwitch": "SSL",
|
"sslSwitch": "SSL",
|
||||||
"filters": "Filters",
|
"filters": "Filters",
|
||||||
"basedn": "Base DN",
|
"basedn": "Base DN",
|
||||||
"msadDomain": "Active Directory Domain",
|
"msadDomain": "MSAD Domain",
|
||||||
"accountMapping": "Account Mapping",
|
"accountMapping": "Account Mapping",
|
||||||
"trustStore": "TrustStore",
|
"trustStore": "TrustStore",
|
||||||
"trustStorePassword": "TrustStore Password"
|
"trustStorePassword": "TrustStore Password"
|
||||||
@ -267,7 +267,7 @@
|
|||||||
"isdefault":"Is Default"
|
"isdefault":"Is Default"
|
||||||
},
|
},
|
||||||
"accountsstrategy" :{
|
"accountsstrategy" :{
|
||||||
"name":"Strategy",
|
"name":"Strategy Name",
|
||||||
"appIcon":"App Icon",
|
"appIcon":"App Icon",
|
||||||
"appId":"App Id",
|
"appId":"App Id",
|
||||||
"appName":"App Name",
|
"appName":"App Name",
|
||||||
|
|||||||
@ -57,11 +57,11 @@
|
|||||||
},
|
},
|
||||||
"audit" : {
|
"audit" : {
|
||||||
"": "日志审计",
|
"": "日志审计",
|
||||||
"logins": "登录日志",
|
"logins": "系统登录日志",
|
||||||
"loginapps": "应用登录日志",
|
"loginapps": "应用登录日志",
|
||||||
"synchronizer": "同步器日志",
|
"synchronizer": "同步器日志",
|
||||||
"connector": "连接器日志",
|
"connector": "连接器日志",
|
||||||
"operate": "管理日志"
|
"operate": "系统管理日志"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"home":{
|
"home":{
|
||||||
@ -211,7 +211,7 @@
|
|||||||
"accounts":{
|
"accounts":{
|
||||||
"userId":"用户编号",
|
"userId":"用户编号",
|
||||||
"username":"登录账号",
|
"username":"登录账号",
|
||||||
"displayName":"用户名",
|
"displayName":"姓名",
|
||||||
"appName":"应用名称",
|
"appName":"应用名称",
|
||||||
"appId":"应用编号",
|
"appId":"应用编号",
|
||||||
"relatedUsername":"应用账号",
|
"relatedUsername":"应用账号",
|
||||||
@ -253,7 +253,7 @@
|
|||||||
"sslSwitch": "SSL",
|
"sslSwitch": "SSL",
|
||||||
"filters": "过滤器",
|
"filters": "过滤器",
|
||||||
"basedn": "基本DN",
|
"basedn": "基本DN",
|
||||||
"msadDomain": "Active Directory域",
|
"msadDomain": "AD域名",
|
||||||
"accountMapping": "账号映射",
|
"accountMapping": "账号映射",
|
||||||
"trustStore": "证书",
|
"trustStore": "证书",
|
||||||
"trustStorePassword": "证书密钥"
|
"trustStorePassword": "证书密钥"
|
||||||
@ -269,7 +269,7 @@
|
|||||||
},
|
},
|
||||||
"accountsstrategy" :{
|
"accountsstrategy" :{
|
||||||
"id":"策略编码",
|
"id":"策略编码",
|
||||||
"name":"策略",
|
"name":"策略名称",
|
||||||
"appIcon":"应用图标",
|
"appIcon":"应用图标",
|
||||||
"appId":"应用编码",
|
"appId":"应用编码",
|
||||||
"appName":"应用名称",
|
"appName":"应用名称",
|
||||||
@ -568,7 +568,7 @@
|
|||||||
"login.id":"编号",
|
"login.id":"编号",
|
||||||
"login.sessionId":"会话",
|
"login.sessionId":"会话",
|
||||||
"login.username":"登录名",
|
"login.username":"登录名",
|
||||||
"login.displayName":"用户名称",
|
"login.displayName":"姓名",
|
||||||
"login.provider":"提供商",
|
"login.provider":"提供商",
|
||||||
"login.message":"状态",
|
"login.message":"状态",
|
||||||
"login.loginType":"登录方式",
|
"login.loginType":"登录方式",
|
||||||
@ -586,7 +586,7 @@
|
|||||||
"loginapps.sessionId":"会话",
|
"loginapps.sessionId":"会话",
|
||||||
"loginapps.userId":"用户编号",
|
"loginapps.userId":"用户编号",
|
||||||
"loginapps.username":"登录名",
|
"loginapps.username":"登录名",
|
||||||
"loginapps.displayName":"用户名",
|
"loginapps.displayName":"姓名",
|
||||||
"loginapps.appId":"应用编号",
|
"loginapps.appId":"应用编号",
|
||||||
"loginapps.appName":"应用名称",
|
"loginapps.appName":"应用名称",
|
||||||
"loginapps.loginTime":"登录时间",
|
"loginapps.loginTime":"登录时间",
|
||||||
|
|||||||
@ -1,19 +1,18 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
|
* Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Automatically generated by 'ng g ng-alain:plugin icon'
|
* Automatically generated by 'ng g ng-alain:plugin icon'
|
||||||
@ -50,6 +49,7 @@ import {
|
|||||||
LaptopOutline,
|
LaptopOutline,
|
||||||
LikeOutline,
|
LikeOutline,
|
||||||
LockOutline,
|
LockOutline,
|
||||||
|
LockFill,
|
||||||
LogoutOutline,
|
LogoutOutline,
|
||||||
MailOutline,
|
MailOutline,
|
||||||
MenuFoldOutline,
|
MenuFoldOutline,
|
||||||
@ -65,6 +65,7 @@ import {
|
|||||||
ShoppingCartOutline,
|
ShoppingCartOutline,
|
||||||
SoundOutline,
|
SoundOutline,
|
||||||
StarOutline,
|
StarOutline,
|
||||||
|
StopFill,
|
||||||
TaobaoCircleOutline,
|
TaobaoCircleOutline,
|
||||||
TaobaoOutline,
|
TaobaoOutline,
|
||||||
TeamOutline,
|
TeamOutline,
|
||||||
@ -137,6 +138,7 @@ export const ICONS_AUTO = [
|
|||||||
LaptopOutline,
|
LaptopOutline,
|
||||||
LikeOutline,
|
LikeOutline,
|
||||||
LockOutline,
|
LockOutline,
|
||||||
|
LockFill,
|
||||||
LogoutOutline,
|
LogoutOutline,
|
||||||
MailOutline,
|
MailOutline,
|
||||||
MenuFoldOutline,
|
MenuFoldOutline,
|
||||||
@ -156,6 +158,7 @@ export const ICONS_AUTO = [
|
|||||||
ShoppingCartOutline,
|
ShoppingCartOutline,
|
||||||
SoundOutline,
|
SoundOutline,
|
||||||
StarOutline,
|
StarOutline,
|
||||||
|
StopFill,
|
||||||
TaobaoCircleOutline,
|
TaobaoCircleOutline,
|
||||||
TaobaoOutline,
|
TaobaoOutline,
|
||||||
TeamOutline,
|
TeamOutline,
|
||||||
|
|||||||
@ -58,4 +58,8 @@
|
|||||||
color: white;
|
color: white;
|
||||||
|
|
||||||
/** background-color: aliceblue */
|
/** background-color: aliceblue */
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid-border{
|
||||||
|
border: 1px solid #f0f0f0;
|
||||||
}
|
}
|
||||||
@ -46,7 +46,7 @@ public class MaxKeyMgtListenerConfig implements InitializingBean {
|
|||||||
SessionListenerAdapter.class,
|
SessionListenerAdapter.class,
|
||||||
scheduler,
|
scheduler,
|
||||||
new ListenerParameter().add("sessionManager",sessionManager).build(),
|
new ListenerParameter().add("sessionManager",sessionManager).build(),
|
||||||
"0 0/10 * * * ?",//10 minutes
|
"0 0/1 * * * ?",//10 minutes
|
||||||
SessionListenerAdapter.class.getSimpleName()
|
SessionListenerAdapter.class.getSimpleName()
|
||||||
);
|
);
|
||||||
_logger.debug("Session ListenerAdapter inited .");
|
_logger.debug("Session ListenerAdapter inited .");
|
||||||
|
|||||||
@ -16,9 +16,12 @@
|
|||||||
package org.maxkey.listener;
|
package org.maxkey.listener;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.maxkey.authn.session.Session;
|
||||||
import org.maxkey.authn.session.SessionManager;
|
import org.maxkey.authn.session.SessionManager;
|
||||||
import org.maxkey.entity.HistoryLogin;
|
import org.maxkey.entity.HistoryLogin;
|
||||||
|
import org.maxkey.util.DateUtils;
|
||||||
import org.quartz.Job;
|
import org.quartz.Job;
|
||||||
import org.quartz.JobExecutionContext;
|
import org.quartz.JobExecutionContext;
|
||||||
import org.quartz.JobExecutionException;
|
import org.quartz.JobExecutionException;
|
||||||
@ -41,14 +44,32 @@ public class SessionListenerAdapter extends ListenerAdapter implements Job , S
|
|||||||
jobStatus = JOBSTATUS.RUNNING;
|
jobStatus = JOBSTATUS.RUNNING;
|
||||||
try {
|
try {
|
||||||
if(sessionManager != null) {
|
if(sessionManager != null) {
|
||||||
for (HistoryLogin onlineSession : sessionManager.querySessions()) {
|
int sessionCount = 0;
|
||||||
if(sessionManager.get(onlineSession.getSessionId()) == null) {
|
for (HistoryLogin login : sessionManager.querySessions()) {
|
||||||
|
Session session = sessionManager.get(login.getSessionId());
|
||||||
|
if(session == null) {
|
||||||
|
_logger.debug("user {} session {} Login at {} and TimeOut at {} ." ,
|
||||||
|
login.getUsername(),
|
||||||
|
login.getId(),
|
||||||
|
login.getLoginTime(),
|
||||||
|
DateUtils.formatDateTime(new Date())
|
||||||
|
);
|
||||||
sessionManager.terminate(
|
sessionManager.terminate(
|
||||||
onlineSession.getSessionId(),
|
login.getSessionId(),
|
||||||
onlineSession.getUserId(),
|
login.getUserId(),
|
||||||
onlineSession.getUsername());
|
login.getUsername());
|
||||||
|
}else {
|
||||||
|
_logger.debug("user {} session {} Login at {} , Last Access at {} will Expired at {}." ,
|
||||||
|
login.getUsername(),
|
||||||
|
login.getId(),
|
||||||
|
session.getStartTimestamp(),
|
||||||
|
session.getLastAccessTime(),
|
||||||
|
session.getExpiredTime()
|
||||||
|
);
|
||||||
|
sessionCount ++ ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_logger.debug("current session count {} ." ,sessionCount);
|
||||||
}
|
}
|
||||||
_logger.debug("finished " );
|
_logger.debug("finished " );
|
||||||
jobStatus = JOBSTATUS.FINISHED;
|
jobStatus = JOBSTATUS.FINISHED;
|
||||||
|
|||||||
@ -40,11 +40,11 @@ maxkey.server.persistence =0
|
|||||||
#identity none, Kafka ,RocketMQ
|
#identity none, Kafka ,RocketMQ
|
||||||
maxkey.server.message.queue =${SERVER_MESSAGE_QUEUE:none}
|
maxkey.server.message.queue =${SERVER_MESSAGE_QUEUE:none}
|
||||||
|
|
||||||
maxkey.session.timeout =${SERVER_SESSION_TIMEOUT:1800}
|
maxkey.session.timeout =${SERVER_SESSION_TIMEOUT:600}
|
||||||
|
|
||||||
maxkey.auth.jwt.issuer =${maxkey.server.uri}
|
maxkey.auth.jwt.issuer =${maxkey.server.uri}
|
||||||
|
#default 900
|
||||||
maxkey.auth.jwt.expires =900
|
maxkey.auth.jwt.expires =300
|
||||||
maxkey.auth.jwt.secret =7heM-14BtxjyKPuH3ITIm7q2-ps5MuBirWCsrrdbzzSAOuSPrbQYiaJ54AeA0uH2XdkYy3hHAkTFIsieGkyqxOJZ_dQzrCbaYISH9rhUZAKYx8tUY0wkE4ArOC6LqHDJarR6UIcMsARakK9U4dhoOPO1cj74XytemI-w6ACYfzRUn_Rn4e-CQMcnD1C56oNEukwalf06xVgXl41h6K8IBEzLVod58y_VfvFn-NGWpNG0fy_Qxng6dg8Dgva2DobvzMN2eejHGLGB-x809MvC4zbG7CKNVlcrzMYDt2Gt2sOVDrt2l9YqJNfgaLFjrOEVw5cuXemGkX1MvHj6TAsbLg
|
maxkey.auth.jwt.secret =7heM-14BtxjyKPuH3ITIm7q2-ps5MuBirWCsrrdbzzSAOuSPrbQYiaJ54AeA0uH2XdkYy3hHAkTFIsieGkyqxOJZ_dQzrCbaYISH9rhUZAKYx8tUY0wkE4ArOC6LqHDJarR6UIcMsARakK9U4dhoOPO1cj74XytemI-w6ACYfzRUn_Rn4e-CQMcnD1C56oNEukwalf06xVgXl41h6K8IBEzLVod58y_VfvFn-NGWpNG0fy_Qxng6dg8Dgva2DobvzMN2eejHGLGB-x809MvC4zbG7CKNVlcrzMYDt2Gt2sOVDrt2l9YqJNfgaLFjrOEVw5cuXemGkX1MvHj6TAsbLg
|
||||||
maxkey.auth.jwt.refresh.secret =7heM-14BtxjyKPuH3ITIm7q2-ps5MuBirWCsrrdbzzSAOuSPrbQYiaJ54AeA0uH2XdkYy3hHAkTFIsieGkyqxOJZ_dQzrCbaYISH9rhUZAKYx8tUY0wkE4ArOC6LqHDJarR6UIcMsARakK9U4dhoOPO1cj74XytemI-w6ACYfzRUn_Rn4e-CQMcnD1C56oNEukwalf06xVgXl41h6K8IBEzLVod58y_VfvFn-NGWpNG0fy_Qxng6dg8Dgva2DobvzMN2eejHGLGB-x809MvC4zbG7CKNVlcrzMYDt2Gt2sOVDrt2l9YqJNfgaLFjrOEVw5cuXemGkX1MvHj6TAsbLg
|
maxkey.auth.jwt.refresh.secret =7heM-14BtxjyKPuH3ITIm7q2-ps5MuBirWCsrrdbzzSAOuSPrbQYiaJ54AeA0uH2XdkYy3hHAkTFIsieGkyqxOJZ_dQzrCbaYISH9rhUZAKYx8tUY0wkE4ArOC6LqHDJarR6UIcMsARakK9U4dhoOPO1cj74XytemI-w6ACYfzRUn_Rn4e-CQMcnD1C56oNEukwalf06xVgXl41h6K8IBEzLVod58y_VfvFn-NGWpNG0fy_Qxng6dg8Dgva2DobvzMN2eejHGLGB-x809MvC4zbG7CKNVlcrzMYDt2Gt2sOVDrt2l9YqJNfgaLFjrOEVw5cuXemGkX1MvHj6TAsbLg
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user