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