yuan
8 天以前 4a811fb2cd4ee4e1cbfe284bfd1fe3a7d16204ce
src/views/salesManagement/salesLedger/index.vue
@@ -33,7 +33,7 @@
          <el-button type="primary" plain @click="handleImport">导入</el-button>
          <el-button @click="handleOut">导出</el-button>
          <el-button type="danger" plain @click="handleDelete">删除</el-button>
          <el-button type="primary" plain @click="handlePrint">打印</el-button>
          <!-- <el-button type="primary" plain @click="handlePrint">打印</el-button> -->
        </div>
      </div>
      <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"
@@ -112,8 +112,8 @@
        <el-table-column label="销售合同号" prop="salesContractNo" width="180" show-overflow-tooltip />
        <el-table-column label="客户名称" prop="customerName" width="300" show-overflow-tooltip />
        <el-table-column label="业务员" prop="salesman" width="100" show-overflow-tooltip />
        <el-table-column label="项目名称" prop="projectName" width="180" show-overflow-tooltip />
        <el-table-column label="付款方式" prop="paymentMethod" show-overflow-tooltip />
        <!-- <el-table-column label="项目名称" prop="projectName" width="180" show-overflow-tooltip />
        <el-table-column label="付款方式" prop="paymentMethod" show-overflow-tooltip /> -->
        <el-table-column label="合同金额(元)" prop="contractAmount" width="220" show-overflow-tooltip
          :formatter="formattedNumber" />
        <el-table-column label="录入人" prop="entryPersonName" width="100" show-overflow-tooltip />
@@ -173,24 +173,12 @@
            </el-form-item>
          </el-col>
               <el-col :span="12">
                  <el-form-item label="项目名称:" prop="projectName">
                     <el-input v-model="form.projectName" placeholder="请输入" clearable :disabled="operationType === 'view'" />
                  </el-form-item>
               </el-col>
        </el-row>
        <el-row :gutter="30">
               <el-col :span="12">
                  <el-form-item label="签订日期:" prop="executionDate">
                     <el-date-picker style="width: 100%" v-model="form.executionDate" value-format="YYYY-MM-DD"
                                             format="YYYY-MM-DD" type="date" placeholder="请选择" clearable :disabled="operationType === 'view'" />
                  </el-form-item>
               </el-col>
               <el-col :span="12">
                  <el-form-item label="付款方式">
                     <el-input v-model="form.paymentMethod" placeholder="请输入" clearable :disabled="operationType === 'view'" />
                  </el-form-item>
               </el-col>
            </el-row>
        </el-row>
            <el-row :gutter="30">
               <el-col :span="12">
                  <el-form-item label="录入人:" prop="entryPerson">
@@ -311,7 +299,7 @@
            <el-table-column prop="customer" label="客户名称" min-width="220" show-overflow-tooltip />
            <el-table-column prop="salesperson" label="业务员" width="120" show-overflow-tooltip />
            <el-table-column prop="quotationDate" label="报价日期" width="140" />
            <el-table-column prop="status" label="审批状态" width="120" align="center" />
            <!-- <el-table-column prop="status" label="审批状态" width="120" align="center" /> -->
            <el-table-column prop="totalAmount" label="报价金额(元)" width="160" align="right">
               <template #default="scope">
                  {{ Number(scope.row.totalAmount ?? 0).toFixed(2) }}
@@ -637,51 +625,6 @@
                  </el-form-item>
               </el-col>
            </el-row>
        <!-- 审批人选择(仿协同审批里的审批人节点选择) -->
        <el-row>
          <el-col :span="24">
            <el-form-item>
              <template #label>
                <span>审批人选择:</span>
                <el-button type="primary" @click="addApproverNode" style="margin-left: 8px;">新增节点</el-button>
              </template>
              <div style="display: flex; align-items: flex-end; flex-wrap: wrap;">
                <div
                  v-for="(node, index) in approverNodes"
                  :key="node.id"
                  style="margin-right: 20px; text-align: center; margin-bottom: 10px;"
                >
                  <div>
                    <span>审批人</span>
                    →
                  </div>
                  <el-select
                    v-model="node.userId"
                    placeholder="选择人员"
                    filterable
                    style="width: 140px; margin-bottom: 8px;"
                  >
                    <el-option
                      v-for="user in userList"
                      :key="user.userId"
                      :label="user.nickName"
                      :value="user.userId"
                    />
                  </el-select>
                  <div>
                    <el-button
                      type="danger"
                      size="small"
                      @click="removeApproverNode(index)"
                      v-if="approverNodes.length > 1"
                    >删除</el-button>
                  </div>
                </div>
              </div>
            </el-form-item>
          </el-col>
        </el-row>
         </el-form>
         <template #footer>
            <div class="dialog-footer">
@@ -976,7 +919,7 @@
      if (node?.id !== null && node?.id !== undefined) return String(node.id);
      if (node?.nodeType === "batch") return String(node.batchNo ?? node.label ?? "");
      if (node?.nodeType === "customer") return String(node.customer ?? node.label ?? "");
      if (node?.nodeType === "model") return String(node.model ?? node.label ?? "");
      if (node?.nodeType === "model") return String(node.productModelId ?? node.model ?? node.label ?? "");
      return String(node.productName ?? node.label ?? "");
   };
@@ -1089,6 +1032,7 @@
   const prevBatchNo = productForm.value.batchNo;
   const prevCustomer = productForm.value.customer;
   productForm.value.productModelId = modelNode.value;
   productForm.value.specificationModel = modelNode.model ?? modelNode.label ?? "";
   // 有些接口/树数据里可能不包含 unit,这种情况下不要覆盖编辑时已回显的值
   const nextUnit = modelNode.unit ?? "";
@@ -1356,8 +1300,9 @@
      return {
         // 台账字段
         productCategory: p.product || p.productName || "",
         productModelId: p.productModelId || "",
         specificationModel: p.specification || "",
      uidNo: p.uidNo || "",
         uidNo: p.uidNo || "",
         unit: p.unit || "",
         quantity: quantity,
         taxRate: taxRate,
@@ -2340,13 +2285,6 @@
const submitDelivery = () => {
  proxy.$refs["deliveryFormRef"].validate((valid) => {
    if (valid) {
      // 审批人必填校验(所有节点都要选人)
      const hasEmptyApprover = approverNodes.value.some(node => !node.userId);
      if (hasEmptyApprover) {
        proxy.$modal.msgError("请为所有审批节点选择审批人!");
        return;
      }
      const approveUserIds = approverNodes.value.map(node => node.userId).join(",");
      // 保存当前展开的行ID,以便发货后重新加载子表格数据
      const currentExpandedKeys = [...expandedRowKeys.value];
      const salesLedgerId = currentDeliveryRow.value.salesLedgerId;
@@ -2354,7 +2292,6 @@
        salesLedgerId: salesLedgerId,
        salesLedgerProductId: currentDeliveryRow.value.id,
        type: deliveryForm.value.type,
            approveUserIds,
      })
        .then(() => {
          proxy.$modal.msgSuccess("发货成功");