From 6705efe18a3d82c1baf4130e74872f2509af760f Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期一, 26 一月 2026 13:59:17 +0800
Subject: [PATCH] 修改为下单类型

---
 ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue |  943 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 869 insertions(+), 74 deletions(-)

diff --git a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
index 7d4e72c..9ea29ad 100644
--- a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
+++ b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
@@ -45,13 +45,18 @@
         >瀵煎嚭
         </el-button>
         <el-button
-            type="success"
-            icon="Promotion"
-            :disabled="pageF.multiple"
-            @click="handleGenerate"
-            v-hasPermi="['tms:tmsDispatchOrder:generate']"
-        >鐢熸垚搴旀敹搴斾粯璐圭敤
-        </el-button>
+            type="info"
+            icon="Upload"
+            @click="handleImport"
+            v-hasPermi="['tms:tmsDispatchOrder:import']">瀵煎叆</el-button>
+<!--        <el-button-->
+<!--            type="success"-->
+<!--            icon="Promotion"-->
+<!--            :disabled="pageF.multiple"-->
+<!--            @click="handleGenerate"-->
+<!--            v-hasPermi="['tms:tmsDispatchOrder:generate']"-->
+<!--        >鐢熸垚搴旀敹搴斾粯璐圭敤-->
+<!--        </el-button>-->
         <el-button
             type="warning"
             icon="Female"
@@ -85,19 +90,39 @@
             v-hasPermi="['tms:tmsDispatchOrder:loading']"
         >濮旀墭鍗歌揣淇℃伅
         </el-button>
+        <el-button
+            type="primary"
+            icon="UserFilled"
+            :disabled="pageF.single"
+            @click="handleZZ"
+            v-hasPermi="['tms:tmsDispatchOrder:zzdj']"
+        >澧炲�间綔涓氱櫥璁�
+        </el-button>
+        <el-button
+            type="primary"
+            icon="Printer"
+            :disabled="pageF.single"
+            @click="handlePrint"
+            v-hasPermi="['tms:tmsDispatchOrder:print']"
+        >鎵胯繍鍗曟墦鍗�
+        </el-button>
       </template>
       <template #menu-before="{row}">
         <el-link size="small" type="primary" @click="handleAddGoods(row)" class="link-btn"
-                 v-hasPermi="['tms:tmsGoodsDetail:add']"
+                 v-hasPermi="['tms:tmsGoodsDetail:add']" v-if="[0,1,2].includes(row.status)"
                  :underline="false" icon="el-icon-document-add">杩愯緭璐у搧鐧昏
         </el-link>
         <el-link size="small" type="primary" @click="handleActual(row)" class="link-btn"
-                 v-hasPermi="['tms:tmsDispatchOrder:update']"
+                 v-hasPermi="['tms:tmsDispatchOrder:update']" v-if="[0,1,2].includes(row.status)"
                  :underline="false" icon="el-icon-set-up">瀹為檯杩愯緭璁板綍
         </el-link>
         <el-link size="small" type="primary" v-if="row.status == 0" @click="handleConfirm(row)" class="link-btn"
                  v-hasPermi="['tms:tmsDispatchOrder:confirmOrder']"
                  :underline="false" icon="el-icon-pointer">纭畾
+        </el-link>
+        <el-link size="small" type="primary" v-if="[0,1,2].includes(row.status)" @click="handleClose(row)" class="link-btn"
+                 v-hasPermi="['tms:tmsDispatchOrder:closeOrder']"
+                 :underline="false" icon="el-icon-close">浣滃簾
         </el-link>
         <el-link size="small" type="primary" @click="handleCopy(row)" class="link-btn" :underline="false"
                  v-hasPermi="['tms:tmsDispatchOrder:copyOrder']"
@@ -115,10 +140,10 @@
                  v-hasPermi="['tms:tmsDispatchOrder:okOrder']"
                  :underline="false" icon="el-icon-circle-check">瀹屾垚琛岀▼
         </el-link>
-        <el-link size="small" type="primary" v-if="[2,3].includes(row.status)" @click="handleAddFinance(row)"
-                 class="link-btn" v-hasPermi="['tms:tmsFinanceDetail:add']"
-                 :underline="false" icon="el-icon-edit-pen">璐圭敤鐧昏
-        </el-link>
+<!--        <el-link size="small" type="primary" v-if="[2,3].includes(row.status)" @click="handleAddFinance(row)"-->
+<!--                 class="link-btn" v-hasPermi="['tms:tmsFinanceDetail:add']"-->
+<!--                 :underline="false" icon="el-icon-edit-pen">璐圭敤鐧昏-->
+<!--        </el-link>-->
       </template>
       <template #menu="{row}">
         <el-link size="small" type="primary" @click="handleLog(row)" class="link-btn" :underline="false"
@@ -126,26 +151,26 @@
         </el-link>
       </template>
 
-      <template #shipperId-form>
+      <template #shipperId-form="{disabled}">
         <div style="display:flex; align-items: center;justify-content: space-between">
-          <avue-input-table :props="consignorProps"
-                            :children="consignorOption"
+          <avue-input-table :props="consignorProps" dataType="string"
+                            :children="consignorOption" :disabled="disabled"
                             :on-load="onShipperLoad" suffixIcon="search"
                             v-model="form.shipperId" style="width: 80%"
                             @change="changeShipper"
                             placeholder="璇烽�夋嫨瑁呰揣鐐�"></avue-input-table>
-          <el-button icon="plus" @click="handleAddShipper"></el-button>
+          <el-button icon="plus"  :disabled="disabled" @click="handleAddShipper"></el-button>
         </div>
       </template>
-      <template #receiverId-form>
+      <template #receiverId-form="{disabled}">
         <div style="display:flex; align-items: center;justify-content: space-between">
           <avue-input-table :props="consignorProps"
-                            :children="consignorOption"
+                            :children="consignorOption" dataType="string"
                             :on-load="onConsignorLoad" suffixIcon="search"
-                            v-model="form.receiverId"
+                            v-model="form.receiverId"  :disabled="disabled"
                             @change="changeReceiver" style="width: 80%"
                             placeholder="璇烽�夋嫨鍗歌揣鐐�"></avue-input-table>
-          <el-button icon="plus" @click="handleAddReceiver"></el-button>
+          <el-button icon="plus"  :disabled="disabled" @click="handleAddReceiver"></el-button>
         </div>
       </template>
 
@@ -196,7 +221,7 @@
         >
           <el-descriptions-item label="璋冨害鍗曞彿">{{ form.dispatchNo }}</el-descriptions-item>
           <el-descriptions-item label="瀹㈡埛">{{ form.customerName }}</el-descriptions-item>
-          <el-descriptions-item label="瀹為檯杩愯緭宸ュ叿绫诲瀷">{{ form.$actualVehicleType }}</el-descriptions-item>
+          <el-descriptions-item label="娲惧嚭杞﹀瀷">{{ form.$actualVehicleType }}</el-descriptions-item>
           <el-descriptions-item label="杩愯緭宸ュ叿鍙风爜">{{ form.licensePlate }}</el-descriptions-item>
           <el-descriptions-item label="鎵樻灦鍙�">{{ form.shelfCode }}</el-descriptions-item>
           <el-descriptions-item label="涓婚┚椹跺憳">{{ form.mainDriverName }}</el-descriptions-item>
@@ -210,7 +235,7 @@
         >
           <el-descriptions-item label="璋冨害鍗曞彿">{{ form.dispatchNo }}</el-descriptions-item>
           <el-descriptions-item label="瀹㈡埛">{{ form.customerName }}</el-descriptions-item>
-          <el-descriptions-item label="瀹為檯杩愯緭宸ュ叿绫诲瀷">{{ form.$actualVehicleType }}</el-descriptions-item>
+          <el-descriptions-item label="娲惧嚭杞﹀瀷">{{ form.$actualVehicleType }}</el-descriptions-item>
           <el-descriptions-item label="鎵樻灦鍙�">{{ form.shelfCode }}</el-descriptions-item>
         </el-descriptions>
         <avue-form v-model="form" ref="boxFormRef" :option="boxFormOption">
@@ -249,7 +274,7 @@
       </div>
       <template #footer>
         <div class="dialog-footer">
-          <el-button type="primary" :loading="pageF.isUploading" @click="submitForm2">
+          <el-button type="primary" v-if="optionType != 'view'" :loading="pageF.isUploading" @click="submitForm2">
             {{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
           </el-button>
           <el-button @click="cancelBox2">鍙� 娑�</el-button>
@@ -295,6 +320,216 @@
     </el-dialog>
 
 
+
+    <el-dialog title="澧炲�间綔涓氱櫥璁�" v-model="open4" class="avue-dialog avue-dialog--top" width="80%">
+      <el-descriptions :column="3" border>
+        <el-descriptions-item label="璋冨害鍗曞彿">{{form.dispatchNo}}</el-descriptions-item>
+        <el-descriptions-item label="瀹㈡埛鍚嶇О">{{form.customerName}}</el-descriptions-item>
+        <el-descriptions-item label="椤圭洰鍚嶇О">{{form.projectName}}</el-descriptions-item>
+        <el-descriptions-item label="杩愯緭璺嚎">{{form.transportLine}}</el-descriptions-item>
+        <el-descriptions-item label="杞﹀瀷">{{form.$actualVehicleType}}</el-descriptions-item>
+        <el-descriptions-item label="杞︾墝">{{form.licensePlate}}</el-descriptions-item>
+      </el-descriptions>
+      <avue-tabs :option="tabsOption" ref="tabsOptionRef"
+                 @change="handleChange"></avue-tabs>
+
+        <avue-crud v-if="active !== 'tab4'"
+            :option="zzItemsTableOption" ref="itemsTableRef"
+            :data="zzItemsTableData"
+        >
+          <template #count="{row}">
+            <el-input-number v-model="row.count" placeholder="璁¤垂鏁伴噺"
+                             :min="0"></el-input-number>
+          </template>
+          <template #remark="{row}">
+            <el-input v-model="row.remark" placeholder="澶囨敞" ></el-input>
+          </template>
+
+
+        </avue-crud>
+
+      <div v-if="active === 'tab4'">
+        <h2>瀹炴姤瀹為攢璐圭敤</h2>
+        <avue-form  v-model="boxForm" ref="boxFormRef"
+                    :option="boxFormOption">
+
+        </avue-form>
+        <avue-crud
+            :option="boxTableOption"
+            :data="boxTableData"
+        >
+        </avue-crud>
+      </div>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary"
+                     :loading="pageF.isUploading" @click="submitTabForm">
+            {{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
+          </el-button>
+
+          <el-button @click="open4 = false">鍙� 娑�</el-button>
+        </div>
+      </template>
+    </el-dialog>
+
+    <el-dialog title="璋冨害鍗曚綔搴�" v-model="open5" class="avue-dialog avue-dialog--top" width="80%">
+      <el-descriptions :column="3" border>
+        <el-descriptions-item label="璋冨害鍗曞彿">{{form.dispatchNo}}</el-descriptions-item>
+        <el-descriptions-item label="瀹㈡埛鍚嶇О">{{form.customerName}}</el-descriptions-item>
+        <el-descriptions-item label="椤圭洰鍚嶇О">{{form.projectName}}</el-descriptions-item>
+        <el-descriptions-item label="杩愯緭璺嚎">{{form.transportLine}}</el-descriptions-item>
+        <el-descriptions-item label="杞﹀瀷">{{form.$actualVehicleType}}</el-descriptions-item>
+        <el-descriptions-item label="杞︾墝">{{form.licensePlate}}</el-descriptions-item>
+      </el-descriptions>
+
+      <avue-form  v-model="boxForm" ref="boxFormRef"
+                  :option="boxFormOption">
+
+      </avue-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary"
+                     :loading="pageF.isUploading" @click="submitForm5">
+            {{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
+          </el-button>
+
+          <el-button @click="open5 = false">鍙� 娑�</el-button>
+        </div>
+      </template>
+    </el-dialog>
+
+    <el-dialog title="鎵胯繍鍗曟墦鍗�" v-model="open6" class="avue-dialog avue-dialog--top cydprint" width="80%">
+      <div v-if="print == 0">
+        <el-descriptions :column="3" border>
+          <el-descriptions-item label="璁㈠崟鍙�">{{form.dispatchNo}}</el-descriptions-item>
+          <el-descriptions-item label="鎵胯繍鏃ユ湡">{{form.orderTime}}</el-descriptions-item>
+          <el-descriptions-item label="杞︾墝">{{form.licensePlate}}</el-descriptions-item>
+          <el-descriptions-item label="璁㈣溅绫诲瀷">{{form.$actualVehicleType}}</el-descriptions-item>
+
+          <el-descriptions-item label="鍙告満濮撳悕">{{form.mainDriverName}}</el-descriptions-item>
+          <el-descriptions-item label="鐢佃瘽">{{form.mainDriverMobile}}</el-descriptions-item>
+          <el-descriptions-item label="鎵樻灦鍙�/鏌滃彿">{{form.shelfCode}}/ {{form.containerNo}}</el-descriptions-item>
+          <el-descriptions-item label="瀹㈡埛鍚嶇О">{{form.customerName}}</el-descriptions-item>
+          <el-descriptions-item label="璧锋璺嚎">{{form.transportLine}}</el-descriptions-item>
+          <el-descriptions-item label="璋冨害鍛�">{{form.createBy}}</el-descriptions-item>
+          <el-descriptions-item label="鏄惁鎵撳嵃">{{form.$isPrint}}</el-descriptions-item>
+          <el-descriptions-item label="鍘嗗彶鎵撳嵃娆℃暟">{{form.printCount}}</el-descriptions-item>
+        </el-descriptions>
+        <h3 class="title" style="color: #333;font-weight: bold;">鍗曟嵁淇℃伅</h3>
+        <avue-form  v-model="boxForm" ref="boxFormRef"
+                    :option="boxFormOption">
+
+        </avue-form>
+      </div>
+      <div v-else>
+        <div id="print">
+          <img src="@/assets/img.png" alt="" style="width: 168px;height: 68px">
+          <h3 class="title" >鐝犳捣甯傛眹鐣呬氦閫氭姇璧勬湁闄愬叕鍙�</h3>
+          <div class="header">
+            <div class="order">璁㈠崟鍙凤細{{boxForm.dispatchNo}}</div>
+            <div class="sub-title">璐х墿鎵胯繍鍗曡瘉</div>
+          </div>
+          <table>
+            <tr>
+              <td>鎵胯繍鏃ユ湡锛歿{ boxForm.orderTime }}</td>
+              <td>鍏仈鍗曞彿鐮侊細{{ boxForm.sixLinkNo }}</td>
+            </tr>
+            <tr>
+              <td>杞︾墝锛歿{ boxForm.licensePlate }}</td>
+              <td>璁㈣溅杞﹀瀷: {{boxForm.$actualVehicleType}}</td>
+            </tr>
+            <tr>
+              <td>鍙告満濮撳悕锛歿{ boxForm.mainDriverName }}</td>
+              <td>鐢佃瘽锛歿{ boxForm.mainDriverMobile }}</td>
+            </tr>
+
+            <tr>
+              <td>鎵樻灦鍙�/鏌滃彿锛歿{boxForm.shelfCode}}/ {{boxForm.containerNo}}</td>
+              <td>琛岄┒鍙e哺锛歿{ boxForm.portName }}</td>
+            </tr>
+            <tr>
+              <td>鎻愬崟鍙稴/O锛歿{ boxForm.billNo }}</td>
+              <td>鐮佸ご鍚嶏細{{ boxForm.terminalName }}</td>
+            </tr>
+
+            <tr>
+              <td>瀹㈡埛锛歿{ boxForm.customerName }}</td>
+              <td>鑱旂粶浜猴細{{ boxForm.contactName }} {{ boxForm.contactPhone }}  </td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <span style="margin-right: 40px">璐х墿鍚嶇О锛歿{ boxForm.cargoName }} </span>
+                <span style="margin-right: 40px">浠舵暟锛歿{ boxForm.pieceCount }} </span>
+                <span style="margin-right: 40px">閲嶉噺锛歿{ boxForm.weight }}KG</span>
+              </td>
+            </tr>
+            <tr>
+              <td colspan="2">璧锋璺嚎锛歿{ boxForm.transportLine }}</td>
+            </tr>
+            <tr>
+              <td>
+                <div style="line-height: 24px">璋冨害鍛橈細{{boxForm.createBy}}</div>
+                <div style="line-height: 42px">鎵胯繍鍙告満锛歿{boxForm.mainDriverName}}</div>
+              </td>
+              <td>鏀惰揣浜虹瀛�/鐩栫珷锛�</td>
+            </tr>
+          </table>
+
+          <div>鎵樿繍椤荤煡锛�</div>
+          <div>1.濡傚洜鎵樿繍鑰呮惡甯﹁繚瑙勭鍝侊紝杩濆弽褰撳湴娉曚緥鑰屽紩鑷磋溅杈嗗強鍙告満鎵g暀鎴栧缃氾紝鎵樹汉浜哄繀璧斿伩涓�鍒囨崯澶憋紝鐩磋嚦浜嬩欢瀹屾弧瑙e喅涓烘銆�</div>
+          <div>2.璐х墿瑁呭嵏鍙婅繍杈撴湡闂达紝涓�鍒囦氦閫氭剰澶栧紩鑷磋矾涓嶈兘琛岄┒鎴栬溅杈嗘崯澶辫�屼护璐х墿涓嶈兘濡傛湡浜よ揣鍙婁竴鍒囬銆佺伀銆佺洍绐冨強鍏跺畠鎰忓鍧囩敱璐т富璐熻矗銆�</div>
+          <div>3.涓�鍒囦氦鏄撳潎鎸夋湰鍏徃涔嬫爣鍑嗙粡钀ユ潯娆句负鍑嗭紝鏈叕鍙镐箣璐d换鍦ㄦ煇浜涙儏鍐典笅浼氳璞佸厤鎴栭檺 (鍒跺鏈夐』瑕侊紝娆㈣繋绱㈠彇)锛�</div>
+
+        </div>
+      
+      </div>
+
+
+
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="print = 0" v-if="print == 1">閲嶆柊濉啓</el-button>
+          <el-button type="primary"
+                     :loading="pageF.isUploading" @click="submitForm6">
+            {{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
+          </el-button>
+
+          <el-button @click="open6 = false">鍙� 娑�</el-button>
+        </div>
+      </template>
+    </el-dialog>
+
+    <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� -->
+    <el-dialog title="璋冨害鍗曞鍏�" v-model="upload.open" width="400px" append-to-body>
+      <el-upload
+          ref="uploadRef"
+          :limit="1"
+          accept=".xlsx, .xls"
+          :headers="upload.headers"
+          :action="upload.url + '?updateSupport=' + upload.updateSupport"
+          :disabled="upload.isUploading"
+          :on-progress="handleFileUploadProgress"
+          :on-success="handleFileSuccess"
+          :auto-upload="false"
+          drag
+      >
+        <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+        <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+        <template #tip>
+          <div class="el-upload__tip text-center">
+            <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
+            <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">涓嬭浇妯℃澘</el-link>
+          </div>
+        </template>
+      </el-upload>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button>
+          <el-button @click="upload.open = false">鍙� 娑�</el-button>
+        </div>
+      </template>
+    </el-dialog>
+
   </basicContainer>
 </template>
 
@@ -307,10 +542,22 @@
   getTmsDispatchOrder,
   listTmsDispatchOrder,
   updateTmsDispatchOrder,
-  confirmOrder, copyOrder, okOrder, initGenerate, generateTmsDispatchOrder, dropHook, connectHang,customsOrder,loadingOrder,
+  confirmOrder,
+  copyOrder,
+  okOrder,
+  initGenerate,
+  generateTmsDispatchOrder,
+  dropHook,
+  connectHang,
+  customsOrder,
+  loadingOrder,
+  checkCloseOrder,
+  closeOrder,
+  printDispatchOrder,
+  importTemplateTmsDispatchOrder
 } from "@/api/tms/tmsDispatchOrder";
 import useCurrentInstance from "@/utils/useCurrentInstance";
-import {computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance} from "vue";
+import {computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance, nextTick} from "vue";
 import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
 import {usePagePlus} from "@/hooks/usePagePlus";
 import {hasPermission} from "@/utils/permissionUtils";
@@ -323,17 +570,26 @@
 import {getTmsContainer, listTmsContainer} from "@/api/tms/tmsContainer";
 import {getTmsShelf, listTmsShelf} from "@/api/tms/tmsShelf";
 import {addTmsConsignor, getTmsConsignor, listTmsConsignor} from "@/api/tms/tmsConsignor";
-import {ElMessage, ElMessageBox} from "element-plus";
+import {ElMessage, ElMessageBox, type ElUpload} from "element-plus";
 import {addTmsTrip, listTmsTrip} from "@/api/tms/tmsTrip";
-import {addTmsFinanceDetail, listTmsFinanceDetail, updateTmsFinanceDetail} from "@/api/tms/tmsFinanceDetail";
+import {
+  addTmsFinanceDetail,
+  listTmsFinanceDetail,
+  saveTmsFinanceDetail,
+  updateTmsFinanceDetail
+} from "@/api/tms/tmsFinanceDetail";
 import {getTmsProductInfo, listTmsProductInfo} from "@/api/tms/tmsProductInfo";
 import {addTmsGoodsDetail, delTmsGoodsDetail, listTmsGoodsDetail, updateTmsGoodsDetail} from "@/api/tms/tmsGoodsDetail";
 import {getTransportRouteVi, listTransportRouteVi} from "@/api/tms/tmsTransportRouteVi";
 import {listTmsQuoteItem} from "@/api/tms/tmsQuotePlanItem";
-import {$DialogForm} from '@smallwei/avue'
+import {$DialogForm, randomId} from '@smallwei/avue'
 import {getTmsCustomerInfo, listTmsCustomerInfo} from "@/api/tms/tmsCustomerInfo";
 import {getAddressCode} from "@/api/tms/tmsRegion";
 import {mapRegeo} from "@/api/common";
+import {getDicts} from "@/api/system/dict/data";
+import {pushTmsQuoteFee} from "@/api/tms/tmsQuoteFee";
+import { $Print } from '@smallwei/avue'
+import {getToken} from "@/utils/auth";
 
 const {appContext} = getCurrentInstance();
 
@@ -381,12 +637,14 @@
   actualForm: <any>{},
   isCustoms:<any> -1,
   isLoad: -1,
+  open5:false,
+  open6:false,
 })
 const {
   queryParams, form, page, selectionList, open3,
   boxTableData, optionType,
   boxFormOption, boxForm, boxTableOption, title, open, open2,
-  goodsTableData, goodsForm, actualForm, selectionList2,isCustoms,isLoad
+  goodsTableData, goodsForm, actualForm, selectionList2,isCustoms,isLoad,open5,open6
 } = toRefs(data);
 const option = ref({
   pageKey: 'TmsDispatchOrder',
@@ -395,6 +653,7 @@
   searchSpan: 6,
   searchLabelWidth: 150,
   menuWidth: 300,
+  height: 530,
   group: [
     {
       label: '鍩烘湰淇℃伅',
@@ -432,6 +691,13 @@
                 requiredVehicleTypes: active.vehicleType,
                 quotePlanId: active.quotePlanId,
               });
+              form.value.shipperId = undefined;
+              form.value.shipperRegionLabel = undefined;
+              form.value.shipperAddress = undefined;
+              form.value.shipperMobile = undefined;
+              form.value.receiverId = undefined;
+              form.value.receiverAddress = undefined;
+              form.value.receiverMobile = undefined;
             }
           },
           children: {
@@ -717,7 +983,7 @@
           ],
         },
         isUrgent: {
-          label: '鏄惁绱ф��',
+          label: '鏄惁绱ф��',value: '1',
           display: true,
           type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
           rules: [
@@ -736,6 +1002,19 @@
         //   label: '閰嶈浇鏂瑰紡',
         //   display: true, type: 'select', dicUrl: '/system/dict/data/type/load_method', dataType: 'string',
         // },
+        orderTime: {
+          label: '涓嬪崟鏃堕棿',
+          type: 'datetime',  // 鏀逛负 datetime 绫诲瀷
+          format: 'YYYY-MM-DD HH:mm:ss',
+          valueFormat: 'YYYY-MM-DD HH:mm:ss',
+          display: true,
+          rules: [
+            {
+              required: true,
+              message: "涓嬪崟鏃堕棿涓嶈兘涓虹┖", trigger: "blur"
+            }
+          ],
+        },
         latestDeparture: {
           label: '瑕佹眰鏈�鏅氬嚭鍙戞椂闂�',
           type: 'datetime',  // 鏀逛负 datetime 绫诲瀷
@@ -783,13 +1062,29 @@
             console.log(value)
             option.value.group.forEach((item: any) => {
               if (item.prop == 'pcxx') {
+                item.column.commissionModel.display = value != 1;
+                item.column.containerId.display = value != 1;
+                item.column.shelfId.display = value != 1;
                 item.column.vehicleProviderId.display = value == 1;
+                item.column.containerNo.display = value == 1;
+                item.column.shelfCode.display = value == 1;
                 // item.column.vehicleProviderId.rules.forEach((cItem: any) => {
                 //   cItem.required = value == 1;
                 // });
               }
             })
+
           },
+        },
+        commissionModel:{
+          label: '鎻愭垚妯″紡',
+          display: true, type: 'radio', dicUrl: '/system/dict/data/type/commission_model', dataType: 'string',
+          rules: [
+            {
+              required: true,
+              message: "鎻愭垚妯″紡涓嶈兘涓虹┖", trigger: "change"
+            }
+          ],
         },
         vehicleProviderId: {
           label: '杞﹁締鏈嶅姟鍟�',
@@ -936,7 +1231,7 @@
               listTmsDriver({
                 pageSize: page.pageSize,
                 pageNum: page.currentPage, ...data,
-                carrierType: form.value.operationMode
+                carrierType: form.value.operationMode,vehicleProviderId:form.value.vehicleProviderId
               }).then(res => {
                 return callback({
                   total: res.total,
@@ -1001,7 +1296,7 @@
             } else {
               listTmsDriver({
                 pageSize: page.pageSize,
-                pageNum: page.currentPage, ...data,
+                pageNum: page.currentPage, ...data,vehicleProviderId:form.value.vehicleProviderId,
                 carrierType: form.value.operationMode
               }).then(res => {
                 return callback({
@@ -1032,6 +1327,7 @@
               Object.assign(form.value, {
                 vehicleId: active.id,
                 licensePlate: active.licensePlate,
+                actualVehicleType: active.vehicleType,
               });
             }
           },
@@ -1047,6 +1343,8 @@
               },
               vehicleType: {
                 label: '杞﹁締绫诲瀷', minWidth: 120,
+                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/vehicle_type',
+
                 search: true,
               },
               internalCode: {
@@ -1085,7 +1383,7 @@
               listTmsVehicle({
                 pageSize: page.pageSize,
                 pageNum: page.currentPage, ...data,
-                carrierType: form.value.operationMode
+                carrierType: form.value.operationMode,serviceProviderId:form.value.vehicleProviderId
               }).then(res => {
                 return callback({
                   total: res.total,
@@ -1148,6 +1446,10 @@
           label: '鍗歌揣鐐硅仈绯绘柟寮�',
           display: true, disabled: true
         },
+        containerNo: {
+          label: '闆嗚绠卞彿',
+          display: false,
+        },
         containerId: {
           label: '鍏宠仈闆嗚绠变俊鎭�',
           display: true,
@@ -1176,6 +1478,11 @@
               containerUseType: {
                 label: '闆嗚绠辩敤閫旂被鍨�', minWidth: 120,
                 type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/container_use_type',
+                search: true,
+              },
+              selfLeasType: {
+                label: '鑷绫诲瀷', minWidth: 120,
+                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/self_leas_type',
                 search: true,
               },
               containerSize: {
@@ -1213,6 +1520,10 @@
           }
 
         },
+        shelfCode: {
+          label: '鎵樻澘鍙�',
+          display: false,
+        },
         shelfId: {
           label: '鎵樻澘鍙�',
           display: true,
@@ -1239,7 +1550,13 @@
                 search: true,
               },
               shelfType: {
+                label: '鎵樻灦绫诲瀷', minWidth: 120,
                 type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/shelf_type',
+                search: true,
+              },
+              selfLeasType: {
+                label: '鑷绫诲瀷', minWidth: 120,
+                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/self_leas_type',
                 search: true,
               },
               compatibleContainerType: {
@@ -1383,13 +1700,13 @@
       type: 'select', dataType: 'string',
       dicUrl: '/system/dict/data/type/order_type',
     },
-    signType: {
-      label: '璁㈠崟绫诲瀷',
-      display: false,
-      search: true, minWidth: 120,
-      type: 'select', dataType: 'string',
-      dicUrl: '/system/dict/data/type/order_type',
-    },
+    // signType: {
+    //   label: '璁㈠崟绫诲瀷',
+    //   display: false,
+    //   search: true, minWidth: 120,
+    //   type: 'select', dataType: 'string',
+    //   dicUrl: '/system/dict/data/type/order_type',
+    // },
 
     transportLine: {
       label: '杩愯緭绾胯矾',
@@ -1415,7 +1732,28 @@
       search: true,
     },
     isUrgent: {
-      label: '鏄惁绱ф�ュ惁',
+      label: '鏄惁绱ф��',
+      display: false, minWidth: 100,
+      search: true,
+      type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
+
+    },
+    iscc: {
+      label: '鏄惁鏌ヨ溅',
+      display: false, minWidth: 100,
+      search: true,
+      type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
+
+    },
+    isfk: {
+      label: '鏄惁鏀剧┖',
+      display: false, minWidth: 100,
+      search: true,
+      type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
+
+    },
+    isPrint: {
+      label: '鏄惁鎵撳嵃鎵胯繍鍗�',
       display: false, minWidth: 100,
       search: true,
       type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
@@ -1432,8 +1770,15 @@
     //   display: false,
     //   search: true,
     // },
+    requiredVehicleTypes: {
+      label: '涓嬪崟杞﹀瀷',minWidth: 130,
+      display: false, type: 'select',  search: true,
+      dicUrl: '/system/dict/data/type/vehicle_type',
+      dataType: 'string',
+
+    },
     actualVehicleType: {
-      label: '瀹為檯杩愯緭宸ュ叿绫诲瀷', minWidth: 130,
+      label: '娲惧嚭杞﹀瀷', minWidth: 130,
       display: false,
       search: true,
       type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
@@ -1456,29 +1801,29 @@
       display: false,
       search: true,
     },
-    accountsReceivableStatus: {
-      label: '搴旀敹璐圭敤鐢熸垚鐘舵��', minWidth: 160,
-      display: false,
-      hide: false,
-      search: true,
-      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/accounts_status',
-
-    },
-    accountsPayableStatus: {
-      label: '搴斾粯璐圭敤鐢熸垚鐘舵��', minWidth: 160,
-      display: false,
-      hide: false,
-      search: true,
-      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/accounts_status',
-
-    },
+    // accountsReceivableStatus: {
+    //   label: '搴旀敹璐圭敤鐢熸垚鐘舵��', minWidth: 160,
+    //   display: false,
+    //   hide: false,
+    //   search: true,
+    //   type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/accounts_status',
+    //
+    // },
+    // accountsPayableStatus: {
+    //   label: '搴斾粯璐圭敤鐢熸垚鐘舵��', minWidth: 160,
+    //   display: false,
+    //   hide: false,
+    //   search: true,
+    //   type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/accounts_status',
+    //
+    // },
 
     status: {
       label: '鐘舵��', minWidth: 150,
       type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/tms_dispatch_order_status',
       display: false,
       hide: false, fixed: 'right',
-      search: true,
+      search: false,
       rules: [
         {
           required: true,
@@ -1486,14 +1831,54 @@
         }
       ],
     },
+    inStatusList: {
+      label: '鐘舵��', minWidth: 150,
+      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/tms_dispatch_order_status',
+      display: false,multiple:true,
+      hide: true,
+      search: true,
 
+    },
+    confirmTime: {
+      label: '纭鏃堕棿', minWidth: 180,
+      display: false,
+      hide: false,
+      search: false,
+    },
+    orderTime: {
+      label: '涓嬪崟鏃堕棿', minWidth: 180,
+      display: false,
+      hide: false,
+      search: false,
+    },
+    createBy: {
+      label: '鍒涘缓浜�', minWidth: 150,
+      addDisplay: false,
+      editDisplay: false,
+      viewDisplay: false,
+      hide: false,
+      search: true,
+    },
+    createTime: {
+      label: '鍒涘缓鏃堕棿', minWidth: 180,
+      addDisplay: false,
+      editDisplay: false,
+      viewDisplay: false,
+      hide: false,
+      search: false,
+    },
+    createTimeRange: {
+      label: '鍒涘缓鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
+      format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
+      valueFormat: 'YYYY-MM-DD',
+    },
     updateBy: {
       label: '鏇存柊浜�', minWidth: 150,
       addDisplay: false,
       editDisplay: false,
       viewDisplay: false,
       hide: false,
-      search: false,
+      search: true,
     },
     updateTime: {
       label: '鏇存柊鏃堕棿', minWidth: 180,
@@ -1518,6 +1903,11 @@
       format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
       valueFormat: 'YYYY-MM-DD',
     },
+    orderTimeRange: {
+      label: '涓嬪崟鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
+      format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
+      valueFormat: 'YYYY-MM-DD',
+    },
 
   }
 })
@@ -1539,11 +1929,27 @@
     tripType: {
       label: '琛岀▼绫诲瀷',
       display: true,
+      change: function ({value}: any) {
+        if (value == '5'){
+          itineraryOption.value.column.iscc.display = true
+        }
+      },
       type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/trip_type',
       rules: [
         {
           required: true,
           message: "琛岀▼绫诲瀷涓嶈兘涓虹┖", trigger: "change"
+        }
+      ],
+    },
+    iscc: {
+      label: '鏄惁鏌ヨ溅',
+      display: false,
+      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_number_is',
+      rules: [
+        {
+          required: true,
+          message: "鏄惁鏌ヨ溅涓嶈兘涓虹┖", trigger: "change"
         }
       ],
     },
@@ -1635,11 +2041,10 @@
       display: true,
     },
     voucherUrl: {
-      label: '琛岀▼鍑瘉',
+      label: '鍑瘉',
       display: true,
       span: 24, dataType: 'string',
-      type: 'upload',
-      action: '/common/upload2',
+      type: 'img',
 
     },
 
@@ -1672,14 +2077,29 @@
         }
       ],
     },
-    voucherUrl: {
-      label: '琛岀▼鍑瘉',
+    currency:{
+      label: '甯佺',
       display: true,
-      span: 24,
+      type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
+      rules: [
+        {
+          required: true,
+          message: "甯佺涓嶈兘涓虹┖", trigger: "change"
+        }
+      ],
+
+    },
+    voucherUrl: {
+      label: '璐圭敤鍑瘉',
+      display: true,
       accept: 'string', dataType: 'string',
       type: 'upload',
       action: '/common/upload2',
 
+    },
+    remark:{
+      label: '澶囨敞',
+      type: 'textarea', minRows: 3, maxRows: 5, span: 24
     },
     dataSource: {
       label: '鏁版嵁鏉ユ簮',
@@ -1720,6 +2140,11 @@
       label: '閲戦',
       display: true,
     },
+    currency:{
+      label: '甯佺',
+      display: true,
+      type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
+    },
     feeVoucherUrl: {
       label: '璐圭敤鍑瘉',
       display: true,
@@ -1727,7 +2152,9 @@
       accept: 'string', dataType: 'object',
       type: 'upload',
       action: '/common/upload2',
-
+    },
+    remark:{
+      label: '澶囨敞',
     },
 
   }
@@ -2075,6 +2502,28 @@
 })
 
 
+const closeOption = ref({
+  menuBtn: false,
+  labelWidth: 120,
+  column: {
+    closeWhy:{
+      label: '浣滃簾鍘熷洜',span:24,
+      type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/close_why',
+      rules: [
+        {
+          required: true,
+          message: "浣滃簾鍘熷洜涓嶈兘涓虹┖", trigger: "change"
+        }
+      ],
+    },
+    closeWhyRemark:{
+      label: '浣滃簾鍘熷洜璇存槑',
+      type: 'textarea',
+      span:24,
+    },
+  }
+})
+
 
 
 const goodsTableOption = ref({
@@ -2368,6 +2817,65 @@
 const itemsCrudRef = ref()
 const itemsTableData = ref<any>([])
 
+const tabsOption = ref({
+  column: [
+    {
+      label: '杩愯緭澧炲�间綔涓氱櫥璁�',
+      prop: 'tab1',
+      name: 'tab1',
+      value: '0',
+
+    },
+    {
+      label: '鎶ュ叧澧炲�间綔涓氱櫥璁�',
+      prop: 'tab2',
+      name: 'tab2',
+      value: '1',
+    },
+    {
+      label: '瑁呭嵏澧炲�间綔涓氱櫥璁�',
+      prop: 'tab3',
+      name: 'tab3',
+      value: '2',
+
+    },
+    {
+      label: '瀹炴姤瀹為攢璐圭敤鐧昏',
+      prop: 'tab4',
+      name: 'tab4',
+      value: '3',
+    }
+    ]
+})
+const tabsOptionRef = ref();
+const active = ref('tab1');
+const open4 = ref(false);
+const zzItemsTableOption = ref({
+  pageKey: 'zzItemsTable',
+  rowKey: 'rowKey',
+  header: false,
+  menu: false,
+  selection: false,
+  column: {
+    freeName:{
+      label: '璐圭敤鍚嶇О',
+    },
+    unit:{
+      label: '璁¢噺鍗曚綅',
+    },
+    count:{
+      label : '璁¤垂鏁伴噺'
+    },
+    remark:{
+      label: '澶囨敞'
+    }
+  }
+});
+const zzItemsTableData = ref();
+
+
+
+
 const {
   tableData,
   pageF,
@@ -2413,12 +2921,19 @@
     isLoad.value = isLoad.value == 0 && !pageF.single ? 0 : -1;
     console.log(pageF.single)
   },
-  getBeginListFunc: () => {
+  getBeginListFunc: (params = {}) => {
     queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.createTimeRange, 'createTime') || {};
     queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.updateTimeRange, 'updateTime') || {};
     queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.confirmTimeRange, 'confirmTime') || {};
     queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.okTimeRange, 'okTime') || {};
+    queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.orderTimeRange, 'orderTime') || {};
+    return params;
   },
+  handleBeforeOpenFunc:(type:string)=>{
+    if(type == 'add'){
+      form.value = {};
+    }
+  }
 
 })
 const handleConfirm = (row: any) => {
@@ -2646,7 +3161,10 @@
       pageF.isUploading = false;
     })
   }else if (optionType.value === 'customs') {
-    customsOrder(form.value.id).then(res => {
+    customsOrder({id:form.value.id,
+      customsServiceProviderId: form.value.customsServiceProviderId,
+      customsServiceProviderName: form.value.customsServiceProviderName,
+    }).then(res => {
       ElMessage({
         message: "鎻愪氦鎴愬姛锛�",
         type: 'success'
@@ -2657,7 +3175,10 @@
       pageF.isUploading = false;
     })
   }else if (optionType.value === 'loading') {
-    loadingOrder(form.value.id).then(res => {
+    loadingOrder({id:form.value.id,
+      loadingServiceProviderId: form.value.loadingServiceProviderId,
+      loadingServiceProviderName: form.value.loadingServiceProviderName,
+    }).then(res => {
       ElMessage({
         message: "鎻愪氦鎴愬姛锛�",
         type: 'success'
@@ -2784,7 +3305,7 @@
       if (districtId) data.districtId = districtId;
       if (streetId) data.streetId = streetId;
     }
-    listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+    listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data,customerId: form.value.customerId}).then(res => {
       return callback({
         total: res.total,
         data: res.rows || [],
@@ -2811,7 +3332,7 @@
       if (districtId) data.districtId = districtId;
       if (streetId) data.streetId = streetId;
     }
-    listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+    listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data,customerId: form.value.customerId}).then(res => {
       return callback({
         total: res.total,
         data: res.rows || [],
@@ -3300,4 +3821,278 @@
   optionType.value = 'loading';
   boxFormOption.value = loadingOption.value;
 }
-</script>
\ No newline at end of file
+const quotationItems = ref();
+const getQuotationItems = async () => {
+  let res = await  getDicts("sys_quotation_items");
+  quotationItems.value = res.data || [];
+}
+getQuotationItems();
+
+const getTabData = (val:string)=>{
+  console.log(val)
+  let filter = quotationItems.value.filter((item:any)=>{
+    return item.remark == val;
+  });
+  if (filter.length > 0){
+    zzItemsTableData.value = filter.map((item:any)=>{
+      return { rowKey: randomId() ,freeName: item.dictLabel,free: item.dictValue,unit: '娆�'}
+    })
+  }else{
+    zzItemsTableData.value = []
+  }
+}
+
+const getTab4Data = ()=>{
+  listTmsFinanceDetail({
+    dispatchOrderId: form.value.id, financeType: 2,
+    pageNum: 1, pageSize: 999
+  }).then(async res => {
+    boxTableData.value = res.rows || [];
+
+    boxForm.value = {
+      dispatchOrderId: form.value.id,
+      dataSource: 0,
+      financeType: 2,
+    }
+  })
+}
+
+
+
+const submitTabForm = ()=>{
+  if (['tab1','tab2','tab3'].includes(active.value)){
+    let quoteFeeItems = zzItemsTableData.value.filter((item:any)=>{
+      return item.count && item.count > 0;
+    })
+    console.log(quoteFeeItems)
+    pushTmsQuoteFee({...form.value,quoteFeeItems:quoteFeeItems}).then(res=>{
+      ElMessage.success('淇濆瓨鎴愬姛');
+      open4.value = false;
+    })
+  }else if (active.value === 'tab4'){
+    if (Array.isArray(boxForm.value.feeVoucherUrl)) {
+      boxForm.value.feeVoucherUrl = boxForm.value.feeVoucherUrl.toString();
+    }
+    //boxForm.value.rowItems = boxTableData.value;
+    saveTmsFinanceDetail(boxForm.value).then(res => {
+      ElMessage({
+        message: "鎿嶄綔鎴愬姛锛�",
+        type: 'success'
+      })
+      boxFormRef.value?.resetFields();
+      getTab4Data();
+    })
+  }
+}
+
+
+
+const handleChange = (column:any)=>{
+  active.value = column.prop;
+  if (['tab1','tab2','tab3'].includes(column.prop)){
+    getTabData(column.value)
+  }else if (column.prop === 'tab4'){
+    getTab4Data()
+  }
+}
+
+const handleZZ = () => {
+  open4.value = true;
+  form.value = selectionList.value[0];
+  handleChange(tabsOption.value.column[0]);
+
+  boxFormOption.value = financeOption.value;
+  boxTableOption.value = financeTableOption.value;
+  nextTick(()=>{
+    tabsOptionRef.value.active = "0";
+
+  })
+}
+
+const handleClose = (row:any) => {
+
+  if (row.status == 2){
+    checkCloseOrder(row.id).then(res=>{
+      open5.value = true;
+      form.value = row;
+      boxFormOption.value = closeOption.value;
+    });
+  }else{
+    open5.value = true;
+    form.value = row;
+    boxFormOption.value = closeOption.value;
+
+  }
+}
+const submitForm5 = () =>{
+  boxFormRef.value.validate((valid: boolean,done:any) => {
+    console.log(valid)
+    if(valid){
+      boxForm.value.id = form.value.id;
+      closeOrder(boxForm.value).then(res=>{
+        ElMessage.success('鎿嶄綔鎴愬姛');
+        open5.value = false;
+        done();
+        onLoad(page.value)
+      }).catch(err=>{
+        done();
+      })
+    }
+  })
+}
+const printOption = ref({
+  menuBtn: false,
+  labelWidth: 120,
+  column: {
+    sixLinkNo:{
+      label: '鍏仈鍗曞彿',
+    },
+    portName:{
+      label: '琛岄┒鍙e哺',
+      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_port',
+    },
+    billNo:{
+      label: '鎻愬崟鍙稴/O',
+    },
+    terminalName:{
+      label: '鐮佸ご鍚�',
+    },
+    cargoName:{
+      label: '璐х墿鍚�',
+    },
+    pieceCount:{
+      label: '浠舵暟',
+    },
+    weight:{
+      label: '閲嶉噺',
+    },
+    contactName:{
+      label: '瀹㈡埛鑱旂粶浜�',
+    },
+    contactPhone:{
+      label: '鑱旂粶浜烘墜鏈哄彿',
+    }
+  }
+})
+const print =ref(0)
+const handlePrint = () => {
+  form.value =  selectionList.value[0];
+  boxFormOption.value = printOption.value;
+  boxForm.value = form.value
+
+  getTmsDriver(boxForm.value.mainDriverId).then(res=>{
+    open6.value = true;
+    const driver =  res.data || {};
+    boxForm.value.mainDriverMobile = driver.mobile;
+    print.value = 0
+  })
+
+}
+
+const submitForm6 = ()=>{
+  print.value = 1;
+  printDispatchOrder(boxForm.value).then(res=>{
+    $Print('#print');
+    onLoad(page.value)
+  })
+
+
+}
+const upload = reactive({
+  // 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛�
+  open: false,
+  // 鏄惁绂佺敤涓婁紶
+  isUploading: false,
+  // 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+  updateSupport: 0,
+  // 璁剧疆涓婁紶鐨勮姹傚ご閮�
+  headers: { Authorization: "Bearer " + getToken() },
+  // 涓婁紶鐨勫湴鍧�
+  url: import.meta.env.VITE_APP_BASE_API + "tms/tmsDispatchOrder/importData"
+});
+
+
+const uploadRef = ref();
+
+function handleImport() {
+  upload.open = true;
+}
+
+
+/** 涓嬭浇妯℃澘鎿嶄綔 */
+function importTemplate() {
+  importTemplateTmsDispatchOrder();
+
+}
+const handleFileUploadProgress = (event:any, file:any) => {
+  upload.isUploading = true;
+};
+/** 鏂囦欢涓婁紶鎴愬姛澶勭悊 */
+const handleFileSuccess = (response:any, file:any) => {
+  upload.open = false;
+  upload.isUploading = false;
+  uploadRef.value!.clearFiles();
+  proxy.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "瀵煎叆缁撴灉", { dangerouslyUseHTMLString: true });
+  onLoad(page.value);
+};
+/** 鎻愪氦涓婁紶鏂囦欢 */
+function submitFileForm() {
+  uploadRef.value!.submit();
+}
+
+
+</script>
+<style lang="scss" scoped>
+
+::v-deep .cydprint .el-dialog__body{
+ overflow: hidden;
+  //padding: 0;
+  margin: 0;
+}
+#print{
+  .title{
+    text-align: center;
+    font-size: 14pt;
+    color: #000;
+    line-height:23pt;
+    font-weight: bold;
+    margin: 0;
+  }
+  .header{
+   position: relative;
+    .order{
+      font-size: 12pt;
+      color: #000;
+      line-height: 23pt;
+    }
+    .sub-title{
+      position: absolute;
+      left: 50%;
+      transform: translateX(-50%);
+      top: 0;
+      font-size: 12pt;
+      color: #000;
+      line-height: 23pt;
+      text-decoration: underline;
+    }
+
+  }
+
+  table {
+    width: 100%;
+    border-collapse: collapse; /* 鍚堝苟杈规 */
+    font-size: 12px;
+    table-layout: fixed; /* 鍏抽敭鐐� */
+  }
+  table, td {
+    border: 1px solid #000;
+
+  }
+  td {
+    padding: 4px;
+    vertical-align: middle;
+    width: 50%;          /* 寮哄埗绛夊 */
+    word-break: break-all;
+  }
+}
+</style>
\ No newline at end of file

--
Gitblit v1.8.0