迁移大屏代码及删除前端代码

This commit is contained in:
haozq 2025-12-18 18:54:35 +08:00
parent 9911b756d7
commit f22e0fa0e3
482 changed files with 1630 additions and 134476 deletions

View File

@ -3,8 +3,6 @@
<component name="Encoding">
<file url="file://$PROJECT_DIR$/HnRealNameBmw/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/HnRealNameBmw/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/HnRealNameMw/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/HnRealNameMw/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/hn-czl-service/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/hn-czl-service/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/hn-gateway/bonus-api/bonus-api-system/src/main/java" charset="UTF-8" />
@ -49,6 +47,8 @@
<file url="file://$PROJECT_DIR$/hn-ldlz/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/hn_czl_screen/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/hn_czl_screen/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/real-name-screen/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/real-name-screen/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/realname-app/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/realname-app/src/main/resources" charset="UTF-8" />
</component>

View File

@ -12,6 +12,7 @@
<option value="$PROJECT_DIR$/hn-czl-service/pom.xml" />
<option value="$PROJECT_DIR$/HnRealNameManageApp - 副本/pom.xml" />
<option value="$PROJECT_DIR$/realname-app/pom.xml" />
<option value="$PROJECT_DIR$/real-name-screen/pom.xml" />
</list>
</option>
</component>

View File

@ -2,6 +2,14 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/hn-gateway/bonus-api/bonus-api.iml" filepath="$PROJECT_DIR$/hn-gateway/bonus-api/bonus-api.iml" />
<module fileurl="file://$PROJECT_DIR$/hn-gateway/bonus-api/bonus-api-system/bonus-api-system.iml" filepath="$PROJECT_DIR$/hn-gateway/bonus-api/bonus-api-system/bonus-api-system.iml" />
<module fileurl="file://$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-config/bonus-common-config.iml" filepath="$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-config/bonus-common-config.iml" />
<module fileurl="file://$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-datasource/bonus-common-datasource.iml" filepath="$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-datasource/bonus-common-datasource.iml" />
<module fileurl="file://$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-log/bonus-common-log.iml" filepath="$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-log/bonus-common-log.iml" />
<module fileurl="file://$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-redis/bonus-common-redis.iml" filepath="$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-redis/bonus-common-redis.iml" />
<module fileurl="file://$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-security/bonus-common-security.iml" filepath="$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-security/bonus-common-security.iml" />
<module fileurl="file://$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-sensitive/bonus-common-sensitive.iml" filepath="$PROJECT_DIR$/hn-gateway/bonus-common/bonus-common-sensitive/bonus-common-sensitive.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/hn_cloud_service.iml" filepath="$PROJECT_DIR$/.idea/hn_cloud_service.iml" />
</modules>
</component>

File diff suppressed because it is too large Load Diff

View File

@ -63,7 +63,11 @@
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- OpenFeign 依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- 2. Spring Boot 核心依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
* 启动类
*
@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableScheduling // 启动定时任务
@EnableTransactionManagement//启动事务
@EnableDiscoveryClient
@EnableFeignClients
public class HnRealNameBmwApplication {
public static void main(String[] args) {
SpringApplication.run(HnRealNameBmwApplication.class, args);

View File

@ -0,0 +1,15 @@
package com.bonus.hnrn.rnbmw.login.config;
import feign.Request;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignTimeoutConfig {
@Bean
public Request.Options feignOptions() {
// 连接超时 5 读取超时 60
return new Request.Options(5000, 60000);
}
}

View File

@ -0,0 +1,20 @@
package com.bonus.hnrn.rnbmw.login.controller;
import com.bonus.hnrn.rnbmw.login.vo.LoginForm;
import feign.Headers;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Map;
// value目标服务名service-b
@FeignClient(value = "bonus-czldp")
public interface CzlScreenServiceFeignClient {
@PostMapping("publicLogin/innerLogin")
@Headers("Content-Type: application/json")
Map<String,Object> innerLogin(@RequestBody LoginForm loginForm);
}

View File

@ -0,0 +1,28 @@
package com.bonus.hnrn.rnbmw.login.controller;
import com.bonus.hnrn.rnbmw.login.vo.AllUserVo;
import com.bonus.hnrn.rnbmw.login.vo.LoginForm;
import feign.Headers;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Map;
// value目标服务名service-b
@FeignClient(value = "bonus-czl")
public interface CzlServiceFeignClient {
@PostMapping("publicLogin/innerLogin")
@Headers("Content-Type: application/json")
Map<String,Object> innerLogin(@RequestBody LoginForm loginForm);
@PostMapping("publicLogin/addUser")
@Headers("Content-Type: application/json")
Map<String,Object> addUser(@RequestBody AllUserVo loginForm);
}

View File

@ -0,0 +1,25 @@
package com.bonus.hnrn.rnbmw.login.controller;
import com.bonus.hnrn.rnbmw.login.vo.AllUserVo;
import com.bonus.hnrn.rnbmw.login.vo.LoginForm;
import feign.Headers;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Map;
// value目标服务名service-b
@FeignClient(value = "bonus-ldlz")
public interface LdlzServiceFeignClient {
@PostMapping("publicLogin/innerLogin")
@Headers("Content-Type: application/json")
Map<String,Object> innerLogin(@RequestBody LoginForm loginForm);
@PostMapping("publicLogin/addUser")
@Headers("Content-Type: application/json")
Map<String,Object> addUser(@RequestBody AllUserVo loginForm);
}

View File

@ -2,35 +2,86 @@ package com.bonus.hnrn.rnbmw.login.controller;
import com.bonus.hnrn.rnbmw.login.service.LoginService;
import com.bonus.hnrn.rnbmw.login.vo.AjaxResult;
import com.bonus.hnrn.rnbmw.login.vo.LoginForm;
import com.bonus.hnrn.rnbmw.login.vo.LoginFormVo;
import com.bonus.hnrn.rnbmw.login.vo.PublicUserVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
@Api(tags = "用户登录")
@RestController
@RequestMapping("/allSystem/")
@Slf4j
public class LoginController {
@Autowired
private LoginService loginService;
@Autowired
private CzlServiceFeignClient czlServiceFeignClient;
@Autowired
private LdlzServiceFeignClient ldlzServiceFeignClient;
@Autowired
private SmzScreenServiceFeignClient smzScreenServiceFeignClient;
@Autowired
private CzlScreenServiceFeignClient czlScreenServiceFeignClient;
/**
* 系统登录
* @param bean
* @return
*/
@PostMapping("login")
@ApiOperation(value = "系统登录")
public AjaxResult login(@RequestBody LoginFormVo bean) {
return loginService.login(bean);
Map<String, Object> map= loginService.login(bean);
return AjaxResult.success(map);
}
@PostMapping("innerLogin")
@ApiOperation(value = "系统登录")
public AjaxResult innerLogin(@RequestBody LoginFormVo bean) {
Map<String, Object> map= loginService.innerLoginlogin(bean);
try{
LoginForm loginForm = new LoginForm();
loginForm.setUsername(bean.getUsername());
//登录
Map<String,Object> map1= czlServiceFeignClient.innerLogin(loginForm);
//获取
Map<String,Object> map2= ldlzServiceFeignClient.innerLogin(loginForm);
Map<String,Object> map3= smzScreenServiceFeignClient.innerLogin(loginForm);
Map<String,Object> map4= czlScreenServiceFeignClient.innerLogin(loginForm);
map.put("czl",map1.get("obj"));
map.put("ldlz",map2.get("token"));
map.put("smzweb",map3.get("user"));
map.put("czlweb",map4.get("obj"));
return AjaxResult.success(map);
}catch (Exception e){
log.error(e.toString(),e);
map.put("msg","请求超时");
return AjaxResult.error("请求超时",e.toString());
}
}
}

View File

@ -54,6 +54,15 @@ public class PublicLoginController {
@Resource(name = "RegisterService")
private RegisterService registerService;
/**
* 系统登录
* @param token
* @param
*/
@PostMapping("getMenuData")
public AjaxResult getMenuData(@RequestBody LoginForm token) {
return allUserService.getMenuData(token);
}
/**
* 系统登录

View File

@ -0,0 +1,15 @@
package com.bonus.hnrn.rnbmw.login.controller;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced // 关键开启负载均衡支持通过服务名调用
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

View File

@ -0,0 +1,20 @@
package com.bonus.hnrn.rnbmw.login.controller;
import com.bonus.hnrn.rnbmw.login.vo.LoginForm;
import feign.Headers;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Map;
// value目标服务名service-b
@FeignClient(value = "bonus-realname-web")
public interface SmzScreenServiceFeignClient {
@PostMapping("publicLogin/innerLogin")
@Headers("Content-Type: application/json")
Map<String,Object> innerLogin(@RequestBody LoginForm loginForm);
}

View File

@ -1,6 +1,7 @@
package com.bonus.hnrn.rnbmw.login.dao;
import com.bonus.hnrn.rnbmw.login.vo.AllUserVo;
import com.bonus.hnrn.rnbmw.login.vo.LoginForm;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@ -99,5 +100,10 @@ public interface AllUserDao {
*/
void delUserRole(AllUserVo vo);
/**
* 查询用户权限菜单
* @param token
* @return
*/
AllUserVo getMenuData(LoginForm token);
}

View File

@ -1,8 +1,11 @@
package com.bonus.hnrn.rnbmw.login.service;
import com.bonus.hnrn.rnbmw.login.controller.CzlServiceFeignClient;
import com.bonus.hnrn.rnbmw.login.controller.LdlzServiceFeignClient;
import com.bonus.hnrn.rnbmw.login.dao.AllUserDao;
import com.bonus.hnrn.rnbmw.login.vo.AjaxResult;
import com.bonus.hnrn.rnbmw.login.vo.AllUserVo;
import com.bonus.hnrn.rnbmw.login.vo.LoginForm;
import com.bonus.hnrn.rnbmw.manager.utils.StringHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -22,6 +25,12 @@ public class AllUserService {
@Autowired
private BCryptPasswordEncoder passwordEncoder;
@Autowired
private CzlServiceFeignClient czlServiceFeignClient;
@Autowired
private LdlzServiceFeignClient ldlzServiceFeignClient;
/**
* 查询数据表格集合
* @param params
@ -85,9 +94,10 @@ public class AllUserService {
String password= passwordEncoder.encode(vo.getPassword());
vo.setPassword(password);
int num=allUserDao.addUserData(vo);
if(num>0 &&(vo.getType().contains("4") || vo.getType().contains("5")) ){
if(num>0 &&(vo.getDataType().contains("4") || vo.getDataType().contains("5")) ){
addSmzUser(vo);
}
//
return AjaxResult.success("添加成功");
}catch (Exception e){
log.error(e.toString(),e);
@ -95,6 +105,15 @@ public class AllUserService {
return AjaxResult.error("添加失败");
}
public void addCZlUser(AllUserVo vo){
czlServiceFeignClient.addUser(vo);
}
public void addLdlz(AllUserVo vo){
ldlzServiceFeignClient.addUser(vo);
}
/**
* 添加实名制用户细腻系
* @param vo
@ -142,13 +161,12 @@ public class AllUserService {
if(isCz>0){
return AjaxResult.error("身份证号码已被注册");
}
int num=allUserDao.updateUserData(vo);
if(num>0){
addSmzUser(vo);
return AjaxResult.success("修改成功");
}
}
int num=allUserDao.updateUserData(vo);
if(num>0 &&(vo.getDataType().contains("4") || vo.getDataType().contains("5")) ){
addSmzUser(vo);
}
return AjaxResult.success("修改成功");
}catch (Exception e){
log.error(e.toString(),e);
}
@ -227,16 +245,22 @@ public class AllUserService {
/**
* 查询详情
*
* @param vo
* @return
*/
public AjaxResult getDetails(AllUserVo vo) {
AllUserVo data=allUserDao.getUserData(vo);
return AjaxResult.success(data);
}
public AjaxResult getMenuData(LoginForm token) {
try{
AllUserVo data=allUserDao.getUserData(vo);
AllUserVo data=allUserDao.getMenuData(token);
return AjaxResult.success(data);
}catch (Exception e){
log.error(e.toString(),e);
}
return AjaxResult.success(vo);
return AjaxResult.success(token);
}
}

View File

@ -30,7 +30,7 @@ public class LoginService {
* @param bean
* @return
*/
public AjaxResult login(LoginFormVo bean) {
public Map<String, Object> login(LoginFormVo bean) {
try{
String username = AESCBCUtils.decrypt(bean.getUsername());
String password = AESCBCUtils.decrypt(bean.getPassword());
@ -48,14 +48,37 @@ public class LoginService {
if (!passwordEncoder.matches(password, loginFormVo.getPassword())) {
return AjaxResult.error("密码错误!");
}
//密码错误
Map<String, Object> map=sysTokenService.createToken(loginFormVo);
return AjaxResult.success(map);
return sysTokenService.createToken(loginFormVo);
}catch (Exception e){
log.error(e.toString(),e);
}
return AjaxResult.error("请输入正确的参数");
}
public Map<String, Object> innerLoginlogin(LoginFormVo bean) {
try{
String username = bean.getUsername();
String password = bean.getPassword();
bean.setUsername(username);
bean.setPassword(password);
if(StringUtil.isEmpty(bean.getUsername()) ) {
return AjaxResult.error("请输入账号");
}
System.err.println(passwordEncoder.encode(password));
System.err.println(password);
LoginFormVo loginFormVo = mapper.getUserLogin(bean);
if(loginFormVo == null) {
return AjaxResult.error("用户不存在!");
}
// if (!passwordEncoder.matches(password, loginFormVo.getPassword())) {
// return AjaxResult.error("密码错误!");
// }
return sysTokenService.createToken(loginFormVo);
}catch (Exception e){
log.error(e.toString(),e);
}
return AjaxResult.error("请输入正确的参数");
}

View File

@ -68,4 +68,6 @@ public class PublicLoginService {
log.error(e.toString(),e);
}
}
}

View File

@ -67,7 +67,7 @@ public class BnsSecurityConfig extends WebSecurityConfigurerAdapter {
http.authorizeRequests()
.antMatchers("/", "/gzRealName/**","/attendance/**","/*.html", "/favicon.ico", "/css/**", "/js/**", "/fonts/**", "/layui/**", "/layui-v2.9.2/**","/layui2.3.6/**", "/layer-v3.1.0/**","/img/**",
"/v2/api-docs/**", "/swagger-resources/**", "/webjars/**", "/pages/**", "/druid/**","/interface/**","/publicLogin/**",
"/statics/**","/download/**","/allSystem/login","/allUser/**","/register/**","/companyManager/resetUserPwd","/getCode/**","/OwnContract/updateDownloadState")
"/statics/**","/download/**","/allSystem/**","/allUser/**","/register/**","/companyManager/resetUserPwd","/getCode/**","/OwnContract/updateDownloadState")
.permitAll().
anyRequest().authenticated();
http.formLogin().loginProcessingUrl("/login")

View File

@ -13,16 +13,16 @@ import org.apache.ibatis.annotations.Select;
@Mapper
public interface DictDao {
@Select("select * from t_dict t where t.id = #{id}")
@Select("select * from bns_smz_t_dict t where t.id = #{id}")
Dict getById(Long id);
@Delete("delete from t_dict where id = #{id}")
@Delete("delete from bns_smz_t_dict where id = #{id}")
int delete(Long id);
int update(Dict dict);
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into t_dict(type, k, val, createTime, updateTime) values(#{type}, #{k}, #{val}, now(), now())")
@Insert("insert into bns_smz_t_dict(type, k, val, createTime, updateTime) values(#{type}, #{k}, #{val}, now(), now())")
int save(Dict dict);
int count(@Param("params") Map<String, Object> params);
@ -30,9 +30,9 @@ public interface DictDao {
List<Dict> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
@Param("limit") Integer limit);
@Select("select * from t_dict t where t.type = #{type} and k = #{k}")
@Select("select * from bns_smz_t_dict t where t.type = #{type} and k = #{k}")
Dict getByTypeAndK(@Param("type") String type, @Param("k") String k);
@Select("select * from t_dict t where t.type = #{type}")
@Select("select * from bns_smz_t_dict t where t.type = #{type}")
List<Dict> listByType(String type);
}

View File

@ -19,6 +19,8 @@ spring:
cloud:
nacos:
config:
# server-addr: 192.168.0.14:18848
# namespace: e0337b55-080d-456e-8449-46d68dceee5b
server-addr: 127.0.0.1:8848
namespace: 289db019-a290-4903-ac1a-5d341af8b272
# namespace: 07736b2e-9922-415e-8624-50b275be556e
@ -29,11 +31,16 @@ spring:
shared-dataids: application-dev.yml
# nacos.core.auth.enabled=true 开启权限验证
discovery:
# server-addr: 192.168.0.14:18848
# namespace: e0337b55-080d-456e-8449-46d68dceee5b
# nacos地址
server-addr: 127.0.0.1:8848
namespace: 289db019-a290-4903-ac1a-5d341af8b272
# namespace: 07736b2e-9922-415e-8624-50b275be556e
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
logging:
level:
root: INFO

View File

@ -29,8 +29,9 @@
</insert>
<update id="updateUserData">
update bns_smz_all_system_user set user_name=#{userName},data_type=#{dataType},
update_time=now(),is_admin=#{isAdmin},id_card=#{idCard},json_data=#{jsonData}
update_time=now(),is_admin=#{isAdmin},id_card=#{idCard},json_data=#{jsonData},
user_phone=#{userPhone}
where id=#{id}
</update>
<update id="updatePassword">
update bns_smz_all_system_user set password=#{newPassword}
@ -118,5 +119,13 @@
FROM bns_smz_sys_user
WHERE is_active=1 and phone=#{loginName}
</select>
<select id="getMenuData" resultType="com.bonus.hnrn.rnbmw.login.vo.AllUserVo">
select id , user_name userName, login_name loginName,
password password, data_type dataType, create_time createTime,
update_time updateTime, is_admin isAdmin, id_card idCard,
json_data jsonData, user_phone userPhone
from bns_smz_all_system_user
where user_name=#{username}
</select>
</mapper>

View File

@ -5,7 +5,7 @@
<mapper namespace="com.bonus.hnrn.rnbmw.person.dao.CertificateDao">
<insert id="addCertificateType">
INSERT INTO `bm_certificate_type` ( NAME, is_upload, remark,certificate_version,review_num,one_review_interval,
INSERT INTO `bns_smz_bm_certificate_type` ( NAME, is_upload, remark,certificate_version,review_num,one_review_interval,
two_review_interval,three_review_interval)
VALUES(#{name},#{isUpload},#{remark},#{certificateVersion},#{recheckNum},#{recheckInterval1},#{recheckInterval2},#{recheckInterval3})
</insert>
@ -43,7 +43,7 @@
</insert>
<update id="updateCertificateType">
UPDATE `bm_certificate_type`
UPDATE `bns_smz_bm_certificate_type`
SET NAME = #{name},
is_upload = #{isUpload},
remark = #{remark},
@ -97,7 +97,7 @@
</update>
<delete id="delCertificateTypeById">
UPDATE `bm_certificate_type` SET
UPDATE `bns_smz_bm_certificate_type` SET
is_active = '0'
WHERE
id = #{id}
@ -117,7 +117,7 @@
SELECT
count(1)
FROM
`bm_certificate_type`
`bns_smz_bm_certificate_type`
WHERE is_active = '1'
<if test="params != null and params.size()>0">
<if test="params.keyWord != null and params.keyWord !=''">
@ -140,7 +140,7 @@
two_review_interval as recheckInterval2,
three_review_interval as recheckInterval3
FROM
`bm_certificate_type`
`bns_smz_bm_certificate_type`
WHERE is_active = '1'
<if test="params != null and params.size()>0">
<if test="params.keyWord != null and params.keyWord !=''">
@ -164,7 +164,7 @@
two_review_interval as recheckInterval2,
three_review_interval as recheckInterval3
FROM
`bm_certificate_type`
`bns_smz_bm_certificate_type`
WHERE id = #{id} and is_active = '1'
</select>
@ -714,7 +714,7 @@
</select>
<select id="getCertificateTypeByName" resultType="java.lang.Integer">
select count(1) from `bm_certificate_type` where `name` = #{name} and certificate_version = #{certificateVersion} and is_active = '1'
select count(1) from `bns_smz_bm_certificate_type` where `name` = #{name} and certificate_version = #{certificateVersion} and is_active = '1'
</select>
<select id="getWorkerRecordLists"
resultType="com.bonus.hnrn.rnbmw.person.entity.WorkerCertificateUploadBean">

View File

@ -46,7 +46,7 @@
pro_id,
bmr.org_id
FROM bns_smz_bm_worker_give bwg,
bm_worker_record bmr
bns_smz_bm_worker_record bmr
WHERE
bwg.IS_ACTIVE = '1'
AND bmr.ID_NUMBER = bwg.id_number

View File

@ -1,256 +0,0 @@
2025-12-02 18:18:42,737 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -[LoggingFailureAnalysisReporter.java:40]-
***************************
APPLICATION FAILED TO START
***************************
Description:
Field passwordEncoder in com.bonus.hnrn.rnmw.person.service.CompanyServiceImp required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
2025-12-02 18:21:04,396 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -[LoggingFailureAnalysisReporter.java:40]-
***************************
APPLICATION FAILED TO START
***************************
Description:
Field passwordEncoder in com.bonus.hnrn.rnmw.person.service.CompanyServiceImp required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
2025-12-02 18:22:21,839 [main] ERROR o.s.b.w.e.tomcat.TomcatStarter -[TomcatStarter.java:61]- Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name 'tokenFilter': Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [com.bonus.hnrn.rnmw.core.config.TokenFilter] from ClassLoader [sun.misc.Launcher$AppClassLoader@659e0bfd]
2025-12-02 18:22:21,971 [main] ERROR o.s.boot.SpringApplication -[SpringApplication.java:843]- Application run failed
org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:163)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:577)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:338)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332)
at com.bonus.hnrn.rnmw.RnmwApplication.main(RnmwApplication.java:12)
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:142)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:104)
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:450)
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:199)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:182)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:160)
... 8 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tokenFilter': Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [com.bonus.hnrn.rnmw.core.config.TokenFilter] from ClassLoader [sun.misc.Launcher$AppClassLoader@659e0bfd]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:289)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1284)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1201)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:212)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAsRegistrationBean(ServletContextInitializerBeans.java:175)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAsRegistrationBean(ServletContextInitializerBeans.java:170)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAdaptableBeans(ServletContextInitializerBeans.java:155)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:87)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:260)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:234)
at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:53)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5219)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:486)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:123)
... 13 common frames omitted
Caused by: java.lang.IllegalStateException: Failed to introspect Class [com.bonus.hnrn.rnmw.core.config.TokenFilter] from ClassLoader [sun.misc.Launcher$AppClassLoader@659e0bfd]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481)
at org.springframework.util.ReflectionUtils.doWithLocalMethods(ReflectionUtils.java:321)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:267)
... 53 common frames omitted
Caused by: java.lang.NoClassDefFoundError: com/bonus/hnrn/rnmw/core/entity/UserBean
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463)
... 55 common frames omitted
Caused by: java.lang.ClassNotFoundException: com.bonus.hnrn.rnmw.core.entity.UserBean
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:359)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 59 common frames omitted
2025-12-02 18:23:08,162 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -[LoggingFailureAnalysisReporter.java:40]-
***************************
APPLICATION FAILED TO START
***************************
Description:
Field passwordEncoder in com.bonus.hnrn.rnmw.person.service.CompanyServiceImp required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
2025-12-02 18:23:38,895 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -[LoggingFailureAnalysisReporter.java:40]-
***************************
APPLICATION FAILED TO START
***************************
Description:
Field passwordEncoder in com.bonus.hnrn.rnmw.person.service.CompanyServiceImp required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
2025-12-02 18:24:37,190 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -[LoggingFailureAnalysisReporter.java:40]-
***************************
APPLICATION FAILED TO START
***************************
Description:
Field passwordEncoder in com.bonus.hnrn.rnmw.person.service.CompanyServiceImp required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
2025-12-02 18:25:29,584 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -[LoggingFailureAnalysisReporter.java:40]-
***************************
APPLICATION FAILED TO START
***************************
Description:
Field passwordEncoder in com.bonus.hnrn.rnmw.person.service.CompanyServiceImp required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
2025-12-02 18:26:10,586 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -[LoggingFailureAnalysisReporter.java:40]-
***************************
APPLICATION FAILED TO START
***************************
Description:
Field passwordEncoder in com.bonus.hnrn.rnmw.person.service.CompanyServiceImp required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
2025-12-02 18:41:38,153 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -[LoggingFailureAnalysisReporter.java:40]-
***************************
APPLICATION FAILED TO START
***************************
Description:
Field passwordEncoder in com.bonus.hnrn.rnmw.person.service.CompanyServiceImp required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
2025-12-02 18:42:23,127 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -[LoggingFailureAnalysisReporter.java:40]-
***************************
APPLICATION FAILED TO START
***************************
Description:
Field passwordEncoder in com.bonus.hnrn.rnmw.person.service.CompanyServiceImp required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
2025-12-02 18:44:37,281 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -[LoggingFailureAnalysisReporter.java:40]-
***************************
APPLICATION FAILED TO START
***************************
Description:
Web server failed to start. Port 1917 was already in use.
Action:
Identify and stop the process that's listening on port 1917 or configure this application to listen on another port.

View File

@ -52,13 +52,13 @@ public class AuthFilter implements GlobalFilter, Ordered {
String url = request.getURI().getPath();
//public 都是单独走的网关鉴权
if(!PathMatchUtil.isPublicLoginPath(url)){
// 跳过不需要验证的路径
if (StringUtils.matches(url, ignoreWhite.getWhites())) {
return chain.filter(exchange);
}
// if(!PathMatchUtil.isPublicLoginPath(url)){
// // 跳过不需要验证的路径
//
// }
if (StringUtils.matches(url, ignoreWhite.getWhites())) {
return chain.filter(exchange);
}
String token = getToken(request);
if (StringUtils.isEmpty(token) || "null".equals(token)) {
return unauthorizedResponse(exchange, "令牌不能为空");

View File

@ -2,7 +2,7 @@
server:
port: 18080
servlet:
context-path: bnscloud
context-path: hncloud
spring:
cloud:
nacos:
@ -10,8 +10,12 @@ spring:
# 服务注册地址
server-addr: 127.0.0.1:8848
namespace: 289db019-a290-4903-ac1a-5d341af8b272
# server-addr: 192.168.0.14:18848
# namespace: e0337b55-080d-456e-8449-46d68dceee5b
config:
# 配置中心地址
# server-addr: 192.168.0.14:18848
# namespace: e0337b55-080d-456e-8449-46d68dceee5b
server-addr: 127.0.0.1:8848
namespace: 289db019-a290-4903-ac1a-5d341af8b272
# 配置文件格式
@ -31,8 +35,8 @@ spring:
datasource:
ds1:
nacos:
server-addr: 192.168.87.190:8848
namespace: e9abf140-675a-4d55-af3f-1f28a6186904
server-addr: 192.168.0.14:18848
namespace: e0337b55-080d-456e-8449-46d68dceee5b
dataId: sentinel-bonus-gateway
groupId: DEFAULT_GROUP
data-type: json

View File

@ -26,7 +26,12 @@
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- OpenFeign 依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<!-- spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -0,0 +1,15 @@
package com.bns.ldlz.config;
import feign.Request;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignTimeoutConfig {
@Bean
public Request.Options feignOptions() {
// 连接超时 5 读取超时 60
return new Request.Options(5000, 60000);
}
}

View File

@ -52,6 +52,18 @@ public class PublicLoginController {
return ajax;
}
/**
* loginForm
* @param
* @param response
*/
@PostMapping("innerLogin")
public AjaxResult innerLogin(@RequestBody LoginForm loginForm) {
AjaxResult ajax = AjaxResult.success();
String token = loginService.innerLogin(loginForm);
ajax.put(Constants.TOKEN, token);
return ajax;
}
@PostMapping("addUser")
@ApiOperation(value = "新增用户")

View File

@ -83,6 +83,31 @@ public class PublicLoginService {
// 生成token
return tokenService.createToken(userDetails);
}
public String innerLogin(LoginForm us) {
String username = us.getUsername();
SysUser user = userService.selectUserByUserName(us.getUsername());
if (StringUtils.isNull(user))
{
log.info("登录用户:{} 不存在.", username);
throw new ServiceException(MessageUtils.message("user.not.exists"));
}
else if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
{
log.info("登录用户:{} 已被删除.", username);
throw new ServiceException(MessageUtils.message("user.password.delete"));
}
else if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
{
log.info("登录用户:{} 已被停用.", username);
throw new ServiceException(MessageUtils.message("user.blocked"));
}
LoginUser userDetails=new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));
recordLoginInfo(userDetails.getUserId());
// 生成token
return tokenService.createToken(userDetails);
}
/**
* 记录登录信息

View File

@ -8,11 +8,15 @@ spring:
cloud:
nacos:
discovery:
# server-addr: 192.168.0.14:18848
# namespace: e0337b55-080d-456e-8449-46d68dceee5b
server-addr: 127.0.0.1:8848
namespace: 289db019-a290-4903-ac1a-5d341af8b272
# namespace: 07736b2e-9922-415e-8624-50b275be556e
config:
# server-addr: 192.168.0.14:18848
# namespace: e0337b55-080d-456e-8449-46d68dceee5b
server-addr: 127.0.0.1:8848
namespace: 289db019-a290-4903-ac1a-5d341af8b272
# namespace: 07736b2e-9922-415e-8624-50b275be556e

View File

@ -306,12 +306,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by u.leader_order_num asc
</select>
<update id ="removeUserLeader" parameterType="Long">
update bns_ldlz_sys_user set is_leader = '0' where user_id = #{userId}
</update>
<update id ="removeUserLeader" parameterType="Long">
update bns_ldlz_sys_user set is_leader = '0' where user_id = #{userId}
</update>
<update id ="removeUsersLeader" parameterType="Long">
update bns_ldlz_sys_user set is_leader = '0'
<if test="array != null and array.length > 0">

View File

@ -40,6 +40,7 @@
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.plugin</groupId>-->
<!-- <artifactId>spring-plugin-core</artifactId>-->
@ -67,7 +68,11 @@
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- OpenFeign 依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -4,6 +4,7 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootVersion;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
@ -13,6 +14,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@MapperScan("com.bonus.hn.bearing.capacity.screen.*.dao")
@EnableScheduling // 启动定时任务
@EnableFeignClients
public class CzlScreenApplication {
public static void main(String[] args) {

View File

@ -13,6 +13,7 @@ import com.bonus.hn.bearing.capacity.screen.datainterface.entity.RealPersonBean;
import com.bonus.hn.bearing.capacity.screen.manager.utils.Aes;
import com.bonus.hn.bearing.capacity.screen.manager.utils.DateTimeHelper;
import org.omg.Messaging.SYNC_WITH_TRANSPORT;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -28,6 +29,7 @@ import java.util.Map;
@Service("DataInterfaceService")
public class DataInterfaceServiceImpl implements DataInterfaceService{
//湖南承载力-查询工程
private static String url = "http://140.210.209.102:1921/hnBmw/interface";
@ -42,16 +44,21 @@ public class DataInterfaceServiceImpl implements DataInterfaceService{
//湖南承载力-查询实名制基本信息
private static String getRealNameInfo = url+"/getRealNameInfo";
@Autowired
private SmzServiceFeignClient smzServiceFeignClient;
@Resource
private DataInterfaceDao dataInterfaceDao;
@Override
public void getOwn(ProjectBean bean) {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type","Application/json");
HttpRequest request = HttpUtil.createPost(getOwn);
request.addHeaders(headers);
String result = request.execute().body();
// Map<String, String> headers = new HashMap<String, String>();
// headers.put("Content-Type","Application/json");
// HttpRequest request = HttpUtil.createPost(getOwn);
// request.addHeaders(headers);
// String result = request.execute().body();
String result=smzServiceFeignClient.getOwn("","");
result = Aes.aesDecrypt(result);
JSONObject jsonObject = JSONObject.parseObject(result);
String res = jsonObject.getString("res");
@ -130,11 +137,12 @@ public class DataInterfaceServiceImpl implements DataInterfaceService{
@Override
public void getRealNameInfo(ProjectBean bean) {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type","Application/json");
HttpRequest request = HttpUtil.createPost(getRealNameInfo);
request.addHeaders(headers);
String result = request.execute().body();
// Map<String, String> headers = new HashMap<String, String>();
// headers.put("Content-Type","Application/json");
// HttpRequest request = HttpUtil.createPost(getRealNameInfo);
// request.addHeaders(headers);
// String result = request.execute().body();
String result=smzServiceFeignClient.getRealNameInfo("");
result = Aes.aesDecrypt(result);
JSONObject jsonObject = JSONObject.parseObject(result);
String res = jsonObject.getString("res");
@ -192,11 +200,12 @@ public class DataInterfaceServiceImpl implements DataInterfaceService{
@Override
public void getRealName(ProjectBean bean) {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type","Application/json");
HttpRequest request = HttpUtil.createPost(getRealName);
request.addHeaders(headers);
String result = request.execute().body();
// Map<String, String> headers = new HashMap<String, String>();
// headers.put("Content-Type","Application/json");
// HttpRequest request = HttpUtil.createPost(getRealName);
// request.addHeaders(headers);
// String result = request.execute().body();
String result=smzServiceFeignClient.getRealName("","");
result = Aes.aesDecrypt(result);
JSONObject jsonObject = JSONObject.parseObject(result);
String res = jsonObject.getString("res");
@ -255,11 +264,12 @@ public class DataInterfaceServiceImpl implements DataInterfaceService{
@Override
public void getProject(ProjectBean bean) {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type","Application/json");
HttpRequest request = HttpUtil.createPost(getPro);
request.addHeaders(headers);
String result = request.execute().body();
// Map<String, String> headers = new HashMap<String, String>();
// headers.put("Content-Type","Application/json");
// HttpRequest request = HttpUtil.createPost(getPro);
// request.addHeaders(headers);
// String result = request.execute().body();
String result=smzServiceFeignClient.getPro("");
result = Aes.aesDecrypt(result);
JSONObject jsonObject = JSONObject.parseObject(result);
String res = jsonObject.getString("res");

View File

@ -0,0 +1,25 @@
package com.bonus.hn.bearing.capacity.screen.datainterface.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(value = "bonus-realname")
public interface SmzServiceFeignClient {
@PostMapping("interface/getPro")
String getPro( String name);
@PostMapping("interface/getRealName")
String getRealName(@RequestParam(value = "startTime", required = false) String startTime,@RequestParam(value = "endTime", required = false) String endTime);
@PostMapping("interface/getOwn")
String getOwn(@RequestParam(value = "startTime", required = false) String startTime, @RequestParam(value = "endTime", required = false) String endTime);
@PostMapping("interface/getRealNameInfo")
String getRealNameInfo(String time);
}

View File

@ -3,6 +3,7 @@ package com.bonus.hn.bearing.capacity.screen.login.controller;
import com.bonus.hn.bearing.capacity.screen.login.service.PublicLoginService;
import com.bonus.hn.bearing.capacity.screen.login.vo.LoginForm;
import com.bonus.hn.bearing.capacity.screen.manager.utils.AjaxRes;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -31,7 +32,10 @@ public class PublicLoginController {
loginService.login(token,response);
}
@PostMapping("innerLogin")
public AjaxRes innerLogin(@RequestBody LoginForm token) {
return loginService.innerLogin(token);
}

View File

@ -11,6 +11,7 @@ import com.bonus.hn.bearing.capacity.screen.manager.model.SysUser;
import com.bonus.hn.bearing.capacity.screen.manager.service.TokenService;
import com.bonus.hn.bearing.capacity.screen.manager.service.UserService;
import com.bonus.hn.bearing.capacity.screen.manager.utils.Aes;
import com.bonus.hn.bearing.capacity.screen.manager.utils.AjaxRes;
import com.bonus.hn.bearing.capacity.screen.manager.utils.ResponseUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@ -71,4 +72,35 @@ public class PublicLoginService {
log.error(e.toString(),e);
}
}
/**
* 系统登录
* @param us
* @param response
*/
public AjaxRes innerLogin(LoginForm us) {
AjaxRes aes=new AjaxRes();
String username= us.getUsername();
SysUser sysUser = userService.getUser(username);
if (sysUser == null) {
throw new AuthenticationCredentialsNotFoundException("用户名不存在");
} else if (sysUser.getStatus() == SysUser.Status.LOCKED) {
throw new LockedException("用户被锁定,请联系管理员");
} else if (sysUser.getStatus() == SysUser.Status.DISABLED) {
throw new DisabledException("用户已作废");
}
try {
LoginUser loginUser = new LoginUser();
BeanUtils.copyProperties(sysUser, loginUser);
List<Permission> permissions = permissionDao.listByUserId(sysUser.getId());
loginUser.setPermissions(permissions);
Token token = tokenService.saveToken(loginUser);
token.setCode("200");
token.setUserame(username);
aes.setSucceed(token);
} catch (Exception e) {
log.error(e.toString(),e);
}
return aes;
}
}

View File

@ -22,11 +22,15 @@ spring:
username: nacos
password: nacos
discovery:
# server-addr: 192.168.0.14:18848
# namespace: e0337b55-080d-456e-8449-46d68dceee5b
# nacos地址
server-addr: 127.0.0.1:8848
namespace: 289db019-a290-4903-ac1a-5d341af8b272
# namespace: 07736b2e-9922-415e-8624-50b275be556e
config:
# server-addr: 192.168.0.14:18848
# namespace: e0337b55-080d-456e-8449-46d68dceee5b
server-addr: 127.0.0.1:8848
namespace: 289db019-a290-4903-ac1a-5d341af8b272
# namespace: 07736b2e-9922-415e-8624-50b275be556e

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody>tr:first-child>th,div.dataTables_scrollBody>table>tbody>tr:first-child>td{border-top:none}div.dataTables_scrollFoot>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 434 KiB

View File

@ -1,427 +0,0 @@
/* 布局 */
.site-inline{font-size: 0;}
.site-tree, .site-content{display: inline-block; *display:inline; *zoom:1; vertical-align: top; font-size: 14px;}
.site-tree{width: 220px; min-height: 900px; padding: 5px 0 20px;}
.site-content{width: 899px; min-height: 900px; padding: 20px 0 10px 20px;}
/* 头部 */admin-side-toggle
.header{height: 65px; border-bottom: 1px solid #404553; background-color: #393D49; color: #fff;}
.logo{position: absolute; left: 0; top: 18px;}
.logo img{width: 82px; height: 31px;}
.header .layui-nav{position: absolute; right: 0; top: 0; padding: 0; background: none;}
.header .layui-nav .layui-nav-item{margin: 0 20px; line-height: 66px;}
.menu{position: absolute; right: 0; top: 0; line-height: 65px;}
.menu a{display:inline-block; *display:inline; *zoom:1; vertical-align:top;}
.menu a{position: relative; padding: 0 20px; margin: 0 20px; color: #c2c2c2; font-size: 14px;}
.menu a:hover{color: #fff; transition: all .5s; -webkit-transition: all .5s}
.menu a.this{color: #fff}
.menu a.this::after{content: ''; position: absolute; left: 0; bottom: -1px; width: 100%; height: 5px; background-color: #5FB878;}
.header-index{background-color: #080018; border: none;}
.layui-layout-admin .header-demo{border-bottom-color: #1AA094; background-color: #fff;}
.header-demo .logo{left: 40px;}
.header-demo .layui-nav{top: 0;}
.header-demo .layui-nav .layui-nav-item{margin: 0 10px; line-height: 65px;}
.header-demo .layui-nav .layui-nav-item a{color: #999;}
.header-demo .layui-nav .layui-this{background-color: #f2f2f2;}
.header-demo .layui-nav .layui-nav-item a:hover,
.header-demo .layui-nav .layui-this a{color: #000;}
.header-demo .layui-nav .layui-this:after,
.header-demo .layui-nav-bar{background-color: #393D49;}
.header-demo .layui-nav .layui-this a{padding: 0 20px;}
/* 底部 */
.footer{padding: 30px 0; line-height: 30px; text-align: center; background-color: #eee; color: #666; font-weight: 300;}
body .layui-layout-admin .footer-demo{height: auto; padding: 5px 0; line-height: 26px;}
.footer a{padding: 0 5px;}
/* 首页banner部分 */
.site-banner{position: relative; height: 600px; text-align: center; overflow: hidden; background-color: #393D49;}
.site-banner-bg
,.site-banner-main{position: absolute; left: 0; top: 0; width: 100%; height: 100%;}
.site-banner-bg{background-position: center 0;}
.site-zfj{padding-top: 25px; height: 220px;}
.site-zfj i{position: absolute; left: 50%; top: 25px; width: 200px; height: 200px; margin-left: -100px; font-size: 200px; color: #c2c2c2;}
@-webkit-keyframes site-zfj {
0% {opacity: 1; -webkit-transform: translate3d(0, 0, 0) rotate(0deg) scale(1);}
10% {opacity: 0.8; -webkit-transform: translate3d(-100px, 0px, 0) rotate(10deg) scale(0.7);}
35% {opacity: 0.6; -webkit-transform: translate3d(100px, 0px, 0) rotate(30deg) scale(0.4);}
50% {opacity: 0.4; -webkit-transform: translate3d(0, 0, 0) rotate(360deg) scale(0);}
80% {opacity: 0.2; -webkit-transform: translate3d(0, 0, 0) rotate(720deg) scale(1);}
90% {opacity: 0.1; -webkit-transform: translate3d(0, 0, 0) rotate(3600deg) scale(6);}
100% {opacity: 1; -webkit-transform: translate3d(0, 0, 0) rotate(3600deg) scale(1);}
}
@keyframes site-zfj {
0% {opacity: 1; transform: translate3d(0, 0, 0) rotate(0deg) scale(1);}
10% {opacity: 0.8; transform: translate3d(-100px, 0px, 0) rotate(10deg) scale(0.7);}
35% {opacity: 0.6; transform: translate3d(100px, 0px, 0) rotate(30deg) scale(0.4);}
50% {opacity: 0.4; transform: translate3d(0, 0, 0) rotate(360deg) scale(0);}
80% {opacity: 0.2; transform: translate3d(0, 0, 0) rotate(720deg) scale(1);}
90% {opacity: 0.1; transform: translate3d(0, 0, 0) rotate(3600deg) scale(6);}
100% {opacity: 1; transform: translate3d(0, 0, 0) rotate(3600deg) scale(1);}
}
@-webkit-keyframes site-desc {
0% { -webkit-transform: scale(1.1);}
100% {opacity: 1; -webkit-transform: scale(1);}
}
@keyframes site-desc {
0% { transform: scale(1.1);}
100% {transform: scale(1);}
}
.layui-anim-scaleSpring{-webkit-animation-name: layui-scale-spring; animation-name: layui-scale-spring}
.site-zfj-anim i{-webkit-animation-name: site-zfj; animation-name: site-zfj; -webkit-animation-duration: 5s; animation-duration: 5s; -webkit-animation-timing-function: linear; animation-timing-function: linear;}
.site-desc{position: relative; height: 70px; margin-top: 25px; background: url(../images/layui/desc.png) center no-repeat;}
.site-desc-anim{-webkit-animation-name: site-desc; animation-name: site-desc;}
.site-desc cite{position: absolute; bottom: -40px; left: 0; width: 100%; color: #c2c2c2; font-style: normal;}
.site-download{margin-top: 80px; font-size: 0;}
.site-download a{position: relative; padding: 0 45px 0 90px; height: 60px; line-height: 60px; border: 1px solid #464B5B; font-size: 24px; color: #ccc; transition: all .5s; -webkit-transition: all .5s;}
.site-download a:hover{border: 1px solid #778097; color: #fff; border-radius: 30px; }
.site-download a cite{position: absolute; left: 45px; font-size: 30px;}
.site-version{position: relative; margin-top: 15px; color: #ccc; font-size: 12px;}
.site-version span{padding: 0 3px;}
.site-version *{font-style: normal;}
.site-version a{color: #e2e2e2; text-decoration: underline;}
.site-banner-other{position: absolute; left: 0; bottom: 32px; width: 100%; text-align: center;}
.site-banner-other iframe{border: none;}
.site-idea{margin: 50px 0; font-size: 0; text-align: center; font-weight: 300;}
.site-idea li{display: inline-block; vertical-align: top; *display: inline; *zoom:1; font-size: 14px; }
.site-idea li{width: 298px; height: 150px; padding: 30px; line-height: 24px; margin-left: 30px; border: 1px solid #d2d2d2; text-align: left;}
.site-idea li:first-child{margin-left: 0}
.site-idea .layui-field-title{border-color: #d2d2d2}
.site-idea .layui-field-title legend{margin: 0 20px 20px 0; padding: 0 20px; text-align: center;}
/* 辅助 */
.site-tips{margin-bottom: 10px; padding: 15px; border-left: 5px solid #0078AD; background-color: #f2f2f2;}
body .site-tips p{margin: 0;}
/* 目录 */
.site-dir{display: none;}
.site-dir li{line-height: 26px; margin-left: 20px; overflow: visible; list-style-type: disc;}
.site-dir li a{display: block;}
.site-dir li a:active{color: #01AAED;}
.site-dir li a.layui-this{color: #01AAED;}
body .layui-layer-dir{box-shadow: none; border: 1px solid #d2d2d2;}
body .layui-layer-dir .layui-layer-content{padding: 10px; max-height: 280px; overflow: auto;}
.site-dir a em{padding-left: 5px; font-size: 12px; color: #c2c2c2; font-style: normal;}
/* 文档 */
.site-tree{border-right: 1px solid #eee; }
.site-tree .layui-tree{line-height: 32px;}
.site-tree .layui-tree li i{position: relative; font-size: 22px; color: #000}
.site-tree .layui-tree li a cite{padding: 0 8px;}
.site-tree .layui-tree .site-tree-noicon a cite{padding-left: 15px;}
.site-tree .layui-tree li a em{font-size: 12px; color: #bbb; padding-right: 5px; font-style: normal;}
.site-tree .layui-tree li h2{line-height: 36px; border-left: 5px solid #009E94; margin: 15px 0 5px; padding: 0 10px; background-color: #f2f2f2;}
.site-tree .layui-tree li ul{margin-left: 27px; line-height: 28px;}
.site-tree .layui-tree li ul a,
.site-tree .layui-tree li ul a i{color: #777;}
.site-tree .layui-tree li ul a:hover{color: #333;}
.site-tree .layui-tree li ul li{margin-left: 25px; overflow: visible; list-style-type: disc; /*list-style-position: inside;*/}
.site-tree .layui-tree li ul li cite,
.site-tree .layui-tree .site-tree-noicon ul li cite{padding-left: 0;}
.site-tree .layui-tree .layui-this a{color: #01AAED;}
.site-tree .layui-tree .layui-this .layui-icon{color: #01AAED;}
.site-fix .site-tree{position: fixed; top: 0; bottom: 0; z-index: 666; min-height: 0; overflow: auto; background-color: #fff;}
.site-fix .site-content{margin-left: 220px;}
.site-fix-footer .site-tree{margin-bottom: 120px;}
.site-title{ margin: 30px 0 20px;}
.site-title fieldset{border: none; padding: 0; border-top: 1px solid #eee;}
.site-title fieldset legend{margin-left: 20px; padding: 0 10px; font-size: 22px; font-weight: 300;}
.site-text a{color: #01AAED;}
.site-h1{margin-bottom: 20px; line-height: 60px; padding-bottom: 10px; color: #393D49; border-bottom: 1px solid #eee; font-size: 28px; font-weight: 300;}
.site-h1 .layui-icon{position: relative; top: 5px; font-size: 50px; margin-right: 10px;}
.site-text{position:relative;}
.site-text p{margin-bottom: 10px; line-height:22px;}
.site-text em{padding: 0 3px; font-weight: 500; font-style: italic; color: #666;}
.site-text code{margin:0 5px; padding: 3px 10px; border: 1px solid #e2e2e2; background-color: #fbfbfb; color: #666; border-radius: 2px;}
.site-table{width: 100%; margin: 10px 0;}
.site-table thead{background-color:#f2f2f2; }
.site-table th,
.site-table td{padding: 6px 15px; min-height: 20px; line-height: 20px; border:1px solid #ddd; font-size: 14px; font-weight: 400;}
.site-table tr:nth-child(even){background: #fbfbfb;}
.site-block{padding: 20px; border: 1px solid #eee;}
.site-block .layui-form{margin-right: 200px;}
/* 演示 */
body .layui-layout-admin .site-demo{bottom: 82px; padding: 0;z-index:-1;}
body .site-demo-nav .layui-nav-item{line-height: 40px}
.layui-nav-item .layui-icon{position: relative; /*font-size: 20px;*/}
.layui-nav-item a cite{padding: 0 10px;}
.site-demo .layui-main{margin: 15px; line-height: 22px;}
.site-demo-editor{position: absolute; top: 0; bottom: 0; left: 0; width: 50%; }
.site-demo-area{position: absolute; top: 0; bottom: 90px; width: 100%;}
.site-demo-editor textarea{position: absolute; width: 100%; height: 100%; padding: 15px; border: none; resize: none; /*background-color: #F7FBFF;*/ background-color: #272822; color: #CFBFAF; font-family: Courier New; font-size: 12px; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important;}
.site-demo-btn{position: absolute; bottom: 100px; right: 20px;}
.site-demo-zanzhu{position: absolute; bottom: 0; left: 0; width: 100%; height: 90px; text-align: center; background-color: #e2e2e2; overflow: hidden;}
.site-demo-zanzhu>*{position: relative; z-index: 1;}
.site-demo-zanzhu:before{content: ""; position: absolute; z-index: 0; top: 50%; left: 50%; width: 120px; margin: -10px 0px 0px -60px; text-align: center; color: rgb(170, 170, 170); font-size: 18px; font-weight: 300; }
.site-demo-result{position: absolute; right: 0; top: 0; bottom: 0; width: 50%;}
.site-demo-result iframe{position: absolute; width: 100%; height: 100%;}
.site-demo-button{margin-bottom: 30px;}
.site-demo-button div{margin: 20px 30px 10px;}
.site-demo-button .layui-btn{margin-bottom: 10px;}
.site-demo-laytpl{text-align: center;}
.site-demo-laytpl textarea,
.site-demo-laytpl div span{width: 40%; padding: 15px; margin: 0 15px;}
.site-demo-laytpl textarea{height: 300px; border: none; background-color: #3F3F3F; color: #E3CEAB; font-family: Courier New; resize: none;}
.site-demo-laytpl div span{display: inline-block; text-align: center; background: #101010; color: #fff;}
.site-demo-tplres{margin: 10px 0; text-align: center}
.site-demo-tplres .site-demo-tplh2,
.site-demo-tplres .site-demo-tplview{display: inline-block; width: 50%;}
.site-demo-tplres h2{padding: 15px; background: #e2e2e2;}
.site-demo-tplres h3{font-weight: 700;}
.site-demo-tplres div{padding: 14px; border: 1px solid #e2e2e2; text-align: left;}
.site-demo-upload,
.site-demo-upload img{width: 200px; height: 200px; border-radius: 100%;}
.site-demo-upload{position: relative; background: #e2e2e2;}
.site-demo-upload .site-demo-upbar{position: absolute; top: 50%; left: 50%; margin: -18px 0 0 -56px;}
.site-demo-upload .layui-upload-button{background-color: rgba(0,0,0,.2); color: rgba(255,255,255,1);}
.site-demo-util{position: relative; width: 300px;}
.site-demo-util img{width: 300px; border-radius: 100%;}
.site-demo-util span{position: absolute; left: 0; top: 0; width: 100%; height: 100%; background: #333; cursor: pointer;}
@-webkit-keyframes demo-fengjie {
0% {-webkit-filter: blur(0); opacity: 1; background: #fff; height: 300px; border-radius: 100%;}
80% {-webkit-filter: blur(50px); opacity: 0.95;}
100% {-webkit-filter: blur(20px); opacity: 0; background: #fff;}
}
@keyframes demo-fengjie {
0% {filter: blur(0); opacity: 1; background: #fff; height: 300px; border-radius: 100%;}
80% {filter: blur(50px); opacity: 0.95;}
100% {filter: blur(20px); opacity: 0; background: #fff;}
}
.site-demo-fengjie{-webkit-animation-name: demo-fengjie; animation-name: demo-fengjie; -webkit-animation-duration: 5s; animation-duration: 5s;}
.layui-layout-admin .site-demo-body{top: 117px;}
.site-demo-title{position: fixed; left: 200px; right: 0; top: 76px;}
.site-demo-code{position: absolute; left: 0; top: 0; width: 100%; height: 100%; border: none; padding: 10px; resize: none; font-size: 12px; background-color: #F7FBFF; color: #881280; font-family: Courier New;}
.site-demo-body .layui-elem-quote a{color: #01AAED;}
.site-demo-body .layui-elem-quote a:hover{color: #FF5722;}
/* 其它 */
#trans-tooltip,
#tip-arrow-bottom,
#tip-arrow-top{display: none !important;}
/* 独立组件 */
.alone{width:730px; margin:200px auto;}
.alone ul{margin-left:1px; font-size:0;}
.alone li{display:inline-block; width:181px; font-size: 16px; text-align:center; line-height:80px; margin:0 1px 1px 0; background-color:#393D49; color:#fff;}
.alone li:hover{opacity:0.8;}
.alone li a{display:block; color:#fff;}
/* 自定义css */
.admin-header-item-mobile{
position: absolute; right: 0px; height: 70px;line-height: 70px;
padding: 0 20px; text-align: center; top:0;
display: none;
}
.admin-nav-tree .layui-nav-child a {
padding-left: 30px;
}
.layui-nav-child dd{position:relative;margin-left: 10px}
.admin{
border: 0;
margin: 0;
box-shadow:none;
}
.admin-nav-card{
margin-top: 5px;
}
.admin-nav-card .layui-icon{
position: relative;
}
.admin-nav-card .layui-tab-item iframe{
width: 100%;
border: 0;
height: 100%;
}
.admin-nav-card>.layui-tab-title{
border-bottom: 1px solid #1AA094;
}
.admin-nav-card .layui-tab-title cite{
font-style: normal;
padding-left: 5px;
}
.admin-nav-card>.layui-tab-title .layui-this{
color: white;
background-color: #1AA094;
}
.admin-nav-card>.layui-tab-title .layui-this:after{
border-bottom: 0;
}
.admin-header-user img{
width: 40px; height: 40px; border-radius: 100%;
/*position: relative;
top: 15px;*/
}
.admin-header-user .layui-nav-more{
top:33px;
}
.admin-header-user .layui-nav-mored{
top: 26px;
}
/*lock*/
.admin-header-lock{
width: 320px; height: 150px; padding: 20px; position: relative; text-align: center;
}
.admin-header-lock-img{
width: 60px; height: 60px; margin: 0 auto;
}
.admin-header-lock-img img{
width: 60px; height: 60px; border-radius: 100%;
}
.admin-header-lock-name{
color: #009688;margin: 8px 0 15px 0;
}
.admin-header-lock-input{
width: 150px; color: #FFFFFF; height: 30px; border: 0;background-color: #009688; padding: 0 7px; border-radius: 2px;
}
/*table*/
.site-table tbody tr td {text-align: center;}
.site-table tbody tr td .layui-btn+.layui-btn{margin-left: 0px;}
.admin-table-page {position: fixed;z-index: 19940201;bottom: 0;width: 100%;background-color: #eee;border-bottom: 1px solid #ddd;left: 0px;}
.admin-table-page .page{padding-left:20px;}
.admin-table-page .page .layui-laypage {margin: 6px 0 0 0;}
/**/
.admin-main {margin: 15px;}
.admin-side-toggle,.admin-side-full{
position: absolute; cursor: pointer;
z-index: 19940201;
left: 200px;
color: white;
text-align: center;
width: 30px;
height: 30px;
background-color: #1AA094;
line-height: 30px;
top: 25%;
}
.admin-side-toggle:hover{
background-color: #5FB878;
}
.admin-side-full{
left: 240px;
}
.admin-login-box{
width: 185px; height: 70px; position: relative;
}
.beg-navbar .layui-nav-child dd a{
padding-left: 30px;
}
.admin-contextmenu{
position: absolute;line-height: 36px;padding: 5px 0;
border: 1px solid #d2d2d2;background-color: white;z-index: 19940201;border-radius: 2px;white-space: nowrap;top:30px;
/*width: 100px;height: 200px; */
}
.admin-contextmenu ul li{
padding: 0 15px;
}
.admin-contextmenu ul li:hover{
background-color: #eee;
cursor: pointer;
}
/* 适配多设备 */
@media screen and (max-width: 750px) {
.layui-main{width: auto; margin: 0 10px;}
.logo,
.header-demo .logo{left: 10px;}
.site-nav-layim{display: none !important;}
.header .layui-nav .layui-nav-item{margin: 0;}
.header .layui-nav .layui-nav-item a{padding: 0 15px;}
.site-banner{height: 300px;}
.site-banner-bg{background-size: cover;}
.site-zfj{height: 100px; padding-top: 5px;}
.site-zfj i{top: 10px; width: 100px; height: 100px; margin-left: -50px; font-size: 100px;}
.site-desc{background-size: 70%; margin: 0;}
.site-desc cite{display: none;}
.site-download{margin-top: 0; }
.site-download a{height: 40px; line-height: 40px; padding: 0 25px 0 60px; border: 1px solid #778097; border-radius: 30px; color: #fff; font-size: 16px;}
.site-download a cite{left: 20px;}
.site-banner-other{bottom: 15px;}
.site-idea{margin: 20px 0;}
.site-idea li{margin: 0 0 20px 0; width: 100%; height: auto; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important;}
.site-hengfu img{max-width: 100%}
.layui-layer-dir{display: none;}
.site-tree{position: fixed; top: 0; bottom: 0; min-height: 0; overflow: auto; z-index: 1000; left: -260px; background-color: #fff; transition: all .3s; -webkit-transition: all .3s;}
.site-content{width: 100%; padding: 0; overflow: auto;}
.site-content img{max-width: 100%;}
.site-tree-mobile{display: block!important; position: fixed; z-index: 100000; bottom: 15px; left: 15px; width: 50px; height: 50px; line-height: 50px; border-radius: 2px; text-align: center; background-color: rgba(0,0,0,.7); color: #fff;}
.site-home .site-tree-mobile{display: none!important;}
.site-mobile .site-tree-mobile{display: none !important;}
.site-mobile .site-tree{left: 0;}
.site-mobile .site-mobile-shade{content: ''; position: fixed; top: 0; bottom: 0; left: 0; right: 0; background-color: rgba(0,0,0,.8); z-index: 9999;}
.site-tree-mobile i{font-size: 20px;}
.layui-code-view{-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;}
.layui-layout-admin .layui-side{position: fixed; top: 0; left: -260px; transition: all .3s; -webkit-transition: all .3s; z-index: 10000;}
.layui-body{position: static; bottom: 0; left: 0;}
.site-mobile .layui-side{left: 0;}
body .layui-layout-admin .footer-demo{position: static;}
.site-demo-area,
.site-demo-editor,
.site-demo-result,
.site-demo-editor textarea,
.site-demo-result iframe{position: static; width: 100%;}
.site-demo-editor textarea{height: 350px;}
.site-demo-zanzhu{display: none;}
.site-demo-btn{bottom: auto; top: 370px;}
.site-demo-result iframe{height: 500px;}
.site-demo-laytpl textarea, .site-demo-laytpl div span{margin: 0;}
.site-demo-tplres .site-demo-tplh2, .site-demo-tplres .site-demo-tplview{width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;}
.site-demo-title{position: static; left: 0;}
body .layui-layout-admin .site-demo{}
.site-demo-code{position: static; height: 350px;}
.admin-side-toggle ,.admin-header-item{display: none;}
.admin-header-item-mobile{ display: block; }
}

View File

@ -1,357 +0,0 @@
*{
font: 13px/1.5 '微软雅黑', Verdana, Helvetica, Arial, sans-serif;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-box-sizing: border-box;
padding:0;
margin:0;
list-style:none;
box-sizing: border-box;
}
body,html{
height:100%;
overflow:hidden;
}
body{
background:url(../img/home/bg.png) no-repeat ;
background-size: cover;
}
.time{
position: absolute;
right: 2%;
font-size: 20px;
letter-spacing: 2px;
top: 2.5%;
color: #19ECFF;
}
.tou{
height: 100%;
width: 100%;
}
.centers{
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.head{
height:10%;
width: 100%;
font-size: 40px;
color: #19ECFF;
letter-spacing: 10px;
font-weight: bold;
}
.main{
display: flex;
height:90%;
width: 100%;
}
.login{
height: 56%;
width: 30%;
}
.title{
color: #ffffff;
font-size: 40px;
font-weight: bold;
letter-spacing: 10px;
}
.info{
flex:2;
height: 100%;
background:url(../img/home/infoBg.png) no-repeat;
background-size: cover;
display: flex;
flex-direction: column;
}
.one{
flex: 1;
margin-top: 3%;
margin-left: 10%;
margin-right: 10%;
color: #ffffff;
letter-spacing: 2px;
font-size: 18px;
font-weight: bold;
}
.two{
margin-bottom: 2%;
display: flex;
flex: 2;
margin-left: 10%;
margin-right: 6%;
}
.four{
margin-bottom: 2%;
display: flex;
flex: 4;
margin-left: 10%;
margin-right: 6%;
}
.infoBg{
flex: 1;
flex-direction: column;
color: #ffffff;
padding-left: 2%;
padding-top: 1%;
letter-spacing: 1px;
font-size: 16px;
display: flex;
}
.cursor{
background-image: url(../img/home/cursor.png);
background-size: cover;
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.board{
background:url(../img/home/board.png);
background-size: cover;
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.blue{
color: #01E2DE;
font-size: 21px;
font-weight: bold
}
.green{
color: #5CFEA7;
font-size: 21px;
font-weight: bold
}
.red{
color: #FF5C52;
font-size: 21px;
font-weight: bold
}
.yellow{
color: #FEDB65;
font-size: 21px;
font-weight: bold
}
.ash{
color: #C2C6D0;
}
.ass{
color: #40B284;
}
.ye{
color: #D3B95E;
}
.resource{
flex:3;
height: 100%;
display: flex;
flex-direction: column;
}
.greens{
height: 35px;
width: 35px;
background:url(../img/home/green.png);
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.blues{
height: 35px;
width: 35px;
background:url(../img/home/blue.png);
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.yellows{
height: 35px;
width: 35px;
background:url(../img/home/yellow.png);
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.text{
flex: 1;
color: #C3C5CF;
}
.textFont{
color: #00FFF4;
font-size: 18px;
font-weight: bold;
}
.textFonts{
color: #FEDB65;
font-size: 18px;
font-weight: bold;
}
a.logo{
display: block;
height: 58px;
width: 167px;
margin: 0 auto 30px auto;
background-size: 167px 42px;
}
.message {
margin: 1% 0 0 0;
text-align: center;
color: #fff;
font-size: 30px;
letter-spacing: 3px;
font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif;
font-weight: 600;
}
#login-form{
margin-top: 15%;
width: 70%;
margin-left: 15%;
}
.input-container{
position: relative;
}
.icon {
position: absolute;
top: 16px;
left: 10px;
width: 20px;
height: 20px;
}
.photo{
background-image: url("../img/login/phone.png");
}
.pwd{
background-image: url("../img/login/pwd.png");
}
.code{
background-image: url("../img/login/code.png");
}
.refresh{
position: absolute;
top: 20px;
right: -20px;
width: 25px;
height: 25px;
background-image: url("../img/login/refresh.png");
}
::-webkit-input-placeholder{
/*Webkit browsers*/
color:#9FA6B4;
font-size:16px;
}
::-moz-placeholder{
/*Mozilla Firefox 4 to 8*/
color:#9FA6B4;
font-size:16px;
}
::-moz-placeholder{
/*Mozilla Firefox 19+*/
color:#9FA6B4;
font-size:16px;
}
::-ms-input-placeholder{
/*Internet Explorer 10+*/
color:#9FA6B4;
font-size:16px;
}
input[type=text],
input[type=file],
input[type=password],
input[type=email], select {
border: 1px solid #2AA0E6;
vertical-align: middle;
border-radius: 3px;
height: 50px;
padding: 0px 35px;
font-size: 14px;
color: #ffffff;
outline:none;
width:100%;
background-color: transparent;
}
input[type=text]:focus,
input[type=file]:focus,
input[type=password]:focus,
input[type=email]:focus, select:focus {
border: 1px solid #27A9E3;
}
input[type=submit],
button{
display: inline-block;
vertical-align: middle;
padding: 12px 24px;
margin: 0px;
font-size: 18px;
line-height: 24px;
text-align: center;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
color: #ffffff;
background-color: #189F92;
border-radius: 3px;
border: none;
-webkit-appearance: none;
outline:none;
width:100%;
}
hr.hr15 {
height: 15px;
border: none;
margin: 0px;
padding: 0px;
width: 100%;
}
hr.hr20 {
height: 20px;
border: none;
margin: 0px;
padding: 0px;
width: 100%;
}
.copyright{
font-size:14px;
color:rgba(255,255,255,0.85);
display:block;
position:absolute;
bottom:15px;
right:15px;
}

View File

@ -1,193 +0,0 @@
*{
font: 13px/1.5 '微软雅黑', Verdana, Helvetica, Arial, sans-serif;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-box-sizing: border-box;
padding:0;
margin:0;
list-style:none;
box-sizing: border-box;
}
body,html{
height:100%;
overflow:hidden;
}
body{
background:url(../img/login/bg.png) no-repeat center;
background-size: cover;
}
a{
color:#27A9E3;
text-decoration:none;
cursor:pointer;
}
.centers{
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.tou{
height: 100%;
width: 100%;
}
.login{
height: 56%;
width: 30%;
}
.title{
color: #ffffff;
font-size: 40px;
font-weight: bold;
letter-spacing: 10px;
}
a.logo{
display: block;
height: 58px;
width: 167px;
margin: 0 auto 30px auto;
background-size: 167px 42px;
}
.message {
margin: 1% 0 0 0;
text-align: center;
color: #fff;
font-size: 30px;
letter-spacing: 3px;
font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif;
font-weight: 600;
}
#login-form{
margin-top: 15%;
width: 70%;
margin-left: 15%;
}
.input-container{
position: relative;
}
.icon {
position: absolute;
top: 16px;
left: 10px;
width: 20px;
height: 20px;
}
.photo{
background-image: url("../img/login/phone.png");
}
.pwd{
background-image: url("../img/login/pwd.png");
}
.code{
background-image: url("../img/login/code.png");
}
.refresh{
position: absolute;
top: 20px;
right: -20px;
width: 25px;
height: 25px;
background-image: url("../img/login/refresh.png");
}
::-webkit-input-placeholder{
/*Webkit browsers*/
color:#9FA6B4;
font-size:16px;
}
::-moz-placeholder{
/*Mozilla Firefox 4 to 8*/
color:#9FA6B4;
font-size:16px;
}
::-moz-placeholder{
/*Mozilla Firefox 19+*/
color:#9FA6B4;
font-size:16px;
}
::-ms-input-placeholder{
/*Internet Explorer 10+*/
color:#9FA6B4;
font-size:16px;
}
input[type=text],
input[type=file],
input[type=password],
input[type=email], select {
border: 1px solid #2AA0E6;
vertical-align: middle;
border-radius: 3px;
height: 50px;
padding: 0px 35px;
font-size: 14px;
color: #ffffff;
outline:none;
width:100%;
background-color: transparent;
}
input[type=text]:focus,
input[type=file]:focus,
input[type=password]:focus,
input[type=email]:focus, select:focus {
border: 1px solid #27A9E3;
}
input[type=submit],
button{
display: inline-block;
vertical-align: middle;
padding: 12px 24px;
margin: 0px;
font-size: 18px;
line-height: 24px;
text-align: center;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
color: #ffffff;
background-color: #189F92;
border-radius: 3px;
border: none;
-webkit-appearance: none;
outline:none;
width:100%;
}
hr.hr15 {
height: 15px;
border: none;
margin: 0px;
padding: 0px;
width: 100%;
}
hr.hr20 {
height: 20px;
border: none;
margin: 0px;
padding: 0px;
width: 100%;
}
.copyright{
font-size:14px;
color:rgba(255,255,255,0.85);
display:block;
position:absolute;
bottom:15px;
right:15px;
}

View File

@ -1,493 +0,0 @@
*{
font: 13px/1.5 '微软雅黑', Verdana, Helvetica, Arial, sans-serif;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-box-sizing: border-box;
padding:0;
margin:0;
list-style:none;
box-sizing: border-box;
}
body,html{
height:100%;
overflow:hidden;
}
body{
background:url(../img/home/bg.png) no-repeat ;
background-size: cover;
}
.figure{
position: absolute;
left: 3%;
font-size: 20px;
letter-spacing: 2px;
top: 2%;
color: #19ECFF;
width: 10%;
height: 5%;
}
.figures{
height:100%;
width: 100%;
background:url(../img/home/button.png) no-repeat ;
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.time{
position: absolute;
right: 2%;
font-size: 20px;
letter-spacing: 2px;
top: 2.5%;
color: #19ECFF;
}
.tou{
height: 100%;
width: 100%;
}
.centers{
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.head{
height:10%;
width: 100%;
font-size: 40px;
color: #19ECFF;
letter-spacing: 10px;
font-weight: bold;
}
.main{
height:90%;
width: 98%;
margin: 0 1% 0 1%;
}
.login{
height: 56%;
width: 30%;
}
.title{
color: #ffffff;
font-size: 40px;
font-weight: bold;
letter-spacing: 10px;
}
.one{
flex: 0;
margin-top: 3%;
color: #ffffff;
letter-spacing: 2px;
font-size: 18px;
font-weight: bold;
margin-left: 4%;
margin-right: 0%;
}
.one span{
border: 2px solid #1B9DFC;
}
.two{
margin-bottom: 2%;
display: flex;
flex: 2;
margin-left: 6%;
margin-right: 6%;
}
.four{
margin-bottom: 2%;
display: flex;
flex: 4;
margin-left: 10%;
margin-right: 6%;
}
.infoBg{
flex: 1;
color: #F9F9FA;
padding-top: 1%;
letter-spacing: 1px;
font-size: 18px;
display: flex;
}
.fonts{
flex: 1;
font-size: 16px;
}
.cursor{
height: 75px;
background-image: url(../img/home/cursor.png);
background-size: cover;
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.board{
background:url(../img/home/board.png);
background-size: cover;
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.blue{
color: #01E2DE;
font-size: 21px;
font-weight: bold
}
.green{
color: #5CFEA7;
font-size: 21px;
font-weight: bold
}
.red{
color: #FF5C52;
font-size: 21px;
font-weight: bold
}
.yellow{
color: #FEDB65;
font-size: 21px;
font-weight: bold
}
.ash{
color: #C2C6D0;
}
.ass{
color: #40B284;
}
.ye{
color: #D3B95E;
}
.info{
flex: 2.35;
height: 100%;
display: flex;
flex-direction: column;
}
.resource{
flex:3;
height: 100%;
display: flex;
flex-direction: column;
}
.greens{
display: block;
height: 35px;
width: 35px;
background:url(../img/home/green.png);
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.blues{
height: 35px;
width: 35px;
background:url(../img/home/blue.png);
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.yellows{
height: 35px;
width: 35px;
background:url(../img/home/yellow.png);
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.text{
flex: 1;
color: #C3C5CF;
}
.textFont{
color: #00FFF4;
font-size: 18px;
font-weight: bold;
}
.textFonts{
color: #FEDB65;
font-size: 18px;
font-weight: bold;
}
table {
border-collapse: collapse;
}
table td {
padding: 10px;
text-align: center;
}
.device table td {
padding: 10px 10px 10px 25px;
text-align: left;
}
tr:nth-child(odd) td {
margin-top: 5px;
background-color: #051845;
border-bottom:1px solid #1B4F9A !important;
border-left: none;
border-right: none;
}
tr:nth-child(even) td {
margin-top: 5px;
background-color: #051845;
border-bottom:1px solid #1B4F9A !important;
border-left: none;
border-right: none;
}
.layui-table-page{
border-top: 1px solid #1B4F9A !important;
}
.layui-table-page .layui-laypage span{
color: #ffffff;
}
.layui-table-page .layui-laypage button{
background-color: transparent;
width: 80px;
}
.layui-table-page .layui-laypage a, .layui-table-page .layui-laypage span{
color: #ffffff;
}
.layui-table-view select[lay-ignore]{
background-color: #000B31;
}
.layui-table-box, .layui-table-view{
border: 0px;
}
.layui-table-header{
border: 0px;
}
.layui-laypage .layui-laypage-curr .layui-laypage-em{
background-color: #4477FD;
}
.titles{
font-size: 16px;
letter-spacing: 2px;
color: #ffffff;
}
a.logo{
display: block;
height: 58px;
width: 167px;
margin: 0 auto 30px auto;
background-size: 167px 42px;
}
.message {
margin: 1% 0 0 0;
text-align: center;
color: #fff;
font-size: 30px;
letter-spacing: 3px;
font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif;
font-weight: 600;
}
#login-form{
margin-top: 15%;
width: 70%;
margin-left: 15%;
}
.input-container{
position: relative;
}
.icon {
position: absolute;
top: 16px;
left: 10px;
width: 20px;
height: 20px;
}
.photo{
background-image: url("../img/login/phone.png");
}
.pwd{
background-image: url("../img/login/pwd.png");
}
.code{
background-image: url("../img/login/code.png");
}
.refresh{
position: absolute;
top: 20px;
right: -20px;
width: 25px;
height: 25px;
background-image: url("../img/login/refresh.png");
}
/* 设置弹出的div的背景色为 #011F50 */
#myDivContent {
height: 100%;
width: 100%;
background-color: #011F50;
}
/* 设置表头的背景色为 #011F50 */
#myDivContent thead {
height: 100%;
width: 100%;
background-color: #011F50;
}
/* 设置表格内容的背景色为 #011F50 */
#myDivContent tbody {
height: 100%;
width: 100%;
background-color: #011F50;
}
/* 弹出层标题栏背景色设置为 #011F50 */
.layui-layer-title {
background-color: #00A1AE !important;
border-bottom: 0px solid #011F50 !important;
color: #ffffff !important;
}
/* 弹出层内容区域背景色设置为 #011F50 */
.layui-layer-content {
background-color: #00A1AE!important;
border-bottom: 0px solid #011F50 !important;
color: #ffffff !important;
}
/* 弹出层标题栏关闭按钮的颜色设置为 #011F50 */
.layui-layer-setwin .layui-layer-close {
color: red !important;
}
::-webkit-input-placeholder{
/*Webkit browsers*/
color:#9FA6B4;
font-size:16px;
}
::-moz-placeholder{
/*Mozilla Firefox 4 to 8*/
color:#9FA6B4;
font-size:16px;
}
::-moz-placeholder{
/*Mozilla Firefox 19+*/
color:#9FA6B4;
font-size:16px;
}
::-ms-input-placeholder{
/*Internet Explorer 10+*/
color:#9FA6B4;
font-size:16px;
}
input[type=text],
input[type=file],
input[type=password],
input[type=email], select {
border: 1px solid #2A91D3;
vertical-align: middle;
border-radius: 3px;
height: 40px;
padding: 0px 15px;
font-size: 14px;
color: #ffffff;
outline:none;
width:100%;
background-color: transparent;
}
input[type=text]:focus,
input[type=file]:focus,
input[type=password]:focus,
input[type=email]:focus, select:focus {
border: 1px solid #27A9E3;
}
input[type=submit],
button{
display: inline-block;
vertical-align: middle;
padding: 12px 24px;
margin: 0px;
font-size: 18px;
line-height: 24px;
text-align: center;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
color: #ffffff;
background-color: #189F92;
border-radius: 3px;
border: none;
-webkit-appearance: none;
outline:none;
width:100%;
}
hr.hr15 {
height: 15px;
border: none;
margin: 0px;
padding: 0px;
width: 100%;
}
hr.hr20 {
height: 20px;
border: none;
margin: 0px;
padding: 0px;
width: 100%;
}
.copyright{
font-size:14px;
color:rgba(255,255,255,0.85);
display:block;
position:absolute;
bottom:15px;
right:15px;
}

View File

@ -1,451 +0,0 @@
*{
font: 13px/1.5 '微软雅黑', Verdana, Helvetica, Arial, sans-serif;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-box-sizing: border-box;
padding:0;
margin:0;
list-style:none;
box-sizing: border-box;
}
body,html{
height:100%;
overflow:hidden;
}
body{
background:url(../img/home/bg.png) no-repeat ;
background-size: cover;
}
.figure{
position: absolute;
left: 3%;
font-size: 20px;
letter-spacing: 2px;
top: 2%;
color: #19ECFF;
width: 10%;
height: 5%;
}
.figures{
height:100%;
width: 100%;
background:url(../img/home/button.png) no-repeat ;
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.time{
position: absolute;
right: 2%;
font-size: 20px;
letter-spacing: 2px;
top: 2.5%;
color: #19ECFF;
}
.tou{
height: 100%;
width: 100%;
}
.centers{
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.head{
height:10%;
width: 100%;
font-size: 40px;
color: #19ECFF;
letter-spacing: 10px;
font-weight: bold;
}
.main{
display: flex;
height:90%;
width: 100%;
}
.login{
height: 56%;
width: 30%;
}
.title{
color: #ffffff;
font-size: 40px;
font-weight: bold;
letter-spacing: 10px;
}
.one{
flex: 0;
margin-top: 3%;
color: #ffffff;
letter-spacing: 2px;
font-size: 18px;
font-weight: bold;
margin-left: 4%;
margin-right: 0%;
}
.one span{
border: 2px solid #1B9DFC;
}
.two{
margin-bottom: 2%;
display: flex;
flex: 2;
margin-left: 6%;
margin-right: 6%;
}
.four{
margin-bottom: 2%;
display: flex;
flex: 4;
margin-left: 10%;
margin-right: 6%;
}
.infoBg{
flex: 1;
color: #F9F9FA;
padding-top: 1%;
letter-spacing: 1px;
font-size: 18px;
display: flex;
}
.fonts{
flex: 1;
font-size: 16px;
}
.cursor{
height: 75px;
background-image: url(../img/home/cursor.png);
background-size: cover;
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.board{
background:url(../img/home/board.png);
background-size: cover;
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.blue{
color: #01E2DE;
font-size: 21px;
font-weight: bold
}
.green{
color: #5CFEA7;
font-size: 21px;
font-weight: bold
}
.red{
color: #FF5C52;
font-size: 21px;
font-weight: bold
}
.yellow{
color: #FEDB65;
font-size: 21px;
font-weight: bold
}
.ash{
color: #C2C6D0;
}
.ass{
color: #40B284;
}
.ye{
color: #D3B95E;
}
.info{
flex: 2.35;
height: 100%;
display: flex;
flex-direction: column;
}
.resource{
flex:3;
height: 100%;
display: flex;
flex-direction: column;
}
.greens{
display: block;
height: 35px;
width: 35px;
background:url(../img/home/green.png);
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.blues{
height: 35px;
width: 35px;
background:url(../img/home/blue.png);
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.yellows{
height: 35px;
width: 35px;
background:url(../img/home/yellow.png);
background-repeat: no-repeat;
background-position: center center; /* 可选,用于居中背景图 */
}
.text{
flex: 1;
color: #C3C5CF;
}
.textFont{
color: #00FFF4;
font-size: 18px;
font-weight: bold;
}
.textFonts{
color: #FEDB65;
font-size: 18px;
font-weight: bold;
}
table {
border-collapse: collapse;
}
table td {
padding: 10px;
text-align: center;
}
.device table td {
padding: 10px 10px 10px 25px;
text-align: left;
}
tr:nth-child(odd) td {
background-color: #011F50;
}
tr:nth-child(even) td {
background-color: #001A45;
}
.titles{
font-size: 16px;
letter-spacing: 2px;
color: #ffffff;
}
a.logo{
display: block;
height: 58px;
width: 167px;
margin: 0 auto 30px auto;
background-size: 167px 42px;
}
.message {
margin: 1% 0 0 0;
text-align: center;
color: #fff;
font-size: 30px;
letter-spacing: 3px;
font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif;
font-weight: 600;
}
#login-form{
margin-top: 15%;
width: 70%;
margin-left: 15%;
}
.input-container{
position: relative;
}
.icon {
position: absolute;
top: 16px;
left: 10px;
width: 20px;
height: 20px;
}
.photo{
background-image: url("../img/login/phone.png");
}
.pwd{
background-image: url("../img/login/pwd.png");
}
.code{
background-image: url("../img/login/code.png");
}
.refresh{
position: absolute;
top: 20px;
right: -20px;
width: 25px;
height: 25px;
background-image: url("../img/login/refresh.png");
}
/* 设置弹出的div的背景色为 #011F50 */
#myDivContent {
height: 100%;
width: 100%;
background-color: #011F50;
}
/* 设置表头的背景色为 #011F50 */
#myDivContent thead {
height: 100%;
width: 100%;
background-color: #011F50;
}
/* 设置表格内容的背景色为 #011F50 */
#myDivContent tbody {
height: 100%;
width: 100%;
background-color: #011F50;
}
/* 弹出层标题栏背景色设置为 #011F50 */
.layui-layer-title {
background-color: #00A1AE !important;
border-bottom: 0px solid #011F50 !important;
color: #ffffff !important;
}
/* 弹出层内容区域背景色设置为 #011F50 */
.layui-layer-content {
background-color: #00A1AE!important;
border-bottom: 0px solid #011F50 !important;
color: #ffffff !important;
}
/* 弹出层标题栏关闭按钮的颜色设置为 #011F50 */
.layui-layer-setwin .layui-layer-close {
color: red !important;
}
::-webkit-input-placeholder{
/*Webkit browsers*/
color:#9FA6B4;
font-size:16px;
}
::-moz-placeholder{
/*Mozilla Firefox 4 to 8*/
color:#9FA6B4;
font-size:16px;
}
::-moz-placeholder{
/*Mozilla Firefox 19+*/
color:#9FA6B4;
font-size:16px;
}
::-ms-input-placeholder{
/*Internet Explorer 10+*/
color:#9FA6B4;
font-size:16px;
}
input[type=text],
input[type=file],
input[type=password],
input[type=email], select {
border: 1px solid #2AA0E6;
vertical-align: middle;
border-radius: 3px;
height: 50px;
padding: 0px 35px;
font-size: 14px;
color: #ffffff;
outline:none;
width:100%;
background-color: transparent;
}
input[type=text]:focus,
input[type=file]:focus,
input[type=password]:focus,
input[type=email]:focus, select:focus {
border: 1px solid #27A9E3;
}
input[type=submit],
button{
display: inline-block;
vertical-align: middle;
padding: 12px 24px;
margin: 0px;
font-size: 18px;
line-height: 24px;
text-align: center;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
color: #ffffff;
background-color: #189F92;
border-radius: 3px;
border: none;
-webkit-appearance: none;
outline:none;
width:100%;
}
hr.hr15 {
height: 15px;
border: none;
margin: 0px;
padding: 0px;
width: 100%;
}
hr.hr20 {
height: 20px;
border: none;
margin: 0px;
padding: 0px;
width: 100%;
}
.copyright{
font-size:14px;
color:rgba(255,255,255,0.85);
display:block;
position:absolute;
bottom:15px;
right:15px;
}

File diff suppressed because one or more lines are too long

View File

@ -1,28 +0,0 @@
table.treetable span.indenter {
display: inline-block;
margin: 0;
padding: 0;
text-align: right;
/* Disable text selection of nodes (for better D&D UX) */
user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
-webkit-user-select: none;
/* Force content-box box model for indenter (Bootstrap compatibility) */
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
width: 19px;
}
table.treetable span.indenter a {
background-position: left center;
background-repeat: no-repeat;
display: inline-block;
text-decoration: none;
width: 19px;
}

View File

@ -1,88 +0,0 @@
table.treetable {
border: 1px solid #888;
border-collapse: collapse;
font-size: 1.0em;
line-height: 1;
margin: .6em 0 1.8em 0;
width: 100%;
}
table.treetable caption {
font-size: .9em;
font-weight: bold;
margin-bottom: .2em;
}
table.treetable thead {
background: #aaa url(data:image/png;base64,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) repeat-x top left;
font-size: .9em;
}
table.treetable thead tr th {
border: 1px solid #888;
font-weight: normal;
padding: .3em 1em .1em 1em;
text-align: left;
}
table.treetable tbody tr td {
cursor: default;
padding: .3em 1em;
height: 35px;
}
table.treetable span {
background-position: center left;
background-repeat: no-repeat;
padding: .2em 0 .2em 1.5em;
}
table.treetable span.file {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADoSURBVBgZBcExblNBGAbA2ceegTRBuIKOgiihSZNTcC5LUHAihNJR0kGKCDcYJY6D3/77MdOinTvzAgCw8ysThIvn/VojIyMjIyPP+bS1sUQIV2s95pBDDvmbP/mdkft83tpYguZq5Jh/OeaYh+yzy8hTHvNlaxNNczm+la9OTlar1UdA/+C2A4trRCnD3jS8BB1obq2Gk6GU6QbQAS4BUaYSQAf4bhhKKTFdAzrAOwAxEUAH+KEM01SY3gM6wBsEAQB0gJ+maZoC3gI6iPYaAIBJsiRmHU0AALOeFC3aK2cWAACUXe7+AwO0lc9eTHYTAAAAAElFTkSuQmCC);
}
table.treetable span.folder {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGrSURBVDjLxZO7ihRBFIa/6u0ZW7GHBUV0UQQTZzd3QdhMQxOfwMRXEANBMNQX0MzAzFAwEzHwARbNFDdwEd31Mj3X7a6uOr9BtzNjYjKBJ6nicP7v3KqcJFaxhBVtZUAK8OHlld2st7Xl3DJPVONP+zEUV4HqL5UDYHr5xvuQAjgl/Qs7TzvOOVAjxjlC+ePSwe6DfbVegLVuT4r14eTr6zvA8xSAoBLzx6pvj4l+DZIezuVkG9fY2H7YRQIMZIBwycmzH1/s3F8AapfIPNF3kQk7+kw9PWBy+IZOdg5Ug3mkAATy/t0usovzGeCUWTjCz0B+Sj0ekfdvkZ3abBv+U4GaCtJ1iEm6ANQJ6fEzrG/engcKw/wXQvEKxSEKQxRGKE7Izt+DSiwBJMUSm71rguMYhQKrBygOIRStf4TiFFRBvbRGKiQLWP29yRSHKBTtfdBmHs0BUpgvtgF4yRFR+NUKi0XZcYjCeCG2smkzLAHkbRBmP0/Uk26O5YnUActBp1GsAI+S5nRJJJal5K1aAMrq0d6Tm9uI6zjyf75dAe6tx/SsWeD//o2/Ab6IH3/h25pOAAAAAElFTkSuQmCC);
}
table.treetable tr.collapsed span.indenter a {
background-image: url(data:image/png;base64,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);
}
table.treetable tr.expanded span.indenter a {
background-image: url(data:image/png;base64,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);
}
table.treetable tr.branch {
background-color: #f9f9f9;
}
table.treetable tr.selected {
background-color: #3875d7;
color: #fff;
}
table.treetable tr span.indenter a {
outline: none; /* Expander shows outline after upgrading to 3.0 (#141) */
}
table.treetable tr.collapsed.selected span.indenter a {
background-image: url(data:image/png;base64,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);
}
table.treetable tr.expanded.selected span.indenter a {
background-image: url(data:image/png;base64,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);
}
table.treetable tr.accept {
background-color: #a3bce4;
color: #fff
}
table.treetable tr.collapsed.accept td span.indenter a {
background-image: url(data:image/x-png;base64,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);
}
table.treetable tr.expanded.accept td span.indenter a {
background-image: url(data:image/x-png;base64,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);
}

View File

@ -1,28 +0,0 @@
body {
background: #ddd;
color: #000;
font-family: Helvetica, Arial, sans-serif;
line-height: 1.5;
margin: 0;
padding: 0;
}
#main {
background: #fff;
border-left: 20px solid #eee;
border-right: 20px solid #eee;
margin: 0 auto;
max-width: 800px;
padding: 20px;
}
pre.listing {
background: #eee;
border: 1px solid #ccc;
margin: .6em 0 .3em 0;
padding: .1em .3em;
}
pre.listing b {
color: #f00;
}

View File

@ -1,19 +0,0 @@
/*
* It is advised not to edit the smartadmin_production.css
* as this will override any changes you make in the
* later versions of this theme.
*
* We advise that you use use this CSS to override
* SmartAdmin styles.
*
* Rename the stylesheet to whatever your liking so it will stay
* unique to you with each update of SmartAdmin.
*/
/*
* INDEX
*
* - HTML
* - BODY
* - CUSTOM STYLES
*/

View File

@ -1,33 +0,0 @@
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;padding: 0;border: 0;outline: 0;font-weight: inherit;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;}
body {color: #2f332a;font: 15px/21px Arial, Helvetica, simsun, sans-serif;background: #f0f6e4 \9;}
h1, h2, h3, h4, h5, h6 {color: #2f332a;font-weight: bold;font-family: Helvetica, Arial, sans-serif;padding-bottom: 5px;}
h1 {font-size: 24px;line-height: 34px;text-align: center;}
h2 {font-size: 14px;line-height: 24px;padding-top: 5px;}
h6 {font-weight: normal;font-size: 12px;letter-spacing: 1px;line-height: 24px;text-align: center;}
a {color:#3C6E31;text-decoration: underline;}
a:hover {background-color:#3C6E31;color:white;}
input.radio {margin: 0 2px 0 8px;}
input.radio.first {margin-left:0;}
input.empty {color: lightgray;}
code {color: #2f332a;}
.highlight_red {color:#A60000;}
.highlight_green {color:#A7F43D;}
li {list-style: circle;font-size: 12px;}
li.title {list-style: none;}
ul.list {margin-left: 17px;}
div.content_wrap {width: 600px;height:380px;}
div.content_wrap div.left{float: left;width: 250px;}
div.content_wrap div.right{float: right;width: 340px;}
div.zTreeDemoBackground {width:250px;height:362px;text-align:left;}
ul.ztree {margin-top: 10px;border: 1px solid #617775;background: #f0f6e4;width:220px;height:360px;overflow-y:scroll;overflow-x:auto;}
ul.log {border: 1px solid #617775;background: #f0f6e4;width:300px;height:170px;overflow: hidden;}
ul.log.small {height:45px;}
ul.log li {color: #666666;list-style: none;padding-left: 10px;}
ul.log li.dark {background-color: #E3E3E3;}
/* ruler */
div.ruler {height:20px; width:220px; background-color:#f0f6e4;border: 1px solid #333; margin-bottom: 5px; cursor: pointer}
div.ruler div.cursor {height:20px; width:30px; background-color:#3C6E31; color:white; text-align: right; padding-right: 5px; cursor: pointer}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 601 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 710 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,97 +0,0 @@
/*-------------------------------------
zTree Style
version: 3.4
author: Hunter.z
email: hunter.z@263.net
website: http://code.google.com/p/jquerytree/
-------------------------------------*/
.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
.ztree {margin:0; padding:5px; color:#333}
.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
.ztree li ul{ margin:0; padding:0 0 0 18px}
.ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent;
text-decoration:none; vertical-align:top; display: inline-block}
.ztree li a:hover {text-decoration:underline}
.ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid;
opacity:0.8; filter:alpha(opacity=80)}
.ztree li a.tmpTargetNode_prev {}
.ztree li a.tmpTargetNode_next {}
.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
font-size:12px; border:1px #7EC4CC solid; *border:0px}
.ztree li span {line-height:16px; margin-right:2px}
.ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
border:0 none; cursor: pointer;outline:none;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
.ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
.ztree li span.button.chk.checkbox_false_full {background-position:0 0}
.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
.ztree li span.button.chk.radio_false_full {background-position:-28px 0}
.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
.ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
.ztree li span.button.chk.radio_true_full {background-position:-42px 0}
.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
.ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
.ztree li span.button.switch {width:18px; height:18px}
.ztree li span.button.root_open{background-position:-92px -54px}
.ztree li span.button.root_close{background-position:-74px -54px}
.ztree li span.button.roots_open{background-position:-92px 0}
.ztree li span.button.roots_close{background-position:-74px 0}
.ztree li span.button.center_open{background-position:-92px -18px}
.ztree li span.button.center_close{background-position:-74px -18px}
.ztree li span.button.bottom_open{background-position:-92px -36px}
.ztree li span.button.bottom_close{background-position:-74px -36px}
.ztree li span.button.noline_open{background-position:-92px -72px}
.ztree li span.button.noline_close{background-position:-74px -72px}
.ztree li span.button.root_docu{ background:none;}
.ztree li span.button.roots_docu{background-position:-56px 0}
.ztree li span.button.center_docu{background-position:-56px -18px}
.ztree li span.button.bottom_docu{background-position:-56px -36px}
.ztree li span.button.noline_docu{ background:none;}
.ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
/* level style*/
/*.ztree li span.button.level0 {
display:none;
}
.ztree li ul.level0 {
padding:0;
background:none;
}*/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 475 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 917 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 517 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 511 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 B

Some files were not shown because too many files have changed in this diff Show More