周宾
3 小时以前 3806a7b94bc2b069d22743c22f8d3dc54101850e
天津双奇点-开发仓储物流
已修改10个文件
440 ■■■■■ 文件已修改
src/views/basicData/product/index.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/dispatchLog/index.vue 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/issueManagement/index.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/receiptManagement/components/formDia.vue 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/receiptManagement/components/formDiaManual.vue 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/receiptManagement/components/formDiaProduct.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/receiptManagement/index.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockManagement/components/FormDiaManual.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockManagement/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/product/index.vue
@@ -76,7 +76,7 @@
    <div class="right">
      <div style="margin-bottom: 10px" v-if="isShowButton">
        <el-button type="primary" @click="openModelDia('add')">
          新增规格型号
          新增产品高度
        </el-button>
        <ImportExcel @uploadSuccess="getModelList" />
        <el-button
@@ -129,7 +129,7 @@
    </el-dialog>
    <el-dialog
      v-model="modelDia"
      title="规格型号"
      title="产品高度"
      width="400px"
      @close="closeModelDia"
      @keydown.enter.prevent
@@ -143,10 +143,10 @@
      >
        <el-row>
          <el-col :span="24">
            <el-form-item label="规格型号:" prop="model">
            <el-form-item label="产品高度:" prop="model">
              <el-input
                v-model="modelForm.model"
                placeholder="请输入规格型号"
                placeholder="请输入产品高度"
                clearable
                @keydown.enter.prevent
              />
@@ -155,10 +155,10 @@
        </el-row>
        <el-row>
          <el-col :span="24">
            <el-form-item label="单位:" prop="unit">
            <el-form-item label="高度单位:" prop="unit">
              <el-input
                v-model="modelForm.unit"
                placeholder="请输入单位"
                placeholder="请输入高度单位"
                clearable
                @keydown.enter.prevent
              />
@@ -205,11 +205,11 @@
const expandedKeys = ref([]);
const tableColumn = ref([
  {
    label: "规格型号",
    label: "产品高度",
    prop: "model",
  },
  {
    label: "单位",
    label: "高度单位",
    prop: "unit",
  },
  {
@@ -281,7 +281,7 @@
    form.value.productName = data.productName;
  }
};
// 打开规格型号弹框
// 打开产品高度弹框
const openModelDia = (type, data) => {
  modelOperationType.value = type;
  modelDia.value = true;
src/views/inventoryManagement/dispatchLog/index.vue
@@ -117,8 +117,8 @@
                        <el-table-column label="出库数量/件" prop="inboundNum" show-overflow-tooltip />
                        <el-table-column label="每件数量/支" prop="boxNum" width="100" show-overflow-tooltip />
                        <el-table-column label="单价(元)/支" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(美元)/支" prop="dollarPrice" width="150"></el-table-column>
                        <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150"></el-table-column>
                        <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
                        <el-table-column label="出库人" prop="createBy" show-overflow-tooltip />
                    </el-table>
                    <pagination
@@ -180,19 +180,19 @@
                                <img class="barcode-img" :src="javaApiUrl+scope.row.url"></img>
                            </template>
                        </el-table-column>
                        <el-table-column label="出库日期" prop="createTime" show-overflow-tooltip />
                        <el-table-column label="出库日期" prop="createTime" width="150" show-overflow-tooltip />
                        <el-table-column label="产品名称" prop="productCategory" show-overflow-tooltip />
                        <el-table-column label="产品高度" prop="specificationModel" width="100" show-overflow-tooltip>
                        <template #default="scope">
                            <div>{{ scope.row.specificationModel }}{{ scope.row.unit }}</div>
                        </template>
                        </el-table-column>
                        <el-table-column label="出库数量/件" prop="inboundNum" show-overflow-tooltip />
                        <el-table-column label="出库数量/件" prop="inboundNum" width="150" show-overflow-tooltip />
                        <el-table-column label="每件数量/支" prop="boxNum" width="100" show-overflow-tooltip />
                        <el-table-column label="单价(元)/支" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(美元)/件" prop="dollarPrice" width="150"></el-table-column>
                        <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150"></el-table-column>
                        <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
                        <el-table-column label="出库人" prop="createBy" show-overflow-tooltip />
                        <el-table-column label="出库人" prop="createBy" width="150" show-overflow-tooltip />
                    </el-table>
                    <pagination
                        v-show="total > 0"
@@ -229,7 +229,7 @@
                    <div v-for="(item, index) in printData" :key="index" class="print-page">
                        <div class="delivery-note">
                            <div class="header">
                                <div class="company-name">鼎诚瑞实业有限责任公司</div>
                                <div class="company-name">天津双奇点有限责任公司</div>
                                <div class="document-title">零售发货单</div>
                            </div>
                            
@@ -256,32 +256,34 @@
                                    <thead>
                                    <tr>
                                        <th>产品名称</th>
                                        <th>规格型号</th>
                                        <th>单位</th>
                                        <th>单价</th>
                                        <th>零售数量</th>
                                        <th>零售金额</th>
                                        <th>产品高度</th>
                                        <th>单价(元)/件</th>
                                        <th>单价(美元)/件</th>
                                        <th>零售数量/件</th>
                                        <th>每件数量/支</th>
                                        <th>纸箱规格</th>
                                    </tr>
                                    </thead>
                                    <tbody>
                                    <tr>
                                        <td>{{ item.productCategory || '砂灰砖' }}</td>
                                        <td>{{ item.specificationModel || '标准' }}</td>
                                        <td>{{ item.unit || '块' }}</td>
                                        <td>{{ item.productCategory || '' }}</td>
                                        <td>{{ item.specificationModel || '' }}{{ item.unit || '' }}</td>
                                        <td>{{ item.taxInclusiveUnitPrice || '0' }}</td>
                                        <td>{{ item.inboundNum || '2000' }}</td>
                                        <td>{{ item.taxInclusiveTotalPrice || '0' }}</td>
                                        <td>{{ item.dollarPrice || '0' }}</td>
                                        <td>{{ item.inboundNum || '0' }}</td>
                                        <td>{{ item.boxNum || '0' }}</td>
                                        <td>{{ item.cartonSpecifications || '0' }}</td>
                                    </tr>
                                    </tbody>
                                    <tfoot>
                                    <tr>
                                    <!-- <tr>
                                        <td class="label">合计</td>
                                        <td class="total-value"></td>
                                        <td class="total-value"></td>
                                        <td class="total-value"></td>
                                        <td class="total-value">{{ item.inboundNum || '2000' }}</td>
                                        <td class="total-value">{{ item.taxInclusiveTotalPrice || '0' }}</td>
                                    </tr>
                                    </tr> -->
                                    </tfoot>
                                </table>
                            </div>
@@ -335,6 +337,7 @@
    getStockInPageByProduct,
    getStockInPageByCustom,
} from "@/api/inventoryManagement/stockIn.js";
const javaApiUrl = __BASE_API__;
const userStore = useUserStore();
const { proxy } = getCurrentInstance();
@@ -694,39 +697,33 @@
          </div>
          <div class="table-section">
            <table class="product-table">
              <thead>
                <tr>
                  <th>产品名称</th>
                  <th>规格型号</th>
                  <th>单位</th>
                  <th>单价</th>
                  <th>零售数量</th>
                  <th>零售金额</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td>${item.productCategory || '砂灰砖'}</td>
                  <td>${item.specificationModel || '标准'}</td>
                  <td>${item.unit || '块'}</td>
                  <td>${item.taxInclusiveUnitPrice || '0'}</td>
                  <td>${item.inboundNum || '2000'}</td>
                  <td>${item.taxInclusiveTotalPrice || '0'}</td>
                </tr>
              </tbody>
              <tfoot>
                <tr>
                  <td class="label">合计</td>
                  <td class="total-value"></td>
                  <td class="total-value"></td>
                  <td class="total-value"></td>
                  <td class="total-value">${item.inboundNum || '2000'}</td>
                  <td class="total-value">${item.taxInclusiveTotalPrice || '0'}</td>
                </tr>
              </tfoot>
            </table>
          </div>
            <table class="product-table">
                <thead>
                <tr>
                    <th>产品名称</th>
                    <th>产品高度</th>
                    <th>单价(元)/件</th>
                    <th>单价(美元)/件</th>
                    <th>零售数量/件</th>
                    <th>每件数量/支</th>
                    <th>纸箱规格</th>
                </tr>
                </thead>
                <tbody>
                <tr>
                    <td>{{ item.productCategory || '' }}</td>
                    <td>{{ item.specificationModel || '' }}{{ item.unit || '' }}</td>
                    <td>{{ item.taxInclusiveUnitPrice || '0' }}</td>
                    <td>{{ item.dollarPrice || '0' }}</td>
                    <td>{{ item.inboundNum || '0' }}</td>
                    <td>{{ item.boxNum || '0' }}</td>
                    <td>{{ item.cartonSpecifications || '0' }}</td>
                </tr>
                </tbody>
                <tfoot>
                </tfoot>
            </table>
        </div>
          <div class="footer-section">
            <div class="footer-row">
src/views/inventoryManagement/issueManagement/index.vue
@@ -81,7 +81,7 @@
           :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">
           <el-table-column align="center" type="selection" width="55" />
           <el-table-column align="center" label="序号" type="index" width="60" />
           <el-table-column label="入库时间" prop="inboundDate" width="100" show-overflow-tooltip />
           <el-table-column label="入库时间" prop="createTime" width="100" show-overflow-tooltip />
            <el-table-column label="产品名称" prop="productCategory" show-overflow-tooltip />
            <el-table-column label="产品高度" prop="specificationModel" width="100" show-overflow-tooltip>
              <template #default="scope">
@@ -91,7 +91,8 @@
                        <el-table-column label="入库数量/件" prop="inboundNum" width="100" show-overflow-tooltip />
                        <el-table-column label="每件数量/支" prop="boxNum" width="100" show-overflow-tooltip />
            <el-table-column label="剩余库存" prop="inboundNum0" width="90" show-overflow-tooltip />
                        <el-table-column label="单价(元)" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(美元)/件" prop="dollarPrice" width="150"></el-table-column>
            <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150"></el-table-column>
            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
           <el-table-column fixed="right" label="操作" min-width="60" align="center">
@@ -155,9 +156,10 @@
                        <el-table-column label="入库数量/件" prop="inboundNum" width="100" show-overflow-tooltip />
                        <el-table-column label="每件数量/支" prop="boxNum" width="100" show-overflow-tooltip />
            <el-table-column label="剩余库存" prop="inboundNum0" width="90" show-overflow-tooltip />
                        <el-table-column label="单价(元)" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(美元)/件" prop="dollarPrice" width="150"></el-table-column>
            <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150"></el-table-column>
            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
            <el-table-column label="入库人" prop="createBy" width="150" show-overflow-tooltip />
            <el-table-column fixed="right" label="操作" width="100" align="center">
              <template #default="scope">
                <el-button link type="primary" size="small" @click="openForm(scope.row);">领用</el-button>
@@ -173,7 +175,7 @@
      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
                <div>可出库数量:{{currentRowNum}}</div>
        <el-form-item label="出库数量:" prop="salesContractNo">
          <el-input-number :step="1" :min="0" style="width: 100%" v-model="form.inboundQuantity" placeholder="请输入" clearable />
          <el-input-number :step="1" :min="0" :max="currentRowNum" style="width: 100%" v-model="form.inboundQuantity" placeholder="请输入" clearable />
        </el-form-item>
        <el-form-item label="出库日期:" prop="projectName">
          <el-date-picker style="width: 100%" v-model="form.inboundTime" value-format="YYYY-MM-DD" format="YYYY-MM-DD"
@@ -213,6 +215,7 @@
    delStockManage,
    stockOut,
} from "@/api/inventoryManagement/stockManage.js";
const javaApiUrl = __BASE_API__;
const userStore = useUserStore()
const { proxy } = getCurrentInstance()
@@ -234,7 +237,7 @@
  searchForm: {
    supplierName: '',
    customerName: '',
    inboundQuantity:'',
    inboundQuantity:0,
    inboundTime:'',
    nickName: '',
    userId: '',
@@ -342,7 +345,7 @@
  // 初始化表单数据
  form.value = {
    productrecordId: '',
    inboundQuantity: '', // 出库数量清空
    inboundQuantity: 0, // 出库数量清空
    inboundTime: getCurrentDate(), // 默认当前日期
    nickName: '', // 默认当前用户
  }
@@ -360,7 +363,13 @@
const submitForm = () => {
  let num = Number(form.value.inboundQuantity)
  if(num <= 0 || num > currentRowNum.value){
    return proxy.$modal.msgWarning("请填入有效数字")
    return proxy.$modal.msgWarning("请填写出库数量")
  }
  if(!form.value.nickName){
    return proxy.$modal.msgWarning("请选择出库人")
  }
  if(!form.value.inboundTime){
    return proxy.$modal.msgWarning("请选择出库时间")
  }
  proxy.$refs["formRef"].validate(valid => {
    if (valid && currentRowId.value) {
src/views/inventoryManagement/receiptManagement/components/formDia.vue
@@ -34,21 +34,40 @@
          type="index"
          width="60"
        />
        <el-table-column label="产品大类" prop="productCategory" />
        <el-table-column label="规格型号" prop="specificationModel" />
        <el-table-column label="单位" prop="unit" width="70" />
        <el-table-column label="产品" prop="productCategory" />
        <el-table-column label="产品高度" prop="specificationModel" >
          <template #default="scope">
            <div>{{ scope.row.specificationModel }}{{ scope.row.unit }}</div>
          </template>
        </el-table-column>
        <!-- <el-table-column label="高度单位" prop="unit" width="70" /> -->
        <!-- <el-table-column label="供应商" prop="supplierName" width="100" /> -->
        <el-table-column label="采购数量" prop="quantity" width="100" />
        <el-table-column label="待入库数量" prop="quantity0" width="100" />
        <el-table-column label="本次入库数量" prop="quantityStock" width="150">
        <el-table-column label="采购数量/件" prop="quantity" width="100" />
        <el-table-column label="每件数量/支" prop="boxNum" width="150">
          <template #default="scope">
            <el-input-number :step="1" :min="0" style="width: 100%" v-model="scope.row.boxNum"/>
          </template>
        </el-table-column>
        <el-table-column label="待入库数量/件" prop="quantity0" width="150" />
        <el-table-column label="本次入库数量/件" prop="quantityStock" width="150">
          <template #default="scope">
            <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.quantityStock" @change="() => calculateTotalPrice(scope.row)" />
          </template>
        </el-table-column>
        <el-table-column label="税率(%)" prop="taxRate" width="120" />
        <el-table-column label="单价(元)" prop="taxInclusiveUnitPrice" width="150">
        <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" width="150">
                    <template #default="scope">
                        <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.taxInclusiveUnitPrice" @change="() => calculateTotalPrice(scope.row)" :disabled="operationType === 'edit'"/>
                    </template>
                </el-table-column>
        <el-table-column label="单价(美元)/件" prop="dollarPrice" width="150">
                    <template #default="scope">
                        <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.dollarPrice" :disabled="operationType === 'edit'"/>
                    </template>
                </el-table-column>
        <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150">
                    <template #default="scope">
            <el-input v-model="scope.row.cartonSpecifications" placeholder="请输入纸箱规格" style="width: 100%" />
                    </template>
                </el-table-column>
        <el-table-column
@@ -224,6 +243,9 @@
      taxInclusiveUnitPrice: Number(item?.taxInclusiveUnitPrice ?? 0),
      taxInclusiveTotalPrice: 0,
      originalQuantityStock: Number(item.quantityStock ?? item.inboundQuantity ?? 0),
      boxNum: item.boxNum || 0,
      dollarPrice: item.dollarPrice || 0,
    }))
  } catch (error) {
    console.error('查询产品记录失败:', error)
@@ -282,6 +304,27 @@
      proxy.$modal.msgError('本次入库数量需大于0,且不能超过待入库数量')
      return
    }
    let isVerify = true
    selectedRows.value.some((product) => {
        if(!product.boxNum){
          proxy.$modal.msgError('请填写每件数量/支')
          isVerify = false
          return true
        }
        if(!product.cartonSpecifications){
          proxy.$modal.msgError('请填写纸箱规格')
          isVerify = false
          return true
        }
        if(!product.dollarPrice){
          proxy.$modal.msgError('请填写单价(美元)/件')
          isVerify = false
          return true
        }
        return false
    })
    if(!isVerify)return
    const stockInData = {
      ...form.value,
@@ -291,7 +334,11 @@
        id: product.id,
        inboundQuantity: Number(product.quantityStock),
                unitPrice: Number(product.taxInclusiveUnitPrice),
                taxInclusiveTotalPrice: Number(product.taxInclusiveTotalPrice)
                taxInclusiveTotalPrice: Number(product.taxInclusiveTotalPrice),
        boxNum: Number(product.boxNum),
        cartonSpecifications: product.cartonSpecifications,
        dollarPrice: Number(product.dollarPrice)
      })),
    };
    loading.value = true
src/views/inventoryManagement/receiptManagement/components/formDiaManual.vue
@@ -29,7 +29,7 @@
              accept="image/*"
              :data="{ type: 9 }"
            >
              <img v-if="scope.row.url" :src="javaApiUrl+scope.row.url"></img>
              <img class="upload-img" v-if="scope.row.url" :src="javaApiUrl+scope.row.url"></img>
              <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
            </el-upload>
          </template>
@@ -51,7 +51,7 @@
        </el-table-column>
        <el-table-column label="纸箱规格" prop="cartonSpecifications" width="200">
          <template #default="scope">
            <el-input v-model="scope.row.cartonSpecifications" placeholder="请输入产品高度" />
            <el-input v-model="scope.row.cartonSpecifications" placeholder="请输入纸箱规格" />
          </template>
        </el-table-column>
        <!-- <el-table-column label="供应商" prop="supplierName" width="200">
@@ -81,9 +81,14 @@
            <el-input-number :step="1" :min="0" style="width: 100%" v-model="scope.row.boxNum" @change="() => calculateTotalPrice(scope.row)" />
          </template>
        </el-table-column>
        <el-table-column label="单价(元)/支" prop="taxInclusiveUnitPrice" width="150">
        <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" width="150">
         <template #default="scope">
           <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.taxInclusiveUnitPrice" @change="() => calculateTotalPrice(scope.row)" />
         </template>
       </el-table-column>
       <el-table-column label="单价(美元)/件" prop="dollarPrice" width="150">
         <template #default="scope">
           <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.dollarPrice"/>
         </template>
       </el-table-column>
        <el-table-column label="入库日期" prop="inboundDate" width="180">
@@ -219,7 +224,8 @@
    taxInclusiveTotalPrice: 0,
    taxRate: null,
    taxExclusiveTotalPrice: 0,
    boxNum: 0
    boxNum: 0,
    dollarPrice: 0
  });
};
@@ -257,17 +263,21 @@
    for (let i = 0; i < productList.value.length; i++) {
      const product = productList.value[i];
      if (!product.productCategory || !product.specificationModel || !product.unit) {
        proxy.$modal.msgError(`第${i + 1}行产品数据未填写完整(产品大类、规格型号、单位为必填)`)
        proxy.$modal.msgError(`第${i + 1}行产品数据未填写完整(产品、产品高度、高度单位为必填)`)
        return
      }
      if (!product.url) {
        proxy.$modal.msgError(`第${i + 1}行产品未上传产品图片`)
        return
      }
      if (!product.cartonSpecifications) {
        proxy.$modal.msgError(`第${i + 1}行产品未填写纸箱规格`)
        return
      }
      // if (!product.itemType) {
      //   proxy.$modal.msgError(`第${i + 1}行请选择物品类型`)
      //   return
      // }
      if (!product.inboundDate) {
        proxy.$modal.msgError(`第${i + 1}行请选择入库日期`)
        return
      }
      const stock = Number(product?.inboundNum ?? 0);
      if (!Number.isFinite(stock) || stock <= 0) {
        proxy.$modal.msgError(`第${i + 1}行本次入库数量需大于0`)
@@ -275,7 +285,21 @@
      }
      const boxNum = Number(product?.boxNum ?? 0);
      if (!Number.isFinite(boxNum) || boxNum <= 0) {
        proxy.$modal.msgError(`第${i + 1}每盒数量需大于0`)
        proxy.$modal.msgError(`第${i + 1}行每件数量/支需大于0`)
        return
      }
      const taxInclusiveUnitPrice = Number(product?.taxInclusiveUnitPrice ?? 0);
      if (!Number.isFinite(taxInclusiveUnitPrice) || taxInclusiveUnitPrice <= 0) {
        proxy.$modal.msgError(`第${i + 1}行单价(元)需大于0`)
        return
      }
      const dollarPrice = Number(product?.dollarPrice ?? 0);
      if (!Number.isFinite(dollarPrice) || dollarPrice <= 0) {
        proxy.$modal.msgError(`第${i + 1}行单价(美元)需大于0`)
        return
      }
      if (!product.inboundDate) {
        proxy.$modal.msgError(`第${i + 1}行请选择入库日期`)
        return
      }
      
@@ -296,7 +320,8 @@
            taxInclusiveTotalPrice: Number(product.taxInclusiveTotalPrice || 0),
      boxNum:Number(product.boxNum),
      cartonSpecifications: product.cartonSpecifications,
      url: product.url||'/src/assets/logo/logo.png',
      url: product.url||'',
      dollarPrice: Number(product.dollarPrice || 0),
    }));
    loading.value = true
    if (operationType.value === 'edit') {
@@ -391,6 +416,10 @@
      taxInclusiveUnitPrice: Number(row?.taxInclusiveUnitPrice ?? 0),
      taxInclusiveTotalPrice: Number(row?.taxInclusiveTotalPrice ?? 0),
      taxExclusiveTotalPrice: Number(row?.taxExclusiveTotalPrice ?? 0),
      boxNum: Number(row?.boxNum ?? 0),
      cartonSpecifications: row?.cartonSpecifications ?? '',
      url: row?.url ?? '',
      dollarPrice: Number(row?.dollarPrice ?? 0),
    }]
  }
}
@@ -400,5 +429,11 @@
})
</script>
<style scoped lang="scss"></style>
<style scoped lang="scss">
  .upload-img{
    width: 80px;
    height: 80px;
    object-fit: contain;
  }
</style>
src/views/inventoryManagement/receiptManagement/components/formDiaProduct.vue
@@ -289,6 +289,7 @@
      taxRate: Number(row?.taxRate ?? 0),
      unitPrice: Number(row?.unitPrice ?? 0),
      taxExclusiveTotalPrice: Number(row?.taxExclusiveTotalPrice ?? 0),
      dollarPrice: Number(row?.dollarPrice ?? 0),
    }]
  }
}
src/views/inventoryManagement/receiptManagement/index.vue
@@ -88,7 +88,7 @@
           :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">
           <el-table-column align="center" type="selection" width="55" />
           <el-table-column align="center" label="序号" type="index" width="60" />
           <el-table-column label="入库时间" prop="inboundDate" width="100" show-overflow-tooltip />
           <el-table-column label="入库时间" prop="createTime" width="100" show-overflow-tooltip />
          <el-table-column label="产品名称" prop="productCategory" show-overflow-tooltip />
          <el-table-column label="产品高度" prop="specificationModel" width="100" show-overflow-tooltip>
            <template #default="scope">
@@ -97,14 +97,15 @@
          </el-table-column>
          <el-table-column label="入库数量/件" prop="inboundNum" width="100" show-overflow-tooltip />
          <el-table-column label="每件数量/支" prop="boxNum" width="100" show-overflow-tooltip />
          <el-table-column label="单价(元)" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
          <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
          <el-table-column label="单价(美元)/件" prop="dollarPrice" width="150"></el-table-column>
          <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150"></el-table-column>
          <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
           <el-table-column fixed="right" label="操作" min-width="60" align="center">
             <template #default="scope">
               <el-button link type="primary" size="small" @click="openForm('edit', scope.row, 'purchase');">编辑</el-button>
                <el-button link type="success" size="small" @click="showQRCode(scope.row)">生成条形码</el-button>
                <el-button link type="success" size="small" @click="showERCode(scope.row)">生成二维码</el-button>
                <el-button link type="success" size="small" @click="showQRCode(scope.row,1)">生成条形码</el-button>
                <el-button link type="success" size="small" @click="showERCode(scope.row,1)">生成二维码</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -161,9 +162,10 @@
            </el-table-column>
                        <el-table-column label="入库数量/件" prop="inboundNum" width="100" show-overflow-tooltip />
                        <el-table-column label="每件数量/支" prop="boxNum" width="100" show-overflow-tooltip />
                        <el-table-column label="单价(元)" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(美元)/件" prop="dollarPrice" width="150"></el-table-column>
                        <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150"></el-table-column>
            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
            <el-table-column label="入库人" prop="createBy" width="150" show-overflow-tooltip />
            <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, 'manual');">编辑</el-button>
@@ -211,7 +213,7 @@
    </el-dialog>
    <el-dialog v-model="barcodeDia" title="产品信息" width="40%" @close="closeBarcodeDia">
      <div>
        <el-row :gutter="30">
        <el-row v-if="barcodeDetail.url" :gutter="30">
          <el-col :span="12">
            <div class="barcode-item">
              <div class="barcode-label">图片</div>
@@ -228,22 +230,23 @@
          </el-col>
          <el-col :span="12">
            <div class="barcode-item">
              <div class="barcode-label">单价</div>
              <div class="barcode-value">{{barcodeDetail.taxInclusiveUnitPrice}}元/支</div>
              <div class="barcode-label">产品高度</div>
              <div class="barcode-value">{{barcodeDetail.specificationModel}}{{barcodeDetail.unit}}</div>
            </div>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <div class="barcode-item">
              <div class="barcode-label">入库人</div>
              <div class="barcode-value">{{barcodeDetail.createBy}}</div>
              <div class="barcode-label">单价</div>
              <div class="barcode-value">{{barcodeDetail.taxInclusiveUnitPrice}}元/件</div>
            </div>
          </el-col>
          <el-col :span="12">
            <div class="barcode-item">
              <div class="barcode-label">产品高度</div>
              <div class="barcode-value">{{barcodeDetail.specificationModel}}{{barcodeDetail.unit}}</div>
              <div class="barcode-label">单价</div>
              <div class="barcode-value">{{barcodeDetail.dollarPrice}}美元/件</div>
            </div>
          </el-col>
        </el-row>
@@ -257,7 +260,7 @@
          <el-col :span="12">
            <div class="barcode-item">
              <div class="barcode-label">每件数量/支</div>
              <div class="barcode-value">{{barcodeDetail.specificationModel}}</div>
              <div class="barcode-value">{{barcodeDetail.boxNum}}</div>
            </div>
          </el-col>
        </el-row>
@@ -266,6 +269,12 @@
            <div class="barcode-item">
              <div class="barcode-label">纸箱规格</div>
              <div class="barcode-value">{{barcodeDetail.cartonSpecifications}}</div>
            </div>
          </el-col>
          <el-col :span="12">
            <div class="barcode-item">
              <div class="barcode-label">入库人</div>
              <div class="barcode-value">{{barcodeDetail.createBy}}</div>
            </div>
          </el-col>
        </el-row>
@@ -595,6 +604,7 @@
  }
}
const getDetail = (barcode)=>{
  console.log('barcode',barcode)
  if(barcode.indexOf(",")==-1){
    proxy.$modal.msgWarning("请扫描正确的条形码")
    return
src/views/inventoryManagement/stockManagement/components/FormDiaManual.vue
@@ -35,8 +35,9 @@
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="库存数量/件:" prop="inboundNum">
            <el-input v-model="form.inboundNum" placeholder="请输入" clearable @input="calculateTotalPrice" />
          <el-form-item label="入库数量/件:" prop="inboundNum">
            <el-input-number :step="1" v-model="form.inboundNum" :min="form.totalInboundNum" style="width: 100%"
                                                             placeholder="请输入" clearable/>
          </el-form-item>
        </el-col>
      </el-row>
src/views/inventoryManagement/stockManagement/index.vue
@@ -87,7 +87,7 @@
           :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">
           <el-table-column align="center" type="selection" width="55" />
           <el-table-column align="center" label="序号" type="index" width="60" />
           <el-table-column label="入库时间" prop="inboundDate" width="100" show-overflow-tooltip />
           <el-table-column label="入库时间" prop="createTime" width="100" show-overflow-tooltip />
                        <el-table-column label="产品名称" prop="productCategory" show-overflow-tooltip />
                        <el-table-column label="产品高度" prop="specificationModel" width="100" show-overflow-tooltip>
                        <template #default="scope">
@@ -96,6 +96,8 @@
                        </el-table-column>
                        <el-table-column label="每件数量/支" prop="boxNum" width="100" show-overflow-tooltip />
                        <el-table-column label="入库数量" prop="inboundNum" width="100" show-overflow-tooltip />
            <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(美元)/件" prop="dollarPrice" width="150"></el-table-column>
                        <el-table-column label="已出库数量" prop="totalInboundNum" width="100" show-overflow-tooltip />
                        <el-table-column label="剩余库存" prop="inboundNum0" width="100" show-overflow-tooltip />
            <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150"></el-table-column>
@@ -154,16 +156,18 @@
                            <div>{{ scope.row.specificationModel }}{{ scope.row.unit }}</div>
                        </template>
                        </el-table-column>
            <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
                        <el-table-column label="单价(美元)/件" prop="dollarPrice" width="150"></el-table-column>
                        <el-table-column label="每件数量/支" prop="boxNum" width="100" show-overflow-tooltip />
                        <el-table-column label="入库数量" prop="inboundNum" width="100" show-overflow-tooltip />
                        <el-table-column label="已出库数量" prop="totalInboundNum" width="100" show-overflow-tooltip />
                        <el-table-column label="剩余库存" prop="inboundNum0" width="100" show-overflow-tooltip />
            <el-table-column label="纸箱规格" prop="cartonSpecifications" width="150"></el-table-column>
            <el-table-column fixed="right" label="操作" width="100" align="center">
            <!-- <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>
              </template>
            </el-table-column>
            </el-table-column> -->
          </el-table>
          <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"
            :page="page.current" :limit="page.size" @pagination="paginationChange" />
@@ -261,6 +265,7 @@
import {
    updateManagement, updateManagementByCustom, updateStockIn
} from "@/api/inventoryManagement/stockIn.js";
const javaApiUrl = __BASE_API__;
// 导入三个独立的弹框组件
import FormDiaProduction from './components/FormDiaProduction.vue'
@@ -505,7 +510,7 @@
  delete submitData.taxExclusiveTotalPrice
  
  console.log('提交给后端的数据(已移除总价字段):', submitData)
  submitData.inboundNum = parseFloat(submitData.inboundNum)||0
  // 根据当前标签页调用不同的提交接口
  let apiCall
  if (activeTab.value === 'production') {
src/views/salesManagement/salesLedger/index.vue
@@ -47,12 +47,19 @@
          <template #default="props">
            <el-table :data="props.row.children" border show-summary :summary-method="summarizeChildrenTable">
              <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="unit" />
              <el-table-column label="数量" prop="quantity" />
              <el-table-column label="产品名称" prop="productCategory"/>
              <el-table-column label="产品高度" prop="specificationModel" width="100">
                <template #default="scope">
                  <div>{{ scope.row.specificationModel }}{{ scope.row.unit }}</div>
                </template>
              </el-table-column>
              <el-table-column label="数量/件" prop="quantity"/>
              <el-table-column label="每件数量/支" prop="boxNum" width="100"/>
              <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" :formatter="formattedNumber"></el-table-column>
              <el-table-column label="单价(美元)/件" prop="dollarPrice"></el-table-column>
              <el-table-column label="纸箱规格" prop="cartonSpecifications"></el-table-column>
              <el-table-column label="税率(%)" prop="taxRate" />
              <el-table-column label="含税单价(元)" prop="taxInclusiveUnitPrice" :formatter="formattedNumber" />
              <el-table-column label="含税总价(元)" prop="taxInclusiveTotalPrice" :formatter="formattedNumber" />
              <el-table-column label="不含税总价(元)" prop="taxExclusiveTotalPrice" :formatter="formattedNumber" />
            </el-table>
@@ -163,14 +170,21 @@
          :summary-method="summarizeMainTable">
          <el-table-column align="center" type="selection" width="55" v-if="operationType !== 'view'" />
          <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="unit" />
          <el-table-column label="数量" prop="quantity" />
          <el-table-column label="税率(%)" prop="taxRate" />
          <el-table-column label="含税单价(元)" prop="taxInclusiveUnitPrice" :formatter="formattedNumber" />
          <el-table-column label="含税总价(元)" prop="taxInclusiveTotalPrice" :formatter="formattedNumber" />
          <el-table-column label="不含税总价(元)" prop="taxExclusiveTotalPrice" :formatter="formattedNumber" />
          <el-table-column label="产品名称" prop="productCategory" />
          <el-table-column label="产品高度" prop="specificationModel">
            <template #default="scope">
              <div>{{ scope.row.specificationModel }}{{ scope.row.unit }}</div>
            </template>
          </el-table-column>
          <!-- <el-table-column label="单位" prop="unit" /> -->
          <el-table-column label="数量/件" prop="quantity" />
          <el-table-column label="每件数量/支" prop="boxNum" />
          <!-- <el-table-column label="税率(%)" prop="taxRate" /> -->
          <el-table-column label="单价(元)/件" prop="taxInclusiveUnitPrice" :formatter="formattedNumber" />
          <el-table-column label="单价(美元)/件" prop="dollarPrice" />
          <el-table-column label="纸箱规格/cm" prop="cartonSpecifications" />
          <!-- <el-table-column label="含税总价(元)" prop="taxInclusiveTotalPrice" :formatter="formattedNumber" />
          <el-table-column label="不含税总价(元)" prop="taxExclusiveTotalPrice" :formatter="formattedNumber" /> -->
          <el-table-column fixed="right" label="操作" min-width="60" align="center" v-if="operationType !== 'view'">
            <template #default="scope">
              <el-button link type="primary" size="small" @click="openProductForm('edit', scope.row,scope.$index)">编辑</el-button>
@@ -214,7 +228,7 @@
      <el-form :model="productForm" label-width="140px" label-position="top" :rules="productRules" ref="productFormRef">
        <el-row :gutter="30">
          <el-col :span="24">
            <el-form-item label="产品大类:" prop="productCategory">
            <el-form-item label="产品名称:" prop="productCategory">
              <!-- <el-select v-model="productForm.productCategory" placeholder="请选择" clearable>
                <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName"/>
              </el-select> -->
@@ -225,7 +239,7 @@
        </el-row>
        <el-row :gutter="30">
          <el-col :span="24">
            <el-form-item label="规格型号:" prop="productModelId">
            <el-form-item label="产品高度:" prop="productModelId">
              <el-select v-model="productForm.productModelId" placeholder="请选择" clearable @change="getProductModel">
                <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
              </el-select>
@@ -234,7 +248,7 @@
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="单位:" prop="unit">
            <el-form-item label="高度单位:" prop="unit">
              <el-input v-model="productForm.unit" placeholder="请输入" clearable />
            </el-form-item>
          </el-col>
@@ -250,19 +264,33 @@
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="含税单价(元):" prop="taxInclusiveUnitPrice">
            <el-form-item label="单价(元)/件:" prop="taxInclusiveUnitPrice">
              <el-input-number :step="0.01" :min="0" v-model="productForm.taxInclusiveUnitPrice" style="width: 100%"
                                                             :precision="2"
                                                             placeholder="请输入" clearable @change="calculateFromUnitPrice" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="单价(美元)/件:" prop="dollarPrice">
              <el-input-number :step="0.01" :min="0" v-model="productForm.dollarPrice" style="width: 100%"
                                                             :precision="2"
                                                             placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
                    <el-col :span="12">
                        <el-form-item label="数量:" prop="quantity">
                            <el-input-number  :step="0.1" :min="0" v-model="productForm.quantity" placeholder="请输入" clearable
                                                                :precision="2"
                        <el-form-item label="数量/件:" prop="quantity">
                            <el-input-number  :min="0" v-model="productForm.quantity" placeholder="请输入" clearable
                                                                @change="calculateFromQuantity" style="width: 100%" />
                        </el-form-item>
                    </el-col>
          <el-col :span="12">
            <el-form-item label="每件数量/支:" prop="boxNum">
              <el-input-number  :min="0" v-model="productForm.boxNum" placeholder="请输入" clearable
                                                                @change="calculateFromQuantity" style="width: 100%" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
@@ -277,6 +305,11 @@
          </el-col>
        </el-row>
        <el-row :gutter="30">
                    <el-col :span="12">
                        <el-form-item label="纸箱规格/cm:" prop="cartonSpecifications">
              <el-input v-model="productForm.cartonSpecifications" placeholder="请输入" clearable />
            </el-form-item>
                    </el-col>
          <el-col :span="12">
            <el-form-item label="发票类型:" prop="invoiceType">
              <el-select v-model="productForm.invoiceType" placeholder="请选择" clearable>
@@ -551,6 +584,9 @@
    taxInclusiveTotalPrice: "",
    taxExclusiveTotalPrice: "",
    invoiceType: "",
    cartonSpecifications:'',
    boxNum: "",
    dollarPrice: ''
  },
  productRules: {
    productCategory: [{ required: true, message: "请选择", trigger: "change" }],
@@ -561,6 +597,13 @@
    unit: [{ required: true, message: "请输入", trigger: "blur" }],
    quantity: [{ required: true, message: "请输入", trigger: "blur" }],
    taxInclusiveUnitPrice: [
      { required: true, message: "请输入", trigger: "blur" },
    ],
    dollarPrice: [
      { required: true, message: "请输入", trigger: "blur" },
    ],
    cartonSpecifications: [{ required: true, message: "请输入", trigger: "blur" }],
    boxNum: [
      { required: true, message: "请输入", trigger: "blur" },
    ],
    taxRate: [{ required: true, message: "请选择", trigger: "change" }],
@@ -644,7 +687,7 @@
      tableLoading.value = false;
    });
};
// 获取产品大类tree数据
// 获取产品名称tree数据
const getProductOptions = () => {
  productTreeList().then((res) => {
    productOptions.value = convertIdToValue(res);
@@ -1393,10 +1436,10 @@
// 根据不含税总价计算含税单价和数量
const calculateFromExclusiveTotalPrice = () => {
    if (!productForm.value.taxRate) {
        proxy.$modal.msgWarning("请先选择税率");
        return;
    }
    // if (!productForm.value.taxRate) {
    //     proxy.$modal.msgWarning("请先选择税率");
    //     return;
    // }
  if (isCalculating.value) return;
  
  const exclusiveTotalPrice = parseFloat(productForm.value.taxExclusiveTotalPrice);
@@ -1422,10 +1465,10 @@
// 根据数量变化计算总价
const calculateFromQuantity = () => {
    if (!productForm.value.taxRate) {
        proxy.$modal.msgWarning("请先选择税率");
        return;
    }
    // if (!productForm.value.taxRate) {
    //     proxy.$modal.msgWarning("请先选择税率");
    //     return;
    // }
  if (isCalculating.value) return;
  
  const quantity = parseFloat(productForm.value.quantity);
@@ -1454,10 +1497,10 @@
// 根据含税单价变化计算总价
const calculateFromUnitPrice = () => {
    if (!productForm.value.taxRate) {
        proxy.$modal.msgWarning("请先选择税率");
        return;
    }
    // if (!productForm.value.taxRate) {
    //     proxy.$modal.msgWarning("请先选择税率");
    //     return;
    // }
  if (isCalculating.value) return;
  
  const quantity = parseFloat(productForm.value.quantity);
@@ -1486,10 +1529,10 @@
// 根据税率变化计算不含税总价
const calculateFromTaxRate = () => {
    if (!productForm.value.taxRate) {
        proxy.$modal.msgWarning("请先选择税率");
        return;
    }
    // if (!productForm.value.taxRate) {
    //     proxy.$modal.msgWarning("请先选择税率");
    //     return;
    // }
  if (isCalculating.value) return;
  
  const inclusiveTotalPrice = parseFloat(productForm.value.taxInclusiveTotalPrice);