From: qiaowei Date: Wed, 14 Aug 2019 09:44:55 +0000 (+0800) Subject: OAuth、手机APi修改 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=e91b997b2d6feca875729d75f425e8e60d0f8636;p=epayment%2Ffood_payapi.git 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 5df64f0a..3fc369d7 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 7d34f95a..8339e742 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 io.lettuce.core.ReadFrom 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.core.RedisTemplate 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 @@ class HttpSessionConfig { } } -@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 00000000..26cb9c2d --- /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 4355fcff..c706e810 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 @@ import org.springframework.stereotype.Repository @Repository interface OAuthUserDao : JpaRepository { 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 481c46af..ce3c0c60 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 +/* +* +* 与支付平台中的 MobileUser 一致 +* +* */ + @Entity -@Table(name = "TB_OAUTH_USER", indexes = [Index(name = "oauth_user_loginid_idx", columnList = "loginid", unique = true)]) +@Table(name = "TB_MOBILE_USER", indexes = [Index(name = "oauth_user_loginid_idx", columnList = "loginid", unique = true)]) class OAuthUser : UserDetails { - override fun getAuthorities(): Collection? { return this.auths } override fun isEnabled(): Boolean { - return "normal" != this.status + return "closed" != this.status } override fun getUsername(): String { @@ -32,11 +37,14 @@ class OAuthUser : UserDetails { } 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 @@ class OAuthUser : UserDetails { @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 /** * 最后登录时间 @@ -73,6 +111,11 @@ class OAuthUser : UserDetails { @Column(name = "lastloginplatform", length = 100) var lastloginplatform: String? = null + /** + * 状态 + * */ + @Column(name = "status", length = 16) + var status: String? = null /** * 支付密码 * */ @@ -103,18 +146,91 @@ class OAuthUser : UserDetails { @Column(name = "paypwderrortime", length = 16) 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 60255ad1..a5253c4a 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.context.annotation.Configuration 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.OAuth2Authentication 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 @@ class UserInforController { } @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,15 +123,11 @@ class OAuth2Config { @Configuration @EnableAuthorizationServer - class AuthorizationServerConfigure : AuthorizationServerConfigurerAdapter() { @Autowired private lateinit var redisConnectionFactory: RedisConnectionFactory - @Autowired - private lateinit var authenticationManager: AuthenticationManager - @Autowired lateinit var passwordBCryptConfig: PasswordBCryptConfig @@ -140,7 +151,6 @@ class OAuth2Config { 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 191178bf..d3294bbb 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 @@ package com.supwisdom.oauth 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.annotation.web.configuration.WebSecur 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 @@ class AuthLoginFailHandler : SimpleUrlAuthenticationFailureHandler() { val errmsg = when (exception) { is BadCredentialsException -> "手机号或密码错误" is LockedException -> "账户被锁定" + is DisabledException -> "用户状态错误" + is AccountExpiredException -> "用户有效期已过期" else -> exception.message!! } val temp = request.getParameter("username") @@ -82,16 +98,15 @@ class AuthLoginFailHandler : SimpleUrlAuthenticationFailureHandler() { } } - - @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) class WebSecurityConfig { companion object { - @Configuration class MvcWebSecurityConfigurationAdapter : WebSecurityConfigurerAdapter() { + @Autowired + lateinit var dataSource: DataSource @Autowired lateinit var authLoginFailHandler: AuthLoginFailHandler @Autowired @@ -99,21 +114,16 @@ class WebSecurityConfig { @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 @@ class WebSecurityConfig { 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 5df80ef6..19056129 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 @@ interface OAuthUserService:UserDetailsService{ 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 47364bdc..e802094b 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 @@ class OAuthUserServiceImpl :OAuthUserService { } @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 @@ class OAuthUserServiceImpl :OAuthUserService { temp.loginpwderrortime = null oAuthUserDao.save(temp) } - val authorities: Collection = AuthorityUtils.createAuthorityList("ROLE_USER") + val authorities: Collection = AuthorityUtils.createAuthorityList("ROLE_USER","ROLE_ADMIN") temp.auths = authorities } else { throw UsernameNotFoundException("用户不存在") @@ -57,4 +69,16 @@ class OAuthUserServiceImpl :OAuthUserService { 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 + 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 00000000..ef0c5b44 --- /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 00000000..7e9d5914 --- /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() + 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 00000000..32f0da5f --- /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 unwrap(unwrapType: Class): 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 00000000..8e793dde --- /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 00000000..2d6116fe --- /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() + + 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 00000000..f7102282 --- /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 00000000..73033905 --- /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) { + + } + } + + private fun min(values: Array?): T? where T : Comparable { + 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 00000000..2c9d80e9 Binary files /dev/null and b/oauth/src/main/resources/static/css/aui-iconfont.ttf 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 00000000..c77e0832 --- /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 00000000..b23e33c1 --- /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 00000000..145c3362 --- /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 380d74fa..1371e185 --- 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 00000000..b3a7ebed Binary files /dev/null and b/oauth/src/main/resources/static/img/icon_header.png differ diff --git a/oauth/src/main/resources/templates/index.html b/oauth/src/main/resources/templates/index.html index 6efd74e6..faf49347 100644 --- a/oauth/src/main/resources/templates/index.html +++ b/oauth/src/main/resources/templates/index.html @@ -6,10 +6,85 @@ + + + + -用户中心 + +
+
+
+
+
+ +
+
+
[[${uinfor.name}]]
+
+
[[${loginid}]]
+
+
+
+
+
+
+
+
+
+ [[${uinfor.availbal}]] 元 +
余额
+
+
+ 0 分 +
积分
+
+
+ 0 个 +
优惠
+
+
+
+
+
    +
  • +
    +
    交易流水
    +
    +
  • +
+
    +
  • +
    +
    消费限额
    +
    +
  • +
+
    +
  • +
    +
    登录密码
    +
    +
  • +
  • +
    +
    支付密码
    +
    +
  • +
+ +
\ 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 8993b297..263fb725 100644 --- a/oauth/src/main/resources/templates/login.html +++ b/oauth/src/main/resources/templates/login.html @@ -10,36 +10,53 @@ + + -

- -
统一身份认证
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
- + - +
+

+ +
    +
  • +
    +
    + +
    +
    + +
    +
    +
  • +
  • +
    +
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+ + 忘记密码? + +
- \ No newline at end of file + + 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 48545700..a8e7808a 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 @@ public interface UserProxy { @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 59eba97e..9033d453 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 class CitizenCardPayProxyTest { 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 ba8b0923..ec68890d 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 @@ public class StringUtil { * 手机号遮掩中间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 36369872..b2dac9a9 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 @@ class UserAPIController { .fail(ret.retcode, ret.retmsg)) } } + + @PostMapping("/testmsg") + fun testmsg(): ResponseEntity { + 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 1d75fd39..290bfaa1 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 @@ class KafkaSendMsgServiceImpl:KafkaSendMsgService{ msgDao.save(msg) return } + msg = msgDao.save(msg) var uids = "" musers.forEach { uids += "${it.uid}," @@ -64,11 +65,11 @@ class KafkaSendMsgServiceImpl:KafkaSendMsgService{ 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 16f17427..c795cbdd 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 @@ class AuthLoginSuccessHandler : SimpleUrlAuthenticationSuccessHandler() { 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 @@ class AuthLoginFailHandler : SimpleUrlAuthenticationFailureHandler() { } 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 22ece915..1134463a 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 @@ class ApiInit { 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 @@ class ApiInit { 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 @@ class ApiV1 { @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 @@ class ApiV1 { 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 @@ class ApiV1 { 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 @@ class ApiV1 { 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 @@ class ApiV1 { 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 @@ class ApiV1 { 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 @@ class ApiV1 { 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 @@ class ApiV1 { } 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 @@ class ApiV1 { ?.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 47540f40..c7d8a0eb 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 @@ import org.springframework.stereotype.Repository @Repository interface MobileUserDao : JpaRepository { + fun findByLoginid(loginid: String): TBMobileUser? + fun findByPhone(phone: String): TBMobileUser? fun findByUseridAndStatus(userid:String,status:String):List? 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 afee39c1..339e607b 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? { return this.auths @@ -19,7 +20,7 @@ class TBMobileUser : UserDetails { } override fun getUsername(): String { - return this.phone + return this.loginid } override fun isCredentialsNonExpired(): Boolean { @@ -31,7 +32,10 @@ class TBMobileUser : UserDetails { } 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 @@ class TBMobileUser : UserDetails { @Transient var auths: Collection? = 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 @@ -101,12 +112,6 @@ class TBMobileUser : UserDetails { @Column(name = "status", length = 16) var status: String? = null - /** - * 登录密码 - * */ - @Column(name = "loginpwd", length = 64) - var loginpwd: String = "" - /** * 支付密码 * */ @@ -137,18 +142,12 @@ class TBMobileUser : UserDetails { @Column(name = "paypwderrortime", length = 16) var paypwderrortime: Long? = 0 - /** * jti * */ @Column(name = "jti", length = 64) var jti: String? = null - /** - * 签约 - * */ - @Column(name = "issigned", length = 20) - var issigned: String? = null /** * 签约时间 * */ @@ -170,6 +169,15 @@ class TBMobileUser : UserDetails { @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 94121110..04a155ae 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 @@ class MobileApiServiceImpl : MobileApiService { } 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 2878eb32..0e9f0b9a 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 @@ class MobileUserServiceImpl : MobileUserService { companion object { const val TIME_INTERVAL = 1000 * 6 * 30 } - val logger = KotlinLogging.logger { } - @Autowired lateinit var mobileUserDao: MobileUserDao @@ -28,7 +26,7 @@ class MobileUserServiceImpl : MobileUserService { if (username.isNullOrEmpty()) { throw UsernameNotFoundException("用户不存在") } - val temp = mobileUserDao.findByPhone(username) + val temp = mobileUserDao.findByLoginid(username) if (temp != null) { if (temp.loginpwd.isEmpty()) { throw UserLoginFailException("用户注册后未设置登录密码,请找回密码或重新注册")