作者 xudada

订单批量申报,订单批量导入申报功能

@@ -10,4 +10,9 @@ export const selectLists = params => { return axios.get(`${baseServiceURL}/Expor @@ -10,4 +10,9 @@ export const selectLists = params => { return axios.get(`${baseServiceURL}/Expor
10 //订单申报 10 //订单申报
11 export const sendOrder = params => { return http.post(`${baseServiceURL}/ExportOrderDeclaration/sendOrder`, params); }; 11 export const sendOrder = params => { return http.post(`${baseServiceURL}/ExportOrderDeclaration/sendOrder`, params); };
12 //上传EXCEL 12 //上传EXCEL
13 -export const UploadExcel = params => { return http.postExcelData(`${baseServiceURL}/ExportOrderDeclaration/upload`, params); }; 13 +export const importExcel = params => { return http.postExcelData(`${baseServiceURL}/import/importExcel`, params); };
  14 +//订单批量申报
  15 +export const batchOrder = params => { return http.post(`${baseServiceURL}/ExportOrderDeclaration/batchOrder`, params); };
  16 +//订单批量导入申报
  17 +export const batchOrderImport = params => { return http.postExcelData(`${baseServiceURL}/ExportOrderDeclaration/batchOrderImport`, params); };
  18 +
@@ -313,7 +313,7 @@ @@ -313,7 +313,7 @@
313 <el-row :gutter="20"> 313 <el-row :gutter="20">
314 <el-col :span="20"> 314 <el-col :span="20">
315 <el-form-item> 315 <el-form-item>
316 - <el-button type="primary" @click="dialogStatus==='create'?addsubmitForm('ruleForm'):edisubmitForm('ruleForm')">保存</el-button> 316 + <el-button size="medium" type="primary" @click="dialogStatus==='create'?addsubmitForm('ruleForm'):edisubmitForm('ruleForm')">保存</el-button>
317 </el-form-item> 317 </el-form-item>
318 </el-col> 318 </el-col>
319 </el-row> 319 </el-row>
@@ -2,11 +2,14 @@ @@ -2,11 +2,14 @@
2 <div class="table-container"> 2 <div class="table-container">
3 <div> 3 <div>
4 <el-form :inline="true" :model="queryInfo" class="demo-form-inline"> 4 <el-form :inline="true" :model="queryInfo" class="demo-form-inline">
5 - <el-form-item label="订单号">  
6 - <el-input v-model="queryInfo.orderno" placeholder="订单号"></el-input> 5 + <el-form-item label="">
  6 + <el-input size="medium" v-model="queryInfo.ext1" placeholder="客户编码"></el-input>
7 </el-form-item> 7 </el-form-item>
8 - <el-form-item label="订单类型">  
9 - <el-select v-model="queryInfo.ordertype" placeholder="请选择"> 8 + <el-form-item label="">
  9 + <el-input size="medium" v-model="queryInfo.orderno" placeholder="订单号"></el-input>
  10 + </el-form-item>
  11 + <el-form-item label="">
  12 + <el-select size="medium" v-model="queryInfo.ordertype" placeholder="订单类型">
10 <el-option 13 <el-option
11 v-for="item in ordertypes" 14 v-for="item in ordertypes"
12 :key="item.value" 15 :key="item.value"
@@ -15,8 +18,8 @@ @@ -15,8 +18,8 @@
15 </el-option> 18 </el-option>
16 </el-select> 19 </el-select>
17 </el-form-item> 20 </el-form-item>
18 - <el-form-item label="报送类型">  
19 - <el-select v-model="queryInfo.apptype" placeholder="请选择"> 21 + <el-form-item label="">
  22 + <el-select size="medium" v-model="queryInfo.apptype" placeholder="报送类型">
20 <el-option 23 <el-option
21 v-for="item in apptypes" 24 v-for="item in apptypes"
22 :key="item.value" 25 :key="item.value"
@@ -25,8 +28,8 @@ @@ -25,8 +28,8 @@
25 </el-option> 28 </el-option>
26 </el-select> 29 </el-select>
27 </el-form-item> 30 </el-form-item>
28 - <el-form-item label="报关状态">  
29 - <el-select v-model="queryInfo.appstatus" placeholder="请选择"> 31 + <el-form-item label="">
  32 + <el-select size="medium" v-model="queryInfo.appstatus" placeholder="报关状态">
30 <el-option 33 <el-option
31 v-for="item in appstatuss" 34 v-for="item in appstatuss"
32 :key="item.value" 35 :key="item.value"
@@ -36,7 +39,22 @@ @@ -36,7 +39,22 @@
36 </el-select> 39 </el-select>
37 </el-form-item> 40 </el-form-item>
38 <el-form-item> 41 <el-form-item>
39 - <el-button type="primary" @click="getList">查询</el-button> 42 + <div class="block">
  43 + <el-date-picker
  44 + size="medium"
  45 + v-model="value2"
  46 + type="daterange"
  47 + align="right"
  48 + unlink-panels
  49 + range-separator="至"
  50 + start-placeholder="开始日期"
  51 + end-placeholder="结束日期"
  52 + :picker-options="pickerOptions">
  53 + </el-date-picker>
  54 + </div>
  55 + </el-form-item>
  56 + <el-form-item>
  57 + <el-button size="medium" @click="getList">查询</el-button>
40 </el-form-item> 58 </el-form-item>
41 <el-form-item> 59 <el-form-item>
42 <el-upload 60 <el-upload
@@ -45,11 +63,28 @@ @@ -45,11 +63,28 @@
45 :before-upload="beforeUpload" 63 :before-upload="beforeUpload"
46 :http-request="uploadFile" 64 :http-request="uploadFile"
47 :show-file-list="false"> 65 :show-file-list="false">
48 - <el-button size="small" type="success">导入订单</el-button> 66 + <el-button size="medium" type="primary">导入订单</el-button>
49 </el-upload> 67 </el-upload>
50 </el-form-item> 68 </el-form-item>
51 </el-form> 69 </el-form>
52 </div> 70 </div>
  71 + <div style="margin-bottom: 20px">
  72 + <el-row :gutter="24">
  73 + <el-col :span="3">
  74 + <el-button size="medium" @click="batchOrder">订单批量申报</el-button>
  75 + </el-col>
  76 + <el-col :span="3">
  77 + <el-upload
  78 + class="upload-demo"
  79 + action=""
  80 + :before-upload="beforeUpload"
  81 + :http-request="batchOrderImport"
  82 + :show-file-list="false">
  83 + <el-button size="medium">订单批量导入申报</el-button>
  84 + </el-upload>
  85 + </el-col>
  86 + </el-row>
  87 + </div>
53 88
54 <el-table 89 <el-table
55 :data="tableData" 90 :data="tableData"
@@ -64,7 +99,7 @@ @@ -64,7 +99,7 @@
64 <template v-slot:default="{ row }"> 99 <template v-slot:default="{ row }">
65 <el-table 100 <el-table
66 :data="row.exportOrderDeclarationBodyList" 101 :data="row.exportOrderDeclarationBodyList"
67 - style="width: 100%" 102 + style="width: 85%;margin-left: 20px"
68 row-key="id" 103 row-key="id"
69 stripe 104 stripe
70 > 105 >
@@ -78,16 +113,25 @@ @@ -78,16 +113,25 @@
78 <el-table-column prop="price" label="单价" /> 113 <el-table-column prop="price" label="单价" />
79 <el-table-column prop="totalprice" label="总价" /> 114 <el-table-column prop="totalprice" label="总价" />
80 <el-table-column prop="note" label="备注" /> 115 <el-table-column prop="note" label="备注" />
81 - <el-table-column  
82 - fixed="right"  
83 - label=""  
84 - width="120">  
85 - </el-table-column>  
86 </el-table> 116 </el-table>
87 </template> 117 </template>
88 </el-table-column> 118 </el-table-column>
89 <el-table-column type="selection" width="55"></el-table-column> 119 <el-table-column type="selection" width="55"></el-table-column>
90 - <el-table-column prop="guid" label="GUID" width="180"></el-table-column> 120 + <el-table-column prop="orderno" label="订单编号" width="180"></el-table-column>
  121 + <el-table-column prop="ordertype" label="订单类型" width="120">
  122 + <template slot-scope="scope">
  123 + <span v-if="scope.row.ordertype==='E'">
  124 + B2C
  125 + </span>
  126 + <span v-else-if="scope.row.ordertype==='B'">
  127 + B2B
  128 + </span>
  129 + <span v-else>
  130 + 海外仓
  131 + </span>
  132 + </template>
  133 + </el-table-column>
  134 + <!--<el-table-column prop="guid" label="GUID" width="180"></el-table-column>-->
91 <el-table-column prop="apptype" label="报送类型" width="120"> 135 <el-table-column prop="apptype" label="报送类型" width="120">
92 <template slot-scope="scope"> 136 <template slot-scope="scope">
93 <span v-if="scope.row.apptype==='1'"> 137 <span v-if="scope.row.apptype==='1'">
@@ -109,20 +153,6 @@ @@ -109,20 +153,6 @@
109 </span> 153 </span>
110 </template> 154 </template>
111 </el-table-column> 155 </el-table-column>
112 - <el-table-column prop="ordertype" label="订单类型" width="120">  
113 - <template slot-scope="scope">  
114 - <span v-if="scope.row.ordertype==='E'">  
115 - B2C  
116 - </span>  
117 - <span v-else-if="scope.row.ordertype==='B'">  
118 - B2B  
119 - </span>  
120 - <span v-else>  
121 - 海外仓  
122 - </span>  
123 - </template>  
124 - </el-table-column>  
125 - <el-table-column prop="orderno" label="订单编号" width="180"></el-table-column>  
126 <el-table-column prop="ebpname" label="电商平台" width="180"></el-table-column> 156 <el-table-column prop="ebpname" label="电商平台" width="180"></el-table-column>
127 <el-table-column prop="goodsvalue" label="商品金额" width="120"></el-table-column> 157 <el-table-column prop="goodsvalue" label="商品金额" width="120"></el-table-column>
128 <el-table-column prop="freight" label="运杂费" width="120"></el-table-column> 158 <el-table-column prop="freight" label="运杂费" width="120"></el-table-column>
@@ -130,10 +160,11 @@ @@ -130,10 +160,11 @@
130 <el-table-column 160 <el-table-column
131 fixed="right" 161 fixed="right"
132 label="操作" 162 label="操作"
133 - width="120" 163 + width="180"
134 show-overflow-tooltip> 164 show-overflow-tooltip>
135 <template slot-scope="scope"> 165 <template slot-scope="scope">
136 - <el-button type="success" @click="sendorder(scope.row)">申报</el-button> 166 + <el-button type="text" size="small" @click="sendorder(scope.row)">订单申报</el-button>
  167 + <el-button type="text" size="small" @click="sendorder(scope.row)">清单申报</el-button>
137 </template> 168 </template>
138 </el-table-column> 169 </el-table-column>
139 </el-table> 170 </el-table>
@@ -152,7 +183,7 @@ @@ -152,7 +183,7 @@
152 </template> 183 </template>
153 184
154 <script> 185 <script>
155 - import {sendOrder,selectLists} from '../../api/consigner/exportOrder' 186 + import {sendOrder,selectLists,batchOrder,batchOrderImport,importExcel} from '../../api/consigner/exportOrder'
156 export default { 187 export default {
157 data() { 188 data() {
158 return { 189 return {
@@ -194,10 +225,40 @@ @@ -194,10 +225,40 @@
194 apptype:'', 225 apptype:'',
195 orderno:'', 226 orderno:'',
196 ordertype:'', 227 ordertype:'',
  228 + ext1:'',
197 pageNum:1, 229 pageNum:1,
198 pageSize:20 230 pageSize:20
199 }, 231 },
200 - total:0 232 + total:0,
  233 + pickerOptions: {
  234 + shortcuts: [{
  235 + text: '最近一周',
  236 + onClick(picker) {
  237 + const end = new Date();
  238 + const start = new Date();
  239 + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  240 + picker.$emit('pick', [start, end]);
  241 + }
  242 + }, {
  243 + text: '最近一个月',
  244 + onClick(picker) {
  245 + const end = new Date();
  246 + const start = new Date();
  247 + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  248 + picker.$emit('pick', [start, end]);
  249 + }
  250 + }, {
  251 + text: '最近三个月',
  252 + onClick(picker) {
  253 + const end = new Date();
  254 + const start = new Date();
  255 + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  256 + picker.$emit('pick', [start, end]);
  257 + }
  258 + }]
  259 + },
  260 + value2:'',
  261 + transformedData:''
201 }; 262 };
202 }, 263 },
203 mounted() { 264 mounted() {
@@ -205,6 +266,46 @@ @@ -205,6 +266,46 @@
205 this.getList(); 266 this.getList();
206 }, 267 },
207 methods: { 268 methods: {
  269 + //订单批量导入申报
  270 + batchOrderImport({ file, onSuccess, onError }){
  271 + // 生成 FormData 对象
  272 + const formData = new FormData();
  273 + formData.append('file', file);
  274 + batchOrderImport(formData).then((response) => {
  275 + const res = response.data
  276 + if (res.code !== '200') {
  277 + return this.$message.error(res.msg);
  278 + }
  279 + this.$message.success(res.msg);
  280 + this.getList();
  281 + onSuccess(response.data); // 调用 onSuccess 回调通知上传成功
  282 + }).catch(error => {
  283 + // 关闭加载
  284 + this.$message.error(error.toString())
  285 + onError(error); // 调用 onError 回调通知上传失败
  286 + })
  287 + },
  288 + //批量申报订单
  289 + batchOrder(){
  290 + if(this.selectedRows.length!==0){
  291 + this.transformedData = this.selectedRows.map(item => ({
  292 + orderno: item.orderno,
  293 + ext1: item.ext1
  294 + }));
  295 + batchOrder(this.transformedData).then((response)=>{
  296 + const res=response.data;
  297 + if (res.code !== '200') {
  298 + return this.$message.error('订单批量申报失败!')
  299 + }
  300 + this.$message.success('订单批量申报成功!');
  301 + this.getList();
  302 + }).catch(error=>{
  303 + this.$message.error(error.toString())
  304 + })
  305 + }else{
  306 + this.$message.error('请选勾取需要申报的订单信息!');
  307 + }
  308 + },
208 //导入订单excel 309 //导入订单excel
209 beforeUpload(file) { 310 beforeUpload(file) {
210 // 检查文件类型 311 // 检查文件类型
@@ -220,6 +321,19 @@ @@ -220,6 +321,19 @@
220 // 生成 FormData 对象 321 // 生成 FormData 对象
221 const formData = new FormData(); 322 const formData = new FormData();
222 formData.append('file', file); 323 formData.append('file', file);
  324 + importExcel(formData).then((response) => {
  325 + const res = response.data
  326 + if (res.code !== '200') {
  327 + return this.$message.error(res.msg);
  328 + }
  329 + this.$message.success(res.msg);
  330 + this.getList();
  331 + onSuccess(response.data); // 调用 onSuccess 回调通知上传成功
  332 + }).catch(error => {
  333 + // 关闭加载
  334 + this.$message.error(error.toString())
  335 + onError(error); // 调用 onError 回调通知上传失败
  336 + })
223 }, 337 },
224 //订单申报 338 //订单申报
225 sendorder(row){ 339 sendorder(row){
@@ -236,6 +350,9 @@ @@ -236,6 +350,9 @@
236 }, 350 },
237 //订单列表查询 351 //订单列表查询
238 getList(){ 352 getList(){
  353 + if(this.value2 !== null && this.value2 !== ""){
  354 + console.log(this.value2)
  355 + }
239 selectLists(this.queryInfo).then((response) => { 356 selectLists(this.queryInfo).then((response) => {
240 const res = response.data 357 const res = response.data
241 if (res.code !== '200') { 358 if (res.code !== '200') {