Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
|
78c683bf9c | 3 months ago |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 75 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 630 KiB |
@ -0,0 +1,33 @@
|
||||
HELP.md
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### STS ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>3.2.3</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
<groupId>com.sa</groupId>
|
||||
<artifactId>bigevent</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<name>bigevent</name>
|
||||
<description>bigevent</description>
|
||||
<properties>
|
||||
<java.version>17</java.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter</artifactId>
|
||||
<version>3.0.3</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.mysql</groupId>
|
||||
<artifactId>mysql-connector-j</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter-test</artifactId>
|
||||
<version>3.0.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<scope>annotationProcessor</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.auth0</groupId>
|
||||
<artifactId>java-jwt</artifactId>
|
||||
<version>4.4.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
@ -0,0 +1,61 @@
|
||||
CREATE TABLE reports (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
name TEXT,
|
||||
selectedTime TEXT,
|
||||
selectedDate TEXT,
|
||||
license TEXT,
|
||||
acftType TEXT,
|
||||
fixstage TEXT,
|
||||
fixcheck TEXT,
|
||||
aarcstatus TEXT,
|
||||
phase TEXT,
|
||||
wether TEXT,
|
||||
lightCondition TEXT,
|
||||
carone TEXT,
|
||||
cartwo TEXT,
|
||||
workPosition TEXT,
|
||||
task TEXT,
|
||||
plan TEXT,
|
||||
ats TEXT,
|
||||
atc TEXT,
|
||||
tcas TEXT,
|
||||
advise TEXT,
|
||||
involve TEXT,
|
||||
tudentType TEXT,
|
||||
acft0Type TEXT,
|
||||
task0 TEXT,
|
||||
plan0 TEXT,
|
||||
phase0 TEXT,
|
||||
wether0 TEXT,
|
||||
lightCondition0 TEXT,
|
||||
ats0 TEXT,
|
||||
atc0 TEXT,
|
||||
tcas0 TEXT,
|
||||
advise0 TEXT,
|
||||
inputValue1 TEXT,
|
||||
inputValue2 TEXT,
|
||||
inputValue3 TEXT,
|
||||
inputValue4 TEXT,
|
||||
inputValue5 TEXT,
|
||||
inputValue6 TEXT,
|
||||
inputValue7 TEXT,
|
||||
inputValue8 TEXT,
|
||||
inputValue9 TEXT,
|
||||
inputValue10 TEXT,
|
||||
inputValue11 TEXT,
|
||||
inputValue12 TEXT,
|
||||
inputValue13 TEXT,
|
||||
inputValue14 TEXT,
|
||||
inputValue15 TEXT,
|
||||
inputValue16 TEXT,
|
||||
inputValue17 TEXT,
|
||||
inputValue18 TEXT,
|
||||
inputValue19 TEXT,
|
||||
inputValue20 TEXT,
|
||||
inputValue21 TEXT,
|
||||
inputValue22 TEXT,
|
||||
inputValue23 TEXT,
|
||||
inputValue100 TEXT,
|
||||
inputValue101 TEXT,
|
||||
inputValue102 TEXT
|
||||
);
|
@ -0,0 +1,15 @@
|
||||
package com.sa.unsafeincidents;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class UnsafeincidentsApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
SpringApplication.run(UnsafeincidentsApplication.class, args);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.sa.unsafeincidents.config;
|
||||
|
||||
import com.sa.unsafeincidents.interceptors.LoginInterceptor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@Configuration
|
||||
public class webconfig implements WebMvcConfigurer {
|
||||
|
||||
@Autowired
|
||||
private LoginInterceptor loginInterceptor;
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(loginInterceptor).excludePathPatterns("/user/login", "/user/register");
|
||||
}
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package com.sa.unsafeincidents.controller;
|
||||
import com.sa.unsafeincidents.pojo.Report;
|
||||
import com.sa.unsafeincidents.pojo.Result;
|
||||
import com.sa.unsafeincidents.pojo.User;
|
||||
import com.sa.unsafeincidents.service.ReportService;
|
||||
import com.sa.unsafeincidents.service.UserService;
|
||||
import com.sa.unsafeincidents.utils.ThreadLocalUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/report")
|
||||
public class ReportController {
|
||||
@Autowired
|
||||
ReportService reportService;
|
||||
|
||||
@Autowired
|
||||
UserService userService;
|
||||
|
||||
@PostMapping("/add")
|
||||
public Result add(@RequestBody Report form) {
|
||||
reportService.add(form);
|
||||
System.out.println("test");
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
public Result<Report> get(Integer id) {
|
||||
return Result.success(reportService.findByID(id));
|
||||
}
|
||||
|
||||
@PostMapping("/reply")
|
||||
public Result reply(Integer id, String reply) {
|
||||
reportService.reply(id, reply);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
public Result<List<Report>> list() {
|
||||
Map<String,Object> claims = ThreadLocalUtil.get();
|
||||
String username = (String) claims.get("username");
|
||||
User user = userService.findByUsername(username);
|
||||
if (user.getPermissions() == 1) {
|
||||
return Result.success(reportService.list());
|
||||
} else {
|
||||
List<Report> reports = reportService.list(username);
|
||||
return Result.success(reports);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package com.sa.unsafeincidents.controller;
|
||||
|
||||
|
||||
import com.sa.unsafeincidents.pojo.Result;
|
||||
import com.sa.unsafeincidents.pojo.User;
|
||||
import com.sa.unsafeincidents.service.UserService;
|
||||
import com.sa.unsafeincidents.utils.JwtUtil;
|
||||
import com.sa.unsafeincidents.utils.Md5Util;
|
||||
import com.sa.unsafeincidents.utils.ThreadLocalUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/user")
|
||||
public class UserController {
|
||||
@Autowired
|
||||
UserService userService;
|
||||
|
||||
@PostMapping("/register")
|
||||
public Result register(String username, String password) {
|
||||
User user = userService.findByUsername(username);
|
||||
|
||||
if (user == null) {
|
||||
userService.register(username, password);
|
||||
return Result.success();
|
||||
} else {
|
||||
return Result.error("用户已存在");
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping("/is_admin")
|
||||
public Result is_admin() {
|
||||
Map<String,Object> claims = ThreadLocalUtil.get();
|
||||
String username = (String) claims.get("username");
|
||||
// System.out.println(username);
|
||||
User user = userService.findByUsername(username);
|
||||
if (user.getPermissions() == 1) return Result.success(true);
|
||||
return Result.success(false);
|
||||
}
|
||||
|
||||
@PostMapping("/login")
|
||||
public Result login(String username,String password) {
|
||||
User loginuser = userService.findByUsername(username);
|
||||
|
||||
// System.out.println(username + ' ' + password);
|
||||
|
||||
if (loginuser == null || !loginuser.getPassword().equals(Md5Util.getMD5String(password))) {
|
||||
return Result.error("用户名或密码错误");
|
||||
} else {
|
||||
Map<String,Object> claims = new HashMap<>();
|
||||
claims.put("id",loginuser.getId());
|
||||
claims.put("username",loginuser.getUsername());
|
||||
String token = JwtUtil.genToken(claims);
|
||||
return Result.success(token);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.sa.unsafeincidents.exception;
|
||||
|
||||
|
||||
import com.sa.unsafeincidents.pojo.Result;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
|
||||
@RestControllerAdvice
|
||||
public class GlobalExceptionHandle {
|
||||
|
||||
|
||||
@ExceptionHandler(Exception.class)
|
||||
public Result HandleException(Exception e) {
|
||||
e.printStackTrace();
|
||||
return Result.error(StringUtils.hasLength(e.getMessage())? e.getMessage():"操作失败");
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.sa.unsafeincidents.interceptors;
|
||||
|
||||
import com.sa.unsafeincidents.utils.JwtUtil;
|
||||
import com.sa.unsafeincidents.utils.ThreadLocalUtil;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
@Component
|
||||
public class LoginInterceptor implements HandlerInterceptor {
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
String token = request.getHeader("Authorization");
|
||||
try {
|
||||
ThreadLocalUtil.set(JwtUtil.parseToken(token));
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
response.setStatus(401);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
||||
ThreadLocalUtil.remove();
|
||||
}
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
package com.sa.unsafeincidents.mapper;
|
||||
|
||||
import com.sa.unsafeincidents.pojo.Report;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@Mapper
|
||||
public interface ReportMapper {
|
||||
|
||||
@Insert("INSERT INTO reports (username, name, selectedTime, selectedDate, license, acftType, fixstage, " +
|
||||
"fixcheck, aarcstatus, phase, wether, lightCondition, carone, cartwo, workPosition, task, plan, ats, atc, tcas, " +
|
||||
"advise, involve, tudentType, acft0Type, task0, plan0, phase0, wether0, lightCondition0, ats0, atc0, tcas0, " +
|
||||
"advise0, inputValue1, inputValue2, inputValue3, inputValue4, inputValue5, inputValue6, inputValue7, " +
|
||||
"inputValue8, inputValue9, inputValue10, inputValue11, inputValue12, inputValue13, inputValue14, inputValue15, " +
|
||||
"inputValue16, inputValue17, inputValue18, inputValue19, inputValue20, inputValue21, inputValue22, " +
|
||||
"inputValue23, inputValue100, inputValue101, inputValue102, reply) " +
|
||||
"VALUES (#{username}, #{name}, #{selectedTime}, #{selectedDate}, #{license}, #{acftType}, #{fixstage}, " +
|
||||
"#{fixcheck}, #{aarcstatus}, #{phase}, #{wether}, #{lightCondition}, #{carone}, #{cartwo}, #{workPosition}, " +
|
||||
"#{task}, #{plan}, #{ats}, #{atc}, #{tcas}, #{advise}, #{involve}, #{tudentType}, #{acft0Type}, #{task0}, " +
|
||||
"#{plan0}, #{phase0}, #{wether0}, #{lightCondition0}, #{ats0}, #{atc0}, #{tcas0}, #{advise0}, " +
|
||||
"#{inputValue1}, #{inputValue2}, #{inputValue3}, #{inputValue4}, #{inputValue5}, #{inputValue6}, " +
|
||||
"#{inputValue7}, #{inputValue8}, #{inputValue9}, #{inputValue10}, #{inputValue11}, #{inputValue12}, " +
|
||||
"#{inputValue13}, #{inputValue14}, #{inputValue15}, #{inputValue16}, #{inputValue17}, #{inputValue18}, " +
|
||||
"#{inputValue19}, #{inputValue20}, #{inputValue21}, #{inputValue22}, #{inputValue23}, #{inputValue100}, " +
|
||||
"#{inputValue101}, #{inputValue102}, #{reply})")
|
||||
void add(Report report);
|
||||
|
||||
@Delete("DELETE FROM reports WHERE id = #{id}")
|
||||
void deleteById(Long id);
|
||||
|
||||
@Select("select * from reports where name=#{name}")
|
||||
ArrayList<Report> findByName(String name);
|
||||
|
||||
@Select("select * from reports")
|
||||
ArrayList<Report> list();
|
||||
|
||||
@Select("select * from reports where id=#{id}")
|
||||
Report findByID(Integer id);
|
||||
|
||||
@Update("UPDATE reports SET " +
|
||||
"name = #{name}, " +
|
||||
"selectedTime = #{selectedTime}, " +
|
||||
"selectedDate = #{selectedDate}, " +
|
||||
"license = #{license}, " +
|
||||
"acftType = #{acftType}, " +
|
||||
"fixstage = #{fixstage}, " +
|
||||
"fixcheck = #{fixcheck}, " +
|
||||
"aarcstatus = #{aarcstatus}, " +
|
||||
"phase = #{phase}, " +
|
||||
"wether = #{wether}, " +
|
||||
"lightCondition = #{lightCondition}, " +
|
||||
"carone = #{carone}, " +
|
||||
"cartwo = #{cartwo}, " +
|
||||
"workPosition = #{workPosition}, " +
|
||||
"task = #{task}, " +
|
||||
"plan = #{plan}, " +
|
||||
"ats = #{ats}, " +
|
||||
"atc = #{atc}, " +
|
||||
"tcas = #{tcas}, " +
|
||||
"advise = #{advise}, " +
|
||||
"involve = #{involve}, " +
|
||||
"tudentType = #{tudentType}, " +
|
||||
"acft0Type = #{acft0Type}, " +
|
||||
"task0 = #{task0}, " +
|
||||
"plan0 = #{plan0}, " +
|
||||
"phase0 = #{phase0}, " +
|
||||
"wether0 = #{wether0}, " +
|
||||
"lightCondition0 = #{lightCondition0}, " +
|
||||
"ats0 = #{ats0}, " +
|
||||
"atc0 = #{atc0}, " +
|
||||
"tcas0 = #{tcas0}, " +
|
||||
"advise0 = #{advise0}, " +
|
||||
"inputValue1 = #{inputValue1}, " +
|
||||
"inputValue2 = #{inputValue2}, " +
|
||||
"inputValue3 = #{inputValue3}, " +
|
||||
"inputValue4 = #{inputValue4}, " +
|
||||
"inputValue5 = #{inputValue5}, " +
|
||||
"inputValue6 = #{inputValue6}, " +
|
||||
"inputValue7 = #{inputValue7}, " +
|
||||
"inputValue8 = #{inputValue8}, " +
|
||||
"inputValue9 = #{inputValue9}, " +
|
||||
"inputValue10 = #{inputValue10}, " +
|
||||
"inputValue11 = #{inputValue11}, " +
|
||||
"inputValue12 = #{inputValue12}, " +
|
||||
"inputValue13 = #{inputValue13}, " +
|
||||
"inputValue14 = #{inputValue14}, " +
|
||||
"inputValue15 = #{inputValue15}, " +
|
||||
"inputValue16 = #{inputValue16}, " +
|
||||
"inputValue17 = #{inputValue17}, " +
|
||||
"inputValue18 = #{inputValue18}, " +
|
||||
"inputValue19 = #{inputValue19}, " +
|
||||
"inputValue20 = #{inputValue20}, " +
|
||||
"inputValue21 = #{inputValue21}, " +
|
||||
"inputValue22 = #{inputValue22}, " +
|
||||
"inputValue23 = #{inputValue23}, " +
|
||||
"inputValue100 = #{inputValue100}, " +
|
||||
"inputValue101 = #{inputValue101}, " +
|
||||
"inputValue102 = #{inputValue102}, " +
|
||||
"reply = #{reply} " +
|
||||
"WHERE id = #{id}")
|
||||
void update(Integer id,Report report);
|
||||
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.sa.unsafeincidents.mapper;
|
||||
|
||||
import com.sa.unsafeincidents.pojo.User;
|
||||
import org.apache.ibatis.annotations.Insert;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
@Mapper
|
||||
public interface UserMapper {
|
||||
|
||||
@Select("select * from users where username = #{username}")
|
||||
User findByUsername(String username);
|
||||
|
||||
|
||||
@Insert("INSERT INTO users (username, password, create_time, update_time) " +
|
||||
"VALUES (#{username}, #{md5Password}, NOW(), NOW())")
|
||||
void register(String username, String md5Password);
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.sa.unsafeincidents.pojo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class Image {
|
||||
private Integer id; //图片id
|
||||
private String image; //图片url
|
||||
private String link; //图片跳转链接
|
||||
private String content; //图片文本
|
||||
@JsonIgnore
|
||||
private String category; //图片类别,图片用在什么地方
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
package com.sa.unsafeincidents.pojo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class Report {
|
||||
private Integer id;
|
||||
private String username;
|
||||
private String name;
|
||||
private String selectedTime;
|
||||
private String selectedDate;
|
||||
private String license;
|
||||
private String acftType;
|
||||
private String fixstage;
|
||||
private String fixcheck;
|
||||
private String aarcstatus;
|
||||
private String phase;
|
||||
private String wether;
|
||||
private String lightCondition;
|
||||
private String carone;
|
||||
private String cartwo;
|
||||
private String workPosition;
|
||||
private String task;
|
||||
private String plan;
|
||||
private String ats;
|
||||
private String atc;
|
||||
private String tcas;
|
||||
private String advise;
|
||||
private String involve;
|
||||
private String tudentType;
|
||||
private String acft0Type;
|
||||
private String task0;
|
||||
private String plan0;
|
||||
private String phase0;
|
||||
private String wether0;
|
||||
private String lightCondition0;
|
||||
private String ats0;
|
||||
private String atc0;
|
||||
private String tcas0;
|
||||
private String advise0;
|
||||
private String inputValue1;
|
||||
private String inputValue2;
|
||||
private String inputValue3;
|
||||
private String inputValue4;
|
||||
private String inputValue5;
|
||||
private String inputValue6;
|
||||
private String inputValue7;
|
||||
private String inputValue8;
|
||||
private String inputValue9;
|
||||
private String inputValue10;
|
||||
private String inputValue11;
|
||||
private String inputValue12;
|
||||
private String inputValue13;
|
||||
private String inputValue14;
|
||||
private String inputValue15;
|
||||
private String inputValue16;
|
||||
private String inputValue17;
|
||||
private String inputValue18;
|
||||
private String inputValue19;
|
||||
private String inputValue20;
|
||||
private String inputValue21;
|
||||
private String inputValue22;
|
||||
private String inputValue23;
|
||||
private String inputValue100;
|
||||
private String inputValue101;
|
||||
private String inputValue102;
|
||||
private String reply;
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.sa.unsafeincidents.pojo;
|
||||
|
||||
|
||||
//统一响应结果
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
public class Result<T> {
|
||||
private Integer code;//业务状态码 0-成功 1-失败
|
||||
private String message;//提示信息
|
||||
private T data;//响应数据
|
||||
|
||||
//快速返回操作成功响应结果(带响应数据)
|
||||
public static <E> Result<E> success(E data) {
|
||||
return new Result<>(0, "操作成功", data);
|
||||
}
|
||||
|
||||
//快速返回操作成功响应结果
|
||||
public static Result success() {
|
||||
return new Result(0, "操作成功", null);
|
||||
}
|
||||
|
||||
public static Result error(String message) {
|
||||
return new Result(1, message, null);
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.sa.unsafeincidents.pojo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class User {
|
||||
private Integer id;//主键ID
|
||||
private String username;//用户名
|
||||
@JsonIgnore
|
||||
private String password;//密码
|
||||
private Integer permissions;
|
||||
private LocalDateTime createTime;//创建时间
|
||||
private LocalDateTime updateTime;//更新时间
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.sa.unsafeincidents.service;
|
||||
|
||||
import com.sa.unsafeincidents.pojo.Report;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public interface ReportService {
|
||||
|
||||
void add(Report form);
|
||||
|
||||
ArrayList<Report> list(String name);
|
||||
ArrayList<Report> list();
|
||||
|
||||
Report findByID(Integer id);
|
||||
|
||||
void reply(Integer id, String reply);
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package com.sa.unsafeincidents.service;
|
||||
|
||||
import com.sa.unsafeincidents.pojo.User;
|
||||
|
||||
public interface UserService {
|
||||
|
||||
User findByUsername(String username);
|
||||
|
||||
void register(String username, String password);
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package com.sa.unsafeincidents.service.impl;
|
||||
|
||||
import com.sa.unsafeincidents.mapper.ReportMapper;
|
||||
|
||||
import com.sa.unsafeincidents.pojo.Report;
|
||||
import com.sa.unsafeincidents.service.ReportService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@Service
|
||||
public class ReportServiceImpl implements ReportService {
|
||||
|
||||
@Autowired
|
||||
ReportMapper reportMapper;
|
||||
|
||||
@Override
|
||||
public void add(Report form) {
|
||||
reportMapper.add(form);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList<Report> list(String name){
|
||||
return reportMapper.findByName(name);
|
||||
};
|
||||
|
||||
@Override
|
||||
public ArrayList<Report> list(){
|
||||
return reportMapper.list();
|
||||
};
|
||||
|
||||
@Override
|
||||
public Report findByID(Integer id) {
|
||||
return reportMapper.findByID(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reply(Integer id,String reply) {
|
||||
Report report = reportMapper.findByID(id);
|
||||
report.setReply(reply);
|
||||
reportMapper.update(id, report);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.sa.unsafeincidents.service.impl;
|
||||
|
||||
import com.sa.unsafeincidents.mapper.UserMapper;
|
||||
import com.sa.unsafeincidents.pojo.User;
|
||||
import com.sa.unsafeincidents.service.UserService;
|
||||
import com.sa.unsafeincidents.utils.Md5Util;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class UserServiceImpl implements UserService {
|
||||
|
||||
@Autowired
|
||||
UserMapper userMapper;
|
||||
|
||||
@Override
|
||||
public User findByUsername(String username) {
|
||||
return userMapper.findByUsername(username);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(String username, String password) {
|
||||
String md5Password = Md5Util.getMD5String(password);
|
||||
|
||||
userMapper.register(username,md5Password);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.sa.unsafeincidents.utils;
|
||||
|
||||
import com.auth0.jwt.JWT;
|
||||
import com.auth0.jwt.algorithms.Algorithm;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
public class JwtUtil {
|
||||
|
||||
private static final String KEY = "sa";
|
||||
|
||||
//接收业务数据,生成token并返回
|
||||
public static String genToken(Map<String, Object> claims) {
|
||||
return JWT.create()
|
||||
.withClaim("claims", claims)
|
||||
.withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12))
|
||||
.sign(Algorithm.HMAC256(KEY));
|
||||
}
|
||||
|
||||
//接收token,验证token,并返回业务数据
|
||||
public static Map<String, Object> parseToken(String token) {
|
||||
return JWT.require(Algorithm.HMAC256(KEY))
|
||||
.build()
|
||||
.verify(token)
|
||||
.getClaim("claims")
|
||||
.asMap();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.sa.unsafeincidents.utils;
|
||||
|
||||
/**
|
||||
* ThreadLocal 工具类
|
||||
*/
|
||||
@SuppressWarnings("all")
|
||||
public class ThreadLocalUtil {
|
||||
//提供ThreadLocal对象,
|
||||
private static final ThreadLocal THREAD_LOCAL = new ThreadLocal();
|
||||
|
||||
//根据键获取值
|
||||
public static <T> T get(){
|
||||
return (T) THREAD_LOCAL.get();
|
||||
}
|
||||
|
||||
//存储键值对
|
||||
public static void set(Object value){
|
||||
THREAD_LOCAL.set(value);
|
||||
}
|
||||
|
||||
|
||||
//清除ThreadLocal 防止内存泄漏
|
||||
public static void remove(){
|
||||
THREAD_LOCAL.remove();
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
server:
|
||||
port: 8080
|
||||
spring:
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://localhost:3306/unsafeincidents
|
||||
username: root
|
||||
password: 200408
|
||||
mybatis:
|
||||
configuration:
|
||||
map-underscore-to-camel-case: true
|
@ -0,0 +1,6 @@
|
||||
<html>
|
||||
<body>
|
||||
<h1>hello word!!!</h1>
|
||||
<p>this is a html page</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,13 @@
|
||||
package com.sa.unsafeincidents;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
class UnsafeincidentsApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"component": true,
|
||||
"styleIsolation": "apply-shared",
|
||||
"usingComponents": {}
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
<view class="weui-navigation-bar {{extClass}}">
|
||||
<view class="weui-navigation-bar__inner {{ios ? 'ios' : 'android'}}" style="color: {{color}}; background: {{background}}; {{displayStyle}}; {{innerPaddingRight}}; {{safeAreaTop}};">
|
||||
|
||||
<!-- 左侧按钮 -->
|
||||
<view class='weui-navigation-bar__left' style="{{leftWidth}};">
|
||||
<block wx:if="{{back || homeButton}}">
|
||||
<!-- 返回上一页 -->
|
||||
<block wx:if="{{back}}">
|
||||
<view class="weui-navigation-bar__buttons weui-navigation-bar__buttons_goback">
|
||||
<view
|
||||
bindtap="back"
|
||||
class="weui-navigation-bar__btn_goback_wrapper"
|
||||
hover-class="weui-active"
|
||||
hover-stay-time="100"
|
||||
aria-role="button"
|
||||
aria-label="返回"
|
||||
>
|
||||
<view class="weui-navigation-bar__button weui-navigation-bar__btn_goback"></view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- 返回首页 -->
|
||||
<block wx:if="{{homeButton}}">
|
||||
<view class="weui-navigation-bar__buttons weui-navigation-bar__buttons_home">
|
||||
<view
|
||||
bindtap="home"
|
||||
class="weui-navigation-bar__btn_home_wrapper"
|
||||
hover-class="weui-active"
|
||||
aria-role="button"
|
||||
aria-label="首页"
|
||||
>
|
||||
<view class="weui-navigation-bar__button weui-navigation-bar__btn_home"></view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
<block wx:else>
|
||||
<slot name="left"></slot>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<!-- 标题 -->
|
||||
<view class='weui-navigation-bar__center'>
|
||||
<view wx:if="{{loading}}" class="weui-navigation-bar__loading" aria-role="alert">
|
||||
<view
|
||||
class="weui-loading"
|
||||
aria-role="img"
|
||||
aria-label="加载中"
|
||||
></view>
|
||||
</view>
|
||||
<block wx:if="{{title}}">
|
||||
<text>{{title}}</text>
|
||||
</block>
|
||||
<block wx:else>
|
||||
<slot name="center"></slot>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<!-- 右侧留空 -->
|
||||
<view class='weui-navigation-bar__right'>
|
||||
<slot name="right"></slot>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
@ -0,0 +1,96 @@
|
||||
.weui-navigation-bar {
|
||||
--weui-FG-0:rgba(0,0,0,.9);
|
||||
--height: 44px;
|
||||
--left: 16px;
|
||||
}
|
||||
.weui-navigation-bar .android {
|
||||
--height: 48px;
|
||||
}
|
||||
|
||||
.weui-navigation-bar {
|
||||
overflow: hidden;
|
||||
color: var(--weui-FG-0);
|
||||
flex: none;
|
||||
}
|
||||
|
||||
.weui-navigation-bar__inner {
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: calc(var(--height) + env(safe-area-inset-top));
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding-top: env(safe-area-inset-top);
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.weui-navigation-bar__left {
|
||||
position: relative;
|
||||
padding-left: var(--left);
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: flex-start;
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.weui-navigation-bar__btn_goback_wrapper {
|
||||
padding: 11px 18px 11px 16px;
|
||||
margin: -11px -18px -11px -16px;
|
||||
}
|
||||
|
||||
.weui-navigation-bar__btn_goback_wrapper.weui-active {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.weui-navigation-bar__btn_goback {
|
||||
font-size: 12px;
|
||||
width: 12px;
|
||||
height: 24px;
|
||||
-webkit-mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%;
|
||||
mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%;
|
||||
-webkit-mask-size: cover;
|
||||
mask-size: cover;
|
||||
background-color: var(--weui-FG-0);
|
||||
}
|
||||
|
||||
.weui-navigation-bar__center {
|
||||
font-size: 17px;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
flex: 1;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.weui-navigation-bar__loading {
|
||||
margin-right: 4px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.weui-loading {
|
||||
font-size: 16px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
display: block;
|
||||
background: transparent url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A") no-repeat;
|
||||
background-size: 100%;
|
||||
margin-left: 0;
|
||||
animation: loading linear infinite 1s;
|
||||
}
|
||||
|
||||
@keyframes loading {
|
||||
from {
|
||||
transform: rotate(0);
|
||||
}
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
@ -0,0 +1 @@
|
||||
Subproject commit 82e6cdfe5347265c04cced222bd6398dcb6eb279
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
@ -0,0 +1 @@
|
||||
export {};
|
@ -0,0 +1,78 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var component_1 = require("../common/component");
|
||||
var button_1 = require("../mixins/button");
|
||||
(0, component_1.VantComponent)({
|
||||
classes: ['list-class'],
|
||||
mixins: [button_1.button],
|
||||
props: {
|
||||
show: Boolean,
|
||||
title: String,
|
||||
cancelText: String,
|
||||
description: String,
|
||||
round: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
zIndex: {
|
||||
type: Number,
|
||||
value: 100,
|
||||
},
|
||||
actions: {
|
||||
type: Array,
|
||||
value: [],
|
||||
},
|
||||
overlay: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
closeOnClickOverlay: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
closeOnClickAction: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
safeAreaInsetBottom: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
rootPortal: {
|
||||
type: Boolean,
|
||||
value: false,
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
onSelect: function (event) {
|
||||
var _this = this;
|
||||
var index = event.currentTarget.dataset.index;
|
||||
var _a = this.data, actions = _a.actions, closeOnClickAction = _a.closeOnClickAction, canIUseGetUserProfile = _a.canIUseGetUserProfile;
|
||||
var item = actions[index];
|
||||
if (item) {
|
||||
this.$emit('select', item);
|
||||
if (closeOnClickAction) {
|
||||
this.onClose();
|
||||
}
|
||||
if (item.openType === 'getUserInfo' && canIUseGetUserProfile) {
|
||||
wx.getUserProfile({
|
||||
desc: item.getUserProfileDesc || ' ',
|
||||
complete: function (userProfile) {
|
||||
_this.$emit('getuserinfo', userProfile);
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
onCancel: function () {
|
||||
this.$emit('cancel');
|
||||
},
|
||||
onClose: function () {
|
||||
this.$emit('close');
|
||||
},
|
||||
onClickOverlay: function () {
|
||||
this.$emit('click-overlay');
|
||||
this.onClose();
|
||||
},
|
||||
},
|
||||
});
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"van-icon": "../icon/index",
|
||||
"van-popup": "../popup/index",
|
||||
"van-loading": "../loading/index"
|
||||
}
|
||||
}
|
@ -0,0 +1 @@
|
||||
@import '../common/index.wxss';.van-action-sheet{color:var(--action-sheet-item-text-color,#323233);max-height:var(--action-sheet-max-height,90%)!important}.van-action-sheet__cancel,.van-action-sheet__item{background-color:var(--action-sheet-item-background,#fff);font-size:var(--action-sheet-item-font-size,16px);line-height:var(--action-sheet-item-line-height,22px);padding:14px 16px;text-align:center}.van-action-sheet__cancel--hover,.van-action-sheet__item--hover{background-color:#f2f3f5}.van-action-sheet__cancel:after,.van-action-sheet__item:after{border-width:0}.van-action-sheet__cancel{color:var(--action-sheet-cancel-text-color,#646566)}.van-action-sheet__gap{background-color:var(--action-sheet-cancel-padding-color,#f7f8fa);display:block;height:var(--action-sheet-cancel-padding-top,8px)}.van-action-sheet__item--disabled{color:var(--action-sheet-item-disabled-text-color,#c8c9cc)}.van-action-sheet__item--disabled.van-action-sheet__item--hover{background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__subname{color:var(--action-sheet-subname-color,#969799);font-size:var(--action-sheet-subname-font-size,12px);line-height:var(--action-sheet-subname-line-height,20px);margin-top:var(--padding-xs,8px)}.van-action-sheet__header{font-size:var(--action-sheet-header-font-size,16px);font-weight:var(--font-weight-bold,500);line-height:var(--action-sheet-header-height,48px);text-align:center}.van-action-sheet__description{color:var(--action-sheet-description-color,#969799);font-size:var(--action-sheet-description-font-size,14px);line-height:var(--action-sheet-description-line-height,20px);padding:20px var(--padding-md,16px);text-align:center}.van-action-sheet__close{color:var(--action-sheet-close-icon-color,#c8c9cc);font-size:var(--action-sheet-close-icon-size,22px)!important;line-height:inherit!important;padding:var(--action-sheet-close-icon-padding,0 16px);position:absolute!important;right:0;top:0}.van-action-sheet__loading{display:flex!important}
|
@ -0,0 +1 @@
|
||||
export {};
|
@ -0,0 +1,235 @@
|
||||
"use strict";
|
||||
var __assign = (this && this.__assign) || function () {
|
||||
__assign = Object.assign || function(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
s = arguments[i];
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
||||
t[p] = s[p];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
return __assign.apply(this, arguments);
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var component_1 = require("../common/component");
|
||||
var shared_1 = require("../picker/shared");
|
||||
var utils_1 = require("../common/utils");
|
||||
var EMPTY_CODE = '000000';
|
||||
(0, component_1.VantComponent)({
|
||||
classes: ['active-class', 'toolbar-class', 'column-class'],
|
||||
props: __assign(__assign({}, shared_1.pickerProps), { showToolbar: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
}, value: {
|
||||
type: String,
|
||||
observer: function (value) {
|
||||
this.code = value;
|
||||
this.setValues();
|
||||
},
|
||||
}, areaList: {
|
||||
type: Object,
|
||||
value: {},
|
||||
observer: 'setValues',
|
||||
}, columnsNum: {
|
||||
type: null,
|
||||
value: 3,
|
||||
}, columnsPlaceholder: {
|
||||
type: Array,
|
||||
observer: function (val) {
|
||||
this.setData({
|
||||
typeToColumnsPlaceholder: {
|
||||
province: val[0] || '',
|
||||
city: val[1] || '',
|
||||
county: val[2] || '',
|
||||
},
|
||||
});
|
||||
},
|
||||
} }),
|
||||
data: {
|
||||
columns: [{ values: [] }, { values: [] }, { values: [] }],
|
||||
typeToColumnsPlaceholder: {},
|
||||
},
|
||||
mounted: function () {
|
||||
var _this = this;
|
||||
(0, utils_1.requestAnimationFrame)(function () {
|
||||
_this.setValues();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
getPicker: function () {
|
||||
if (this.picker == null) {
|
||||
this.picker = this.selectComponent('.van-area__picker');
|
||||
}
|
||||
return this.picker;
|
||||
},
|
||||
onCancel: function (event) {
|
||||
this.emit('cancel', event.detail);
|
||||
},
|
||||
onConfirm: function (event) {
|
||||
var index = event.detail.index;
|
||||
var value = event.detail.value;
|
||||
value = this.parseValues(value);
|
||||
this.emit('confirm', { value: value, index: index });
|
||||
},
|
||||
emit: function (type, detail) {
|
||||
detail.values = detail.value;
|
||||
delete detail.value;
|
||||
this.$emit(type, detail);
|
||||
},
|
||||
parseValues: function (values) {
|
||||
var columnsPlaceholder = this.data.columnsPlaceholder;
|
||||
return values.map(function (value, index) {
|
||||
if (value &&
|
||||
(!value.code || value.name === columnsPlaceholder[index])) {
|
||||
return __assign(__assign({}, value), { code: '', name: '' });
|
||||
}
|
||||
return value;
|
||||
});
|
||||
},
|
||||
onChange: function (event) {
|
||||
var _this = this;
|
||||
var _a;
|
||||
var _b = event.detail, index = _b.index, picker = _b.picker, value = _b.value;
|
||||
this.code = value[index].code;
|
||||
(_a = this.setValues()) === null || _a === void 0 ? void 0 : _a.then(function () {
|
||||
_this.$emit('change', {
|
||||
picker: picker,
|
||||
values: _this.parseValues(picker.getValues()),
|
||||
index: index,
|
||||
});
|
||||
});
|
||||
},
|
||||
getConfig: function (type) {
|
||||
var areaList = this.data.areaList;
|
||||
return (areaList && areaList["".concat(type, "_list")]) || {};
|
||||
},
|
||||
getList: function (type, code) {
|
||||
if (type !== 'province' && !code) {
|
||||
return [];
|
||||
}
|
||||
var typeToColumnsPlaceholder = this.data.typeToColumnsPlaceholder;
|
||||
var list = this.getConfig(type);
|
||||
var result = Object.keys(list).map(function (code) { return ({
|
||||
code: code,
|
||||
name: list[code],
|
||||
}); });
|
||||
if (code != null) {
|
||||
// oversea code
|
||||
if (code[0] === '9' && type === 'city') {
|
||||
code = '9';
|
||||
}
|
||||
result = result.filter(function (item) { return item.code.indexOf(code) === 0; });
|
||||
}
|
||||
if (typeToColumnsPlaceholder[type] && result.length) {
|
||||
// set columns placeholder
|
||||
var codeFill = type === 'province'
|
||||
? ''
|
||||
: type === 'city'
|
||||
? EMPTY_CODE.slice(2, 4)
|
||||
: EMPTY_CODE.slice(4, 6);
|
||||
result.unshift({
|
||||
code: "".concat(code).concat(codeFill),
|
||||
name: typeToColumnsPlaceholder[type],
|
||||
});
|
||||
}
|
||||
return result;
|
||||
},
|
||||
getIndex: function (type, code) {
|
||||
var compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;
|
||||
var list = this.getList(type, code.slice(0, compareNum - 2));
|
||||
// oversea code
|
||||
if (code[0] === '9' && type === 'province') {
|
||||
compareNum = 1;
|
||||
}
|
||||
code = code.slice(0, compareNum);
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
if (list[i].code.slice(0, compareNum) === code) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
setValues: function () {
|
||||
var picker = this.getPicker();
|
||||
if (!picker) {
|
||||
return;
|
||||
}
|
||||
var code = this.code || this.getDefaultCode();
|
||||
var provinceList = this.getList('province');
|
||||
var cityList = this.getList('city', code.slice(0, 2));
|
||||
var stack = [];
|
||||
var indexes = [];
|
||||
var columnsNum = this.data.columnsNum;
|
||||
if (columnsNum >= 1) {
|
||||
stack.push(picker.setColumnValues(0, provinceList, false));
|
||||
indexes.push(this.getIndex('province', code));
|
||||
}
|
||||
if (columnsNum >= 2) {
|
||||
stack.push(picker.setColumnValues(1, cityList, false));
|
||||
indexes.push(this.getIndex('city', code));
|
||||
if (cityList.length && code.slice(2, 4) === '00') {
|
||||
code = cityList[0].code;
|
||||
}
|
||||
}
|
||||
if (columnsNum === 3) {
|
||||
stack.push(picker.setColumnValues(2, this.getList('county', code.slice(0, 4)), false));
|
||||
indexes.push(this.getIndex('county', code));
|
||||
}
|
||||
return Promise.all(stack)
|
||||
.catch(function () { })
|
||||
.then(function () { return picker.setIndexes(indexes); })
|
||||
.catch(function () { });
|
||||
},
|
||||
getDefaultCode: function () {
|
||||
var columnsPlaceholder = this.data.columnsPlaceholder;
|
||||
if (columnsPlaceholder.length) {
|
||||
return EMPTY_CODE;
|
||||
}
|
||||
var countyCodes = Object.keys(this.getConfig('county'));
|
||||
if (countyCodes[0]) {
|
||||
return countyCodes[0];
|
||||
}
|
||||
var cityCodes = Object.keys(this.getConfig('city'));
|
||||
if (cityCodes[0]) {
|
||||
return cityCodes[0];
|
||||
}
|
||||
return '';
|
||||
},
|
||||
getValues: function () {
|
||||
var picker = this.getPicker();
|
||||
if (!picker) {
|
||||
return [];
|
||||
}
|
||||
return this.parseValues(picker.getValues().filter(function (value) { return !!value; }));
|
||||
},
|
||||
getDetail: function () {
|
||||
var values = this.getValues();
|
||||
var area = {
|
||||
code: '',
|
||||
country: '',
|
||||
province: '',
|
||||
city: '',
|
||||
county: '',
|
||||
};
|
||||
if (!values.length) {
|
||||
return area;
|
||||
}
|
||||
var names = values.map(function (item) { return item.name; });
|
||||
area.code = values[values.length - 1].code;
|
||||
if (area.code[0] === '9') {
|
||||
area.country = names[1] || '';
|
||||
area.province = names[2] || '';
|
||||
}
|
||||
else {
|
||||
area.province = names[0] || '';
|
||||
area.city = names[1] || '';
|
||||
area.county = names[2] || '';
|
||||
}
|
||||
return area;
|
||||
},
|
||||
reset: function (code) {
|
||||
this.code = code || '';
|
||||
return this.setValues();
|
||||
},
|
||||
},
|
||||
});
|