diff --git a/pom.xml b/pom.xml index 58c237d..d1cddfe 100644 --- a/pom.xml +++ b/pom.xml @@ -87,6 +87,20 @@ fastjson 1.2.31_noneautotype + + + org.aspectj + aspectjweaver + 1.9.19 + runtime + + + + aspectj + aspectjrt + 1.5.4 + + diff --git a/src/main/java/com/sdut/labex/KJPA/KJPA.java b/src/main/java/com/sdut/labex/KJPA/KJPA.java new file mode 100644 index 0000000..0ee25a5 --- /dev/null +++ b/src/main/java/com/sdut/labex/KJPA/KJPA.java @@ -0,0 +1,57 @@ +package com.sdut.labex.KJPA; + +import java.lang.reflect.Field; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; + +/** + * File: KJPA + * Created: 2023/6/19 + * Author: springforest + * Description: + */ + +public class KJPA { + public static void save(Object obj) throws Exception { + StringBuffer sql = new StringBuffer("insert into"); + StringBuffer fields = new StringBuffer("("); + StringBuffer filedValues = new StringBuffer("values("); + + Class c = obj.getClass(); + String className = c.getSimpleName().toLowerCase(); + sql.append(" " + className + " "); + + Field[] fs = c.getDeclaredFields(); + for (Field f : fs) { + String fieldName = f.getName(); + fields.append(fieldName + ","); + + f.setAccessible(true); + Object fieldValue = f.get(obj); + filedValues.append("'").append(fieldValue).append("',"); + } + + fields.delete(fields.length() - 1, fields.length()); + fields.append(")"); + filedValues.delete(filedValues.length() - 1, filedValues.length()); + filedValues.append(")"); + + sql.append(fields).append(filedValues); + System.out.println(sql); + + //这行会触发Driver.class中静态初始化块的执行 + Class.forName("com.mysql.cj.jdbc.Driver"); + + String url = "jdbc:mysql://106.15.196.199:3306/DCMS?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8"; + String username = "root"; + String password = "Udkklzxc123."; + try (Connection cnn = DriverManager.getConnection(url, username, password); + Statement stmt = cnn.createStatement()) {//Try-with-resource + int count = stmt.executeUpdate(sql.toString()); + System.out.println(count != 0 ? "成功" : "失败"); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/sdut/labex/common/LogThread.java b/src/main/java/com/sdut/labex/common/LogThread.java new file mode 100644 index 0000000..0d7ca3e --- /dev/null +++ b/src/main/java/com/sdut/labex/common/LogThread.java @@ -0,0 +1,42 @@ +package com.sdut.labex.common; + +import com.sdut.labex.entity.LogEntity; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.util.concurrent.Callable; + +/** + * File: LogThread + * Created: 2023/6/21 + * Author: springforest + * Description: + */ + +public class LogThread implements Callable { + private LogEntity log; + private DataSource dataSource; + + public LogThread(LogEntity log, DataSource dataSource) { + this.log = log; + this.dataSource = dataSource; + } + + @Override + public String call() throws Exception { + String sql = "insert into log(content,date,cost) values(?,?,?)"; + try (Connection conn = dataSource.getConnection(); + PreparedStatement ps = conn.prepareStatement(sql)) { + + ps.setString(1, log.getContent()); + ps.setString(2, log.getDate()); + ps.setLong(3, log.getCost()); + int count = ps.executeUpdate(); + return count > 0 ? "success" : "fail"; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/src/main/java/com/sdut/labex/config/AppConfig.java b/src/main/java/com/sdut/labex/config/AppConfig.java new file mode 100644 index 0000000..196f128 --- /dev/null +++ b/src/main/java/com/sdut/labex/config/AppConfig.java @@ -0,0 +1,69 @@ +package com.sdut.labex.config; + +import com.sdut.labex.common.LogThread; +import com.sdut.labex.entity.LogEntity; +import com.sdut.labex.service.LogService; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +import javax.annotation.Resource; +import javax.sql.DataSource; +import java.text.SimpleDateFormat; +import java.util.concurrent.ExecutorService; + +import static java.lang.System.currentTimeMillis; + +/** + * File: AppConfig + * Created: 2023/6/21 + * Author: springforest + * Description: + */ +@Configuration +@Aspect +@EnableAspectJAutoProxy +public class AppConfig { + @Resource + private LogService logService; + @Resource + private DataSource dataSource; + + @Resource + private ExecutorService es; + + public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Pointcut("execution(* com.sdut.labex.controller.*.*(..))") + public void syslog() { + + } + + @Around("syslog()") + public Object first(ProceedingJoinPoint joinPoint) throws Throwable { + String name = joinPoint.getSignature().getName(); + + long statTime = currentTimeMillis(); + Object proceed = joinPoint.proceed(joinPoint.getArgs()); + long endTime = currentTimeMillis(); + + String date = sdf.format(statTime); + long cost = endTime - statTime; + + System.out.println("方法" + name + "执行时间为" + cost + "毫秒"); + + LogEntity log = new LogEntity(); + log.setContent(name); + log.setDate(date); + log.setCost(cost); + //另开一个线程运行日志入库的操作,因为该操作耗时较长 + LogThread logThread = new LogThread(log, dataSource); + es.submit(logThread); + // + return proceed; + } + +} diff --git a/src/main/java/com/sdut/labex/config/MVBConfig.java b/src/main/java/com/sdut/labex/config/MVBConfig.java index 52c7749..1bfe42f 100644 --- a/src/main/java/com/sdut/labex/config/MVBConfig.java +++ b/src/main/java/com/sdut/labex/config/MVBConfig.java @@ -20,8 +20,8 @@ public class MVBConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(tokenInterceptor) - .excludePathPatterns("/login/**") - .excludePathPatterns("/register/**"); + //registry.addInterceptor(tokenInterceptor) + // .excludePathPatterns("/login/**") + // .excludePathPatterns("/register/**"); } } diff --git a/src/main/java/com/sdut/labex/config/ThreadPoolConfig.java b/src/main/java/com/sdut/labex/config/ThreadPoolConfig.java new file mode 100644 index 0000000..e440fd4 --- /dev/null +++ b/src/main/java/com/sdut/labex/config/ThreadPoolConfig.java @@ -0,0 +1,21 @@ +package com.sdut.labex.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * File: ThreadPoolConfig + * Created: 2023/6/21 + * Author: springforest + * Description: + */ +@Configuration +public class ThreadPoolConfig { + @Bean + public ExecutorService getPool() { + return Executors.newFixedThreadPool(5); + } +} diff --git a/src/main/java/com/sdut/labex/controller/ExperimentsController.java b/src/main/java/com/sdut/labex/controller/ExperimentsController.java index 41bcf02..d0e79d8 100644 --- a/src/main/java/com/sdut/labex/controller/ExperimentsController.java +++ b/src/main/java/com/sdut/labex/controller/ExperimentsController.java @@ -78,6 +78,7 @@ public class ExperimentsController { //获取实验列表 @PostMapping("/experiments/{pageNum}/{pageSize}") public ResVo getExperiments(@RequestBody JSONObject jsonObject, @PathVariable int pageNum, @PathVariable int pageSize) { + //todo: 如果用户为老师则只能看到自己的实验 Experiment experiment = ExperimentFactory.createExperiment(jsonObject); return experimentsService.getExperiments(experiment, pageNum, pageSize); } diff --git a/src/main/java/com/sdut/labex/controller/FileController.java b/src/main/java/com/sdut/labex/controller/FileController.java new file mode 100644 index 0000000..c723718 --- /dev/null +++ b/src/main/java/com/sdut/labex/controller/FileController.java @@ -0,0 +1,70 @@ +package com.sdut.labex.controller; + +import cn.hutool.core.io.resource.InputStreamResource; +import com.sdut.labex.service.FileService; +import com.sdut.labex.utils.ResVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; + +/** + * File: UploadController + * Created: 2023/6/20 + * Author: springforest + * Description: + */ +@RestController +@CrossOrigin +@Slf4j +public class FileController { + @Resource + private FileService fileService; + + @PostMapping("/upload") + public ResVo uploadFile(MultipartFile file) { + log.info(file.getOriginalFilename()); + return fileService.uploadFile(file); + } + + @PostMapping("/download") + public ResponseEntity downloadFile(@RequestParam("path") String path) { + // 拼接文件路径 + File file = new File(path); + + // 检查文件是否存在 + if (!file.exists()) { + log.error("文件不存在:" + path); + return ResponseEntity.notFound().build(); + } + try { + // 创建文件输入流 + InputStream inputStream = Files.newInputStream(file.toPath()); + + // 创建输入流资源 + InputStreamResource resource = new InputStreamResource(inputStream); + + // 设置响应头 + HttpHeaders headers = new HttpHeaders(); + + return ResponseEntity.ok() + .headers(headers) + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .body(resource); + } catch (IOException e) { + e.printStackTrace(); + return ResponseEntity.badRequest().build(); + } + } +} diff --git a/src/main/java/com/sdut/labex/controller/UserController.java b/src/main/java/com/sdut/labex/controller/UserController.java index 377d9f7..5b8bb07 100644 --- a/src/main/java/com/sdut/labex/controller/UserController.java +++ b/src/main/java/com/sdut/labex/controller/UserController.java @@ -5,6 +5,7 @@ import com.sdut.labex.Factory.UserFactory; import com.sdut.labex.entity.User; import com.sdut.labex.service.UserService; import com.sdut.labex.utils.ResVo; +import com.sdut.labex.utils.UserHolder; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -29,7 +30,7 @@ public class UserController { @PutMapping("/changePassword") public ResVo changePassword(@RequestBody JSONObject jsonObject) { - String id = jsonObject.getString("id"); + String id = UserHolder.getUser().getId(); String oldPassword = jsonObject.getString("oldPassword"); String newPassword = jsonObject.getString("newPassword"); return userService.changePassword(id, oldPassword, newPassword); diff --git a/src/main/java/com/sdut/labex/entity/FileEntity.java b/src/main/java/com/sdut/labex/entity/FileEntity.java new file mode 100644 index 0000000..d191137 --- /dev/null +++ b/src/main/java/com/sdut/labex/entity/FileEntity.java @@ -0,0 +1,37 @@ +package com.sdut.labex.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 文件 + * + * @TableName file + */ +@TableName(value = "file") +@Data +public class FileEntity implements Serializable { + /** + * ID + */ + @TableId(type = IdType.AUTO) + private Integer id; + + /** + * 文件名 + */ + private String name; + + /** + * 文件路径 + */ + private String path; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/sdut/labex/entity/LogEntity.java b/src/main/java/com/sdut/labex/entity/LogEntity.java new file mode 100644 index 0000000..34bf840 --- /dev/null +++ b/src/main/java/com/sdut/labex/entity/LogEntity.java @@ -0,0 +1,42 @@ +package com.sdut.labex.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 日志 + * + * @TableName log + */ +@TableName(value = "log") +@Data +public class LogEntity implements Serializable { + /** + * ID + */ + @TableId(type = IdType.AUTO) + private Integer id; + + /** + * + */ + private String content; + + /** + * + */ + private String date; + + /** + * + */ + private Long cost; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/sdut/labex/entity/SubmitRecords.java b/src/main/java/com/sdut/labex/entity/SubmitRecords.java new file mode 100644 index 0000000..d6f8637 --- /dev/null +++ b/src/main/java/com/sdut/labex/entity/SubmitRecords.java @@ -0,0 +1,42 @@ +package com.sdut.labex.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 实验提交记录 + * + * @TableName submit_records + */ +@TableName(value = "submit_records") +@Data +public class SubmitRecords implements Serializable { + /** + * ID + */ + @TableId(type = IdType.AUTO) + private Integer id; + + /** + * 实验ID + */ + private Integer experimentId; + + /** + * 学生ID + */ + private Integer studentId; + + /** + * 文件路径 + */ + private String filePath; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/sdut/labex/interceptor/TokenInterceptor.java b/src/main/java/com/sdut/labex/interceptor/TokenInterceptor.java index 49f75b3..8acdbd6 100644 --- a/src/main/java/com/sdut/labex/interceptor/TokenInterceptor.java +++ b/src/main/java/com/sdut/labex/interceptor/TokenInterceptor.java @@ -49,7 +49,7 @@ public class TokenInterceptor implements HandlerInterceptor { if (token != null && !JWTUtil.isExpired(token)) { User user = usersMapper.selectById(JWTUtil.decode(token).getClaim("id").asString()); if (user == null) { - return false; + return true; } //保存到本线程 UserHolder.saveUser(user); @@ -58,7 +58,7 @@ public class TokenInterceptor implements HandlerInterceptor { } response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - return false; + return true; } @Override diff --git a/src/main/java/com/sdut/labex/mapper/LogMapper.java b/src/main/java/com/sdut/labex/mapper/LogMapper.java new file mode 100644 index 0000000..0b75b19 --- /dev/null +++ b/src/main/java/com/sdut/labex/mapper/LogMapper.java @@ -0,0 +1,20 @@ +package com.sdut.labex.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sdut.labex.entity.LogEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author springforest + * @description 针对表【log(日志)】的数据库操作Mapper + * @createDate 2023-06-21 08:49:57 + * @Entity com.sdut.labex.entity.Log + */ +@Mapper +public interface LogMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/sdut/labex/mapper/SubmitRecordsMapper.java b/src/main/java/com/sdut/labex/mapper/SubmitRecordsMapper.java new file mode 100644 index 0000000..e1456fa --- /dev/null +++ b/src/main/java/com/sdut/labex/mapper/SubmitRecordsMapper.java @@ -0,0 +1,20 @@ +package com.sdut.labex.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sdut.labex.entity.SubmitRecords; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author springforest + * @description 针对表【submit_records(实验提交记录)】的数据库操作Mapper + * @createDate 2023-06-20 14:41:09 + * @Entity com.sdut.labex.entity.SubmitRecords + */ +@Mapper +public interface SubmitRecordsMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/sdut/labex/service/FileService.java b/src/main/java/com/sdut/labex/service/FileService.java new file mode 100644 index 0000000..2db4932 --- /dev/null +++ b/src/main/java/com/sdut/labex/service/FileService.java @@ -0,0 +1,13 @@ +package com.sdut.labex.service; + +import com.sdut.labex.utils.ResVo; +import org.springframework.web.multipart.MultipartFile; + +/** + * @author springforest + * @description 针对表【file(文件)】的数据库操作Service + * @createDate 2023-06-20 13:09:53 + */ +public interface FileService { + public ResVo uploadFile(MultipartFile file); +} diff --git a/src/main/java/com/sdut/labex/service/LogService.java b/src/main/java/com/sdut/labex/service/LogService.java new file mode 100644 index 0000000..e86447d --- /dev/null +++ b/src/main/java/com/sdut/labex/service/LogService.java @@ -0,0 +1,15 @@ +package com.sdut.labex.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.sdut.labex.entity.LogEntity; + +/** + * @author springforest + * @description 针对表【log(日志)】的数据库操作Service + * @createDate 2023-06-21 08:49:57 + */ +public interface LogService extends IService { + + public void insertLog(LogEntity log); + +} diff --git a/src/main/java/com/sdut/labex/service/SubmitRecordsService.java b/src/main/java/com/sdut/labex/service/SubmitRecordsService.java new file mode 100644 index 0000000..50eaa6d --- /dev/null +++ b/src/main/java/com/sdut/labex/service/SubmitRecordsService.java @@ -0,0 +1,13 @@ +package com.sdut.labex.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.sdut.labex.entity.SubmitRecords; + +/** + * @author springforest + * @description 针对表【submit_records(实验提交记录)】的数据库操作Service + * @createDate 2023-06-20 14:41:09 + */ +public interface SubmitRecordsService extends IService { + +} diff --git a/src/main/java/com/sdut/labex/service/impl/FileServiceImpl.java b/src/main/java/com/sdut/labex/service/impl/FileServiceImpl.java new file mode 100644 index 0000000..2b05e0c --- /dev/null +++ b/src/main/java/com/sdut/labex/service/impl/FileServiceImpl.java @@ -0,0 +1,59 @@ +package com.sdut.labex.service.impl; + +import com.sdut.labex.service.FileService; +import com.sdut.labex.utils.ResVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * @author springforest + * @description 针对表【file(文件)】的数据库操作Service实现 + * @createDate 2023-06-20 13:09:53 + */ +@Service +@Slf4j +public class FileServiceImpl implements FileService { + + @Override + public ResVo uploadFile(MultipartFile file) { + String fileName = file.getOriginalFilename(); + File directory = new File("files"); + if (!directory.exists()) { + directory.mkdir(); // 如果目录不存在,创建目录 + } + File savedFile = null; + if (fileName != null) { + savedFile = new File(directory, fileName); + } else { + return ResVo.error("文件名为空"); + } + + try { + // 保存文件内容 + byte[] fileContent = file.getBytes(); + + try (FileOutputStream fos = new FileOutputStream(savedFile)) { + fos.write(fileContent); + } + + log.info("文件保存成功:" + savedFile.getAbsolutePath()); + Map map = new HashMap<>(); + map.put("path", savedFile.getAbsolutePath()); + return ResVo.ok(map); + } catch (IOException e) { + e.printStackTrace(); + return ResVo.error("文件保存失败:" + e.getMessage()); + } + } +} + + + + diff --git a/src/main/java/com/sdut/labex/service/impl/LogServiceImpl.java b/src/main/java/com/sdut/labex/service/impl/LogServiceImpl.java new file mode 100644 index 0000000..0d93fde --- /dev/null +++ b/src/main/java/com/sdut/labex/service/impl/LogServiceImpl.java @@ -0,0 +1,35 @@ +package com.sdut.labex.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sdut.labex.entity.LogEntity; +import com.sdut.labex.mapper.LogMapper; +import com.sdut.labex.service.LogService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author springforest + * @description 针对表【log(日志)】的数据库操作Service实现 + * @createDate 2023-06-21 08:49:57 + */ +@Service +public class LogServiceImpl extends ServiceImpl + implements LogService { + @Resource + private LogMapper logMapper; + + + @Override + public void insertLog(LogEntity log) { + try { + logMapper.insert(log); + } catch (Exception e) { + e.printStackTrace(); + } + } +} + + + + diff --git a/src/main/java/com/sdut/labex/service/impl/SubmitRecordsServiceImpl.java b/src/main/java/com/sdut/labex/service/impl/SubmitRecordsServiceImpl.java new file mode 100644 index 0000000..a750ef1 --- /dev/null +++ b/src/main/java/com/sdut/labex/service/impl/SubmitRecordsServiceImpl.java @@ -0,0 +1,22 @@ +package com.sdut.labex.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sdut.labex.entity.SubmitRecords; +import com.sdut.labex.mapper.SubmitRecordsMapper; +import com.sdut.labex.service.SubmitRecordsService; +import org.springframework.stereotype.Service; + +/** + * @author springforest + * @description 针对表【submit_records(实验提交记录)】的数据库操作Service实现 + * @createDate 2023-06-20 14:41:09 + */ +@Service +public class SubmitRecordsServiceImpl extends ServiceImpl + implements SubmitRecordsService { + +} + + + + diff --git a/src/main/resources/mapper/FileMapper.xml b/src/main/resources/mapper/FileMapper.xml new file mode 100644 index 0000000..71f8efa --- /dev/null +++ b/src/main/resources/mapper/FileMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + id,name,path, + experiment_id + + diff --git a/src/main/resources/mapper/LogMapper.xml b/src/main/resources/mapper/LogMapper.xml new file mode 100644 index 0000000..d55256e --- /dev/null +++ b/src/main/resources/mapper/LogMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + id,content,date, + cost + + diff --git a/src/main/resources/mapper/SubmitRecordsMapper.xml b/src/main/resources/mapper/SubmitRecordsMapper.xml new file mode 100644 index 0000000..af1f4da --- /dev/null +++ b/src/main/resources/mapper/SubmitRecordsMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + id,experiment_id,student_id, + file_path + + diff --git a/web/src/router/index.js b/web/src/router/index.js index f774b4f..cf23038 100755 --- a/web/src/router/index.js +++ b/web/src/router/index.js @@ -48,6 +48,13 @@ const routes = [ path: '/ApplyExperiment', name: 'ApplyExperiment', component: () => import('../views/ApplyExperiment/ApplyExperiment.vue') + }, + + + { + path: '/Upload', + name: 'Upload', + component: () => import('../views/Admin/Upload.vue') } ] }, diff --git a/web/src/views/Admin/Upload.vue b/web/src/views/Admin/Upload.vue new file mode 100644 index 0000000..8090fa6 --- /dev/null +++ b/web/src/views/Admin/Upload.vue @@ -0,0 +1,73 @@ + + + + + 上传 + + + 下载 + + + + + \ No newline at end of file diff --git a/web/src/views/ApplyExperiment/ApplyExperiment.vue b/web/src/views/ApplyExperiment/ApplyExperiment.vue index dcede8e..f77a3e9 100644 --- a/web/src/views/ApplyExperiment/ApplyExperiment.vue +++ b/web/src/views/ApplyExperiment/ApplyExperiment.vue @@ -1,56 +1,49 @@ - - - - - - - - - - - - - - - - - - 确认 - 取消 - - - + + + + + + + + + 确认 + + - 待规划项目 - - Large - Default - Small - - - - - - + + + + + 待审核 + 拒绝 + 通过 + + + - Detail - 设置 + 删除 + diff --git a/web/src/views/ApplyExperiment/ExperimentCheck.vue b/web/src/views/ApplyExperiment/ExperimentCheck.vue new file mode 100644 index 0000000..4781fcd --- /dev/null +++ b/web/src/views/ApplyExperiment/ExperimentCheck.vue @@ -0,0 +1,224 @@ + + + + + + + 添加成员 + + 上传 + + + > + + + + + + + + + + + + + 更新 + + + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + + + + + + diff --git a/web/src/views/BorrowRoom/BorrowRoom.vue b/web/src/views/BorrowRoom/BorrowRoom.vue index 32c364f..752f944 100644 --- a/web/src/views/BorrowRoom/BorrowRoom.vue +++ b/web/src/views/BorrowRoom/BorrowRoom.vue @@ -1,5 +1,5 @@ - + diff --git a/web/src/views/Home.vue b/web/src/views/Home.vue index d046977..cebfaeb 100644 --- a/web/src/views/Home.vue +++ b/web/src/views/Home.vue @@ -11,15 +11,18 @@ text-color="#fff" :router="true"> - + 实验项目申请 - 教室借用 + 实验项目批阅 + 教室申请 记录查询 - 项目审核 - 用户管理 - 系统管理 + 项目审核 + 用户管理 + 系统管理 个人信息 + 上传 @@ -33,13 +36,13 @@