src/views/salesManagement/salesLedger/index.vue
@@ -46,6 +46,7 @@
              <el-table-column align="center" label="序号" type="index"/>
              <el-table-column label="产品大类" prop="productCategory" />
              <el-table-column label="图纸编号" prop="specificationModel" />
                     <el-table-column label="物料号" prop="material" />
              <el-table-column label="单位" prop="unit" />
                     <el-table-column label="产品状态"
                                              width="100px"
@@ -111,9 +112,7 @@
        <el-table-column fixed="right" label="操作" width="100" align="center">
          <template #default="scope">
            <el-button link type="primary" size="small" @click="openForm('edit', scope.row)">编辑</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="openDeliveryForm(scope.row)">发货</el-button>-->
          </template>
        </el-table-column>
      </el-table>
@@ -216,6 +215,7 @@
               <el-table-column align="center" label="序号" type="index" width="60" />
               <el-table-column label="产品大类" prop="productCategory" />
               <el-table-column label="图纸编号" prop="specificationModel" />
               <el-table-column label="物料号" prop="material" />
               <el-table-column label="单位" prop="unit" />
               <el-table-column label="数量" prop="quantity" />
               <el-table-column label="税率(%)" prop="taxRate" />
@@ -340,6 +340,13 @@
               <el-col :span="24">
                  <el-form-item label="图纸编号:" prop="specificationModel">
                     <el-input v-model="productForm.specificationModel" placeholder="请输入图纸编号" disabled />
                  </el-form-item>
               </el-col>
            </el-row>
            <el-row :gutter="30">
               <el-col :span="24">
                  <el-form-item label="物料号:" prop="material">
                     <el-input v-model="productForm.material" placeholder="请输入物料号" clearable />
                  </el-form-item>
               </el-col>
            </el-row>
@@ -565,50 +572,16 @@
         @close="closeDeliveryDia"
      >
         <el-form :model="deliveryForm" label-width="120px" label-position="top" :rules="deliveryRules" ref="deliveryFormRef">
        <!-- 审批人选择(仿协同审批里的审批人节点选择) -->
        <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-row>
               <el-col :span="24">
                  <el-alert
                     title="确认后将直接发货!"
                     type="warning"
                     :closable="false"
                     show-icon
                  />
               </el-col>
            </el-row>
         </el-form>
         <template #footer>
            <div class="dialog-footer">
@@ -715,6 +688,7 @@
const productFormData = reactive({
   productForm: {
      productCategory: "",
      material: "",
      specificationModel: "",
      unit: "",
      quantity: "",
@@ -776,16 +750,6 @@
  deliveryRules: {},
});
const { deliveryForm, deliveryRules } = toRefs(deliveryFormData);
// 发货审批人节点(仿协同审批 infoFormDia.vue)
const approverNodes = ref([{ id: 1, userId: null }]);
let nextApproverId = 2;
const addApproverNode = () => {
  approverNodes.value.push({ id: nextApproverId++, userId: null });
};
const removeApproverNode = (index) => {
  approverNodes.value.splice(index, 1);
};
// 导入相关
const importUploadRef = ref(null);
@@ -1122,6 +1086,7 @@
      return {
         // 台账字段
         productCategory: p.product || p.productName || "",
         material: p.material || "",
         specificationModel: p.specification || "",
         unit: p.unit || "",
         quantity: quantity,
@@ -1339,6 +1304,7 @@
   if (selectedProducts && selectedProducts.length > 0) {
      const product = selectedProducts[0];
      productForm.value.productCategory = product.productName;
      productForm.value.material = product.material || "";
      productForm.value.specificationModel = product.model;
      productForm.value.unit = product.unit;
   }
@@ -2138,9 +2104,6 @@
  deliveryForm.value = {
    type: "货车",
  };
  // 重置审批人节点(默认一个空节点)
  approverNodes.value = [{ id: 1, userId: null }];
  nextApproverId = 2;
   deliveryFormVisible.value = true;
};
@@ -2148,20 +2111,12 @@
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(",");
      const currentExpandedKeys = [...expandedRowKeys.value];
      const salesLedgerId = currentDeliveryRow.value.salesLedgerId;
      addShippingInfo({
        salesLedgerId: salesLedgerId,
        salesLedgerProductId: currentDeliveryRow.value.id,
        shippingTotal: currentDeliveryRow.value.quantity,
        approveUserIds,
      })
        .then(() => {
          proxy.$modal.msgSuccess("发货成功");