OAuth、手机APi修改
diff --git a/oauth/src/main/java/com/supwisdom/oauth/ServletInitializer.kt b/oauth/src/main/java/com/supwisdom/oauth/ServletInitializer.kt
index 5df64f0..3fc369d 100644
--- a/oauth/src/main/java/com/supwisdom/oauth/ServletInitializer.kt
+++ b/oauth/src/main/java/com/supwisdom/oauth/ServletInitializer.kt
@@ -1,6 +1,5 @@
package com.supwisdom.oauth
-import com.supwisdom.oauth.OAuthApplication
import org.springframework.boot.builder.SpringApplicationBuilder
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/OAuthApplication.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/OAuthApplication.kt
index 7d34f95..8339e74 100644
--- a/oauth/src/main/kotlin/com/supwisdom/oauth/OAuthApplication.kt
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/OAuthApplication.kt
@@ -4,12 +4,10 @@
import net.javacrumbs.shedlock.core.LockProvider
import net.javacrumbs.shedlock.provider.redis.spring.RedisLockProvider
import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.autoconfigure.data.redis.RedisProperties
import org.springframework.boot.builder.SpringApplicationBuilder
-import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.boot.web.servlet.ServletComponentScan
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
import org.springframework.cache.annotation.EnableCaching
@@ -24,12 +22,7 @@
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
import org.springframework.data.redis.serializer.StringRedisSerializer
-import org.springframework.http.client.SimpleClientHttpRequestFactory
import org.springframework.scheduling.annotation.EnableScheduling
-import org.springframework.stereotype.Component
-import org.springframework.web.client.RestTemplate
-import java.net.InetSocketAddress
-import java.net.Proxy
@Configuration
@@ -73,44 +66,6 @@
}
}
-@Configuration
-class RestTemplateConfig {
- @Component
- @ConfigurationProperties("resttemplate.proxy")
- class RestTemplateProxyProperties {
- @Value("\${type:}")
- lateinit var type: String
- @Value("\${host:}")
- lateinit var host: String
- @Value("\${port:0}")
- var port: Int = 0
- }
-
- @Bean
- fun simpleClientHttpRequestFactory(proxyProperties: RestTemplateProxyProperties):
- SimpleClientHttpRequestFactory {
- val factory = SimpleClientHttpRequestFactory()
- factory.setConnectTimeout(15000)
- factory.setReadTimeout(5000)
- if (proxyProperties.type.isNotEmpty()) {
- val proxyType = when (proxyProperties.type) {
- "http" -> Proxy.Type.HTTP
- "socks5" -> Proxy.Type.SOCKS
- else -> Proxy.Type.DIRECT
- }
- if (proxyType != Proxy.Type.DIRECT) {
- factory.setProxy(Proxy(proxyType,
- InetSocketAddress(proxyProperties.host, proxyProperties.port)))
- }
- }
- return factory
- }
-
- @Bean
- fun restTemplate(factory: SimpleClientHttpRequestFactory): RestTemplate {
- return RestTemplate(factory)
- }
-}
@SpringBootApplication
@EnableScheduling
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/bean/UserInfor.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/bean/UserInfor.kt
new file mode 100644
index 0000000..26cb9c2
--- /dev/null
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/bean/UserInfor.kt
@@ -0,0 +1,17 @@
+package com.supwisdom.oauth.bean
+
+class UserInfor {
+ var name: String? = null
+
+ var availbal: Double? = null
+
+ var daylimit: Double? = null
+
+ var lowfreelimit: Double? = null
+
+ var lowfreeflag: Boolean? = null
+
+ var userid: String? = null
+
+ var loginid: String? = null
+}
\ No newline at end of file
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/dao/OAuthUserDao.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/dao/OAuthUserDao.kt
index 4355fcf..c706e81 100644
--- a/oauth/src/main/kotlin/com/supwisdom/oauth/dao/OAuthUserDao.kt
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/dao/OAuthUserDao.kt
@@ -7,6 +7,10 @@
@Repository
interface OAuthUserDao : JpaRepository<OAuthUser, String> {
fun findByLoginid(loginid: String): OAuthUser?
+
+ fun findByPhone(phone: String): OAuthUser?
+
+ fun findByEmail(email: String): OAuthUser?
}
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/domain/OAuthUser.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/domain/OAuthUser.kt
index 481c46a..ce3c0c6 100644
--- a/oauth/src/main/kotlin/com/supwisdom/oauth/domain/OAuthUser.kt
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/domain/OAuthUser.kt
@@ -1,22 +1,27 @@
package com.supwisdom.oauth.domain
+import com.supwisdom.dlpay.api.util.DateUtil
import org.hibernate.annotations.GenericGenerator
import org.springframework.security.core.GrantedAuthority
import org.springframework.security.core.userdetails.UserDetails
-
import javax.persistence.*
import javax.validation.constraints.NotNull
-@Entity
-@Table(name = "TB_OAUTH_USER", indexes = [Index(name = "oauth_user_loginid_idx", columnList = "loginid", unique = true)])
-class OAuthUser : UserDetails {
+/*
+*
+* 与支付平台中的 MobileUser 一致
+*
+* */
+@Entity
+@Table(name = "TB_MOBILE_USER", indexes = [Index(name = "oauth_user_loginid_idx", columnList = "loginid", unique = true)])
+class OAuthUser : UserDetails {
override fun getAuthorities(): Collection<GrantedAuthority>? {
return this.auths
}
override fun isEnabled(): Boolean {
- return "normal" != this.status
+ return "closed" != this.status
}
override fun getUsername(): String {
@@ -32,11 +37,14 @@
}
override fun isAccountNonExpired(): Boolean {
- return true
+ if(expiredate.isNullOrEmpty()){
+ return true
+ }
+ return this.expiredate!! >= DateUtil.getNow("yyyyMMdd")
}
override fun isAccountNonLocked(): Boolean {
- return "lock" != this.status
+ return "locked" != this.status
}
@Transient
@@ -46,20 +54,50 @@
@GenericGenerator(name = "idGenerator", strategy = "uuid")
@GeneratedValue(generator = "idGenerator")
@Column(name = "uid", nullable = false, length = 32)
- @NotNull
var uid: String = ""
+ /**
+ * 登录id
+ * */
@Column(name = "loginid", length = 64)
@NotNull
var loginid: String = ""
+ /**
+ * 登录密码
+ * */
@Column(name = "loginpwd", length = 64)
- @NotNull
var loginpwd: String = ""
- @Column(name = "status", length = 10)
- @NotNull
- var status: String? = null
+ /**
+ * 设备uuid
+ * */
+ @Column(name = "devuid", length = 64)
+ var devuid: String? = null
+
+ /**
+ * 注册时间
+ * */
+ @Column(name = "registerdate", length = 16)
+ var registerdate: String? = null
+
+ /**
+ * 关联tb_person
+ * */
+ @Column(name = "userid", length = 32)
+ var userid: String? = null
+
+ /**
+ * 银行卡绑定时间
+ * */
+ @Column(name = "bindtime", length = 14)
+ var bindtime: String? = null
+
+ /**
+ * 注册手机类型
+ * */
+ @Column(name = "registerplatform", length = 100)
+ var registerplatform: String? = null
/**
* 最后登录时间
@@ -74,6 +112,11 @@
var lastloginplatform: String? = null
/**
+ * 状态
+ * */
+ @Column(name = "status", length = 16)
+ var status: String? = null
+ /**
* 支付密码
* */
@Column(name = "paypwd", length = 64)
@@ -104,17 +147,90 @@
var paypwderrortime: Long? = 0
/**
- * 关联tb_person
- * */
- @Column(name = "userid", length = 32)
- var userid: String? = null
-
- /**
* jti
* */
@Column(name = "jti", length = 64)
var jti: String? = null
+ /**
+ * 签约时间
+ * */
+ @Column(name = "signedtime", length = 20)
+ var signedtime: String? = null
+
+ /**
+ * 头像
+ * */
+ @Column(name = "ulogo", length = 100)
+ var ulogo: String? = null
+
+ /**
+ * rsa 加密二维码等使用
+ * */
+ @Column(name = "rsaprivate", length = 1000)
+ var rsaprivate: String? = null
+
+ /**
+ * rsa 加密二维码等使用
+ * */
+ @Column(name = "rsapublic", length = 1000)
+ var rsapublic: String? = null
+
+ /**
+ * 秘钥 加密二维码等使用
+ * */
+ @Column(name = "secertkey", length = 64)
+ var secertkey: String? = null
+
+ /**
+ * 租户id
+ * */
+ @Column(name = "tenantid", length = 32)
+ var tenantid:String? = null
+
+ /**
+ * 有效期
+ * */
+ @Column(name = "expiredate", length = 8)
+ var expiredate: String? = null
+
+ /**
+ * 邮箱
+ * */
+ @Column(name = "email", length = 100)
+ var email: String? = null
+
+ /**
+ * 手机
+ * */
+ @Column(name = "phone", length = 15)
+ var phone: String? = null
+
+ /**
+ * 证件类型
+ * */
+ @Column(name = "idtype", length = 20)
+ var idtype: String? = null
+
+ /**
+ * 证件号
+ * */
+ @Column(name = "idno", length = 32)
+ var idno: String? = null
+
+ /**
+ * 部门编号
+ * */
+ @Column(name = "deptcode", length = 32)
+ var deptcode: String? = null
+
+ /**
+ * 部门
+ * */
+ @Column(name = "deptname", length = 100)
+ var deptname: String? = null
+
+
fun checkLoginpwdtime():Int{
if (this.loginpwderror >= 5 && (System.currentTimeMillis() - this.loginpwderrortime!!) < 1000 * 60 * 30) {
return -1
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/oauth.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/oauth.kt
index 60255ad..a5253c4 100644
--- a/oauth/src/main/kotlin/com/supwisdom/oauth/oauth.kt
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/oauth.kt
@@ -1,6 +1,8 @@
package com.supwisdom.oauth
import com.supwisdom.oauth.dao.ApiClientDao
+import com.supwisdom.oauth.domain.OAuthUser
+import com.supwisdom.oauth.service.OAuthUserService
import com.supwisdom.oauth.util.Constants
import com.supwisdom.oauth.util.JwtConfig
import com.supwisdom.oauth.util.PasswordBCryptConfig
@@ -10,8 +12,8 @@
import org.springframework.data.redis.connection.RedisConnectionFactory
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
-import org.springframework.security.authentication.AuthenticationManager
import org.springframework.security.core.GrantedAuthority
+import org.springframework.security.core.annotation.AuthenticationPrincipal
import org.springframework.security.core.authority.SimpleGrantedAuthority
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
@@ -26,10 +28,10 @@
import org.springframework.security.oauth2.provider.client.BaseClientDetails
import org.springframework.security.oauth2.provider.token.store.redis.RedisTokenStore
import org.springframework.stereotype.Controller
+import org.springframework.ui.Model
import org.springframework.web.bind.annotation.*
-import java.security.Principal
-import java.util.*
import java.security.SecureRandom
+import java.util.*
@RestController
class UserInforController {
@@ -59,11 +61,24 @@
}
@Controller
class WebMainController {
+ @Autowired
+ lateinit var oauthUserService: OAuthUserService
+
@GetMapping("/login")
fun loginView() = "login"
@GetMapping(value = ["/", "/index"])
- fun indexView() = "index"
+ fun indexView(@AuthenticationPrincipal princp: UserDetails, model: Model):String {
+ val user = princp as OAuthUser
+ model.addAttribute("loginid",user.loginid)
+ if(!user.userid.isNullOrEmpty()){
+ var uinfor = oauthUserService.findUserInfor(user.userid!!)
+ if(uinfor!=null){
+ model.addAttribute("uinfor",uinfor)
+ }
+ }
+ return "index"
+ }
}
@@ -108,16 +123,12 @@
@Configuration
@EnableAuthorizationServer
-
class AuthorizationServerConfigure : AuthorizationServerConfigurerAdapter() {
@Autowired
private lateinit var redisConnectionFactory: RedisConnectionFactory
@Autowired
- private lateinit var authenticationManager: AuthenticationManager
-
- @Autowired
lateinit var passwordBCryptConfig: PasswordBCryptConfig
override fun configure(security: AuthorizationServerSecurityConfigurer?) {
@@ -140,7 +151,6 @@
override fun configure(endpoints: AuthorizationServerEndpointsConfigurer?) {
endpoints?.tokenStore(RedisTokenStore(redisConnectionFactory))
- ?.authenticationManager(authenticationManager)
}
}
}
\ No newline at end of file
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/security.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/security.kt
index 191178b..d3294bb 100644
--- a/oauth/src/main/kotlin/com/supwisdom/oauth/security.kt
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/security.kt
@@ -2,13 +2,17 @@
import com.supwisdom.oauth.domain.OAuthUser
import com.supwisdom.oauth.service.OAuthUserService
+import com.supwisdom.oauth.tenant.TenantContext
import com.supwisdom.oauth.util.*
+import org.jose4j.jwt.ReservedClaimNames
+import org.jose4j.jwt.consumer.InvalidJwtException
+import org.jose4j.lang.JoseException
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
-import org.springframework.security.authentication.AuthenticationManager
-import org.springframework.security.authentication.BadCredentialsException
-import org.springframework.security.authentication.LockedException
+import org.springframework.core.annotation.Order
+import org.springframework.http.HttpStatus
+import org.springframework.security.authentication.*
import org.springframework.security.authentication.dao.DaoAuthenticationProvider
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
@@ -19,16 +23,26 @@
import org.springframework.security.config.http.SessionCreationPolicy
import org.springframework.security.core.Authentication
import org.springframework.security.core.AuthenticationException
+import org.springframework.security.core.authority.SimpleGrantedAuthority
+import org.springframework.security.core.context.SecurityContextHolder
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler
+import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
+import org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl
+import org.springframework.security.web.authentication.www.BasicAuthenticationFilter
import org.springframework.security.web.util.matcher.AntPathRequestMatcher
import org.springframework.stereotype.Component
+import org.springframework.web.filter.OncePerRequestFilter
import java.io.IOException
import java.security.SecureRandom
+import java.util.*
+import javax.servlet.FilterChain
import javax.servlet.ServletException
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
+import javax.servlet.http.HttpSession
+import javax.sql.DataSource
@Component("authLoginSuccessHandler")
class AuthLoginSuccessHandler : SimpleUrlAuthenticationSuccessHandler() {
@@ -64,6 +78,8 @@
val errmsg = when (exception) {
is BadCredentialsException -> "手机号或密码错误"
is LockedException -> "账户被锁定"
+ is DisabledException -> "用户状态错误"
+ is AccountExpiredException -> "用户有效期已过期"
else -> exception.message!!
}
val temp = request.getParameter("username")
@@ -82,38 +98,32 @@
}
}
-
-
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
class WebSecurityConfig {
companion object {
-
@Configuration
class MvcWebSecurityConfigurationAdapter : WebSecurityConfigurerAdapter() {
@Autowired
+ lateinit var dataSource: DataSource
+ @Autowired
lateinit var authLoginFailHandler: AuthLoginFailHandler
@Autowired
lateinit var authLoginSuccessHandler: AuthLoginSuccessHandler
@Autowired
lateinit var passwordBCryptConfig: PasswordBCryptConfig
@Autowired
- lateinit var userDetailsService: OAuthUserService
+ lateinit var oAuthUserService: OAuthUserService
override fun configure(auth: AuthenticationManagerBuilder) {
auth.authenticationProvider(authenticationProvider())
}
@Bean
- override fun authenticationManager(): AuthenticationManager {
- return super.authenticationManagerBean()
- }
-
- @Bean
fun authenticationProvider(): DaoAuthenticationProvider {
return DaoAuthenticationProvider().apply {
- setUserDetailsService(userDetailsService)
+ setUserDetailsService(oAuthUserService)
setPasswordEncoder(passwordEncoder())
}
}
@@ -127,12 +137,19 @@
SecureRandom(passwordBCryptConfig.seed.toByteArray()))
}
}
+ @Bean
+ fun jdbcTokenImplement(): JdbcTokenRepositoryImpl {
+ return JdbcTokenRepositoryImpl().also {
+ it.setDataSource(dataSource)
+ }
+ }
override fun configure(http: HttpSecurity) {
- // 设置 Web MVC 应用权限
http.authorizeRequests()
.antMatchers("/login", "/login/form", "/userinfor").permitAll()
.antMatchers("/css/**").permitAll()
+ .antMatchers("/img/**").permitAll()
+ .antMatchers("/js/**").permitAll()
.antMatchers("/code/image").permitAll()
.antMatchers("/**").hasAnyRole("USER", "ADMIN")
.anyRequest().authenticated()
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/service/OAuthUserService.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/service/OAuthUserService.kt
index 5df80ef..1905612 100644
--- a/oauth/src/main/kotlin/com/supwisdom/oauth/service/OAuthUserService.kt
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/service/OAuthUserService.kt
@@ -1,5 +1,6 @@
package com.supwisdom.oauth.service
+import com.supwisdom.oauth.bean.UserInfor
import com.supwisdom.oauth.domain.OAuthUser
import org.springframework.security.core.userdetails.UserDetailsService
@@ -9,4 +10,6 @@
fun findByLoginid(loginid: String): OAuthUser?
fun saveUser(oAuthUser: OAuthUser):OAuthUser
+
+ fun findUserInfor(userid:String):UserInfor?
}
\ No newline at end of file
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/service/impl/OAuthUserServiceImpl.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/service/impl/OAuthUserServiceImpl.kt
index 47364bd..e802094 100644
--- a/oauth/src/main/kotlin/com/supwisdom/oauth/service/impl/OAuthUserServiceImpl.kt
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/service/impl/OAuthUserServiceImpl.kt
@@ -1,15 +1,19 @@
package com.supwisdom.oauth.service.impl
+import com.supwisdom.oauth.bean.UserInfor
import com.supwisdom.oauth.dao.OAuthUserDao
import com.supwisdom.oauth.domain.OAuthUser
import com.supwisdom.oauth.service.OAuthUserService
import com.supwisdom.oauth.util.UserLoginFailException
+import org.hibernate.query.NativeQuery
+import org.hibernate.transform.Transformers
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.security.core.GrantedAuthority
import org.springframework.security.core.authority.AuthorityUtils
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.core.userdetails.UsernameNotFoundException
import org.springframework.stereotype.Service
+import javax.persistence.EntityManager
@Service
class OAuthUserServiceImpl :OAuthUserService {
@@ -18,12 +22,20 @@
}
@Autowired
lateinit var oAuthUserDao: OAuthUserDao
+ @Autowired
+ lateinit var entityManager: EntityManager
override fun loadUserByUsername(username: String?): UserDetails {
if (username.isNullOrEmpty()) {
throw UsernameNotFoundException("用户不存在")
}
- val temp = oAuthUserDao.findByLoginid(username)
+ var temp = oAuthUserDao.findByLoginid(username)
+ if(temp==null){
+ temp = oAuthUserDao.findByPhone(username)
+ if(temp==null){
+ temp = oAuthUserDao.findByEmail(username)
+ }
+ }
if (temp != null) {
if (temp.loginpwd.isEmpty()) {
throw UserLoginFailException("用户注册后未设置登录密码,请找回密码或重新注册")
@@ -36,7 +48,7 @@
temp.loginpwderrortime = null
oAuthUserDao.save(temp)
}
- val authorities: Collection<GrantedAuthority> = AuthorityUtils.createAuthorityList("ROLE_USER")
+ val authorities: Collection<GrantedAuthority> = AuthorityUtils.createAuthorityList("ROLE_USER","ROLE_ADMIN")
temp.auths = authorities
} else {
throw UsernameNotFoundException("用户不存在")
@@ -57,4 +69,16 @@
override fun saveUser(oAuthUser: OAuthUser): OAuthUser {
return oAuthUserDao.save(oAuthUser)
}
+
+ override fun findUserInfor(userid: String): UserInfor? {
+ var sql = "select ac.availbal as availbal, ac.LOWFREE_FLAG as lowfreeflag,ac.LOWFREE_LIMIT as lowfreelimit,ac.DAY_LIMIT as daylimit, ac.ACCNAME as name from tb_account ac where ac.userid =:uid "
+ var query = entityManager.createNativeQuery(sql)
+ query.setParameter("uid",userid)
+ query.unwrap(NativeQuery::class.java).setResultTransformer(Transformers.aliasToBean(UserInfor::class.java))
+ val ret = query.resultList as List<UserInfor>
+ if(ret.isNotEmpty()){
+ return ret[0]
+ }
+ return null
+ }
}
\ No newline at end of file
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/tenant.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant.kt
new file mode 100644
index 0000000..ef0c5b4
--- /dev/null
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant.kt
@@ -0,0 +1,26 @@
+package com.supwisdom.oauth
+import com.supwisdom.oauth.tenant.TenantInterceptor
+import mu.KotlinLogging
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.context.annotation.Configuration
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
+import javax.annotation.PostConstruct
+
+@Configuration
+class MultiTenantDatasourceConfiguration : WebMvcConfigurer {
+
+ private val logger = KotlinLogging.logger { }
+ @Autowired
+ private lateinit var tenantInterceptor: TenantInterceptor
+
+ @PostConstruct
+ fun post() {
+ logger.info("MultiTenantDatasourceConfiguration post constructor.")
+ }
+
+ override fun addInterceptors(registry: InterceptorRegistry) {
+ logger.info("adding interceptor(s).")
+ registry.addInterceptor(tenantInterceptor)
+ }
+}
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/HibernateConfig.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/HibernateConfig.kt
new file mode 100644
index 0000000..7e9d591
--- /dev/null
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/HibernateConfig.kt
@@ -0,0 +1,53 @@
+package com.supwisdom.oauth.tenant
+
+import org.hibernate.MultiTenancyStrategy
+import org.hibernate.cfg.Environment
+import org.hibernate.context.spi.CurrentTenantIdentifierResolver
+import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties
+import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings
+import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties
+import org.springframework.context.annotation.Bean
+import org.springframework.context.annotation.Configuration
+import org.springframework.orm.jpa.JpaVendorAdapter
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean
+import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter
+
+import javax.sql.DataSource
+import java.util.HashMap
+
+
+@Configuration
+class HibernateConfig(@param:Autowired private val jpaProperties: JpaProperties,
+ private val hibernateProperties: HibernateProperties) {
+
+ val jpaVendorAdapter: JpaVendorAdapter
+ @Bean
+ get() {
+ val adapter = HibernateJpaVendorAdapter()
+ adapter.setGenerateDdl(true)
+ return adapter
+ }
+
+ @Bean("entityManagerFactory")
+ fun entityManagerFactoryBean(dataSource: DataSource,
+ multiTenantConnectionProvider: MultiTenantConnectionProvider,
+ currentTenantIdentifierResolver: CurrentTenantIdentifierResolver): LocalContainerEntityManagerFactoryBean {
+ val properties = HashMap<String, Any>()
+ properties.putAll(hibernateProperties
+ .determineHibernateProperties(jpaProperties.properties,
+ HibernateSettings()))
+ properties[Environment.MULTI_TENANT] = MultiTenancyStrategy.SCHEMA
+ properties[Environment.MULTI_TENANT_CONNECTION_PROVIDER] = multiTenantConnectionProvider
+ properties[Environment.MULTI_TENANT_IDENTIFIER_RESOLVER] = currentTenantIdentifierResolver
+
+ val em = LocalContainerEntityManagerFactoryBean()
+ em.dataSource = dataSource
+ em.setPackagesToScan("com.supwisdom")
+ em.setJpaPropertyMap(properties)
+ em.jpaVendorAdapter = jpaVendorAdapter
+ return em
+ }
+
+}
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/MultiTenantConnectionProviderImpl.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/MultiTenantConnectionProviderImpl.kt
new file mode 100644
index 0000000..32f0da5
--- /dev/null
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/MultiTenantConnectionProviderImpl.kt
@@ -0,0 +1,65 @@
+package com.supwisdom.oauth.tenant
+
+import mu.KotlinLogging
+import org.hibernate.HibernateException
+import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.stereotype.Component
+
+import javax.sql.DataSource
+import java.sql.Connection
+import java.sql.SQLException
+
+/**
+ * Created by shuwei on 2018/12/4.
+ */
+@Component
+class MultiTenantConnectionProviderImpl : MultiTenantConnectionProvider {
+ @Autowired
+ private val dataSource: DataSource? = null
+ private val logger = KotlinLogging.logger { }
+ @Throws(SQLException::class)
+ override fun getAnyConnection(): Connection {
+ return dataSource!!.connection
+ }
+
+ @Throws(SQLException::class)
+ override fun releaseAnyConnection(connection: Connection) {
+ connection.close()
+ }
+
+ @Throws(SQLException::class)
+ override fun getConnection(ti: String): Connection {
+ val tenantIdentifier = TenantContext.tenantSchema
+ val connection = anyConnection
+ try {
+ logger.debug { "tenantid=$tenantIdentifier" }
+ if (tenantIdentifier.isNullOrEmpty()||"default"==tenantIdentifier) {
+ connection.createStatement().execute("SET search_path = public")
+ } else {
+ connection.createStatement().execute("SET search_path = \"$tenantIdentifier\", public")
+ }
+ } catch (e: SQLException) {
+ throw HibernateException("Problem setting schema to " + tenantIdentifier!!, e)
+ }
+
+ return connection
+ }
+
+ @Throws(SQLException::class)
+ override fun releaseConnection(tenantIdentifier: String, connection: Connection) {
+ connection.close()
+ }
+
+ override fun supportsAggressiveRelease(): Boolean {
+ return false
+ }
+
+ override fun isUnwrappableAs(unwrapType: Class<*>): Boolean {
+ return false
+ }
+
+ override fun <T> unwrap(unwrapType: Class<T>): T? {
+ return null
+ }
+}
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/MultiTenantIdentifierResolver.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/MultiTenantIdentifierResolver.kt
new file mode 100644
index 0000000..8e793dd
--- /dev/null
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/MultiTenantIdentifierResolver.kt
@@ -0,0 +1,22 @@
+package com.supwisdom.oauth.tenant
+
+import org.hibernate.context.spi.CurrentTenantIdentifierResolver
+import org.springframework.stereotype.Component
+
+/**
+ * Created by shuwei on 2018/12/4.
+ */
+@Component
+class MultiTenantIdentifierResolver : CurrentTenantIdentifierResolver {
+ override fun resolveCurrentTenantIdentifier(): String? {
+ return if(TenantContext.tenantSchema.isNullOrEmpty()){
+ "default"
+ }else{
+ TenantContext.tenantSchema
+ }
+ }
+
+ override fun validateExistingCurrentSessions(): Boolean {
+ return true
+ }
+}
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/TenantContext.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/TenantContext.kt
new file mode 100644
index 0000000..2d6116f
--- /dev/null
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/TenantContext.kt
@@ -0,0 +1,44 @@
+package com.supwisdom.oauth.tenant
+
+import org.springframework.web.context.request.RequestContextHolder
+import org.springframework.web.context.request.ServletRequestAttributes
+
+/**
+ * Created by shuwei on 2018/11/29.
+ */
+object TenantContext {
+ private val currentTenant = ThreadLocal<String>()
+
+ var tenantSchema: String?
+ get() = getId()
+ set(tid) = currentTenant.set(tid)
+
+ fun clear() {
+ currentTenant.set(null)
+ }
+
+ private fun getId(): String? {
+ try {
+ if (!currentTenant.get().isNullOrEmpty()) {
+ return currentTenant.get()
+ }
+ val requestAttributes = RequestContextHolder.getRequestAttributes() as ServletRequestAttributes?
+ if (requestAttributes != null) {
+ val schema = requestAttributes.request.getAttribute("X-TENANT-ID") as String?
+ if (!schema.isNullOrEmpty()) {
+ return schema
+ }
+ val session = requestAttributes.request.session
+ if (session != null) {
+ val tenantId = session.getAttribute("X-TENANT-ID") as String?
+ if (tenantId != null) {
+ return tenantId
+ }
+ }
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ return null
+ }
+}
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/TenantInterceptor.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/TenantInterceptor.kt
new file mode 100644
index 0000000..f710228
--- /dev/null
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/tenant/TenantInterceptor.kt
@@ -0,0 +1,29 @@
+package com.supwisdom.oauth.tenant
+
+
+import org.springframework.stereotype.Component
+import org.springframework.web.servlet.ModelAndView
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter
+
+import javax.servlet.http.HttpServletRequest
+import javax.servlet.http.HttpServletResponse
+
+@Component
+class TenantInterceptor : HandlerInterceptorAdapter() {
+ @Throws(Exception::class)
+ override fun preHandle(request: HttpServletRequest, response: HttpServletResponse, handler: Any): Boolean {
+ var tid = request.getParameter("tenant_id")
+ var session = request.session
+ if(tid.isNullOrEmpty()){
+ tid = request.getHeader("X-TENANT-ID")
+ if(tid.isNullOrEmpty()){
+ tid = session.getAttribute("X-TENANT-ID") as String?
+ }
+ }
+ if(!tid.isNullOrEmpty()){
+ session.setAttribute("X-TENANT-ID",tid)
+ TenantContext.tenantSchema = tid
+ }
+ return true
+ }
+}
diff --git a/oauth/src/main/kotlin/com/supwisdom/oauth/util/Test.kt b/oauth/src/main/kotlin/com/supwisdom/oauth/util/Test.kt
new file mode 100644
index 0000000..7303390
--- /dev/null
+++ b/oauth/src/main/kotlin/com/supwisdom/oauth/util/Test.kt
@@ -0,0 +1,19 @@
+package com.supwisdom.oauth.util
+
+class Test{
+ companion object {
+ @JvmStatic
+ fun main(args: Array<String>) {
+
+ }
+ }
+
+ private fun <T : Number> min(values: Array<T>?): T? where T : Comparable<T> {
+ if (values == null || values.size == 0) return null
+ var min = values[0]
+ for (i in 1 until values.size) {
+ if (min.compareTo(values[i]) > 0) min = values[i]
+ }
+ return min
+ }
+}
\ No newline at end of file
diff --git a/oauth/src/main/resources/static/css/aui-iconfont.ttf b/oauth/src/main/resources/static/css/aui-iconfont.ttf
new file mode 100755
index 0000000..2c9d80e
--- /dev/null
+++ b/oauth/src/main/resources/static/css/aui-iconfont.ttf
Binary files differ
diff --git a/oauth/src/main/resources/static/css/aui.css b/oauth/src/main/resources/static/css/aui.css
new file mode 100644
index 0000000..c77e083
--- /dev/null
+++ b/oauth/src/main/resources/static/css/aui.css
@@ -0,0 +1,2731 @@
+/*
+ * =========================================================================
+ * APIClud - AUI UI 框架 流浪男 QQ:343757327 http://www.auicss.com
+ * Verson 2.1
+ * =========================================================================
+ */
+ /*初始化类*/
+@charset "UTF-8";
+html{
+ font-family: "Helvetica Neue", Helvetica, sans-serif;
+ font-size: 20px;
+}
+html,body {
+ -webkit-touch-callout:none;
+ -webkit-text-size-adjust:none;
+ -webkit-tap-highlight-color:rgba(0, 0, 0, 0);
+ -webkit-user-select:none;
+ width: 100%;
+}
+body {
+ line-height: 1.5;
+ font-size: 0.8rem;
+ color: #212121;
+ background-color: #f5f5f5;
+ outline: 0;
+}
+html,body,header,section,footer,div,ul,ol,li,img,a,span,em,del,legend,center,strong,var,fieldset,form,label,dl,dt,dd,cite,input,hr,time,mark,code,figcaption,figure,textarea,h1,h2,h3,h4,h5,h6,p{
+ margin:0;
+ border:0;
+ padding:0;
+ font-style:normal;
+}
+* {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-user-select: none;
+ -webkit-tap-highlight-color: transparent;
+ outline: none;
+}
+@media only screen and (min-width: 400px) {
+ html {
+ font-size: 21.33333333px !important;
+ }
+}
+@media only screen and (min-width: 414px) {
+ html {
+ font-size: 21px !important;
+ }
+}
+@media only screen and (min-width: 480px) {
+ html {
+ font-size: 25.6px !important;
+ }
+}
+ul, li {
+ list-style: none;
+}
+p {
+ font-size: 0.7rem;
+ color: #757575;
+}
+a {
+ color: #0062cc;
+ text-decoration: none;
+ background-color: transparent;
+}
+textarea {
+ overflow: hidden;
+ resize: none;
+}
+button {
+ overflow: visible;
+}
+button,select {
+ text-transform: none;
+}
+button,input,select,textarea {
+ font: inherit;
+ color: inherit;
+}
+/*自动隐藏文字*/
+.aui-ellipsis-1 {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.aui-ellipsis {
+ display: -webkit-box;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-wrap: break-word;
+ word-break: break-all;
+ white-space: normal !important;
+ -webkit-line-clamp: 1;
+ -webkit-box-orient: vertical;
+}
+.aui-ellipsis-2 {
+ display: -webkit-box;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-wrap: break-word;
+ word-break: break-all;
+ white-space: normal !important;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+}
+/*水平线*/
+.aui-hr {
+ width: 100%;
+ position: relative;
+ border-top: 1px solid #dddddd;
+ height: 1px;
+}
+@media screen and (-webkit-min-device-pixel-ratio:1.5) {
+ .aui-hr{
+ border: none;
+ background-size: 100% 1px;
+ background-repeat: no-repeat;
+ background-position: top;
+ background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+ background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+ }
+}
+/*内外边距类*/
+.aui-padded-0 {
+ padding: 0 !important;
+}
+.aui-padded-5 {
+ padding: 0.25rem !important;
+}
+.aui-padded-10 {
+ padding: 0.5rem !important;
+}
+.aui-padded-15 {
+ padding: 0.75rem !important;
+}
+.aui-padded-t-0 {
+ padding-top: 0 !important;
+}
+.aui-padded-t-5 {
+ padding-top: 0.25rem !important;
+}
+.aui-padded-t-10 {
+ padding-top: 0.5rem !important;
+}
+.aui-padded-t-15 {
+ padding-top: 0.75rem !important;
+}
+.aui-padded-b-0 {
+ padding-bottom: 0 !important;
+}
+.aui-padded-b-5 {
+ padding-bottom: 0.25rem !important;
+}
+.aui-padded-b-10 {
+ padding-bottom: 0.5rem !important;
+}
+.aui-padded-b-15 {
+ padding-bottom: 0.75rem !important;
+}
+.aui-padded-l-0 {
+ padding-left: 0 !important;
+}
+.aui-padded-l-5 {
+ padding-left: 0.25rem !important;
+}
+.aui-padded-l-10 {
+ padding-left: 0.5rem !important;
+}
+.aui-padded-l-15 {
+ padding-left: 0.75rem !important;
+}
+.aui-padded-r-0 {
+ padding-right: 0 !important;
+}
+.aui-padded-r-5 {
+ padding-right: 0.25rem !important;
+}
+.aui-padded-r-10 {
+ padding-right: 0.5rem !important;
+}
+.aui-padded-r-15 {
+ padding-right: 0.75rem !important;
+}
+.aui-margin-0 {
+ margin: 0 !important;
+}
+.aui-margin-5 {
+ margin: 0.25rem !important;
+}
+.aui-margin-10 {
+ margin: 0.5rem !important;
+}
+.aui-margin-15 {
+ margin: 0.75rem !important;
+}
+.aui-margin-t-0 {
+ margin-top: 0.25rem !important;
+}
+.aui-margin-t-5 {
+ margin-top: 0 !important;
+}
+.aui-margin-t-10 {
+ margin-top: 0.5rem !important;
+}
+.aui-margin-t-15 {
+ margin-top: 0.75rem !important;
+}
+.aui-margin-b-0 {
+ margin-bottom: 0 !important;
+}
+.aui-margin-b-5 {
+ margin-bottom: 0.25rem !important;
+}
+.aui-margin-b-10 {
+ margin-bottom: 0.5rem !important;
+}
+.aui-margin-b-15 {
+ margin-bottom: 0.75rem !important;
+}
+.aui-margin-l-0 {
+ margin-left: 0 !important;
+}
+.aui-margin-l-5 {
+ margin-left: 0.25rem !important;
+}
+.aui-margin-l-10 {
+ margin-left: 0.5rem !important;
+}
+.aui-margin-l-15 {
+ margin-left: 0.75rem !important;
+}
+.aui-margin-r-0 {
+ margin-right: 0 !important;
+}
+.aui-margin-r-5 {
+ margin-right: 0.25rem !important;
+}
+.aui-margin-r-10 {
+ margin-right: 0.5rem !important;
+}
+.aui-margin-r-15 {
+ margin-right: 0.75rem !important;
+}
+.aui-clearfix {
+ clear: both;
+}
+.aui-clearfix:before {
+ display: table;
+ content: " ";
+}
+.aui-clearfix:after {
+ clear: both;
+}
+/*文字对齐*/
+.aui-text-left {
+ text-align: left !important;
+}
+.aui-text-center {
+ text-align: center !important;
+}
+.aui-text-justify {
+ text-align: justify !important;
+}
+.aui-text-right {
+ text-align: right !important;
+}
+/*文字、背景颜色*/
+h1,h2,h3,h4,h5,h6 {
+ font-weight: 400;
+}
+h1 {
+ font-size: 1.2rem;
+}
+h2 {
+ font-size: 1rem;
+}
+h3 {
+ font-size: 0.8rem;
+}
+h4 {
+ font-size: 0.7rem;
+}
+h5 {
+ font-size: 0.7rem;
+ font-weight: normal;
+ color: #757575;
+}
+h6 {
+ font-size: 0.7rem;
+ font-weight: normal;
+ color: #757575;
+}
+h1 small,h2 small,h3 small,h4 small {
+ font-weight: normal;
+ line-height: 1;
+ color: #757575;
+}
+h5 small,h6 small {
+ font-weight: normal;
+ line-height: 1;
+ color: #757575;
+}
+h1 small,h2 small,h3 small {
+ font-size: 65%;
+}
+h4 small,h5 small,h6 small {
+ font-size: 75%;
+}
+img {
+ max-width: 100%;
+ display: block;
+}
+.aui-font-size-12 {
+ font-size: 0.6rem !important;
+}
+.aui-font-size-14 {
+ font-size: 0.7rem !important;
+}
+.aui-font-size-16 {
+ font-size: 0.8rem !important;
+}
+.aui-font-size-18 {
+ font-size: 0.9rem !important;
+}
+.aui-font-size-20 {
+ font-size: 1rem !important;
+}
+.aui-text-default {
+ color: #212121 !important;
+}
+.aui-text-white {
+ color: #ffffff !important;
+}
+.aui-text-primary {
+ color: #00bcd4 !important;
+}
+.aui-text-success {
+ color: #009688 !important;
+}
+.aui-text-info {
+ color: #03a9f4 !important;
+}
+.aui-text-warning {
+ color: #ffc107 !important;
+}
+.aui-text-danger {
+ color: #e51c23 !important;
+}
+.aui-text-pink {
+ color: #e91e63 !important;
+}
+.aui-text-purple {
+ color: #673ab7 !important;
+}
+.aui-text-indigo {
+ color: #3f51b5 !important;
+}
+.aui-text-green {
+ color: #7cba59 !important;
+}
+.aui-text-orange {
+ color: #e0620d !important;
+}
+.aui-bg-default {
+ background-color: #f5f5f5 !important;
+}
+.aui-bg-primary {
+ background-color: #00bcd4 !important;
+}
+.aui-bg-success {
+ background-color: #009688 !important;
+}
+.aui-bg-info {
+ background-color: #03a9f4 !important;
+}
+.aui-bg-warning {
+ background-color: #f1c40f !important;
+}
+.aui-bg-danger {
+ background-color: #e51c23 !important;
+}
+.aui-bg-pink {
+ background-color: #e91e63 !important;
+}
+.aui-bg-purple {
+ background-color: #673ab7 !important;
+}
+.aui-bg-indigo {
+ background-color: #3f51b5 !important;
+}
+.aui-bg-gray {
+ background-color: #8a8a8a !important;
+}
+
+/*警告、成功颜色*/
+.aui-warning,
+.aui-warning label,
+.aui-warning .aui-input,
+.aui-warning .aui-iconfont {
+ color: #e51c23 !important;
+}
+.aui-success,
+.aui-success label,
+.aui-success .aui-input,
+.aui-success .aui-iconfont {
+ color: #009688 !important;
+}
+/*对齐,显示,隐藏等*/
+.aui-pull-right {
+ float: right !important;
+}
+.aui-pull-left {
+ float: left !important;
+}
+.aui-hide {
+ display: none !important;
+}
+.aui-show {
+ display: block !important;
+}
+.aui-invisible {
+ visibility: hidden;
+}
+.aui-inline {
+ display: inline-block;
+ vertical-align: top;
+}
+.aui-mask {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ background: rgba(0, 0, 0, 0.3);
+ opacity: 0;
+ z-index: 8;
+ visibility: hidden;
+ -webkit-transition: opacity .3s,-webkit-transform .3s;
+ transition: opacity .3s,transform .3s;
+}
+.aui-mask.aui-mask-in {
+ visibility: visible;
+ opacity: 1;
+}
+.aui-mask.aui-mask-out {
+ opacity: 0;
+}
+img.aui-img-round {
+ border-radius: 50%;
+}
+/*基本容器*/
+.aui-content {
+ -webkit-overflow-scrolling: touch;
+ overflow-x: hidden;
+ word-break: break-all;
+}
+.aui-content-padded {
+ margin: 0.75rem;
+ position: relative;
+ word-break: break-all;
+ -webkit-overflow-scrolling: touch;
+}
+/*栅格类*/
+.aui-row {
+ overflow: hidden;
+ margin: 0;
+}
+.aui-row-padded {
+ margin-left: -0.125rem;
+ margin-right: -0.125rem;
+}
+.aui-row-padded [class*=aui-col-xs-] {
+ padding: 0.125rem;
+}
+.aui-col-xs-1,.aui-col-xs-2,.aui-col-xs-3,.aui-col-xs-4,.aui-col-xs-5,.aui-col-xs-6,.aui-col-xs-7,.aui-col-xs-8,.aui-col-xs-9,.aui-col-xs-10,.aui-col-xs-11,.aui-col-5 {
+ position: relative;
+ float: left;
+}
+.aui-col-xs-12 {
+ width: 100%;
+ position: relative;
+}
+.aui-col-xs-11 {
+ width: 91.66666667%;
+}
+.aui-col-xs-10 {
+ width: 83.33333333%;
+}
+.aui-col-xs-9 {
+ width: 75%;
+}
+.aui-col-xs-8 {
+ width: 66.66666667%;
+}
+.aui-col-xs-7 {
+ width: 58.33333333%;
+}
+.aui-col-xs-6 {
+ width: 50%;
+}
+.aui-col-xs-5 {
+ width: 41.66666667%;
+}
+.aui-col-xs-4 {
+ width: 33.33333333%;
+}
+.aui-col-xs-3 {
+ width: 25%;
+}
+.aui-col-xs-2 {
+ width: 16.66666667%;
+}
+.aui-col-xs-1 {
+ width: 8.33333333%;
+}
+.aui-col-5 {
+ width: 20%;
+}
+/*标签*/
+.aui-label {
+ display: inline-block;
+ padding: 0.2em 0.25em;
+ font-size: 0.6rem;
+ line-height: 1;
+ color: #616161;
+ background-color: #dddddd;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ border-radius: 0.15em;
+ position: relative;
+}
+
+.aui-label-primary {
+ color: #ffffff;
+ background-color: #00bcd4;
+}
+.aui-label-success {
+ color: #ffffff;
+ background-color: #009688;
+}
+.aui-label-info {
+ color: #ffffff;
+ background-color: #03a9f4;
+}
+.aui-label-warning {
+ color: #ffffff;
+ background-color: #ffc107;
+}
+.aui-label-danger {
+ color: #ffffff;
+ background-color: #e51c23;
+}
+.aui-label-outlined {
+ background-color: transparent;
+ position: relative;
+}
+.aui-label-outlined:after {
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+ height: 200%;
+ content: '';
+ width: 200%;
+ border: 1px solid #d9d9d9;
+ position: absolute;
+ top: -1px;
+ left: -1px;
+ transform: scale(0.5);
+ -webkit-transform: scale(0.5);
+ transform-origin: 0 0;
+ -webkit-transform-origin: 0 0;
+ z-index: 1;
+}
+.aui-label-outlined.aui-label-primary,
+.aui-label-outlined.aui-label-primary:after {
+ color: #00bcd4;
+ border-color: #00bcd4;
+}
+.aui-label-outlined.aui-label-success,
+.aui-label-outlined.aui-label-success:after {
+ color: #009688;
+ border-color: #009688;
+}
+.aui-label-outlined.aui-label-info,
+.aui-label-outlined.aui-label-info:after {
+ color: #03a9f4;
+ border-color: #03a9f4;
+}
+.aui-label-outlined.aui-label-warning,
+.aui-label-outlined.aui-label-warning:after {
+ color: #ffc107;
+ border-color: #ffc107;
+}
+.aui-label-outlined.aui-label-danger,
+.aui-label-outlined.aui-label-danger:after {
+ color: #e51c23;
+ border-color: #e51c23;
+}
+.aui-label .aui-iconfont {
+ font-size: 0.6rem;
+}
+/*角标*/
+.aui-badge {
+ display: inline-block;
+ width: auto;
+ text-align: center;
+ min-width: 0.8rem;
+ height: 0.8rem;
+ line-height: 0.8rem;
+ padding: 0 0.2rem;
+ font-size: 0.6rem;
+ color: #ffffff;
+ background-color: #ff2600;
+ border-radius: 0.4rem;
+ position: absolute;
+ top: 0.2rem;
+ left: 60%;
+ z-index: 99;
+}
+.aui-dot {
+ display: inline-block;
+ width: 0.4rem;
+ height: 0.4rem;
+ background: #ff2600;
+ border-radius: 0.5rem;
+ position: absolute;
+ top: 0.3rem;
+ right: 20%;
+ z-index: 99;
+}
+/*按钮样式*/
+button, .aui-btn {
+ position: relative;
+ display: inline-block;
+ font-size: 0.7rem;
+ font-weight: 400;
+ font-family: inherit;
+ text-decoration: none;
+ text-align: center;
+ margin: 0;
+ background: #dddddd;
+ padding: 0 0.6rem;
+ height: 1.5rem;
+ line-height: 1.5rem;
+ border-radius: 0.2rem;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ vertical-align: middle;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-user-select: none;
+ user-select: none;
+}
+.aui-btn:active {
+ color: #212121;
+ background-color: #bdbdbd;
+}
+.aui-btn-primary {
+ color: #ffffff;
+ background-color: #00bcd4;
+}
+.aui-btn-primary.aui-active, .aui-btn-primary:active {
+ color: #ffffff;
+ background-color: #00acc1;
+}
+.aui-btn-success {
+ color: #ffffff;
+ background-color: #009688;
+}
+.aui-btn-success.aui-active, .aui-btn-success:active {
+ color: #fff;
+ background-color: #00897b;
+}
+.aui-btn-info {
+ color: #ffffff !important;
+ background-color: #03a9f4 !important;
+}
+.aui-btn-info.aui-active, .aui-btn-info:active {
+ color: #fff !important;
+ background-color: #067cb1 !important;
+}
+.aui-btn-warning {
+ color: #ffffff !important;
+ background-color: #ffc107 !important;
+}
+.aui-btn-warning.aui-active, .aui-btn-warning:active {
+ color: #ffffff !important;
+ background-color: #ffb300 !important;
+}
+.aui-btn-danger {
+ color: #ffffff !important;
+ background-color: #e51c23 !important;
+}
+.aui-btn-danger.aui-active, .aui-btn-danger:active {
+ color: #ffffff !important;
+ background-color: #dd191b !important;
+}
+.aui-btn-orangle {
+ color: #ffffff !important;
+ background-color: #efb336 !important;
+}
+.aui-btn-orangle.aui-active, .aui-btn-orangle:active {
+ color: #fff !important;
+ background-color: #e98f36 !important;
+}
+.aui-btn-blue {
+ color: #ffffff !important;
+ background-color: #17abe3 !important;
+}
+.aui-btn-blue.aui-active, .aui-btn-blue:active {
+ color: #fff !important;
+ background-color: #1195db !important;
+}
+.aui-btn-green {
+ color: #ffffff !important;
+ background-color: #36ab60 !important;
+}
+.aui-btn-green.aui-active, .aui-btn-green:active {
+ color: #fff !important;
+ background-color: #36ab60 !important;
+}
+.aui-btn-block {
+ display: block;
+ width: 100%;
+ height: 2.5rem;
+ line-height: 2.55rem;
+ margin-bottom: 0;
+ font-size: 0.9rem;
+}
+.aui-btn-block.aui-btn-sm {
+ font-size: 0.7rem;
+ height: 1.8rem;
+ line-height: 1.85rem;
+}
+.aui-btn .aui-iconfont, .aui-btn-block .aui-iconfont {
+ margin-right: 0.3rem;
+}
+.aui-btn .aui-badge, .aui-btn-block .aui-badge {
+ margin-left: 0.3rem;
+}
+.aui-btn-outlined {
+ background: transparent !important;
+ border: 1px solid #bdbdbd;
+}
+.aui-btn-outlined:active {
+ background: transparent !important;
+}
+.aui-btn-default.aui-btn-outlined {
+ color: #bdc3c7 !important;
+ border: 1px solid #dcdcdc !important;
+}
+.aui-btn-primary.aui-btn-outlined {
+ color: #00bcd4 !important;
+ border: 1px solid #00bcd4 !important;
+}
+.aui-btn-success.aui-btn-outlined {
+ color: #009688 !important;
+ border: 1px solid #009688 !important;
+}
+.aui-btn-info.aui-btn-outlined {
+ color: #03a9f4 !important;
+ border: 1px solid #03a9f4 !important;
+}
+.aui-btn-warning.aui-btn-outlined {
+ color: #ffc107 !important;
+ border: 1px solid #ffc107 !important;
+}
+.aui-btn-danger.aui-btn-outlined {
+ color: #e51c23 !important;
+ border: 1px solid #e51c23 !important;
+}
+/*
+*表单类\输入框\radio\checkbox
+**/
+.aui-input,
+input[type="text"],
+input[type="password"],
+input[type="search"],
+input[type="email"],
+input[type="tel"],
+input[type="url"],
+input[type="date"],
+input[type="datetime-local"],
+input[type="time"],
+input[type="number"],
+select,
+textarea {
+ border: none;
+ background-color: transparent;
+ border-radius: 0;
+ box-shadow: none;
+ display: block;
+ padding: 0;
+ margin: 0;
+ width: 100%;
+ height: 2.2rem;
+ line-height: normal;
+ color: #424242;
+ font-size: 0.8rem;
+ font-family: inherit;
+ box-sizing: border-box;
+ -webkit-user-select: text;
+ user-select: text;
+ -webkit-appearance: none;
+ appearance: none;
+}
+input[type="search"]::-webkit-search-cancel-button {
+ display: none;
+}
+.aui-scroll-x {
+ position: relative;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+}
+.aui-scroll-y {
+ position: relative;
+ width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+}
+::-webkit-scrollbar{
+ width:0px;
+}
+/*列表*/
+.aui-list {
+ position: relative;
+ font-size: 0.8rem;
+ background-color: #ffffff;
+ border-top: 1px solid #dddddd;
+}
+.aui-list .aui-content {
+ overflow: hidden;
+}
+.aui-list.aui-list-noborder,
+.aui-list.aui-list-noborder {
+ border-top: none;
+}
+.aui-list .aui-list-header {
+ background-color: #dddddd;
+ color: #212121;
+ position: relative;
+ font-size: 0.6rem;
+ padding: 0.4rem 0.75rem;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-pack: justify;
+ -webkit-justify-content: space-between;
+ justify-content: space-between;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ align-items: center;
+}
+.aui-list .aui-list-item {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ padding-left: 0.75rem;
+ color: #212121;
+ border-bottom: 1px solid #f2f2f2;
+ position: relative;
+ min-height: 2.2rem;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-pack: justify;
+ -webkit-justify-content: space-between;
+ justify-content: space-between;
+}
+.aui-list.aui-list-noborder .aui-list-item:last-child {
+ border-bottom: 0;
+}
+.aui-list .aui-list-item-inner {
+ position: relative;
+ min-height: 2.2rem;
+ padding-right: 0.75rem;
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-box-pack: justify;
+ -webkit-justify-content: space-between;
+ justify-content: space-between;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ align-items: center;
+}
+
+.aui-list .aui-list-item:active {
+ background-color: #f5f5f5;
+}
+.aui-list .aui-list-item-text {
+ font-size: 0.7rem;
+ color: #757575;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-pack: justify;
+ -webkit-justify-content: space-between;
+ justify-content: space-between;
+ -webkit-align-items: center;
+ align-items: center;
+}
+.aui-list .aui-list-item-title {
+ font-size: 0.8rem;
+ position: relative;
+ max-width: 100%;
+ color: #212121;
+}
+.aui-list .aui-list-item-right,
+.aui-list-item-title-row em {
+ max-width: 50%;
+ position: relative;
+ font-size: 0.6rem;
+ color: #757575;
+ margin-left: 0.25rem;
+}
+.aui-list .aui-list-item-inner p {
+ overflow: hidden;
+}
+.aui-list .aui-list-media-list {
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -webkit-flex-direction: column;
+ flex-direction: column;
+}
+.aui-media-list-item-inner {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+}
+.aui-media-list .aui-list-item {
+ display: block;
+}
+.aui-media-list .aui-list-item-inner {
+ display: block;
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+}
+.aui-media-list-item-inner + .aui-info {
+ margin-right: 0.75rem;
+}
+.aui-list .aui-list-item-media {
+ width: 4.5rem;
+ position: relative;
+ padding: 0.5rem 0;
+ padding-right: 0.75rem;
+ display: inherit;
+ -webkit-flex-shrink: 0;
+ flex-shrink: 0;
+ -webkit-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-align: center;
+ -webkit-align-items: flex-start;
+ align-items: flex-start;
+}
+.aui-list .aui-list-item-media img {
+ width: 100%;
+ display: block;
+}
+.aui-list .aui-list-item-media-list {
+ margin-top: 0.25rem;
+ padding-right: 0;
+ display: block;
+}
+.aui-list [class*=aui-col-xs-] img{
+ max-width: 100%;
+ width: 100%;
+ display: block;
+}
+.aui-list-item-middle .aui-list-item-inner:after {
+ display: block;
+}
+.aui-list .aui-list-item-middle > .aui-list-item-media,
+.aui-list .aui-list-item-middle > .aui-list-item-inner,
+.aui-list .aui-list-item-middle > * {
+ -webkit-box-align: center;
+ box-align: center;
+ -webkit-align-items: center;
+ align-items: center;
+}
+.aui-list .aui-list-item-center > .aui-list-item-media,
+.aui-list .aui-list-item-center > .aui-list-item-inner,
+.aui-list .aui-list-item-center {
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+}
+.aui-list .aui-list-item i.aui-iconfont {
+ -webkit-align-self: center;
+ align-self: center;
+ font-size: 0.8rem;
+}
+.aui-list-item-inner.aui-list-item-arrow {
+ overflow: hidden;
+ padding-right: 1.5rem;
+}
+.aui-list-item-arrow:before {
+ content: '';
+ width: 0.4rem;
+ height: 0.4rem;
+ position: absolute;
+ top: 50%;
+ right: 0.75rem;
+ margin-top: -0.2rem;
+ background: transparent;
+ border: 1px solid #dddddd;
+ border-top: none;
+ border-right: none;
+ z-index: 2;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+ -webkit-transform: rotate(-135deg);
+ transform: rotate(-135deg);
+}
+.aui-list-item.aui-list-item-arrow {
+ padding-right: 0.75rem;
+}
+.aui-list label {
+ line-height: 1.3rem;
+}
+.aui-list.aui-form-list .aui-list-item:active {
+ background-color: #ffffff;
+}
+.aui-list.aui-form-list .aui-list-item-inner {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ padding: 0;
+}
+.aui-list .aui-list-item-label,
+.aui-list .aui-list-item-label-icon {
+ color: #212121;
+ width: 35%;
+ min-width: 1.5rem;
+ margin: 0;
+ padding: 0;
+ padding-right: 0.25rem;
+ line-height: 2.2rem;
+ position: relative;
+ overflow: hidden;
+ white-space: nowrap;
+ max-width: 100%;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-align-items: center;
+ align-items: center;
+}
+.aui-list .aui-list-item-label-icon {
+ width: auto;
+ padding-right: 0.75rem;
+}
+.aui-list .aui-list-item-input {
+ width: 100%;
+ padding: 0;
+ padding-right: 0.75rem;
+ -webkit-box-flex: 1;
+ box-flex: 1;
+ -webkit-flex-shrink: 1;
+ flex-shrink: 1;
+}
+.aui-list.aui-select-list .aui-list-item:active {
+ background-color: #ffffff;
+}
+.aui-list.aui-select-list .aui-list-item-inner {
+ display: block;
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ -webkit-align-self: stretch;
+ align-self: stretch;
+}
+.aui-list.aui-select-list .aui-list-item-label {
+ width: auto;
+ min-width: 2.2rem;
+ padding: 0.5rem 0;
+ padding-right: 0.75rem;
+}
+.aui-list.aui-form-list .aui-list-item-btn {
+ padding: 0.75rem 0.75rem 0.75rem 0;
+}
+.aui-list textarea {
+ overflow: auto;
+ margin: 0.5rem 0;
+ height: 3rem;
+ line-height: 1rem;
+ resize: none;
+}
+.aui-list .aui-list-item-right .aui-badge,
+.aui-list .aui-list-item-right .aui-dot {
+ display: inherit;
+}
+@media screen and (-webkit-min-device-pixel-ratio:1.5) {
+ .aui-list {
+ border: none;
+ background-size: 100% 1px;
+ background-repeat: no-repeat;
+ background-position: top;
+ background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+ }
+ .aui-list .aui-list-item {
+ border: none;
+ background-size: 100% 1px;
+ background-repeat: no-repeat;
+ background-position: bottom;
+ background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+ background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+ }
+
+ .aui-list.aui-list-in .aui-list-item {
+ border: none;
+ background-size: 100% 1px;
+ background-repeat: no-repeat;
+ background-position: 0.75rem bottom;
+ background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+ background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+ }
+ .aui-list.aui-list-in .aui-list-item:last-child {
+ background-position: bottom;
+ }
+ .aui-list.aui-list-noborder,
+ .aui-list.aui-list-noborder .aui-list-item:last-child {
+ border: none;
+ background-size: 100% 0;
+ background-image: none;
+ }
+}
+/*tab切换类*/
+.aui-tab {
+ position: relative;
+ background-color: #ffffff;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-align-self: center;
+ align-self: center;
+}
+.aui-tab-item {
+ width: 100%;
+ height: 2.2rem;
+ line-height: 2.2rem;
+ position: relative;
+ font-size: 0.7rem;
+ text-align: center;
+ color: #212121;
+ margin-left: -1px;
+ -webkit-box-flex: 1;
+ box-flex: 1;
+}
+.aui-tab-item.aui-active {
+ color: #03a9f4;
+ border-bottom: 2px solid #03a9f4;
+}
+/*卡片列表布局*/
+.aui-card-list {
+ position: relative;
+ margin-bottom: 0.35rem;
+ background: #ffffff;
+}
+.aui-card-list-header,
+.aui-card-list-footer {
+ position: relative;
+ min-height: 2.2rem;
+ padding: 0.5rem 0.75rem;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-pack: justify;
+ -webkit-justify-content: space-between;
+ justify-content: space-between;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ align-items: center;
+}
+.aui-card-list-header {
+ font-size: 0.8rem;
+ color: #212121;
+}
+.aui-card-list-header.aui-card-list-user {
+ display: block;
+}
+.aui-card-list-user-avatar {
+ width: 2rem;
+ float: left;
+ margin-right: 0.5rem;
+}
+.aui-card-list-user-avatar img {
+ width: 100%;
+ display: block;
+}
+.aui-card-list-user-name {
+ color: #212121;
+ position: relative;
+ font-size: 0.7rem;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-pack: justify;
+ -webkit-justify-content: space-between;
+ justify-content: space-between;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ align-items: center;
+}
+.aui-card-list-user-name > *,
+.aui-card-list-user-name small {
+ position: relative;
+}
+.aui-card-list-user-name small {
+ color: #757575;
+}
+.aui-card-list-user-info {
+ color: #757575;
+ font-size: 0.6rem;
+}
+.aui-card-list-content {
+ position: relative;
+}
+.aui-card-list-content-padded {
+ position: relative;
+ padding: 0.5rem 0.75rem;
+}
+.aui-card-list-content,
+.aui-card-list-content-padded {
+ word-break: break-all;
+ font-size: 0.7rem;
+ color: #212121;
+}
+.aui-card-list-content img,
+.aui-card-list-content-padded img {
+ width: 100%;
+ display: block;
+}
+.aui-card-list-footer {
+ font-size: 0.7rem;
+ color: #757575;
+}
+.aui-card-list-footer > * {
+ position: relative;
+}
+.aui-card-list-footer.aui-text-center {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-pack: center;
+ box-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+}
+.aui-card-list-footer .aui-iconfont {
+ font-size: 0.9rem;
+}
+/*宫格布局*/
+.aui-grid {
+ width: 100%;
+ background-color: #ffffff;
+ display: table;
+ table-layout: fixed;
+}
+.aui-grid [class*=aui-col-] {
+ display: table-cell;
+ position: relative;
+ text-align: center;
+ vertical-align: middle;
+ padding: 0.6rem 0;
+}
+.aui-grid [class*=aui-col-xs-]:active {
+ background-color: #f5f5f5;
+}
+.aui-grid [class*=top-btn]:active {
+ background-color: #048cca;
+}
+.aui-grid .aui-iconfont {
+ position: relative;
+ z-index: 20;
+ top: 0;
+ height: 1.4rem;
+ font-size: 1.4rem;
+ line-height: 1.4rem;
+}
+.aui-grid .aui-grid-label {
+ display: block;
+ font-size: 0.7rem;
+ position: relative;
+ margin-top: 0.25rem;
+}
+.aui-grid .aui-badge {
+ position: absolute;
+ top: 0.5rem;
+ left: 60%;
+ z-index: 99;
+}
+.aui-grid .aui-dot {
+ position: absolute;
+ top: 0.5rem;
+ right: 20%;
+ z-index: 99;
+}
+/*单选、多选、开关*/
+.aui-radio,
+.aui-checkbox {
+ width: 1.2rem;
+ height: 1.2rem;
+ background-color: #ffffff;
+ border: solid 1px #dddddd;
+ -webkit-border-radius: 0.6rem;
+ border-radius: 0.6rem;
+ font-size: 0.8rem;
+ margin: 0;
+ padding: 0;
+ position: relative;
+ display: inline-block;
+ vertical-align: top;
+ cursor: default;
+ -webkit-appearance: none;
+ -webkit-user-select: none;
+ user-select: none;
+ -webkit-transition: background-color ease 0.1s;
+ transition: background-color ease 0.1s;
+}
+.aui-checkbox {
+ border-radius: 0.1rem;
+}
+.aui-radio:checked,
+.aui-radio.aui-checked,
+.aui-checkbox:checked,
+.aui-checkbox.aui-checked {
+ background-color: #03a9f4;
+ border: solid 1px #03a9f4;
+ text-align: center;
+ background-clip: padding-box;
+}
+.aui-radio:checked:before,
+.aui-radio.aui-checked:before,
+.aui-checkbox:checked:before,
+.aui-checkbox.aui-checked:before,
+.aui-radio:checked:after,
+.aui-radio.aui-checked:after,
+.aui-checkbox:checked:after,
+.aui-checkbox.aui-checked:after {
+ content: '';
+ width: 0.5rem;
+ height: 0.3rem;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin-left: -0.25rem;
+ margin-top: -0.25rem;
+ background: transparent;
+ border: 1px solid #ffffff;
+ border-top: none;
+ border-right: none;
+ z-index: 2;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+}
+.aui-radio:disabled,
+.aui-radio.aui-disabled,
+.aui-checkbox:disabled,
+.aui-checkbox.aui-disabled {
+ background-color: #dddddd;
+ border: solid 1px #dddddd;
+}
+.aui-radio:disabled:before,
+.aui-radio.aui-disabled:before,
+.aui-radio:disabled:after,
+.aui-radio.aui-disabled:after,
+.aui-checkbox:disabled:before,
+.aui-checkbox.aui-disabled:before,
+.aui-checkbox:disabled:after,
+.aui-checkbox.aui-disabled:after {
+ content: '';
+ width: 0.5rem;
+ height: 0.3rem;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin-left: -0.25rem;
+ margin-top: -0.25rem;
+ background: transparent;
+ border: 1px solid #ffffff;
+ border-top: none;
+ border-right: none;
+ z-index: 2;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+}
+.aui-switch {
+ width: 2.3rem;
+ height: 1.2rem;
+ position: relative;
+ vertical-align: top;
+ border: 1px solid #dddddd;
+ background-color: #dddddd;
+ border-radius: 0.6rem;
+ background-clip: content-box;
+ display: inline-block;
+ outline: none;
+ -webkit-appearance: none;
+ appearance: none;
+ -webkit-user-select: none;
+ user-select: none;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ -webkit-transition: all 0.2s linear;
+ transition: all 0.2s linear;
+}
+.aui-switch:before {
+ width: 1.1rem;
+ height: 1.1rem;
+ position: absolute;
+ top: 0;
+ left: 0;
+ border-radius: 0.6rem;
+ background-color: #fff;
+ content: '';
+ -webkit-transition: left 0.2s;
+ transition: left 0.2s;
+}
+.aui-switch:checked {
+ border-color: #03a9f4;
+ background-color: #03a9f4;
+}
+.aui-switch:checked:before {
+ left: 1.1rem;
+}
+/*导航栏*/
+.aui-bar {
+ position: relative;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 10;
+ width: 100%;
+ min-height: 2.25rem;
+ font-size: 0.9rem;
+ text-align: center;
+ display: table;
+}
+.aui-bar-nav {
+ top: 0;
+ line-height: 2.25rem;
+ background-color: #03a9f4;
+ color: #ffffff;
+}
+.aui-title a {
+ color: inherit;
+}
+.aui-bar-nav .aui-title {
+ min-height: 2.25rem;
+ position: absolute;
+ margin: 0;
+ text-align: center;
+ white-space: nowrap;
+ right: 2rem;
+ left: 2rem;
+ width: auto;
+ overflow: hidden;
+ /*text-overflow: ellipsis;*/
+ z-index: 2;
+}
+.aui-bar-nav a {
+ color: #ffffff;
+}
+.aui-bar-nav .aui-iconfont {
+ position: relative;
+ z-index: 20;
+ font-size: 0.9rem;
+ color: #ffffff;
+ font-weight: 400;
+ line-height: 2.25rem;
+}
+.aui-bar-nav .aui-pull-left {
+ padding: 0 0.5rem;
+ font-size: 0.8rem;
+ font-weight: 400;
+ z-index: 2;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-align-items: center;
+ align-items: center;
+}
+.aui-bar-nav .aui-pull-right {
+ padding: 0 0.5rem;
+ font-size: 0.8rem;
+ font-weight: 400;
+ z-index: 2;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-align-items: center;
+ align-items: center;
+}
+.aui-bar-nav .aui-btn {
+ position: relative;
+ z-index: 20;
+ height: 2.25rem;
+ line-height: 2.25rem;
+ padding-top: 0;
+ padding-bottom: 0;
+ margin: 0;
+ border-radius: 0.1rem;
+ border-width: 0;
+ background: transparent !important;
+}
+.aui-bar-nav .aui-btn.aui-btn-outlined {
+ position: relative;
+ padding: 0 0.15rem;
+ margin: 0.5rem;
+ height: 1.25rem;
+ line-height: 1.25rem;
+ border-width: 1px;
+ background: transparent !important;
+ border-color: #ffffff;
+}
+.aui-bar-nav .aui-btn:active {
+ background: none;
+}
+.aui-bar-nav .aui-btn .aui-iconfont {
+ font-size: 0.9rem;
+ line-height: 1.25rem;
+ padding: 0;
+ margin: 0;
+ color: #ffffff;
+}
+.aui-bar-light {
+ color: #03a9f4;
+ background-color: #ffffff;
+ border-bottom: 1px solid #dddddd;
+}
+.aui-bar-nav.aui-bar-light .aui-iconfont {
+ color: #03a9f4;
+}
+.aui-bar-nav.aui-bar-light .aui-btn-outlined {
+ border-color: #03a9f4;
+}
+@media screen and (-webkit-min-device-pixel-ratio:1.5) {
+ .aui-bar.aui-bar-light {
+ border: none;
+ background-size: 100% 1px;
+ background-repeat: no-repeat;
+ background-position: bottom;
+ background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+ background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+ }
+}
+/*底部切换栏*/
+.aui-bar-tab {
+ position: fixed;
+ top: auto;
+ bottom: 0;
+ table-layout: fixed;
+ background-color: #ffffff;
+ color: #757575;
+}
+.aui-bar-tab .aui-bar-tab-item {
+ display: table-cell;
+ position: relative;
+ width: 1%;
+ height: 2.5rem;
+ text-align: center;
+ vertical-align: middle;
+}
+.aui-bar-tab .aui-active {
+ color: #03a9f4;
+}
+.aui-bar-tab .aui-bar-tab-item .aui-iconfont {
+ position: relative;
+ z-index: 20;
+ top: 0.1rem;
+ height: 1.2rem;
+ font-size: 1rem;
+ line-height: 1rem;
+}
+.aui-bar-tab .aui-bar-tab-label {
+ display: block;
+ font-size: 0.6rem;
+ position: relative;
+}
+.aui-bar-tab .aui-badge {
+ position: absolute;
+ top: 0.1rem;
+ left: 55%;
+ z-index: 99;
+}
+.aui-bar-tab .aui-dot {
+ position: absolute;
+ top: 0.1rem;
+ right: 30%;
+ z-index: 99;
+}
+/*按钮工具栏*/
+.aui-bar-btn {
+ position: relative;
+ font-size: 0.7rem;
+ display: table;
+ white-space: nowrap;
+ margin: 0 auto;
+ padding: 0;
+ border: none;
+ width: 100%;
+ min-height: 1.8rem;
+}
+.aui-bar-btn-item {
+ display: table-cell;
+ position: relative;
+ width: 1%;
+ line-height: 1.6rem;
+ text-align: center;
+ vertical-align: middle;
+ border-radius: 0;
+ position: relative;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #03a9f4;
+ border-left-width: 0;
+}
+.aui-bar-btn .aui-input,
+.aui-bar-btn input,
+.aui-bar-btn select {
+ padding-left: 0.25rem;
+ padding-right: 0.25rem;
+ height: 1.8rem;
+}
+.aui-bar-btn-sm {
+ min-height: 1.3rem;
+}
+.aui-bar-btn.aui-bar-btn-sm .aui-input,
+.aui-bar-btn.aui-bar-btn-sm input,
+.aui-bar-btn.aui-bar-btn-sm select {
+ height: 1.2rem;
+}
+.aui-bar-btn-sm .aui-bar-btn-item {
+ line-height: 1.3rem;
+ font-size: 0.6rem;
+}
+.aui-bar-btn-item.aui-active {
+ background-color: #03a9f4;
+ color: #ffffff;
+}
+.aui-bar-btn-item:first-child {
+ border-left-width: 1px;
+ border-top-left-radius: 0.2rem;
+ border-bottom-left-radius: 0.2rem;
+}
+.aui-bar-btn-item:last-child {
+ border-top-right-radius: 0.2rem;
+ border-bottom-right-radius: 0.2rem;
+ border-left: 0px;
+}
+.aui-bar-btn.aui-bar-btn-full .aui-bar-btn-item:first-child {
+ border-left-width: 0;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.aui-bar-btn.aui-bar-btn-full .aui-bar-btn-item:last-child {
+ border-right-width: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.aui-bar-btn.aui-bar-btn-round .aui-bar-btn-item:first-child {
+ border-top-left-radius: 1.5rem;
+ border-bottom-left-radius: 1.5rem;
+}
+.aui-bar-btn.aui-bar-btn-round .aui-bar-btn-item:last-child {
+ border-top-right-radius: 1.5rem;
+ border-bottom-right-radius: 1.5rem;
+}
+.aui-bar-nav .aui-bar-btn {
+ margin-top: 0.45rem;
+ margin-bottom: 0.4rem;
+ min-height: 1.3rem;
+}
+.aui-bar-nav .aui-bar-btn-item {
+ line-height: 1.3rem;
+ border-color: #ffffff;
+}
+.aui-bar-nav .aui-bar-btn-item.aui-active {
+ background-color: #ffffff;
+ color: #03a9f4;
+}
+.aui-bar-nav.aui-bar-light .aui-bar-btn-item {
+ border-color: #03a9f4;
+}
+.aui-bar-nav.aui-bar-light .aui-bar-btn-item.aui-active {
+ background-color: #03a9f4;
+ color: #ffffff;
+}
+.aui-bar-nav > .aui-bar-btn {
+ width: 50%;
+}
+.aui-info {
+ position: relative;
+ padding: 0.5rem 0;
+ font-size: 0.7rem;
+ color: #757575;
+ background-color: transparent;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-pack: justify;
+ -webkit-justify-content: space-between;
+ justify-content: space-between;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ align-items: center;
+
+}
+.aui-info-item {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ align-items: center;
+}
+.aui-info-item > *,
+.aui-info > * {
+ display: inherit;
+ position: relative;
+}
+/*进度条*/
+.aui-progress {
+ width: 100%;
+ height: 1rem;
+ border-radius: 0.2rem;
+ overflow: hidden;
+ background-color: #f0f0f0;
+}
+.aui-progress-bar {
+ float: left;
+ width: 0;
+ height: 100%;
+ font-size: 0.6rem;
+ line-height: 1rem;
+ color: #ffffff;
+ text-align: center;
+ background-color: #03a9f4;
+}
+.aui-progress.sm,
+.aui-progress-sm {
+ height: 0.5rem;
+}
+.aui-progress.sm,
+.aui-progress-sm,
+.aui-progress.sm .aui-progress-bar,
+.aui-progress-sm .aui-progress-bar {
+ border-radius: 1px;
+}
+.aui-progress.xs,
+.aui-progress-xs {
+ height: 0.35rem;
+}
+.aui-progress.xs,
+.aui-progress-xs,
+.aui-progress.xs .progress-bar,
+.aui-progress-xs .progress-bar {
+ border-radius: 1px;
+}
+.aui-progress.xxs,
+.aui-progress-xxs {
+ height: 0.15rem;
+}
+.aui-progress.xxs,
+.aui-progress-xxs,
+.aui-progress.xxs .progress-bar,
+.aui-progress-xxs .progress-bar {
+ border-radius: 1px;
+}
+/*滑块*/
+.aui-range {
+ position: relative;
+ display: inline-block;
+}
+.aui-range input[type='range']{
+ height: 0.2rem;
+ border: 0;
+ border-radius: 2px;
+ background-color: #f0f0f0;
+ position: relative;
+ -webkit-appearance: none !important;
+}
+.aui-range input[type='range']::-webkit-slider-thumb {
+ width: 1.2rem;
+ height: 1.2rem;
+ border-radius: 50%;
+ border-color: #03a9f4;
+ background-color: #03a9f4;
+ -webkit-appearance: none !important;
+}
+.aui-range .aui-range-tip {
+ font-size: 1rem;
+ position: absolute;
+ z-index: 999;
+ top: -1.5rem;
+ width: 2.4rem;
+ height: 1.5rem;
+ line-height: 1.5rem;
+ text-align: center;
+ color: #666666;
+ border: 1px solid #dddddd;
+ border-radius: 0.3rem;
+ background-color: #ffffff;
+}
+.aui-input-row .aui-range input[type='range'] {
+ width: 90%;
+ margin-left: 5%;
+}
+/*搜索条*/
+.aui-searchbar {
+ display: -webkit-box;
+ -webkit-box-pack: center;
+ -webkit-box-align: center;
+ height: 2.2rem;
+ overflow: hidden;
+ width: 100%;
+ background-color: #ebeced;
+ color: #9e9e9e;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+}
+.aui-searchbar.focus {
+ -webkit-box-pack: start;
+}
+.aui-searchbar-input {
+ margin: 0 0.5rem;
+ background-color: #ffffff;
+ border-radius: 0.25rem;
+ height: 1.4rem;
+ line-height: 1.4rem;
+ font-size: 0.7rem;
+ position: relative;
+ padding-left: 0.5rem;
+ display: -webkit-box;
+ -webkit-box-flex: 1;
+}
+.aui-searchbar form {
+ width: 90%;
+}
+.aui-searchbar-input input {
+ color: #666666;
+ width: 80%;
+ padding: 0;
+ margin: 0;
+ height: 1.4rem;
+ line-height: normal;
+ border: 0;
+ -webkit-appearance: none;
+ font-size: 0.7rem;
+}
+.aui-searchbar input::-webkit-input-placeholder {
+ color: #ccc;
+}
+.aui-searchbar .aui-iconfont {
+ line-height: 1.4rem;
+ margin-right: 0.25rem;
+ color: #9e9e9e !important;
+}
+.aui-searchbar .aui-searchbar-btn {
+ font-size: 0.7rem;
+ color: #666666;
+ margin-right: -2.2rem;
+ width: 2.2rem;
+ height: 1.4rem;
+ padding-right: 0.5rem;
+ line-height: 1.4rem;
+ text-align: center;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+}
+.aui-searchbar-clear-btn {
+ position: absolute;
+ right: 5px;
+ top: 3px;
+ width: 1.1rem;
+ height: 1.1rem;
+ background: #eeeeee;
+ border-radius: 50%;
+ line-height: 0.6rem;
+ text-align: center;
+ display: none;
+}
+.aui-searchbar-clear-btn .aui-iconfont {
+ font-size: 0.6rem;
+ margin: 0 auto;
+ position: relative;
+ top: -2px;
+}
+.aui-searchbar .aui-searchbar-btn .aui-iconfont {
+ color: #666666;
+}
+/*信息提示条*/
+.aui-tips {
+ padding: 0 0.75rem;
+ width: 100%;
+ z-index: 99;
+ height: 1.9rem;
+ line-height: 1.9rem;
+ position: relative;
+ background-color: rgba(0,0,0,.6);
+ color: #ffffff;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-pack: justify;
+ -webkit-justify-content: space-between;
+ justify-content: space-between;
+ -webkit-align-items: center;
+ align-items: center;
+}
+.aui-tips .aui-tips-title {
+ padding: 0 0.5rem;
+ font-size: 0.7rem;
+ position: relative;
+ max-width: 100%;
+}
+/*toast*/
+.aui-toast {
+ background: rgba(0, 0, 0, 0.7);
+ text-align: center;
+ border-radius: 0.25rem;
+ color: #ffffff;
+ position: fixed;
+ z-index: 300;
+ top: 45%;
+ left: 50%;
+ width: 7.5em;
+ min-height: 6em;
+ margin-left: -3.75em;
+ margin-top: -4rem;
+ display: none;
+}
+.aui-toast .aui-iconfont {
+ margin-top: 0.2rem;
+ display: block;
+ font-size: 2.6rem;
+}
+.aui-toast-content {
+ margin: 0 0 0.75rem;
+}
+.aui-toast-loading {
+ background-color: #ffffff;
+ border-radius: 100%;
+ margin: 0.75rem 0;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ border: 2px solid #ffffff;
+ border-bottom-color: transparent;
+ height: 2.25rem;
+ width: 2.25rem;
+ background: transparent !important;
+ display: inline-block;
+ -webkit-animation: rotate 1s 0s linear infinite;
+ animation: rotate 1s 0s linear infinite;
+}
+/*dialog*/
+.aui-dialog {
+ width: 13.5rem;
+ text-align: center;
+ position: fixed;
+ z-index: 999;
+ left: 50%;
+ margin-left: -6.75rem;
+ margin-top: 0;
+ top: 45%;
+ border-radius: 0.3rem;
+ opacity: 0;
+ background-color: #ffffff;
+ -webkit-transform: translate3d(0, 0, 0) scale(1.2);
+ transform: translate3d(0, 0, 0) scale(1.2);
+ -webkit-transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ /*display: none;*/
+}
+.aui-dialog-header {
+ padding: 0.5rem 0.75rem 0 0.75rem;
+ text-align: center;
+ font-size: 1em;
+ color: #212121;
+}
+.aui-dialog-body {
+ padding: 0.75rem;
+ overflow: hidden;
+ font-size: 0.875em;
+ color: #757575;
+}
+.aui-dialog-body input {
+ border: 1px solid #dddddd;
+ height: 1.8rem;
+ line-height: 1.8rem;
+ min-height: 1.8rem;
+ padding-left: 0.25rem;
+ padding-right: 0.25rem;
+}
+.aui-dialog-footer {
+ position: relative;
+ font-size: 1em;
+ border-top: 1px solid #dddddd;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+}
+.aui-dialog-btn {
+ position: relative;
+ display: block;
+ width: 100%;
+ padding: 0 0.25rem;
+ height: 2.2rem;
+ font-size: 0.8rem;
+ line-height: 2.2rem;
+ text-align: center;
+ color: #0894ec;
+ border-right: 1px solid #dddddd;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-box-flex: 1;
+ box-flex: 1;
+}
+.aui-dialog-btn:last-child {
+ border-right: none;
+}
+.aui-dialog.aui-dialog-in {
+ opacity: 1;
+ -webkit-transition-duration: 300ms;
+ transition-duration: 300ms;
+ -webkit-transform: translate3d(0, 0, 0) scale(1);
+ transform: translate3d(0, 0, 0) scale(1);
+}
+.aui-dialog.aui-dialog-out {
+ opacity: 0;
+ -webkit-transition-duration: 300ms;
+ transition-duration: 300ms;
+ -webkit-transform: translate3d(0, 0, 0) scale(0.815);
+ transform: translate3d(0, 0, 0) scale(0.815);
+}
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
+ .aui-dialog-footer {
+ border: none;
+ background-size: 100% 1px;
+ background-repeat: no-repeat;
+ background-position: top;
+ background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+ background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+ }
+ .aui-dialog-btn {
+ border: none;
+ background-image: -webkit-linear-gradient(0deg, #dddddd, #dddddd 50%, transparent 50%);
+ background-image: linear-gradient(270deg, #dddddd, #dddddd 50%, transparent 50%);
+ background-size: 1px 100%;
+ background-repeat: no-repeat;
+ background-position: right;
+ }
+ .aui-dialog-btn:last-child {
+ border: none;
+ background-size: 0 100%;
+ }
+ .aui-dialog-body input {
+ border: none;
+ background-image: -webkit-linear-gradient(270deg, #dddddd, #dddddd 50%, transparent 50%), -webkit-linear-gradient(180deg, #dddddd, #dddddd 50%, transparent 50%), -webkit-linear-gradient(90deg, #dddddd, #dddddd 50%, transparent 50%), -webkit-linear-gradient(0, #dddddd, #dddddd 50%, transparent 50%);
+ background-image: linear-gradient(180deg, #dddddd, #dddddd 50%, transparent 50%), linear-gradient(270deg, #dddddd, #dddddd 50%, transparent 50%), linear-gradient(0deg, #dddddd, #dddddd 50%, transparent 50%), linear-gradient(90deg, #dddddd, #dddddd 50%, transparent 50%);
+ background-size: 100% 1px, 1px 100%, 100% 1px, 1px 100%;
+ background-repeat: no-repeat;
+ background-position: top, right top, bottom, left top;
+ }
+}
+/*popup*/
+.aui-popup {
+ padding: 0;
+ margin: 0;
+ background: transparent;
+ position: fixed;
+ height: auto;
+ min-width: 7rem;
+ min-height: 4.5rem;
+ z-index: 999;
+ opacity: 0;
+ -webkit-transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+}
+.aui-popup.aui-popup-in {
+ opacity: 1;
+ -webkit-transition-duration: 300ms;
+ transition-duration: 300ms;
+}
+.aui-popup.aui-popup-out {
+ opacity: 0;
+ -webkit-transition-duration: 300ms;
+ transition-duration: 300ms;
+}
+.aui-popup-right {
+ right: 0.75rem;
+}
+.aui-popup-content {
+ background-color: #ffffff;
+ border-radius: 0.2rem;
+ overflow: hidden;
+ min-height: 4.5rem;
+ height: 100%;
+}
+.aui-popup-top,
+.aui-popup-top-left,
+.aui-popup-top-right {
+ top: 0.45rem;
+}
+.aui-popup-top {
+ left: 50%;
+ margin-left: -3.5rem;
+}
+.aui-popup-top-left {
+ left: 0.45rem;
+}
+.aui-popup-top-right {
+ right: 0.45rem;
+}
+.aui-popup-arrow {
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ -webkit-transform-origin: 50% 50% 0;
+ transform-origin: 50% 50% 0;
+ background-color: transparent;
+ background-image: -webkit-linear-gradient(45deg, #ffffff, #ffffff 50%, transparent 50%);
+ background-image: linear-gradient(45deg, #ffffff, #ffffff 50%, transparent 50%);
+}
+.aui-popup-top .aui-popup-arrow,
+.aui-popup-top-left .aui-popup-arrow,
+.aui-popup-top-right .aui-popup-arrow {
+ top: 0.2rem;
+ -webkit-transform: rotate(135deg);
+ transform: rotate(135deg);
+}
+.aui-popup-top .aui-popup-arrow {
+ left: 50%;
+ margin-left: -0.25rem;
+ margin-top: -0.4rem;
+}
+.aui-popup-top-left .aui-popup-arrow {
+ left: 0.25rem;
+ margin-top: -0.4rem;
+}
+.aui-popup-top-right .aui-popup-arrow {
+ right: 0.25rem;
+ margin-top: -0.4rem;
+}
+.aui-popup-bottom,
+.aui-popup-bottom-left,
+.aui-popup-bottom-right {
+ bottom: 0.45rem;
+}
+.aui-popup-bottom {
+ left: 50%;
+ margin-left: -3.5rem;
+}
+.aui-popup-bottom-left {
+ left: 0.45rem;
+}
+.aui-popup-bottom-right {
+ right: 0.45rem;
+}
+.aui-popup-bottom .aui-popup-arrow,
+.aui-popup-bottom-left .aui-popup-arrow,
+.aui-popup-bottom-right .aui-popup-arrow {
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ bottom: 0.2rem;
+}
+.aui-popup-bottom .aui-popup-arrow {
+ left: 50%;
+ margin-left: -0.25rem;
+ margin-bottom: -0.4rem;
+}
+.aui-popup-bottom-left .aui-popup-arrow {
+ left: 0.25rem;
+ margin-bottom: -0.4rem;
+}
+.aui-popup-bottom-right .aui-popup-arrow {
+ right: 0.25rem;
+ margin-bottom: -0.4rem;
+}
+.aui-popup .aui-list {
+ background: transparent;
+}
+.aui-popup-content .aui-list img {
+ display: block;
+ width: 1rem;
+}
+/*actionsheet*/
+.aui-actionsheet {
+ width: 100%;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ padding: 0 0.5rem;
+ z-index: 999;
+ opacity: 0;
+ -webkit-transition: opacity .3s,-webkit-transform .3s;
+ transition: opacity .3s,transform .3s;
+ -webkit-transform: translate3d(0,100%,0);
+ transform: translate3d(0,100%,0);
+}
+.aui-actionsheet-btn {
+ background-color: #ffffff;
+ border-radius: 6px;
+ text-align: center;
+ margin-bottom: 0.5rem;
+}
+.aui-actionsheet-title {
+ font-size: 0.6rem;
+ color: #999999;
+ line-height: 1.8rem;
+}
+.aui-actionsheet-btn-item {
+ height: 2.2rem;
+ line-height: 2.2rem;
+ color: #0075f0;
+}
+/*sharebox*/
+.aui-sharebox {
+ width: 100%;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ z-index: 999;
+ background-color: #ffffff;
+ opacity: 0;
+ -webkit-transition: opacity .3s,-webkit-transform .3s;
+ transition: opacity .3s,transform .3s;
+ -webkit-transform: translate3d(0,100%,0);
+ transform: translate3d(0,100%,0);
+}
+.aui-sharebox .aui-row {
+ padding: 0.5rem 0;
+}
+.aui-sharebox img {
+ display: block;
+ width: 50%;
+ margin: 0 auto;
+}
+.aui-sharebox.aui-grid [class*=aui-col-] {
+ padding: 0.5rem 0;
+}
+.aui-sharebox.aui-grid .aui-grid-label {
+ font-size: 0.6rem;
+ color: #757575;
+}
+.aui-sharebox-close-btn {
+ width: 100%;
+ height: 2.2rem;
+ line-height: 2.2rem;
+ color: #757575;
+ text-align: center;
+ font-size: 0.7rem;
+}
+/*折叠菜单*/
+.aui-collapse-header.aui-active {
+ background: #ececec;
+}
+.aui-collapse .aui-list-item:active{
+ background: #ececec;
+}
+.aui-collapse-content {
+ display: none;
+}
+.aui-collapse-content .aui-list-item:last-child {
+ border-bottom: 0;
+}
+@media screen and (-webkit-min-device-pixel-ratio:1.5) {
+ .aui-collapse-content .aui-list-item:last-child {
+ background-position: bottom;
+ }
+ .aui-list.aui-collapse.aui-list-noborder,
+ .aui-list.aui-collapse.aui-list-noborder .aui-collapse-content:last-child .aui-list-item:last-child {
+ border: none;
+ background-size: 100% 1px;
+ background-repeat: no-repeat;
+ background-position: 0 bottom;
+ background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+ background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+ }
+ .aui-list.aui-collapse.aui-list-noborder,
+ .aui-list.aui-collapse.aui-list-noborder .aui-collapse-item:last-child .aui-list-item:last-child {
+ border: none;
+ background-size: 100% 0;
+ background-image: none;
+ }
+ .aui-list.aui-collapse.aui-list-noborder .aui-collapse-item:last-child .aui-list-item.aui-collapse-header,
+ .aui-list.aui-collapse.aui-list-noborder .aui-collapse-content .aui-list-item:last-child {
+ border: none;
+ background-size: 100% 0;
+ background-image: none;
+ }
+}
+.aui-collapse-header.aui-active .aui-collapse-arrow {
+ display: block;
+ transform: rotate(180deg);
+ -webkit-transform: rotate(180deg);
+}
+/*聊天气泡*/
+.aui-chat {
+ width: 100%;
+ height: 100%;
+ padding: 0.5rem;
+}
+.aui-chat .aui-chat-item {
+ position: relative;
+ width: 100%;
+ margin-bottom: 0.75rem;
+ overflow: hidden;
+ display: block;
+}
+.aui-chat .aui-chat-header {
+ width: 100%;
+ text-align: center;
+ margin-bottom: 0.75rem;
+ font-size: 0.6rem;
+ color: #757575;
+}
+.aui-chat .aui-chat-left {
+ float: left;
+}
+.aui-chat .aui-chat-right {
+ float: right;
+}
+.aui-chat .aui-chat-media {
+ display: inline-block;
+ max-width: 2rem;
+}
+.aui-chat .aui-chat-media img {
+ width: 100%;
+ border-radius: 50%;
+}
+.aui-chat .aui-chat-inner {
+ position: relative;
+ overflow: hidden;
+ display: inherit;
+}
+.aui-chat .aui-chat-arrow {
+ content: '';
+ position: absolute;
+ width: 0.6rem;
+ height: 0.6rem;
+ top: 0.2rem;
+ -webkit-transform-origin: 50% 50% 0;
+ transform-origin: 50% 50% 0;
+ background-color: transparent;
+}
+.aui-chat .aui-chat-left .aui-chat-arrow {
+ background-image: -webkit-linear-gradient(45deg, #b3e5fc, #b3e5fc 50%, transparent 50%);
+ background-image: linear-gradient(45deg, #b3e5fc, #b3e5fc 50%, transparent 50%);
+ -webkit-transform: rotate(45deg);
+ transform: rotate(45deg);
+ left: -0.25rem;
+}
+.aui-chat .aui-chat-right .aui-chat-arrow {
+ background-image: -webkit-linear-gradient(45deg, #ffffff, #ffffff 50%, transparent 50%);
+ background-image: linear-gradient(45deg, #ffffff, #ffffff 50%, transparent 50%);
+ -webkit-transform: rotate(-135deg);
+ transform: rotate(-135deg);
+ right: -0.25rem;
+}
+.aui-chat .aui-chat-content {
+ color: #212121;
+ font-size: 0.7rem;
+ border-radius: 0.2rem;
+ min-height: 2rem;
+ position: relative;
+ padding: 0.5rem;
+ max-width: 80%;
+ word-break: break-all;
+ word-wrap: break-word;
+}
+.aui-chat .aui-chat-content img {
+ max-width: 100%;
+ display: block;
+}
+.aui-chat .aui-chat-status {
+ position: relative;
+ width: 2rem;
+ height: 2rem;
+ line-height: 2rem;
+ text-align: center;
+}
+.aui-chat .aui-chat-name {
+ width: 100%;
+ position: relative;
+ font-size: 0.6rem;
+ color: #757575;
+ margin-bottom: 0.25rem;
+}
+.aui-chat .aui-chat-left .aui-chat-name {
+ left: 0.5rem;
+}
+.aui-chat .aui-chat-left .aui-chat-status {
+ left: 0.5rem;
+ float: left;
+}
+.aui-chat .aui-chat-left .aui-chat-media {
+ width: 2rem;
+ float: left;
+}
+.aui-chat .aui-chat-left .aui-chat-inner {
+ max-width: 70%;
+}
+.aui-chat .aui-chat-left .aui-chat-content{
+ background-color: #b3e5fc;
+ float: left;
+ left: 0.5rem;
+}
+.aui-chat .aui-chat-right .aui-chat-media {
+ width: 2rem;
+ float: right;
+}
+.aui-chat .aui-chat-right .aui-chat-inner {
+ float: right;
+ max-width: 70%;
+}
+.aui-chat .aui-chat-right .aui-chat-name {
+ float: right;
+ right: 0.5rem;
+ text-align: right;
+}
+.aui-chat .aui-chat-right .aui-chat-content {
+ background-color: #ffffff;
+ right: 0.5rem;
+ float: right;
+}
+.aui-chat .aui-chat-right .aui-chat-status {
+ float: right;
+ right: 0.5rem;
+}
+/*边框样式*/
+.aui-border-l {
+ border-left: 1px solid #dddddd;
+}
+.aui-border-r {
+ border-right: 1px solid #dddddd;
+}
+.aui-border-t {
+ border-top: 1px solid #dddddd;
+}
+.aui-border-b {
+ border-bottom: 1px solid #dddddd;
+}
+.aui-border {
+ border: 1px solid #dddddd;
+}
+@media screen and (-webkit-min-device-pixel-ratio:1.5) {
+ .aui-border-l {
+ border: none;
+ background-image: -webkit-linear-gradient(0deg, #dddddd, #dddddd 50%, transparent 50%);
+ background-image: linear-gradient(270deg, #dddddd, #dddddd 50%, transparent 50%);
+ background-size: 1px 100%;
+ background-repeat: no-repeat;
+ background-position: left;
+ }
+ .aui-border-r {
+ border: none;
+ background-image: -webkit-linear-gradient(0deg, #dddddd, #dddddd 50%, transparent 50%);
+ background-image: linear-gradient(270deg, #dddddd, #dddddd 50%, transparent 50%);
+ background-size: 1px 100%;
+ background-repeat: no-repeat;
+ background-position: right;
+ }
+ .aui-border-t{
+ border: none;
+ background-size: 100% 1px;
+ background-repeat: no-repeat;
+ background-position: top;
+ background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+ background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+ }
+ .aui-border-b {
+ border: none;
+ background-size: 100% 1px;
+ background-repeat: no-repeat;
+ background-position: bottom;
+ background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+ background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+ }
+ .aui-border{
+ border: none;
+ background-image: -webkit-linear-gradient(270deg, #dddddd, #dddddd 50%, transparent 50%), -webkit-linear-gradient(180deg, #dddddd, #dddddd 50%, transparent 50%), -webkit-linear-gradient(90deg, #dddddd, #dddddd 50%, transparent 50%), -webkit-linear-gradient(0, #dddddd, #dddddd 50%, transparent 50%);
+ background-image: linear-gradient(180deg, #dddddd, #dddddd 50%, transparent 50%), linear-gradient(270deg, #dddddd, #dddddd 50%, transparent 50%), linear-gradient(0deg, #dddddd, #dddddd 50%, transparent 50%), linear-gradient(90deg, #dddddd, #dddddd 50%, transparent 50%);
+ background-size: 100% 1px, 1px 100%, 100% 1px, 1px 100%;
+ background-repeat: no-repeat;
+ background-position: top, right top, bottom, left top;
+ }
+}
+/*时间轴*/
+.aui-timeline {
+ position: relative;
+ padding: 0;
+ list-style: none;
+}
+.aui-timeline:before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 1.85rem;
+ width: 2px;
+ height: 100%;
+ background: #ececec;
+ z-index: 0;
+}
+.aui-timeline .aui-timeline-item {
+ position: relative;
+ margin-bottom: 0.35rem;
+}
+.aui-timeline .aui-timeline-item-header {
+ background-color: #ececec;
+ padding: 0.2rem 0.5rem;
+ margin: 0.75rem;
+ text-align: center;
+ display: inline-block;
+ position: relative;
+ z-index: 1;
+ font-size: 0.7rem;
+}
+.aui-timeline .aui-timeline-item-label {
+ width: 2.5rem;
+ height: 1.5rem;
+ line-height: 1.5rem;
+ font-size: 0.7em;
+ background-color: #ececec;
+ position: absolute;
+ text-align: center;
+ left: 0.75rem;
+ top: 0;
+}
+.aui-timeline .aui-timeline-item-label-icon {
+ width: 1.5rem;
+ height: 1.5rem;
+ font-size: 0.7rem;
+ line-height: 1.5rem;
+ background-color: #ececec;
+ position: absolute;
+ border-radius: 50%;
+ text-align: center;
+ left: 1.15rem;
+ top: 0;
+}
+.aui-timeline .aui-timeline-item-inner {
+ margin-left: 3.75rem;
+ margin-right: 0.75rem;
+ padding: 0;
+ position: relative;
+}
+/*基础动画类*/
+@keyframes rotate {
+ 0% {
+ -webkit-transform: rotate(0deg) scale(1);
+ transform: rotate(0deg) scale(1);
+ }
+ 50% {
+ -webkit-transform: rotate(180deg) scale(1);
+ transform: rotate(180deg) scale(1);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg) scale(1);
+ transform: rotate(360deg) scale(1);
+ }
+}
+@-webkit-keyframes rotate {
+ 0% {
+ -webkit-transform: rotate(0deg) scale(1);
+ transform: rotate(0deg) scale(1);
+ }
+ 50% {
+ -webkit-transform: rotate(180deg) scale(1);
+ transform: rotate(180deg) scale(1);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg) scale(1);
+ transform: rotate(360deg) scale(1);
+ }
+}
+@keyframes bounce {
+ 0%, 100% {
+ -webkit-transform: scale(0.0);
+ transform: scale(0.0);
+ }
+ 50% {
+ -webkit-transform: scale(1.0);
+ transform: scale(1.0);
+ }
+}
+@-webkit-keyframes bounce {
+ 0%, 100% {
+ -webkit-transform: scale(0.0);
+ transform: scale(0.0);
+ }
+ 50% {
+ -webkit-transform: scale(1.0);
+ transform: scale(1.0);
+ }
+}
+@keyframes fadeIn {
+ from { opacity: 0.3; }
+ to { opacity: 1; }
+}
+@-webkit-keyframes fadeIn {
+ from { opacity: 0.3; }
+ to { opacity: 1; }
+}
+@font-face {
+ font-family: "aui_iconfont";
+ src: url('aui-iconfont.ttf') format('truetype');
+}
+.aui-iconfont {
+ position: relative;
+ font-family:"aui_iconfont" !important;
+ font-size: 0.7rem;
+ font-style:normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.aui-icon-menu:before { content: "\e6eb"; }
+.aui-icon-paper:before { content: "\e6ec"; }
+.aui-icon-info:before { content: "\e6ed"; }
+.aui-icon-question:before { content: "\e6ee"; }
+.aui-icon-left:before { content: "\e6f4"; }
+.aui-icon-right:before { content: "\e6f5"; }
+.aui-icon-top:before { content: "\e6f6"; }
+.aui-icon-down:before { content: "\e6f7"; }
+.aui-icon-share:before { content: "\e700"; }
+.aui-icon-comment:before { content: "\e701"; }
+.aui-icon-edit:before { content: "\e6d3"; }
+.aui-icon-trash:before { content: "\e6d4"; }
+.aui-icon-recovery:before { content: "\e6dc"; }
+.aui-icon-refresh:before { content: "\e6dd"; }
+.aui-icon-close:before { content: "\e6d8"; }
+.aui-icon-cart:before { content: "\e6df"; }
+.aui-icon-star:before { content: "\e6e0"; }
+.aui-icon-plus:before { content: "\e6e3"; }
+.aui-icon-minus:before { content: "\e62d"; }
+.aui-icon-correct:before { content: "\e6e5"; }
+.aui-icon-search:before { content: "\e6e6"; }
+.aui-icon-gear:before { content: "\e6e8"; }
+.aui-icon-map:before { content: "\e6d2"; }
+.aui-icon-location:before { content: "\e6d1"; }
+.aui-icon-image:before { content: "\e6ce"; }
+.aui-icon-phone:before { content: "\e6c4"; }
+.aui-icon-camera:before { content: "\e6cd"; }
+.aui-icon-video:before { content: "\e6cc"; }
+.aui-icon-qq:before { content: "\e6cb"; }
+.aui-icon-wechat:before { content: "\e6c9"; }
+.aui-icon-weibo:before { content: "\e6c8"; }
+.aui-icon-note:before { content: "\e6c6"; }
+.aui-icon-mail:before { content: "\e6c5"; }
+.aui-icon-wechat-circle:before { content: "\e6ca"; }
+.aui-icon-home:before { content: "\e706"; }
+.aui-icon-forward:before { content: "\e6d9"; }
+.aui-icon-back:before { content: "\e6da"; }
+.aui-icon-laud:before { content: "\e64b"; }
+.aui-icon-lock:before { content: "\e6ef"; }
+.aui-icon-unlock:before { content: "\e62f"; }
+.aui-icon-like:before { content: "\e62b"; }
+.aui-icon-my:before { content: "\e610"; }
+.aui-icon-more:before { content: "\e625"; }
+.aui-icon-mobile:before { content: "\e697"; }
+.aui-icon-calendar:before { content: "\e68a"; }
+.aui-icon-date:before { content: "\e68c"; }
+.aui-icon-display:before { content: "\e612"; }
+.aui-icon-hide:before { content: "\e624"; }
+.aui-icon-pencil:before { content: "\e615"; }
+.aui-icon-flag:before { content: "\e6f1"; }
+.aui-icon-cert:before { content: "\e704"; }
+
+.aui-card-list-user:after {
+ width: 100%;
+ height: 1px;
+ background-color: #f2f2f2;
+ display: block;
+ content: '';
+ position: absolute;
+ top: auto;
+ right: auto;
+ bottom: 0;
+ left: 0;
+ z-index: 2;
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ pointer-events: none;
+}
+.aui-list [class*=top-btn]:active {
+ background-color: #048cca;
+}
diff --git a/oauth/src/main/resources/static/css/index.css b/oauth/src/main/resources/static/css/index.css
new file mode 100644
index 0000000..b23e33c
--- /dev/null
+++ b/oauth/src/main/resources/static/css/index.css
@@ -0,0 +1,149 @@
+body {
+ background: #F1F4F4;
+}
+
+.mainbg {
+ background: #03a9f4;
+}
+
+.lightbg {
+ background: #54C8FF;
+}
+
+.tab-bottom button.active::after {
+ background-color: transparent;
+}
+
+.maincolor {
+ color: #03a9f4;
+}
+
+.qrscanner {
+ width: 100%;
+ background: transparent none !important;
+ padding-top: 52px;
+}
+
+.qrscanner-area {
+ height: 100mm;
+ background: url(../img/scanner.svg) no-repeat center center;
+ background-size: contain;
+}
+
+.through-line {
+ left: 20%;
+ width: 60%;
+ height: 2px;
+ background: red;
+ position: absolute;
+ animation: myfirst 2s linear infinite alternate;
+}
+
+@keyframes myfirst {
+ 0% {
+ background: #03a9f4;
+ top: 180px;
+ }
+
+ 25% {
+ background: #03a9f4;
+ top: 215px;
+ }
+
+ 50% {
+ background: #03a9f4;
+ top: 250px;
+ }
+
+ 75% {
+ background: #03a9f4;
+ top: 285px;
+ }
+
+ 100% {
+ background: #03a9f4;
+ top: 320px;
+ }
+}
+
+.button-bottom {
+ width: 128px;
+ position: absolute;
+ left: 50%;
+ bottom: 80px;
+ margin-left: -64px;
+}
+
+.icon-camera {
+ float: left;
+}
+
+.vcodedisabled {
+ color: #999 !important;
+}
+
+.login-top {
+ height: 200px;
+ background: #03a9f4;
+ color: #fff;
+ font-size: 36px;
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+}
+
+.weui-toast_content {
+ color: #fff;
+}
+
+.center-in {
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ display: flex;
+}
+
+.top-title {
+ color: #fff;
+ font-size: 20px !important;
+ margin-top: 5px;
+}
+
+.user-info {
+ width: 150%;
+ position: relative;
+ left: -25%;
+ padding-left: 25%;
+ border-bottom-left-radius: 50%;
+ border-bottom-right-radius: 50%;
+ padding-bottom: 1.5rem;
+}
+
+.text-white {
+ color: #ffffff !important;
+}
+
+.text-light {
+ color: #999 !important;
+}
+
+.bg-white {
+ background-color: #ffffff;
+}
+.demos-header {
+ padding: 20px 0;
+ background-color: #03a9f4;
+}
+.demos-title {
+ text-align: center;
+ font-size: 40px;
+ color: #fff;
+ font-weight: 400;
+ margin: 0 15%;
+}
+.detail-title{
+ text-align: center;
+ font-size: 16px;
+ color: #fff;
+}
diff --git a/oauth/src/main/resources/static/css/jquery-weui.min.css b/oauth/src/main/resources/static/css/jquery-weui.min.css
new file mode 100755
index 0000000..145c336
--- /dev/null
+++ b/oauth/src/main/resources/static/css/jquery-weui.min.css
@@ -0,0 +1,6 @@
+/**
+* jQuery WeUI V1.2.1
+* By 言川
+* http://lihongxun945.github.io/jquery-weui/
+ */
+.preloader{width:20px;height:20px;-webkit-transform-origin:50%;transform-origin:50%;-webkit-animation:preloader-spin 1s steps(12,end) infinite;animation:preloader-spin 1s steps(12,end) infinite}.preloader:after{display:block;width:100%;height:100%;content:"";background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%}@-webkit-keyframes preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}label>*{pointer-events:none}html{font-size:20px}body{font-size:16px}@media only screen and (min-width:400px){html{font-size:21.33px!important}}@media only screen and (min-width:414px){html{font-size:22.08px!important}}@media only screen and (min-width:480px){html{font-size:25.6px!important}}.weui_navbar{z-index:10}.weui-mask,.weui-popup-container,.weui-popup-overlay{z-index:1000}.weui-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-lines:multiple;-moz-box-lines:multiple;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.weui-row>[class*=col-]{box-sizing:border-box}.weui-row .col-auto{width:100%}.weui-row .weui-col-100{width:100%;width:calc((100% - 15px*0)/ 1)}.weui-row.weui-no-gutter .weui-col-100{width:100%}.weui-row .weui-col-95{width:95%;width:calc((100% - 15px*.05263157894736836)/ 1.0526315789473684)}.weui-row.weui-no-gutter .weui-col-95{width:95%}.weui-row .weui-col-90{width:90%;width:calc((100% - 15px*.11111111111111116)/ 1.1111111111111112)}.weui-row.weui-no-gutter .weui-col-90{width:90%}.weui-row .weui-col-85{width:85%;width:calc((100% - 15px*.17647058823529416)/ 1.1764705882352942)}.weui-row.weui-no-gutter .weui-col-85{width:85%}.weui-row .weui-col-80{width:80%;width:calc((100% - 15px*.25)/ 1.25)}.weui-row.weui-no-gutter .weui-col-80{width:80%}.weui-row .weui-col-75{width:75%;width:calc((100% - 15px*.33333333333333326)/ 1.3333333333333333)}.weui-row.weui-no-gutter .weui-col-75{width:75%}.weui-row .weui-col-66{width:66.66666666666666%;width:calc((100% - 15px*.5000000000000002)/ 1.5000000000000002)}.weui-row.weui-no-gutter .weui-col-66{width:66.66666666666666%}.weui-row .weui-col-60{width:60%;width:calc((100% - 15px*.6666666666666667)/ 1.6666666666666667)}.weui-row.weui-no-gutter .weui-col-60{width:60%}.weui-row .weui-col-50{width:50%;width:calc((100% - 15px*1)/ 2)}.weui-row.weui-no-gutter .weui-col-50{width:50%}.weui-row .weui-col-40{width:40%;width:calc((100% - 15px*1.5)/ 2.5)}.weui-row.weui-no-gutter .weui-col-40{width:40%}.weui-row .weui-col-33{width:33.333333333333336%;width:calc((100% - 15px*2)/ 3)}.weui-row.weui-no-gutter .weui-col-33{width:33.333333333333336%}.weui-row .weui-col-25{width:25%;width:calc((100% - 15px*3)/ 4)}.weui-row.weui-no-gutter .weui-col-25{width:25%}.weui-row .weui-col-20{width:20%;width:calc((100% - 15px*4)/ 5)}.weui-row.weui-no-gutter .weui-col-20{width:20%}.weui-row .weui-col-15{width:15%;width:calc((100% - 15px*5.666666666666667)/ 6.666666666666667)}.weui-row.weui-no-gutter .weui-col-15{width:15%}.weui-row .weui-col-10{width:10%;width:calc((100% - 15px*9)/ 10)}.weui-row.weui-no-gutter .weui-col-10{width:10%}.weui-row .weui-col-5{width:5%;width:calc((100% - 15px*19)/ 20)}.weui-row.weui-no-gutter .weui-col-5{width:5%}.weui-row .weui-col-auto:nth-last-child(1),.weui-row .weui-col-auto:nth-last-child(1)~.weui-col-auto{width:100%;width:calc((100% - 15px*0)/ 1)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(1),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(1)~.weui-col-auto{width:100%}.weui-row .weui-col-auto:nth-last-child(2),.weui-row .weui-col-auto:nth-last-child(2)~.weui-col-auto{width:50%;width:calc((100% - 15px*1)/ 2)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(2),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(2)~.weui-col-auto{width:50%}.weui-row .weui-col-auto:nth-last-child(3),.weui-row .weui-col-auto:nth-last-child(3)~.weui-col-auto{width:33.33333333%;width:calc((100% - 15px*2)/ 3)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(3),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(3)~.weui-col-auto{width:33.33333333%}.weui-row .weui-col-auto:nth-last-child(4),.weui-row .weui-col-auto:nth-last-child(4)~.weui-col-auto{width:25%;width:calc((100% - 15px*3)/ 4)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(4),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(4)~.weui-col-auto{width:25%}.weui-row .weui-col-auto:nth-last-child(5),.weui-row .weui-col-auto:nth-last-child(5)~.weui-col-auto{width:20%;width:calc((100% - 15px*4)/ 5)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(5),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(5)~.weui-col-auto{width:20%}.weui-row .weui-col-auto:nth-last-child(6),.weui-row .weui-col-auto:nth-last-child(6)~.weui-col-auto{width:16.66666667%;width:calc((100% - 15px*5)/ 6)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(6),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(6)~.weui-col-auto{width:16.66666667%}.weui-row .weui-col-auto:nth-last-child(7),.weui-row .weui-col-auto:nth-last-child(7)~.weui-col-auto{width:14.28571429%;width:calc((100% - 15px*6)/ 7)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(7),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(7)~.weui-col-auto{width:14.28571429%}.weui-row .weui-col-auto:nth-last-child(8),.weui-row .weui-col-auto:nth-last-child(8)~.weui-col-auto{width:12.5%;width:calc((100% - 15px*7)/ 8)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(8),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(8)~.weui-col-auto{width:12.5%}.weui-row .weui-col-auto:nth-last-child(9),.weui-row .weui-col-auto:nth-last-child(9)~.weui-col-auto{width:11.11111111%;width:calc((100% - 15px*8)/ 9)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(9),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(9)~.weui-col-auto{width:11.11111111%}.weui-row .weui-col-auto:nth-last-child(10),.weui-row .weui-col-auto:nth-last-child(10)~.weui-col-auto{width:10%;width:calc((100% - 15px*9)/ 10)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(10),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(10)~.weui-col-auto{width:10%}.weui-row .weui-col-auto:nth-last-child(11),.weui-row .weui-col-auto:nth-last-child(11)~.weui-col-auto{width:9.09090909%;width:calc((100% - 15px*10)/ 11)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(11),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(11)~.weui-col-auto{width:9.09090909%}.weui-row .weui-col-auto:nth-last-child(12),.weui-row .weui-col-auto:nth-last-child(12)~.weui-col-auto{width:8.33333333%;width:calc((100% - 15px*11)/ 12)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(12),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(12)~.weui-col-auto{width:8.33333333%}.weui-row .weui-col-auto:nth-last-child(13),.weui-row .weui-col-auto:nth-last-child(13)~.weui-col-auto{width:7.69230769%;width:calc((100% - 15px*12)/ 13)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(13),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(13)~.weui-col-auto{width:7.69230769%}.weui-row .weui-col-auto:nth-last-child(14),.weui-row .weui-col-auto:nth-last-child(14)~.weui-col-auto{width:7.14285714%;width:calc((100% - 15px*13)/ 14)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(14),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(14)~.weui-col-auto{width:7.14285714%}.weui-row .weui-col-auto:nth-last-child(15),.weui-row .weui-col-auto:nth-last-child(15)~.weui-col-auto{width:6.66666667%;width:calc((100% - 15px*14)/ 15)}.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(15),.weui-row.weui-no-gutter .weui-col-auto:nth-last-child(15)~.weui-col-auto{width:6.66666667%}@media all and (min-width:768px){.row .tablet-100{width:100%;width:calc((100% - 15px*0)/ 1)}.row.no-gutter .tablet-100{width:100%}.row .tablet-95{width:95%;width:calc((100% - 15px*.05263157894736836)/ 1.0526315789473684)}.row.no-gutter .tablet-95{width:95%}.row .tablet-90{width:90%;width:calc((100% - 15px*.11111111111111116)/ 1.1111111111111112)}.row.no-gutter .tablet-90{width:90%}.row .tablet-85{width:85%;width:calc((100% - 15px*.17647058823529416)/ 1.1764705882352942)}.row.no-gutter .tablet-85{width:85%}.row .tablet-80{width:80%;width:calc((100% - 15px*.25)/ 1.25)}.row.no-gutter .tablet-80{width:80%}.row .tablet-75{width:75%;width:calc((100% - 15px*.33333333333333326)/ 1.3333333333333333)}.row.no-gutter .tablet-75{width:75%}.row .tablet-66{width:66.66666666666666%;width:calc((100% - 15px*.5000000000000002)/ 1.5000000000000002)}.row.no-gutter .tablet-66{width:66.66666666666666%}.row .tablet-60{width:60%;width:calc((100% - 15px*.6666666666666667)/ 1.6666666666666667)}.row.no-gutter .tablet-60{width:60%}.row .tablet-50{width:50%;width:calc((100% - 15px*1)/ 2)}.row.no-gutter .tablet-50{width:50%}.row .tablet-40{width:40%;width:calc((100% - 15px*1.5)/ 2.5)}.row.no-gutter .tablet-40{width:40%}.row .tablet-33{width:33.333333333333336%;width:calc((100% - 15px*2)/ 3)}.row.no-gutter .tablet-33{width:33.333333333333336%}.row .tablet-25{width:25%;width:calc((100% - 15px*3)/ 4)}.row.no-gutter .tablet-25{width:25%}.row .tablet-20{width:20%;width:calc((100% - 15px*4)/ 5)}.row.no-gutter .tablet-20{width:20%}.row .tablet-15{width:15%;width:calc((100% - 15px*5.666666666666667)/ 6.666666666666667)}.row.no-gutter .tablet-15{width:15%}.row .tablet-10{width:10%;width:calc((100% - 15px*9)/ 10)}.row.no-gutter .tablet-10{width:10%}.row .tablet-5{width:5%;width:calc((100% - 15px*19)/ 20)}.row.no-gutter .tablet-5{width:5%}.row .tablet-auto:nth-last-child(1),.row .tablet-auto:nth-last-child(1)~.col-auto{width:100%;width:calc((100% - 15px*0)/ 1)}.row.no-gutter .tablet-auto:nth-last-child(1),.row.no-gutter .tablet-auto:nth-last-child(1)~.tablet-auto{width:100%}.row .tablet-auto:nth-last-child(2),.row .tablet-auto:nth-last-child(2)~.col-auto{width:50%;width:calc((100% - 15px*1)/ 2)}.row.no-gutter .tablet-auto:nth-last-child(2),.row.no-gutter .tablet-auto:nth-last-child(2)~.tablet-auto{width:50%}.row .tablet-auto:nth-last-child(3),.row .tablet-auto:nth-last-child(3)~.col-auto{width:33.33333333%;width:calc((100% - 15px*2)/ 3)}.row.no-gutter .tablet-auto:nth-last-child(3),.row.no-gutter .tablet-auto:nth-last-child(3)~.tablet-auto{width:33.33333333%}.row .tablet-auto:nth-last-child(4),.row .tablet-auto:nth-last-child(4)~.col-auto{width:25%;width:calc((100% - 15px*3)/ 4)}.row.no-gutter .tablet-auto:nth-last-child(4),.row.no-gutter .tablet-auto:nth-last-child(4)~.tablet-auto{width:25%}.row .tablet-auto:nth-last-child(5),.row .tablet-auto:nth-last-child(5)~.col-auto{width:20%;width:calc((100% - 15px*4)/ 5)}.row.no-gutter .tablet-auto:nth-last-child(5),.row.no-gutter .tablet-auto:nth-last-child(5)~.tablet-auto{width:20%}.row .tablet-auto:nth-last-child(6),.row .tablet-auto:nth-last-child(6)~.col-auto{width:16.66666667%;width:calc((100% - 15px*5)/ 6)}.row.no-gutter .tablet-auto:nth-last-child(6),.row.no-gutter .tablet-auto:nth-last-child(6)~.tablet-auto{width:16.66666667%}.row .tablet-auto:nth-last-child(7),.row .tablet-auto:nth-last-child(7)~.col-auto{width:14.28571429%;width:calc((100% - 15px*6)/ 7)}.row.no-gutter .tablet-auto:nth-last-child(7),.row.no-gutter .tablet-auto:nth-last-child(7)~.tablet-auto{width:14.28571429%}.row .tablet-auto:nth-last-child(8),.row .tablet-auto:nth-last-child(8)~.col-auto{width:12.5%;width:calc((100% - 15px*7)/ 8)}.row.no-gutter .tablet-auto:nth-last-child(8),.row.no-gutter .tablet-auto:nth-last-child(8)~.tablet-auto{width:12.5%}.row .tablet-auto:nth-last-child(9),.row .tablet-auto:nth-last-child(9)~.col-auto{width:11.11111111%;width:calc((100% - 15px*8)/ 9)}.row.no-gutter .tablet-auto:nth-last-child(9),.row.no-gutter .tablet-auto:nth-last-child(9)~.tablet-auto{width:11.11111111%}.row .tablet-auto:nth-last-child(10),.row .tablet-auto:nth-last-child(10)~.col-auto{width:10%;width:calc((100% - 15px*9)/ 10)}.row.no-gutter .tablet-auto:nth-last-child(10),.row.no-gutter .tablet-auto:nth-last-child(10)~.tablet-auto{width:10%}.row .tablet-auto:nth-last-child(11),.row .tablet-auto:nth-last-child(11)~.col-auto{width:9.09090909%;width:calc((100% - 15px*10)/ 11)}.row.no-gutter .tablet-auto:nth-last-child(11),.row.no-gutter .tablet-auto:nth-last-child(11)~.tablet-auto{width:9.09090909%}.row .tablet-auto:nth-last-child(12),.row .tablet-auto:nth-last-child(12)~.col-auto{width:8.33333333%;width:calc((100% - 15px*11)/ 12)}.row.no-gutter .tablet-auto:nth-last-child(12),.row.no-gutter .tablet-auto:nth-last-child(12)~.tablet-auto{width:8.33333333%}.row .tablet-auto:nth-last-child(13),.row .tablet-auto:nth-last-child(13)~.col-auto{width:7.69230769%;width:calc((100% - 15px*12)/ 13)}.row.no-gutter .tablet-auto:nth-last-child(13),.row.no-gutter .tablet-auto:nth-last-child(13)~.tablet-auto{width:7.69230769%}.row .tablet-auto:nth-last-child(14),.row .tablet-auto:nth-last-child(14)~.col-auto{width:7.14285714%;width:calc((100% - 15px*13)/ 14)}.row.no-gutter .tablet-auto:nth-last-child(14),.row.no-gutter .tablet-auto:nth-last-child(14)~.tablet-auto{width:7.14285714%}.row .tablet-auto:nth-last-child(15),.row .tablet-auto:nth-last-child(15)~.col-auto{width:6.66666667%;width:calc((100% - 15px*14)/ 15)}.row.no-gutter .tablet-auto:nth-last-child(15),.row.no-gutter .tablet-auto:nth-last-child(15)~.tablet-auto{width:6.66666667%}}.weui-cell__hd img{display:block;margin-right:5px}.weui-cell_swiped .weui-cell__bd{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.swipeout-touching .weui-cell__bd{-webkit-transition:none;transition:none}.weui-dialog,.weui-toast{-webkit-transition-duration:.2s;transition-duration:.2s;opacity:0;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:0 0;transform-origin:0 0;visibility:hidden;margin:0;top:45%;z-index:2000}.weui-dialog .weui-dialog__btn.default,.weui-toast .weui-dialog__btn.default{color:#5f646e}.weui-dialog .weui-dialog__btn+.weui-dialog__btn,.weui-toast .weui-dialog__btn+.weui-dialog__btn{position:relative}.weui-dialog .weui-dialog__btn+.weui-dialog__btn:after,.weui-toast .weui-dialog__btn+.weui-dialog__btn:after{content:" ";position:absolute;left:0;top:0;width:1px;height:100%;border-left:1px solid #D5D5D6;color:#D5D5D6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-dialog.weui-dialog--visible,.weui-dialog.weui-toast--visible,.weui-toast.weui-dialog--visible,.weui-toast.weui-toast--visible{opacity:1;visibility:visible}.weui-toast_forbidden{color:#F76260}.weui-toast_cancel .weui-icon-toast:before{content:"\EA0D"}.weui-toast_forbidden .weui-icon-toast:before{content:"\EA0B";color:#F76260}.weui-toast_text{min-height:1em;width:auto;height:45px;border-radius:25px;margin-left:0;-webkit-transform:scale(.9) translate3d(-50%,0,0);transform:scale(.9) translate3d(-50%,0,0);-webkit-transform-origin:left;transform-origin:left}.weui-toast_text.weui-toast--visible{-webkit-transform:scale(1) translate3d(-50%,0,0);transform:scale(1) translate3d(-50%,0,0)}.weui-toast_text .weui-icon-toast{display:none}.weui-toast_text .weui-toast_content{margin:10px 15px}.weui-mask{opacity:0;-webkit-transition-duration:.3s;transition-duration:.3s;visibility:hidden}.weui-mask.weui-mask--visible{opacity:1;visibility:visible}.weui-prompt-input{padding:4px 6px;border:1px solid #ccc;box-sizing:border-box;height:2em;width:80%;margin-top:10px}.weui-pull-to-refresh{margin-top:-50px;-webkit-transition:-webkit-transform .4s;transition:-webkit-transform .4s;transition:transform .4s;transition:transform .4s,-webkit-transform .4s}.weui-pull-to-refresh.refreshing{-webkit-transform:translate3d(0,50px,0);transform:translate3d(0,50px,0)}.weui-pull-to-refresh.touching{-webkit-transition-duration:0s;transition-duration:0s}.weui-pull-to-refresh__layer{height:30px;line-height:30px;padding:10px;text-align:center}.weui-pull-to-refresh__layer .down{display:inline-block}.weui-pull-to-refresh__layer .refresh,.weui-pull-to-refresh__layer .up{display:none}.weui-pull-to-refresh__layer .weui-pull-to-refresh__arrow{display:inline-block;z-index:10;width:20px;height:20px;margin-right:4px;vertical-align:-4px;background:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2026%2040'%3E%3Cpolygon%20points%3D'9%2C22%209%2C0%2017%2C0%2017%2C22%2026%2C22%2013.5%2C40%200%2C22'%20fill%3D'%238c8c8c'%2F%3E%3C%2Fsvg%3E") center no-repeat;background-size:13px 20px;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transform:rotate(0) translate3d(0,0,0);transform:rotate(0) translate3d(0,0,0)}.weui-pull-to-refresh__layer .weui-pull-to-refresh__preloader{display:none;vertical-align:-4px;margin-right:4px;width:20px;height:20px;-webkit-transform-origin:50%;transform-origin:50%;-webkit-animation:preloader-spin 1s steps(12,end) infinite;animation:preloader-spin 1s steps(12,end) infinite}.weui-pull-to-refresh__layer .weui-pull-to-refresh__preloader:after{display:block;width:100%;height:100%;content:"";background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%}.pull-up .weui-pull-to-refresh__layer .down,.refreshing .weui-pull-to-refresh__layer .down{display:none}.pull-up .weui-pull-to-refresh__layer .weui-pull-to-refresh__arrow{display:inline-block;-webkit-transform:rotate(180deg) translate3d(0,0,0);transform:rotate(180deg) translate3d(0,0,0)}.pull-down .weui-pull-to-refresh__layer .down,.pull-down .weui-pull-to-refresh__layer .weui-pull-to-refresh__arrow,.pull-up .weui-pull-to-refresh__layer .up{display:inline-block}.refreshing .weui-pull-to-refresh__layer .weui-pull-to-refresh__arrow{display:none}.refreshing .weui-pull-to-refresh__layer .refresh,.refreshing .weui-pull-to-refresh__layer .weui-pull-to-refresh__preloader{display:inline-block}@keyframes preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.weui-tab__bd-item.weui-pull-to-refresh{position:absolute;top:50px}.toolbar,.weui-tabbar__item{position:relative}.weui-tabbar__item.weui-bar__item--on .weui-tabbar__label{color:#04BE02}.weui-navbar__item{color:#888}.weui-navbar__item.weui-bar__item--on{color:#666;background-color:#f1f1f1}.toolbar,.toolbar .title{font-size:.85rem;color:#3d4145;width:100%}.weui-tab__bd{box-sizing:border-box;height:100%}.weui-tab__bd .weui-tab__bd-item{display:none;height:100%;overflow:auto}.weui-tab__bd .weui-tab__bd-item.weui-tab__bd-item--active{display:block}.weui-navbar+.weui-tab__bd{padding-top:50px}.toolbar{line-height:1.5;background:#f7f7f8}.toolbar:before{content:'';position:absolute;left:0;top:0;bottom:auto;right:auto;height:1px;width:100%;background-color:#d9d9d9;display:block;z-index:15;-webkit-transform-origin:50% 0;transform-origin:50% 0}@media only screen and (-webkit-min-device-pixel-ratio:2){.toolbar:before{-webkit-transform:scaleY(.5);transform:scaleY(.5)}}@media only screen and (-webkit-min-device-pixel-ratio:3){.toolbar:before{-webkit-transform:scaleY(.33);transform:scaleY(.33)}}.toolbar .toolbar-inner{height:2.2rem;display:-webkit-box;display:-ms-flexbox;display:flex;text-align:center}.toolbar .title{position:absolute;display:block;padding:0;font-weight:400;line-height:2.2rem;text-align:center;white-space:nowrap}.toolbar .picker-button{position:absolute;right:0;box-sizing:border-box;height:2.2rem;line-height:2.2rem;color:#04BE02;z-index:1;padding:0 .5rem}.weui-picker-modal{width:100%;position:absolute;bottom:0;text-align:center;border-radius:0;opacity:.6;color:#3d4145;-webkit-transition-duration:.3s;transition-duration:.3s;height:13rem;background:#EFEFF4;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform}.weui-picker-modal.picker-modal-inline{height:10.8rem;opacity:1;position:static;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.weui-picker-modal.picker-modal-inline .toolbar{display:none}.weui-picker-modal.picker-columns-single .picker-items-col{width:100%}.weui-picker-modal.weui-picker-modal-visible{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.weui-picker-modal .picker-modal-inner{position:relative;height:10.8rem}.weui-picker-modal .picker-columns{width:100%;height:13rem;z-index:11500}.popover .weui-picker-modal .picker-columns,.weui-picker-modal .picker-columns.picker-modal-inline{height:10rem}@media (orientation:landscape) and (max-height:415px){.weui-picker-modal .picker-columns:not(.picker-modal-inline){height:10rem}}.weui-picker-modal .popover.popover-picker-columns{width:14rem}.weui-picker-modal .picker-items{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;padding:0;text-align:right;font-size:1rem;font-weight:400;-webkit-mask-box-image:-webkit-linear-gradient(bottom,transparent,transparent 5%,#fff 20%,#fff 80%,transparent 95%,transparent);-webkit-mask-box-image:linear-gradient(to top,transparent,transparent 5%,#fff 20%,#fff 80%,transparent 95%,transparent)}.weui-picker-modal .bar+.picker-items{height:10.8rem}.weui-picker-modal .picker-items-col{overflow:hidden;position:relative;max-height:100%}.weui-picker-modal .picker-items-col.picker-items-col-left{text-align:left}.weui-picker-modal .picker-items-col.picker-items-col-center{text-align:center}.weui-picker-modal .picker-items-col.picker-items-col-right{text-align:right}.weui-picker-modal .picker-items-col.picker-items-col-divider{color:#3d4145;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.weui-picker-modal .picker-items-col-wrapper{-webkit-transition:.3s;transition:.3s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.weui-picker-modal .picker-item{height:32px;line-height:32px;padding:0 10px;white-space:nowrap;position:relative;overflow:hidden;text-overflow:ellipsis;color:#9b9b9b;left:0;top:0;width:100%;box-sizing:border-box;-webkit-transition:.3s;transition:.3s}.picker-items-col-absolute .weui-picker-modal .picker-item{position:absolute}.weui-picker-modal .picker-item.picker-item-far{pointer-events:none}.weui-picker-modal .picker-item.picker-selected{color:#3d4145;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transform:rotateX(0);transform:rotateX(0)}.weui-picker-modal .picker-center-highlight{height:32px;box-sizing:border-box;position:absolute;left:0;width:100%;top:50%;margin-top:-16px;pointer-events:none}.weui-picker-modal .picker-center-highlight:after,.weui-picker-modal .picker-center-highlight:before{content:'';position:absolute;right:auto;height:1px;background-color:#D9D9D9;display:block;z-index:15;left:0;width:100%}.weui-picker-modal .picker-center-highlight:before{top:0;bottom:auto;-webkit-transform-origin:50% 0;transform-origin:50% 0}@media only screen and (-webkit-min-device-pixel-ratio:2){.weui-picker-modal .picker-center-highlight:before{-webkit-transform:scaleY(.5);transform:scaleY(.5)}}@media only screen and (-webkit-min-device-pixel-ratio:3){.weui-picker-modal .picker-center-highlight:before{-webkit-transform:scaleY(.33);transform:scaleY(.33)}}.weui-picker-modal .picker-center-highlight:after{bottom:0;top:auto;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}@media only screen and (-webkit-min-device-pixel-ratio:2){.weui-picker-modal .picker-center-highlight:after{-webkit-transform:scaleY(.5);transform:scaleY(.5)}}@media only screen and (-webkit-min-device-pixel-ratio:3){.weui-picker-modal .picker-center-highlight:after{-webkit-transform:scaleY(.33);transform:scaleY(.33)}}.weui-picker-modal .picker-3d .picker-items{overflow:hidden;-webkit-perspective:1200px;perspective:1200px}.weui-picker-modal .picker-3d .picker-item,.weui-picker-modal .picker-3d .picker-items-col,.weui-picker-modal .picker-3d .picker-items-col-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.weui-picker-modal .picker-3d .picker-items-col{overflow:visible}.weui-picker-modal .picker-3d .picker-item{-webkit-transform-origin:center center -110px;transform-origin:center center -110px;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.weui-picker-container,.weui-picker-overlay{position:fixed;bottom:0;left:0;right:0;height:0;width:100%;z-index:1000}.picker-calendar-row:after,.picker-calendar-week-days:after{content:'';z-index:15;left:0;right:auto}.city-picker .picker-items-col{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:7rem}.weui-picker-container .weui-cells{margin:0;text-align:left}.datetime-picker .picker-item{text-overflow:initial}.weui-select-modal{height:auto}.weui-select-modal .weui-cells{margin:0;text-align:left;overflow-y:auto;overflow-x:hidden;max-height:16rem}.weui-select-modal .weui-cells:after{display:none}.weui-picker-calendar{background:#fff;height:15rem;width:100%;overflow:hidden}.weui-picker-calendar .picker-modal-inner{overflow:hidden;height:12.8rem}.picker-calendar-week-days{height:.9rem;background:#f7f7f8;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:11px;box-sizing:border-box;position:relative}.picker-calendar-week-days:after{position:absolute;bottom:0;top:auto;height:1px;width:100%;background-color:#c4c4c4;display:block;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}@media only screen and (-webkit-min-device-pixel-ratio:2){.picker-calendar-week-days:after{-webkit-transform:scaleY(.5);transform:scaleY(.5)}}@media only screen and (-webkit-min-device-pixel-ratio:3){.picker-calendar-week-days:after{-webkit-transform:scaleY(.33);transform:scaleY(.33)}}.picker-calendar-week-days .picker-calendar-week-day{-webkit-flex-shrink:1;-ms-flex:0 1 auto;-ms-flex-negative:1;flex-shrink:1;width:14.28571429%;width:calc(100% / 7);line-height:17px;text-align:center}.picker-calendar-week-days+.picker-calendar-months{height:11.9rem}.picker-calendar-months{width:100%;height:100%;overflow:hidden;position:relative}.picker-calendar-months-wrapper{position:relative;width:100%;height:100%;-webkit-transition:.3s;transition:.3s}.picker-calendar-month{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;width:100%;height:100%;position:absolute;left:0;top:0}.picker-calendar-row{height:16.66666667%;height:calc(100% / 6);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-flex-shrink:1;-ms-flex:0 1 auto;-ms-flex-negative:1;flex-shrink:1;width:100%;position:relative}.picker-calendar-row:after{position:absolute;bottom:0;top:auto;height:1px;width:100%;background-color:#ccc;display:block;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}@media only screen and (-webkit-min-device-pixel-ratio:2){.picker-calendar-row:after{-webkit-transform:scaleY(.5);transform:scaleY(.5)}}@media only screen and (-webkit-min-device-pixel-ratio:3){.picker-calendar-row:after{-webkit-transform:scaleY(.33);transform:scaleY(.33)}}.weui-picker-modal .picker-calendar-row:last-child:after{display:none}.picker-calendar-day{-webkit-flex-shrink:1;-ms-flex:0 1 auto;-ms-flex-negative:1;flex-shrink:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box;width:14.28571429%;width:calc(100% / 7);text-align:center;color:#3d4145;font-size:15px;cursor:pointer}.picker-calendar-day.picker-calendar-day-next,.picker-calendar-day.picker-calendar-day-prev{color:#ccc}.picker-calendar-day.picker-calendar-day-disabled{color:#d4d4d4;cursor:auto}.picker-calendar-day.picker-calendar-day-today span{background:#e3e3e3}.picker-calendar-day.picker-calendar-day-selected span{background:#04BE02;color:#fff}.picker-calendar-day span{display:inline-block;border-radius:100%;width:30px;height:30px;line-height:30px}.picker-calendar-month-picker,.picker-calendar-year-picker{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:50%;max-width:200px;-webkit-flex-shrink:10;-ms-flex-negative:10;flex-shrink:10}.picker-calendar-month-picker span,.picker-calendar-year-picker span{-webkit-flex-shrink:1;-ms-flex:0 1 auto;-ms-flex-negative:1;flex-shrink:1;position:relative;overflow:hidden;text-overflow:ellipsis}.picker-calendar.picker-modal-inline .picker-calendar-week-days,.popover .picker-calendar .picker-calendar-week-days{background:0 0}.swiper-button-next,.swiper-button-prev,i.icon{background-position:center;background-repeat:no-repeat}.picker-calendar.picker-modal-inline .picker-calendar-week-days:after,.picker-calendar.picker-modal-inline .picker-calendar-week-days:before,.picker-calendar.picker-modal-inline .toolbar:after,.picker-calendar.picker-modal-inline .toolbar:before,.popover .picker-calendar .picker-calendar-week-days:after,.popover .picker-calendar .picker-calendar-week-days:before,.popover .picker-calendar .toolbar:after,.popover .picker-calendar .toolbar:before{display:none}.picker-calendar.picker-modal-inline .picker-calendar-week-days~.picker-calendar-months:before,.picker-calendar.picker-modal-inline .toolbar~.picker-modal-inner .picker-calendar-months:before,.popover .picker-calendar .picker-calendar-week-days~.picker-calendar-months:before,.popover .picker-calendar .toolbar~.picker-modal-inner .picker-calendar-months:before{content:'';position:absolute;left:0;top:0;bottom:auto;right:auto;height:1px;width:100%;background-color:#c4c4c4;display:block;z-index:15;-webkit-transform-origin:50% 0;transform-origin:50% 0}@media only screen and (-webkit-min-device-pixel-ratio:2){.picker-calendar.picker-modal-inline .picker-calendar-week-days~.picker-calendar-months:before,.picker-calendar.picker-modal-inline .toolbar~.picker-modal-inner .picker-calendar-months:before,.popover .picker-calendar .picker-calendar-week-days~.picker-calendar-months:before,.popover .picker-calendar .toolbar~.picker-modal-inner .picker-calendar-months:before{-webkit-transform:scaleY(.5);transform:scaleY(.5)}}@media only screen and (-webkit-min-device-pixel-ratio:3){.picker-calendar.picker-modal-inline .picker-calendar-week-days~.picker-calendar-months:before,.picker-calendar.picker-modal-inline .toolbar~.picker-modal-inner .picker-calendar-months:before,.popover .picker-calendar .picker-calendar-week-days~.picker-calendar-months:before,.popover .picker-calendar .toolbar~.picker-modal-inner .picker-calendar-months:before{-webkit-transform:scaleY(.33);transform:scaleY(.33)}}.picker-calendar-month-picker,.picker-calendar-year-picker{display:block;line-height:2.2rem;-webkit-box-flex:1;-ms-flex:1;flex:1}.picker-calendar-month-picker a.icon-only,.picker-calendar-year-picker a.icon-only{min-width:36px;float:left;width:25%;height:2.2rem;line-height:2rem}.picker-calendar-month-picker .current-month-value,.picker-calendar-month-picker .current-year-value,.picker-calendar-year-picker .current-month-value,.picker-calendar-year-picker .current-year-value{float:left;width:50%;height:2.2rem}i.icon{display:inline-block;vertical-align:middle;background-size:100% auto;font-style:normal;position:relative}i.icon.icon-next,i.icon.icon-prev{width:.75rem;height:.75rem}.swiper-slide,.swiper-wrapper{width:100%;height:100%;position:relative}i.icon.icon-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%2304BE02'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}i.icon.icon-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%2304BE02'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.swiper-container{margin:0 auto;position:relative;overflow:hidden;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.swiper-container-multirow>.swiper-wrapper{-webkit-box-lines:multiple;-moz-box-lines:multiple;-ms-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex:0 0 auto;-ms-flex-negative:0;flex-shrink:0}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:-webkit-transform,height;-webkit-transition-property:height,-webkit-transform;transition-property:height,-webkit-transform;transition-property:transform,height;transition-property:transform,height,-webkit-transform}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-wp8-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;background-size:27px 44px}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");left:10px;right:auto}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");right:10px;left:auto}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s;transition:.3s;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-moz-appearance:none;-ms-appearance:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-white .swiper-pagination-bullet{background:#fff}.swiper-pagination-bullet-active{opacity:1;background:#04BE02}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:5px 0;display:block}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5px}.swiper-pagination-progress{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progress .swiper-pagination-progressbar{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar{-webkit-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progress{width:100%;height:4px;left:0;top:0}.swiper-container-vertical>.swiper-pagination-progress{width:4px;height:100%;left:0;top:0}.swiper-pagination-progress.swiper-pagination-white{background:rgba(255,255,255,.5)}.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar{background:#fff}.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar{background:#000}.swiper-container-3d{-webkit-perspective:1200px;-o-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-coverflow .swiper-wrapper,.swiper-container-flip .swiper-wrapper{-ms-perspective:1200px}.swiper-container-cube,.swiper-container-flip{overflow:visible}.swiper-container-cube .swiper-slide,.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-cube .swiper-slide .swiper-slide,.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active,.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top,.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-slide{visibility:hidden;-webkit-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;transform-origin:50%;-webkit-animation:swiper-preloader-spin 1s steps(12,end) infinite;animation:swiper-preloader-spin 1s steps(12,end) infinite}.swiper-lazy-preloader:after{display:block;content:"";width:100%;height:100%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:50%;background-size:100%;background-repeat:no-repeat}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}@-webkit-keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg)}}@keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.weui-actionsheet{z-index:10000}.weui-popup__container,.weui-popup__overlay{position:fixed;bottom:0;left:0;right:0;width:100%;height:100%;z-index:10}.weui-popup__overlay{background-color:rgba(0,0,0,.6);opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s}.weui-popup__container{display:none}.weui-popup__container.weui-popup__container--visible{display:block}.weui-popup__container .weui-cells{margin:0;text-align:left}.weui-popup__modal{width:100%;position:absolute;z-index:100;bottom:0;border-radius:0;opacity:.6;color:#3d4145;-webkit-transition-duration:.3s;transition-duration:.3s;height:100%;background:#EFEFF4;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;overflow-x:hidden;overflow-y:auto}.popup-bottom .weui-popup__modal{height:auto}.weui-popup__modal .toolbar{position:absolute;left:0;top:0;right:0;z-index:1}.weui-popup__modal .modal-content{height:100%;padding-top:2.2rem;overflow:auto;box-sizing:border-box}.weui-popup__container--visible .weui-popup__overlay{opacity:1}.weui-popup__container--visible .weui-popup__modal{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.weui-notification{position:fixed;width:100%;min-height:3.4rem;top:-2rem;padding-top:2rem;left:0;right:0;z-index:9999;background-color:rgba(0,0,0,.85);color:#fff;font-size:.65rem;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);-webkit-transition:.4s;transition:.4s}.weui-notification.weui-notification--in{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.weui-notification.weui-notification--touching{-webkit-transition-duration:0s;transition-duration:0s}.weui-notification .weui-notification__inner{padding:.4rem .6rem 1rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.weui-notification .weui-notification__content{width:100%;margin:0 .4rem}.weui-notification .weui-notification__title{font-weight:700}.weui-notification .weui-notification__text{line-height:1}.weui-notification .weui-notification__media{height:1rem;width:1rem}.weui-notification .weui-notification__media img{width:100%}.weui-notification .weui-notification__handle-bar{position:absolute;bottom:.2rem;left:50%;-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0);width:2rem;height:.3rem;border-radius:.15rem;background:#fff;opacity:.5}.weui-photo-browser-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;display:none;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s}.weui-photo-browser-modal.weui-photo-browser-modal-visible{opacity:1}.weui-photo-browser-modal .swiper-container{height:100%;-webkit-transform:scale(.2);transform:scale(.2);-webkit-transition:-webkit-transform .5s;transition:-webkit-transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s}.weui-photo-browser-modal .swiper-container .swiper-pagination-bullet{background:#fff;visibility:hidden}.weui-photo-browser-modal .swiper-container.swiper-container-visible{-webkit-transform:scale(1);transform:scale(1)}.weui-photo-browser-modal .swiper-container.swiper-container-visible .swiper-pagination-bullet{visibility:visible;-webkit-transition-property:visibility;transition-property:visibility;-webkit-transition-delay:.5s;transition-delay:.5s}.weui-photo-browser-modal .swiper-container .swiper-pagination{bottom:10px;left:0;width:100%}.weui-photo-browser-modal .photo-container{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden}.weui-photo-browser-modal .photo-container img{max-width:100%;margin-top:-30px}.weui-photo-browser-modal .caption{position:absolute;bottom:40px;left:0;right:0;color:#fff;text-align:center;padding:0 12px;min-height:3rem;font-size:14px;z-index:10;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transition-delay:.5s;transition-delay:.5s;opacity:0}.weui-photo-browser-modal .caption .caption-item{display:none;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s}.weui-photo-browser-modal .caption .caption-item.active{display:block;opacity:1}.weui-photo-browser-modal .swiper-container-visible .caption{opacity:1}.color-primary{color:#04BE02}.color-danger,.color-error{color:#f6383a}.color-warning{color:#f60}.color-success{color:#4cd964}.bg-danger,.bg-error,.bg-primary,.bg-success,.bg-warning{color:#fff}.bg-primary{background-color:#04BE02}.bg-danger,.bg-error{background-color:#f6383a}.bg-warning{background-color:#f60}.bg-success{background-color:#4cd964}.weui-toptips{z-index:100;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s}.weui-toptips.weui-toptips_visible{opacity:1}.weui-icon_toast{font-size:55px;color:#fff;margin-bottom:6px}.weui-toast--forbidden .weui-icon_toast{color:#f6383a}.weui-toast--text{min-height:initial;font-size:18px;padding:8px 16px;width:auto;top:40%}.weui-toast--text .weui-icon_toast{display:none}.weui-count{display:inline-block;height:25px;line-height:25px}.weui-count .weui-count__btn{height:21px;width:21px;line-height:21px;display:inline-block;position:relative;border:1px solid #04BE02;border-radius:50%;vertical-align:-6px}.weui-count .weui-count__btn:after,.weui-count .weui-count__btn:before{content:" ";position:absolute;height:1px;width:11px;background-color:#04BE02;left:50%;top:50%;margin-left:-5.5px}.weui-count .weui-count__btn:after{height:11px;width:1px;margin-top:-5.5px;margin-left:-1px}.weui-count .weui-count__decrease:after{display:none}.weui-count .weui-count__increase{background-color:#04BE02}.weui-count .weui-count__increase:after,.weui-count .weui-count__increase:before{background-color:#fff}.weui-count .weui-count__number{background-color:transparent;font-size:.8rem;border:0;width:1.3rem;text-align:center;color:#5f646e}.weui-panel .weui-media-box__title-after{color:#9b9b9b;font-size:.65rem;float:right}
\ No newline at end of file
diff --git a/oauth/src/main/resources/static/css/weui.min.css b/oauth/src/main/resources/static/css/weui.min.css
old mode 100644
new mode 100755
index 380d74f..1371e18
--- a/oauth/src/main/resources/static/css/weui.min.css
+++ b/oauth/src/main/resources/static/css/weui.min.css
@@ -1,5 +1,5 @@
/*!
- * WeUI v1.1.2 (https://github.com/weui/weui)
- * Copyright 2017 Tencent, Inc.
+ * WeUI v1.1.3 (https://github.com/weui/weui)
+ * Copyright 2018 Tencent, Inc.
* Licensed under the MIT license
- */html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{line-height:1.6;font-family:-apple-system-font,Helvetica Neue,sans-serif}*{margin:0;padding:0}a img{border:0}a{text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}@font-face{font-weight:400;font-style:normal;font-family:weui;src:url("data:application/octet-stream;base64,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") format("truetype")}[class*=" weui-icon-"],[class^=weui-icon-]{display:inline-block;vertical-align:middle;font:normal normal normal 14px/1 weui;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}[class*=" weui-icon-"]:before,[class^=weui-icon-]:before{display:inline-block;margin-left:.2em;margin-right:.2em}.weui-icon-circle:before{content:"\EA01"}.weui-icon-download:before{content:"\EA02"}.weui-icon-info:before{content:"\EA03"}.weui-icon-safe-success:before{content:"\EA04"}.weui-icon-safe-warn:before{content:"\EA05"}.weui-icon-success:before{content:"\EA06"}.weui-icon-success-circle:before{content:"\EA07"}.weui-icon-success-no-circle:before{content:"\EA08"}.weui-icon-waiting:before{content:"\EA09"}.weui-icon-waiting-circle:before{content:"\EA0A"}.weui-icon-warn:before{content:"\EA0B"}.weui-icon-info-circle:before{content:"\EA0C"}.weui-icon-cancel:before{content:"\EA0D"}.weui-icon-search:before{content:"\EA0E"}.weui-icon-clear:before{content:"\EA0F"}.weui-icon-back:before{content:"\EA10"}.weui-icon-delete:before{content:"\EA11"}[class*=" weui-icon_"]:before,[class^=weui-icon_]:before{margin:0}.weui-icon-success{font-size:23px;color:#09bb07}.weui-icon-waiting{font-size:23px;color:#10aeff}.weui-icon-warn{font-size:23px;color:#f43530}.weui-icon-info{font-size:23px;color:#10aeff}.weui-icon-success-circle,.weui-icon-success-no-circle{font-size:23px;color:#09bb07}.weui-icon-waiting-circle{font-size:23px;color:#10aeff}.weui-icon-circle{font-size:23px;color:#c9c9c9}.weui-icon-download,.weui-icon-info-circle{font-size:23px;color:#09bb07}.weui-icon-safe-success{color:#09bb07}.weui-icon-safe-warn{color:#ffbe00}.weui-icon-cancel{color:#f43530;font-size:22px}.weui-icon-clear,.weui-icon-search{color:#b2b2b2;font-size:14px}.weui-icon-delete.weui-icon_gallery-delete{color:#fff;font-size:22px}.weui-icon_msg{font-size:93px}.weui-icon_msg.weui-icon-warn{color:#f76260}.weui-icon_msg-primary{font-size:93px}.weui-icon_msg-primary.weui-icon-warn{color:#ffbe00}.weui-btn{position:relative;display:block;margin-left:auto;margin-right:auto;padding-left:14px;padding-right:14px;box-sizing:border-box;font-size:18px;text-align:center;text-decoration:none;color:#fff;line-height:2.55555556;border-radius:5px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden}.weui-btn:after{content:" ";width:200%;height:200%;position:absolute;top:0;left:0;border:1px solid rgba(0,0,0,.2);-webkit-transform:scale(.5);transform:scale(.5);-webkit-transform-origin:0 0;transform-origin:0 0;box-sizing:border-box;border-radius:10px}.weui-btn_inline{display:inline-block}.weui-btn_default{color:#000;background-color:#f8f8f8}.weui-btn_default:not(.weui-btn_disabled):visited{color:#000}.weui-btn_default:not(.weui-btn_disabled):active{color:rgba(0,0,0,.6);background-color:#dedede}.weui-btn_primary{background-color:#1aad19}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_primary:not(.weui-btn_disabled):active{color:hsla(0,0%,100%,.6);background-color:#179b16}.weui-btn_warn{background-color:#e64340}.weui-btn_warn:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_warn:not(.weui-btn_disabled):active{color:hsla(0,0%,100%,.6);background-color:#ce3c39}.weui-btn_disabled{color:hsla(0,0%,100%,.6)}.weui-btn_disabled.weui-btn_default{color:rgba(0,0,0,.3);background-color:#f7f7f7}.weui-btn_disabled.weui-btn_primary{background-color:#9ed99d}.weui-btn_disabled.weui-btn_warn{background-color:#ec8b89}.weui-btn_loading .weui-loading{margin:-.2em .34em 0 0}.weui-btn_loading.weui-btn_primary,.weui-btn_loading.weui-btn_warn{color:hsla(0,0%,100%,.6)}.weui-btn_loading.weui-btn_primary{background-color:#179b16}.weui-btn_loading.weui-btn_warn{background-color:#ce3c39}.weui-btn_plain-primary{color:#1aad19;border:1px solid #1aad19}.weui-btn_plain-primary:not(.weui-btn_plain-disabled):active{color:rgba(26,173,25,.6);border-color:rgba(26,173,25,.6)}.weui-btn_plain-primary:after{border-width:0}.weui-btn_plain-default{color:#353535;border:1px solid #353535}.weui-btn_plain-default:not(.weui-btn_plain-disabled):active{color:rgba(53,53,53,.6);border-color:rgba(53,53,53,.6)}.weui-btn_plain-default:after{border-width:0}.weui-btn_plain-disabled{color:rgba(0,0,0,.2);border-color:rgba(0,0,0,.2)}button.weui-btn,input.weui-btn{width:100%;border-width:0;outline:0;-webkit-appearance:none}button.weui-btn:focus,input.weui-btn:focus{outline:0}button.weui-btn_inline,button.weui-btn_mini,input.weui-btn_inline,input.weui-btn_mini{width:auto}button.weui-btn_plain-default,button.weui-btn_plain-primary,input.weui-btn_plain-default,input.weui-btn_plain-primary{border-width:1px;background-color:transparent}.weui-btn_mini{display:inline-block;padding:0 1.32em;line-height:2.3;font-size:13px}.weui-btn+.weui-btn{margin-top:15px}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-top:auto;margin-left:15px}.weui-btn-area{margin:1.17647059em 15px .3em}.weui-btn-area_inline{display:-webkit-box;display:-webkit-flex;display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:15px;width:100%;-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0}.weui-cells{margin-top:1.17647059em;background-color:#fff;line-height:1.47058824;font-size:17px;overflow:hidden;position:relative}.weui-cells:before{top:0;border-top:1px solid #e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-cells:after,.weui-cells:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5;z-index:2}.weui-cells:after{bottom:0;border-bottom:1px solid #e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-cells__title{margin-top:.77em;margin-bottom:.3em;padding-left:15px;padding-right:15px;color:#999;font-size:14px}.weui-cells__title+.weui-cells{margin-top:0}.weui-cells__tips{margin-top:.3em;color:#999;padding-left:15px;padding-right:15px;font-size:14px}.weui-cell{padding:10px 15px;position:relative;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-cell:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:15px;z-index:2}.weui-cell:first-child:before{display:none}.weui-cell_primary{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start}.weui-cell__bd{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-cell__ft{text-align:right;color:#999}.weui-cell_swiped{display:block;padding:0}.weui-cell_swiped>.weui-cell__bd{position:relative;z-index:1;background-color:#fff}.weui-cell_swiped>.weui-cell__ft{position:absolute;right:0;top:0;bottom:0;display:-webkit-box;display:-webkit-flex;display:flex;color:#fff}.weui-swiped-btn{display:block;padding:10px 1em;line-height:1.47058824;color:inherit}.weui-swiped-btn_default{background-color:#c7c7cc}.weui-swiped-btn_warn{background-color:#ff3b30}.weui-cell_access{-webkit-tap-highlight-color:rgba(0,0,0,0);color:inherit}.weui-cell_access:active{background-color:#ececec}.weui-cell_access .weui-cell__ft{padding-right:13px;position:relative}.weui-cell_access .weui-cell__ft:after{content:" ";display:inline-block;height:6px;width:6px;border-width:2px 2px 0 0;border-color:#c8c8cd;border-style:solid;-webkit-transform:matrix(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.71,0,0);position:relative;top:-2px;position:absolute;top:50%;margin-top:-4px;right:2px}.weui-cell_link{color:#586c94;font-size:14px}.weui-cell_link:first-child:before{display:block}.weui-check__label{-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-check__label:active{background-color:#ececec}.weui-check{position:absolute;left:-9999em}.weui-cells_radio .weui-cell__ft{padding-left:.35em}.weui-cells_radio .weui-check:checked+.weui-icon-checked:before{display:block;content:"\EA08";color:#09bb07;font-size:16px}.weui-cells_checkbox .weui-cell__hd{padding-right:.35em}.weui-cells_checkbox .weui-icon-checked:before{content:"\EA01";color:#c9c9c9;font-size:23px;display:block}.weui-cells_checkbox .weui-check:checked+.weui-icon-checked:before{content:"\EA06";color:#09bb07}.weui-label{display:block;width:105px;word-wrap:break-word;word-break:break-all}.weui-input{width:100%;border:0;outline:0;-webkit-appearance:none;background-color:transparent;font-size:inherit;color:inherit;height:1.47058824em;line-height:1.47058824}.weui-input::-webkit-inner-spin-button,.weui-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.weui-textarea{display:block;border:0;resize:none;width:100%;color:inherit;font-size:1em;line-height:inherit;outline:0}.weui-textarea-counter{color:#b2b2b2;text-align:right}.weui-cell_warn .weui-textarea-counter{color:#e64340}.weui-toptips{display:none;position:fixed;-webkit-transform:translateZ(0);transform:translateZ(0);top:0;left:0;right:0;padding:5px;font-size:14px;text-align:center;color:#fff;z-index:5000;word-wrap:break-word;word-break:break-all}.weui-toptips_warn{background-color:#e64340}.weui-cells_form .weui-cell__ft{font-size:0}.weui-cells_form .weui-icon-warn{display:none}.weui-cells_form input,.weui-cells_form label[for],.weui-cells_form textarea{-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-cell_warn{color:#e64340}.weui-cell_warn .weui-icon-warn{display:inline-block}.weui-form-preview{position:relative;background-color:#fff}.weui-form-preview:before{top:0;border-top:1px solid #e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-form-preview:after,.weui-form-preview:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5}.weui-form-preview:after{bottom:0;border-bottom:1px solid #e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-form-preview__hd{position:relative;padding:10px 15px;text-align:right;line-height:2.5em}.weui-form-preview__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:15px}.weui-form-preview__hd .weui-form-preview__value{font-style:normal;font-size:1.6em}.weui-form-preview__bd{padding:10px 15px;font-size:.9em;text-align:right;color:#999;line-height:2}.weui-form-preview__ft{position:relative;line-height:50px;display:-webkit-box;display:-webkit-flex;display:flex}.weui-form-preview__ft:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #d5d5d6;color:#d5d5d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-form-preview__item{overflow:hidden}.weui-form-preview__label{float:left;margin-right:1em;min-width:4em;color:#999;text-align:justify;text-align-last:justify}.weui-form-preview__value{display:block;overflow:hidden;word-break:normal;word-wrap:break-word}.weui-form-preview__btn{position:relative;display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;color:#3cc51f;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}button.weui-form-preview__btn{background-color:transparent;border:0;outline:0;line-height:inherit;font-size:inherit}.weui-form-preview__btn:active{background-color:#eee}.weui-form-preview__btn:after{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #d5d5d6;color:#d5d5d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-form-preview__btn:first-child:after{display:none}.weui-form-preview__btn_default{color:#999}.weui-form-preview__btn_primary{color:#0bb20c}.weui-cell_select{padding:0}.weui-cell_select .weui-select{padding-right:30px}.weui-cell_select .weui-cell__bd:after{content:" ";display:inline-block;height:6px;width:6px;border-width:2px 2px 0 0;border-color:#c8c8cd;border-style:solid;-webkit-transform:matrix(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.71,0,0);position:relative;top:-2px;position:absolute;top:50%;right:15px;margin-top:-4px}.weui-select{-webkit-appearance:none;border:0;outline:0;background-color:transparent;width:100%;font-size:inherit;height:45px;line-height:45px;position:relative;z-index:1;padding-left:15px}.weui-cell_select-before{padding-right:15px}.weui-cell_select-before .weui-select{width:105px;box-sizing:border-box}.weui-cell_select-before .weui-cell__hd{position:relative}.weui-cell_select-before .weui-cell__hd:after{content:" ";position:absolute;right:0;top:0;width:1px;bottom:0;border-right:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-cell_select-before .weui-cell__hd:before{content:" ";display:inline-block;height:6px;width:6px;border-width:2px 2px 0 0;border-color:#c8c8cd;border-style:solid;-webkit-transform:matrix(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.71,0,0);position:relative;top:-2px;position:absolute;top:50%;right:15px;margin-top:-4px}.weui-cell_select-before .weui-cell__bd{padding-left:15px}.weui-cell_select-before .weui-cell__bd:after{display:none}.weui-cell_select-after{padding-left:15px}.weui-cell_select-after .weui-select{padding-left:0}.weui-cell_vcode{padding-top:0;padding-right:0;padding-bottom:0}.weui-vcode-btn,.weui-vcode-img{margin-left:5px;height:45px;vertical-align:middle}.weui-vcode-btn{display:inline-block;padding:0 .6em 0 .7em;border-left:1px solid #e5e5e5;line-height:45px;font-size:17px;color:#3cc51f}button.weui-vcode-btn{background-color:transparent;border-top:0;border-right:0;border-bottom:0;outline:0}.weui-vcode-btn:active{color:#52a341}.weui-gallery{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000;z-index:1000}.weui-gallery__img{position:absolute;top:0;right:0;bottom:60px;left:0;background:50% no-repeat;background-size:contain}.weui-gallery__opr{position:absolute;right:0;bottom:0;left:0;background-color:#0d0d0d;color:#fff;line-height:60px;text-align:center}.weui-gallery__del{display:block}.weui-cell_switch{padding-top:6.5px;padding-bottom:6.5px}.weui-switch{-webkit-appearance:none;appearance:none}.weui-switch,.weui-switch-cp__box{position:relative;width:52px;height:32px;border:1px solid #dfdfdf;outline:0;border-radius:16px;box-sizing:border-box;background-color:#dfdfdf;-webkit-transition:background-color .1s,border .1s;transition:background-color .1s,border .1s}.weui-switch-cp__box:before,.weui-switch:before{content:" ";position:absolute;top:0;left:0;width:50px;height:30px;border-radius:15px;background-color:#fdfdfd;-webkit-transition:-webkit-transform .35s cubic-bezier(.45,1,.4,1);transition:-webkit-transform .35s cubic-bezier(.45,1,.4,1);transition:transform .35s cubic-bezier(.45,1,.4,1);transition:transform .35s cubic-bezier(.45,1,.4,1),-webkit-transform .35s cubic-bezier(.45,1,.4,1)}.weui-switch-cp__box:after,.weui-switch:after{content:" ";position:absolute;top:0;left:0;width:30px;height:30px;border-radius:15px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4);-webkit-transition:-webkit-transform .35s cubic-bezier(.4,.4,.25,1.35);transition:-webkit-transform .35s cubic-bezier(.4,.4,.25,1.35);transition:transform .35s cubic-bezier(.4,.4,.25,1.35);transition:transform .35s cubic-bezier(.4,.4,.25,1.35),-webkit-transform .35s cubic-bezier(.4,.4,.25,1.35)}.weui-switch-cp__input:checked~.weui-switch-cp__box,.weui-switch:checked{border-color:#04be02;background-color:#04be02}.weui-switch-cp__input:checked~.weui-switch-cp__box:before,.weui-switch:checked:before{-webkit-transform:scale(0);transform:scale(0)}.weui-switch-cp__input:checked~.weui-switch-cp__box:after,.weui-switch:checked:after{-webkit-transform:translateX(20px);transform:translateX(20px)}.weui-switch-cp__input{position:absolute;left:-9999px}.weui-switch-cp__box{display:block}.weui-uploader__hd{display:-webkit-box;display:-webkit-flex;display:flex;padding-bottom:10px;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-uploader__title{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-uploader__info{color:#b2b2b2}.weui-uploader__bd{margin-bottom:-4px;margin-right:-9px;overflow:hidden}.weui-uploader__files{list-style:none}.weui-uploader__file{float:left;margin-right:9px;margin-bottom:9px;width:79px;height:79px;background:no-repeat 50%;background-size:cover}.weui-uploader__file_status{position:relative}.weui-uploader__file_status:before{content:" ";position:absolute;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.5)}.weui-uploader__file_status .weui-uploader__file-content{display:block}.weui-uploader__file-content{display:none;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff}.weui-uploader__file-content .weui-icon-warn{display:inline-block}.weui-uploader__input-box{float:left;position:relative;margin-right:9px;margin-bottom:9px;width:77px;height:77px;border:1px solid #d9d9d9}.weui-uploader__input-box:after,.weui-uploader__input-box:before{content:" ";position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:#d9d9d9}.weui-uploader__input-box:before{width:2px;height:39.5px}.weui-uploader__input-box:after{width:39.5px;height:2px}.weui-uploader__input-box:active{border-color:#999}.weui-uploader__input-box:active:after,.weui-uploader__input-box:active:before{background-color:#999}.weui-uploader__input{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;opacity:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-msg{padding-top:36px;text-align:center}.weui-msg__icon-area{margin-bottom:30px}.weui-msg__text-area{margin-bottom:25px;padding:0 20px}.weui-msg__text-area a{color:#586c94}.weui-msg__title{margin-bottom:5px;font-weight:400;font-size:20px}.weui-msg__desc{font-size:14px;color:#999}.weui-msg__opr-area{margin-bottom:25px}.weui-msg__extra-area{margin-bottom:15px;font-size:14px;color:#999}.weui-msg__extra-area a{color:#586c94}@media screen and (min-height:438px){.weui-msg__extra-area{position:fixed;left:0;bottom:0;width:100%;text-align:center}}.weui-article{padding:20px 15px;font-size:15px}.weui-article section{margin-bottom:1.5em}.weui-article h1{font-size:18px;font-weight:400;margin-bottom:.9em}.weui-article h2{font-size:16px}.weui-article h2,.weui-article h3{font-weight:400;margin-bottom:.34em}.weui-article h3{font-size:15px}.weui-article *{max-width:100%;box-sizing:border-box;word-wrap:break-word}.weui-article p{margin:0 0 .8em}.weui-tabbar{display:-webkit-box;display:-webkit-flex;display:flex;position:absolute;z-index:500;bottom:0;width:100%;background-color:#f7f7fa}.weui-tabbar:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #c0bfc4;color:#c0bfc4;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-tabbar__item{display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;padding:5px 0 0;font-size:0;color:#999;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon,.weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon>i,.weui-tabbar__item.weui-bar__item_on .weui-tabbar__label{color:#09bb07}.weui-tabbar__icon{display:inline-block;width:27px;height:27px}.weui-tabbar__icon>i,i.weui-tabbar__icon{font-size:24px;color:#999}.weui-tabbar__icon img{width:100%;height:100%}.weui-tabbar__label{text-align:center;color:#999;font-size:10px;line-height:1.8}.weui-navbar{display:-webkit-box;display:-webkit-flex;display:flex;position:absolute;z-index:500;top:0;width:100%;background-color:#fafafa}.weui-navbar:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #ccc;color:#ccc;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-navbar+.weui-tab__panel{padding-top:50px;padding-bottom:0}.weui-navbar__item{position:relative;display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;padding:13px 0;text-align:center;font-size:15px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-navbar__item:active{background-color:#ededed}.weui-navbar__item.weui-bar__item_on{background-color:#eaeaea}.weui-navbar__item:after{content:" ";position:absolute;right:0;top:0;width:1px;bottom:0;border-right:1px solid #ccc;color:#ccc;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-navbar__item:last-child:after{display:none}.weui-tab{position:relative;height:100%}.weui-tab__panel{box-sizing:border-box;height:100%;padding-bottom:50px;overflow:auto;-webkit-overflow-scrolling:touch}.weui-tab__content{display:none}.weui-progress{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-progress__bar{background-color:#ebebeb;height:3px;-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-progress__inner-bar{width:0;height:100%;background-color:#09bb07}.weui-progress__opr{display:block;margin-left:15px;font-size:0}.weui-panel{background-color:#fff;margin-top:10px;position:relative;overflow:hidden}.weui-panel:first-child{margin-top:0}.weui-panel:before{top:0;border-top:1px solid #e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-panel:after,.weui-panel:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5}.weui-panel:after{bottom:0;border-bottom:1px solid #e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-panel__hd{padding:14px 15px 10px;color:#999;font-size:13px;position:relative}.weui-panel__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:15px}.weui-media-box{padding:15px;position:relative}.weui-media-box:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:15px}.weui-media-box:first-child:before{display:none}a.weui-media-box{color:#000;-webkit-tap-highlight-color:rgba(0,0,0,0)}a.weui-media-box:active{background-color:#ececec}.weui-media-box__title{font-weight:400;font-size:17px;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;word-wrap:break-word;word-break:break-all}.weui-media-box__desc{color:#999;font-size:13px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.weui-media-box__info{margin-top:15px;padding-bottom:5px;font-size:13px;color:#cecece;line-height:1em;list-style:none;overflow:hidden}.weui-media-box__info__meta{float:left;padding-right:1em}.weui-media-box__info__meta_extra{padding-left:1em;border-left:1px solid #cecece}.weui-media-box_text .weui-media-box__title{margin-bottom:8px}.weui-media-box_appmsg{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-media-box_appmsg .weui-media-box__hd{margin-right:.8em;width:60px;height:60px;line-height:60px;text-align:center}.weui-media-box_appmsg .weui-media-box__thumb{width:100%;max-height:100%;vertical-align:top}.weui-media-box_appmsg .weui-media-box__bd{-webkit-box-flex:1;-webkit-flex:1;flex:1;min-width:0}.weui-media-box_small-appmsg{padding:0}.weui-media-box_small-appmsg .weui-cells{margin-top:0}.weui-media-box_small-appmsg .weui-cells:before{display:none}.weui-grids{position:relative;overflow:hidden}.weui-grids:before{right:0;height:1px;border-top:1px solid #d9d9d9;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-grids:after,.weui-grids:before{content:" ";position:absolute;left:0;top:0;color:#d9d9d9}.weui-grids:after{width:1px;bottom:0;border-left:1px solid #d9d9d9;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-grid{position:relative;float:left;padding:20px 10px;width:33.33333333%;box-sizing:border-box}.weui-grid:before{top:0;width:1px;border-right:1px solid #d9d9d9;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-grid:after,.weui-grid:before{content:" ";position:absolute;right:0;bottom:0;color:#d9d9d9}.weui-grid:after{left:0;height:1px;border-bottom:1px solid #d9d9d9;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-grid:active{background-color:#ececec}.weui-grid__icon{width:28px;height:28px;margin:0 auto}.weui-grid__icon img{display:block;width:100%;height:100%}.weui-grid__icon+.weui-grid__label{margin-top:5px}.weui-grid__label{display:block;color:#000;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.weui-footer,.weui-grid__label{text-align:center;font-size:14px}.weui-footer{color:#999}.weui-footer a{color:#586c94}.weui-footer_fixed-bottom{position:fixed;bottom:.52em;left:0;right:0}.weui-footer__links{font-size:0}.weui-footer__link{display:inline-block;vertical-align:top;margin:0 .62em;position:relative;font-size:14px}.weui-footer__link:before{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #c7c7c7;color:#c7c7c7;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5);left:-.65em;top:.36em;bottom:.36em}.weui-footer__link:first-child:before{display:none}.weui-footer__text{padding:0 .34em;font-size:12px}.weui-flex{display:-webkit-box;display:-webkit-flex;display:flex}.weui-flex__item{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-dialog{position:fixed;z-index:5000;width:80%;max-width:300px;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:#fff;text-align:center;border-radius:3px;overflow:hidden}.weui-dialog__hd{padding:1.3em 1.6em .5em}.weui-dialog__title{font-weight:400;font-size:18px}.weui-dialog__bd{padding:0 1.6em .8em;min-height:40px;font-size:15px;line-height:1.3;word-wrap:break-word;word-break:break-all;color:#999}.weui-dialog__bd:first-child{padding:2.7em 20px 1.7em;color:#353535}.weui-dialog__ft{position:relative;line-height:48px;font-size:18px;display:-webkit-box;display:-webkit-flex;display:flex}.weui-dialog__ft:after{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #d5d5d6;color:#d5d5d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-dialog__btn{display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;color:#3cc51f;text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:relative}.weui-dialog__btn:active{background-color:#eee}.weui-dialog__btn:after{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #d5d5d6;color:#d5d5d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-dialog__btn:first-child:after{display:none}.weui-dialog__btn_default{color:#353535}.weui-dialog__btn_primary{color:#0bb20c}.weui-skin_android .weui-dialog{text-align:left;box-shadow:0 6px 30px 0 rgba(0,0,0,.1)}.weui-skin_android .weui-dialog__title{font-size:21px}.weui-skin_android .weui-dialog__hd{text-align:left}.weui-skin_android .weui-dialog__bd{color:#999;padding:.25em 1.6em 2em;font-size:17px;text-align:left}.weui-skin_android .weui-dialog__bd:first-child{padding:1.6em 1.6em 2em;color:#353535}.weui-skin_android .weui-dialog__ft{display:block;text-align:right;line-height:42px;font-size:16px;padding:0 1.6em .7em}.weui-skin_android .weui-dialog__ft:after{display:none}.weui-skin_android .weui-dialog__btn{display:inline-block;vertical-align:top;padding:0 .8em}.weui-skin_android .weui-dialog__btn:after{display:none}.weui-skin_android .weui-dialog__btn:active,.weui-skin_android .weui-dialog__btn:visited{background-color:rgba(0,0,0,.06)}.weui-skin_android .weui-dialog__btn:last-child{margin-right:-.8em}.weui-skin_android .weui-dialog__btn_default{color:gray}@media screen and (min-width:1024px){.weui-dialog{width:35%}}.weui-toast{position:fixed;z-index:5000;width:7.6em;min-height:7.6em;top:180px;left:50%;background:hsla(0,0%,7%,.7);text-align:center;border-radius:5px;color:#fff}.weui-icon_toast{margin:22px 0 0;display:block}.weui-icon_toast.weui-icon-success-no-circle:before{color:#fff;font-size:55px}.weui-icon_toast.weui-loading{margin:30px 0 0;width:38px;height:38px;vertical-align:baseline}.weui-toast__content{margin:0 0 15px}.weui-mask{background:rgba(0,0,0,.6)}.weui-mask,.weui-mask_transparent{position:fixed;z-index:2000;top:0;right:0;left:0;bottom:0}.weui-actionsheet{position:fixed;left:0;bottom:0;-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:5000;width:100%;background-color:#efeff4;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.weui-actionsheet__title{position:relative;height:65px;padding:0 20px;line-height:1.4;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;text-align:center;font-size:14px;color:#888;background:#fcfcfd}.weui-actionsheet__title:before{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-actionsheet__title .weui-actionsheet__title-text{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.weui-actionsheet__menu{background-color:#fcfcfd}.weui-actionsheet__action{margin-top:6px;background-color:#fcfcfd}.weui-actionsheet__cell{position:relative;padding:10px 0;text-align:center;font-size:18px}.weui-actionsheet__cell:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-actionsheet__cell:active{background-color:#ececec}.weui-actionsheet__cell:first-child:before{display:none}.weui-skin_android .weui-actionsheet{position:fixed;left:50%;top:50%;bottom:auto;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:274px;box-sizing:border-box;-webkit-backface-visibility:hidden;backface-visibility:hidden;background:transparent;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.weui-skin_android .weui-actionsheet__action{display:none}.weui-skin_android .weui-actionsheet__menu{border-radius:2px;box-shadow:0 6px 30px 0 rgba(0,0,0,.1)}.weui-skin_android .weui-actionsheet__cell{padding:13px 24px;font-size:16px;line-height:1.4;text-align:left}.weui-skin_android .weui-actionsheet__cell:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.weui-skin_android .weui-actionsheet__cell:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.weui-actionsheet_toggle{-webkit-transform:translate(0);transform:translate(0)}.weui-loadmore{width:65%;margin:1.5em auto;line-height:1.6em;font-size:14px;text-align:center}.weui-loadmore__tips{display:inline-block;vertical-align:middle}.weui-loadmore_line{border-top:1px solid #e5e5e5;margin-top:2.4em}.weui-loadmore_line .weui-loadmore__tips{position:relative;top:-.9em;padding:0 .55em;background-color:#fff;color:#999}.weui-loadmore_dot .weui-loadmore__tips{padding:0 .16em}.weui-loadmore_dot .weui-loadmore__tips:before{content:" ";width:4px;height:4px;border-radius:50%;background-color:#e5e5e5;display:inline-block;position:relative;vertical-align:0;top:-.16em}.weui-badge{display:inline-block;padding:.15em .4em;min-width:8px;border-radius:18px;background-color:#f43530;color:#fff;line-height:1.2;text-align:center;font-size:12px;vertical-align:middle}.weui-badge_dot{padding:.4em;min-width:0}.weui-search-bar{position:relative;padding:8px 10px;display:-webkit-box;display:-webkit-flex;display:flex;box-sizing:border-box;background-color:#efeff4}.weui-search-bar:before{top:0;border-top:1px solid #d7d6dc;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-search-bar:after,.weui-search-bar:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#d7d6dc}.weui-search-bar:after{bottom:0;border-bottom:1px solid #d7d6dc;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-search-bar.weui-search-bar_focusing .weui-search-bar__cancel-btn{display:block}.weui-search-bar.weui-search-bar_focusing .weui-search-bar__label{display:none}.weui-search-bar__form{position:relative;-webkit-box-flex:1;-webkit-flex:auto;flex:auto;background-color:#efeff4}.weui-search-bar__form:after{content:"";position:absolute;left:0;top:0;width:200%;height:200%;-webkit-transform:scale(.5);transform:scale(.5);-webkit-transform-origin:0 0;transform-origin:0 0;border-radius:10px;border:1px solid #e6e6ea;box-sizing:border-box;background:#fff}.weui-search-bar__box{position:relative;padding-left:30px;padding-right:30px;height:100%;width:100%;box-sizing:border-box;z-index:1}.weui-search-bar__box .weui-search-bar__input{padding:4px 0;width:100%;height:1.42857143em;border:0;font-size:14px;line-height:1.42857143em;box-sizing:content-box;background:transparent}.weui-search-bar__box .weui-search-bar__input:focus{outline:none}.weui-search-bar__box .weui-icon-search{position:absolute;left:10px;top:0;line-height:28px}.weui-search-bar__box .weui-icon-clear{position:absolute;top:0;right:0;padding:0 10px;line-height:28px}.weui-search-bar__label{position:absolute;top:1px;right:1px;bottom:1px;left:1px;z-index:2;border-radius:3px;text-align:center;color:#9b9b9b;background:#fff}.weui-search-bar__label span{display:inline-block;font-size:14px;vertical-align:middle}.weui-search-bar__label .weui-icon-search{margin-right:5px}.weui-search-bar__cancel-btn{display:none;margin-left:10px;line-height:28px;color:#09bb07;white-space:nowrap}.weui-search-bar__input:not(:valid)~.weui-icon-clear{display:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{display:none}.weui-picker{position:fixed;width:100%;left:0;bottom:0;z-index:5000;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.weui-picker__hd{display:-webkit-box;display:-webkit-flex;display:flex;padding:9px 15px;background-color:#fff;position:relative;text-align:center;font-size:17px}.weui-picker__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-picker__action{display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;color:#1aad19}.weui-picker__action:first-child{text-align:left;color:#888}.weui-picker__action:last-child{text-align:right}.weui-picker__bd{display:-webkit-box;display:-webkit-flex;display:flex;position:relative;background-color:#fff;height:238px;overflow:hidden}.weui-picker__group{-webkit-box-flex:1;-webkit-flex:1;flex:1;position:relative;height:100%}.weui-picker__mask{top:0;height:100%;margin:0 auto;background:-webkit-linear-gradient(top,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)),-webkit-linear-gradient(bottom,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6));background:linear-gradient(180deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)),linear-gradient(0deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6));background-position:top,bottom;background-size:100% 102px;background-repeat:no-repeat;-webkit-transform:translateZ(0);transform:translateZ(0)}.weui-picker__indicator,.weui-picker__mask{position:absolute;left:0;width:100%;z-index:3}.weui-picker__indicator{height:34px;top:102px}.weui-picker__indicator:before{top:0;border-top:1px solid #e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-picker__indicator:after,.weui-picker__indicator:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5}.weui-picker__indicator:after{bottom:0;border-bottom:1px solid #e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-picker__content{position:absolute;top:0;left:0;width:100%}.weui-picker__item{padding:0;height:34px;line-height:34px;text-align:center;color:#000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.weui-picker__item_disabled{color:#999}@-webkit-keyframes a{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes a{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.weui-animate-slide-up{-webkit-animation:a ease .3s forwards;animation:a ease .3s forwards}@-webkit-keyframes b{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes b{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.weui-animate-slide-down{-webkit-animation:b ease .3s forwards;animation:b ease .3s forwards}@-webkit-keyframes c{0%{opacity:0}to{opacity:1}}@keyframes c{0%{opacity:0}to{opacity:1}}.weui-animate-fade-in{-webkit-animation:c ease .3s forwards;animation:c ease .3s forwards}@-webkit-keyframes d{0%{opacity:1}to{opacity:0}}@keyframes d{0%{opacity:1}to{opacity:0}}.weui-animate-fade-out{-webkit-animation:d ease .3s forwards;animation:d ease .3s forwards}.weui-agree{display:block;padding:.5em 15px;font-size:13px}.weui-agree a{color:#586c94}.weui-agree__text{color:#999}.weui-agree__checkbox{-webkit-appearance:none;appearance:none;outline:0;font-size:0;border:1px solid #d1d1d1;background-color:#fff;border-radius:3px;width:13px;height:13px;position:relative;vertical-align:0;top:2px}.weui-agree__checkbox:checked:before{font-family:weui;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-align:center;speak:none;display:inline-block;vertical-align:middle;text-decoration:inherit;content:"\EA08";color:#09bb07;font-size:13px;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-48%) scale(.73);transform:translate(-50%,-48%) scale(.73)}.weui-agree__checkbox:disabled{background-color:#e1e1e1}.weui-agree__checkbox:disabled:before{color:#adadad}.weui-loading{width:20px;height:20px;display:inline-block;vertical-align:middle;-webkit-animation:e 1s steps(12) infinite;animation:e 1s steps(12) infinite;background:transparent url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E9E9E9' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23989697' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%239B999A' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23A3A1A2' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23ABA9AA' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23B2B2B2' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23BAB8B9' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23C2C0C1' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23CBCBCB' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23D2D2D2' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23DADADA' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E2E2E2' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E") no-repeat;background-size:100%}.weui-btn_loading.weui-btn_primary .weui-loading,.weui-btn_loading.weui-btn_warn .weui-loading,.weui-loading.weui-loading_transparent{background-image:url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect xmlns='http://www.w3.org/2000/svg' width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.56)' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.5)' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.43)' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.38)' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.32)' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.28)' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.25)' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.2)' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.17)' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.14)' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.1)' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.03)' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E")}@-webkit-keyframes e{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes e{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.weui-slider{padding:15px 18px;-webkit-user-select:none;user-select:none}.weui-slider__inner{position:relative;height:2px;background-color:#e9e9e9}.weui-slider__track{height:2px;background-color:#1aad19;width:0}.weui-slider__handler{position:absolute;left:0;top:50%;width:28px;height:28px;margin-left:-14px;margin-top:-14px;border-radius:50%;background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.2)}.weui-slider-box{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-slider-box .weui-slider{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-slider-box__value{margin-left:.5em;min-width:24px;color:#888;text-align:center;font-size:14px}
\ No newline at end of file
+ */html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{line-height:1.6;font-family:-apple-system-font,Helvetica Neue,sans-serif}*{margin:0;padding:0}a img{border:0}a{text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}@font-face{font-weight:400;font-style:normal;font-family:weui;src:url('data:application/octet-stream;base64,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') format('truetype')}[class*=" weui-icon-"],[class^=weui-icon-]{display:inline-block;vertical-align:middle;font:normal normal normal 14px/1 weui;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}[class*=" weui-icon-"]:before,[class^=weui-icon-]:before{display:inline-block;margin-left:.2em;margin-right:.2em}.weui-icon-circle:before{content:"\EA01"}.weui-icon-download:before{content:"\EA02"}.weui-icon-info:before{content:"\EA03"}.weui-icon-safe-success:before{content:"\EA04"}.weui-icon-safe-warn:before{content:"\EA05"}.weui-icon-success:before{content:"\EA06"}.weui-icon-success-circle:before{content:"\EA07"}.weui-icon-success-no-circle:before{content:"\EA08"}.weui-icon-waiting:before{content:"\EA09"}.weui-icon-waiting-circle:before{content:"\EA0A"}.weui-icon-warn:before{content:"\EA0B"}.weui-icon-info-circle:before{content:"\EA0C"}.weui-icon-cancel:before{content:"\EA0D"}.weui-icon-search:before{content:"\EA0E"}.weui-icon-clear:before{content:"\EA0F"}.weui-icon-back:before{content:"\EA10"}.weui-icon-delete:before{content:"\EA11"}[class*=" weui-icon_"]:before,[class^=weui-icon_]:before{margin:0}.weui-icon-success{font-size:23px;color:#09bb07}.weui-icon-waiting{font-size:23px;color:#10aeff}.weui-icon-warn{font-size:23px;color:#f43530}.weui-icon-info{font-size:23px;color:#10aeff}.weui-icon-success-circle,.weui-icon-success-no-circle{font-size:23px;color:#09bb07}.weui-icon-waiting-circle{font-size:23px;color:#10aeff}.weui-icon-circle{font-size:23px;color:#c9c9c9}.weui-icon-download,.weui-icon-info-circle{font-size:23px;color:#09bb07}.weui-icon-safe-success{color:#09bb07}.weui-icon-safe-warn{color:#ffbe00}.weui-icon-cancel{color:#f43530;font-size:22px}.weui-icon-clear,.weui-icon-search{color:#b2b2b2;font-size:14px}.weui-icon-delete.weui-icon_gallery-delete{color:#fff;font-size:22px}.weui-icon_msg{font-size:93px}.weui-icon_msg.weui-icon-warn{color:#f76260}.weui-icon_msg-primary{font-size:93px}.weui-icon_msg-primary.weui-icon-warn{color:#ffbe00}.weui-btn{position:relative;display:block;margin-left:auto;margin-right:auto;padding-left:14px;padding-right:14px;box-sizing:border-box;font-size:18px;text-align:center;text-decoration:none;color:#fff;line-height:2.55555556;border-radius:5px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden}.weui-btn:after{content:" ";width:200%;height:200%;position:absolute;top:0;left:0;border:1px solid rgba(0,0,0,.2);-webkit-transform:scale(.5);transform:scale(.5);-webkit-transform-origin:0 0;transform-origin:0 0;box-sizing:border-box;border-radius:10px}.weui-btn_inline{display:inline-block}.weui-btn_default{color:#000;background-color:#f8f8f8}.weui-btn_default:not(.weui-btn_disabled):visited{color:#000}.weui-btn_default:not(.weui-btn_disabled):active{color:rgba(0,0,0,.6);background-color:#dedede}.weui-btn_primary{background-color:#1aad19}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_primary:not(.weui-btn_disabled):active{color:hsla(0,0%,100%,.6);background-color:#179b16}.weui-btn_warn{background-color:#e64340}.weui-btn_warn:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_warn:not(.weui-btn_disabled):active{color:hsla(0,0%,100%,.6);background-color:#ce3c39}.weui-btn_disabled{color:hsla(0,0%,100%,.6)}.weui-btn_disabled.weui-btn_default{color:rgba(0,0,0,.3);background-color:#f7f7f7}.weui-btn_disabled.weui-btn_primary{background-color:#9ed99d}.weui-btn_disabled.weui-btn_warn{background-color:#ec8b89}.weui-btn_loading .weui-loading{margin:-.2em .34em 0 0}.weui-btn_loading.weui-btn_primary,.weui-btn_loading.weui-btn_warn{color:hsla(0,0%,100%,.6)}.weui-btn_loading.weui-btn_primary{background-color:#179b16}.weui-btn_loading.weui-btn_warn{background-color:#ce3c39}.weui-btn_plain-primary{color:#1aad19;border:1px solid #1aad19}.weui-btn_plain-primary:not(.weui-btn_plain-disabled):active{color:rgba(26,173,25,.6);border-color:rgba(26,173,25,.6)}.weui-btn_plain-primary:after{border-width:0}.weui-btn_plain-default{color:#353535;border:1px solid #353535}.weui-btn_plain-default:not(.weui-btn_plain-disabled):active{color:rgba(53,53,53,.6);border-color:rgba(53,53,53,.6)}.weui-btn_plain-default:after{border-width:0}.weui-btn_plain-disabled{color:rgba(0,0,0,.2);border-color:rgba(0,0,0,.2)}button.weui-btn,input.weui-btn{width:100%;border-width:0;outline:0;-webkit-appearance:none}button.weui-btn:focus,input.weui-btn:focus{outline:0}button.weui-btn_inline,button.weui-btn_mini,input.weui-btn_inline,input.weui-btn_mini{width:auto}button.weui-btn_plain-default,button.weui-btn_plain-primary,input.weui-btn_plain-default,input.weui-btn_plain-primary{border-width:1px;background-color:transparent}.weui-btn_mini{display:inline-block;padding:0 1.32em;line-height:2.3;font-size:13px}.weui-btn+.weui-btn{margin-top:15px}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-top:auto;margin-left:15px}.weui-btn-area{margin:1.17647059em 15px .3em}.weui-btn-area_inline{display:-webkit-box;display:-webkit-flex;display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:15px;width:100%;-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0}.weui-cells{margin-top:1.17647059em;background-color:#fff;line-height:1.47058824;font-size:17px;overflow:hidden;position:relative}.weui-cells:before{top:0;border-top:1px solid #e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-cells:after,.weui-cells:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5;z-index:2}.weui-cells:after{bottom:0;border-bottom:1px solid #e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-cells__title{margin-top:.77em;margin-bottom:.3em;padding-left:15px;padding-right:15px;color:#999;font-size:14px}.weui-cells__title+.weui-cells{margin-top:0}.weui-cells__tips{margin-top:.3em;color:#999;padding-left:15px;padding-right:15px;font-size:14px}.weui-cell{padding:10px 15px;position:relative;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-cell:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:15px;z-index:2}.weui-cell:first-child:before{display:none}.weui-cell_primary{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start}.weui-cell__bd{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-cell__ft{text-align:right;color:#999}.weui-cell_swiped{display:block;padding:0}.weui-cell_swiped>.weui-cell__bd{position:relative;z-index:1;background-color:#fff}.weui-cell_swiped>.weui-cell__ft{position:absolute;right:0;top:0;bottom:0;display:-webkit-box;display:-webkit-flex;display:flex;color:#fff}.weui-swiped-btn{display:block;padding:10px 1em;line-height:1.47058824;color:inherit}.weui-swiped-btn_default{background-color:#c7c7cc}.weui-swiped-btn_warn{background-color:#ff3b30}.weui-cell_access{-webkit-tap-highlight-color:rgba(0,0,0,0);color:inherit}.weui-cell_access:active{background-color:#ececec}.weui-cell_access .weui-cell__ft{padding-right:13px;position:relative}.weui-cell_access .weui-cell__ft:after{content:" ";display:inline-block;height:6px;width:6px;border-width:2px 2px 0 0;border-color:#c8c8cd;border-style:solid;-webkit-transform:matrix(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.71,0,0);position:relative;top:-2px;position:absolute;top:50%;margin-top:-4px;right:2px}.weui-cell_link{color:#586c94;font-size:14px}.weui-cell_link:first-child:before{display:block}.weui-check__label{-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-check__label:active{background-color:#ececec}.weui-check{position:absolute;left:-9999em}.weui-cells_radio .weui-cell__ft{padding-left:.35em}.weui-cells_radio .weui-check+.weui-icon-checked{min-width:16px}.weui-cells_radio .weui-check:checked+.weui-icon-checked:before{display:block;content:'\EA08';color:#09bb07;font-size:16px}.weui-cells_checkbox .weui-cell__hd{padding-right:.35em}.weui-cells_checkbox .weui-icon-checked:before{content:'\EA01';color:#c9c9c9;font-size:23px;display:block}.weui-cells_checkbox .weui-check:checked+.weui-icon-checked:before{content:'\EA06';color:#09bb07}.weui-label{display:block;width:105px;word-wrap:break-word;word-break:break-all}.weui-input{width:100%;border:0;outline:0;-webkit-appearance:none;background-color:transparent;font-size:inherit;color:inherit;height:1.47058824em;line-height:1.47058824}.weui-input::-webkit-inner-spin-button,.weui-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.weui-textarea{display:block;border:0;resize:none;width:100%;color:inherit;font-size:1em;line-height:inherit;outline:0}.weui-textarea-counter{color:#b2b2b2;text-align:right}.weui-cell_warn .weui-textarea-counter{color:#e64340}.weui-toptips{display:none;position:fixed;-webkit-transform:translateZ(0);transform:translateZ(0);top:0;left:0;right:0;padding:5px;font-size:14px;text-align:center;color:#fff;z-index:5000;word-wrap:break-word;word-break:break-all}.weui-toptips_warn{background-color:#e64340}.weui-cells_form .weui-cell__ft{font-size:0}.weui-cells_form .weui-icon-warn{display:none}.weui-cells_form input,.weui-cells_form label[for],.weui-cells_form textarea{-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-cell_warn{color:#e64340}.weui-cell_warn .weui-icon-warn{display:inline-block}.weui-form-preview{position:relative;background-color:#fff}.weui-form-preview:before{top:0;border-top:1px solid #e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-form-preview:after,.weui-form-preview:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5}.weui-form-preview:after{bottom:0;border-bottom:1px solid #e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-form-preview__hd{position:relative;padding:10px 15px;text-align:right;line-height:2.5em}.weui-form-preview__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:15px}.weui-form-preview__hd .weui-form-preview__value{font-style:normal;font-size:1.6em}.weui-form-preview__bd{padding:10px 15px;font-size:.9em;text-align:right;color:#999;line-height:2}.weui-form-preview__ft{position:relative;line-height:50px;display:-webkit-box;display:-webkit-flex;display:flex}.weui-form-preview__ft:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #d5d5d6;color:#d5d5d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-form-preview__item{overflow:hidden}.weui-form-preview__label{float:left;margin-right:1em;min-width:4em;color:#999;text-align:justify;text-align-last:justify}.weui-form-preview__value{display:block;overflow:hidden;word-break:normal;word-wrap:break-word}.weui-form-preview__btn{position:relative;display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;color:#3cc51f;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}button.weui-form-preview__btn{background-color:transparent;border:0;outline:0;line-height:inherit;font-size:inherit}.weui-form-preview__btn:active{background-color:#eee}.weui-form-preview__btn:after{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #d5d5d6;color:#d5d5d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-form-preview__btn:first-child:after{display:none}.weui-form-preview__btn_default{color:#999}.weui-form-preview__btn_primary{color:#0bb20c}.weui-cell_select{padding:0}.weui-cell_select .weui-select{padding-right:30px}.weui-cell_select .weui-cell__bd:after{content:" ";display:inline-block;height:6px;width:6px;border-width:2px 2px 0 0;border-color:#c8c8cd;border-style:solid;-webkit-transform:matrix(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.71,0,0);position:relative;top:-2px;position:absolute;top:50%;right:15px;margin-top:-4px}.weui-select{-webkit-appearance:none;border:0;outline:0;background-color:transparent;width:100%;font-size:inherit;height:45px;line-height:45px;position:relative;z-index:1;padding-left:15px}.weui-cell_select-before{padding-right:15px}.weui-cell_select-before .weui-select{width:105px;box-sizing:border-box}.weui-cell_select-before .weui-cell__hd{position:relative}.weui-cell_select-before .weui-cell__hd:after{content:" ";position:absolute;right:0;top:0;width:1px;bottom:0;border-right:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-cell_select-before .weui-cell__hd:before{content:" ";display:inline-block;height:6px;width:6px;border-width:2px 2px 0 0;border-color:#c8c8cd;border-style:solid;-webkit-transform:matrix(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.71,0,0);position:relative;top:-2px;position:absolute;top:50%;right:15px;margin-top:-4px}.weui-cell_select-before .weui-cell__bd{padding-left:15px}.weui-cell_select-before .weui-cell__bd:after{display:none}.weui-cell_select-after{padding-left:15px}.weui-cell_select-after .weui-select{padding-left:0}.weui-cell_vcode{padding-top:0;padding-right:0;padding-bottom:0}.weui-vcode-btn,.weui-vcode-img{margin-left:5px;height:45px;vertical-align:middle}.weui-vcode-btn{display:inline-block;padding:0 .6em 0 .7em;border-left:1px solid #e5e5e5;line-height:45px;font-size:17px;color:#3cc51f}button.weui-vcode-btn{background-color:transparent;border-top:0;border-right:0;border-bottom:0;outline:0}.weui-vcode-btn:active{color:#52a341}.weui-gallery{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000;z-index:1000}.weui-gallery__img{position:absolute;top:0;right:0;bottom:60px;left:0;background:50% no-repeat;background-size:contain}.weui-gallery__opr{position:absolute;right:0;bottom:0;left:0;background-color:#0d0d0d;color:#fff;line-height:60px;text-align:center}.weui-gallery__del{display:block}.weui-cell_switch{padding-top:6.5px;padding-bottom:6.5px}.weui-switch{-webkit-appearance:none;appearance:none}.weui-switch,.weui-switch-cp__box{position:relative;width:52px;height:32px;border:1px solid #dfdfdf;outline:0;border-radius:16px;box-sizing:border-box;background-color:#dfdfdf;-webkit-transition:background-color .1s,border .1s;transition:background-color .1s,border .1s}.weui-switch-cp__box:before,.weui-switch:before{content:" ";position:absolute;top:0;left:0;width:50px;height:30px;border-radius:15px;background-color:#fdfdfd;-webkit-transition:-webkit-transform .35s cubic-bezier(.45,1,.4,1);transition:-webkit-transform .35s cubic-bezier(.45,1,.4,1);transition:transform .35s cubic-bezier(.45,1,.4,1);transition:transform .35s cubic-bezier(.45,1,.4,1),-webkit-transform .35s cubic-bezier(.45,1,.4,1)}.weui-switch-cp__box:after,.weui-switch:after{content:" ";position:absolute;top:0;left:0;width:30px;height:30px;border-radius:15px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4);-webkit-transition:-webkit-transform .35s cubic-bezier(.4,.4,.25,1.35);transition:-webkit-transform .35s cubic-bezier(.4,.4,.25,1.35);transition:transform .35s cubic-bezier(.4,.4,.25,1.35);transition:transform .35s cubic-bezier(.4,.4,.25,1.35),-webkit-transform .35s cubic-bezier(.4,.4,.25,1.35)}.weui-switch-cp__input:checked~.weui-switch-cp__box,.weui-switch:checked{border-color:#04be02;background-color:#04be02}.weui-switch-cp__input:checked~.weui-switch-cp__box:before,.weui-switch:checked:before{-webkit-transform:scale(0);transform:scale(0)}.weui-switch-cp__input:checked~.weui-switch-cp__box:after,.weui-switch:checked:after{-webkit-transform:translateX(20px);transform:translateX(20px)}.weui-switch-cp__input{position:absolute;left:-9999px}.weui-switch-cp__box{display:block}.weui-uploader__hd{display:-webkit-box;display:-webkit-flex;display:flex;padding-bottom:10px;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-uploader__title{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-uploader__info{color:#b2b2b2}.weui-uploader__bd{margin-bottom:-4px;margin-right:-9px;overflow:hidden}.weui-uploader__files{list-style:none}.weui-uploader__file{float:left;margin-right:9px;margin-bottom:9px;width:79px;height:79px;background:no-repeat 50%;background-size:cover}.weui-uploader__file_status{position:relative}.weui-uploader__file_status:before{content:" ";position:absolute;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.5)}.weui-uploader__file_status .weui-uploader__file-content{display:block}.weui-uploader__file-content{display:none;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff}.weui-uploader__file-content .weui-icon-warn{display:inline-block}.weui-uploader__input-box{float:left;position:relative;margin-right:9px;margin-bottom:9px;width:77px;height:77px;border:1px solid #d9d9d9}.weui-uploader__input-box:after,.weui-uploader__input-box:before{content:" ";position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:#d9d9d9}.weui-uploader__input-box:before{width:2px;height:39.5px}.weui-uploader__input-box:after{width:39.5px;height:2px}.weui-uploader__input-box:active{border-color:#999}.weui-uploader__input-box:active:after,.weui-uploader__input-box:active:before{background-color:#999}.weui-uploader__input{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;opacity:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-msg{padding-top:36px;text-align:center}.weui-msg__icon-area{margin-bottom:30px}.weui-msg__text-area{margin-bottom:25px;padding:0 20px}.weui-msg__text-area a{color:#586c94}.weui-msg__title{margin-bottom:5px;font-weight:400;font-size:20px}.weui-msg__desc,.weui-msg__title{word-wrap:break-word;word-break:break-all}.weui-msg__desc{font-size:14px;color:#999}.weui-msg__opr-area{margin-bottom:25px}.weui-msg__extra-area{margin-bottom:15px;font-size:14px;color:#999}.weui-msg__extra-area a{color:#586c94}@media screen and (min-height:438px){.weui-msg__extra-area{position:fixed;left:0;bottom:0;width:100%;text-align:center}}@media only screen and (device-width:375px) and (device-height:812px) and (-webkit-device-pixel-ratio:3){.weui-msg__extra-area{margin-bottom:49px}}.weui-article{padding:20px 15px;font-size:15px}.weui-article section{margin-bottom:1.5em}.weui-article h1{font-size:18px;font-weight:400;margin-bottom:.9em}.weui-article h2{font-size:16px}.weui-article h2,.weui-article h3{font-weight:400;margin-bottom:.34em}.weui-article h3{font-size:15px}.weui-article *{max-width:100%;box-sizing:border-box;word-wrap:break-word}.weui-article p{margin:0 0 .8em}.weui-tabbar{display:-webkit-box;display:-webkit-flex;display:flex;position:absolute;z-index:500;bottom:0;width:100%;background-color:#f7f7fa}.weui-tabbar:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #c0bfc4;color:#c0bfc4;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-tabbar__item{display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;padding:5px 0 0;font-size:0;color:#999;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon,.weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon>i,.weui-tabbar__item.weui-bar__item_on .weui-tabbar__label{color:#09bb07}.weui-tabbar__icon{display:inline-block;width:27px;height:27px}.weui-tabbar__icon>i,i.weui-tabbar__icon{font-size:24px;color:#999}.weui-tabbar__icon img{width:100%;height:100%}.weui-tabbar__label{text-align:center;color:#999;font-size:10px;line-height:1.8}.weui-navbar{display:-webkit-box;display:-webkit-flex;display:flex;position:absolute;z-index:500;top:0;width:100%;background-color:#fafafa}.weui-navbar:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #ccc;color:#ccc;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-navbar+.weui-tab__panel{padding-top:50px;padding-bottom:0}.weui-navbar__item{position:relative;display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;padding:13px 0;text-align:center;font-size:15px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-navbar__item:active{background-color:#ededed}.weui-navbar__item.weui-bar__item_on{background-color:#eaeaea}.weui-navbar__item:after{content:" ";position:absolute;right:0;top:0;width:1px;bottom:0;border-right:1px solid #ccc;color:#ccc;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-navbar__item:last-child:after{display:none}.weui-tab{position:relative;height:100%}.weui-tab__panel{box-sizing:border-box;height:100%;padding-bottom:50px;overflow:auto;-webkit-overflow-scrolling:touch}.weui-tab__content{display:none}.weui-progress{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-progress__bar{background-color:#ebebeb;height:3px;-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-progress__inner-bar{width:0;height:100%;background-color:#09bb07}.weui-progress__opr{display:block;margin-left:15px;font-size:0}.weui-panel{background-color:#fff;margin-top:10px;position:relative;overflow:hidden}.weui-panel:first-child{margin-top:0}.weui-panel:before{top:0;border-top:1px solid #e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-panel:after,.weui-panel:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5}.weui-panel:after{bottom:0;border-bottom:1px solid #e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-panel__hd{padding:14px 15px 10px;color:#999;font-size:13px;position:relative}.weui-panel__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:15px}.weui-media-box{padding:15px;position:relative}.weui-media-box:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:15px}.weui-media-box:first-child:before{display:none}a.weui-media-box{color:#000;-webkit-tap-highlight-color:rgba(0,0,0,0)}a.weui-media-box:active{background-color:#ececec}.weui-media-box__title{font-weight:400;font-size:17px;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;word-wrap:break-word;word-break:break-all}.weui-media-box__desc{color:#999;font-size:13px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.weui-media-box__info{margin-top:15px;padding-bottom:5px;font-size:13px;color:#cecece;line-height:1em;list-style:none;overflow:hidden}.weui-media-box__info__meta{float:left;padding-right:1em}.weui-media-box__info__meta_extra{padding-left:1em;border-left:1px solid #cecece}.weui-media-box_text .weui-media-box__title{margin-bottom:8px}.weui-media-box_appmsg{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-media-box_appmsg .weui-media-box__hd{margin-right:.8em;width:60px;height:60px;line-height:60px;text-align:center}.weui-media-box_appmsg .weui-media-box__thumb{width:100%;max-height:100%;vertical-align:top}.weui-media-box_appmsg .weui-media-box__bd{-webkit-box-flex:1;-webkit-flex:1;flex:1;min-width:0}.weui-media-box_small-appmsg{padding:0}.weui-media-box_small-appmsg .weui-cells{margin-top:0}.weui-media-box_small-appmsg .weui-cells:before{display:none}.weui-grids{position:relative;overflow:hidden}.weui-grids:before{right:0;height:1px;border-top:1px solid #d9d9d9;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-grids:after,.weui-grids:before{content:" ";position:absolute;left:0;top:0;color:#d9d9d9}.weui-grids:after{width:1px;bottom:0;border-left:1px solid #d9d9d9;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-grid{position:relative;float:left;padding:20px 10px;width:33.33333333%;box-sizing:border-box}.weui-grid:before{top:0;width:1px;border-right:1px solid #d9d9d9;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-grid:after,.weui-grid:before{content:" ";position:absolute;right:0;bottom:0;color:#d9d9d9}.weui-grid:after{left:0;height:1px;border-bottom:1px solid #d9d9d9;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-grid:active{background-color:#ececec}.weui-grid__icon{width:28px;height:28px;margin:0 auto}.weui-grid__icon img{display:block;width:100%;height:100%}.weui-grid__icon+.weui-grid__label{margin-top:5px}.weui-grid__label{display:block;color:#000;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.weui-footer,.weui-grid__label{text-align:center;font-size:14px}.weui-footer{color:#999}.weui-footer a{color:#586c94}.weui-footer_fixed-bottom{position:fixed;bottom:.52em;left:0;right:0}.weui-footer__links{font-size:0}.weui-footer__link{display:inline-block;vertical-align:top;margin:0 .62em;position:relative;font-size:14px}.weui-footer__link:before{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #c7c7c7;color:#c7c7c7;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5);left:-.65em;top:.36em;bottom:.36em}.weui-footer__link:first-child:before{display:none}.weui-footer__text{padding:0 .34em;font-size:12px}.weui-flex{display:-webkit-box;display:-webkit-flex;display:flex}.weui-flex__item{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-dialog{position:fixed;z-index:5000;width:80%;max-width:300px;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:#fff;text-align:center;border-radius:3px;overflow:hidden}.weui-dialog__hd{padding:1.3em 1.6em .5em}.weui-dialog__title{font-weight:400;font-size:18px}.weui-dialog__bd{padding:0 1.6em .8em;min-height:40px;font-size:15px;line-height:1.3;word-wrap:break-word;word-break:break-all;color:#999}.weui-dialog__bd:first-child{padding:2.7em 20px 1.7em;color:#353535}.weui-dialog__ft{position:relative;line-height:48px;font-size:18px;display:-webkit-box;display:-webkit-flex;display:flex}.weui-dialog__ft:after{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #d5d5d6;color:#d5d5d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-dialog__btn{display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;color:#3cc51f;text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:relative}.weui-dialog__btn:active{background-color:#eee}.weui-dialog__btn:after{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #d5d5d6;color:#d5d5d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-dialog__btn:first-child:after{display:none}.weui-dialog__btn_default{color:#353535}.weui-dialog__btn_primary{color:#0bb20c}.weui-skin_android .weui-dialog{text-align:left;box-shadow:0 6px 30px 0 rgba(0,0,0,.1)}.weui-skin_android .weui-dialog__title{font-size:21px}.weui-skin_android .weui-dialog__hd{text-align:left}.weui-skin_android .weui-dialog__bd{color:#999;padding:.25em 1.6em 2em;font-size:17px;text-align:left}.weui-skin_android .weui-dialog__bd:first-child{padding:1.6em 1.6em 2em;color:#353535}.weui-skin_android .weui-dialog__ft{display:block;text-align:right;line-height:42px;font-size:16px;padding:0 1.6em .7em}.weui-skin_android .weui-dialog__ft:after{display:none}.weui-skin_android .weui-dialog__btn{display:inline-block;vertical-align:top;padding:0 .8em}.weui-skin_android .weui-dialog__btn:after{display:none}.weui-skin_android .weui-dialog__btn:active,.weui-skin_android .weui-dialog__btn:visited{background-color:rgba(0,0,0,.06)}.weui-skin_android .weui-dialog__btn:last-child{margin-right:-.8em}.weui-skin_android .weui-dialog__btn_default{color:gray}@media screen and (min-width:1024px){.weui-dialog{width:35%}}.weui-toast{position:fixed;z-index:5000;width:7.6em;min-height:7.6em;top:180px;left:50%;margin-left:-3.8em;background:hsla(0,0%,7%,.7);text-align:center;border-radius:5px;color:#fff}.weui-icon_toast{margin:22px 0 0;display:block}.weui-icon_toast.weui-icon-success-no-circle:before{color:#fff;font-size:55px}.weui-icon_toast.weui-loading{margin:30px 0 0;width:38px;height:38px;vertical-align:baseline}.weui-toast__content{margin:0 0 15px}.weui-mask{background:rgba(0,0,0,.6)}.weui-mask,.weui-mask_transparent{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0}.weui-actionsheet{position:fixed;left:0;bottom:0;-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:5000;width:100%;background-color:#efeff4;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.weui-actionsheet__title{position:relative;height:65px;padding:0 20px;line-height:1.4;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;text-align:center;font-size:14px;color:#888;background:#fcfcfd}.weui-actionsheet__title:before{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-actionsheet__title .weui-actionsheet__title-text{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.weui-actionsheet__menu{background-color:#fcfcfd}.weui-actionsheet__action{margin-top:6px;background-color:#fcfcfd}.weui-actionsheet__cell{position:relative;padding:10px 0;text-align:center;font-size:18px}.weui-actionsheet__cell:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-actionsheet__cell:active{background-color:#ececec}.weui-actionsheet__cell:first-child:before{display:none}.weui-skin_android .weui-actionsheet{position:fixed;left:50%;top:50%;bottom:auto;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:274px;box-sizing:border-box;-webkit-backface-visibility:hidden;backface-visibility:hidden;background:transparent;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.weui-skin_android .weui-actionsheet__action{display:none}.weui-skin_android .weui-actionsheet__menu{border-radius:2px;box-shadow:0 6px 30px 0 rgba(0,0,0,.1)}.weui-skin_android .weui-actionsheet__cell{padding:13px 24px;font-size:16px;line-height:1.4;text-align:left}.weui-skin_android .weui-actionsheet__cell:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.weui-skin_android .weui-actionsheet__cell:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.weui-actionsheet_toggle{-webkit-transform:translate(0);transform:translate(0)}.weui-loadmore{width:65%;margin:1.5em auto;line-height:1.6em;font-size:14px;text-align:center}.weui-loadmore__tips{display:inline-block;vertical-align:middle}.weui-loadmore_line{border-top:1px solid #e5e5e5;margin-top:2.4em}.weui-loadmore_line .weui-loadmore__tips{position:relative;top:-.9em;padding:0 .55em;background-color:#fff;color:#999}.weui-loadmore_dot .weui-loadmore__tips{padding:0 .16em}.weui-loadmore_dot .weui-loadmore__tips:before{content:" ";width:4px;height:4px;border-radius:50%;background-color:#e5e5e5;display:inline-block;position:relative;vertical-align:0;top:-.16em}.weui-badge{display:inline-block;padding:.15em .4em;min-width:8px;border-radius:18px;background-color:#f43530;color:#fff;line-height:1.2;text-align:center;font-size:12px;vertical-align:middle}.weui-badge_dot{padding:.4em;min-width:0}.weui-search-bar{position:relative;padding:8px 10px;display:-webkit-box;display:-webkit-flex;display:flex;box-sizing:border-box;background-color:#efeff4;-webkit-text-size-adjust:100%;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-search-bar:before{top:0;border-top:1px solid #d7d6dc;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-search-bar:after,.weui-search-bar:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#d7d6dc}.weui-search-bar:after{bottom:0;border-bottom:1px solid #d7d6dc;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-search-bar.weui-search-bar_focusing .weui-search-bar__cancel-btn{display:block}.weui-search-bar.weui-search-bar_focusing .weui-search-bar__label{display:none}.weui-search-bar__form{position:relative;-webkit-box-flex:1;-webkit-flex:auto;flex:auto;background-color:#efeff4}.weui-search-bar__form:after{content:'';position:absolute;left:0;top:0;width:200%;height:200%;-webkit-transform:scale(.5);transform:scale(.5);-webkit-transform-origin:0 0;transform-origin:0 0;border-radius:10px;border:1px solid #e6e6ea;box-sizing:border-box;background:#fff}.weui-search-bar__box{position:relative;padding-left:30px;padding-right:30px;height:100%;width:100%;box-sizing:border-box;z-index:1}.weui-search-bar__box .weui-search-bar__input{padding:4px 0;width:100%;height:1.42857143em;border:0;font-size:14px;line-height:1.42857143em;box-sizing:content-box;background:transparent}.weui-search-bar__box .weui-search-bar__input:focus{outline:none}.weui-search-bar__box .weui-icon-search{position:absolute;top:50%;left:10px;margin-top:-14px;line-height:28px}.weui-search-bar__box .weui-icon-clear{position:absolute;top:50%;right:0;margin-top:-14px;padding:0 10px;line-height:28px}.weui-search-bar__label{position:absolute;top:1px;right:1px;bottom:1px;left:1px;z-index:2;border-radius:3px;text-align:center;color:#9b9b9b;background:#fff}.weui-search-bar__label span{display:inline-block;font-size:14px;vertical-align:middle}.weui-search-bar__label .weui-icon-search{margin-right:5px}.weui-search-bar__cancel-btn{display:none;margin-left:10px;line-height:28px;color:#09bb07;white-space:nowrap}.weui-search-bar__input:not(:valid)~.weui-icon-clear{display:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{display:none}.weui-picker{position:fixed;width:100%;left:0;bottom:0;z-index:5000;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.weui-picker__hd{display:-webkit-box;display:-webkit-flex;display:flex;padding:9px 15px;background-color:#fff;position:relative;text-align:center;font-size:17px}.weui-picker__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #e5e5e5;color:#e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-picker__action{display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;color:#1aad19}.weui-picker__action:first-child{text-align:left;color:#888}.weui-picker__action:last-child{text-align:right}.weui-picker__bd{display:-webkit-box;display:-webkit-flex;display:flex;position:relative;background-color:#fff;height:238px;overflow:hidden}.weui-picker__group{-webkit-box-flex:1;-webkit-flex:1;flex:1;position:relative;height:100%}.weui-picker__mask{top:0;height:100%;margin:0 auto;background:-webkit-linear-gradient(top,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)),-webkit-linear-gradient(bottom,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6));background:linear-gradient(180deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)),linear-gradient(0deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6));background-position:top,bottom;background-size:100% 102px;background-repeat:no-repeat;-webkit-transform:translateZ(0);transform:translateZ(0)}.weui-picker__indicator,.weui-picker__mask{position:absolute;left:0;width:100%;z-index:3}.weui-picker__indicator{height:34px;top:102px}.weui-picker__indicator:before{top:0;border-top:1px solid #e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-picker__indicator:after,.weui-picker__indicator:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5}.weui-picker__indicator:after{bottom:0;border-bottom:1px solid #e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-picker__content{position:absolute;top:0;left:0;width:100%}.weui-picker__item{padding:0;height:34px;line-height:34px;text-align:center;color:#000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.weui-picker__item_disabled{color:#999}@-webkit-keyframes a{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes a{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.weui-animate-slide-up{-webkit-animation:a ease .3s forwards;animation:a ease .3s forwards}@-webkit-keyframes b{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes b{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.weui-animate-slide-down{-webkit-animation:b ease .3s forwards;animation:b ease .3s forwards}@-webkit-keyframes c{0%{opacity:0}to{opacity:1}}@keyframes c{0%{opacity:0}to{opacity:1}}.weui-animate-fade-in{-webkit-animation:c ease .3s forwards;animation:c ease .3s forwards}@-webkit-keyframes d{0%{opacity:1}to{opacity:0}}@keyframes d{0%{opacity:1}to{opacity:0}}.weui-animate-fade-out{-webkit-animation:d ease .3s forwards;animation:d ease .3s forwards}.weui-agree{display:block;padding:.5em 15px;font-size:13px}.weui-agree a{color:#586c94}.weui-agree__text{color:#999}.weui-agree__checkbox{-webkit-appearance:none;appearance:none;outline:0;font-size:0;border:1px solid #d1d1d1;background-color:#fff;border-radius:3px;width:13px;height:13px;position:relative;vertical-align:0;top:2px}.weui-agree__checkbox:checked:before{font-family:weui;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-align:center;speak:none;display:inline-block;vertical-align:middle;text-decoration:inherit;content:"\EA08";color:#09bb07;font-size:13px;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-48%) scale(.73);transform:translate(-50%,-48%) scale(.73)}.weui-agree__checkbox:disabled{background-color:#e1e1e1}.weui-agree__checkbox:disabled:before{color:#adadad}.weui-loading{width:20px;height:20px;display:inline-block;vertical-align:middle;-webkit-animation:e 1s steps(12) infinite;animation:e 1s steps(12) infinite;background:transparent url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E9E9E9' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23989697' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%239B999A' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23A3A1A2' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23ABA9AA' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23B2B2B2' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23BAB8B9' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23C2C0C1' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23CBCBCB' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23D2D2D2' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23DADADA' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E2E2E2' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E") no-repeat;background-size:100%}.weui-btn_loading.weui-btn_primary .weui-loading,.weui-btn_loading.weui-btn_warn .weui-loading,.weui-loading.weui-loading_transparent{background-image:url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect xmlns='http://www.w3.org/2000/svg' width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.56)' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.5)' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.43)' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.38)' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.32)' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.28)' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.25)' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.2)' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.17)' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.14)' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.1)' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.03)' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E")}@-webkit-keyframes e{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes e{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.weui-slider{padding:15px 18px;-webkit-user-select:none;user-select:none}.weui-slider__inner{position:relative;height:2px;background-color:#e9e9e9}.weui-slider__track{height:2px;background-color:#1aad19;width:0}.weui-slider__handler{position:absolute;left:0;top:50%;width:28px;height:28px;margin-left:-14px;margin-top:-14px;border-radius:50%;background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.2)}.weui-slider-box{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-slider-box .weui-slider{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-slider-box__value{margin-left:.5em;min-width:24px;color:#888;text-align:center;font-size:14px}
\ No newline at end of file
diff --git a/oauth/src/main/resources/static/img/icon_header.png b/oauth/src/main/resources/static/img/icon_header.png
new file mode 100644
index 0000000..b3a7ebe
--- /dev/null
+++ b/oauth/src/main/resources/static/img/icon_header.png
Binary files differ
diff --git a/oauth/src/main/resources/templates/index.html b/oauth/src/main/resources/templates/index.html
index 6efd74e..faf4934 100644
--- a/oauth/src/main/resources/templates/index.html
+++ b/oauth/src/main/resources/templates/index.html
@@ -6,10 +6,85 @@
<meta name="_csrf" th:content="${_csrf.token}"/>
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf_header" th:content="${_csrf.headerName}"/>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
+ <link rel="stylesheet" type="text/css" th:href="@{/css/aui.css}"/>
<link rel="stylesheet" type="text/css" th:href="@{/css/weui.min.css}"/>
<link rel="stylesheet" type="text/css" th:href="@{/css/jquery-weui.css}"/>
+ <style type="text/css">
+ .text-white {
+ color: #ffffff !important;
+ }
+ .aui-grid [class*=aui-col-] {
+ padding: 0.75rem 0;
+ }
+ </style>
</head>
<body>
-用户中心
+<!-- 顶部 -->
+<section class="aui-content" id="user-info">
+ <div class="aui-list aui-media-list aui-list-noborder aui-bg-info">
+ <div class="aui-list-item aui-list-item-middle">
+ <div class="aui-media-list-item-inner ">
+ <div class="aui-list-item-media" style="width:3rem;">
+ <img th:src="@{/img/icon_header.png}" class="aui-img-round" >
+ </div>
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-text text-white aui-font-size-18">[[${uinfor.name}]]</div>
+ <div class="aui-list-item-text text-white">
+ <div >[[${loginid}]]</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</section>
+<section class="aui-content aui-grid aui-margin-b-15">
+ <div class="aui-row">
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-warning">[[${uinfor.availbal}]]<small> 元</small></big>
+ <div class="aui-gird-lable aui-font-size-12">余额</div>
+ </div>
+ <div class="aui-col-xs-4">
+ <big class="aui-text-success">0<small> 分</small></big>
+ <div class="aui-gird-lable aui-font-size-12">积分</div>
+ </div>
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-danger">0<small> 个</small></big>
+ <div class="aui-gird-lable aui-font-size-12">优惠</div>
+ </div>
+ </div>
+</section>
+<section class="aui-content">
+ <ul class="aui-list aui-list-in aui-margin-b-15">
+ <li class="aui-list-item">
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-title">交易流水</div>
+ </div>
+ </li>
+ </ul>
+ <ul class="aui-list aui-list-in aui-margin-b-15">
+ <li class="aui-list-item">
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-title">消费限额</div>
+ </div>
+ </li>
+ </ul>
+ <ul class="aui-list aui-list-in aui-margin-b-15">
+ <li class="aui-list-item">
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-title">登录密码</div>
+ </div>
+ </li>
+ <li class="aui-list-item">
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-title">支付密码</div>
+ </div>
+ </li>
+ </ul>
+ <div style="padding: 20px;position: absolute;bottom: 0;left: 0;right: 0;">
+ <a th:href="@{/logout}" class="weui-btn weui-btn_warn">退出登录</a>
+ </div>
+</section>
</body>
</html>
\ No newline at end of file
diff --git a/oauth/src/main/resources/templates/login.html b/oauth/src/main/resources/templates/login.html
index 8993b29..263fb72 100644
--- a/oauth/src/main/resources/templates/login.html
+++ b/oauth/src/main/resources/templates/login.html
@@ -10,36 +10,53 @@
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
<link rel="stylesheet" type="text/css" th:href="@{/css/weui.min.css}"/>
<link rel="stylesheet" type="text/css" th:href="@{/css/jquery-weui.css}"/>
+ <link rel="stylesheet" type="text/css" th:href="@{/css/aui.css}"/>
+ <link rel="stylesheet" type="text/css" th:href="@{/css/index.css}"/>
</head>
<body>
-<p style="color:red;padding: 0 0 10px 0;"
- th:if="${session['SPRING_SECURITY_LAST_EXCEPTION']!=null and session['SPRING_SECURITY_LAST_EXCEPTION'].message!=null}"
- th:text="${session['SPRING_SECURITY_LAST_EXCEPTION'].message}"></p>
<form th:action="@{/login/form}" method="post">
- <input type="hidden"
- th:name="${_csrf.parameterName}"
- th:value="${_csrf.token}"/>
- <div class="weui-cells__title">统一身份认证</div>
- <div class="weui-cells" >
- <div class="weui-cell">
- <div class="weui-cell__hd">
- <label class="weui-label">账号</label>
- </div>
- <div class="weui-cell__bd">
- <input class="weui-input" type="text" id="username" name="username" placeholder="学工号\手机号\邮箱">
- </div>
- </div>
- <div class="weui-cell">
- <div class="weui-cell__hd">
- <label class="weui-label">密码</label>
- </div>
- <div class="weui-cell__bd">
- <input class="weui-input" type="password" id="password" name="password" placeholder="请输入密码">
- </div>
- </div>
-
+ <div class="login-top">
+ 统一身份认证
</div>
- <button type="submit" class="weui-btn weui-btn_plain-primary" style="margin:30px;">登 录</button>
+ <section class="aui-content" >
+ <p style="color:red;padding: 10px 0 ;text-align: center"
+ th:if="${session['SPRING_SECURITY_LAST_EXCEPTION']!=null and session['SPRING_SECURITY_LAST_EXCEPTION'].message!=null}"
+ th:text="${session['SPRING_SECURITY_LAST_EXCEPTION'].message}"></p>
+ <input type="hidden"
+ th:name="${_csrf.parameterName}"
+ th:value="${_csrf.token}"/>
+ <ul class="aui-list aui-form-list">
+ <li class="aui-list-item" >
+ <div class="aui-list-item-inner" >
+ <div class="aui-list-item-label-icon">
+ <i class="aui-iconfont aui-icon-mobile" ></i>
+ </div>
+ <div class="aui-list-item-input">
+ <input type="text" id="username" name="username" placeholder="学工号/手机号/邮箱">
+ </div>
+ </div>
+ </li>
+ <li class="aui-list-item">
+ <div class="aui-list-item-inner" >
+ <div class="aui-list-item-label-icon">
+ <i class="aui-iconfont aui-icon-lock"></i>
+ </div>
+ <div class="aui-list-item-input">
+ <input type="password" placeholder="请输入登录密码" id="password" name="password" >
+ </div>
+ </div>
+ </li>
+ </ul>
+ </section>
+ <section class="aui-content-padded" style="margin-top: 30px;">
+ <button type="submit" class="aui-btn aui-btn-block aui-btn-info" >登 录</button>
+ </section>
+ <section class="aui-content-padded" style="position: absolute;bottom: 10px;text-align: center;left: 0;right: 0;">
+ <a th:href="@{/findpwd}" style="color: #666;">
+ 忘记密码?
+ </a>
+ </section>
</form>
</body>
-</html>
\ No newline at end of file
+</html>
+
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
index 4854570..a8e7808 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
@@ -23,4 +23,6 @@
@PostMapping("/api/user/querycards")
CardsResponse querycards(@RequestBody QueryCardsParam param);
+ @PostMapping("/api/user/testmsg")
+ ApiResponse testmsg();
}
diff --git a/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java
index 59eba97..9033d45 100644
--- a/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java
+++ b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java
@@ -203,9 +203,9 @@
public void testmsg(){
ApiLoginHelper helper = new ApiLoginHelper(apiLoginProxy);
helper.login(appid, secret);
- QueryUserParam param = new QueryUserParam();
- param.setCitizencardno("123456");
-
+ ApiResponse response = userProxy.testmsg();
+ assertThat("test msg " + response.getRetmsg() + response.getException(),
+ response.getRetcode(), equalTo(0));
}
@Test
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
index ba8b092..ec68890 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
@@ -137,6 +137,9 @@
* 手机号遮掩中间4位
*/
public static String phoneReplace(String phone) {
+ if(phone==null){
+ return phone;
+ }
return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
index 3636987..b2dac9a 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
@@ -150,4 +150,11 @@
.fail(ret.retcode, ret.retmsg))
}
}
+
+ @PostMapping("/testmsg")
+ fun testmsg(): ResponseEntity<Any> {
+ kafkaSendMsgService.sendJpushMessage("402882816c2727a2016c2728165f0001","交易提醒","你有一笔0.01元的支出,点击查看详情","20190725133506000018", mutableMapOf(),"")
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .success("ok"))
+ }
}
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt
index 1d75fd3..290bfaa 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt
@@ -44,6 +44,7 @@
msgDao.save(msg)
return
}
+ msg = msgDao.save(msg)
var uids = ""
musers.forEach {
uids += "${it.uid},"
@@ -64,11 +65,11 @@
message.gids = it.uid
if(it.lastloginplatform.isNullOrEmpty()){
message.platform="ios"
- kafkaTemplate.send(topic, refno, gson.toJson(message))
+ kafkaTemplate.send(topic, msg.msgid, gson.toJson(message))
message.platform="android"
- kafkaTemplate.send(topic, refno, gson.toJson(message))
+ kafkaTemplate.send(topic, msg.msgid, gson.toJson(message))
}else{
- kafkaTemplate.send(topic, refno, gson.toJson(message))
+ kafkaTemplate.send(topic, msg.msgid, gson.toJson(message))
}
}
msg.pusheduids = uids
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
index 16f1742..c795cbd 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
@@ -46,19 +46,19 @@
val platform = request.getParameter("platform")
logger.error(platform)
val temp = authentication.principal as TBMobileUser
- val user = mobileApiService.findUserByPhone(temp.phone)
+ val user = mobileApiService.findUserById(temp.uid)
val exp = systemUtilService.getSysparaValueAsInt(SysparaUtil.MOBILE_LOGIN_EXPIRE_IN_SECONDS,60*60*24*3)
jwtConfig.expiration = exp.toLong()
if (user != null) {
//TODO 从数据取jwtConfig.expiration
val token = JwtTokenUtil(jwtConfig).generateToken(
mapOf("uid" to user.uid, "issuer" to "payapi",
- "audience" to temp.phone,
+ "audience" to user.loginid,
Constants.JWT_CLAIM_TENANTID to "mobile",
Constants.JWT_CLAIM_AUTHORITIES to temp.authorities))
val jwt = JwtRedis().apply {
jti = token.jti
- uid = temp.phone
+ uid = user.loginid
status = TradeDict.JWT_STATUS_NORMAL
expiration = token.expiration.valueInMillis
}.apply {
@@ -129,7 +129,7 @@
}
val temp = request.getParameter("username")
if(!temp.isNullOrEmpty()) {
- mobileUserDao.findByPhone(temp)?.let {
+ mobileUserDao.findByLoginid(temp)?.let {
if (it.loginpwderror == 0) {
it.loginpwderror = 0
it.loginpwderrortime = System.currentTimeMillis()
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
index 22ece91..1134463 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -124,6 +124,8 @@
var user = mobileApiService.findUserByPhone(phone)
if (user == null) {
user = TBMobileUser()
+ //登录ID和phone一致
+ user.loginid = phone
user.phone = phone
user.registerplatform = platform
user.registerdate = DateUtil.getNow()
@@ -182,12 +184,12 @@
user.auths = authorities
val token = JwtTokenUtil(jwtConfig).generateToken(
mapOf("uid" to user.uid, "issuer" to "payapi",
- "audience" to user.phone,
+ "audience" to user.loginid,
Constants.JWT_CLAIM_TENANTID to "mobile",
Constants.JWT_CLAIM_AUTHORITIES to user.authorities))
val jwt = JwtRedis().apply {
jti = token.jti
- uid = user.phone
+ uid = user.loginid
status = TradeDict.JWT_STATUS_NORMAL
expiration = token.expiration.valueInMillis
}.apply {
@@ -279,14 +281,42 @@
@RequestMapping("/infor")
fun getUserInfor(): JsonResult {
val p = SecurityContextHolder.getContext().authentication
- mobileApiService.findUserById(p.name)
+ var user = mobileApiService.findUserById(p.name)
?: return JsonResult.error("用户不存在,请注册")
+ var tk= ""
+ if (!user.jti.isNullOrEmpty()) {
+ var opt = apiJwtRepository.findById(user.jti!!)
+ if(opt.isPresent){
+ var jwt = opt.get()
+ val cur = System.currentTimeMillis()
+ //token 小于12个小时,则更新它
+ if(jwt.expiration-cur<1000*60*60*12){
+ val token = JwtTokenUtil(jwtConfig).generateToken(
+ mapOf("uid" to user.uid, "issuer" to "payapi",
+ "audience" to user.loginid,
+ Constants.JWT_CLAIM_TENANTID to "mobile",
+ Constants.JWT_CLAIM_AUTHORITIES to p.authorities))
+ jwt = JwtRedis().apply {
+ jti = token.jti
+ uid = user.loginid
+ status = TradeDict.JWT_STATUS_NORMAL
+ expiration = token.expiration.valueInMillis
+ }.apply {
+ //删除之前的token
+ if (!user.jti.isNullOrEmpty()) {
+ apiJwtRepository.deleteById(user.jti!!)
+ }
+ apiJwtRepository.save(this)
+ }
+ user.jti = jwt.jti
+ mobileApiService.saveUser(user)
+ tk = token.jwtToken
+ }
+ }
+ }
return JsonResult.ok("OK").put("now", System.currentTimeMillis())
- ?.put("version","1")
- ?.put("versionmsg","1")
- ?.put("minversion","1")!!
+ ?.put("token", tk)!!
}
-
/**
* 验证码生成,内部校验
* */
@@ -294,17 +324,17 @@
fun code(): JsonResult {
val p = SecurityContextHolder.getContext().authentication
val user = mobileApiService.findUserById(p.name) ?: return JsonResult.error("用户不存在,请注册")
- if (user.phone.isEmpty()) {
+ if (user.phone.isNullOrEmpty()) {
return JsonResult.error("用户不存在,请注册")
}
- val temp = redisTemplate.opsForValue().get(user.phone)
+ val temp = redisTemplate.opsForValue().get(user.phone!!)
if (temp.isNullOrEmpty()) {
val code = RandomUtils.randomNumber(6)
- val rs = mobileApiService.sendSms(user.phone, code)
+ val rs = mobileApiService.sendSms(user.phone!!, code)
if ("0" != rs.retcode) {
return JsonResult.error(rs.retmsg)
}
- redisTemplate.opsForValue().set(user.phone, code, Duration.ofMinutes(5))
+ redisTemplate.opsForValue().set(user.loginid, code, Duration.ofMinutes(5))
}
return JsonResult.ok("验证码已发送")
}
@@ -315,14 +345,17 @@
val p = SecurityContextHolder.getContext().authentication
val user = mobileApiService.findUserById(p.name)
?: return JsonResult.error("用户不存在,请注册")
- val temp = redisTemplate.opsForValue().get(user.phone)
+ if (user.phone.isNullOrEmpty()) {
+ return JsonResult.error("手机号不存在,请注册")
+ }
+ val temp = redisTemplate.opsForValue().get(user.phone!!)
if (!temp.isNullOrEmpty()) {
if (temp != code) {
return JsonResult.error("验证码错误")
}
val newCode = RandomUtils.getRandomString(30)
redisTemplate.opsForValue().set(user.uid, newCode, Duration.ofHours(1))
- redisTemplate.delete(user.phone)
+ redisTemplate.delete(user.phone!!)
if (!personid.isNullOrEmpty()) {
//绑定用户
val person = userService.findOnePersonByUserid(personid)
@@ -344,7 +377,10 @@
val p = SecurityContextHolder.getContext().authentication
val user = mobileApiService.findUserById(p.name)
?: return JsonResult.error("用户不存在,请注册")
- val phone = user.phone
+ if (user.phone.isNullOrEmpty()) {
+ return JsonResult.error("手机号不存在,请注册")
+ }
+ val phone = user.phone!!
val card = mobileApiService.findCardByNo(cardno)
?: return JsonResult.error("银行卡号有误")
if (card.userid.isNullOrEmpty() || card.status != TradeDict.STATUS_NORMAL) {
@@ -362,7 +398,7 @@
return JsonResult.error("该银行卡号已被绑定,如有疑问,请联系客服")
}
//call api
- var resp = citizencardPayService.bindCard(cardno, name, idtype, idno, phone);
+ var resp = citizencardPayService.bindCard(cardno, name, idtype, idno, phone)
if (resp.code != "0000") {
return JsonResult.error(resp.message)
}
@@ -381,7 +417,7 @@
resp.captcha
}
logger.error { code }
- redisTemplate.opsForValue().set(user.phone, code, Duration.ofMinutes(10))
+ redisTemplate.opsForValue().set(phone, code, Duration.ofMinutes(10))
var payseted = false
if (!user.paypwd.isNullOrEmpty()) {
payseted = true
@@ -498,7 +534,10 @@
fun signbxy(agree: String): JsonResult {
val p = SecurityContextHolder.getContext().authentication
val user = mobileApiService.findUserById(p.name)
- ?: return JsonResult.error("用户不存在,请注册")
+ ?: return JsonResult.error("手机号不存在,请注册")
+ if (user.phone.isNullOrEmpty()) {
+ return JsonResult.error("用户不存在,请注册")
+ }
var signed: String
if (!user.userid.isNullOrEmpty()) {
var card = mobileApiService.findCardByUserid(user.userid!!)
@@ -508,12 +547,12 @@
} else {
//call sign api
val person = userService.findOnePersonByUserid(card.userid)
- var resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, user.phone, YnrccUtil.TRANSTYPE_SIGNCARD)
+ var resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, user.phone!!, YnrccUtil.TRANSTYPE_SIGNCARD)
if (resp.code != "0000") {
return JsonResult.error(resp.message)
}
card.signed = true
- user.signedtime = DateUtil.getNow();
+ user.signedtime = DateUtil.getNow()
mobileApiService.saveCard(card)
mobileApiService.saveUser(user)
signed = TradeDict.STATUS_YES
@@ -587,6 +626,7 @@
?.put("signed", signed)
?.put("version","1")
?.put("minversion","1")
+ ?.put("versionmsg","1")
?.put("userid", if (user.userid.isNullOrEmpty()) "" else user.userid)!!.put("t", t)!!
}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/MobileUserDao.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/MobileUserDao.kt
index 47540f4..c7d8a0e 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/MobileUserDao.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/MobileUserDao.kt
@@ -6,6 +6,8 @@
@Repository
interface MobileUserDao : JpaRepository<TBMobileUser, String> {
+ fun findByLoginid(loginid: String): TBMobileUser?
+
fun findByPhone(phone: String): TBMobileUser?
fun findByUseridAndStatus(userid:String,status:String):List<TBMobileUser>?
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMobileUser.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMobileUser.kt
index afee39c..339e607 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMobileUser.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMobileUser.kt
@@ -1,14 +1,15 @@
package com.supwisdom.dlpay.mobile.domain
-import com.supwisdom.dlpay.api.bean.JsonResult
+import com.supwisdom.dlpay.api.util.DateUtil
import com.supwisdom.dlpay.framework.util.TradeDict
import org.hibernate.annotations.GenericGenerator
import org.springframework.security.core.GrantedAuthority
import org.springframework.security.core.userdetails.UserDetails
import javax.persistence.*
+import javax.validation.constraints.NotNull
@Entity
-@Table(name = "TB_MOBILE_USER")
+@Table(name = "TB_MOBILE_USER",indexes = [Index(name = "mobile_user_loginid_idx", columnList = "loginid", unique = true)])
class TBMobileUser : UserDetails {
override fun getAuthorities(): Collection<GrantedAuthority>? {
return this.auths
@@ -19,7 +20,7 @@
}
override fun getUsername(): String {
- return this.phone
+ return this.loginid
}
override fun isCredentialsNonExpired(): Boolean {
@@ -31,7 +32,10 @@
}
override fun isAccountNonExpired(): Boolean {
- return true
+ if(expiredate.isNullOrEmpty()){
+ return true
+ }
+ return this.expiredate!! >= DateUtil.getNow("yyyyMMdd")
}
override fun isAccountNonLocked(): Boolean {
@@ -41,17 +45,24 @@
@Transient
var auths: Collection<GrantedAuthority>? = null
-
@Id
@GenericGenerator(name = "idGenerator", strategy = "uuid")
@GeneratedValue(generator = "idGenerator")
@Column(name = "uid", nullable = false, length = 32)
var uid: String = ""
/**
- * 手机号
+ * 登录id
* */
- @Column(name = "phone", length = 15)
- var phone: String = ""
+
+ @Column(name = "loginid", length = 64)
+ @NotNull
+ var loginid: String = ""
+
+ /**
+ * 登录密码
+ * */
+ @Column(name = "loginpwd", length = 64)
+ var loginpwd: String = ""
/**
* 设备uuid
@@ -102,12 +113,6 @@
var status: String? = null
/**
- * 登录密码
- * */
- @Column(name = "loginpwd", length = 64)
- var loginpwd: String = ""
-
- /**
* 支付密码
* */
@Column(name = "paypwd", length = 64)
@@ -137,7 +142,6 @@
@Column(name = "paypwderrortime", length = 16)
var paypwderrortime: Long? = 0
-
/**
* jti
* */
@@ -145,11 +149,6 @@
var jti: String? = null
/**
- * 签约
- * */
- @Column(name = "issigned", length = 20)
- var issigned: String? = null
- /**
* 签约时间
* */
@Column(name = "signedtime", length = 20)
@@ -170,6 +169,15 @@
@Column(name = "tenantid", length = 32)
var tenantid:String? = null
+ @Column(name = "expiredate", length = 8)
+ var expiredate: String? = null
+
+ @Column(name = "email", length = 100)
+ var email: String? = null
+
+ @Column(name = "phone", length = 15)
+ var phone: String? = null
+
fun checkLoginpwdtime():Int{
if (this.loginpwderror >= 5 && (System.currentTimeMillis() - this.loginpwderrortime!!) < 1000 * 60 * 30) {
return -1
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
index 9412111..04a155a 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
@@ -134,7 +134,7 @@
}
var sendResult = client.sendTSMS (arrayOf(phone),
tempid, arrayOf(code),addserial, priority.toInt(),sign, UUID.randomUUID().toString())
- System.out.println("推送结果: $sendResult")
+ println("推送结果: $sendResult")
return if(sendResult==1||sendResult==110){
resp.retcode = "0"
resp.retmsg="成功"
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileUserServiceImpl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileUserServiceImpl.kt
index 2878eb3..0e9f0b9 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileUserServiceImpl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileUserServiceImpl.kt
@@ -17,9 +17,7 @@
companion object {
const val TIME_INTERVAL = 1000 * 6 * 30
}
-
val logger = KotlinLogging.logger { }
-
@Autowired
lateinit var mobileUserDao: MobileUserDao
@@ -28,7 +26,7 @@
if (username.isNullOrEmpty()) {
throw UsernameNotFoundException("用户不存在")
}
- val temp = mobileUserDao.findByPhone(username)
+ val temp = mobileUserDao.findByLoginid(username)
if (temp != null) {
if (temp.loginpwd.isEmpty()) {
throw UserLoginFailException("用户注册后未设置登录密码,请找回密码或重新注册")