Commit a8cd92b6c8794f9cbfa131640710df037478fff8

Authored by 2c2c2c
1 parent 53c536e2

电子联单bug 修复,导出联单,打印联单

trash-garbage/src/main/java/com/trash/garbage/pojo/domain/GarOrderMatchAsk.java
... ... @@ -9,6 +9,7 @@ import java.util.Date;
9 9  
10 10 import com.fasterxml.jackson.annotation.JsonFormat;
11 11 import com.trash.common.annotation.Excel;
  12 +import com.trash.common.core.domain.BaseEntity;
12 13 import lombok.Data;
13 14 import lombok.EqualsAndHashCode;
14 15 import lombok.ToString;
... ... @@ -21,7 +22,7 @@ import org.springframework.format.annotation.DateTimeFormat;
21 22 @TableName(value ="gar_order_match_ask")
22 23 @EqualsAndHashCode
23 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 32 /**
32 33 * 订单 id
33 34 */
34   - @Excel(name = "订单 ID")
35 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 67 private String garOrderHandlerTel;
41 68 /**
42 69 * 订单载重
... ... @@ -44,15 +71,18 @@ public class GarOrderMatchAsk implements Serializable {
44 71 private Double garCarryingWeight;
45 72  
46 73 /**
47   - * 接收量
48   - */
49   - private Double garReceptionQuantity;
50   - /**
51 74 * 运输驾驶员
52 75 */
  76 + @Excel(name = "运输驾驶员")
53 77 private String garOrderHandlerName;
54 78  
55 79 /**
  80 + * 车次
  81 + */
  82 + @Excel(name = "车次")
  83 + private int dropCarNum;
  84 +
  85 + /**
56 86 * 公司 id
57 87 */
58 88 private String garOrderHandlerCompanyId;
... ... @@ -64,6 +94,7 @@ public class GarOrderMatchAsk implements Serializable {
64 94 /**
65 95 * 公司名称
66 96 */
  97 + @Excel(name = "公司名称")
67 98 private String garOrderHandlerCompanyName;
68 99  
69 100 /**
... ... @@ -77,19 +108,19 @@ public class GarOrderMatchAsk implements Serializable {
77 108 private String garOrderHandlerId;
78 109  
79 110 /**
80   - *
  111 + * 运输开始时间
81 112 */
82   - @TableField(fill = FieldFill.INSERT)
83 113 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
84 114 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
  115 + @Excel(name = "运输开始时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
85 116 private Date garCreateTime;
86 117  
87 118 /**
88   - *
  119 + * 接收时间
89 120 */
90   - @TableField(fill = FieldFill.INSERT_UPDATE)
91 121 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
92 122 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
  123 + @Excel(name = "接收时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
93 124 private Date garUpdateTime;
94 125  
95 126 /**
... ... @@ -107,9 +138,16 @@ public class GarOrderMatchAsk implements Serializable {
107 138 /**
108 139 * 备注
109 140 */
  141 + @Excel(name = "备注")
110 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 151 * 投放点 id
114 152 */
115 153 private int dropPointId;
... ... @@ -117,12 +155,21 @@ public class GarOrderMatchAsk implements Serializable {
117 155 /**
118 156 * 投放点名称
119 157 */
  158 + @Excel(name = "投放点名称")
120 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 175 * 处置场所 id
... ... @@ -132,22 +179,61 @@ public class GarOrderMatchAsk implements Serializable {
132 179 /**
133 180 * 处置场所
134 181 */
  182 + @Excel(name = "处置场所")
135 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 238 @TableField(exist = false)
153 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 632 garOrderMatchAsk.setGarOrderPhone(orderDetailVo.getGarOrderContactTel());
633 633 garOrderMatchAsk.setGarOrderName(orderDetailVo.getGarOrderContactName());
634 634 garOrderMatchAsk.setGarOrderNumber(generateAssociationNumber(order.getGarOrderAddress()));
635   - garOrderMatchAsk.setGarCreateTime(new Date());
636 635 garOrderMatchAsk.setGarOrderId(dto.getGarOrderId());
  636 + garOrderMatchAsk.setGarOrderTime(order.getGarCreateTime());
  637 + garOrderMatchAsk.setDropCarNum(order.getGarRealCarCount());
637 638  
638 639 //获取处置场所
639 640 List<GarOrderMatchDisposal> disposalList = garOrderMatchDisposalService.queryObjByOrderId(dto.getGarOrderId());
... ... @@ -647,6 +648,7 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt;
647 648 garOrderMatchAsk.setDropPointId(Integer.parseInt(dropPointInfoList.get(0).getId().toString()));
648 649 garOrderMatchAsk.setDropPointName(dropPointInfoList.get(0).getDropPointName());
649 650 }
  651 + garOrderMatchAsk.setDropAddress(order.getGarOrderAddress()+order.getGarOrderAddressDetails());
650 652 garOrderMatchAsk.setGarCreateBy(dto.getDriver());
651 653 askService.save(garOrderMatchAsk);
652 654 }
... ... @@ -660,9 +662,12 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt;
660 662 if(garOrderMatchAsk.getGarOrderType()==null){
661 663 //判断车辆上传装车图片时是否在投放点区域内
662 664 garOrderAssociationServiceAsync.isWithinDropPointCoordinates(dto.getCarPlate(), garOrderMatchAsk, dto);
  665 + garOrderMatchAsk.setGarCreateTime(new Date());
  666 + askService.updateById(garOrderMatchAsk);
663 667 break;
664 668 }
665 669 }
  670 +
666 671 }
667 672  
668 673 // //上传装车图片生成订单关联台账,卸车图片结束订单关联台账
... ... @@ -1479,6 +1484,7 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt;
1479 1484 BeanUtils.copyProperties(dto, garOrderMatchAsk);
1480 1485 garOrderMatchAsk.setGarUpdateBy(dto.getGarOrderHandlerName());
1481 1486 garOrderMatchAsk.setGarUpdateTime(new Date());
  1487 + garOrderMatchAsk.setGarHandlerCarCodeEnd(dto.getGarHandlerCarCode());
1482 1488 garOrderAssociationServiceAsync.isWithinDisposal(dto.getGarHandlerCarCode(), garOrderMatchAsk, dto);
1483 1489 askService.updateById(garOrderMatchAsk);
1484 1490 // 保存图片url
... ...
trash-ui/package.json
... ... @@ -50,6 +50,7 @@
50 50 "file-saver": "2.0.1",
51 51 "fuse.js": "3.4.4",
52 52 "gcoord": "^1.0.5",
  53 + "html2pdf.js": "^0.10.3",
53 54 "husky": "^8.0.3",
54 55 "js-beautify": "1.10.2",
55 56 "js-cookie": "2.2.0",
... ...
trash-ui/src/App.vue
... ... @@ -9,3 +9,23 @@ export default {
9 9 name: 'App'
10 10 }
11 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 128 </template>
129 129 </el-table-column>
130 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 137 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
133 138 <template slot-scope="scope">
134 139 <el-button
... ... @@ -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 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 251 </el-dialog>
283 252 </div>
284 253 </template>
285 254  
286 255 <script>
287 256 import { listAsk, getAsk, delAsk, addAsk, updateAsk, exportAsk } from "@/api/ask/ask";
  257 +import html2pdf from 'html2pdf.js'
288 258  
289 259 export default {
290 260 name: "Ask",
... ... @@ -340,13 +310,44 @@ export default {
340 310 form: {},
341 311 // 表单校验
342 312 rules: {
343   - }
  313 + },
  314 + isPrint: false
344 315 };
345 316 },
346 317 created() {
347 318 this.getList();
348 319 },
349 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 352 getList() {
352 353 this.loading = true;
... ... @@ -414,7 +415,8 @@ export default {
414 415 getAsk(garId).then(response => {
415 416 this.form = response.data;
416 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 435 }
434 436 };
435 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>
... ...