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 | 401 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 397 insertions(+), 4 deletions(-)
diff --git a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
index 9ea29ad..051f5ba 100644
--- a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
+++ b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
@@ -106,6 +106,14 @@
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"
@@ -530,6 +538,59 @@
</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>
@@ -554,7 +615,7 @@
checkCloseOrder,
closeOrder,
printDispatchOrder,
- importTemplateTmsDispatchOrder
+ importTemplateTmsDispatchOrder,ypdddjSumbit
} from "@/api/tms/tmsDispatchOrder";
import useCurrentInstance from "@/utils/useCurrentInstance";
import {computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance, nextTick} from "vue";
@@ -639,12 +700,14 @@
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,open5,open6
+ goodsTableData, goodsForm, actualForm, selectionList2,isCustoms,isLoad,open5,open6,open7,zxhdjSingle
} = toRefs(data);
const option = ref({
pageKey: 'TmsDispatchOrder',
@@ -2919,7 +2982,13 @@
}
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: (params = {}) => {
queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.createTimeRange, 'createTime') || {};
@@ -3305,6 +3374,9 @@
if (districtId) data.districtId = districtId;
if (streetId) data.streetId = streetId;
}
+ 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,
@@ -3331,6 +3403,9 @@
if (cityId) data.cityId = cityId;
if (districtId) data.districtId = districtId;
if (streetId) data.streetId = streetId;
+ }
+ 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({
@@ -4008,7 +4083,7 @@
// 璁剧疆涓婁紶鐨勮姹傚ご閮�
headers: { Authorization: "Bearer " + getToken() },
// 涓婁紶鐨勫湴鍧�
- url: import.meta.env.VITE_APP_BASE_API + "tms/tmsDispatchOrder/importData"
+ url: import.meta.env.VITE_APP_BASE_API + "/tms/tmsDispatchOrder/importData"
});
@@ -4039,7 +4114,318 @@
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>
@@ -4095,4 +4481,11 @@
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