huminmin
2026-04-09 556964139353391c61dab5b783b9c470c8f3bd12
Merge branch 'dev_长治_健齿齿科器材' of http://114.132.189.42:9002/r/product-inventory-management into dev_长治_健齿齿科器材
已修改2个文件
100 ■■■■ 文件已修改
src/views/salesManagement/deliveryLedger/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/deliveryLedger/index.vue
@@ -187,6 +187,7 @@
          <el-descriptions-item label="发货类型">{{ detailRow.type || '--' }}</el-descriptions-item>
          <el-descriptions-item label="发货日期">{{ detailRow.shippingDate || '--' }}</el-descriptions-item>
          <el-descriptions-item label="发货状态">{{ getShippingStatusText(detailRow.status) }}</el-descriptions-item>
          <el-descriptions-item label="发货数量">{{ detailRow.shippedQty || '--' }}</el-descriptions-item>
          <el-descriptions-item label="发货车牌号">{{ detailRow.shippingCarNumber || '--' }}</el-descriptions-item>
          <el-descriptions-item label="快递公司">{{ detailRow.expressCompany || '--' }}</el-descriptions-item>
          <el-descriptions-item label="快递单号" :span="2">{{ detailRow.expressNumber || '--' }}</el-descriptions-item>
src/views/salesManagement/salesLedger/index.vue
@@ -37,7 +37,8 @@
        </div>
      </div>
      <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"
        :expand-row-keys="expandedRowKeys" :row-key="(row) => row.id" :row-class-name="tableRowClassName" show-summary style="width: 100%"
                :expand-row-keys="expandedRowKeys" :row-key="(row) => row.id" :row-class-name="tableRowClassName"
                show-summary style="width: 100%"
        :summary-method="summarizeMainTable" @expand-change="expandChange" height="calc(100vh - 18.5em)">
        <el-table-column align="center" type="selection" width="55" fixed="left"/>
        <el-table-column type="expand" width="60" fixed="left">
@@ -48,15 +49,18 @@
              <el-table-column label="规格型号" prop="specificationModel" />
              <el-table-column label="批号" prop="batchNo" />
              <el-table-column label="UID码" prop="uidNo" />
              <el-table-column label="已发货数量" prop="shippedQty" width="100px"/>
              <el-table-column label="单位" prop="unit" />
                            <el-table-column label="产品状态"
                                                             width="100px"
                                                             align="center">
                <template #default="scope">
                                    <el-tag v-if="scope.row.approveStatus === 1"
                                                    type="success">充足</el-tag>
                          type="success">充足
                  </el-tag>
                                    <el-tag v-else
                                                    type="danger">不足</el-tag>
                          type="danger">不足
                  </el-tag>
                </template>
              </el-table-column>
                            <el-table-column label="发货状态" width="140" align="center">
@@ -83,7 +87,8 @@
                  <div>
                    <div v-if="scope.row.shippingDate">{{ scope.row.shippingDate }}</div>
                                        <el-tag v-else
                                                        type="info">-</el-tag>
                            type="info">-
                    </el-tag>
                  </div>
                </template>
              </el-table-column>
@@ -123,10 +128,13 @@
        <el-table-column label="备注" prop="remarks" width="200" show-overflow-tooltip />
        <el-table-column fixed="right" label="操作" min-width="100" align="center">
          <template #default="scope">
            <el-button link type="primary" size="small" @click="openForm('edit', scope.row)" :disabled="!scope.row.isEdit">编辑</el-button>
            <el-button link type="primary" size="small" @click="openForm('edit', scope.row)"
                       :disabled="!scope.row.isEdit">编辑
            </el-button>
<!--            <el-button link type="primary" size="small" @click="openForm('view', scope.row)">详情</el-button>-->
            <el-button link type="primary" size="small" @click="downLoadFile(scope.row)">附件</el-button>
            <el-button link type="primary" size="small" @click="exportSaleOutbound(scope.row)">打印销售出库单</el-button>
            <el-button link type="primary" size="small" @click="exportSaleOutbound(scope.row)">打印销售出库单
            </el-button>
<!--            <el-button link type="primary" size="small" @click="openDeliveryForm(scope.row)">发货</el-button>-->
          </template>
        </el-table-column>
@@ -134,7 +142,8 @@
      <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"
        :page="page.current" :limit="page.size" @pagination="paginationChange" />
    </div>
    <FormDialog v-model="dialogFormVisible" :title="operationType === 'add' ? '新增销售台账页面' : '编辑销售台账页面'" :width="'70%'"
    <FormDialog v-model="dialogFormVisible" :title="operationType === 'add' ? '新增销售台账页面' : '编辑销售台账页面'"
                :width="'70%'"
      :operation-type="operationType" @close="closeDia" @confirm="submitForm" @cancel="closeDia">
      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
                <!-- 报价单导入入口:放在表单顶部,选择后反显客户/业务员等 -->
@@ -175,7 +184,8 @@
                    <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'" />
                              format="YYYY-MM-DD" type="date" placeholder="请选择" clearable
                              :disabled="operationType === 'view'"/>
                        </el-form-item>
                    </el-col>
        </el-row>
@@ -200,7 +210,8 @@
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="交货日期:" prop="entryDate">
              <el-date-picker style="width: 100%" v-model="form.deliveryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD"
              <el-date-picker style="width: 100%" v-model="form.deliveryDate" value-format="YYYY-MM-DD"
                              format="YYYY-MM-DD"
                              type="date" placeholder="请选择" clearable />
            </el-form-item>
          </el-col>
@@ -230,14 +241,16 @@
                        <template #default="scope">
                            <el-button link type="primary" size="small" 
                                :disabled="isProductShipped(scope.row)"
                                @click="openProductForm('edit', scope.row,scope.$index)">编辑</el-button>
                         @click="openProductForm('edit', scope.row,scope.$index)">编辑
              </el-button>
                        </template>
                    </el-table-column>
                </el-table>
                <el-row :gutter="30">
                    <el-col :span="24">
                        <el-form-item label="备注:" prop="remarks">
                            <el-input v-model="form.remarks" placeholder="请输入" clearable type="textarea" :rows="2" :disabled="operationType === 'view'" />
              <el-input v-model="form.remarks" placeholder="请输入" clearable type="textarea" :rows="2"
                        :disabled="operationType === 'view'"/>
                        </el-form-item>
                    </el-col>
                </el-row>
@@ -341,14 +354,16 @@
                                <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName"/>
                            </el-select> -->
                            <el-tree-select v-model="productForm.productCategory" placeholder="请选择" clearable check-strictly
                                                            @change="getModels" :data="productOptions" :render-after-expand="false" style="width: 100%" />
                              @change="getModels" :data="productOptions" :render-after-expand="false"
                              style="width: 100%"/>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row :gutter="30">
                    <el-col :span="24">
                        <el-form-item label="规格型号:" prop="productModelId">
                            <el-select v-model="productForm.productModelId" placeholder="请选择" clearable @change="getProductModel" filterable>
              <el-select v-model="productForm.productModelId" placeholder="请选择" clearable @change="getProductModel"
                         filterable>
                                <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
                            </el-select>
                        </el-form-item>
@@ -422,12 +437,14 @@
                <el-row :gutter="30">
                    <el-col :span="12">
                        <el-form-item label="含税总价(元):" prop="taxInclusiveTotalPrice">
                            <el-input v-model="productForm.taxInclusiveTotalPrice" placeholder="请输入" clearable @change="calculateFromTotalPrice" />
              <el-input v-model="productForm.taxInclusiveTotalPrice" placeholder="请输入" clearable
                        @change="calculateFromTotalPrice"/>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12">
                        <el-form-item label="不含税总价(元):" prop="taxExclusiveTotalPrice">
                            <el-input v-model="productForm.taxExclusiveTotalPrice" placeholder="请输入" clearable @change="calculateFromExclusiveTotalPrice" />
              <el-input v-model="productForm.taxExclusiveTotalPrice" placeholder="请输入" clearable
                        @change="calculateFromExclusiveTotalPrice"/>
                        </el-form-item>
                    </el-col>
                </el-row>
@@ -501,7 +518,8 @@
                    <div v-if="printData.length === 0" style="text-align: center; padding: 50px; color: #999;">
                        暂无打印数据
                    </div>
                    <div v-else style="text-align: center; padding: 10px; color: #666; font-size: 14px; background: #e8f4fd; margin-bottom: 10px;">
          <div v-else
               style="text-align: center; padding: 10px; color: #666; font-size: 14px; background: #e8f4fd; margin-bottom: 10px;">
                        共 {{ printData.length }} 条数据待打印
                    </div>
                    <div v-for="(item, index) in printData" :key="index" class="print-page">
@@ -610,7 +628,8 @@
        width="40%"
            @close="closeDeliveryDia"
        >
            <el-form :model="deliveryForm" label-width="120px" label-position="top" :rules="deliveryRules" ref="deliveryFormRef">
      <el-form :model="deliveryForm" label-width="120px" label-position="top" :rules="deliveryRules"
               ref="deliveryFormRef">
                <el-row :gutter="30">
                    <el-col :span="24">
                        <el-form-item label="发货类型:" prop="type">
@@ -622,6 +641,10 @@
                                <el-option label="货车" value="货车" />
                                <el-option label="快递" value="快递" />
                            </el-select>
            </el-form-item>
            <el-form-item label="发货数量:" prop="shippedQty">
              <el-input-number v-model="deliveryForm.shippedQty" :min="0"
                               :max="deliveryForm.quantity-deliveryForm.qty" style="width: 100%"/>
                        </el-form-item>
                    </el-col>
                </el-row>
@@ -795,6 +818,9 @@
const deliveryFormData = reactive({
  deliveryForm: {
    type: "货车", // 货车, 快递
    shippedQty: undefined,
    quantity: undefined,
    qty: undefined,
  },
  deliveryRules: {
    type: [
@@ -1107,6 +1133,7 @@
        productForm.value.customer = "";
    }
};
// 根据名称反查产品大类 id,便于仅存名称时的反显
function findNodeIdByLabel(nodes, label) {
    if (!label) return null;
@@ -1120,6 +1147,7 @@
    }
    return null;
}
// 表格选择数据
const handleSelectionChange = (selection) => {
    // 过滤掉子数据
@@ -1315,9 +1343,11 @@
    
    quotationDialogVisible.value = false;
};
function changs(val) {
    console.log(val);
}
// 上传前校检
function handleBeforeUpload(file) {
    // 校检文件大小
@@ -1328,11 +1358,13 @@
    proxy.$modal.loading("正在上传文件,请稍候...");
    return true;
}
// 上传失败
function handleUploadError(err) {
    proxy.$modal.msgError("上传文件失败");
    proxy.$modal.closeLoading();
}
// 上传成功回调
function handleUploadSuccess(res, file, uploadFiles) {
    proxy.$modal.closeLoading();
@@ -1344,6 +1376,7 @@
        proxy.$refs.fileUpload.handleRemove(file);
    }
}
// 移除文件
function handleRemove(file) {
    if (operationType.value === "edit") {
@@ -1354,6 +1387,7 @@
        });
    }
}
// 提交表单
const submitForm = () => {
    proxy.$refs["formRef"].validate((valid) => {
@@ -2234,18 +2268,19 @@
    if (row.approveStatus !== 1) {
        return false;
    }
  return row.quantity > row.shippedQty
    
    // 获取发货状态
    const shippingStatus = row.shippingStatus;
    // 如果已发货(有发货日期或车牌号),不能再次发货
    if (row.shippingDate || row.shippingCarNumber) {
        return false;
    }
    // 发货状态必须是"待发货"或"审核拒绝"
    const statusStr = shippingStatus ? String(shippingStatus).trim() : '';
    return statusStr === '待发货' || statusStr === '审核拒绝';
  // // 获取发货状态
  // const shippingStatus = row.shippingStatus;
  //
  // // 如果已发货(有发货日期或车牌号),不能再次发货
  // if (row.shippingDate || row.shippingCarNumber) {
  //     return false;
  // }
  //
  // // 发货状态必须是"待发货"或"审核拒绝"
  // const statusStr = shippingStatus ? String(shippingStatus).trim() : '';
  // return statusStr === '待发货' || statusStr === '审核拒绝';
};
/**
@@ -2274,10 +2309,12 @@
    currentDeliveryRow.value = row;
  deliveryForm.value = {
    type: "货车",
    quantity: row.quantity,
    qty: row.shippedQty
  };
  // 重置审批人节点(默认一个空节点)
  approverNodes.value = [{ id: 1, userId: null }];
  nextApproverId = 2;
  // approverNodes.value = [{ id: 1, userId: null }];
  // nextApproverId = 2;
    deliveryFormVisible.value = true;
};
@@ -2291,6 +2328,7 @@
      addShippingInfo({
        salesLedgerId: salesLedgerId,
        salesLedgerProductId: currentDeliveryRow.value.id,
        shippedQty: deliveryForm.value.shippedQty,
        type: deliveryForm.value.type,
      })
        .then(() => {
@@ -2402,6 +2440,7 @@
    justify-content: space-between;
    margin-bottom: 10px;
}
.print-preview-dialog {
    .el-dialog__body {
        padding: 0;