Kaynağa Gözat

修改订单分配

hurx 2 ay önce
ebeveyn
işleme
471164d8e7

+ 14 - 0
src/api/order/orderMain/index.ts

@@ -76,6 +76,20 @@ export const delOrderMain = (id: string | number | Array<string | number>) => {
   });
 };
 
+/**
+ * 关闭订单
+ * @param id
+ */
+export const closeOrderMain = (id: string | number | Array<string | number>) => {
+  const ids = Array.isArray(id) ? id : [id];
+
+  return request({
+    url: '/order/orderMain/closeOrder',
+    method: 'post',
+    params: { ids }
+  });
+};
+
 /**
  * 查询数量
  * @param query

+ 12 - 0
src/api/order/orderProduct/types.ts

@@ -9,6 +9,12 @@ export interface OrderProductVO {
    */
   orderId: string | number;
 
+  originalItemId: string | number;
+
+  assignedChildOrderId: string | number;
+
+  assignmentStatus: string;
+
   /**
    * 订单编号
    */
@@ -164,6 +170,12 @@ export interface OrderProductForm extends BaseEntity {
    */
   orderId?: string | number;
 
+  originalItemId?: string | number;
+
+  assignedChildOrderId?: string | number;
+
+  assignmentStatus?: string;
+
   /**
    * 订单编号
    */

+ 26 - 29
src/views/order/orderAssignment/splitAssignDialog.vue

@@ -54,7 +54,7 @@
             :data="pendingProducts"
             border
             style="width: 100%"
-            max-height="400"
+            max-height="800"
             @selection-change="handlePendingSelectionChange"
           >
             <el-table-column type="selection" width="55" align="center" />
@@ -93,7 +93,7 @@
         </el-tab-pane>
 
         <el-tab-pane label="已分配" name="assigned">
-          <el-table :data="assignedProducts" border style="width: 100%" max-height="400">
+          <el-table :data="assignedProducts" border style="width: 100%" max-height="800">
             <el-table-column label="序号" width="80" align="center">
               <template #default="scope">{{ scope.$index + 1 }}</template>
             </el-table-column>
@@ -120,12 +120,6 @@
                 <dict-tag :options="order_assignment_status" :value="scope.row.assignmentStatus" />
               </template>
             </el-table-column>
-            <el-table-column label="操作" width="150" align="center" fixed="right">
-              <template #default="scope">
-                <el-button link type="warning" size="small" @click="handleReassign(scope.row)">转分配</el-button>
-                <el-button link type="primary" size="small" @click="handleAssignProduct(scope.row)">分配</el-button>
-              </template>
-            </el-table-column>
           </el-table>
         </el-tab-pane>
 
@@ -143,18 +137,9 @@
     </div>
   </el-drawer>
 
-  <!-- 分配对话框 -->
-  <el-dialog v-model="assignDialog.visible" title="分配" width="60%" :close-on-click-modal="false">
-    <div class="assign-dialog-content">
-      <!-- 提示信息 -->
-      <!-- <el-alert
-        title="说明:根据是自营还是伙伴商去进行展示分配给供应商还是伙伴商"
-        type="warning"
-        :closable="false"
-        show-icon
-        style="margin-bottom: 20px"
-      /> -->
-
+  <!-- 分配抽屉 -->
+  <el-drawer v-model="assignDialog.visible" title="分配" size="50%" direction="rtl" :close-on-click-modal="true">
+    <div class="assign-drawer-content">
       <!-- 分配目标选择 -->
       <div class="assign-target-section">
         <el-row :gutter="20">
@@ -199,7 +184,7 @@
           :data="assignForm.productList"
           border
           style="width: 100%"
-          max-height="400"
+          max-height="800"
           @selection-change="handleAssignProductSelectionChange"
         >
           <el-table-column type="selection" width="55" align="center" />
@@ -234,10 +219,12 @@
     </div>
 
     <template #footer>
-      <el-button @click="assignDialog.visible = false">取 消</el-button>
-      <el-button :loading="buttonLoading" type="primary" @click="submitAssign">确定分配</el-button>
+      <div class="drawer-footer">
+        <el-button @click="assignDialog.visible = false">取 消</el-button>
+        <el-button :loading="buttonLoading" type="primary" @click="submitAssign">确定分配</el-button>
+      </div>
     </template>
-  </el-dialog>
+  </el-drawer>
 </template>
 
 <script setup name="SplitAssignDialog" lang="ts">
@@ -343,9 +330,9 @@ const open = async (orderId: string | number) => {
         assignQuantity: item.orderQuantity
       }));
 
-      // 模拟待分配和已分配商品
-      pendingProducts.value = productList.slice(0, 8);
-      assignedProducts.value = productList.slice(8);
+      // 待分配/已分配商品(按 assignmentStatus 过滤:0-待分配,1-已分配)
+      pendingProducts.value = productList.filter((item: any) => item.assignmentStatus === '0');
+      assignedProducts.value = productList.filter((item: any) => item.assignmentStatus === '1');
     }
 
     // 模拟分配记录
@@ -538,8 +525,10 @@ defineExpose({
   overflow-y: auto;
 }
 
-.assign-dialog-content {
-  padding: 0 10px;
+.assign-drawer-content {
+  padding: 0 20px 20px;
+  height: calc(100% - 80px);
+  overflow-y: auto;
 }
 
 .assign-target-section {
@@ -575,6 +564,14 @@ defineExpose({
   margin-top: 20px;
 }
 
+.drawer-footer {
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+  padding: 10px 20px;
+  border-top: 1px solid #e4e7ed;
+}
+
 .detail-header {
   padding: 15px 20px;
   background-color: #f5f7fa;

+ 30 - 13
src/views/order/orderDeliver/index.vue

@@ -46,35 +46,35 @@
         <el-row :gutter="10" class="mb8">
           <el-col :span="19"> 发货单信息列表 </el-col>
           <el-col :span="1.5">
-            <el-button type="primary" plain>关闭订单</el-button>
+            <el-button type="primary" @click="handleCloseOrder()" :disabled="!ids.length" plain>关闭订单</el-button>
           </el-col>
           <el-col :span="1.5">
-            <el-button type="primary" plain>删除订单</el-button>
+            <el-button type="primary" @click="handleDelete()" :disabled="!ids.length" plain>删除订单</el-button>
           </el-col>
           <el-col :span="1.5">
-            <el-button type="primary" plain>导出订单</el-button>
+            <el-button type="primary" :disabled="!ids.length" plain>导出订单</el-button>
           </el-col>
         </el-row>
       </template>
 
       <el-table v-loading="loading" border :data="orderMainList" @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55" align="center" />
-        <el-table-column label="发货单编号" align="center" prop="deliverCode" />
-        <el-table-column label="订单编号" align="center" prop="orderNo" />
-        <el-table-column label="客户名称" align="center" prop="customerName" />
-        <el-table-column label="发货时间" align="center" prop="deliverTime" />
-        <el-table-column label="签收时间" align="center" prop="deliverTime" />
-        <el-table-column label="发货方式" align="center" prop="deliverMethod">
+        <el-table-column label="发货单编号" align="center" prop="deliverCode" :resizable="false" />
+        <el-table-column label="订单编号" align="center" prop="orderNo" :resizable="false" />
+        <el-table-column label="客户名称" align="center" prop="customerName" :resizable="false" />
+        <el-table-column label="发货时间" align="center" prop="deliverTime" :resizable="false" />
+        <el-table-column label="签收时间" align="center" prop="deliverTime" :resizable="false" />
+        <el-table-column label="发货方式" align="center" prop="deliverMethod" :resizable="false">
           <template #default="scope">
             <dict-tag :options="deliver_method" :value="scope.row.deliverMethod" />
           </template>
         </el-table-column>
-        <el-table-column label="包裹状态" align="center" prop="orderStatus">
+        <el-table-column label="包裹状态" align="center" prop="orderStatus" :resizable="false">
           <template #default="scope">
             <dict-tag :options="order_status" :value="scope.row.orderStatus" />
           </template>
         </el-table-column>
-        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" :resizable="false">
           <template #default="scope">
             <el-button link type="primary" @click="handleDeliver(scope.row)">发货</el-button>
             <el-button link type="primary" @click="handleReview(scope.row)">查看发货信息</el-button>
@@ -92,7 +92,15 @@
 </template>
 
 <script setup name="OrderMain" lang="ts">
-import { listOrderMain, getOrderMain, delOrderMain, addOrderMain, updateOrderMain, queryOrderStatusStats } from '@/api/order/orderMain';
+import {
+  listOrderMain,
+  getOrderMain,
+  delOrderMain,
+  addOrderMain,
+  updateOrderMain,
+  queryOrderStatusStats,
+  closeOrderMain
+} from '@/api/order/orderMain';
 import { OrderMainVO, OrderMainQuery, OrderMainForm } from '@/api/order/orderMain/types';
 import DeliverDialog from '../saleOrder/deliverDialog.vue';
 
@@ -210,7 +218,7 @@ const data = reactive<PageData<OrderMainForm, OrderMainQuery>>({
     paymentStatus: undefined,
     orderSource: undefined,
     orderStatus: undefined,
-    orderStatuses: '2,3',
+    orderStatuses: '2,3,4',
     orderTime: undefined,
     confirmTime: undefined,
     shippingTime: undefined,
@@ -277,6 +285,15 @@ const handleQuery = (orderStatus?: string) => {
   getList();
 };
 
+/** 关闭订单操作 */
+const handleCloseOrder = async (row?: OrderMainVO) => {
+  const _ids = row?.id || ids.value;
+  await proxy?.$modal.confirm('是否确认关闭订单主信息编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
+  await closeOrderMain(_ids);
+  proxy?.$modal.msgSuccess('关闭成功');
+  await getList();
+};
+
 /** 重置按钮操作 */
 const resetQuery = () => {
   dateRange.value = ['', ''];

+ 13 - 3
src/views/order/saleOrder/index.vue

@@ -42,13 +42,13 @@
         <el-row :gutter="10" class="mb8">
           <el-col :span="15"> 销售订单信息列表 </el-col>
           <el-col :span="1.5">
-            <el-button type="primary" plain>关闭订单</el-button>
+            <el-button type="primary" @click="handleCloseOrder()" :disabled="!ids.length" plain>关闭订单</el-button>
           </el-col>
           <el-col :span="1.5">
-            <el-button type="primary" @click="handleDelete()" plain>删除订单</el-button>
+            <el-button type="primary" @click="handleDelete()" :disabled="!ids.length" plain>删除订单</el-button>
           </el-col>
           <el-col :span="1.5">
-            <el-button type="primary" plain>导出订单</el-button>
+            <el-button type="primary" plain :disabled="!ids.length">导出订单</el-button>
           </el-col>
           <el-col :span="1.5">
             <el-button
@@ -159,6 +159,7 @@ import {
   getOrderMain,
   delOrderMain,
   addOrderMain,
+  closeOrderMain,
   updateOrderMain,
   queryOrderStatusStats,
   changeStatus,
@@ -343,6 +344,15 @@ const queryOrderStatusStatsMethod = async () => {
   orderStatusStats.value = res as any;
 };
 
+/** 关闭订单操作 */
+const handleCloseOrder = async (row?: OrderMainVO) => {
+  const _ids = row?.id || ids.value;
+  await proxy?.$modal.confirm('是否确认关闭订单主信息编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
+  await closeOrderMain(_ids);
+  proxy?.$modal.msgSuccess('关闭成功');
+  await getList();
+};
+
 /** 取消按钮 */
 const cancel = () => {
   reset();