<template> 
 | 
  <div class="app-container"> 
 | 
    <div class="search_form"> 
 | 
      <el-form :inline="true" :model="searchForm"> 
 | 
        <el-form-item label="客户名称"> 
 | 
          <el-input 
 | 
            v-model="searchForm.customerName" 
 | 
            style="width: 240px" 
 | 
            placeholder="请输入名称搜索" 
 | 
            clearable 
 | 
            :prefix-icon="Search" 
 | 
            @change="handleQuery" 
 | 
          /> 
 | 
        </el-form-item> 
 | 
        <el-form-item label="客户合同号"> 
 | 
          <el-input 
 | 
            v-model="searchForm.customerContractNo" 
 | 
            placeholder="请输入客户合同号" 
 | 
            clearable 
 | 
          /> 
 | 
        </el-form-item> 
 | 
        <el-form-item label="项目名称"> 
 | 
          <el-input 
 | 
            v-model="searchForm.projectName" 
 | 
            placeholder="请输入项目名称" 
 | 
            clearable 
 | 
          /> 
 | 
        </el-form-item> 
 | 
        <el-form-item> 
 | 
          <el-checkbox 
 | 
            v-model="searchForm.status" 
 | 
            label="不显示未开票金额为0" 
 | 
            @change="handleQuery" 
 | 
          /> 
 | 
        </el-form-item> 
 | 
        <el-form-item> 
 | 
          <el-button type="primary" @click="handleQuery"> 搜索 </el-button> 
 | 
          <el-button @click="resetForm"> 重置 </el-button> 
 | 
          <el-button @click="handleExport" style="margin-right: 10px">导出</el-button> 
 | 
        </el-form-item> 
 | 
      </el-form> 
 | 
    </div> 
 | 
    <div class="table_list"> 
 | 
      <div class="flex justify-between"> 
 | 
        <div></div> 
 | 
        <div> 
 | 
        <el-button type="primary" @click="openForm" style="margin-bottom: 8px"> 
 | 
          新增登记 
 | 
        </el-button> 
 | 
        </div> 
 | 
      </div> 
 | 
      <el-table 
 | 
        :data="tableData" 
 | 
        :border="true" 
 | 
        height="calc(100vh - 21em)" 
 | 
        v-loading="tableLoading" 
 | 
        :expand-row-keys="expandedRowKeys" 
 | 
        :row-key="(row) => row.id" 
 | 
        show-summary 
 | 
        :summary-method="summarizeMainTable" 
 | 
        @expand-change="expandChange" 
 | 
        @selection-change="handleSelectionChange" 
 | 
      > 
 | 
        <el-table-column align="center" type="selection" width="55" /> 
 | 
        <el-table-column type="expand"> 
 | 
          <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" 
 | 
                width="150" 
 | 
              /> 
 | 
              <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="含税单价(元)" 
 | 
                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="invoiceNum" 
 | 
                :formatter="formattedNumber" 
 | 
              /> 
 | 
              <el-table-column 
 | 
                label="开票金额(元)" 
 | 
                prop="invoiceAmount" 
 | 
                :formatter="formattedNumber" 
 | 
              /> 
 | 
              <el-table-column 
 | 
                label="未开票数" 
 | 
                prop="noInvoiceNum" 
 | 
                :formatter="formattedNumber" 
 | 
              /> 
 | 
              <el-table-column 
 | 
                label="未开票金额(元)" 
 | 
                prop="noInvoiceAmount" 
 | 
                :formatter="formattedNumber" 
 | 
              /> 
 | 
            </el-table> 
 | 
          </template> 
 | 
        </el-table-column> 
 | 
        <el-table-column align="center" label="序号" type="index" width="60" /> 
 | 
        <el-table-column 
 | 
          label="销售合同号" 
 | 
          prop="salesContractNo" 
 | 
          show-overflow-tooltip 
 | 
          width="200" 
 | 
        /> 
 | 
        <el-table-column 
 | 
          label="客户合同号" 
 | 
          prop="customerContractNo" 
 | 
          width="200" 
 | 
          show-overflow-tooltip 
 | 
        /> 
 | 
        <el-table-column 
 | 
          label="客户名称" 
 | 
          prop="customerName" 
 | 
          show-overflow-tooltip 
 | 
          width="240" 
 | 
        /> 
 | 
        <el-table-column label="业务员" prop="salesman" show-overflow-tooltip width="90"/> 
 | 
        <el-table-column 
 | 
          label="项目名称" 
 | 
          prop="projectName" 
 | 
          show-overflow-tooltip 
 | 
          width="200" 
 | 
        /> 
 | 
        <el-table-column 
 | 
          label="合同金额(元)" 
 | 
          prop="contractAmount" 
 | 
          show-overflow-tooltip 
 | 
          :formatter="formattedNumber" 
 | 
                    width="220" 
 | 
  
 | 
        /> 
 | 
        <el-table-column 
 | 
          label="已开票金额(元)" 
 | 
          prop="invoiceTotal" 
 | 
          show-overflow-tooltip 
 | 
          :formatter="formattedNumber" 
 | 
          width="120" 
 | 
        /> 
 | 
        <el-table-column 
 | 
          label="未开票金额(元)" 
 | 
          prop="noInvoiceAmountTotal" 
 | 
          show-overflow-tooltip 
 | 
          width="120" 
 | 
        > 
 | 
          <template #default="{ row, column }"> 
 | 
            <el-text type="danger"> 
 | 
              {{ formattedNumber(row, column, row.noInvoiceAmountTotal) }} 
 | 
            </el-text> 
 | 
          </template> 
 | 
        </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" 
 | 
      /> 
 | 
    </div> 
 | 
    <el-dialog 
 | 
      v-model="dialogFormVisible" 
 | 
      title="新增开票登记页面" 
 | 
      width="85%" 
 | 
      @close="closeDia" 
 | 
    > 
 | 
      <el-form 
 | 
        :model="form" 
 | 
        label-width="140px" 
 | 
        label-position="top" 
 | 
        :rules="rules" 
 | 
        ref="formRef" 
 | 
      > 
 | 
        <el-row :gutter="30"> 
 | 
          <el-col :span="12"> 
 | 
            <el-form-item label="销售合同号:" prop="salesContractNo"> 
 | 
              <el-input v-model="form.salesContractNo" disabled></el-input> 
 | 
            </el-form-item> 
 | 
          </el-col> 
 | 
          <el-col :span="12"> 
 | 
            <el-form-item label="客户名称:" prop="customerName"> 
 | 
              <el-input 
 | 
                v-model="form.customerName" 
 | 
                placeholder="自动填充" 
 | 
                disabled 
 | 
              ></el-input> 
 | 
            </el-form-item> 
 | 
          </el-col> 
 | 
        </el-row> 
 | 
        <el-row :gutter="30"> 
 | 
          <el-col :span="12"> 
 | 
            <el-form-item label="业务员:" prop="salesman"> 
 | 
              <el-input 
 | 
                v-model="form.salesman" 
 | 
                placeholder="自动填充" 
 | 
                disabled 
 | 
              /> 
 | 
            </el-form-item> 
 | 
          </el-col> 
 | 
          <el-col :span="12"> 
 | 
            <el-form-item label="项目名称:" prop="projectName"> 
 | 
              <el-input 
 | 
                v-model="form.projectName" 
 | 
                placeholder="自动填充" 
 | 
                disabled 
 | 
              /> 
 | 
            </el-form-item> 
 | 
          </el-col> 
 | 
        </el-row> 
 | 
        <el-row :gutter="30"> 
 | 
          <el-col :span="12"> 
 | 
            <el-form-item label="录入人" prop="createUer"> 
 | 
              <el-input v-model="form.createUer" placeholder="请输入录入人" /> 
 | 
            </el-form-item> 
 | 
          </el-col> 
 | 
          <el-col :span="12"> 
 | 
            <el-form-item label="开票日期" prop="issueDate"> 
 | 
              <el-date-picker 
 | 
                style="width: 100%" 
 | 
                v-model="form.issueDate" 
 | 
                type="date" 
 | 
                placeholder="请选择" 
 | 
                clearable 
 | 
                format="YYYY-MM-DD" 
 | 
                value-format="YYYY-MM-DD" 
 | 
              /> 
 | 
            </el-form-item> 
 | 
          </el-col> 
 | 
        </el-row> 
 | 
        <el-row :gutter="30"> 
 | 
          <el-col :span="12"> 
 | 
            <el-form-item label="录入日期:" prop="createTime"> 
 | 
              <el-date-picker 
 | 
                style="width: 100%" 
 | 
                v-model="form.createTime" 
 | 
                type="date" 
 | 
                placeholder="请选择" 
 | 
                clearable 
 | 
              /> 
 | 
            </el-form-item> 
 | 
          </el-col> 
 | 
          <el-col :span="12"> 
 | 
            <el-form-item label="发票号码:" prop="invoiceNo"> 
 | 
              <el-input 
 | 
                v-model="form.invoiceNo" 
 | 
                placeholder="请输入" 
 | 
                clearable 
 | 
              /> 
 | 
            </el-form-item> 
 | 
          </el-col> 
 | 
        </el-row> 
 | 
        <el-row> 
 | 
          <el-form-item label="产品信息:" prop="entryDate"> </el-form-item> 
 | 
        </el-row> 
 | 
        <el-table 
 | 
          :data="productData" 
 | 
          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" 
 | 
            width="150" 
 | 
          /> 
 | 
          <el-table-column label="单位" prop="unit" /> 
 | 
          <el-table-column label="数量" prop="quantity" width="70" /> 
 | 
          <el-table-column label="税率(%)" prop="taxRate" width="80" /> 
 | 
          <el-table-column 
 | 
            label="含税单价(元)" 
 | 
            prop="taxInclusiveUnitPrice" 
 | 
            :formatter="formattedNumber" 
 | 
                        width="200" 
 | 
          /> 
 | 
          <el-table-column 
 | 
            label="含税总价(元)" 
 | 
            prop="taxInclusiveTotalPrice" 
 | 
            :formatter="formattedNumber" 
 | 
                        width="200" 
 | 
          /> 
 | 
          <el-table-column 
 | 
            label="不含税总价(元)" 
 | 
            prop="taxExclusiveTotalPrice" 
 | 
            :formatter="formattedNumber" 
 | 
            width="150" 
 | 
          /> 
 | 
          <el-table-column label="本次开票数" prop="currentInvoiceNum" width="180"> 
 | 
            <template #default="scope"> 
 | 
              <el-input-number :step="0.1" :min="0" style="width: 100%" 
 | 
                                                             :precision="2" 
 | 
                v-model="scope.row.currentInvoiceNum" 
 | 
                @change="invoiceNumBlur(scope.row)" 
 | 
              ></el-input-number> 
 | 
            </template> 
 | 
          </el-table-column> 
 | 
          <el-table-column 
 | 
            label="本次开票金额(元)" 
 | 
            prop="currentInvoiceAmount" 
 | 
            width="180" 
 | 
          > 
 | 
            <template #default="scope"> 
 | 
              <el-input-number :step="0.01" :min="0" style="width: 100%" 
 | 
                                                             :precision="2" 
 | 
                v-model="scope.row.currentInvoiceAmount" 
 | 
                @change="invoiceAmountBlur(scope.row)" 
 | 
              ></el-input-number> 
 | 
            </template> 
 | 
          </el-table-column> 
 | 
          <el-table-column label="未开票数" prop="noInvoiceNum" width="120"> 
 | 
            <template #default="scope"> 
 | 
              <el-input 
 | 
                type="number" 
 | 
                min="0" 
 | 
                disabled 
 | 
                v-model="scope.row.noInvoiceNum" 
 | 
              ></el-input> 
 | 
            </template> 
 | 
          </el-table-column> 
 | 
          <el-table-column 
 | 
            label="未开票金额(元)" 
 | 
            prop="noInvoiceAmount" 
 | 
            width="200" 
 | 
          > 
 | 
            <template #default="scope"> 
 | 
              <el-input 
 | 
                type="number" 
 | 
                min="0" 
 | 
                disabled 
 | 
                v-model="scope.row.noInvoiceAmount" 
 | 
                :formatter="formattedInputNumber" 
 | 
                :precision="2" 
 | 
                :step="0.01" 
 | 
              ></el-input> 
 | 
            </template> 
 | 
          </el-table-column> 
 | 
          <el-table-column label="登记人" prop="register" width="100"> 
 | 
            <!-- <template #default="{ row }"> 
 | 
              <el-input 
 | 
                v-model="row.register" 
 | 
                placeholder="请输入登记人" 
 | 
                disabled 
 | 
              /> 
 | 
            </template> --> 
 | 
          </el-table-column> 
 | 
          <el-table-column label="登记日期" prop="registerDate" width="150"> 
 | 
            <!-- <template #default="{ row }"> 
 | 
              <el-date-picker 
 | 
                style="width: 100%" 
 | 
                v-model="row.registerDate" 
 | 
                value-format="YYYY-MM-DD" 
 | 
                format="YYYY-MM-DD" 
 | 
                type="date" 
 | 
                placeholder="请选择" 
 | 
                clearable 
 | 
                disabled 
 | 
              /> 
 | 
            </template> --> 
 | 
          </el-table-column> 
 | 
        </el-table> 
 | 
      </el-form> 
 | 
      <template #footer> 
 | 
        <div class="dialog-footer"> 
 | 
          <el-button type="primary" @click="submitForm">确认</el-button> 
 | 
          <el-button @click="closeDia">取消</el-button> 
 | 
        </div> 
 | 
      </template> 
 | 
    </el-dialog> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script setup> 
 | 
import pagination from "@/components/PIMTable/Pagination.vue"; 
 | 
import { onMounted, ref } from "vue"; 
 | 
import { Search } from "@element-plus/icons-vue"; 
 | 
import { ElMessageBox } from "element-plus"; 
 | 
// import {userListNoPage} from "@/api/system/user.js"; 
 | 
import { 
 | 
  getSalesLedgerWithProducts, 
 | 
  ledgerListPage, 
 | 
  productList, 
 | 
} from "@/api/salesManagement/salesLedger.js"; 
 | 
import { invoiceRegistrationSave } from "@/api/salesManagement/invoiceRegistration.js"; 
 | 
import useFormData from "@/hooks/useFormData"; 
 | 
import useUserStore from "@/store/modules/user"; 
 | 
import dayjs from "dayjs"; 
 | 
  
 | 
const { proxy } = getCurrentInstance(); 
 | 
const userStore = useUserStore(); 
 | 
const tableData = ref([]); 
 | 
const productData = ref([]); 
 | 
const selectedRows = ref([]); 
 | 
const tableLoading = ref(false); 
 | 
const page = reactive({ 
 | 
  current: 1, 
 | 
  size: 100, 
 | 
}); 
 | 
const total = ref(0); 
 | 
// 用户信息表单弹框数据 
 | 
const operationType = ref(""); 
 | 
const dialogFormVisible = ref(false); 
 | 
const data = reactive({ 
 | 
  searchForm: { 
 | 
    customerName: "", 
 | 
    status: false, 
 | 
    customerContractNo: undefined, // 客户合同号 
 | 
    projectName: undefined, // 项目名称 
 | 
    createUer: undefined, // 登记人 
 | 
    issueDate: undefined, // 开票日期 
 | 
    createTime: undefined, // 录入日期: 
 | 
  }, 
 | 
  form: { 
 | 
    salesLedgerId: "", 
 | 
    customerName: "", 
 | 
    salesman: "", 
 | 
    projectName: "", 
 | 
    productData: [], 
 | 
    invoiceNo: "", 
 | 
    createUer: userStore.nickName, 
 | 
    issueDate: dayjs().format("YYYY-MM-DD"), 
 | 
  }, 
 | 
  rules: { 
 | 
    salesLedgerId: [{ required: true, message: "请选择", trigger: "change" }], 
 | 
    createUer: [{ required: true, message: "请选择", trigger: "blur" }], 
 | 
    issueDate: [{ required: true, message: "请选择", trigger: "change" }], 
 | 
    invoiceNo: [{ required: true, message: "请输入", trigger: "change" }], 
 | 
    createTime: [{ required: true, message: "请选择", trigger: "change" }], 
 | 
  }, 
 | 
}); 
 | 
const { form, rules } = toRefs(data); 
 | 
const { form: searchForm, resetForm } = useFormData(data.searchForm); 
 | 
  
 | 
const formattedNumber = (row, column, cellValue) => { 
 | 
  if (cellValue == 0) { 
 | 
    return parseFloat(cellValue).toFixed(2); 
 | 
  } 
 | 
  if (cellValue) { 
 | 
    return parseFloat(cellValue).toFixed(2); 
 | 
  } else { 
 | 
    return cellValue; 
 | 
  } 
 | 
}; 
 | 
  
 | 
const formattedInputNumber = (value) => { 
 | 
  return value ? parseFloat(value).toFixed(2) : 0; 
 | 
}; 
 | 
  
 | 
// 查询列表 
 | 
/** 搜索按钮操作 */ 
 | 
const handleQuery = () => { 
 | 
  page.current = 1; 
 | 
  getList(); 
 | 
}; 
 | 
const paginationChange = (obj) => { 
 | 
  page.current = obj.page; 
 | 
  page.size = obj.limit; 
 | 
  getList(); 
 | 
}; 
 | 
const getList = () => { 
 | 
  tableLoading.value = true; 
 | 
  ledgerListPage({ ...searchForm, ...page }).then((res) => { 
 | 
    tableLoading.value = false; 
 | 
    tableData.value = res.records; 
 | 
    total.value = res.total; 
 | 
    expandedRowKeys.value = []; 
 | 
  }); 
 | 
}; 
 | 
// 表格选择数据 
 | 
const handleSelectionChange = (selection) => { 
 | 
  console.log("selection", selection); 
 | 
  selectedRows.value = selection.filter( 
 | 
    (item) => item.salesContractNo !== undefined 
 | 
  ); 
 | 
}; 
 | 
const expandedRowKeys = ref([]); 
 | 
// 展开行 
 | 
const expandChange = (row, expandedRows) => { 
 | 
  if (expandedRows.length > 0) { 
 | 
    expandedRowKeys.value = []; 
 | 
    try { 
 | 
      productList({ salesLedgerId: row.id, type: 1 }).then((res) => { 
 | 
        const index = tableData.value.findIndex((item) => item.id === row.id); 
 | 
        if (index > -1) { 
 | 
          tableData.value[index].children = res.data; 
 | 
        } 
 | 
        expandedRowKeys.value.push(row.id); 
 | 
      }); 
 | 
    } catch (error) { 
 | 
      console.log(error); 
 | 
    } 
 | 
  } else { 
 | 
    expandedRowKeys.value = []; 
 | 
  } 
 | 
}; 
 | 
// 主表合计方法 
 | 
const summarizeMainTable = (param) => { 
 | 
  return proxy.summarizeTable(param, [ 
 | 
    "contractAmount", 
 | 
    "invoiceTotal", 
 | 
    "noInvoiceAmountTotal", 
 | 
  ]); 
 | 
}; 
 | 
// 子表合计方法 
 | 
const summarizeChildrenTable = (param) => { 
 | 
  return proxy.summarizeTable(param, [ 
 | 
    "taxInclusiveUnitPrice", 
 | 
    "taxInclusiveTotalPrice", 
 | 
    "taxExclusiveTotalPrice", 
 | 
    "invoiceNum", 
 | 
    "invoiceAmount", 
 | 
    "currentInvoiceAmount", 
 | 
    "noInvoiceNum", 
 | 
    "noInvoiceAmount", 
 | 
    "currentInvoiceNum", 
 | 
  ]); 
 | 
}; 
 | 
// 打开弹框 
 | 
const openForm = () => { 
 | 
  // 判断是否多选 
 | 
  if (selectedRows.value.length != 1) { 
 | 
    proxy.$modal.msgError("请选择一条合同"); 
 | 
    return; 
 | 
  } 
 | 
  form.value = {}; 
 | 
  productData.value = []; 
 | 
  getSalesLedgerWithProducts({ id: selectedRows.value[0].id }).then((res) => { 
 | 
    form.value = { ...res }; 
 | 
    form.value.createTime = dayjs().format("YYYY-MM-DD"); 
 | 
    form.value.issueDate = dayjs().format("YYYY-MM-DD"); 
 | 
    form.value.createUer = userStore.nickName; 
 | 
    productData.value = form.value.productData.map((item) => { 
 | 
      return item; 
 | 
    }); 
 | 
    dialogFormVisible.value = true; 
 | 
    console.log("productData.value ", productData.value); 
 | 
  }); 
 | 
}; 
 | 
// 提交表单 
 | 
const submitForm = () => { 
 | 
  proxy.$refs["formRef"].validate((valid) => { 
 | 
    if (valid) { 
 | 
      form.value.productData = proxy.HaveJson(productData.value); 
 | 
      invoiceRegistrationSave(form.value).then((res) => { 
 | 
        proxy.$modal.msgSuccess("提交成功"); 
 | 
        closeDia(); 
 | 
        getList(); 
 | 
      }); 
 | 
    } 
 | 
  }); 
 | 
}; 
 | 
// 关闭弹框 
 | 
const closeDia = () => { 
 | 
  proxy.resetForm("formRef"); 
 | 
  dialogFormVisible.value = false; 
 | 
}; 
 | 
// 导出 
 | 
const handleOut = () => { 
 | 
  ElMessageBox.confirm("选中的内容将被导出,是否确认导出?", "导出", { 
 | 
    confirmButtonText: "确认", 
 | 
    cancelButtonText: "取消", 
 | 
    type: "warning", 
 | 
  }) 
 | 
    .then(() => { 
 | 
      proxy.download("/invoiceRegistration/export", {}, "开票登记信息.xlsx"); 
 | 
    }) 
 | 
    .catch(() => { 
 | 
      proxy.$modal.msg("已取消"); 
 | 
    }); 
 | 
}; 
 | 
  
 | 
// 导出销售台账 
 | 
const handleExport = () => { 
 | 
  ElMessageBox.confirm("选中的内容将被导出,是否确认导出?", "导出", { 
 | 
    confirmButtonText: "确认", 
 | 
    cancelButtonText: "取消", 
 | 
    type: "warning", 
 | 
  }) 
 | 
    .then(() => { 
 | 
      proxy.download("/sales/ledger/exportOne", { ...searchForm, ...page }, "开票登记.xlsx"); 
 | 
    }) 
 | 
    .catch(() => { 
 | 
      proxy.$modal.msg("已取消"); 
 | 
    }); 
 | 
}; 
 | 
  
 | 
//本次开票失焦操作 
 | 
const invoiceNumBlur = (row) => { 
 | 
  if (!row.currentInvoiceNum) { 
 | 
    row.currentInvoiceNum = 0; 
 | 
  } 
 | 
  if (row.currentInvoiceNum > row.tempNoInvoiceNum) { 
 | 
    proxy.$modal.msgWarning("本次开票数不得大于未开票数"); 
 | 
    row.currentInvoiceNum = 0; 
 | 
  } 
 | 
  // 计算本次开票金额 
 | 
  row.currentInvoiceAmount = ( 
 | 
    row.currentInvoiceNum * row.taxInclusiveUnitPrice 
 | 
  ).toFixed(2); 
 | 
  // 计算未开票数 
 | 
  row.noInvoiceNum = (row.originalNoInvoiceNum - row.currentInvoiceNum).toFixed( 
 | 
    2 
 | 
  ); 
 | 
  // 计算未开票金额 
 | 
  row.noInvoiceAmount = ( 
 | 
    row.tempnoInvoiceAmount - row.currentInvoiceAmount 
 | 
  ).toFixed(2); 
 | 
}; 
 | 
// 本次开票金额失焦操作 
 | 
const invoiceAmountBlur = (row) => { 
 | 
  if (!row.currentInvoiceAmount) { 
 | 
    row.currentInvoiceAmount = 0; 
 | 
  } 
 | 
  // 计算是否超过开票总金额 
 | 
  if (row.currentInvoiceAmount > row.tempnoInvoiceAmount) { 
 | 
    proxy.$modal.msgWarning("本次开票金额不得大于未开票金额"); 
 | 
    row.currentInvoiceAmount = 0; 
 | 
  } 
 | 
  // 计算本次开票数 
 | 
  row.currentInvoiceNum = ( 
 | 
    row.currentInvoiceAmount / row.taxInclusiveUnitPrice 
 | 
  ).toFixed(2); 
 | 
  console.log("row.currentInvoiceNum ", row.currentInvoiceNum); 
 | 
  console.log(" row.originalNoInvoiceNum  ", row.originalNoInvoiceNum); 
 | 
  // 计算未开票数 
 | 
  row.noInvoiceNum = (row.originalNoInvoiceNum - row.currentInvoiceNum).toFixed( 
 | 
    2 
 | 
  ); 
 | 
  // 计算未开票金额 
 | 
  row.noInvoiceAmount = ( 
 | 
    row.tempnoInvoiceAmount - row.currentInvoiceAmount 
 | 
  ).toFixed(2); 
 | 
}; 
 | 
  
 | 
onMounted(() => { 
 | 
  getList(); 
 | 
}); 
 | 
</script> 
 | 
  
 | 
<style scoped lang="scss"> 
 | 
.table_list { 
 | 
  margin-top: unset; 
 | 
} 
 | 
.flex { 
 | 
  display: flex; 
 | 
} 
 | 
.justify-between { 
 | 
  justify-content: space-between; 
 | 
} 
 | 
::v-deep(.el-checkbox__label) { 
 | 
  font-weight: bold; 
 | 
} 
 | 
</style> 
 |