src/views/salesManagement/salesLedger/index.vue
@@ -595,6 +595,79 @@
                  </el-form-item>
               </el-col>
            </el-row>
            <el-row :gutter="30">
               <el-col :span="24">
                  <el-form-item label="发货日期:" prop="shippingDate">
                     <el-date-picker
                        style="width: 100%"
                        v-model="deliveryForm.shippingDate"
                        value-format="YYYY-MM-DD"
                        format="YYYY-MM-DD"
                        type="date"
                        placeholder="请选择发货日期"
                        clearable
                     />
                  </el-form-item>
               </el-col>
            </el-row>
            <el-row :gutter="30">
               <el-col :span="24" v-if="deliveryForm.type === '货车'">
                  <el-form-item label="发货车牌号:" prop="shippingCarNumber">
                     <el-input
                        v-model="deliveryForm.shippingCarNumber"
                        placeholder="请输入发货车牌号"
                        clearable
                     />
                  </el-form-item>
               </el-col>
               <el-col :span="24" v-else>
                  <el-form-item label="快递公司:" prop="expressCompany">
                     <el-input
                        v-model="deliveryForm.expressCompany"
                        placeholder="请输入快递公司"
                        clearable
                     />
                  </el-form-item>
               </el-col>
            </el-row>
            <el-row :gutter="30" v-if="deliveryForm.type === '快递'">
               <el-col :span="24">
                  <el-form-item label="快递单号:" prop="expressNumber">
                     <el-input
                        v-model="deliveryForm.expressNumber"
                        placeholder="请输入快递单号"
                        clearable
                     />
                  </el-form-item>
               </el-col>
            </el-row>
            <el-row :gutter="30">
               <el-col :span="24">
                  <el-form-item label="发货图片:">
                     <el-upload
                        v-model:file-list="deliveryFileList"
                        :action="upload.url"
                        multiple
                        ref="deliveryFileUpload"
                        auto-upload
                        :headers="upload.headers"
                        :data="{ type: 9 }"
                        :on-success="handleDeliveryUploadSuccess"
                        :on-remove="handleDeliveryRemove"
                        list-type="picture-card"
                        :limit="9"
                        accept="image/png,image/jpeg,image/jpg"
                     >
                        <el-icon class="avatar-uploader-icon"><Plus /></el-icon>
                        <template #tip>
                           <div class="el-upload__tip">
                              支持 jpg、jpeg、png 格式,最多上传 9 张,单张大小不超过 10MB
                           </div>
                        </template>
                     </el-upload>
                  </el-form-item>
               </el-col>
            </el-row>
        <!-- 审批人选择(仿协同审批里的审批人节点选择) -->
        <el-row>
@@ -798,17 +871,43 @@
// 发货相关
const deliveryFormVisible = ref(false);
const currentDeliveryRow = ref(null);
const deliveryFileList = ref([]);
const deliveryFormData = reactive({
  deliveryForm: {
    type: "货车", // 货车, 快递
    shippingDate: "",
    shippingCarNumber: "",
    expressCompany: "",
    expressNumber: "",
  },
  deliveryRules: {
    type: [
      { required: true, message: "请选择发货类型", trigger: "change" }
    ]
    ],
    shippingDate: [{ required: true, message: "请选择发货日期", trigger: "change" }],
    shippingCarNumber: [
      { validator: (_, value, callback) => validateShippingCarNumber(value, callback), trigger: "blur" }
    ],
    expressCompany: [
      { validator: (_, value, callback) => validateExpressCompany(value, callback), trigger: "blur" }
    ],
  },
});
const { deliveryForm, deliveryRules } = toRefs(deliveryFormData);
// 发货类型校验:货车时要求车牌,快递时要求快递公司
const validateShippingCarNumber = (value, callback) => {
  if (deliveryForm.value.type === "货车") {
    if (!value) return callback(new Error("请输入发货车牌号"));
  }
  callback();
};
const validateExpressCompany = (value, callback) => {
  if (deliveryForm.value.type === "快递") {
    if (!value) return callback(new Error("请输入快递公司"));
  }
  callback();
};
// 发货审批人节点(仿协同审批 infoFormDia.vue)
const approverNodes = ref([{ id: 1, userId: null }]);
@@ -2114,11 +2213,31 @@
   currentDeliveryRow.value = row;
  deliveryForm.value = {
    type: "货车",
    shippingDate: getCurrentDate(),
    shippingCarNumber: "",
    expressCompany: "",
    expressNumber: "",
  };
  deliveryFileList.value = [];
  // 重置审批人节点(默认一个空节点)
  approverNodes.value = [{ id: 1, userId: null }];
  nextApproverId = 2;
   deliveryFormVisible.value = true;
};
// 发货图片上传成功回调
const handleDeliveryUploadSuccess = (res, file, uploadFiles) => {
   if (res.code === 200) {
      file.tempId = res.data.tempId;
      proxy.$modal.msgSuccess("上传成功");
   } else {
      proxy.$modal.msgError(res.msg);
   }
};
// 移除发货图片
const handleDeliveryRemove = (file) => {
   // 文件移除时自动从 fileList 中删除,无需额外处理
};
// 提交发货表单
@@ -2135,10 +2254,22 @@
      // 保存当前展开的行ID,以便发货后重新加载子表格数据
      const currentExpandedKeys = [...expandedRowKeys.value];
      const salesLedgerId = currentDeliveryRow.value.salesLedgerId;
      // 获取上传图片的临时ID
      let tempFileIds = [];
      if (deliveryFileList.value !== null && deliveryFileList.value.length > 0) {
        tempFileIds = deliveryFileList.value.map((item) => item.tempId);
      }
      addShippingInfo({
        salesLedgerId: salesLedgerId,
        salesLedgerProductId: currentDeliveryRow.value.id,
        type: deliveryForm.value.type,
        shippingDate: deliveryForm.value.shippingDate,
        shippingCarNumber: deliveryForm.value.type === "货车" ? deliveryForm.value.shippingCarNumber : "",
        expressCompany: deliveryForm.value.type === "快递" ? deliveryForm.value.expressCompany : "",
        expressNumber: deliveryForm.value.type === "快递" ? deliveryForm.value.expressNumber : "",
        tempFileIds: tempFileIds,
            approveUserIds,
      })
        .then(() => {
@@ -2171,6 +2302,7 @@
// 关闭发货弹框
const closeDeliveryDia = () => {
  proxy.resetForm("deliveryFormRef");
  deliveryFileList.value = [];
  deliveryFormVisible.value = false;
  currentDeliveryRow.value = null;
};