Commit a8cd92b6c8794f9cbfa131640710df037478fff8
1 parent
53c536e2
电子联单bug 修复,导出联单,打印联单
Showing
5 changed files
with
295 additions
and
151 deletions
trash-garbage/src/main/java/com/trash/garbage/pojo/domain/GarOrderMatchAsk.java
| @@ -9,6 +9,7 @@ import java.util.Date; | @@ -9,6 +9,7 @@ import java.util.Date; | ||
| 9 | 9 | ||
| 10 | import com.fasterxml.jackson.annotation.JsonFormat; | 10 | import com.fasterxml.jackson.annotation.JsonFormat; |
| 11 | import com.trash.common.annotation.Excel; | 11 | import com.trash.common.annotation.Excel; |
| 12 | +import com.trash.common.core.domain.BaseEntity; | ||
| 12 | import lombok.Data; | 13 | import lombok.Data; |
| 13 | import lombok.EqualsAndHashCode; | 14 | import lombok.EqualsAndHashCode; |
| 14 | import lombok.ToString; | 15 | import lombok.ToString; |
| @@ -21,7 +22,7 @@ import org.springframework.format.annotation.DateTimeFormat; | @@ -21,7 +22,7 @@ import org.springframework.format.annotation.DateTimeFormat; | ||
| 21 | @TableName(value ="gar_order_match_ask") | 22 | @TableName(value ="gar_order_match_ask") |
| 22 | @EqualsAndHashCode | 23 | @EqualsAndHashCode |
| 23 | @ToString | 24 | @ToString |
| 24 | -public class GarOrderMatchAsk implements Serializable { | 25 | +public class GarOrderMatchAsk extends BaseEntity implements Serializable { |
| 25 | /** | 26 | /** |
| 26 | * | 27 | * |
| 27 | */ | 28 | */ |
| @@ -31,12 +32,38 @@ public class GarOrderMatchAsk implements Serializable { | @@ -31,12 +32,38 @@ public class GarOrderMatchAsk implements Serializable { | ||
| 31 | /** | 32 | /** |
| 32 | * 订单 id | 33 | * 订单 id |
| 33 | */ | 34 | */ |
| 34 | - @Excel(name = "订单 ID") | ||
| 35 | private String garOrderId; | 35 | private String garOrderId; |
| 36 | 36 | ||
| 37 | /** | 37 | /** |
| 38 | + * 订单编号 | ||
| 39 | + */ | ||
| 40 | + @Excel(name = "订单编号") | ||
| 41 | + private String garOrderNumber; | ||
| 42 | + | ||
| 43 | + /** | ||
| 44 | + * 订单时间 | ||
| 45 | + */ | ||
| 46 | + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | ||
| 47 | + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") | ||
| 48 | + @Excel(name = "运输开始时间",dateFormat = "yyyy-MM-dd HH:mm:ss") | ||
| 49 | + private Date garOrderTime; | ||
| 50 | + | ||
| 51 | + /** | ||
| 52 | + * 订单下单手机号 | ||
| 53 | + */ | ||
| 54 | + @Excel(name = "下单手机号") | ||
| 55 | + private String garOrderPhone; | ||
| 56 | + | ||
| 57 | + /** | ||
| 58 | + * 订单下单用户名称 | ||
| 59 | + */ | ||
| 60 | + @Excel(name = "下单用户名称") | ||
| 61 | + private String garOrderName; | ||
| 62 | + | ||
| 63 | + /** | ||
| 38 | * 运输驾驶员手机号 | 64 | * 运输驾驶员手机号 |
| 39 | */ | 65 | */ |
| 66 | + @Excel(name = "运输驾驶员手机号") | ||
| 40 | private String garOrderHandlerTel; | 67 | private String garOrderHandlerTel; |
| 41 | /** | 68 | /** |
| 42 | * 订单载重 | 69 | * 订单载重 |
| @@ -44,15 +71,18 @@ public class GarOrderMatchAsk implements Serializable { | @@ -44,15 +71,18 @@ public class GarOrderMatchAsk implements Serializable { | ||
| 44 | private Double garCarryingWeight; | 71 | private Double garCarryingWeight; |
| 45 | 72 | ||
| 46 | /** | 73 | /** |
| 47 | - * 接收量 | ||
| 48 | - */ | ||
| 49 | - private Double garReceptionQuantity; | ||
| 50 | - /** | ||
| 51 | * 运输驾驶员 | 74 | * 运输驾驶员 |
| 52 | */ | 75 | */ |
| 76 | + @Excel(name = "运输驾驶员") | ||
| 53 | private String garOrderHandlerName; | 77 | private String garOrderHandlerName; |
| 54 | 78 | ||
| 55 | /** | 79 | /** |
| 80 | + * 车次 | ||
| 81 | + */ | ||
| 82 | + @Excel(name = "车次") | ||
| 83 | + private int dropCarNum; | ||
| 84 | + | ||
| 85 | + /** | ||
| 56 | * 公司 id | 86 | * 公司 id |
| 57 | */ | 87 | */ |
| 58 | private String garOrderHandlerCompanyId; | 88 | private String garOrderHandlerCompanyId; |
| @@ -64,6 +94,7 @@ public class GarOrderMatchAsk implements Serializable { | @@ -64,6 +94,7 @@ public class GarOrderMatchAsk implements Serializable { | ||
| 64 | /** | 94 | /** |
| 65 | * 公司名称 | 95 | * 公司名称 |
| 66 | */ | 96 | */ |
| 97 | + @Excel(name = "公司名称") | ||
| 67 | private String garOrderHandlerCompanyName; | 98 | private String garOrderHandlerCompanyName; |
| 68 | 99 | ||
| 69 | /** | 100 | /** |
| @@ -77,19 +108,19 @@ public class GarOrderMatchAsk implements Serializable { | @@ -77,19 +108,19 @@ public class GarOrderMatchAsk implements Serializable { | ||
| 77 | private String garOrderHandlerId; | 108 | private String garOrderHandlerId; |
| 78 | 109 | ||
| 79 | /** | 110 | /** |
| 80 | - * | 111 | + * 运输开始时间 |
| 81 | */ | 112 | */ |
| 82 | - @TableField(fill = FieldFill.INSERT) | ||
| 83 | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | 113 | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| 84 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") | 114 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") |
| 115 | + @Excel(name = "运输开始时间",dateFormat = "yyyy-MM-dd HH:mm:ss") | ||
| 85 | private Date garCreateTime; | 116 | private Date garCreateTime; |
| 86 | 117 | ||
| 87 | /** | 118 | /** |
| 88 | - * | 119 | + * 接收时间 |
| 89 | */ | 120 | */ |
| 90 | - @TableField(fill = FieldFill.INSERT_UPDATE) | ||
| 91 | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | 121 | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| 92 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") | 122 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") |
| 123 | + @Excel(name = "接收时间",dateFormat = "yyyy-MM-dd HH:mm:ss") | ||
| 93 | private Date garUpdateTime; | 124 | private Date garUpdateTime; |
| 94 | 125 | ||
| 95 | /** | 126 | /** |
| @@ -107,9 +138,16 @@ public class GarOrderMatchAsk implements Serializable { | @@ -107,9 +138,16 @@ public class GarOrderMatchAsk implements Serializable { | ||
| 107 | /** | 138 | /** |
| 108 | * 备注 | 139 | * 备注 |
| 109 | */ | 140 | */ |
| 141 | + @Excel(name = "备注") | ||
| 110 | private String garRemark; | 142 | private String garRemark; |
| 111 | 143 | ||
| 112 | /** | 144 | /** |
| 145 | + * 趟次类型0=正常趟次,1=异常趟次 | ||
| 146 | + */ | ||
| 147 | + @Excel(name = "趟次类型",readConverterExp = "0=正常趟次,1=异常趟次") | ||
| 148 | + private String garOrderType; | ||
| 149 | + | ||
| 150 | + /** | ||
| 113 | * 投放点 id | 151 | * 投放点 id |
| 114 | */ | 152 | */ |
| 115 | private int dropPointId; | 153 | private int dropPointId; |
| @@ -117,12 +155,21 @@ public class GarOrderMatchAsk implements Serializable { | @@ -117,12 +155,21 @@ public class GarOrderMatchAsk implements Serializable { | ||
| 117 | /** | 155 | /** |
| 118 | * 投放点名称 | 156 | * 投放点名称 |
| 119 | */ | 157 | */ |
| 158 | + @Excel(name = "投放点名称") | ||
| 120 | private String dropPointName; | 159 | private String dropPointName; |
| 121 | 160 | ||
| 122 | /** | 161 | /** |
| 123 | - * 趟次类型0=正常趟次,1=异常趟次 | 162 | + * 投放点管理员联系方式 |
| 124 | */ | 163 | */ |
| 125 | - private String garOrderType; | 164 | + @Excel(name = "投放点管理员联系方式") |
| 165 | + private String dropCustodianPhone; | ||
| 166 | + | ||
| 167 | + /** | ||
| 168 | + * 投放点地址 | ||
| 169 | + */ | ||
| 170 | + @Excel(name = "投放点地址") | ||
| 171 | + private String dropAddress; | ||
| 172 | + | ||
| 126 | 173 | ||
| 127 | /** | 174 | /** |
| 128 | * 处置场所 id | 175 | * 处置场所 id |
| @@ -132,22 +179,61 @@ public class GarOrderMatchAsk implements Serializable { | @@ -132,22 +179,61 @@ public class GarOrderMatchAsk implements Serializable { | ||
| 132 | /** | 179 | /** |
| 133 | * 处置场所 | 180 | * 处置场所 |
| 134 | */ | 181 | */ |
| 182 | + @Excel(name = "处置场所") | ||
| 135 | private String disposalSiteName; | 183 | private String disposalSiteName; |
| 136 | 184 | ||
| 137 | - /** | ||
| 138 | - * 订单编号 | ||
| 139 | - */ | ||
| 140 | - private String garOrderNumber; | ||
| 141 | 185 | ||
| 142 | /** | 186 | /** |
| 143 | - * 订单下单手机号 | 187 | + * 到达处置场所车牌号 |
| 144 | */ | 188 | */ |
| 145 | - private String garOrderPhone; | 189 | + @Excel(name = "到达处置场所车牌号") |
| 190 | + private String garHandlerCarCodeEnd; | ||
| 146 | 191 | ||
| 147 | /** | 192 | /** |
| 148 | - * 订单下单用户名称 | 193 | + * 接收量 |
| 149 | */ | 194 | */ |
| 150 | - private String garOrderName; | 195 | + @Excel(name = "接收量") |
| 196 | + private Double garReceptionQuantity; | ||
| 197 | + | ||
| 198 | + public Date getGarOrderTime() { | ||
| 199 | + return garOrderTime; | ||
| 200 | + } | ||
| 201 | + | ||
| 202 | + public void setGarOrderTime(Date garOrderTime) { | ||
| 203 | + this.garOrderTime = garOrderTime; | ||
| 204 | + } | ||
| 205 | + | ||
| 206 | + public String getDropCustodianPhone() { | ||
| 207 | + return dropCustodianPhone; | ||
| 208 | + } | ||
| 209 | + | ||
| 210 | + public void setDropCustodianPhone(String dropCustodianPhone) { | ||
| 211 | + this.dropCustodianPhone = dropCustodianPhone; | ||
| 212 | + } | ||
| 213 | + | ||
| 214 | + public String getDropAddress() { | ||
| 215 | + return dropAddress; | ||
| 216 | + } | ||
| 217 | + | ||
| 218 | + public void setDropAddress(String dropAddress) { | ||
| 219 | + this.dropAddress = dropAddress; | ||
| 220 | + } | ||
| 221 | + | ||
| 222 | + public int getDropCarNum() { | ||
| 223 | + return dropCarNum; | ||
| 224 | + } | ||
| 225 | + | ||
| 226 | + public void setDropCarNum(int dropCarNum) { | ||
| 227 | + this.dropCarNum = dropCarNum; | ||
| 228 | + } | ||
| 229 | + | ||
| 230 | + public String getGarHandlerCarCodeEnd() { | ||
| 231 | + return garHandlerCarCodeEnd; | ||
| 232 | + } | ||
| 233 | + | ||
| 234 | + public void setGarHandlerCarCodeEnd(String garHandlerCarCodeEnd) { | ||
| 235 | + this.garHandlerCarCodeEnd = garHandlerCarCodeEnd; | ||
| 236 | + } | ||
| 151 | 237 | ||
| 152 | @TableField(exist = false) | 238 | @TableField(exist = false) |
| 153 | private static final long serialVersionUID = 1L; | 239 | private static final long serialVersionUID = 1L; |
trash-garbage/src/main/java/com/trash/garbage/service/impl/GarOrderServiceImpl.java
| @@ -632,8 +632,9 @@ public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder> | @@ -632,8 +632,9 @@ public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder> | ||
| 632 | garOrderMatchAsk.setGarOrderPhone(orderDetailVo.getGarOrderContactTel()); | 632 | garOrderMatchAsk.setGarOrderPhone(orderDetailVo.getGarOrderContactTel()); |
| 633 | garOrderMatchAsk.setGarOrderName(orderDetailVo.getGarOrderContactName()); | 633 | garOrderMatchAsk.setGarOrderName(orderDetailVo.getGarOrderContactName()); |
| 634 | garOrderMatchAsk.setGarOrderNumber(generateAssociationNumber(order.getGarOrderAddress())); | 634 | garOrderMatchAsk.setGarOrderNumber(generateAssociationNumber(order.getGarOrderAddress())); |
| 635 | - garOrderMatchAsk.setGarCreateTime(new Date()); | ||
| 636 | garOrderMatchAsk.setGarOrderId(dto.getGarOrderId()); | 635 | garOrderMatchAsk.setGarOrderId(dto.getGarOrderId()); |
| 636 | + garOrderMatchAsk.setGarOrderTime(order.getGarCreateTime()); | ||
| 637 | + garOrderMatchAsk.setDropCarNum(order.getGarRealCarCount()); | ||
| 637 | 638 | ||
| 638 | //获取处置场所 | 639 | //获取处置场所 |
| 639 | List<GarOrderMatchDisposal> disposalList = garOrderMatchDisposalService.queryObjByOrderId(dto.getGarOrderId()); | 640 | List<GarOrderMatchDisposal> disposalList = garOrderMatchDisposalService.queryObjByOrderId(dto.getGarOrderId()); |
| @@ -647,6 +648,7 @@ public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder> | @@ -647,6 +648,7 @@ public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder> | ||
| 647 | garOrderMatchAsk.setDropPointId(Integer.parseInt(dropPointInfoList.get(0).getId().toString())); | 648 | garOrderMatchAsk.setDropPointId(Integer.parseInt(dropPointInfoList.get(0).getId().toString())); |
| 648 | garOrderMatchAsk.setDropPointName(dropPointInfoList.get(0).getDropPointName()); | 649 | garOrderMatchAsk.setDropPointName(dropPointInfoList.get(0).getDropPointName()); |
| 649 | } | 650 | } |
| 651 | + garOrderMatchAsk.setDropAddress(order.getGarOrderAddress()+order.getGarOrderAddressDetails()); | ||
| 650 | garOrderMatchAsk.setGarCreateBy(dto.getDriver()); | 652 | garOrderMatchAsk.setGarCreateBy(dto.getDriver()); |
| 651 | askService.save(garOrderMatchAsk); | 653 | askService.save(garOrderMatchAsk); |
| 652 | } | 654 | } |
| @@ -660,9 +662,12 @@ public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder> | @@ -660,9 +662,12 @@ public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder> | ||
| 660 | if(garOrderMatchAsk.getGarOrderType()==null){ | 662 | if(garOrderMatchAsk.getGarOrderType()==null){ |
| 661 | //判断车辆上传装车图片时是否在投放点区域内 | 663 | //判断车辆上传装车图片时是否在投放点区域内 |
| 662 | garOrderAssociationServiceAsync.isWithinDropPointCoordinates(dto.getCarPlate(), garOrderMatchAsk, dto); | 664 | garOrderAssociationServiceAsync.isWithinDropPointCoordinates(dto.getCarPlate(), garOrderMatchAsk, dto); |
| 665 | + garOrderMatchAsk.setGarCreateTime(new Date()); | ||
| 666 | + askService.updateById(garOrderMatchAsk); | ||
| 663 | break; | 667 | break; |
| 664 | } | 668 | } |
| 665 | } | 669 | } |
| 670 | + | ||
| 666 | } | 671 | } |
| 667 | 672 | ||
| 668 | // //上传装车图片生成订单关联台账,卸车图片结束订单关联台账 | 673 | // //上传装车图片生成订单关联台账,卸车图片结束订单关联台账 |
| @@ -1479,6 +1484,7 @@ public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder> | @@ -1479,6 +1484,7 @@ public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder> | ||
| 1479 | BeanUtils.copyProperties(dto, garOrderMatchAsk); | 1484 | BeanUtils.copyProperties(dto, garOrderMatchAsk); |
| 1480 | garOrderMatchAsk.setGarUpdateBy(dto.getGarOrderHandlerName()); | 1485 | garOrderMatchAsk.setGarUpdateBy(dto.getGarOrderHandlerName()); |
| 1481 | garOrderMatchAsk.setGarUpdateTime(new Date()); | 1486 | garOrderMatchAsk.setGarUpdateTime(new Date()); |
| 1487 | + garOrderMatchAsk.setGarHandlerCarCodeEnd(dto.getGarHandlerCarCode()); | ||
| 1482 | garOrderAssociationServiceAsync.isWithinDisposal(dto.getGarHandlerCarCode(), garOrderMatchAsk, dto); | 1488 | garOrderAssociationServiceAsync.isWithinDisposal(dto.getGarHandlerCarCode(), garOrderMatchAsk, dto); |
| 1483 | askService.updateById(garOrderMatchAsk); | 1489 | askService.updateById(garOrderMatchAsk); |
| 1484 | // 保存图片url | 1490 | // 保存图片url |
trash-ui/package.json
| @@ -50,6 +50,7 @@ | @@ -50,6 +50,7 @@ | ||
| 50 | "file-saver": "2.0.1", | 50 | "file-saver": "2.0.1", |
| 51 | "fuse.js": "3.4.4", | 51 | "fuse.js": "3.4.4", |
| 52 | "gcoord": "^1.0.5", | 52 | "gcoord": "^1.0.5", |
| 53 | + "html2pdf.js": "^0.10.3", | ||
| 53 | "husky": "^8.0.3", | 54 | "husky": "^8.0.3", |
| 54 | "js-beautify": "1.10.2", | 55 | "js-beautify": "1.10.2", |
| 55 | "js-cookie": "2.2.0", | 56 | "js-cookie": "2.2.0", |
trash-ui/src/App.vue
| @@ -9,3 +9,23 @@ export default { | @@ -9,3 +9,23 @@ export default { | ||
| 9 | name: 'App' | 9 | name: 'App' |
| 10 | } | 10 | } |
| 11 | </script> | 11 | </script> |
| 12 | +<style lang="scss" scoped> | ||
| 13 | +/* 隐藏所有 Element UI 的 overlay、按钮、背景等 */ | ||
| 14 | +@media print { | ||
| 15 | + body * { | ||
| 16 | + visibility: hidden; | ||
| 17 | + } | ||
| 18 | + /* 只显示我们的 printArea 里内容 */ | ||
| 19 | + [ref="printArea"], [ref="printArea"] * { | ||
| 20 | + visibility: visible; | ||
| 21 | + } | ||
| 22 | + /* 把它们拉到页面顶端 */ | ||
| 23 | + [ref="printArea"] { | ||
| 24 | + position: absolute; | ||
| 25 | + top: 0; | ||
| 26 | + left: 0; | ||
| 27 | + width: 100%; | ||
| 28 | + } | ||
| 29 | +} | ||
| 30 | + | ||
| 31 | +</style> |
trash-ui/src/views/ask/ask/index.vue
| @@ -128,7 +128,12 @@ | @@ -128,7 +128,12 @@ | ||
| 128 | </template> | 128 | </template> |
| 129 | </el-table-column> | 129 | </el-table-column> |
| 130 | <el-table-column label="接收量(吨)" align="center" prop="garReceptionQuantity" /> | 130 | <el-table-column label="接收量(吨)" align="center" prop="garReceptionQuantity" /> |
| 131 | - <el-table-column label="趟次类型" align="center" prop="garOrderType" /> | 131 | + <el-table-column label="趟次类型" align="center" prop="garOrderType" > |
| 132 | + <template slot-scope="scope"> | ||
| 133 | + <span v-if="scope.row.garOrderType == 0">正常趟次</span> | ||
| 134 | + <span v-if="scope.row.garOrderType == 1">异常趟次</span> | ||
| 135 | + </template> | ||
| 136 | + </el-table-column> | ||
| 132 | <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | 137 | <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> |
| 133 | <template slot-scope="scope"> | 138 | <template slot-scope="scope"> |
| 134 | <el-button | 139 | <el-button |
| @@ -149,142 +154,107 @@ | @@ -149,142 +154,107 @@ | ||
| 149 | /> | 154 | /> |
| 150 | 155 | ||
| 151 | <!-- 添加或修改趟次关联台账对话框 --> | 156 | <!-- 添加或修改趟次关联台账对话框 --> |
| 152 | - <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body> | ||
| 153 | - <el-form ref="form" :model="form" :rules="rules" label-width="100px"> | ||
| 154 | - <el-row> | ||
| 155 | - <el-col :span="12"> | ||
| 156 | - <el-form-item label="订单 id" prop="garOrderId"> | ||
| 157 | - <el-input v-model="form.garOrderId" placeholder="请输入订单 id" /> | ||
| 158 | - </el-form-item> | ||
| 159 | - </el-col> | ||
| 160 | - <el-col :span="12"> | ||
| 161 | - <el-form-item label="订单编号" prop="garOrderNumber"> | ||
| 162 | - <el-input v-model="form.garOrderNumber" placeholder="请输入订单编号" /> | ||
| 163 | - </el-form-item> | ||
| 164 | - </el-col> | ||
| 165 | - </el-row> | ||
| 166 | - <el-row> | ||
| 167 | - <el-col :span="12"> | ||
| 168 | - <el-form-item label="运输驾驶员手机号" prop="garOrderHandlerTel"> | ||
| 169 | - <el-input v-model="form.garOrderHandlerTel" placeholder="请输入运输驾驶员手机号" /> | ||
| 170 | - </el-form-item> | ||
| 171 | - </el-col> | ||
| 172 | - <el-col :span="12"> | ||
| 173 | - <el-form-item label="运输驾驶员" prop="garOrderHandlerName"> | ||
| 174 | - <el-input v-model="form.garOrderHandlerName" placeholder="请输入运输驾驶员" /> | ||
| 175 | - </el-form-item> | ||
| 176 | - </el-col> | ||
| 177 | - </el-row> | ||
| 178 | - <el-row> | ||
| 179 | - <el-col :span="12"> | ||
| 180 | - <el-form-item label="车辆类型" prop="garOrderContainerVolume"> | ||
| 181 | - <el-input v-model="form.garOrderContainerVolume" placeholder="请输入车辆类型" /> | ||
| 182 | - </el-form-item> | ||
| 183 | - </el-col> | ||
| 184 | - <el-col :span="12"> | ||
| 185 | - <el-form-item label="车牌号" prop="garHandlerCarCode"> | ||
| 186 | - <el-input v-model="form.garHandlerCarCode" placeholder="请输入车牌号" /> | ||
| 187 | - </el-form-item> | ||
| 188 | - </el-col> | ||
| 189 | - </el-row> | ||
| 190 | - <el-row> | ||
| 191 | - <el-col :span="12"> | ||
| 192 | - <el-form-item label="公司名称" prop="garOrderHandlerCompanyName"> | ||
| 193 | - <el-input v-model="form.garOrderHandlerCompanyName" placeholder="请输入公司名称" /> | ||
| 194 | - </el-form-item> | ||
| 195 | - </el-col> | ||
| 196 | - <el-col :span="12"> | ||
| 197 | - <el-form-item label="生成时间" prop="garCreateTime"> | ||
| 198 | - <el-date-picker clearable size="small" style="width: 100%" | ||
| 199 | - v-model="form.garCreateTime" | ||
| 200 | - type="date" | ||
| 201 | - value-format="yyyy-MM-dd HH:mm:ss" | ||
| 202 | - placeholder="选择公司名称"> | ||
| 203 | - </el-date-picker> | ||
| 204 | - </el-form-item> | ||
| 205 | - </el-col> | ||
| 206 | - </el-row> | ||
| 207 | - <el-row> | ||
| 208 | - <el-col :span="12"> | ||
| 209 | - <el-form-item label="接收时间" prop="garUpdateTime"> | ||
| 210 | - <el-date-picker clearable size="small" style="width: 100%" | ||
| 211 | - v-model="form.garUpdateTime" | ||
| 212 | - type="date" | ||
| 213 | - value-format="yyyy-MM-dd HH:mm:ss" | ||
| 214 | - placeholder="选择公司名称"> | ||
| 215 | - </el-date-picker> | ||
| 216 | - </el-form-item> | ||
| 217 | - </el-col> | ||
| 218 | - <el-col :span="12"> | ||
| 219 | - <el-form-item label="重量" prop="garCarryingWeight"> | ||
| 220 | - <el-input v-model="form.garCarryingWeight" placeholder="请输入重量" /> | ||
| 221 | - </el-form-item> | ||
| 222 | - </el-col> | ||
| 223 | - </el-row> | ||
| 224 | - <el-row> | ||
| 225 | - <el-col :span="12"> | ||
| 226 | - <el-form-item label="接收量" prop="garReceptionQuantity"> | ||
| 227 | - <el-input v-model="form.garReceptionQuantity" placeholder="请输入接收量" /> | ||
| 228 | - </el-form-item> | ||
| 229 | - </el-col> | ||
| 230 | - <el-col :span="12"> | ||
| 231 | - <el-form-item label="投放点" prop="dropPointName"> | ||
| 232 | - <el-input v-model="form.dropPointName" placeholder="请输入投放点" /> | ||
| 233 | - </el-form-item> | ||
| 234 | - </el-col> | ||
| 235 | - </el-row> | ||
| 236 | - <el-row> | ||
| 237 | - <el-col :span="12"> | ||
| 238 | - <el-form-item label="趟次类型" prop="garOrderType"> | ||
| 239 | - <el-select v-model="form.garOrderType" placeholder="请选择趟次类型0=正常趟次,1=异常趟次" style="width: 100%"> | ||
| 240 | - <el-option label="正常趟次" value="0" /> | ||
| 241 | - <el-option label="异常趟次" value="1" /> | ||
| 242 | - </el-select> | ||
| 243 | - </el-form-item> | ||
| 244 | - </el-col> | ||
| 245 | - <el-col :span="12"> | ||
| 246 | - <el-form-item label="处理场所" prop="disposalSiteName"> | ||
| 247 | - <el-input v-model="form.disposalSiteName" placeholder="请输入处理场所" /> | ||
| 248 | - </el-form-item> | ||
| 249 | - </el-col> | ||
| 250 | - </el-row> | ||
| 251 | - <el-row> | ||
| 252 | - <el-col :span="12"> | 157 | + <el-dialog |
| 158 | + :title="title" | ||
| 159 | + :visible.sync="open" | ||
| 160 | + width="800px" | ||
| 161 | + ref="myDialog" | ||
| 162 | + :show-close="false" | ||
| 163 | + append-to-body | ||
| 164 | + > | ||
| 165 | + | ||
| 166 | + <div style="overflow-x:auto;" ref="printArea"> | ||
| 167 | + <h1 style="text-align:center;">装修垃圾收运处电子联单</h1> | ||
| 168 | + <div style="margin-bottom: 10px; font-size: 18px"> | ||
| 169 | + <span>联单编号:<span style="color:red;">{{ form.garOrderNumber }}</span></span> | ||
| 170 | + </div> | ||
| 171 | + <table | ||
| 172 | + border="1" | ||
| 173 | + cellspacing="0" | ||
| 174 | + cellpadding="8" | ||
| 175 | + style="width: 100%; border-collapse: collapse; font-size: 16px; text-align: left;" | ||
| 176 | + > | ||
| 177 | + <!-- 投放端信息 分隔 --> | ||
| 178 | + <tr> | ||
| 179 | + <td colspan="4" style="background:#f5f7fa; font-weight:600;"> | ||
| 180 | + 投放端信息 | ||
| 181 | + </td> | ||
| 182 | + </tr> | ||
| 183 | + <tr> | ||
| 184 | + <td style="width:20%;">投放人名称</td> | ||
| 185 | + <td style="width:30%;">{{ form.garOrderName || '-' }}</td> | ||
| 186 | + <td style="width:20%;">订单时间</td> | ||
| 187 | + <td style="width:30%;">{{ form.garOrderTime || '-' }}</td> | ||
| 188 | + </tr> | ||
| 189 | + <tr> | ||
| 190 | + <td>联系电话</td> | ||
| 191 | + <td>{{ form.garOrderPhone || '-' }}</td> | ||
| 192 | + <td>车次</td> | ||
| 193 | + <td>{{ form.dropCarNum || '-' }}</td> | ||
| 194 | + </tr> | ||
| 195 | + <tr> | ||
| 196 | + <td>投放地址</td> | ||
| 197 | + <td colspan="3">{{ form.dropAddress || '-' }}</td> | ||
| 198 | + </tr> | ||
| 199 | + | ||
| 200 | + <!-- 运输端信息 分隔 --> | ||
| 201 | + <tr> | ||
| 202 | + <td colspan="4" style="background:#f5f7fa; font-weight:600;"> | ||
| 203 | + 运输端信息 | ||
| 204 | + </td> | ||
| 205 | + </tr> | ||
| 206 | + <tr> | ||
| 207 | + <td>运输单位</td> | ||
| 208 | + <td>{{ form.garOrderHandlerCompanyName || '-' }}</td> | ||
| 209 | + <td>运输时间</td> | ||
| 210 | + <td>{{ form.garCreateTime || '-' }}</td> | ||
| 211 | + </tr> | ||
| 212 | + <tr> | ||
| 213 | + <td>车牌号</td> | ||
| 214 | + <td>{{ form.garHandlerCarCode || '-' }}</td> | ||
| 215 | + <td>驾驶员</td> | ||
| 216 | + <td>{{ form.garOrderHandlerName || '-' }}</td> | ||
| 217 | + </tr> | ||
| 253 | 218 | ||
| 254 | - </el-col> | ||
| 255 | - <el-col :span="12"> | 219 | + <!-- 处置端信息 分隔 --> |
| 220 | + <tr> | ||
| 221 | + <td colspan="4" style="background:#f5f7fa; font-weight:600;"> | ||
| 222 | + 处置端信息 | ||
| 223 | + </td> | ||
| 224 | + </tr> | ||
| 225 | + <tr> | ||
| 226 | + <td>处置场名称</td> | ||
| 227 | + <td>{{ form.disposalSiteName || '-' }}</td> | ||
| 228 | + <td>接收时间</td> | ||
| 229 | + <td>{{ form.garUpdateTime || '-' }}</td> | ||
| 230 | + </tr> | ||
| 231 | + <tr> | ||
| 232 | + <td>接收车牌</td> | ||
| 233 | + <td>{{ form.garHandlerCarCodeEnd || '-' }}</td> | ||
| 234 | + <td>接收量(吨)</td> | ||
| 235 | + <td>{{ form.garReceptionQuantity || '-' }}</td> | ||
| 236 | + </tr> | ||
| 256 | 237 | ||
| 257 | - </el-col> | ||
| 258 | - </el-row> | ||
| 259 | - <el-row> | ||
| 260 | - <el-col :span="12"> | ||
| 261 | - <el-form-item label="下单手机号" prop="garOrderPhone"> | ||
| 262 | - <el-input v-model="form.garOrderPhone" placeholder="请输入下单手机号" /> | ||
| 263 | - </el-form-item> | ||
| 264 | - </el-col> | ||
| 265 | - <el-col :span="12"> | ||
| 266 | - <el-form-item label="下单人" prop="garOrderName"> | ||
| 267 | - <el-input v-model="form.garOrderName" placeholder="请输入下单人" /> | ||
| 268 | - </el-form-item> | ||
| 269 | - </el-col> | ||
| 270 | - </el-row> | ||
| 271 | - <el-row> | ||
| 272 | - <el-col> | ||
| 273 | - <el-form-item label="备注" prop="garRemark"> | ||
| 274 | - <el-input v-model="form.garRemark" placeholder="请输入备注" /> | ||
| 275 | - </el-form-item> | ||
| 276 | - </el-col> | ||
| 277 | - </el-row> | ||
| 278 | - </el-form> | ||
| 279 | - <div slot="footer" class="dialog-footer"> | ||
| 280 | - <el-button @click="cancel">取 消</el-button> | 238 | + <!-- 备注 --> |
| 239 | + <tr> | ||
| 240 | + <td>备注</td> | ||
| 241 | + <td colspan="3">{{ form.garRemark || '-' }}</td> | ||
| 242 | + </tr> | ||
| 243 | + </table> | ||
| 281 | </div> | 244 | </div> |
| 245 | + | ||
| 246 | + <template #footer> | ||
| 247 | + <el-button type="primary" @click="handlePrint" v-show="isPrint">打印</el-button> | ||
| 248 | + <el-button type="primary" @click="exportToPDF" v-show="isPrint">导出</el-button> | ||
| 249 | + <el-button @click="cancel" v-show="isPrint">取 消</el-button> | ||
| 250 | + </template> | ||
| 282 | </el-dialog> | 251 | </el-dialog> |
| 283 | </div> | 252 | </div> |
| 284 | </template> | 253 | </template> |
| 285 | 254 | ||
| 286 | <script> | 255 | <script> |
| 287 | import { listAsk, getAsk, delAsk, addAsk, updateAsk, exportAsk } from "@/api/ask/ask"; | 256 | import { listAsk, getAsk, delAsk, addAsk, updateAsk, exportAsk } from "@/api/ask/ask"; |
| 257 | +import html2pdf from 'html2pdf.js' | ||
| 288 | 258 | ||
| 289 | export default { | 259 | export default { |
| 290 | name: "Ask", | 260 | name: "Ask", |
| @@ -340,13 +310,44 @@ export default { | @@ -340,13 +310,44 @@ export default { | ||
| 340 | form: {}, | 310 | form: {}, |
| 341 | // 表单校验 | 311 | // 表单校验 |
| 342 | rules: { | 312 | rules: { |
| 343 | - } | 313 | + }, |
| 314 | + isPrint: false | ||
| 344 | }; | 315 | }; |
| 345 | }, | 316 | }, |
| 346 | created() { | 317 | created() { |
| 347 | this.getList(); | 318 | this.getList(); |
| 348 | }, | 319 | }, |
| 349 | methods: { | 320 | methods: { |
| 321 | + exportToPDF() { | ||
| 322 | + const element = this.$refs.printArea; | ||
| 323 | + | ||
| 324 | + const opt = { | ||
| 325 | + margin: [0.4, 0.2], // 上下、左右 页边距(单位:inch) | ||
| 326 | + filename: `装修垃圾收运处电子联单_${this.form.garOrderNumber}.pdf`, | ||
| 327 | + image: { type: 'jpeg', quality: 0.98 }, | ||
| 328 | + html2canvas: { scale: 2, useCORS: true }, | ||
| 329 | + jsPDF: { unit: 'in', format: 'a4', orientation: 'portrait' } | ||
| 330 | + }; | ||
| 331 | + | ||
| 332 | + // 调用 html2pdf,自动生成并下载 | ||
| 333 | + html2pdf() | ||
| 334 | + .set(opt) | ||
| 335 | + .from(element) | ||
| 336 | + .save() | ||
| 337 | + .catch(err => { | ||
| 338 | + console.error('导出 PDF 失败:', err); | ||
| 339 | + }); | ||
| 340 | + }, | ||
| 341 | + handlePrint() { | ||
| 342 | + // 先关闭 el-dialog 的 modal 遮罩,防止遮罩也一起打印 | ||
| 343 | + this.$refs.myDialog.hide(); | ||
| 344 | + this.isPrint = false; | ||
| 345 | + // 等 Vue 更新完后再调用 | ||
| 346 | + this.$nextTick(() => { | ||
| 347 | + window.print(); | ||
| 348 | + this.isPrint = true; | ||
| 349 | + }); | ||
| 350 | + }, | ||
| 350 | /** 查询趟次关联台账列表 */ | 351 | /** 查询趟次关联台账列表 */ |
| 351 | getList() { | 352 | getList() { |
| 352 | this.loading = true; | 353 | this.loading = true; |
| @@ -414,7 +415,8 @@ export default { | @@ -414,7 +415,8 @@ export default { | ||
| 414 | getAsk(garId).then(response => { | 415 | getAsk(garId).then(response => { |
| 415 | this.form = response.data; | 416 | this.form = response.data; |
| 416 | this.open = true; | 417 | this.open = true; |
| 417 | - this.title = "修改趟次关联台账"; | 418 | + this.isPrint = true; |
| 419 | + this.title = ""; | ||
| 418 | }); | 420 | }); |
| 419 | }, | 421 | }, |
| 420 | /** 导出按钮操作 */ | 422 | /** 导出按钮操作 */ |
| @@ -433,3 +435,32 @@ export default { | @@ -433,3 +435,32 @@ export default { | ||
| 433 | } | 435 | } |
| 434 | }; | 436 | }; |
| 435 | </script> | 437 | </script> |
| 438 | +<style lang="scss" scoped> | ||
| 439 | +.table-container { | ||
| 440 | + overflow-x: auto; | ||
| 441 | + padding: 16px; | ||
| 442 | + background: #fff; | ||
| 443 | + table { | ||
| 444 | + width: 100%; | ||
| 445 | + border-collapse: collapse; | ||
| 446 | + th, td { | ||
| 447 | + border: 1px solid #333; | ||
| 448 | + padding: 8px; | ||
| 449 | + vertical-align: middle; | ||
| 450 | + font-size: 14px; | ||
| 451 | + } | ||
| 452 | + th { | ||
| 453 | + background: #f0f0f0; | ||
| 454 | + font-weight: 600; | ||
| 455 | + } | ||
| 456 | + tr:nth-of-type(3), | ||
| 457 | + tr:nth-of-type(6), | ||
| 458 | + tr:nth-of-type(9) { | ||
| 459 | + td { | ||
| 460 | + background: #fafafa; | ||
| 461 | + font-weight: 600; | ||
| 462 | + } | ||
| 463 | + } | ||
| 464 | + } | ||
| 465 | +} | ||
| 466 | +</style> |