zhanbo.xu

feat: 开发新功能

...@@ -5,7 +5,7 @@ VUE_APP_BASE_ENV = "dev" ...@@ -5,7 +5,7 @@ VUE_APP_BASE_ENV = "dev"
5 5
6 VUE_APP_Version = '1.0.0' 6 VUE_APP_Version = '1.0.0'
7 7
8 -VUE_APP_BASE_URL = 'http://101.132.100.41:7001/EcomExp' 8 +VUE_APP_BASE_URL = 'http://101.132.100.41:7008/EcomExp'
9 # FedEx 在线申报工具/开发环境 9 # FedEx 在线申报工具/开发环境
10 # http://101.132.100.41:7001/EcomExp 10 # http://101.132.100.41:7001/EcomExp
11 VUE_APP_BASE_API = /EcomExp 11 VUE_APP_BASE_API = /EcomExp
......
1 +import request from "@/utils/request";
2 +
3 +/**
4 + * @description 获取配置
5 + * @param {Object} data
6 + * @method GET
7 + */
8 +export function getConfigList(data) {
9 + return request({
10 + url: "/bus-customer/sysConfigCenter/getConfigList",
11 + method: "post",
12 + data,
13 + });
14 +}
15 +
16 +/**
17 + * @description 刷新配置
18 + * */
19 +export function refreshConfig(data) {
20 + return request({
21 + url: `/bus-customer/sysConfigCenter/refreshConfig/${data.id}`,
22 + method: "get",
23 + });
24 +}
25 +
26 +/**
27 + * @description 添加配置
28 + * @param {Object} data
29 + * @method POST
30 + */
31 +export function addConfig(data) {
32 + return request({
33 + url: "/bus-customer/sysConfigCenter/addConfig",
34 + method: "post",
35 + data,
36 + });
37 +}
38 +
39 +/**
40 + * @description 修改配置
41 + * @param {Object} data
42 + * @method POST
43 + */
44 +export function updateConfig(data) {
45 + return request({
46 + url: "/bus-customer/sysConfigCenter/updateConfig",
47 + method: "post",
48 + data,
49 + });
50 +}
...@@ -47,6 +47,21 @@ export function declareDataUpload(data) { ...@@ -47,6 +47,21 @@ export function declareDataUpload(data) {
47 data: { 47 data: {
48 cancellationReason: data.cancellationReason, 48 cancellationReason: data.cancellationReason,
49 declareIds: data.declareIds, 49 declareIds: data.declareIds,
50 + changeFlag: data?.changeFlag || false,
51 + },
52 + });
53 +}
54 +// 删单deleteFlag:true,note:删单原因
55 +// 变更changeFlag:true
56 +export function declareDataUploadNew(data) {
57 + return request({
58 + url: "/bus-customer/declareData/" + data.type,
59 + method: "post",
60 + data: {
61 + declareIds: data.declareIds, //申报id
62 + deleteFlag: data?.deleteFlag || false, // 是否删单
63 + changeFlag: data?.changeFlag || false,
64 + note: data.note || null, // 删单原因
50 }, 65 },
51 }); 66 });
52 } 67 }
......
...@@ -51,3 +51,11 @@ export function getListInfo(logisticsNo) { ...@@ -51,3 +51,11 @@ export function getListInfo(logisticsNo) {
51 method: "get", 51 method: "get",
52 }); 52 });
53 } 53 }
54 +
55 +// name 收发货人名称 搜索模拟回执汇总申报下拉信息
56 +export function searchMockReceiptSummary(data) {
57 + return request({
58 + url: `/bus-customer/mockReceipt/searchMockReceiptSummary?name=${data.name}`,
59 + method: "get",
60 + });
61 +}
......
1 +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1763694170210" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3134" id="mx_n_1763694170211" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M682.666667 0a42.666667 42.666667 0 0 1 25.941333 8.789333l4.266667 3.712 207.061333 207.061334a64 64 0 0 1 18.432 38.954666l0.298667 6.314667V469.333333a42.666667 42.666667 0 0 1-85.034667 4.992L853.333333 469.333333v-128h-192a64 64 0 0 1-63.701333-57.856l-0.298667-6.144v-192h-426.666666v853.333334h256a42.666667 42.666667 0 0 1 42.325333 37.674666l0.298667 4.992a42.666667 42.666667 0 0 1-37.674667 42.368l-4.992 0.298667H149.333333a64 64 0 0 1-63.701333-57.856l-0.298667-6.144v-896a64 64 0 0 1 57.856-63.701333l6.144-0.298667H682.666667z m153.045333 256l-153.045333-152.96V256h153.045333z" fill="#191919" p-id="3135"></path><path d="M298.666667 341.333333m42.666666 0l128 0q42.666667 0 42.666667 42.666667l0 0q0 42.666667-42.666667 42.666667l-128 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z" fill="#191919" p-id="3136"></path><path d="M298.666667 512m42.666666 0l128 0q42.666667 0 42.666667 42.666667l0 0q0 42.666667-42.666667 42.666666l-128 0q-42.666667 0-42.666666-42.666666l0 0q0-42.666667 42.666666-42.666667Z" fill="#191919" p-id="3137"></path><path d="M298.666667 682.666667m42.666666 0l128 0q42.666667 0 42.666667 42.666666l0 0q0 42.666667-42.666667 42.666667l-128 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666666Z" fill="#191919" p-id="3138"></path><path d="M828.970667 517.376a21.333333 21.333333 0 0 1 3.029333 10.965333v70.058667A213.333333 213.333333 0 1 1 597.333333 810.666667a38.826667 38.826667 0 1 1 77.568 0 135.765333 135.765333 0 1 0 157.141334-134.101334l-0.042667 32.426667a21.333333 21.333333 0 0 1-32.298667 18.304l-150.528-90.325333a21.333333 21.333333 0 0 1 0-36.608l150.528-90.325334a21.333333 21.333333 0 0 1 29.269334 7.338667z" fill="#191919" p-id="3139"></path></svg>
...\ No newline at end of file ...\ No newline at end of file
...@@ -81,7 +81,7 @@ export default { ...@@ -81,7 +81,7 @@ export default {
81 let inputInner = document.querySelector( 81 let inputInner = document.querySelector(
82 "#inputInner--" + this.dataKey 82 "#inputInner--" + this.dataKey
83 ); 83 );
84 - inputInner.classList.remove("inputFocus"); 84 + inputInner?.classList.remove("inputFocus");
85 } 85 }
86 }, 86 },
87 deep: true, 87 deep: true,
......
1 +<template>
2 + <el-dialog
3 + class="entryDialog classCUploadDialog"
4 + title="清单总分单撤销"
5 + :visible.sync="cancelVisible"
6 + :show-close="false"
7 + width="60%"
8 + :close-on-click-modal="false"
9 + >
10 + <div>
11 + <el-form
12 + class="fedexFormStyle fedexFormStyle-textarea"
13 + ref="cancelForm"
14 + :model="cancelFormData"
15 + :rules="cancelFormRules"
16 + label-position="left"
17 + size="small"
18 + >
19 + <Formitem label="撤销原因" prop="note" type="edit">
20 + <el-input
21 + type="textarea"
22 + class="inputShadow"
23 + resize="none"
24 + v-model="cancelFormData.note"
25 + clearable
26 + :autosize="{ minRows: 7, maxRows: 7 }"
27 + placeholder="请输入撤销原因"
28 + id="inputInner-edit-note"
29 + ></el-input>
30 + </Formitem>
31 + </el-form>
32 + </div>
33 + <div class="dialogOption entrySave revokeOperation">
34 + <el-button
35 + class="entrySaveButton entrySaveButton-background revokeSubmitBtn"
36 + type="primary"
37 + @click="submitRevoke"
38 + >
39 + 提 交
40 + </el-button>
41 + <el-button class="entrySaveButton" @click="cancelRevoke(false)">
42 + 取 消
43 + </el-button>
44 + </div>
45 + </el-dialog>
46 +</template>
47 +
48 +<script>
49 +import { declareDataUploadNew } from "@/api/declareData-api.js";
50 +export default {
51 + name: "DeleteDialog",
52 + props: {
53 + showDialog: {
54 + type: Boolean,
55 + default: false,
56 + },
57 + selectedDatas: {
58 + type: Array,
59 + default: () => [],
60 + },
61 + },
62 + data() {
63 + return {
64 + cancelVisible: false,
65 + cancelFormData: {
66 + note: "",
67 + },
68 + cancelFormRules: {
69 + note: [{ required: true, message: "请输入撤销原因", trigger: "blur" }],
70 + },
71 + };
72 + },
73 + watch: {
74 + showDialog(val) {
75 + if (val) {
76 + this.cancelVisible = val;
77 + }
78 + },
79 + },
80 + created() {},
81 + methods: {
82 + submitRevoke() {
83 + this.$refs.cancelForm.validate((valid) => {
84 + if (valid) {
85 + let obj = {
86 + note: this.cancelFormData.note,
87 + declareIds: [],
88 + type: "totalScore",
89 + deleteFlag: true,
90 + };
91 + obj.declareIds = this.selectedDatas.map((item) => item.declareId);
92 +
93 + console.log("datas==", obj);
94 + declareDataUploadNew(obj)
95 + .then((res) => {
96 + if (res.code === "200") {
97 + // this.alertSuccessMsg(res.message);
98 + this.alertSuccessMsg("数据已成功提交撤销,请等待海关回执。");
99 + this.cancelRevoke(true);
100 + } else {
101 + this.alertWarningMsg(res.message);
102 + this.cancelRevoke();
103 + }
104 + })
105 + .catch((err) => {
106 + console.log(err);
107 + this.cancelRevoke();
108 + });
109 + } else {
110 + return false;
111 + }
112 + });
113 + },
114 +
115 + cancelRevoke(flag = false) {
116 + this.cancelVisible = false;
117 + this.cancelFormData.note = "";
118 + this.$emit("cancelDelete", flag);
119 + },
120 + },
121 +};
122 +</script>
123 +
124 +<style lang="scss" scoped>
125 +@import "@/assets/styles/variables.scss";
126 +.modelItem {
127 + width: 100%;
128 + .modelItem-title {
129 + display: flex;
130 + justify-content: space-between;
131 + margin-bottom: 5px;
132 + font-size: 14px;
133 + font-weight: 600;
134 + color: #333;
135 + }
136 +}
137 +.revokeOperation {
138 + margin-bottom: 25px;
139 + .revokeSubmitBtn {
140 + margin-right: 30px;
141 + }
142 +}
143 +.fedexFormStyle-textarea {
144 + .el-form-item {
145 + height: 200px;
146 + }
147 +}
148 +</style>
...@@ -35,15 +35,6 @@ ...@@ -35,15 +35,6 @@
35 <!-- 提运单号 --> 35 <!-- 提运单号 -->
36 <el-col :span="5"> 36 <el-col :span="5">
37 <Formitem label="提运单号" prop="billNo"> 37 <Formitem label="提运单号" prop="billNo">
38 - <!-- <el-input
39 - type="text"
40 - class="inputShadow"
41 - id="inputInner--billNo"
42 - resize="none"
43 - v-model="sreachFormData.billNo"
44 - clearable
45 - placeholder=""
46 - ></el-input> -->
47 <FormTextareaInput 38 <FormTextareaInput
48 :formData="sreachFormData" 39 :formData="sreachFormData"
49 dataKey="billNo" 40 dataKey="billNo"
...@@ -152,6 +143,37 @@ ...@@ -152,6 +143,37 @@
152 ></svg-icon> 143 ></svg-icon>
153 离境单申报 144 离境单申报
154 </el-button> 145 </el-button>
146 + <!-- new -->
147 + <el-dropdown
148 + style="margin-left: 10px"
149 + size="small"
150 + split-button
151 + type="primary"
152 + class="dropdown-other-button"
153 + v-loading="loadings.dropDownChangeLoading"
154 + @command="dropdownChange"
155 + @click="
156 + declareDataChange('dropDownChangeLoading', dropdownName, dropdownCode)
157 + "
158 + >
159 + <i class="el-icon-document"></i>
160 + {{ dropdownName }}
161 + <!-- 清单总分单撤销、清单总分单变更 -->
162 + <el-dropdown-menu slot="dropdown">
163 + <el-dropdown-item
164 + :command="{ code: 'totalScore', name: '清单总分单撤销' }"
165 + class="dropdown-other-menu-button"
166 + >
167 + 清单总分单撤销
168 + </el-dropdown-item>
169 + <el-dropdown-item
170 + :command="{ code: 'totalScore', name: '清单总分单变更' }"
171 + class="dropdown-other-menu-button"
172 + >
173 + 清单总分单变更
174 + </el-dropdown-item>
175 + </el-dropdown-menu>
176 + </el-dropdown>
155 </div> 177 </div>
156 178
157 <Table 179 <Table
...@@ -324,6 +346,12 @@ ...@@ -324,6 +346,12 @@
324 :selected="selected" 346 :selected="selected"
325 @close="timeClose" 347 @close="timeClose"
326 /> 348 />
349 + <!-- 清单总分单撤销 -->
350 + <DeleteDialog
351 + :showDialog="deleteDialogVisible"
352 + :selectedDatas="selected"
353 + @cancelDelete="deleteDialogClose"
354 + />
327 <!-- 日志 --> 355 <!-- 日志 -->
328 <section style="position: fixed; top: 35%; right: 10%"> 356 <section style="position: fixed; top: 35%; right: 10%">
329 <PopoverComponent 357 <PopoverComponent
...@@ -348,12 +376,14 @@ import { ...@@ -348,12 +376,14 @@ import {
348 getTotalReceipt, 376 getTotalReceipt,
349 getTotalDocumentsLevelLog, 377 getTotalDocumentsLevelLog,
350 getOperationLogByBillNo, 378 getOperationLogByBillNo,
379 + declareDataUploadNew,
351 } from "@/api/declareData-api.js"; 380 } from "@/api/declareData-api.js";
352 import DialogVue from "./dialog.vue"; 381 import DialogVue from "./dialog.vue";
353 import DataPreview from "../reportingData/data-preview.vue"; 382 import DataPreview from "../reportingData/data-preview.vue";
354 import TimeDialog from "../reportingData/time-dialog.vue"; 383 import TimeDialog from "../reportingData/time-dialog.vue";
355 import { getCurrUserPortInfo } from "@/api/system/user.js"; 384 import { getCurrUserPortInfo } from "@/api/system/user.js";
356 import PopoverComponent from "./popover-component.vue"; 385 import PopoverComponent from "./popover-component.vue";
386 +import DeleteDialog from "./deleteDialog.vue";
357 387
358 export default { 388 export default {
359 name: "ArrivalDeclare", 389 name: "ArrivalDeclare",
...@@ -362,6 +392,7 @@ export default { ...@@ -362,6 +392,7 @@ export default {
362 DataPreview, 392 DataPreview,
363 TimeDialog, 393 TimeDialog,
364 PopoverComponent, 394 PopoverComponent,
395 + DeleteDialog,
365 }, 396 },
366 data() { 397 data() {
367 return { 398 return {
...@@ -525,6 +556,7 @@ export default { ...@@ -525,6 +556,7 @@ export default {
525 loadings: { 556 loadings: {
526 sreachLoading: false, 557 sreachLoading: false,
527 declaration: false, 558 declaration: false,
559 + dropDownChangeLoading: false,
528 }, 560 },
529 tableMaxheight: null, 561 tableMaxheight: null,
530 outerVisible: false, 562 outerVisible: false,
...@@ -535,6 +567,9 @@ export default { ...@@ -535,6 +567,9 @@ export default {
535 timeVisible: false, 567 timeVisible: false,
536 // 获取操作日志 568 // 获取操作日志
537 optionsVisible: false, 569 optionsVisible: false,
570 + dropdownName: "清单总分单撤销",
571 + dropdownCode: "totalScore",
572 + deleteDialogVisible: false,
538 }; 573 };
539 }, 574 },
540 created() { 575 created() {
...@@ -557,6 +592,61 @@ export default { ...@@ -557,6 +592,61 @@ export default {
557 getTotalDocumentsLevelLog: getTotalDocumentsLevelLog, 592 getTotalDocumentsLevelLog: getTotalDocumentsLevelLog,
558 getOperationLogByBillNo: getOperationLogByBillNo, 593 getOperationLogByBillNo: getOperationLogByBillNo,
559 594
595 + //切换申报模式
596 + dropdownChange(val) {
597 + this.dropdownName = val.name;
598 + this.dropdownCode = val.code;
599 + },
600 + declareDataChange(loadingKey, dropdownName, dropdownCode) {
601 + if (this.selected.length === 0) {
602 + this.alertWarningMsg("请选择数据!");
603 + return;
604 + }
605 + // declareDataUploadNew
606 + this.loadings.dropDownChangeLoading = true;
607 + if (dropdownName === "清单总分单撤销") {
608 + this.deleteDialogVisible = true;
609 + return;
610 + }
611 + this.$confirm("是否确认操作清单总分单变更?", "提示", {
612 + confirmButtonText: "确定",
613 + cancelButtonText: "取消",
614 + type: "warning",
615 + })
616 + .then(() => {
617 + let obj = {
618 + declareIds: this.selected.map((item) => item.declareId),
619 + type: "totalScore",
620 + changeFlag: true,
621 + };
622 + declareDataUploadNew(obj)
623 + .then((res) => {
624 + if (res.code === "200") {
625 + this.alertSuccessMsg("操作成功");
626 + this.search(0);
627 + } else {
628 + this.alertWarningMsg(res.message || "操作失败");
629 + }
630 + })
631 + .catch((err) => {
632 + console.log(err);
633 + })
634 + .finally(() => {
635 + this.loadings.dropDownChangeLoading = false;
636 + });
637 + })
638 + .catch(() => {
639 + this.loadings.dropDownChangeLoading = false;
640 + });
641 + },
642 + deleteDialogClose(flag) {
643 + debugger;
644 + this.loadings.dropDownChangeLoading = false;
645 + this.deleteDialogVisible = false;
646 + if (flag) {
647 + this.search(0);
648 + }
649 + },
560 formChange(val) { 650 formChange(val) {
561 this.sreachFormData = val; 651 this.sreachFormData = val;
562 }, 652 },
......
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
30 filterable 30 filterable
31 placeholder="" 31 placeholder=""
32 @change="receiptXml" 32 @change="receiptXml"
33 + disabled
33 > 34 >
34 <el-option 35 <el-option
35 v-for="item in receiptTypeList" 36 v-for="item in receiptTypeList"
...@@ -161,8 +162,9 @@ ...@@ -161,8 +162,9 @@
161 class="entrySaveButton" 162 class="entrySaveButton"
162 :disabled="loadings.submitLoading" 163 :disabled="loadings.submitLoading"
163 @click="submit" 164 @click="submit"
164 - >确 定</el-button
165 > 165 >
166 + 确 定
167 + </el-button>
166 <el-button class="entrySaveButton" @click="close(false)">关 闭</el-button> 168 <el-button class="entrySaveButton" @click="close(false)">关 闭</el-button>
167 </div> 169 </div>
168 </el-dialog> 170 </el-dialog>
...@@ -293,7 +295,7 @@ export default { ...@@ -293,7 +295,7 @@ export default {
293 } 295 }
294 generateReceiptXml({ 296 generateReceiptXml({
295 ...this.formData, 297 ...this.formData,
296 - logisticsNo: this.formData.logisticsNo, 298 + logisticsNos: [this.formData.logisticsNo],
297 }).then((res) => { 299 }).then((res) => {
298 console.log(res); 300 console.log(res);
299 if (res.code === "200") { 301 if (res.code === "200") {
...@@ -303,34 +305,13 @@ export default { ...@@ -303,34 +305,13 @@ export default {
303 } 305 }
304 }); 306 });
305 }, 307 },
306 - // remoteMethod(query) { 308 +
307 - // console.log(query);
308 - // this.getOrderList(query, true);
309 - // },
310 - // getOrderList(val, flag) {
311 - // if (!this.formData.receiptType) {
312 - // return;
313 - // }
314 - // searchOrderNo({
315 - // receiptType: this.formData.receiptType,
316 - // logisticsNo: flag ? val : "",
317 - // }).then((res) => {
318 - // if (res.code === "200") {
319 - // this.orderNoList = res.data;
320 - // } else {
321 - // this.alertWarningMsg(res.message);
322 - // }
323 - // });
324 - // this.receiptXml();
325 - // },
326 getOtherInfo(e) { 309 getOtherInfo(e) {
327 getListInfo(e).then((res) => { 310 getListInfo(e).then((res) => {
328 console.log(res); 311 console.log(res);
329 if (res.code === "200") { 312 if (res.code === "200") {
330 this.formData.preNo = res.data.preNo; 313 this.formData.preNo = res.data.preNo;
331 this.formData.invtNo = res.data.invtNo; 314 this.formData.invtNo = res.data.invtNo;
332 - // this.$set(this.formData, "preNo", res.data.preNo);
333 - // this.$set(this.formData, "invtNo", res.data.invtNo);
334 this.$forceUpdate(); 315 this.$forceUpdate();
335 } else { 316 } else {
336 this.alertWarningMsg(res.message); 317 this.alertWarningMsg(res.message);
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
11 class="fedexFormStyle fedexFormEditStyle" 11 class="fedexFormStyle fedexFormEditStyle"
12 ref="editForm" 12 ref="editForm"
13 :model="formData" 13 :model="formData"
14 - :rules="formRules"
15 label-position="top" 14 label-position="top"
16 size="small" 15 size="small"
17 :disabled="true" 16 :disabled="true"
......
This diff is collapsed. Click to expand it.
...@@ -163,12 +163,30 @@ export default { ...@@ -163,12 +163,30 @@ export default {
163 align: "left", 163 align: "left",
164 }, 164 },
165 { 165 {
166 + name: "提运单号",
167 + value: "billNo",
168 + width: "",
169 + align: "left",
170 + },
171 + {
172 + name: "订单编号",
173 + value: "orderNo",
174 + width: "",
175 + align: "left",
176 + },
177 + {
166 name: "物流运单编号", 178 name: "物流运单编号",
167 value: "logisticsNo", 179 value: "logisticsNo",
168 width: "", 180 width: "",
169 align: "left", 181 align: "left",
170 }, 182 },
171 { 183 {
184 + name: "收件人名称",
185 + value: "ebcName",
186 + width: "",
187 + align: "left",
188 + },
189 + {
172 name: "回执类型", 190 name: "回执类型",
173 value: "receiptType", 191 value: "receiptType",
174 width: "", 192 width: "",
......
...@@ -298,35 +298,7 @@ ...@@ -298,35 +298,7 @@
298 ></svg-icon> 298 ></svg-icon>
299 清单申报 299 清单申报
300 </el-button> 300 </el-button>
301 - <!-- <el-dropdown 301 +
302 - style="margin-right: 10px"
303 - size="small"
304 - split-button
305 - type="primary"
306 - v-loading="loadings.dropDownLoading"
307 - @command="dropdownChange"
308 - @click="declareData('dropDownLoading', dropdownName, dropdownCode)"
309 - >
310 - <svg-icon
311 - class="el-icon-user-solid"
312 - icon-class="fedexDeclareIcon"
313 - ></svg-icon
314 - >{{ dropdownName }}
315 - <el-dropdown-menu slot="dropdown">
316 - <el-dropdown-item :command="{ code: 'full', name: '一键申报' }"
317 - >一键申报</el-dropdown-item
318 - >
319 - <el-dropdown-item :command="{ code: 'order', name: '订单申报' }"
320 - >订单申报</el-dropdown-item
321 - >
322 - <el-dropdown-item :command="{ code: 'waybill', name: '运单申报' }"
323 - >运单申报</el-dropdown-item
324 - >
325 - <el-dropdown-item :command="{ code: 'list', name: '清单申报' }"
326 - >清单申报</el-dropdown-item
327 - >
328 - </el-dropdown-menu>
329 - </el-dropdown> -->
330 <!-- 运抵单申报按钮 --> 302 <!-- 运抵单申报按钮 -->
331 <!-- <el-button 303 <!-- <el-button
332 size="small" 304 size="small"
...@@ -375,6 +347,47 @@ ...@@ -375,6 +347,47 @@
375 ></svg-icon> 347 ></svg-icon>
376 撤销单申报 348 撤销单申报
377 </el-button> 349 </el-button>
350 + <!-- new -->
351 + <el-dropdown
352 + style="margin-left: 10px"
353 + size="small"
354 + split-button
355 + type="primary"
356 + class="dropdown-other-button"
357 + v-loading="loadings.dropDownChangeLoading"
358 + @command="dropdownChange"
359 + @click="
360 + declareDataChange(
361 + 'dropDownChangeLoading',
362 + dropdownName,
363 + dropdownCode
364 + )
365 + "
366 + >
367 + <i class="el-icon-document"></i>
368 + {{ dropdownName }}
369 + <!-- 订单变更、运单变更、清单变更 -->
370 + <el-dropdown-menu slot="dropdown">
371 + <el-dropdown-item
372 + :command="{ code: 'order', name: '订单变更' }"
373 + class="dropdown-other-menu-button"
374 + >
375 + 订单变更
376 + </el-dropdown-item>
377 + <el-dropdown-item
378 + :command="{ code: 'waybill', name: '运单变更' }"
379 + class="dropdown-other-menu-button"
380 + >
381 + 运单变更
382 + </el-dropdown-item>
383 + <el-dropdown-item
384 + :command="{ code: 'list', name: '清单变更' }"
385 + class="dropdown-other-menu-button"
386 + >
387 + 清单变更
388 + </el-dropdown-item>
389 + </el-dropdown-menu>
390 + </el-dropdown>
378 </div> 391 </div>
379 </div> 392 </div>
380 <section style="position: fixed; top: 35%; right: 10%"> 393 <section style="position: fixed; top: 35%; right: 10%">
...@@ -998,6 +1011,7 @@ export default { ...@@ -998,6 +1011,7 @@ export default {
998 sreachLoading: false, 1011 sreachLoading: false,
999 dwonloadModelLoading: false, 1012 dwonloadModelLoading: false,
1000 dropDownLoading: false, 1013 dropDownLoading: false,
1014 + dropDownChangeLoading: false,
1001 logTableLoading: false, 1015 logTableLoading: false,
1002 exportDeclareLoading: false, 1016 exportDeclareLoading: false,
1003 revokeLoading: false, // 撤销单申报加载状态 1017 revokeLoading: false, // 撤销单申报加载状态
...@@ -1010,8 +1024,8 @@ export default { ...@@ -1010,8 +1024,8 @@ export default {
1010 textareaVisible: {}, 1024 textareaVisible: {},
1011 tableMaxheight: null, 1025 tableMaxheight: null,
1012 outerVisible: false, 1026 outerVisible: false,
1013 - dropdownName: "一键申报", 1027 + dropdownName: "订单变更",
1014 - dropdownCode: "full", 1028 + dropdownCode: "order",
1015 revokeVisible: false, 1029 revokeVisible: false,
1016 templateDownloadVisible: false, 1030 templateDownloadVisible: false,
1017 datasExportVisible: false, 1031 datasExportVisible: false,
...@@ -1364,14 +1378,20 @@ export default { ...@@ -1364,14 +1378,20 @@ export default {
1364 declareDataUpload(obj) 1378 declareDataUpload(obj)
1365 .then((res) => { 1379 .then((res) => {
1366 if (res.code === "200") { 1380 if (res.code === "200") {
1367 - this.alertSuccessMsg("数据已成功提交申报,请等待海关回执。"); 1381 + this.alertSuccessMsg(
1382 + `数据已成功提交${
1383 + !obj?.changeFlag ? "申报" : "变更"
1384 + },请等待海关回执。`
1385 + );
1368 } else { 1386 } else {
1369 this.alertWarningMsg(res.message); 1387 this.alertWarningMsg(res.message);
1370 } 1388 }
1371 }) 1389 })
1372 .catch((err) => { 1390 .catch((err) => {
1373 console.error(err); 1391 console.error(err);
1374 - this.alertWarningMsg("申报失败,请稍后重试。"); 1392 + this.alertWarningMsg(
1393 + `${!obj?.changeFlag ? "申报" : "变更"}失败,请稍后重试。`
1394 + );
1375 }) 1395 })
1376 .finally(() => { 1396 .finally(() => {
1377 // 无论成功或失败,都重置加载状态并刷新数据 1397 // 无论成功或失败,都重置加载状态并刷新数据
...@@ -1391,13 +1411,18 @@ export default { ...@@ -1391,13 +1411,18 @@ export default {
1391 // } 1411 // }
1392 }, 1412 },
1393 1413
1414 + declareDataChange(loadingKey, dropdownName, dropdownCode) {
1415 + // changeFlag
1416 + this.declareData(loadingKey, dropdownName, dropdownCode, true);
1417 + },
1418 +
1394 /** 1419 /**
1395 * 通用申报方法 1420 * 通用申报方法
1396 * @param {string} loadingKey - 加载状态的 key(如 'dropDownLoading', 'departureLoading', 'revokeLoading') 1421 * @param {string} loadingKey - 加载状态的 key(如 'dropDownLoading', 'departureLoading', 'revokeLoading')
1397 * @param {string} dropdownName - 当前操作名称(如 '撤销单申报') 1422 * @param {string} dropdownName - 当前操作名称(如 '撤销单申报')
1398 * @param {string} dropdownCode - 当前操作代码(如 'full') 1423 * @param {string} dropdownCode - 当前操作代码(如 'full')
1399 */ 1424 */
1400 - declareData(loadingKey, dropdownName, dropdownCode) { 1425 + declareData(loadingKey, dropdownName, dropdownCode, changeFlag = false) {
1401 if (this.selected.length === 0) { 1426 if (this.selected.length === 0) {
1402 this.alertWarningMsg("请选择数据!"); 1427 this.alertWarningMsg("请选择数据!");
1403 return; 1428 return;
...@@ -1409,6 +1434,7 @@ export default { ...@@ -1409,6 +1434,7 @@ export default {
1409 const obj = { 1434 const obj = {
1410 declareIds: this.selected.map((item) => item.declareId), 1435 declareIds: this.selected.map((item) => item.declareId),
1411 type: dropdownCode, 1436 type: dropdownCode,
1437 + changeFlag: changeFlag,
1412 }; 1438 };
1413 // if (dropdownName === "清单总分单申报") { 1439 // if (dropdownName === "清单总分单申报") {
1414 // this.dataPreviewVisible = true; 1440 // this.dataPreviewVisible = true;
...@@ -1735,6 +1761,49 @@ export default { ...@@ -1735,6 +1761,49 @@ export default {
1735 } 1761 }
1736 } 1762 }
1737 } 1763 }
1764 +.dropdown-other-button {
1765 + border-color: #ff0000 !important;
1766 +
1767 + ::v-deep {
1768 + .el-button-group {
1769 + .el-button:last-child {
1770 + border-right-color: #409eff !important;
1771 + border-left: 1px solid #409eff !important;
1772 + border-top-color: #409eff !important;
1773 + border-bottom-color: #409eff !important;
1774 + .el-dropdown__icon {
1775 + color: #409eff;
1776 + }
1777 + }
1778 + .el-button:first-child {
1779 + height: 100%;
1780 + border-left-color: #409eff !important;
1781 + border-top-color: #409eff !important;
1782 + border-bottom-color: #409eff !important;
1783 + span {
1784 + color: #409eff;
1785 + }
1786 + }
1787 + }
1788 + }
1789 +}
1790 +.el-dropdown-menu {
1791 + border: 1px solid #409eff !important;
1792 + .dropdown-other-menu-button:not(.is-disabled):hover,
1793 + .dropdown-other-menu-button:focus {
1794 + background-color: #409eff !important;
1795 + }
1796 +}
1797 +.dropdown-other-button:hover {
1798 + ::v-deep {
1799 + .el-button-group .el-button:first-child span {
1800 + color: #409eff !important;
1801 + }
1802 + .el-button-group .el-button:last-child .el-dropdown__icon {
1803 + color: #409eff !important;
1804 + }
1805 + }
1806 +}
1738 1807
1739 .texttareaTip { 1808 .texttareaTip {
1740 position: absolute; 1809 position: absolute;
......