Commit a7880dc888a9a3be400ed7c01a62916a67fa1e5b

Authored by youxiw2000
2 parents 7ef57d20 a9073a0d

m

Showing 94 changed files with 11303 additions and 507 deletions
trash-garbage/pom.xml
... ... @@ -42,6 +42,10 @@
42 42 <artifactId>hutool-all</artifactId>
43 43 <version>5.3.8</version>
44 44 </dependency>
  45 + <dependency>
  46 + <groupId>com.trash</groupId>
  47 + <artifactId>trash-unit</artifactId>
  48 + </dependency>
45 49 </dependencies>
46 50 <!-- 项目打包时会将java目录中的*.xml文件也进行打包 -->
47 51 <build>
... ...
trash-garbage/src/main/java/com/trash/garbage/controller/GarbageOrderController.java 0 → 100644
  1 +package com.trash.garbage.controller;
  2 +
  3 +
  4 +import com.trash.common.config.trashConfig;
  5 +import com.trash.common.utils.file.FileUploadUtils;
  6 +import com.trash.framework.config.ServerConfig;
  7 +import com.trash.garbage.custom.BizException;
  8 +import com.trash.garbage.global.Result;
  9 +import com.trash.garbage.global.ResultCode;
  10 +import com.trash.garbage.pojo.dto.EvaluateDto;
  11 +import com.trash.garbage.pojo.dto.OrderDto;
  12 +import com.trash.garbage.pojo.dto.OrderUpdateDto;
  13 +import com.trash.garbage.pojo.dto.UploadDto;
  14 +import com.trash.garbage.pojo.vo.OrderDetailVo;
  15 +import com.trash.garbage.service.GarOrderService;
  16 +import org.springframework.beans.factory.annotation.Autowired;
  17 +import org.springframework.validation.annotation.Validated;
  18 +import org.springframework.web.bind.annotation.*;
  19 +import org.springframework.web.multipart.MultipartFile;
  20 +
  21 +import java.io.IOException;
  22 +import java.util.HashMap;
  23 +import java.util.Map;
  24 +
  25 +/**
  26 + * 订单控制
  27 + *
  28 + * @author 20412
  29 + */
  30 +@RestController
  31 +@RequestMapping("/order")
  32 +public class GarbageOrderController {
  33 +
  34 + @Autowired
  35 + private GarOrderService garOrderService;
  36 + @Autowired
  37 + private ServerConfig serverConfig;
  38 +
  39 + @PostMapping("/add")
  40 + public Result<?> saveOrder(@Validated @RequestBody OrderDto dto) {
  41 + return Result.OK(garOrderService.saveOrder(dto));
  42 + }
  43 +
  44 + @RequestMapping("upload")
  45 + public Result<?> uploadFile(@RequestParam("file") MultipartFile file) {
  46 + String fileName = null;
  47 + try { // 上传文件路径
  48 + String filePath = trashConfig.getUploadPath();
  49 + // 上传并返回新文件名称
  50 + fileName = FileUploadUtils.upload(filePath, file);
  51 + } catch (IOException e) {
  52 + throw new BizException(ResultCode.CODE_400, ResultCode.CODE_400.getMsg());
  53 + }
  54 + String url = serverConfig.getUrl() + fileName;
  55 + Map<String, String> urlMap = new HashMap<>();
  56 + urlMap.put("url", url);
  57 + urlMap.put("fileName", fileName);
  58 + return Result.OK(urlMap, "图片上传成功");
  59 + }
  60 +
  61 + @GetMapping("/detail/{id}")
  62 + public Result<OrderDetailVo> queryOrderDetail(@PathVariable("id") String id) {
  63 + return Result.OK(garOrderService.queryOrderDetail(id));
  64 + }
  65 +
  66 + @PutMapping("/update")
  67 + public Result<String> uploadOrder(@RequestBody OrderUpdateDto dto) {
  68 + return Result.OK(garOrderService.uploadOrder(dto));
  69 + }
  70 +
  71 + @PostMapping("/evaluate")
  72 + public Result<String> evaluateOrder(@Validated @RequestBody EvaluateDto dto) {
  73 + return Result.OK(garOrderService.evaluateOrder(dto));
  74 + }
  75 +
  76 +
  77 + @GetMapping("/query/list")
  78 + public Result<?> queryOrderList(@RequestParam("type") Integer type, @RequestParam("pageNo") Integer pageNo, @RequestParam("pageSize") Integer pageSize) {
  79 + return Result.OK(garOrderService.queryOrderList(type, pageNo, pageSize));
  80 + }
  81 +
  82 + @PostMapping("/upload/imageUrl")
  83 + public Result<?> uploadImageUrlByType(@RequestBody UploadDto dto) {
  84 + return Result.OK(garOrderService.uploadImageUrlByType(dto));
  85 + }
  86 +
  87 +}
... ...
trash-garbage/src/main/java/com/trash/garbage/controller/GarbageUserController.java
... ... @@ -3,6 +3,7 @@ package com.trash.garbage.controller;
3 3  
4 4 import com.trash.garbage.global.Result;
5 5 import com.trash.garbage.pojo.domain.GarAddress;
  6 +import com.trash.garbage.pojo.domain.GarUser;
6 7 import com.trash.garbage.pojo.dto.AddressDto;
7 8 import com.trash.garbage.pojo.dto.LoginDto;
8 9 import com.trash.garbage.service.GarUserService;
... ... @@ -67,4 +68,11 @@ public class GarbageUserController {
67 68 }
68 69  
69 70  
  71 + @PutMapping("/update")
  72 + public Result<?> updateUser(@RequestBody GarUser user){
  73 + garUserService.updateUserInfo(user);
  74 + return Result.OK();
  75 + }
  76 +
  77 +
70 78 }
... ...
trash-garbage/src/main/java/com/trash/garbage/custom/BizException.java
... ... @@ -35,10 +35,8 @@ public class BizException extends RuntimeException{
35 35 this.code = code;
36 36 }
37 37  
38   -
39   -
40   - public BizException(ResultCode code, String msg){
41   - this.msg = msg;
  38 + public BizException(ResultCode code, String msg){
42 39 this.code = code;
  40 + this.msg = msg;
43 41 }
44 42 }
... ...
trash-garbage/src/main/java/com/trash/garbage/global/GlobalStatus.java
... ... @@ -36,13 +36,13 @@ public class GlobalStatus {
36 36 * 普通登录
37 37 */
38 38 NORMAL_LOGIN(0, "普通登录"),
39   - NORMAL_USER(0, "普通用户"),
40   - DRIVER_USER(1, "驾驶员用户");
  39 + NORMAL_USER(0, "居民用户"),
  40 + DRIVER_USER(1, "管理负责人");
41 41  
42 42 private Integer status;
43 43 private String description;
44 44  
45   - public int getStatus() {
  45 + public Integer getStatus() {
46 46 return this.status;
47 47 }
48 48  
... ... @@ -57,7 +57,7 @@ public class GlobalStatus {
57 57 }
58 58  
59 59 /**
60   - * 字典
  60 + * 地址
61 61 */
62 62 public enum GarAddressStatus {
63 63 NORMAL_ADDRESS(0, "地址"),
... ... @@ -78,6 +78,38 @@ public class GlobalStatus {
78 78 public String getDescription() {
79 79 return this.description;
80 80 }
  81 + }
  82 +
  83 + /**
  84 + * 订单
  85 + */
  86 + public enum GarOrderStatus {
  87 + NEW_ORDER(0, "新订单"),
  88 + ACTIVE_ORDER(1, "处理中"),
  89 + ALL_ORDER(2, "全部订单"),
  90 + SUCCESS_ORDER(3, "待支付订单"),
  91 + FAIL_ORDER(9, "订单处理失败"),
  92 + CANCEL_FLAG_NO(0, "未取消订单"),
  93 + IMAGE_TYPE_CURRENT(0, "现场图片"),
  94 + IMAGE_TYPE_PUT_ON(1, "装车图片"),
  95 + IMAGE_TYPE_PUT_DOWN(2, "卸车图片"),
  96 + EVALUATE_ORDER_NO(0,"待评价"),
  97 + EVALUATE_ORDER_YES(1,"已评价");
  98 +
  99 + GarOrderStatus(Integer status, String description) {
  100 + this.status = status;
  101 + this.description = description;
  102 + }
  103 +
  104 + private String description;
  105 + private Integer status;
81 106  
  107 + public Integer getValue() {
  108 + return this.status;
  109 + }
  110 +
  111 + public String getDescription() {
  112 + return this.description;
  113 + }
82 114 }
83 115 }
... ...
trash-garbage/src/main/java/com/trash/garbage/interceptor/MyMetaObjectHandler.java
... ... @@ -23,17 +23,12 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
23 23 if (metaObject.hasGetter("garCreateTime")) {
24 24 this.strictInsertFill(metaObject, "garCreateTime", Date.class, new Date());
25 25 }
26   -
27 26 if (metaObject.hasGetter("garCreateBy")) {
28 27 this.strictInsertFill(metaObject, "garCreateBy", String.class, SecurityUtils.getLoginUser().getUser().getUserId());
29 28 }
30   -
31 29 if (metaObject.hasGetter("garUpdateTime")) {
32 30 this.strictInsertFill(metaObject, "garUpdateTime", Date.class, new Date());
33 31 }
34   - if (metaObject.hasGetter("garUserId")) {
35   - this.strictInsertFill(metaObject, "garUserId", String.class, SecurityUtils.getLoginUser().getUser().getUserId());
36   - }
37 32 if (metaObject.hasGetter("garUpdateBy")) {
38 33 this.strictInsertFill(metaObject, "garUpdateBy", String.class, SecurityUtils.getLoginUser().getUser().getUserId());
39 34 }
... ...
trash-garbage/src/main/java/com/trash/garbage/mapper/GarOrderEvaluateMapper.java 0 → 100644
  1 +package com.trash.garbage.mapper;
  2 +
  3 +import com.trash.garbage.pojo.domain.GarOrderEvaluate;
  4 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  5 +
  6 +/**
  7 +* @author 20412
  8 +* @description 针对表【gar_order_evaluate(建筑垃圾-派单评分)】的数据库操作Mapper
  9 +* @createDate 2023-11-29 14:19:18
  10 +* @Entity com.trash.garbage.pojo.domain.GarOrderEvaluate
  11 +*/
  12 +public interface GarOrderEvaluateMapper extends BaseMapper<GarOrderEvaluate> {
  13 +
  14 +}
  15 +
  16 +
  17 +
  18 +
... ...
trash-garbage/src/main/java/com/trash/garbage/mapper/GarOrderImageMapper.java 0 → 100644
  1 +package com.trash.garbage.mapper;
  2 +
  3 +import com.trash.garbage.pojo.domain.GarOrderImage;
  4 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  5 +
  6 +/**
  7 +* @author 20412
  8 +* @description 针对表【gar_order_image(装修垃圾-订单图片表)】的数据库操作Mapper
  9 +* @createDate 2023-11-24 16:26:19
  10 +* @Entity com.trash.garbage.pojo.domain.GarOrderImage
  11 +*/
  12 +public interface GarOrderImageMapper extends BaseMapper<GarOrderImage> {
  13 +
  14 +}
  15 +
  16 +
  17 +
  18 +
... ...
trash-garbage/src/main/java/com/trash/garbage/mapper/GarOrderMapper.java 0 → 100644
  1 +package com.trash.garbage.mapper;
  2 +
  3 +import com.trash.garbage.pojo.domain.GarOrder;
  4 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  5 +
  6 +/**
  7 +* @author 20412
  8 +* @description 针对表【gar_order(建筑垃圾—订单表)】的数据库操作Mapper
  9 +* @createDate 2023-11-24 16:26:19
  10 +* @Entity com.trash.garbage.pojo.domain.GarOrder
  11 +*/
  12 +public interface GarOrderMapper extends BaseMapper<GarOrder> {
  13 +
  14 +}
  15 +
  16 +
  17 +
  18 +
... ...
trash-garbage/src/main/java/com/trash/garbage/pojo/domain/GarAddress.java
... ... @@ -7,9 +7,11 @@ import com.baomidou.mybatisplus.annotation.TableName;
7 7  
8 8 import java.io.Serializable;
9 9 import java.util.Date;
  10 +import java.util.Objects;
10 11  
11 12 import com.fasterxml.jackson.annotation.JsonFormat;
12 13 import lombok.Data;
  14 +import org.springframework.format.annotation.DateTimeFormat;
13 15  
14 16  
15 17 /**
... ... @@ -48,6 +50,7 @@ public class GarAddress implements Serializable {
48 50 */
49 51 @TableField(fill = FieldFill.INSERT, select = false)
50 52 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  53 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:dd")
51 54 private Date garCreateTime;
52 55  
53 56 /**
... ... @@ -55,6 +58,7 @@ public class GarAddress implements Serializable {
55 58 */
56 59 @TableField(fill = FieldFill.INSERT_UPDATE, select = false)
57 60 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  61 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:dd")
58 62 private Date garUpdateTime;
59 63  
60 64 /**
... ... @@ -72,6 +76,9 @@ public class GarAddress implements Serializable {
72 76 */
73 77 private String garRemark;
74 78  
  79 +
  80 +
  81 +
75 82 @TableField(exist = false)
76 83 private static final long serialVersionUID = 1L;
77 84  
... ... @@ -209,6 +216,5 @@ public class GarAddress implements Serializable {
209 216 public static long getSerialversionuid() {
210 217 return serialVersionUID;
211 218 }
212   -
213   -
  219 +
214 220 }
... ...
trash-garbage/src/main/java/com/trash/garbage/pojo/domain/GarOrder.java 0 → 100644
  1 +package com.trash.garbage.pojo.domain;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.*;
  4 +
  5 +import java.io.Serializable;
  6 +import java.util.Date;
  7 +
  8 +import com.fasterxml.jackson.annotation.JsonFormat;
  9 +import com.fasterxml.jackson.annotation.JsonIgnore;
  10 +import lombok.Data;
  11 +import org.springframework.format.annotation.DateTimeFormat;
  12 +
  13 +/**
  14 + * 建筑垃圾—订单表
  15 + * @TableName gar_order
  16 + */
  17 +@TableName(value ="gar_order")
  18 +@Data
  19 +public class GarOrder implements Serializable {
  20 + /**
  21 + * 订单id
  22 + */
  23 + @TableId
  24 + private String garOrderId;
  25 +
  26 + /**
  27 + * 用户id
  28 + */
  29 + @JsonIgnore
  30 + private String garOrderUserId;
  31 +
  32 + /**
  33 + * 负责处理人id
  34 + */
  35 + private String garOrderHandlerId;
  36 +
  37 + /**
  38 + * 订单地址
  39 + */
  40 + private String garOrderAddress;
  41 +
  42 + /**
  43 + * 订单详细地址
  44 + */
  45 + private String garOrderAddressDetails;
  46 +
  47 + /**
  48 + * 订单姓名
  49 + */
  50 + private String garOrderContactName;
  51 +
  52 + /**
  53 + * 垃圾类型
  54 + */
  55 + private String garOrderTrashType;
  56 +
  57 + /**
  58 + * 订单人电话
  59 + */
  60 + private String garOrderContactTel;
  61 +
  62 + /**
  63 + * 承接经营单位
  64 + */
  65 + private String garOrderCompanyId;
  66 +
  67 + /**
  68 + * 公司名称
  69 + */
  70 + private String garOrderCompanyName;
  71 +
  72 + /**
  73 + * 公司负责人电话
  74 + */
  75 + private String garOrderCompanyTel;
  76 +
  77 + /**
  78 + * 处理状态
  79 + */
  80 + private Integer garOrderHandlerStatus;
  81 +
  82 + /**
  83 + * 约定时间
  84 + */
  85 + private String garOrderAgreementTime;
  86 +
  87 + /**
  88 + * 订单创建时间
  89 + */
  90 + @TableField(fill = FieldFill.INSERT)
  91 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  92 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  93 + private Date garCreateTime;
  94 +
  95 + /**
  96 + * 订单修改时间
  97 + */
  98 + @TableField(fill = FieldFill.INSERT_UPDATE)
  99 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  100 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  101 + private Date garUpdateTime;
  102 +
  103 + /**
  104 + * 订单创建人
  105 + */
  106 + @TableField(fill = FieldFill.INSERT)
  107 + private String garCreateBy;
  108 +
  109 + /**
  110 + * 订单修改人
  111 + */
  112 + @TableField(fill = FieldFill.INSERT_UPDATE)
  113 + private String garUpdateBy;
  114 +
  115 + /**
  116 + * 备注
  117 + */
  118 + private String garRemark;
  119 + /**
  120 + * 取消标识
  121 + */
  122 + private Integer garCancelFlag;
  123 +
  124 + /**
  125 + * 评分标识
  126 + */
  127 + private Integer garEvaluateFlag;
  128 + /**
  129 + * 原因
  130 + */
  131 + private String garReason;
  132 +
  133 +
  134 + @TableField(exist = false)
  135 + private static final long serialVersionUID = 1L;
  136 +
  137 +}
0 138 \ No newline at end of file
... ...
trash-garbage/src/main/java/com/trash/garbage/pojo/domain/GarOrderEvaluate.java 0 → 100644
  1 +package com.trash.garbage.pojo.domain;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableField;
  4 +import com.baomidou.mybatisplus.annotation.TableId;
  5 +import com.baomidou.mybatisplus.annotation.TableName;
  6 +import java.io.Serializable;
  7 +import java.util.Date;
  8 +import lombok.Data;
  9 +
  10 +/**
  11 + * 建筑垃圾-派单评分
  12 + * @author 20412
  13 + * @TableName gar_order_evaluate
  14 + */
  15 +@TableName(value ="gar_order_evaluate")
  16 +@Data
  17 +public class GarOrderEvaluate implements Serializable {
  18 + /**
  19 + * id
  20 + */
  21 + @TableId
  22 + private String garEvaluateId;
  23 +
  24 + /**
  25 + * 订单id
  26 + */
  27 + private String garOrderId;
  28 +
  29 + /**
  30 + * 公司id
  31 + */
  32 + private String garCompanyId;
  33 +
  34 + /**
  35 + * 评价内容
  36 + */
  37 + private String garEvaluateContent;
  38 +
  39 + /**
  40 + * 评分
  41 + */
  42 + private Integer garEvaluateScore;
  43 +
  44 + /**
  45 + * 修改人
  46 + */
  47 + private String garUpdateBy;
  48 +
  49 + /**
  50 + * 创建人
  51 + */
  52 + private String garCreateBy;
  53 +
  54 + /**
  55 + * 修改时间
  56 + */
  57 + private Date garUpdateTime;
  58 +
  59 + /**
  60 + * 创建时间
  61 + */
  62 + private Date garCreateTime;
  63 +
  64 + /**
  65 + * 备注
  66 + */
  67 + private String garRemark;
  68 +
  69 + @TableField(exist = false)
  70 + private static final long serialVersionUID = 1L;
  71 +}
0 72 \ No newline at end of file
... ...
trash-garbage/src/main/java/com/trash/garbage/pojo/domain/GarOrderImage.java 0 → 100644
  1 +package com.trash.garbage.pojo.domain;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.FieldFill;
  4 +import com.baomidou.mybatisplus.annotation.TableField;
  5 +import com.baomidou.mybatisplus.annotation.TableId;
  6 +import com.baomidou.mybatisplus.annotation.TableName;
  7 +import java.io.Serializable;
  8 +import java.util.Date;
  9 +
  10 +import com.fasterxml.jackson.annotation.JsonFormat;
  11 +import lombok.Data;
  12 +import org.springframework.format.annotation.DateTimeFormat;
  13 +
  14 +/**
  15 + * 装修垃圾-订单图片表
  16 + * @TableName gar_order_image
  17 + */
  18 +@TableName(value ="gar_order_image")
  19 +@Data
  20 +public class GarOrderImage implements Serializable {
  21 + /**
  22 + * 图片id
  23 + */
  24 + @TableId
  25 + private String garImageId;
  26 +
  27 + /**
  28 + * 订单表id
  29 + */
  30 + private String garOrderId;
  31 +
  32 + /**
  33 + * 图片类型
  34 + */
  35 + private Integer garOrderImageType;
  36 +
  37 + /**
  38 + * 图片路径
  39 + */
  40 + private String garOrderImageUrl;
  41 +
  42 + /**
  43 + * 创建时间
  44 + */
  45 + @TableField(fill = FieldFill.INSERT)
  46 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  47 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  48 + private Date garCreateTime;
  49 +
  50 + /**
  51 + * 修改时间
  52 + */
  53 + @TableField(fill = FieldFill.INSERT_UPDATE)
  54 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  55 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  56 + private Date garUpdateTime;
  57 +
  58 + /**
  59 + * 创建人
  60 + */
  61 + @TableField(fill = FieldFill.INSERT)
  62 + private String garCreateBy;
  63 +
  64 + /**
  65 + * 修改人
  66 + */
  67 + @TableField(fill = FieldFill.INSERT_UPDATE)
  68 + private String garUpdateBy;
  69 +
  70 + /**
  71 + * 备注
  72 + */
  73 + private String garRemark;
  74 +
  75 + @TableField(exist = false)
  76 + private static final long serialVersionUID = 1L;
  77 +
  78 +}
0 79 \ No newline at end of file
... ...
trash-garbage/src/main/java/com/trash/garbage/pojo/domain/GarUser.java
... ... @@ -9,6 +9,7 @@ import java.util.Date;
9 9  
10 10 import com.fasterxml.jackson.annotation.JsonFormat;
11 11 import lombok.Data;
  12 +import org.springframework.format.annotation.DateTimeFormat;
12 13  
13 14 /**
14 15 * 建筑垃圾-用户表
... ... @@ -54,6 +55,7 @@ public class GarUser implements Serializable {
54 55  
55 56 @TableField(fill = FieldFill.INSERT)
56 57 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  58 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:dd")
57 59 private Date garCreateTime;
58 60  
59 61 /**
... ... @@ -61,6 +63,7 @@ public class GarUser implements Serializable {
61 63 */
62 64 @TableField(fill = FieldFill.INSERT_UPDATE)
63 65 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  66 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:dd")
64 67 private Date garUpdateTime;
65 68  
66 69 /**
... ... @@ -206,6 +209,4 @@ public class GarUser implements Serializable {
206 209 return serialVersionUID;
207 210 }
208 211  
209   -
210   -
211 212 }
212 213 \ No newline at end of file
... ...
trash-garbage/src/main/java/com/trash/garbage/pojo/dto/EvaluateDto.java 0 → 100644
  1 +package com.trash.garbage.pojo.dto;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.validation.constraints.NotBlank;
  6 +import javax.validation.constraints.NotNull;
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * @author 20412
  11 + */
  12 +@Data
  13 +public class EvaluateDto {
  14 + @NotBlank(message = "订单id不能为空")
  15 + private String orderId;
  16 + private String content;
  17 + @NotNull
  18 + private Integer score;
  19 + private List<String> imageUrls;
  20 +}
... ...
trash-garbage/src/main/java/com/trash/garbage/pojo/dto/OrderDto.java 0 → 100644
  1 +package com.trash.garbage.pojo.dto;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableId;
  4 +import lombok.Data;
  5 +
  6 +import javax.validation.constraints.NotBlank;
  7 +import javax.validation.constraints.NotEmpty;
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * 新增订单dto
  12 + * @author 20412
  13 + */
  14 +@Data
  15 +public class OrderDto {
  16 +
  17 + /**
  18 + * 订单地址
  19 + */
  20 + @NotBlank(message = "地址不能为空")
  21 + private String garOrderAddress;
  22 + /**
  23 + * 图片列表
  24 + */
  25 + @NotEmpty(message = "必须要有现场图片")
  26 + private List<String> imageUrls;
  27 + /**
  28 + * 订单详细地址
  29 + */
  30 + private String garOrderAddressDetails;
  31 +
  32 + /**
  33 + * 订单姓名
  34 + */
  35 + private String garOrderContactName;
  36 +
  37 + /**
  38 + * 垃圾类型
  39 + */
  40 + private String garOrderTrashType;
  41 +
  42 + /**
  43 + * 订单人电话
  44 + */
  45 + @NotBlank(message = "电话不能为空")
  46 + private String garOrderContactTel;
  47 +
  48 + /**
  49 + * 承接经营单位
  50 + */
  51 + private String garOrderCompanyId;
  52 +
  53 + /**
  54 + * 公司名称
  55 + */
  56 + @NotEmpty(message = "公司名称不能为空")
  57 + private String garOrderCompanyName;
  58 +
  59 + /**
  60 + * 公司负责人电话
  61 + */
  62 + private String garOrderCompanyTel;
  63 +
  64 + /**
  65 + * 约定时间
  66 + */
  67 + @NotBlank(message = "约定时间不能为空")
  68 + private String garOrderAgreementTime;
  69 +
  70 + /**
  71 + * 备注
  72 + */
  73 + private String garRemark;
  74 +
  75 +}
... ...
trash-garbage/src/main/java/com/trash/garbage/pojo/dto/OrderUpdateDto.java 0 → 100644
  1 +package com.trash.garbage.pojo.dto;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * @author 20412
  9 + */
  10 +@Data
  11 +public class OrderUpdateDto {
  12 +
  13 + /**
  14 + * 订单id
  15 + */
  16 + private String garOrderId;
  17 +
  18 + /**
  19 + * 处理类型
  20 + */
  21 + private Integer handleType;
  22 +
  23 + /**
  24 + * 照片url
  25 + */
  26 + private List<String> imageUrls;
  27 +}
... ...
trash-garbage/src/main/java/com/trash/garbage/pojo/dto/UploadDto.java 0 → 100644
  1 +package com.trash.garbage.pojo.dto;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * @author 20412
  9 + */
  10 +@Data
  11 +public class UploadDto {
  12 + private String garOrderId;
  13 + private Integer type;
  14 + private List<String> imageUrls;
  15 +}
... ...
trash-garbage/src/main/java/com/trash/garbage/pojo/vo/OrderDetailVo.java 0 → 100644
  1 +package com.trash.garbage.pojo.vo;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import lombok.Data;
  5 +
  6 +import javax.validation.constraints.NotEmpty;
  7 +import java.util.ArrayList;
  8 +import java.util.Date;
  9 +import java.util.List;
  10 +
  11 +/**
  12 + * @author 20412
  13 + */
  14 +@Data
  15 +public class OrderDetailVo {
  16 +
  17 + private String garOrderHandlerId;
  18 +
  19 + private Integer garEvaluateFlag;
  20 + /**
  21 + * 订单地址
  22 + */
  23 + private String garOrderAddress;
  24 + /**
  25 + * 现场图片图片列表
  26 + */
  27 + private List<String> currentImages;
  28 + /**
  29 + * 装车图片
  30 + */
  31 + private List<String> putOnImages;
  32 + /**
  33 + * 卸车图片
  34 + */
  35 + private List<String> putDownImages;
  36 + /**
  37 + * 订单详细地址
  38 + */
  39 + private String garOrderAddressDetails;
  40 +
  41 + /**
  42 + * 订单姓名
  43 + */
  44 + private String garOrderContactName;
  45 +
  46 + /**
  47 + * 垃圾类型
  48 + */
  49 + private String garOrderTrashType;
  50 +
  51 + /**
  52 + * 订单状态
  53 + */
  54 + private Integer garOrderHandlerStatus;
  55 +
  56 + /**
  57 + * 创建时间
  58 + */
  59 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
  60 + private Date garCreateTime;
  61 +
  62 + /**
  63 + * 订单人电话
  64 + */
  65 + private String garOrderContactTel;
  66 +
  67 + /**
  68 + * 承接经营单位
  69 + */
  70 + private String garOrderCompanyId;
  71 +
  72 + /**
  73 + * 公司名称
  74 + */
  75 + private String garOrderCompanyName;
  76 +
  77 + /**
  78 + * 公司负责人电话
  79 + */
  80 + private String garOrderCompanyTel;
  81 +
  82 + /**
  83 + * 约定时间
  84 + */
  85 + private String garOrderAgreementTime;
  86 +
  87 + /**
  88 + * 备注
  89 + */
  90 + private String garRemark;
  91 +
  92 + /**
  93 + * 允许处理标识
  94 + */
  95 + private Boolean handleFlag;
  96 +
  97 + public OrderDetailVo(){
  98 + this.currentImages = new ArrayList<>();
  99 + this.putDownImages = new ArrayList<>();
  100 + this.putOnImages = new ArrayList<>();
  101 + this.handleFlag = false;
  102 + }
  103 +
  104 +}
... ...
trash-garbage/src/main/java/com/trash/garbage/service/GarOrderEvaluateService.java 0 → 100644
  1 +package com.trash.garbage.service;
  2 +
  3 +import com.trash.garbage.pojo.domain.GarOrderEvaluate;
  4 +import com.baomidou.mybatisplus.extension.service.IService;
  5 +
  6 +/**
  7 +* @author 20412
  8 +* @description 针对表【gar_order_evaluate(建筑垃圾-派单评分)】的数据库操作Service
  9 +* @createDate 2023-11-29 14:19:18
  10 +*/
  11 +public interface GarOrderEvaluateService extends IService<GarOrderEvaluate> {
  12 +
  13 +}
... ...
trash-garbage/src/main/java/com/trash/garbage/service/GarOrderImageService.java 0 → 100644
  1 +package com.trash.garbage.service;
  2 +
  3 +import com.baomidou.mybatisplus.extension.service.IService;
  4 +import com.trash.garbage.pojo.domain.GarOrderImage;
  5 +
  6 +/**
  7 +* @author 20412
  8 +* @description 针对表【gar_order_image(装修垃圾-订单图片表)】的数据库操作Service
  9 +* @createDate 2023-11-24 16:26:19
  10 +*/
  11 +public interface GarOrderImageService extends IService<GarOrderImage> {
  12 +
  13 +}
... ...
trash-garbage/src/main/java/com/trash/garbage/service/GarOrderService.java 0 → 100644
  1 +package com.trash.garbage.service;
  2 +
  3 +import com.baomidou.mybatisplus.extension.service.IService;
  4 +import com.github.pagehelper.PageInfo;
  5 +import com.trash.garbage.pojo.domain.GarOrder;
  6 +import com.trash.garbage.pojo.dto.EvaluateDto;
  7 +import com.trash.garbage.pojo.dto.OrderDto;
  8 +import com.trash.garbage.pojo.dto.OrderUpdateDto;
  9 +import com.trash.garbage.pojo.dto.UploadDto;
  10 +import com.trash.garbage.pojo.vo.OrderDetailVo;
  11 +
  12 +import java.util.List;
  13 +
  14 +/**
  15 +* @author 20412
  16 +* @description 针对表【gar_order(建筑垃圾—订单表)】的数据库操作Service
  17 +* @createDate 2023-11-24 16:26:19
  18 +*/
  19 +public interface GarOrderService extends IService<GarOrder> {
  20 +
  21 + /**
  22 + * 新增订单
  23 + * @param dto
  24 + * @return
  25 + */
  26 + String saveOrder(OrderDto dto);
  27 +
  28 + /**
  29 + * 根据id查询订单详情
  30 + * @param id
  31 + * @return
  32 + */
  33 + OrderDetailVo queryOrderDetail(String id);
  34 +
  35 + /**
  36 + * 根据类型查询订单
  37 + *
  38 + * @param type
  39 + * @param pageNo
  40 + * @param pageSize
  41 + * @return
  42 + */
  43 + PageInfo queryOrderList(Integer type, Integer pageNo, Integer pageSize);
  44 +
  45 + /**
  46 + * 修改订单状态
  47 + * @param dto
  48 + * @return
  49 + */
  50 + String uploadOrder(OrderUpdateDto dto);
  51 +
  52 + /**
  53 + * 上传图片url执行图片type
  54 + * @param dto
  55 + * @return
  56 + */
  57 + String uploadImageUrlByType(UploadDto dto);
  58 +
  59 + String evaluateOrder(EvaluateDto dto);
  60 +}
... ...
trash-garbage/src/main/java/com/trash/garbage/service/GarUserService.java
... ... @@ -27,4 +27,6 @@ public interface GarUserService extends IService&lt;GarUser&gt; {
27 27 String updateAddress(AddressDto dto);
28 28  
29 29 String deleteAddress(String addressId);
  30 +
  31 + void updateUserInfo(GarUser user);
30 32 }
... ...
trash-garbage/src/main/java/com/trash/garbage/service/impl/GarOrderEvaluateServiceImpl.java 0 → 100644
  1 +package com.trash.garbage.service.impl;
  2 +
  3 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4 +import com.trash.garbage.pojo.domain.GarOrderEvaluate;
  5 +import com.trash.garbage.service.GarOrderEvaluateService;
  6 +import com.trash.garbage.mapper.GarOrderEvaluateMapper;
  7 +import org.springframework.stereotype.Service;
  8 +
  9 +/**
  10 +* @author 20412
  11 +* @description 针对表【gar_order_evaluate(建筑垃圾-派单评分)】的数据库操作Service实现
  12 +* @createDate 2023-11-29 14:19:18
  13 +*/
  14 +@Service
  15 +public class GarOrderEvaluateServiceImpl extends ServiceImpl<GarOrderEvaluateMapper, GarOrderEvaluate>
  16 + implements GarOrderEvaluateService{
  17 +
  18 +}
  19 +
  20 +
  21 +
  22 +
... ...
trash-garbage/src/main/java/com/trash/garbage/service/impl/GarOrderImageServiceImpl.java 0 → 100644
  1 +package com.trash.garbage.service.impl;
  2 +
  3 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4 +import com.trash.garbage.pojo.domain.GarOrderImage;
  5 +import com.trash.garbage.service.GarOrderImageService;
  6 +import com.trash.garbage.mapper.GarOrderImageMapper;
  7 +import org.springframework.stereotype.Service;
  8 +
  9 +/**
  10 +* @author 20412
  11 +* @description 针对表【gar_order_image(装修垃圾-订单图片表)】的数据库操作Service实现
  12 +* @createDate 2023-11-24 16:26:19
  13 +*/
  14 +@Service
  15 +public class GarOrderImageServiceImpl extends ServiceImpl<GarOrderImageMapper, GarOrderImage>
  16 + implements GarOrderImageService{
  17 +
  18 +}
  19 +
  20 +
  21 +
  22 +
... ...
trash-garbage/src/main/java/com/trash/garbage/service/impl/GarOrderServiceImpl.java 0 → 100644
  1 +package com.trash.garbage.service.impl;
  2 +
  3 +import cn.hutool.core.collection.CollectionUtil;
  4 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  6 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7 +import com.github.pagehelper.PageHelper;
  8 +import com.github.pagehelper.PageInfo;
  9 +import com.trash.common.utils.SecurityUtils;
  10 +import com.trash.common.utils.bean.BeanUtils;
  11 +import com.trash.driver.domain.vo.DriverVo;
  12 +import com.trash.driver.service.IDriverService;
  13 +import com.trash.garbage.global.GlobalStatus;
  14 +import com.trash.garbage.pojo.domain.GarOrder;
  15 +import com.trash.garbage.pojo.domain.GarOrderEvaluate;
  16 +import com.trash.garbage.pojo.domain.GarOrderImage;
  17 +import com.trash.garbage.pojo.domain.GarUser;
  18 +import com.trash.garbage.pojo.dto.EvaluateDto;
  19 +import com.trash.garbage.pojo.dto.OrderDto;
  20 +import com.trash.garbage.pojo.dto.OrderUpdateDto;
  21 +import com.trash.garbage.pojo.dto.UploadDto;
  22 +import com.trash.garbage.pojo.vo.OrderDetailVo;
  23 +import com.trash.garbage.service.GarOrderEvaluateService;
  24 +import com.trash.garbage.service.GarOrderImageService;
  25 +import com.trash.garbage.service.GarOrderService;
  26 +import com.trash.garbage.mapper.GarOrderMapper;
  27 +import com.trash.garbage.service.GarUserService;
  28 +import org.springframework.beans.factory.annotation.Autowired;
  29 +import org.springframework.stereotype.Service;
  30 +import org.springframework.transaction.annotation.Transactional;
  31 +
  32 +import java.util.ArrayList;
  33 +import java.util.List;
  34 +
  35 +/**
  36 + * @author 20412
  37 + * @description 针对表【gar_order(建筑垃圾—订单表)】的数据库操作Service实现
  38 + * @createDate 2023-11-24 16:26:19
  39 + */
  40 +@Service
  41 +public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder>
  42 + implements GarOrderService {
  43 +
  44 +
  45 + @Autowired
  46 + private GarOrderImageService garOrderImageService;
  47 +
  48 + @Autowired
  49 + private GarOrderEvaluateService garOrderEvaluateService;
  50 +
  51 + @Autowired
  52 + private GarUserService garUserService;
  53 +
  54 + @Autowired
  55 + private IDriverService driverService;
  56 +
  57 + @Override
  58 + @Transactional(rollbackFor = Exception.class)
  59 + public String saveOrder(OrderDto dto) {
  60 + String userId = SecurityUtils.getLoginUser().getUser().getUserId();
  61 + GarOrder order = new GarOrder();
  62 + BeanUtils.copyBeanProp(order, dto);
  63 + order.setGarOrderUserId(userId);
  64 + order.setGarOrderHandlerStatus(GlobalStatus.GarOrderStatus.NEW_ORDER.getValue());
  65 + order.setGarCancelFlag(GlobalStatus.GarOrderStatus.CANCEL_FLAG_NO.getValue());
  66 + save(order);
  67 + // 保存图片url
  68 + List<String> imageUrls = dto.getImageUrls();
  69 + List<GarOrderImage> images = new ArrayList<>(imageUrls.size());
  70 + for (String imageUrl : imageUrls) {
  71 + GarOrderImage image = new GarOrderImage();
  72 + image.setGarOrderId(order.getGarOrderId());
  73 + image.setGarOrderImageUrl(imageUrl);
  74 + image.setGarOrderImageType(GlobalStatus.GarOrderStatus.IMAGE_TYPE_CURRENT.getValue());
  75 + images.add(image);
  76 + }
  77 + garOrderImageService.saveBatch(images);
  78 + return order.getGarOrderId();
  79 + }
  80 +
  81 + @Override
  82 + public OrderDetailVo queryOrderDetail(String id) {
  83 + GarOrder order = this.getById(id);
  84 + String tel = SecurityUtils.getLoginUser().getUser().getPhonenumber();
  85 + LambdaQueryWrapper<GarOrderImage> qwi = new LambdaQueryWrapper<>();
  86 + qwi.eq(GarOrderImage::getGarOrderId, id);
  87 + OrderDetailVo vo = new OrderDetailVo();
  88 + BeanUtils.copyBeanProp(vo, order);
  89 + DriverVo driverVo = new DriverVo();
  90 + driverVo.setPhoneNo(tel);
  91 + driverVo.setCompanyId(Long.valueOf(order.getGarOrderCompanyId()));
  92 + List<DriverVo> driverVos = driverService.selectDriverList(driverVo);
  93 + if (CollectionUtil.isNotEmpty(driverVos)) {
  94 + vo.setHandleFlag(true);
  95 + }
  96 + List<GarOrderImage> imageList = garOrderImageService.list(qwi);
  97 + for (GarOrderImage image : imageList) {
  98 + if (GlobalStatus.GarOrderStatus.CANCEL_FLAG_NO.getValue().equals(image.getGarOrderImageType())) {
  99 + vo.getCurrentImages().add(image.getGarOrderImageUrl());
  100 + }
  101 + if (GlobalStatus.GarOrderStatus.IMAGE_TYPE_PUT_ON.getValue().equals(image.getGarOrderImageType())) {
  102 + vo.getPutOnImages().add(image.getGarOrderImageUrl());
  103 + }
  104 + if (GlobalStatus.GarOrderStatus.IMAGE_TYPE_PUT_DOWN.getValue().equals(image.getGarOrderImageType())) {
  105 + vo.getPutDownImages().add(image.getGarOrderImageUrl());
  106 + }
  107 + }
  108 + return vo;
  109 + }
  110 +
  111 + @Override
  112 + public PageInfo queryOrderList(Integer type, Integer pageNo, Integer pageSize) {
  113 + String userId = SecurityUtils.getLoginUser().getUser().getUserId();
  114 + GarUser user = garUserService.getById(userId);
  115 + LambdaQueryWrapper<GarOrder> qw = new LambdaQueryWrapper<>();
  116 + qw.orderByAsc(GarOrder::getGarEvaluateFlag, GarOrder::getGarOrderHandlerStatus);
  117 + // 居民用户
  118 + if (user.getGarUserType().equals(GlobalStatus.UserStatusEnum.DRIVER_USER.getDescription())) {
  119 + PageHelper.startPage(pageNo, pageSize);
  120 + // 待清运 || 清运中 || 已完成 || 待支付
  121 + if (GlobalStatus.GarOrderStatus.NEW_ORDER.getValue().equals(type)
  122 + || GlobalStatus.GarOrderStatus.ACTIVE_ORDER.getValue().equals(type)
  123 + || GlobalStatus.GarOrderStatus.SUCCESS_ORDER.getValue().equals(type)) {
  124 + qw.eq(GarOrder::getGarOrderUserId, userId)
  125 + .eq(GarOrder::getGarOrderHandlerStatus, type);
  126 + List<GarOrder> orderList = list(qw);
  127 + PageInfo<GarOrder> pageInfo = new PageInfo<GarOrder>(orderList, pageSize);
  128 + return pageInfo;
  129 + }
  130 + // 全部
  131 + if (GlobalStatus.GarOrderStatus.ALL_ORDER.getValue().equals(type)) {
  132 + qw.eq(GarOrder::getGarOrderUserId, userId);
  133 + List<GarOrder> orderList = list(qw);
  134 + PageInfo<GarOrder> pageInfo = new PageInfo<GarOrder>(orderList, pageSize);
  135 + return pageInfo;
  136 + }
  137 + } else {
  138 + DriverVo driver = new DriverVo();
  139 + driver.setPhoneNo(user.getGarUserTel());
  140 + List<DriverVo> driverList = driverService.selectDriverList(driver);
  141 + DriverVo driverVo = driverList.get(0);
  142 + String companyId = String.valueOf(driverVo.getCompanyId());
  143 + PageHelper.startPage(pageNo, pageSize);
  144 + if (GlobalStatus.GarOrderStatus.NEW_ORDER.getValue().equals(type)) {
  145 + qw.eq(GarOrder::getGarOrderCompanyId, companyId)
  146 + .eq(GarOrder::getGarOrderHandlerStatus, GlobalStatus.GarOrderStatus.NEW_ORDER.getValue());
  147 + List<GarOrder> orderList = list(qw);
  148 + PageInfo<GarOrder> pageInfo = new PageInfo<GarOrder>(orderList, pageSize);
  149 + return pageInfo;
  150 + }
  151 +
  152 + if (GlobalStatus.GarOrderStatus.ACTIVE_ORDER.getValue().equals(type)
  153 + || GlobalStatus.GarOrderStatus.SUCCESS_ORDER.getValue().equals(type)) {
  154 + qw.eq(GarOrder::getGarOrderCompanyId, companyId)
  155 + .eq(GarOrder::getGarOrderHandlerId, user.getGarUserId())
  156 + .eq(GarOrder::getGarOrderHandlerStatus, type);
  157 + List<GarOrder> orderList = list(qw);
  158 + PageInfo<GarOrder> pageInfo = new PageInfo<GarOrder>(orderList, pageSize);
  159 + return pageInfo;
  160 + }
  161 +
  162 + // 全部
  163 + if (GlobalStatus.GarOrderStatus.ALL_ORDER.getValue().equals(type)) {
  164 + qw.eq(GarOrder::getGarOrderHandlerId, userId);
  165 + List<GarOrder> orderList = list(qw);
  166 + PageInfo<GarOrder> pageInfo = new PageInfo<GarOrder>(orderList, pageSize);
  167 + return pageInfo;
  168 + }
  169 + }
  170 + return null;
  171 + }
  172 +
  173 + @Override
  174 + public String uploadOrder(OrderUpdateDto dto) {
  175 + GarOrder order = getById(dto.getGarOrderId());
  176 + String userId = SecurityUtils.getLoginUser().getUser().getUserId();
  177 + GarUser user = garUserService.getById(userId);
  178 + // 运输员操作 TODO 公司所属 待清运- 》 清运中
  179 + if (GlobalStatus.UserStatusEnum.NORMAL_USER.getDescription().equals(user.getGarUserType())){
  180 + if (order.getGarOrderHandlerStatus().equals(GlobalStatus.GarOrderStatus.NEW_ORDER.getValue())
  181 + || GlobalStatus.GarOrderStatus.NEW_ORDER.getValue().equals(dto.getHandleType())) {
  182 + LambdaUpdateWrapper<GarOrder> uw = new LambdaUpdateWrapper<>();
  183 + uw.eq(GarOrder::getGarOrderId, dto.getGarOrderId())
  184 + .set(GarOrder::getGarOrderHandlerStatus, GlobalStatus.GarOrderStatus.ACTIVE_ORDER.getValue())
  185 + .set(GarOrder::getGarOrderHandlerId, userId);
  186 + update(uw);
  187 + return "准备清运";
  188 + }
  189 + // 运输员操作 清运中 ==》已完成
  190 + if (GlobalStatus.GarOrderStatus.ACTIVE_ORDER.getValue().equals(order.getGarOrderHandlerStatus())
  191 + && GlobalStatus.GarOrderStatus.SUCCESS_ORDER.getValue().equals(dto.getHandleType())) {
  192 + LambdaUpdateWrapper<GarOrder> uw = new LambdaUpdateWrapper<>();
  193 + uw.eq(GarOrder::getGarOrderId, dto.getGarOrderId())
  194 + .set(GarOrder::getGarOrderHandlerStatus, GlobalStatus.GarOrderStatus.SUCCESS_ORDER.getValue())
  195 + .set(GarOrder::getGarEvaluateFlag, GlobalStatus.GarOrderStatus.EVALUATE_ORDER_NO.getValue());
  196 + update(uw);
  197 + }
  198 + return "派单已完成";
  199 + }
  200 + return "什么都没发生";
  201 + }
  202 +
  203 + @Override
  204 + public String uploadImageUrlByType(UploadDto dto) {
  205 + List<GarOrderImage> garOrderImages = new ArrayList<>(dto.getImageUrls().size());
  206 + for (String imageUrl : dto.getImageUrls()) {
  207 + GarOrderImage orderImage = new GarOrderImage();
  208 + orderImage.setGarOrderId(dto.getGarOrderId());
  209 + orderImage.setGarOrderImageUrl(imageUrl);
  210 + orderImage.setGarOrderImageType(dto.getType());
  211 + garOrderImages.add(orderImage);
  212 + }
  213 + garOrderImageService.saveBatch(garOrderImages);
  214 + return "上传成功!";
  215 + }
  216 +
  217 + @Override
  218 + public String evaluateOrder(EvaluateDto dto) {
  219 + String userId = SecurityUtils.getLoginUser().getUser().getUserId();
  220 + GarUser user = garUserService.getById(userId);
  221 + GarOrder order = getById(dto.getOrderId());
  222 + // TODO 用户评价
  223 + if (GlobalStatus.GarOrderStatus.SUCCESS_ORDER.getValue().equals(order.getGarOrderHandlerStatus())) {
  224 + evaluate(dto, order);
  225 + }
  226 + return "已评价";
  227 + }
  228 +
  229 + private void evaluate(EvaluateDto dto, GarOrder order) {
  230 + GarOrderEvaluate evaluate = new GarOrderEvaluate();
  231 + evaluate.setGarOrderId(order.getGarOrderId());
  232 + evaluate.setGarEvaluateContent(dto.getContent());
  233 + evaluate.setGarEvaluateScore(dto.getScore());
  234 + garOrderEvaluateService.save(evaluate);
  235 + // 修改订单评价状态
  236 + LambdaUpdateWrapper<GarOrder> uw = new LambdaUpdateWrapper<>();
  237 + uw.eq(GarOrder::getGarOrderId, order.getGarOrderId())
  238 + .set(GarOrder::getGarEvaluateFlag, GlobalStatus.GarOrderStatus.EVALUATE_ORDER_YES.getValue());
  239 + update(uw);
  240 + }
  241 +}
  242 +
  243 +
  244 +
  245 +
... ...
trash-garbage/src/main/java/com/trash/garbage/service/impl/GarUserServiceImpl.java
... ... @@ -116,9 +116,6 @@ public class GarUserServiceImpl extends ServiceImpl&lt;GarUserMapper, GarUser&gt;
116 116 user.setRoles(roles);
117 117 loginUser.setPermissions(set);
118 118 String token = JwtUtils.createToken(nUser.getGarUserId(), nUser.getGarUserTel());
119   - if (!token.contains("Bearer ")) {
120   - token = "Bearer " + token;
121   - }
122 119 loginUser.setToken(token);
123 120 tokenService.refreshToken(loginUser);
124 121 return token;
... ... @@ -209,6 +206,17 @@ public class GarUserServiceImpl extends ServiceImpl&lt;GarUserMapper, GarUser&gt;
209 206 return "删除成功!";
210 207 }
211 208  
  209 + @Override
  210 + public void updateUserInfo(GarUser user) {
  211 + String userId = SecurityUtils.getLoginUser().getUser().getUserId();
  212 + LambdaUpdateWrapper<GarUser> uw = new LambdaUpdateWrapper<>();
  213 + uw.eq(GarUser::getGarUserId, userId)
  214 + .set(GarUser::getGarUserType, user.getGarUserType())
  215 + .set(GarUser::getGarUserName, user.getGarUserName())
  216 + .set(GarUser::getGarUserCarNum, user.getGarUserCarNum());
  217 + update(uw);
  218 + }
  219 +
212 220  
213 221 /**
214 222 * 微信小程序解密
... ...
trash-garbage/src/main/resources/mapper/GarOrderEvaluateMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper
  3 + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4 + "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5 +<mapper namespace="com.trash.garbage.mapper.GarOrderEvaluateMapper">
  6 +
  7 + <resultMap id="BaseResultMap" type="com.trash.garbage.pojo.domain.GarOrderEvaluate">
  8 + <id property="garEvaluateId" column="gar_evaluate_id" jdbcType="VARCHAR"/>
  9 + <result property="garEvaluateContent" column="gar_evaluate_content" jdbcType="VARCHAR"/>
  10 + <result property="garOrderId" column="gar_order_id" jdbcType="VARCHAR"/>
  11 + <result property="garEvaluateScore" column="gar_evaluate_score" jdbcType="TINYINT"/>
  12 + <result property="garUpdateBy" column="gar_update_by" jdbcType="VARCHAR"/>
  13 + <result property="garCreateBy" column="gar_create_by" jdbcType="VARCHAR"/>
  14 + <result property="garUpdateTime" column="gar_update_time" jdbcType="TIMESTAMP"/>
  15 + <result property="garCreateTime" column="gar_create_time" jdbcType="TIMESTAMP"/>
  16 + <result property="garRemark" column="gar_remark" jdbcType="VARCHAR"/>
  17 + <result property="garCompanyId" column="gar_company_id" jdbcType="VARCHAR"/>
  18 + </resultMap>
  19 +
  20 + <sql id="Base_Column_List">
  21 + gar_evaluate_id,gar_evaluate_content,gar_evaluate_score,
  22 + gar_update_by,gar_create_by,gar_update_time,
  23 + gar_create_time,gar_remark,gar_order_id,gar_company_id
  24 + </sql>
  25 +</mapper>
... ...
trash-garbage/src/main/resources/mapper/GarOrderImageMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper
  3 + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4 + "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5 +<mapper namespace="com.trash.garbage.mapper.GarOrderImageMapper">
  6 +
  7 + <resultMap id="BaseResultMap" type="com.trash.garbage.pojo.domain.GarOrderImage">
  8 + <id property="garImageId" column="gar_image_id" jdbcType="VARCHAR"/>
  9 + <result property="garOrderId" column="gar_order_id" jdbcType="VARCHAR"/>
  10 + <result property="garOrderImageType" column="gar_order_image_type" jdbcType="TINYINT"/>
  11 + <result property="garOrderImageUrl" column="gar_order_image_url" jdbcType="VARCHAR"/>
  12 + <result property="garCreateTime" column="gar_create_time" jdbcType="TIMESTAMP"/>
  13 + <result property="garUpdateTime" column="gar_update_time" jdbcType="TIMESTAMP"/>
  14 + <result property="garCreateBy" column="gar_create_by" jdbcType="VARCHAR"/>
  15 + <result property="garUpdateBy" column="gar_update_by" jdbcType="VARCHAR"/>
  16 + <result property="garRemark" column="gar_remark" jdbcType="VARCHAR"/>
  17 + </resultMap>
  18 +
  19 + <sql id="Base_Column_List">
  20 + gar_image_id,gar_order_id,gar_order_image_type,
  21 + gar_order_image_url,gar_create_time,gar_update_time,
  22 + gar_create_by,gar_update_by,gar_remark
  23 + </sql>
  24 +</mapper>
... ...
trash-garbage/src/main/resources/mapper/GarOrderMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper
  3 + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4 + "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5 +<mapper namespace="com.trash.garbage.mapper.GarOrderMapper">
  6 +
  7 + <resultMap id="BaseResultMap" type="com.trash.garbage.pojo.domain.GarOrder">
  8 + <id property="garOrderId" column="gar_order_id" jdbcType="VARCHAR"/>
  9 + <result property="garOrderUserId" column="gar_order_user_id" jdbcType="VARCHAR"/>
  10 + <result property="garOrderHandlerId" column="gar_order_handler_id" jdbcType="VARCHAR"/>
  11 + <result property="garOrderAddress" column="gar_order_address" jdbcType="VARCHAR"/>
  12 + <result property="garOrderAddressDetails" column="gar_order_address_details" jdbcType="VARCHAR"/>
  13 + <result property="garOrderContactName" column="gar_order_contact_name" jdbcType="VARCHAR"/>
  14 + <result property="garOrderTrashType" column="gar_order_trash_type" jdbcType="VARCHAR"/>
  15 + <result property="garOrderContactTel" column="gar_order_contact_tel" jdbcType="VARCHAR"/>
  16 + <result property="garOrderCompanyId" column="gar_order_company_id" jdbcType="VARCHAR"/>
  17 + <result property="garOrderCompanyName" column="gar_order_company_name" jdbcType="VARCHAR"/>
  18 + <result property="garOrderCompanyTel" column="gar_order_company_tel" jdbcType="VARCHAR"/>
  19 + <result property="garOrderHandlerStatus" column="gar_order_handler_status" jdbcType="INTEGER"/>
  20 + <result property="garOrderAgreementTime" column="gar_order_agreement_time" jdbcType="VARCHAR"/>
  21 + <result property="garCreateTime" column="gar_create_time" jdbcType="TIMESTAMP"/>
  22 + <result property="garUpdateTime" column="gar_update_time" jdbcType="TIMESTAMP"/>
  23 + <result property="garCreateBy" column="gar_create_by" jdbcType="VARCHAR"/>
  24 + <result property="garUpdateBy" column="gar_update_by" jdbcType="VARCHAR"/>
  25 + <result property="garRemark" column="gar_remark" jdbcType="VARCHAR"/>
  26 + <result property="garReason" column="gar_reason" jdbcType="VARCHAR"/>
  27 + <result property="garCancelFlag" column="gar_cancel_flag" jdbcType="TINYINT"/>
  28 + <result property="garEvaluateFlag" column="gar_evaluate_flag" jdbcType="TINYINT"/>
  29 + </resultMap>
  30 +
  31 + <sql id="Base_Column_List">
  32 + gar_order_id
  33 + ,gar_order_user_id,gar_order_handle_id,
  34 + gar_order_address,gar_order_address_details,gar_order_contact_name,
  35 + gar_order_trash_type,gar_order_contact_tel,gar_order_company_id,
  36 + gar_order_company_name,gar_order_company_tel,gar_order_hander_status,
  37 + gar_order_agreement_time,gar_create_time,gar_update_time,
  38 + gar_create_by,gar_update_by,gar_remark,gar_reason,gar_cancel_flag,gar_evaluate_flag
  39 + </sql>
  40 +</mapper>
... ...
trash-ui/src/api/other/documentData.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询文件资料列表
  4 +export function listDocumentData(query) {
  5 + return request({
  6 + url: '/other/documentData/list',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询文件资料详细
  13 +export function getDocumentData(id) {
  14 + return request({
  15 + url: '/other/documentData/' + id,
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 新增文件资料
  21 +export function addDocumentData(data) {
  22 + return request({
  23 + url: '/other/documentData',
  24 + method: 'post',
  25 + data: data
  26 + })
  27 +}
  28 +
  29 +// 修改文件资料
  30 +export function updateDocumentData(data) {
  31 + return request({
  32 + url: '/other/documentData',
  33 + method: 'put',
  34 + data: data
  35 + })
  36 +}
  37 +
  38 +// 删除文件资料
  39 +export function delDocumentData(id) {
  40 + return request({
  41 + url: '/other/documentData/' + id,
  42 + method: 'delete'
  43 + })
  44 +}
  45 +
  46 +// 导出文件资料
  47 +export function exportDocumentData(query) {
  48 + return request({
  49 + url: '/other/documentData/export',
  50 + method: 'get',
  51 + params: query
  52 + })
  53 +}
0 54 \ No newline at end of file
... ...
trash-ui/src/api/other/incorruptData.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询文件资料列表
  4 +export function listIncorruptData(tableName) {
  5 + return request({
  6 + url: '/other/incorrupt/list/'+tableName,
  7 + method: 'get'
  8 + })
  9 +}
  10 +
  11 +// 新增文件资料
  12 +export function addIncorruptData(data) {
  13 + return request({
  14 + url: '/other/incorrupt',
  15 + method: 'post',
  16 + data: data
  17 + })
  18 +}
... ...
trash-ui/src/api/unit/businessUnit.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询运输企业管理列表
  4 +export function listEnterprise(query) {
  5 + return request({
  6 + url: '/unit/enterprise/list',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询运输企业管理详细
  13 +export function getEnterprise(id) {
  14 + return request({
  15 + url: '/unit/enterprise/' + id,
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 新增运输企业管理
  21 +export function addEnterprise(data) {
  22 + return request({
  23 + url: '/unit/enterprise',
  24 + method: 'post',
  25 + data: data
  26 + })
  27 +}
  28 +
  29 +// 修改运输企业管理
  30 +export function updateEnterprise(data) {
  31 + return request({
  32 + url: '/unit/enterprise',
  33 + method: 'put',
  34 + data: data
  35 + })
  36 +}
  37 +
  38 +// 删除运输企业管理
  39 +export function delEnterprise(id) {
  40 + return request({
  41 + url: '/unit/enterprise/' + id,
  42 + method: 'delete'
  43 + })
  44 +}
  45 +
  46 +// 导出运输企业管理
  47 +export function exportEnterprise(query) {
  48 + return request({
  49 + url: '/unit/enterprise/export',
  50 + method: 'get',
  51 + params: query
  52 + })
  53 +}
... ...
trash-ui/src/api/unit/carInfo.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询运输车辆管理列表
  4 +export function listCarInfo(query) {
  5 + return request({
  6 + url: '/unit/carInfo/list',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询运输车辆管理详细
  13 +export function getCarInfo(id) {
  14 + return request({
  15 + url: '/unit/carInfo/' + id,
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 新增运输车辆管理
  21 +export function addCarInfo(data) {
  22 + return request({
  23 + url: '/unit/carInfo',
  24 + method: 'post',
  25 + data: data
  26 + })
  27 +}
  28 +
  29 +// 修改运输车辆管理
  30 +export function updateCarInfo(data) {
  31 + return request({
  32 + url: '/unit/carInfo',
  33 + method: 'put',
  34 + data: data
  35 + })
  36 +}
  37 +
  38 +// 删除运输车辆管理
  39 +export function delCarInfo(id) {
  40 + return request({
  41 + url: '/unit/carInfo/' + id,
  42 + method: 'delete'
  43 + })
  44 +}
  45 +
  46 +// 导出运输车辆管理
  47 +export function exportCarInfo(query) {
  48 + return request({
  49 + url: '/unit/carInfo/export',
  50 + method: 'get',
  51 + params: query
  52 + })
  53 +}
... ...
trash-ui/src/api/unit/disposalSite.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询处理场所管理列表
  4 +export function listDisposalSite(query) {
  5 + return request({
  6 + url: '/unit/disposalSite/list',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询处理场所管理详细
  13 +export function getDisposalSite(id) {
  14 + return request({
  15 + url: '/unit/disposalSite/' + id,
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 新增处理场所管理
  21 +export function addDisposalSite(data) {
  22 + return request({
  23 + url: '/unit/disposalSite',
  24 + method: 'post',
  25 + data: data
  26 + })
  27 +}
  28 +
  29 +// 修改处理场所管理
  30 +export function updateDisposalSite(data) {
  31 + return request({
  32 + url: '/unit/disposalSite',
  33 + method: 'put',
  34 + data: data
  35 + })
  36 +}
  37 +
  38 +// 删除处理场所管理
  39 +export function delDisposalSite(id) {
  40 + return request({
  41 + url: '/unit/disposalSite/' + id,
  42 + method: 'delete'
  43 + })
  44 +}
  45 +
  46 +// 导出处理场所管理
  47 +export function exportDisposalSite(query) {
  48 + return request({
  49 + url: '/unit/disposalSite/export',
  50 + method: 'get',
  51 + params: query
  52 + })
  53 +}
... ...
trash-ui/src/api/unit/driver.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询驾驶员管理列表
  4 +export function listDriver(query) {
  5 + return request({
  6 + url: '/unit/driver/list',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +
  13 +// 查询驾驶员管理详细
  14 +export function listDriverByCompanyId(companyId) {
  15 + return request({
  16 + url: '/unit/driver/listDriverByCompany/' + companyId,
  17 + method: 'get'
  18 + })
  19 +}
  20 +
  21 +// 查询驾驶员管理详细
  22 +export function getDriver(id) {
  23 + return request({
  24 + url: '/unit/driver/' + id,
  25 + method: 'get'
  26 + })
  27 +}
  28 +
  29 +// 新增驾驶员管理
  30 +export function addDriver(data) {
  31 + return request({
  32 + url: '/unit/driver',
  33 + method: 'post',
  34 + data: data
  35 + })
  36 +}
  37 +
  38 +// 修改驾驶员管理
  39 +export function updateDriver(data) {
  40 + return request({
  41 + url: '/unit/driver',
  42 + method: 'put',
  43 + data: data
  44 + })
  45 +}
  46 +
  47 +// 删除驾驶员管理
  48 +export function delDriver(id) {
  49 + return request({
  50 + url: '/unit/driver/' + id,
  51 + method: 'delete'
  52 + })
  53 +}
  54 +
  55 +// 导出驾驶员管理
  56 +export function exportDriver(query) {
  57 + return request({
  58 + url: '/unit/driver/export',
  59 + method: 'get',
  60 + params: query
  61 + })
  62 +}
... ...
trash-ui/src/api/unit/enterprise.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询运输企业管理列表
  4 +export function listEnterprise(query) {
  5 + return request({
  6 + url: '/unit/enterprise/list',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询运输企业管理详细
  13 +export function getEnterprise(id) {
  14 + return request({
  15 + url: '/unit/enterprise/' + id,
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 新增运输企业管理
  21 +export function addEnterprise(data) {
  22 + return request({
  23 + url: '/unit/enterprise',
  24 + method: 'post',
  25 + data: data
  26 + })
  27 +}
  28 +
  29 +// 修改运输企业管理
  30 +export function updateEnterprise(data) {
  31 + return request({
  32 + url: '/unit/enterprise',
  33 + method: 'put',
  34 + data: data
  35 + })
  36 +}
  37 +
  38 +// 删除运输企业管理
  39 +export function delEnterprise(id) {
  40 + return request({
  41 + url: '/unit/enterprise/' + id,
  42 + method: 'delete'
  43 + })
  44 +}
  45 +
  46 +// 导出运输企业管理
  47 +export function exportEnterprise(query) {
  48 + return request({
  49 + url: '/unit/enterprise/export',
  50 + method: 'get',
  51 + params: query
  52 + })
  53 +}
... ...
trash-ui/src/main.js
... ... @@ -12,6 +12,7 @@ import &#39;@/assets/styles/trash.scss&#39; // trash css
12 12 import App from './App'
13 13 import store from './store'
14 14 import router from './router'
  15 +import plugins from './plugins' // plugins
15 16 import permission from './directive/permission'
16 17  
17 18 import './assets/icons' // icon
... ... @@ -35,7 +36,11 @@ Vue.prototype.selectDictLabels = selectDictLabels
35 36 Vue.prototype.download = download
36 37 Vue.prototype.handleTree = handleTree
37 38 Vue.prototype.parseStatus = parseStatus
38   -Vue.prototype.checkPer = checkPermi
  39 +Vue.prototype.checkPer = checkPermi
  40 +
  41 +Vue.use(plugins)
  42 +Vue.prototype.$aMapKey = "902732b0ff4758e4b39f0f34f0cb1cb0";// 高德地图key
  43 +
39 44  
40 45 Vue.prototype.remoteFrame = "http://183.66.242.6:14601"
41 46 // Vue.prototype.remoteFrame = "http://175.6.47.84:8008"
... ... @@ -67,8 +72,8 @@ Vue.use(permission)
67 72 *
68 73 * Currently MockJs will be used in the production environment,
69 74 * please remove it before going online! ! !
70   - */
71   -Element.Dialog.props.closeOnClickModal.default = false;
  75 + */
  76 +Element.Dialog.props.closeOnClickModal.default = false;
72 77  
73 78 Vue.use(Element, {
74 79 size: Cookies.get('size') || 'medium' // set element-ui default size
... ...
trash-ui/src/plugins/index.js 0 → 100644
  1 +import tab from './tab'
  2 +
  3 +export default {
  4 + install(Vue) {
  5 + // 页签操作
  6 + Vue.prototype.$tab = tab
  7 + }
  8 +}
... ...
trash-ui/src/plugins/tab.js 0 → 100644
  1 +import store from '@/store'
  2 +import router from '@/router';
  3 +
  4 +export default {
  5 + // 刷新当前tab页签
  6 + refreshPage(obj) {
  7 + const { path, query, matched } = router.currentRoute;
  8 + if (obj === undefined) {
  9 + matched.forEach((m) => {
  10 + if (m.components && m.components.default && m.components.default.name) {
  11 + if (!['Layout', 'ParentView'].includes(m.components.default.name)) {
  12 + obj = { name: m.components.default.name, path: path, query: query };
  13 + }
  14 + }
  15 + });
  16 + }
  17 + return store.dispatch('tagsView/delCachedView', obj).then(() => {
  18 + const { path, query } = obj
  19 + router.replace({
  20 + path: '/redirect' + path,
  21 + query: query
  22 + })
  23 + })
  24 + },
  25 + // 关闭当前tab页签,打开新页签
  26 + closeOpenPage(obj) {
  27 + store.dispatch("tagsView/delView", router.currentRoute);
  28 + if (obj !== undefined) {
  29 + return router.push(obj);
  30 + }
  31 + },
  32 + // 关闭指定tab页签
  33 + closePage(obj) {
  34 + if (obj === undefined) {
  35 + return store.dispatch('tagsView/delView', router.currentRoute).then(({ visitedViews }) => {
  36 + const latestView = visitedViews.slice(-1)[0]
  37 + if (latestView) {
  38 + return router.push(latestView.fullPath)
  39 + }
  40 + return router.push('/');
  41 + });
  42 + }
  43 + return store.dispatch('tagsView/delView', obj);
  44 + },
  45 + // 关闭所有tab页签
  46 + closeAllPage() {
  47 + return store.dispatch('tagsView/delAllViews');
  48 + },
  49 + // 关闭左侧tab页签
  50 + closeLeftPage(obj) {
  51 + return store.dispatch('tagsView/delLeftTags', obj || router.currentRoute);
  52 + },
  53 + // 关闭右侧tab页签
  54 + closeRightPage(obj) {
  55 + return store.dispatch('tagsView/delRightTags', obj || router.currentRoute);
  56 + },
  57 + // 关闭其他tab页签
  58 + closeOtherPage(obj) {
  59 + return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute);
  60 + },
  61 + // 添加tab页签
  62 + openPage(title, url, params) {
  63 + var obj = { path: url, meta: { title: title } }
  64 + store.dispatch('tagsView/addView', obj);
  65 + return router.push({ path: url, query: params });
  66 + },
  67 + // 修改tab页签
  68 + updatePage(obj) {
  69 + return store.dispatch('tagsView/updateVisitedView', obj);
  70 + }
  71 +}
... ...
trash-ui/src/router/index.js
... ... @@ -65,6 +65,7 @@ export const constantRoutes = [
65 65 }
66 66 ]
67 67 },
  68 +
68 69 {
69 70 path: '/user',
70 71 component: Layout,
... ... @@ -115,9 +116,79 @@ export const constantRoutes = [
115 116 component: (resolve) => require(['@/views/tool/gen/editTable'], resolve),
116 117 name: 'GenEdit',
117 118 meta: { title: '修改生成配置' }
118   - }
  119 + },
  120 + {
  121 + path: '/disposalSite/info',
  122 + component: (resolve) => require(['@/views/unit/disposalSite/info'], resolve),
  123 + name: '新增处理场所',
  124 + hidden: true,
  125 + meta: { title: '新增处理场所' }
  126 + },
  127 + {
  128 + path: '/disposalSite/infoEdit',
  129 + component: (resolve) => require(['@/views/unit/disposalSite/info'], resolve),
  130 + name: '修改处理场所',
  131 + hidden: true,
  132 + meta: { title: '修改处理场所' }
  133 + },
  134 + {
  135 + path: '/enterprise/info',
  136 + component: (resolve) => require(['@/views/unit/enterprise/info'], resolve),
  137 + name: '新增运输企业',
  138 + hidden: true,
  139 + meta: { title: '新增运输企业' }
  140 + },
  141 + {
  142 + path: '/enterprise/infoEdit',
  143 + component: (resolve) => require(['@/views/unit/enterprise/info'], resolve),
  144 + name: '修改运输企业',
  145 + hidden: true,
  146 + meta: { title: '修改运输企业' }
  147 + },
  148 + {
  149 + path: '/unit/info',
  150 + component: (resolve) => require(['@/views/unit/businessUnit/info'], resolve),
  151 + name: '新增经营单位',
  152 + hidden: true,
  153 + meta: { title: '新增经营单位' }
  154 + },
  155 + {
  156 + path: '/unit/infoEdit',
  157 + component: (resolve) => require(['@/views/unit/businessUnit/info'], resolve),
  158 + name: '修改经营单位',
  159 + hidden: true,
  160 + meta: { title: '修改经营单位' }
  161 + },
  162 + {
  163 + path: '/carInfo/info',
  164 + component: (resolve) => require(['@/views/unit/carInfo/info'], resolve),
  165 + name: '新增车辆信息',
  166 + hidden: true,
  167 + meta: { title: '新增车辆信息' }
  168 + },
  169 + {
  170 + path: '/carInfo/infoEdit',
  171 + component: (resolve) => require(['@/views/unit/carInfo/info'], resolve),
  172 + name: '修改车辆信息',
  173 + hidden: true,
  174 + meta: { title: '修改车辆信息' }
  175 + },
  176 + {
  177 + path: '/driverInfo/info',
  178 + component: (resolve) => require(['@/views/unit/driver/info'], resolve),
  179 + name: '新增驾驶员',
  180 + hidden: true,
  181 + meta: { title: '新增驾驶员' }
  182 + },
  183 + {
  184 + path: '/driverInfo/infoEdit',
  185 + component: (resolve) => require(['@/views/unit/driver/info'], resolve),
  186 + name: '修改驾驶员',
  187 + hidden: true,
  188 + meta: { title: '修改驾驶员' }
  189 + },
119 190 ]
120   - },
  191 + },
121 192 {
122 193 path: '/business',
123 194 component: Layout,
... ... @@ -128,12 +199,12 @@ export const constantRoutes = [
128 199 component: (resolve) => require(['@/views/business/ConstructionCredit'], resolve),
129 200 name: '工地失信管理',
130 201 meta: { title: '工地失信管理' }
131   - },
132   - {
133   - path: 'track',
134   - component: (resolve) => require(['@/views/business/track'], resolve),
135   - name: '跟踪监督',
136   - meta: { title: '跟踪监督' }
  202 + },
  203 + {
  204 + path: 'track',
  205 + component: (resolve) => require(['@/views/business/track'], resolve),
  206 + name: '跟踪监督',
  207 + meta: { title: '跟踪监督' }
137 208 },
138 209 {
139 210 path: 'supervision/threestep',
... ... @@ -371,6 +442,7 @@ export const constantRoutes = [
371 442 },
372 443 ]
373 444 },
  445 +
374 446 // {
375 447 // path: '/task/handle',
376 448 // component: Layout,
... ...
trash-ui/src/views/other/documentData/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4 + <el-form-item label="标题" prop="title">
  5 + <el-input
  6 + v-model="queryParams.title"
  7 + placeholder="请输入标题"
  8 + clearable
  9 + size="small"
  10 + @keyup.enter.native="handleQuery"
  11 + />
  12 + </el-form-item>
  13 + <el-form-item>
  14 + <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  15 + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  16 + </el-form-item>
  17 + </el-form>
  18 +
  19 + <el-row :gutter="10" class="mb8">
  20 + <el-col :span="1.5">
  21 + <el-button
  22 + type="primary"
  23 + icon="el-icon-plus"
  24 + size="mini"
  25 + @click="handleAdd"
  26 + v-hasPermi="['other:documentData:add']"
  27 + >新增
  28 + </el-button>
  29 + </el-col>
  30 + <el-col :span="1.5">
  31 + <el-button
  32 + type="success"
  33 + icon="el-icon-edit"
  34 + size="mini"
  35 + :disabled="single"
  36 + @click="handleUpdate"
  37 + v-hasPermi="['other:documentData:edit']"
  38 + >修改
  39 + </el-button>
  40 + </el-col>
  41 + <el-col :span="1.5">
  42 + <el-button
  43 + type="danger"
  44 + icon="el-icon-delete"
  45 + size="mini"
  46 + :disabled="multiple"
  47 + @click="handleDelete"
  48 + v-hasPermi="['other:documentData:remove']"
  49 + >删除
  50 + </el-button>
  51 + </el-col>
  52 + <el-col :span="1.5">
  53 + <el-button
  54 + type="warning"
  55 + icon="el-icon-download"
  56 + size="mini"
  57 + @click="handleExport"
  58 + v-hasPermi="['other:documentData:export']"
  59 + >导出
  60 + </el-button>
  61 + </el-col>
  62 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  63 + </el-row>
  64 +
  65 + <el-table v-loading="loading" :data="documentDataList" @selection-change="handleSelectionChange">
  66 + <el-table-column type="selection" width="55" align="center"/>
  67 + <el-table-column label="附件" align="center" prop="id"/>
  68 + <el-table-column label="标题" align="center" prop="title"/>
  69 + <el-table-column label="时间" align="center" prop="createTime">
  70 + <template slot-scope="scope">
  71 + <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}:{s}") }}</span>
  72 + </template>
  73 + </el-table-column>
  74 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  75 + <template slot-scope="scope">
  76 + <el-button
  77 + size="mini"
  78 + type="text"
  79 + icon="el-icon-edit"
  80 + @click="handleUpdate(scope.row)"
  81 + v-hasPermi="['other:documentData:edit']"
  82 + >修改
  83 + </el-button>
  84 + <el-button
  85 + size="mini"
  86 + type="text"
  87 + icon="el-icon-delete"
  88 + @click="handleDelete(scope.row)"
  89 + v-hasPermi="['other:documentData:remove']"
  90 + >删除
  91 + </el-button>
  92 + </template>
  93 + </el-table-column>
  94 + </el-table>
  95 +
  96 + <pagination
  97 + v-show="total>0"
  98 + :total="total"
  99 + :page.sync="queryParams.pageNum"
  100 + :limit.sync="queryParams.pageSize"
  101 + @pagination="getList"
  102 + />
  103 +
  104 + <!-- 添加或修改文件资料对话框 -->
  105 + <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
  106 + <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  107 + <el-form-item label="标题" prop="title">
  108 + <el-input v-model="form.title" placeholder="请输入标题"/>
  109 + </el-form-item>
  110 + <el-form-item label="内容" prop="content">
  111 + <editor v-model="form.content" :min-height="368"/>
  112 + </el-form-item>
  113 + <el-row>
  114 + <el-col :span="12">
  115 + <el-form-item label="录入时间">
  116 + <el-input v-model="form.createTime" disabled="disabled"/>
  117 + </el-form-item>
  118 + </el-col>
  119 + <el-col :span="12">
  120 + <el-form-item label="录入人">
  121 + <el-input v-model="form.createBy" disabled="disabled"/>
  122 + </el-form-item>
  123 + </el-col>
  124 + </el-row>
  125 + <el-form-item label="附件预览">
  126 + <el-image v-for="item in fileEntityList"
  127 + v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)"
  128 + style="width: 150px; height: 100px; margin: 5px;"
  129 + :src="createUrl(item)"
  130 + :preview-src-list="[createUrl(item)]"
  131 + :z-index="999">
  132 + </el-image>
  133 + </el-form-item>
  134 + <el-form-item prop="fileEntityList" label="附件">
  135 + <el-upload
  136 + ref="upload"
  137 + action=""
  138 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  139 + :on-change="fileChange"
  140 + :auto-upload="false"
  141 + :show-file-list="false"
  142 + multiple
  143 + :file-list="fileEntityList">
  144 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  145 + </el-upload>
  146 + </el-form-item>
  147 + <el-table :data="fileEntityList">
  148 + <el-table-column property="name" label="附件名称" header-align="center" align="center"></el-table-column>
  149 + <el-table-column label="操作" class-name="small-padding fixed-width" header-align="center" align="center">
  150 + <template slot-scope="scope">
  151 + <el-button
  152 + size="small" type="success"
  153 + icon="el-icon-download"
  154 + @click="tempDownload(scope.row)"
  155 + v-hasPermi="['other:documentData:edit']"
  156 + round>下载
  157 + </el-button>
  158 + <el-button
  159 + size="small" type="danger"
  160 + icon="el-icon-delete"
  161 + @click="handleDeleteFile(scope.$index)"
  162 + v-hasPermi="['other:documentData:remove']"
  163 + round>删除
  164 + </el-button>
  165 + </template>
  166 + </el-table-column>
  167 + </el-table>
  168 + </el-form>
  169 + <div slot="footer" class="dialog-footer">
  170 + <el-button type="primary" @click="submitForm">确 定</el-button>
  171 + <el-button @click="cancel">取 消</el-button>
  172 + </div>
  173 + </el-dialog>
  174 + </div>
  175 +</template>
  176 +
  177 +<script>
  178 +import {
  179 + addDocumentData,
  180 + delDocumentData,
  181 + exportDocumentData,
  182 + getDocumentData,
  183 + listDocumentData,
  184 + updateDocumentData
  185 +} from "@/api/other/documentData";
  186 +import Editor from '@/components/ZcEditor';
  187 +import {parseTime} from "../../../utils/trash";
  188 +
  189 +export default {
  190 + name: "DocumentData",
  191 + components: {Editor},
  192 + data() {
  193 + return {
  194 + // 遮罩层
  195 + loading: true,
  196 + // 选中数组
  197 + ids: [],
  198 + // 非单个禁用
  199 + single: true,
  200 + // 非多个禁用
  201 + multiple: true,
  202 + // 显示搜索条件
  203 + showSearch: true,
  204 + // 总条数
  205 + total: 0,
  206 + // 文件资料表格数据
  207 + documentDataList: [],
  208 + // 弹出层标题
  209 + title: "",
  210 + // 是否显示弹出层
  211 + open: false,
  212 + // 查询参数
  213 + queryParams: {
  214 + pageNum: 1,
  215 + pageSize: 10,
  216 + title: null,
  217 + content: null,
  218 + files: null,
  219 + },
  220 + // 表单参数
  221 + form: {},
  222 + // 表单校验
  223 + rules: {
  224 + title: [
  225 + {required: true, message: "请输入标题", trigger: "blur"},
  226 + {min: 1, max: 100, message: "长度在 1 到 100 个字符", trigger: "blur"}
  227 + ],
  228 + content: [
  229 + {required: true, message: "请输入内容", trigger: "blur"},
  230 + {min: 1, max: 10000, message: "长度在 1 到 10000 个字符", trigger: "blur"}
  231 + ],
  232 + files: [
  233 + {required: true, message: "请上传附件", trigger: "blur"}
  234 + ]
  235 + },
  236 + fileEntityList: [],
  237 + };
  238 + },
  239 + created() {
  240 + this.getList();
  241 + },
  242 + methods: {
  243 + /** 查询文件资料列表 */
  244 + getList() {
  245 + this.loading = true;
  246 + listDocumentData(this.queryParams).then(response => {
  247 + this.documentDataList = response.rows;
  248 + this.total = response.total;
  249 + this.loading = false;
  250 + });
  251 + },
  252 + // 取消按钮
  253 + cancel() {
  254 + this.open = false;
  255 + this.reset();
  256 + },
  257 + // 表单重置
  258 + reset() {
  259 + this.form = {
  260 + id: null,
  261 + title: null,
  262 + content: null,
  263 + files: null,
  264 + createTime: null,
  265 + createBy: null,
  266 + updateTime: null,
  267 + updateBy: null
  268 + };
  269 + this.fileEntityList = [];
  270 + this.resetForm("form");
  271 + },
  272 + /** 搜索按钮操作 */
  273 + handleQuery() {
  274 + this.queryParams.pageNum = 1;
  275 + this.getList();
  276 + },
  277 + /** 重置按钮操作 */
  278 + resetQuery() {
  279 + this.resetForm("queryForm");
  280 + this.handleQuery();
  281 + },
  282 + // 多选框选中数据
  283 + handleSelectionChange(selection) {
  284 + this.ids = selection.map(item => item.id)
  285 + this.single = selection.length !== 1
  286 + this.multiple = !selection.length
  287 + },
  288 + /** 新增按钮操作 */
  289 + handleAdd() {
  290 + this.reset();
  291 + //yyyy-MM-dd HH:mm:ss
  292 + this.form.createTime = parseTime(new Date(), "{y}-{m}-{d} {h}:{i}:{s}");
  293 + this.form.createBy = this.$store.getters.name;
  294 + this.open = true;
  295 + this.title = "添加文件资料";
  296 + },
  297 + /** 修改按钮操作 */
  298 + handleUpdate(row) {
  299 + this.reset();
  300 + const id = row.id || this.ids
  301 + getDocumentData(id).then(response => {
  302 + this.form = response.data;
  303 + //将附件转换为前端可视化数组
  304 + if (this.form.files != null && this.form.files !== "") {
  305 + let fileList = this.form.files.split(";");
  306 + fileList.map(item => {
  307 + let name = item.substring(item.lastIndexOf("/") + 1);
  308 + this.fileEntityList.push({name: name, url: item})
  309 + })
  310 + }
  311 + this.open = true;
  312 + this.title = "修改文件资料";
  313 + });
  314 + },
  315 + /** 提交按钮 */
  316 + submitForm() {
  317 + this.$refs["form"].validate(valid => {
  318 + if (valid) {
  319 + let formData = new FormData();
  320 + let form = this.form;
  321 + //去掉params属性
  322 + delete form.params;
  323 + //先清空原有的附件
  324 + form.files = null;
  325 +
  326 +
  327 + this.fileEntityList.forEach(item => {
  328 + if (item.raw != null) {
  329 + formData.append('fileList', item.raw)
  330 + } else {
  331 + //将原有的附件拼接到form中
  332 + form.files = form.files !== null ? form.files + ";" + item.url : item.url;
  333 + }
  334 + })
  335 +
  336 + for (let key in form) {
  337 + formData.append(key, form[key] == null ? "" : form[key])
  338 + }
  339 +
  340 + if (this.form.id != null) {
  341 + updateDocumentData(formData).then(response => {
  342 + this.msgSuccess("修改成功");
  343 + this.open = false;
  344 + this.getList();
  345 + });
  346 + } else {
  347 + addDocumentData(formData).then(response => {
  348 + this.msgSuccess("新增成功");
  349 + this.open = false;
  350 + this.getList();
  351 + });
  352 + }
  353 + }
  354 + });
  355 + },
  356 + /** 删除按钮操作 */
  357 + handleDelete(row) {
  358 + const ids = row.id || this.ids;
  359 + this.$confirm('是否确认删除文件资料编号为"' + ids + '"的数据项?', "警告", {
  360 + confirmButtonText: "确定",
  361 + cancelButtonText: "取消",
  362 + type: "warning"
  363 + }).then(function () {
  364 + return delDocumentData(ids);
  365 + }).then(() => {
  366 + this.getList();
  367 + this.msgSuccess("删除成功");
  368 + })
  369 + },
  370 + /** 导出按钮操作 */
  371 + handleExport() {
  372 + const queryParams = this.queryParams;
  373 + this.$confirm('是否确认导出所有文件资料数据项?', "警告", {
  374 + confirmButtonText: "确定",
  375 + cancelButtonText: "取消",
  376 + type: "warning"
  377 + }).then(function () {
  378 + return exportDocumentData(queryParams);
  379 + }).then(response => {
  380 + this.download(response.msg);
  381 + })
  382 + },
  383 + /**
  384 + * 文件改变时,限制文件上传格式和大小
  385 + * 文件格式只能为docx/doc/pdf/png/jpeg/png/jpg
  386 + * 大小不超过20M
  387 + * */
  388 + fileChange(file, fileList) {
  389 + let count = 0;
  390 + for (let i = 0; i < fileList.length; i++) {
  391 + // console.log(fileList.length)
  392 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  393 + if (fileList[i].name == file.name) {
  394 + count++;
  395 + if (count == 2) {
  396 + this.$message({
  397 + message: '已存在此文件!',
  398 + type: 'warning'
  399 + });
  400 + for (let j = fileList.length; j > 0; j--) {
  401 + //如果存在此文件,去除新选择的重复文件
  402 + if (fileList[j - 1].name == file.name) {
  403 + fileList.splice(j - 1, 1);
  404 + i--;
  405 + return false;
  406 + }
  407 + }
  408 + }
  409 + }
  410 + }
  411 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  412 + //格式符合后判断大小
  413 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  414 + let max5M = file.size / 1024 / 1024 < 100;
  415 + if (!max5M) {
  416 + this.$message({
  417 + message: '上传文件大小不得超过100M!',
  418 + type: 'warning'
  419 + });
  420 + fileList = fileList.splice(fileList.length - 1, 1);
  421 + } else {
  422 + //符合条件后进行添加
  423 + this.fileEntityList = fileList
  424 + }
  425 + } else {
  426 + this.$message({
  427 + message: '上传文件只能是 jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx格式!',
  428 + type: 'warning'
  429 + });
  430 + fileList = fileList.splice(fileList.length - 1, 1);
  431 + }
  432 + },
  433 + // 删除文件
  434 + handleDeleteFile(index) {
  435 + this.fileEntityList.splice(index, 1);
  436 + },
  437 + /** 文件下载 */
  438 + tempDownload(row) {
  439 + let name = row.name;
  440 + let url = "";
  441 + if (row.raw != null) {
  442 + url = URL.createObjectURL(row.raw);
  443 + } else {
  444 + url = process.env.VUE_APP_BASE_API + row.url;
  445 + }
  446 + const a = document.createElement('a')
  447 + a.setAttribute('download', name)
  448 + a.setAttribute('target', '_blank')
  449 + a.setAttribute('href', url);
  450 + a.click()
  451 + },
  452 + createUrl(file) {
  453 + if (file.raw != null) {
  454 + return URL.createObjectURL(file.raw);
  455 + } else {
  456 + return process.env.VUE_APP_BASE_API + file.url;
  457 + }
  458 +
  459 + },
  460 + }
  461 +};
  462 +</script>
... ...
trash-ui/src/views/other/incorruptEducation/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 + <el-row :gutter="10" class="mb8">
  4 + <el-col :span="1.5">
  5 + <el-upload
  6 + ref="upload"
  7 + action=""
  8 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp"
  9 + :on-change="fileChange"
  10 + :auto-upload="false"
  11 + :show-file-list="false"
  12 + multiple
  13 + :file-list="file">
  14 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  15 + </el-upload>
  16 + </el-col>
  17 + <el-col :span="1.5">
  18 + <el-button size="small" type="primary" @click="file=[]">删除附件</el-button>
  19 + </el-col>
  20 + <el-col :span="1.5">
  21 + <el-button size="small" type="primary" @click="submitForm">提交</el-button>
  22 + </el-col>
  23 + </el-row>
  24 + <el-image v-if="file.length!=0" style=""
  25 + :src="createUrl(file[0])"
  26 + :preview-src-list="[createUrl(file[0])]"
  27 + :z-index="999">
  28 + </el-image>
  29 + </div>
  30 +</template>
  31 +
  32 +<script>
  33 +import {addIncorruptData, listIncorruptData} from "@/api/other/incorruptData";
  34 +
  35 +export default {
  36 + name: "incorruptEducation",
  37 + data() {
  38 + return {
  39 + file: [],
  40 + };
  41 + },
  42 + created() {
  43 + this.getList();
  44 + },
  45 + methods: {
  46 + /** 查询文件资料列表 */
  47 + getList() {
  48 + this.loading = true;
  49 + listIncorruptData("education").then(response => {
  50 + this.file = [{
  51 + url:response[0].filePath,
  52 + name:response[0].fileName,
  53 + }];
  54 + });
  55 + },
  56 + delFile(){
  57 + this.file=[];
  58 + },
  59 + /** 提交按钮 */
  60 + submitForm() {
  61 +
  62 + let formData = new FormData();
  63 + let form = {
  64 + files: null,
  65 + tableName: "education",
  66 + };
  67 +
  68 + this.file.forEach(item => {
  69 + if (item.raw != null) {
  70 + formData.append('files', item.raw)
  71 + } else {
  72 + //将原有的附件拼接到form中
  73 + form.files = form.files !== null ? form.files + ";" + item.url : item.url;
  74 + }
  75 + })
  76 +
  77 + for (let key in form) {
  78 + formData.append(key, form[key] == null ? "" : form[key])
  79 + }
  80 +
  81 + addIncorruptData(formData).then(response => {
  82 + this.msgSuccess("新增成功");
  83 + this.open = false;
  84 + this.getList();
  85 + });
  86 + },
  87 + /**
  88 + * 文件改变时,限制文件上传格式和大小
  89 + * 文件格式只能为docx/doc/pdf/png/jpeg/png/jpg
  90 + * 大小不超过20M
  91 + * */
  92 + fileChange(file, fileList) {
  93 + let count = 0;
  94 + if(fileList.length>1){
  95 + this.$message({
  96 + message: '只能上传一张图片!',
  97 + type: 'warning'
  98 + });
  99 + return false;
  100 + }
  101 + for (let i = 0; i < fileList.length; i++) {
  102 + // console.log(fileList.length)
  103 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  104 + if (fileList[i].name == file.name) {
  105 + count++;
  106 + if (count == 2) {
  107 + this.$message({
  108 + message: '已存在此文件!',
  109 + type: 'warning'
  110 + });
  111 + for (let j = fileList.length; j > 0; j--) {
  112 + //如果存在此文件,去除新选择的重复文件
  113 + if (fileList[j - 1].name == file.name) {
  114 + fileList.splice(j - 1, 1);
  115 + i--;
  116 + return false;
  117 + }
  118 + }
  119 + }
  120 + }
  121 + }
  122 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  123 + //格式符合后判断大小
  124 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp".indexOf(fileType) != -1) {
  125 + let max5M = file.size / 1024 / 1024 < 100;
  126 + if (!max5M) {
  127 + this.$message({
  128 + message: '上传文件大小不得超过100M!',
  129 + type: 'warning'
  130 + });
  131 + fileList = fileList.splice(fileList.length - 1, 1);
  132 + } else {
  133 + //符合条件后进行添加
  134 + this.file = fileList
  135 + }
  136 + } else {
  137 + this.$message({
  138 + message: '上传文件只能是 jpg,jpeg,png,gif,jfif,pjpeg,pjp格式!',
  139 + type: 'warning'
  140 + });
  141 + fileList = fileList.splice(fileList.length - 1, 1);
  142 + }
  143 + },
  144 + createUrl(file) {
  145 + if (file.raw != null) {
  146 + return URL.createObjectURL(file.raw);
  147 + } else {
  148 + return process.env.VUE_APP_BASE_API + file.url;
  149 + }
  150 +
  151 + },
  152 + }
  153 +};
  154 +</script>
... ...
trash-ui/src/views/other/incorruptGovernment/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 +
  4 +
  5 + <el-row :gutter="10" class="mb8">
  6 + <el-col :span="1.5">
  7 + <el-upload
  8 + ref="upload"
  9 + action=""
  10 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp"
  11 + :on-change="fileChange"
  12 + :auto-upload="false"
  13 + :show-file-list="false"
  14 + multiple
  15 + :file-list="file">
  16 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  17 + </el-upload>
  18 + </el-col>
  19 + <el-col :span="1.5">
  20 + <el-button size="small" type="primary" @click="file=[]">删除附件</el-button>
  21 + </el-col>
  22 + <el-col :span="1.5">
  23 + <el-button size="small" type="primary" @click="submitForm">提交</el-button>
  24 + </el-col>
  25 + </el-row>
  26 + <el-image v-if="file.length!=0" style=""
  27 + :src="createUrl(file[0])"
  28 + :preview-src-list="[createUrl(file[0])]"
  29 + :z-index="999">
  30 + </el-image>
  31 + </div>
  32 +</template>
  33 +
  34 +<script>
  35 +import {addIncorruptData, listIncorruptData} from "@/api/other/incorruptData";
  36 +
  37 +export default {
  38 + name: "incorruptGovernment",
  39 + data() {
  40 + return {
  41 + file: [],
  42 + };
  43 + },
  44 + created() {
  45 + this.getList();
  46 + },
  47 + methods: {
  48 + /** 查询文件资料列表 */
  49 + getList() {
  50 + this.loading = true;
  51 + listIncorruptData("government").then(response => {
  52 + this.file = [{
  53 + url:response[0].filePath,
  54 + name:response[0].fileName,
  55 + }];
  56 + });
  57 + },
  58 + delFile(){
  59 + this.file=[];
  60 + },
  61 + /** 提交按钮 */
  62 + submitForm() {
  63 +
  64 + let formData = new FormData();
  65 + let form = {
  66 + files: null,
  67 + tableName: "government",
  68 + };
  69 +
  70 + this.file.forEach(item => {
  71 + if (item.raw != null) {
  72 + formData.append('files', item.raw)
  73 + } else {
  74 + //将原有的附件拼接到form中
  75 + form.files = form.files !== null ? form.files + ";" + item.url : item.url;
  76 + }
  77 + })
  78 +
  79 + for (let key in form) {
  80 + formData.append(key, form[key] == null ? "" : form[key])
  81 + }
  82 +
  83 + addIncorruptData(formData).then(response => {
  84 + this.msgSuccess("新增成功");
  85 + this.open = false;
  86 + this.getList();
  87 + });
  88 + },
  89 + /**
  90 + * 文件改变时,限制文件上传格式和大小
  91 + * 文件格式只能为docx/doc/pdf/png/jpeg/png/jpg
  92 + * 大小不超过20M
  93 + * */
  94 + fileChange(file, fileList) {
  95 + let count = 0;
  96 + if(fileList.length>1){
  97 + this.$message({
  98 + message: '只能上传一张图片!',
  99 + type: 'warning'
  100 + });
  101 + return false;
  102 + }
  103 + for (let i = 0; i < fileList.length; i++) {
  104 + // console.log(fileList.length)
  105 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  106 + if (fileList[i].name == file.name) {
  107 + count++;
  108 + if (count == 2) {
  109 + this.$message({
  110 + message: '已存在此文件!',
  111 + type: 'warning'
  112 + });
  113 + for (let j = fileList.length; j > 0; j--) {
  114 + //如果存在此文件,去除新选择的重复文件
  115 + if (fileList[j - 1].name == file.name) {
  116 + fileList.splice(j - 1, 1);
  117 + i--;
  118 + return false;
  119 + }
  120 + }
  121 + }
  122 + }
  123 + }
  124 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  125 + //格式符合后判断大小
  126 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp".indexOf(fileType) != -1) {
  127 + let max5M = file.size / 1024 / 1024 < 100;
  128 + if (!max5M) {
  129 + this.$message({
  130 + message: '上传文件大小不得超过100M!',
  131 + type: 'warning'
  132 + });
  133 + fileList = fileList.splice(fileList.length - 1, 1);
  134 + } else {
  135 + //符合条件后进行添加
  136 + this.file = fileList
  137 + }
  138 + } else {
  139 + this.$message({
  140 + message: '上传文件只能是 jpg,jpeg,png,gif,jfif,pjpeg,pjp格式!',
  141 + type: 'warning'
  142 + });
  143 + fileList = fileList.splice(fileList.length - 1, 1);
  144 + }
  145 + },
  146 + createUrl(file) {
  147 + if (file.raw != null) {
  148 + return URL.createObjectURL(file.raw);
  149 + } else {
  150 + return process.env.VUE_APP_BASE_API + file.url;
  151 + }
  152 +
  153 + },
  154 + }
  155 +};
  156 +</script>
... ...
trash-ui/src/views/unit/businessUnit/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="88px">
  4 + <el-form-item label="企业名称" prop="name">
  5 + <el-input
  6 + v-model="queryParams.name"
  7 + placeholder="请输入企业名称"
  8 + clearable
  9 + size="small"
  10 + @keyup.enter.native="handleQuery"
  11 + />
  12 + </el-form-item>
  13 + <el-form-item label="所属区域" prop="registrationArea">
  14 + <el-select v-model="queryParams.registrationArea" placeholder="请输入注册地所在区域" style="width: 100%" clearable>
  15 + <el-option v-for="(area,index) in areas" :label="area.name" :value="area.name" :key="index"/>
  16 + </el-select>
  17 + </el-form-item>
  18 +
  19 + <el-form-item label="法人代表" prop="legalRepresentative">
  20 + <el-input
  21 + v-model="queryParams.legalRepresentative"
  22 + placeholder="请输入法人代表"
  23 + clearable
  24 + size="small"
  25 + @keyup.enter.native="handleQuery"
  26 + />
  27 + </el-form-item>
  28 + <el-form-item label="审批状态" prop="status">
  29 + <el-select v-model="queryParams.status" placeholder="请选择审批状态" clearable size="small">
  30 + <el-option label="审批中" value="0" />
  31 + <el-option label="审批通过" value="1" />
  32 + <el-option label="被驳回" value="2" />
  33 + </el-select>
  34 + </el-form-item>
  35 + <el-form-item>
  36 + <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  37 + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  38 + </el-form-item>
  39 + </el-form>
  40 +
  41 + <el-row :gutter="10" class="mb8">
  42 + <el-col :span="1.5">
  43 + <el-button
  44 + type="primary"
  45 + icon="el-icon-plus"
  46 + size="mini"
  47 + @click="handleAdd"
  48 + v-hasPermi="['unit:enterprise:add']"
  49 + >新增</el-button>
  50 + </el-col>
  51 + <el-col :span="1.5">
  52 + <el-button
  53 + type="success"
  54 + icon="el-icon-edit"
  55 + size="mini"
  56 + :disabled="single"
  57 + @click="handleUpdate"
  58 + v-hasPermi="['unit:enterprise:edit']"
  59 + >修改</el-button>
  60 + </el-col>
  61 + <el-col :span="1.5">
  62 + <el-button
  63 + type="danger"
  64 + icon="el-icon-delete"
  65 + size="mini"
  66 + :disabled="multiple"
  67 + @click="handleDelete"
  68 + v-hasPermi="['unit:enterprise:remove']"
  69 + >删除</el-button>
  70 + </el-col>
  71 + <el-col :span="1.5">
  72 + <el-button
  73 + type="warning"
  74 + icon="el-icon-download"
  75 + size="mini"
  76 + @click="handleExport"
  77 + v-hasPermi="['unit:enterprise:export']"
  78 + >导出</el-button>
  79 + </el-col>
  80 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  81 + </el-row>
  82 +
  83 + <el-table v-loading="loading" :data="enterpriseList" @selection-change="handleSelectionChange">
  84 + <el-table-column type="selection" width="55" align="center" />
  85 + <el-table-column type="index" width="55" align="center" label="序号"/>
  86 + <el-table-column label="企业名称" align="center" prop="name" />
  87 + <el-table-column label="简称" align="center" prop="abbreviation" />
  88 + <el-table-column label="所属区域" align="center" prop="registrationArea" />
  89 + <el-table-column label="车辆数" align="center" prop="carNumber" />
  90 + <el-table-column label="法人代表" align="center" prop="legalRepresentative" />
  91 + <el-table-column label="联系方式" align="center" prop="legalRepresentativePhone" />
  92 + <el-table-column label="审批状态" align="center" prop="status">
  93 + <template slot-scope="scope">
  94 + <span>{{ parseStatus(scope.row.status) }}</span>
  95 + </template>
  96 + </el-table-column>
  97 + <el-table-column label="信用状态" align="center" prop="creditStatus" />
  98 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  99 + <template slot-scope="scope">
  100 + <el-button
  101 + size="mini"
  102 + type="text"
  103 + icon="el-icon-edit"
  104 + @click="handleUpdate(scope.row)"
  105 + v-hasPermi="['unit:enterprise:edit']"
  106 + >修改</el-button>
  107 + <el-button
  108 + size="mini"
  109 + type="text"
  110 + icon="el-icon-delete"
  111 + @click="handleDelete(scope.row)"
  112 + v-hasPermi="['unit:enterprise:remove']"
  113 + >删除</el-button>
  114 + </template>
  115 + </el-table-column>
  116 + </el-table>
  117 +
  118 + <pagination
  119 + v-show="total>0"
  120 + :total="total"
  121 + :page.sync="queryParams.pageNum"
  122 + :limit.sync="queryParams.pageSize"
  123 + @pagination="getList"
  124 + />
  125 +
  126 + </div>
  127 +</template>
  128 +
  129 +<script>
  130 +import { listEnterprise, getEnterprise, delEnterprise, addEnterprise, updateEnterprise, exportEnterprise } from "@/api/unit/enterprise";
  131 +import {getAreaList} from "@/api/casefile/remoteServer";
  132 +
  133 +export default {
  134 + name: "Enterprise",
  135 + data() {
  136 + return {
  137 + // 遮罩层
  138 + loading: true,
  139 + // 选中数组
  140 + ids: [],
  141 + // 非单个禁用
  142 + single: true,
  143 + // 非多个禁用
  144 + multiple: true,
  145 + // 显示搜索条件
  146 + showSearch: true,
  147 + // 总条数
  148 + total: 0,
  149 + // 运输企业管理表格数据
  150 + enterpriseList: [],
  151 + // 弹出层标题
  152 + title: "",
  153 + // 是否显示弹出层
  154 + open: false,
  155 + // 查询参数
  156 + queryParams: {
  157 + pageNum: 1,
  158 + pageSize: 10,
  159 + name: null,
  160 + abbreviation: null,
  161 + registrationArea: null,
  162 + transportPermissionDate: null,
  163 + enterDate: null,
  164 + businessLicenseDate: null,
  165 + officeAddress: null,
  166 + parkingLotLocation: null,
  167 + parkingArea: null,
  168 + carNumber: null,
  169 + safetyManagerName: null,
  170 + safetyManagerPhone: null,
  171 + socialUniformCreditCodeNumber: null,
  172 + legalRepresentative: null,
  173 + legalRepresentativePhone: null,
  174 + safetyPeopleName: null,
  175 + transportPermission: null,
  176 + enterpriseBusinessLicense: null,
  177 + safetyOfficerQualificationCertificate: null,
  178 + safetyCertificate: null,
  179 + carParkPanorama: null,
  180 + businessUnit: null,
  181 + status: null,
  182 + parentId: null,
  183 + companyType: null,
  184 + creditStatus: null,
  185 + qrCode: null
  186 + },
  187 + // 表单参数
  188 + form: {},
  189 + // 表单校验
  190 + rules: {
  191 + },
  192 + areas: []
  193 + };
  194 + },
  195 + created() {
  196 + getAreaList().then(res => {
  197 + this.areas = res.data;
  198 + });
  199 + this.getList();
  200 + },
  201 + watch:{
  202 + '$route.query.unitRefresh':'getList'
  203 + },
  204 + methods: {
  205 + /** 查询运输企业管理列表 */
  206 + getList() {
  207 + this.loading = true;
  208 + this.queryParams.companyType = "0";
  209 + listEnterprise(this.queryParams).then(response => {
  210 + this.enterpriseList = response.rows;
  211 + this.total = response.total;
  212 + this.loading = false;
  213 + });
  214 + },
  215 + /** 搜索按钮操作 */
  216 + handleQuery() {
  217 + this.queryParams.pageNum = 1;
  218 + this.getList();
  219 + },
  220 + /** 重置按钮操作 */
  221 + resetQuery() {
  222 + this.resetForm("queryForm");
  223 + this.handleQuery();
  224 + },
  225 + // 多选框选中数据
  226 + handleSelectionChange(selection) {
  227 + this.ids = selection.map(item => item.id)
  228 + this.single = selection.length!==1
  229 + this.multiple = !selection.length
  230 + },
  231 + /** 新增按钮操作 */
  232 + handleAdd() {
  233 + this.$tab.openPage("新增经营单位","/unit/info",{unitRefresh:0});
  234 + },
  235 + /** 修改按钮操作 */
  236 + handleUpdate(row) {
  237 + const id = row.id || this.ids
  238 + this.$tab.openPage("修改经营单位","/unit/infoEdit",{unitId: id,unitRefresh:0});
  239 + },
  240 + /** 删除按钮操作 */
  241 + handleDelete(row) {
  242 + const ids = row.id || this.ids;
  243 + this.$confirm('是否确认删除运输企业管理编号为"' + ids + '"的数据项?', "警告", {
  244 + confirmButtonText: "确定",
  245 + cancelButtonText: "取消",
  246 + type: "warning"
  247 + }).then(function() {
  248 + return delEnterprise(ids);
  249 + }).then(() => {
  250 + this.getList();
  251 + this.msgSuccess("删除成功");
  252 + })
  253 + },
  254 + /** 导出按钮操作 */
  255 + handleExport() {
  256 + const queryParams = this.queryParams;
  257 + this.$confirm('是否确认导出所有运输企业管理数据项?', "警告", {
  258 + confirmButtonText: "确定",
  259 + cancelButtonText: "取消",
  260 + type: "warning"
  261 + }).then(function() {
  262 + return exportEnterprise(queryParams);
  263 + }).then(response => {
  264 + this.download(response.msg);
  265 + })
  266 + }
  267 + }
  268 +};
  269 +</script>
... ...
trash-ui/src/views/unit/businessUnit/info.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 +
  4 + <!-- 添加或修改处理场所管理对话框 -->
  5 + <h3>
  6 + 基础信息
  7 + </h3>
  8 + <el-form ref="form" :model="form" :rules="rules" label-width="80px" label-position="top">
  9 + <el-row :gutter="30">
  10 + <el-col :span="7">
  11 + <el-form-item label="企业名称" prop="name">
  12 + <el-input v-model="form.name" placeholder="请输入企业名称" />
  13 + </el-form-item>
  14 + </el-col>
  15 + <el-col :span="7">
  16 + <el-form-item label="简称" prop="abbreviation">
  17 + <el-input v-model="form.abbreviation" placeholder="请输入简称" />
  18 + </el-form-item>
  19 + </el-col>
  20 + <el-col :span="7">
  21 + <el-form-item label="注册地所在区域" prop="registrationArea">
  22 + <el-select v-model="form.registrationArea" placeholder="请输入注册地所在区域" style="width: 100%">
  23 + <el-option v-for="(area,index) in areas" :label="area.name" :value="area.name" :key="index"/>
  24 + </el-select>
  25 + </el-form-item>
  26 + </el-col>
  27 + </el-row>
  28 + <el-row :gutter="30">
  29 + <el-col :span="7">
  30 + <el-form-item label="企业道路运输经营许可证有效期" prop="transportPermissionDate">
  31 + <el-date-picker clearable size="small" style="width: 100%;"
  32 + v-model="form.transportPermissionDate"
  33 + type="date"
  34 + value-format="yyyy-MM-dd"
  35 + placeholder="选择企业道路运输经营许可证有效期">
  36 + </el-date-picker>
  37 + </el-form-item>
  38 + </el-col>
  39 + <el-col :span="7">
  40 + <el-form-item label="企业入市时间" prop="enterDate">
  41 + <el-date-picker clearable size="small" style="width: 100%;"
  42 + v-model="form.enterDate"
  43 + type="date"
  44 + value-format="yyyy-MM-dd"
  45 + placeholder="选择企业入市时间">
  46 + </el-date-picker>
  47 + </el-form-item>
  48 + </el-col>
  49 + <el-col :span="7">
  50 + <el-form-item label="企业营业执照有效期" prop="businessLicenseDate">
  51 + <el-date-picker clearable size="small" style="width: 100%;"
  52 + v-model="form.businessLicenseDate"
  53 + type="date"
  54 + value-format="yyyy-MM-dd"
  55 + placeholder="选择企业营业执照有效期">
  56 + </el-date-picker>
  57 + </el-form-item>
  58 + </el-col>
  59 + </el-row>
  60 + <el-row :gutter="30">
  61 + <el-col :span="7">
  62 + <el-form-item label="办公地址" prop="officeAddress">
  63 + <el-input v-model="form.officeAddress" placeholder="请输入内容" />
  64 + </el-form-item>
  65 + </el-col>
  66 + <el-col :span="7">
  67 + <el-form-item label="停车场位置" prop="parkingLotLocation">
  68 + <el-input v-model="form.parkingLotLocation" placeholder="请输入内容" />
  69 + </el-form-item>
  70 + </el-col>
  71 + <el-col :span="7">
  72 + <el-form-item label="停车场面积(m²)" prop="parkingArea">
  73 + <el-input v-model="form.parkingArea" placeholder="请输入停车场面积" />
  74 + </el-form-item>
  75 + </el-col>
  76 + </el-row>
  77 + <el-row :gutter="30">
  78 + <el-col :span="7">
  79 + <el-form-item label="企业安全负责人姓名及联系方式" prop="safetyManagerName">
  80 + <el-row>
  81 + <el-col :span="6">
  82 + <el-input v-model="form.safetyManagerName" placeholder="姓名" />
  83 + </el-col>
  84 + <el-col :span="18">
  85 + <el-input v-model="form.safetyManagerPhone" placeholder="联系方式" :maxlength="11" show-word-limit/>
  86 + </el-col>
  87 + </el-row>
  88 + </el-form-item>
  89 + </el-col>
  90 + <el-col :span="7">
  91 + <el-form-item label="社会统一信用代码编号" prop="socialUniformCreditCodeNumber">
  92 + <el-input v-model="form.socialUniformCreditCodeNumber" placeholder="请输入社会统一信用代码编号" />
  93 + </el-form-item>
  94 + </el-col>
  95 + <el-col :span="7">
  96 + <el-form-item label="法人代表及联系方式" prop="legalRepresentative">
  97 + <el-row>
  98 + <el-col :span="6">
  99 + <el-input v-model="form.legalRepresentative" placeholder="姓名" />
  100 + </el-col>
  101 + <el-col :span="18">
  102 + <el-input v-model="form.legalRepresentativePhone" placeholder="联系方式" :maxlength="11" show-word-limit/>
  103 + </el-col>
  104 + </el-row>
  105 + </el-form-item>
  106 + </el-col>
  107 + </el-row>
  108 +
  109 + <el-row :gutter="30">
  110 + <el-col :span="7">
  111 + <el-form-item label="安全管理人员" prop="safetyPeopleName">
  112 + <el-input v-model="form.safetyPeopleName" placeholder="请输入安全管理人员" />
  113 + </el-form-item>
  114 + </el-col>
  115 + <el-col :span="14">
  116 + <el-form-item label="备注" prop="remark">
  117 + <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
  118 + </el-form-item>
  119 + </el-col>
  120 + </el-row>
  121 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  122 + <el-col :span="3">
  123 + <div class="upload_lable">
  124 + 企业道路运输经营许可证
  125 + <el-upload
  126 + ref="upload"
  127 + action=""
  128 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  129 + :on-change="fileChange"
  130 + :auto-upload="false"
  131 + :show-file-list="false"
  132 + multiple
  133 + :file-list="transportPermission">
  134 +
  135 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  136 + </el-upload>
  137 + </div>
  138 + </el-col>
  139 + <el-col :span="21">
  140 + <div class="upload_btn">
  141 + <div v-for="(item,index) in transportPermission">
  142 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  143 + <div class="upload_close" @click="transportPermission.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  144 + <el-image
  145 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  146 + :src="createUrl(item)"
  147 + :preview-src-list="[createUrl(item)]"
  148 + :z-index="999">
  149 + </el-image>
  150 + </div>
  151 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  152 + <div class="upload_close_file" @click="transportPermission.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  153 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  154 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  155 + </div>
  156 + </div>
  157 + </div>
  158 + </el-col>
  159 + </el-row>
  160 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  161 + <el-col :span="3">
  162 + <div class="upload_lable">
  163 + 企业营业执照
  164 + <el-upload
  165 + ref="upload"
  166 + action=""
  167 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  168 + :on-change="fileChange1"
  169 + :auto-upload="false"
  170 + :show-file-list="false"
  171 + multiple
  172 + :file-list="enterpriseBusinessLicense">
  173 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  174 + </el-upload>
  175 + </div>
  176 + </el-col>
  177 + <el-col :span="21">
  178 + <div class="upload_btn">
  179 + <div v-for="(item,index) in enterpriseBusinessLicense">
  180 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  181 + <div class="upload_close" @click="enterpriseBusinessLicense.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  182 + <el-image
  183 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  184 + :src="createUrl(item)"
  185 + :preview-src-list="[createUrl(item)]"
  186 + :z-index="999">
  187 + </el-image>
  188 + </div>
  189 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  190 + <div class="upload_close_file" @click="enterpriseBusinessLicense.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  191 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  192 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  193 + </div>
  194 + </div>
  195 + </div>
  196 + </el-col>
  197 + </el-row>
  198 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  199 + <el-col :span="3">
  200 + <div class="upload_lable">
  201 + 安全员考核合格证明
  202 + <el-upload
  203 + ref="upload"
  204 + action=""
  205 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  206 + :on-change="fileChange2"
  207 + :auto-upload="false"
  208 + :show-file-list="false"
  209 + multiple
  210 + :file-list="safetyOfficerQualificationCertificate">
  211 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  212 + </el-upload>
  213 + </div>
  214 + </el-col>
  215 + <el-col :span="21">
  216 + <div class="upload_btn">
  217 + <div v-for="(item,index) in safetyOfficerQualificationCertificate">
  218 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  219 + <div class="upload_close" @click="safetyOfficerQualificationCertificate.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  220 + <el-image
  221 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  222 + :src="createUrl(item)"
  223 + :preview-src-list="[createUrl(item)]"
  224 + :z-index="999">
  225 + </el-image>
  226 + </div>
  227 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  228 + <div class="upload_close_file" @click="safetyOfficerQualificationCertificate.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  229 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  230 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  231 + </div>
  232 + </div>
  233 + </div>
  234 + </el-col>
  235 + </el-row>
  236 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  237 + <el-col :span="3">
  238 + <div class="upload_lable">
  239 + 企业负责人安全考核证
  240 + <el-upload
  241 + ref="upload"
  242 + action=""
  243 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  244 + :on-change="fileChange3"
  245 + :auto-upload="false"
  246 + :show-file-list="false"
  247 + multiple
  248 + :file-list="safetyCertificate">
  249 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  250 + </el-upload>
  251 + </div>
  252 + </el-col>
  253 + <el-col :span="21">
  254 + <div class="upload_btn">
  255 + <div v-for="(item,index) in safetyCertificate">
  256 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  257 + <div class="upload_close" @click="safetyCertificate.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  258 + <el-image
  259 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  260 + :src="createUrl(item)"
  261 + :preview-src-list="[createUrl(item)]"
  262 + :z-index="999">
  263 + </el-image>
  264 + </div>
  265 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  266 + <div class="upload_close_file" @click="safetyCertificate.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  267 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  268 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  269 + </div>
  270 + </div>
  271 + </div>
  272 + </el-col>
  273 + </el-row>
  274 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  275 + <el-col :span="3">
  276 + <div class="upload_lable">
  277 + 停车场全景图
  278 + <el-upload
  279 + ref="upload"
  280 + action=""
  281 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  282 + :on-change="fileChange4"
  283 + :auto-upload="false"
  284 + :show-file-list="false"
  285 + multiple
  286 + :file-list="carParkPanorama">
  287 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  288 + </el-upload>
  289 + </div>
  290 + </el-col>
  291 + <el-col :span="21">
  292 + <div class="upload_btn">
  293 + <div v-for="(item,index) in carParkPanorama">
  294 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  295 + <div class="upload_close" @click="carParkPanorama.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  296 + <el-image
  297 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  298 + :src="createUrl(item)"
  299 + :preview-src-list="[createUrl(item)]"
  300 + :z-index="999">
  301 + </el-image>
  302 + </div>
  303 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  304 + <div class="upload_close_file" @click="carParkPanorama.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  305 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  306 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  307 + </div>
  308 + </div>
  309 + </div>
  310 + </el-col>
  311 + </el-row>
  312 + <!-- <el-form-item label="" prop="environmentalApproval">-->
  313 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  314 + <!-- </el-form-item>-->
  315 + <!-- <el-form-item label="" prop="authorization">-->
  316 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  317 + <!-- </el-form-item>-->
  318 + <!-- <el-form-item label="" prop="otherInformation">-->
  319 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  320 + <!-- </el-form-item>-->
  321 + <!-- <el-form-item label="运输企业" prop="companyIds">-->
  322 + <!-- <el-input v-model="form.companyIds" placeholder="请输入运输企业" />-->
  323 + <!-- </el-form-item>-->
  324 + <!-- <el-form-item label="审批状态,0=审批中,1=审批通过,2=被驳回">-->
  325 + <!-- <el-radio-group v-model="form.status">-->
  326 + <!-- <el-radio label="1">请选择字典生成</el-radio>-->
  327 + <!-- </el-radio-group>-->
  328 + <!-- </el-form-item>-->
  329 + <!-- <el-form-item label="二维码" prop="qrCode">-->
  330 + <!-- <el-input v-model="form.qrCode" placeholder="请输入二维码" />-->
  331 + <!-- </el-form-item>-->
  332 + </el-form>
  333 + <div slot="footer" class="dialog-footer" style="margin-top: 20px">
  334 + <el-button type="primary" @click="submitForm">确 定</el-button>
  335 + <el-button @click="cancel">取 消</el-button>
  336 + </div>
  337 + </div>
  338 +</template>
  339 +
  340 +<script>
  341 +import { listEnterprise, getEnterprise, delEnterprise, addEnterprise, updateEnterprise, exportEnterprise } from "@/api/unit/enterprise";
  342 +import Treeselect from "@riophae/vue-treeselect";
  343 +import '@riophae/vue-treeselect/dist/vue-treeselect.css'
  344 +import {getAreaList} from "@/api/casefile/remoteServer";
  345 +
  346 +export default {
  347 + name: "DisposalSite",
  348 + components: {Treeselect},
  349 + data() {
  350 + return {
  351 + // 遮罩层
  352 + loading: true,
  353 + // 选中数组
  354 + ids: [],
  355 + // 非单个禁用
  356 + single: true,
  357 + // 非多个禁用
  358 + multiple: true,
  359 + // 显示搜索条件
  360 + showSearch: true,
  361 + // 总条数
  362 + total: 0,
  363 + // 处理场所管理表格数据
  364 + disposalSiteList: [],
  365 + // 弹出层标题
  366 + title: "",
  367 + // 是否显示弹出层
  368 + open: false,
  369 + // 表单参数
  370 + form: {},
  371 + // 表单校验
  372 + rules: {
  373 + name: [
  374 + {required: true, message: "请输入企业名称", trigger: "blur"}
  375 + ],
  376 + abbreviation: [
  377 + {required: true, message: "请输入简称", trigger: "blur"}
  378 + ],
  379 + registrationArea: [
  380 + {required: true, message: "请输入注册地所在区域", trigger: "blur"}
  381 + ],
  382 + transportPermissionDate: [
  383 + {required: true, message: "请选择企业道路运输经营许可证有效期", trigger: "blur"}
  384 + ],
  385 + enterDate: [
  386 + {required: true, message: "请选择企业入市时间", trigger: "blur"}
  387 + ],
  388 + businessLicenseDate: [
  389 + {required: true, message: "请选择企业营业执照有效期", trigger: "blur"}
  390 + ],
  391 + officeAddress: [
  392 + {required: true, message: "请输入办公地址", trigger: "blur"}
  393 + ],
  394 + parkingLotLocation: [
  395 + {required: true, message: "请输入停车场位置", trigger: "blur"}
  396 + ],
  397 + parkingArea: [
  398 + {required: true, message: "请输入停车场面积", trigger: "blur"},
  399 + {pattern: /^\d+(\.\d+)?$/, message: "只能输入正数和小数", trigger: "blur"}
  400 + ],
  401 + safetyManagerName: [
  402 + {required: true, message: "请输入企业安全负责人姓名", trigger: "blur"}
  403 + ],
  404 + socialUniformCreditCodeNumber: [
  405 + {required: true, message: "请输入社会统一信用代码编号", trigger: "blur"}
  406 + ],
  407 + legalRepresentative: [
  408 + {required: true, message: "请输入法人代表", trigger: "blur"}
  409 + ],
  410 + safetyPeopleName: [
  411 + {required: true, message: "请输入安全管理人员", trigger: "blur"}
  412 + ],
  413 + },
  414 + areas:[],
  415 + // 企业道路运输经营许可证
  416 + transportPermission:[],
  417 + // 企业营业执照
  418 + enterpriseBusinessLicense:[],
  419 + // 安全员考核合格证明
  420 + safetyOfficerQualificationCertificate:[],
  421 + // 企业负责人安全考核证
  422 + safetyCertificate:[],
  423 + // 停车场全景图
  424 + carParkPanorama:[],
  425 + };
  426 + },
  427 + created() {
  428 + getAreaList().then(res => {
  429 + this.areas = res.data;
  430 + });
  431 + this.initData();
  432 + },
  433 + watch: {
  434 + '$route.query.unitId': 'initData'
  435 + },
  436 + methods: {
  437 + reset(){
  438 + this.form = {};
  439 + this.transportPermission = [];
  440 + this.enterpriseBusinessLicense = [];
  441 + this.safetyOfficerQualificationCertificate = [];
  442 + this.safetyCertificate = [];
  443 + this.carParkPanorama = [];
  444 + },
  445 + initData(){
  446 + this.reset();
  447 + let id = this.$route.query.unitId;
  448 + if(id!=null){
  449 + getEnterprise(id).then(response => {
  450 + this.form = response.data;
  451 + //将附件转换为前端可视化数组
  452 + if(this.form.transportPermission!=null&&this.form.transportPermission!==""){
  453 + let approvalDocument = this.form.transportPermission.split(";");
  454 + approvalDocument.map(item=>{
  455 + let name = item.substring(item.lastIndexOf("/")+1);
  456 + this.transportPermission.push({name:name,url:item})
  457 + })
  458 + }
  459 + if(this.form.enterpriseBusinessLicense!=null&&this.form.enterpriseBusinessLicense!==""){
  460 + let approvalData = this.form.enterpriseBusinessLicense.split(";");
  461 + approvalData.map(item=>{
  462 + let name = item.substring(item.lastIndexOf("/")+1);
  463 + this.enterpriseBusinessLicense.push({name:name,url:item})
  464 + })
  465 + }
  466 + if(this.form.safetyOfficerQualificationCertificate!=null&&this.form.safetyOfficerQualificationCertificate!==""){
  467 + let scenePhoto = this.form.safetyOfficerQualificationCertificate.split(";");
  468 + scenePhoto.map(item=>{
  469 + let name = item.substring(item.lastIndexOf("/")+1);
  470 + this.safetyOfficerQualificationCertificate.push({name:name,url:item})
  471 + })
  472 + }
  473 + if(this.form.safetyCertificate!=null&&this.form.safetyCertificate!==""){
  474 + let carWashingFacilitiesImage = this.form.safetyCertificate.split(";");
  475 + carWashingFacilitiesImage.map(item=>{
  476 + let name = item.substring(item.lastIndexOf("/")+1);
  477 + this.safetyCertificate.push({name:name,url:item})
  478 + })
  479 + }
  480 + if(this.form.carParkPanorama!=null&&this.form.carParkPanorama!==""){
  481 + let safetyAssessmentReport = this.form.carParkPanorama.split(";");
  482 + safetyAssessmentReport.map(item=>{
  483 + let name = item.substring(item.lastIndexOf("/")+1);
  484 + this.carParkPanorama.push({name:name,url:item})
  485 + })
  486 + }
  487 + });
  488 + }
  489 + },
  490 + createUrl(file){
  491 + if(file.raw!=null){
  492 + return URL.createObjectURL(file.raw);
  493 + }else{
  494 + return process.env.VUE_APP_BASE_API + file.url;
  495 + }
  496 +
  497 + },
  498 + tempDownload(row){
  499 + let name = row.name;
  500 + let url = "";
  501 + if(row.raw!=null){
  502 + url = URL.createObjectURL(row.raw);
  503 + }else{
  504 + url = process.env.VUE_APP_BASE_API + row.url;
  505 + }
  506 + const a = document.createElement('a')
  507 + a.setAttribute('download', name)
  508 + a.setAttribute('target', '_blank')
  509 + a.setAttribute('href', url);
  510 + a.click()
  511 + },
  512 + // 取消按钮
  513 + cancel() {
  514 + this.$tab.closePage({path:"/unit/info"}).then(() => {
  515 + this.$tab.openPage("经营单位管理", "/tool/unit",{unitRefresh:1})
  516 + })
  517 + },
  518 + /** 提交按钮 */
  519 + submitForm() {
  520 + this.$refs["form"].validate(valid => {
  521 + if (valid) {
  522 + let phoneTest = /^1[3456789]\d{9}$/;
  523 + if(phoneTest.test(this.form.safetyManagerPhone)===false){
  524 + this.msgError("请输入正确的企业安全负责人联系方式");
  525 + return false;
  526 + }
  527 + if(phoneTest.test(this.form.legalRepresentativePhone)===false){
  528 + this.msgError("请输入正确的法人代表联系方式");
  529 + return false;
  530 + }
  531 + let formData = new FormData();
  532 + let form = this.form;
  533 + //去掉params属性
  534 + delete form.params;
  535 +
  536 + //先清空原有的附件
  537 + form.transportPermission = null;
  538 + form.enterpriseBusinessLicense = null;
  539 + form.safetyOfficerQualificationCertificate = null;
  540 + form.safetyCertificate = null;
  541 + form.carParkPanorama = null;
  542 + form.companyType = "0";
  543 +
  544 + this.transportPermission.forEach(item => {
  545 + if (item.raw != null) {
  546 + formData.append('transportPermissionFiles', item.raw)
  547 + }else{
  548 + //将原有的附件拼接到form中
  549 + form.transportPermission = form.transportPermission!==null?form.transportPermission+";"+item.url:item.url;
  550 + }
  551 + })
  552 +
  553 + this.enterpriseBusinessLicense.forEach(item => {
  554 + if (item.raw != null) {
  555 + formData.append('enterpriseBusinessLicenseFiles', item.raw)
  556 + }else{
  557 + //将原有的附件拼接到form中
  558 + form.enterpriseBusinessLicense = form.enterpriseBusinessLicense!==null?form.enterpriseBusinessLicense+";"+item.url:item.url;
  559 + }
  560 + })
  561 + this.safetyOfficerQualificationCertificate.forEach(item => {
  562 + if (item.raw != null) {
  563 + formData.append('safetyOfficerQualificationCertificateFiles', item.raw)
  564 + }else{
  565 + //将原有的附件拼接到form中
  566 + form.safetyOfficerQualificationCertificate = form.safetyOfficerQualificationCertificate!==null?form.safetyOfficerQualificationCertificate+";"+item.url:item.url;
  567 + }
  568 + })
  569 + this.safetyCertificate.forEach(item => {
  570 + if (item.raw != null) {
  571 + formData.append('safetyCertificateFiles', item.raw)
  572 + }else{
  573 + //将原有的附件拼接到form中
  574 + form.safetyCertificate = form.safetyCertificate!==null?form.safetyCertificate+";"+item.url:item.url;
  575 + }
  576 + })
  577 + this.carParkPanorama.forEach(item => {
  578 + if (item.raw != null) {
  579 + formData.append('carParkPanoramaFiles', item.raw)
  580 + }else{
  581 + //将原有的附件拼接到form中
  582 + form.carParkPanorama = form.carParkPanorama!==null?form.carParkPanorama+";"+item.url:item.url;
  583 + }
  584 + })
  585 + for (let key in form) {
  586 + formData.append(key, form[key] == null ? "" : form[key])
  587 + }
  588 + if (this.form.id != null) {
  589 + updateEnterprise(formData).then(response => {
  590 + this.msgSuccess("修改成功");
  591 + this.$tab.closePage({path:"/unit/infoEdit"}).then(() => {
  592 + this.$tab.openPage("经营单位管理", "/tool/unit",{unitRefresh:1})
  593 + })
  594 + });
  595 + } else {
  596 + addEnterprise(formData).then(response => {
  597 + this.msgSuccess("新增成功");
  598 + this.$tab.closePage({path:"/unit/info"}).then(() => {
  599 + this.$tab.openPage("经营单位管理", "/tool/unit",{unitRefresh:1})
  600 + })
  601 + });
  602 + }
  603 + }
  604 + });
  605 + },
  606 + /**
  607 + * 文件改变时,限制文件上传格式和大小
  608 + * 文件格式只能为docx/doc/pdf/png/jpeg/png/jpg
  609 + * 大小不超过20M
  610 + * */
  611 + fileChange(file, fileList) {
  612 + let count = 0;
  613 + for (let i = 0; i < fileList.length; i++) {
  614 + // console.log(fileList.length)
  615 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  616 + if (fileList[i].name == file.name) {
  617 + count++;
  618 + if (count == 2) {
  619 + this.$message({
  620 + message: '已存在此文件!',
  621 + type: 'warning'
  622 + });
  623 + for (let j = fileList.length; j > 0; j--) {
  624 + //如果存在此文件,去除新选择的重复文件
  625 + if (fileList[j - 1].name == file.name) {
  626 + fileList.splice(j - 1, 1);
  627 + i--;
  628 + return false;
  629 + }
  630 + }
  631 + }
  632 + }
  633 + }
  634 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  635 + //格式符合后判断大小
  636 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  637 + let max5M = file.size / 1024 / 1024 < 100;
  638 + if (!max5M) {
  639 + this.$message({
  640 + message: '上传文件大小不得超过100M!',
  641 + type: 'warning'
  642 + });
  643 + fileList = fileList.splice(fileList.length - 1, 1);
  644 + } else {
  645 + //符合条件后进行添加
  646 + this.transportPermission = fileList
  647 + }
  648 + } else {
  649 + this.$message({
  650 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  651 + type: 'warning'
  652 + });
  653 + fileList = fileList.splice(fileList.length - 1, 1);
  654 + }
  655 + },
  656 + fileChange1(file, fileList) {
  657 + let count = 0;
  658 + for (let i = 0; i < fileList.length; i++) {
  659 + // console.log(fileList.length)
  660 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  661 + if (fileList[i].name == file.name) {
  662 + count++;
  663 + if (count == 2) {
  664 + this.$message({
  665 + message: '已存在此文件!',
  666 + type: 'warning'
  667 + });
  668 + for (let j = fileList.length; j > 0; j--) {
  669 + //如果存在此文件,去除新选择的重复文件
  670 + if (fileList[j - 1].name == file.name) {
  671 + fileList.splice(j - 1, 1);
  672 + i--;
  673 + return false;
  674 + }
  675 + }
  676 + }
  677 + }
  678 + }
  679 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  680 + //格式符合后判断大小
  681 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  682 + let max5M = file.size / 1024 / 1024 < 100;
  683 + if (!max5M) {
  684 + this.$message({
  685 + message: '上传文件大小不得超过100M!',
  686 + type: 'warning'
  687 + });
  688 + fileList = fileList.splice(fileList.length - 1, 1);
  689 + } else {
  690 + //符合条件后进行添加
  691 + this.enterpriseBusinessLicense = fileList
  692 + }
  693 + } else {
  694 + this.$message({
  695 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  696 + type: 'warning'
  697 + });
  698 + fileList = fileList.splice(fileList.length - 1, 1);
  699 + }
  700 + },
  701 + fileChange2(file, fileList) {
  702 + let count = 0;
  703 + for (let i = 0; i < fileList.length; i++) {
  704 + // console.log(fileList.length)
  705 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  706 + if (fileList[i].name == file.name) {
  707 + count++;
  708 + if (count == 2) {
  709 + this.$message({
  710 + message: '已存在此文件!',
  711 + type: 'warning'
  712 + });
  713 + for (let j = fileList.length; j > 0; j--) {
  714 + //如果存在此文件,去除新选择的重复文件
  715 + if (fileList[j - 1].name == file.name) {
  716 + fileList.splice(j - 1, 1);
  717 + i--;
  718 + return false;
  719 + }
  720 + }
  721 + }
  722 + }
  723 + }
  724 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  725 + //格式符合后判断大小
  726 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  727 + let max5M = file.size / 1024 / 1024 < 100;
  728 + if (!max5M) {
  729 + this.$message({
  730 + message: '上传文件大小不得超过100M!',
  731 + type: 'warning'
  732 + });
  733 + fileList = fileList.splice(fileList.length - 1, 1);
  734 + } else {
  735 + //符合条件后进行添加
  736 + this.safetyOfficerQualificationCertificate = fileList
  737 + }
  738 + } else {
  739 + this.$message({
  740 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  741 + type: 'warning'
  742 + });
  743 + fileList = fileList.splice(fileList.length - 1, 1);
  744 + }
  745 + },
  746 + fileChange3(file, fileList) {
  747 + let count = 0;
  748 + for (let i = 0; i < fileList.length; i++) {
  749 + // console.log(fileList.length)
  750 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  751 + if (fileList[i].name == file.name) {
  752 + count++;
  753 + if (count == 2) {
  754 + this.$message({
  755 + message: '已存在此文件!',
  756 + type: 'warning'
  757 + });
  758 + for (let j = fileList.length; j > 0; j--) {
  759 + //如果存在此文件,去除新选择的重复文件
  760 + if (fileList[j - 1].name == file.name) {
  761 + fileList.splice(j - 1, 1);
  762 + i--;
  763 + return false;
  764 + }
  765 + }
  766 + }
  767 + }
  768 + }
  769 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  770 + //格式符合后判断大小
  771 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  772 + let max5M = file.size / 1024 / 1024 < 100;
  773 + if (!max5M) {
  774 + this.$message({
  775 + message: '上传文件大小不得超过100M!',
  776 + type: 'warning'
  777 + });
  778 + fileList = fileList.splice(fileList.length - 1, 1);
  779 + } else {
  780 + //符合条件后进行添加
  781 + this.safetyCertificate = fileList
  782 + }
  783 + } else {
  784 + this.$message({
  785 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  786 + type: 'warning'
  787 + });
  788 + fileList = fileList.splice(fileList.length - 1, 1);
  789 + }
  790 + },
  791 + fileChange4(file, fileList) {
  792 + let count = 0;
  793 + for (let i = 0; i < fileList.length; i++) {
  794 + // console.log(fileList.length)
  795 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  796 + if (fileList[i].name == file.name) {
  797 + count++;
  798 + if (count == 2) {
  799 + this.$message({
  800 + message: '已存在此文件!',
  801 + type: 'warning'
  802 + });
  803 + for (let j = fileList.length; j > 0; j--) {
  804 + //如果存在此文件,去除新选择的重复文件
  805 + if (fileList[j - 1].name == file.name) {
  806 + fileList.splice(j - 1, 1);
  807 + i--;
  808 + return false;
  809 + }
  810 + }
  811 + }
  812 + }
  813 + }
  814 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  815 + //格式符合后判断大小
  816 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  817 + let max5M = file.size / 1024 / 1024 < 100;
  818 + if (!max5M) {
  819 + this.$message({
  820 + message: '上传文件大小不得超过100M!',
  821 + type: 'warning'
  822 + });
  823 + fileList = fileList.splice(fileList.length - 1, 1);
  824 + } else {
  825 + //符合条件后进行添加
  826 + this.carParkPanorama = fileList
  827 + }
  828 + } else {
  829 + this.$message({
  830 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  831 + type: 'warning'
  832 + });
  833 + fileList = fileList.splice(fileList.length - 1, 1);
  834 + }
  835 + },
  836 + }
  837 +};
  838 +</script>
  839 +<style lang="scss" scoped>
  840 +.upload_lable{
  841 + border-right: 1px solid #dcdfe6;
  842 + padding: 27px 30px;
  843 + background: #fafafa;
  844 + text-align: center;
  845 +}
  846 +.upload_btn{
  847 + max-height: 106px;
  848 +}
  849 +.upload_close{
  850 + position: absolute;
  851 + left: 105px;
  852 + z-index:99;
  853 + top:-1px;
  854 + font-size:18px;
  855 + color:red;
  856 +}
  857 +.upload_close_file{
  858 + position: absolute;
  859 + left: 80px;
  860 + z-index:99;
  861 + top:-1px;
  862 + font-size:18px;
  863 + color:red;
  864 +}
  865 +.upload_div_image{
  866 + display: inline-block;
  867 + width: 110px;
  868 + height: 95px;
  869 + position: relative;
  870 + float: left;
  871 + margin-left: 5px;
  872 +}
  873 +.upload_div_file{
  874 + display: inline-block;
  875 + width: 110px;
  876 + height: 95px;
  877 + text-align: center;
  878 + float:left;
  879 + margin: 5px;
  880 + position: relative;
  881 +}
  882 +.serach_map{
  883 + position: absolute;
  884 + top: 100px;
  885 + left: 25px;
  886 + z-index: 999;
  887 + background: #fff;
  888 + padding: 10px;
  889 + border-radius: 5px;
  890 + box-shadow: 0 0 10px rgba(0,0,0,.2);
  891 +}
  892 +</style>
... ...
trash-ui/src/views/unit/carInfo/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4 + <el-form-item label="所属公司" prop="companyName">
  5 + <el-input
  6 + v-model="queryParams.companyName"
  7 + placeholder="请输入所属公司"
  8 + clearable
  9 + size="small"
  10 + @keyup.enter.native="handleQuery"
  11 + />
  12 + </el-form-item>
  13 + <el-form-item label="车辆类型" prop="carType">
  14 + <el-select v-model="queryParams.carType" placeholder="请选择车辆类型" clearable style="width: 100%;" size="small">
  15 + <el-option label="燃油渣土车" value="燃油渣土车" />
  16 + <el-option label="电动渣土车" value="电动渣土车" />
  17 + <el-option label="其它" value="其它" />
  18 + </el-select>
  19 + </el-form-item>
  20 + <el-form-item label="车牌号" prop="carCode">
  21 + <el-input
  22 + v-model="queryParams.carCode"
  23 + placeholder="请输入车牌号"
  24 + clearable
  25 + size="small"
  26 + @keyup.enter.native="handleQuery"
  27 + />
  28 + </el-form-item>
  29 + <el-form-item label="车辆品牌" prop="carBrank">
  30 + <el-input
  31 + v-model="queryParams.carBrank"
  32 + placeholder="请输入车辆品牌"
  33 + clearable
  34 + size="small"
  35 + @keyup.enter.native="handleQuery"
  36 + />
  37 + </el-form-item>
  38 + <el-form-item>
  39 + <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  40 + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  41 + </el-form-item>
  42 + </el-form>
  43 +
  44 + <el-row :gutter="10" class="mb8">
  45 + <el-col :span="1.5">
  46 + <el-button
  47 + type="primary"
  48 + icon="el-icon-plus"
  49 + size="mini"
  50 + @click="handleAdd"
  51 + v-hasPermi="['unit:carInfo:add']"
  52 + >新增</el-button>
  53 + </el-col>
  54 + <el-col :span="1.5">
  55 + <el-button
  56 + type="success"
  57 + icon="el-icon-edit"
  58 + size="mini"
  59 + :disabled="single"
  60 + @click="handleUpdate"
  61 + v-hasPermi="['unit:carInfo:edit']"
  62 + >修改</el-button>
  63 + </el-col>
  64 + <el-col :span="1.5">
  65 + <el-button
  66 + type="danger"
  67 + icon="el-icon-delete"
  68 + size="mini"
  69 + :disabled="multiple"
  70 + @click="handleDelete"
  71 + v-hasPermi="['unit:carInfo:remove']"
  72 + >删除</el-button>
  73 + </el-col>
  74 + <el-col :span="1.5">
  75 + <el-button
  76 + type="warning"
  77 + icon="el-icon-download"
  78 + size="mini"
  79 + @click="handleExport"
  80 + v-hasPermi="['unit:carInfo:export']"
  81 + >导出</el-button>
  82 + </el-col>
  83 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  84 + </el-row>
  85 +
  86 + <el-table v-loading="loading" :data="carInfoList" @selection-change="handleSelectionChange">
  87 + <el-table-column type="selection" width="55" align="center" />
  88 + <el-table-column type="index" width="55" align="center" label="序号"/>
  89 + <el-table-column label="车牌号" align="center" prop="carCode" />
  90 + <el-table-column label="车辆标识牌" align="center" prop="carIdentification" />
  91 + <el-table-column label="所属公司" align="center" prop="companyName" />
  92 + <el-table-column label="驾驶员" align="center" prop="driversName" />
  93 + <el-table-column label="车辆品牌" align="center" prop="carBrank" />
  94 + <el-table-column label="所属区域" align="center" prop="emissionStandard" />
  95 + <el-table-column label="车辆类型" align="center" prop="carType" />
  96 + <el-table-column label="SIM卡号" align="center" prop="farmeNumber" />
  97 + <el-table-column label="审批状态" align="center" prop="status" >
  98 + <template slot-scope="scope">
  99 + {{ parseStatus(scope.row.status)}}
  100 + </template>
  101 + </el-table-column>
  102 + <el-table-column label="信用状态" align="center" prop="creditStatus" />
  103 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  104 + <template slot-scope="scope">
  105 + <el-button
  106 + size="mini"
  107 + type="text"
  108 + icon="el-icon-edit"
  109 + @click="handleUpdate(scope.row)"
  110 + v-hasPermi="['unit:carInfo:edit']"
  111 + >修改</el-button>
  112 + <el-button
  113 + size="mini"
  114 + type="text"
  115 + icon="el-icon-delete"
  116 + @click="handleDelete(scope.row)"
  117 + v-hasPermi="['unit:carInfo:remove']"
  118 + >删除</el-button>
  119 + </template>
  120 + </el-table-column>
  121 + </el-table>
  122 +
  123 + <pagination
  124 + v-show="total>0"
  125 + :total="total"
  126 + :page.sync="queryParams.pageNum"
  127 + :limit.sync="queryParams.pageSize"
  128 + @pagination="getList"
  129 + />
  130 +
  131 + </div>
  132 +</template>
  133 +
  134 +<script>
  135 +import { listCarInfo, getCarInfo, delCarInfo, addCarInfo, updateCarInfo, exportCarInfo } from "@/api/unit/carInfo";
  136 +import {parseStatus} from "../../../utils/trash";
  137 +
  138 +export default {
  139 + name: "CarInfo",
  140 + data() {
  141 + return {
  142 + // 遮罩层
  143 + loading: true,
  144 + // 选中数组
  145 + ids: [],
  146 + // 非单个禁用
  147 + single: true,
  148 + // 非多个禁用
  149 + multiple: true,
  150 + // 显示搜索条件
  151 + showSearch: true,
  152 + // 总条数
  153 + total: 0,
  154 + // 运输车辆管理表格数据
  155 + carInfoList: [],
  156 + // 弹出层标题
  157 + title: "",
  158 + // 是否显示弹出层
  159 + open: false,
  160 + // 查询参数
  161 + queryParams: {
  162 + pageNum: 1,
  163 + pageSize: 10,
  164 + companyId: null,
  165 + carType: null,
  166 + carCode: null,
  167 + carBrank: null,
  168 + emissionStandard: null,
  169 + roadTransportDate: null,
  170 + drivingLicenseDate: null,
  171 + enterDate: null,
  172 + farmeNumber: null,
  173 + carIdentification: null,
  174 + containerVolume: null,
  175 + carColor: null,
  176 + carEquipment: null,
  177 + roadTransport: null,
  178 + drivingLicense: null,
  179 + carFront: null,
  180 + carLeft: null,
  181 + carBehind: null,
  182 + carRight: null,
  183 + drivers: null,
  184 + status: null,
  185 + creditStatus: null,
  186 + qrCode: null
  187 + },
  188 + // 表单参数
  189 + form: {},
  190 + // 表单校验
  191 + rules: {
  192 + }
  193 + };
  194 + },
  195 + created() {
  196 + this.getList();
  197 + },
  198 + watch:{
  199 + '$route.query.carInfoRefresh':'getList'
  200 + },
  201 + methods: {
  202 + /** 查询运输车辆管理列表 */
  203 + getList() {
  204 + this.loading = true;
  205 + listCarInfo(this.queryParams).then(response => {
  206 + this.carInfoList = response.rows;
  207 + this.total = response.total;
  208 + this.loading = false;
  209 + });
  210 + },
  211 + /** 搜索按钮操作 */
  212 + handleQuery() {
  213 + this.queryParams.pageNum = 1;
  214 + this.getList();
  215 + },
  216 + /** 重置按钮操作 */
  217 + resetQuery() {
  218 + this.resetForm("queryForm");
  219 + this.handleQuery();
  220 + },
  221 + // 多选框选中数据
  222 + handleSelectionChange(selection) {
  223 + this.ids = selection.map(item => item.id)
  224 + this.single = selection.length!==1
  225 + this.multiple = !selection.length
  226 + },
  227 + /** 新增按钮操作 */
  228 + handleAdd() {
  229 + this.$tab.openPage("新增车辆信息","/carInfo/info",{carInfoRefresh:0});
  230 + },
  231 + /** 修改按钮操作 */
  232 + handleUpdate(row) {
  233 + const id = row.id || this.ids
  234 + this.$tab.openPage("修改运输企业","/carInfo/infoEdit",{carInfoId: id,carInfoRefresh:0});
  235 + },
  236 + /** 提交按钮 */
  237 + submitForm() {
  238 + this.$refs["form"].validate(valid => {
  239 + if (valid) {
  240 + if (this.form.id != null) {
  241 + updateCarInfo(this.form).then(response => {
  242 + this.msgSuccess("修改成功");
  243 + this.open = false;
  244 + this.getList();
  245 + });
  246 + } else {
  247 + addCarInfo(this.form).then(response => {
  248 + this.msgSuccess("新增成功");
  249 + this.open = false;
  250 + this.getList();
  251 + });
  252 + }
  253 + }
  254 + });
  255 + },
  256 + /** 删除按钮操作 */
  257 + handleDelete(row) {
  258 + const ids = row.id || this.ids;
  259 + this.$confirm('是否确认删除运输车辆管理编号为"' + ids + '"的数据项?', "警告", {
  260 + confirmButtonText: "确定",
  261 + cancelButtonText: "取消",
  262 + type: "warning"
  263 + }).then(function() {
  264 + return delCarInfo(ids);
  265 + }).then(() => {
  266 + this.getList();
  267 + this.msgSuccess("删除成功");
  268 + })
  269 + },
  270 + /** 导出按钮操作 */
  271 + handleExport() {
  272 + const queryParams = this.queryParams;
  273 + this.$confirm('是否确认导出所有运输车辆管理数据项?', "警告", {
  274 + confirmButtonText: "确定",
  275 + cancelButtonText: "取消",
  276 + type: "warning"
  277 + }).then(function() {
  278 + return exportCarInfo(queryParams);
  279 + }).then(response => {
  280 + this.download(response.msg);
  281 + })
  282 + }
  283 + }
  284 +};
  285 +</script>
... ...
trash-ui/src/views/unit/carInfo/info.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 +
  4 + <!-- 添加或修改处理场所管理对话框 -->
  5 + <h3>
  6 + 基础信息
  7 + </h3>
  8 + <el-form ref="form" :model="form" :rules="rules" label-width="80px" label-position="top">
  9 + <el-row :gutter="30">
  10 + <el-col :span="7">
  11 + <el-form-item label="所属公司" prop="companyId">
  12 + <el-select v-model="form.companyId" placeholder="请选择所属公司" clearable style="width: 100%;" @change="listDriverByCompany">
  13 + <el-option v-for="(item,index) in enterpriseList" :label="item.name" :value="item.id" :key="index"/>
  14 + </el-select>
  15 + </el-form-item>
  16 + </el-col>
  17 + <el-col :span="7">
  18 + <el-form-item label="车辆类型" prop="carType">
  19 + <el-select v-model="form.carType" placeholder="请选择车辆类型" clearable style="width: 100%;">
  20 + <el-option label="燃油渣土车" value="燃油渣土车" />
  21 + <el-option label="电动渣土车" value="电动渣土车" />
  22 + <el-option label="其它" value="其它" />
  23 + </el-select>
  24 + </el-form-item>
  25 + </el-col>
  26 + <el-col :span="7">
  27 + <el-form-item label="车牌号" prop="carCode">
  28 + <el-input v-model="form.carCode" placeholder="请输入车牌号" />
  29 + </el-form-item>
  30 + </el-col>
  31 + </el-row>
  32 + <el-row :gutter="30">
  33 + <el-col :span="7">
  34 + <el-form-item label="车辆品牌" prop="carBrank">
  35 + <el-input v-model="form.carBrank" placeholder="请输入车辆品牌" />
  36 + </el-form-item>
  37 + </el-col>
  38 + <el-col :span="7">
  39 + <el-form-item label="排放标准" prop="emissionStandard">
  40 + <el-select v-model="form.emissionStandard" placeholder="请选择排放标准" clearable style="width: 100%;">
  41 + <el-option label="国四" value="国四" />
  42 + <el-option label="国五" value="国五" />
  43 + <el-option label="国六" value="国六" />
  44 + <el-option label="纯电动" value="纯电动" />
  45 + </el-select>
  46 + </el-form-item>
  47 + </el-col>
  48 + <el-col :span="7">
  49 + <el-form-item label="驾驶员" prop="drivers">
  50 + <treeselect v-model="drivers" :multiple="true" :options="options" placeholder="请选择"/>
  51 + </el-form-item>
  52 + </el-col>
  53 + </el-row>
  54 + <el-row :gutter="30">
  55 + <el-col :span="7">
  56 + <el-form-item label="道路运输证有效期" prop="roadTransportDate">
  57 + <el-date-picker clearable size="small" style="width: 100%"
  58 + v-model="form.roadTransportDate"
  59 + type="date"
  60 + value-format="yyyy-MM-dd"
  61 + placeholder="选择道路运输证有效期">
  62 + </el-date-picker>
  63 + </el-form-item>
  64 +
  65 + </el-col>
  66 + <el-col :span="7">
  67 + <el-form-item label="行驶证有效期" prop="drivingLicenseDate">
  68 + <el-date-picker clearable size="small" style="width: 100%"
  69 + v-model="form.drivingLicenseDate"
  70 + type="date"
  71 + value-format="yyyy-MM-dd"
  72 + placeholder="选择行驶证有效期">
  73 + </el-date-picker>
  74 + </el-form-item>
  75 +
  76 + </el-col>
  77 + <el-col :span="7">
  78 + <el-form-item label="录入日期" prop="enterDate">
  79 + <el-date-picker clearable size="small" style="width: 100%"
  80 + v-model="form.enterDate"
  81 + type="date"
  82 + value-format="yyyy-MM-dd"
  83 + placeholder="选择录入日期">
  84 + </el-date-picker>
  85 + </el-form-item>
  86 +
  87 + </el-col>
  88 + </el-row>
  89 + <el-row :gutter="30">
  90 + <el-col :span="7">
  91 + <el-form-item label="车架号" prop="farmeNumber">
  92 + <el-input v-model="form.farmeNumber" placeholder="请输入车架号" />
  93 + </el-form-item>
  94 +
  95 + </el-col>
  96 + <el-col :span="7">
  97 + <el-form-item label="车辆标识牌" prop="carIdentification">
  98 + <el-input v-model="form.carIdentification" placeholder="请输入车辆标识牌" />
  99 + </el-form-item>
  100 +
  101 + </el-col>
  102 + <el-col :span="7">
  103 + <el-form-item label="箱货体积" prop="containerVolume">
  104 + <el-row>
  105 + <el-col :span="5">
  106 + <el-select v-model="volumeOrLWH" placeholder="请选择排放标准" style="width: 100%;">
  107 + <el-option label="体积" value="体积"/>
  108 + <el-option label="长宽高" value="长宽高" />
  109 + </el-select>
  110 + </el-col>
  111 + <el-col :span="19" v-if="volumeOrLWH==='体积'">
  112 + <el-input v-model="form.containerVolume" placeholder="请输入车辆体积" />
  113 + </el-col>
  114 + <el-col :span="19" v-if="volumeOrLWH==='长宽高'">
  115 + <el-row>
  116 + <el-col :span="8">
  117 + <el-input v-model="form.length" placeholder="长" />
  118 + </el-col>
  119 + <el-col :span="8">
  120 + <el-input v-model="form.width" placeholder="宽" />
  121 + </el-col>
  122 + <el-col :span="8">
  123 + <el-input v-model="form.height" placeholder="高" />
  124 + </el-col>
  125 + </el-row>
  126 + </el-col>
  127 + </el-row>
  128 +
  129 + </el-form-item>
  130 +
  131 + </el-col>
  132 + </el-row>
  133 +
  134 + <el-row :gutter="30">
  135 + <el-col :span="7">
  136 + <el-form-item label="车辆颜色" prop="carColor">
  137 + <el-select v-model="form.carColor" placeholder="请选择车辆颜色" clearable style="width: 100%;">
  138 + <el-option label="黄色" value="黄色"/>
  139 + <el-option label="蓝色" value="蓝色" />
  140 + <el-option label="黄绿色" value="黄绿色" />
  141 + <el-option label="黑色" value="黑色" />
  142 + <el-option label="白色" value="白色" />
  143 + <el-option label="未上牌" value="未上牌" />
  144 + <el-option label="其它" value="其它" />
  145 + </el-select>
  146 + </el-form-item>
  147 +
  148 + </el-col>
  149 + <el-col :span="7">
  150 + <el-form-item label="车辆设备" prop="carEquipment">
  151 + <el-input v-model="form.carEquipment" placeholder="请输入车辆设备" />
  152 + </el-form-item>
  153 + </el-col>
  154 + <el-col :span="7">
  155 + <el-form-item label="备注" prop="remark">
  156 + <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
  157 + </el-form-item>
  158 + </el-col>
  159 + </el-row>
  160 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  161 + <el-col :span="3">
  162 + <div class="upload_lable">
  163 + 道路运输证
  164 + <el-upload
  165 + ref="upload"
  166 + action=""
  167 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  168 + :on-change="fileChange"
  169 + :auto-upload="false"
  170 + :show-file-list="false"
  171 + multiple
  172 + :file-list="roadTransport">
  173 +
  174 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  175 + </el-upload>
  176 + </div>
  177 + </el-col>
  178 + <el-col :span="21">
  179 + <div class="upload_btn">
  180 + <div v-for="(item,index) in roadTransport">
  181 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  182 + <div class="upload_close" @click="roadTransport.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  183 + <el-image
  184 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  185 + :src="createUrl(item)"
  186 + :preview-src-list="[createUrl(item)]"
  187 + :z-index="999">
  188 + </el-image>
  189 + </div>
  190 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  191 + <div class="upload_close_file" @click="roadTransport.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  192 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  193 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  194 + </div>
  195 + </div>
  196 + </div>
  197 + </el-col>
  198 + </el-row>
  199 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  200 + <el-col :span="3">
  201 + <div class="upload_lable">
  202 + 行驶证
  203 + <el-upload
  204 + ref="upload"
  205 + action=""
  206 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  207 + :on-change="fileChange1"
  208 + :auto-upload="false"
  209 + :show-file-list="false"
  210 + multiple
  211 + :file-list="drivingLicense">
  212 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  213 + </el-upload>
  214 + </div>
  215 + </el-col>
  216 + <el-col :span="21">
  217 + <div class="upload_btn">
  218 + <div v-for="(item,index) in drivingLicense">
  219 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  220 + <div class="upload_close" @click="drivingLicense.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  221 + <el-image
  222 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  223 + :src="createUrl(item)"
  224 + :preview-src-list="[createUrl(item)]"
  225 + :z-index="999">
  226 + </el-image>
  227 + </div>
  228 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  229 + <div class="upload_close_file" @click="drivingLicense.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  230 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  231 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  232 + </div>
  233 + </div>
  234 + </div>
  235 + </el-col>
  236 + </el-row>
  237 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  238 + <el-col :span="3">
  239 + <div class="upload_lable">
  240 + 车辆正面照片
  241 + <el-upload
  242 + ref="upload"
  243 + action=""
  244 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp"
  245 + :on-change="fileChange2"
  246 + :auto-upload="false"
  247 + :show-file-list="false"
  248 + multiple
  249 + :file-list="carFront">
  250 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  251 + </el-upload>
  252 + </div>
  253 + </el-col>
  254 + <el-col :span="21">
  255 + <div class="upload_btn">
  256 + <div v-for="(item,index) in carFront">
  257 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  258 + <div class="upload_close" @click="carFront.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  259 + <el-image
  260 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  261 + :src="createUrl(item)"
  262 + :preview-src-list="[createUrl(item)]"
  263 + :z-index="999">
  264 + </el-image>
  265 + </div>
  266 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  267 + <div class="upload_close_file" @click="carFront.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  268 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  269 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  270 + </div>
  271 + </div>
  272 + </div>
  273 + </el-col>
  274 + </el-row>
  275 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  276 + <el-col :span="3">
  277 + <div class="upload_lable">
  278 + 车辆左侧照片
  279 + <el-upload
  280 + ref="upload"
  281 + action=""
  282 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp"
  283 + :on-change="fileChange3"
  284 + :auto-upload="false"
  285 + :show-file-list="false"
  286 + multiple
  287 + :file-list="carLeft">
  288 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  289 + </el-upload>
  290 + </div>
  291 + </el-col>
  292 + <el-col :span="21">
  293 + <div class="upload_btn">
  294 + <div v-for="(item,index) in carLeft">
  295 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  296 + <div class="upload_close" @click="carLeft.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  297 + <el-image
  298 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  299 + :src="createUrl(item)"
  300 + :preview-src-list="[createUrl(item)]"
  301 + :z-index="999">
  302 + </el-image>
  303 + </div>
  304 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  305 + <div class="upload_close_file" @click="carLeft.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  306 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  307 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  308 + </div>
  309 + </div>
  310 + </div>
  311 + </el-col>
  312 + </el-row>
  313 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  314 + <el-col :span="3">
  315 + <div class="upload_lable">
  316 + 车辆尾部照片
  317 + <el-upload
  318 + ref="upload"
  319 + action=""
  320 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp"
  321 + :on-change="fileChange4"
  322 + :auto-upload="false"
  323 + :show-file-list="false"
  324 + multiple
  325 + :file-list="carBehind">
  326 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  327 + </el-upload>
  328 + </div>
  329 + </el-col>
  330 + <el-col :span="21">
  331 + <div class="upload_btn">
  332 + <div v-for="(item,index) in carBehind">
  333 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  334 + <div class="upload_close" @click="carBehind.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  335 + <el-image
  336 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  337 + :src="createUrl(item)"
  338 + :preview-src-list="[createUrl(item)]"
  339 + :z-index="999">
  340 + </el-image>
  341 + </div>
  342 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  343 + <div class="upload_close_file" @click="carBehind.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  344 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  345 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  346 + </div>
  347 + </div>
  348 + </div>
  349 + </el-col>
  350 + </el-row>
  351 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  352 + <el-col :span="3">
  353 + <div class="upload_lable">
  354 + 车辆右侧照片
  355 + <el-upload
  356 + ref="upload"
  357 + action=""
  358 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp"
  359 + :on-change="fileChange5"
  360 + :auto-upload="false"
  361 + :show-file-list="false"
  362 + multiple
  363 + :file-list="carRight">
  364 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  365 + </el-upload>
  366 + </div>
  367 + </el-col>
  368 + <el-col :span="21">
  369 + <div class="upload_btn">
  370 + <div v-for="(item,index) in carRight">
  371 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  372 + <div class="upload_close" @click="carRight.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  373 + <el-image
  374 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  375 + :src="createUrl(item)"
  376 + :preview-src-list="[createUrl(item)]"
  377 + :z-index="999">
  378 + </el-image>
  379 + </div>
  380 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  381 + <div class="upload_close_file" @click="carRight.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  382 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  383 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  384 + </div>
  385 + </div>
  386 + </div>
  387 + </el-col>
  388 + </el-row>
  389 + <!-- <el-form-item label="" prop="environmentalApproval">-->
  390 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  391 + <!-- </el-form-item>-->
  392 + <!-- <el-form-item label="" prop="authorization">-->
  393 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  394 + <!-- </el-form-item>-->
  395 + <!-- <el-form-item label="" prop="otherInformation">-->
  396 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  397 + <!-- </el-form-item>-->
  398 + <!-- <el-form-item label="运输企业" prop="companyIds">-->
  399 + <!-- <el-input v-model="form.companyIds" placeholder="请输入运输企业" />-->
  400 + <!-- </el-form-item>-->
  401 + <!-- <el-form-item label="审批状态,0=审批中,1=审批通过,2=被驳回">-->
  402 + <!-- <el-radio-group v-model="form.status">-->
  403 + <!-- <el-radio label="1">请选择字典生成</el-radio>-->
  404 + <!-- </el-radio-group>-->
  405 + <!-- </el-form-item>-->
  406 + <!-- <el-form-item label="二维码" prop="qrCode">-->
  407 + <!-- <el-input v-model="form.qrCode" placeholder="请输入二维码" />-->
  408 + <!-- </el-form-item>-->
  409 + </el-form>
  410 + <div slot="footer" class="dialog-footer" style="margin-top: 20px">
  411 + <el-button type="primary" @click="submitForm">确 定</el-button>
  412 + <el-button @click="cancel">取 消</el-button>
  413 + </div>
  414 + </div>
  415 +</template>
  416 +
  417 +<script>
  418 +import {getCarInfo, addCarInfo, updateCarInfo } from "@/api/unit/carInfo";
  419 +import { listEnterprise} from "@/api/unit/enterprise";
  420 +import Treeselect from "@riophae/vue-treeselect";
  421 +import '@riophae/vue-treeselect/dist/vue-treeselect.css'
  422 +import {getAreaList} from "@/api/casefile/remoteServer";
  423 +import { listDriverByCompanyId } from "@/api/unit/driver";
  424 +
  425 +export default {
  426 + name: "DisposalSite",
  427 + components: {Treeselect},
  428 + data() {
  429 + return {
  430 + // 遮罩层
  431 + loading: true,
  432 + // 选中数组
  433 + ids: [],
  434 + // 非单个禁用
  435 + single: true,
  436 + // 非多个禁用
  437 + multiple: true,
  438 + // 显示搜索条件
  439 + showSearch: true,
  440 + // 总条数
  441 + total: 0,
  442 + // 处理场所管理表格数据
  443 + disposalSiteList: [],
  444 + // 弹出层标题
  445 + title: "",
  446 + // 是否显示弹出层
  447 + open: false,
  448 + // 表单参数
  449 + form: {},
  450 + // 表单校验
  451 + rules: {
  452 + companyId: [
  453 + {required: true, message: "请选择所属公司", trigger: "blur"}
  454 + ],
  455 + carType: [
  456 + {required: true, message: "请选择车辆类型", trigger: "blur"}
  457 + ],
  458 + carCode: [
  459 + {required: true, message: "请输入车牌号", trigger: "blur"}
  460 + ],
  461 + carBrank: [
  462 + {required: true, message: "请输入车辆品牌", trigger: "blur"}
  463 + ],
  464 + emissionStandard: [
  465 + {required: true, message: "请选择排放标准", trigger: "blur"}
  466 + ],
  467 + roadTransportDate: [
  468 + {required: true, message: "请选择道路运输证有效期", trigger: "blur"}
  469 + ],
  470 + drivingLicenseDate: [
  471 + {required: true, message: "请选择行驶证有效期", trigger: "blur"}
  472 + ],
  473 + enterDate: [
  474 + {required: true, message: "请选择录入日期", trigger: "blur"}
  475 + ],
  476 + farmeNumber: [
  477 + {required: true, message: "请输入车架号", trigger: "blur"}
  478 + ],
  479 + carIdentification: [
  480 + {required: true, message: "请输入车辆标识牌", trigger: "blur"}
  481 + ],
  482 +
  483 + },
  484 + areas:[],
  485 + // 附件
  486 + roadTransport: [],
  487 + drivingLicense: [],
  488 + carFront: [],
  489 + carLeft: [],
  490 + carBehind: [],
  491 + carRight: [],
  492 + enterpriseList:[],
  493 + driverList:[],
  494 + options:[],
  495 + volumeOrLWH:"体积",
  496 + drivers:[]
  497 + };
  498 + },
  499 + created() {
  500 + getAreaList().then(res => {
  501 + this.areas = res.data;
  502 + });
  503 + this.queryParams = {
  504 + companyType:"1"
  505 + }
  506 + listEnterprise(this.queryParams).then(response => {
  507 + this.enterpriseList = response.rows;
  508 + });
  509 + this.initData();
  510 + },
  511 + watch: {
  512 + '$route.query.carInfoId': 'initData'
  513 + },
  514 + methods: {
  515 + listDriverByCompany(value){
  516 + listDriverByCompanyId(value).then(response => {
  517 + this.drivers = [];
  518 + this.options = response;
  519 + });
  520 + },
  521 + reset(){
  522 + this.form = {
  523 + id: null,
  524 + companyId: null,
  525 + carType: null,
  526 + carCode: null,
  527 + carBrank: null,
  528 + emissionStandard: null,
  529 + roadTransportDate: null,
  530 + drivingLicenseDate: null,
  531 + enterDate: null,
  532 + farmeNumber: null,
  533 + carIdentification: null,
  534 + containerVolume: null,
  535 + carColor: null,
  536 + carEquipment: null,
  537 + remark: null,
  538 + roadTransport: null,
  539 + drivingLicense: null,
  540 + carFront: null,
  541 + carLeft: null,
  542 + carBehind: null,
  543 + carRight: null,
  544 + drivers: null,
  545 + status: 0,
  546 + createTime: null,
  547 + createBy: null,
  548 + updateTime: null,
  549 + updateBy: null,
  550 + creditStatus: "0",
  551 + qrCode: null
  552 + };
  553 + this.roadTransport = [];
  554 + this.drivingLicense = [];
  555 + this.carFront = [];
  556 + this.carLeft = [];
  557 + this.carBehind = [];
  558 + this.carRight = [];
  559 + this.drivers = [];
  560 + },
  561 + initData(){
  562 + this.reset();
  563 + let id = this.$route.query.carInfoId;
  564 + if(id!=null){
  565 + getCarInfo(id).then(response => {
  566 + this.form = response.data;
  567 +
  568 + listDriverByCompanyId(this.form.companyId).then(response => {
  569 + this.drivers = this.form.drivers.split(",").map(value => parseInt(value));
  570 + this.options = response;
  571 + });
  572 +
  573 + //将附件转换为前端可视化数组
  574 + if(this.form.roadTransport!=null&&this.form.roadTransport!==""){
  575 + let roadTransport = this.form.roadTransport.split(";");
  576 + roadTransport.map(item=>{
  577 + let name = item.substring(item.lastIndexOf("/")+1);
  578 + this.roadTransport.push({name:name,url:item})
  579 + })
  580 + }
  581 + if(this.form.drivingLicense!=null&&this.form.drivingLicense!==""){
  582 + let drivingLicense = this.form.drivingLicense.split(";");
  583 + drivingLicense.map(item=>{
  584 + let name = item.substring(item.lastIndexOf("/")+1);
  585 + this.drivingLicense.push({name:name,url:item})
  586 + })
  587 + }
  588 + if(this.form.carFront!=null&&this.form.carFront!==""){
  589 + let carFront = this.form.carFront.split(";");
  590 + carFront.map(item=>{
  591 + let name = item.substring(item.lastIndexOf("/")+1);
  592 + this.carFront.push({name:name,url:item})
  593 + })
  594 + }
  595 + if(this.form.carLeft!=null&&this.form.carLeft!==""){
  596 + let carLeft = this.form.carLeft.split(";");
  597 + carLeft.map(item=>{
  598 + let name = item.substring(item.lastIndexOf("/")+1);
  599 + this.carLeft.push({name:name,url:item})
  600 + })
  601 + }
  602 + if(this.form.carBehind!=null&&this.form.carBehind!==""){
  603 + let carBehind = this.form.carBehind.split(";");
  604 + carBehind.map(item=>{
  605 + let name = item.substring(item.lastIndexOf("/")+1);
  606 + this.carBehind.push({name:name,url:item})
  607 + })
  608 + }
  609 + if(this.form.carRight!=null&&this.form.carRight!==""){
  610 + let carRight = this.form.carRight.split(";");
  611 + carRight.map(item=>{
  612 + let name = item.substring(item.lastIndexOf("/")+1);
  613 + this.carRight.push({name:name,url:item})
  614 + })
  615 + }
  616 + });
  617 + }
  618 + },
  619 + createUrl(file){
  620 + if(file.raw!=null){
  621 + return URL.createObjectURL(file.raw);
  622 + }else{
  623 + return process.env.VUE_APP_BASE_API + file.url;
  624 + }
  625 +
  626 + },
  627 + tempDownload(row){
  628 + let name = row.name;
  629 + let url = "";
  630 + if(row.raw!=null){
  631 + url = URL.createObjectURL(row.raw);
  632 + }else{
  633 + url = process.env.VUE_APP_BASE_API + row.url;
  634 + }
  635 + const a = document.createElement('a')
  636 + a.setAttribute('download', name)
  637 + a.setAttribute('target', '_blank')
  638 + a.setAttribute('href', url);
  639 + a.click()
  640 + },
  641 + // 取消按钮
  642 + cancel() {
  643 + this.$tab.closePage({path:"/carInfo/info"}).then(() => {
  644 + this.$tab.openPage("车辆信息", "/tool/carInfo",{carInfoRefresh:1})
  645 + })
  646 + },
  647 + /** 提交按钮 */
  648 + submitForm() {
  649 + this.$refs["form"].validate(valid => {
  650 + if (valid) {
  651 + let formData = new FormData();
  652 + let form = this.form;
  653 + //去掉params属性
  654 + delete form.params;
  655 +
  656 + //先清空原有的附件
  657 + form.roadTransport = null;
  658 + form.drivingLicense = null;
  659 + form.carFront = null;
  660 + form.carLeft = null;
  661 + form.carBehind = null;
  662 + form.carRight = null;
  663 +
  664 + if(this.volumeOrLWH==="长宽高"){
  665 + form.lengthWidthHeight = form.length+";"+form.width+";"+form.height;
  666 + }
  667 + this.form.drivers = this.drivers.join(",");
  668 + this.roadTransport.forEach(item => {
  669 + if (item.raw != null) {
  670 + formData.append('roadTransportFiles', item.raw)
  671 + }else{
  672 + //将原有的附件拼接到form中
  673 + form.roadTransport = form.roadTransport!==null?form.roadTransport+";"+item.url:item.url;
  674 + }
  675 + })
  676 + this.drivingLicense.forEach(item => {
  677 + if (item.raw != null) {
  678 + formData.append('drivingLicenseFiles', item.raw)
  679 + }else{
  680 + //将原有的附件拼接到form中
  681 + form.drivingLicense = form.drivingLicense!==null?form.drivingLicense+";"+item.url:item.url;
  682 + }
  683 + })
  684 + this.carFront.forEach(item => {
  685 + if (item.raw != null) {
  686 + formData.append('carFrontFiles', item.raw)
  687 + }else{
  688 + //将原有的附件拼接到form中
  689 + form.carFront = form.carFront!==null?form.carFront+";"+item.url:item.url;
  690 + }
  691 + })
  692 + this.carLeft.forEach(item => {
  693 + if (item.raw != null) {
  694 + formData.append('carLeftFiles', item.raw)
  695 + }else{
  696 + //将原有的附件拼接到form中
  697 + form.carLeft = form.carLeft!==null?form.carLeft+";"+item.url:item.url;
  698 + }
  699 + })
  700 + this.carBehind.forEach(item => {
  701 + if (item.raw != null) {
  702 + formData.append('carBehindFiles', item.raw)
  703 + }else{
  704 + //将原有的附件拼接到form中
  705 + form.carBehind = form.carBehind!==null?form.carBehind+";"+item.url:item.url;
  706 + }
  707 + })
  708 + this.carRight.forEach(item => {
  709 + if (item.raw != null) {
  710 + formData.append('carRightFiles', item.raw)
  711 + }else{
  712 + //将原有的附件拼接到form中
  713 + form.carRight = form.carRight!==null?form.carRight+";"+item.url:item.url;
  714 + }
  715 + })
  716 + for (let key in form) {
  717 + formData.append(key, form[key] == null ? "" : form[key])
  718 + }
  719 + if (this.form.id != null) {
  720 + updateCarInfo(formData).then(response => {
  721 + this.msgSuccess("修改成功");
  722 + this.$tab.closePage({path:"/carInfo/infoEdit"}).then(() => {
  723 + this.$tab.openPage("车辆信息管理", "/tool/carInfo",{carInfoRefresh:1})
  724 + })
  725 + });
  726 + } else {
  727 + addCarInfo(formData).then(response => {
  728 + this.msgSuccess("新增成功");
  729 + this.$tab.closePage({path:"/carInfo/info"}).then(() => {
  730 + this.$tab.openPage("车辆信息管理", "/tool/carInfo",{carInfoRefresh:1})
  731 + })
  732 + });
  733 + }
  734 + }
  735 + });
  736 + },
  737 + /**
  738 + * 文件改变时,限制文件上传格式和大小
  739 + * 文件格式只能为docx/doc/pdf/png/jpeg/png/jpg
  740 + * 大小不超过20M
  741 + * */
  742 + fileChange(file, fileList) {
  743 + let count = 0;
  744 + for (let i = 0; i < fileList.length; i++) {
  745 + // console.log(fileList.length)
  746 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  747 + if (fileList[i].name == file.name) {
  748 + count++;
  749 + if (count == 2) {
  750 + this.$message({
  751 + message: '已存在此文件!',
  752 + type: 'warning'
  753 + });
  754 + for (let j = fileList.length; j > 0; j--) {
  755 + //如果存在此文件,去除新选择的重复文件
  756 + if (fileList[j - 1].name == file.name) {
  757 + fileList.splice(j - 1, 1);
  758 + i--;
  759 + return false;
  760 + }
  761 + }
  762 + }
  763 + }
  764 + }
  765 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  766 + //格式符合后判断大小
  767 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  768 + let max5M = file.size / 1024 / 1024 < 100;
  769 + if (!max5M) {
  770 + this.$message({
  771 + message: '上传文件大小不得超过100M!',
  772 + type: 'warning'
  773 + });
  774 + fileList = fileList.splice(fileList.length - 1, 1);
  775 + } else {
  776 + //符合条件后进行添加
  777 + this.roadTransport = fileList
  778 + }
  779 + } else {
  780 + this.$message({
  781 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  782 + type: 'warning'
  783 + });
  784 + fileList = fileList.splice(fileList.length - 1, 1);
  785 + }
  786 + },
  787 + fileChange1(file, fileList) {
  788 + let count = 0;
  789 + for (let i = 0; i < fileList.length; i++) {
  790 + // console.log(fileList.length)
  791 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  792 + if (fileList[i].name == file.name) {
  793 + count++;
  794 + if (count == 2) {
  795 + this.$message({
  796 + message: '已存在此文件!',
  797 + type: 'warning'
  798 + });
  799 + for (let j = fileList.length; j > 0; j--) {
  800 + //如果存在此文件,去除新选择的重复文件
  801 + if (fileList[j - 1].name == file.name) {
  802 + fileList.splice(j - 1, 1);
  803 + i--;
  804 + return false;
  805 + }
  806 + }
  807 + }
  808 + }
  809 + }
  810 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  811 + //格式符合后判断大小
  812 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  813 + let max5M = file.size / 1024 / 1024 < 100;
  814 + if (!max5M) {
  815 + this.$message({
  816 + message: '上传文件大小不得超过100M!',
  817 + type: 'warning'
  818 + });
  819 + fileList = fileList.splice(fileList.length - 1, 1);
  820 + } else {
  821 + //符合条件后进行添加
  822 + this.drivingLicense = fileList
  823 + }
  824 + } else {
  825 + this.$message({
  826 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  827 + type: 'warning'
  828 + });
  829 + fileList = fileList.splice(fileList.length - 1, 1);
  830 + }
  831 + },
  832 + fileChange2(file, fileList) {
  833 + let count = 0;
  834 + for (let i = 0; i < fileList.length; i++) {
  835 + // console.log(fileList.length)
  836 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  837 + if (fileList[i].name == file.name) {
  838 + count++;
  839 + if (count == 2) {
  840 + this.$message({
  841 + message: '已存在此文件!',
  842 + type: 'warning'
  843 + });
  844 + for (let j = fileList.length; j > 0; j--) {
  845 + //如果存在此文件,去除新选择的重复文件
  846 + if (fileList[j - 1].name == file.name) {
  847 + fileList.splice(j - 1, 1);
  848 + i--;
  849 + return false;
  850 + }
  851 + }
  852 + }
  853 + }
  854 + }
  855 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  856 + //格式符合后判断大小
  857 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp".indexOf(fileType) != -1) {
  858 + let max5M = file.size / 1024 / 1024 < 100;
  859 + if (!max5M) {
  860 + this.$message({
  861 + message: '上传文件大小不得超过100M!',
  862 + type: 'warning'
  863 + });
  864 + fileList = fileList.splice(fileList.length - 1, 1);
  865 + } else {
  866 + //符合条件后进行添加
  867 + this.carFront = fileList
  868 + }
  869 + } else {
  870 + this.$message({
  871 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp格式!',
  872 + type: 'warning'
  873 + });
  874 + fileList = fileList.splice(fileList.length - 1, 1);
  875 + }
  876 + },
  877 + fileChange3(file, fileList) {
  878 + let count = 0;
  879 + for (let i = 0; i < fileList.length; i++) {
  880 + // console.log(fileList.length)
  881 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  882 + if (fileList[i].name == file.name) {
  883 + count++;
  884 + if (count == 2) {
  885 + this.$message({
  886 + message: '已存在此文件!',
  887 + type: 'warning'
  888 + });
  889 + for (let j = fileList.length; j > 0; j--) {
  890 + //如果存在此文件,去除新选择的重复文件
  891 + if (fileList[j - 1].name == file.name) {
  892 + fileList.splice(j - 1, 1);
  893 + i--;
  894 + return false;
  895 + }
  896 + }
  897 + }
  898 + }
  899 + }
  900 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  901 + //格式符合后判断大小
  902 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf".indexOf(fileType) != -1) {
  903 + let max5M = file.size / 1024 / 1024 < 100;
  904 + if (!max5M) {
  905 + this.$message({
  906 + message: '上传文件大小不得超过100M!',
  907 + type: 'warning'
  908 + });
  909 + fileList = fileList.splice(fileList.length - 1, 1);
  910 + } else {
  911 + //符合条件后进行添加
  912 + this.carLeft = fileList
  913 + }
  914 + } else {
  915 + this.$message({
  916 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp格式!',
  917 + type: 'warning'
  918 + });
  919 + fileList = fileList.splice(fileList.length - 1, 1);
  920 + }
  921 + },
  922 + fileChange4(file, fileList) {
  923 + let count = 0;
  924 + for (let i = 0; i < fileList.length; i++) {
  925 + // console.log(fileList.length)
  926 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  927 + if (fileList[i].name == file.name) {
  928 + count++;
  929 + if (count == 2) {
  930 + this.$message({
  931 + message: '已存在此文件!',
  932 + type: 'warning'
  933 + });
  934 + for (let j = fileList.length; j > 0; j--) {
  935 + //如果存在此文件,去除新选择的重复文件
  936 + if (fileList[j - 1].name == file.name) {
  937 + fileList.splice(j - 1, 1);
  938 + i--;
  939 + return false;
  940 + }
  941 + }
  942 + }
  943 + }
  944 + }
  945 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  946 + //格式符合后判断大小
  947 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp".indexOf(fileType) != -1) {
  948 + let max5M = file.size / 1024 / 1024 < 100;
  949 + if (!max5M) {
  950 + this.$message({
  951 + message: '上传文件大小不得超过100M!',
  952 + type: 'warning'
  953 + });
  954 + fileList = fileList.splice(fileList.length - 1, 1);
  955 + } else {
  956 + //符合条件后进行添加
  957 + this.carBehind = fileList
  958 + }
  959 + } else {
  960 + this.$message({
  961 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp格式!',
  962 + type: 'warning'
  963 + });
  964 + fileList = fileList.splice(fileList.length - 1, 1);
  965 + }
  966 + },
  967 + fileChange5(file, fileList) {
  968 + let count = 0;
  969 + for (let i = 0; i < fileList.length; i++) {
  970 + // console.log(fileList.length)
  971 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  972 + if (fileList[i].name == file.name) {
  973 + count++;
  974 + if (count == 2) {
  975 + this.$message({
  976 + message: '已存在此文件!',
  977 + type: 'warning'
  978 + });
  979 + for (let j = fileList.length; j > 0; j--) {
  980 + //如果存在此文件,去除新选择的重复文件
  981 + if (fileList[j - 1].name == file.name) {
  982 + fileList.splice(j - 1, 1);
  983 + i--;
  984 + return false;
  985 + }
  986 + }
  987 + }
  988 + }
  989 + }
  990 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  991 + //格式符合后判断大小
  992 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp".indexOf(fileType) != -1) {
  993 + let max5M = file.size / 1024 / 1024 < 100;
  994 + if (!max5M) {
  995 + this.$message({
  996 + message: '上传文件大小不得超过100M!',
  997 + type: 'warning'
  998 + });
  999 + fileList = fileList.splice(fileList.length - 1, 1);
  1000 + } else {
  1001 + //符合条件后进行添加
  1002 + this.carRight = fileList
  1003 + }
  1004 + } else {
  1005 + this.$message({
  1006 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp格式!',
  1007 + type: 'warning'
  1008 + });
  1009 + fileList = fileList.splice(fileList.length - 1, 1);
  1010 + }
  1011 + },
  1012 + }
  1013 +};
  1014 +</script>
  1015 +<style lang="scss" scoped>
  1016 +.upload_lable{
  1017 + border-right: 1px solid #dcdfe6;
  1018 + padding: 27px 30px;
  1019 + background: #fafafa;
  1020 + text-align: center;
  1021 +}
  1022 +.upload_btn{
  1023 + max-height: 106px;
  1024 +}
  1025 +.upload_close{
  1026 + position: absolute;
  1027 + left: 105px;
  1028 + z-index:99;
  1029 + top:-1px;
  1030 + font-size:18px;
  1031 + color:red;
  1032 +}
  1033 +.upload_close_file{
  1034 + position: absolute;
  1035 + left: 80px;
  1036 + z-index:99;
  1037 + top:-1px;
  1038 + font-size:18px;
  1039 + color:red;
  1040 +}
  1041 +.upload_div_image{
  1042 + display: inline-block;
  1043 + width: 110px;
  1044 + height: 95px;
  1045 + position: relative;
  1046 + float: left;
  1047 + margin-left: 5px;
  1048 +}
  1049 +.upload_div_file{
  1050 + display: inline-block;
  1051 + width: 110px;
  1052 + height: 95px;
  1053 + text-align: center;
  1054 + float:left;
  1055 + margin: 5px;
  1056 + position: relative;
  1057 +}
  1058 +.serach_map{
  1059 + position: absolute;
  1060 + top: 100px;
  1061 + left: 25px;
  1062 + z-index: 999;
  1063 + background: #fff;
  1064 + padding: 10px;
  1065 + border-radius: 5px;
  1066 + box-shadow: 0 0 10px rgba(0,0,0,.2);
  1067 +}
  1068 +</style>
... ...
trash-ui/src/views/unit/disposalSite/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="158px">
  4 + <el-form-item label="处理场所名称" prop="name">
  5 + <el-input
  6 + v-model="queryParams.name"
  7 + placeholder="请输入处理场所名称"
  8 + clearable
  9 + size="small"
  10 + @keyup.enter.native="handleQuery"
  11 + />
  12 + </el-form-item>
  13 + <el-form-item label="建筑垃圾处理场所类型" prop="siteType">
  14 + <el-select v-model="queryParams.siteType" placeholder="请选择建筑垃圾处理场所类型" clearable size="small">
  15 + <el-option label="消纳(回填)场所" value="消纳(回填)场所" />
  16 + <el-option label="建筑垃圾资源化处置场" value="建筑垃圾资源化处置场" />
  17 + <el-option label="盾构土环保处置场" value="盾构土环保处置场" />
  18 + </el-select>
  19 + </el-form-item>
  20 + <el-form-item label="所在区域" prop="localArea">
  21 + <el-select v-model="queryParams.localArea" placeholder="请选择所在区域" style="width: 100%" clearable>
  22 + <el-option v-for="(area,index) in areas" :label="area.name" :value="area.name" :key="index"/>
  23 + </el-select>
  24 + </el-form-item>
  25 + <el-form-item label="审核情况" prop="auditStatus">
  26 + <el-select v-model="queryParams.auditStatus" placeholder="审核情况" clearable size="small">
  27 + <el-option label="新增审核中" value="新增审核中" />
  28 + <el-option label="审核通过" value="审核通过" />
  29 + <el-option label="新增审核驳回" value="新增审核驳回" />
  30 + <el-option label="变更审核中" value="变更审核中" />
  31 + <el-option label="变更审核驳回" value="变更审核驳回" />
  32 + </el-select>
  33 + </el-form-item>
  34 + <el-form-item label="信用状态" prop="creditStatus">
  35 + <el-select v-model="queryParams.creditStatus" placeholder="请选择信用状态" clearable size="small">
  36 + <el-option label="正常" value="正常" />
  37 + <el-option label="失信" value="失信" />
  38 + </el-select>
  39 + </el-form-item>
  40 + <el-form-item label="期限范围" prop="termRange">
  41 + <el-select v-model="queryParams.termRange" placeholder="请选择期限范围" clearable size="small">
  42 + <el-option label="已超期" value="已超期" />
  43 + <el-option label="未超期" value="未超期" />
  44 + </el-select>
  45 + </el-form-item>
  46 + <el-form-item>
  47 + <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  48 + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  49 + </el-form-item>
  50 + </el-form>
  51 +
  52 + <el-row :gutter="10" class="mb8">
  53 + <el-col :span="1.5">
  54 + <el-button
  55 + type="primary"
  56 + icon="el-icon-plus"
  57 + size="mini"
  58 + @click="handleAdd"
  59 + v-hasPermi="['unit:disposalSite:add']"
  60 + >新增</el-button>
  61 + </el-col>
  62 + <el-col :span="1.5">
  63 + <el-button
  64 + type="success"
  65 + icon="el-icon-edit"
  66 + size="mini"
  67 + :disabled="single"
  68 + @click="handleUpdate"
  69 + v-hasPermi="['unit:disposalSite:edit']"
  70 + >修改</el-button>
  71 + </el-col>
  72 + <el-col :span="1.5">
  73 + <el-button
  74 + type="danger"
  75 + icon="el-icon-delete"
  76 + size="mini"
  77 + :disabled="multiple"
  78 + @click="handleDelete"
  79 + v-hasPermi="['unit:disposalSite:remove']"
  80 + >删除</el-button>
  81 + </el-col>
  82 + <el-col :span="1.5">
  83 + <el-button
  84 + type="warning"
  85 + icon="el-icon-download"
  86 + size="mini"
  87 + @click="handleExport"
  88 + v-hasPermi="['unit:disposalSite:export']"
  89 + >导出</el-button>
  90 + </el-col>
  91 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  92 + </el-row>
  93 +
  94 + <el-table v-loading="loading" :data="disposalSiteList" @selection-change="handleSelectionChange">
  95 + <el-table-column type="selection" width="55" align="center" />
  96 + <el-table-column type="index" width="55" align="center" label="序号"/>
  97 + <el-table-column label="处理场所名称" align="center" prop="name" />
  98 + <el-table-column label="建筑垃圾处理场所类型" align="center" prop="siteType" />
  99 + <el-table-column label="所在区域" align="center" prop="localArea" />
  100 + <el-table-column label="审批方量(m³)" align="center" prop="squareMeasure" />
  101 + <el-table-column label="剩余方量(m³)" align="center" prop="surplusSquareMeasure" />
  102 + <el-table-column label="有限期开始时间" align="center" prop="validityBeginDate" width="180">
  103 + <template slot-scope="scope">
  104 + <span>{{ parseTime(scope.row.validityBeginDate, '{y}-{m}-{d}') }}</span>
  105 + </template>
  106 + </el-table-column>
  107 + <el-table-column label="有限期结束时间" align="center" prop="validityEndDate" width="180">
  108 + <template slot-scope="scope">
  109 + <span>{{ parseTime(scope.row.validityEndDate, '{y}-{m}-{d}') }}</span>
  110 + </template>
  111 + </el-table-column>
  112 + <el-table-column label="消纳来源" align="center" prop="absorbSource" />
  113 + <el-table-column label="审核情况" align="center" prop="auditStatus" />
  114 + <el-table-column label="信用状态" align="center" prop="creditStatus" />
  115 + <el-table-column label="期限范围" align="center" prop="termRange" />
  116 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  117 + <template slot-scope="scope">
  118 + <el-button
  119 + size="mini"
  120 + type="text"
  121 + icon="el-icon-edit"
  122 + @click="handleUpdate(scope.row)"
  123 + v-hasPermi="['unit:disposalSite:edit']"
  124 + >修改</el-button>
  125 + <el-button
  126 + size="mini"
  127 + type="text"
  128 + icon="el-icon-delete"
  129 + @click="handleDelete(scope.row)"
  130 + v-hasPermi="['unit:disposalSite:remove']"
  131 + >删除</el-button>
  132 + </template>
  133 + </el-table-column>
  134 + </el-table>
  135 +
  136 + <pagination
  137 + v-show="total>0"
  138 + :total="total"
  139 + :page.sync="queryParams.pageNum"
  140 + :limit.sync="queryParams.pageSize"
  141 + @pagination="getList"
  142 + />
  143 + </div>
  144 +</template>
  145 +
  146 +<script>
  147 +import { listDisposalSite, getDisposalSite, delDisposalSite, addDisposalSite, updateDisposalSite, exportDisposalSite } from "@/api/unit/disposalSite";
  148 +import {getAreaList} from "@/api/casefile/remoteServer";
  149 +
  150 +export default {
  151 + name: "DisposalSite",
  152 + data() {
  153 + return {
  154 + // 遮罩层
  155 + loading: true,
  156 + // 选中数组
  157 + ids: [],
  158 + // 非单个禁用
  159 + single: true,
  160 + // 非多个禁用
  161 + multiple: true,
  162 + // 显示搜索条件
  163 + showSearch: true,
  164 + // 总条数
  165 + total: 0,
  166 + // 处理场所管理表格数据
  167 + disposalSiteList: [],
  168 + // 弹出层标题
  169 + title: "",
  170 + // 是否显示弹出层
  171 + open: false,
  172 + // 查询参数
  173 + queryParams: {
  174 + pageNum: 1,
  175 + pageSize: 10,
  176 + name: null,
  177 + certificateNumber: null,
  178 + address: null,
  179 + engineeringProperty: null,
  180 + siteType: null,
  181 + localArea: null,
  182 + operatingArea: null,
  183 + trashType: null,
  184 + constructionUnit: null,
  185 + constructionUnitPerson: null,
  186 + constructionUnitPersonPhone: null,
  187 + validityBeginDate: null,
  188 + validityEndDate: null,
  189 + squareMeasure: null,
  190 + surplusSquareMeasure: null,
  191 + carWashingFacilities: null,
  192 + exitRoadCondition: null,
  193 + lightingFacility: null,
  194 + videoSurveillanceFacility: null,
  195 + preparer: null,
  196 + handlingAdvice: null,
  197 + absorbSource: null,
  198 + electronicFence: null,
  199 + creditStatus: null,
  200 + approvalDocument: null,
  201 + approvalData: null,
  202 + scenePhoto: null,
  203 + carWashingFacilitiesImage: null,
  204 + termRange: null,
  205 + safetyAssessmentReport: null,
  206 + environmentalApproval: null,
  207 + authorization: null,
  208 + otherInformation: null,
  209 + companyIds: null,
  210 + status: null,
  211 + qrCode: null
  212 + },
  213 + // 表单参数
  214 + form: {},
  215 + // 表单校验
  216 + rules: {
  217 + },
  218 + areas: []
  219 + };
  220 + },
  221 + created() {
  222 + getAreaList().then(res => {
  223 + this.areas = res.data;
  224 + });
  225 +
  226 + this.getList();
  227 + },
  228 + watch:{
  229 + '$route.query.disposalSiteRefresh':'getList'
  230 + },
  231 + methods: {
  232 + /** 查询处理场所管理列表 */
  233 + getList() {
  234 + this.loading = true;
  235 + listDisposalSite(this.queryParams).then(response => {
  236 + this.disposalSiteList = response.rows;
  237 + this.total = response.total;
  238 + this.loading = false;
  239 + });
  240 + },
  241 + /** 搜索按钮操作 */
  242 + handleQuery() {
  243 + this.queryParams.pageNum = 1;
  244 + this.getList();
  245 + },
  246 + /** 重置按钮操作 */
  247 + resetQuery() {
  248 + this.handleQuery();
  249 + },
  250 + // 多选框选中数据
  251 + handleSelectionChange(selection) {
  252 + this.ids = selection.map(item => item.id)
  253 + this.single = selection.length!==1
  254 + this.multiple = !selection.length
  255 + },
  256 + /** 新增按钮操作 */
  257 + handleAdd() {
  258 + this.$tab.openPage("新增处理场所管理","/disposalSite/info",{disposalSiteRefresh:0});
  259 + },
  260 + /** 修改按钮操作 */
  261 + handleUpdate(row) {
  262 + const id = row.id || this.ids
  263 + this.$tab.openPage("修改处理场所","/disposalSite/infoEdit",{disposalSiteId: id,disposalSiteRefresh:0});
  264 + },
  265 + /** 删除按钮操作 */
  266 + handleDelete(row) {
  267 + const ids = row.id || this.ids;
  268 + this.$confirm('是否确认删除处理场所管理编号为"' + ids + '"的数据项?', "警告", {
  269 + confirmButtonText: "确定",
  270 + cancelButtonText: "取消",
  271 + type: "warning"
  272 + }).then(function() {
  273 + return delDisposalSite(ids);
  274 + }).then(() => {
  275 + this.getList();
  276 + this.msgSuccess("删除成功");
  277 + })
  278 + },
  279 + /** 导出按钮操作 */
  280 + handleExport() {
  281 + const queryParams = this.queryParams;
  282 + this.$confirm('是否确认导出所有处理场所管理数据项?', "警告", {
  283 + confirmButtonText: "确定",
  284 + cancelButtonText: "取消",
  285 + type: "warning"
  286 + }).then(function() {
  287 + return exportDisposalSite(queryParams);
  288 + }).then(response => {
  289 + this.download(response.msg);
  290 + })
  291 + }
  292 + }
  293 +};
  294 +</script>
... ...
trash-ui/src/views/unit/disposalSite/info.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 +
  4 + <!-- 添加或修改处理场所管理对话框 -->
  5 + <h3>
  6 + 基础信息
  7 + </h3>
  8 + <el-form ref="form" :model="form" :rules="rules" label-width="80px" label-position="top">
  9 + <el-row :gutter="30">
  10 + <el-col :span="6">
  11 + <el-form-item label="建筑垃圾处理场所名称" prop="name">
  12 + <el-input v-model="form.name" placeholder="请输入建筑垃圾处理场所名称" />
  13 + </el-form-item>
  14 + </el-col>
  15 + <el-col :span="6">
  16 + <el-form-item label="证书编号" prop="certificateNumber">
  17 + <el-input v-model="form.certificateNumber" placeholder="请输入证书编号" />
  18 + </el-form-item>
  19 + </el-col>
  20 + <el-col :span="6">
  21 + <el-form-item label="所在地址" prop="address">
  22 + <el-input v-model="form.address" placeholder="请输入所在地址" />
  23 + </el-form-item>
  24 + </el-col>
  25 + </el-row>
  26 + <el-row :gutter="30">
  27 + <el-col :span="6">
  28 + <el-form-item label="所在区域" prop="localArea">
  29 + <el-select v-model="form.localArea" placeholder="请选择所在区域" style="width: 100%">
  30 + <el-option v-for="(area,index) in areas" :label="area.name" :value="area.name" :key="index"/>
  31 + </el-select>
  32 + </el-form-item>
  33 + </el-col>
  34 + <el-col :span="6">
  35 + <el-form-item label="建筑垃圾处理场所类型" prop="siteType">
  36 + <el-select v-model="form.siteType" placeholder="请选择建筑垃圾处理场所类型" style="width: 100%">
  37 + <el-option label="消纳(回填)场所" value="消纳(回填)场所" />
  38 + <el-option label="建筑垃圾资源化处置场" value="建筑垃圾资源化处置场" />
  39 + <el-option label="盾构土环保处置场" value="盾构土环保处置场" />
  40 + </el-select>
  41 + </el-form-item>
  42 + </el-col>
  43 + <el-col :span="6">
  44 + <el-form-item label="消纳(回填)场所工程性质" prop="engineeringProperty">
  45 + <el-select v-model="form.engineeringProperty" placeholder="请选择消纳(回填)场所工程性质" style="width: 100%">
  46 + <el-option label="消纳(回填)场" value="消纳(回填)场" />
  47 + <el-option label="房建市政工程" value="房建市政工程" />
  48 + <el-option label="交通工程" value="交通工程" />
  49 + <el-option label="水利工程" value="水利工程" />
  50 + <el-option label="国有土地整理" value="国有土地整理" />
  51 + <el-option label="平场工程" value="平场工程" />
  52 + <el-option label="生态修复" value="生态修复" />
  53 + <el-option label="覆绿造景工程" value="覆绿造景工程" />
  54 + </el-select>
  55 + </el-form-item>
  56 + </el-col>
  57 + </el-row>
  58 + <el-row :gutter="30">
  59 + <el-col :span="6">
  60 + <el-form-item label="作业区域" prop="operatingArea">
  61 + <el-select v-model="form.operatingArea" placeholder="请选择作业区域" style="width: 100%">
  62 + <el-option label="核心区域" value="核心区域" />
  63 + <el-option label="中心区域" value="中心区域" />
  64 + <el-option label="外环区域" value="外环区域" />
  65 + </el-select>
  66 + </el-form-item>
  67 + </el-col>
  68 + <el-col :span="6">
  69 + <el-form-item label="可受纳建筑垃圾类型" prop="trashType">
  70 + <treeselect v-model="form.trashType" :multiple="true" :options="options" placeholder="请选择"/>
  71 + </el-form-item>
  72 + </el-col>
  73 + <el-col :span="6">
  74 + <el-form-item label="建设(施工)单位名称" prop="constructionUnit">
  75 + <el-input v-model="form.constructionUnit" placeholder="请输入建设(施工)单位名称" />
  76 + </el-form-item>
  77 + </el-col>
  78 + </el-row>
  79 + <el-row :gutter="30">
  80 + <el-col :span="6">
  81 + <el-form-item label="建设(施工)单位责任人" prop="constructionUnitPerson">
  82 + <el-input v-model="form.constructionUnitPerson" placeholder="请输入建设(施工)单位责任人" />
  83 + </el-form-item>
  84 + </el-col>
  85 + <el-col :span="6">
  86 + <el-form-item label="责任人联系电话" prop="constructionUnitPersonPhone">
  87 + <el-input v-model="form.constructionUnitPersonPhone" placeholder="请输入责任人联系电话" :maxlength="11" show-word-limit/>
  88 + </el-form-item>
  89 + </el-col>
  90 + <el-col :span="6">
  91 + </el-col>
  92 + </el-row>
  93 +
  94 + <el-row :gutter="30">
  95 + <el-col :span="6">
  96 + <el-form-item label="有限期开始时间" prop="validityBeginDate">
  97 + <el-date-picker clearable size="small" style="width: 100%"
  98 + v-model="form.validityBeginDate"
  99 + type="date"
  100 + value-format="yyyy-MM-dd"
  101 + placeholder="选择有限期开始时间">
  102 + </el-date-picker>
  103 + </el-form-item>
  104 +
  105 + </el-col>
  106 + <el-col :span="6">
  107 + <el-form-item label="有限期结束时间" prop="validityEndDate">
  108 + <el-date-picker clearable size="small" style="width: 100%"
  109 + v-model="form.validityEndDate"
  110 + type="date"
  111 + value-format="yyyy-MM-dd"
  112 + placeholder="选择有限期结束时间">
  113 + </el-date-picker>
  114 + </el-form-item>
  115 + </el-col>
  116 + <el-col :span="6">
  117 + <el-form-item label="审批方量(m³)" prop="squareMeasure">
  118 + <el-input v-model="form.squareMeasure" placeholder="请输入审批方量(m³)" />
  119 + </el-form-item>
  120 + </el-col>
  121 + </el-row>
  122 + <!-- <el-form-item label="剩余方量" prop="surplusSquareMeasure">-->
  123 + <!-- <el-input v-model="form.surplusSquareMeasure" placeholder="请输入剩余方量" />-->
  124 + <!-- </el-form-item>-->
  125 + <el-row :gutter="30">
  126 + <el-col :span="6">
  127 + <el-form-item label="洗车作业设施" prop="carWashingFacilities">
  128 + <el-select v-model="form.carWashingFacilities" placeholder="请选择洗车作业设施" style="width: 100%">
  129 + <el-option label="钢架洗车平台" value="钢架洗车平台" />
  130 + <el-option label="钢架洗车平台、过水槽" value="钢架洗车平台、过水槽" />
  131 + <el-option label="全自动洗车平台、过水槽" value="全自动洗车平台、过水槽" />
  132 + <el-option label="特殊事项" value="特殊事项" />
  133 + </el-select>
  134 + </el-form-item>
  135 + </el-col>
  136 + <el-col :span="6">
  137 + <el-form-item label="出口道路状况" prop="exitRoadCondition">
  138 + <el-select v-model="form.exitRoadCondition" placeholder="请选择出口道路状况" style="width: 100%">
  139 + <el-option label="硬化" value="硬化" />
  140 + <el-option label="未硬化" value="未硬化" />
  141 + </el-select>
  142 + </el-form-item>
  143 + </el-col>
  144 + </el-row>
  145 + <el-row :gutter="30">
  146 + <el-col :span="6">
  147 + <el-form-item label="照明设施" prop="lightingFacility">
  148 + <el-select v-model="form.lightingFacility" placeholder="请选择照明设施" style="width: 100%">
  149 + <el-option label="有" value="有" />
  150 + <el-option label="无" value="无" />
  151 + <el-option label="不适用" value="不适用" />
  152 + </el-select>
  153 + </el-form-item>
  154 + </el-col>
  155 + <el-col :span="6">
  156 + <el-form-item label="视频监控设施" prop="videoSurveillanceFacility">
  157 + <el-select v-model="form.videoSurveillanceFacility" placeholder="请选择视频监控设施" style="width: 100%">
  158 + <el-option label="有" value="有" />
  159 + <el-option label="无" value="无" />
  160 + <el-option label="不适用" value="不适用" />
  161 + </el-select>
  162 + </el-form-item>
  163 + </el-col>
  164 + </el-row>
  165 + <el-row :gutter="30">
  166 + <el-col :span="6">
  167 + <el-form-item label="填表人" prop="preparer">
  168 + <el-input v-model="form.preparer" placeholder="请输入填表人" />
  169 + </el-form-item>
  170 + </el-col>
  171 + <el-col :span="6">
  172 + <el-form-item label="办理意见" prop="handlingAdvice">
  173 + <el-input v-model="form.handlingAdvice" placeholder="请输入内容" />
  174 + </el-form-item>
  175 + </el-col>
  176 + </el-row>
  177 +
  178 +
  179 +
  180 +
  181 + <!-- <el-form-item label="消纳来源" prop="absorbSource">-->
  182 + <!-- <el-input v-model="form.absorbSource" placeholder="请输入消纳来源" />-->
  183 + <!-- </el-form-item>-->
  184 + <el-form-item label="电子围栏" prop="electronicFence">
  185 + <template v-slot:label>
  186 + <el-tooltip class="item" placement="right" style="float:left;">
  187 + <div slot="content">
  188 + 请保证经度在前,维度在后,中间用,隔开。多个坐标点之间用“;”隔开,示例:118.121,110.112;118.111,110.112
  189 + </div>
  190 + <div class="tips">
  191 + <span class="tipsSpan">
  192 + 电子围栏
  193 + </span>
  194 + <i class="el-icon-question"></i>
  195 + </div>
  196 + </el-tooltip>
  197 + <el-button @click="draw" type="text" style="float: left;margin-left: 10px">绘制围栏</el-button>
  198 + </template>
  199 +
  200 + <el-input v-model="form.electronicFence" type="textarea" placeholder="请输入内容" style="width: 49%"/>
  201 + </el-form-item>
  202 + <!-- <el-form-item label="信用状态">-->
  203 + <!-- <el-radio-group v-model="form.creditStatus">-->
  204 + <!-- <el-radio label="1">请选择字典生成</el-radio>-->
  205 + <!-- </el-radio-group>-->
  206 + <!-- </el-form-item>-->
  207 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  208 + <el-col :span="3">
  209 + <div class="upload_lable">
  210 + 批准文件
  211 + <el-upload
  212 + ref="upload"
  213 + action=""
  214 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  215 + :on-change="fileChange"
  216 + :auto-upload="false"
  217 + :show-file-list="false"
  218 + multiple
  219 + :file-list="approvalDocument">
  220 +
  221 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  222 + </el-upload>
  223 + </div>
  224 + </el-col>
  225 + <el-col :span="21">
  226 + <div class="upload_btn">
  227 + <div v-for="(item,index) in approvalDocument">
  228 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  229 + <div class="upload_close" @click="approvalDocument.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  230 + <el-image
  231 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  232 + :src="createUrl(item)"
  233 + :preview-src-list="[createUrl(item)]"
  234 + :z-index="999">
  235 + </el-image>
  236 + </div>
  237 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  238 + <div class="upload_close_file" @click="approvalDocument.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  239 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  240 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  241 + </div>
  242 + </div>
  243 + </div>
  244 + </el-col>
  245 + </el-row>
  246 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  247 + <el-col :span="3">
  248 + <div class="upload_lable">
  249 + 审批资料
  250 + <el-upload
  251 + ref="upload"
  252 + action=""
  253 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  254 + :on-change="fileChange1"
  255 + :auto-upload="false"
  256 + :show-file-list="false"
  257 + multiple
  258 + :file-list="approvalData">
  259 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  260 + </el-upload>
  261 + </div>
  262 + </el-col>
  263 + <el-col :span="21">
  264 + <div class="upload_btn">
  265 + <div v-for="(item,index) in approvalData">
  266 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  267 + <div class="upload_close" @click="approvalData.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  268 + <el-image
  269 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  270 + :src="createUrl(item)"
  271 + :preview-src-list="[createUrl(item)]"
  272 + :z-index="999">
  273 + </el-image>
  274 + </div>
  275 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  276 + <div class="upload_close_file" @click="approvalData.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  277 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  278 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  279 + </div>
  280 + </div>
  281 + </div>
  282 + </el-col>
  283 + </el-row>
  284 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  285 + <el-col :span="3">
  286 + <div class="upload_lable">
  287 + 现场照片
  288 + <el-upload
  289 + ref="upload"
  290 + action=""
  291 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  292 + :on-change="fileChange2"
  293 + :auto-upload="false"
  294 + :show-file-list="false"
  295 + multiple
  296 + :file-list="scenePhoto">
  297 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  298 + </el-upload>
  299 + </div>
  300 + </el-col>
  301 + <el-col :span="21">
  302 + <div class="upload_btn">
  303 + <div v-for="(item,index) in scenePhoto">
  304 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  305 + <div class="upload_close" @click="scenePhoto.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  306 + <el-image
  307 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  308 + :src="createUrl(item)"
  309 + :preview-src-list="[createUrl(item)]"
  310 + :z-index="999">
  311 + </el-image>
  312 + </div>
  313 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  314 + <div class="upload_close_file" @click="scenePhoto.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  315 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  316 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  317 + </div>
  318 + </div>
  319 + </div>
  320 + </el-col>
  321 + </el-row>
  322 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  323 + <el-col :span="3">
  324 + <div class="upload_lable">
  325 + 洗车设施照片
  326 + <el-upload
  327 + ref="upload"
  328 + action=""
  329 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  330 + :on-change="fileChange3"
  331 + :auto-upload="false"
  332 + :show-file-list="false"
  333 + multiple
  334 + :file-list="carWashingFacilitiesImage">
  335 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  336 + </el-upload>
  337 + </div>
  338 + </el-col>
  339 + <el-col :span="21">
  340 + <div class="upload_btn">
  341 + <div v-for="(item,index) in carWashingFacilitiesImage">
  342 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  343 + <div class="upload_close" @click="carWashingFacilitiesImage.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  344 + <el-image
  345 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  346 + :src="createUrl(item)"
  347 + :preview-src-list="[createUrl(item)]"
  348 + :z-index="999">
  349 + </el-image>
  350 + </div>
  351 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  352 + <div class="upload_close_file" @click="carWashingFacilitiesImage.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  353 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  354 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  355 + </div>
  356 + </div>
  357 + </div>
  358 + </el-col>
  359 + </el-row>
  360 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  361 + <el-col :span="3">
  362 + <div class="upload_lable">
  363 + 安全评估报告
  364 + <el-upload
  365 + ref="upload"
  366 + action=""
  367 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  368 + :on-change="fileChange4"
  369 + :auto-upload="false"
  370 + :show-file-list="false"
  371 + multiple
  372 + :file-list="safetyAssessmentReport">
  373 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  374 + </el-upload>
  375 + </div>
  376 + </el-col>
  377 + <el-col :span="21">
  378 + <div class="upload_btn">
  379 + <div v-for="(item,index) in safetyAssessmentReport">
  380 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  381 + <div class="upload_close" @click="safetyAssessmentReport.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  382 + <el-image
  383 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  384 + :src="createUrl(item)"
  385 + :preview-src-list="[createUrl(item)]"
  386 + :z-index="999">
  387 + </el-image>
  388 + </div>
  389 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  390 + <div class="upload_close_file" @click="safetyAssessmentReport.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  391 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  392 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  393 + </div>
  394 + </div>
  395 + </div>
  396 + </el-col>
  397 + </el-row>
  398 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  399 + <el-col :span="3">
  400 + <div class="upload_lable">
  401 + 环评报告及环保部门批复
  402 + <el-upload
  403 + ref="upload"
  404 + action=""
  405 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  406 + :on-change="fileChange5"
  407 + :auto-upload="false"
  408 + :show-file-list="false"
  409 + multiple
  410 + :file-list="environmentalApproval">
  411 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  412 + </el-upload>
  413 + </div>
  414 + </el-col>
  415 + <el-col :span="21">
  416 + <div class="upload_btn">
  417 + <div v-for="(item,index) in environmentalApproval">
  418 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  419 + <div class="upload_close" @click="environmentalApproval.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  420 + <el-image
  421 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  422 + :src="createUrl(item)"
  423 + :preview-src-list="[createUrl(item)]"
  424 + :z-index="999">
  425 + </el-image>
  426 + </div>
  427 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  428 + <div class="upload_close_file" @click="environmentalApproval.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  429 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  430 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  431 + </div>
  432 + </div>
  433 + </div>
  434 + </el-col>
  435 + </el-row>
  436 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  437 + <el-col :span="3">
  438 + <div class="upload_lable">
  439 + 签署消纳合同授权委托书
  440 + <el-upload
  441 + ref="upload"
  442 + action=""
  443 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  444 + :on-change="fileChange6"
  445 + :auto-upload="false"
  446 + :show-file-list="false"
  447 + multiple
  448 + :file-list="authorization">
  449 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  450 + </el-upload>
  451 + </div>
  452 + </el-col>
  453 + <el-col :span="21">
  454 + <div class="upload_btn">
  455 + <div v-for="(item,index) in authorization">
  456 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  457 + <div class="upload_close" @click="authorization.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  458 + <el-image
  459 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  460 + :src="createUrl(item)"
  461 + :preview-src-list="[createUrl(item)]"
  462 + :z-index="999">
  463 + </el-image>
  464 + </div>
  465 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  466 + <div class="upload_close_file" @click="authorization.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  467 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  468 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  469 + </div>
  470 + </div>
  471 + </div>
  472 + </el-col>
  473 + </el-row>
  474 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  475 + <el-col :span="3">
  476 + <div class="upload_lable">
  477 + 其他资料
  478 + <el-upload
  479 + ref="upload"
  480 + action=""
  481 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  482 + :on-change="fileChange7"
  483 + :auto-upload="false"
  484 + :show-file-list="false"
  485 + multiple
  486 + :file-list="otherInformation">
  487 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  488 + </el-upload>
  489 + </div>
  490 + </el-col>
  491 + <el-col :span="21">
  492 + <div class="upload_btn">
  493 + <div v-for="(item,index) in otherInformation">
  494 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  495 + <div class="upload_close" @click="otherInformation.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  496 + <el-image
  497 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  498 + :src="createUrl(item)"
  499 + :preview-src-list="[createUrl(item)]"
  500 + :z-index="999">
  501 + </el-image>
  502 + </div>
  503 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  504 + <div class="upload_close_file" @click="otherInformation.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  505 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  506 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  507 + </div>
  508 + </div>
  509 + </div>
  510 + </el-col>
  511 + </el-row>
  512 + <!-- <el-form-item label="" prop="environmentalApproval">-->
  513 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  514 + <!-- </el-form-item>-->
  515 + <!-- <el-form-item label="" prop="authorization">-->
  516 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  517 + <!-- </el-form-item>-->
  518 + <!-- <el-form-item label="" prop="otherInformation">-->
  519 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  520 + <!-- </el-form-item>-->
  521 + <!-- <el-form-item label="运输企业" prop="companyIds">-->
  522 + <!-- <el-input v-model="form.companyIds" placeholder="请输入运输企业" />-->
  523 + <!-- </el-form-item>-->
  524 + <!-- <el-form-item label="审批状态,0=审批中,1=审批通过,2=被驳回">-->
  525 + <!-- <el-radio-group v-model="form.status">-->
  526 + <!-- <el-radio label="1">请选择字典生成</el-radio>-->
  527 + <!-- </el-radio-group>-->
  528 + <!-- </el-form-item>-->
  529 + <!-- <el-form-item label="二维码" prop="qrCode">-->
  530 + <!-- <el-input v-model="form.qrCode" placeholder="请输入二维码" />-->
  531 + <!-- </el-form-item>-->
  532 + </el-form>
  533 + <div slot="footer" class="dialog-footer" style="margin-top: 20px">
  534 + <el-button type="primary" @click="submitForm">确 定</el-button>
  535 + <el-button @click="cancel">取 消</el-button>
  536 + </div>
  537 + <el-dialog title="高德地图" :visible.sync="openMap" width="1600px" height="750px" append-to-body>
  538 + <div class="serach_map">
  539 + 搜索:
  540 + <el-select
  541 + v-model="keywords"
  542 + filterable
  543 + remote
  544 + placeholder="请输入关键词"
  545 + :remote-method="remoteMethod"
  546 + :loading="loading"
  547 + :clearable="true"
  548 + size="mini"
  549 + @change="currentSelect"
  550 + style="width: 250px"
  551 + >
  552 + <el-option
  553 + v-for="item in mapOptions"
  554 + :key="item.id"
  555 + :label="item.name"
  556 + :value="item"
  557 + class="one-text"
  558 + >
  559 + <span style="float: left">{{ item.name }}</span>
  560 + <span style="float: right; color: #8492a6; font-size: 13px">{{
  561 + item.district
  562 + }}</span>
  563 + </el-option>
  564 + </el-select>
  565 + </div>
  566 + <div v-loading="loading" id="zcContainer" class="am-map" style="width:100%;height: 700px;"></div>
  567 + <div slot="footer" class="dialog-footer">
  568 + <el-button @click="clearPolyEditor">清 空</el-button>
  569 + <el-button @click="closeMap">取 消</el-button>
  570 + <el-button type="primary" @click="openMap = false">确 定</el-button>
  571 + </div>
  572 + </el-dialog>
  573 +
  574 + </div>
  575 +</template>
  576 +
  577 +<script>
  578 +import { listDisposalSite, getDisposalSite, delDisposalSite, addDisposalSite, updateDisposalSite, exportDisposalSite } from "@/api/unit/disposalSite";
  579 +import Treeselect from "@riophae/vue-treeselect";
  580 +import '@riophae/vue-treeselect/dist/vue-treeselect.css'
  581 +import {getAreaList} from "@/api/casefile/remoteServer";
  582 +import AMapLoader from '@amap/amap-jsapi-loader';
  583 +
  584 +// 设置安全密钥
  585 +window._AMapSecurityConfig = {
  586 + securityJsCode: 'aa1db7d8f534f3da3f6d8a6a71382802',
  587 +}
  588 +export default {
  589 + name: "DisposalSite",
  590 + components: {Treeselect,AMapLoader},
  591 + data() {
  592 + return {
  593 + // 遮罩层
  594 + loading: true,
  595 + // 选中数组
  596 + ids: [],
  597 + // 非单个禁用
  598 + single: true,
  599 + // 非多个禁用
  600 + multiple: true,
  601 + // 显示搜索条件
  602 + showSearch: true,
  603 + // 总条数
  604 + total: 0,
  605 + // 处理场所管理表格数据
  606 + disposalSiteList: [],
  607 + // 弹出层标题
  608 + title: "",
  609 + // 是否显示弹出层
  610 + open: false,
  611 + // 表单参数
  612 + form: {},
  613 + // 表单校验
  614 + rules: {
  615 + name: [
  616 + { required: true, message: "请输入处置场所名称", trigger: "blur" },
  617 + ],
  618 + address: [
  619 + { required: true, message: "请输入处置场所地址", trigger: "blur" },
  620 + ],
  621 + localArea: [
  622 + { required: true, message: "请选择所属区域", trigger: "blur" },
  623 + ],
  624 + siteType: [
  625 + { required: true, message: "请选择处置场所类型", trigger: "blur" },
  626 + ],
  627 + operatingArea: [
  628 + { required: true, message: "请选择锁业区域", trigger: "blur" },
  629 + ],
  630 + trashType: [
  631 + { required: true, message: "请选择可受纳建筑垃圾类型", trigger: "blur" },
  632 + ],
  633 + constructionUnit: [
  634 + { required: true, message: "请输入建设(施工)单位", trigger: "blur" },
  635 + ],
  636 + constructionUnitPerson: [
  637 + { required: true, message: "请输入建设(施工)单位责任人", trigger: "blur" },
  638 + ],
  639 + constructionUnitPersonPhone: [
  640 + { required: true, message: "请输入责任人联系电话", trigger: "blur" },
  641 + {
  642 + pattern: /^1(3|4|5|7|8|9)\d{9}$/,
  643 + message: '手机号格式错误',
  644 + trigger: 'change'
  645 + }
  646 + ],
  647 + validityBeginDate: [
  648 + { required: true, message: "请选择有限期开始时间", trigger: "blur" },
  649 + ],
  650 + validityEndDate: [
  651 + { required: true, message: "请选择有限期结束时间", trigger: "blur" },
  652 + ],
  653 + electronicFence: [
  654 + { required: true, message: "请输入电子围栏", trigger: "blur" },
  655 + ],
  656 + squareMeasure: [
  657 + { required: true, message: "请输入审批方量", trigger: "blur" },
  658 + ],
  659 + carWashingFacilities: [
  660 + { required: true, message: "请选择洗车作业设施", trigger: "blur" },
  661 + ],
  662 + exitRoadCondition: [
  663 + { required: true, message: "请选择出口道路状况", trigger: "blur" },
  664 + ],
  665 + lightingFacility: [
  666 + { required: true, message: "请选择照明设施", trigger: "blur" },
  667 + ],
  668 + videoSurveillanceFacility: [
  669 + { required: true, message: "请选择视频监控设施", trigger: "blur" },
  670 + ],
  671 + preparer: [
  672 + { required: true, message: "请输入填表人", trigger: "blur" },
  673 + ],
  674 + handlingAdvice: [
  675 + { required: true, message: "请输入办理意见", trigger: "blur" },
  676 + ],
  677 +
  678 + },
  679 + areas:[],
  680 + options:[{id:1,label:"工程渣土"},{id:2,label:"工程淤泥"},{id:3,label:"盾构渣土"},{id:4,label:"拆除垃圾"},{id:5,label:"其他建筑垃圾"}],
  681 + approvalDocument:[],
  682 + approvalDocumentSlide:[],
  683 + approvalData:[],
  684 + approvalDataSlide:[],
  685 + scenePhoto:[],
  686 + scenePhotoSlide:[],
  687 + carWashingFacilitiesImage:[],
  688 + carWashingFacilitiesImageSlide:[],
  689 + safetyAssessmentReport:[],
  690 + safetyAssessmentReportSlide:[],
  691 + environmentalApproval:[],
  692 + environmentalApprovalSlide:[],
  693 + authorization:[],
  694 + authorizationSlide:[],
  695 + otherInformation:[],
  696 + otherInformationSlide:[],
  697 + openMap:false,
  698 + // 地图
  699 + map: null,
  700 + // 编辑工具
  701 + polyEditor: null,
  702 + // 电子围栏数据集
  703 + polygonArr: [],
  704 + // 当前电子围栏
  705 + nowPolygon: null,
  706 + keywords: "",
  707 + mapOptions: [],
  708 + AutoComplete: null,
  709 + searchMarker: null,
  710 + };
  711 + },
  712 + created() {
  713 + getAreaList().then(res => {
  714 + this.areas = res.data;
  715 + });
  716 + this.initData();
  717 + },
  718 + watch: {
  719 + '$route.query.disposalSiteId': 'initData'
  720 + },
  721 + methods: {
  722 + reset(){
  723 + this.form = {};
  724 + this.approvalDocument = [];
  725 + this.approvalData = [];
  726 + this.scenePhoto = [];
  727 + this.carWashingFacilitiesImage = [];
  728 + this.safetyAssessmentReport = [];
  729 + this.environmentalApproval = [];
  730 + this.authorization = [];
  731 + this.otherInformation = [];
  732 + },
  733 + initData(){
  734 + this.reset();
  735 + let id = this.$route.query.disposalSiteId;
  736 + if(id!=null){
  737 + getDisposalSite(id).then(response => {
  738 + this.form = response.data;
  739 + //将字符串转换为int数组
  740 + let trashTypeArr = this.form.trashType.split(",").map(str => parseInt(str, 10));
  741 + this.form.trashType = trashTypeArr;
  742 + //将附件转换为前端可视化数组
  743 + if(this.form.approvalDocument!=null&&this.form.approvalDocument!==""){
  744 + let approvalDocument = this.form.approvalDocument.split(";");
  745 + approvalDocument.map(item=>{
  746 + let name = item.substring(item.lastIndexOf("/")+1);
  747 + this.approvalDocument.push({name:name,url:item})
  748 + })
  749 + }
  750 + if(this.form.approvalData!=null&&this.form.approvalData!==""){
  751 + let approvalData = this.form.approvalData.split(";");
  752 + approvalData.map(item=>{
  753 + let name = item.substring(item.lastIndexOf("/")+1);
  754 + this.approvalData.push({name:name,url:item})
  755 + })
  756 + }
  757 + if(this.form.scenePhoto!=null&&this.form.scenePhoto!==""){
  758 + let scenePhoto = this.form.scenePhoto.split(";");
  759 + scenePhoto.map(item=>{
  760 + let name = item.substring(item.lastIndexOf("/")+1);
  761 + this.scenePhoto.push({name:name,url:item})
  762 + })
  763 + }
  764 + if(this.form.carWashingFacilitiesImage!=null&&this.form.carWashingFacilitiesImage!==""){
  765 + let carWashingFacilitiesImage = this.form.carWashingFacilitiesImage.split(";");
  766 + carWashingFacilitiesImage.map(item=>{
  767 + let name = item.substring(item.lastIndexOf("/")+1);
  768 + this.carWashingFacilitiesImage.push({name:name,url:item})
  769 + })
  770 + }
  771 + if(this.form.safetyAssessmentReport!=null&&this.form.safetyAssessmentReport!==""){
  772 + let safetyAssessmentReport = this.form.safetyAssessmentReport.split(";");
  773 + safetyAssessmentReport.map(item=>{
  774 + let name = item.substring(item.lastIndexOf("/")+1);
  775 + this.safetyAssessmentReport.push({name:name,url:item})
  776 + })
  777 + }
  778 + if(this.form.environmentalApproval!=null&&this.form.environmentalApproval!==""){
  779 + let environmentalApproval = this.form.environmentalApproval.split(";");
  780 + environmentalApproval.map(item=>{
  781 + let name = item.substring(item.lastIndexOf("/")+1);
  782 + this.environmentalApproval.push({name:name,url:item})
  783 + })
  784 + }
  785 + if(this.form.authorization!=null&&this.form.authorization!==""){
  786 + let authorization = this.form.authorization.split(";");
  787 + authorization.map(item=>{
  788 + let name = item.substring(item.lastIndexOf("/")+1);
  789 + this.authorization.push({name:name,url:item})
  790 + })
  791 + }
  792 + if(this.form.otherInformation!=null&&this.form.otherInformation!==""){
  793 + let otherInformation = this.form.otherInformation.split(";");
  794 + otherInformation.map(item=>{
  795 + let name = item.substring(item.lastIndexOf("/")+1);
  796 + this.otherInformation.push({name:name,url:item})
  797 + })
  798 + }
  799 + });
  800 + }
  801 + },
  802 + closeMap(){
  803 + this.openMap = false;
  804 + this.form.electronicFence = null;
  805 + //清空地图图层
  806 + this.map.remove(this.nowPolygon);
  807 + },
  808 + // 选中提示
  809 + currentSelect(val) {
  810 + // 清空时不执行后面代码
  811 + if (!val) {
  812 + return ;
  813 + }
  814 + // 自动适应显示想显示的范围区域
  815 + this.map.setFitView();
  816 + //清除marker
  817 + if (this.searchMarker){
  818 + this.map.remove(this.searchMarker)
  819 + }
  820 + //设置marker
  821 + this.searchMarker = new AMap.Marker({
  822 + map: this.map,
  823 + position: [val.location.lng, val.location.lat],
  824 + });
  825 +
  826 + this.keywords = val.name
  827 + //定位
  828 + this.map.setCenter([val.location.lng, val.location.lat])
  829 + },
  830 + // 搜索地址
  831 + remoteMethod(query) {
  832 + if (query !== "") {
  833 + this.loading = true;
  834 + setTimeout(() => {
  835 + this.loading = false;
  836 + this.AutoComplete.search(query, (status, result) => {
  837 + this.mapOptions = result.tips;
  838 + });
  839 + }, 200);
  840 + } else {
  841 + this.mapOptions = [];
  842 + }
  843 + },
  844 + initAMap() {
  845 + const _this = this
  846 + // 加载高德地图
  847 + AMapLoader.load({
  848 + key: _this.$aMapKey, //设置高德地图申请的key
  849 + version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
  850 + plugins: ['AMap.ToolBar', 'AMap.PolygonEditor','AMap.AutoComplete', 'AMap.PlaceSearch', 'AMap.Marker'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
  851 + AMapUI: {
  852 + version: "1.1",
  853 + plugins: []
  854 + },
  855 + Loca: {
  856 + version: "2.0"
  857 + },
  858 + }).then(async (AMap) => {
  859 + _this.map = await new AMap.Map("zcContainer", { //设置地图容器id
  860 + viewMode: "2D", // 默认使用 2D 模式
  861 + center: [113.01814545605467, 28.201039299894283], // 初始化地图中心点位置
  862 + zoom: 11, //初始化地图层级
  863 + resizeEnable: true,
  864 + willreadoften: true
  865 + });
  866 +
  867 + _this.AutoComplete = await new AMap.AutoComplete({city:'全国'});
  868 +
  869 + // 图层样式切换控件(卫星图)
  870 + AMapUI.loadUI(['control/BasicControl'], function(BasicControl) {
  871 +
  872 + //图层切换控件
  873 + _this.map.addControl(new BasicControl.LayerSwitcher({
  874 + position: 'rb' // 右下角
  875 + }));
  876 +
  877 + });
  878 + _this.polyEditor = new AMap.PolygonEditor(_this.map);
  879 + if(_this.form.electronicFence!=null){
  880 + // 电子围栏经纬度
  881 + let path = _this.form.electronicFence.split(";");
  882 + path.map(item=>{
  883 + let arr = item.split(",");
  884 + //将电子围栏经纬度转换为double类型数组
  885 + _this.polygonArr.push([parseFloat(arr[0]),parseFloat(arr[1])]);
  886 + });
  887 + _this.nowPolygon = new AMap.Polygon({
  888 + path: _this.polygonArr
  889 + })
  890 + _this.map.add([_this.nowPolygon]);
  891 + _this.map.setFitView();
  892 + _this.polyEditor.addAdsorbPolygons([_this.nowPolygon]);
  893 + _this.nowPolygon.on('dblclick', () => {
  894 + _this.polyEditor.setTarget(_this.nowPolygon);
  895 + _this.polyEditor.open();
  896 + })
  897 + }
  898 + _this.polyEditor.on('add', function (data) {
  899 + _this.nowPolygon = data.target;
  900 + _this.polyEditor.addAdsorbPolygons(_this.nowPolygon);
  901 + _this.nowPolygon.on('dblclick', () => {
  902 + _this.polyEditor.setTarget(_this.nowPolygon);
  903 + _this.polyEditor.open();
  904 + })
  905 +
  906 + // 加个右击监听 双击图层进行编辑
  907 + _this.map.on("rightclick",function (e){
  908 + if (_this.polyEditor) {
  909 + const arr = _this.nowPolygon.getPath()
  910 + let pathArr = []
  911 + // 将获取的停车场坐标点转换格式后存入数组
  912 + for (let item of arr) {
  913 + const list = [item.lng, item.lat]
  914 + pathArr.push(list)
  915 + }
  916 +
  917 + var maxDistance = 0; // 最大距离
  918 + var maxPointIndex = []; // 记录最大距离对应的点索引
  919 +
  920 + // 计算所有点对之间的距离
  921 + for (var i = 0; i < pathArr.length; i++) {
  922 + for (var j = i + 1; j < pathArr.length; j++) {
  923 + var distance = AMap.GeometryUtil.distance(pathArr[i], pathArr[j]);
  924 + if (distance > maxDistance) {
  925 + maxDistance = distance;
  926 + maxPointIndex = [i, j];
  927 + }
  928 + }
  929 + }
  930 +
  931 + if(_this.nowPolygon!=null){
  932 + // 通过最大距离的点索引获取对应的点坐标
  933 + let mybounds = new AMap.Bounds(pathArr[maxPointIndex[0]],pathArr[maxPointIndex[1]]);
  934 + // 设置地图显示范围
  935 + _this.map.setBounds(mybounds);
  936 + }
  937 + //将经纬度存到form中
  938 + _this.form.electronicFence = pathArr.join(";");
  939 + _this.polyEditor.close();
  940 + }
  941 + });
  942 + })
  943 +
  944 + if(_this.nowPolygon===null){
  945 + _this.polyEditor.close();
  946 + _this.polyEditor.setTarget();
  947 + _this.polyEditor.open();
  948 + }
  949 +
  950 +
  951 + }).catch(e => {
  952 + console.log(e);
  953 + });
  954 + this.loading = false;
  955 + // this.openMap = false;
  956 + },
  957 + clearPolyEditor(){
  958 + this.form.electronicFence = null;
  959 + this.map.remove(this.nowPolygon);
  960 + // 关闭一下编辑器,防止出bug
  961 + this.polyEditor.close();
  962 + // 置空编辑区即为新增
  963 + this.polyEditor.setTarget();
  964 + // 打开编辑器即可开始绘制
  965 + this.polyEditor.open();
  966 + },
  967 + draw(){
  968 + if(this.polyEditor!=null){
  969 + if(this.form.electronicFence==null){
  970 + // 关闭一下编辑器,防止出bug
  971 + this.polyEditor.close();
  972 + // 置空编辑区即为新增
  973 + this.polyEditor.setTarget();
  974 + // 打开编辑器即可开始绘制
  975 + this.polyEditor.open();
  976 + }
  977 + }else{
  978 + this.initAMap();
  979 + }
  980 + this.openMap = true;
  981 + this.$alert('左键单击地图添加点,左键双击编辑,右键双击地图结束绘制', '温馨提示', {
  982 + confirmButtonText: '确定',
  983 + callback: action => {
  984 + let path = this.form.electronicFence.split(";");
  985 + path.map(item=>{
  986 + let arr = item.split(",");
  987 + this.polygonArr.push([arr[0],arr[1]]);
  988 + });
  989 + }
  990 + });
  991 + },
  992 + createUrl(file){
  993 + if(file.raw!=null){
  994 + return URL.createObjectURL(file.raw);
  995 + }else{
  996 + return process.env.VUE_APP_BASE_API + file.url;
  997 + }
  998 +
  999 + },
  1000 + tempDownload(row){
  1001 + let name = row.name;
  1002 + let url = "";
  1003 + if(row.raw!=null){
  1004 + url = URL.createObjectURL(row.raw);
  1005 + }else{
  1006 + url = process.env.VUE_APP_BASE_API + row.url;
  1007 + }
  1008 + console.log(url)
  1009 + const a = document.createElement('a')
  1010 + a.setAttribute('download', name)
  1011 + a.setAttribute('target', '_blank')
  1012 + a.setAttribute('href', url);
  1013 + a.click()
  1014 + },
  1015 + // 取消按钮
  1016 + cancel() {
  1017 + this.$tab.closePage({path:"/disposalSite/info"}).then(() => {
  1018 + this.$tab.openPage("处理场所管理", "/tool/disposalSite",{disposalSiteRefresh:1})
  1019 + })
  1020 + },
  1021 + /** 提交按钮 */
  1022 + submitForm() {
  1023 + this.$refs["form"].validate(valid => {
  1024 + if (valid) {
  1025 + let formData = new FormData();
  1026 + let form = this.form;
  1027 + //去掉params属性
  1028 + delete form.params;
  1029 + // formData.append('approvalDocument', null);
  1030 + // formData.append('approvalData', null);
  1031 + // formData.append('scenePhoto', null);
  1032 + // formData.append('carWashingFacilitiesImage', null);
  1033 + // formData.append('authorization', null);
  1034 + // formData.append('safetyAssessmentReport', null);
  1035 + // formData.append('environmentalApproval', null);
  1036 + // formData.append('otherInformation', null);
  1037 + //将新增的文件放入formData
  1038 +
  1039 + //先清空原有的附件
  1040 + form.approvalDocument = null;
  1041 + form.approvalData = null;
  1042 + form.scenePhoto = null;
  1043 + form.carWashingFacilitiesImage = null;
  1044 + form.authorization = null;
  1045 + form.safetyAssessmentReport = null;
  1046 + form.environmentalApproval = null;
  1047 + form.otherInformation = null;
  1048 + form.trashType = this.form.trashType.join(",");
  1049 +
  1050 + this.approvalDocument.forEach(item => {
  1051 + if (item.raw != null) {
  1052 + formData.append('approvalDocumentFiles', item.raw)
  1053 + }else{
  1054 + //将原有的附件拼接到form中
  1055 + form.approvalDocument = form.approvalDocument!==null?form.approvalDocument+";"+item.url:item.url;
  1056 + }
  1057 + })
  1058 +
  1059 + this.approvalData.forEach(item => {
  1060 + if (item.raw != null) {
  1061 + formData.append('approvalDataFiles', item.raw)
  1062 + }else{
  1063 + //将原有的附件拼接到form中
  1064 + form.approvalData = form.approvalData!==null?form.approvalData+";"+item.url:item.url;
  1065 + }
  1066 + })
  1067 + this.scenePhoto.forEach(item => {
  1068 + if (item.raw != null) {
  1069 + formData.append('scenePhotoFiles', item.raw)
  1070 + }else{
  1071 + //将原有的附件拼接到form中
  1072 + form.scenePhoto = form.scenePhoto!==null?form.scenePhoto+";"+item.url:item.url;
  1073 + }
  1074 + })
  1075 + this.carWashingFacilitiesImage.forEach(item => {
  1076 + if (item.raw != null) {
  1077 + formData.append('carWashingFacilitiesImageFiles', item.raw)
  1078 + }else{
  1079 + //将原有的附件拼接到form中
  1080 + form.carWashingFacilitiesImage = form.carWashingFacilitiesImage!==null?form.carWashingFacilitiesImage+";"+item.url:item.url;
  1081 + }
  1082 + })
  1083 + this.safetyAssessmentReport.forEach(item => {
  1084 + if (item.raw != null) {
  1085 + formData.append('safetyAssessmentReportFiles', item.raw)
  1086 + }else{
  1087 + //将原有的附件拼接到form中
  1088 + form.safetyAssessmentReport = form.safetyAssessmentReport!==null?form.safetyAssessmentReport+";"+item.url:item.url;
  1089 + }
  1090 + })
  1091 + this.environmentalApproval.forEach(item => {
  1092 + if (item.raw != null) {
  1093 + formData.append('environmentalApprovalFiles', item.raw)
  1094 + }else{
  1095 + //将原有的附件拼接到form中
  1096 + form.environmentalApproval = form.environmentalApproval!==null?form.environmentalApproval+";"+item.url:item.url;
  1097 + }
  1098 + })
  1099 + this.authorization.forEach(item => {
  1100 + if (item.raw != null) {
  1101 + formData.append('authorizationFiles', item.raw)
  1102 + }else{
  1103 + //将原有的附件拼接到form中
  1104 + form.authorization = form.authorization!==null?form.authorization+";"+item.url:item.url;
  1105 + }
  1106 + })
  1107 + this.otherInformation.forEach(item => {
  1108 + if (item.raw != null) {
  1109 + formData.append('otherInformationFiles', item.raw)
  1110 + }else{
  1111 + //将原有的附件拼接到form中
  1112 + form.otherInformation = form.otherInformation!==null?form.otherInformation+";"+item.url:item.url;
  1113 + }
  1114 + })
  1115 + for (let key in form) {
  1116 + formData.append(key, form[key] == null ? "" : form[key])
  1117 + }
  1118 + if (this.form.id != null) {
  1119 + updateDisposalSite(formData).then(response => {
  1120 + this.msgSuccess("修改成功");
  1121 + this.$tab.closePage({path:"/disposalSite/infoEdit"}).then(() => {
  1122 + this.$tab.openPage("处理场所管理", "/tool/disposalSite",{disposalSiteRefresh:1})
  1123 + })
  1124 + });
  1125 + } else {
  1126 + addDisposalSite(formData).then(response => {
  1127 + this.msgSuccess("新增成功");
  1128 + this.$tab.closePage({path:"/disposalSite/info"}).then(() => {
  1129 + this.$tab.openPage("处理场所管理", "/tool/disposalSite",{disposalSiteRefresh:1})
  1130 + })
  1131 + });
  1132 + }
  1133 + }
  1134 + });
  1135 + },
  1136 + /**
  1137 + * 文件改变时,限制文件上传格式和大小
  1138 + * 文件格式只能为docx/doc/pdf/png/jpeg/png/jpg
  1139 + * 大小不超过20M
  1140 + * */
  1141 + fileChange(file, fileList) {
  1142 + let count = 0;
  1143 + for (let i = 0; i < fileList.length; i++) {
  1144 + // console.log(fileList.length)
  1145 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  1146 + if (fileList[i].name == file.name) {
  1147 + count++;
  1148 + if (count == 2) {
  1149 + this.$message({
  1150 + message: '已存在此文件!',
  1151 + type: 'warning'
  1152 + });
  1153 + for (let j = fileList.length; j > 0; j--) {
  1154 + //如果存在此文件,去除新选择的重复文件
  1155 + if (fileList[j - 1].name == file.name) {
  1156 + fileList.splice(j - 1, 1);
  1157 + i--;
  1158 + return false;
  1159 + }
  1160 + }
  1161 + }
  1162 + }
  1163 + }
  1164 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  1165 + //格式符合后判断大小
  1166 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  1167 + let max5M = file.size / 1024 / 1024 < 100;
  1168 + if (!max5M) {
  1169 + this.$message({
  1170 + message: '上传文件大小不得超过100M!',
  1171 + type: 'warning'
  1172 + });
  1173 + fileList = fileList.splice(fileList.length - 1, 1);
  1174 + } else {
  1175 + //符合条件后进行添加
  1176 + this.approvalDocument = fileList
  1177 + }
  1178 + } else {
  1179 + this.$message({
  1180 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  1181 + type: 'warning'
  1182 + });
  1183 + fileList = fileList.splice(fileList.length - 1, 1);
  1184 + }
  1185 + },
  1186 + fileChange1(file, fileList) {
  1187 + let count = 0;
  1188 + for (let i = 0; i < fileList.length; i++) {
  1189 + // console.log(fileList.length)
  1190 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  1191 + if (fileList[i].name == file.name) {
  1192 + count++;
  1193 + if (count == 2) {
  1194 + this.$message({
  1195 + message: '已存在此文件!',
  1196 + type: 'warning'
  1197 + });
  1198 + for (let j = fileList.length; j > 0; j--) {
  1199 + //如果存在此文件,去除新选择的重复文件
  1200 + if (fileList[j - 1].name == file.name) {
  1201 + fileList.splice(j - 1, 1);
  1202 + i--;
  1203 + return false;
  1204 + }
  1205 + }
  1206 + }
  1207 + }
  1208 + }
  1209 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  1210 + //格式符合后判断大小
  1211 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  1212 + let max5M = file.size / 1024 / 1024 < 100;
  1213 + if (!max5M) {
  1214 + this.$message({
  1215 + message: '上传文件大小不得超过100M!',
  1216 + type: 'warning'
  1217 + });
  1218 + fileList = fileList.splice(fileList.length - 1, 1);
  1219 + } else {
  1220 + //符合条件后进行添加
  1221 + this.approvalData = fileList
  1222 + }
  1223 + } else {
  1224 + this.$message({
  1225 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  1226 + type: 'warning'
  1227 + });
  1228 + fileList = fileList.splice(fileList.length - 1, 1);
  1229 + }
  1230 + },
  1231 + fileChange2(file, fileList) {
  1232 + let count = 0;
  1233 + for (let i = 0; i < fileList.length; i++) {
  1234 + // console.log(fileList.length)
  1235 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  1236 + if (fileList[i].name == file.name) {
  1237 + count++;
  1238 + if (count == 2) {
  1239 + this.$message({
  1240 + message: '已存在此文件!',
  1241 + type: 'warning'
  1242 + });
  1243 + for (let j = fileList.length; j > 0; j--) {
  1244 + //如果存在此文件,去除新选择的重复文件
  1245 + if (fileList[j - 1].name == file.name) {
  1246 + fileList.splice(j - 1, 1);
  1247 + i--;
  1248 + return false;
  1249 + }
  1250 + }
  1251 + }
  1252 + }
  1253 + }
  1254 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  1255 + //格式符合后判断大小
  1256 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  1257 + let max5M = file.size / 1024 / 1024 < 100;
  1258 + if (!max5M) {
  1259 + this.$message({
  1260 + message: '上传文件大小不得超过100M!',
  1261 + type: 'warning'
  1262 + });
  1263 + fileList = fileList.splice(fileList.length - 1, 1);
  1264 + } else {
  1265 + //符合条件后进行添加
  1266 + this.scenePhoto = fileList
  1267 + }
  1268 + } else {
  1269 + this.$message({
  1270 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  1271 + type: 'warning'
  1272 + });
  1273 + fileList = fileList.splice(fileList.length - 1, 1);
  1274 + }
  1275 + },
  1276 + fileChange3(file, fileList) {
  1277 + let count = 0;
  1278 + for (let i = 0; i < fileList.length; i++) {
  1279 + // console.log(fileList.length)
  1280 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  1281 + if (fileList[i].name == file.name) {
  1282 + count++;
  1283 + if (count == 2) {
  1284 + this.$message({
  1285 + message: '已存在此文件!',
  1286 + type: 'warning'
  1287 + });
  1288 + for (let j = fileList.length; j > 0; j--) {
  1289 + //如果存在此文件,去除新选择的重复文件
  1290 + if (fileList[j - 1].name == file.name) {
  1291 + fileList.splice(j - 1, 1);
  1292 + i--;
  1293 + return false;
  1294 + }
  1295 + }
  1296 + }
  1297 + }
  1298 + }
  1299 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  1300 + //格式符合后判断大小
  1301 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  1302 + let max5M = file.size / 1024 / 1024 < 100;
  1303 + if (!max5M) {
  1304 + this.$message({
  1305 + message: '上传文件大小不得超过100M!',
  1306 + type: 'warning'
  1307 + });
  1308 + fileList = fileList.splice(fileList.length - 1, 1);
  1309 + } else {
  1310 + //符合条件后进行添加
  1311 + this.carWashingFacilitiesImage = fileList
  1312 + }
  1313 + } else {
  1314 + this.$message({
  1315 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  1316 + type: 'warning'
  1317 + });
  1318 + fileList = fileList.splice(fileList.length - 1, 1);
  1319 + }
  1320 + },
  1321 + fileChange4(file, fileList) {
  1322 + let count = 0;
  1323 + for (let i = 0; i < fileList.length; i++) {
  1324 + // console.log(fileList.length)
  1325 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  1326 + if (fileList[i].name == file.name) {
  1327 + count++;
  1328 + if (count == 2) {
  1329 + this.$message({
  1330 + message: '已存在此文件!',
  1331 + type: 'warning'
  1332 + });
  1333 + for (let j = fileList.length; j > 0; j--) {
  1334 + //如果存在此文件,去除新选择的重复文件
  1335 + if (fileList[j - 1].name == file.name) {
  1336 + fileList.splice(j - 1, 1);
  1337 + i--;
  1338 + return false;
  1339 + }
  1340 + }
  1341 + }
  1342 + }
  1343 + }
  1344 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  1345 + //格式符合后判断大小
  1346 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  1347 + let max5M = file.size / 1024 / 1024 < 100;
  1348 + if (!max5M) {
  1349 + this.$message({
  1350 + message: '上传文件大小不得超过100M!',
  1351 + type: 'warning'
  1352 + });
  1353 + fileList = fileList.splice(fileList.length - 1, 1);
  1354 + } else {
  1355 + //符合条件后进行添加
  1356 + this.safetyAssessmentReport = fileList
  1357 + }
  1358 + } else {
  1359 + this.$message({
  1360 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  1361 + type: 'warning'
  1362 + });
  1363 + fileList = fileList.splice(fileList.length - 1, 1);
  1364 + }
  1365 + },
  1366 + fileChange5(file, fileList) {
  1367 + let count = 0;
  1368 + for (let i = 0; i < fileList.length; i++) {
  1369 + // console.log(fileList.length)
  1370 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  1371 + if (fileList[i].name == file.name) {
  1372 + count++;
  1373 + if (count == 2) {
  1374 + this.$message({
  1375 + message: '已存在此文件!',
  1376 + type: 'warning'
  1377 + });
  1378 + for (let j = fileList.length; j > 0; j--) {
  1379 + //如果存在此文件,去除新选择的重复文件
  1380 + if (fileList[j - 1].name == file.name) {
  1381 + fileList.splice(j - 1, 1);
  1382 + i--;
  1383 + return false;
  1384 + }
  1385 + }
  1386 + }
  1387 + }
  1388 + }
  1389 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  1390 + //格式符合后判断大小
  1391 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  1392 + let max5M = file.size / 1024 / 1024 < 100;
  1393 + if (!max5M) {
  1394 + this.$message({
  1395 + message: '上传文件大小不得超过100M!',
  1396 + type: 'warning'
  1397 + });
  1398 + fileList = fileList.splice(fileList.length - 1, 1);
  1399 + } else {
  1400 + //符合条件后进行添加
  1401 + this.environmentalApproval = fileList
  1402 + }
  1403 + } else {
  1404 + this.$message({
  1405 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  1406 + type: 'warning'
  1407 + });
  1408 + fileList = fileList.splice(fileList.length - 1, 1);
  1409 + }
  1410 + },
  1411 + fileChange6(file, fileList) {
  1412 + let count = 0;
  1413 + for (let i = 0; i < fileList.length; i++) {
  1414 + // console.log(fileList.length)
  1415 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  1416 + if (fileList[i].name == file.name) {
  1417 + count++;
  1418 + if (count == 2) {
  1419 + this.$message({
  1420 + message: '已存在此文件!',
  1421 + type: 'warning'
  1422 + });
  1423 + for (let j = fileList.length; j > 0; j--) {
  1424 + //如果存在此文件,去除新选择的重复文件
  1425 + if (fileList[j - 1].name == file.name) {
  1426 + fileList.splice(j - 1, 1);
  1427 + i--;
  1428 + return false;
  1429 + }
  1430 + }
  1431 + }
  1432 + }
  1433 + }
  1434 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  1435 + //格式符合后判断大小
  1436 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  1437 + let max5M = file.size / 1024 / 1024 < 100;
  1438 + if (!max5M) {
  1439 + this.$message({
  1440 + message: '上传文件大小不得超过100M!',
  1441 + type: 'warning'
  1442 + });
  1443 + fileList = fileList.splice(fileList.length - 1, 1);
  1444 + } else {
  1445 + //符合条件后进行添加
  1446 + this.authorization = fileList
  1447 + }
  1448 + } else {
  1449 + this.$message({
  1450 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  1451 + type: 'warning'
  1452 + });
  1453 + fileList = fileList.splice(fileList.length - 1, 1);
  1454 + }
  1455 + },
  1456 + fileChange7(file, fileList) {
  1457 + let count = 0;
  1458 + for (let i = 0; i < fileList.length; i++) {
  1459 + // console.log(fileList.length)
  1460 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  1461 + if (fileList[i].name == file.name) {
  1462 + count++;
  1463 + if (count == 2) {
  1464 + this.$message({
  1465 + message: '已存在此文件!',
  1466 + type: 'warning'
  1467 + });
  1468 + for (let j = fileList.length; j > 0; j--) {
  1469 + //如果存在此文件,去除新选择的重复文件
  1470 + if (fileList[j - 1].name == file.name) {
  1471 + fileList.splice(j - 1, 1);
  1472 + i--;
  1473 + return false;
  1474 + }
  1475 + }
  1476 + }
  1477 + }
  1478 + }
  1479 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  1480 + //格式符合后判断大小
  1481 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  1482 + let max5M = file.size / 1024 / 1024 < 100;
  1483 + if (!max5M) {
  1484 + this.$message({
  1485 + message: '上传文件大小不得超过100M!',
  1486 + type: 'warning'
  1487 + });
  1488 + fileList = fileList.splice(fileList.length - 1, 1);
  1489 + } else {
  1490 + //符合条件后进行添加
  1491 + this.otherInformation = fileList
  1492 + }
  1493 + } else {
  1494 + this.$message({
  1495 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  1496 + type: 'warning'
  1497 + });
  1498 + fileList = fileList.splice(fileList.length - 1, 1);
  1499 + }
  1500 + },
  1501 + }
  1502 +};
  1503 +</script>
  1504 +<style lang="scss" scoped>
  1505 +.upload_lable{
  1506 + border-right: 1px solid #dcdfe6;
  1507 + padding: 27px 30px;
  1508 + background: #fafafa;
  1509 + text-align: center;
  1510 +}
  1511 +.upload_btn{
  1512 + max-height: 106px;
  1513 +}
  1514 +.upload_close{
  1515 + position: absolute;
  1516 + left: 105px;
  1517 + z-index:99;
  1518 + top:-1px;
  1519 + font-size:18px;
  1520 + color:red;
  1521 +}
  1522 +.upload_close_file{
  1523 + position: absolute;
  1524 + left: 80px;
  1525 + z-index:99;
  1526 + top:-1px;
  1527 + font-size:18px;
  1528 + color:red;
  1529 +}
  1530 +.upload_div_image{
  1531 + display: inline-block;
  1532 + width: 110px;
  1533 + height: 95px;
  1534 + position: relative;
  1535 + float: left;
  1536 + margin-left: 5px;
  1537 +}
  1538 +.upload_div_file{
  1539 + display: inline-block;
  1540 + width: 110px;
  1541 + height: 95px;
  1542 + text-align: center;
  1543 + float:left;
  1544 + margin: 5px;
  1545 + position: relative;
  1546 +}
  1547 +.serach_map{
  1548 + position: absolute;
  1549 + top: 100px;
  1550 + left: 25px;
  1551 + z-index: 999;
  1552 + background: #fff;
  1553 + padding: 10px;
  1554 + border-radius: 5px;
  1555 + box-shadow: 0 0 10px rgba(0,0,0,.2);
  1556 +}
  1557 +</style>
... ...
trash-ui/src/views/unit/driver/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="108px">
  4 + <el-form-item label="驾驶员名称" prop="name">
  5 + <el-input
  6 + v-model="queryParams.name"
  7 + placeholder="请输入驾驶员名称"
  8 + clearable
  9 + size="small"
  10 + @keyup.enter.native="handleQuery"
  11 + />
  12 + </el-form-item>
  13 + <el-form-item label="所属公司" prop="companyName">
  14 + <el-input
  15 + v-model="queryParams.companyName"
  16 + placeholder="请输入所属公司"
  17 + clearable
  18 + size="small"
  19 + @keyup.enter.native="handleQuery"
  20 + />
  21 + </el-form-item>
  22 +
  23 + <el-form-item label="审批状态" prop="status">
  24 + <el-select v-model="queryParams.status" placeholder="请选择审批状态" clearable size="small">
  25 + <el-option label="审批中" value="0" />
  26 + <el-option label="审批通过" value="1" />
  27 + <el-option label="被驳回" value="2" />
  28 + </el-select>
  29 + </el-form-item>
  30 + <el-form-item>
  31 + <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  32 + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  33 + </el-form-item>
  34 + </el-form>
  35 +
  36 + <el-row :gutter="10" class="mb8">
  37 + <el-col :span="1.5">
  38 + <el-button
  39 + type="primary"
  40 + icon="el-icon-plus"
  41 + size="mini"
  42 + @click="handleAdd"
  43 + v-hasPermi="['unit:driver:add']"
  44 + >新增</el-button>
  45 + </el-col>
  46 + <el-col :span="1.5">
  47 + <el-button
  48 + type="success"
  49 + icon="el-icon-edit"
  50 + size="mini"
  51 + :disabled="single"
  52 + @click="handleUpdate"
  53 + v-hasPermi="['unit:driver:edit']"
  54 + >修改</el-button>
  55 + </el-col>
  56 + <el-col :span="1.5">
  57 + <el-button
  58 + type="danger"
  59 + icon="el-icon-delete"
  60 + size="mini"
  61 + :disabled="multiple"
  62 + @click="handleDelete"
  63 + v-hasPermi="['unit:driver:remove']"
  64 + >删除</el-button>
  65 + </el-col>
  66 + <el-col :span="1.5">
  67 + <el-button
  68 + type="warning"
  69 + icon="el-icon-download"
  70 + size="mini"
  71 + @click="handleExport"
  72 + v-hasPermi="['unit:driver:export']"
  73 + >导出</el-button>
  74 + </el-col>
  75 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  76 + </el-row>
  77 +
  78 + <el-table v-loading="loading" :data="driverList" @selection-change="handleSelectionChange">
  79 + <el-table-column type="selection" width="55" align="center" />
  80 + <el-table-column type="index" width="55" align="center" label="序号"/>
  81 + <el-table-column label="姓名" align="center" prop="name" />
  82 + <el-table-column label="身份证" align="center" prop="identityCard" />
  83 + <el-table-column label="所属公司" align="center" prop="companyName" />
  84 + <el-table-column label="从业资格证有效期" align="center" prop="professionalQualificationBeginDate" width="200">
  85 + <template slot-scope="scope">
  86 + <span>{{ parseTime(scope.row.professionalQualificationBeginDate, '{y}-{m}-{d}') +' ~ '+ parseTime(scope.row.professionalQualificationEndDate, '{y}-{m}-{d}') }}</span>
  87 + </template>
  88 + </el-table-column>
  89 +<!-- <el-table-column label="从业资格证有效期终" align="center" prop="professionalQualificationEndDate" width="180">-->
  90 +<!-- <template slot-scope="scope">-->
  91 +<!-- <span>{{ parseTime(scope.row.professionalQualificationEndDate, '{y}-{m}-{d}') }}</span>-->
  92 +<!-- </template>-->
  93 +<!-- </el-table-column>-->
  94 + <el-table-column label="驾驶证有效期" align="center" prop="drivingLicenceBeginDate" width="200">
  95 + <template slot-scope="scope">
  96 + <span>{{ parseTime(scope.row.drivingLicenceBeginDate, '{y}-{m}-{d}')+' ~ '+parseTime(scope.row.drivingLicenceEndDate, '{y}-{m}-{d}') }}</span>
  97 + </template>
  98 + </el-table-column>
  99 +<!-- <el-table-column label="驾驶证有效期终" align="center" prop="drivingLicenceEndDate" width="180">-->
  100 +<!-- <template slot-scope="scope">-->
  101 +<!-- <span>{{ parseTime(scope.row.drivingLicenceEndDate, '{y}-{m}-{d}') }}</span>-->
  102 +<!-- </template>-->
  103 +<!-- </el-table-column>-->
  104 + <el-table-column label="审批状态" align="center" prop="status" >
  105 + <template slot-scope="scope">
  106 + {{ parseStatus(scope.row.status)}}
  107 + </template>
  108 + </el-table-column>
  109 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  110 + <template slot-scope="scope">
  111 + <el-button
  112 + size="mini"
  113 + type="text"
  114 + icon="el-icon-edit"
  115 + @click="handleUpdate(scope.row)"
  116 + v-hasPermi="['unit:driver:edit']"
  117 + >修改</el-button>
  118 + <el-button
  119 + size="mini"
  120 + type="text"
  121 + icon="el-icon-delete"
  122 + @click="handleDelete(scope.row)"
  123 + v-hasPermi="['unit:driver:remove']"
  124 + >删除</el-button>
  125 + </template>
  126 + </el-table-column>
  127 + </el-table>
  128 +
  129 + <pagination
  130 + v-show="total>0"
  131 + :total="total"
  132 + :page.sync="queryParams.pageNum"
  133 + :limit.sync="queryParams.pageSize"
  134 + @pagination="getList"
  135 + />
  136 + </div>
  137 +</template>
  138 +
  139 +<script>
  140 +import { listDriver, getDriver, delDriver, addDriver, updateDriver, exportDriver } from "@/api/unit/driver";
  141 +import Editor from '@/components/Editor';
  142 +
  143 +export default {
  144 + name: "Driver",
  145 + components: { Editor },
  146 + data() {
  147 + return {
  148 + // 遮罩层
  149 + loading: true,
  150 + // 选中数组
  151 + ids: [],
  152 + // 非单个禁用
  153 + single: true,
  154 + // 非多个禁用
  155 + multiple: true,
  156 + // 显示搜索条件
  157 + showSearch: true,
  158 + // 总条数
  159 + total: 0,
  160 + // 驾驶员管理表格数据
  161 + driverList: [],
  162 + // 弹出层标题
  163 + title: "",
  164 + // 是否显示弹出层
  165 + open: false,
  166 + // 查询参数
  167 + queryParams: {
  168 + pageNum: 1,
  169 + pageSize: 10,
  170 + name: null,
  171 + identityCard: null,
  172 + companyId: null,
  173 + professionalQualificationBeginDate: null,
  174 + professionalQualificationEndDate: null,
  175 + drivingLicenceBeginDate: null,
  176 + drivingLicenceEndDate: null,
  177 + safetyTrainingDate: null,
  178 + safetyTrainingContent: null,
  179 + drivingLicence: null,
  180 + professionalQualification: null,
  181 + safetyTraining: null,
  182 + status: null,
  183 + photographOne: null,
  184 + photographTwo: null
  185 + },
  186 + // 表单参数
  187 + form: {},
  188 + // 表单校验
  189 + rules: {
  190 + }
  191 + };
  192 + },
  193 + created() {
  194 + this.getList();
  195 + },
  196 + methods: {
  197 + /** 查询驾驶员管理列表 */
  198 + getList() {
  199 + this.loading = true;
  200 + listDriver(this.queryParams).then(response => {
  201 + this.driverList = response.rows;
  202 + this.total = response.total;
  203 + this.loading = false;
  204 + });
  205 + },
  206 +
  207 + /** 搜索按钮操作 */
  208 + handleQuery() {
  209 + this.queryParams.pageNum = 1;
  210 + this.getList();
  211 + },
  212 + /** 重置按钮操作 */
  213 + resetQuery() {
  214 + this.resetForm("queryForm");
  215 + this.handleQuery();
  216 + },
  217 + // 多选框选中数据
  218 + handleSelectionChange(selection) {
  219 + this.ids = selection.map(item => item.id)
  220 + this.single = selection.length!==1
  221 + this.multiple = !selection.length
  222 + },
  223 + /** 新增按钮操作 */
  224 + handleAdd() {
  225 + this.$tab.openPage("新增驾驶员","/driverInfo/info",{driverInfoRefresh:0});
  226 + },
  227 + /** 修改按钮操作 */
  228 + handleUpdate(row) {
  229 + const id = row.id || this.ids
  230 + this.$tab.openPage("修改驾驶员","/driverInfo/infoEdit",{driverInfoId: id,driverInfoRefresh:0});
  231 + },
  232 + /** 删除按钮操作 */
  233 + handleDelete(row) {
  234 + const ids = row.id || this.ids;
  235 + this.$confirm('是否确认删除驾驶员管理编号为"' + ids + '"的数据项?', "警告", {
  236 + confirmButtonText: "确定",
  237 + cancelButtonText: "取消",
  238 + type: "warning"
  239 + }).then(function() {
  240 + return delDriver(ids);
  241 + }).then(() => {
  242 + this.getList();
  243 + this.msgSuccess("删除成功");
  244 + })
  245 + },
  246 + /** 导出按钮操作 */
  247 + handleExport() {
  248 + const queryParams = this.queryParams;
  249 + this.$confirm('是否确认导出所有驾驶员管理数据项?', "警告", {
  250 + confirmButtonText: "确定",
  251 + cancelButtonText: "取消",
  252 + type: "warning"
  253 + }).then(function() {
  254 + return exportDriver(queryParams);
  255 + }).then(response => {
  256 + this.download(response.msg);
  257 + })
  258 + }
  259 + }
  260 +};
  261 +</script>
... ...
trash-ui/src/views/unit/driver/info.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 +
  4 + <!-- 添加或修改处理场所管理对话框 -->
  5 + <h3>
  6 + 基础信息
  7 + </h3>
  8 + <el-form ref="form" :model="form" :rules="rules" label-width="80px" label-position="top">
  9 + <el-row :gutter="30">
  10 + <el-col :span="7">
  11 + <el-form-item label="姓名" prop="name">
  12 + <el-input v-model="form.name" placeholder="请输入姓名" />
  13 + </el-form-item>
  14 + </el-col>
  15 + <el-col :span="7">
  16 + <el-form-item label="身份证号码" prop="identityCard">
  17 + <el-input v-model="form.identityCard" placeholder="请输入身份证" />
  18 + </el-form-item>
  19 + </el-col>
  20 + <el-col :span="7">
  21 + <el-form-item label="手机号码" prop="phoneNo">
  22 + <el-input v-model="form.phoneNo" placeholder="请输入手机号码" :maxlength="11" show-word-limit/>
  23 + </el-form-item>
  24 + </el-col>
  25 + </el-row>
  26 + <el-row :gutter="30">
  27 +
  28 +
  29 + <el-col :span="7">
  30 + <el-form-item label="从业资格证有效期起" prop="professionalQualificationBeginDate">
  31 + <el-date-picker clearable size="small" style="width: 100%"
  32 + v-model="form.professionalQualificationBeginDate"
  33 + type="date"
  34 + value-format="yyyy-MM-dd"
  35 + placeholder="选择从业资格证有效期起">
  36 + </el-date-picker>
  37 + </el-form-item>
  38 + </el-col>
  39 + <el-col :span="7">
  40 + <el-form-item label="从业资格证有效期终" prop="professionalQualificationEndDate">
  41 + <el-date-picker clearable size="small" style="width: 100%"
  42 + v-model="form.professionalQualificationEndDate"
  43 + type="date"
  44 + value-format="yyyy-MM-dd"
  45 + placeholder="选择从业资格证有效期终">
  46 + </el-date-picker>
  47 + </el-form-item>
  48 + </el-col>
  49 + <el-col :span="7">
  50 + <el-form-item label="所属公司" prop="companyId">
  51 + <el-select v-model="form.companyId" placeholder="请选择所属公司" clearable style="width: 100%;">
  52 + <el-option v-for="(item,index) in enterpriseList" :label="item.name" :value="item.id" :key="index"/>
  53 + </el-select>
  54 + </el-form-item>
  55 + </el-col>
  56 + </el-row>
  57 + <el-row :gutter="30">
  58 + <el-col :span="7">
  59 + <el-form-item label="驾驶证有效期起" prop="drivingLicenceBeginDate">
  60 + <el-date-picker clearable size="small" style="width: 100%"
  61 + v-model="form.drivingLicenceBeginDate"
  62 + type="date"
  63 + value-format="yyyy-MM-dd"
  64 + placeholder="选择驾驶证有效期起">
  65 + </el-date-picker>
  66 + </el-form-item>
  67 +
  68 +
  69 + </el-col>
  70 + <el-col :span="7">
  71 + <el-form-item label="驾驶证有效期终" prop="drivingLicenceEndDate">
  72 + <el-date-picker clearable size="small" style="width: 100%"
  73 + v-model="form.drivingLicenceEndDate"
  74 + type="date"
  75 + value-format="yyyy-MM-dd"
  76 + placeholder="选择驾驶证有效期终">
  77 + </el-date-picker>
  78 + </el-form-item>
  79 +
  80 + </el-col>
  81 + <el-col :span="7">
  82 + <el-row>
  83 + <el-col :span="8">
  84 + <el-form-item label="安全教育培训日期" prop="safetyTrainingDate">
  85 + <el-date-picker clearable size="small" style="width: 100%"
  86 + v-model="form.safetyTrainingDate"
  87 + type="date"
  88 + value-format="yyyy-MM-dd"
  89 + placeholder="选择日期">
  90 + </el-date-picker>
  91 + </el-form-item>
  92 + </el-col>
  93 + <el-col :span="16">
  94 + <el-form-item label="安全教育培训内容">
  95 + <el-input v-model="form.safetyTrainingContent" placeholder="请输入内容"/>
  96 + </el-form-item>
  97 + </el-col>
  98 + </el-row>
  99 + </el-col>
  100 + </el-row>
  101 +
  102 + <el-row :gutter="30">
  103 + <el-col :span="14">
  104 + <el-form-item label="备注" prop="remark">
  105 + <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
  106 + </el-form-item>
  107 + </el-col>
  108 + </el-row>
  109 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  110 + <el-col :span="3">
  111 + <div class="upload_lable">
  112 + <span style="color:red;">*</span>驾驶证
  113 + <el-upload
  114 + ref="upload"
  115 + action=""
  116 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  117 + :on-change="fileChange"
  118 + :auto-upload="false"
  119 + :show-file-list="false"
  120 + multiple
  121 + :file-list="drivingLicence">
  122 +
  123 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  124 + </el-upload>
  125 + </div>
  126 + </el-col>
  127 + <el-col :span="21">
  128 + <div class="upload_btn">
  129 + <div v-for="(item,index) in drivingLicence">
  130 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  131 + <div class="upload_close" @click="drivingLicence.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  132 + <el-image
  133 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  134 + :src="createUrl(item)"
  135 + :preview-src-list="[createUrl(item)]"
  136 + :z-index="999">
  137 + </el-image>
  138 + </div>
  139 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  140 + <div class="upload_close_file" @click="drivingLicence.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  141 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  142 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  143 + </div>
  144 + </div>
  145 + </div>
  146 + </el-col>
  147 + </el-row>
  148 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  149 + <el-col :span="3">
  150 + <div class="upload_lable">
  151 + <span style="color:red;">*</span>从业资格证
  152 + <el-upload
  153 + ref="upload"
  154 + action=""
  155 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  156 + :on-change="fileChange1"
  157 + :auto-upload="false"
  158 + :show-file-list="false"
  159 + multiple
  160 + :file-list="professionalQualification">
  161 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  162 + </el-upload>
  163 + </div>
  164 + </el-col>
  165 + <el-col :span="21">
  166 + <div class="upload_btn">
  167 + <div v-for="(item,index) in professionalQualification">
  168 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  169 + <div class="upload_close" @click="professionalQualification.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  170 + <el-image
  171 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  172 + :src="createUrl(item)"
  173 + :preview-src-list="[createUrl(item)]"
  174 + :z-index="999">
  175 + </el-image>
  176 + </div>
  177 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  178 + <div class="upload_close_file" @click="professionalQualification.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  179 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  180 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  181 + </div>
  182 + </div>
  183 + </div>
  184 + </el-col>
  185 + </el-row>
  186 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  187 + <el-col :span="3">
  188 + <div class="upload_lable">
  189 + <span style="color:red;">*</span>安全教育培训结业证明
  190 + <el-upload
  191 + ref="upload"
  192 + action=""
  193 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  194 + :on-change="fileChange2"
  195 + :auto-upload="false"
  196 + :show-file-list="false"
  197 + multiple
  198 + :file-list="safetyTraining">
  199 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  200 + </el-upload>
  201 + </div>
  202 + </el-col>
  203 + <el-col :span="21">
  204 + <div class="upload_btn">
  205 + <div v-for="(item,index) in safetyTraining">
  206 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  207 + <div class="upload_close" @click="safetyTraining.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  208 + <el-image
  209 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  210 + :src="createUrl(item)"
  211 + :preview-src-list="[createUrl(item)]"
  212 + :z-index="999">
  213 + </el-image>
  214 + </div>
  215 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  216 + <div class="upload_close_file" @click="safetyTraining.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  217 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  218 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  219 + </div>
  220 + </div>
  221 + </div>
  222 + </el-col>
  223 + </el-row>
  224 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  225 + <el-col :span="3">
  226 + <div class="upload_lable">
  227 + <span style="color:red;">*</span>一寸免冠照片1
  228 + <el-upload
  229 + ref="upload"
  230 + action=""
  231 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  232 + :on-change="fileChange3"
  233 + :auto-upload="false"
  234 + :show-file-list="false"
  235 + multiple
  236 + :file-list="photographOne">
  237 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  238 + </el-upload>
  239 + </div>
  240 + </el-col>
  241 + <el-col :span="21">
  242 + <div class="upload_btn">
  243 + <div v-for="(item,index) in photographOne">
  244 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  245 + <div class="upload_close" @click="photographOne.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  246 + <el-image
  247 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  248 + :src="createUrl(item)"
  249 + :preview-src-list="[createUrl(item)]"
  250 + :z-index="999">
  251 + </el-image>
  252 + </div>
  253 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  254 + <div class="upload_close_file" @click="photographOne.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  255 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  256 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  257 + </div>
  258 + </div>
  259 + </div>
  260 + </el-col>
  261 + </el-row>
  262 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  263 + <el-col :span="3">
  264 + <div class="upload_lable">
  265 + <span style="color:red;">*</span>一寸免冠照片2
  266 + <el-upload
  267 + ref="upload"
  268 + action=""
  269 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  270 + :on-change="fileChange4"
  271 + :auto-upload="false"
  272 + :show-file-list="false"
  273 + multiple
  274 + :file-list="photographTwo">
  275 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  276 + </el-upload>
  277 + </div>
  278 + </el-col>
  279 + <el-col :span="21">
  280 + <div class="upload_btn">
  281 + <div v-for="(item,index) in photographTwo">
  282 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  283 + <div class="upload_close" @click="photographTwo.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  284 + <el-image
  285 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  286 + :src="createUrl(item)"
  287 + :preview-src-list="[createUrl(item)]"
  288 + :z-index="999">
  289 + </el-image>
  290 + </div>
  291 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  292 + <div class="upload_close_file" @click="photographTwo.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  293 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  294 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  295 + </div>
  296 + </div>
  297 + </div>
  298 + </el-col>
  299 + </el-row>
  300 + </el-form>
  301 + <div slot="footer" class="dialog-footer" style="margin-top: 20px">
  302 + <el-button type="primary" @click="submitForm">确 定</el-button>
  303 + <el-button @click="cancel">取 消</el-button>
  304 + </div>
  305 + </div>
  306 +</template>
  307 +
  308 +<script>
  309 +import { listDriver, getDriver, delDriver, addDriver, updateDriver, exportDriver } from "@/api/unit/driver";
  310 +import { listEnterprise} from "@/api/unit/enterprise";
  311 +import Treeselect from "@riophae/vue-treeselect";
  312 +import '@riophae/vue-treeselect/dist/vue-treeselect.css'
  313 +import {getAreaList} from "@/api/casefile/remoteServer";
  314 +import Editor from "@/components/Editor/index.vue";
  315 +
  316 +export default {
  317 + name: "DisposalSite",
  318 + components: {Editor, Treeselect},
  319 + data() {
  320 + return {
  321 + // 遮罩层
  322 + loading: true,
  323 + // 选中数组
  324 + ids: [],
  325 + // 非单个禁用
  326 + single: true,
  327 + // 非多个禁用
  328 + multiple: true,
  329 + // 显示搜索条件
  330 + showSearch: true,
  331 + // 总条数
  332 + total: 0,
  333 + // 处理场所管理表格数据
  334 + disposalSiteList: [],
  335 + // 弹出层标题
  336 + title: "",
  337 + // 是否显示弹出层
  338 + open: false,
  339 + // 表单参数
  340 + form: {},
  341 + // 表单校验
  342 + rules: {
  343 + name: [
  344 + {required: true, message: "请输入姓名", trigger: "blur"}
  345 + ],
  346 + identityCard: [
  347 + {required: true, message: "请输入身份证号码", trigger: "blur"}
  348 + ],
  349 + companyId: [
  350 + {required: true, message: "请选择所属公司", trigger: "blur"}
  351 + ],
  352 + drivingLicenceBeginDate: [
  353 + {required: true, message: "请选择驾驶证有效期起", trigger: "blur"}
  354 + ],
  355 + drivingLicenceEndDate: [
  356 + {required: true, message: "请选择驾驶证有效期终", trigger: "blur"}
  357 + ],
  358 + professionalQualificationBeginDate: [
  359 + {required: true, message: "请选择从业资格证有效期起", trigger: "blur"}
  360 + ],
  361 + professionalQualificationEndDate: [
  362 + {required: true, message: "请选择从业资格证有效期终", trigger: "blur"}
  363 + ],
  364 + safetyTrainingDate: [
  365 + {required: true, message: "请选择安全教育培训日期", trigger: "blur"}
  366 + ],
  367 + safetyTrainingContent: [
  368 + {required: true, message: "请输入安全教育培训内容", trigger: "blur"}
  369 + ],
  370 + phoneNo: [
  371 + {required: true, message: "请输入手机号码", trigger: "blur"},
  372 + {
  373 + pattern: /^1(3|4|5|7|8|9)\d{9}$/,
  374 + message: '手机号格式错误',
  375 + trigger: 'change'
  376 + }
  377 + ],
  378 + },
  379 + areas:[],
  380 + drivingLicence:[],
  381 + professionalQualification:[],
  382 + safetyTraining:[],
  383 + photographOne:[],
  384 + photographTwo:[],
  385 + enterpriseList:[]
  386 + };
  387 + },
  388 + created() {
  389 + getAreaList().then(res => {
  390 + this.areas = res.data;
  391 + });
  392 + this.queryParams = {
  393 + companyType:"1"
  394 + }
  395 + listEnterprise(this.queryParams).then(response => {
  396 + this.enterpriseList = response.rows;
  397 + });
  398 + this.initData();
  399 + },
  400 + watch: {
  401 + '$route.query.driverInfoId': 'initData'
  402 + },
  403 + methods: {
  404 + reset(){
  405 + this.form = {};
  406 + this.drivingLicence = [];
  407 + this.professionalQualification = [];
  408 + this.safetyTraining = [];
  409 + this.photographOne = [];
  410 + this.photographTwo = [];
  411 + },
  412 + initData(){
  413 + this.reset();
  414 + let id = this.$route.query.driverInfoId;
  415 + console.log(id)
  416 + if(id!=null){
  417 + getDriver(id).then(response => {
  418 + this.form = response.data;
  419 + //将附件转换为前端可视化数组
  420 + if(this.form.drivingLicence!=null&&this.form.drivingLicence!==""){
  421 + let roadTransport = this.form.drivingLicence.split(";");
  422 + roadTransport.map(item=>{
  423 + let name = item.substring(item.lastIndexOf("/")+1);
  424 + this.drivingLicence.push({name:name,url:item})
  425 + })
  426 + }
  427 + if(this.form.professionalQualification!=null&&this.form.professionalQualification!==""){
  428 + let drivingLicense = this.form.professionalQualification.split(";");
  429 + drivingLicense.map(item=>{
  430 + let name = item.substring(item.lastIndexOf("/")+1);
  431 + this.professionalQualification.push({name:name,url:item})
  432 + })
  433 + }
  434 + if(this.form.safetyTraining!=null&&this.form.safetyTraining!==""){
  435 + let carFront = this.form.safetyTraining.split(";");
  436 + carFront.map(item=>{
  437 + let name = item.substring(item.lastIndexOf("/")+1);
  438 + this.safetyTraining.push({name:name,url:item})
  439 + })
  440 + }
  441 + if(this.form.photographOne!=null&&this.form.photographOne!==""){
  442 + let carLeft = this.form.photographOne.split(";");
  443 + carLeft.map(item=>{
  444 + let name = item.substring(item.lastIndexOf("/")+1);
  445 + this.photographOne.push({name:name,url:item})
  446 + })
  447 + }
  448 + if(this.form.photographTwo!=null&&this.form.photographTwo!==""){
  449 + let carBehind = this.form.photographTwo.split(";");
  450 + carBehind.map(item=>{
  451 + let name = item.substring(item.lastIndexOf("/")+1);
  452 + this.photographTwo.push({name:name,url:item})
  453 + })
  454 + }
  455 + });
  456 + }
  457 + },
  458 + createUrl(file){
  459 + if(file.raw!=null){
  460 + return URL.createObjectURL(file.raw);
  461 + }else{
  462 + return process.env.VUE_APP_BASE_API + file.url;
  463 + }
  464 +
  465 + },
  466 + tempDownload(row){
  467 + let name = row.name;
  468 + let url = "";
  469 + if(row.raw!=null){
  470 + url = URL.createObjectURL(row.raw);
  471 + }else{
  472 + url = process.env.VUE_APP_BASE_API + row.url;
  473 + }
  474 + const a = document.createElement('a')
  475 + a.setAttribute('download', name)
  476 + a.setAttribute('target', '_blank')
  477 + a.setAttribute('href', url);
  478 + a.click()
  479 + },
  480 + // 取消按钮
  481 + cancel() {
  482 + this.$tab.closePage({path:"/driverInfo/info"}).then(() => {
  483 + this.$tab.openPage("驾驶员管理", "/tool/driver",{driverInfoRefresh:1})
  484 + })
  485 + },
  486 + /** 提交按钮 */
  487 + submitForm() {
  488 + this.$refs["form"].validate(valid => {
  489 + if(this.drivingLicence.length===0){
  490 + this.$message({
  491 + message: '请上传驾驶证!',
  492 + type: 'warning'
  493 + });
  494 + return false;
  495 + }
  496 + if(this.professionalQualification.length===0){
  497 + this.$message({
  498 + message: '请上传从业资格证!',
  499 + type: 'warning'
  500 + });
  501 + return false;
  502 + }
  503 + if(this.safetyTraining.length===0){
  504 + this.$message({
  505 + message: '请上传安全教育培训结业证明!',
  506 + type: 'warning'
  507 + });
  508 + return false;
  509 + }
  510 + if(this.photographOne.length===0){
  511 + this.$message({
  512 + message: '请上传一寸免冠照片1!',
  513 + type: 'warning'
  514 + });
  515 + return false;
  516 + }
  517 + if(this.photographTwo.length===0){
  518 + this.$message({
  519 + message: '请上传一寸免冠照片2!',
  520 + type: 'warning'
  521 + });
  522 + return false;
  523 + }
  524 + if (valid) {
  525 + let formData = new FormData();
  526 + let form = this.form;
  527 + //去掉params属性
  528 + delete form.params;
  529 +
  530 + //先清空原有的附件
  531 + form.drivingLicence = null;
  532 + form.professionalQualification = null;
  533 + form.safetyTraining = null;
  534 + form.photographOne = null;
  535 + form.photographTwo = null;
  536 + //将附件拼接到form中
  537 + this.drivingLicence.forEach(item => {
  538 + if (item.raw != null) {
  539 + formData.append('drivingLicenceFiles', item.raw)
  540 + }else{
  541 + //将原有的附件拼接到form中
  542 + form.drivingLicence = form.drivingLicence!==null?form.drivingLicence+";"+item.url:item.url;
  543 + }
  544 + })
  545 + this.professionalQualification.forEach(item => {
  546 + if (item.raw != null) {
  547 + formData.append('professionalQualificationFiles', item.raw)
  548 + }else{
  549 + //将原有的附件拼接到form中
  550 + form.professionalQualification = form.professionalQualification!==null?form.professionalQualification+";"+item.url:item.url;
  551 + }
  552 + })
  553 + this.safetyTraining.forEach(item => {
  554 + if (item.raw != null) {
  555 + formData.append('safetyTrainingFiles', item.raw)
  556 + }else{
  557 + //将原有的附件拼接到form中
  558 + form.safetyTraining = form.safetyTraining!==null?form.safetyTraining+";"+item.url:item.url;
  559 + }
  560 + })
  561 + this.photographOne.forEach(item => {
  562 + if (item.raw != null) {
  563 + formData.append('photographOneFiles', item.raw)
  564 + }else{
  565 + //将原有的附件拼接到form中
  566 + form.photographOne = form.photographOne!==null?form.photographOne+";"+item.url:item.url;
  567 + }
  568 + })
  569 + this.photographTwo.forEach(item => {
  570 + if (item.raw != null) {
  571 + formData.append('photographTwoFiles', item.raw)
  572 + }else{
  573 + //将原有的附件拼接到form中
  574 + form.photographTwo = form.photographTwo!==null?form.photographTwo+";"+item.url:item.url;
  575 + }
  576 + })
  577 +
  578 + for (let key in form) {
  579 + formData.append(key, form[key] == null ? "" : form[key])
  580 + }
  581 + if (this.form.id != null) {
  582 + updateDriver(formData).then(response => {
  583 + this.msgSuccess("修改成功");
  584 + this.$tab.closePage({path:"/driverInfo/infoEdit"}).then(() => {
  585 + this.$tab.openPage("驾驶员管理", "/tool/driver",{driverInfoRefresh:1})
  586 + })
  587 + });
  588 + } else {
  589 + addDriver(formData).then(response => {
  590 + this.msgSuccess("新增成功");
  591 + this.$tab.closePage({path:"/driverInfo/info"}).then(() => {
  592 + this.$tab.openPage("驾驶员管理", "/tool/driver",{driverInfoRefresh:1})
  593 + })
  594 + });
  595 + }
  596 + }
  597 + });
  598 + },
  599 + /**
  600 + * 文件改变时,限制文件上传格式和大小
  601 + * 文件格式只能为docx/doc/pdf/png/jpeg/png/jpg
  602 + * 大小不超过20M
  603 + * */
  604 + fileChange(file, fileList) {
  605 + let count = 0;
  606 + for (let i = 0; i < fileList.length; i++) {
  607 + // console.log(fileList.length)
  608 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  609 + if (fileList[i].name == file.name) {
  610 + count++;
  611 + if (count == 2) {
  612 + this.$message({
  613 + message: '已存在此文件!',
  614 + type: 'warning'
  615 + });
  616 + for (let j = fileList.length; j > 0; j--) {
  617 + //如果存在此文件,去除新选择的重复文件
  618 + if (fileList[j - 1].name == file.name) {
  619 + fileList.splice(j - 1, 1);
  620 + i--;
  621 + return false;
  622 + }
  623 + }
  624 + }
  625 + }
  626 + }
  627 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  628 + //格式符合后判断大小
  629 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  630 + let max5M = file.size / 1024 / 1024 < 100;
  631 + if (!max5M) {
  632 + this.$message({
  633 + message: '上传文件大小不得超过100M!',
  634 + type: 'warning'
  635 + });
  636 + fileList = fileList.splice(fileList.length - 1, 1);
  637 + } else {
  638 + //符合条件后进行添加
  639 + this.drivingLicence = fileList
  640 + }
  641 + } else {
  642 + this.$message({
  643 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  644 + type: 'warning'
  645 + });
  646 + fileList = fileList.splice(fileList.length - 1, 1);
  647 + }
  648 + },
  649 + fileChange1(file, fileList) {
  650 + let count = 0;
  651 + for (let i = 0; i < fileList.length; i++) {
  652 + // console.log(fileList.length)
  653 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  654 + if (fileList[i].name == file.name) {
  655 + count++;
  656 + if (count == 2) {
  657 + this.$message({
  658 + message: '已存在此文件!',
  659 + type: 'warning'
  660 + });
  661 + for (let j = fileList.length; j > 0; j--) {
  662 + //如果存在此文件,去除新选择的重复文件
  663 + if (fileList[j - 1].name == file.name) {
  664 + fileList.splice(j - 1, 1);
  665 + i--;
  666 + return false;
  667 + }
  668 + }
  669 + }
  670 + }
  671 + }
  672 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  673 + //格式符合后判断大小
  674 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  675 + let max5M = file.size / 1024 / 1024 < 100;
  676 + if (!max5M) {
  677 + this.$message({
  678 + message: '上传文件大小不得超过100M!',
  679 + type: 'warning'
  680 + });
  681 + fileList = fileList.splice(fileList.length - 1, 1);
  682 + } else {
  683 + //符合条件后进行添加
  684 + this.professionalQualification = fileList
  685 + }
  686 + } else {
  687 + this.$message({
  688 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  689 + type: 'warning'
  690 + });
  691 + fileList = fileList.splice(fileList.length - 1, 1);
  692 + }
  693 + },
  694 + fileChange2(file, fileList) {
  695 + let count = 0;
  696 + for (let i = 0; i < fileList.length; i++) {
  697 + // console.log(fileList.length)
  698 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  699 + if (fileList[i].name == file.name) {
  700 + count++;
  701 + if (count == 2) {
  702 + this.$message({
  703 + message: '已存在此文件!',
  704 + type: 'warning'
  705 + });
  706 + for (let j = fileList.length; j > 0; j--) {
  707 + //如果存在此文件,去除新选择的重复文件
  708 + if (fileList[j - 1].name == file.name) {
  709 + fileList.splice(j - 1, 1);
  710 + i--;
  711 + return false;
  712 + }
  713 + }
  714 + }
  715 + }
  716 + }
  717 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  718 + //格式符合后判断大小
  719 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  720 + let max5M = file.size / 1024 / 1024 < 100;
  721 + if (!max5M) {
  722 + this.$message({
  723 + message: '上传文件大小不得超过100M!',
  724 + type: 'warning'
  725 + });
  726 + fileList = fileList.splice(fileList.length - 1, 1);
  727 + } else {
  728 + //符合条件后进行添加
  729 + this.safetyTraining = fileList
  730 + }
  731 + } else {
  732 + this.$message({
  733 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  734 + type: 'warning'
  735 + });
  736 + fileList = fileList.splice(fileList.length - 1, 1);
  737 + }
  738 + },
  739 + fileChange3(file, fileList) {
  740 + let count = 0;
  741 + for (let i = 0; i < fileList.length; i++) {
  742 + // console.log(fileList.length)
  743 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  744 + if (fileList[i].name == file.name) {
  745 + count++;
  746 + if (count == 2) {
  747 + this.$message({
  748 + message: '已存在此文件!',
  749 + type: 'warning'
  750 + });
  751 + for (let j = fileList.length; j > 0; j--) {
  752 + //如果存在此文件,去除新选择的重复文件
  753 + if (fileList[j - 1].name == file.name) {
  754 + fileList.splice(j - 1, 1);
  755 + i--;
  756 + return false;
  757 + }
  758 + }
  759 + }
  760 + }
  761 + }
  762 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  763 + //格式符合后判断大小
  764 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  765 + let max5M = file.size / 1024 / 1024 < 100;
  766 + if (!max5M) {
  767 + this.$message({
  768 + message: '上传文件大小不得超过100M!',
  769 + type: 'warning'
  770 + });
  771 + fileList = fileList.splice(fileList.length - 1, 1);
  772 + } else {
  773 + //符合条件后进行添加
  774 + this.photographOne = fileList
  775 + }
  776 + } else {
  777 + this.$message({
  778 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  779 + type: 'warning'
  780 + });
  781 + fileList = fileList.splice(fileList.length - 1, 1);
  782 + }
  783 + },
  784 + fileChange4(file, fileList) {
  785 + let count = 0;
  786 + for (let i = 0; i < fileList.length; i++) {
  787 + // console.log(fileList.length)
  788 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  789 + if (fileList[i].name == file.name) {
  790 + count++;
  791 + if (count == 2) {
  792 + this.$message({
  793 + message: '已存在此文件!',
  794 + type: 'warning'
  795 + });
  796 + for (let j = fileList.length; j > 0; j--) {
  797 + //如果存在此文件,去除新选择的重复文件
  798 + if (fileList[j - 1].name == file.name) {
  799 + fileList.splice(j - 1, 1);
  800 + i--;
  801 + return false;
  802 + }
  803 + }
  804 + }
  805 + }
  806 + }
  807 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  808 + //格式符合后判断大小
  809 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  810 + let max5M = file.size / 1024 / 1024 < 100;
  811 + if (!max5M) {
  812 + this.$message({
  813 + message: '上传文件大小不得超过100M!',
  814 + type: 'warning'
  815 + });
  816 + fileList = fileList.splice(fileList.length - 1, 1);
  817 + } else {
  818 + //符合条件后进行添加
  819 + this.photographTwo = fileList
  820 + }
  821 + } else {
  822 + this.$message({
  823 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  824 + type: 'warning'
  825 + });
  826 + fileList = fileList.splice(fileList.length - 1, 1);
  827 + }
  828 + },
  829 + }
  830 +};
  831 +</script>
  832 +<style lang="scss" scoped>
  833 +.upload_lable{
  834 + border-right: 1px solid #dcdfe6;
  835 + padding: 27px 30px;
  836 + background: #fafafa;
  837 + text-align: center;
  838 +}
  839 +.upload_btn{
  840 + max-height: 106px;
  841 +}
  842 +.upload_close{
  843 + position: absolute;
  844 + left: 105px;
  845 + z-index:99;
  846 + top:-1px;
  847 + font-size:18px;
  848 + color:red;
  849 +}
  850 +.upload_close_file{
  851 + position: absolute;
  852 + left: 80px;
  853 + z-index:99;
  854 + top:-1px;
  855 + font-size:18px;
  856 + color:red;
  857 +}
  858 +.upload_div_image{
  859 + display: inline-block;
  860 + width: 110px;
  861 + height: 95px;
  862 + position: relative;
  863 + float: left;
  864 + margin-left: 5px;
  865 +}
  866 +.upload_div_file{
  867 + display: inline-block;
  868 + width: 110px;
  869 + height: 95px;
  870 + text-align: center;
  871 + float:left;
  872 + margin: 5px;
  873 + position: relative;
  874 +}
  875 +.serach_map{
  876 + position: absolute;
  877 + top: 100px;
  878 + left: 25px;
  879 + z-index: 999;
  880 + background: #fff;
  881 + padding: 10px;
  882 + border-radius: 5px;
  883 + box-shadow: 0 0 10px rgba(0,0,0,.2);
  884 +}
  885 +</style>
... ...
trash-ui/src/views/unit/enterprise/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="88px">
  4 + <el-form-item label="企业名称" prop="name">
  5 + <el-input
  6 + v-model="queryParams.name"
  7 + placeholder="请输入企业名称"
  8 + clearable
  9 + size="small"
  10 + @keyup.enter.native="handleQuery"
  11 + />
  12 + </el-form-item>
  13 + <el-form-item label="所属区域" prop="registrationArea">
  14 + <el-select v-model="queryParams.registrationArea" placeholder="请输入注册地所在区域" style="width: 100%" clearable>
  15 + <el-option v-for="(area,index) in areas" :label="area.name" :value="area.name" :key="index"/>
  16 + </el-select>
  17 + </el-form-item>
  18 +
  19 + <el-form-item label="法人代表" prop="legalRepresentative">
  20 + <el-input
  21 + v-model="queryParams.legalRepresentative"
  22 + placeholder="请输入法人代表"
  23 + clearable
  24 + size="small"
  25 + @keyup.enter.native="handleQuery"
  26 + />
  27 + </el-form-item>
  28 + <el-form-item label="审批状态" prop="status">
  29 + <el-select v-model="queryParams.status" placeholder="请选择审批状态" clearable size="small">
  30 + <el-option label="审批中" value="0" />
  31 + <el-option label="审批通过" value="1" />
  32 + <el-option label="被驳回" value="2" />
  33 + </el-select>
  34 + </el-form-item>
  35 + <el-form-item>
  36 + <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  37 + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  38 + </el-form-item>
  39 + </el-form>
  40 +
  41 + <el-row :gutter="10" class="mb8">
  42 + <el-col :span="1.5">
  43 + <el-button
  44 + type="primary"
  45 + icon="el-icon-plus"
  46 + size="mini"
  47 + @click="handleAdd"
  48 + v-hasPermi="['unit:enterprise:add']"
  49 + >新增</el-button>
  50 + </el-col>
  51 + <el-col :span="1.5">
  52 + <el-button
  53 + type="success"
  54 + icon="el-icon-edit"
  55 + size="mini"
  56 + :disabled="single"
  57 + @click="handleUpdate"
  58 + v-hasPermi="['unit:enterprise:edit']"
  59 + >修改</el-button>
  60 + </el-col>
  61 + <el-col :span="1.5">
  62 + <el-button
  63 + type="danger"
  64 + icon="el-icon-delete"
  65 + size="mini"
  66 + :disabled="multiple"
  67 + @click="handleDelete"
  68 + v-hasPermi="['unit:enterprise:remove']"
  69 + >删除</el-button>
  70 + </el-col>
  71 + <el-col :span="1.5">
  72 + <el-button
  73 + type="warning"
  74 + icon="el-icon-download"
  75 + size="mini"
  76 + @click="handleExport"
  77 + v-hasPermi="['unit:enterprise:export']"
  78 + >导出</el-button>
  79 + </el-col>
  80 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  81 + </el-row>
  82 +
  83 + <el-table v-loading="loading" :data="enterpriseList" @selection-change="handleSelectionChange">
  84 + <el-table-column type="selection" width="55" align="center" />
  85 + <el-table-column type="index" width="55" align="center" label="序号"/>
  86 + <el-table-column label="企业名称" align="center" prop="name" />
  87 + <el-table-column label="简称" align="center" prop="abbreviation" />
  88 + <el-table-column label="所属区域" align="center" prop="registrationArea" />
  89 + <el-table-column label="车辆数" align="center" prop="carNumber" />
  90 + <el-table-column label="法人代表" align="center" prop="legalRepresentative" />
  91 + <el-table-column label="联系方式" align="center" prop="legalRepresentativePhone" />
  92 + <el-table-column label="审批状态" align="center" prop="status">
  93 + <template slot-scope="scope">
  94 + <span>{{ parseStatus(scope.row.status) }}</span>
  95 + </template>
  96 + </el-table-column>
  97 + <el-table-column label="信用状态" align="center" prop="creditStatus" />
  98 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  99 + <template slot-scope="scope">
  100 + <el-button
  101 + size="mini"
  102 + type="text"
  103 + icon="el-icon-edit"
  104 + @click="handleUpdate(scope.row)"
  105 + v-hasPermi="['unit:enterprise:edit']"
  106 + >修改</el-button>
  107 + <el-button
  108 + size="mini"
  109 + type="text"
  110 + icon="el-icon-delete"
  111 + @click="handleDelete(scope.row)"
  112 + v-hasPermi="['unit:enterprise:remove']"
  113 + >删除</el-button>
  114 + </template>
  115 + </el-table-column>
  116 + </el-table>
  117 +
  118 + <pagination
  119 + v-show="total>0"
  120 + :total="total"
  121 + :page.sync="queryParams.pageNum"
  122 + :limit.sync="queryParams.pageSize"
  123 + @pagination="getList"
  124 + />
  125 +
  126 + </div>
  127 +</template>
  128 +
  129 +<script>
  130 +import { listEnterprise, getEnterprise, delEnterprise, addEnterprise, updateEnterprise, exportEnterprise } from "@/api/unit/enterprise";
  131 +import {getAreaList} from "@/api/casefile/remoteServer";
  132 +
  133 +export default {
  134 + name: "Enterprise",
  135 + data() {
  136 + return {
  137 + // 遮罩层
  138 + loading: true,
  139 + // 选中数组
  140 + ids: [],
  141 + // 非单个禁用
  142 + single: true,
  143 + // 非多个禁用
  144 + multiple: true,
  145 + // 显示搜索条件
  146 + showSearch: true,
  147 + // 总条数
  148 + total: 0,
  149 + // 运输企业管理表格数据
  150 + enterpriseList: [],
  151 + // 弹出层标题
  152 + title: "",
  153 + // 是否显示弹出层
  154 + open: false,
  155 + // 查询参数
  156 + queryParams: {
  157 + pageNum: 1,
  158 + pageSize: 10,
  159 + name: null,
  160 + abbreviation: null,
  161 + registrationArea: null,
  162 + transportPermissionDate: null,
  163 + enterDate: null,
  164 + businessLicenseDate: null,
  165 + officeAddress: null,
  166 + parkingLotLocation: null,
  167 + parkingArea: null,
  168 + carNumber: null,
  169 + safetyManagerName: null,
  170 + safetyManagerPhone: null,
  171 + socialUniformCreditCodeNumber: null,
  172 + legalRepresentative: null,
  173 + legalRepresentativePhone: null,
  174 + safetyPeopleName: null,
  175 + transportPermission: null,
  176 + enterpriseBusinessLicense: null,
  177 + safetyOfficerQualificationCertificate: null,
  178 + safetyCertificate: null,
  179 + carParkPanorama: null,
  180 + businessUnit: null,
  181 + status: null,
  182 + parentId: null,
  183 + companyType: null,
  184 + creditStatus: null,
  185 + qrCode: null
  186 + },
  187 + // 表单参数
  188 + form: {},
  189 + // 表单校验
  190 + rules: {
  191 + },
  192 + areas: []
  193 + };
  194 + },
  195 + created() {
  196 + getAreaList().then(res => {
  197 + this.areas = res.data;
  198 + });
  199 + this.getList();
  200 + },
  201 + watch:{
  202 + '$route.query.enterpriseRefresh':'getList'
  203 + },
  204 + methods: {
  205 + /** 查询运输企业管理列表 */
  206 + getList() {
  207 + this.loading = true;
  208 + this.queryParams.companyType = "1";
  209 + listEnterprise(this.queryParams).then(response => {
  210 + this.enterpriseList = response.rows;
  211 + this.total = response.total;
  212 + this.loading = false;
  213 + });
  214 + },
  215 + /** 搜索按钮操作 */
  216 + handleQuery() {
  217 + this.queryParams.pageNum = 1;
  218 + this.getList();
  219 + },
  220 + /** 重置按钮操作 */
  221 + resetQuery() {
  222 + this.resetForm("queryForm");
  223 + this.handleQuery();
  224 + },
  225 + // 多选框选中数据
  226 + handleSelectionChange(selection) {
  227 + this.ids = selection.map(item => item.id)
  228 + this.single = selection.length!==1
  229 + this.multiple = !selection.length
  230 + },
  231 + /** 新增按钮操作 */
  232 + handleAdd() {
  233 + this.$tab.openPage("新增运输企业","/enterprise/info",{enterpriseRefresh:0});
  234 + },
  235 + /** 修改按钮操作 */
  236 + handleUpdate(row) {
  237 + const id = row.id || this.ids
  238 + this.$tab.openPage("修改运输企业","/enterprise/infoEdit",{enterpriseId: id,enterpriseRefresh:0});
  239 + },
  240 + /** 删除按钮操作 */
  241 + handleDelete(row) {
  242 + const ids = row.id || this.ids;
  243 + this.$confirm('是否确认删除运输企业管理编号为"' + ids + '"的数据项?', "警告", {
  244 + confirmButtonText: "确定",
  245 + cancelButtonText: "取消",
  246 + type: "warning"
  247 + }).then(function() {
  248 + return delEnterprise(ids);
  249 + }).then(() => {
  250 + this.getList();
  251 + this.msgSuccess("删除成功");
  252 + })
  253 + },
  254 + /** 导出按钮操作 */
  255 + handleExport() {
  256 + const queryParams = this.queryParams;
  257 + this.$confirm('是否确认导出所有运输企业管理数据项?', "警告", {
  258 + confirmButtonText: "确定",
  259 + cancelButtonText: "取消",
  260 + type: "warning"
  261 + }).then(function() {
  262 + return exportEnterprise(queryParams);
  263 + }).then(response => {
  264 + this.download(response.msg);
  265 + })
  266 + }
  267 + }
  268 +};
  269 +</script>
... ...
trash-ui/src/views/unit/enterprise/info.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 +
  4 + <!-- 添加或修改处理场所管理对话框 -->
  5 + <h3>
  6 + 基础信息
  7 + </h3>
  8 + <el-form ref="form" :model="form" :rules="rules" label-width="80px" label-position="top">
  9 + <el-row :gutter="30">
  10 + <el-col :span="7">
  11 + <el-form-item label="企业名称" prop="name">
  12 + <el-input v-model="form.name" placeholder="请输入企业名称" />
  13 + </el-form-item>
  14 + </el-col>
  15 + <el-col :span="7">
  16 + <el-form-item label="简称" prop="abbreviation">
  17 + <el-input v-model="form.abbreviation" placeholder="请输入简称" />
  18 + </el-form-item>
  19 + </el-col>
  20 + <el-col :span="7">
  21 + <el-form-item label="注册地所在区域" prop="registrationArea">
  22 + <el-select v-model="form.registrationArea" placeholder="请输入注册地所在区域" style="width: 100%">
  23 + <el-option v-for="(area,index) in areas" :label="area.name" :value="area.name" :key="index"/>
  24 + </el-select>
  25 + </el-form-item>
  26 + </el-col>
  27 + </el-row>
  28 + <el-row :gutter="30">
  29 + <el-col :span="7">
  30 + <el-form-item label="企业道路运输经营许可证有效期" prop="transportPermissionDate">
  31 + <el-date-picker clearable size="small" style="width: 100%;"
  32 + v-model="form.transportPermissionDate"
  33 + type="date"
  34 + value-format="yyyy-MM-dd"
  35 + placeholder="选择企业道路运输经营许可证有效期">
  36 + </el-date-picker>
  37 + </el-form-item>
  38 + </el-col>
  39 + <el-col :span="7">
  40 + <el-form-item label="企业入市时间" prop="enterDate">
  41 + <el-date-picker clearable size="small" style="width: 100%;"
  42 + v-model="form.enterDate"
  43 + type="date"
  44 + value-format="yyyy-MM-dd"
  45 + placeholder="选择企业入市时间">
  46 + </el-date-picker>
  47 + </el-form-item>
  48 + </el-col>
  49 + <el-col :span="7">
  50 + <el-form-item label="企业营业执照有效期" prop="businessLicenseDate">
  51 + <el-date-picker clearable size="small" style="width: 100%;"
  52 + v-model="form.businessLicenseDate"
  53 + type="date"
  54 + value-format="yyyy-MM-dd"
  55 + placeholder="选择企业营业执照有效期">
  56 + </el-date-picker>
  57 + </el-form-item>
  58 + </el-col>
  59 + </el-row>
  60 + <el-row :gutter="30">
  61 + <el-col :span="7">
  62 + <el-form-item label="办公地址" prop="officeAddress">
  63 + <el-input v-model="form.officeAddress" placeholder="请输入内容" />
  64 + </el-form-item>
  65 + </el-col>
  66 + <el-col :span="7">
  67 + <el-form-item label="停车场位置" prop="parkingLotLocation">
  68 + <el-input v-model="form.parkingLotLocation" placeholder="请输入内容" />
  69 + </el-form-item>
  70 + </el-col>
  71 + <el-col :span="7">
  72 + <el-form-item label="停车场面积(m²)" prop="parkingArea">
  73 + <el-input v-model="form.parkingArea" placeholder="请输入停车场面积" />
  74 + </el-form-item>
  75 + </el-col>
  76 + </el-row>
  77 + <el-row :gutter="30">
  78 + <el-col :span="7">
  79 + <el-form-item label="企业安全负责人姓名及联系方式" prop="safetyManagerName">
  80 + <el-row>
  81 + <el-col :span="6">
  82 + <el-input v-model="form.safetyManagerName" placeholder="姓名" />
  83 + </el-col>
  84 + <el-col :span="18">
  85 + <el-input v-model="form.safetyManagerPhone" placeholder="联系方式" :maxlength="11" show-word-limit/>
  86 + </el-col>
  87 + </el-row>
  88 + </el-form-item>
  89 + </el-col>
  90 + <el-col :span="7">
  91 + <el-form-item label="社会统一信用代码编号" prop="socialUniformCreditCodeNumber">
  92 + <el-input v-model="form.socialUniformCreditCodeNumber" placeholder="请输入社会统一信用代码编号" />
  93 + </el-form-item>
  94 + </el-col>
  95 + <el-col :span="7">
  96 + <el-form-item label="法人代表及联系方式" prop="legalRepresentative">
  97 + <el-row>
  98 + <el-col :span="6">
  99 + <el-input v-model="form.legalRepresentative" placeholder="姓名" />
  100 + </el-col>
  101 + <el-col :span="18">
  102 + <el-input v-model="form.legalRepresentativePhone" placeholder="联系方式" :maxlength="11" show-word-limit/>
  103 + </el-col>
  104 + </el-row>
  105 + </el-form-item>
  106 + </el-col>
  107 + </el-row>
  108 +
  109 + <el-row :gutter="30">
  110 + <el-col :span="7">
  111 + <el-form-item label="安全管理人员" prop="safetyPeopleName">
  112 + <el-input v-model="form.safetyPeopleName" placeholder="请输入安全管理人员" />
  113 + </el-form-item>
  114 + </el-col>
  115 + <el-col :span="7">
  116 + <el-form-item label="经营单位" prop="parentId">
  117 + <el-select v-model="form.parentId" placeholder="请选择经营单位" clearable style="width: 100%;">
  118 + <el-option v-for="(item,index) in enterpriseList" :label="item.name" :value="item.id" :key="index"/>
  119 + </el-select>
  120 + </el-form-item>
  121 + </el-col>
  122 + <el-col :span="7">
  123 + <el-form-item label="备注" prop="remark">
  124 + <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
  125 + </el-form-item>
  126 + </el-col>
  127 + </el-row>
  128 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  129 + <el-col :span="3">
  130 + <div class="upload_lable">
  131 + 企业道路运输经营许可证
  132 + <el-upload
  133 + ref="upload"
  134 + action=""
  135 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  136 + :on-change="fileChange"
  137 + :auto-upload="false"
  138 + :show-file-list="false"
  139 + multiple
  140 + :file-list="transportPermission">
  141 +
  142 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  143 + </el-upload>
  144 + </div>
  145 + </el-col>
  146 + <el-col :span="21">
  147 + <div class="upload_btn">
  148 + <div v-for="(item,index) in transportPermission">
  149 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  150 + <div class="upload_close" @click="transportPermission.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  151 + <el-image
  152 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  153 + :src="createUrl(item)"
  154 + :preview-src-list="[createUrl(item)]"
  155 + :z-index="999">
  156 + </el-image>
  157 + </div>
  158 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  159 + <div class="upload_close_file" @click="transportPermission.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  160 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  161 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  162 + </div>
  163 + </div>
  164 + </div>
  165 + </el-col>
  166 + </el-row>
  167 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  168 + <el-col :span="3">
  169 + <div class="upload_lable">
  170 + 企业营业执照
  171 + <el-upload
  172 + ref="upload"
  173 + action=""
  174 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  175 + :on-change="fileChange1"
  176 + :auto-upload="false"
  177 + :show-file-list="false"
  178 + multiple
  179 + :file-list="enterpriseBusinessLicense">
  180 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  181 + </el-upload>
  182 + </div>
  183 + </el-col>
  184 + <el-col :span="21">
  185 + <div class="upload_btn">
  186 + <div v-for="(item,index) in enterpriseBusinessLicense">
  187 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  188 + <div class="upload_close" @click="enterpriseBusinessLicense.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  189 + <el-image
  190 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  191 + :src="createUrl(item)"
  192 + :preview-src-list="[createUrl(item)]"
  193 + :z-index="999">
  194 + </el-image>
  195 + </div>
  196 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  197 + <div class="upload_close_file" @click="enterpriseBusinessLicense.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  198 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  199 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  200 + </div>
  201 + </div>
  202 + </div>
  203 + </el-col>
  204 + </el-row>
  205 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  206 + <el-col :span="3">
  207 + <div class="upload_lable">
  208 + 安全员考核合格证明
  209 + <el-upload
  210 + ref="upload"
  211 + action=""
  212 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  213 + :on-change="fileChange2"
  214 + :auto-upload="false"
  215 + :show-file-list="false"
  216 + multiple
  217 + :file-list="safetyOfficerQualificationCertificate">
  218 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  219 + </el-upload>
  220 + </div>
  221 + </el-col>
  222 + <el-col :span="21">
  223 + <div class="upload_btn">
  224 + <div v-for="(item,index) in safetyOfficerQualificationCertificate">
  225 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  226 + <div class="upload_close" @click="safetyOfficerQualificationCertificate.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  227 + <el-image
  228 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  229 + :src="createUrl(item)"
  230 + :preview-src-list="[createUrl(item)]"
  231 + :z-index="999">
  232 + </el-image>
  233 + </div>
  234 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  235 + <div class="upload_close_file" @click="safetyOfficerQualificationCertificate.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  236 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  237 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  238 + </div>
  239 + </div>
  240 + </div>
  241 + </el-col>
  242 + </el-row>
  243 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  244 + <el-col :span="3">
  245 + <div class="upload_lable">
  246 + 企业负责人安全考核证
  247 + <el-upload
  248 + ref="upload"
  249 + action=""
  250 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  251 + :on-change="fileChange3"
  252 + :auto-upload="false"
  253 + :show-file-list="false"
  254 + multiple
  255 + :file-list="safetyCertificate">
  256 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  257 + </el-upload>
  258 + </div>
  259 + </el-col>
  260 + <el-col :span="21">
  261 + <div class="upload_btn">
  262 + <div v-for="(item,index) in safetyCertificate">
  263 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  264 + <div class="upload_close" @click="safetyCertificate.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  265 + <el-image
  266 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  267 + :src="createUrl(item)"
  268 + :preview-src-list="[createUrl(item)]"
  269 + :z-index="999">
  270 + </el-image>
  271 + </div>
  272 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  273 + <div class="upload_close_file" @click="safetyCertificate.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  274 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  275 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  276 + </div>
  277 + </div>
  278 + </div>
  279 + </el-col>
  280 + </el-row>
  281 + <el-row style="border: 1px solid #dcdfe6;border-radius: 2px;">
  282 + <el-col :span="3">
  283 + <div class="upload_lable">
  284 + 停车场全景图
  285 + <el-upload
  286 + ref="upload"
  287 + action=""
  288 + accept=".jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx"
  289 + :on-change="fileChange4"
  290 + :auto-upload="false"
  291 + :show-file-list="false"
  292 + multiple
  293 + :file-list="carParkPanorama">
  294 + <el-button size="small" type="primary" icon="el-icon-upload">上传附件</el-button>
  295 + </el-upload>
  296 + </div>
  297 + </el-col>
  298 + <el-col :span="21">
  299 + <div class="upload_btn">
  300 + <div v-for="(item,index) in carParkPanorama">
  301 + <div v-if="!/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_image">
  302 + <div class="upload_close" @click="carParkPanorama.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  303 + <el-image
  304 + style="width: 110px; height: 95px; margin: 5px;float:left;"
  305 + :src="createUrl(item)"
  306 + :preview-src-list="[createUrl(item)]"
  307 + :z-index="999">
  308 + </el-image>
  309 + </div>
  310 + <div v-if="/\.(pjp|pdf|doc|docx|xls|xlsx)$/.test(item.name)" class="upload_div_file">
  311 + <div class="upload_close_file" @click="carParkPanorama.splice(index,1);"><el-icon class="el-icon-error"></el-icon></div>
  312 + <span @click="tempDownload(item)"><el-icon class="el-icon-document-add" style="font-size:70px;"></el-icon></span>
  313 + <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" @click="tempDownload(item)">{{ item.name }}</div>
  314 + </div>
  315 + </div>
  316 + </div>
  317 + </el-col>
  318 + </el-row>
  319 + <!-- <el-form-item label="" prop="environmentalApproval">-->
  320 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  321 + <!-- </el-form-item>-->
  322 + <!-- <el-form-item label="" prop="authorization">-->
  323 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  324 + <!-- </el-form-item>-->
  325 + <!-- <el-form-item label="" prop="otherInformation">-->
  326 + <!-- <el-input v-model="form." type="textarea" placeholder="请输入内容" />-->
  327 + <!-- </el-form-item>-->
  328 + <!-- <el-form-item label="运输企业" prop="companyIds">-->
  329 + <!-- <el-input v-model="form.companyIds" placeholder="请输入运输企业" />-->
  330 + <!-- </el-form-item>-->
  331 + <!-- <el-form-item label="审批状态,0=审批中,1=审批通过,2=被驳回">-->
  332 + <!-- <el-radio-group v-model="form.status">-->
  333 + <!-- <el-radio label="1">请选择字典生成</el-radio>-->
  334 + <!-- </el-radio-group>-->
  335 + <!-- </el-form-item>-->
  336 + <!-- <el-form-item label="二维码" prop="qrCode">-->
  337 + <!-- <el-input v-model="form.qrCode" placeholder="请输入二维码" />-->
  338 + <!-- </el-form-item>-->
  339 + </el-form>
  340 + <div slot="footer" class="dialog-footer" style="margin-top: 20px">
  341 + <el-button type="primary" @click="submitForm">确 定</el-button>
  342 + <el-button @click="cancel">取 消</el-button>
  343 + </div>
  344 + </div>
  345 +</template>
  346 +
  347 +<script>
  348 +import { listEnterprise, getEnterprise, delEnterprise, addEnterprise, updateEnterprise, exportEnterprise } from "@/api/unit/enterprise";
  349 +import Treeselect from "@riophae/vue-treeselect";
  350 +import '@riophae/vue-treeselect/dist/vue-treeselect.css'
  351 +import {getAreaList} from "@/api/casefile/remoteServer";
  352 +
  353 +export default {
  354 + name: "DisposalSite",
  355 + components: {Treeselect},
  356 + data() {
  357 + return {
  358 + // 遮罩层
  359 + loading: true,
  360 + // 选中数组
  361 + ids: [],
  362 + // 非单个禁用
  363 + single: true,
  364 + // 非多个禁用
  365 + multiple: true,
  366 + // 显示搜索条件
  367 + showSearch: true,
  368 + // 总条数
  369 + total: 0,
  370 + // 处理场所管理表格数据
  371 + disposalSiteList: [],
  372 + // 弹出层标题
  373 + title: "",
  374 + // 是否显示弹出层
  375 + open: false,
  376 + // 表单参数
  377 + form: {},
  378 + // 表单校验
  379 + rules: {
  380 + name: [
  381 + {required: true, message: "请输入企业名称", trigger: "blur"}
  382 + ],
  383 + abbreviation: [
  384 + {required: true, message: "请输入简称", trigger: "blur"}
  385 + ],
  386 + registrationArea: [
  387 + {required: true, message: "请输入注册地所在区域", trigger: "blur"}
  388 + ],
  389 + transportPermissionDate: [
  390 + {required: true, message: "请选择企业道路运输经营许可证有效期", trigger: "blur"}
  391 + ],
  392 + enterDate: [
  393 + {required: true, message: "请选择企业入市时间", trigger: "blur"}
  394 + ],
  395 + businessLicenseDate: [
  396 + {required: true, message: "请选择企业营业执照有效期", trigger: "blur"}
  397 + ],
  398 + officeAddress: [
  399 + {required: true, message: "请输入办公地址", trigger: "blur"}
  400 + ],
  401 + parkingLotLocation: [
  402 + {required: true, message: "请输入停车场位置", trigger: "blur"}
  403 + ],
  404 + parkingArea: [
  405 + {required: true, message: "请输入停车场面积", trigger: "blur"},
  406 + {pattern: /^\d+(\.\d+)?$/, message: "只能输入正数和小数", trigger: "blur"}
  407 + ],
  408 + safetyManagerName: [
  409 + {required: true, message: "请输入企业安全负责人姓名", trigger: "blur"}
  410 + ],
  411 + socialUniformCreditCodeNumber: [
  412 + {required: true, message: "请输入社会统一信用代码编号", trigger: "blur"}
  413 + ],
  414 + legalRepresentative: [
  415 + {required: true, message: "请输入法人代表", trigger: "blur"}
  416 + ],
  417 + safetyPeopleName: [
  418 + {required: true, message: "请输入安全管理人员", trigger: "blur"}
  419 + ],
  420 + },
  421 + areas:[],
  422 + // 企业道路运输经营许可证
  423 + transportPermission:[],
  424 + // 企业营业执照
  425 + enterpriseBusinessLicense:[],
  426 + // 安全员考核合格证明
  427 + safetyOfficerQualificationCertificate:[],
  428 + // 企业负责人安全考核证
  429 + safetyCertificate:[],
  430 + // 停车场全景图
  431 + carParkPanorama:[],
  432 + enterpriseList:[]
  433 + };
  434 + },
  435 + created() {
  436 + getAreaList().then(res => {
  437 + this.areas = res.data;
  438 + });
  439 + this.queryParams = {
  440 + companyType:"0"
  441 + }
  442 + listEnterprise(this.queryParams).then(response => {
  443 + this.enterpriseList = response.rows;
  444 + });
  445 + this.initData();
  446 + },
  447 + watch: {
  448 + '$route.query.enterpriseId': 'initData'
  449 + },
  450 + methods: {
  451 + reset(){
  452 + this.form = {};
  453 + this.transportPermission = [];
  454 + this.enterpriseBusinessLicense = [];
  455 + this.safetyOfficerQualificationCertificate = [];
  456 + this.safetyCertificate = [];
  457 + this.carParkPanorama = [];
  458 + },
  459 + initData(){
  460 + this.reset();
  461 + let id = this.$route.query.enterpriseId;
  462 + if(id!=null){
  463 + getEnterprise(id).then(response => {
  464 + this.form = response.data;
  465 + //将附件转换为前端可视化数组
  466 + if(this.form.transportPermission!=null&&this.form.transportPermission!==""){
  467 + let approvalDocument = this.form.transportPermission.split(";");
  468 + approvalDocument.map(item=>{
  469 + let name = item.substring(item.lastIndexOf("/")+1);
  470 + this.transportPermission.push({name:name,url:item})
  471 + })
  472 + }
  473 + if(this.form.enterpriseBusinessLicense!=null&&this.form.enterpriseBusinessLicense!==""){
  474 + let approvalData = this.form.enterpriseBusinessLicense.split(";");
  475 + approvalData.map(item=>{
  476 + let name = item.substring(item.lastIndexOf("/")+1);
  477 + this.enterpriseBusinessLicense.push({name:name,url:item})
  478 + })
  479 + }
  480 + if(this.form.safetyOfficerQualificationCertificate!=null&&this.form.safetyOfficerQualificationCertificate!==""){
  481 + let scenePhoto = this.form.safetyOfficerQualificationCertificate.split(";");
  482 + scenePhoto.map(item=>{
  483 + let name = item.substring(item.lastIndexOf("/")+1);
  484 + this.safetyOfficerQualificationCertificate.push({name:name,url:item})
  485 + })
  486 + }
  487 + if(this.form.safetyCertificate!=null&&this.form.safetyCertificate!==""){
  488 + let carWashingFacilitiesImage = this.form.safetyCertificate.split(";");
  489 + carWashingFacilitiesImage.map(item=>{
  490 + let name = item.substring(item.lastIndexOf("/")+1);
  491 + this.safetyCertificate.push({name:name,url:item})
  492 + })
  493 + }
  494 + if(this.form.carParkPanorama!=null&&this.form.carParkPanorama!==""){
  495 + let safetyAssessmentReport = this.form.carParkPanorama.split(";");
  496 + safetyAssessmentReport.map(item=>{
  497 + let name = item.substring(item.lastIndexOf("/")+1);
  498 + this.carParkPanorama.push({name:name,url:item})
  499 + })
  500 + }
  501 + });
  502 + }
  503 + },
  504 + createUrl(file){
  505 + if(file.raw!=null){
  506 + return URL.createObjectURL(file.raw);
  507 + }else{
  508 + return process.env.VUE_APP_BASE_API + file.url;
  509 + }
  510 +
  511 + },
  512 + tempDownload(row){
  513 + let name = row.name;
  514 + let url = "";
  515 + if(row.raw!=null){
  516 + url = URL.createObjectURL(row.raw);
  517 + }else{
  518 + url = process.env.VUE_APP_BASE_API + row.url;
  519 + }
  520 + const a = document.createElement('a')
  521 + a.setAttribute('download', name)
  522 + a.setAttribute('target', '_blank')
  523 + a.setAttribute('href', url);
  524 + a.click()
  525 + },
  526 + // 取消按钮
  527 + cancel() {
  528 + this.$tab.closePage({path:"/enterprise/info"}).then(() => {
  529 + this.$tab.openPage("处理场所管理", "/tool/enterprise",{enterpriseRefresh:1})
  530 + })
  531 + },
  532 + /** 提交按钮 */
  533 + submitForm() {
  534 + this.$refs["form"].validate(valid => {
  535 + if (valid) {
  536 + let phoneTest = /^1[3456789]\d{9}$/;
  537 + if(phoneTest.test(this.form.safetyManagerPhone)===false){
  538 + this.msgError("请输入正确的企业安全负责人联系方式");
  539 + return false;
  540 + }
  541 + if(phoneTest.test(this.form.legalRepresentativePhone)===false){
  542 + this.msgError("请输入正确的法人代表联系方式");
  543 + return false;
  544 + }
  545 + let formData = new FormData();
  546 + let form = this.form;
  547 + //去掉params属性
  548 + delete form.params;
  549 +
  550 + //先清空原有的附件
  551 + form.transportPermission = null;
  552 + form.enterpriseBusinessLicense = null;
  553 + form.safetyOfficerQualificationCertificate = null;
  554 + form.safetyCertificate = null;
  555 + form.carParkPanorama = null;
  556 + form.companyType = "1";
  557 +
  558 + this.transportPermission.forEach(item => {
  559 + if (item.raw != null) {
  560 + formData.append('transportPermissionFiles', item.raw)
  561 + }else{
  562 + //将原有的附件拼接到form中
  563 + form.transportPermission = form.transportPermission!==null?form.transportPermission+";"+item.url:item.url;
  564 + }
  565 + })
  566 +
  567 + this.enterpriseBusinessLicense.forEach(item => {
  568 + if (item.raw != null) {
  569 + formData.append('enterpriseBusinessLicenseFiles', item.raw)
  570 + }else{
  571 + //将原有的附件拼接到form中
  572 + form.enterpriseBusinessLicense = form.enterpriseBusinessLicense!==null?form.enterpriseBusinessLicense+";"+item.url:item.url;
  573 + }
  574 + })
  575 + this.safetyOfficerQualificationCertificate.forEach(item => {
  576 + if (item.raw != null) {
  577 + formData.append('safetyOfficerQualificationCertificateFiles', item.raw)
  578 + }else{
  579 + //将原有的附件拼接到form中
  580 + form.safetyOfficerQualificationCertificate = form.safetyOfficerQualificationCertificate!==null?form.safetyOfficerQualificationCertificate+";"+item.url:item.url;
  581 + }
  582 + })
  583 + this.safetyCertificate.forEach(item => {
  584 + if (item.raw != null) {
  585 + formData.append('safetyCertificateFiles', item.raw)
  586 + }else{
  587 + //将原有的附件拼接到form中
  588 + form.safetyCertificate = form.safetyCertificate!==null?form.safetyCertificate+";"+item.url:item.url;
  589 + }
  590 + })
  591 + this.carParkPanorama.forEach(item => {
  592 + if (item.raw != null) {
  593 + formData.append('carParkPanoramaFiles', item.raw)
  594 + }else{
  595 + //将原有的附件拼接到form中
  596 + form.carParkPanorama = form.carParkPanorama!==null?form.carParkPanorama+";"+item.url:item.url;
  597 + }
  598 + })
  599 + for (let key in form) {
  600 + formData.append(key, form[key] == null ? "" : form[key])
  601 + }
  602 + if (this.form.id != null) {
  603 + updateEnterprise(formData).then(response => {
  604 + this.msgSuccess("修改成功");
  605 + this.$tab.closePage({path:"/enterprise/infoEdit"}).then(() => {
  606 + this.$tab.openPage("运输企业管理", "/tool/enterprise",{enterpriseRefresh:1})
  607 + })
  608 + });
  609 + } else {
  610 + addEnterprise(formData).then(response => {
  611 + this.msgSuccess("新增成功");
  612 + this.$tab.closePage({path:"/enterprise/info"}).then(() => {
  613 + this.$tab.openPage("运输企业管理", "/tool/enterprise",{enterpriseRefresh:1})
  614 + })
  615 + });
  616 + }
  617 + }
  618 + });
  619 + },
  620 + /**
  621 + * 文件改变时,限制文件上传格式和大小
  622 + * 文件格式只能为docx/doc/pdf/png/jpeg/png/jpg
  623 + * 大小不超过20M
  624 + * */
  625 + fileChange(file, fileList) {
  626 + let count = 0;
  627 + for (let i = 0; i < fileList.length; i++) {
  628 + // console.log(fileList.length)
  629 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  630 + if (fileList[i].name == file.name) {
  631 + count++;
  632 + if (count == 2) {
  633 + this.$message({
  634 + message: '已存在此文件!',
  635 + type: 'warning'
  636 + });
  637 + for (let j = fileList.length; j > 0; j--) {
  638 + //如果存在此文件,去除新选择的重复文件
  639 + if (fileList[j - 1].name == file.name) {
  640 + fileList.splice(j - 1, 1);
  641 + i--;
  642 + return false;
  643 + }
  644 + }
  645 + }
  646 + }
  647 + }
  648 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  649 + //格式符合后判断大小
  650 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  651 + let max5M = file.size / 1024 / 1024 < 100;
  652 + if (!max5M) {
  653 + this.$message({
  654 + message: '上传文件大小不得超过100M!',
  655 + type: 'warning'
  656 + });
  657 + fileList = fileList.splice(fileList.length - 1, 1);
  658 + } else {
  659 + //符合条件后进行添加
  660 + this.transportPermission = fileList
  661 + }
  662 + } else {
  663 + this.$message({
  664 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  665 + type: 'warning'
  666 + });
  667 + fileList = fileList.splice(fileList.length - 1, 1);
  668 + }
  669 + },
  670 + fileChange1(file, fileList) {
  671 + let count = 0;
  672 + for (let i = 0; i < fileList.length; i++) {
  673 + // console.log(fileList.length)
  674 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  675 + if (fileList[i].name == file.name) {
  676 + count++;
  677 + if (count == 2) {
  678 + this.$message({
  679 + message: '已存在此文件!',
  680 + type: 'warning'
  681 + });
  682 + for (let j = fileList.length; j > 0; j--) {
  683 + //如果存在此文件,去除新选择的重复文件
  684 + if (fileList[j - 1].name == file.name) {
  685 + fileList.splice(j - 1, 1);
  686 + i--;
  687 + return false;
  688 + }
  689 + }
  690 + }
  691 + }
  692 + }
  693 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  694 + //格式符合后判断大小
  695 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  696 + let max5M = file.size / 1024 / 1024 < 100;
  697 + if (!max5M) {
  698 + this.$message({
  699 + message: '上传文件大小不得超过100M!',
  700 + type: 'warning'
  701 + });
  702 + fileList = fileList.splice(fileList.length - 1, 1);
  703 + } else {
  704 + //符合条件后进行添加
  705 + this.enterpriseBusinessLicense = fileList
  706 + }
  707 + } else {
  708 + this.$message({
  709 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  710 + type: 'warning'
  711 + });
  712 + fileList = fileList.splice(fileList.length - 1, 1);
  713 + }
  714 + },
  715 + fileChange2(file, fileList) {
  716 + let count = 0;
  717 + for (let i = 0; i < fileList.length; i++) {
  718 + // console.log(fileList.length)
  719 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  720 + if (fileList[i].name == file.name) {
  721 + count++;
  722 + if (count == 2) {
  723 + this.$message({
  724 + message: '已存在此文件!',
  725 + type: 'warning'
  726 + });
  727 + for (let j = fileList.length; j > 0; j--) {
  728 + //如果存在此文件,去除新选择的重复文件
  729 + if (fileList[j - 1].name == file.name) {
  730 + fileList.splice(j - 1, 1);
  731 + i--;
  732 + return false;
  733 + }
  734 + }
  735 + }
  736 + }
  737 + }
  738 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  739 + //格式符合后判断大小
  740 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  741 + let max5M = file.size / 1024 / 1024 < 100;
  742 + if (!max5M) {
  743 + this.$message({
  744 + message: '上传文件大小不得超过100M!',
  745 + type: 'warning'
  746 + });
  747 + fileList = fileList.splice(fileList.length - 1, 1);
  748 + } else {
  749 + //符合条件后进行添加
  750 + this.safetyOfficerQualificationCertificate = fileList
  751 + }
  752 + } else {
  753 + this.$message({
  754 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  755 + type: 'warning'
  756 + });
  757 + fileList = fileList.splice(fileList.length - 1, 1);
  758 + }
  759 + },
  760 + fileChange3(file, fileList) {
  761 + let count = 0;
  762 + for (let i = 0; i < fileList.length; i++) {
  763 + // console.log(fileList.length)
  764 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  765 + if (fileList[i].name == file.name) {
  766 + count++;
  767 + if (count == 2) {
  768 + this.$message({
  769 + message: '已存在此文件!',
  770 + type: 'warning'
  771 + });
  772 + for (let j = fileList.length; j > 0; j--) {
  773 + //如果存在此文件,去除新选择的重复文件
  774 + if (fileList[j - 1].name == file.name) {
  775 + fileList.splice(j - 1, 1);
  776 + i--;
  777 + return false;
  778 + }
  779 + }
  780 + }
  781 + }
  782 + }
  783 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  784 + //格式符合后判断大小
  785 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  786 + let max5M = file.size / 1024 / 1024 < 100;
  787 + if (!max5M) {
  788 + this.$message({
  789 + message: '上传文件大小不得超过100M!',
  790 + type: 'warning'
  791 + });
  792 + fileList = fileList.splice(fileList.length - 1, 1);
  793 + } else {
  794 + //符合条件后进行添加
  795 + this.safetyCertificate = fileList
  796 + }
  797 + } else {
  798 + this.$message({
  799 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  800 + type: 'warning'
  801 + });
  802 + fileList = fileList.splice(fileList.length - 1, 1);
  803 + }
  804 + },
  805 + fileChange4(file, fileList) {
  806 + let count = 0;
  807 + for (let i = 0; i < fileList.length; i++) {
  808 + // console.log(fileList.length)
  809 + // console.log(this.fileEntityList[i].name+"111"+file.name)
  810 + if (fileList[i].name == file.name) {
  811 + count++;
  812 + if (count == 2) {
  813 + this.$message({
  814 + message: '已存在此文件!',
  815 + type: 'warning'
  816 + });
  817 + for (let j = fileList.length; j > 0; j--) {
  818 + //如果存在此文件,去除新选择的重复文件
  819 + if (fileList[j - 1].name == file.name) {
  820 + fileList.splice(j - 1, 1);
  821 + i--;
  822 + return false;
  823 + }
  824 + }
  825 + }
  826 + }
  827 + }
  828 + let fileType = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();
  829 + //格式符合后判断大小
  830 + if ("jpg,jpeg,png,gif,jfif,pjpeg,pjp,pdf,doc,docx,xls,xlsx".indexOf(fileType) != -1) {
  831 + let max5M = file.size / 1024 / 1024 < 100;
  832 + if (!max5M) {
  833 + this.$message({
  834 + message: '上传文件大小不得超过100M!',
  835 + type: 'warning'
  836 + });
  837 + fileList = fileList.splice(fileList.length - 1, 1);
  838 + } else {
  839 + //符合条件后进行添加
  840 + this.carParkPanorama = fileList
  841 + }
  842 + } else {
  843 + this.$message({
  844 + message: '上传文件只能是.jpg,.jpeg,.png,.gif,.jfif,.pjpeg,.pjp,.pdf,.doc,.docx,.xls,.xlsx格式!',
  845 + type: 'warning'
  846 + });
  847 + fileList = fileList.splice(fileList.length - 1, 1);
  848 + }
  849 + },
  850 + }
  851 +};
  852 +</script>
  853 +<style lang="scss" scoped>
  854 +.upload_lable{
  855 + border-right: 1px solid #dcdfe6;
  856 + padding: 27px 30px;
  857 + background: #fafafa;
  858 + text-align: center;
  859 +}
  860 +.upload_btn{
  861 + max-height: 106px;
  862 +}
  863 +.upload_close{
  864 + position: absolute;
  865 + left: 105px;
  866 + z-index:99;
  867 + top:-1px;
  868 + font-size:18px;
  869 + color:red;
  870 +}
  871 +.upload_close_file{
  872 + position: absolute;
  873 + left: 80px;
  874 + z-index:99;
  875 + top:-1px;
  876 + font-size:18px;
  877 + color:red;
  878 +}
  879 +.upload_div_image{
  880 + display: inline-block;
  881 + width: 110px;
  882 + height: 95px;
  883 + position: relative;
  884 + float: left;
  885 + margin-left: 5px;
  886 +}
  887 +.upload_div_file{
  888 + display: inline-block;
  889 + width: 110px;
  890 + height: 95px;
  891 + text-align: center;
  892 + float:left;
  893 + margin: 5px;
  894 + position: relative;
  895 +}
  896 +.serach_map{
  897 + position: absolute;
  898 + top: 100px;
  899 + left: 25px;
  900 + z-index: 999;
  901 + background: #fff;
  902 + padding: 10px;
  903 + border-radius: 5px;
  904 + box-shadow: 0 0 10px rgba(0,0,0,.2);
  905 +}
  906 +</style>
... ...
trash-unit/src/main/java/com/trash/carInfo/controller/CarInfoController.java
1 1 package com.trash.carInfo.controller;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
  5 +
  6 +import com.trash.carInfo.domain.vo.CarInfoVo;
4 7 import org.springframework.security.access.prepost.PreAuthorize;
5 8 import org.springframework.beans.factory.annotation.Autowired;
6   -import org.springframework.web.bind.annotation.GetMapping;
7   -import org.springframework.web.bind.annotation.PostMapping;
8   -import org.springframework.web.bind.annotation.PutMapping;
9   -import org.springframework.web.bind.annotation.DeleteMapping;
10   -import org.springframework.web.bind.annotation.PathVariable;
11   -import org.springframework.web.bind.annotation.RequestBody;
12   -import org.springframework.web.bind.annotation.RequestMapping;
13   -import org.springframework.web.bind.annotation.RestController;
  9 +import org.springframework.web.bind.annotation.*;
14 10 import com.trash.common.annotation.Log;
15 11 import com.trash.common.core.controller.BaseController;
16 12 import com.trash.common.core.domain.AjaxResult;
... ... @@ -19,15 +15,16 @@ import com.trash.carInfo.domain.CarInfo;
19 15 import com.trash.carInfo.service.ICarInfoService;
20 16 import com.trash.common.utils.poi.ExcelUtil;
21 17 import com.trash.common.core.page.TableDataInfo;
  18 +import org.springframework.web.multipart.MultipartFile;
22 19  
23 20 /**
24 21 * 运输车辆管理Controller
25 22 *
26 23 * @author trash
27   - * @date 2023-11-15
  24 + * @date 2023-11-21
28 25 */
29 26 @RestController
30   -@RequestMapping("/carInfo")
  27 +@RequestMapping("/unit/carInfo")
31 28 public class CarInfoController extends BaseController
32 29 {
33 30 @Autowired
... ... @@ -36,32 +33,32 @@ public class CarInfoController extends BaseController
36 33 /**
37 34 * 查询运输车辆管理列表
38 35 */
39   -// @PreAuthorize("@ss.hasPermi('carInfo:carInfo:list')")
  36 + @PreAuthorize("@ss.hasPermi('unit:carInfo:list')")
40 37 @GetMapping("/list")
41   - public TableDataInfo list(CarInfo carInfo)
  38 + public TableDataInfo list(CarInfoVo carInfo)
42 39 {
43 40 startPage();
44   - List<CarInfo> list = carInfoService.selectCarInfoList(carInfo);
  41 + List<CarInfoVo> list = carInfoService.selectCarInfoList(carInfo);
45 42 return getDataTable(list);
46 43 }
47 44  
48 45 /**
49 46 * 导出运输车辆管理列表
50 47 */
51   - @PreAuthorize("@ss.hasPermi('carInfo:carInfo:export')")
  48 + @PreAuthorize("@ss.hasPermi('unit:carInfo:export')")
52 49 @Log(title = "运输车辆管理", businessType = BusinessType.EXPORT)
53 50 @GetMapping("/export")
54   - public AjaxResult export(CarInfo carInfo)
  51 + public AjaxResult export(CarInfoVo carInfo)
55 52 {
56   - List<CarInfo> list = carInfoService.selectCarInfoList(carInfo);
57   - ExcelUtil<CarInfo> util = new ExcelUtil<CarInfo>(CarInfo.class);
  53 + List<CarInfoVo> list = carInfoService.selectCarInfoList(carInfo);
  54 + ExcelUtil<CarInfoVo> util = new ExcelUtil<CarInfoVo>(CarInfoVo.class);
58 55 return util.exportExcel(list, "carInfo");
59 56 }
60 57  
61 58 /**
62 59 * 获取运输车辆管理详细信息
63 60 */
64   - @PreAuthorize("@ss.hasPermi('carInfo:carInfo:query')")
  61 + @PreAuthorize("@ss.hasPermi('unit:carInfo:query')")
65 62 @GetMapping(value = "/{id}")
66 63 public AjaxResult getInfo(@PathVariable("id") Long id)
67 64 {
... ... @@ -71,29 +68,39 @@ public class CarInfoController extends BaseController
71 68 /**
72 69 * 新增运输车辆管理
73 70 */
74   - @PreAuthorize("@ss.hasPermi('carInfo:carInfo:add')")
  71 + @PreAuthorize("@ss.hasPermi('unit:carInfo:add')")
75 72 @Log(title = "运输车辆管理", businessType = BusinessType.INSERT)
76 73 @PostMapping
77   - public AjaxResult add(@RequestBody CarInfo carInfo)
78   - {
79   - return toAjax(carInfoService.insertCarInfo(carInfo));
  74 + public AjaxResult add(@RequestParam(value = "roadTransportFiles") MultipartFile[] roadTransportFiles,
  75 + @RequestParam(value = "drivingLicenseFiles") MultipartFile[] drivingLicenseFiles,
  76 + @RequestParam(value = "carFrontFiles") MultipartFile[] carFrontFiles,
  77 + @RequestParam(value = "carLeftFiles") MultipartFile[] carLeftFiles,
  78 + @RequestParam(value = "carBehindFiles") MultipartFile[] carBehindFiles,
  79 + @RequestParam(value = "carRightFiles") MultipartFile[] carRightFiles,
  80 + CarInfo carInfo) throws IOException {
  81 + return toAjax(carInfoService.insertCarInfo(roadTransportFiles, drivingLicenseFiles, carFrontFiles, carLeftFiles, carBehindFiles, carRightFiles, carInfo));
80 82 }
81 83  
82 84 /**
83 85 * 修改运输车辆管理
84 86 */
85   - @PreAuthorize("@ss.hasPermi('carInfo:carInfo:edit')")
  87 + @PreAuthorize("@ss.hasPermi('unit:carInfo:edit')")
86 88 @Log(title = "运输车辆管理", businessType = BusinessType.UPDATE)
87 89 @PutMapping
88   - public AjaxResult edit(@RequestBody CarInfo carInfo)
89   - {
90   - return toAjax(carInfoService.updateCarInfo(carInfo));
  90 + public AjaxResult edit(@RequestParam(value = "roadTransportFiles") MultipartFile[] roadTransportFiles,
  91 + @RequestParam(value = "drivingLicenseFiles") MultipartFile[] drivingLicenseFiles,
  92 + @RequestParam(value = "carFrontFiles") MultipartFile[] carFrontFiles,
  93 + @RequestParam(value = "carLeftFiles") MultipartFile[] carLeftFiles,
  94 + @RequestParam(value = "carBehindFiles") MultipartFile[] carBehindFiles,
  95 + @RequestParam(value = "carRightFiles") MultipartFile[] carRightFiles,
  96 + CarInfo carInfo) throws IOException {
  97 + return toAjax(carInfoService.updateCarInfo(roadTransportFiles, drivingLicenseFiles, carFrontFiles, carLeftFiles, carBehindFiles, carRightFiles, carInfo));
91 98 }
92 99  
93 100 /**
94 101 * 删除运输车辆管理
95 102 */
96   - @PreAuthorize("@ss.hasPermi('carInfo:carInfo:remove')")
  103 + @PreAuthorize("@ss.hasPermi('unit:carInfo:remove')")
97 104 @Log(title = "运输车辆管理", businessType = BusinessType.DELETE)
98 105 @DeleteMapping("/{ids}")
99 106 public AjaxResult remove(@PathVariable Long[] ids)
... ...
trash-unit/src/main/java/com/trash/carInfo/domain/CarDriverRelation.java 0 → 100644
  1 +package com.trash.carInfo.domain;
  2 +
  3 +public class CarDriverRelation {
  4 +
  5 + private Long id;
  6 +
  7 + private Long carId;
  8 +
  9 +
  10 + private Long driverId;
  11 +
  12 + public Long getId() {
  13 + return id;
  14 + }
  15 +
  16 + public void setId(Long id) {
  17 + this.id = id;
  18 + }
  19 +
  20 + public Long getCarId() {
  21 + return carId;
  22 + }
  23 +
  24 + public void setCarId(Long carId) {
  25 + this.carId = carId;
  26 + }
  27 +
  28 + public Long getDriverId() {
  29 + return driverId;
  30 + }
  31 +
  32 + public void setDriverId(Long driverId) {
  33 + this.driverId = driverId;
  34 + }
  35 +}
... ...
trash-unit/src/main/java/com/trash/carInfo/domain/CarInfo.java
... ... @@ -11,7 +11,7 @@ import com.trash.common.core.domain.BaseEntity;
11 11 * 运输车辆管理对象 car_info
12 12 *
13 13 * @author trash
14   - * @date 2023-11-15
  14 + * @date 2023-11-21
15 15 */
16 16 public class CarInfo extends BaseEntity
17 17 {
... ... @@ -63,10 +63,14 @@ public class CarInfo extends BaseEntity
63 63 @Excel(name = "车辆标识牌")
64 64 private String carIdentification;
65 65  
66   - /** 车辆体积 */
67   - @Excel(name = "车辆体积")
  66 + /** 货箱体积 */
  67 + @Excel(name = "货箱体积")
68 68 private String containerVolume;
69 69  
  70 + /** 货箱长宽高 */
  71 + @Excel(name = "货箱长宽高")
  72 + private String lengthWidthHeight;
  73 +
70 74 /** 车辆颜色 */
71 75 @Excel(name = "车辆颜色")
72 76 private String carColor;
... ... @@ -104,10 +108,26 @@ public class CarInfo extends BaseEntity
104 108 private String drivers;
105 109  
106 110 /** 审批状态,0=审批中,1=审批通过,2=被驳回 */
107   - @Excel(name = "审批状态,0=审批中,1=审批通过,2=被驳回")
  111 + @Excel(name = "审批状态",readConverterExp = "0=审批中,1=审批通过,2=被驳回")
108 112 private Integer status;
109 113  
110   - public void setId(Long id)
  114 + /** 信用状态 */
  115 + @Excel(name = "信用状态")
  116 + private String creditStatus;
  117 +
  118 + /** 二维码 */
  119 + @Excel(name = "二维码")
  120 + private String qrCode;
  121 +
  122 + public String getLengthWidthHeight() {
  123 + return lengthWidthHeight;
  124 + }
  125 +
  126 + public void setLengthWidthHeight(String lengthWidthHeight) {
  127 + this.lengthWidthHeight = lengthWidthHeight;
  128 + }
  129 +
  130 + public void setId(Long id)
111 131 {
112 132 this.id = id;
113 133 }
... ... @@ -305,6 +325,24 @@ public class CarInfo extends BaseEntity
305 325 {
306 326 return status;
307 327 }
  328 + public void setCreditStatus(String creditStatus)
  329 + {
  330 + this.creditStatus = creditStatus;
  331 + }
  332 +
  333 + public String getCreditStatus()
  334 + {
  335 + return creditStatus;
  336 + }
  337 + public void setQrCode(String qrCode)
  338 + {
  339 + this.qrCode = qrCode;
  340 + }
  341 +
  342 + public String getQrCode()
  343 + {
  344 + return qrCode;
  345 + }
308 346  
309 347 @Override
310 348 public String toString() {
... ... @@ -336,6 +374,8 @@ public class CarInfo extends BaseEntity
336 374 .append("createBy", getCreateBy())
337 375 .append("updateTime", getUpdateTime())
338 376 .append("updateBy", getUpdateBy())
  377 + .append("creditStatus", getCreditStatus())
  378 + .append("qrCode", getQrCode())
339 379 .toString();
340 380 }
341 381 }
... ...
trash-unit/src/main/java/com/trash/carInfo/domain/vo/CarInfoVo.java 0 → 100644
  1 +package com.trash.carInfo.domain.vo;
  2 +
  3 +import com.trash.carInfo.domain.CarInfo;
  4 +
  5 +public class CarInfoVo extends CarInfo {
  6 + private String companyName;
  7 +
  8 + private String driversName;
  9 +
  10 + public String getCompanyName() {
  11 + return companyName;
  12 + }
  13 +
  14 + public void setCompanyName(String companyName) {
  15 + this.companyName = companyName;
  16 + }
  17 +
  18 + public String getDriversName() {
  19 + return driversName;
  20 + }
  21 +
  22 + public void setDriversName(String driversName) {
  23 + this.driversName = driversName;
  24 + }
  25 +}
... ...
trash-unit/src/main/java/com/trash/carInfo/mapper/CarInfoMapper.java
1 1 package com.trash.carInfo.mapper;
2 2  
3 3 import java.util.List;
  4 +
  5 +import com.trash.carInfo.domain.CarDriverRelation;
4 6 import com.trash.carInfo.domain.CarInfo;
  7 +import com.trash.carInfo.domain.vo.CarInfoVo;
5 8  
6 9 /**
7 10 * 运输车辆管理Mapper接口
8 11 *
9 12 * @author trash
10   - * @date 2023-11-15
  13 + * @date 2023-11-21
11 14 */
12 15 public interface CarInfoMapper
13 16 {
... ... @@ -25,7 +28,7 @@ public interface CarInfoMapper
25 28 * @param carInfo 运输车辆管理
26 29 * @return 运输车辆管理集合
27 30 */
28   - List<CarInfo> selectCarInfoList(CarInfo carInfo);
  31 + List<CarInfoVo> selectCarInfoList(CarInfoVo carInfo);
29 32  
30 33 /**
31 34 * 新增运输车辆管理
... ... @@ -58,4 +61,19 @@ public interface CarInfoMapper
58 61 * @return 结果
59 62 */
60 63 int deleteCarInfoByIds(Long[] ids);
  64 +
  65 + /**
  66 + * 新增车辆驾驶员关系
  67 + * @return 结果
  68 + */
  69 + int addCarDriverRelation(CarDriverRelation carDriverRelation);
  70 +
  71 + /**
  72 + * 删除车辆驾驶员关系
  73 + * @param carId 车辆id
  74 + * @return 结果
  75 + */
  76 + int deleteCarDriverRelationByCarId(Long carId);
  77 +
  78 +
61 79 }
... ...
trash-unit/src/main/java/com/trash/carInfo/service/ICarInfoService.java
1 1 package com.trash.carInfo.service;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
4 5 import com.trash.carInfo.domain.CarInfo;
  6 +import com.trash.carInfo.domain.vo.CarInfoVo;
  7 +import org.springframework.web.multipart.MultipartFile;
5 8  
6 9 /**
7 10 * 运输车辆管理Service接口
8 11 *
9 12 * @author trash
10   - * @date 2023-11-15
  13 + * @date 2023-11-21
11 14 */
12 15 public interface ICarInfoService
13 16 {
... ... @@ -21,27 +24,51 @@ public interface ICarInfoService
21 24  
22 25 /**
23 26 * 查询运输车辆管理列表
24   - *
  27 + *
25 28 * @param carInfo 运输车辆管理
26 29 * @return 运输车辆管理集合
27 30 */
28   - List<CarInfo> selectCarInfoList(CarInfo carInfo);
  31 + List<CarInfoVo> selectCarInfoList(CarInfoVo carInfo);
29 32  
30 33 /**
31 34 * 新增运输车辆管理
32   - *
33   - * @param carInfo 运输车辆管理
  35 + *
  36 + * @param roadTransportFiles
  37 + * @param drivingLicenseFiles
  38 + * @param carFrontFiles
  39 + * @param carLeftFiles
  40 + * @param carBehindFiles
  41 + * @param carRightFiles
  42 + * @param carInfo 运输车辆管理
34 43 * @return 结果
35 44 */
36   - int insertCarInfo(CarInfo carInfo);
  45 + int insertCarInfo(MultipartFile[] roadTransportFiles,
  46 + MultipartFile[] drivingLicenseFiles,
  47 + MultipartFile[] carFrontFiles,
  48 + MultipartFile[] carLeftFiles,
  49 + MultipartFile[] carBehindFiles,
  50 + MultipartFile[] carRightFiles,
  51 + CarInfo carInfo) throws IOException;
37 52  
38 53 /**
39 54 * 修改运输车辆管理
40   - *
41   - * @param carInfo 运输车辆管理
  55 + *
  56 + * @param roadTransportFiles
  57 + * @param drivingLicenseFiles
  58 + * @param carFrontFiles
  59 + * @param carLeftFiles
  60 + * @param carBehindFiles
  61 + * @param carRightFiles
  62 + * @param carInfo 运输车辆管理
42 63 * @return 结果
43 64 */
44   - int updateCarInfo(CarInfo carInfo);
  65 + int updateCarInfo(MultipartFile[] roadTransportFiles,
  66 + MultipartFile[] drivingLicenseFiles,
  67 + MultipartFile[] carFrontFiles,
  68 + MultipartFile[] carLeftFiles,
  69 + MultipartFile[] carBehindFiles,
  70 + MultipartFile[] carRightFiles,
  71 + CarInfo carInfo) throws IOException;
45 72  
46 73 /**
47 74 * 批量删除运输车辆管理
... ...
trash-unit/src/main/java/com/trash/carInfo/service/impl/CarInfoServiceImpl.java
1 1 package com.trash.carInfo.service.impl;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
  5 +
  6 +import com.trash.carInfo.domain.CarDriverRelation;
  7 +import com.trash.carInfo.domain.vo.CarInfoVo;
  8 +import com.trash.common.config.trashConfig;
4 9 import com.trash.common.utils.DateUtils;
  10 +import com.trash.common.utils.SecurityUtils;
  11 +import com.trash.enterprise.domain.TransportationEnterprise;
  12 +import com.trash.enterprise.mapper.TransportationEnterpriseMapper;
5 13 import org.springframework.beans.factory.annotation.Autowired;
6 14 import org.springframework.stereotype.Service;
7 15 import com.trash.carInfo.mapper.CarInfoMapper;
8 16 import com.trash.carInfo.domain.CarInfo;
9 17 import com.trash.carInfo.service.ICarInfoService;
  18 +import org.springframework.transaction.annotation.Transactional;
  19 +import org.springframework.web.multipart.MultipartFile;
  20 +
  21 +import static com.trash.common.utils.file.FileUploadUtils.upload;
10 22  
11 23 /**
12 24 * 运输车辆管理Service业务层处理
13 25 *
14 26 * @author trash
15   - * @date 2023-11-15
  27 + * @date 2023-11-21
16 28 */
17 29 @Service
18 30 public class CarInfoServiceImpl implements ICarInfoService
... ... @@ -20,6 +32,9 @@ public class CarInfoServiceImpl implements ICarInfoService
20 32 @Autowired
21 33 private CarInfoMapper carInfoMapper;
22 34  
  35 + @Autowired
  36 + private TransportationEnterpriseMapper transportationEnterpriseMapper;
  37 +
23 38 /**
24 39 * 查询运输车辆管理
25 40 *
... ... @@ -34,39 +49,124 @@ public class CarInfoServiceImpl implements ICarInfoService
34 49  
35 50 /**
36 51 * 查询运输车辆管理列表
37   - *
  52 + *
38 53 * @param carInfo 运输车辆管理
39 54 * @return 运输车辆管理
40 55 */
41 56 @Override
42   - public List<CarInfo> selectCarInfoList(CarInfo carInfo)
  57 + public List<CarInfoVo> selectCarInfoList(CarInfoVo carInfo)
43 58 {
44 59 return carInfoMapper.selectCarInfoList(carInfo);
45 60 }
46 61  
47 62 /**
48 63 * 新增运输车辆管理
49   - *
50   - * @param carInfo 运输车辆管理
  64 + *
  65 + * @param roadTransportFiles
  66 + * @param drivingLicenseFiles
  67 + * @param carFrontFiles
  68 + * @param carLeftFiles
  69 + * @param carBehindFiles
  70 + * @param carRightFiles
  71 + * @param carInfo 运输车辆管理
51 72 * @return 结果
52 73 */
53 74 @Override
54   - public int insertCarInfo(CarInfo carInfo)
55   - {
  75 + @Transactional
  76 + public int insertCarInfo(MultipartFile[] roadTransportFiles, MultipartFile[] drivingLicenseFiles, MultipartFile[] carFrontFiles, MultipartFile[] carLeftFiles, MultipartFile[] carBehindFiles, MultipartFile[] carRightFiles, CarInfo carInfo) throws IOException {
56 77 carInfo.setCreateTime(DateUtils.getNowDate());
57   - return carInfoMapper.insertCarInfo(carInfo);
  78 + carInfo.setCreateBy(SecurityUtils.getUsername());
  79 + carInfo.setCreditStatus("正常");
  80 + carInfo.setStatus(0);
  81 + for (MultipartFile file : roadTransportFiles) {
  82 + carInfo.setRoadTransport(carInfo.getRoadTransport()!=null?carInfo.getRoadTransport()+";"+uploadFile(file):uploadFile(file));
  83 + }
  84 + for (MultipartFile file : drivingLicenseFiles) {
  85 + carInfo.setDrivingLicense(carInfo.getDrivingLicense()!=null?carInfo.getDrivingLicense()+";"+uploadFile(file):uploadFile(file));
  86 + }
  87 + for (MultipartFile file : carFrontFiles) {
  88 + carInfo.setCarFront(carInfo.getCarFront()!=null?carInfo.getCarFront()+";"+uploadFile(file):uploadFile(file));
  89 + }
  90 + for (MultipartFile file : carLeftFiles) {
  91 + carInfo.setCarLeft(carInfo.getCarLeft()!=null?carInfo.getCarLeft()+";"+uploadFile(file):uploadFile(file));
  92 + }
  93 + for (MultipartFile file : carBehindFiles) {
  94 + carInfo.setCarBehind(carInfo.getCarBehind()!=null?carInfo.getCarBehind()+";"+uploadFile(file):uploadFile(file));
  95 + }
  96 + for (MultipartFile file : carRightFiles) {
  97 + carInfo.setCarRight(carInfo.getCarRight()!=null?carInfo.getCarRight()+";"+uploadFile(file):uploadFile(file));
  98 + }
  99 + carInfo.setRoadTransport(removeSemicolon(carInfo.getRoadTransport()));
  100 + carInfo.setDrivingLicense(removeSemicolon(carInfo.getDrivingLicense()));
  101 + carInfo.setCarFront(removeSemicolon(carInfo.getCarFront()));
  102 + carInfo.setCarLeft(removeSemicolon(carInfo.getCarLeft()));
  103 + carInfo.setCarBehind(removeSemicolon(carInfo.getCarBehind()));
  104 + carInfo.setCarRight(removeSemicolon(carInfo.getCarRight()));
  105 + int result = carInfoMapper.insertCarInfo(carInfo);
  106 +
  107 + String[] Drivers = carInfo.getDrivers().split(",");
  108 + int carCount = 0;
  109 + for (String driver : Drivers) {
  110 + CarDriverRelation carDriverRelation = new CarDriverRelation();
  111 + carDriverRelation.setCarId(carInfo.getId());
  112 + carDriverRelation.setDriverId(Long.parseLong(driver));
  113 + carCount = carCount+carInfoMapper.addCarDriverRelation(carDriverRelation);
  114 + }
  115 +
  116 + return result;
58 117 }
59 118  
60 119 /**
61 120 * 修改运输车辆管理
62   - *
63   - * @param carInfo 运输车辆管理
  121 + *
  122 + * @param roadTransportFiles
  123 + * @param drivingLicenseFiles
  124 + * @param carFrontFiles
  125 + * @param carLeftFiles
  126 + * @param carBehindFiles
  127 + * @param carRightFiles
  128 + * @param carInfo 运输车辆管理
64 129 * @return 结果
65 130 */
66 131 @Override
67   - public int updateCarInfo(CarInfo carInfo)
68   - {
  132 + public int updateCarInfo(MultipartFile[] roadTransportFiles, MultipartFile[] drivingLicenseFiles, MultipartFile[] carFrontFiles, MultipartFile[] carLeftFiles, MultipartFile[] carBehindFiles, MultipartFile[] carRightFiles, CarInfo carInfo) throws IOException {
69 133 carInfo.setUpdateTime(DateUtils.getNowDate());
  134 + carInfo.setUpdateBy(SecurityUtils.getUsername());
  135 + for (MultipartFile file : roadTransportFiles) {
  136 + carInfo.setRoadTransport(carInfo.getRoadTransport()!=null?carInfo.getRoadTransport()+";"+uploadFile(file):uploadFile(file));
  137 + }
  138 + for (MultipartFile file : drivingLicenseFiles) {
  139 + carInfo.setDrivingLicense(carInfo.getDrivingLicense()!=null?carInfo.getDrivingLicense()+";"+uploadFile(file):uploadFile(file));
  140 + }
  141 + for (MultipartFile file : carFrontFiles) {
  142 + carInfo.setCarFront(carInfo.getCarFront()!=null?carInfo.getCarFront()+";"+uploadFile(file):uploadFile(file));
  143 + }
  144 + for (MultipartFile file : carLeftFiles) {
  145 + carInfo.setCarLeft(carInfo.getCarLeft()!=null?carInfo.getCarLeft()+";"+uploadFile(file):uploadFile(file));
  146 + }
  147 + for (MultipartFile file : carBehindFiles) {
  148 + carInfo.setCarBehind(carInfo.getCarBehind()!=null?carInfo.getCarBehind()+";"+uploadFile(file):uploadFile(file));
  149 + }
  150 + for (MultipartFile file : carRightFiles) {
  151 + carInfo.setCarRight(carInfo.getCarRight()!=null?carInfo.getCarRight()+";"+uploadFile(file):uploadFile(file));
  152 + }
  153 + carInfo.setRoadTransport(removeSemicolon(carInfo.getRoadTransport()));
  154 + carInfo.setDrivingLicense(removeSemicolon(carInfo.getDrivingLicense()));
  155 + carInfo.setCarFront(removeSemicolon(carInfo.getCarFront()));
  156 + carInfo.setCarLeft(removeSemicolon(carInfo.getCarLeft()));
  157 + carInfo.setCarBehind(removeSemicolon(carInfo.getCarBehind()));
  158 + carInfo.setCarRight(removeSemicolon(carInfo.getCarRight()));
  159 +
  160 + String[] Drivers = carInfo.getDrivers().split(",");
  161 + //删除原有关系
  162 + carInfoMapper.deleteCarDriverRelationByCarId(carInfo.getId());
  163 + //添加新关系
  164 + for (String driver : Drivers) {
  165 + CarDriverRelation carDriverRelation = new CarDriverRelation();
  166 + carDriverRelation.setCarId(carInfo.getId());
  167 + carDriverRelation.setDriverId(Long.parseLong(driver));
  168 + carInfoMapper.addCarDriverRelation(carDriverRelation);
  169 + }
70 170 return carInfoMapper.updateCarInfo(carInfo);
71 171 }
72 172  
... ... @@ -93,4 +193,25 @@ public class CarInfoServiceImpl implements ICarInfoService
93 193 {
94 194 return carInfoMapper.deleteCarInfoById(id);
95 195 }
  196 +
  197 + /**
  198 + * 文件上传
  199 + *
  200 + * @param file
  201 + * @author 2c
  202 + */
  203 + public static String uploadFile(MultipartFile file) throws IOException {
  204 + // 上传文件路径
  205 + String filePath = trashConfig.getUploadPath();
  206 + // 上传并返回新文件名称
  207 + String newFileName = upload(filePath, file);
  208 + return newFileName;
  209 + }
  210 +
  211 + //去掉第一个分号,如果有的话
  212 + public String removeSemicolon(String str){
  213 + if (str.startsWith(";"))
  214 + str = str.substring(1);
  215 + return str;
  216 + }
96 217 }
... ...
trash-unit/src/main/java/com/trash/disposalSite/controller/DisposalSiteController.java
1 1 package com.trash.disposalSite.controller;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
  5 +
  6 +import com.trash.common.annotation.RepeatSubmit;
4 7 import org.springframework.security.access.prepost.PreAuthorize;
5 8 import org.springframework.beans.factory.annotation.Autowired;
6   -import org.springframework.web.bind.annotation.GetMapping;
7   -import org.springframework.web.bind.annotation.PostMapping;
8   -import org.springframework.web.bind.annotation.PutMapping;
9   -import org.springframework.web.bind.annotation.DeleteMapping;
10   -import org.springframework.web.bind.annotation.PathVariable;
11   -import org.springframework.web.bind.annotation.RequestBody;
12   -import org.springframework.web.bind.annotation.RequestMapping;
13   -import org.springframework.web.bind.annotation.RestController;
  9 +import org.springframework.web.bind.annotation.*;
14 10 import com.trash.common.annotation.Log;
15 11 import com.trash.common.core.controller.BaseController;
16 12 import com.trash.common.core.domain.AjaxResult;
... ... @@ -19,15 +15,16 @@ import com.trash.disposalSite.domain.DisposalSite;
19 15 import com.trash.disposalSite.service.IDisposalSiteService;
20 16 import com.trash.common.utils.poi.ExcelUtil;
21 17 import com.trash.common.core.page.TableDataInfo;
  18 +import org.springframework.web.multipart.MultipartFile;
22 19  
23 20 /**
24 21 * 处理场所管理Controller
25 22 *
26 23 * @author trash
27   - * @date 2023-11-15
  24 + * @date 2023-11-21
28 25 */
29 26 @RestController
30   -@RequestMapping("/disposalSite")
  27 +@RequestMapping("/unit/disposalSite")
31 28 public class DisposalSiteController extends BaseController
32 29 {
33 30 @Autowired
... ... @@ -36,7 +33,7 @@ public class DisposalSiteController extends BaseController
36 33 /**
37 34 * 查询处理场所管理列表
38 35 */
39   -// @PreAuthorize("@ss.hasPermi('disposalSite:disposalSite:list')")
  36 + @PreAuthorize("@ss.hasPermi('unit:disposalSite:list')")
40 37 @GetMapping("/list")
41 38 public TableDataInfo list(DisposalSite disposalSite)
42 39 {
... ... @@ -48,7 +45,7 @@ public class DisposalSiteController extends BaseController
48 45 /**
49 46 * 导出处理场所管理列表
50 47 */
51   - @PreAuthorize("@ss.hasPermi('disposalSite:disposalSite:export')")
  48 + @PreAuthorize("@ss.hasPermi('unit:disposalSite:export')")
52 49 @Log(title = "处理场所管理", businessType = BusinessType.EXPORT)
53 50 @GetMapping("/export")
54 51 public AjaxResult export(DisposalSite disposalSite)
... ... @@ -61,7 +58,7 @@ public class DisposalSiteController extends BaseController
61 58 /**
62 59 * 获取处理场所管理详细信息
63 60 */
64   - @PreAuthorize("@ss.hasPermi('disposalSite:disposalSite:query')")
  61 + @PreAuthorize("@ss.hasPermi('unit:disposalSite:query')")
65 62 @GetMapping(value = "/{id}")
66 63 public AjaxResult getInfo(@PathVariable("id") Long id)
67 64 {
... ... @@ -71,29 +68,42 @@ public class DisposalSiteController extends BaseController
71 68 /**
72 69 * 新增处理场所管理
73 70 */
74   - @PreAuthorize("@ss.hasPermi('disposalSite:disposalSite:add')")
  71 + @PreAuthorize("@ss.hasPermi('unit:disposalSite:add')")
75 72 @Log(title = "处理场所管理", businessType = BusinessType.INSERT)
76 73 @PostMapping
77   - public AjaxResult add(@RequestBody DisposalSite disposalSite)
78   - {
79   - return toAjax(disposalSiteService.insertDisposalSite(disposalSite));
  74 + @RepeatSubmit
  75 + public AjaxResult add(@RequestParam(value = "approvalDocumentFiles") MultipartFile[] approvalDocument,
  76 + @RequestParam(value = "approvalDataFiles") MultipartFile[] approvalData,
  77 + @RequestParam(value = "scenePhotoFiles") MultipartFile[] scenePhoto,
  78 + @RequestParam(value = "carWashingFacilitiesImageFiles") MultipartFile[] carWashingFacilitiesImage,
  79 + @RequestParam(value = "safetyAssessmentReportFiles") MultipartFile[] safetyAssessmentReport,
  80 + @RequestParam(value = "environmentalApprovalFiles") MultipartFile[] environmentalApproval,
  81 + @RequestParam(value = "authorizationFiles") MultipartFile[] authorization,
  82 + @RequestParam(value = "otherInformationFiles") MultipartFile[] otherInformation, DisposalSite disposalSite) throws IOException {
  83 + return toAjax(disposalSiteService.insertDisposalSite(approvalDocument,approvalData,scenePhoto,carWashingFacilitiesImage,safetyAssessmentReport,environmentalApproval,authorization,otherInformation,disposalSite));
80 84 }
81 85  
82 86 /**
83 87 * 修改处理场所管理
84 88 */
85   - @PreAuthorize("@ss.hasPermi('disposalSite:disposalSite:edit')")
  89 + @PreAuthorize("@ss.hasPermi('unit:disposalSite:edit')")
86 90 @Log(title = "处理场所管理", businessType = BusinessType.UPDATE)
87 91 @PutMapping
88   - public AjaxResult edit(@RequestBody DisposalSite disposalSite)
89   - {
90   - return toAjax(disposalSiteService.updateDisposalSite(disposalSite));
  92 + public AjaxResult edit(@RequestParam(value = "approvalDocumentFiles") MultipartFile[] approvalDocument,
  93 + @RequestParam(value = "approvalDataFiles") MultipartFile[] approvalData,
  94 + @RequestParam(value = "scenePhotoFiles") MultipartFile[] scenePhoto,
  95 + @RequestParam(value = "carWashingFacilitiesImageFiles") MultipartFile[] carWashingFacilitiesImage,
  96 + @RequestParam(value = "safetyAssessmentReportFiles") MultipartFile[] safetyAssessmentReport,
  97 + @RequestParam(value = "environmentalApprovalFiles") MultipartFile[] environmentalApproval,
  98 + @RequestParam(value = "authorizationFiles") MultipartFile[] authorization,
  99 + @RequestParam(value = "otherInformationFiles") MultipartFile[] otherInformation, DisposalSite disposalSite) throws IOException {
  100 + return toAjax(disposalSiteService.updateDisposalSite(approvalDocument,approvalData,scenePhoto,carWashingFacilitiesImage,safetyAssessmentReport,environmentalApproval,authorization,otherInformation,disposalSite));
91 101 }
92 102  
93 103 /**
94 104 * 删除处理场所管理
95 105 */
96   - @PreAuthorize("@ss.hasPermi('disposalSite:disposalSite:remove')")
  106 + @PreAuthorize("@ss.hasPermi('unit:disposalSite:remove')")
97 107 @Log(title = "处理场所管理", businessType = BusinessType.DELETE)
98 108 @DeleteMapping("/{ids}")
99 109 public AjaxResult remove(@PathVariable Long[] ids)
... ...
trash-unit/src/main/java/com/trash/disposalSite/domain/DisposalSite.java
... ... @@ -11,7 +11,7 @@ import com.trash.common.core.domain.BaseEntity;
11 11 * 处理场所管理对象 disposal_site
12 12 *
13 13 * @author trash
14   - * @date 2023-11-15
  14 + * @date 2023-11-21
15 15 */
16 16 public class DisposalSite extends BaseEntity
17 17 {
... ... @@ -78,6 +78,10 @@ public class DisposalSite extends BaseEntity
78 78 @Excel(name = "审批方量(m³)")
79 79 private String squareMeasure;
80 80  
  81 + /** 剩余方量 */
  82 + @Excel(name = "剩余方量")
  83 + private String surplusSquareMeasure;
  84 +
81 85 /** 洗车作业设施 */
82 86 @Excel(name = "洗车作业设施")
83 87 private String carWashingFacilities;
... ... @@ -104,11 +108,19 @@ public class DisposalSite extends BaseEntity
104 108 @Excel(name = "办理意见")
105 109 private String handlingAdvice;
106 110  
  111 + /** 消纳来源 */
  112 + @Excel(name = "消纳来源")
  113 + private String absorbSource;
  114 +
107 115 /** 电子围栏
108 116 */
109 117 @Excel(name = "电子围栏")
110 118 private String electronicFence;
111 119  
  120 + /** 信用状态 */
  121 + @Excel(name = "信用状态")
  122 + private String creditStatus;
  123 +
112 124 /** 批准文件 */
113 125 @Excel(name = "批准文件")
114 126 private String approvalDocument;
... ... @@ -126,13 +138,17 @@ public class DisposalSite extends BaseEntity
126 138 @Excel(name = "洗车设施照片")
127 139 private String carWashingFacilitiesImage;
128 140  
  141 + /** 期限范围 */
  142 + @Excel(name = "期限范围")
  143 + private String termRange;
  144 +
129 145 /** 安全评估报告 */
130 146 @Excel(name = "安全评估报告")
131 147 private String safetyAssessmentReport;
132 148  
133 149 /** 环评报告及环保部门批复
134 150 */
135   - @Excel(name = "环评报告及环保部门批复")
  151 + @Excel(name = "环评报告及环保部门批复 ")
136 152 private String environmentalApproval;
137 153  
138 154 /** 签署消纳合同授权委托书 */
... ... @@ -148,10 +164,25 @@ public class DisposalSite extends BaseEntity
148 164 private String companyIds;
149 165  
150 166 /** 审批状态,0=审批中,1=审批通过,2=被驳回 */
151   - @Excel(name = "审批状态,0=审批中,1=审批通过,2=被驳回")
  167 + @Excel(name = "审批状态",readConverterExp = "0=审批中,1=审批通过,2=被驳回")
152 168 private Integer status;
153 169  
154   - public void setId(Long id)
  170 + /** 二维码 */
  171 + private String qrCode;
  172 +
  173 + /** 审核情况 */
  174 + @Excel(name = "审核情况")
  175 + private String auditStatus;
  176 +
  177 + public String getAuditStatus() {
  178 + return auditStatus;
  179 + }
  180 +
  181 + public void setAuditStatus(String auditStatus) {
  182 + this.auditStatus = auditStatus;
  183 + }
  184 +
  185 + public void setId(Long id)
155 186 {
156 187 this.id = id;
157 188 }
... ... @@ -286,6 +317,15 @@ public class DisposalSite extends BaseEntity
286 317 {
287 318 return squareMeasure;
288 319 }
  320 + public void setSurplusSquareMeasure(String surplusSquareMeasure)
  321 + {
  322 + this.surplusSquareMeasure = surplusSquareMeasure;
  323 + }
  324 +
  325 + public String getSurplusSquareMeasure()
  326 + {
  327 + return surplusSquareMeasure;
  328 + }
289 329 public void setCarWashingFacilities(String carWashingFacilities)
290 330 {
291 331 this.carWashingFacilities = carWashingFacilities;
... ... @@ -340,6 +380,15 @@ public class DisposalSite extends BaseEntity
340 380 {
341 381 return handlingAdvice;
342 382 }
  383 + public void setAbsorbSource(String absorbSource)
  384 + {
  385 + this.absorbSource = absorbSource;
  386 + }
  387 +
  388 + public String getAbsorbSource()
  389 + {
  390 + return absorbSource;
  391 + }
343 392 public void setElectronicFence(String electronicFence)
344 393 {
345 394 this.electronicFence = electronicFence;
... ... @@ -349,6 +398,15 @@ public class DisposalSite extends BaseEntity
349 398 {
350 399 return electronicFence;
351 400 }
  401 + public void setCreditStatus(String creditStatus)
  402 + {
  403 + this.creditStatus = creditStatus;
  404 + }
  405 +
  406 + public String getCreditStatus()
  407 + {
  408 + return creditStatus;
  409 + }
352 410 public void setApprovalDocument(String approvalDocument)
353 411 {
354 412 this.approvalDocument = approvalDocument;
... ... @@ -385,6 +443,15 @@ public class DisposalSite extends BaseEntity
385 443 {
386 444 return carWashingFacilitiesImage;
387 445 }
  446 + public void setTermRange(String termRange)
  447 + {
  448 + this.termRange = termRange;
  449 + }
  450 +
  451 + public String getTermRange()
  452 + {
  453 + return termRange;
  454 + }
388 455 public void setSafetyAssessmentReport(String safetyAssessmentReport)
389 456 {
390 457 this.safetyAssessmentReport = safetyAssessmentReport;
... ... @@ -439,6 +506,15 @@ public class DisposalSite extends BaseEntity
439 506 {
440 507 return status;
441 508 }
  509 + public void setQrCode(String qrCode)
  510 + {
  511 + this.qrCode = qrCode;
  512 + }
  513 +
  514 + public String getQrCode()
  515 + {
  516 + return qrCode;
  517 + }
442 518  
443 519 @Override
444 520 public String toString() {
... ... @@ -458,17 +534,21 @@ public class DisposalSite extends BaseEntity
458 534 .append("validityBeginDate", getValidityBeginDate())
459 535 .append("validityEndDate", getValidityEndDate())
460 536 .append("squareMeasure", getSquareMeasure())
  537 + .append("surplusSquareMeasure", getSurplusSquareMeasure())
461 538 .append("carWashingFacilities", getCarWashingFacilities())
462 539 .append("exitRoadCondition", getExitRoadCondition())
463 540 .append("lightingFacility", getLightingFacility())
464 541 .append("videoSurveillanceFacility", getVideoSurveillanceFacility())
465 542 .append("preparer", getPreparer())
466 543 .append("handlingAdvice", getHandlingAdvice())
  544 + .append("absorbSource", getAbsorbSource())
467 545 .append("electronicFence", getElectronicFence())
  546 + .append("creditStatus", getCreditStatus())
468 547 .append("approvalDocument", getApprovalDocument())
469 548 .append("approvalData", getApprovalData())
470 549 .append("scenePhoto", getScenePhoto())
471 550 .append("carWashingFacilitiesImage", getCarWashingFacilitiesImage())
  551 + .append("termRange", getTermRange())
472 552 .append("safetyAssessmentReport", getSafetyAssessmentReport())
473 553 .append("environmentalApproval", getEnvironmentalApproval())
474 554 .append("authorization", getAuthorization())
... ... @@ -479,6 +559,7 @@ public class DisposalSite extends BaseEntity
479 559 .append("createBy", getCreateBy())
480 560 .append("updateTime", getUpdateTime())
481 561 .append("updateBy", getUpdateBy())
  562 + .append("qrCode", getQrCode())
482 563 .toString();
483 564 }
484 565 }
... ...
trash-unit/src/main/java/com/trash/disposalSite/mapper/DisposalSiteMapper.java
... ... @@ -7,7 +7,7 @@ import com.trash.disposalSite.domain.DisposalSite;
7 7 * 处理场所管理Mapper接口
8 8 *
9 9 * @author trash
10   - * @date 2023-11-15
  10 + * @date 2023-11-21
11 11 */
12 12 public interface DisposalSiteMapper
13 13 {
... ...
trash-unit/src/main/java/com/trash/disposalSite/service/IDisposalSiteService.java
1 1 package com.trash.disposalSite.service;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
4 5 import com.trash.disposalSite.domain.DisposalSite;
  6 +import org.springframework.web.multipart.MultipartFile;
5 7  
6 8 /**
7 9 * 处理场所管理Service接口
8 10 *
9 11 * @author trash
10   - * @date 2023-11-15
  12 + * @date 2023-11-21
11 13 */
12 14 public interface IDisposalSiteService
13 15 {
... ... @@ -29,19 +31,35 @@ public interface IDisposalSiteService
29 31  
30 32 /**
31 33 * 新增处理场所管理
32   - *
33   - * @param disposalSite 处理场所管理
  34 + *
  35 + * @param approvalDocument
  36 + * @param approvalData
  37 + * @param scenePhoto
  38 + * @param carWashingFacilitiesImage
  39 + * @param safetyAssessmentReport
  40 + * @param environmentalApproval
  41 + * @param authorization
  42 + * @param otherInformation
  43 + * @param disposalSite 处理场所管理
34 44 * @return 结果
35 45 */
36   - int insertDisposalSite(DisposalSite disposalSite);
  46 + int insertDisposalSite(MultipartFile[] approvalDocument,MultipartFile[] approvalData,MultipartFile[] scenePhoto,MultipartFile[] carWashingFacilitiesImage,MultipartFile[] safetyAssessmentReport,MultipartFile[] environmentalApproval,MultipartFile[] authorization,MultipartFile[] otherInformation, DisposalSite disposalSite) throws IOException;
37 47  
38 48 /**
39 49 * 修改处理场所管理
40   - *
41   - * @param disposalSite 处理场所管理
  50 + *
  51 + * @param approvalDocument
  52 + * @param approvalData
  53 + * @param scenePhoto
  54 + * @param carWashingFacilitiesImage
  55 + * @param safetyAssessmentReport
  56 + * @param environmentalApproval
  57 + * @param authorization
  58 + * @param otherInformation
  59 + * @param disposalSite 处理场所管理
42 60 * @return 结果
43 61 */
44   - int updateDisposalSite(DisposalSite disposalSite);
  62 + int updateDisposalSite(MultipartFile[] approvalDocument,MultipartFile[] approvalData,MultipartFile[] scenePhoto,MultipartFile[] carWashingFacilitiesImage,MultipartFile[] safetyAssessmentReport,MultipartFile[] environmentalApproval,MultipartFile[] authorization,MultipartFile[] otherInformation, DisposalSite disposalSite) throws IOException;
45 63  
46 64 /**
47 65 * 批量删除处理场所管理
... ...
trash-unit/src/main/java/com/trash/disposalSite/service/impl/DisposalSiteServiceImpl.java
1 1 package com.trash.disposalSite.service.impl;
2 2  
3   -import java.util.List;
  3 +import com.trash.common.config.trashConfig;
4 4 import com.trash.common.utils.DateUtils;
5   -import org.springframework.beans.factory.annotation.Autowired;
6   -import org.springframework.stereotype.Service;
7   -import com.trash.disposalSite.mapper.DisposalSiteMapper;
  5 +import com.trash.common.utils.SecurityUtils;
8 6 import com.trash.disposalSite.domain.DisposalSite;
  7 +import com.trash.disposalSite.mapper.DisposalSiteMapper;
9 8 import com.trash.disposalSite.service.IDisposalSiteService;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.stereotype.Service;
  11 +import org.springframework.web.multipart.MultipartFile;
  12 +
  13 +import java.io.IOException;
  14 +import java.util.List;
  15 +
  16 +import static com.trash.common.utils.file.FileUploadUtils.upload;
10 17  
11 18 /**
12 19 * 处理场所管理Service业务层处理
13   - *
  20 + *
14 21 * @author trash
15   - * @date 2023-11-15
  22 + * @date 2023-11-21
16 23 */
17 24 @Service
18   -public class DisposalSiteServiceImpl implements IDisposalSiteService
19   -{
  25 +public class DisposalSiteServiceImpl implements IDisposalSiteService {
20 26 @Autowired
21 27 private DisposalSiteMapper disposalSiteMapper;
22 28  
23 29 /**
24 30 * 查询处理场所管理
25   - *
  31 + *
26 32 * @param id 处理场所管理ID
27 33 * @return 处理场所管理
28 34 */
29 35 @Override
30   - public DisposalSite selectDisposalSiteById(Long id)
31   - {
  36 + public DisposalSite selectDisposalSiteById(Long id) {
32 37 return disposalSiteMapper.selectDisposalSiteById(id);
33 38 }
34 39  
35 40 /**
36 41 * 查询处理场所管理列表
37   - *
  42 + *
38 43 * @param disposalSite 处理场所管理
39 44 * @return 处理场所管理
40 45 */
41 46 @Override
42   - public List<DisposalSite> selectDisposalSiteList(DisposalSite disposalSite)
43   - {
  47 + public List<DisposalSite> selectDisposalSiteList(DisposalSite disposalSite) {
44 48 return disposalSiteMapper.selectDisposalSiteList(disposalSite);
45 49 }
46 50  
47 51 /**
48 52 * 新增处理场所管理
49   - *
50   - * @param disposalSite 处理场所管理
  53 + *
  54 + * @param approvalDocument
  55 + * @param approvalData
  56 + * @param scenePhoto
  57 + * @param carWashingFacilitiesImage
  58 + * @param safetyAssessmentReport
  59 + * @param environmentalApproval
  60 + * @param authorization
  61 + * @param otherInformation
  62 + * @param disposalSite 处理场所管理
51 63 * @return 结果
52 64 */
53 65 @Override
54   - public int insertDisposalSite(DisposalSite disposalSite)
55   - {
  66 + public int insertDisposalSite(MultipartFile[] approvalDocument, MultipartFile[] approvalData, MultipartFile[] scenePhoto, MultipartFile[] carWashingFacilitiesImage, MultipartFile[] safetyAssessmentReport, MultipartFile[] environmentalApproval, MultipartFile[] authorization, MultipartFile[] otherInformation, DisposalSite disposalSite) throws IOException {
56 67 disposalSite.setCreateTime(DateUtils.getNowDate());
  68 + disposalSite.setCreateBy(SecurityUtils.getUsername());
  69 + disposalSite.setStatus(0);
  70 + disposalSite.setCreditStatus("正常");
  71 + disposalSite.setTermRange("未超期");
  72 + disposalSite.setAuditStatus("新增审核中");
  73 + for (MultipartFile multipartFile : approvalDocument) {
  74 + disposalSite.setApprovalDocument(disposalSite.getApprovalDocument() != null ? disposalSite.getApprovalDocument() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  75 + }
  76 + for (MultipartFile multipartFile : approvalData) {
  77 + disposalSite.setApprovalData(disposalSite.getApprovalData() != null ? disposalSite.getApprovalData() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  78 + }
  79 + for (MultipartFile multipartFile : scenePhoto) {
  80 + disposalSite.setScenePhoto(disposalSite.getScenePhoto() != null ? disposalSite.getScenePhoto() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  81 + }
  82 + for (MultipartFile multipartFile : carWashingFacilitiesImage) {
  83 + disposalSite.setCarWashingFacilitiesImage(disposalSite.getCarWashingFacilitiesImage() != null ? disposalSite.getCarWashingFacilitiesImage() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  84 + }
  85 + for (MultipartFile multipartFile : safetyAssessmentReport) {
  86 + disposalSite.setSafetyAssessmentReport(disposalSite.getSafetyAssessmentReport() != null ? disposalSite.getSafetyAssessmentReport() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  87 + }
  88 + for (MultipartFile multipartFile : environmentalApproval) {
  89 + disposalSite.setEnvironmentalApproval(disposalSite.getEnvironmentalApproval() != null ? disposalSite.getEnvironmentalApproval() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  90 + }
  91 + for (MultipartFile multipartFile : authorization) {
  92 + disposalSite.setAuthorization(disposalSite.getAuthorization() != null ? disposalSite.getAuthorization() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  93 + }
  94 + for (MultipartFile multipartFile : otherInformation) {
  95 + disposalSite.setOtherInformation(disposalSite.getOtherInformation() != null ? disposalSite.getOtherInformation() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  96 + }
  97 + //去掉第一个分号,如果有的话
  98 + disposalSite.setApprovalDocument(removeSemicolon(disposalSite.getApprovalDocument()));
  99 + disposalSite.setApprovalData(removeSemicolon(disposalSite.getApprovalData()));
  100 + disposalSite.setScenePhoto(removeSemicolon(disposalSite.getScenePhoto()));
  101 + disposalSite.setCarWashingFacilitiesImage(removeSemicolon(disposalSite.getCarWashingFacilitiesImage()));
  102 + disposalSite.setSafetyAssessmentReport(removeSemicolon(disposalSite.getSafetyAssessmentReport()));
  103 + disposalSite.setEnvironmentalApproval(removeSemicolon(disposalSite.getEnvironmentalApproval()));
  104 + disposalSite.setAuthorization(removeSemicolon(disposalSite.getAuthorization()));
  105 + disposalSite.setOtherInformation(removeSemicolon(disposalSite.getOtherInformation()));
57 106 return disposalSiteMapper.insertDisposalSite(disposalSite);
58 107 }
59 108  
60 109 /**
61 110 * 修改处理场所管理
62   - *
63   - * @param disposalSite 处理场所管理
  111 + *
  112 + * @param approvalDocument
  113 + * @param approvalData
  114 + * @param scenePhoto
  115 + * @param carWashingFacilitiesImage
  116 + * @param safetyAssessmentReport
  117 + * @param environmentalApproval
  118 + * @param authorization
  119 + * @param otherInformation
  120 + * @param disposalSite 处理场所管理
64 121 * @return 结果
65 122 */
66 123 @Override
67   - public int updateDisposalSite(DisposalSite disposalSite)
68   - {
  124 + public int updateDisposalSite(MultipartFile[] approvalDocument, MultipartFile[] approvalData, MultipartFile[] scenePhoto, MultipartFile[] carWashingFacilitiesImage, MultipartFile[] safetyAssessmentReport, MultipartFile[] environmentalApproval, MultipartFile[] authorization, MultipartFile[] otherInformation, DisposalSite disposalSite) throws IOException {
69 125 disposalSite.setUpdateTime(DateUtils.getNowDate());
  126 + disposalSite.setUpdateBy(SecurityUtils.getUsername());
  127 + for (MultipartFile multipartFile : approvalDocument) {
  128 + disposalSite.setApprovalDocument(disposalSite.getApprovalDocument() != null ? disposalSite.getApprovalDocument() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  129 + }
  130 + for (MultipartFile multipartFile : approvalData) {
  131 + disposalSite.setApprovalData(disposalSite.getApprovalData() != null ? disposalSite.getApprovalData() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  132 + }
  133 + for (MultipartFile multipartFile : scenePhoto) {
  134 + disposalSite.setScenePhoto(disposalSite.getScenePhoto() != null ? disposalSite.getScenePhoto() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  135 + }
  136 + for (MultipartFile multipartFile : carWashingFacilitiesImage) {
  137 + disposalSite.setCarWashingFacilitiesImage(disposalSite.getCarWashingFacilitiesImage() != null ? disposalSite.getCarWashingFacilitiesImage() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  138 + }
  139 + for (MultipartFile multipartFile : safetyAssessmentReport) {
  140 + disposalSite.setSafetyAssessmentReport(disposalSite.getSafetyAssessmentReport() != null ? disposalSite.getSafetyAssessmentReport() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  141 + }
  142 + for (MultipartFile multipartFile : environmentalApproval) {
  143 + disposalSite.setEnvironmentalApproval(disposalSite.getEnvironmentalApproval() != null ? disposalSite.getEnvironmentalApproval() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  144 + }
  145 + for (MultipartFile multipartFile : authorization) {
  146 + disposalSite.setAuthorization(disposalSite.getAuthorization() != null ? disposalSite.getAuthorization() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  147 + }
  148 + for (MultipartFile multipartFile : otherInformation) {
  149 + disposalSite.setOtherInformation(disposalSite.getOtherInformation() != null ? disposalSite.getOtherInformation() + ";" + uploadFile(multipartFile) : uploadFile(multipartFile));
  150 + }
  151 + disposalSite.setApprovalDocument(removeSemicolon(disposalSite.getApprovalDocument()));
  152 + disposalSite.setApprovalData(removeSemicolon(disposalSite.getApprovalData()));
  153 + disposalSite.setScenePhoto(removeSemicolon(disposalSite.getScenePhoto()));
  154 + disposalSite.setCarWashingFacilitiesImage(removeSemicolon(disposalSite.getCarWashingFacilitiesImage()));
  155 + disposalSite.setSafetyAssessmentReport(removeSemicolon(disposalSite.getSafetyAssessmentReport()));
  156 + disposalSite.setEnvironmentalApproval(removeSemicolon(disposalSite.getEnvironmentalApproval()));
  157 + disposalSite.setAuthorization(removeSemicolon(disposalSite.getAuthorization()));
  158 + disposalSite.setOtherInformation(removeSemicolon(disposalSite.getOtherInformation()));
70 159 return disposalSiteMapper.updateDisposalSite(disposalSite);
71 160 }
72 161  
73 162 /**
74 163 * 批量删除处理场所管理
75   - *
  164 + *
76 165 * @param ids 需要删除的处理场所管理ID
77 166 * @return 结果
78 167 */
79 168 @Override
80   - public int deleteDisposalSiteByIds(Long[] ids)
81   - {
  169 + public int deleteDisposalSiteByIds(Long[] ids) {
82 170 return disposalSiteMapper.deleteDisposalSiteByIds(ids);
83 171 }
84 172  
85 173 /**
86 174 * 删除处理场所管理信息
87   - *
  175 + *
88 176 * @param id 处理场所管理ID
89 177 * @return 结果
90 178 */
91 179 @Override
92   - public int deleteDisposalSiteById(Long id)
93   - {
  180 + public int deleteDisposalSiteById(Long id) {
94 181 return disposalSiteMapper.deleteDisposalSiteById(id);
95 182 }
  183 +
  184 + /**
  185 + * 文件上传
  186 + *
  187 + * @param file
  188 + * @author 2c
  189 + */
  190 + public static String uploadFile(MultipartFile file) throws IOException {
  191 + // 上传文件路径
  192 + String filePath = trashConfig.getUploadPath();
  193 + // 上传并返回新文件名称
  194 + String newFileName = upload(filePath, file);
  195 + return newFileName;
  196 + }
  197 +
  198 + //去掉第一个分号,如果有的话
  199 + public String removeSemicolon(String str){
  200 + if (str.startsWith(";"))
  201 + str = str.substring(1);
  202 + return str;
  203 + }
96 204 }
... ...
trash-unit/src/main/java/com/trash/driver/controller/DriverController.java
1 1 package com.trash.driver.controller;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
  5 +import java.util.Map;
  6 +
  7 +import com.trash.driver.domain.vo.DriverVo;
4 8 import org.springframework.security.access.prepost.PreAuthorize;
5 9 import org.springframework.beans.factory.annotation.Autowired;
6   -import org.springframework.web.bind.annotation.GetMapping;
7   -import org.springframework.web.bind.annotation.PostMapping;
8   -import org.springframework.web.bind.annotation.PutMapping;
9   -import org.springframework.web.bind.annotation.DeleteMapping;
10   -import org.springframework.web.bind.annotation.PathVariable;
11   -import org.springframework.web.bind.annotation.RequestBody;
12   -import org.springframework.web.bind.annotation.RequestMapping;
13   -import org.springframework.web.bind.annotation.RestController;
  10 +import org.springframework.web.bind.annotation.*;
14 11 import com.trash.common.annotation.Log;
15 12 import com.trash.common.core.controller.BaseController;
16 13 import com.trash.common.core.domain.AjaxResult;
... ... @@ -19,15 +16,16 @@ import com.trash.driver.domain.Driver;
19 16 import com.trash.driver.service.IDriverService;
20 17 import com.trash.common.utils.poi.ExcelUtil;
21 18 import com.trash.common.core.page.TableDataInfo;
  19 +import org.springframework.web.multipart.MultipartFile;
22 20  
23 21 /**
24 22 * 驾驶员管理Controller
25 23 *
26 24 * @author trash
27   - * @date 2023-11-15
  25 + * @date 2023-11-21
28 26 */
29 27 @RestController
30   -@RequestMapping("/driver")
  28 +@RequestMapping("/unit/driver")
31 29 public class DriverController extends BaseController
32 30 {
33 31 @Autowired
... ... @@ -36,32 +34,39 @@ public class DriverController extends BaseController
36 34 /**
37 35 * 查询驾驶员管理列表
38 36 */
39   -// @PreAuthorize("@ss.hasPermi('driver:driver:list')")
  37 + @PreAuthorize("@ss.hasPermi('unit:driver:list')")
40 38 @GetMapping("/list")
41   - public TableDataInfo list(Driver driver)
  39 + public TableDataInfo list(DriverVo driver)
42 40 {
43 41 startPage();
44   - List<Driver> list = driverService.selectDriverList(driver);
  42 + List<DriverVo> list = driverService.selectDriverList(driver);
45 43 return getDataTable(list);
46 44 }
47 45  
  46 + @PreAuthorize("@ss.hasPermi('unit:driver:list')")
  47 + @GetMapping("/listDriverByCompany/{companyId}")
  48 + public List<Map<Object,Object>> listDriverByCompany(@PathVariable("companyId") String companyId)
  49 + {
  50 + return driverService.selectDriverListByCompanyId(companyId);
  51 + }
  52 +
48 53 /**
49 54 * 导出驾驶员管理列表
50 55 */
51   - @PreAuthorize("@ss.hasPermi('driver:driver:export')")
  56 + @PreAuthorize("@ss.hasPermi('unit:driver:export')")
52 57 @Log(title = "驾驶员管理", businessType = BusinessType.EXPORT)
53 58 @GetMapping("/export")
54   - public AjaxResult export(Driver driver)
  59 + public AjaxResult export(DriverVo driver)
55 60 {
56   - List<Driver> list = driverService.selectDriverList(driver);
57   - ExcelUtil<Driver> util = new ExcelUtil<Driver>(Driver.class);
  61 + List<DriverVo> list = driverService.selectDriverList(driver);
  62 + ExcelUtil<DriverVo> util = new ExcelUtil<DriverVo>(DriverVo.class);
58 63 return util.exportExcel(list, "driver");
59 64 }
60 65  
61 66 /**
62 67 * 获取驾驶员管理详细信息
63 68 */
64   - @PreAuthorize("@ss.hasPermi('driver:driver:query')")
  69 + @PreAuthorize("@ss.hasPermi('unit:driver:query')")
65 70 @GetMapping(value = "/{id}")
66 71 public AjaxResult getInfo(@PathVariable("id") Long id)
67 72 {
... ... @@ -71,33 +76,42 @@ public class DriverController extends BaseController
71 76 /**
72 77 * 新增驾驶员管理
73 78 */
74   - @PreAuthorize("@ss.hasPermi('driver:driver:add')")
  79 + @PreAuthorize("@ss.hasPermi('unit:driver:add')")
75 80 @Log(title = "驾驶员管理", businessType = BusinessType.INSERT)
76 81 @PostMapping
77   - public AjaxResult add(@RequestBody Driver driver)
78   - {
79   - return toAjax(driverService.insertDriver(driver));
  82 + public AjaxResult add(@RequestParam(value = "drivingLicenceFiles") MultipartFile[] drivingLicenceFiles,
  83 + @RequestParam(value = "professionalQualificationFiles") MultipartFile[] professionalQualificationFiles,
  84 + @RequestParam(value = "safetyTrainingFiles") MultipartFile[] safetyTrainingFiles,
  85 + @RequestParam(value = "photographOneFiles") MultipartFile[] photographOneFiles,
  86 + @RequestParam(value = "photographTwoFiles") MultipartFile[] photographTwoFiles,
  87 + Driver driver) throws IOException {
  88 + return toAjax(driverService.insertDriver(drivingLicenceFiles,professionalQualificationFiles,safetyTrainingFiles,photographOneFiles,photographTwoFiles,driver));
80 89 }
81 90  
82 91 /**
83 92 * 修改驾驶员管理
84 93 */
85   - @PreAuthorize("@ss.hasPermi('driver:driver:edit')")
  94 + @PreAuthorize("@ss.hasPermi('unit:driver:edit')")
86 95 @Log(title = "驾驶员管理", businessType = BusinessType.UPDATE)
87 96 @PutMapping
88   - public AjaxResult edit(@RequestBody Driver driver)
89   - {
90   - return toAjax(driverService.updateDriver(driver));
  97 + public AjaxResult edit(@RequestParam(value = "drivingLicenceFiles") MultipartFile[] drivingLicenceFiles,
  98 + @RequestParam(value = "professionalQualificationFiles") MultipartFile[] professionalQualificationFiles,
  99 + @RequestParam(value = "safetyTrainingFiles") MultipartFile[] safetyTrainingFiles,
  100 + @RequestParam(value = "photographOneFiles") MultipartFile[] photographOneFiles,
  101 + @RequestParam(value = "photographTwoFiles") MultipartFile[] photographTwoFiles,
  102 + Driver driver) throws IOException {
  103 + return toAjax(driverService.updateDriver(drivingLicenceFiles,professionalQualificationFiles,safetyTrainingFiles,photographOneFiles,photographTwoFiles,driver));
91 104 }
92 105  
93 106 /**
94 107 * 删除驾驶员管理
95 108 */
96   - @PreAuthorize("@ss.hasPermi('driver:driver:remove')")
  109 + @PreAuthorize("@ss.hasPermi('unit:driver:remove')")
97 110 @Log(title = "驾驶员管理", businessType = BusinessType.DELETE)
98 111 @DeleteMapping("/{ids}")
99 112 public AjaxResult remove(@PathVariable Long[] ids)
100 113 {
101 114 return toAjax(driverService.deleteDriverByIds(ids));
102 115 }
  116 +
103 117 }
... ...
trash-unit/src/main/java/com/trash/driver/domain/Driver.java
... ... @@ -9,9 +9,9 @@ import com.trash.common.core.domain.BaseEntity;
9 9  
10 10 /**
11 11 * 驾驶员管理对象 driver
12   - *
  12 + *
13 13 * @author trash
14   - * @date 2023-11-15
  14 + * @date 2023-11-27
15 15 */
16 16 public class Driver extends BaseEntity
17 17 {
... ... @@ -77,155 +77,193 @@ public class Driver extends BaseEntity
77 77 @Excel(name = "审批状态,0=审批中,1=审批通过,2=被驳回")
78 78 private Integer status;
79 79  
80   - public void setId(Long id)
  80 + /** 一寸免冠照片1 */
  81 + @Excel(name = "一寸免冠照片1")
  82 + private String photographOne;
  83 +
  84 + /** 一寸免冠照片2 */
  85 + @Excel(name = "一寸免冠照片2")
  86 + private String photographTwo;
  87 +
  88 + private String phoneNo;
  89 +
  90 + public String getPhoneNo() {
  91 + return phoneNo;
  92 + }
  93 +
  94 + public void setPhoneNo(String phoneNo) {
  95 + this.phoneNo = phoneNo;
  96 + }
  97 +
  98 + public void setId(Long id)
81 99 {
82 100 this.id = id;
83 101 }
84 102  
85   - public Long getId()
  103 + public Long getId()
86 104 {
87 105 return id;
88 106 }
89   - public void setName(String name)
  107 + public void setName(String name)
90 108 {
91 109 this.name = name;
92 110 }
93 111  
94   - public String getName()
  112 + public String getName()
95 113 {
96 114 return name;
97 115 }
98   - public void setIdentityCard(String identityCard)
  116 + public void setIdentityCard(String identityCard)
99 117 {
100 118 this.identityCard = identityCard;
101 119 }
102 120  
103   - public String getIdentityCard()
  121 + public String getIdentityCard()
104 122 {
105 123 return identityCard;
106 124 }
107   - public void setCompanyId(Long companyId)
  125 + public void setCompanyId(Long companyId)
108 126 {
109 127 this.companyId = companyId;
110 128 }
111 129  
112   - public Long getCompanyId()
  130 + public Long getCompanyId()
113 131 {
114 132 return companyId;
115 133 }
116   - public void setProfessionalQualificationBeginDate(Date professionalQualificationBeginDate)
  134 + public void setProfessionalQualificationBeginDate(Date professionalQualificationBeginDate)
117 135 {
118 136 this.professionalQualificationBeginDate = professionalQualificationBeginDate;
119 137 }
120 138  
121   - public Date getProfessionalQualificationBeginDate()
  139 + public Date getProfessionalQualificationBeginDate()
122 140 {
123 141 return professionalQualificationBeginDate;
124 142 }
125   - public void setProfessionalQualificationEndDate(Date professionalQualificationEndDate)
  143 + public void setProfessionalQualificationEndDate(Date professionalQualificationEndDate)
126 144 {
127 145 this.professionalQualificationEndDate = professionalQualificationEndDate;
128 146 }
129 147  
130   - public Date getProfessionalQualificationEndDate()
  148 + public Date getProfessionalQualificationEndDate()
131 149 {
132 150 return professionalQualificationEndDate;
133 151 }
134   - public void setDrivingLicenceBeginDate(Date drivingLicenceBeginDate)
  152 + public void setDrivingLicenceBeginDate(Date drivingLicenceBeginDate)
135 153 {
136 154 this.drivingLicenceBeginDate = drivingLicenceBeginDate;
137 155 }
138 156  
139   - public Date getDrivingLicenceBeginDate()
  157 + public Date getDrivingLicenceBeginDate()
140 158 {
141 159 return drivingLicenceBeginDate;
142 160 }
143   - public void setDrivingLicenceEndDate(Date drivingLicenceEndDate)
  161 + public void setDrivingLicenceEndDate(Date drivingLicenceEndDate)
144 162 {
145 163 this.drivingLicenceEndDate = drivingLicenceEndDate;
146 164 }
147 165  
148   - public Date getDrivingLicenceEndDate()
  166 + public Date getDrivingLicenceEndDate()
149 167 {
150 168 return drivingLicenceEndDate;
151 169 }
152   - public void setSafetyTrainingDate(Date safetyTrainingDate)
  170 + public void setSafetyTrainingDate(Date safetyTrainingDate)
153 171 {
154 172 this.safetyTrainingDate = safetyTrainingDate;
155 173 }
156 174  
157   - public Date getSafetyTrainingDate()
  175 + public Date getSafetyTrainingDate()
158 176 {
159 177 return safetyTrainingDate;
160 178 }
161   - public void setSafetyTrainingContent(String safetyTrainingContent)
  179 + public void setSafetyTrainingContent(String safetyTrainingContent)
162 180 {
163 181 this.safetyTrainingContent = safetyTrainingContent;
164 182 }
165 183  
166   - public String getSafetyTrainingContent()
  184 + public String getSafetyTrainingContent()
167 185 {
168 186 return safetyTrainingContent;
169 187 }
170   - public void setDrivingLicence(String drivingLicence)
  188 + public void setDrivingLicence(String drivingLicence)
171 189 {
172 190 this.drivingLicence = drivingLicence;
173 191 }
174 192  
175   - public String getDrivingLicence()
  193 + public String getDrivingLicence()
176 194 {
177 195 return drivingLicence;
178 196 }
179   - public void setProfessionalQualification(String professionalQualification)
  197 + public void setProfessionalQualification(String professionalQualification)
180 198 {
181 199 this.professionalQualification = professionalQualification;
182 200 }
183 201  
184   - public String getProfessionalQualification()
  202 + public String getProfessionalQualification()
185 203 {
186 204 return professionalQualification;
187 205 }
188   - public void setSafetyTraining(String safetyTraining)
  206 + public void setSafetyTraining(String safetyTraining)
189 207 {
190 208 this.safetyTraining = safetyTraining;
191 209 }
192 210  
193   - public String getSafetyTraining()
  211 + public String getSafetyTraining()
194 212 {
195 213 return safetyTraining;
196 214 }
197   - public void setStatus(Integer status)
  215 + public void setStatus(Integer status)
198 216 {
199 217 this.status = status;
200 218 }
201 219  
202   - public Integer getStatus()
  220 + public Integer getStatus()
203 221 {
204 222 return status;
205 223 }
  224 + public void setPhotographOne(String photographOne)
  225 + {
  226 + this.photographOne = photographOne;
  227 + }
  228 +
  229 + public String getPhotographOne()
  230 + {
  231 + return photographOne;
  232 + }
  233 + public void setPhotographTwo(String photographTwo)
  234 + {
  235 + this.photographTwo = photographTwo;
  236 + }
  237 +
  238 + public String getPhotographTwo()
  239 + {
  240 + return photographTwo;
  241 + }
206 242  
207 243 @Override
208 244 public String toString() {
209 245 return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
210   - .append("id", getId())
211   - .append("name", getName())
212   - .append("identityCard", getIdentityCard())
213   - .append("companyId", getCompanyId())
214   - .append("professionalQualificationBeginDate", getProfessionalQualificationBeginDate())
215   - .append("professionalQualificationEndDate", getProfessionalQualificationEndDate())
216   - .append("drivingLicenceBeginDate", getDrivingLicenceBeginDate())
217   - .append("drivingLicenceEndDate", getDrivingLicenceEndDate())
218   - .append("safetyTrainingDate", getSafetyTrainingDate())
219   - .append("safetyTrainingContent", getSafetyTrainingContent())
220   - .append("remark", getRemark())
221   - .append("drivingLicence", getDrivingLicence())
222   - .append("professionalQualification", getProfessionalQualification())
223   - .append("safetyTraining", getSafetyTraining())
224   - .append("status", getStatus())
225   - .append("createTime", getCreateTime())
226   - .append("createBy", getCreateBy())
227   - .append("updateTime", getUpdateTime())
228   - .append("updateBy", getUpdateBy())
229   - .toString();
  246 + .append("id", getId())
  247 + .append("name", getName())
  248 + .append("identityCard", getIdentityCard())
  249 + .append("companyId", getCompanyId())
  250 + .append("professionalQualificationBeginDate", getProfessionalQualificationBeginDate())
  251 + .append("professionalQualificationEndDate", getProfessionalQualificationEndDate())
  252 + .append("drivingLicenceBeginDate", getDrivingLicenceBeginDate())
  253 + .append("drivingLicenceEndDate", getDrivingLicenceEndDate())
  254 + .append("safetyTrainingDate", getSafetyTrainingDate())
  255 + .append("safetyTrainingContent", getSafetyTrainingContent())
  256 + .append("remark", getRemark())
  257 + .append("drivingLicence", getDrivingLicence())
  258 + .append("professionalQualification", getProfessionalQualification())
  259 + .append("safetyTraining", getSafetyTraining())
  260 + .append("status", getStatus())
  261 + .append("createTime", getCreateTime())
  262 + .append("createBy", getCreateBy())
  263 + .append("updateTime", getUpdateTime())
  264 + .append("updateBy", getUpdateBy())
  265 + .append("photographOne", getPhotographOne())
  266 + .append("photographTwo", getPhotographTwo())
  267 + .toString();
230 268 }
231 269 }
... ...
trash-unit/src/main/java/com/trash/driver/domain/vo/DriverVo.java 0 → 100644
  1 +package com.trash.driver.domain.vo;
  2 +
  3 +import com.trash.driver.domain.Driver;
  4 +
  5 +public class DriverVo extends Driver {
  6 +
  7 + private String companyName;
  8 +
  9 + public String getCompanyName() {
  10 + return companyName;
  11 + }
  12 +
  13 + public void setCompanyName(String companyName) {
  14 + this.companyName = companyName;
  15 + }
  16 +}
... ...
trash-unit/src/main/java/com/trash/driver/mapper/DriverMapper.java
1 1 package com.trash.driver.mapper;
2 2  
3 3 import java.util.List;
  4 +import java.util.Map;
  5 +
4 6 import com.trash.driver.domain.Driver;
  7 +import com.trash.driver.domain.vo.DriverVo;
5 8  
6 9 /**
7 10 * 驾驶员管理Mapper接口
8 11 *
9 12 * @author trash
10   - * @date 2023-11-15
  13 + * @date 2023-11-21
11 14 */
12 15 public interface DriverMapper
13 16 {
... ... @@ -25,7 +28,14 @@ public interface DriverMapper
25 28 * @param driver 驾驶员管理
26 29 * @return 驾驶员管理集合
27 30 */
28   - List<Driver> selectDriverList(Driver driver);
  31 + List<DriverVo> selectDriverList(DriverVo driver);
  32 +
  33 + /**
  34 + * 根据公司id驾驶员管理列表
  35 + *
  36 + * @return 驾驶员管理集合
  37 + */
  38 + List<Map<Object,Object>> selectDriverListByCompanyId(String companyId);
29 39  
30 40 /**
31 41 * 新增驾驶员管理
... ...
trash-unit/src/main/java/com/trash/driver/service/IDriverService.java
1 1 package com.trash.driver.service;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
  5 +import java.util.Map;
  6 +
4 7 import com.trash.driver.domain.Driver;
  8 +import com.trash.driver.domain.vo.DriverVo;
  9 +import org.springframework.web.multipart.MultipartFile;
5 10  
6 11 /**
7 12 * 驾驶员管理Service接口
8 13 *
9 14 * @author trash
10   - * @date 2023-11-15
  15 + * @date 2023-11-21
11 16 */
12 17 public interface IDriverService
13 18 {
... ... @@ -25,23 +30,50 @@ public interface IDriverService
25 30 * @param driver 驾驶员管理
26 31 * @return 驾驶员管理集合
27 32 */
28   - List<Driver> selectDriverList(Driver driver);
  33 + List<DriverVo> selectDriverList(DriverVo driver);
  34 +
  35 + /**
  36 + * 根据公司id驾驶员管理列表
  37 + *
  38 + * @return 驾驶员管理集合
  39 + */
  40 + List<Map<Object,Object>> selectDriverListByCompanyId(String companyId);
29 41  
30 42 /**
31 43 * 新增驾驶员管理
32   - *
33   - * @param driver 驾驶员管理
  44 + *
  45 + * @param drivingLicenceFiles
  46 + * @param professionalQualificationFiles
  47 + * @param safetyTrainingFiles
  48 + * @param photographOneFiles
  49 + * @param photographTwoFiles
  50 + * @param driver 驾驶员管理
34 51 * @return 结果
35 52 */
36   - int insertDriver(Driver driver);
  53 + int insertDriver(MultipartFile[] drivingLicenceFiles,
  54 + MultipartFile[] professionalQualificationFiles,
  55 + MultipartFile[] safetyTrainingFiles,
  56 + MultipartFile[] photographOneFiles,
  57 + MultipartFile[] photographTwoFiles,
  58 + Driver driver) throws IOException;
37 59  
38 60 /**
39 61 * 修改驾驶员管理
40   - *
41   - * @param driver 驾驶员管理
  62 + *
  63 + * @param drivingLicenceFiles
  64 + * @param professionalQualificationFiles
  65 + * @param safetyTrainingFiles
  66 + * @param photographOneFiles
  67 + * @param photographTwoFiles
  68 + * @param driver 驾驶员管理
42 69 * @return 结果
43 70 */
44   - int updateDriver(Driver driver);
  71 + int updateDriver(MultipartFile[] drivingLicenceFiles,
  72 + MultipartFile[] professionalQualificationFiles,
  73 + MultipartFile[] safetyTrainingFiles,
  74 + MultipartFile[] photographOneFiles,
  75 + MultipartFile[] photographTwoFiles,
  76 + Driver driver) throws IOException;
45 77  
46 78 /**
47 79 * 批量删除驾驶员管理
... ...
trash-unit/src/main/java/com/trash/driver/service/impl/DriverServiceImpl.java
1 1 package com.trash.driver.service.impl;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
  5 +import java.util.Map;
  6 +
  7 +import com.trash.common.config.trashConfig;
4 8 import com.trash.common.utils.DateUtils;
  9 +import com.trash.common.utils.SecurityUtils;
  10 +import com.trash.driver.domain.vo.DriverVo;
5 11 import org.springframework.beans.factory.annotation.Autowired;
6 12 import org.springframework.stereotype.Service;
7 13 import com.trash.driver.mapper.DriverMapper;
8 14 import com.trash.driver.domain.Driver;
9 15 import com.trash.driver.service.IDriverService;
  16 +import org.springframework.web.multipart.MultipartFile;
  17 +
  18 +import static com.trash.common.utils.file.FileUploadUtils.upload;
10 19  
11 20 /**
12 21 * 驾驶员管理Service业务层处理
13 22 *
14 23 * @author trash
15   - * @date 2023-11-15
  24 + * @date 2023-11-21
16 25 */
17 26 @Service
18 27 public class DriverServiceImpl implements IDriverService
... ... @@ -39,34 +48,90 @@ public class DriverServiceImpl implements IDriverService
39 48 * @return 驾驶员管理
40 49 */
41 50 @Override
42   - public List<Driver> selectDriverList(Driver driver)
  51 + public List<DriverVo> selectDriverList(DriverVo driver)
43 52 {
44 53 return driverMapper.selectDriverList(driver);
45 54 }
46 55  
  56 + @Override
  57 + public List<Map<Object, Object>> selectDriverListByCompanyId(String companyId) {
  58 + return driverMapper.selectDriverListByCompanyId(companyId);
  59 + }
  60 +
47 61 /**
48 62 * 新增驾驶员管理
49   - *
50   - * @param driver 驾驶员管理
  63 + *
  64 + * @param drivingLicenceFiles
  65 + * @param professionalQualificationFiles
  66 + * @param safetyTrainingFiles
  67 + * @param photographOneFiles
  68 + * @param photographTwoFiles
  69 + * @param driver 驾驶员管理
51 70 * @return 结果
52 71 */
53 72 @Override
54   - public int insertDriver(Driver driver)
55   - {
  73 + public int insertDriver(MultipartFile[] drivingLicenceFiles, MultipartFile[] professionalQualificationFiles, MultipartFile[] safetyTrainingFiles, MultipartFile[] photographOneFiles, MultipartFile[] photographTwoFiles, Driver driver) throws IOException {
56 74 driver.setCreateTime(DateUtils.getNowDate());
  75 + driver.setCreateBy(SecurityUtils.getUsername());
  76 + driver.setStatus(0);
  77 + for (MultipartFile file : drivingLicenceFiles) {
  78 + driver.setDrivingLicence(driver.getDrivingLicence()!=null?driver.getDrivingLicence()+";"+uploadFile(file):uploadFile(file));
  79 + }
  80 + for (MultipartFile file : professionalQualificationFiles) {
  81 + driver.setProfessionalQualification(driver.getProfessionalQualification()!=null?driver.getProfessionalQualification()+";"+uploadFile(file):uploadFile(file));
  82 + }
  83 + for (MultipartFile file : safetyTrainingFiles) {
  84 + driver.setSafetyTraining(driver.getSafetyTraining()!=null?driver.getSafetyTraining()+";"+uploadFile(file):uploadFile(file));
  85 + }
  86 + for (MultipartFile file : photographOneFiles) {
  87 + driver.setPhotographOne(driver.getPhotographOne()!=null?driver.getPhotographOne()+";"+uploadFile(file):uploadFile(file));
  88 + }
  89 + for (MultipartFile file : photographTwoFiles) {
  90 + driver.setPhotographTwo(driver.getPhotographTwo()!=null?driver.getPhotographTwo()+";"+uploadFile(file):uploadFile(file));
  91 + }
  92 + driver.setDrivingLicence(removeSemicolon(driver.getDrivingLicence()));
  93 + driver.setProfessionalQualification(removeSemicolon(driver.getProfessionalQualification()));
  94 + driver.setSafetyTraining(removeSemicolon(driver.getSafetyTraining()));
  95 + driver.setPhotographOne(removeSemicolon(driver.getPhotographOne()));
  96 + driver.setPhotographTwo(removeSemicolon(driver.getPhotographTwo()));
57 97 return driverMapper.insertDriver(driver);
58 98 }
59 99  
60 100 /**
61 101 * 修改驾驶员管理
62   - *
63   - * @param driver 驾驶员管理
  102 + *
  103 + * @param drivingLicenceFiles
  104 + * @param professionalQualificationFiles
  105 + * @param safetyTrainingFiles
  106 + * @param photographOneFiles
  107 + * @param photographTwoFiles
  108 + * @param driver 驾驶员管理
64 109 * @return 结果
65 110 */
66 111 @Override
67   - public int updateDriver(Driver driver)
68   - {
  112 + public int updateDriver(MultipartFile[] drivingLicenceFiles, MultipartFile[] professionalQualificationFiles, MultipartFile[] safetyTrainingFiles, MultipartFile[] photographOneFiles, MultipartFile[] photographTwoFiles, Driver driver) throws IOException {
69 113 driver.setUpdateTime(DateUtils.getNowDate());
  114 + driver.setUpdateBy(SecurityUtils.getUsername());
  115 + for (MultipartFile file : drivingLicenceFiles) {
  116 + driver.setDrivingLicence(driver.getDrivingLicence()!=null?driver.getDrivingLicence()+";"+uploadFile(file):uploadFile(file));
  117 + }
  118 + for (MultipartFile file : professionalQualificationFiles) {
  119 + driver.setProfessionalQualification(driver.getProfessionalQualification()!=null?driver.getProfessionalQualification()+";"+uploadFile(file):uploadFile(file));
  120 + }
  121 + for (MultipartFile file : safetyTrainingFiles) {
  122 + driver.setSafetyTraining(driver.getSafetyTraining()!=null?driver.getSafetyTraining()+";"+uploadFile(file):uploadFile(file));
  123 + }
  124 + for (MultipartFile file : photographOneFiles) {
  125 + driver.setPhotographOne(driver.getPhotographOne()!=null?driver.getPhotographOne()+";"+uploadFile(file):uploadFile(file));
  126 + }
  127 + for (MultipartFile file : photographTwoFiles) {
  128 + driver.setPhotographTwo(driver.getPhotographTwo()!=null?driver.getPhotographTwo()+";"+uploadFile(file):uploadFile(file));
  129 + }
  130 + driver.setDrivingLicence(removeSemicolon(driver.getDrivingLicence()));
  131 + driver.setProfessionalQualification(removeSemicolon(driver.getProfessionalQualification()));
  132 + driver.setSafetyTraining(removeSemicolon(driver.getSafetyTraining()));
  133 + driver.setPhotographOne(removeSemicolon(driver.getPhotographOne()));
  134 + driver.setPhotographTwo(removeSemicolon(driver.getPhotographTwo()));
70 135 return driverMapper.updateDriver(driver);
71 136 }
72 137  
... ... @@ -93,4 +158,25 @@ public class DriverServiceImpl implements IDriverService
93 158 {
94 159 return driverMapper.deleteDriverById(id);
95 160 }
  161 +
  162 + /**
  163 + * 文件上传
  164 + *
  165 + * @param file
  166 + * @author 2c
  167 + */
  168 + public static String uploadFile(MultipartFile file) throws IOException {
  169 + // 上传文件路径
  170 + String filePath = trashConfig.getUploadPath();
  171 + // 上传并返回新文件名称
  172 + String newFileName = upload(filePath, file);
  173 + return newFileName;
  174 + }
  175 +
  176 + //去掉第一个分号,如果有的话
  177 + public String removeSemicolon(String str){
  178 + if (str.startsWith(";"))
  179 + str = str.substring(1);
  180 + return str;
  181 + }
96 182 }
... ...
trash-unit/src/main/java/com/trash/enterprise/controller/TransportationEnterpriseController.java
1 1 package com.trash.enterprise.controller;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
4 5 import org.springframework.security.access.prepost.PreAuthorize;
5 6 import org.springframework.beans.factory.annotation.Autowired;
6   -import org.springframework.web.bind.annotation.GetMapping;
7   -import org.springframework.web.bind.annotation.PostMapping;
8   -import org.springframework.web.bind.annotation.PutMapping;
9   -import org.springframework.web.bind.annotation.DeleteMapping;
10   -import org.springframework.web.bind.annotation.PathVariable;
11   -import org.springframework.web.bind.annotation.RequestBody;
12   -import org.springframework.web.bind.annotation.RequestMapping;
13   -import org.springframework.web.bind.annotation.RestController;
  7 +import org.springframework.web.bind.annotation.*;
14 8 import com.trash.common.annotation.Log;
15 9 import com.trash.common.core.controller.BaseController;
16 10 import com.trash.common.core.domain.AjaxResult;
... ... @@ -19,15 +13,16 @@ import com.trash.enterprise.domain.TransportationEnterprise;
19 13 import com.trash.enterprise.service.ITransportationEnterpriseService;
20 14 import com.trash.common.utils.poi.ExcelUtil;
21 15 import com.trash.common.core.page.TableDataInfo;
  16 +import org.springframework.web.multipart.MultipartFile;
22 17  
23 18 /**
24 19 * 运输企业管理Controller
25 20 *
26 21 * @author trash
27   - * @date 2023-11-15
  22 + * @date 2023-11-21
28 23 */
29 24 @RestController
30   -@RequestMapping("/enterprise")
  25 +@RequestMapping("/unit/enterprise")
31 26 public class TransportationEnterpriseController extends BaseController
32 27 {
33 28 @Autowired
... ... @@ -36,7 +31,7 @@ public class TransportationEnterpriseController extends BaseController
36 31 /**
37 32 * 查询运输企业管理列表
38 33 */
39   - //@PreAuthorize("@ss.hasPermi('enterprise:enterprise:list')")
  34 + @PreAuthorize("@ss.hasPermi('unit:enterprise:list')")
40 35 @GetMapping("/list")
41 36 public TableDataInfo list(TransportationEnterprise transportationEnterprise)
42 37 {
... ... @@ -48,7 +43,7 @@ public class TransportationEnterpriseController extends BaseController
48 43 /**
49 44 * 导出运输企业管理列表
50 45 */
51   - @PreAuthorize("@ss.hasPermi('enterprise:enterprise:export')")
  46 + @PreAuthorize("@ss.hasPermi('unit:enterprise:export')")
52 47 @Log(title = "运输企业管理", businessType = BusinessType.EXPORT)
53 48 @GetMapping("/export")
54 49 public AjaxResult export(TransportationEnterprise transportationEnterprise)
... ... @@ -61,7 +56,7 @@ public class TransportationEnterpriseController extends BaseController
61 56 /**
62 57 * 获取运输企业管理详细信息
63 58 */
64   - @PreAuthorize("@ss.hasPermi('enterprise:enterprise:query')")
  59 + @PreAuthorize("@ss.hasPermi('unit:enterprise:query')")
65 60 @GetMapping(value = "/{id}")
66 61 public AjaxResult getInfo(@PathVariable("id") Long id)
67 62 {
... ... @@ -71,29 +66,37 @@ public class TransportationEnterpriseController extends BaseController
71 66 /**
72 67 * 新增运输企业管理
73 68 */
74   - @PreAuthorize("@ss.hasPermi('enterprise:enterprise:add')")
  69 + @PreAuthorize("@ss.hasPermi('unit:enterprise:add')")
75 70 @Log(title = "运输企业管理", businessType = BusinessType.INSERT)
76 71 @PostMapping
77   - public AjaxResult add(@RequestBody TransportationEnterprise transportationEnterprise)
78   - {
79   - return toAjax(transportationEnterpriseService.insertTransportationEnterprise(transportationEnterprise));
  72 + public AjaxResult add(@RequestParam(value = "transportPermissionFiles") MultipartFile[] transportPermissionFiles,
  73 + @RequestParam(value = "enterpriseBusinessLicenseFiles") MultipartFile[] enterpriseBusinessLicenseFiles,
  74 + @RequestParam(value = "safetyOfficerQualificationCertificateFiles") MultipartFile[] safetyOfficerQualificationCertificateFiles,
  75 + @RequestParam(value = "safetyCertificateFiles") MultipartFile[] safetyCertificateFiles,
  76 + @RequestParam(value = "carParkPanoramaFiles") MultipartFile[] carParkPanoramaFiles,
  77 + TransportationEnterprise transportationEnterprise) throws IOException {
  78 + return toAjax(transportationEnterpriseService.insertTransportationEnterprise(transportPermissionFiles, enterpriseBusinessLicenseFiles, safetyOfficerQualificationCertificateFiles, safetyCertificateFiles, carParkPanoramaFiles, transportationEnterprise));
80 79 }
81 80  
82 81 /**
83 82 * 修改运输企业管理
84 83 */
85   - @PreAuthorize("@ss.hasPermi('enterprise:enterprise:edit')")
  84 + @PreAuthorize("@ss.hasPermi('unit:enterprise:edit')")
86 85 @Log(title = "运输企业管理", businessType = BusinessType.UPDATE)
87 86 @PutMapping
88   - public AjaxResult edit(@RequestBody TransportationEnterprise transportationEnterprise)
89   - {
90   - return toAjax(transportationEnterpriseService.updateTransportationEnterprise(transportationEnterprise));
  87 + public AjaxResult edit(@RequestParam(value = "transportPermissionFiles") MultipartFile[] transportPermissionFiles,
  88 + @RequestParam(value = "enterpriseBusinessLicenseFiles") MultipartFile[] enterpriseBusinessLicenseFiles,
  89 + @RequestParam(value = "safetyOfficerQualificationCertificateFiles") MultipartFile[] safetyOfficerQualificationCertificateFiles,
  90 + @RequestParam(value = "safetyCertificateFiles") MultipartFile[] safetyCertificateFiles,
  91 + @RequestParam(value = "carParkPanoramaFiles") MultipartFile[] carParkPanoramaFiles,
  92 + TransportationEnterprise transportationEnterprise) throws IOException {
  93 + return toAjax(transportationEnterpriseService.updateTransportationEnterprise(transportPermissionFiles, enterpriseBusinessLicenseFiles, safetyOfficerQualificationCertificateFiles, safetyCertificateFiles, carParkPanoramaFiles, transportationEnterprise));
91 94 }
92 95  
93 96 /**
94 97 * 删除运输企业管理
95 98 */
96   - @PreAuthorize("@ss.hasPermi('enterprise:enterprise:remove')")
  99 + @PreAuthorize("@ss.hasPermi('unit:enterprise:remove')")
97 100 @Log(title = "运输企业管理", businessType = BusinessType.DELETE)
98 101 @DeleteMapping("/{ids}")
99 102 public AjaxResult remove(@PathVariable Long[] ids)
... ...
trash-unit/src/main/java/com/trash/enterprise/domain/TransportationEnterprise.java
... ... @@ -12,7 +12,7 @@ import com.trash.common.core.domain.BaseEntity;
12 12 * 运输企业管理对象 transportation_enterprise
13 13 *
14 14 * @author trash
15   - * @date 2023-11-15
  15 + * @date 2023-11-21
16 16 */
17 17 public class TransportationEnterprise extends BaseEntity
18 18 {
... ... @@ -113,7 +113,7 @@ public class TransportationEnterprise extends BaseEntity
113 113 private String businessUnit;
114 114  
115 115 /** 审批状态,0=审批中,1=审批通过,2=被驳回 */
116   - @Excel(name = "审批状态,0=审批中,1=审批通过,2=被驳回")
  116 + @Excel(name = "审批状态",readConverterExp = "0=审批中,1=审批通过,2=被驳回")
117 117 private Integer status;
118 118  
119 119 /** 父公司id */
... ... @@ -124,6 +124,14 @@ public class TransportationEnterprise extends BaseEntity
124 124 @Excel(name = "公司类型", readConverterExp = "0=经营单位,1运输公司")
125 125 private Integer companyType;
126 126  
  127 + /** 信用状态 */
  128 + @Excel(name = "信用状态")
  129 + private String creditStatus;
  130 +
  131 + /** 二维码 */
  132 + @Excel(name = "二维码")
  133 + private String qrCode;
  134 +
127 135 public void setId(Long id)
128 136 {
129 137 this.id = id;
... ... @@ -358,6 +366,24 @@ public class TransportationEnterprise extends BaseEntity
358 366 {
359 367 return companyType;
360 368 }
  369 + public void setCreditStatus(String creditStatus)
  370 + {
  371 + this.creditStatus = creditStatus;
  372 + }
  373 +
  374 + public String getCreditStatus()
  375 + {
  376 + return creditStatus;
  377 + }
  378 + public void setQrCode(String qrCode)
  379 + {
  380 + this.qrCode = qrCode;
  381 + }
  382 +
  383 + public String getQrCode()
  384 + {
  385 + return qrCode;
  386 + }
361 387  
362 388 @Override
363 389 public String toString() {
... ... @@ -393,6 +419,8 @@ public class TransportationEnterprise extends BaseEntity
393 419 .append("updateBy", getUpdateBy())
394 420 .append("parentId", getParentId())
395 421 .append("companyType", getCompanyType())
  422 + .append("creditStatus", getCreditStatus())
  423 + .append("qrCode", getQrCode())
396 424 .toString();
397 425 }
398 426 }
... ...
trash-unit/src/main/java/com/trash/enterprise/mapper/TransportationEnterpriseMapper.java
... ... @@ -7,7 +7,7 @@ import com.trash.enterprise.domain.TransportationEnterprise;
7 7 * 运输企业管理Mapper接口
8 8 *
9 9 * @author trash
10   - * @date 2023-11-15
  10 + * @date 2023-11-21
11 11 */
12 12 public interface TransportationEnterpriseMapper
13 13 {
... ...
trash-unit/src/main/java/com/trash/enterprise/service/ITransportationEnterpriseService.java
1 1 package com.trash.enterprise.service;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
4 5 import com.trash.enterprise.domain.TransportationEnterprise;
  6 +import org.springframework.web.multipart.MultipartFile;
5 7  
6 8 /**
7 9 * 运输企业管理Service接口
8 10 *
9 11 * @author trash
10   - * @date 2023-11-15
  12 + * @date 2023-11-21
11 13 */
12 14 public interface ITransportationEnterpriseService
13 15 {
... ... @@ -29,19 +31,39 @@ public interface ITransportationEnterpriseService
29 31  
30 32 /**
31 33 * 新增运输企业管理
32   - *
33   - * @param transportationEnterprise 运输企业管理
  34 + *
  35 + * @param transportPermissionFiles
  36 + * @param enterpriseBusinessLicenseFiles
  37 + * @param safetyOfficerQualificationCertificateFiles
  38 + * @param safetyCertificateFiles
  39 + * @param carParkPanoramaFiles
  40 + * @param transportationEnterprise 运输企业管理
34 41 * @return 结果
35 42 */
36   - int insertTransportationEnterprise(TransportationEnterprise transportationEnterprise);
  43 + int insertTransportationEnterprise(MultipartFile[] transportPermissionFiles,
  44 + MultipartFile[] enterpriseBusinessLicenseFiles,
  45 + MultipartFile[] safetyOfficerQualificationCertificateFiles,
  46 + MultipartFile[] safetyCertificateFiles,
  47 + MultipartFile[] carParkPanoramaFiles,
  48 + TransportationEnterprise transportationEnterprise) throws IOException;
37 49  
38 50 /**
39 51 * 修改运输企业管理
40   - *
41   - * @param transportationEnterprise 运输企业管理
  52 + *
  53 + * @param transportPermissionFiles
  54 + * @param enterpriseBusinessLicenseFiles
  55 + * @param safetyOfficerQualificationCertificateFiles
  56 + * @param safetyCertificateFiles
  57 + * @param carParkPanoramaFiles
  58 + * @param transportationEnterprise 运输企业管理
42 59 * @return 结果
43 60 */
44   - int updateTransportationEnterprise(TransportationEnterprise transportationEnterprise);
  61 + int updateTransportationEnterprise(MultipartFile[] transportPermissionFiles,
  62 + MultipartFile[] enterpriseBusinessLicenseFiles,
  63 + MultipartFile[] safetyOfficerQualificationCertificateFiles,
  64 + MultipartFile[] safetyCertificateFiles,
  65 + MultipartFile[] carParkPanoramaFiles,
  66 + TransportationEnterprise transportationEnterprise) throws IOException;
45 67  
46 68 /**
47 69 * 批量删除运输企业管理
... ...
trash-unit/src/main/java/com/trash/enterprise/service/impl/TransportationEnterpriseServiceImpl.java
1 1 package com.trash.enterprise.service.impl;
2 2  
  3 +import java.io.IOException;
3 4 import java.util.List;
  5 +
  6 +import com.trash.common.config.trashConfig;
4 7 import com.trash.common.utils.DateUtils;
  8 +import com.trash.common.utils.SecurityUtils;
5 9 import org.springframework.beans.factory.annotation.Autowired;
6 10 import org.springframework.stereotype.Service;
7 11 import com.trash.enterprise.mapper.TransportationEnterpriseMapper;
8 12 import com.trash.enterprise.domain.TransportationEnterprise;
9 13 import com.trash.enterprise.service.ITransportationEnterpriseService;
  14 +import org.springframework.web.multipart.MultipartFile;
  15 +
  16 +import static com.trash.common.utils.file.FileUploadUtils.upload;
10 17  
11 18 /**
12 19 * 运输企业管理Service业务层处理
13 20 *
14 21 * @author trash
15   - * @date 2023-11-15
  22 + * @date 2023-11-21
16 23 */
17 24 @Service
18 25 public class TransportationEnterpriseServiceImpl implements ITransportationEnterpriseService
... ... @@ -46,27 +53,80 @@ public class TransportationEnterpriseServiceImpl implements ITransportationEnter
46 53  
47 54 /**
48 55 * 新增运输企业管理
49   - *
50   - * @param transportationEnterprise 运输企业管理
  56 + *
  57 + * @param transportPermissionFiles
  58 + * @param enterpriseBusinessLicenseFiles
  59 + * @param safetyOfficerQualificationCertificateFiles
  60 + * @param safetyCertificateFiles
  61 + * @param carParkPanoramaFiles
  62 + * @param transportationEnterprise 运输企业管理
51 63 * @return 结果
52 64 */
53 65 @Override
54   - public int insertTransportationEnterprise(TransportationEnterprise transportationEnterprise)
55   - {
  66 + public int insertTransportationEnterprise(MultipartFile[] transportPermissionFiles, MultipartFile[] enterpriseBusinessLicenseFiles, MultipartFile[] safetyOfficerQualificationCertificateFiles, MultipartFile[] safetyCertificateFiles, MultipartFile[] carParkPanoramaFiles, TransportationEnterprise transportationEnterprise) throws IOException {
56 67 transportationEnterprise.setCreateTime(DateUtils.getNowDate());
  68 + transportationEnterprise.setCreateBy(SecurityUtils.getUsername());
  69 + transportationEnterprise.setStatus(0);
  70 + transportationEnterprise.setCreditStatus("正常");
  71 + for (MultipartFile file : transportPermissionFiles) {
  72 + transportationEnterprise.setTransportPermission(transportationEnterprise.getTransportPermission()!=null?transportationEnterprise.getTransportPermission()+";"+upload(file):upload(file));
  73 + }
  74 + for (MultipartFile file : enterpriseBusinessLicenseFiles) {
  75 + transportationEnterprise.setEnterpriseBusinessLicense(transportationEnterprise.getEnterpriseBusinessLicense()!=null?transportationEnterprise.getEnterpriseBusinessLicense()+";"+upload(file):upload(file));
  76 + }
  77 + for (MultipartFile file : safetyOfficerQualificationCertificateFiles) {
  78 + transportationEnterprise.setSafetyOfficerQualificationCertificate(transportationEnterprise.getSafetyOfficerQualificationCertificate()!=null?transportationEnterprise.getSafetyOfficerQualificationCertificate()+";"+upload(file):upload(file));
  79 + }
  80 + for (MultipartFile file : safetyCertificateFiles) {
  81 + transportationEnterprise.setSafetyCertificate(transportationEnterprise.getSafetyCertificate()!=null?transportationEnterprise.getSafetyCertificate()+";"+upload(file):upload(file));
  82 + }
  83 + for (MultipartFile file : carParkPanoramaFiles) {
  84 + transportationEnterprise.setCarParkPanorama(transportationEnterprise.getCarParkPanorama()!=null?transportationEnterprise.getCarParkPanorama()+";"+upload(file):upload(file));
  85 + }
  86 + //去掉第一个分号,如果有的话
  87 + transportationEnterprise.setTransportPermission(removeSemicolon(transportationEnterprise.getTransportPermission()));
  88 + transportationEnterprise.setEnterpriseBusinessLicense(removeSemicolon(transportationEnterprise.getEnterpriseBusinessLicense()));
  89 + transportationEnterprise.setSafetyOfficerQualificationCertificate(removeSemicolon(transportationEnterprise.getSafetyOfficerQualificationCertificate()));
  90 + transportationEnterprise.setSafetyCertificate(removeSemicolon(transportationEnterprise.getSafetyCertificate()));
  91 + transportationEnterprise.setCarParkPanorama(removeSemicolon(transportationEnterprise.getCarParkPanorama()));
57 92 return transportationEnterpriseMapper.insertTransportationEnterprise(transportationEnterprise);
58 93 }
59 94  
60 95 /**
61 96 * 修改运输企业管理
62   - *
63   - * @param transportationEnterprise 运输企业管理
  97 + *
  98 + * @param transportPermissionFiles
  99 + * @param enterpriseBusinessLicenseFiles
  100 + * @param safetyOfficerQualificationCertificateFiles
  101 + * @param safetyCertificateFiles
  102 + * @param carParkPanoramaFiles
  103 + * @param transportationEnterprise 运输企业管理
64 104 * @return 结果
65 105 */
66 106 @Override
67   - public int updateTransportationEnterprise(TransportationEnterprise transportationEnterprise)
68   - {
  107 + public int updateTransportationEnterprise(MultipartFile[] transportPermissionFiles, MultipartFile[] enterpriseBusinessLicenseFiles, MultipartFile[] safetyOfficerQualificationCertificateFiles, MultipartFile[] safetyCertificateFiles, MultipartFile[] carParkPanoramaFiles, TransportationEnterprise transportationEnterprise) throws IOException {
69 108 transportationEnterprise.setUpdateTime(DateUtils.getNowDate());
  109 + transportationEnterprise.setUpdateBy(SecurityUtils.getUsername());
  110 + for (MultipartFile file : transportPermissionFiles) {
  111 + transportationEnterprise.setTransportPermission(transportationEnterprise.getTransportPermission()!=null?transportationEnterprise.getTransportPermission()+";"+upload(file):upload(file));
  112 + }
  113 + for (MultipartFile file : enterpriseBusinessLicenseFiles) {
  114 + transportationEnterprise.setEnterpriseBusinessLicense(transportationEnterprise.getEnterpriseBusinessLicense()!=null?transportationEnterprise.getEnterpriseBusinessLicense()+";"+upload(file):upload(file));
  115 + }
  116 + for (MultipartFile file : safetyOfficerQualificationCertificateFiles) {
  117 + transportationEnterprise.setSafetyOfficerQualificationCertificate(transportationEnterprise.getSafetyOfficerQualificationCertificate()!=null?transportationEnterprise.getSafetyOfficerQualificationCertificate()+";"+upload(file):upload(file));
  118 + }
  119 + for (MultipartFile file : safetyCertificateFiles) {
  120 + transportationEnterprise.setSafetyCertificate(transportationEnterprise.getSafetyCertificate()!=null?transportationEnterprise.getSafetyCertificate()+";"+upload(file):upload(file));
  121 + }
  122 + for (MultipartFile file : carParkPanoramaFiles) {
  123 + transportationEnterprise.setCarParkPanorama(transportationEnterprise.getCarParkPanorama()!=null?transportationEnterprise.getCarParkPanorama()+";"+upload(file):upload(file));
  124 + }
  125 + transportationEnterprise.setTransportPermission(removeSemicolon(transportationEnterprise.getTransportPermission()));
  126 + transportationEnterprise.setEnterpriseBusinessLicense(removeSemicolon(transportationEnterprise.getEnterpriseBusinessLicense()));
  127 + transportationEnterprise.setSafetyOfficerQualificationCertificate(removeSemicolon(transportationEnterprise.getSafetyOfficerQualificationCertificate()));
  128 + transportationEnterprise.setSafetyCertificate(removeSemicolon(transportationEnterprise.getSafetyCertificate()));
  129 + transportationEnterprise.setCarParkPanorama(removeSemicolon(transportationEnterprise.getCarParkPanorama()));
70 130 return transportationEnterpriseMapper.updateTransportationEnterprise(transportationEnterprise);
71 131 }
72 132  
... ... @@ -93,4 +153,25 @@ public class TransportationEnterpriseServiceImpl implements ITransportationEnter
93 153 {
94 154 return transportationEnterpriseMapper.deleteTransportationEnterpriseById(id);
95 155 }
  156 +
  157 + /**
  158 + * 文件上传
  159 + *
  160 + * @param file
  161 + * @author 2c
  162 + */
  163 + public static String uploadFile(MultipartFile file) throws IOException {
  164 + // 上传文件路径
  165 + String filePath = trashConfig.getUploadPath();
  166 + // 上传并返回新文件名称
  167 + String newFileName = upload(filePath, file);
  168 + return newFileName;
  169 + }
  170 +
  171 + //去掉第一个分号,如果有的话
  172 + public String removeSemicolon(String str){
  173 + if (str.startsWith(";"))
  174 + str = str.substring(1);
  175 + return str;
  176 + }
96 177 }
... ...
trash-unit/src/main/resources/mapper/carInfo/CarInfoMapper.xml deleted 100644 → 0
1   -<?xml version="1.0" encoding="UTF-8" ?>
2   -<!DOCTYPE mapper
3   -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4   -"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5   -<mapper namespace="com.trash.carInfo.mapper.CarInfoMapper">
6   -
7   - <resultMap type="CarInfo" id="CarInfoResult">
8   - <result property="id" column="id" />
9   - <result property="companyId" column="company_id" />
10   - <result property="carType" column="car_type" />
11   - <result property="carCode" column="car_code" />
12   - <result property="carBrank" column="car_brank" />
13   - <result property="emissionStandard" column="emission_standard" />
14   - <result property="roadTransportDate" column="road_transport_date" />
15   - <result property="drivingLicenseDate" column="driving_license_date" />
16   - <result property="enterDate" column="enter_date" />
17   - <result property="farmeNumber" column="farme_number" />
18   - <result property="carIdentification" column="car_identification" />
19   - <result property="containerVolume" column="container_volume" />
20   - <result property="carColor" column="car_color" />
21   - <result property="carEquipment" column="car_equipment" />
22   - <result property="remark" column="remark" />
23   - <result property="roadTransport" column="road_transport" />
24   - <result property="drivingLicense" column="driving_license" />
25   - <result property="carFront" column="car_front" />
26   - <result property="carLeft" column="car_left" />
27   - <result property="carBehind" column="car_behind" />
28   - <result property="carRight" column="car_right" />
29   - <result property="drivers" column="drivers" />
30   - <result property="status" column="status" />
31   - <result property="createTime" column="create_time" />
32   - <result property="createBy" column="create_by" />
33   - <result property="updateTime" column="update_time" />
34   - <result property="updateBy" column="update_by" />
35   - </resultMap>
36   -
37   - <sql id="selectCarInfoVo">
38   - select id, company_id, car_type, car_code, car_brank, emission_standard, road_transport_date, driving_license_date, enter_date, farme_number, car_identification, container_volume, car_color, car_equipment, remark, road_transport, driving_license, car_front, car_left, car_behind, car_right, drivers, status, create_time, create_by, update_time, update_by from car_info
39   - </sql>
40   -
41   - <select id="selectCarInfoList" parameterType="CarInfo" resultMap="CarInfoResult">
42   - <include refid="selectCarInfoVo"/>
43   - <where>
44   - <if test="companyId != null "> and company_id = #{companyId}</if>
45   - <if test="carType != null and carType != ''"> and car_type = #{carType}</if>
46   - <if test="carCode != null and carCode != ''"> and car_code = #{carCode}</if>
47   - <if test="carBrank != null and carBrank != ''"> and car_brank = #{carBrank}</if>
48   - <if test="emissionStandard != null and emissionStandard != ''"> and emission_standard = #{emissionStandard}</if>
49   - <if test="roadTransportDate != null "> and road_transport_date = #{roadTransportDate}</if>
50   - <if test="drivingLicenseDate != null "> and driving_license_date = #{drivingLicenseDate}</if>
51   - <if test="enterDate != null "> and enter_date = #{enterDate}</if>
52   - <if test="farmeNumber != null and farmeNumber != ''"> and farme_number = #{farmeNumber}</if>
53   - <if test="carIdentification != null and carIdentification != ''"> and car_identification = #{carIdentification}</if>
54   - <if test="containerVolume != null and containerVolume != ''"> and container_volume = #{containerVolume}</if>
55   - <if test="carColor != null and carColor != ''"> and car_color = #{carColor}</if>
56   - <if test="carEquipment != null and carEquipment != ''"> and car_equipment = #{carEquipment}</if>
57   - <if test="roadTransport != null and roadTransport != ''"> and road_transport = #{roadTransport}</if>
58   - <if test="drivingLicense != null and drivingLicense != ''"> and driving_license = #{drivingLicense}</if>
59   - <if test="carFront != null and carFront != ''"> and car_front = #{carFront}</if>
60   - <if test="carLeft != null and carLeft != ''"> and car_left = #{carLeft}</if>
61   - <if test="carBehind != null and carBehind != ''"> and car_behind = #{carBehind}</if>
62   - <if test="carRight != null and carRight != ''"> and car_right = #{carRight}</if>
63   - <if test="drivers != null and drivers != ''"> and drivers = #{drivers}</if>
64   - <if test="status != null "> and status = #{status}</if>
65   - </where>
66   - </select>
67   -
68   - <select id="selectCarInfoById" parameterType="Long" resultMap="CarInfoResult">
69   - <include refid="selectCarInfoVo"/>
70   - where id = #{id}
71   - </select>
72   -
73   - <insert id="insertCarInfo" parameterType="CarInfo" useGeneratedKeys="true" keyProperty="id">
74   - insert into car_info
75   - <trim prefix="(" suffix=")" suffixOverrides=",">
76   - <if test="companyId != null">company_id,</if>
77   - <if test="carType != null">car_type,</if>
78   - <if test="carCode != null">car_code,</if>
79   - <if test="carBrank != null">car_brank,</if>
80   - <if test="emissionStandard != null">emission_standard,</if>
81   - <if test="roadTransportDate != null">road_transport_date,</if>
82   - <if test="drivingLicenseDate != null">driving_license_date,</if>
83   - <if test="enterDate != null">enter_date,</if>
84   - <if test="farmeNumber != null">farme_number,</if>
85   - <if test="carIdentification != null">car_identification,</if>
86   - <if test="containerVolume != null">container_volume,</if>
87   - <if test="carColor != null">car_color,</if>
88   - <if test="carEquipment != null">car_equipment,</if>
89   - <if test="remark != null">remark,</if>
90   - <if test="roadTransport != null">road_transport,</if>
91   - <if test="drivingLicense != null">driving_license,</if>
92   - <if test="carFront != null">car_front,</if>
93   - <if test="carLeft != null">car_left,</if>
94   - <if test="carBehind != null">car_behind,</if>
95   - <if test="carRight != null">car_right,</if>
96   - <if test="drivers != null">drivers,</if>
97   - <if test="status != null">status,</if>
98   - <if test="createTime != null">create_time,</if>
99   - <if test="createBy != null">create_by,</if>
100   - <if test="updateTime != null">update_time,</if>
101   - <if test="updateBy != null">update_by,</if>
102   - </trim>
103   - <trim prefix="values (" suffix=")" suffixOverrides=",">
104   - <if test="companyId != null">#{companyId},</if>
105   - <if test="carType != null">#{carType},</if>
106   - <if test="carCode != null">#{carCode},</if>
107   - <if test="carBrank != null">#{carBrank},</if>
108   - <if test="emissionStandard != null">#{emissionStandard},</if>
109   - <if test="roadTransportDate != null">#{roadTransportDate},</if>
110   - <if test="drivingLicenseDate != null">#{drivingLicenseDate},</if>
111   - <if test="enterDate != null">#{enterDate},</if>
112   - <if test="farmeNumber != null">#{farmeNumber},</if>
113   - <if test="carIdentification != null">#{carIdentification},</if>
114   - <if test="containerVolume != null">#{containerVolume},</if>
115   - <if test="carColor != null">#{carColor},</if>
116   - <if test="carEquipment != null">#{carEquipment},</if>
117   - <if test="remark != null">#{remark},</if>
118   - <if test="roadTransport != null">#{roadTransport},</if>
119   - <if test="drivingLicense != null">#{drivingLicense},</if>
120   - <if test="carFront != null">#{carFront},</if>
121   - <if test="carLeft != null">#{carLeft},</if>
122   - <if test="carBehind != null">#{carBehind},</if>
123   - <if test="carRight != null">#{carRight},</if>
124   - <if test="drivers != null">#{drivers},</if>
125   - <if test="status != null">#{status},</if>
126   - <if test="createTime != null">#{createTime},</if>
127   - <if test="createBy != null">#{createBy},</if>
128   - <if test="updateTime != null">#{updateTime},</if>
129   - <if test="updateBy != null">#{updateBy},</if>
130   - </trim>
131   - </insert>
132   -
133   - <update id="updateCarInfo" parameterType="CarInfo">
134   - update car_info
135   - <trim prefix="SET" suffixOverrides=",">
136   - <if test="companyId != null">company_id = #{companyId},</if>
137   - <if test="carType != null">car_type = #{carType},</if>
138   - <if test="carCode != null">car_code = #{carCode},</if>
139   - <if test="carBrank != null">car_brank = #{carBrank},</if>
140   - <if test="emissionStandard != null">emission_standard = #{emissionStandard},</if>
141   - <if test="roadTransportDate != null">road_transport_date = #{roadTransportDate},</if>
142   - <if test="drivingLicenseDate != null">driving_license_date = #{drivingLicenseDate},</if>
143   - <if test="enterDate != null">enter_date = #{enterDate},</if>
144   - <if test="farmeNumber != null">farme_number = #{farmeNumber},</if>
145   - <if test="carIdentification != null">car_identification = #{carIdentification},</if>
146   - <if test="containerVolume != null">container_volume = #{containerVolume},</if>
147   - <if test="carColor != null">car_color = #{carColor},</if>
148   - <if test="carEquipment != null">car_equipment = #{carEquipment},</if>
149   - <if test="remark != null">remark = #{remark},</if>
150   - <if test="roadTransport != null">road_transport = #{roadTransport},</if>
151   - <if test="drivingLicense != null">driving_license = #{drivingLicense},</if>
152   - <if test="carFront != null">car_front = #{carFront},</if>
153   - <if test="carLeft != null">car_left = #{carLeft},</if>
154   - <if test="carBehind != null">car_behind = #{carBehind},</if>
155   - <if test="carRight != null">car_right = #{carRight},</if>
156   - <if test="drivers != null">drivers = #{drivers},</if>
157   - <if test="status != null">status = #{status},</if>
158   - <if test="createTime != null">create_time = #{createTime},</if>
159   - <if test="createBy != null">create_by = #{createBy},</if>
160   - <if test="updateTime != null">update_time = #{updateTime},</if>
161   - <if test="updateBy != null">update_by = #{updateBy},</if>
162   - </trim>
163   - where id = #{id}
164   - </update>
165   -
166   - <delete id="deleteCarInfoById" parameterType="Long">
167   - delete from car_info where id = #{id}
168   - </delete>
169   -
170   - <delete id="deleteCarInfoByIds" parameterType="String">
171   - delete from car_info where id in
172   - <foreach item="id" collection="array" open="(" separator="," close=")">
173   - #{id}
174   - </foreach>
175   - </delete>
176   -
177   -</mapper>
178 0 \ No newline at end of file
trash-unit/src/main/resources/mapper/unit/CarInfoMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE mapper
  3 +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4 +"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5 +<mapper namespace="com.trash.carInfo.mapper.CarInfoMapper">
  6 +
  7 + <resultMap type="CarInfo" id="CarInfoResult">
  8 + <result property="id" column="id" />
  9 + <result property="companyId" column="company_id" />
  10 + <result property="carType" column="car_type" />
  11 + <result property="carCode" column="car_code" />
  12 + <result property="carBrank" column="car_brank" />
  13 + <result property="emissionStandard" column="emission_standard" />
  14 + <result property="roadTransportDate" column="road_transport_date" />
  15 + <result property="drivingLicenseDate" column="driving_license_date" />
  16 + <result property="enterDate" column="enter_date" />
  17 + <result property="farmeNumber" column="farme_number" />
  18 + <result property="carIdentification" column="car_identification" />
  19 + <result property="containerVolume" column="container_volume" />
  20 + <result property="lengthWidthHeight" column="length_width_height" />
  21 + <result property="carColor" column="car_color" />
  22 + <result property="carEquipment" column="car_equipment" />
  23 + <result property="remark" column="remark" />
  24 + <result property="roadTransport" column="road_transport" />
  25 + <result property="drivingLicense" column="driving_license" />
  26 + <result property="carFront" column="car_front" />
  27 + <result property="carLeft" column="car_left" />
  28 + <result property="carBehind" column="car_behind" />
  29 + <result property="carRight" column="car_right" />
  30 + <result property="drivers" column="drivers" />
  31 + <result property="status" column="status" />
  32 + <result property="createTime" column="create_time" />
  33 + <result property="createBy" column="create_by" />
  34 + <result property="updateTime" column="update_time" />
  35 + <result property="updateBy" column="update_by" />
  36 + <result property="creditStatus" column="credit_status" />
  37 + <result property="qrCode" column="qr_code" />
  38 + </resultMap>
  39 +
  40 + <resultMap type="CarInfoVo" id="CarInfoVoResult">
  41 + <result property="id" column="id" />
  42 + <result property="companyId" column="company_id" />
  43 + <result property="carType" column="car_type" />
  44 + <result property="carCode" column="car_code" />
  45 + <result property="carBrank" column="car_brank" />
  46 + <result property="emissionStandard" column="emission_standard" />
  47 + <result property="roadTransportDate" column="road_transport_date" />
  48 + <result property="drivingLicenseDate" column="driving_license_date" />
  49 + <result property="enterDate" column="enter_date" />
  50 + <result property="farmeNumber" column="farme_number" />
  51 + <result property="carIdentification" column="car_identification" />
  52 + <result property="containerVolume" column="container_volume" />
  53 + <result property="lengthWidthHeight" column="length_width_height" />
  54 + <result property="carColor" column="car_color" />
  55 + <result property="carEquipment" column="car_equipment" />
  56 + <result property="remark" column="remark" />
  57 + <result property="roadTransport" column="road_transport" />
  58 + <result property="drivingLicense" column="driving_license" />
  59 + <result property="carFront" column="car_front" />
  60 + <result property="carLeft" column="car_left" />
  61 + <result property="carBehind" column="car_behind" />
  62 + <result property="carRight" column="car_right" />
  63 + <result property="drivers" column="drivers" />
  64 + <result property="status" column="status" />
  65 + <result property="createTime" column="create_time" />
  66 + <result property="createBy" column="create_by" />
  67 + <result property="updateTime" column="update_time" />
  68 + <result property="updateBy" column="update_by" />
  69 + <result property="creditStatus" column="credit_status" />
  70 + <result property="qrCode" column="qr_code" />
  71 + <result property="companyName" column="companyName" />
  72 + <result property="driversName" column="driversName" />
  73 + </resultMap>
  74 +
  75 + <sql id="selectCarInfoVo">
  76 + select id, company_id, car_type, car_code, car_brank, emission_standard, road_transport_date, driving_license_date, enter_date, farme_number, car_identification, container_volume, car_color, car_equipment, remark, road_transport, driving_license, car_front, car_left, car_behind, car_right, drivers, status, create_time, create_by, update_time, update_by, credit_status, qr_code from car_info
  77 + </sql>
  78 +
  79 + <sql id="selectCarInfoForCompanyVo">
  80 + select car.id,
  81 + company_id,
  82 + car_type,
  83 + car_code,
  84 + car_brank,
  85 + emission_standard,
  86 + road_transport_date,
  87 + driving_license_date,
  88 + car.enter_date,
  89 + farme_number,
  90 + car_identification,
  91 + container_volume,
  92 + length_width_height,
  93 + car_color,
  94 + car_equipment,
  95 + car.remark,
  96 + road_transport,
  97 + driving_license,
  98 + car_front,
  99 + car_left,
  100 + car_behind,
  101 + car_right,
  102 + drivers,
  103 + car.status,
  104 + car.create_time,
  105 + car.create_by,
  106 + car.update_time,
  107 + car.update_by,
  108 + car.credit_status,
  109 + car.qr_code,
  110 + c.name companyName,
  111 + d.driversName
  112 + from car_info car
  113 + left join transportation_enterprise c on car.company_id = c.id
  114 + left join (select cdr.car_id, GROUP_CONCAT(name) driversName
  115 + from car_driver_relation cdr
  116 + left join driver d on d.id = cdr.driver_id
  117 + group by cdr.car_id) d on d.car_id = car.id
  118 + </sql>
  119 +
  120 + <select id="selectCarInfoList" parameterType="CarInfoVo" resultMap="CarInfoVoResult">
  121 + <include refid="selectCarInfoForCompanyVo"/>
  122 + <where>
  123 + <if test="companyName != null and companyName != ''"> and c.name like concat('%',#{companyName},'%')</if>
  124 + <if test="carType != null and carType != ''"> and car_type = #{carType}</if>
  125 + <if test="carCode != null and carCode != ''"> and car_code like concat('%',#{carCode},'%')</if>
  126 + <if test="carBrank != null and carBrank != ''"> and car_brank like concat('%',#{carBrank},'%')</if>
  127 + <if test="emissionStandard != null and emissionStandard != ''"> and emission_standard = #{emissionStandard}</if>
  128 + <if test="roadTransportDate != null "> and road_transport_date = #{roadTransportDate}</if>
  129 + <if test="drivingLicenseDate != null "> and driving_license_date = #{drivingLicenseDate}</if>
  130 + <if test="enterDate != null "> and enter_date = #{enterDate}</if>
  131 + <if test="farmeNumber != null and farmeNumber != ''"> and farme_number = #{farmeNumber}</if>
  132 + <if test="carIdentification != null and carIdentification != ''"> and car_identification = #{carIdentification}</if>
  133 + <if test="containerVolume != null and containerVolume != ''"> and container_volume = #{containerVolume}</if>
  134 + <if test="carColor != null and carColor != ''"> and car_color = #{carColor}</if>
  135 + <if test="carEquipment != null and carEquipment != ''"> and car_equipment = #{carEquipment}</if>
  136 + <if test="roadTransport != null and roadTransport != ''"> and road_transport = #{roadTransport}</if>
  137 + <if test="drivingLicense != null and drivingLicense != ''"> and driving_license = #{drivingLicense}</if>
  138 + <if test="carFront != null and carFront != ''"> and car_front = #{carFront}</if>
  139 + <if test="carLeft != null and carLeft != ''"> and car_left = #{carLeft}</if>
  140 + <if test="carBehind != null and carBehind != ''"> and car_behind = #{carBehind}</if>
  141 + <if test="carRight != null and carRight != ''"> and car_right = #{carRight}</if>
  142 + <if test="drivers != null and drivers != ''"> and drivers = #{drivers}</if>
  143 + <if test="status != null "> and car.status = #{status}</if>
  144 + <if test="creditStatus != null and creditStatus != ''"> and car.credit_status = #{creditStatus}</if>
  145 + </where>
  146 + </select>
  147 +
  148 + <select id="selectCarInfoById" parameterType="Long" resultMap="CarInfoResult">
  149 + <include refid="selectCarInfoVo"/>
  150 + where id = #{id}
  151 + </select>
  152 +
  153 + <insert id="insertCarInfo" parameterType="CarInfo" useGeneratedKeys="true" keyProperty="id">
  154 + insert into car_info
  155 + <trim prefix="(" suffix=")" suffixOverrides=",">
  156 + <if test="companyId != null">company_id,</if>
  157 + <if test="carType != null">car_type,</if>
  158 + <if test="carCode != null">car_code,</if>
  159 + <if test="carBrank != null">car_brank,</if>
  160 + <if test="emissionStandard != null">emission_standard,</if>
  161 + <if test="roadTransportDate != null">road_transport_date,</if>
  162 + <if test="drivingLicenseDate != null">driving_license_date,</if>
  163 + <if test="enterDate != null">enter_date,</if>
  164 + <if test="farmeNumber != null">farme_number,</if>
  165 + <if test="carIdentification != null">car_identification,</if>
  166 + <if test="containerVolume != null">container_volume,</if>
  167 + <if test="carColor != null">car_color,</if>
  168 + <if test="carEquipment != null">car_equipment,</if>
  169 + <if test="remark != null">remark,</if>
  170 + <if test="roadTransport != null">road_transport,</if>
  171 + <if test="drivingLicense != null">driving_license,</if>
  172 + <if test="carFront != null">car_front,</if>
  173 + <if test="carLeft != null">car_left,</if>
  174 + <if test="carBehind != null">car_behind,</if>
  175 + <if test="carRight != null">car_right,</if>
  176 + <if test="drivers != null">drivers,</if>
  177 + <if test="status != null">status,</if>
  178 + <if test="createTime != null">create_time,</if>
  179 + <if test="createBy != null">create_by,</if>
  180 + <if test="updateTime != null">update_time,</if>
  181 + <if test="updateBy != null">update_by,</if>
  182 + <if test="creditStatus != null">credit_status,</if>
  183 + <if test="qrCode != null">qr_code,</if>
  184 + <if test="lengthWidthHeight != null">length_width_height,</if>
  185 + </trim>
  186 + <trim prefix="values (" suffix=")" suffixOverrides=",">
  187 + <if test="companyId != null">#{companyId},</if>
  188 + <if test="carType != null">#{carType},</if>
  189 + <if test="carCode != null">#{carCode},</if>
  190 + <if test="carBrank != null">#{carBrank},</if>
  191 + <if test="emissionStandard != null">#{emissionStandard},</if>
  192 + <if test="roadTransportDate != null">#{roadTransportDate},</if>
  193 + <if test="drivingLicenseDate != null">#{drivingLicenseDate},</if>
  194 + <if test="enterDate != null">#{enterDate},</if>
  195 + <if test="farmeNumber != null">#{farmeNumber},</if>
  196 + <if test="carIdentification != null">#{carIdentification},</if>
  197 + <if test="containerVolume != null">#{containerVolume},</if>
  198 + <if test="carColor != null">#{carColor},</if>
  199 + <if test="carEquipment != null">#{carEquipment},</if>
  200 + <if test="remark != null">#{remark},</if>
  201 + <if test="roadTransport != null">#{roadTransport},</if>
  202 + <if test="drivingLicense != null">#{drivingLicense},</if>
  203 + <if test="carFront != null">#{carFront},</if>
  204 + <if test="carLeft != null">#{carLeft},</if>
  205 + <if test="carBehind != null">#{carBehind},</if>
  206 + <if test="carRight != null">#{carRight},</if>
  207 + <if test="drivers != null">#{drivers},</if>
  208 + <if test="status != null">#{status},</if>
  209 + <if test="createTime != null">#{createTime},</if>
  210 + <if test="createBy != null">#{createBy},</if>
  211 + <if test="updateTime != null">#{updateTime},</if>
  212 + <if test="updateBy != null">#{updateBy},</if>
  213 + <if test="creditStatus != null">#{creditStatus},</if>
  214 + <if test="qrCode != null">#{qrCode},</if>
  215 + <if test="lengthWidthHeight != null">#{lengthWidthHeight},</if>
  216 + </trim>
  217 + </insert>
  218 +
  219 + <update id="updateCarInfo" parameterType="CarInfo">
  220 + update car_info
  221 + <trim prefix="SET" suffixOverrides=",">
  222 + <if test="companyId != null">company_id = #{companyId},</if>
  223 + <if test="carType != null">car_type = #{carType},</if>
  224 + <if test="carCode != null">car_code = #{carCode},</if>
  225 + <if test="carBrank != null">car_brank = #{carBrank},</if>
  226 + <if test="emissionStandard != null">emission_standard = #{emissionStandard},</if>
  227 + <if test="roadTransportDate != null">road_transport_date = #{roadTransportDate},</if>
  228 + <if test="drivingLicenseDate != null">driving_license_date = #{drivingLicenseDate},</if>
  229 + <if test="enterDate != null">enter_date = #{enterDate},</if>
  230 + <if test="farmeNumber != null">farme_number = #{farmeNumber},</if>
  231 + <if test="carIdentification != null">car_identification = #{carIdentification},</if>
  232 + <if test="containerVolume != null">container_volume = #{containerVolume},</if>
  233 + <if test="carColor != null">car_color = #{carColor},</if>
  234 + <if test="carEquipment != null">car_equipment = #{carEquipment},</if>
  235 + <if test="remark != null">remark = #{remark},</if>
  236 + <if test="roadTransport != null">road_transport = #{roadTransport},</if>
  237 + <if test="drivingLicense != null">driving_license = #{drivingLicense},</if>
  238 + <if test="carFront != null">car_front = #{carFront},</if>
  239 + <if test="carLeft != null">car_left = #{carLeft},</if>
  240 + <if test="carBehind != null">car_behind = #{carBehind},</if>
  241 + <if test="carRight != null">car_right = #{carRight},</if>
  242 + <if test="drivers != null">drivers = #{drivers},</if>
  243 + <if test="status != null">status = #{status},</if>
  244 + <if test="createTime != null">create_time = #{createTime},</if>
  245 + <if test="createBy != null">create_by = #{createBy},</if>
  246 + <if test="updateTime != null">update_time = #{updateTime},</if>
  247 + <if test="updateBy != null">update_by = #{updateBy},</if>
  248 + <if test="creditStatus != null">credit_status = #{creditStatus},</if>
  249 + <if test="qrCode != null">qr_code = #{qrCode},</if>
  250 + <if test="lengthWidthHeight != null">length_width_height = #{lengthWidthHeight},</if>
  251 + </trim>
  252 + where id = #{id}
  253 + </update>
  254 +
  255 + <delete id="deleteCarInfoById" parameterType="Long">
  256 + delete from car_info where id = #{id}
  257 + </delete>
  258 +
  259 + <delete id="deleteCarInfoByIds" parameterType="String">
  260 + delete from car_info where id in
  261 + <foreach item="id" collection="array" open="(" separator="," close=")">
  262 + #{id}
  263 + </foreach>
  264 + </delete>
  265 +
  266 +
  267 + <insert id="addCarDriverRelation" parameterType="CarDriverRelation">
  268 + insert into car_driver_relation(car_id,driver_id)
  269 + values(#{carId},#{driverId})
  270 + </insert>
  271 +
  272 + <delete id="deleteCarDriverRelationByCarId" parameterType="Long">
  273 + delete from car_driver_relation where car_id = #{carId}
  274 + </delete>
  275 +</mapper>
0 276 \ No newline at end of file
... ...
trash-unit/src/main/resources/mapper/disposalSite/DisposalSiteMapper.xml renamed to trash-unit/src/main/resources/mapper/unit/DisposalSiteMapper.xml
... ... @@ -20,17 +20,21 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
20 20 <result property="validityBeginDate" column="validity_begin_date" />
21 21 <result property="validityEndDate" column="validity_end_date" />
22 22 <result property="squareMeasure" column="square_measure" />
  23 + <result property="surplusSquareMeasure" column="surplus_square_measure" />
23 24 <result property="carWashingFacilities" column="car_washing_facilities" />
24 25 <result property="exitRoadCondition" column="exit_road_condition" />
25 26 <result property="lightingFacility" column="lighting_facility" />
26 27 <result property="videoSurveillanceFacility" column="video_surveillance_facility" />
27 28 <result property="preparer" column="preparer" />
28 29 <result property="handlingAdvice" column="handling_advice" />
  30 + <result property="absorbSource" column="absorb_source" />
29 31 <result property="electronicFence" column="electronic_fence" />
  32 + <result property="creditStatus" column="credit_status" />
30 33 <result property="approvalDocument" column="approval_document" />
31 34 <result property="approvalData" column="approval_data" />
32 35 <result property="scenePhoto" column="scene_photo" />
33 36 <result property="carWashingFacilitiesImage" column="car_washing_facilities_image" />
  37 + <result property="termRange" column="term_range" />
34 38 <result property="safetyAssessmentReport" column="safety_assessment_report" />
35 39 <result property="environmentalApproval" column="environmental_approval" />
36 40 <result property="authorization" column="authorization" />
... ... @@ -41,10 +45,12 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
41 45 <result property="createBy" column="create_by" />
42 46 <result property="updateTime" column="update_time" />
43 47 <result property="updateBy" column="update_by" />
  48 + <result property="qrCode" column="qr_code" />
  49 + <result property="auditStatus" column="audit_status" />
44 50 </resultMap>
45 51  
46 52 <sql id="selectDisposalSiteVo">
47   - select id, name, certificate_number, address, engineering_property, site_type, local_area, operating_area, trash_type, construction_unit, construction_unit_person, construction_unit_person_phone, validity_begin_date, validity_end_date, square_measure, car_washing_facilities, exit_road_condition, lighting_facility, video_surveillance_facility, preparer, handling_advice, electronic_fence, approval_document, approval_data, scene_photo, car_washing_facilities_image, safety_assessment_report, environmental_approval, authorization, other_information, company_ids, status, create_time, create_by, update_time, update_by from disposal_site
  53 + select id, name, certificate_number, address, engineering_property, site_type, local_area, operating_area, trash_type, construction_unit, construction_unit_person, construction_unit_person_phone, validity_begin_date, validity_end_date, square_measure, surplus_square_measure, car_washing_facilities, exit_road_condition, lighting_facility, video_surveillance_facility, preparer, handling_advice, absorb_source, electronic_fence, credit_status, approval_document, approval_data, scene_photo, car_washing_facilities_image, term_range, safety_assessment_report, environmental_approval, `authorization`, other_information, company_ids, status, create_time, create_by, update_time, update_by, qr_code,audit_status from disposal_site
48 54 </sql>
49 55  
50 56 <select id="selectDisposalSiteList" parameterType="DisposalSite" resultMap="DisposalSiteResult">
... ... @@ -64,23 +70,29 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
64 70 <if test="validityBeginDate != null "> and validity_begin_date = #{validityBeginDate}</if>
65 71 <if test="validityEndDate != null "> and validity_end_date = #{validityEndDate}</if>
66 72 <if test="squareMeasure != null and squareMeasure != ''"> and square_measure = #{squareMeasure}</if>
  73 + <if test="surplusSquareMeasure != null and surplusSquareMeasure != ''"> and surplus_square_measure = #{surplusSquareMeasure}</if>
67 74 <if test="carWashingFacilities != null and carWashingFacilities != ''"> and car_washing_facilities = #{carWashingFacilities}</if>
68 75 <if test="exitRoadCondition != null and exitRoadCondition != ''"> and exit_road_condition = #{exitRoadCondition}</if>
69 76 <if test="lightingFacility != null and lightingFacility != ''"> and lighting_facility = #{lightingFacility}</if>
70 77 <if test="videoSurveillanceFacility != null and videoSurveillanceFacility != ''"> and video_surveillance_facility = #{videoSurveillanceFacility}</if>
71 78 <if test="preparer != null and preparer != ''"> and preparer = #{preparer}</if>
72 79 <if test="handlingAdvice != null and handlingAdvice != ''"> and handling_advice = #{handlingAdvice}</if>
  80 + <if test="absorbSource != null and absorbSource != ''"> and absorb_source = #{absorbSource}</if>
73 81 <if test="electronicFence != null and electronicFence != ''"> and electronic_fence = #{electronicFence}</if>
  82 + <if test="creditStatus != null and creditStatus != ''"> and credit_status = #{creditStatus}</if>
74 83 <if test="approvalDocument != null and approvalDocument != ''"> and approval_document = #{approvalDocument}</if>
75 84 <if test="approvalData != null and approvalData != ''"> and approval_data = #{approvalData}</if>
76 85 <if test="scenePhoto != null and scenePhoto != ''"> and scene_photo = #{scenePhoto}</if>
77 86 <if test="carWashingFacilitiesImage != null and carWashingFacilitiesImage != ''"> and car_washing_facilities_image = #{carWashingFacilitiesImage}</if>
  87 + <if test="termRange != null and termRange != ''"> and term_range = #{termRange}</if>
78 88 <if test="safetyAssessmentReport != null and safetyAssessmentReport != ''"> and safety_assessment_report = #{safetyAssessmentReport}</if>
79 89 <if test="environmentalApproval != null and environmentalApproval != ''"> and environmental_approval = #{environmentalApproval}</if>
80 90 <if test="authorization != null and authorization != ''"> and authorization = #{authorization}</if>
81 91 <if test="otherInformation != null and otherInformation != ''"> and other_information = #{otherInformation}</if>
82 92 <if test="companyIds != null and companyIds != ''"> and company_ids = #{companyIds}</if>
83 93 <if test="status != null "> and status = #{status}</if>
  94 + <if test="qrCode != null and qrCode != ''"> and qr_code = #{qrCode}</if>
  95 + <if test="auditStatus != null "> and audit_status = #{auditStatus}</if>
84 96 </where>
85 97 </select>
86 98  
... ... @@ -106,17 +118,21 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
106 118 <if test="validityBeginDate != null">validity_begin_date,</if>
107 119 <if test="validityEndDate != null">validity_end_date,</if>
108 120 <if test="squareMeasure != null">square_measure,</if>
  121 + <if test="surplusSquareMeasure != null">surplus_square_measure,</if>
109 122 <if test="carWashingFacilities != null">car_washing_facilities,</if>
110 123 <if test="exitRoadCondition != null">exit_road_condition,</if>
111 124 <if test="lightingFacility != null">lighting_facility,</if>
112 125 <if test="videoSurveillanceFacility != null">video_surveillance_facility,</if>
113 126 <if test="preparer != null">preparer,</if>
114 127 <if test="handlingAdvice != null">handling_advice,</if>
  128 + <if test="absorbSource != null">absorb_source,</if>
115 129 <if test="electronicFence != null">electronic_fence,</if>
  130 + <if test="creditStatus != null">credit_status,</if>
116 131 <if test="approvalDocument != null">approval_document,</if>
117 132 <if test="approvalData != null">approval_data,</if>
118 133 <if test="scenePhoto != null">scene_photo,</if>
119 134 <if test="carWashingFacilitiesImage != null">car_washing_facilities_image,</if>
  135 + <if test="termRange != null">term_range,</if>
120 136 <if test="safetyAssessmentReport != null">safety_assessment_report,</if>
121 137 <if test="environmentalApproval != null">environmental_approval,</if>
122 138 <if test="authorization != null">authorization,</if>
... ... @@ -127,6 +143,8 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
127 143 <if test="createBy != null">create_by,</if>
128 144 <if test="updateTime != null">update_time,</if>
129 145 <if test="updateBy != null">update_by,</if>
  146 + <if test="qrCode != null">qr_code,</if>
  147 + <if test="auditStatus != null">audit_status,</if>
130 148 </trim>
131 149 <trim prefix="values (" suffix=")" suffixOverrides=",">
132 150 <if test="name != null">#{name},</if>
... ... @@ -143,17 +161,21 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
143 161 <if test="validityBeginDate != null">#{validityBeginDate},</if>
144 162 <if test="validityEndDate != null">#{validityEndDate},</if>
145 163 <if test="squareMeasure != null">#{squareMeasure},</if>
  164 + <if test="surplusSquareMeasure != null">#{surplusSquareMeasure},</if>
146 165 <if test="carWashingFacilities != null">#{carWashingFacilities},</if>
147 166 <if test="exitRoadCondition != null">#{exitRoadCondition},</if>
148 167 <if test="lightingFacility != null">#{lightingFacility},</if>
149 168 <if test="videoSurveillanceFacility != null">#{videoSurveillanceFacility},</if>
150 169 <if test="preparer != null">#{preparer},</if>
151 170 <if test="handlingAdvice != null">#{handlingAdvice},</if>
  171 + <if test="absorbSource != null">#{absorbSource},</if>
152 172 <if test="electronicFence != null">#{electronicFence},</if>
  173 + <if test="creditStatus != null">#{creditStatus},</if>
153 174 <if test="approvalDocument != null">#{approvalDocument},</if>
154 175 <if test="approvalData != null">#{approvalData},</if>
155 176 <if test="scenePhoto != null">#{scenePhoto},</if>
156 177 <if test="carWashingFacilitiesImage != null">#{carWashingFacilitiesImage},</if>
  178 + <if test="termRange != null">#{termRange},</if>
157 179 <if test="safetyAssessmentReport != null">#{safetyAssessmentReport},</if>
158 180 <if test="environmentalApproval != null">#{environmentalApproval},</if>
159 181 <if test="authorization != null">#{authorization},</if>
... ... @@ -164,6 +186,8 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
164 186 <if test="createBy != null">#{createBy},</if>
165 187 <if test="updateTime != null">#{updateTime},</if>
166 188 <if test="updateBy != null">#{updateBy},</if>
  189 + <if test="qrCode != null">#{qrCode},</if>
  190 + <if test="auditStatus != null">#{auditStatus},</if>
167 191 </trim>
168 192 </insert>
169 193  
... ... @@ -184,17 +208,21 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
184 208 <if test="validityBeginDate != null">validity_begin_date = #{validityBeginDate},</if>
185 209 <if test="validityEndDate != null">validity_end_date = #{validityEndDate},</if>
186 210 <if test="squareMeasure != null">square_measure = #{squareMeasure},</if>
  211 + <if test="surplusSquareMeasure != null">surplus_square_measure = #{surplusSquareMeasure},</if>
187 212 <if test="carWashingFacilities != null">car_washing_facilities = #{carWashingFacilities},</if>
188 213 <if test="exitRoadCondition != null">exit_road_condition = #{exitRoadCondition},</if>
189 214 <if test="lightingFacility != null">lighting_facility = #{lightingFacility},</if>
190 215 <if test="videoSurveillanceFacility != null">video_surveillance_facility = #{videoSurveillanceFacility},</if>
191 216 <if test="preparer != null">preparer = #{preparer},</if>
192 217 <if test="handlingAdvice != null">handling_advice = #{handlingAdvice},</if>
  218 + <if test="absorbSource != null">absorb_source = #{absorbSource},</if>
193 219 <if test="electronicFence != null">electronic_fence = #{electronicFence},</if>
  220 + <if test="creditStatus != null">credit_status = #{creditStatus},</if>
194 221 <if test="approvalDocument != null">approval_document = #{approvalDocument},</if>
195 222 <if test="approvalData != null">approval_data = #{approvalData},</if>
196 223 <if test="scenePhoto != null">scene_photo = #{scenePhoto},</if>
197 224 <if test="carWashingFacilitiesImage != null">car_washing_facilities_image = #{carWashingFacilitiesImage},</if>
  225 + <if test="termRange != null">term_range = #{termRange},</if>
198 226 <if test="safetyAssessmentReport != null">safety_assessment_report = #{safetyAssessmentReport},</if>
199 227 <if test="environmentalApproval != null">environmental_approval = #{environmentalApproval},</if>
200 228 <if test="authorization != null">authorization = #{authorization},</if>
... ... @@ -205,6 +233,8 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
205 233 <if test="createBy != null">create_by = #{createBy},</if>
206 234 <if test="updateTime != null">update_time = #{updateTime},</if>
207 235 <if test="updateBy != null">update_by = #{updateBy},</if>
  236 + <if test="qrCode != null">qr_code = #{qrCode},</if>
  237 + <if test="auditStatus != null">audit_status = #{auditStatus},</if>
208 238 </trim>
209 239 where id = #{id}
210 240 </update>
... ...
trash-unit/src/main/resources/mapper/driver/DriverMapper.xml renamed to trash-unit/src/main/resources/mapper/unit/DriverMapper.xml
... ... @@ -3,57 +3,76 @@
3 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5 5 <mapper namespace="com.trash.driver.mapper.DriverMapper">
6   -
  6 +
7 7 <resultMap type="Driver" id="DriverResult">
8   - <result property="id" column="id" />
9   - <result property="name" column="name" />
10   - <result property="identityCard" column="identity_card" />
11   - <result property="companyId" column="company_id" />
12   - <result property="professionalQualificationBeginDate" column="professional_qualification_begin_date" />
13   - <result property="professionalQualificationEndDate" column="professional_qualification_end_date" />
14   - <result property="drivingLicenceBeginDate" column="driving_licence_begin_date" />
15   - <result property="drivingLicenceEndDate" column="driving_licence_end_date" />
16   - <result property="safetyTrainingDate" column="safety_training_date" />
17   - <result property="safetyTrainingContent" column="safety_training_content" />
18   - <result property="remark" column="remark" />
19   - <result property="drivingLicence" column="driving_licence" />
20   - <result property="professionalQualification" column="professional_qualification" />
21   - <result property="safetyTraining" column="safety_training" />
22   - <result property="status" column="status" />
23   - <result property="createTime" column="create_time" />
24   - <result property="createBy" column="create_by" />
25   - <result property="updateTime" column="update_time" />
26   - <result property="updateBy" column="update_by" />
  8 + <result property="id" column="id"/>
  9 + <result property="name" column="name"/>
  10 + <result property="identityCard" column="identity_card"/>
  11 + <result property="companyId" column="company_id"/>
  12 + <result property="professionalQualificationBeginDate" column="professional_qualification_begin_date"/>
  13 + <result property="professionalQualificationEndDate" column="professional_qualification_end_date"/>
  14 + <result property="drivingLicenceBeginDate" column="driving_licence_begin_date"/>
  15 + <result property="drivingLicenceEndDate" column="driving_licence_end_date"/>
  16 + <result property="safetyTrainingDate" column="safety_training_date"/>
  17 + <result property="safetyTrainingContent" column="safety_training_content"/>
  18 + <result property="remark" column="remark"/>
  19 + <result property="drivingLicence" column="driving_licence"/>
  20 + <result property="professionalQualification" column="professional_qualification"/>
  21 + <result property="safetyTraining" column="safety_training"/>
  22 + <result property="status" column="status"/>
  23 + <result property="createTime" column="create_time"/>
  24 + <result property="createBy" column="create_by"/>
  25 + <result property="updateTime" column="update_time"/>
  26 + <result property="updateBy" column="update_by"/>
  27 + <result property="photographOne" column="photograph_one"/>
  28 + <result property="photographTwo" column="photograph_two"/>
  29 + <result property="phoneNo" column="phoneNo"/>
  30 + </resultMap>
  31 + <resultMap type="DriverVo" id="DriverVoResult" extends="DriverResult">
  32 + <result property="companyName" column="companyName"/>
27 33 </resultMap>
28 34  
29 35 <sql id="selectDriverVo">
30   - select id, name, identity_card, company_id, professional_qualification_begin_date, professional_qualification_end_date, driving_licence_begin_date, driving_licence_end_date, safety_training_date, safety_training_content, remark, driving_licence, professional_qualification, safety_training, status, create_time, create_by, update_time, update_by from driver
  36 + select id, name, identity_card, company_id, professional_qualification_begin_date, professional_qualification_end_date, driving_licence_begin_date, driving_licence_end_date, safety_training_date, safety_training_content, remark, driving_licence, professional_qualification, safety_training, status, create_time, create_by, update_time, update_by, photograph_one, photograph_two,phoneNo from driver
31 37 </sql>
32 38  
33   - <select id="selectDriverList" parameterType="Driver" resultMap="DriverResult">
34   - <include refid="selectDriverVo"/>
35   - <where>
36   - <if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
37   - <if test="identityCard != null and identityCard != ''"> and identity_card = #{identityCard}</if>
  39 + <sql id="selectDriverCompanyVo">
  40 + select d.id, d.name,c.name companyName, identity_card, company_id, professional_qualification_begin_date, professional_qualification_end_date, driving_licence_begin_date, driving_licence_end_date, safety_training_date, safety_training_content, d.remark, driving_licence, professional_qualification, safety_training, d.status, d.create_time, d.create_by, d.update_time, d.update_by, photograph_one, photograph_two,phoneNo from driver d
  41 + left join transportation_enterprise c on d.company_id = c.id
  42 + </sql>
  43 +
  44 + <select id="selectDriverList" parameterType="DriverVo" resultMap="DriverVoResult">
  45 + <include refid="selectDriverCompanyVo"/>
  46 + <where>
  47 + <if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
  48 + <if test="companyName != null and companyName != ''"> and c.name like concat('%', #{companyName}, '%')</if>
  49 + <if test="identityCard != null and identityCard != ''"> and identity_card = #{identityCard}</if>
38 50 <if test="companyId != null "> and company_id = #{companyId}</if>
39 51 <if test="professionalQualificationBeginDate != null "> and professional_qualification_begin_date = #{professionalQualificationBeginDate}</if>
40 52 <if test="professionalQualificationEndDate != null "> and professional_qualification_end_date = #{professionalQualificationEndDate}</if>
41 53 <if test="drivingLicenceBeginDate != null "> and driving_licence_begin_date = #{drivingLicenceBeginDate}</if>
42 54 <if test="drivingLicenceEndDate != null "> and driving_licence_end_date = #{drivingLicenceEndDate}</if>
43 55 <if test="safetyTrainingDate != null "> and safety_training_date = #{safetyTrainingDate}</if>
44   - <if test="safetyTrainingContent != null and safetyTrainingContent != ''"> and safety_training_content = #{safetyTrainingContent}</if>
45   - <if test="drivingLicence != null and drivingLicence != ''"> and driving_licence = #{drivingLicence}</if>
46   - <if test="professionalQualification != null and professionalQualification != ''"> and professional_qualification = #{professionalQualification}</if>
47   - <if test="safetyTraining != null and safetyTraining != ''"> and safety_training = #{safetyTraining}</if>
  56 + <if test="safetyTrainingContent != null and safetyTrainingContent != ''"> and safety_training_content = #{safetyTrainingContent}</if>
  57 + <if test="drivingLicence != null and drivingLicence != ''"> and driving_licence = #{drivingLicence}</if>
  58 + <if test="professionalQualification != null and professionalQualification != ''"> and professional_qualification = #{professionalQualification}</if>
  59 + <if test="safetyTraining != null and safetyTraining != ''"> and safety_training = #{safetyTraining}</if>
48 60 <if test="status != null "> and status = #{status}</if>
  61 + <if test="photographOne != null and photographOne != ''"> and photograph_one = #{photographOne}</if>
  62 + <if test="photographTwo != null and photographTwo != ''"> and photograph_two = #{photographTwo}</if>
  63 + <if test="phoneNo != null and phoneNo != ''"> and phoneNo = #{phoneNo}</if>
49 64 </where>
50 65 </select>
51   -
  66 +
  67 + <select id="selectDriverListByCompanyId" parameterType="String" resultType="map">
  68 + select id,name as label from driver where company_id = #{companyId}
  69 + </select>
  70 +
52 71 <select id="selectDriverById" parameterType="Long" resultMap="DriverResult">
53 72 <include refid="selectDriverVo"/>
54 73 where id = #{id}
55 74 </select>
56   -
  75 +
57 76 <insert id="insertDriver" parameterType="Driver" useGeneratedKeys="true" keyProperty="id">
58 77 insert into driver
59 78 <trim prefix="(" suffix=")" suffixOverrides=",">
... ... @@ -75,7 +94,10 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
75 94 <if test="createBy != null">create_by,</if>
76 95 <if test="updateTime != null">update_time,</if>
77 96 <if test="updateBy != null">update_by,</if>
78   - </trim>
  97 + <if test="photographOne != null">photograph_one,</if>
  98 + <if test="photographTwo != null">photograph_two,</if>
  99 + <if test="phoneNo != null">phoneNo,</if>
  100 + </trim>
79 101 <trim prefix="values (" suffix=")" suffixOverrides=",">
80 102 <if test="name != null">#{name},</if>
81 103 <if test="identityCard != null">#{identityCard},</if>
... ... @@ -95,7 +117,10 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
95 117 <if test="createBy != null">#{createBy},</if>
96 118 <if test="updateTime != null">#{updateTime},</if>
97 119 <if test="updateBy != null">#{updateBy},</if>
98   - </trim>
  120 + <if test="photographOne != null">#{photographOne},</if>
  121 + <if test="photographTwo != null">#{photographTwo},</if>
  122 + <if test="phoneNo != null">#{phoneNo},</if>
  123 + </trim>
99 124 </insert>
100 125  
101 126 <update id="updateDriver" parameterType="Driver">
... ... @@ -119,19 +144,21 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
119 144 <if test="createBy != null">create_by = #{createBy},</if>
120 145 <if test="updateTime != null">update_time = #{updateTime},</if>
121 146 <if test="updateBy != null">update_by = #{updateBy},</if>
  147 + <if test="photographOne != null">photograph_one = #{photographOne},</if>
  148 + <if test="photographTwo != null">photograph_two = #{photographTwo},</if>
  149 + <if test="phoneNo != null">phoneNo = #{phoneNo},</if>
122 150 </trim>
123 151 where id = #{id}
124 152 </update>
125 153  
126 154 <delete id="deleteDriverById" parameterType="Long">
127   - delete from driver where id = #{id}
  155 + delete
  156 + from driver
  157 + where id = #{id}
128 158 </delete>
129 159  
130 160 <delete id="deleteDriverByIds" parameterType="String">
131   - delete from driver where id in
132   - <foreach item="id" collection="array" open="(" separator="," close=")">
133   - #{id}
134   - </foreach>
  161 + delete from driver where id in
  162 + <foreach item="id" collection="array" open="(" separator="," close=")"> #{id} </foreach>
135 163 </delete>
136   -
137 164 </mapper>
138 165 \ No newline at end of file
... ...
trash-unit/src/main/resources/mapper/enterprise/TransportationEnterpriseMapper.xml renamed to trash-unit/src/main/resources/mapper/unit/TransportationEnterpriseMapper.xml
... ... @@ -36,10 +36,12 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
36 36 <result property="updateBy" column="update_by" />
37 37 <result property="parentId" column="parent_id" />
38 38 <result property="companyType" column="company_type" />
  39 + <result property="creditStatus" column="credit_status" />
  40 + <result property="qrCode" column="qr_code" />
39 41 </resultMap>
40 42  
41 43 <sql id="selectTransportationEnterpriseVo">
42   - select id, name, abbreviation, registration_area, transport_permission_date, enter_date, business_license_date, office_address, parking_lot_location, parking_area, car_number, safety_manager_name, safety_manager_phone, social_uniform_credit_code_number, legal_representative, legal_representative_phone, safety_people_name, remark, transport_permission, enterprise_business_license, safety_officer_qualification_certificate, safety_certificate, car_park_panorama, business_unit, status, create_time, create_by, update_time, update_by, parent_id, company_type from transportation_enterprise
  44 + select id, name, abbreviation, registration_area, transport_permission_date, enter_date, business_license_date, office_address, parking_lot_location, parking_area, (select count(id) from car_info where company_id = te.id) car_number, safety_manager_name, safety_manager_phone, social_uniform_credit_code_number, legal_representative, legal_representative_phone, safety_people_name, remark, transport_permission, enterprise_business_license, safety_officer_qualification_certificate, safety_certificate, car_park_panorama, business_unit, status, create_time, create_by, update_time, update_by, parent_id, company_type, credit_status, qr_code from transportation_enterprise te
43 45 </sql>
44 46  
45 47 <select id="selectTransportationEnterpriseList" parameterType="TransportationEnterprise" resultMap="TransportationEnterpriseResult">
... ... @@ -70,6 +72,8 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
70 72 <if test="status != null "> and status = #{status}</if>
71 73 <if test="parentId != null "> and parent_id = #{parentId}</if>
72 74 <if test="companyType != null "> and company_type = #{companyType}</if>
  75 + <if test="creditStatus != null and creditStatus != ''"> and credit_status = #{creditStatus}</if>
  76 + <if test="qrCode != null and qrCode != ''"> and qr_code = #{qrCode}</if>
73 77 </where>
74 78 </select>
75 79  
... ... @@ -111,6 +115,8 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
111 115 <if test="updateBy != null">update_by,</if>
112 116 <if test="parentId != null">parent_id,</if>
113 117 <if test="companyType != null">company_type,</if>
  118 + <if test="creditStatus != null">credit_status,</if>
  119 + <if test="qrCode != null">qr_code,</if>
114 120 </trim>
115 121 <trim prefix="values (" suffix=")" suffixOverrides=",">
116 122 <if test="name != null">#{name},</if>
... ... @@ -143,6 +149,8 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
143 149 <if test="updateBy != null">#{updateBy},</if>
144 150 <if test="parentId != null">#{parentId},</if>
145 151 <if test="companyType != null">#{companyType},</if>
  152 + <if test="creditStatus != null">#{creditStatus},</if>
  153 + <if test="qrCode != null">#{qrCode},</if>
146 154 </trim>
147 155 </insert>
148 156  
... ... @@ -179,6 +187,8 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
179 187 <if test="updateBy != null">update_by = #{updateBy},</if>
180 188 <if test="parentId != null">parent_id = #{parentId},</if>
181 189 <if test="companyType != null">company_type = #{companyType},</if>
  190 + <if test="creditStatus != null">credit_status = #{creditStatus},</if>
  191 + <if test="qrCode != null">qr_code = #{qrCode},</if>
182 192 </trim>
183 193 where id = #{id}
184 194 </update>
... ...
trash-workFlow/src/main/java/com/trash/casefile/kafka/Consumer.java
... ... @@ -40,7 +40,7 @@ public class Consumer {
40 40 @Autowired
41 41 private IViolationWarningInformationService violationWarningInformationService;
42 42  
43   - @KafkaListener(topics = "record_process_alarm")
  43 +// @KafkaListener(topics = "record_process_alarm")
44 44 public void consume(ConsumerRecord<?, ?> record, Acknowledgment ack) throws InterruptedException, IOException {
45 45 log.info("kafka消费数据成功,offset:"+ record.offset() +",data:" + record.value());
46 46 String id = insertKafkaCompensation(record.value().toString());
... ...
trash-workFlow/src/main/java/com/trash/office/mapper/UploadFileMapper.java
... ... @@ -58,4 +58,12 @@ public interface UploadFileMapper
58 58 * @return 结果
59 59 */
60 60 int deleteUploadFileByIds(Long[] ids);
  61 +
  62 + /**
  63 + * 根据表名删除文件上传
  64 + *
  65 + * @param tableName 表名
  66 + * @return 结果
  67 + */
  68 + int deleteUploadFileByTableName(String tableName);
61 69 }
... ...
trash-workFlow/src/main/java/com/trash/other/controller/DocumentDataController.java 0 → 100644
  1 +package com.trash.other.controller;
  2 +
  3 +import java.io.IOException;
  4 +import java.util.List;
  5 +import org.springframework.security.access.prepost.PreAuthorize;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.web.bind.annotation.*;
  8 +import com.trash.common.annotation.Log;
  9 +import com.trash.common.core.controller.BaseController;
  10 +import com.trash.common.core.domain.AjaxResult;
  11 +import com.trash.common.enums.BusinessType;
  12 +import com.trash.other.domain.DocumentData;
  13 +import com.trash.other.service.IDocumentDataService;
  14 +import com.trash.common.utils.poi.ExcelUtil;
  15 +import com.trash.common.core.page.TableDataInfo;
  16 +import org.springframework.web.multipart.MultipartFile;
  17 +
  18 +/**
  19 + * 文件资料Controller
  20 + *
  21 + * @author trash
  22 + * @date 2023-11-28
  23 + */
  24 +@RestController
  25 +@RequestMapping("/other/documentData")
  26 +public class DocumentDataController extends BaseController
  27 +{
  28 + @Autowired
  29 + private IDocumentDataService documentDataService;
  30 +
  31 + /**
  32 + * 查询文件资料列表
  33 + */
  34 + @PreAuthorize("@ss.hasPermi('other:documentData:list')")
  35 + @GetMapping("/list")
  36 + public TableDataInfo list(DocumentData documentData)
  37 + {
  38 + startPage();
  39 + List<DocumentData> list = documentDataService.selectDocumentDataList(documentData);
  40 + return getDataTable(list);
  41 + }
  42 +
  43 + /**
  44 + * 导出文件资料列表
  45 + */
  46 + @PreAuthorize("@ss.hasPermi('other:documentData:export')")
  47 + @Log(title = "文件资料", businessType = BusinessType.EXPORT)
  48 + @GetMapping("/export")
  49 + public AjaxResult export(DocumentData documentData)
  50 + {
  51 + List<DocumentData> list = documentDataService.selectDocumentDataList(documentData);
  52 + ExcelUtil<DocumentData> util = new ExcelUtil<DocumentData>(DocumentData.class);
  53 + return util.exportExcel(list, "documentData");
  54 + }
  55 +
  56 + /**
  57 + * 获取文件资料详细信息
  58 + */
  59 + @PreAuthorize("@ss.hasPermi('other:documentData:query')")
  60 + @GetMapping(value = "/{id}")
  61 + public AjaxResult getInfo(@PathVariable("id") Long id)
  62 + {
  63 + return AjaxResult.success(documentDataService.selectDocumentDataById(id));
  64 + }
  65 +
  66 + /**
  67 + * 新增文件资料
  68 + */
  69 + @PreAuthorize("@ss.hasPermi('other:documentData:add')")
  70 + @Log(title = "文件资料", businessType = BusinessType.INSERT)
  71 + @PostMapping
  72 + public AjaxResult add(@RequestParam(value = "fileList") MultipartFile[] files, DocumentData documentData) throws IOException {
  73 + return toAjax(documentDataService.insertDocumentData(files, documentData));
  74 + }
  75 +
  76 + /**
  77 + * 修改文件资料
  78 + */
  79 + @PreAuthorize("@ss.hasPermi('other:documentData:edit')")
  80 + @Log(title = "文件资料", businessType = BusinessType.UPDATE)
  81 + @PutMapping
  82 + public AjaxResult edit(@RequestParam(value = "fileList") MultipartFile[] files,DocumentData documentData) throws IOException {
  83 + return toAjax(documentDataService.updateDocumentData(files, documentData));
  84 + }
  85 +
  86 + /**
  87 + * 删除文件资料
  88 + */
  89 + @PreAuthorize("@ss.hasPermi('other:documentData:remove')")
  90 + @Log(title = "文件资料", businessType = BusinessType.DELETE)
  91 + @DeleteMapping("/{ids}")
  92 + public AjaxResult remove(@PathVariable Long[] ids)
  93 + {
  94 + return toAjax(documentDataService.deleteDocumentDataByIds(ids));
  95 + }
  96 +}
... ...
trash-workFlow/src/main/java/com/trash/other/controller/IncorruptController.java 0 → 100644
  1 +package com.trash.other.controller;
  2 +
  3 +import com.trash.common.annotation.Log;
  4 +import com.trash.common.core.controller.BaseController;
  5 +import com.trash.common.core.domain.AjaxResult;
  6 +import com.trash.common.enums.BusinessType;
  7 +import com.trash.office.domain.UploadFile;
  8 +import com.trash.other.service.IIncorruptService;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.security.access.prepost.PreAuthorize;
  11 +import org.springframework.web.bind.annotation.*;
  12 +import org.springframework.web.multipart.MultipartFile;
  13 +
  14 +import java.io.IOException;
  15 +import java.util.List;
  16 +
  17 +/**
  18 + * 文件资料Controller
  19 + *
  20 + * @author trash
  21 + * @date 2023-11-28
  22 + */
  23 +@RestController
  24 +@RequestMapping("/other/incorrupt")
  25 +public class IncorruptController extends BaseController
  26 +{
  27 + @Autowired
  28 + private IIncorruptService incorruptService;
  29 +
  30 + /**
  31 + * 查询文件资料列表
  32 + */
  33 + @PreAuthorize("@ss.hasPermi('other:incorrupt:list')")
  34 + @GetMapping("/list/{tableName}")
  35 + public List<UploadFile> list(@PathVariable("tableName") String tableName)
  36 + {
  37 + return incorruptService.selectOtherDataList(tableName);
  38 + }
  39 +
  40 + /**
  41 + * 新增文件资料
  42 + */
  43 + @PreAuthorize("@ss.hasPermi('other:incorrupt:add')")
  44 + @Log(title = "廉政&廉洁教育", businessType = BusinessType.INSERT)
  45 + @PostMapping
  46 + public AjaxResult add(@RequestParam("files")MultipartFile[] files,String tableName) throws IOException {
  47 + return toAjax(incorruptService.insertIncorrupt(files,tableName));
  48 + }
  49 +
  50 +// /**
  51 +// * 修改文件资料
  52 +// */
  53 +// @PreAuthorize("@ss.hasPermi('other:documentData:edit')")
  54 +// @Log(title = "文件资料", businessType = BusinessType.UPDATE)
  55 +// @PutMapping
  56 +// public AjaxResult edit(@RequestParam(value = "fileList") MultipartFile[] files,DocumentData documentData) throws IOException {
  57 +// return toAjax(documentDataService.updateDocumentData(files, documentData));
  58 +// }
  59 +
  60 +}
... ...
trash-workFlow/src/main/java/com/trash/other/domain/DocumentData.java 0 → 100644
  1 +package com.trash.other.domain;
  2 +
  3 +import org.apache.commons.lang3.builder.ToStringBuilder;
  4 +import org.apache.commons.lang3.builder.ToStringStyle;
  5 +import com.trash.common.annotation.Excel;
  6 +import com.trash.common.core.domain.BaseEntity;
  7 +
  8 +/**
  9 + * 文件资料对象 document_data
  10 + *
  11 + * @author trash
  12 + * @date 2023-11-28
  13 + */
  14 +public class DocumentData extends BaseEntity
  15 +{
  16 + private static final long serialVersionUID = 1L;
  17 +
  18 + /** $column.columnComment */
  19 + private Long id;
  20 +
  21 + /** 标题 */
  22 + @Excel(name = "标题")
  23 + private String title;
  24 +
  25 + /** 内容 */
  26 + @Excel(name = "内容")
  27 + private String content;
  28 +
  29 + /** 附件 */
  30 + @Excel(name = "附件")
  31 + private String files;
  32 +
  33 + public void setId(Long id)
  34 + {
  35 + this.id = id;
  36 + }
  37 +
  38 + public Long getId()
  39 + {
  40 + return id;
  41 + }
  42 + public void setTitle(String title)
  43 + {
  44 + this.title = title;
  45 + }
  46 +
  47 + public String getTitle()
  48 + {
  49 + return title;
  50 + }
  51 + public void setContent(String content)
  52 + {
  53 + this.content = content;
  54 + }
  55 +
  56 + public String getContent()
  57 + {
  58 + return content;
  59 + }
  60 + public void setFiles(String files)
  61 + {
  62 + this.files = files;
  63 + }
  64 +
  65 + public String getFiles()
  66 + {
  67 + return files;
  68 + }
  69 +
  70 + @Override
  71 + public String toString() {
  72 + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
  73 + .append("id", getId())
  74 + .append("title", getTitle())
  75 + .append("content", getContent())
  76 + .append("files", getFiles())
  77 + .append("createTime", getCreateTime())
  78 + .append("createBy", getCreateBy())
  79 + .append("updateTime", getUpdateTime())
  80 + .append("updateBy", getUpdateBy())
  81 + .toString();
  82 + }
  83 +}
... ...
trash-workFlow/src/main/java/com/trash/other/mapper/DocumentDataMapper.java 0 → 100644
  1 +package com.trash.other.mapper;
  2 +
  3 +import java.util.List;
  4 +import com.trash.other.domain.DocumentData;
  5 +
  6 +/**
  7 + * 文件资料Mapper接口
  8 + *
  9 + * @author trash
  10 + * @date 2023-11-28
  11 + */
  12 +public interface DocumentDataMapper
  13 +{
  14 + /**
  15 + * 查询文件资料
  16 + *
  17 + * @param id 文件资料ID
  18 + * @return 文件资料
  19 + */
  20 + DocumentData selectDocumentDataById(Long id);
  21 +
  22 + /**
  23 + * 查询文件资料列表
  24 + *
  25 + * @param documentData 文件资料
  26 + * @return 文件资料集合
  27 + */
  28 + List<DocumentData> selectDocumentDataList(DocumentData documentData);
  29 +
  30 + /**
  31 + * 新增文件资料
  32 + *
  33 + * @param documentData 文件资料
  34 + * @return 结果
  35 + */
  36 + int insertDocumentData(DocumentData documentData);
  37 +
  38 + /**
  39 + * 修改文件资料
  40 + *
  41 + * @param documentData 文件资料
  42 + * @return 结果
  43 + */
  44 + int updateDocumentData(DocumentData documentData);
  45 +
  46 + /**
  47 + * 删除文件资料
  48 + *
  49 + * @param id 文件资料ID
  50 + * @return 结果
  51 + */
  52 + int deleteDocumentDataById(Long id);
  53 +
  54 + /**
  55 + * 批量删除文件资料
  56 + *
  57 + * @param ids 需要删除的数据ID
  58 + * @return 结果
  59 + */
  60 + int deleteDocumentDataByIds(Long[] ids);
  61 +}
... ...
trash-workFlow/src/main/java/com/trash/other/service/IDocumentDataService.java 0 → 100644
  1 +package com.trash.other.service;
  2 +
  3 +import java.io.IOException;
  4 +import java.util.List;
  5 +import com.trash.other.domain.DocumentData;
  6 +import org.springframework.web.multipart.MultipartFile;
  7 +
  8 +/**
  9 + * 文件资料Service接口
  10 + *
  11 + * @author trash
  12 + * @date 2023-11-28
  13 + */
  14 +public interface IDocumentDataService
  15 +{
  16 + /**
  17 + * 查询文件资料
  18 + *
  19 + * @param id 文件资料ID
  20 + * @return 文件资料
  21 + */
  22 + DocumentData selectDocumentDataById(Long id);
  23 +
  24 + /**
  25 + * 查询文件资料列表
  26 + *
  27 + * @param documentData 文件资料
  28 + * @return 文件资料集合
  29 + */
  30 + List<DocumentData> selectDocumentDataList(DocumentData documentData);
  31 +
  32 + /**
  33 + * 新增文件资料
  34 + *
  35 + * @param files
  36 + * @param documentData 文件资料
  37 + * @return 结果
  38 + */
  39 + int insertDocumentData(MultipartFile[] files, DocumentData documentData) throws IOException;
  40 +
  41 + /**
  42 + * 修改文件资料
  43 + *
  44 + * @param files
  45 + * @param documentData 文件资料
  46 + * @return 结果
  47 + */
  48 + int updateDocumentData(MultipartFile[] files,DocumentData documentData) throws IOException;
  49 +
  50 + /**
  51 + * 批量删除文件资料
  52 + *
  53 + * @param ids 需要删除的文件资料ID
  54 + * @return 结果
  55 + */
  56 + int deleteDocumentDataByIds(Long[] ids);
  57 +
  58 + /**
  59 + * 删除文件资料信息
  60 + *
  61 + * @param id 文件资料ID
  62 + * @return 结果
  63 + */
  64 + int deleteDocumentDataById(Long id);
  65 +}
... ...
trash-workFlow/src/main/java/com/trash/other/service/IIncorruptService.java 0 → 100644
  1 +package com.trash.other.service;
  2 +
  3 +import com.trash.office.domain.UploadFile;
  4 +import org.springframework.web.multipart.MultipartFile;
  5 +
  6 +import java.io.IOException;
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * 其他专项资料Service接口
  11 + *
  12 + * @author trash
  13 + * @date 2023-05-11
  14 + */
  15 +public interface IIncorruptService
  16 +{
  17 +
  18 +
  19 + List<UploadFile> selectOtherDataList(String tableName);
  20 +
  21 +
  22 + int insertIncorrupt(MultipartFile[] files, String tableName) throws IOException;
  23 +
  24 +
  25 +}
... ...
trash-workFlow/src/main/java/com/trash/other/service/impl/DocumentDataServiceImpl.java 0 → 100644
  1 +package com.trash.other.service.impl;
  2 +
  3 +import java.io.IOException;
  4 +import java.util.List;
  5 +
  6 +import com.trash.common.config.trashConfig;
  7 +import com.trash.common.utils.DateUtils;
  8 +import com.trash.common.utils.SecurityUtils;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.stereotype.Service;
  11 +import com.trash.other.mapper.DocumentDataMapper;
  12 +import com.trash.other.domain.DocumentData;
  13 +import com.trash.other.service.IDocumentDataService;
  14 +import org.springframework.web.multipart.MultipartFile;
  15 +
  16 +import static com.trash.common.utils.file.FileUploadUtils.upload;
  17 +
  18 +/**
  19 + * 文件资料Service业务层处理
  20 + *
  21 + * @author trash
  22 + * @date 2023-11-28
  23 + */
  24 +@Service
  25 +public class DocumentDataServiceImpl implements IDocumentDataService
  26 +{
  27 + @Autowired
  28 + private DocumentDataMapper documentDataMapper;
  29 +
  30 + /**
  31 + * 查询文件资料
  32 + *
  33 + * @param id 文件资料ID
  34 + * @return 文件资料
  35 + */
  36 + @Override
  37 + public DocumentData selectDocumentDataById(Long id)
  38 + {
  39 + return documentDataMapper.selectDocumentDataById(id);
  40 + }
  41 +
  42 + /**
  43 + * 查询文件资料列表
  44 + *
  45 + * @param documentData 文件资料
  46 + * @return 文件资料
  47 + */
  48 + @Override
  49 + public List<DocumentData> selectDocumentDataList(DocumentData documentData)
  50 + {
  51 + return documentDataMapper.selectDocumentDataList(documentData);
  52 + }
  53 +
  54 + /**
  55 + * 新增文件资料
  56 + *
  57 + * @param files
  58 + * @param documentData 文件资料
  59 + * @return 结果
  60 + */
  61 + @Override
  62 + public int insertDocumentData(MultipartFile[] files, DocumentData documentData) throws IOException {
  63 + for (MultipartFile file:files){
  64 + documentData.setFiles(documentData.getFiles()!=null?documentData.getFiles()+";"+uploadFile(file):uploadFile(file));
  65 + }
  66 + documentData.setFiles(removeSemicolon(documentData.getFiles()));
  67 + return documentDataMapper.insertDocumentData(documentData);
  68 + }
  69 +
  70 + /**
  71 + * 修改文件资料
  72 + *
  73 + * @param files
  74 + * @param documentData 文件资料
  75 + * @return 结果
  76 + */
  77 + @Override
  78 + public int updateDocumentData(MultipartFile[] files, DocumentData documentData) throws IOException {
  79 + documentData.setUpdateTime(DateUtils.getNowDate());
  80 + documentData.setUpdateBy(SecurityUtils.getUsername());
  81 + for (MultipartFile file:files){
  82 + documentData.setFiles(documentData.getFiles()!=null?documentData.getFiles()+";"+uploadFile(file):uploadFile(file));
  83 + }
  84 + documentData.setFiles(removeSemicolon(documentData.getFiles()));
  85 + return documentDataMapper.updateDocumentData(documentData);
  86 + }
  87 +
  88 + /**
  89 + * 批量删除文件资料
  90 + *
  91 + * @param ids 需要删除的文件资料ID
  92 + * @return 结果
  93 + */
  94 + @Override
  95 + public int deleteDocumentDataByIds(Long[] ids)
  96 + {
  97 + return documentDataMapper.deleteDocumentDataByIds(ids);
  98 + }
  99 +
  100 + /**
  101 + * 删除文件资料信息
  102 + *
  103 + * @param id 文件资料ID
  104 + * @return 结果
  105 + */
  106 + @Override
  107 + public int deleteDocumentDataById(Long id)
  108 + {
  109 + return documentDataMapper.deleteDocumentDataById(id);
  110 + }
  111 +
  112 + /**
  113 + * 文件上传
  114 + *
  115 + * @param file
  116 + * @author 2c
  117 + */
  118 + public static String uploadFile(MultipartFile file) throws IOException {
  119 + // 上传文件路径
  120 + String filePath = trashConfig.getUploadPath();
  121 + // 上传并返回新文件名称
  122 + String newFileName = upload(filePath, file);
  123 + return newFileName;
  124 + }
  125 +
  126 + //去掉第一个分号,如果有的话
  127 + public String removeSemicolon(String str){
  128 + if (str.startsWith(";"))
  129 + str = str.substring(1);
  130 + return str;
  131 + }
  132 +}
... ...
trash-workFlow/src/main/java/com/trash/other/service/impl/IncorruptServiceImpl.java 0 → 100644
  1 +package com.trash.other.service.impl;
  2 +
  3 +import com.trash.common.utils.file.FileUploadUtils;
  4 +import com.trash.office.domain.UploadFile;
  5 +import com.trash.office.mapper.UploadFileMapper;
  6 +import com.trash.other.service.IIncorruptService;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.stereotype.Service;
  9 +import org.springframework.web.multipart.MultipartFile;
  10 +
  11 +import java.io.IOException;
  12 +import java.util.List;
  13 +
  14 +/**
  15 + * 其他专项资料Service业务层处理
  16 + *
  17 + * @author trash
  18 + * @date 2023-05-11
  19 + */
  20 +@Service
  21 +public class IncorruptServiceImpl implements IIncorruptService {
  22 + @Autowired
  23 + private UploadFileMapper uploadFileMapper;
  24 +
  25 +
  26 + @Override
  27 + public List<UploadFile> selectOtherDataList(String tableName) {
  28 + UploadFile uploadFile = new UploadFile();
  29 + uploadFile.setTableName(tableName);
  30 + return uploadFileMapper.selectUploadFileList(uploadFile);
  31 + }
  32 +
  33 + @Override
  34 + public int insertIncorrupt(MultipartFile[] files, String tableName) throws IOException {
  35 + UploadFile uploadFile = new UploadFile();
  36 + for (MultipartFile file : files) {
  37 + uploadFile.setTableName(tableName);
  38 + uploadFile.setTableNumber("1");
  39 + uploadFile.setFileName(file.getOriginalFilename());
  40 + uploadFile.setFilePath(FileUploadUtils.uploadFile(file));
  41 + }
  42 + uploadFileMapper.deleteUploadFileByTableName(tableName);
  43 + return uploadFileMapper.insertUploadFile(uploadFile);
  44 + }
  45 +
  46 +}
... ...
trash-workFlow/src/main/resources/mapper/office/UploadFileMapper.xml
... ... @@ -71,5 +71,12 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
71 71 #{id}
72 72 </foreach>
73 73 </delete>
74   -
  74 +
  75 +
  76 + <delete id="deleteUploadFileByTableName" parameterType="String">
  77 + delete from upload_file
  78 + <if test="tableName != null">
  79 + where table_name = #{tableName}
  80 + </if>
  81 + </delete>
75 82 </mapper>
76 83 \ No newline at end of file
... ...
trash-workFlow/src/main/resources/mapper/other/DocumentDataMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE mapper
  3 +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4 +"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5 +<mapper namespace="com.trash.other.mapper.DocumentDataMapper">
  6 +
  7 + <resultMap type="DocumentData" id="DocumentDataResult">
  8 + <result property="id" column="id" />
  9 + <result property="title" column="title" />
  10 + <result property="content" column="content" />
  11 + <result property="files" column="files" />
  12 + <result property="createTime" column="create_time" />
  13 + <result property="createBy" column="create_by" />
  14 + <result property="updateTime" column="update_time" />
  15 + <result property="updateBy" column="update_by" />
  16 + </resultMap>
  17 +
  18 + <sql id="selectDocumentDataVo">
  19 + select id, title, content, files, create_time, create_by, update_time, update_by from document_data
  20 + </sql>
  21 +
  22 + <select id="selectDocumentDataList" parameterType="DocumentData" resultMap="DocumentDataResult">
  23 + <include refid="selectDocumentDataVo"/>
  24 + <where>
  25 + <if test="title != null and title != ''"> and title like concat('%',#{title},'%')</if>
  26 + <if test="content != null and content != ''"> and content = #{content}</if>
  27 + <if test="files != null and files != ''"> and files = #{files}</if>
  28 + </where>
  29 + </select>
  30 +
  31 + <select id="selectDocumentDataById" parameterType="Long" resultMap="DocumentDataResult">
  32 + <include refid="selectDocumentDataVo"/>
  33 + where id = #{id}
  34 + </select>
  35 +
  36 + <insert id="insertDocumentData" parameterType="DocumentData" useGeneratedKeys="true" keyProperty="id">
  37 + insert into document_data
  38 + <trim prefix="(" suffix=")" suffixOverrides=",">
  39 + <if test="title != null">title,</if>
  40 + <if test="content != null">content,</if>
  41 + <if test="files != null">files,</if>
  42 + <if test="createTime != null">create_time,</if>
  43 + <if test="createBy != null">create_by,</if>
  44 + <if test="updateTime != null">update_time,</if>
  45 + <if test="updateBy != null">update_by,</if>
  46 + </trim>
  47 + <trim prefix="values (" suffix=")" suffixOverrides=",">
  48 + <if test="title != null">#{title},</if>
  49 + <if test="content != null">#{content},</if>
  50 + <if test="files != null">#{files},</if>
  51 + <if test="createTime != null">#{createTime},</if>
  52 + <if test="createBy != null">#{createBy},</if>
  53 + <if test="updateTime != null">#{updateTime},</if>
  54 + <if test="updateBy != null">#{updateBy},</if>
  55 + </trim>
  56 + </insert>
  57 +
  58 + <update id="updateDocumentData" parameterType="DocumentData">
  59 + update document_data
  60 + <trim prefix="SET" suffixOverrides=",">
  61 + <if test="title != null">title = #{title},</if>
  62 + <if test="content != null">content = #{content},</if>
  63 + <if test="files != null">files = #{files},</if>
  64 + <if test="createTime != null">create_time = #{createTime},</if>
  65 + <if test="createBy != null">create_by = #{createBy},</if>
  66 + <if test="updateTime != null">update_time = #{updateTime},</if>
  67 + <if test="updateBy != null">update_by = #{updateBy},</if>
  68 + </trim>
  69 + where id = #{id}
  70 + </update>
  71 +
  72 + <delete id="deleteDocumentDataById" parameterType="Long">
  73 + delete from document_data where id = #{id}
  74 + </delete>
  75 +
  76 + <delete id="deleteDocumentDataByIds" parameterType="String">
  77 + delete from document_data where id in
  78 + <foreach item="id" collection="array" open="(" separator="," close=")">
  79 + #{id}
  80 + </foreach>
  81 + </delete>
  82 +
  83 +</mapper>
0 84 \ No newline at end of file
... ...