From 492802e4fc1b371ba21a2a490c8dcd67d7c8b29c Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 22 六月 2026 14:03:40 +0800
Subject: [PATCH] fix: 出差和请假审批新增开始与结束日期
---
src/views/salesManagement/salesLedger/index.vue | 332 +++++++++++++++++++++++++++++++++---------------------
1 files changed, 202 insertions(+), 130 deletions(-)
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 303271b..2b907dd 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -717,107 +717,125 @@
<ReverseAuditHistory v-if="activeStatusTab === 'reverseReviewed'" />
<div v-else>
<div class="search_form">
- <el-form :model="searchForm"
- :inline="true">
- <el-form-item label="瀹㈡埛鍚嶇О锛�">
- <el-select v-model="searchForm.customerId"
- filterable
- placeholder="璇烽�夋嫨瀹㈡埛鍚嶇О"
- clearable
- style="width: 220px"
- @change="handleQuery">
- <el-option v-for="item in customerOption"
- :key="item.id"
- :label="item.customerName"
- :value="item.id">
- {{ item.customerName + "鈥斺��" + item.taxpayerIdentificationNumber }}
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="閿�鍞悎鍚屽彿锛�">
- <el-input v-model="searchForm.salesContractNo"
- placeholder="璇疯緭鍏�"
- clearable
- prefix-icon="Search"
- @change="handleQuery" />
- </el-form-item>
- <el-form-item label="椤圭洰鍚嶇О锛�">
- <el-input v-model="searchForm.projectName"
- placeholder="璇疯緭鍏�"
- clearable
- prefix-icon="Search"
- @change="handleQuery" />
- </el-form-item>
- <el-form-item label="浜у搧瀹�(mm)锛�">
- <el-input v-model="searchForm.width"
- placeholder="璇疯緭鍏�"
- clearable
- prefix-icon="Search"
- @change="handleQuery" />
- </el-form-item>
- <el-form-item label="浜у搧楂�(mm)锛�">
- <el-input v-model="searchForm.height"
- placeholder="璇疯緭鍏�"
- clearable
- prefix-icon="Search"
- @change="handleQuery" />
- </el-form-item>
- <el-form-item label="褰曞叆鏃ユ湡锛�">
- <el-date-picker v-model="searchForm.entryDate"
- value-format="YYYY-MM-DD"
- format="YYYY-MM-DD"
- type="daterange"
- placeholder="璇烽�夋嫨"
- clearable
- @change="changeDaterange" />
- </el-form-item>
- <el-form-item label="鍙戣揣鐘舵�侊細">
- <el-select v-model="searchForm.deliveryStatus"
- placeholder="璇烽�夋嫨"
- clearable
- style="width: 140px">
- <el-option label="鏈彂璐�"
- :value="1" />
- <el-option label="瀹℃壒涓�"
- :value="2" />
- <el-option label="瀹℃壒涓嶉�氳繃"
- :value="3" />
- <el-option label="瀹℃壒閫氳繃"
- :value="4" />
- <el-option label="宸插彂璐�"
- :value="5" />
- <el-option label="閮ㄥ垎鍙戣揣"
- :value="6" />
- </el-select>
- </el-form-item>
- <el-form-item label="鍏ュ簱鐘舵�侊細">
- <el-select v-model="searchForm.stockStatus"
- placeholder="璇烽�夋嫨"
- clearable
- style="width: 140px">
- <el-option label="鏈叆搴�"
- :value="0" />
- <el-option label="閮ㄥ垎鍏ュ簱"
- :value="1" />
- <el-option label="宸插叆搴�"
- :value="2" />
- </el-select>
- </el-form-item>
- <el-form-item label="璁㈠崟鐘舵�侊細">
- <el-select v-model="searchForm.orderStatus"
- placeholder="璇烽�夋嫨"
- clearable
- style="width: 140px">
- <el-option label="杩涜涓�"
- :value="0" />
- <el-option label="宸插畬鎴�"
- :value="1" />
- </el-select>
- </el-form-item>
- <el-form-item>
- <el-button type="primary"
- @click="handleQuery"> 鎼滅储 </el-button>
- </el-form-item>
+ <el-form :model="searchForm" label-width="110px">
+ <el-row :gutter="20">
+ <el-col :xs="24" :sm="12" :md="8" :lg="8">
+ <el-form-item label="瀹㈡埛鍚嶇О锛�">
+ <el-select v-model="searchForm.customerId"
+ filterable
+ placeholder="璇烽�夋嫨瀹㈡埛鍚嶇О"
+ clearable
+ style="width: 100%"
+ @change="handleQuery">
+ <el-option v-for="item in customerOption"
+ :key="item.id"
+ :label="item.customerName"
+ :value="item.id">
+ {{ item.customerName + "鈥斺��" + item.taxpayerIdentificationNumber }}
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="8" :lg="8">
+ <el-form-item label="閿�鍞悎鍚屽彿锛�">
+ <el-input v-model="searchForm.salesContractNo"
+ placeholder="璇疯緭鍏�"
+ clearable
+ prefix-icon="Search"
+ style="width: 100%"
+ @change="handleQuery" />
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="8" :lg="8">
+ <el-form-item label="椤圭洰鍚嶇О锛�">
+ <el-input v-model="searchForm.projectName"
+ placeholder="璇疯緭鍏�"
+ clearable
+ prefix-icon="Search"
+ style="width: 100%"
+ @change="handleQuery" />
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="8" :lg="8">
+ <el-form-item label="褰曞叆鏃ユ湡锛�">
+ <el-date-picker v-model="searchForm.entryDate"
+ value-format="YYYY-MM-DD"
+ format="YYYY-MM-DD"
+ type="daterange"
+ placeholder="璇烽�夋嫨"
+ clearable
+ style="width: 100%"
+ @change="changeDaterange" />
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="8" :lg="8">
+ <el-form-item label="浜у搧瀹�(mm)锛�">
+ <el-input v-model="searchForm.width"
+ placeholder="璇疯緭鍏�"
+ clearable
+ prefix-icon="Search"
+ style="width: 100%"
+ @input="val => searchForm.width = val.replace(/[^\d.]/g, '')"
+ @change="handleQuery" />
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="8" :lg="8">
+ <el-form-item label="浜у搧楂�(mm)锛�">
+ <el-input v-model="searchForm.height"
+ placeholder="璇疯緭鍏�"
+ clearable
+ prefix-icon="Search"
+ style="width: 100%"
+ @input="val => searchForm.height = val.replace(/[^\d.]/g, '')"
+ @change="handleQuery" />
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="8" :lg="8">
+ <el-form-item label="鍙戣揣鐘舵�侊細">
+ <el-select v-model="searchForm.deliveryStatus"
+ placeholder="璇烽�夋嫨"
+ clearable
+ style="width: 100%">
+ <el-option label="鏈彂璐�" :value="1" />
+ <el-option label="瀹℃壒涓�" :value="2" />
+ <el-option label="瀹℃壒涓嶉�氳繃" :value="3" />
+ <el-option label="瀹℃壒閫氳繃" :value="4" />
+ <el-option label="宸插彂璐�" :value="5" />
+ <el-option label="閮ㄥ垎鍙戣揣" :value="6" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="8" :lg="8">
+ <el-form-item label="鍏ュ簱鐘舵�侊細">
+ <el-select v-model="searchForm.stockStatus"
+ placeholder="璇烽�夋嫨"
+ clearable
+ style="width: 100%">
+ <el-option label="鏈叆搴�" :value="0" />
+ <el-option label="閮ㄥ垎鍏ュ簱" :value="1" />
+ <el-option label="宸插叆搴�" :value="2" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="8" :lg="8">
+ <el-form-item label="璁㈠崟鐘舵�侊細">
+ <el-select v-model="searchForm.orderStatus"
+ placeholder="璇烽�夋嫨"
+ clearable
+ style="width: 100%">
+ <el-option label="杩涜涓�" :value="0" />
+ <el-option label="宸插畬鎴�" :value="1" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label=" ">
+ <div style="width: 100%; text-align: right;">
+ <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button>
+ </div>
+ </el-form-item>
+ </el-col>
+ </el-row>
</el-form>
</div>
<div class="table_list">
@@ -865,15 +883,7 @@
@click="handleBulkDelivery"
:disabled="isBatchButtonDisabled('delivery')">鍙戣揣</el-button>
<el-button @click="handleOut">瀵煎嚭</el-button>
- <el-date-picker v-model="processRouteExportDateRange"
- type="datetimerange"
- range-separator="鑷�"
- start-placeholder="寮�濮嬫椂闂�"
- end-placeholder="缁撴潫鏃堕棿"
- value-format="YYYY-MM-DD HH:mm:ss"
- format="YYYY-MM-DD HH:mm:ss"
- clearable
- style="width: 340px;" />
+
<el-button @click="handleExportProcessRoute"
:disabled="isBatchButtonDisabled('export')">瀵煎嚭宸ヨ壓璺嚎</el-button>
</el-space>
@@ -918,6 +928,8 @@
<el-space v-else-if="activeStatusTab === 'all'"
wrap
class="sales-ledger-toolbar-group">
+ <el-button type="primary"
+ @click="openForm('add')">鏂板鍙拌处</el-button>
<el-button @click="handleOut">瀵煎嚭</el-button>
</el-space>
<el-space wrap class="sales-ledger-toolbar-group sales-ledger-toolbar-group--muted">
@@ -968,8 +980,8 @@
:row-class-name="tableRowClassName"
show-summary
style="width: 100%"
- :summary-method="summarizeMainTable"
- height="calc(100vh - 22em)">
+ height="calc(100vh - 23em)"
+ :summary-method="summarizeMainTable">
<el-table-column align="center"
type="selection"
width="55"
@@ -980,7 +992,7 @@
width="60" />
<el-table-column label="璁㈠崟鍙�"
prop="salesContractNo"
- width="180"
+ min-width="160"
show-overflow-tooltip>
<template #default="scope">
<el-button link
@@ -990,27 +1002,27 @@
</el-table-column>
<el-table-column label="瀹㈡埛鍚嶇О"
prop="customerName"
- width="300"
+ min-width="200"
show-overflow-tooltip />
<el-table-column label="涓氬姟鍛�"
prop="salesman"
- width="100"
+ min-width="80"
show-overflow-tooltip />
<el-table-column label="鍚堝悓閲戦(鍏�)"
prop="contractAmount"
- width="220"
+ min-width="120"
show-overflow-tooltip
:formatter="formattedNumber" />
<el-table-column label="闈㈢Н"
prop="productTotalArea"
- width="120"
+ min-width="80"
show-overflow-tooltip />
<el-table-column label="鏁伴噺"
prop="productTotalQuantity"
- width="120"
+ min-width="80"
show-overflow-tooltip />
<el-table-column label="鍙戣揣鐘舵��"
- width="140"
+ min-width="100"
align="center">
<template #default="scope">
<el-tag v-if="Number(scope.row.deliveryStatus) === 1"
@@ -1030,19 +1042,21 @@
</template>
</el-table-column>
<el-table-column label="瀹℃牳鐘舵��"
- width="120"
+ min-width="90"
align="center">
<template #default="scope">
<el-tag v-if="Number(scope.row.reviewStatus) === 0"
type="warning">寰呭鏍�</el-tag>
<el-tag v-else-if="Number(scope.row.reviewStatus) === 1"
type="success">宸插鏍�</el-tag>
+ <el-tag v-else-if="Number(scope.row.reviewStatus) === 2"
+ type="danger">宸插弽瀹�</el-tag>
<el-tag v-else
type="info">寰呭鏍�</el-tag>
</template>
</el-table-column>
<el-table-column label="鍏ュ簱鐘舵��"
- width="120"
+ min-width="90"
align="center">
<template #default="scope">
<el-tag v-if="Number(scope.row.stockStatus) === 0"
@@ -1058,7 +1072,7 @@
</template>
</el-table-column>
<el-table-column label="璁㈠崟鐘舵��"
- width="120"
+ min-width="90"
align="center">
<template #default="scope">
<el-tag v-if="Number(scope.row.orderStatus) === 1"
@@ -1068,14 +1082,14 @@
</template>
</el-table-column>
<el-table-column label="鏍囩鎵撳嵃"
- width="90"
+ min-width="90"
align="center">
<template #default="scope">
<span>{{ scope.row.labelPrintCount ?? 0 }}</span>
</template>
</el-table-column>
<el-table-column label="鍗曟嵁鎵撳嵃"
- width="90"
+ min-width="90"
align="center">
<template #default="scope">
<span>{{ scope.row.documentPrintCount ?? 0 }}</span>
@@ -1083,27 +1097,27 @@
</el-table-column>
<el-table-column label="褰曞叆浜�"
prop="entryPersonName"
- width="100"
+ min-width="80"
show-overflow-tooltip />
<el-table-column label="褰曞叆鏃ユ湡"
prop="entryDate"
- width="120"
+ min-width="110"
show-overflow-tooltip />
<el-table-column label="浜や粯鏃ユ湡"
prop="deliveryDate"
- width="120"
+ min-width="110"
show-overflow-tooltip />
<el-table-column label="澶囨敞"
prop="remarks"
- width="200"
+ min-width="120"
show-overflow-tooltip />
<el-table-column label="瀹㈡埛澶囨敞"
prop="customerRemarks"
- width="200"
+ min-width="120"
show-overflow-tooltip />
<el-table-column fixed="right"
label="鎿嶄綔"
- width="280"
+ width="250"
align="center">
<template #default="scope">
<el-button link
@@ -1132,6 +1146,31 @@
@pagination="paginationChange" />
</div>
</div>
+ <!-- 瀵煎嚭宸ヨ壓璺嚎 寮圭獥 -->
+ <el-dialog title="閫夋嫨瀵煎嚭鏃堕棿鑼冨洿"
+ v-model="exportProcessRouteDialogVisible"
+ width="450px"
+ append-to-body>
+ <el-form>
+ <el-form-item label="瀹屾垚鏃堕棿锛�">
+ <el-date-picker v-model="processRouteExportDateRange"
+ type="datetimerange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ value-format="YYYY-MM-DD HH:mm:ss"
+ format="YYYY-MM-DD HH:mm:ss"
+ clearable
+ style="width: 100%;" />
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <div style="text-align: right">
+ <el-button @click="exportProcessRouteDialogVisible = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="confirmExportProcessRoute">纭瀵煎嚭</el-button>
+ </div>
+ </template>
+ </el-dialog>
</template>
<FormDialog v-if="!isFormPageMode"
v-model="dialogFormVisible"
@@ -2554,6 +2593,7 @@
import { ElMessageBox, ElMessage } from "element-plus";
import { ArrowDown, WarningFilled } from "@element-plus/icons-vue";
import useUserStore from "@/store/modules/user";
+ import useAppStore from "@/store/modules/app";
import { approveUserList } from "@/api/collaborativeApproval/approvalProcess.js";
import { userListNoPage } from "@/api/system/user.js";
import FileListDialog from "@/components/Dialog/FileListDialog.vue";
@@ -2661,6 +2701,28 @@
? "缂栬緫瀹屾垚鍚庡皢鑷姩杩斿洖閿�鍞彴璐﹀垪琛�"
: "鏂板瀹屾垚鍚庡皢鑷姩杩斿洖閿�鍞彴璐﹀垪琛�"
);
+
+ const appStore = useAppStore();
+ watch(isFormPageMode, (val) => {
+ if (val) {
+ appStore.closeSideBar({ withoutAnimation: false });
+ } else {
+ if (!appStore.sidebar.opened) {
+ appStore.toggleSideBar(false);
+ }
+ }
+ });
+ onMounted(() => {
+ if (isFormPageMode.value) {
+ appStore.closeSideBar({ withoutAnimation: false });
+ }
+ });
+ import { onUnmounted } from "vue";
+ onUnmounted(() => {
+ if (!appStore.sidebar.opened) {
+ appStore.toggleSideBar(false);
+ }
+ });
const sanitizeLedgerQrFilename = s =>
String(s)
@@ -5337,6 +5399,8 @@
proxy.download("/sales/ledger/exportWithProducts", params, "閿�鍞彴璐�.xlsx");
};
+ const exportProcessRouteDialogVisible = ref(false);
+
const handleExportProcessRoute = () => {
if (selectedRows.value.length === 0) {
proxy?.$modal?.msgWarning?.("璇烽�夋嫨瑕佸鍑虹殑閿�鍞彴璐�");
@@ -5349,6 +5413,13 @@
proxy?.$modal?.msgWarning?.("璇烽�夋嫨瑕佸鍑虹殑閿�鍞彴璐�");
return;
}
+ exportProcessRouteDialogVisible.value = true;
+ };
+
+ const confirmExportProcessRoute = () => {
+ const salesLedgerIds = selectedRows.value
+ .map(item => item.id)
+ .filter(id => id !== null && id !== undefined && id !== "");
const params = {
salesLedgerIds: salesLedgerIds.join(","),
@@ -5366,6 +5437,7 @@
params,
"閿�鍞彴璐﹀伐鑹鸿矾绾垮鍑�.xlsx"
);
+ exportProcessRouteDialogVisible.value = false;
};
/** 鍒ゆ柇鍗曚釜浜у搧鏄惁宸插彂璐э紙鏍规嵁shippingStatus鍒ゆ柇锛屽凡鍙戣揣鎴栧鏍搁�氳繃涓嶅彲缂栬緫鍜屽垹闄わ級 */
const isProductShipped = product => {
--
Gitblit v1.9.3