chenrui
2025-06-06 0cfe504df6440d80f05e1ee555ee18be6b7e8321
src/views/procurementManagement/invoiceEntry/index.vue
@@ -107,26 +107,28 @@
          <el-form-item label="产品信息:" prop="entryDate">
          </el-form-item>
        </el-row>
        <el-table :data="productData" border @selection-change="productSelected" show-summary
          :summary-method="summarizeChildrenTable">
        <el-table :data="productData" border @selection-change="productSelected" show-summary style="width: 100%">
          :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="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="unit" width="70" />
          <el-table-column label="数量" prop="quantity" width="70"/>
          <el-table-column label="税率(%)" prop="taxRate" width="80" />
          <el-table-column label="含税单价(元)" width="150" prop="taxInclusiveUnitPrice" :formatter="formattedNumber" />
          <el-table-column label="含税总价(元)" width="150" prop="taxInclusiveTotalPrice" :formatter="formattedNumber" />
          <el-table-column label="不含税总价(元)" width="150" prop="taxExclusiveTotalPrice" :formatter="formattedNumber" />
          <el-table-column label="本次来票数" prop="ticketsNum" width="170">
            <template #default="scope">
              <el-input-number v-model="scope.row.ticketsNum" placeholder="请选择" :precision="0" :step="1" clearable style="width: 100%"
              <el-input-number v-model="scope.row.ticketsNum" placeholder="请选择" min="0" :step="0.1" clearable style="width: 100%"
                @change="invoiceNumBlur(scope.row)" />
            </template>
          </el-table-column>
          <el-table-column label="本次来票金额(元)" prop="ticketsAmount" :formatter="formattedNumber">
          <el-table-column label="本次来票金额(元)" prop="ticketsAmount" min="0" :step="0.1" :formatter="formattedNumber" @change="invoiceAmountBlur"  width="170">
            <template #default="scope">
              {{ scope.row.ticketsAmount || 0 }}
              <el-input-number v-model="scope.row.ticketsAmount" placeholder="请选择" min="0" :step="0.1" clearable style="width: 100%"
                               @change="invoiceAmountBlur(scope.row)" />
            </template>
          </el-table-column>
          <el-table-column label="未来票数" prop="futureTickets"
@@ -198,7 +200,7 @@
  rules: {
    invoiceNumber: [{ required: true, message: '请输入发票号' , trigger: 'blur' },{type:"string"}],
    invoiceAmount: [{ required: true, message: '请输入发票金额' , trigger: 'blur'}],
  }
})
const { searchForm, form, rules } = toRefs(data)
@@ -356,13 +358,6 @@
  proxy.resetForm("formRef")
  dialogFormVisible.value = false
}
// 填写数据
const openProductEdit = (row) => {
  const index = productData.value.findIndex(item => item.id === row.id);
  if (index > -1) {
    productData.value[index].editFlag = !productData.value[index].editFlag
  }
}
// 导出
const handleOut = () => {
  ElMessageBox.confirm(
@@ -403,22 +398,39 @@
    proxy.$modal.msg("已取消")
  })
}
//本次开票失焦操作
//本次来票数失焦操作
const invoiceNumBlur = (row) => {
  if (!row.ticketsNum || row.ticketsNum === '') {
      row.ticketsNum = 0
  }
  if (Number(row.ticketsNum) > Number(row.futureTickets)) {
  if (Number(row.ticketsNum) > Number(row.tempFutureTickets)) {
    proxy.$modal.msgWarning('本次开票数不得大于未开票数')
    row.ticketsNum = 0
    return
  }
  // 计算本次开票金额
  // 计算本次来票金额
  row.ticketsAmount = row.ticketsNum * row.taxInclusiveUnitPrice
  // 计算未开票数
  row.futureTickets = row.futureTickets - row.ticketsNum
  // 计算未开票金额
  row.futureTicketsAmount = row.futureTickets * row.taxInclusiveUnitPrice
  // 计算未来票数
  row.futureTickets = row.tempFutureTickets - row.ticketsNum
  // 计算未来票金额
  row.futureTicketsAmount = row.tempFutureTicketsAmount - row.ticketsAmount
}
// 本次来票金额失焦操作
const invoiceAmountBlur = (row) => {
  if(!row.ticketsAmount){
    row.ticketsAmount = 0
  }
  // 计算是否超过来票总金额
  if(row.ticketsAmount > row.tempFutureTicketsAmount){
    proxy.$modal.msgWarning('本次来票金额不得大于未来票金额')
    row.ticketsAmount = 0
  }
  // 计算本次来票数
  row.ticketsNum = (row.ticketsAmount / row.taxInclusiveUnitPrice).toFixed(2)
  // 计算未来票数
  row.futureTickets = row.tempFutureTickets - row.ticketsNum
  // 计算未来票金额
  row.futureTicketsAmount = row.tempFutureTicketsAmount - row.ticketsAmount
}
// 获取当前日期函数
@@ -434,4 +446,4 @@
getList()
</script>
<style scoped lang="scss"></style>
<style scoped lang="scss"></style>