From af4f913751c08fd6ef70cb183de2fb3c604bab38 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 31 十月 2025 16:33:15 +0800
Subject: [PATCH] 人力资源-添加导出功能
---
src/views/salesManagement/invoiceRegistration/index.vue | 725 +++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 543 insertions(+), 182 deletions(-)
diff --git a/src/views/salesManagement/invoiceRegistration/index.vue b/src/views/salesManagement/invoiceRegistration/index.vue
index 8cc04bd..8bf1236 100644
--- a/src/views/salesManagement/invoiceRegistration/index.vue
+++ b/src/views/salesManagement/invoiceRegistration/index.vue
@@ -1,67 +1,204 @@
<template>
<div class="app-container">
<div class="search_form">
- <div>
- <span class="search_title">寮�绁ㄧ櫥璁帮細</span>
- <el-input
+ <el-form :inline="true" :model="searchForm">
+ <el-form-item label="瀹㈡埛鍚嶇О">
+ <el-input
v-model="searchForm.customerName"
style="width: 240px"
placeholder="璇疯緭鍏ュ悕绉版悳绱�"
- @change="handleQuery"
clearable
:prefix-icon="Search"
- />
- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
- </div>
- <div>
- <el-button type="primary" @click="openForm">鏂板鐧昏</el-button>
- </div>
+ @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">
- <el-table :data="tableData" border v-loading="tableLoading"
- @selection-change="handleSelectionChange"
- :expand-row-keys="expandedRowKeys"
- :row-key="row => row.id"
- show-summary
- :summary-method="summarizeMainTable"
- @expand-change="expandChange"
- height="calc(100vh - 18.5em)">
+ <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
+ :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" width="70"/>
- <el-table-column label="鏁伴噺" prop="quantity" width="70"/>
- <el-table-column label="绋庣巼" prop="taxRate" width="70" />
- <el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" />
- <el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" />
- <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" />
- <el-table-column label="寮�绁ㄦ暟" prop="invoiceNum" />
- <el-table-column label="寮�绁ㄩ噾棰�(鍏�)" prop="invoiceAmount" />
- <el-table-column label="鏈紑绁ㄦ暟" prop="noInvoiceNum" />
- <el-table-column label="鏈紑绁ㄩ噾棰�(鍏�)" prop="noInvoiceAmount"/>
+ <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/>
- <el-table-column label="瀹㈡埛鍚堝悓鍙�" prop="customerContractNo" show-overflow-tooltip/>
- <el-table-column label="瀹㈡埛鍚嶇О" prop="customerName" show-overflow-tooltip/>
- <el-table-column label="涓氬姟鍛�" prop="salesman" show-overflow-tooltip/>
- <el-table-column label="椤圭洰鍚嶇О" prop="projectName" show-overflow-tooltip/>
- <el-table-column label="鍚堝悓閲戦(鍏�)" prop="contractAmount" show-overflow-tooltip/>
- <el-table-column label="鏈紑绁ㄩ噾棰�(鍏�)" prop="noInvoiceAmountTotal" show-overflow-tooltip/>
+ <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" />
+ <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-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">
@@ -70,55 +207,189 @@
</el-col>
<el-col :span="12">
<el-form-item label="瀹㈡埛鍚嶇О锛�" prop="customerName">
- <el-input v-model="form.customerName" placeholder="鑷姩濉厖" disabled></el-input>
+ <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-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-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-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
+ :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" />
+ <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="70" />
- <el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" />
- <el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" />
- <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" width="150" />
- <el-table-column label="鏈寮�绁ㄦ暟" prop="currentInvoiceNum">
+ <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 type="number" :step="0.1" min="0" v-model="scope.row.currentInvoiceNum" @blur="invoiceNumBlur(scope.row)"></el-input>
+ <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="150">
+ <el-table-column
+ label="鏈寮�绁ㄩ噾棰�(鍏�)"
+ prop="currentInvoiceAmount"
+ width="180"
+ >
<template #default="scope">
- <el-input type="number" :step="0.01" min="0" v-model="scope.row.currentInvoiceAmount" @blur="invoiceAmountBlur(scope.row)" ></el-input>
+ <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" >
+ <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>
+ <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="150" >
+ <el-table-column
+ label="鏈紑绁ㄩ噾棰�(鍏�)"
+ prop="noInvoiceAmount"
+ width="200"
+ >
<template #default="scope">
- <el-input type="number" min="0" disabled v-model="scope.row.noInvoiceAmount"></el-input>
+ <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>
@@ -133,193 +404,283 @@
</template>
<script setup>
-import pagination from '@/components/PIMTable/Pagination.vue'
-import { ref } from 'vue'
-import {Search} from "@element-plus/icons-vue";
-import {ElMessageBox } from "element-plus";
+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,
- ledgerList,
+ ledgerListPage,
productList,
} from "@/api/salesManagement/salesLedger.js";
-import {
- invoiceRegistrationSave,
-} from "@/api/salesManagement/invoiceRegistration.js";
-const { proxy } = getCurrentInstance()
-const tableData = ref([])
-const productData = ref([])
-const selectedRows = ref([])
-const tableLoading = ref(false)
+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: 10,
-})
-const total = ref(0)
+ size: 100,
+});
+const total = ref(0);
// 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
-const operationType = ref('')
-const dialogFormVisible = ref(false)
+const operationType = ref("");
+const dialogFormVisible = ref(false);
const data = reactive({
searchForm: {
- customerName: '',
+ customerName: "",
+ status: false,
+ customerContractNo: undefined, // 瀹㈡埛鍚堝悓鍙�
+ projectName: undefined, // 椤圭洰鍚嶇О
+ createUer: undefined, // 鐧昏浜�
+ issueDate: undefined, // 寮�绁ㄦ棩鏈�
+ createTime: undefined, // 褰曞叆鏃ユ湡锛�
},
form: {
- salesLedgerId: '',
- customerName: '',
- salesman: '',
- projectName: '',
- productData: []
+ salesLedgerId: "",
+ customerName: "",
+ salesman: "",
+ projectName: "",
+ productData: [],
+ invoiceNo: "",
+ createUer: userStore.nickName,
+ issueDate: dayjs().format("YYYY-MM-DD"),
},
rules: {
- salesLedgerId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }]
+ 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);
}
-})
-const { searchForm, form, rules } = toRefs(data)
+ 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 = ({ current, limit }) => {
- page.current = current;
- page.size = limit;
- getList()
-}
+ page.current = 1;
+ getList();
+};
+const paginationChange = (obj) => {
+ page.current = obj.page;
+ page.size = obj.limit;
+ getList();
+};
const getList = () => {
- tableLoading.value = true
- ledgerList({...searchForm.value, ...page}).then(res => {
- tableLoading.value = false
- tableData.value = res.rows;
- total.value = res.total
- expandedRowKeys.value = []
- })
-}
+ 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([])
+ 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 = []
+ expandedRowKeys.value = [];
try {
- productList({salesLedgerId: row.id,
- type: 1 }).then(res => {
- const index = tableData.value.findIndex(item => item.id === row.id);
+ 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;
+ tableData.value[index].children = res.data;
}
- expandedRowKeys.value.push(row.id)
- })
+ expandedRowKeys.value.push(row.id);
+ });
} catch (error) {
- console.log(error)
+ console.log(error);
}
} else {
- expandedRowKeys.value = []
+ expandedRowKeys.value = [];
}
-}
+};
// 涓昏〃鍚堣鏂规硶
const summarizeMainTable = (param) => {
- return proxy.summarizeTable(param, ['contractAmount','noInvoiceAmountTotal']);
+ return proxy.summarizeTable(param, [
+ "contractAmount",
+ "invoiceTotal",
+ "noInvoiceAmountTotal",
+ ]);
};
// 瀛愯〃鍚堣鏂规硶
const summarizeChildrenTable = (param) => {
- return proxy.summarizeTable(param, ['taxInclusiveUnitPrice', 'taxInclusiveTotalPrice', 'taxExclusiveTotalPrice','invoiceNum','invoiceAmount','noInvoiceNum','noInvoiceAmount']);
-}
+ return proxy.summarizeTable(param, [
+ "taxInclusiveUnitPrice",
+ "taxInclusiveTotalPrice",
+ "taxExclusiveTotalPrice",
+ "invoiceNum",
+ "invoiceAmount",
+ "currentInvoiceAmount",
+ "noInvoiceNum",
+ "noInvoiceAmount",
+ "currentInvoiceNum",
+ ]);
+};
// 鎵撳紑寮规
const openForm = () => {
// 鍒ゆ柇鏄惁澶氶��
- if(selectedRows.value.length != 1) {
- proxy.$modal.msgError("璇烽�夋嫨涓�鏉″悎鍚�")
+ if (selectedRows.value.length != 1) {
+ proxy.$modal.msgError("璇烽�夋嫨涓�鏉″悎鍚�");
return;
}
- form.value = {}
- productData.value = []
- getSalesLedgerWithProducts({id: selectedRows.value[0].id}).then(res => {
- form.value = {...res}
- productData.value = form.value.productData.map(item => {
- return item
- })
- dialogFormVisible.value = true
- console.log('productData.value ',productData.value )
- })
-
-}
+ 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 => {
+ proxy.$refs["formRef"].validate((valid) => {
if (valid) {
- form.value.productData = proxy.HaveJson(productData.value)
- invoiceRegistrationSave(form.value).then(res => {
- proxy.$modal.msgSuccess("鎻愪氦鎴愬姛")
- closeDia()
- getList()
- })
+ 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
-}
+ proxy.resetForm("formRef");
+ dialogFormVisible.value = false;
+};
// 瀵煎嚭
const handleOut = () => {
- ElMessageBox.confirm(
- '閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�',
- '瀵煎嚭', {
- confirmButtonText: '纭',
- cancelButtonText: '鍙栨秷',
- type: 'warning',
- }
- ).then(() => {
- proxy.download("/invoiceRegistration/export", {}, '寮�绁ㄧ櫥璁颁俊鎭�.xlsx')
- }).catch(() => {
- proxy.$modal.msg("宸插彇娑�")
+ 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.currentInvoiceNum = 0;
}
- if(row.currentInvoiceNum > row.tempNoInvoiceNum){
- proxy.$modal.msgWarning('鏈寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟')
- row.currentInvoiceNum = 0
+ if (row.currentInvoiceNum > row.tempNoInvoiceNum) {
+ proxy.$modal.msgWarning("鏈寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟");
+ row.currentInvoiceNum = 0;
}
// 璁$畻鏈寮�绁ㄩ噾棰�
- row.currentInvoiceAmount = (row.currentInvoiceNum * row.taxInclusiveUnitPrice).toFixed(2)
+ row.currentInvoiceAmount = (
+ row.currentInvoiceNum * row.taxInclusiveUnitPrice
+ ).toFixed(2);
// 璁$畻鏈紑绁ㄦ暟
- row.noInvoiceNum = row.originalNoInvoiceNum - row.currentInvoiceNum
+ row.noInvoiceNum = (row.originalNoInvoiceNum - row.currentInvoiceNum).toFixed(
+ 2
+ );
// 璁$畻鏈紑绁ㄩ噾棰�
- row.noInvoiceAmount = row.tempnoInvoiceAmount - row.currentInvoiceAmount
-}
+ row.noInvoiceAmount = (
+ row.tempnoInvoiceAmount - row.currentInvoiceAmount
+ ).toFixed(2);
+};
// 鏈寮�绁ㄩ噾棰濆け鐒︽搷浣�
const invoiceAmountBlur = (row) => {
- if(!row.currentInvoiceAmount){
- row.currentInvoiceAmount = 0
+ if (!row.currentInvoiceAmount) {
+ row.currentInvoiceAmount = 0;
}
// 璁$畻鏄惁瓒呰繃寮�绁ㄦ�婚噾棰�
- if(row.currentInvoiceAmount > row.tempnoInvoiceAmount){
- proxy.$modal.msgWarning('鏈寮�绁ㄩ噾棰濅笉寰楀ぇ浜庢湭寮�绁ㄩ噾棰�')
- row.currentInvoiceAmount = 0
+ if (row.currentInvoiceAmount > row.tempnoInvoiceAmount) {
+ proxy.$modal.msgWarning("鏈寮�绁ㄩ噾棰濅笉寰楀ぇ浜庢湭寮�绁ㄩ噾棰�");
+ row.currentInvoiceAmount = 0;
}
// 璁$畻鏈寮�绁ㄦ暟
- row.currentInvoiceNum = (row.currentInvoiceAmount / row.taxInclusiveUnitPrice).toFixed(2)
+ 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
+ row.noInvoiceNum = (row.originalNoInvoiceNum - row.currentInvoiceNum).toFixed(
+ 2
+ );
// 璁$畻鏈紑绁ㄩ噾棰�
- row.noInvoiceAmount = row.tempnoInvoiceAmount - row.currentInvoiceAmount
-}
+ row.noInvoiceAmount = (
+ row.tempnoInvoiceAmount - row.currentInvoiceAmount
+ ).toFixed(2);
+};
-getList()
+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>
--
Gitblit v1.9.3