已修改3个文件
178 ■■■■ 文件已修改
src/views/salesManagement/salesLedger/components/OtherAmountMaintenanceButton.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/components/ProcessFlowMaintenanceButton.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/components/OtherAmountMaintenanceButton.vue
@@ -276,3 +276,17 @@
};
</script>
<style scoped>
:deep(.el-dialog .pagination-container) {
  padding: 10px !important;
  display: flex;
  justify-content: flex-end;
  position: static !important;
  margin: 0 !important;
}
:deep(.el-pagination) {
  overflow: hidden;
  flex-wrap: wrap;
}
</style>
src/views/salesManagement/salesLedger/components/ProcessFlowMaintenanceButton.vue
@@ -522,4 +522,17 @@
  border-radius: 8px;
}
:deep(.el-dialog .pagination-container) {
  padding: 10px !important;
  display: flex;
  justify-content: flex-end;
  position: static !important;
  margin: 0 !important;
}
:deep(.el-pagination) {
  overflow: hidden;
  flex-wrap: wrap;
}
</style>
src/views/salesManagement/salesLedger/index.vue
@@ -35,30 +35,30 @@
          :bound-route-name="processFlowSelectBoundRouteName"
          @confirm="handleProcessFlowSelectConfirm"
        />
        <div>
          <el-button type="primary" @click="openForm('add')">
            新增台账
          </el-button>
          <el-button type="primary"  @click="handleBulkDelivery">
            发货
          </el-button>
          <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-dropdown @command="handlePrintCommand">
            <el-button type="primary" plain>
              打印单据<el-icon class="el-icon--right"><ArrowDown /></el-icon>
            </el-button>
            <template #dropdown>
              <el-dropdown-menu>
                <el-dropdown-item command="finishedProcessCard">生产流程卡(成品)</el-dropdown-item>
                <el-dropdown-item command="salesOrder">销售订单</el-dropdown-item>
                <el-dropdown-item command="salesDeliveryNote">销售发货单</el-dropdown-item>
              </el-dropdown-menu>
            </template>
          </el-dropdown>
          <el-button type="primary" plain @click="handlePrintLabel">打印标签</el-button>
        </div>
            <el-space wrap>
                    <el-button type="primary" @click="openForm('add')">新增台账</el-button>
                    <el-button type="primary" @click="handleBulkDelivery">发货</el-button>
                    <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-dropdown @command="handlePrintCommand">
                        <el-button type="primary" plain>
                            打印单据<el-icon class="el-icon--right">
                                <ArrowDown />
                            </el-icon>
                        </el-button>
                        <template #dropdown>
                            <el-dropdown-menu>
                                <el-dropdown-item command="finishedProcessCard">生产流程卡(成品)</el-dropdown-item>
                                <el-dropdown-item command="salesOrder">销售订单</el-dropdown-item>
                                <el-dropdown-item command="salesDeliveryNote">销售发货单</el-dropdown-item>
                            </el-dropdown-menu>
                        </template>
                    </el-dropdown>
                    <el-button type="primary" plain @click="handlePrintLabel">打印标签</el-button>
                </el-space>
      </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%"
@@ -68,13 +68,42 @@
          <template #default="props">
            <el-table :data="props.row.children" border show-summary :summary-method="summarizeChildrenTable">
              <el-table-column align="center" label="序号" type="index"/>
            <el-table-column label="楼层编号" prop="floorCode" min-width="100" show-overflow-tooltip />
              <el-table-column label="产品大类" prop="productCategory" />
              <el-table-column label="规格型号" prop="specificationModel" />
              <el-table-column label="厚度" prop="thickness" min-width="90">
                <template #default="scope">
                  {{ scope.row.thickness ?? "" }}
                </template>
              </el-table-column>
                        </el-table-column>
                            <el-table-column label="宽(mm)" prop="width" min-width="80">
                                <template #default="scope">
                                    {{ scope.row.width ?? "" }}
                                </template>
                            </el-table-column>
                            <el-table-column label="高(mm)" prop="height" min-width="80">
                                <template #default="scope">
                                    {{ scope.row.height ?? "" }}
                                </template>
                            </el-table-column>
                            <el-table-column label="周长(cm)" prop="perimeter" min-width="90">
                                <template #default="scope">
                                    {{ scope.row.perimeter ?? "" }}
                                </template>
                            </el-table-column>
                            <el-table-column label="总面积(cm²)" prop="actualTotalArea" min-width="100">
                                <template #default="scope">
                                    {{ scope.row.actualTotalArea ?? "" }}
                                </template>
                            </el-table-column>
                            <el-table-column label="加工要求" prop="processRequirement" min-width="120"
                                show-overflow-tooltip />
                            <el-table-column label="备注" prop="remark" min-width="120" show-overflow-tooltip />
                            <el-table-column label="重箱" prop="heavyBox" min-width="80">
                                <template #default="scope">
                                    {{ scope.row.heavyBox ?? "" }}
                                </template>
                            </el-table-column>
                            <el-table-column label="产品状态"
                                                             width="100px"
                                                             align="center">
@@ -258,6 +287,21 @@
                    <el-table-column label="厚度" prop="thickness" min-width="90">
                        <template #default="scope">
                            {{ scope.row.thickness ?? "" }}
                        </template>
                    </el-table-column>
                    <el-table-column label="宽(mm)" prop="width" min-width="80">
                        <template #default="scope">
                            {{ scope.row.width ?? "" }}
                        </template>
                    </el-table-column>
                    <el-table-column label="高(mm)" prop="height" min-width="80">
                        <template #default="scope">
                            {{ scope.row.height ?? "" }}
                        </template>
                    </el-table-column>
                    <el-table-column label="面积(m²)" prop="actualTotalArea" min-width="100">
                        <template #default="scope">
                            {{ scope.row.actualTotalArea ?? "" }}
                        </template>
                    </el-table-column>
                    <el-table-column label="数量" prop="quantity" />
@@ -580,7 +624,7 @@
                                style="width: 100%"
                                placeholder="请输入"
                                clearable
                                @change="recalcAreaTotals"
                                @change="() => { recalcAreaTotals(); calculateFromUnitPrice(true); }"
                            />
                        </el-form-item>
                    </el-col>
@@ -1649,8 +1693,9 @@
    productData.value = products.map((p) => {
        const quantity = Number(p.quantity ?? 0) || 0;
        const unitPrice = Number(p.unitPrice ?? 0) || 0;
        const settlePieceArea = Number(p.settlePieceArea ?? 0) || 1;
        const taxRate = "13"; // 默认 13%,便于直接提交(如需可在产品中自行修改)
        const taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
        const taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
        const taxExclusiveTotalPrice = proxy.calculateTaxExclusiveTotalPrice(taxInclusiveTotalPrice, taxRate);
        return {
            // 台账字段
@@ -2153,10 +2198,11 @@
    if (!productForm.value.quantity) {
        return;
    }
    // 含税总价计算
    const settlePieceArea = parseFloat(productForm.value.settlePieceArea) || 1;
    // 含税总价计算 = 单价 * 结算面积 * 数量
    productForm.value.taxInclusiveTotalPrice =
        proxy.calculateTaxIncludeTotalPrice(
            productForm.value.taxInclusiveUnitPrice,
            productForm.value.taxInclusiveUnitPrice * settlePieceArea,
            productForm.value.quantity
        );
    if (productForm.value.taxRate) {
@@ -2219,15 +2265,12 @@
    const computed = Number(computedPieceArea.toFixed(5));
    productForm.value.actualPieceArea = computed;
    // settlePieceArea:若用户未填写/为0,则默认使用宽高计算值
    const settlePieceRaw = Number(productForm.value.settlePieceArea ?? 0) || 0;
    if (!settlePieceRaw) {
        productForm.value.settlePieceArea = computed;
    }
    productForm.value.settlePieceArea = computed;
    recalcPerimeterFromWidthHeight();
    recalcAreaTotals();
    // 面积更新后,重新计算含税总价 = 单价 * 结算面积 * 数量
    calculateFromUnitPrice(true);
};
// 根据含税总价计算含税单价和数量
@@ -2294,19 +2337,20 @@
        return;
    }
    if (isCalculating.value) return;
    const quantity = parseFloat(productForm.value.quantity);
    const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
    const settlePieceArea = parseFloat(productForm.value.settlePieceArea) || 1;
    if (!quantity || quantity <= 0 || !unitPrice) {
        return;
    }
    isCalculating.value = true;
    // 计算含税总价
    productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
    // 计算含税总价 = 单价 * 结算面积 * 数量
    productForm.value.taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {
        productForm.value.taxExclusiveTotalPrice =
@@ -2315,30 +2359,31 @@
                productForm.value.taxRate
            );
    }
    isCalculating.value = false;
};
// 根据含税单价变化计算总价
const calculateFromUnitPrice = () => {
const calculateFromUnitPrice = (silent = false) => {
    if (!productForm.value.taxRate) {
        proxy.$modal.msgWarning("请先选择税率");
        if (!silent) proxy.$modal.msgWarning("请先选择税率");
        return;
    }
    if (isCalculating.value) return;
    const quantity = parseFloat(productForm.value.quantity);
    const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
    const settlePieceArea = parseFloat(productForm.value.settlePieceArea) || 1;
    if (!quantity || quantity <= 0 || !unitPrice) {
        return;
    }
    isCalculating.value = true;
    // 计算含税总价
    productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
    // 计算含税总价 = 单价 * 结算面积 * 数量
    productForm.value.taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {
        productForm.value.taxExclusiveTotalPrice =
@@ -2347,7 +2392,7 @@
                productForm.value.taxRate
            );
    }
    isCalculating.value = false;
};