Showing
14 changed files
with
574 additions
and
52 deletions
| ... | @@ -9,8 +9,8 @@ | ... | @@ -9,8 +9,8 @@ |
| 9 | "build:dev": "vue-cli-service build --mode deving", | 9 | "build:dev": "vue-cli-service build --mode deving", |
| 10 | "build:test": "vue-cli-service build --mode test", | 10 | "build:test": "vue-cli-service build --mode test", |
| 11 | "build:uat": "vue-cli-service build --mode uat", | 11 | "build:uat": "vue-cli-service build --mode uat", |
| 12 | - "build:pre": "vue-cli-service build --mode pre", | 12 | + "build:pre:fedex": "vue-cli-service build --mode pre", |
| 13 | - "build:prod": "vue-cli-service build", | 13 | + "build:prod:fedex": "vue-cli-service build", |
| 14 | "preview": "node build/index.js --preview", | 14 | "preview": "node build/index.js --preview", |
| 15 | "lint": "eslint --ext .js,.vue src" | 15 | "lint": "eslint --ext .js,.vue src" |
| 16 | }, | 16 | }, | ... | ... |
| ... | @@ -243,3 +243,13 @@ export function declareUpload(data) { | ... | @@ -243,3 +243,13 @@ export function declareUpload(data) { |
| 243 | }, | 243 | }, |
| 244 | }); | 244 | }); |
| 245 | } | 245 | } |
| 246 | + | ||
| 247 | +// 根据提运单号 查询提运单号下的所有物流运单号 | ||
| 248 | +// bus-customer/declareData/checkBillNo | ||
| 249 | +export function checkBillNo(data) { | ||
| 250 | + return request({ | ||
| 251 | + url: "/bus-customer/declareData/checkBillNo", | ||
| 252 | + method: "post", | ||
| 253 | + data: data.declareIds, | ||
| 254 | + }); | ||
| 255 | +} | ... | ... |
| ... | @@ -201,6 +201,39 @@ | ... | @@ -201,6 +201,39 @@ |
| 201 | ></el-input> | 201 | ></el-input> |
| 202 | </Formitem> | 202 | </Formitem> |
| 203 | </el-col> | 203 | </el-col> |
| 204 | + <!-- 新增 --> | ||
| 205 | + <el-col :span="4"> | ||
| 206 | + <Formitem label="第二数量" prop="secondQty"> | ||
| 207 | + <el-input | ||
| 208 | + type="number" | ||
| 209 | + class="inputShadow" | ||
| 210 | + id="inputInner--secondQty" | ||
| 211 | + resize="none" | ||
| 212 | + v-model="tableRowformData.secondQty" | ||
| 213 | + clearable | ||
| 214 | + placeholder="" | ||
| 215 | + ></el-input> | ||
| 216 | + </Formitem> | ||
| 217 | + </el-col> | ||
| 218 | + <el-col :span="4"> | ||
| 219 | + <Formitem label="第二计量单位" type="edit" prop="unitLegalSecondCode"> | ||
| 220 | + <el-input | ||
| 221 | + type="text" | ||
| 222 | + class="inputShadow" | ||
| 223 | + id="inputInner-edit-unitLegalSecondCode" | ||
| 224 | + resize="none" | ||
| 225 | + :disabled="true" | ||
| 226 | + :value=" | ||
| 227 | + mapDicDatas( | ||
| 228 | + $store.getters.dict.MEASUREMENT_UNIT, | ||
| 229 | + tableRowformData.unitLegalSecondCode | ||
| 230 | + ) | ||
| 231 | + " | ||
| 232 | + ></el-input> | ||
| 233 | + </Formitem> | ||
| 234 | + </el-col> | ||
| 235 | + | ||
| 236 | + <!-- 截止 --> | ||
| 204 | <el-col :span="4"> | 237 | <el-col :span="4"> |
| 205 | <Formitem label="币制" prop="currency" type="edit"> | 238 | <Formitem label="币制" prop="currency" type="edit"> |
| 206 | <el-select | 239 | <el-select |
| ... | @@ -396,6 +429,10 @@ export default { | ... | @@ -396,6 +429,10 @@ export default { |
| 396 | { required: true, message: "请输入法定数量", trigger: "blur" }, | 429 | { required: true, message: "请输入法定数量", trigger: "blur" }, |
| 397 | { validator: checkFractionalPart, trigger: "blur" }, | 430 | { validator: checkFractionalPart, trigger: "blur" }, |
| 398 | ], | 431 | ], |
| 432 | + secondQty: [ | ||
| 433 | + { required: false, message: "请输入第二数量", trigger: "blur" }, | ||
| 434 | + { validator: checkFractionalPart, trigger: "blur" }, | ||
| 435 | + ], | ||
| 399 | currency: [ | 436 | currency: [ |
| 400 | { required: true, message: "请选择币制", trigger: "change" }, | 437 | { required: true, message: "请选择币制", trigger: "change" }, |
| 401 | ], | 438 | ], | ... | ... |
| ... | @@ -536,6 +536,14 @@ | ... | @@ -536,6 +536,14 @@ |
| 536 | ) | 536 | ) |
| 537 | }}</span> | 537 | }}</span> |
| 538 | </template> | 538 | </template> |
| 539 | + <template v-slot:unitLegalSecondCode="scope"> | ||
| 540 | + <span>{{ | ||
| 541 | + mapDicDatas( | ||
| 542 | + $store.getters.dict.MEASUREMENT_UNIT, | ||
| 543 | + scope.row.unitLegalSecondCode | ||
| 544 | + ) | ||
| 545 | + }}</span> | ||
| 546 | + </template> | ||
| 539 | <template v-slot:currency="scope"> | 547 | <template v-slot:currency="scope"> |
| 540 | <span>{{ | 548 | <span>{{ |
| 541 | mapCurrencyDatas($store.getters.dict.CURRENCY, scope.row.currency) | 549 | mapCurrencyDatas($store.getters.dict.CURRENCY, scope.row.currency) |
| ... | @@ -805,6 +813,19 @@ export default { | ... | @@ -805,6 +813,19 @@ export default { |
| 805 | slot: true, | 813 | slot: true, |
| 806 | }, | 814 | }, |
| 807 | { | 815 | { |
| 816 | + name: "第二数量", | ||
| 817 | + value: "secondQty", | ||
| 818 | + width: "", | ||
| 819 | + align: "left", | ||
| 820 | + }, | ||
| 821 | + { | ||
| 822 | + name: "第二计量单位", | ||
| 823 | + value: "unitLegalSecondCode", | ||
| 824 | + width: "", | ||
| 825 | + align: "left", | ||
| 826 | + slot: true, | ||
| 827 | + }, | ||
| 828 | + { | ||
| 808 | name: "币制", | 829 | name: "币制", |
| 809 | value: "currency", | 830 | value: "currency", |
| 810 | width: "", | 831 | width: "", |
| ... | @@ -986,6 +1007,7 @@ export default { | ... | @@ -986,6 +1007,7 @@ export default { |
| 986 | enterpriseProductDescribe: "", | 1007 | enterpriseProductDescribe: "", |
| 987 | enterpriseProductName: "", | 1008 | enterpriseProductName: "", |
| 988 | legalQty: 0, | 1009 | legalQty: 0, |
| 1010 | + secondQty: 0, | ||
| 989 | model: "", | 1011 | model: "", |
| 990 | netWeight: 0, | 1012 | netWeight: 0, |
| 991 | price: 0, | 1013 | price: 0, | ... | ... |
src/views/reportingData/data-preview.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <el-dialog | ||
| 3 | + class="entryDialog classCUploadDialog" | ||
| 4 | + :title="dataPreviewTitle" | ||
| 5 | + :visible.sync="batchModifyVisible" | ||
| 6 | + :show-close="false" | ||
| 7 | + width="700px" | ||
| 8 | + :close-on-click-modal="false" | ||
| 9 | + > | ||
| 10 | + <div style="margin-bottom: 10px"> | ||
| 11 | + <span> | ||
| 12 | + 提运单号 数量:<strong>{{ tableData.length }}</strong> | ||
| 13 | + </span> | ||
| 14 | + <span style="margin-left: 20px"> | ||
| 15 | + 物流运单编号 数量:<strong>{{ logisticsTotal }}</strong> | ||
| 16 | + </span> | ||
| 17 | + </div> | ||
| 18 | + <Table | ||
| 19 | + class="fedexDetialTable fedexSreachTable" | ||
| 20 | + ref="entryTable" | ||
| 21 | + :data="tableData" | ||
| 22 | + :headerData="headerData" | ||
| 23 | + :border="true" | ||
| 24 | + :pagination="false" | ||
| 25 | + :order="false" | ||
| 26 | + :height="tableMaxheight + 'px'" | ||
| 27 | + :maxHeight="tableMaxheight + 'px'" | ||
| 28 | + > | ||
| 29 | + </Table> | ||
| 30 | + <div class="dialogOption entrySave revokeOperation"> | ||
| 31 | + <el-button | ||
| 32 | + class="entrySaveButton entrySaveButton-background revokeSubmitBtn" | ||
| 33 | + type="primary" | ||
| 34 | + @click="formSubmit" | ||
| 35 | + > | ||
| 36 | + 确定 | ||
| 37 | + </el-button> | ||
| 38 | + <el-button class="entrySaveButton" @click="cancelModify">关闭</el-button> | ||
| 39 | + </div> | ||
| 40 | + </el-dialog> | ||
| 41 | +</template> | ||
| 42 | + | ||
| 43 | +<script> | ||
| 44 | +import { checkBillNo } from "@/api/declareData-api.js"; | ||
| 45 | + | ||
| 46 | +export default { | ||
| 47 | + props: { | ||
| 48 | + showDialog: { | ||
| 49 | + type: Boolean, | ||
| 50 | + default: false, | ||
| 51 | + }, | ||
| 52 | + dataPreviewTitle: { | ||
| 53 | + type: String, | ||
| 54 | + default: "预览", | ||
| 55 | + }, | ||
| 56 | + selectedDatas: { | ||
| 57 | + type: Array, | ||
| 58 | + default: () => [], | ||
| 59 | + }, | ||
| 60 | + }, | ||
| 61 | + data() { | ||
| 62 | + return { | ||
| 63 | + headerData: [ | ||
| 64 | + { | ||
| 65 | + name: "提运单号", | ||
| 66 | + value: "billNo", | ||
| 67 | + width: "180px", | ||
| 68 | + align: "left", | ||
| 69 | + }, | ||
| 70 | + { | ||
| 71 | + name: "物流运单编号", | ||
| 72 | + value: "logisticsWaybillNumber", | ||
| 73 | + width: "", | ||
| 74 | + align: "left", | ||
| 75 | + }, | ||
| 76 | + ], | ||
| 77 | + tableData: [], | ||
| 78 | + batchModifyVisible: false, | ||
| 79 | + logisticsTotal: 0, | ||
| 80 | + tableMaxheight: 200, | ||
| 81 | + }; | ||
| 82 | + }, | ||
| 83 | + watch: { | ||
| 84 | + showDialog(val) { | ||
| 85 | + if (val) { | ||
| 86 | + this.batchModifyVisible = val; | ||
| 87 | + this.getBillNo(); | ||
| 88 | + } | ||
| 89 | + }, | ||
| 90 | + }, | ||
| 91 | + created() {}, | ||
| 92 | + methods: { | ||
| 93 | + getBillNo() { | ||
| 94 | + checkBillNo({ | ||
| 95 | + declareIds: this.selectedDatas.map((item) => item.declareId), | ||
| 96 | + }).then((res) => { | ||
| 97 | + console.log(res); | ||
| 98 | + if (+res.code === 200) { | ||
| 99 | + this.tableData = res.data; | ||
| 100 | + | ||
| 101 | + const { total } = this.getLogisticsWaybillDetails(this.tableData); | ||
| 102 | + this.logisticsTotal = total; | ||
| 103 | + this.tableMaxheight = | ||
| 104 | + res.data.length >= 10 ? 500 : res.data.length * 50 + 50; | ||
| 105 | + } | ||
| 106 | + }); | ||
| 107 | + }, | ||
| 108 | + getLogisticsWaybillDetails(data) { | ||
| 109 | + const numbers = data.reduce((acc, item) => { | ||
| 110 | + const validNumbers = item.logisticsWaybillNumber | ||
| 111 | + .split(",") | ||
| 112 | + .filter((num) => num && num.trim()); | ||
| 113 | + return [...acc, ...validNumbers]; | ||
| 114 | + }, []); | ||
| 115 | + | ||
| 116 | + return { | ||
| 117 | + total: numbers.length, | ||
| 118 | + numbers: numbers, | ||
| 119 | + }; | ||
| 120 | + }, | ||
| 121 | + | ||
| 122 | + formSubmit() { | ||
| 123 | + this.cancelModify(1); | ||
| 124 | + }, | ||
| 125 | + | ||
| 126 | + cancelModify(val) { | ||
| 127 | + this.batchModifyVisible = false; | ||
| 128 | + this.$emit("cancelDataPreview", val); | ||
| 129 | + }, | ||
| 130 | + }, | ||
| 131 | +}; | ||
| 132 | +</script> | ||
| 133 | + | ||
| 134 | +<style lang="scss" scoped> | ||
| 135 | +@import "@/assets/styles/variables.scss"; | ||
| 136 | + | ||
| 137 | +.revokeOperation { | ||
| 138 | + margin-bottom: 25px; | ||
| 139 | + .revokeSubmitBtn { | ||
| 140 | + margin-right: 30px; | ||
| 141 | + } | ||
| 142 | +} | ||
| 143 | +</style> |
| ... | @@ -137,6 +137,14 @@ | ... | @@ -137,6 +137,14 @@ |
| 137 | > | 137 | > |
| 138 | 批量修改 | 138 | 批量修改 |
| 139 | </el-button> | 139 | </el-button> |
| 140 | + <!-- <el-button | ||
| 141 | + class="entrySaveButton" | ||
| 142 | + size="small" | ||
| 143 | + icon="el-icon-edit" | ||
| 144 | + @click="batchModify" | ||
| 145 | + > | ||
| 146 | + 重量调整 | ||
| 147 | + </el-button> --> | ||
| 140 | <el-button | 148 | <el-button |
| 141 | class="entrySaveButton" | 149 | class="entrySaveButton" |
| 142 | size="small" | 150 | size="small" |
| ... | @@ -442,6 +450,13 @@ | ... | @@ -442,6 +450,13 @@ |
| 442 | :selected="selected" | 450 | :selected="selected" |
| 443 | @close="dialogClose" | 451 | @close="dialogClose" |
| 444 | /> | 452 | /> |
| 453 | + <!-- 数据预览 --> | ||
| 454 | + <DataPreview | ||
| 455 | + :showDialog="dataPreviewVisible" | ||
| 456 | + :dataPreviewTitle="dataPreviewTitle" | ||
| 457 | + :selectedDatas="selected" | ||
| 458 | + @cancelDataPreview="cancelDataPreview" | ||
| 459 | + /> | ||
| 445 | </div> | 460 | </div> |
| 446 | </template> | 461 | </template> |
| 447 | 462 | ||
| ... | @@ -464,6 +479,7 @@ import TemplateDownloadDialog from "./templateDownloadDialog.vue"; | ... | @@ -464,6 +479,7 @@ import TemplateDownloadDialog from "./templateDownloadDialog.vue"; |
| 464 | import ExportDialog from "./exportDialog.vue"; | 479 | import ExportDialog from "./exportDialog.vue"; |
| 465 | import BatchModify from "./batchModify.vue"; | 480 | import BatchModify from "./batchModify.vue"; |
| 466 | import TimeDialog from "./time-dialog.vue"; | 481 | import TimeDialog from "./time-dialog.vue"; |
| 482 | +import DataPreview from "./data-preview.vue"; | ||
| 467 | export default { | 483 | export default { |
| 468 | name: "ReportingData", | 484 | name: "ReportingData", |
| 469 | components: { | 485 | components: { |
| ... | @@ -473,6 +489,7 @@ export default { | ... | @@ -473,6 +489,7 @@ export default { |
| 473 | ExportDialog, | 489 | ExportDialog, |
| 474 | BatchModify, | 490 | BatchModify, |
| 475 | TimeDialog, | 491 | TimeDialog, |
| 492 | + DataPreview, | ||
| 476 | }, | 493 | }, |
| 477 | data() { | 494 | data() { |
| 478 | return { | 495 | return { |
| ... | @@ -650,6 +667,11 @@ export default { | ... | @@ -650,6 +667,11 @@ export default { |
| 650 | datasExportVisible: false, | 667 | datasExportVisible: false, |
| 651 | batchModifyVisible: false, | 668 | batchModifyVisible: false, |
| 652 | timeVisible: false, | 669 | timeVisible: false, |
| 670 | + // 数据预览 | ||
| 671 | + dataPreviewVisible: false, | ||
| 672 | + dataPreviewTitle: "", | ||
| 673 | + currentLoadingKey: "", | ||
| 674 | + paramsOjb: {}, | ||
| 653 | }; | 675 | }; |
| 654 | }, | 676 | }, |
| 655 | created() { | 677 | created() { |
| ... | @@ -849,6 +871,39 @@ export default { | ... | @@ -849,6 +871,39 @@ export default { |
| 849 | } | 871 | } |
| 850 | this.timeVisible = true; | 872 | this.timeVisible = true; |
| 851 | }, | 873 | }, |
| 874 | + // 申报 | ||
| 875 | + postDeclareData(obj, loadingKey) { | ||
| 876 | + // 提交申报数据 | ||
| 877 | + declareDataUpload(obj) | ||
| 878 | + .then((res) => { | ||
| 879 | + if (res.code === "200") { | ||
| 880 | + this.alertSuccessMsg("数据已成功提交申报,请等待海关回执。"); | ||
| 881 | + } else { | ||
| 882 | + this.alertWarningMsg(res.message); | ||
| 883 | + } | ||
| 884 | + }) | ||
| 885 | + .catch((err) => { | ||
| 886 | + console.error(err); | ||
| 887 | + this.alertWarningMsg("申报失败,请稍后重试。"); | ||
| 888 | + }) | ||
| 889 | + .finally(() => { | ||
| 890 | + // 无论成功或失败,都重置加载状态并刷新数据 | ||
| 891 | + this.$set(this.loadings, loadingKey, false); | ||
| 892 | + this.search(0); | ||
| 893 | + }); | ||
| 894 | + }, | ||
| 895 | + | ||
| 896 | + cancelDataPreview(val) { | ||
| 897 | + this.dataPreviewVisible = false; | ||
| 898 | + this.dataPreviewTitle = ""; | ||
| 899 | + | ||
| 900 | + if (val === 1) { | ||
| 901 | + this.postDeclareData(this.paramsOjb, this.currentLoadingKey); | ||
| 902 | + } else { | ||
| 903 | + this.$set(this.loadings, this.currentLoadingKey, false); | ||
| 904 | + this.paramsOjb = {}; | ||
| 905 | + } | ||
| 906 | + }, | ||
| 852 | 907 | ||
| 853 | /** | 908 | /** |
| 854 | * 通用申报方法 | 909 | * 通用申报方法 |
| ... | @@ -861,14 +916,21 @@ export default { | ... | @@ -861,14 +916,21 @@ export default { |
| 861 | this.alertWarningMsg("请选择数据!"); | 916 | this.alertWarningMsg("请选择数据!"); |
| 862 | return; | 917 | return; |
| 863 | } | 918 | } |
| 864 | - | ||
| 865 | // 设置加载状态 | 919 | // 设置加载状态 |
| 866 | this.$set(this.loadings, loadingKey, true); | 920 | this.$set(this.loadings, loadingKey, true); |
| 921 | + | ||
| 867 | // 构造请求参数 | 922 | // 构造请求参数 |
| 868 | const obj = { | 923 | const obj = { |
| 869 | declareIds: this.selected.map((item) => item.declareId), | 924 | declareIds: this.selected.map((item) => item.declareId), |
| 870 | type: dropdownCode, | 925 | type: dropdownCode, |
| 871 | }; | 926 | }; |
| 927 | + if (dropdownName === "一键申报" || dropdownName === "清单总分单申报") { | ||
| 928 | + this.dataPreviewVisible = true; | ||
| 929 | + this.dataPreviewTitle = `预览-${dropdownName}`; | ||
| 930 | + this.currentLoadingKey = loadingKey; | ||
| 931 | + this.paramsOjb = obj; | ||
| 932 | + return; | ||
| 933 | + } | ||
| 872 | 934 | ||
| 873 | // 如果是撤销单申报,显示弹窗并返回 | 935 | // 如果是撤销单申报,显示弹窗并返回 |
| 874 | if (dropdownName === "撤销单申报") { | 936 | if (dropdownName === "撤销单申报") { |
| ... | @@ -878,24 +940,7 @@ export default { | ... | @@ -878,24 +940,7 @@ export default { |
| 878 | return; | 940 | return; |
| 879 | } | 941 | } |
| 880 | 942 | ||
| 881 | - // 提交申报数据 | 943 | + this.postDeclareData(obj, loadingKey); |
| 882 | - declareDataUpload(obj) | ||
| 883 | - .then((res) => { | ||
| 884 | - if (res.code === "200") { | ||
| 885 | - this.alertSuccessMsg("数据已成功提交申报,请等待海关回执。"); | ||
| 886 | - } else { | ||
| 887 | - this.alertWarningMsg(res.message); | ||
| 888 | - } | ||
| 889 | - }) | ||
| 890 | - .catch((err) => { | ||
| 891 | - console.error(err); | ||
| 892 | - this.alertWarningMsg("申报失败,请稍后重试。"); | ||
| 893 | - }) | ||
| 894 | - .finally(() => { | ||
| 895 | - // 无论成功或失败,都重置加载状态并刷新数据 | ||
| 896 | - this.$set(this.loadings, loadingKey, false); | ||
| 897 | - this.search(0); | ||
| 898 | - }); | ||
| 899 | }, | 944 | }, |
| 900 | //切换申报模式 | 945 | //切换申报模式 |
| 901 | dropdownChange(val) { | 946 | dropdownChange(val) { | ... | ... |
| ... | @@ -2,15 +2,24 @@ | ... | @@ -2,15 +2,24 @@ |
| 2 | <el-dialog | 2 | <el-dialog |
| 3 | class="entryDialog classCUploadDialog" | 3 | class="entryDialog classCUploadDialog" |
| 4 | title="离境单申报" | 4 | title="离境单申报" |
| 5 | - :visible.sync="timeVisible" | 5 | + :visible.sync="timeVisibleConfig" |
| 6 | :show-close="false" | 6 | :show-close="false" |
| 7 | - width="450px" | 7 | + width="700px" |
| 8 | :close-on-click-modal="false" | 8 | :close-on-click-modal="false" |
| 9 | :destroy-on-close="true" | 9 | :destroy-on-close="true" |
| 10 | v-loading="loadings.dialogLoading" | 10 | v-loading="loadings.dialogLoading" |
| 11 | @close="close(false)" | 11 | @close="close(false)" |
| 12 | > | 12 | > |
| 13 | - <div class="modelItem"> | 13 | + <div style="margin-bottom: 10px"> |
| 14 | + <span> | ||
| 15 | + 提运单号 数量:<strong>{{ tableData.length }}</strong> | ||
| 16 | + </span> | ||
| 17 | + <span style="margin-left: 20px"> | ||
| 18 | + 物流运单编号 数量:<strong>{{ logisticsTotal }}</strong> | ||
| 19 | + </span> | ||
| 20 | + </div> | ||
| 21 | + | ||
| 22 | + <div class="modelItem" style="margin-bottom: 10px"> | ||
| 14 | <el-form | 23 | <el-form |
| 15 | class="fedexFormStyle" | 24 | class="fedexFormStyle" |
| 16 | ref="formData" | 25 | ref="formData" |
| ... | @@ -19,23 +28,8 @@ | ... | @@ -19,23 +28,8 @@ |
| 19 | size="small" | 28 | size="small" |
| 20 | > | 29 | > |
| 21 | <el-row :gutter="5"> | 30 | <el-row :gutter="5"> |
| 22 | - <el-col :span="24"> | 31 | + <el-col :span="18"> |
| 23 | <Formitem label="离境时间" prop="leaveTime" type="edit"> | 32 | <Formitem label="离境时间" prop="leaveTime" type="edit"> |
| 24 | - <!-- <el-select | ||
| 25 | - type="text" | ||
| 26 | - id="inputInner-edit-leaveTime" | ||
| 27 | - v-model="formData.leaveTimel-date-picker" | ||
| 28 | - clearable | ||
| 29 | - filterable | ||
| 30 | - placeholder="" | ||
| 31 | - > | ||
| 32 | - <el-option | ||
| 33 | - v-for="item in operatorCode" | ||
| 34 | - :key="item" | ||
| 35 | - :label="item" | ||
| 36 | - :value="item" | ||
| 37 | - ></el-option> | ||
| 38 | - </el-select> --> | ||
| 39 | <el-date-picker | 33 | <el-date-picker |
| 40 | class="inputInner--leaveTime" | 34 | class="inputInner--leaveTime" |
| 41 | id="inputInner-edit-leaveTime" | 35 | id="inputInner-edit-leaveTime" |
| ... | @@ -50,6 +44,19 @@ | ... | @@ -50,6 +44,19 @@ |
| 50 | </el-row> | 44 | </el-row> |
| 51 | </el-form> | 45 | </el-form> |
| 52 | </div> | 46 | </div> |
| 47 | + <Table | ||
| 48 | + class="fedexDetialTable fedexSreachTable" | ||
| 49 | + ref="entryTable" | ||
| 50 | + :data="tableData" | ||
| 51 | + :headerData="headerData" | ||
| 52 | + :border="true" | ||
| 53 | + :pagination="false" | ||
| 54 | + :order="false" | ||
| 55 | + :height="tableMaxheight + 'px'" | ||
| 56 | + :maxHeight="tableMaxheight + 'px'" | ||
| 57 | + > | ||
| 58 | + </Table> | ||
| 59 | + | ||
| 53 | <div class="dialogOption entrySave"> | 60 | <div class="dialogOption entrySave"> |
| 54 | <el-button | 61 | <el-button |
| 55 | class="entrySaveButton" | 62 | class="entrySaveButton" |
| ... | @@ -63,7 +70,7 @@ | ... | @@ -63,7 +70,7 @@ |
| 63 | </template> | 70 | </template> |
| 64 | 71 | ||
| 65 | <script> | 72 | <script> |
| 66 | -import { declareUpload } from "@/api/declareData-api.js"; | 73 | +import { declareUpload, checkBillNo } from "@/api/declareData-api.js"; |
| 67 | export default { | 74 | export default { |
| 68 | props: { | 75 | props: { |
| 69 | timeVisible: { | 76 | timeVisible: { |
| ... | @@ -83,15 +90,53 @@ export default { | ... | @@ -83,15 +90,53 @@ export default { |
| 83 | formData: { | 90 | formData: { |
| 84 | leaveTime: "", | 91 | leaveTime: "", |
| 85 | }, | 92 | }, |
| 86 | - | 93 | + timeVisibleConfig: false, |
| 94 | + headerData: [ | ||
| 95 | + { | ||
| 96 | + name: "提运单号", | ||
| 97 | + value: "billNo", | ||
| 98 | + width: "180px", | ||
| 99 | + align: "left", | ||
| 100 | + }, | ||
| 101 | + { | ||
| 102 | + name: "物流运单编号", | ||
| 103 | + value: "logisticsWaybillNumber", | ||
| 104 | + width: "", | ||
| 105 | + align: "left", | ||
| 106 | + }, | ||
| 107 | + ], | ||
| 108 | + tableData: [], | ||
| 87 | loadings: { | 109 | loadings: { |
| 88 | dialogLoading: false, | 110 | dialogLoading: false, |
| 89 | submitLoading: false, | 111 | submitLoading: false, |
| 90 | }, | 112 | }, |
| 91 | loadingText: "", | 113 | loadingText: "", |
| 114 | + logisticsTotal: 0, | ||
| 115 | + tableMaxheight: 200, | ||
| 92 | }; | 116 | }; |
| 93 | }, | 117 | }, |
| 118 | + watch: { | ||
| 119 | + timeVisible(val) { | ||
| 120 | + if (val) { | ||
| 121 | + this.timeVisibleConfig = val; | ||
| 122 | + this.getBillNo(); | ||
| 123 | + } | ||
| 124 | + }, | ||
| 125 | + }, | ||
| 94 | methods: { | 126 | methods: { |
| 127 | + getBillNo() { | ||
| 128 | + checkBillNo({ | ||
| 129 | + declareIds: this.selected.map((item) => item.declareId), | ||
| 130 | + }).then((res) => { | ||
| 131 | + if (+res.code === 200) { | ||
| 132 | + this.tableData = res.data; | ||
| 133 | + const { total } = this.getLogisticsWaybillDetails(this.tableData); | ||
| 134 | + this.logisticsTotal = total; | ||
| 135 | + this.tableMaxheight = | ||
| 136 | + res.data.length >= 9 ? 500 : res.data.length * 50 + 50; | ||
| 137 | + } | ||
| 138 | + }); | ||
| 139 | + }, | ||
| 95 | //数据保存 | 140 | //数据保存 |
| 96 | submit() { | 141 | submit() { |
| 97 | let obj = { | 142 | let obj = { |
| ... | @@ -105,6 +150,19 @@ export default { | ... | @@ -105,6 +150,19 @@ export default { |
| 105 | } | 150 | } |
| 106 | }); | 151 | }); |
| 107 | }, | 152 | }, |
| 153 | + getLogisticsWaybillDetails(data) { | ||
| 154 | + const numbers = data.reduce((acc, item) => { | ||
| 155 | + const validNumbers = item.logisticsWaybillNumber | ||
| 156 | + .split(",") | ||
| 157 | + .filter((num) => num && num.trim()); | ||
| 158 | + return [...acc, ...validNumbers]; | ||
| 159 | + }, []); | ||
| 160 | + | ||
| 161 | + return { | ||
| 162 | + total: numbers.length, | ||
| 163 | + numbers: numbers, | ||
| 164 | + }; | ||
| 165 | + }, | ||
| 108 | //新增 | 166 | //新增 |
| 109 | addapi(val) { | 167 | addapi(val) { |
| 110 | this.loadings.dialogLoading = true; | 168 | this.loadings.dialogLoading = true; |
| ... | @@ -129,6 +187,7 @@ export default { | ... | @@ -129,6 +187,7 @@ export default { |
| 129 | leaveTime: "", | 187 | leaveTime: "", |
| 130 | }; | 188 | }; |
| 131 | this.loadings.dialogLoading = false; | 189 | this.loadings.dialogLoading = false; |
| 190 | + this.timeVisibleConfig = false; | ||
| 132 | this.$emit("close", flag); | 191 | this.$emit("close", flag); |
| 133 | }, | 192 | }, |
| 134 | }, | 193 | }, | ... | ... |
src/views/reportingData/weight-adjust.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <el-dialog | ||
| 3 | + class="entryDialog classCUploadDialog" | ||
| 4 | + title="重量调整" | ||
| 5 | + :visible.sync="batchModifyVisible" | ||
| 6 | + :show-close="false" | ||
| 7 | + width="450px" | ||
| 8 | + :close-on-click-modal="false" | ||
| 9 | + > | ||
| 10 | + <div> | ||
| 11 | + <el-form | ||
| 12 | + class="fedexFormStyle" | ||
| 13 | + ref="batchModifyForm" | ||
| 14 | + :model="batchModifyFormData" | ||
| 15 | + :rules="batchModifyFormRules" | ||
| 16 | + label-position="left" | ||
| 17 | + size="small" | ||
| 18 | + > | ||
| 19 | + <Formitem label="提运单号" prop="modifyContent"> | ||
| 20 | + <el-input | ||
| 21 | + type="text" | ||
| 22 | + class="inputShadow" | ||
| 23 | + resize="none" | ||
| 24 | + v-model="batchModifyFormData.modifyContent" | ||
| 25 | + clearable | ||
| 26 | + placeholder="请输入提运单号" | ||
| 27 | + ></el-input> | ||
| 28 | + </Formitem> | ||
| 29 | + <Formitem label="件数" prop="modifyContent"> | ||
| 30 | + <el-input | ||
| 31 | + type="text" | ||
| 32 | + class="inputShadow" | ||
| 33 | + resize="none" | ||
| 34 | + v-model="batchModifyFormData.modifyContent" | ||
| 35 | + clearable | ||
| 36 | + placeholder="请输入修改内容" | ||
| 37 | + ></el-input> | ||
| 38 | + </Formitem> | ||
| 39 | + <Formitem label="原毛重" prop="modifyContent"> | ||
| 40 | + <el-input | ||
| 41 | + type="text" | ||
| 42 | + class="inputShadow" | ||
| 43 | + resize="none" | ||
| 44 | + v-model="batchModifyFormData.modifyContent" | ||
| 45 | + clearable | ||
| 46 | + placeholder="请输入修改内容" | ||
| 47 | + ></el-input> | ||
| 48 | + </Formitem> | ||
| 49 | + <Formitem label="修改后毛重" prop="modifyData"> | ||
| 50 | + <el-select | ||
| 51 | + type="text" | ||
| 52 | + v-model="batchModifyFormData.modifyData" | ||
| 53 | + clearable | ||
| 54 | + placeholder="" | ||
| 55 | + > | ||
| 56 | + <el-option | ||
| 57 | + v-for="item in modifyDataList" | ||
| 58 | + :key="item.itemValue" | ||
| 59 | + :label="item.itemChineseName" | ||
| 60 | + :value="item.itemValue" | ||
| 61 | + ></el-option> | ||
| 62 | + </el-select> | ||
| 63 | + </Formitem> | ||
| 64 | + <Formitem label="修改内容" prop="modifyContent"> | ||
| 65 | + <el-input | ||
| 66 | + type="text" | ||
| 67 | + class="inputShadow" | ||
| 68 | + resize="none" | ||
| 69 | + v-model="batchModifyFormData.modifyContent" | ||
| 70 | + clearable | ||
| 71 | + placeholder="请输入修改内容" | ||
| 72 | + ></el-input> | ||
| 73 | + </Formitem> | ||
| 74 | + </el-form> | ||
| 75 | + </div> | ||
| 76 | + <div class="dialogOption entrySave revokeOperation"> | ||
| 77 | + <el-button | ||
| 78 | + class="entrySaveButton entrySaveButton-background revokeSubmitBtn" | ||
| 79 | + type="primary" | ||
| 80 | + @click="formSubmit" | ||
| 81 | + >确定</el-button | ||
| 82 | + > | ||
| 83 | + <el-button class="entrySaveButton" @click="cancelModify">关闭</el-button> | ||
| 84 | + </div> | ||
| 85 | + </el-dialog> | ||
| 86 | +</template> | ||
| 87 | + | ||
| 88 | +<script> | ||
| 89 | +import { bathDeclareDate } from "@/api/declareData-api.js"; | ||
| 90 | +import { getDictData } from "@/api/system/dict-api.js"; | ||
| 91 | +export default { | ||
| 92 | + props: { | ||
| 93 | + showDialog: { | ||
| 94 | + type: Boolean, | ||
| 95 | + default: false, | ||
| 96 | + }, | ||
| 97 | + selectedDatas: { | ||
| 98 | + type: Array, | ||
| 99 | + default: () => [], | ||
| 100 | + }, | ||
| 101 | + }, | ||
| 102 | + data() { | ||
| 103 | + return { | ||
| 104 | + batchModifyVisible: false, | ||
| 105 | + batchModifyFormData: { | ||
| 106 | + modifyData: "", | ||
| 107 | + modifyContent: "", | ||
| 108 | + }, | ||
| 109 | + batchModifyFormRules: { | ||
| 110 | + modifyData: [ | ||
| 111 | + { required: true, message: "请选择修改数据", trigger: "change" }, | ||
| 112 | + ], | ||
| 113 | + modifyContent: [ | ||
| 114 | + { required: true, message: "请输入修改内容", trigger: "blur" }, | ||
| 115 | + ], | ||
| 116 | + }, | ||
| 117 | + modifyDataList: [ | ||
| 118 | + { name: "提运单号", value: "BILLNO" }, | ||
| 119 | + { name: "航班航次号", value: "FLIGHT_NUMBER" }, | ||
| 120 | + ], | ||
| 121 | + }; | ||
| 122 | + }, | ||
| 123 | + watch: { | ||
| 124 | + showDialog(val) { | ||
| 125 | + if (val) { | ||
| 126 | + this.batchModifyVisible = val; | ||
| 127 | + this.batchModifyFormData.modifyData = ""; | ||
| 128 | + this.batchModifyFormData.modifyContent = ""; | ||
| 129 | + } | ||
| 130 | + }, | ||
| 131 | + }, | ||
| 132 | + created() { | ||
| 133 | + this.getModifyDataList(); | ||
| 134 | + }, | ||
| 135 | + methods: { | ||
| 136 | + getModifyDataList() { | ||
| 137 | + getDictData({ doctCode: "DATABASE_FIELD" }) | ||
| 138 | + .then((res) => { | ||
| 139 | + if (res.code == "200") { | ||
| 140 | + this.modifyDataList = res.data; | ||
| 141 | + } | ||
| 142 | + }) | ||
| 143 | + .catch((err) => { | ||
| 144 | + console.error(err); | ||
| 145 | + }); | ||
| 146 | + }, | ||
| 147 | + formSubmit() { | ||
| 148 | + this.$refs.batchModifyForm.validate((valid) => { | ||
| 149 | + if (valid) { | ||
| 150 | + let obj = { | ||
| 151 | + declareIds: [], | ||
| 152 | + modifyData: this.batchModifyFormData.modifyData, | ||
| 153 | + modifyContent: this.batchModifyFormData.modifyContent, | ||
| 154 | + }; | ||
| 155 | + this.selectedDatas.forEach((item) => { | ||
| 156 | + obj.declareIds.push(item.declareId); | ||
| 157 | + }); | ||
| 158 | + console.log("datas==", obj); | ||
| 159 | + bathDeclareDate(obj) | ||
| 160 | + .then((res) => { | ||
| 161 | + if (res.code === "200") { | ||
| 162 | + this.msgSuccess("批量修改成功"); | ||
| 163 | + this.cancelModify(1); | ||
| 164 | + } else { | ||
| 165 | + this.alertWarningMsg(res.message); | ||
| 166 | + } | ||
| 167 | + }) | ||
| 168 | + .catch((err) => { | ||
| 169 | + console.log(err); | ||
| 170 | + this.alertWarningMsg(err.message); | ||
| 171 | + this.cancelModify(1); | ||
| 172 | + }); | ||
| 173 | + } else { | ||
| 174 | + return false; | ||
| 175 | + } | ||
| 176 | + }); | ||
| 177 | + }, | ||
| 178 | + | ||
| 179 | + cancelModify(val) { | ||
| 180 | + this.batchModifyVisible = false; | ||
| 181 | + this.$emit("cancelBatchModify", val); | ||
| 182 | + }, | ||
| 183 | + }, | ||
| 184 | +}; | ||
| 185 | +</script> | ||
| 186 | + | ||
| 187 | +<style lang="scss" scoped> | ||
| 188 | +@import "@/assets/styles/variables.scss"; | ||
| 189 | +.modelItem { | ||
| 190 | + width: 100%; | ||
| 191 | + .modelItem-title { | ||
| 192 | + display: flex; | ||
| 193 | + justify-content: space-between; | ||
| 194 | + margin-bottom: 5px; | ||
| 195 | + font-size: 14px; | ||
| 196 | + font-weight: 600; | ||
| 197 | + color: #333; | ||
| 198 | + } | ||
| 199 | +} | ||
| 200 | +.revokeOperation { | ||
| 201 | + margin-bottom: 25px; | ||
| 202 | + .revokeSubmitBtn { | ||
| 203 | + margin-right: 30px; | ||
| 204 | + } | ||
| 205 | +} | ||
| 206 | +</style> |
| ... | @@ -169,10 +169,10 @@ export default { | ... | @@ -169,10 +169,10 @@ export default { |
| 169 | addMenuFn() { | 169 | addMenuFn() { |
| 170 | let params = { | 170 | let params = { |
| 171 | icon: "", | 171 | icon: "", |
| 172 | - menuName: "运抵单申报", | 172 | + menuName: "HSCODE 管理", |
| 173 | - order: 1, | 173 | + order: 6.2, |
| 174 | - parentMenuId: 96, | 174 | + parentMenuId: 90, |
| 175 | - physicalUrl: "/arrival-declare", //-management | 175 | + physicalUrl: "/hs-code", //-management |
| 176 | url: "", | 176 | url: "", |
| 177 | }; | 177 | }; |
| 178 | addMenu(params).then((res) => { | 178 | addMenu(params).then((res) => { | ... | ... |
-
Please register or login to post a comment