zhanbo.xu

feat: 根据需求优化和开发

...@@ -292,3 +292,24 @@ export function getTotalDocumentsLevelLog(data) { ...@@ -292,3 +292,24 @@ export function getTotalDocumentsLevelLog(data) {
292 data: data, 292 data: data,
293 }); 293 });
294 } 294 }
295 +
296 +// 分单级 根据提运单号获取操作日志
297 +export function getOperationLogByLogisticsNo(data) {
298 + return request({
299 + url:
300 + "/bus-customer/declareData/getOperationLogByLogisticsNo/" +
301 + data.LogisticsNo,
302 + method: "get",
303 + data: data,
304 + });
305 +}
306 +
307 +// ​/declareData​/getOperationLogByBillNo​/{billNo}
308 +// 总 根据提运单号获取操作日志
309 +export function getOperationLogByBillNo(data) {
310 + return request({
311 + url: "/bus-customer/declareData/getOperationLogByBillNo/" + data.billNo,
312 + method: "get",
313 + data: data,
314 + });
315 +}
......
...@@ -147,24 +147,7 @@ ...@@ -147,24 +147,7 @@
147 离境单申报 147 离境单申报
148 </el-button> 148 </el-button>
149 </div> 149 </div>
150 - <section style="position: fixed; top: 35%; right: 10%"> 150 +
151 - <TablePopover
152 - ref="allLogDataStatusPopover"
153 - dataKey="allLogDataStatus"
154 - idKey="declareId"
155 - :parentDom="$refs.entryTable"
156 - :receiptDataHead="logDataHead"
157 - :rowData="selectedLogRow"
158 - :tableData="tableData"
159 - @popoverChange="popoverChange"
160 - @popoverClose="popoverClose"
161 - >
162 - <div slot="title">
163 - <span style="font-weight: 700; color: #515a6e">提运单号:</span>
164 - {{ selectedLogRow.billNo }}
165 - </div>
166 - </TablePopover>
167 - </section>
168 <Table 151 <Table
169 class="fedexDetialTable fedexSreachTable" 152 class="fedexDetialTable fedexSreachTable"
170 ref="entryTable" 153 ref="entryTable"
...@@ -335,6 +318,18 @@ ...@@ -335,6 +318,18 @@
335 :selected="selected" 318 :selected="selected"
336 @close="timeClose" 319 @close="timeClose"
337 /> 320 />
321 + <!-- 日志 -->
322 + <section style="position: fixed; top: 35%; right: 10%">
323 + <PopoverComponent
324 + :receiptDataHead="logDataHead"
325 + :optionsColumn="optionsColumn"
326 + :logFunction="getTotalDocumentsLevelLog"
327 + :optionsFunction="getOperationLogByBillNo"
328 + :optionsVisible="optionsVisible"
329 + :rowData="selectedLogRow"
330 + @close="popperClose"
331 + />
332 + </section>
338 </div> 333 </div>
339 </template> 334 </template>
340 335
...@@ -346,11 +341,13 @@ import { ...@@ -346,11 +341,13 @@ import {
346 getLogisticsReceipt, 341 getLogisticsReceipt,
347 getTotalReceipt, 342 getTotalReceipt,
348 getTotalDocumentsLevelLog, 343 getTotalDocumentsLevelLog,
344 + getOperationLogByBillNo,
349 } from "@/api/declareData-api.js"; 345 } from "@/api/declareData-api.js";
350 import DialogVue from "./dialog.vue"; 346 import DialogVue from "./dialog.vue";
351 import DataPreview from "../reportingData/data-preview.vue"; 347 import DataPreview from "../reportingData/data-preview.vue";
352 import TimeDialog from "../reportingData/time-dialog.vue"; 348 import TimeDialog from "../reportingData/time-dialog.vue";
353 import { getCurrUserPortInfo } from "@/api/system/user.js"; 349 import { getCurrUserPortInfo } from "@/api/system/user.js";
350 +import PopoverComponent from "./popover-component.vue";
354 351
355 export default { 352 export default {
356 name: "SupervisePlaceManage", 353 name: "SupervisePlaceManage",
...@@ -358,13 +355,12 @@ export default { ...@@ -358,13 +355,12 @@ export default {
358 DialogVue, 355 DialogVue,
359 DataPreview, 356 DataPreview,
360 TimeDialog, 357 TimeDialog,
358 + PopoverComponent,
361 }, 359 },
362 data() { 360 data() {
363 return { 361 return {
364 portList: [], 362 portList: [],
365 activePortType: false, 363 activePortType: false,
366 - // 控制日志弹窗的显示和隐藏
367 - allLogDataStatusPopoverType: false,
368 // 存储选中的日志数据 364 // 存储选中的日志数据
369 selectedLogRow: {}, 365 selectedLogRow: {},
370 selected: [], 366 selected: [],
...@@ -491,6 +487,32 @@ export default { ...@@ -491,6 +487,32 @@ export default {
491 align: "left", 487 align: "left",
492 }, 488 },
493 ], 489 ],
490 + optionsColumn: [
491 + {
492 + name: "操作类型",
493 + value: "operationType",
494 + width: "",
495 + align: "left",
496 + },
497 + {
498 + name: "提运单号",
499 + value: "billNo",
500 + width: "",
501 + align: "left",
502 + },
503 + {
504 + name: "物流运单编号",
505 + value: "logisticsNo",
506 + width: "",
507 + align: "left",
508 + },
509 + {
510 + name: "修改内容",
511 + value: "content",
512 + width: "",
513 + align: "left",
514 + },
515 + ],
494 loadings: { 516 loadings: {
495 sreachLoading: false, 517 sreachLoading: false,
496 declaration: false, 518 declaration: false,
...@@ -502,6 +524,8 @@ export default { ...@@ -502,6 +524,8 @@ export default {
502 dataPreviewTitle: "", 524 dataPreviewTitle: "",
503 // 离境单申报 525 // 离境单申报
504 timeVisible: false, 526 timeVisible: false,
527 + // 获取操作日志
528 + optionsVisible: false,
505 }; 529 };
506 }, 530 },
507 created() { 531 created() {
...@@ -517,26 +541,32 @@ export default { ...@@ -517,26 +541,32 @@ export default {
517 this.searchPortDictData(); 541 this.searchPortDictData();
518 }, 542 },
519 methods: { 543 methods: {
544 + getTotalDocumentsLevelLog: getTotalDocumentsLevelLog,
545 + getOperationLogByBillNo: getOperationLogByBillNo,
520 //申报日志 546 //申报日志
547 + popperClose() {
548 + this.optionsVisible = false;
549 + },
521 showTotalLog(row) { 550 showTotalLog(row) {
522 - this.$store.state.viewOption.loadingDatas = true; 551 + // this.$store.state.viewOption.loadingDatas = true;
523 this.selectedLogRow = row; 552 this.selectedLogRow = row;
524 - this.$set(row, "logLoading", true); 553 + this.optionsVisible = true;
554 + // this.$set(row, "logLoading", true);
525 555
526 - this.receiptApi(row.billNo, "allLogDataStatus").then((logData) => { 556 + // this.receiptApi(row.billNo, "allLogDataStatus").then((logData) => {
527 - this.$set(row, "popoverData", logData); 557 + // this.$set(row, "popoverData", logData);
528 - if (!this.selectedLogRow.popoverData.length) { 558 + // if (!this.selectedLogRow.popoverData.length) {
529 - this.$store.state.viewOption.loadingDatas = false; 559 + // this.$store.state.viewOption.loadingDatas = false;
530 - } 560 + // }
531 561
532 - // 手动触发状态更新 562 + // // 手动触发状态更新
533 - this.$nextTick(() => { 563 + // this.$nextTick(() => {
534 - // 强制设置弹窗状态为true 564 + // // 强制设置弹窗状态为true
535 - row.allLogDataStatusPopoverType = true; 565 + // row.allLogDataStatusPopoverType = true;
536 - // 强制更新表格 566 + // // 强制更新表格
537 - this.tableData = [...this.tableData]; 567 + // this.tableData = [...this.tableData];
538 - }); 568 + // });
539 - }); 569 + // });
540 }, 570 },
541 //获取口岸子字典 571 //获取口岸子字典
542 searchPortDictData() { 572 searchPortDictData() {
...@@ -665,7 +695,7 @@ export default { ...@@ -665,7 +695,7 @@ export default {
665 item.totalReceiptStatusPopoverType = false; 695 item.totalReceiptStatusPopoverType = false;
666 item.popoverData = []; 696 item.popoverData = [];
667 }); 697 });
668 - this.selectedLogRow.allLogDataStatusPopoverType = false; 698 +
669 this.$refs.entryTable.$refs.tables.$refs.bodyWrapper.style.overflowY = 699 this.$refs.entryTable.$refs.tables.$refs.bodyWrapper.style.overflowY =
670 "auto"; 700 "auto";
671 }, 701 },
...@@ -715,20 +745,6 @@ export default { ...@@ -715,20 +745,6 @@ export default {
715 console.log(err); 745 console.log(err);
716 reject(); 746 reject();
717 }); 747 });
718 - } else if (type == "allLogDataStatus") {
719 - let objVal = { billNo: billNo };
720 - getTotalDocumentsLevelLog(objVal)
721 - .then((res) => {
722 - if (res.code === "200") {
723 - resolve(res.data);
724 - } else {
725 - reject();
726 - }
727 - })
728 - .catch((err) => {
729 - console.log(err);
730 - reject();
731 - });
732 } 748 }
733 }); 749 });
734 }, 750 },
...@@ -753,7 +769,6 @@ export default { ...@@ -753,7 +769,6 @@ export default {
753 this.$refs.arrivalInReceiptStatusPopover.tableLoading = false; //运抵单回执 769 this.$refs.arrivalInReceiptStatusPopover.tableLoading = false; //运抵单回执
754 this.$refs.logisticsDepartureReceiptStatusPopover.tableLoading = false; // 离境单回执 770 this.$refs.logisticsDepartureReceiptStatusPopover.tableLoading = false; // 离境单回执
755 this.$refs.totalReceiptStatusPopover.tableLoading = false; 771 this.$refs.totalReceiptStatusPopover.tableLoading = false;
756 - this.$refs.allLogDataStatusPopoverType = false;
757 }); 772 });
758 }); 773 });
759 }, 774 },
......
1 +<template>
2 + <el-popover
3 + popper-class="arrival-declare-popper"
4 + placement="left"
5 + :visible-arrow="false"
6 + title=""
7 + width="750"
8 + trigger="manual"
9 + v-model="popperVisible"
10 + >
11 + <div style="position: absolute; right: 10px; z-index: 10">
12 + <i
13 + class="el-icon-close"
14 + style="cursor: pointer; font-size: 20px; font-weight: 700"
15 + @click.stop="popoverClose"
16 + ></i>
17 + </div>
18 + <el-tabs v-model="tabsKey" @tab-click="handleClick">
19 + <el-tab-pane label="回执日志" name="1">
20 + <div>
21 + <span style="font-weight: 700; color: #515a6e">提运单号:</span>
22 + {{ rowData.billNo }}
23 + </div>
24 + <el-table
25 + :pagination="false"
26 + :border="true"
27 + tooltip-effect="dark"
28 + max-height="300px"
29 + :data="logData"
30 + rowKey="id"
31 + >
32 + <el-table-column
33 + v-for="(item, index) in receiptDataHead"
34 + :key="index"
35 + :prop="item.value"
36 + :label="item.name"
37 + :align="item.align"
38 + :width="item.width"
39 + :show-overflow-tooltip="true"
40 + >
41 + </el-table-column>
42 + </el-table>
43 + </el-tab-pane>
44 + <el-tab-pane label="操作日志" name="2">
45 + <el-table
46 + :pagination="false"
47 + :border="true"
48 + tooltip-effect="dark"
49 + max-height="300px"
50 + :data="optionsData"
51 + rowKey="id"
52 + >
53 + <el-table-column
54 + v-for="(item, index) in optionsColumn"
55 + :key="index"
56 + :prop="item.value"
57 + :label="item.name"
58 + :align="item.align"
59 + :width="item.width"
60 + :show-overflow-tooltip="true"
61 + >
62 + </el-table-column>
63 + </el-table>
64 + </el-tab-pane>
65 + </el-tabs>
66 + <el-button
67 + slot="reference"
68 + type="text"
69 + @click.stop="popoverChange(rowData, dataKey)"
70 + >
71 + <slot name="buttonLabel"></slot>
72 + </el-button>
73 + </el-popover>
74 +</template>
75 +
76 +<script>
77 +export default {
78 + props: {
79 + rowData: {
80 + tpye: Object,
81 + default: null,
82 + },
83 +
84 + receiptDataHead: {
85 + type: Array,
86 + default() {
87 + return [];
88 + },
89 + },
90 + optionsColumn: {
91 + type: Array,
92 + default() {
93 + return [];
94 + },
95 + },
96 + logFunction: {
97 + type: Function,
98 + default: null,
99 + },
100 + optionsFunction: {
101 + type: Function,
102 + default: null,
103 + },
104 + optionsVisible: {
105 + type: Boolean,
106 + default: false,
107 + },
108 + },
109 + data() {
110 + return {
111 + tableLoading: false,
112 + popperVisible: false,
113 + tabsKey: "1",
114 + logData: [],
115 + optionsData: [],
116 + };
117 + },
118 + computed: {},
119 + watch: {
120 + optionsVisible(val) {
121 + if (val) {
122 + this.tabsKey = "1";
123 + this.fetchData();
124 + this.popperVisible = true;
125 + }
126 + },
127 + },
128 +
129 + methods: {
130 + fetchData() {
131 + const { billNo } = this.rowData;
132 + let objVal = { billNo: billNo };
133 + this.logFunction(objVal)
134 + .then((res) => {
135 + if (res.code === "200") {
136 + console.log(res.data);
137 + this.logData = res.data;
138 + }
139 + })
140 + .catch((err) => {
141 + console.log(err);
142 + });
143 + },
144 + // tab点击事件
145 + handleClick(tab, event) {
146 + console.log(tab.name, event);
147 + if (+tab.name === 2) {
148 + const { billNo } = this.rowData;
149 + let objVal = { billNo: billNo };
150 + this.optionsFunction(objVal)
151 + .then((res) => {
152 + if (res.code === "200") {
153 + console.log(res.data);
154 + this.optionsData = res.data;
155 + }
156 + })
157 + .catch((err) => {
158 + console.log(err);
159 + });
160 + }
161 + },
162 + //弹框关闭
163 + popoverClose() {
164 + this.popperVisible = false;
165 + this.$emit("close");
166 + },
167 + //弹框状态改版
168 + popoverChange(data, type) {
169 + console.log(data, type);
170 + this.popoverClose();
171 + let arr = JSON.parse(JSON.stringify(this.tableData));
172 + arr.forEach((item) => {
173 + item.popoverData = [];
174 + if (data[this.idKey] != item[this.idKey]) {
175 + // item[`${type}PopoverLoading`] = false;
176 + item[`${type}PopoverType`] = false;
177 + } else {
178 + // item[`${type}PopoverLoading`] = true;
179 + item[`${type}PopoverType`] = !JSON.parse(
180 + JSON.stringify(item[`${type}PopoverType`])
181 + );
182 + }
183 + });
184 + if (!data[`${type}PopoverType`]) {
185 + this.parentDom.$refs.tables.$refs.bodyWrapper.style.overflowY =
186 + "hidden";
187 + } else {
188 + this.parentDom.$refs.tables.$refs.bodyWrapper.style.overflowY = "auto";
189 + }
190 + this.$emit("popoverChange", {
191 + tableData: arr,
192 + data: data,
193 + type: !data[`${type}PopoverType`],
194 + status: type,
195 + });
196 +
197 + this.$nextTick(() => {
198 + document.getElementsByClassName("el-table__row").forEach((dom1, i) => {
199 + if (i == data.index) {
200 + dom1.classList.add("activeRow");
201 + } else {
202 + dom1.classList.remove("hover-row");
203 + dom1.classList.remove("activeRow");
204 + }
205 + });
206 + let interval = setInterval(() => {
207 + if (
208 + document.getElementsByClassName(`popper${type}${data[this.idKey]}`)
209 + .length == 1
210 + ) {
211 + clearInterval(interval);
212 + }
213 + document
214 + .getElementsByClassName(`popper${type}${data[this.idKey]}`)
215 + .forEach((dom, index) => {
216 + if (index > 0) {
217 + dom.style.display = "none";
218 + dom.remove();
219 + }
220 + });
221 + }, 100);
222 + });
223 + },
224 + },
225 +};
226 +</script>
227 +
228 +<style lang="scss" scoped>
229 +.tableList {
230 + width: 200px;
231 + max-height: 500px;
232 + padding: 5px;
233 + margin: 0;
234 + position: absolute;
235 + bottom: 35px;
236 + right: 0px;
237 + border: 1px solid #ccc;
238 + border-radius: 3%;
239 + background: #fff;
240 + overflow-y: scroll;
241 +}
242 +</style>
...@@ -203,6 +203,25 @@ export default { ...@@ -203,6 +203,25 @@ export default {
203 2 203 2
204 )}%`; 204 )}%`;
205 }, 205 },
206 + // 二次确认
207 + cancelBatchModify(obj) {
208 + modifyWeight(obj)
209 + .then((res) => {
210 + if (res.code === "200") {
211 + this.msgSuccess("修改成功");
212 + this.cancelModify(1);
213 + } else {
214 + this.msgError(res.message);
215 + // this.cancelModify(0);
216 + this.dialogLoading = false;
217 + }
218 + })
219 + .catch((err) => {
220 + console.log(err);
221 + this.alertWarningMsg(err.message);
222 + // this.cancelModify(0);
223 + });
224 + },
206 225
207 formSubmit() { 226 formSubmit() {
208 this.$refs.batchModifyForm.validate((valid) => { 227 this.$refs.batchModifyForm.validate((valid) => {
...@@ -213,21 +232,20 @@ export default { ...@@ -213,21 +232,20 @@ export default {
213 weight: this.weightForm.weight, 232 weight: this.weightForm.weight,
214 }; 233 };
215 console.log("datas==", obj); 234 console.log("datas==", obj);
216 - modifyWeight(obj) 235 + this.$confirm(
217 - .then((res) => { 236 + `是否确认操作[${this.weightForm.billNo}]的重量调整?`,
218 - if (res.code === "200") { 237 + "提示",
219 - this.msgSuccess("修改成功"); 238 + {
220 - this.cancelModify(1); 239 + confirmButtonText: "确定",
221 - } else { 240 + cancelButtonText: "取消",
222 - this.msgError(res.message); 241 + type: "warning",
223 - // this.cancelModify(0); 242 + }
224 - this.dialogLoading = false; 243 + )
225 - } 244 + .then(() => {
245 + this.cancelBatchModify(obj);
226 }) 246 })
227 - .catch((err) => { 247 + .catch(() => {
228 - console.log(err); 248 + this.cancelModify(0);
229 - this.alertWarningMsg(err.message);
230 - // this.cancelModify(0);
231 }); 249 });
232 } else { 250 } else {
233 return false; 251 return false;
......