From a2d3165e88a3b7975539183a3b420746150426f0 Mon Sep 17 00:00:00 2001 From: qiaowei Date: Wed, 14 Aug 2019 17:44:55 +0800 Subject: [PATCH] =?utf8?q?OAuth=E3=80=81=E6=89=8B=E6=9C=BAAPi=E4=BF=AE?= =?utf8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../com/supwisdom/oauth/ServletInitializer.kt | 1 - .../com/supwisdom/oauth/OAuthApplication.kt | 45 - .../com/supwisdom/oauth/bean/UserInfor.kt | 17 + .../com/supwisdom/oauth/dao/OAuthUserDao.kt | 4 + .../com/supwisdom/oauth/domain/OAuthUser.kt | 150 +- .../main/kotlin/com/supwisdom/oauth/oauth.kt | 28 +- .../kotlin/com/supwisdom/oauth/security.kt | 45 +- .../oauth/service/OAuthUserService.kt | 3 + .../service/impl/OAuthUserServiceImpl.kt | 28 +- .../main/kotlin/com/supwisdom/oauth/tenant.kt | 26 + .../supwisdom/oauth/tenant/HibernateConfig.kt | 53 + .../MultiTenantConnectionProviderImpl.kt | 65 + .../tenant/MultiTenantIdentifierResolver.kt | 22 + .../supwisdom/oauth/tenant/TenantContext.kt | 44 + .../oauth/tenant/TenantInterceptor.kt | 29 + .../kotlin/com/supwisdom/oauth/util/Test.kt | 19 + .../resources/static/css/aui-iconfont.ttf | Bin 0 -> 36352 bytes oauth/src/main/resources/static/css/aui.css | 2731 +++++++++++++++++ oauth/src/main/resources/static/css/index.css | 149 + .../resources/static/css/jquery-weui.min.css | 6 + .../main/resources/static/css/weui.min.css | 6 +- .../main/resources/static/img/icon_header.png | Bin 0 -> 13794 bytes oauth/src/main/resources/templates/index.html | 77 +- oauth/src/main/resources/templates/login.html | 71 +- .../dlpay/paysdk/proxy/UserProxy.java | 2 + .../paysdktest/CitizenCardPayProxyTest.java | 6 +- .../dlpay/framework/util/StringUtil.java | 3 + .../api/controller/user_api_controller.kt | 7 + .../api/service/impl/kafka_service_impl.kt | 7 +- .../dlpay/mobile/AuthLoginHandler.kt | 8 +- .../com/supwisdom/dlpay/mobile/MobileApi.kt | 78 +- .../dlpay/mobile/dao/MobileUserDao.kt | 2 + .../dlpay/mobile/domain/TBMobileUser.kt | 48 +- .../service/impl/MobileApiServiceImpl.kt | 2 +- .../service/impl/MobileUserServiceImpl.kt | 4 +- 35 files changed, 3614 insertions(+), 172 deletions(-) create mode 100644 oauth/src/main/kotlin/com/supwisdom/oauth/bean/UserInfor.kt create mode 100644 oauth/src/main/kotlin/com/supwisdom/oauth/tenant.kt create mode 100644 oauth/src/main/kotlin/com/supwisdom/oauth/tenant/HibernateConfig.kt create mode 100644 oauth/src/main/kotlin/com/supwisdom/oauth/tenant/MultiTenantConnectionProviderImpl.kt create mode 100644 oauth/src/main/kotlin/com/supwisdom/oauth/tenant/MultiTenantIdentifierResolver.kt create mode 100644 oauth/src/main/kotlin/com/supwisdom/oauth/tenant/TenantContext.kt create mode 100644 oauth/src/main/kotlin/com/supwisdom/oauth/tenant/TenantInterceptor.kt create mode 100644 oauth/src/main/kotlin/com/supwisdom/oauth/util/Test.kt create mode 100755 oauth/src/main/resources/static/css/aui-iconfont.ttf create mode 100644 oauth/src/main/resources/static/css/aui.css create mode 100644 oauth/src/main/resources/static/css/index.css create mode 100755 oauth/src/main/resources/static/css/jquery-weui.min.css mode change 100644 => 100755 oauth/src/main/resources/static/css/weui.min.css create mode 100644 oauth/src/main/resources/static/img/icon_header.png 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 0000000000000000000000000000000000000000..2c9d80e96cb7190639cd76f2dc7cb3cad69fac43 GIT binary patch literal 36352 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 .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 0000000000000000000000000000000000000000..b3a7ebed756a712ed949c506adad52bd032c6369 GIT binary patch literal 13794 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 + + + + -用户中心 + +
+
+
+
+
+ +
+
+
[[${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("用户注册后未设置登录密码,请找回密码或重新注册") -- 2.17.1