8 Commits 3e52d0bca0 ... 9df347ab74

Author SHA1 Message Date
  立航 饭 9df347ab74 Merge branch '20240817_lyc_orderManagement' 1 month ago
  立航 饭 622d48034d 订单管理菜单修正 1 month ago
  立航 饭 920757535c 奇金补收 1 month ago
  lyc 56f8007c31 feat: 补款管理取消补款 1 month ago
  lyc c1e0ab8b2e fix: 修复校验问题 1 month ago
  lyc 5cb039a15e feat: 导出小包订单下单信息(含物品) 1 month ago
  lyc 80ab2b7dc8 fix: 更新单号与面单 1 month ago
  lyc 78ecb31833 feat: 更新单号与面单 1 month ago

+ 8 - 0
src/api/financeCustomerSupplement.js

@@ -58,3 +58,11 @@ export function _remave(data) {
   })
 }
 
+export function _getCancelSupplement(params) {
+  return request({
+    url: '/Finance/CancelSupplement',
+    method: 'get',
+    params
+  })
+}
+

+ 35 - 2
src/api/order/orderManagement.js

@@ -1,5 +1,9 @@
 import request_9518 from '@/utils/request_9518'
-import { exportExcelNew, downloadFile,exportZipFile } from '@/utils/filedown'
+import request from '@/utils/request'
+
+
+import { exportExcelNew, downloadFile,exportZipFile, exportExcelData } from '@/utils/filedown'
+import { getCurrentDateTime } from '@/utils'
 
 export function GetOrderPager(data) {
   return request_9518({
@@ -135,4 +139,33 @@ export function outMpsOrderTemplate(data) {
   .then((res)=>{
     exportZipFile(res)
   })
-}
+}
+
+/**
+ * 更新单号与面单
+ * @param {*} data
+ * @returns
+ */
+export function UpdateImageAndTrakcing(data){
+  return request({
+    url: '/Order/UpdateImageAndTrakcing',
+    method: 'post',
+    timeout: 30 * 1000,
+    data
+  })
+}
+
+export function outOrderAndGoods(data) {
+  return request({
+    url: '/order/OutOrderAndGoods',
+    method: 'post',
+    timeout: 60 * 1000,
+    responseType: 'blob',
+    headers:{ 'Content-Type': 'application/json; application/octet-stream'},
+    data
+  })
+  .then((res)=>{
+    const fileName = getCurrentDateTime()
+    exportExcelData(res, fileName)
+  })
+}

+ 1 - 1
src/utils/filedown.js

@@ -33,7 +33,7 @@ export function downloadFile(url, params) {
   document.body.removeChild(form) // 释放标签
 }
 
-function exportExcelData(response, name) {
+export function exportExcelData(response, name) {
   if (response.message && response.error) {
     const msg = response.message
     Message({ message: msg, showClose: false, type: 'error' })

+ 97 - 5
src/views/finance/financeCustomerSupplements.vue

@@ -8,6 +8,7 @@
             type="month"
             value-format="yyyy-MM"
             placeholder="选择日期"
+            class="search-item"
           />
         </el-form-item>
         <el-form-item>
@@ -16,6 +17,7 @@
             placeholder="计费类型"
             filterable
             clearable
+            class="search-item"
           >
             <el-option
               v-for="item in types"
@@ -31,6 +33,7 @@
             placeholder="所属客户"
             filterable
             clearable
+            class="search-item"
           >
             <el-option
               v-for="item in FinanceCompanys"
@@ -49,9 +52,46 @@
               start-placeholder="开始日期"
               value-format="yyyy-MM-dd"
               end-placeholder="结束日期"
+              style="width: 270px;"
             />
           </div>
         </el-form-item>
+        <el-form-item label="内部单号">
+          <el-tooltip v-model="openNumbersInput" effect="light" :manual="true">
+            <div slot="content">
+              <el-input
+                v-model="inputMultiCodes"
+                type="textarea"
+                rows="7"
+                placeholder="请输入单号,每行一个"
+              />
+              <div style="text-align: right; padding: 5px">
+                <el-button
+                  size="mini"
+                  @click="openNumbersInput = false"
+                >关闭</el-button>
+                <el-button
+                  size="mini"
+                  type="danger"
+                  @click="inputMultiCodes = ''"
+                >清除</el-button>
+                <el-button
+                  size="mini"
+                  type="success"
+                  @click="confirmMultiCodes"
+                >确定</el-button>
+              </div>
+            </div>
+            <el-input
+              v-model="pagerDto._In_SystemNo"
+              clearable
+              @focus="openNumbersInputPannel"
+            />
+          </el-tooltip>
+        </el-form-item>
+        <el-form-item>
+          <el-checkbox v-model="pagerDto._Eq_IsCancel">是否被取消</el-checkbox>
+        </el-form-item>
         <el-form-item>
           <el-button @click="pagerSerach(1)">
             搜索
@@ -75,7 +115,7 @@
         :select-on-indeterminate="true"
         width="100%"
       >
-        <el-table-column label="月份" prop="Month" />
+        <el-table-column label="月份" prop="Month" width="80" />
         <el-table-column label="所属客户" prop="CustomerName" />
         <el-table-column label="渠道" prop="PublicName" />
         <el-table-column label="客户单号" prop="CustomerOrderNo" />
@@ -90,7 +130,24 @@
         </el-table-column>
         <el-table-column label="费用上传内容" prop="FeeString" />
         <el-table-column label="上传时间" prop="CreateTime" />
-        <el-table-column label="上传人" prop="CreateUserName" />
+        <el-table-column label="上传人" prop="CreateUserName" width="80" />
+        <el-table-column label="是否被取消" prop="IsCancel" width="70">
+          <template slot-scope="scope">
+            <el-tag :type="scope.row.IsCancel ? 'warning' : ''">{{ scope.row.IsCancel ? '是' : '否' }}</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" width="85" fixed="right">
+          <template slot-scope="scope">
+            <el-button
+              type="warning"
+              size="mini"
+              :loading="scope.row.cancelLoading"
+              @click="hanleCancelPayment(scope.row)"
+            >
+              取消补款
+            </el-button>
+          </template>
+        </el-table-column>
       </el-table>
       <el-pagination
         :page-sizes="[10, 20, 40,100, 400]"
@@ -156,8 +213,9 @@
 <script>
 import BaseList from '@/components/Xyy/baselist'
 import { _getCustomers } from '@/api/baseInfo'
-import { _getPageResult, _inputFinanceCustomerSupplements, _AddCustomerSKUFeeFinanceCustomer, _getFinanceCustomerSupplementType, _edit, _add, _remave } from '@/api/financeCustomerSupplement'
+import { _getPageResult, _inputFinanceCustomerSupplements, _AddCustomerSKUFeeFinanceCustomer, _getFinanceCustomerSupplementType, _edit, _add, _remave, _getCancelSupplement } from '@/api/financeCustomerSupplement'
 import SkuBatchImport from '@/components/SkuBatchImport';
+import { format } from '@/utils/multiInput'
 export default {
   name: 'FinanceCustomerSupplements',
   components: { 'base-list': BaseList, SkuBatchImport },
@@ -172,9 +230,17 @@ export default {
       type: '',
       fileUrl: '',
       loading: false,
-      pagerDto: { PageIndex: 0, PageSize: 10, total: 0 },
+      pagerDto: {
+        _In_SystemNo: undefined,
+        _Eq_IsCancel: false,
+        PageIndex: 0,
+        PageSize: 10,
+        total: 0
+      },
       skuBatchImportDialog: false,
-      Customers: []
+      Customers: [],
+      inputMultiCodes: '',
+      openNumbersInput: false,
     }
   },
   created() {
@@ -234,8 +300,34 @@ export default {
       }).finally(r => {
         loadingFn()
       })
+    },
+    openNumbersInputPannel() {
+      const str = format(this.pagerDto._In_SystemNo, '\n')
+      this.inputMultiCodes = str
+      this.openNumbersInput = true
+    },
+    confirmMultiCodes() {
+      const inputs = this.inputMultiCodes
+      const str = format(inputs, ',')
+      this.pagerDto._In_SystemNo = str
+      this.inputMultiCodes = ''
+      this.openNumbersInput = false
+    },
+    // 取消补款
+    hanleCancelPayment(row) {
+      this.$set(row, 'cancelLoading', true)
+      _getCancelSupplement({ systemNo: row.SystemNo, transactionNumber: row.TransactionNumber }).then(() => {
+        this.$message({ type: 'success', message: '操作成功' })
+      }).finally(() => {
+        this.$set(row, 'cancelLoading', false)
+      })
     }
   }
 }
 
 </script>
+<style scoped>
+.search-item {
+  width: 160px;
+}
+</style>

+ 7 - 1
src/views/orders/claimRecord.vue

@@ -789,7 +789,13 @@ export default {
           Object.keys(targetData).forEach(city => {
             if (city) {
               const totalSum = targetData[city].reduce((acc, item) => acc + item.AuditTotalAmount, 0);
-              targetData[city].push({ IsFilter: true, TotalAmount: ceilToDecimals(totalSum, 2), CustomerName: targetData[city][0]['CustomerName'] })
+              const TotalAmount = ceilToDecimals(totalSum, 2)
+              targetData[city].push({
+                IsFilter: true,
+                TotalAmount,
+                AuditTotalAmount: TotalAmount,
+                CustomerName: targetData[city][0]['CustomerName']
+              })
             }
           });
           this.mergeCellsCheckData = targetData

+ 113 - 3
src/views/orders/management/list.vue

@@ -316,6 +316,11 @@
                 :command="commands.smallToLarge"
                 >小包订单转换FBA发货</el-dropdown-item
               >
+              <el-dropdown-item
+                :loading="orderAndGoodsLoading"
+                :command="commands.smallPackageOrderInfo"
+                >导出小包订单下单信息(含物品)</el-dropdown-item
+              >
             </el-dropdown-menu>
           </el-dropdown>
           <el-dropdown size="medium" @command="batchHandleCommand">
@@ -346,8 +351,8 @@
             v-model="pagerDto._Eq_PostDSStatus"
             size="medium"
             style="float: right"
-            @change="queryCommand"
-          >
+            >
+            <!-- @change="queryCommand" -->
             <el-option value="" label="选择提交发货状态" />
             <el-option :value="true" label="已提交发货" />
             <el-option :value="false" label="未提交发货" />
@@ -582,6 +587,7 @@
                   >
                 </el-dropdown-menu>
               </el-dropdown>
+              <el-button v-if="r.row.TransferNumber" class="update-tracking-bill" size="mini" type="primary" @click="updateTrackingWaybill(r.row)">更新单号与面单</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -1558,6 +1564,31 @@
         </el-form-item>
       </el-form>
     </el-dialog>
+    <el-dialog title="更新单号与面单" width="760px" :close-on-click-modal="false" :visible.sync="showTrackingWaybill">
+      <el-form :model="imageAndTrakcingDto" :rules="imageAndTrakcingRules" label-width="100px" ref="updateTrakcingRef">
+        <el-form-item label="运单号" prop="TrackingNumber">
+          <el-input v-model="imageAndTrakcingDto.TrackingNumber" placeholder="请输入运单号"></el-input>
+        </el-form-item>
+        <el-form-item label="PDF面单" prop="ServiceLabelUrl">
+          <el-upload
+            class="upload-demo"
+            :action="`${apiAddress}/api/Finance/updateLoadFile`"
+            :limit="2"
+            :file-list="imageFileList"
+            :on-success="successFileUrl"
+            :on-change="changeFileUrl"
+            :before-upload="beforeUploadFileUrl"
+            accept="application/pdf"
+          >
+            <el-button class="define-upload-btn" size="small" type="primary">点击上传</el-button>
+            <span slot="tip" class="define-upload__tip">只能上传PDF文件</span>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" :loading="imageAndTrakcingLoad" @click="hanleConfirmModifications">确定修改</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -1596,6 +1627,8 @@ import {
   EUHSCodeUpdateSave,
   outMpsOrdermethod,
   ModifyCreateOrderChannelSave,
+  UpdateImageAndTrakcing,
+outOrderAndGoods
 } from "@/api/order/orderManagement";
 import { mapGetters } from "vuex";
 import { _smallToLarge } from "@/api/fba/Receiving";
@@ -1673,7 +1706,8 @@ export default {
         downloadPdf: "downloadPdf",
         downloadPdfEnd: "downloadPdfEnd",
         modifyCreateOrderChannel: "modifyCreateOrderChannel",
-        smallToLarge: "smallToLarge"
+        smallToLarge: "smallToLarge",
+        smallPackageOrderInfo: "smallPackageOrderInfo"
       },
       tabName: "",
       listTablName: "all",
@@ -1729,6 +1763,20 @@ export default {
         _IsNlNumLe_MpsOrderId: null,
         _IsNlNumGr_MpsOrderId: null,
       },
+      showTrackingWaybill: false,
+      imageAndTrakcingDto: {
+        TrackingNumber: undefined,
+        SystemNo: undefined,
+        ServiceLabelUrl: undefined,
+      },
+      imageAndTrakcingRules: {
+        TrackingNumber: [{ required: true, message: '请输入运单号', trigger: 'blur' }],
+        ServiceLabelUrl: [{ required: true, message: '请上传面单', trigger: 'change' }],
+      },
+      imageAndTrakcingLoad: false,
+      apiAddress: "http://wms.xingyunyi.cn",
+      imageFileList: [],
+      orderAndGoodsLoading: false
     };
   },
   created() {
@@ -1966,6 +2014,12 @@ export default {
         this.downLoadingMps = false;
       });
     },
+    outOrderAndGoodsMethod(Ids) {
+      this.orderAndGoodsLoading = true;
+      outOrderAndGoods({ orderIdList: Ids }).then(() => {
+        this.orderAndGoodsLoading = false
+      })
+    },
     // 欧盟海关编码修改  start
     showEUHSCodeUpdate() {
       const ids = this.createorderIds.split(",");
@@ -2174,6 +2228,19 @@ export default {
         return;
       }
 
+      // 导出小包订单下单信息(含物品)
+      if (command == this.commands.smallPackageOrderInfo) {
+        const Ids = ids.split(",");
+        if (Ids.length === 0) {
+          this.$alert("请勾选订单", "错误", {
+            type: "warning",
+          });
+          return;
+        }
+        this.outOrderAndGoodsMethod(Ids)
+        return;
+      }
+
       if (command == this.commands.cancelOrder) {
         action = "Cancel";
       } else if (command == this.commands.cancelDraftOrder) {
@@ -2418,6 +2485,39 @@ export default {
         }
       });
     },
+    updateTrackingWaybill(row) {
+      this.imageAndTrakcingDto.SystemNo = row.TransferNumber
+      this.showTrackingWaybill = true
+    },
+    beforeUploadFileUrl(file) {
+      const isPDF = file.type === 'application/pdf';
+      if (!isPDF) {
+        this.imageFileList = []
+        this.$message.error('只能上传PDF文件!');
+      }
+      return isPDF;
+    },
+    successFileUrl(r) {
+      const fileUrl = r.Data.url
+      this.imageAndTrakcingDto.ServiceLabelUrl = fileUrl
+    },
+    changeFileUrl(file, fileList) {
+      if (fileList.length > 1) this.imageFileList = fileList.slice(1);
+    },
+    hanleConfirmModifications() {
+      this.$refs.updateTrakcingRef.validate((valid) => {
+        if (valid) {
+          this.imageAndTrakcingLoad = true
+          UpdateImageAndTrakcing(this.imageAndTrakcingDto).then(res => {
+            this.$message({ type: "success", message: "更新成功" });
+          }).finally(() => {
+            this.imageAndTrakcingLoad = false
+          })
+        } else {
+          return false;
+        }
+      });
+    }
   },
 };
 </script>
@@ -2554,5 +2654,15 @@ export default {
 .orderManagement .el-form-item__label {
   padding-bottom: 0;
 }
+.define-upload__tip {
+  padding-left: 10px;
+}
+.define-upload-btn {
+  width: 138px;
+  font-size: 14px;
+}
+.update-tracking-bill {
+  margin-top: 5px;
+}
 </style>
 

+ 2 - 2
src/views/orders/orderBatchRecharging.vue

@@ -32,7 +32,7 @@
                   type="textarea"
                   placeholder="请输入单号,每行一个"
                   v-model="paramsDto.systemNo"
-                  :autosize="{ minRows: 18, maxRows: 100}"
+                  :autosize="{ minRows: 18, maxRows: 500}"
                   class="item-form"
                 />
                 <span class="define-right">{{ currentRowNum }}/{{ maxRowNum }}</span>
@@ -109,7 +109,7 @@ export default {
       confirmLoading: false,
       batchListSource: [],
       currentRowNum: 0,
-      maxRowNum: 100
+      maxRowNum: 500
     }
   },
   watch: {