hurx пре 1 недеља
родитељ
комит
f057767f7d

+ 1 - 1
src/views/order/orderAssignment/index.vue

@@ -211,7 +211,7 @@ const data = reactive<PageData<OrderMainForm, OrderMainQuery>>({
     payableAmount: undefined,
     paymentStatus: undefined,
     orderSource: undefined,
-    orderStatus: undefined,
+    orderStatus: '2',
     orderTime: undefined,
     confirmTime: undefined,
     status: undefined,

+ 1 - 1
src/views/order/orderAssignment/indexProject.vue

@@ -218,7 +218,7 @@ const data = reactive<PageData<OrderMainForm, OrderMainQuery>>({
     payableAmount: undefined,
     paymentStatus: undefined,
     orderSource: undefined,
-    orderStatus: undefined,
+    orderStatus: '2',
     orderTime: undefined,
     confirmTime: undefined,
     status: undefined,

+ 4 - 3
src/views/order/orderDeliver/index.vue

@@ -80,8 +80,9 @@
             <el-button link type="primary" v-if="scope.row.orderStatus == '2' || scope.row.orderStatus == '3'" @click="handleDeliver(scope.row)"
               >发货</el-button
             >
-            <el-button link type="primary" @click="handleReview(scope.row)">查看发货信息</el-button>
-            <el-button link type="primary" @click="handleCancel(scope.row)">取消订单</el-button>
+            <el-button link type="primary" v-if="scope.row.orderStatus > '2'" @click="handleReview(scope.row)">查看发货信息</el-button>
+            <el-button link type="primary" v-else @click="handleReview(scope.row)">查看订单信息</el-button>
+            <!-- <el-button link type="primary" @click="handleCancel(scope.row)">取消订单</el-button> -->
             <el-button
               link
               type="primary"
@@ -304,7 +305,7 @@ const handleViewLogistics = (row?: OrderMainVO) => {
 const handleAffirm = (row?: OrderMainVO) => {
   router.push({
     path: '/order-manage/order-affirm',
-    query: { id: row.id, source: 'deliver' }
+    query: { id: row.id, source: 'deliver-list' }
   });
 };
 

+ 6 - 5
src/views/order/orderDeliver/indexProject.vue

@@ -71,9 +71,9 @@
             <span>{{ scope.row._crrcOrderNo || '' }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="客户名称" align="center" prop="customerName">
+        <el-table-column label="客户/供应商" align="center" prop="assigneeName">
           <template #default="scope">
-            <span>{{ scope.row.customerName || '--' }}</span>
+            <span>{{ scope.row.assigneeName || '--' }}</span>
           </template>
         </el-table-column>
         <el-table-column label="订单状态" align="center" prop="orderStatus">
@@ -89,8 +89,9 @@
             <el-button link type="primary" v-if="scope.row.orderStatus == '2' || scope.row.orderStatus == '3'" @click="handleDeliver(scope.row)"
               >发货</el-button
             >
-            <el-button link type="primary" @click="handleReview(scope.row)">查看发货信息</el-button>
-            <el-button link type="primary" @click="handleCancel(scope.row)">取消订单</el-button>
+            <el-button link type="primary" v-if="scope.row.orderStatus > '2'" @click="handleReview(scope.row)">查看发货信息</el-button>
+            <el-button link type="primary" v-else @click="handleReview(scope.row)">查看订单信息</el-button>
+            <!-- <el-button link type="primary" @click="handleCancel(scope.row)">取消订单</el-button> -->
             <el-button
               link
               type="primary"
@@ -374,7 +375,7 @@ const handleReview = (row?: OrderMainVO) => {
 const handleAffirm = (row?: OrderMainVO) => {
   router.push({
     path: '/order-manage/order-affirm',
-    query: { id: row.id, source: 'project' }
+    query: { id: row.id, source: 'delivet-project' }
   });
 };
 

+ 28 - 10
src/views/order/saleOrder/index.vue

@@ -23,7 +23,13 @@
                 <el-option v-for="dict in order_status" :key="dict.value" :label="dict.label" :value="dict.value" />
               </el-select>
             </el-form-item>
-
+            <el-form-item label="确认状态" prop="confirmStatus">
+              <el-select v-model="confirmStatus" placeholder="请选择" clearable>
+                <el-option label="待确认" value="0" />
+                <el-option label="已确认" value="1" />
+                <el-option label="已取消" value="2" />
+              </el-select>
+            </el-form-item>
             <el-form-item label="提交时间" prop="orderTime">
               <el-date-picker
                 v-model="dateRange"
@@ -70,6 +76,9 @@
             <el-button :type="queryParams.orderStatus === '2' ? 'primary' : ''" :plain="queryParams.orderStatus !== '2'" @click="handleQuery('2')"
               >待发货</el-button
             >
+            <el-button :type="queryParams.orderStatus === '3' ? 'primary' : ''" :plain="queryParams.orderStatus !== '3'" @click="handleQuery('3')"
+              >部分发货</el-button
+            >
             <!-- {{ orderStatusStats.pendingShipmentCount }} -->
             <el-button :type="queryParams.orderStatus === '4' ? 'primary' : ''" :plain="queryParams.orderStatus !== '4'" @click="handleQuery('4')"
               >已发货</el-button
@@ -106,17 +115,16 @@
             <dict-tag :options="order_source" :value="scope.row.orderSource" />
           </template>
         </el-table-column>
-        <!-- <el-table-column label="审核状态" align="center" prop="checkStatus">
-          <template #default="scope">
-            <dict-tag :options="order_check_status" :value="scope.row.checkStatus" />
-          </template>
-        </el-table-column> -->
         <el-table-column label="订单状态" align="center" prop="orderStatus">
           <template #default="scope">
             <dict-tag :options="order_status" :value="scope.row.orderStatus" />
           </template>
         </el-table-column>
-
+        <el-table-column label="确认状态" align="center" prop="orderStatus">
+          <template #default="scope">
+            {{ scope.row.orderStatus === '7' ? '已取消' : scope.row.orderStatus >= '2' ? '已确认' : '待确认' }}
+          </template>
+        </el-table-column>
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <template v-for="btn in getActionButtons(scope.row)" :key="btn.label">
@@ -176,7 +184,7 @@ const showDeliverDialog = ref(false);
 const currentOrderId = ref<string | number>();
 const currentOrderNo = ref<string>();
 const dateRange = ref<[DateModelType, DateModelType]>(['', '']);
-
+const confirmStatus = ref<string>();
 const showLogisticsDialog = ref(false);
 const logisticsOrderId = ref<string | number>();
 
@@ -319,6 +327,16 @@ const { queryParams, form, rules } = toRefs(data);
 /** 查询订单主信息列表 */
 const getList = async () => {
   loading.value = true;
+  // 确认状态映射为订单状态
+  if (confirmStatus.value === '0') {
+    queryParams.value.orderStatuses = '0,1';
+  } else if (confirmStatus.value === '1') {
+    queryParams.value.orderStatuses = '2,3,4,5,6';
+  } else if (confirmStatus.value === '2') {
+    queryParams.value.orderStatuses = '7';
+  } else {
+    queryParams.value.orderStatuses = undefined;
+  }
   const res = await listOrderMain(proxy?.addDateRange(queryParams.value, dateRange.value));
   orderMainList.value = res.rows;
   total.value = res.total;
@@ -389,7 +407,7 @@ const handleReview = (row?: OrderMainVO) => {
 const handleAffirm = (row?: OrderMainVO) => {
   router.push({
     path: '/order-manage/order-affirm',
-    query: { id: row.id }
+    query: { id: row.id, source: 'order-list' }
   });
 };
 
@@ -618,7 +636,7 @@ const getButtonsByStatus = (orderStatus: string, checkStatus: string): ActionBut
   }
 
   // 非已取消和已关闭状态:显示取消订单按钮
-  if (orderStatus !== OrderStatus.CANCELLED && orderStatus !== OrderStatus.CLOSED && orderStatus !== OrderStatus.SHIPMENT_COMPLETED) {
+  if ([OrderStatus.PENDING_PAYMENT, OrderStatus.PENDING_CONFIRM].includes(orderStatus as OrderStatus)) {
     buttons.push({ label: '取消订单', handler: handleCancel });
   }
 

+ 56 - 98
src/views/order/saleOrder/indexProject.vue

@@ -23,7 +23,13 @@
                 <el-option v-for="dict in order_status" :key="dict.value" :label="dict.label" :value="dict.value" />
               </el-select>
             </el-form-item>
-
+            <el-form-item label="确认状态" prop="confirmStatus">
+              <el-select v-model="confirmStatus" placeholder="请选择" clearable>
+                <el-option label="待确认" value="0" />
+                <el-option label="已确认" value="1" />
+                <el-option label="已取消" value="2" />
+              </el-select>
+            </el-form-item>
             <el-form-item label="提交时间" prop="orderTime">
               <el-date-picker
                 v-model="dateRange"
@@ -70,6 +76,9 @@
             <el-button :type="queryParams.orderStatus === '2' ? 'primary' : ''" :plain="queryParams.orderStatus !== '2'" @click="handleQuery('2')"
               >待发货</el-button
             >
+            <el-button :type="queryParams.orderStatus === '3' ? 'primary' : ''" :plain="queryParams.orderStatus !== '3'" @click="handleQuery('3')"
+              >部分发货</el-button
+            >
             <!-- {{ orderStatusStats.pendingShipmentCount }} -->
             <el-button :type="queryParams.orderStatus === '4' ? 'primary' : ''" :plain="queryParams.orderStatus !== '4'" @click="handleQuery('4')"
               >已发货</el-button
@@ -91,21 +100,21 @@
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="订单时间" align="center" prop="orderTime" />
         <el-table-column label="订单编号" align="center" prop="orderNo" />
-        <el-table-column label="客户编号" align="center" prop="customerCode" />
-        <el-table-column label="订单总金额" align="center" prop="totalAmount" />
-        <el-table-column label="支付方式" align="center" prop="payType">
+        <el-table-column label="关联单号" align="center" prop="parentOrderNo" :resizable="false" />
+        <el-table-column label="平台\项目订单号" align="center" prop="projectOrderNo">
           <template #default="scope">
-            <dict-tag :options="pay_method" :value="scope.row.payType" />
+            <span>{{ scope.row._crrcOrderNo || '' }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="业务员" align="center" prop="businessStaff" />
-        <el-table-column label="客服" align="center" prop="customerService" />
-        <el-table-column label="归属部门" align="center" prop="businessDept" />
+        <!-- <el-table-column label="客户编号" align="center" prop="customerCode" /> -->
+        <el-table-column label="订单总金额" align="center" prop="totalAmount" />
         <el-table-column label="订单来源" align="center" prop="orderSource">
           <template #default="scope">
             <dict-tag :options="order_source" :value="scope.row.orderSource" />
           </template>
         </el-table-column>
+        <el-table-column label="所属项目" align="center" prop="dataSourceStr" />
+
         <!-- <el-table-column label="审核状态" align="center" prop="checkStatus">
           <template #default="scope">
             <dict-tag :options="order_check_status" :value="scope.row.checkStatus" />
@@ -116,7 +125,11 @@
             <dict-tag :options="order_status" :value="scope.row.orderStatus" />
           </template>
         </el-table-column>
-
+        <el-table-column label="确认状态" align="center" prop="orderStatus">
+          <template #default="scope">
+            {{ scope.row.orderStatus === '7' ? '已取消' : scope.row.orderStatus >= '2' ? '已确认' : '待确认' }}
+          </template>
+        </el-table-column>
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <template v-for="btn in getActionButtons(scope.row)" :key="btn.label">
@@ -152,7 +165,7 @@ import {
 import { OrderMainVO, OrderMainQuery, OrderMainForm } from '@/api/order/orderMain/types';
 import DeliverDialog from './deliverDialog.vue';
 import LogisticsDetail from './logisticsDetail.vue';
-
+import { getOrderMainCrrcExt } from '@/api/order/orderMainCrrcExt';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { order_status, order_check_status, pay_method, order_source } = toRefs<any>(
   proxy?.useDict('order_status', 'order_check_status', 'pay_method', 'order_source')
@@ -176,7 +189,7 @@ const showDeliverDialog = ref(false);
 const currentOrderId = ref<string | number>();
 const currentOrderNo = ref<string>();
 const dateRange = ref<[DateModelType, DateModelType]>(['', '']);
-
+const confirmStatus = ref<string>();
 const showLogisticsDialog = ref(false);
 const logisticsOrderId = ref<string | number>();
 
@@ -319,13 +332,43 @@ const { queryParams, form, rules } = toRefs(data);
 /** 查询订单主信息列表 */
 const getList = async () => {
   loading.value = true;
+  // 确认状态映射为订单状态
+  if (confirmStatus.value === '0') {
+    queryParams.value.orderStatuses = '0,1';
+  } else if (confirmStatus.value === '1') {
+    queryParams.value.orderStatuses = '2,3,4,5,6';
+  } else if (confirmStatus.value === '2') {
+    queryParams.value.orderStatuses = '7';
+  } else {
+    queryParams.value.orderStatuses = undefined;
+  }
   const res = await listOrderMain(proxy?.addDateRange(queryParams.value, dateRange.value));
   orderMainList.value = res.rows;
+  await fetchCrrcOrderNos(orderMainList.value);
   total.value = res.total;
   loading.value = false;
   queryOrderStatusStatsMethod();
 };
 
+// 批量获取平台订单号
+const fetchCrrcOrderNos = async (rows: OrderMainVO[]) => {
+  const results = await Promise.allSettled(
+    rows.map((row) => {
+      const id = row.parentOrderId || row.id;
+      if (!id) return Promise.resolve(null);
+      return getOrderMainCrrcExt(id);
+    })
+  );
+  rows.forEach((row, i) => {
+    const result = results[i];
+    if (result.status === 'fulfilled') {
+      (row as any)._crrcOrderNo = result.value?.data?.crrcOrderNo || '';
+    } else {
+      (row as any)._crrcOrderNo = '';
+    }
+  });
+};
+
 const queryOrderStatusStatsMethod = async () => {
   const res = await queryOrderStatusStats();
   orderStatusStats.value = res as any;
@@ -389,95 +432,10 @@ const handleReview = (row?: OrderMainVO) => {
 const handleAffirm = (row?: OrderMainVO) => {
   router.push({
     path: '/order-manage/order-affirm',
-    query: { id: row.id }
+    query: { id: row.id, source: 'order-project' }
   });
 };
 
-/** 审核按钮操作 */
-const handleCheck = async (row?: OrderMainVO) => {
-  const oldValue = row.checkStatus; // 保存旧值
-
-  // 弹出审核选择对话框
-  try {
-    await ElMessageBox({
-      title: '审核',
-      message: h('div', { style: 'padding: 10px 0' }, [
-        h('p', { style: 'margin-bottom: 15px; font-size: 14px' }, '请选择审核结果:'),
-        h('div', { style: 'display: flex; flex-direction: column; gap: 12px' }, [
-          h(
-            'label',
-            {
-              style: 'display: flex; align-items: center; cursor: pointer; font-size: 14px',
-              onClick: () => {
-                checkStatusValue.value = '1';
-                const radio = document.querySelector('input[name="checkStatus"][value="1"]') as HTMLInputElement;
-                if (radio) radio.checked = true;
-              }
-            },
-            [
-              h('input', {
-                type: 'radio',
-                name: 'checkStatus',
-                value: '1',
-                checked: true,
-                style: 'margin-right: 8px; cursor: pointer',
-                onChange: () => {
-                  checkStatusValue.value = '1';
-                }
-              }),
-              h('span', null, '审核通过')
-            ]
-          ),
-          h(
-            'label',
-            {
-              style: 'display: flex; align-items: center; cursor: pointer; font-size: 14px',
-              onClick: () => {
-                checkStatusValue.value = '2';
-                const radio = document.querySelector('input[name="checkStatus"][value="2"]') as HTMLInputElement;
-                if (radio) radio.checked = true;
-              }
-            },
-            [
-              h('input', {
-                type: 'radio',
-                name: 'checkStatus',
-                value: '2',
-                style: 'margin-right: 8px; cursor: pointer',
-                onChange: () => {
-                  checkStatusValue.value = '2';
-                }
-              }),
-              h('span', null, '驳回')
-            ]
-          )
-        ])
-      ]),
-      showCancelButton: true,
-      confirmButtonText: '确定',
-      cancelButtonText: '取消',
-      beforeClose: (action, instance, done) => {
-        if (action === 'confirm') {
-          done();
-        } else {
-          done();
-        }
-      }
-    });
-
-    // 调用接口,传入用户选择的值
-    await changeCheckStatus(row.id, checkStatusValue.value);
-    getList();
-    proxy?.$modal.msgSuccess('操作成功');
-  } catch (error) {
-    // 用户取消或操作失败
-    if (error !== 'cancel' && error !== 'close') {
-      row.checkStatus = oldValue; // 失败回滚
-      proxy?.$modal.msgError('操作失败,请重试');
-    }
-  }
-};
-
 /** 取消订单按钮操作 */
 const handleCancel = async (row?: OrderMainVO) => {
   try {
@@ -618,7 +576,7 @@ const getButtonsByStatus = (orderStatus: string, checkStatus: string): ActionBut
   }
 
   // 非已取消和已关闭状态:显示取消订单按钮
-  if (orderStatus !== OrderStatus.CANCELLED && orderStatus !== OrderStatus.CLOSED && orderStatus !== OrderStatus.SHIPMENT_COMPLETED) {
+  if ([OrderStatus.PENDING_PAYMENT, OrderStatus.PENDING_CONFIRM].includes(orderStatus as OrderStatus)) {
     buttons.push({ label: '取消订单', handler: handleCancel });
   }
 

+ 7 - 3
src/views/order/saleOrder/orderAffirm.vue

@@ -182,7 +182,7 @@
         <span>分配信息</span>
       </template>
       <el-descriptions :column="2" border class="custom-descriptions">
-        <el-descriptions-item v-if="orderInfo.dataSource" label="供应商名称">{{ orderInfo.assigneeName }}</el-descriptions-item>
+        <el-descriptions-item label="名称">{{ orderInfo.assigneeName }}</el-descriptions-item>
         <el-descriptions-item label="分配备注">{{ orderInfo.assigneeRemark }}</el-descriptions-item>
       </el-descriptions>
     </el-card>
@@ -543,10 +543,14 @@ const confirmOrder = async () => {
 
     // 根据来源返回对应列表页
     const source = route.query.source;
-    if (source === 'project') {
+    if (source === 'delivet-project') {
       router.push('/order-manage/order-delivet-project');
-    } else {
+    } else if (source === 'deliver-list') {
       router.push('/order-manage/order-deliver-list');
+    } else if (source === 'order-list') {
+      router.push('/order-manage/order-list');
+    } else if (source === 'order-project') {
+      router.push('/order-manage/order-list-project');
     }
   } catch (error) {
     console.error('确认订单失败:', error);