From 54e07b96bd7fdae9915fcf06de2a16bcb613aa74 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期五, 06 三月 2026 16:28:37 +0800
Subject: [PATCH] 新增备注日志
---
ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue | 1282 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 1,215 insertions(+), 67 deletions(-)
diff --git a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
index afdb80f..051f5ba 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,47 @@
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>
+ <el-button
+ type="primary"
+ icon="UserFilled"
+ :disabled="!zxhdjSingle"
+ @click="handleZXHDJ"
+ v-hasPermi="['tms:tmsDispatchOrder:zzdj']"
+ >瑁呭嵏璐х偣鐧昏
+ </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 +148,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"
@@ -128,7 +161,7 @@
<template #shipperId-form="{disabled}">
<div style="display:flex; align-items: center;justify-content: space-between">
- <avue-input-table :props="consignorProps"
+ <avue-input-table :props="consignorProps" dataType="string"
:children="consignorOption" :disabled="disabled"
:on-load="onShipperLoad" suffixIcon="search"
v-model="form.shipperId" style="width: 80%"
@@ -140,7 +173,7 @@
<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" :disabled="disabled"
@change="changeReceiver" style="width: 80%"
@@ -196,7 +229,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 +243,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 +282,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 +328,269 @@
</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>
+
+
+ <el-dialog title="棰勯厤璁㈠崟瑁呭嵏璐х偣鐧昏" v-model="open7" class="avue-dialog avue-dialog--top" width="80%">
+ <avue-form v-model="shipperReceiverForm"
+ ref="shipperReceiverFormRef"
+ :option="shipperReceiverFormOption">
+ <template #dispatchNos="{disabled}">
+ <div class="dispatchNos">
+ <el-tag
+ v-for="tag in shipperReceiverForm.dispatchNos"
+ :key="tag"
+ closable
+ @close="handleCloseDispatchNo(tag)"
+ >
+ {{ tag }}
+ </el-tag>
+ </div>
+
+ </template>
+ <template #shipperId="{disabled}">
+ <div style="display:flex; align-items: center;justify-content: space-between">
+ <avue-input-table :props="consignorProps" dataType="string"
+ :children="consignorOption" :disabled="disabled"
+ :on-load="onShipperLoad" suffixIcon="search"
+ v-model="shipperReceiverForm.shipperId" style="width: 80%"
+ @change="changeShipper2"
+ placeholder="璇烽�夋嫨瑁呰揣鐐�"></avue-input-table>
+ <el-button icon="plus" :disabled="disabled" @click="handleAddShipper2"></el-button>
+ </div>
+ </template>
+ <template #receiverId="{disabled}">
+ <div style="display:flex; align-items: center;justify-content: space-between">
+ <avue-input-table :props="consignorProps"
+ :children="consignorOption" dataType="string"
+ :on-load="onConsignorLoad" suffixIcon="search"
+ v-model="shipperReceiverForm.receiverId" :disabled="disabled"
+ @change="changeReceiver2" style="width: 80%"
+ placeholder="璇烽�夋嫨鍗歌揣鐐�"></avue-input-table>
+ <el-button icon="plus" :disabled="disabled" @click="handleAddReceiver2"></el-button>
+ </div>
+ </template>
+ </avue-form>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button type="primary"
+ :loading="pageF.isUploading" @click="submitZxForm">
+ {{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
+ </el-button>
+
+ <el-button @click="open7 = false">鍙� 娑�</el-button>
+ </div>
+ </template>
+ </el-dialog>
+
</basicContainer>
</template>
@@ -307,10 +603,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,ypdddjSumbit
} 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 +631,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 +698,16 @@
actualForm: <any>{},
isCustoms:<any> -1,
isLoad: -1,
+ open5:false,
+ open6:false,
+ open7:false,
+ zxhdjSingle: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,open7,zxhdjSingle
} = toRefs(data);
const option = ref({
pageKey: 'TmsDispatchOrder',
@@ -395,6 +716,7 @@
searchSpan: 6,
searchLabelWidth: 150,
menuWidth: 300,
+ height: 530,
group: [
{
label: '鍩烘湰淇℃伅',
@@ -412,13 +734,11 @@
],
type: 'table', suffixIcon: 'search',dataType: 'string',
change: (val: any) => {
- console.log(val)
const table = crudRef.value?.getPropRef?.('quoteDetailId')?.$refs?.temp;
if (!table) return;
let active = table.active;
if (Array.isArray(active)) active = active[0];
if (active) {
- console.log(active)
Object.assign(form.value, {
quoteDetailId: active.quoteDetailId,
transportLine: active.transportRoute,
@@ -434,6 +754,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: {
@@ -738,6 +1065,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 绫诲瀷
@@ -1423,13 +1763,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: '杩愯緭绾胯矾',
@@ -1455,7 +1795,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',
@@ -1472,8 +1833,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',
@@ -1496,29 +1864,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,
@@ -1526,14 +1894,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,
@@ -1558,6 +1966,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',
+ },
}
})
@@ -1579,11 +1992,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"
}
],
},
@@ -1675,11 +2104,10 @@
display: true,
},
voucherUrl: {
- label: '琛岀▼鍑瘉',
+ label: '鍑瘉',
display: true,
span: 24, dataType: 'string',
- type: 'upload',
- action: '/common/upload2',
+ type: 'img',
},
@@ -1712,14 +2140,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: '鏁版嵁鏉ユ簮',
@@ -1760,6 +2203,11 @@
label: '閲戦',
display: true,
},
+ currency:{
+ label: '甯佺',
+ display: true,
+ type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
+ },
feeVoucherUrl: {
label: '璐圭敤鍑瘉',
display: true,
@@ -1767,7 +2215,9 @@
accept: 'string', dataType: 'object',
type: 'upload',
action: '/common/upload2',
-
+ },
+ remark:{
+ label: '澶囨敞',
},
}
@@ -2115,6 +2565,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({
@@ -2408,6 +2880,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,
@@ -2451,14 +2982,27 @@
}
isCustoms.value = isCustoms.value == 0 && !pageF.single ? 0 : -1;
isLoad.value = isLoad.value == 0 && !pageF.single ? 0 : -1;
- console.log(pageF.single)
+ zxhdjSingle.value = pageF.multiple|| true;
+ let yp = selection.filter((item:any) =>{
+ return item.orderType == 0
+ });
+ if(yp.length > 0){
+ zxhdjSingle.value = false;
+ }
},
- 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) => {
@@ -2686,7 +3230,10 @@
pageF.isUploading = false;
})
}else if (optionType.value === 'customs') {
- customsOrder({id:form.value.id}).then(res => {
+ customsOrder({id:form.value.id,
+ customsServiceProviderId: form.value.customsServiceProviderId,
+ customsServiceProviderName: form.value.customsServiceProviderName,
+ }).then(res => {
ElMessage({
message: "鎻愪氦鎴愬姛锛�",
type: 'success'
@@ -2697,7 +3244,10 @@
pageF.isUploading = false;
})
}else if (optionType.value === 'loading') {
- loadingOrder({id:form.value.id}).then(res => {
+ loadingOrder({id:form.value.id,
+ loadingServiceProviderId: form.value.loadingServiceProviderId,
+ loadingServiceProviderName: form.value.loadingServiceProviderName,
+ }).then(res => {
ElMessage({
message: "鎻愪氦鎴愬姛锛�",
type: 'success'
@@ -2824,7 +3374,10 @@
if (districtId) data.districtId = districtId;
if (streetId) data.streetId = streetId;
}
- listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ if (shipperReceiverForm.value.customerId ){
+ form.value.customerId = shipperReceiverForm.value.customerId;
+ }
+ listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data,customerId: form.value.customerId}).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -2851,7 +3404,10 @@
if (districtId) data.districtId = districtId;
if (streetId) data.streetId = streetId;
}
- listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ if (shipperReceiverForm.value.customerId ){
+ form.value.customerId = shipperReceiverForm.value.customerId;
+ }
+ listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data,customerId: form.value.customerId}).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -3340,4 +3896,596 @@
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();
+}
+const shipperReceiverForm = ref<any>({});
+const shipperReceiverFormRef = ref();
+const shipperReceiverFormOption = ref({
+ menuBtn: false, labelWidth: 140,
+ column: {
+ dispatchNos:{
+ label: '璋冨害鍗曞彿',span:24,
+ rules: [
+ {
+ required: true,
+ message: "璋冨害鍗曞彿涓嶈兘涓虹┖", trigger: "change"
+ }
+ ],
+ },
+ shipperId: {
+ label: '瑁呰揣鐐�', dataType: 'string',disabled:false,
+ display: true,
+ rules: [
+ {
+ required: true,
+ message: "瑁呰揣鐐逛笉鑳戒负绌�", trigger: "change"
+ }
+ ],
+
+ },
+ shipperRegionLabel: {
+ label: '瑁呰揣鐐硅鏀垮尯鍩�',
+ display: true, disabled: true
+
+ },
+ shipperAddress: {
+ label: '瑁呰揣鐐硅缁嗗湴鍧�',
+ display: true, disabled: true
+ },
+ shipperMobile: {
+ label: '瑁呰揣鐐硅仈绯绘柟寮�',
+ display: true, disabled: true
+ },
+ receiverId: {
+ label: '鍗歌揣鐐�',
+ display: true, dataType: 'string',disabled:false,
+ rules: [
+ {
+ required: true,
+ message: "鍗歌揣鐐逛笉鑳戒负绌�", trigger: "change"
+ }
+ ],
+ },
+ receiverRegionLabel: {
+ label: '鍗歌揣鐐硅鏀垮尯鍩�',
+ display: true, disabled: true
+ },
+ receiverAddress: {
+ label: '鍗歌揣鐐硅缁嗗湴鍧�',
+ display: true, disabled: true
+ },
+ receiverMobile: {
+ label: '鍗歌揣鐐硅仈绯绘柟寮�',
+ display: true, disabled: true
+ },
+ }
+});
+
+const changeShipper2 = ({value}: any) => {
+
+ if (value) {
+ let id = value;
+ if (Array.isArray(value)) {
+ id = value[0]
+ }
+ getTmsConsignor(id).then(res => {
+ let active = res.data || {};
+ let shipperRegionCode = '';
+ if (active.provinceId) {
+ shipperRegionCode = active.provinceId;
+ }
+ if (active.cityId) {
+ shipperRegionCode = shipperRegionCode + "," + active.cityId;
+
+ }
+ if (active.districtId) {
+ shipperRegionCode = shipperRegionCode + "," + active.districtId;
+
+ }
+ if (active.streetId) {
+ shipperRegionCode = shipperRegionCode + "," + active.streetId;
+ }
+ Object.assign(shipperReceiverForm.value, {
+ shipperId: active.id,
+ shipperName: active.consignorName,
+ shipperRegionLabel: active.regionLabel,
+ shipperAddress: active.addressDetail,
+ shipperMobile: active.contactPhone,
+ shipperRegionCode: shipperRegionCode
+ });
+ })
+ }
+}
+const changeReceiver2 = ({value}: any) => {
+
+ if (value) {
+ let id = value;
+ if (Array.isArray(value)) {
+ id = value[0]
+ }
+ getTmsConsignor(id).then(res => {
+ let active = res.data || {};
+ let receiverRegionCode = '';
+ if (active.provinceId) {
+ receiverRegionCode = active.provinceId;
+ }
+ if (active.cityId) {
+ receiverRegionCode = receiverRegionCode + "," + active.cityId;
+
+ }
+ if (active.districtId) {
+ receiverRegionCode = receiverRegionCode + "," + active.districtId;
+
+ }
+ if (active.streetId) {
+ receiverRegionCode = receiverRegionCode + "," + active.streetId;
+ }
+
+ Object.assign(shipperReceiverForm.value, {
+ receiverId: active.id,
+ receiverName: active.consignorName,
+ receiverRegionLabel: active.regionLabel,
+ receiverAddress: active.addressDetail,
+ receiverMobile: active.contactPhone,
+ receiverRegionCode: receiverRegionCode,
+ });
+ })
+ }
+}
+
+const hasDifferentCustomer = (() => {
+ const customerSet = new Set(
+ selectionList.value.map((item:any) => item.customerId)
+ );
+ return customerSet.size > 1;
+})();
+const handleZXHDJ = ()=>{
+ if(hasDifferentCustomer){
+ ElMessage.error('鍗曟鎿嶄綔鍙兘鎿嶄綔涓�涓鎴风殑鏁版嵁');
+ return;
+ }
+ let filter = selectionList.value.filter((item:any)=> !item.shipperId);
+ let filter2 = selectionList.value.filter((item:any)=> !item.receiverId);
+ let zLen = filter.length || 0;
+ let xLen = filter2.length || 0;
+ if (zLen == 0 && xLen == 0){
+ ElMessage.error('閫夋嫨鐨勬暟鎹凡瀹屾垚瀵硅鍗歌揣鐐圭櫥璁�');
+ return;
+ }
+ if(zLen >0 && xLen >0){
+ if (zLen > xLen){
+ ElMessage.error('閫夋嫨鐨勬暟鎹凡濉啓鍗歌揣鐐规暟鎹紝璇峰崟鐙紪杈�');
+ return;
+ }
+ if (zLen < xLen){
+ ElMessage.error('閫夋嫨鐨勬暟鎹凡濉啓瑁呰揣鐐规暟鎹紝璇峰崟鐙紪杈�');
+ return;
+ }
+ }
+ let item:any = selectionList.value[0];
+ shipperReceiverForm.value.customerId = item?.customerId
+ shipperReceiverForm.value.customerCode = item?.customerCode
+ shipperReceiverForm.value.customerName = item?.customerName;
+ shipperReceiverForm.value.dispatchNos = selectionList.value.map((item:any)=> item.dispatchNo) || [];
+
+ shipperReceiverFormOption.value.column.shipperId.disabled = zLen ==0;
+ shipperReceiverFormOption.value.column.shipperId.rules[0].required = zLen !=0;
+ shipperReceiverFormOption.value.column.receiverId.disabled = xLen ==0;
+ shipperReceiverFormOption.value.column.receiverId.rules[0].required = xLen !=0;
+
+
+ open7.value = true;
+}
+
+const handleAddShipper2 = () => {
+
+ form2.value = {
+ customerId: shipperReceiverForm.value.customerId,
+ customerSysCode: shipperReceiverForm.value.customerCode,
+ customerName: shipperReceiverForm.value.customerName,
+ };
+ dialForm.value = $DialogForm(appContext)({
+ title: '鏂板瑁呰揣鍦�',
+ data:form2.value,
+ width: '80%',
+ option: consignorAddOption.value,
+ menuPosition: 'right',
+ callback: (res:any,) => {
+ let data1 = res.data;
+ if (data1.mapLocationDetail){
+ data1.mapLocation = data1.mapLocationDetail[0]+','+data1.mapLocationDetail[1];
+ data1.addressDetail = data1.mapLocationDetail[2]
+ }
+ addTmsConsignor({...form2.value,...data1}).then(res2=>{
+ let active = res2.data || {};
+ if (active) {
+ let shipperRegionCode = '';
+ if (active.provinceId){
+ shipperRegionCode = active.provinceId;
+ }
+ if (active.cityId){
+ shipperRegionCode =shipperRegionCode+ ","+active.cityId;
+
+ }
+ if (active.districtId){
+ shipperRegionCode =shipperRegionCode+ ","+active.districtId;
+
+ }
+ if (active.streetId){
+ shipperRegionCode =shipperRegionCode+ ","+active.streetId;
+ }
+ Object.assign(shipperReceiverForm.value, {
+ shipperId: active.id,
+ shipperName: active.consignorName,
+ shipperRegionLabel: active.regionLabel,
+ shipperAddress: active.addressDetail,
+ shipperMobile: active.contactPhone,
+ shipperRegionCode:shipperRegionCode
+ });
+ }
+ dialForm.value.close();
+ res.done();
+ }).catch(err=>{
+ res.done();
+ })
+ },
+ })
+}
+
+const handleAddReceiver2 = () => {
+ if (!form.value.customerId){
+ return ElMessage.error('璇峰厛閫夋嫨杩愯緭璺嚎');
+ }
+ form2.value = {
+ customerId: shipperReceiverForm.value.customerId,
+ customerSysCode: shipperReceiverForm.value.customerCode,
+ customerName: shipperReceiverForm.value.customerName,
+ };
+ dialForm.value = $DialogForm(appContext)({
+ title: '鏂板鍗歌揣鍦�',
+ data:form2.value,
+ width: '80%',
+ option: consignorAddOption.value,
+ menuPosition: 'right',
+ callback: (res:any,) => {
+ let data1 = res.data;
+ if (data1.mapLocationDetail){
+ data1.mapLocation = data1.mapLocationDetail[0]+','+data1.mapLocationDetail[1];
+ data1.addressDetail = data1.mapLocationDetail[2]
+ }
+ addTmsConsignor({...form2.value,...data1}).then(res2=>{
+ let active = res2.data || {};
+ if (active) {
+ let receiverRegionCode = '';
+ if (active.provinceId){
+ receiverRegionCode = active.provinceId;
+ }
+ if (active.cityId){
+ receiverRegionCode =receiverRegionCode+ ","+active.cityId;
+
+ }
+ if (active.districtId){
+ receiverRegionCode =receiverRegionCode+ ","+active.districtId;
+
+ }
+ if (active.streetId){
+ receiverRegionCode =receiverRegionCode+ ","+active.streetId;
+ }
+
+ Object.assign(shipperReceiverForm.value, {
+ receiverId: active.id,
+ receiverName: active.consignorName,
+ receiverRegionLabel: active.regionLabel,
+ receiverAddress: active.addressDetail,
+ receiverMobile: active.contactPhone,
+ receiverRegionCode:receiverRegionCode,
+ });
+ }
+ dialForm.value.close();
+ res.done();
+ }).catch(err=>{
+ res.done();
+ })
+ },
+ })
+}
+
+const handleCloseDispatchNo = (tag:string)=>{
+ let indexOf = shipperReceiverForm.value.dispatchNos.indexOf(tag);
+ shipperReceiverForm.value.dispatchNos.splice(indexOf,1);
+}
+
+const submitZxForm = ()=>{
+ shipperReceiverFormRef.value.validate((valid: boolean,done:any) => {
+ if(valid){
+ ypdddjSumbit(shipperReceiverForm.value).then(res=>{
+ ElMessage.success('鐧昏鎴愬姛');
+ open7.value = false;
+ onLoad(page.value);
+
+ done();
+ }).catch(err=>{
+ done();
+ })
+ }
+ })
+}
+
+</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;
+ }
+}
+.dispatchNos{
+ //border: 1px solid #ebeef5;
+ border-radius: 4px;
+ min-height: 73px;
+ padding: 1px 11px;
+ box-shadow: 0 0 0 1px var(--el-disabled-border-color) inset;
+}
+</style>
\ No newline at end of file
--
Gitblit v1.8.0