瀏覽代碼

外部订单批量审核

wangxy 1 天之前
父節點
當前提交
470b87af12
共有 2 個文件被更改,包括 69 次插入3 次删除
  1. 8 0
      src/api/store/externalOrder.js
  2. 61 3
      src/views/store/externalOrder/index.vue

+ 8 - 0
src/api/store/externalOrder.js

@@ -30,6 +30,14 @@ export function auditExternalOrder(id) {
   })
 }
 
+export function batchAuditExternalOrder(orderIds) {
+  return request({
+    url: '/store/externalOrder/auditBatch',
+    method: 'post',
+    data: orderIds
+  })
+}
+
 export function cancelExternalOrder(id) {
   return request({
     url: '/store/externalOrder/cancel/' + id,

+ 61 - 3
src/views/store/externalOrder/index.vue

@@ -4,6 +4,7 @@
       <el-tab-pane label="全部" name="all"></el-tab-pane>
       <el-tab-pane label="未审核" name="1"></el-tab-pane>
       <el-tab-pane label="审核通过" name="2"></el-tab-pane>
+      <el-tab-pane label="发货中" name="5"></el-tab-pane>
       <el-tab-pane label="已发货" name="3"></el-tab-pane>
       <el-tab-pane label="已回款" name="4"></el-tab-pane>
       <el-tab-pane label="订单拒收" name="-4"></el-tab-pane>
@@ -190,6 +191,18 @@
           v-hasPermi="['his:externalOrder:create']"
         >创建外部订单</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-s-check"
+          size="mini"
+          :disabled="selectedRows.length === 0"
+          :loading="batchAuditLoading"
+          @click="handleBatchAudit"
+          v-hasPermi="['store:externalOrder:audit']"
+        >批量审核</el-button>
+      </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -204,7 +217,8 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table :key="tableKey" ref="orderTable" v-loading="loading" border :data="orderList" row-key="orderId" style="width:100%" height="500" show-summary :summary-method="getSummaries" @filter-change="handleFilterChange">
+    <el-table :key="tableKey" ref="orderTable" v-loading="loading" border :data="orderList" row-key="orderId" style="width:100%" height="500" show-summary :summary-method="getSummaries" @filter-change="handleFilterChange" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="50" :reserve-selection="true" fixed="left" :selectable="checkAuditSelectable" />
       <el-table-column label="外部订单号" align="center" prop="orderCode" width="170" fixed="left" column-key="orderCode" :filters="getFilters('orderCode')" :filtered-value="columnFilters.orderCode" />
       <el-table-column label="收货人" align="center" prop="userName" width="90" column-key="userName" :filters="getFilters('userName')" :filtered-value="columnFilters.userName" />
       <el-table-column label="商品名称*数量" align="center" prop="productInfo" width="220" show-overflow-tooltip column-key="productNames" :filters="getFilters('productNames')" :filtered-value="columnFilters.productNames" />
@@ -223,6 +237,7 @@
         <template slot-scope="scope">
           <el-tag v-if="scope.row.status==1" type="warning" size="mini">未审核</el-tag>
           <el-tag v-else-if="scope.row.status==2" type="success" size="mini">审核通过</el-tag>
+          <el-tag v-else-if="scope.row.status==5" size="mini">发货中</el-tag>
           <el-tag v-else-if="scope.row.status==3" type="primary" size="mini">已发货</el-tag>
           <el-tag v-else-if="scope.row.status==4" size="mini">已回款</el-tag>
           <el-tag v-else-if="scope.row.status==-4" type="danger" size="mini">订单拒收</el-tag>
@@ -435,6 +450,9 @@
         <el-form-item :label="form.payType == 3 ? '定金' : '支付金额'" prop="payMoney">
           <el-input v-model="form.payMoney" placeholder="请输入支付金额" clearable size="small" style="width: 200px;" />
         </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" :rows="3" placeholder="请输入备注" clearable style="width: 400px;" />
+        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -448,6 +466,7 @@
         <el-descriptions-item label="订单状态">
           <el-tag v-if="detailData.status==1" type="warning" size="mini">未审核</el-tag>
           <el-tag v-else-if="detailData.status==2" type="success" size="mini">审核通过</el-tag>
+          <el-tag v-else-if="detailData.status==5" size="mini">发货中</el-tag>
           <el-tag v-else-if="detailData.status==3" type="primary" size="mini">已发货</el-tag>
           <el-tag v-else-if="detailData.status==4" size="mini">已回款</el-tag>
           <el-tag v-else-if="detailData.status==-4" type="danger" size="mini">订单拒收</el-tag>
@@ -693,7 +712,7 @@
 </template>
 
 <script>
-import { listExternalOrder, createExternalOrder, getExternalOrder, auditExternalOrder, cancelExternalOrder, approveExternalOrder, exportExternalOrder, getExternalOrderExpress, syncExternalOrderExpress, editExternalOrder } from "@/api/store/externalOrder";
+import { listExternalOrder, createExternalOrder, getExternalOrder, auditExternalOrder, batchAuditExternalOrder, cancelExternalOrder, approveExternalOrder, exportExternalOrder, getExternalOrderExpress, syncExternalOrderExpress, editExternalOrder } from "@/api/store/externalOrder";
 import { getCompanyList } from "@/api/company/company";
 import { listUserAddress } from "@/api/store/userAddress";
 import { listStoreProduct, listStore } from "@/api/store/storeProduct";
@@ -712,6 +731,8 @@ export default {
       activeStatus: "all",
       loading: true,
       exportLoading: false,
+      batchAuditLoading: false,
+      selectedRows: [],
       showSearch: true,
       total: 0,
       tableKey: 0,
@@ -818,6 +839,7 @@ export default {
         payType: null,
         totalPrice: null,
         payMoney: null,
+        remark: null,
         products: []
       },
       rules: {
@@ -860,7 +882,7 @@ export default {
       userStatusOptions: [],
       deptOptions: [],
       // 列头筛选-枚举字段展示文案映射
-      statusMap: { 1: '未审核', 2: '审核通过', 3: '已发货', 4: '已回款', '-4': '订单拒收', '-3': '已取消' },
+      statusMap: { 1: '未审核', 2: '审核通过', 5: '发货中', 3: '已发货', 4: '已回款', '-4': '订单拒收', '-3': '已取消' },
       orderTypeMap: { 1: '外部订单', 2: '套餐包', 3: '问诊', 4: '积分' },
       memberSexMap: { 1: '男', 2: '女' },
       // 列头筛选-各列选中值(单选语义,用数组承载以适配 Element filtered-value)
@@ -1197,6 +1219,7 @@ export default {
         payType: null,
         totalPrice: null,
         payMoney: null,
+        remark: null,
         products: []
       };
       this.drugList = [];
@@ -1360,6 +1383,7 @@ export default {
             totalPrice: parseFloat(this.form.totalPrice) || 0,
             payMoney: parseFloat(this.form.payMoney) || 0,
             receiverPhone: this.form.receiverPhone,
+            remark: this.form.remark,
             storeId: this.selectedStoreId,
             products: products
           };
@@ -1422,6 +1446,40 @@ export default {
         });
       });
     },
+    checkAuditSelectable(row) {
+      return row.status == 1;
+    },
+    handleSelectionChange(selection) {
+      this.selectedRows = selection;
+    },
+    handleBatchAudit() {
+      if (this.selectedRows.length === 0) {
+        this.msgError("请至少选择一条未审核订单");
+        return;
+      }
+      const orderIds = this.selectedRows.map(r => r.orderId);
+      this.$confirm("确认批量审核选中的 " + orderIds.length + " 条订单?审核后将变为审核通过状态", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        this.batchAuditLoading = true;
+        return batchAuditExternalOrder(orderIds);
+      }).then(response => {
+        this.batchAuditLoading = false;
+        if (response.code === 200) {
+          this.msgSuccess(response.msg || "批量审核成功");
+          if (this.$refs.orderTable) {
+            this.$refs.orderTable.clearSelection();
+          }
+          this.getList();
+        } else {
+          this.msgError(response.msg);
+        }
+      }).catch(() => {
+        this.batchAuditLoading = false;
+      });
+    },
     handleCancel(row) {
       this.$confirm("确认取消该订单?取消后订单将变为已取消状态", "警告", {
         confirmButtonText: "确定",