gongchunyi
11 小时以前 78709b775eece2cbd8e4385829c658bc1691ff02
fix: 移除订单状态
已修改2个文件
128 ■■■■ 文件已修改
src/api/salesManagement/salesLedger.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue 120 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/salesManagement/salesLedger.js
@@ -230,14 +230,6 @@
  })
}
// 标记订单完成
export function markOrderCompleted(data) {
  return request({
    url: "/sales/ledger/markOrderCompleted",
    method: "post",
    data,
  })
}
// 递增打印次数
export function incrementPrintCount(data) {
src/views/salesManagement/salesLedger/index.vue
@@ -817,17 +817,6 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="8" :lg="8">
            <el-form-item label="订单状态:">
              <el-select v-model="searchForm.orderStatus"
                         placeholder="请选择"
                         clearable
                         style="width: 100%">
                <el-option label="进行中" :value="0" />
                <el-option label="已完成" :value="1" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label=" ">
              <div style="width: 100%; text-align: right;">
@@ -873,9 +862,6 @@
            <el-button type="primary"
                       @click="handleReverseAudit"
                       :disabled="isBatchButtonDisabled('reverseAudit')">反审</el-button>
            <el-button type="warning"
                       @click="handleMarkCompleted"
                       :disabled="isBatchButtonDisabled('markCompleted')">标记完成</el-button>
            <el-button type="primary"
                       @click="handleSalesStock"
                       :disabled="isBatchButtonDisabled('stock')">入库</el-button>
@@ -893,9 +879,6 @@
            <el-button type="primary"
                       @click="handleReverseAudit"
                       :disabled="isBatchButtonDisabled('reverseAudit')">反审</el-button>
            <el-button type="warning"
                       @click="handleMarkCompleted"
                       :disabled="isBatchButtonDisabled('markCompleted')">标记完成</el-button>
            <el-button type="primary"
                       @click="handleBulkDelivery"
                       :disabled="isBatchButtonDisabled('delivery')">发货</el-button>
@@ -904,27 +887,12 @@
          <el-space v-else-if="activeStatusTab === 'delivered'"
                    wrap
                    class="sales-ledger-toolbar-group">
            <el-button type="warning"
                       @click="handleMarkCompleted"
                       :disabled="isBatchButtonDisabled('markCompleted')">标记完成</el-button>
            <el-button type="primary"
                       @click="handleReverseAudit"
                       :disabled="isBatchButtonDisabled('reverseAudit')">反审</el-button>
            <el-button @click="handleOut">导出</el-button>
          </el-space>
          <el-space v-else-if="activeStatusTab === 'completed'"
                    wrap
                    class="sales-ledger-toolbar-group">
            <el-button @click="handleOut">导出</el-button>
            <el-button type="primary"
                       plain
                       @click="handlePrintCommand('salesOrder')"
                       :disabled="isBatchButtonDisabled('print')">打印单据</el-button>
            <el-button type="primary"
                       plain
                       @click="handlePrintLabel"
                       :disabled="isBatchButtonDisabled('print')">打印标签</el-button>
          </el-space>
          <el-space v-else-if="activeStatusTab === 'all'"
                    wrap
                    class="sales-ledger-toolbar-group">
@@ -1071,16 +1039,6 @@
                    type="info">-</el-tag>
          </template>
        </el-table-column>
        <el-table-column label="订单状态"
                         min-width="90"
                         align="center">
          <template #default="scope">
            <el-tag v-if="Number(scope.row.orderStatus) === 1"
                    type="success">已完成</el-tag>
            <el-tag v-else
                    type="info">进行中</el-tag>
          </template>
        </el-table-column>
        <el-table-column label="标签打印"
                         min-width="90"
                         align="center">
@@ -1122,19 +1080,17 @@
          <template #default="scope">
            <el-button link
                       type="primary"
                       @click="openForm('edit', scope.row)"
                       :disabled="Number(scope.row.orderStatus) === 1">编辑</el-button>
                       @click="openForm('edit', scope.row)">编辑</el-button>
            <el-button link
                       type="primary"
                       @click="openProcessFlowSelect(scope.row)"
                       :disabled="Number(scope.row.reviewStatus) !== 1 || Number(scope.row.orderStatus) === 1">工艺路线</el-button>
                       :disabled="Number(scope.row.reviewStatus) !== 1">工艺路线</el-button>
            <el-button link
                       type="primary"
                       @click="downLoadFile(scope.row)">附件</el-button>
            <el-button link
                       type="primary"
                       @click="openLedgerQrDialog(scope.row)"
                       :disabled="Number(scope.row.orderStatus) === 1">二维码</el-button>
                       @click="openLedgerQrDialog(scope.row)">二维码</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -1174,9 +1130,9 @@
    </template>
    <FormDialog v-if="!isFormPageMode"
                v-model="dialogFormVisible"
                :title="isCompletedOrder ? '查看销售台账页面(已完成)' : operationType === 'add' ? '新增销售台账页面' : operationType === 'view' ? '查看销售台账页面' : '编辑销售台账页面'"
                :title="operationType === 'add' ? '新增销售台账页面' : operationType === 'view' ? '查看销售台账页面' : '编辑销售台账页面'"
                :width="'70%'"
                :operation-type="isCompletedOrder || operationType === 'view' ? 'detail' : operationType"
                :operation-type="operationType === 'view' ? 'detail' : operationType"
                @close="closeDia"
                @confirm="submitForm"
                @cancel="closeDia">
@@ -1859,9 +1815,9 @@
                         :on-success="handleUploadSuccess"
                         :on-remove="handleRemove">
                <el-button type="primary"
                           v-if="operationType !== 'view' || isCompletedOrder">上传</el-button>
                           v-if="operationType !== 'view'">上传</el-button>
                <template #tip
                          v-if="operationType !== 'view' || isCompletedOrder">
                          v-if="operationType !== 'view'">
                  <div class="el-upload__tip">
                    文件格式支持
                    doc,docx,xls,xlsx,ppt,pptx,pdf,txt,xml,jpg,jpeg,png,gif,bmp,rar,zip,7z
@@ -2623,7 +2579,6 @@
    getSalesLabel,
    salesStock,
    counterReview,
    markOrderCompleted,
    incrementPrintCount,
  } from "@/api/salesManagement/salesLedger.js";
  import { modelList, productTreeList } from "@/api/basicData/product.js";
@@ -2835,8 +2790,7 @@
  // 用户信息表单弹框数据
  const operationType = ref("");
  const dialogFormVisible = ref(false);
  // 已完成订单标记:view 模式但附件上传仍可用
  const isCompletedOrder = ref(false);
  // 已审核订单编辑模式:只能修改单价,其他字段禁用
  const isReviewedEdit = ref(false);
  const data = reactive({
@@ -2852,7 +2806,6 @@
      deliveryStatus: undefined, // 发货状态:1未发货 2审批中 3审批不通过 4审批通过 5已发货 6部分发货
      stockStatus: undefined, // 入库状态:0未入库 1部分入库 2已入库
      reviewStatus: undefined, // 审核状态:0待审核 1已审核 2已反审
      orderStatus: undefined, // 订单状态:0进行中 1已完成
    },
    form: {
      salesContractNo: "",
@@ -3923,14 +3876,12 @@
    { key: "reverseReviewed", label: "反审核" },
    { key: "stocked", label: "已入库" },
    { key: "delivered", label: "已发货" },
    { key: "completed", label: "已完成" },
  ];
  const resetStatusFilters = () => {
    searchForm.reviewStatus = undefined;
    searchForm.stockStatus = undefined;
    searchForm.deliveryStatus = undefined;
    searchForm.orderStatus = undefined;
  };
  const handleStatusTabChange = tabKey => {
@@ -3954,9 +3905,6 @@
      case "delivered":
        searchForm.deliveryStatus = 5;
        break;
      case "completed":
        searchForm.orderStatus = 1;
        break;
      default:
        break;
    }
@@ -3973,17 +3921,13 @@
    handleQuery();
  };
  /** 批量按钮禁用判断:根据选中行的审核状态和订单状态控制按钮可用性
  /** 批量按钮禁用判断:根据选中行的审核状态控制按钮可用性
   *  未审核(0):只能审核、删除、编辑
   *  已审核(1):可以反审、入库、发货、导出、打印、工艺路线
   *  已完成(orderStatus=1):所有操作按钮禁用
   *  未选中任何行时所有批量按钮禁用
   */
  const isBatchButtonDisabled = (action) => {
    if (selectedRows.value.length === 0) return true;
    const hasCompleted = selectedRows.value.some(r => Number(r.orderStatus) === 1);
    // 已完成订单:所有操作按钮禁用
    if (hasCompleted && action !== 'markCompleted') return true;
    const statuses = selectedRows.value.map(r => Number(r.reviewStatus));
    const allUnreviewed = statuses.every(s => s === 0);
    const allReviewed = statuses.every(s => s === 1);
@@ -4002,9 +3946,6 @@
        return !allUnreviewed;
      case 'print':
        return !allReviewed;
      case 'markCompleted':
        // 只有已审核且未完成的订单才能标记完成
        return !allReviewed || hasCompleted;
      default:
        return false;
    }
@@ -4123,33 +4064,7 @@
    }
  };
  /** 标记完成操作 */
  const handleMarkCompleted = async () => {
    if (selectedRows.value.length === 0) {
      proxy.$modal.msgWarning("请选择要标记完成的数据");
      return;
    }
    const cannotComplete = selectedRows.value.filter(
      row => Number(row.reviewStatus) !== 1 || Number(row.orderStatus) === 1
    );
    if (cannotComplete.length > 0) {
      proxy.$modal.msgWarning("选中的数据中包含非已审核或已完成的项,请重新选择");
      return;
    }
    try {
      await ElMessageBox.confirm(
        "标记完成后订单将变为只读,只能查看和上传下载附件,不可撤销。是否确认?",
        "提示",
        { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }
      );
      const ids = selectedRows.value.map(row => row.id);
      await markOrderCompleted({ ids });
      proxy.$modal.msgSuccess("标记完成成功");
      getList();
    } catch {
      // 用户取消
    }
  };
  /** 用预填数据打开新增台账页面(重新生成场景) */
  const openFormWithPreFill = async (detail, keepPageMode = false) => {
@@ -4690,7 +4605,6 @@
  const initAddFormState = async () => {
    operationType.value = "add";
    isCompletedOrder.value = false;
    isReviewedEdit.value = false;
    form.value = {};
    productData.value = [];
@@ -4716,7 +4630,6 @@
  const initEditFormState = async rowId => {
    operationType.value = "edit";
    isCompletedOrder.value = false;
    form.value = {};
    productData.value = [];
    fileList.value = [];
@@ -4792,16 +4705,12 @@
      await enterEditPage(row);
      return;
    }
    // 已完成订单强制为只读模式,但附件上传仍可用
    const isCompleted = Number(row?.orderStatus) === 1;
    const effectiveType = isCompleted ? 'view' : type;
    operationType.value = effectiveType;
    isCompletedOrder.value = isCompleted;
    operationType.value = type;
    form.value = {};
    productData.value = [];
    selectedQuotation.value = null;
    // 已审核订单编辑时,标记只能修改单价(已完成订单已强制view,此处不会再命中)
    isReviewedEdit.value = effectiveType === "edit" && Number(row?.reviewStatus) === 1;
    // 已审核订单编辑时,标记只能修改单价
    isReviewedEdit.value = type === "edit" && Number(row?.reviewStatus) === 1;
    let userLists = await userListNoPage();
    userList.value = userLists.data;
    customerList().then(res => {
@@ -5067,7 +4976,6 @@
      proxy.resetForm("formRef");
    }
    dialogFormVisible.value = false;
    isCompletedOrder.value = false;
    isReviewedEdit.value = false;
    if (!isFormPageMode.value) {
      fileList.value = [];