<template>
|
<basicContainer>
|
<avue-crud
|
:option="option"
|
:table-loading="pageF.loading"
|
:data="tableData"
|
:page="page"
|
:permission="permissionList"
|
:before-open="beforeOpen"
|
v-model="form" v-model:search="queryParams"
|
ref="crudRef"
|
@row-update="rowUpdate"
|
@row-save="rowSave"
|
@refresh-change="refreshChange"
|
@row-del="rowDel"
|
@search-change="searchChange"
|
@search-reset="searchReset"
|
@selection-change="selectionChange"
|
@current-change="currentChange"
|
@size-change="sizeChange"
|
@on-load="onLoad"
|
>
|
<template #menu-left>
|
<!-- <el-button-->
|
<!-- type="success"-->
|
<!-- icon="Edit"-->
|
<!-- :disabled="pageF.single"-->
|
<!-- v-hasPermi="['tms:tmsDispatchOrder:edit']"-->
|
<!-- @click="handleUpdate">修改-->
|
<!-- </el-button>-->
|
<!-- <el-button-->
|
<!-- type="danger"-->
|
<!-- icon="Delete"-->
|
<!-- :disabled="pageF.multiple"-->
|
<!-- @click="handleDelete"-->
|
<!-- v-hasPermi="['tms:tmsDispatchOrder:remove']"-->
|
<!-- >删除-->
|
<!-- </el-button>-->
|
<el-button
|
type="warning"
|
plain
|
icon="Download"
|
@click="handleExport"
|
v-hasPermi="['tms:tmsDispatchOrder:export']"
|
>导出
|
</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"
|
:disabled="pageF.single"
|
@click="handleDropHook"
|
v-hasPermi="['tms:tmsDispatchOrder:dropHook']"
|
>甩挂
|
</el-button>
|
<el-button
|
type="primary"
|
icon="Male"
|
:disabled="pageF.single"
|
@click="handleConnectHang"
|
v-hasPermi="['tms:tmsDispatchOrder:connectHang']"
|
>接挂
|
</el-button>
|
|
<el-button
|
type="warning"
|
icon="Avatar"
|
:disabled="!( isCustoms == 0)"
|
@click="handleCustoms"
|
v-hasPermi="['tms:tmsDispatchOrder:customs']"
|
>委托报关信息
|
</el-button>
|
<el-button
|
type="primary"
|
icon="UserFilled"
|
:disabled="!( isLoad == 0)"
|
@click="handleLoading"
|
v-hasPermi="['tms:tmsDispatchOrder:loading']"
|
>委托卸货信息
|
</el-button>
|
</template>
|
<template #menu-before="{row}">
|
<el-link size="small" type="primary" @click="handleAddGoods(row)" class="link-btn"
|
v-hasPermi="['tms:tmsGoodsDetail:add']"
|
: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']"
|
: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" @click="handleCopy(row)" class="link-btn" :underline="false"
|
v-hasPermi="['tms:tmsDispatchOrder:copyOrder']"
|
icon="el-icon-connection">复制
|
</el-link>
|
<el-link size="small" type="primary" v-if="[1,2].includes(row.status)" @click="handleUploadItinerary(row)"
|
v-hasPermi="['tms:tmsTrip:add']"
|
class="link-btn" :underline="false" icon="el-icon-upload">上传行程
|
</el-link>
|
<el-link size="small" type="primary" v-if="![0,1].includes(row.status)" @click="handleLogItinerary(row)"
|
v-hasPermi="['tms:tmsTrip:list']"
|
class="link-btn" :underline="false" icon="el-icon-view">查看行程
|
</el-link>
|
<el-link size="small" type="primary" v-if="[2].includes(row.status)" @click="handleOk(row)" class="link-btn"
|
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>
|
</template>
|
<template #menu="{row}">
|
<el-link size="small" type="primary" @click="handleLog(row)" class="link-btn" :underline="false"
|
icon="el-icon-tickets">日志
|
</el-link>
|
</template>
|
|
<template #shipperId-form="{disabled}">
|
<div style="display:flex; align-items: center;justify-content: space-between">
|
<avue-input-table :props="consignorProps"
|
: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" :disabled="disabled" @click="handleAddShipper"></el-button>
|
</div>
|
</template>
|
<template #receiverId-form="{disabled}">
|
<div style="display:flex; align-items: center;justify-content: space-between">
|
<avue-input-table :props="consignorProps"
|
:children="consignorOption"
|
:on-load="onConsignorLoad" suffixIcon="search"
|
v-model="form.receiverId" :disabled="disabled"
|
@change="changeReceiver" style="width: 80%"
|
placeholder="请选择卸货点"></avue-input-table>
|
<el-button icon="plus" :disabled="disabled" @click="handleAddReceiver"></el-button>
|
</div>
|
</template>
|
|
</avue-crud>
|
<el-dialog :title="pageF.title" v-model="pageF.open" class="avue-dialog avue-dialog--top" width="80%">
|
<h2 v-if="optionType == 'addFinance'">报价费用</h2>
|
<avue-crud v-if="optionType == 'addFinance'"
|
:option="itemsTableOption"
|
:data="itemsTableData"
|
@selection-change="selectionChange2"
|
>
|
<template #count="{row}">
|
<el-input-number v-model="row.count" @change="countChange(row)" placeholder="请输入计费数量"
|
min="0"></el-input-number>
|
</template>
|
</avue-crud>
|
<h2 v-if="optionType == 'addFinance'">实报实销费用</h2>
|
<avue-form v-if="optionType == 'addItinerary' || optionType == 'addFinance'" v-model="boxForm" ref="boxFormRef"
|
:option="boxFormOption">
|
|
</avue-form>
|
<avue-crud
|
:option="boxTableOption"
|
:data="boxTableData"
|
>
|
</avue-crud>
|
<template #footer>
|
<div class="dialog-footer">
|
<el-button type="primary" v-if="optionType == 'addItinerary' || optionType == 'addFinance'"
|
:loading="pageF.isUploading" @click="submitForm">
|
{{ pageF.isUploading ? '提交中' : '确 定' }}
|
</el-button>
|
|
<el-button type="primary" v-if="optionType == 'generate' " :loading="pageF.isUploading"
|
@click="submitGenerate">
|
{{ pageF.isUploading ? '生成中' : '生成费用' }}
|
</el-button>
|
<el-button @click="cancelBox">取 消</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
|
<el-dialog :title="title" v-model="open" class="avue-dialog avue-dialog--top" width="40%">
|
<div v-if="optionType === 'dropHook'">
|
<el-descriptions
|
:column="2"
|
border
|
>
|
<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.licensePlate }}</el-descriptions-item>
|
<el-descriptions-item label="托架号">{{ form.shelfCode }}</el-descriptions-item>
|
<el-descriptions-item label="主驾驶员">{{ form.mainDriverName }}</el-descriptions-item>
|
<el-descriptions-item label="副驾驶员">{{ form.assistantDriverName }}</el-descriptions-item>
|
</el-descriptions>
|
</div>
|
<div v-if="optionType == 'connectHang'">
|
<el-descriptions style="margin-bottom: 20px"
|
:column="2"
|
border
|
>
|
<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.shelfCode }}</el-descriptions-item>
|
</el-descriptions>
|
<avue-form v-model="form" ref="boxFormRef" :option="boxFormOption">
|
|
</avue-form>
|
</div>
|
|
<div v-if="optionType == 'customs'">
|
<el-descriptions style="margin-bottom: 20px"
|
:column="2"
|
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>
|
<avue-form v-model="form" ref="boxFormRef" :option="boxFormOption">
|
|
</avue-form>
|
</div>
|
|
<div v-if="optionType == 'loading'">
|
<el-descriptions style="margin-bottom: 20px"
|
:column="2"
|
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>
|
<avue-form v-model="form" ref="boxFormRef" :option="boxFormOption">
|
|
</avue-form>
|
</div>
|
<template #footer>
|
<div class="dialog-footer">
|
<el-button type="primary" :loading="pageF.isUploading" @click="submitForm2">
|
{{ pageF.isUploading ? '提交中' : '确 定' }}
|
</el-button>
|
<el-button @click="cancelBox2">取 消</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
|
|
<el-dialog title="货品信息登记" v-model="open2" class="avue-dialog avue-dialog--top" width="80%">
|
<avue-crud
|
:option="goodsTableOption"
|
v-model="goodsForm"
|
@row-update="rowGoodsUpdate"
|
@row-save="rowGoodsSave"
|
@row-del="rowGoodsDel"
|
:data="goodsTableData" ref="goodsCrudRef"
|
>
|
</avue-crud>
|
<!-- <template #footer>-->
|
<!-- <div class="dialog-footer">-->
|
<!-- <el-button type="primary" :loading="pageF.isUploading" @click="submitForm2">-->
|
<!-- {{ pageF.isUploading ? '提交中' : '确 定' }}-->
|
<!-- </el-button>-->
|
<!-- <el-button @click="open2 = false">取 消</el-button>-->
|
<!-- </div>-->
|
<!-- </template>-->
|
</el-dialog>
|
|
<el-dialog title="实际运输信息" v-model="open3" class="avue-dialog avue-dialog--top" width="80%">
|
<avue-form v-model="actualForm"
|
ref="actualFormRef"
|
:option="actualFormOption">
|
|
</avue-form>
|
<template #footer>
|
<div class="dialog-footer">
|
<el-button type="primary" :loading="pageF.isUploading" @click="submitForm3">
|
{{ pageF.isUploading ? '提交中' : '确 定' }}
|
</el-button>
|
<el-button @click="open3 = false">取 消</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
|
|
</basicContainer>
|
</template>
|
|
<script setup name="tmsDispatchOrder" lang="ts">
|
import {
|
TmsDispatchOrderI,
|
addTmsDispatchOrder,
|
delTmsDispatchOrder,
|
exportTmsDispatchOrder,
|
getTmsDispatchOrder,
|
listTmsDispatchOrder,
|
updateTmsDispatchOrder,
|
confirmOrder, copyOrder, okOrder, initGenerate, generateTmsDispatchOrder, dropHook, connectHang,customsOrder,loadingOrder,
|
} from "@/api/tms/tmsDispatchOrder";
|
import useCurrentInstance from "@/utils/useCurrentInstance";
|
import {computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance} from "vue";
|
import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
|
import {usePagePlus} from "@/hooks/usePagePlus";
|
import {hasPermission} from "@/utils/permissionUtils";
|
import {getTmsProject, listTmsProject} from "@/api/tms/tmsProject";
|
import {getTmsServiceProvider, listTmsServiceProvider} from "@/api/tms/tmsServiceProvider";
|
import {getTmsLoadingServiceProvider, listTmsLoadingServiceProvider} from "@/api/tms/tmsLoadingServiceProvider";
|
import {getTmsCustomsServiceProvider, listTmsCustomsServiceProvider} from "@/api/tms/tmsCustomsServiceProvider";
|
import {getTmsDriver, listTmsDriver} from "@/api/tms/tmsDriver";
|
import {getTmsVehicle, listTmsVehicle} from "@/api/tms/tmsVehicle";
|
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 {addTmsTrip, listTmsTrip} from "@/api/tms/tmsTrip";
|
import {addTmsFinanceDetail, listTmsFinanceDetail, 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 {getTmsCustomerInfo, listTmsCustomerInfo} from "@/api/tms/tmsCustomerInfo";
|
import {getAddressCode} from "@/api/tms/tmsRegion";
|
import {mapRegeo} from "@/api/common";
|
|
const {appContext} = getCurrentInstance();
|
|
const {proxy} = useCurrentInstance();
|
const crudRef = ref();
|
const boxFormRef = ref();
|
const goodsCrudRef = ref();
|
const actualFormRef = ref();
|
|
|
const permissionList = (key: any, row: any, index: any) => {
|
if (key == 'addBtn') {
|
return hasPermission(["tms:tmsDispatchOrder:add"])
|
} else if (key == 'delBtn') {
|
return hasPermission(["tms:tmsDispatchOrder:remove"]) && row?.status == 0
|
} else if (key == 'editBtn') {
|
return hasPermission(["tms:tmsDispatchOrder:edit"]) && [0, 1].includes(row?.status)
|
} else if (key == 'viewBtn') {
|
return hasPermission(["tms:tmsDispatchOrder:query"])
|
} else {
|
return true;
|
}
|
};
|
const data = reactive({
|
form: <TmsDispatchOrderI>{},
|
queryParams: <TmsDispatchOrderI & PageQueryInterface>{},
|
page: <PagesInterface>{
|
pageSize: 10,
|
total: 0,
|
currentPage: 1,
|
},
|
selectionList: [],
|
optionType: '',
|
boxTableData: <any>[],
|
boxForm: <any>{},
|
boxFormOption: <any>{},
|
boxTableOption: <any>{},
|
title: '',
|
open: false,
|
open2: false,
|
goodsTableData: <any>[],
|
selectionList2: <any>[],
|
goodsForm: <any>{},
|
open3: false,
|
actualForm: <any>{},
|
isCustoms:<any> -1,
|
isLoad: -1,
|
})
|
const {
|
queryParams, form, page, selectionList, open3,
|
boxTableData, optionType,
|
boxFormOption, boxForm, boxTableOption, title, open, open2,
|
goodsTableData, goodsForm, actualForm, selectionList2,isCustoms,isLoad
|
} = toRefs(data);
|
const option = ref({
|
pageKey: 'TmsDispatchOrder',
|
rowKey: 'id',
|
labelWidth: 130,
|
searchSpan: 6,
|
searchLabelWidth: 150,
|
menuWidth: 300,
|
group: [
|
{
|
label: '基本信息',
|
prop: 'jbxx',
|
column: {
|
|
quoteDetailId: {
|
label: '运输线路', span: 24,
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "请选择运输路线", trigger: "change"
|
}
|
],
|
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,
|
startRegionCode: active.startRegionCode,
|
endRegionCode: active.endRegionCode,
|
projectId: active.projectId,
|
projectName: active.projectName,
|
customerId: active.customerId,
|
customerName: active.customerFullName,
|
customerCode: active.customerCode,
|
contractId: active.contractId,
|
contractName: active.contractName,
|
requiredVehicleTypes: active.vehicleType,
|
quotePlanId: active.quotePlanId,
|
});
|
}
|
},
|
children: {
|
border: true,
|
searchMenuSpan: 5,
|
column: {
|
transportRoute: {
|
label: '运输路线', minWidth: 130,
|
search: true,
|
},
|
customerFullName: {
|
label: '客户全称', minWidth: 120,
|
search: true,
|
},
|
projectName: {
|
label: '关联项目',
|
display: false, minWidth: 150,
|
search: true,
|
},
|
|
contractName: {
|
label: '关联合同',
|
display: false, minWidth: 150,
|
search: true,
|
},
|
vehicleType: {
|
label: '车型', dataType: 'string',
|
type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', minWidth: 150,
|
hide: false,
|
search: true,
|
},
|
},
|
|
},
|
props: {
|
label: 'transportRoute',
|
value: 'quoteDetailId'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTransportRouteVi(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTransportRouteVi({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
},
|
customerName: {
|
label: '客户名称',
|
display: true, disabled: true
|
},
|
projectName: {
|
label: '关联项目',
|
display: true, disabled: true
|
},
|
// customerCode: {
|
// label: '客户编码',
|
// display: true,disabled:true
|
// },
|
contractName: {
|
label: '关联合同',
|
display: true, disabled: true
|
},
|
requiredVehicleTypes: {
|
label: '下单车型', disabled: true,
|
display: true, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
|
rules: [
|
{
|
required: true,
|
message: "下单车型不能为空", trigger: "blur"
|
}
|
],
|
},
|
orderType: {
|
label: '订单类型',
|
display: true,
|
type: 'select', dataType: 'string',
|
dicUrl: '/system/dict/data/type/order_type',
|
rules: [
|
{
|
required: true,
|
message: "订单类型不能为空", trigger: "change"
|
}
|
],
|
change: ({value}: any) => {
|
option.value.group.forEach((item: any) => {
|
if (item.prop == 'pcxx') {
|
item.column.shipperId.rules.forEach((cItem: any) => {
|
cItem.required = !(value == 1);
|
});
|
item.column.receiverId.rules.forEach((cItem: any) => {
|
cItem.required = !(value == 1);
|
});
|
}
|
})
|
}
|
},
|
// signType: {
|
// label: '签收类型',
|
// display: true,
|
// type: 'select', dataType: 'string',
|
// dicUrl: '/system/dict/data/type/sign_type',
|
// rules: [
|
// {
|
// required: true,
|
// message: "签收类型不能为空", trigger: "change"
|
// }
|
// ],
|
// },
|
|
// loadingServiceProviderId: {
|
// label: '装货服务商',
|
// display: true,
|
// rules: [
|
// {
|
// required: true,
|
// message: "装货服务商不能为空", trigger: "change"
|
// }
|
// ],
|
// change: (val: any) => {
|
// const table = crudRef.value?.getPropRef?.('loadingServiceProviderId')?.$refs?.temp;
|
// if (!table) return;
|
// let active = table.active;
|
// if (Array.isArray(active)) active = active[0];
|
// if (active) {
|
// Object.assign(form.value, {
|
// loadingServiceProviderId: active.id,
|
// loadingServiceProviderName: active.serviceShortName,
|
// });
|
// }
|
// },
|
// type: 'table', suffixIcon: 'search',
|
// children: {
|
// border: true,
|
// searchLabelWidth: 100,
|
// searchMenuSpan: 5,
|
// column: {
|
// serviceCode: {
|
// label: '服务商编码', minWidth: 130,
|
// search: true,
|
// },
|
// serviceShortName: {
|
// label: '服务商简称', minWidth: 120,
|
// search: true,
|
// },
|
// serviceType: {
|
// label: '服务类型', multiple: true,
|
// type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
|
// minWidth: 150,
|
// },
|
// contactName: {
|
// label: '联系人姓名', minWidth: 120,
|
// },
|
// },
|
//
|
// },
|
// props: {
|
// label: 'serviceShortName',
|
// value: 'id'
|
// },
|
// onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
// if (value) {
|
// let id = value;
|
// if (Array.isArray(value)) {
|
// id = value[0]
|
// }
|
// getTmsLoadingServiceProvider(id).then(res => {
|
// return callback(res.data || {})
|
// })
|
// } else {
|
// listTmsLoadingServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
|
// return callback({
|
// total: res.total,
|
// data: res.rows || [],
|
// })
|
// })
|
// }
|
//
|
// }
|
//
|
// },
|
// customsServiceProviderId: {
|
// label: '报关服务商',
|
// display: true,
|
// rules: [
|
// {
|
// required: true,
|
// message: "报关服务商不能为空", trigger: "change"
|
// }
|
// ],
|
// change: (val: any) => {
|
// const table = crudRef.value?.getPropRef?.('customsServiceProviderId')?.$refs?.temp;
|
// if (!table) return;
|
// let active = table.active;
|
// if (Array.isArray(active)) active = active[0];
|
// if (active) {
|
// Object.assign(form.value, {
|
// customsServiceProviderId: active.id,
|
// customsServiceProviderName: active.serviceShortName,
|
// });
|
// }
|
// },
|
// type: 'table', suffixIcon: 'search',
|
// children: {
|
// border: true,
|
// searchLabelWidth: 100,
|
// searchMenuSpan: 5,
|
// column: {
|
// serviceCode: {
|
// label: '服务商编码', minWidth: 130,
|
// search: true,
|
// },
|
// serviceShortName: {
|
// label: '服务商简称', minWidth: 120,
|
// search: true,
|
// },
|
// serviceType: {
|
// label: '服务类型', multiple: true,
|
// type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
|
// minWidth: 150,
|
// },
|
// contactName: {
|
// label: '联系人姓名', minWidth: 120,
|
// },
|
// },
|
//
|
// },
|
// props: {
|
// label: 'serviceShortName',
|
// value: 'id'
|
// },
|
// onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
// if (value) {
|
// let id = value;
|
// if (Array.isArray(value)) {
|
// id = value[0]
|
// }
|
// getTmsCustomsServiceProvider(id).then(res => {
|
// return callback(res.data || {})
|
// })
|
// } else {
|
// listTmsCustomsServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
|
// return callback({
|
// total: res.total,
|
// data: res.rows || [],
|
// })
|
// })
|
// }
|
//
|
// }
|
// },
|
isCustoms: {
|
label: '委托报关',
|
display: true,
|
type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
|
rules: [
|
{
|
required: true,
|
message: "委托报关不能为空", trigger: "blur"
|
}
|
],
|
},
|
isLoad: {
|
label: '委托装卸',
|
display: true,
|
type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
|
rules: [
|
{
|
required: true,
|
message: "委托装卸不能为空", trigger: "blur"
|
}
|
],
|
},
|
isUrgent: {
|
label: '是否紧急',value: '1',
|
display: true,
|
type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
|
rules: [
|
{
|
required: true,
|
message: "是否紧急不能为空", trigger: "blur"
|
}
|
],
|
},
|
// transportType: {
|
// label: '运输方式',
|
// display: true, type: 'select', dicUrl: '/system/dict/data/type/dispatch_transport_mode', dataType: 'string',
|
//
|
// },
|
// loadMethod: {
|
// label: '配载方式',
|
// display: true, type: 'select', dicUrl: '/system/dict/data/type/load_method', dataType: 'string',
|
// },
|
latestDeparture: {
|
label: '要求最晚出发时间',
|
type: 'datetime', // 改为 datetime 类型
|
format: 'YYYY-MM-DD HH:mm:ss', labelWidth: 150,
|
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "要求最晚出发时间不能为空", trigger: "blur"
|
}
|
],
|
},
|
latestArrival: {
|
label: '要求最晚到达时间', labelWidth: 150,
|
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"
|
}
|
],
|
},
|
|
|
}
|
},
|
{
|
label: '派车信息',
|
prop: 'pcxx',
|
column: {
|
operationMode: {
|
label: '是否是自营车队', value: 0,
|
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_number_is',
|
rules: [
|
{
|
required: true,
|
message: "是否是自营车队不能为空", trigger: "change"
|
}
|
],
|
change: ({value}: any) => {
|
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: '车辆服务商',
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "车辆服务商不能为空", trigger: "change"
|
}
|
],
|
change: (val: any) => {
|
const table = crudRef.value?.getPropRef?.('vehicleProviderId')?.$refs?.temp;
|
if (!table) return;
|
let active = table.active;
|
if (Array.isArray(active)) active = active[0];
|
if (active) {
|
Object.assign(form.value, {
|
vehicleProviderId: active.id,
|
vehicleProviderName: active.serviceShortName,
|
});
|
}
|
},
|
type: 'table', suffixIcon: 'search',dataType: 'string',
|
children: {
|
border: true,
|
searchLabelWidth: 100,
|
searchMenuSpan: 5,
|
column: {
|
serviceCode: {
|
label: '服务商编码', minWidth: 130,
|
search: true,
|
},
|
serviceShortName: {
|
label: '服务商简称', minWidth: 120,
|
search: true,
|
},
|
serviceType: {
|
label: '服务类型', multiple: true,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
|
minWidth: 150,
|
},
|
isTransport: {
|
label: '是否运输服务商',
|
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_number_is',
|
minWidth: 150,
|
},
|
isStorage: {
|
label: '是否仓储服务商',
|
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_number_is',
|
minWidth: 150,
|
},
|
isExpress: {
|
label: '是否快递服务商',
|
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_number_is',
|
minWidth: 150,
|
},
|
contactName: {
|
label: '联系人姓名', minWidth: 120,
|
},
|
},
|
|
},
|
props: {
|
label: 'serviceShortName',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsServiceProvider(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
|
},
|
mainDriverId: {
|
label: '主驾驶员',
|
display: true, dataType: 'string',
|
rules: [
|
{
|
required: true,
|
message: "主驾驶员不能为空", trigger: "change"
|
}
|
],
|
change: (val: any) => {
|
const table = crudRef.value?.getPropRef?.('mainDriverId')?.$refs?.temp;
|
if (!table) return;
|
let active = table.active;
|
if (Array.isArray(active)) active = active[0];
|
if (active) {
|
Object.assign(form.value, {
|
mainDriverId: active.id,
|
mainDriverName: active.driverName,
|
});
|
}
|
},
|
type: 'table', suffixIcon: 'search',
|
children: {
|
border: true,
|
searchMenuSpan: 5,
|
column: {
|
vehicleProviderName: {
|
label: '车辆服务商', minWidth: 130,
|
search: true,
|
},
|
driverName: {
|
label: '驾驶员姓名', minWidth: 120,
|
search: true,
|
},
|
licenseType: {
|
label: '准驾车型', minWidth: 120,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type',
|
search: true, multiple: true,
|
},
|
},
|
|
},
|
props: {
|
label: 'driverName',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsDriver(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsDriver({
|
pageSize: page.pageSize,
|
pageNum: page.currentPage, ...data,
|
carrierType: form.value.operationMode,vehicleProviderId:form.value.vehicleProviderId
|
}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
|
|
},
|
assistantDriverId: {
|
label: '副驾驶员',
|
display: true, dataType: 'string',
|
change: (val: any) => {
|
const table = crudRef.value?.getPropRef?.('assistantDriverId')?.$refs?.temp;
|
if (!table) return;
|
let active = table.active;
|
if (Array.isArray(active)) active = active[0];
|
if (active) {
|
Object.assign(form.value, {
|
assistantDriverId: active.id,
|
assistantDriverName: active.driverName,
|
});
|
}
|
},
|
type: 'table', suffixIcon: 'search',
|
children: {
|
border: true,
|
searchMenuSpan: 5,
|
column: {
|
vehicleProviderName: {
|
label: '车辆服务商', minWidth: 130,
|
search: true,
|
},
|
driverName: {
|
label: '驾驶员姓名', minWidth: 120,
|
search: true,
|
},
|
licenseType: {
|
label: '准驾车型', minWidth: 120, multiple: true,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type',
|
search: true,
|
},
|
},
|
|
},
|
props: {
|
label: 'driverName',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsDriver(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsDriver({
|
pageSize: page.pageSize,
|
pageNum: page.currentPage, ...data,vehicleProviderId:form.value.vehicleProviderId,
|
carrierType: form.value.operationMode
|
}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
|
},
|
vehicleId: {
|
label: '车牌号', dataType: 'string',
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "车牌号不能为空", trigger: "change"
|
}
|
],
|
change: (val: any) => {
|
const table = crudRef.value?.getPropRef?.('vehicleId')?.$refs?.temp;
|
if (!table) return;
|
let active = table.active;
|
if (Array.isArray(active)) active = active[0];
|
if (active) {
|
Object.assign(form.value, {
|
vehicleId: active.id,
|
licensePlate: active.licensePlate,
|
actualVehicleType: active.vehicleType,
|
});
|
}
|
},
|
type: 'table', suffixIcon: 'search',
|
children: {
|
border: true,
|
searchLabelWidth: 100,
|
searchMenuSpan: 5,
|
column: {
|
serviceProviderName: {
|
label: '车辆服务商', minWidth: 130,
|
search: true,
|
},
|
vehicleType: {
|
label: '车辆类型', minWidth: 120,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/vehicle_type',
|
|
search: true,
|
},
|
internalCode: {
|
label: '车辆内部编码', minWidth: 120,
|
search: true,
|
},
|
licensePlate: {
|
label: '车牌号', minWidth: 120,
|
search: true,
|
},
|
licenseHk: {
|
label: '香港牌照', minWidth: 120,
|
search: true,
|
},
|
licenseMo: {
|
label: '澳门牌照', minWidth: 120,
|
search: true,
|
},
|
},
|
|
},
|
props: {
|
label: 'licensePlate',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsVehicle(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsVehicle({
|
pageSize: page.pageSize,
|
pageNum: page.currentPage, ...data,
|
carrierType: form.value.operationMode,serviceProviderId:form.value.vehicleProviderId
|
}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
|
},
|
actualVehicleType: {
|
label: '派出车型',
|
display: true, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
|
},
|
shipperId: {
|
label: '装货点', dataType: 'string',
|
display: true,
|
|
rules: [
|
{
|
required: false,
|
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',
|
rules: [
|
{
|
required: true,
|
message: "卸货点不能为空", trigger: "change"
|
}
|
],
|
},
|
receiverRegionLabel: {
|
label: '卸货点行政区域',
|
display: true, disabled: true
|
},
|
receiverAddress: {
|
label: '卸货点详细地址',
|
display: true, disabled: true
|
},
|
receiverMobile: {
|
label: '卸货点联系方式',
|
display: true, disabled: true
|
},
|
containerNo: {
|
label: '集装箱号',
|
display: false,
|
},
|
containerId: {
|
label: '关联集装箱信息',
|
display: true,
|
change: (val: any) => {
|
const table = crudRef.value?.getPropRef?.('containerId')?.$refs?.temp;
|
if (!table) return;
|
let active = table.active;
|
if (Array.isArray(active)) active = active[0];
|
if (active) {
|
Object.assign(form.value, {
|
containerId: active.id,
|
containerNo: active.containerCode,
|
});
|
}
|
},
|
type: 'table', suffixIcon: 'search',dataType: 'string',
|
children: {
|
border: true,
|
searchLabelWidth: 100,
|
searchMenuSpan: 5,
|
column: {
|
containerCode: {
|
label: '集装箱号', minWidth: 130,
|
search: true,
|
},
|
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: {
|
label: '箱型',
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/container_type',
|
display: false,
|
hide: false, minWidth: 150,
|
search: true,
|
},
|
},
|
|
},
|
props: {
|
label: 'containerCode',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsContainer(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsContainer({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
|
},
|
shelfCode: {
|
label: '托板号',
|
display: false,
|
},
|
shelfId: {
|
label: '托板号',
|
display: true,
|
change: (val: any) => {
|
const table = crudRef.value?.getPropRef?.('shelfId')?.$refs?.temp;
|
if (!table) return;
|
let active = table.active;
|
if (Array.isArray(active)) active = active[0];
|
if (active) {
|
Object.assign(form.value, {
|
shelfId: active.id,
|
shelfCode: active.shelfCode,
|
});
|
}
|
},
|
type: 'table', suffixIcon: 'search',dataType: 'string',
|
children: {
|
border: true,
|
searchLabelWidth: 100,
|
searchMenuSpan: 5,
|
column: {
|
shelfCode: {
|
label: '托架号', minWidth: 130,
|
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: {
|
label: '适配集装箱类型', minWidth: 120,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/container_type',
|
search: true,
|
},
|
},
|
|
},
|
props: {
|
label: 'shelfCode',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsShelf(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsShelf({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
|
},
|
remark: {
|
label: '备注', span: 24,
|
type: 'textarea', minRows: 3, maxRows: 5,
|
display: true,
|
},
|
},
|
},
|
|
// {
|
// label: '运输要求信息',
|
// prop: 'ysyqxx',
|
// column: {
|
// earliestDeparture: {
|
// label: '要求最早出发时间',
|
// type: 'datetime', // 改为 datetime 类型
|
// format: 'YYYY-MM-DD HH:mm:ss',
|
// valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
// display: true,
|
// },
|
// latestDeparture: {
|
// label: '要求最晚出发时间',
|
// type: 'datetime', // 改为 datetime 类型
|
// format: 'YYYY-MM-DD HH:mm:ss',
|
// valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
// display: true,
|
// },
|
// earliestArrival: {
|
// label: '要求最早到达时间',
|
// type: 'datetime', // 改为 datetime 类型
|
// format: 'YYYY-MM-DD HH:mm:ss',
|
// valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
// display: true,
|
// },
|
//
|
// }
|
// },
|
// {
|
// label: '车辆信息',
|
// prop: 'clxx',
|
// column: {
|
// emptyMileage: {
|
// label: '空载里程', append: 'Km',
|
// display: true,
|
// },
|
// emptyFuel: {
|
// label: '空载油耗', append: 'L',
|
// display: true,
|
// },
|
// loadedMileage: {
|
// label: '重载里程', append: 'Km',
|
// display: true,
|
// },
|
// loadedFuel: {
|
// label: '重载油耗', append: 'L',
|
// display: true,
|
// },
|
// }
|
// },
|
// {
|
// label: '其他信息',
|
// prop: 'qtyxx',
|
// column: {
|
// shiftNo: {
|
// label: '班次号',
|
// display: true,
|
// },
|
// lineNo: {
|
// label: '线路号',
|
// display: true,
|
// },
|
// remark: {
|
// label: '备注', span: 24,
|
// type: 'textarea', minRows: 3, maxRows: 5,
|
// display: true,
|
// },
|
// }
|
// }
|
],
|
column: {
|
|
dispatchNo: {
|
label: '调度单号', minWidth: 120,
|
display: false,
|
search: true,
|
},
|
customerName: {
|
label: '客户',
|
display: false, minWidth: 120,
|
search: true,
|
},
|
|
projectName: {
|
label: '项目名称',
|
display: false, minWidth: 120,
|
search: true,
|
},
|
contractName: {
|
label: '关联合同名称', minWidth: 120,
|
display: false,
|
search: true,
|
},
|
orderType: {
|
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: '运输线路',
|
display: false,
|
search: true, minWidth: 180, overHidden: true
|
},
|
|
|
vehicleProviderName: {
|
label: '车辆服务商名称', minWidth: 150,
|
display: false,
|
search: true,
|
},
|
|
loadingServiceProviderName: {
|
label: '装货服务商名称', minWidth: 150,
|
display: false,
|
search: true,
|
},
|
customsServiceProviderName: {
|
label: '报关服务商名称', minWidth: 150,
|
display: false,
|
search: true,
|
},
|
isUrgent: {
|
label: '是否紧急否',
|
display: false, minWidth: 100,
|
search: true,
|
type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
|
|
},
|
mainDriverName: {
|
label: '主驾驶员',
|
display: false, minWidth: 120,
|
search: true,
|
},
|
|
// requiredVehicleTypes: {
|
// label: '要求运输工具类型',
|
// display: false,
|
// search: true,
|
// },
|
actualVehicleType: {
|
label: '实际运输工具类型', minWidth: 130,
|
display: false,
|
search: true,
|
type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
|
|
},
|
|
licensePlate: {
|
label: '车牌号', minWidth: 120,
|
display: false,
|
search: true,
|
},
|
|
shipperName: {
|
label: '装货点名称',
|
display: false, minWidth: 120,
|
search: true,
|
},
|
receiverName: {
|
label: '卸货点名称', minWidth: 120,
|
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',
|
|
},
|
|
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,
|
rules: [
|
{
|
required: true,
|
message: "状态不能为空", trigger: "change"
|
}
|
],
|
},
|
|
updateBy: {
|
label: '更新人', minWidth: 150,
|
addDisplay: false,
|
editDisplay: false,
|
viewDisplay: false,
|
hide: false,
|
search: false,
|
},
|
updateTime: {
|
label: '更新时间', minWidth: 180,
|
addDisplay: false,
|
editDisplay: false,
|
viewDisplay: false,
|
hide: false,
|
search: false,
|
},
|
updateTimeRange: {
|
label: '更新时间', display: false, search: true, searchRange: true, type: 'date',
|
format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
|
valueFormat: 'YYYY-MM-DD',
|
},
|
confirmTimeRange: {
|
label: '确认时间', display: false, search: true, searchRange: true, type: 'date',
|
format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
|
valueFormat: 'YYYY-MM-DD',
|
},
|
okTimeRange: {
|
label: '完成时间', display: false, search: true, searchRange: true, type: 'date',
|
format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
|
valueFormat: 'YYYY-MM-DD',
|
},
|
|
}
|
})
|
|
const itineraryOption = ref({
|
menuBtn: false,
|
labelWidth: 120,
|
column: {
|
|
driverName: {
|
label: '主驾驶员名称',
|
display: true, disabled: true,
|
},
|
vehicleNumber: {
|
label: '车牌号码',
|
display: true, disabled: true,
|
|
},
|
tripType: {
|
label: '行程类型',
|
display: true,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/trip_type',
|
rules: [
|
{
|
required: true,
|
message: "行程类型不能为空", trigger: "change"
|
}
|
],
|
},
|
tripTime: {
|
label: '时间',
|
type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "时间不能为空", trigger: "change"
|
}
|
],
|
},
|
odometer: {
|
label: '仪表里程',
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "仪表里程不能为空", trigger: "change"
|
}
|
],
|
},
|
address: {
|
label: '具体地址',
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "具体地址不能为空", trigger: "change"
|
}
|
],
|
},
|
voucherUrl: {
|
label: '行程凭证',
|
display: true,
|
span: 24, dataType: 'string',
|
type: 'upload',
|
action: '/common/upload2',
|
|
},
|
dataSource: {
|
label: '数据来源',
|
display: false,
|
value: 0
|
},
|
}
|
})
|
|
const itineraryTableOption = ref({
|
menu: false,
|
addBtn: false,
|
header: false, selection: false,
|
title: '历史行程',
|
column: {
|
dataSource: {
|
label: '数据来源',
|
display: false,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/data_source',
|
|
},
|
driverName: {
|
label: '主驾驶员名称',
|
display: true, disabled: true,
|
},
|
vehicleNumber: {
|
label: '车牌号码',
|
display: true, disabled: true,
|
|
},
|
tripType: {
|
label: '行程类型',
|
display: true,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/trip_type',
|
|
},
|
tripTime: {
|
label: '时间',
|
type: 'date', valueFormat: 'YYYY-MM-DD',
|
display: true,
|
},
|
odometer: {
|
label: '仪表里程',
|
display: true,
|
},
|
address: {
|
label: '具体地址',
|
display: true,
|
},
|
voucherUrl: {
|
label: '行程凭证',
|
display: true,
|
span: 24, dataType: 'string',
|
type: 'upload',
|
action: '/common/upload2',
|
|
},
|
|
}
|
})
|
|
const financeOption = ref({
|
menuBtn: false,
|
labelWidth: 120,
|
column: {
|
feeType: {
|
label: '费用类型',
|
display: true,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/fee_type',
|
rules: [
|
{
|
required: true,
|
message: "费用类型不能为空", trigger: "change"
|
}
|
],
|
},
|
actualFeeAmount: {
|
label: '费用金额',
|
type: 'number',
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "费用金额不能为空", trigger: "change"
|
}
|
],
|
},
|
voucherUrl: {
|
label: '行程凭证',
|
display: true,
|
span: 24,
|
accept: 'string', dataType: 'string',
|
type: 'upload',
|
action: '/common/upload2',
|
|
},
|
dataSource: {
|
label: '数据来源',
|
display: false,
|
value: 0
|
},
|
}
|
})
|
|
const financeTableOption = ref({
|
menu: false,
|
addBtn: false,
|
header: false, selection: false,
|
title: '历史垫付费用',
|
column: {
|
dataSource: {
|
label: '数据来源',
|
display: false,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/data_source',
|
|
},
|
createBy: {
|
label: '添加人',
|
display: true, disabled: true,
|
},
|
feeCreateTime: {
|
label: '上传时间',
|
display: true, disabled: true,
|
|
},
|
feeType: {
|
label: '费用类型',
|
display: true,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/fee_type',
|
|
},
|
actualFeeAmount: {
|
label: '金额',
|
display: true,
|
},
|
feeVoucherUrl: {
|
label: '费用凭证',
|
display: true,
|
span: 24,
|
accept: 'string', dataType: 'object',
|
type: 'upload',
|
action: '/common/upload2',
|
|
},
|
|
}
|
})
|
|
const generateTableOption = ref({
|
menu: false,
|
addBtn: false,
|
header: false, selection: false,
|
column: {
|
collectionPlanName: {
|
label: '匹配应收方案名称', minWidth: 160,
|
},
|
accountsReceivableStatus: {
|
label: '应收费用生成状态', minWidth: 160,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/accounts_status',
|
},
|
paymentPlanName: {
|
label: '匹配应付方案名称', minWidth: 160,
|
},
|
|
accountsPayableStatus: {
|
label: '应付费用生成状态', minWidth: 160,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/accounts_status',
|
},
|
dispatchNo: {
|
label: '调度单号', minWidth: 120,
|
display: false,
|
},
|
customerName: {
|
label: '客户',
|
display: false, minWidth: 120,
|
},
|
vehicleProviderName: {
|
label: '车辆服务商名称', minWidth: 150,
|
display: false,
|
},
|
shipperName: {
|
label: '装货点名称',
|
display: false, minWidth: 120,
|
},
|
receiverName: {
|
label: '卸货点名称', minWidth: 120,
|
display: false,
|
},
|
transportLine: {
|
label: '运输线路',
|
display: false, minWidth: 180, overHidden: true
|
},
|
actualVehicleType: {
|
label: '车型', minWidth: 130,
|
display: false,
|
type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
|
|
},
|
licensePlate: {
|
label: '车牌号', minWidth: 120,
|
display: false,
|
},
|
|
}
|
})
|
const connectHangOption = ref({
|
menuBtn: false,
|
labelWidth: 120,
|
column: {
|
vehicleId: {
|
label: '接挂车辆号码',
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "接挂车辆号码不能为空", trigger: "change"
|
}
|
],
|
type: 'table', suffixIcon: 'search', dataType: 'string',
|
children: {
|
border: true,
|
searchLabelWidth: 100,
|
searchMenuSpan: 5,
|
column: {
|
serviceProviderName: {
|
label: '车辆服务商', minWidth: 130,
|
search: true,
|
},
|
vehicleType: {
|
label: '车辆类型', minWidth: 120,
|
search: true,
|
},
|
internalCode: {
|
label: '车辆内部编码', minWidth: 120,
|
search: true,
|
},
|
licensePlate: {
|
label: '车牌号', minWidth: 120,
|
search: true,
|
},
|
licenseHk: {
|
label: '香港牌照', minWidth: 120,
|
search: true,
|
},
|
licenseMo: {
|
label: '澳门牌照', minWidth: 120,
|
search: true,
|
},
|
},
|
|
},
|
props: {
|
label: 'licensePlate',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsVehicle(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsVehicle({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
},
|
driverId: {
|
label: '接挂司机',
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "接挂司机不能为空", trigger: "change"
|
}
|
],
|
type: 'table', suffixIcon: 'search', dataType: 'string',
|
children: {
|
border: true,
|
searchMenuSpan: 5,
|
column: {
|
vehicleProviderName: {
|
label: '车辆服务商', minWidth: 130,
|
search: true,
|
},
|
driverName: {
|
label: '驾驶员姓名', minWidth: 120,
|
search: true,
|
},
|
licenseType: {
|
label: '准驾车型', minWidth: 120,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type',
|
search: true, multiple: true,
|
},
|
},
|
|
},
|
props: {
|
label: 'driverName',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsDriver(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsDriver({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
},
|
|
}
|
})
|
|
|
const customsOption = ref({
|
menuBtn: false,
|
labelWidth: 120,
|
column: {
|
customsServiceProviderId: {
|
label: '报关服务商', span:24,
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "报关服务商不能为空", trigger: "change"
|
}
|
],
|
type: 'table', suffixIcon: 'search', dataType: 'string',
|
change: (val: any) => {
|
const table = boxFormRef.value?.getPropRef?.('customsServiceProviderId')?.$refs?.temp;
|
if (!table) return;
|
let active = table.active;
|
if (Array.isArray(active)) active = active[0];
|
if (active) {
|
Object.assign(form.value, {
|
customsServiceProviderId: active.id,
|
customsServiceProviderName: active.serviceShortName,
|
});
|
}
|
},
|
children: {
|
border: true,
|
searchLabelWidth: 100,
|
searchMenuSpan: 5,
|
column:{
|
serviceCode: {
|
label: '服务商编码',
|
search: true,
|
},
|
serviceShortName: {
|
label: '服务商简称',minWidth:150,
|
search: true,
|
},
|
serviceName: {
|
label: '服务商全称',search: true,
|
},
|
serviceType: {
|
label: '服务类型',minWidth:150,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
|
multiple:true,
|
search: true,
|
},
|
}
|
},
|
props: {
|
label: 'serviceShortName',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsCustomsServiceProvider(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsCustomsServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
},
|
}
|
})
|
|
|
const loadingOption = ref({
|
menuBtn: false,
|
labelWidth: 120,
|
column: {
|
loadingServiceProviderId: {
|
label: '装卸服务商',span:24,
|
display: true,
|
rules: [
|
{
|
required: true,
|
message: "装卸服务商不能为空", trigger: "change"
|
}
|
],
|
type: 'table', suffixIcon: 'search', dataType: 'string',
|
change: (val: any) => {
|
const table = boxFormRef.value?.getPropRef?.('loadingServiceProviderId')?.$refs?.temp;
|
if (!table) return;
|
let active = table.active;
|
if (Array.isArray(active)) active = active[0];
|
if (active) {
|
Object.assign(form.value, {
|
loadingServiceProviderId: active.id,
|
loadingServiceProviderName: active.serviceShortName,
|
});
|
}
|
},
|
children: {
|
border: true,
|
searchLabelWidth: 100,
|
searchMenuSpan: 5,
|
column:{
|
serviceCode: {
|
label: '服务商编码',
|
search: true,
|
},
|
serviceShortName: {
|
label: '服务商简称',minWidth:150,
|
search: true,
|
},
|
serviceName: {
|
label: '服务商全称',search: true,
|
},
|
serviceType: {
|
label: '服务类型',minWidth:150,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
|
multiple:true,
|
search: true,
|
},
|
}
|
},
|
props: {
|
label: 'serviceShortName',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsLoadingServiceProvider(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsLoadingServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
}
|
},
|
}
|
})
|
|
|
|
|
const goodsTableOption = ref({
|
pageKey: 'TmsGoodsDetail',
|
rowKey: 'id',
|
selection: false,
|
viewBtn: false,
|
column: {
|
productId: {
|
label: '货品名称', hide: true,
|
display: true, minWidth: 120, type: 'table', suffixIcon: 'search', dataType: 'string',
|
children: {
|
border: true,
|
searchLabelWidth: 100,
|
searchMenuSpan: 5,
|
column: {
|
productCode: {
|
label: '货品编码', minWidth: 130,
|
search: true,
|
},
|
productName: {
|
label: '货品名称', minWidth: 120,
|
search: true,
|
},
|
grossWeight: {
|
label: '货品重量', minWidth: 120,
|
search: true,
|
},
|
netWeight: {
|
label: '货品净重', minWidth: 120,
|
search: true,
|
},
|
volume: {
|
label: '货品体积', minWidth: 120,
|
search: true,
|
},
|
productType: {
|
label: '货品类型', minWidth: 120,
|
search: true,
|
},
|
},
|
|
},
|
props: {
|
label: 'productName',
|
value: 'id'
|
},
|
onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsProductInfo(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
listTmsProductInfo({
|
pageSize: page.pageSize,
|
pageNum: page.currentPage,
|
...data,
|
// customerId:form.value.customerId
|
}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
|
},
|
change: (val: any) => {
|
const table = goodsCrudRef.value?.getPropRef?.('productId')?.$refs?.temp;
|
if (!table) return;
|
let active = table.active;
|
if (Array.isArray(active)) active = active[0];
|
if (active) {
|
Object.assign(goodsForm.value, {
|
productId: active.id,
|
productName: active.productName,
|
productType: active.productType,
|
grossWeight: active.grossWeight,
|
netWeight: active.netWeight,
|
volume: active.volume,
|
packUnit: active.packUnit,
|
});
|
|
goodsForm.value.sumWeight = active.grossWeight || 0 * goodsForm.value.quantity;
|
goodsForm.value.sumNetWeight = active.netWeight || 0 * goodsForm.value.quantity;
|
goodsForm.value.sumVolume = active.volume || 0 * goodsForm.value.quantity;
|
|
}
|
},
|
},
|
productName: {
|
label: '货品名称', minWidth: 120,
|
display: false,
|
hide: false,
|
},
|
quantity: {
|
label: '数量',
|
addDisplay: true, minWidth: 100,
|
editDisplay: true,
|
viewDisplay: true,
|
value: 1,
|
change: () => {
|
goodsForm.value.sumWeight = goodsForm.value.grossWeight || 0 * goodsForm.value.quantity;
|
goodsForm.value.sumNetWeight = goodsForm.value.netWeight || 0 * goodsForm.value.quantity;
|
goodsForm.value.sumVolume = goodsForm.value.volume || 0 * goodsForm.value.quantity;
|
}
|
},
|
sumWeight: {
|
label: '重量(kg)',
|
addDisplay: true, minWidth: 100, append: 'Kg',
|
editDisplay: true,
|
viewDisplay: true,
|
},
|
sumNetWeight: {
|
label: '净重(kg)',
|
addDisplay: true,
|
editDisplay: true, minWidth: 100, append: 'Kg',
|
viewDisplay: true,
|
},
|
sumVolume: {
|
label: '体积(m³)',
|
addDisplay: true,
|
editDisplay: true, minWidth: 100, append: 'm³',
|
viewDisplay: true,
|
},
|
|
|
loosePieces: {
|
label: '散件数',
|
addDisplay: true,
|
editDisplay: true, minWidth: 100,
|
viewDisplay: true,
|
},
|
|
fullContainers: {
|
label: '整箱数',
|
addDisplay: true,
|
editDisplay: true, minWidth: 100,
|
viewDisplay: true,
|
},
|
containerNo: {
|
label: '集装箱号',
|
addDisplay: true,
|
editDisplay: true, minWidth: 100,
|
viewDisplay: true,
|
},
|
palletCount: {
|
label: '托数',
|
addDisplay: true, minWidth: 100,
|
editDisplay: true,
|
viewDisplay: true,
|
}
|
}
|
})
|
|
const actualFormOption = ref({
|
menuBtn: false, labelWidth: 140,
|
column: {
|
departureAddress: {
|
label: '实际出发地地址',
|
span: 24,
|
},
|
destinationAddress: {
|
label: '实际目的地地址',
|
span: 24,
|
},
|
actualLoadStart: {
|
label: '实际装车开始时间',
|
type: 'datetime', // 改为 datetime 类型
|
format: 'YYYY-MM-DD HH:mm:ss',
|
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
display: true,
|
},
|
actualUnloadEnd: {
|
label: '实际卸车完成时间',
|
type: 'datetime', // 改为 datetime 类型
|
format: 'YYYY-MM-DD HH:mm:ss',
|
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
display: true,
|
},
|
actualDeparture: {
|
label: '实际出发时间',
|
type: 'datetime', // 改为 datetime 类型
|
format: 'YYYY-MM-DD HH:mm:ss',
|
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
display: true,
|
},
|
actualArrival: {
|
label: '实际到达时间',
|
type: 'datetime', // 改为 datetime 类型
|
format: 'YYYY-MM-DD HH:mm:ss',
|
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
display: true,
|
},
|
actualQuantity: {
|
label: '实发数量', type: 'number',
|
},
|
actualWeight: {
|
label: '实发重量', type: 'number',
|
},
|
actualVolume: {
|
label: '实发体积', type: 'number',
|
},
|
reweighWeight: {
|
label: '复磅重量', type: 'number',
|
},
|
electronicLock: {
|
label: '电子锁',
|
}
|
}
|
})
|
|
|
const itemsTableOption = ref({
|
pageKey: 'itemsTable',
|
rowKey: 'rowKey',
|
header: false,
|
addBtn: false, menu: false,
|
column: {
|
feeType: {
|
label: '费用名称',
|
},
|
unit: {
|
label: '*计量单位',
|
},
|
price: {
|
label: '*计费金额',
|
},
|
currency: {
|
label: '币制',
|
},
|
count: {
|
label: '计费数量', minWidth: 130,
|
},
|
sum: {
|
label: '总金额',
|
}
|
}
|
})
|
|
const consignorOption = ref({
|
border: true,
|
searchLabelWidth: 100,
|
searchMenuSpan: 5,
|
column: {
|
consignorCode: {
|
label: '收装货点编码', minWidth: 130,
|
search: true,
|
},
|
consignorName: {
|
label: '收装货点名称', minWidth: 130,
|
search: true,
|
},
|
consignorType: {
|
label: '收装货点类型', minWidth: 80,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type',
|
display: false,
|
hide: false,
|
search: true,
|
},
|
contactName: {
|
label: '联系人姓名', minWidth: 110,
|
display: false,
|
hide: false,
|
search: true,
|
},
|
contactPhone: {
|
label: '联系人电话', minWidth: 110,
|
display: false,
|
hide: false,
|
search: true,
|
},
|
regionLabel: {
|
label: '行政区域', minWidth: 180,
|
display: false,
|
hide: false,
|
search: true,
|
},
|
},
|
})
|
const consignorProps = ref({
|
label: 'consignorName',
|
value: 'id'
|
})
|
|
|
const itemsCrudRef = ref()
|
const itemsTableData = ref<any>([])
|
|
const {
|
tableData,
|
pageF,
|
rowSave,
|
rowUpdate,
|
rowDel,
|
beforeOpen,
|
searchChange,
|
searchReset,
|
selectionChange,
|
onLoad,
|
currentChange,
|
sizeChange,
|
handleDelete,
|
handleExport,
|
handleUpdate,
|
refreshChange
|
} = usePagePlus({
|
form: form,
|
option: option,
|
queryParams: queryParams,
|
idKey: 'id',
|
page: page.value,
|
getListApi: listTmsDispatchOrder,
|
getDetailApi: getTmsDispatchOrder,
|
exportApi: exportTmsDispatchOrder,
|
deleteApi: delTmsDispatchOrder,
|
addApi: addTmsDispatchOrder,
|
updateApi: updateTmsDispatchOrder,
|
handleUpdateFunc: () => {
|
crudRef.value.rowEdit(selectionList.value[0]);
|
},
|
handleSelectionChangeFunc: (selection: any) => {
|
selectionList.value = selection;
|
if (selection.length > 0){
|
isCustoms.value = selection[0].isCustoms;
|
isLoad.value = selection[0].isLoad ;
|
}else{
|
isCustoms.value = -1;
|
isLoad.value = -1;
|
}
|
isCustoms.value = isCustoms.value == 0 && !pageF.single ? 0 : -1;
|
isLoad.value = isLoad.value == 0 && !pageF.single ? 0 : -1;
|
console.log(pageF.single)
|
},
|
getBeginListFunc: () => {
|
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') || {};
|
},
|
|
})
|
const handleConfirm = (row: any) => {
|
ElMessageBox.confirm("是否对调度单号" + row.dispatchNo + "确定 ?", '系统提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
return confirmOrder(row.id);
|
}).then(() => {
|
onLoad(page.value);
|
ElMessage({
|
message: "操作成功!",
|
type: 'success'
|
})
|
});
|
}
|
|
const handleCopy = (row: any) => {
|
ElMessageBox.confirm("是否对调度单号" + row.dispatchNo + "复制 ?", '系统提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
return copyOrder(row.id);
|
}).then(() => {
|
onLoad(page.value);
|
ElMessage({
|
message: "操作成功!",
|
type: 'success'
|
})
|
});
|
}
|
const handleOk = (row: any) => {
|
ElMessageBox.confirm("是否确认完成调度单号:" + row.dispatchNo + " 的行程 ?", '系统提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
return okOrder(row.id);
|
}).then(() => {
|
onLoad(page.value);
|
ElMessage({
|
message: "操作成功!",
|
type: 'success'
|
})
|
});
|
}
|
/**
|
* 上传行程
|
*/
|
const handleUploadItinerary = (row: any) => {
|
optionType.value = 'addItinerary';
|
boxFormOption.value = itineraryOption.value;
|
boxTableOption.value = itineraryTableOption.value;
|
listTmsTrip({dispatchOrderId: row.id, pageNum: 1, pageSize: 999}).then(res => {
|
boxTableData.value = res.rows || [];
|
pageF.open = true;
|
pageF.title = '上传行程';
|
|
boxForm.value = {
|
dispatchOrderId: row.id,
|
dataSource: 0,
|
driverId: row.mainDriverId,
|
driverName: row.mainDriverName,
|
vehicleNumber: row.licensePlate,
|
vehicleId: row.vehicleId,
|
}
|
})
|
}
|
const cancelBox = () => {
|
if (optionType.value === 'addItinerary' || optionType.value === 'addFinance') {
|
boxForm.value = {};
|
boxFormRef.value.resetFields();
|
}
|
pageF.open = false;
|
}
|
|
const submitForm = () => {
|
if (optionType.value === 'addItinerary') {
|
if (Array.isArray(boxForm.value.voucherUrl)) {
|
boxForm.value.voucherUrl = boxForm.value.voucherUrl.toString();
|
}
|
addTmsTrip(boxForm.value).then(res => {
|
ElMessage({
|
message: "操作成功!",
|
type: 'success'
|
})
|
cancelBox();
|
onLoad(page.value);
|
})
|
} else if (optionType.value === 'addFinance') {
|
if (Array.isArray(boxForm.value.feeVoucherUrl)) {
|
boxForm.value.feeVoucherUrl = boxForm.value.feeVoucherUrl.toString();
|
}
|
let filter = selectionList2.value.filter((item: any) => {
|
return !item.count
|
});
|
if (filter.length > 0) {
|
proxy.$modal.msgError("勾选报价费用请填写计费数量");
|
return;
|
}
|
boxForm.value.items = selectionList2.value;
|
addTmsFinanceDetail(boxForm.value).then(res => {
|
ElMessage({
|
message: "操作成功!",
|
type: 'success'
|
})
|
cancelBox();
|
onLoad(page.value);
|
})
|
}
|
|
|
}
|
|
|
const handleLog = (row: any) => {
|
|
}
|
const handleLogItinerary = (row: any) => {
|
optionType.value = 'view';
|
boxTableOption.value = itineraryTableOption.value;
|
listTmsTrip({dispatchOrderId: row.id, pageNum: 1, pageSize: 999}).then(res => {
|
boxTableData.value = res.rows || [];
|
pageF.open = true;
|
pageF.title = '查看行程';
|
boxFormOption.value.title = '';
|
})
|
}
|
|
const handleAddFinance = async (row: any) => {
|
optionType.value = 'addFinance';
|
boxFormOption.value = financeOption.value;
|
boxTableOption.value = financeTableOption.value;
|
const quotePlanItemRes = await listTmsQuoteItem({quotePlanId: row.quotePlanId, pageNum: 1, pageSize: 999});
|
let items = quotePlanItemRes.rows || [];
|
itemsTableData.value = items.map((item: any) => {
|
return {
|
rowKey: item.id,
|
feeType: item.freeName,
|
unit: item.unit,
|
price: item.price,
|
currency: item.currency,
|
count: 0,
|
sum: 0,
|
}
|
})
|
|
listTmsFinanceDetail({
|
dispatchOrderId: row.id, financeType: 2,
|
pageNum: 1, pageSize: 999
|
}).then(res => {
|
|
|
boxTableData.value = res.rows || [];
|
pageF.open = true;
|
pageF.title = '费用登记';
|
boxForm.value = {
|
dispatchOrderId: row.id,
|
dataSource: 0,
|
financeType: 2,
|
}
|
})
|
}
|
|
const handleGenerate = () => {
|
let ids = selectionList.value.map((item: any) => item.id);
|
initGenerate(ids).then(res => {
|
boxTableData.value = res.data || [];
|
optionType.value = 'generate';
|
pageF.open = true;
|
pageF.title = '生成应收应付费用数据';
|
boxTableOption.value = generateTableOption.value;
|
})
|
}
|
|
const submitGenerate = () => {
|
pageF.isUploading = true;
|
let ids = selectionList.value.map((item: any) => item.id);
|
|
generateTmsDispatchOrder(ids).then(res => {
|
pageF.isUploading = false;
|
ElMessage({
|
message: "操作成功!",
|
type: 'success'
|
})
|
cancelBox();
|
onLoad(page.value);
|
}).finally(() => {
|
pageF.isUploading = false;
|
})
|
}
|
/**
|
* 甩挂
|
*/
|
const handleDropHook = () => {
|
title.value = '调度单甩挂';
|
open.value = true;
|
form.value = selectionList.value[0];
|
optionType.value = 'dropHook';
|
|
}
|
/**
|
* 接挂
|
*/
|
const handleConnectHang = () => {
|
title.value = '调度单接挂';
|
open.value = true;
|
form.value = selectionList.value[0];
|
optionType.value = 'connectHang';
|
boxFormOption.value = connectHangOption.value;
|
}
|
const submitForm2 = () => {
|
pageF.isUploading = true;
|
if (optionType.value === 'dropHook') {
|
dropHook(form.value.id).then(res => {
|
ElMessage({
|
message: "提交成功!",
|
type: 'success'
|
})
|
cancelBox2();
|
onLoad(page.value);
|
}).finally(() => {
|
pageF.isUploading = false;
|
})
|
}else if (optionType.value === 'customs') {
|
customsOrder({id:form.value.id}).then(res => {
|
ElMessage({
|
message: "提交成功!",
|
type: 'success'
|
})
|
cancelBox2();
|
onLoad(page.value);
|
}).finally(() => {
|
pageF.isUploading = false;
|
})
|
}else if (optionType.value === 'loading') {
|
loadingOrder({id:form.value.id}).then(res => {
|
ElMessage({
|
message: "提交成功!",
|
type: 'success'
|
})
|
cancelBox2();
|
onLoad(page.value);
|
}).finally(() => {
|
pageF.isUploading = false;
|
})
|
}else {
|
connectHang({
|
dispatchId: form.value.id,
|
vehicleId: form.value.vehicleId,
|
driverId: form.value.driverId
|
}).then(res => {
|
ElMessage({
|
message: "提交成功!",
|
type: 'success'
|
})
|
cancelBox2();
|
onLoad(page.value);
|
}).finally(() => {
|
pageF.isUploading = false
|
})
|
}
|
}
|
|
|
const cancelBox2 = () => {
|
open.value = false;
|
}
|
|
const handleAddGoods = (row: any) => {
|
listTmsGoodsDetail({dispatchId: row.id, pageSize: 999, pageNum: 1}).then(res => {
|
goodsTableData.value = res.rows || [];
|
form.value = row;
|
open2.value = true;
|
})
|
}
|
const rowGoodsUpdate = (row: any, index: any, done: any, loading: any) => {
|
updateTmsGoodsDetail(row).then(res => {
|
ElMessage({
|
message: "修改成功!",
|
type: 'success'
|
})
|
handleAddGoods(form.value);
|
onLoad(page.value);
|
done();
|
}).catch(() => {
|
loading()
|
})
|
}
|
const rowGoodsSave = (row: any, done: any, loading: any) => {
|
row.dispatchId = form.value.id;
|
row.dispatchNo = form.value.dispatchNo;
|
addTmsGoodsDetail(row).then(res => {
|
ElMessage({
|
message: "新增成功!",
|
type: 'success'
|
})
|
handleAddGoods(form.value);
|
onLoad(page.value);
|
done();
|
}).catch(() => {
|
loading()
|
})
|
}
|
const rowGoodsDel = (row: any) => {
|
ElMessageBox.confirm("确定将选择数据删除?", '系统提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
return delTmsGoodsDetail(row.id);
|
}).then(() => {
|
handleAddGoods(form.value);
|
ElMessage({
|
message: "删除成功!",
|
type: 'success'
|
})
|
});
|
}
|
|
const handleActual = (row: any) => {
|
actualForm.value = row;
|
open3.value = true;
|
|
}
|
|
const submitForm3 = () => {
|
updateTmsDispatchOrder(actualForm.value).then(res => {
|
ElMessage({
|
message: "操作成功!",
|
type: 'success'
|
})
|
open3.value = false;
|
onLoad(page.value)
|
})
|
}
|
const countChange = (row: any) => {
|
row.sum = Number(row.price) * Number(row.count);
|
}
|
|
const selectionChange2 = (selection?: any[]) => {
|
selectionList2.value = selection;
|
}
|
|
const onShipperLoad = ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsConsignor(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
if (form.value.startRegionCode) {
|
const split = form.value.startRegionCode.split(',');
|
const [provinceId, cityId, districtId, streetId] = split;
|
|
if (provinceId) data.provinceId = provinceId;
|
if (cityId) data.cityId = cityId;
|
if (districtId) data.districtId = districtId;
|
if (streetId) data.streetId = streetId;
|
}
|
listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data,customerId: form.value.customerId}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
}
|
const onConsignorLoad = ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
|
if (value) {
|
let id = value;
|
if (Array.isArray(value)) {
|
id = value[0]
|
}
|
getTmsConsignor(id).then(res => {
|
return callback(res.data || {})
|
})
|
} else {
|
if (form.value.endRegionCode) {
|
const split = form.value.endRegionCode.split(',');
|
const [provinceId, cityId, districtId, streetId] = split;
|
|
if (provinceId) data.provinceId = provinceId;
|
if (cityId) data.cityId = cityId;
|
if (districtId) data.districtId = districtId;
|
if (streetId) data.streetId = streetId;
|
}
|
listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data,customerId: form.value.customerId}).then(res => {
|
return callback({
|
total: res.total,
|
data: res.rows || [],
|
})
|
})
|
}
|
}
|
const changeShipper = ({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(form.value, {
|
shipperId: active.id,
|
shipperName: active.consignorName,
|
shipperRegionLabel: active.regionLabel,
|
shipperAddress: active.addressDetail,
|
shipperMobile: active.contactPhone,
|
shipperRegionCode: shipperRegionCode
|
});
|
})
|
}
|
}
|
const changeReceiver = ({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(form.value, {
|
receiverId: active.id,
|
receiverName: active.consignorName,
|
receiverRegionLabel: active.regionLabel,
|
receiverAddress: active.addressDetail,
|
receiverMobile: active.contactPhone,
|
receiverRegionCode: receiverRegionCode,
|
});
|
})
|
}
|
}
|
const consignorAddOption =ref({
|
labelWidth: 120,
|
group: [
|
{
|
label: '基础信息',
|
prop: 'jcxx',
|
column:{
|
// consignorCode: {
|
// label: '装卸货点编码',minWidth: 150,
|
// addDisplay: false, disabled: true,
|
// editDisplay: true,
|
// viewDisplay: true,
|
// hide: false,
|
// search: true,
|
// rules: [
|
// {
|
// required: true,
|
// message: "装卸货点编码不能为空", trigger: "blur"
|
// }
|
// ],
|
// },
|
consignorName: {
|
label: '装卸货点名称',minWidth: 150,
|
addDisplay: true,
|
editDisplay: true,
|
viewDisplay: true,
|
hide: false,
|
search: true,
|
rules: [
|
{
|
required: true,
|
message: "装卸货点名称不能为空", trigger: "blur"
|
}
|
],
|
},
|
customerName:{
|
label: '所属客户',minWidth: 150,disabled: true,
|
},
|
// customerId: {
|
// label: '所属客户',minWidth: 150,
|
// addDisplay: true,
|
// editDisplay: true,suffixIcon:'search',
|
// viewDisplay: true,
|
// hide: true,
|
// search: true,
|
// rules: [
|
// {
|
// required: true,
|
// message: "所属客户不能为空", trigger: "change"
|
// }
|
// ],
|
// type: 'table',
|
// children:{
|
// border: true,
|
// searchMenuSpan: 5,
|
// column:{
|
// customerType: {
|
// label: '客户类型', minWidth: 120,
|
// type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/customer_type',
|
// search: true,
|
// },
|
// customerShortName: {
|
// label: '客户简称', minWidth: 130,
|
// search: true,
|
// },
|
// customerCode: {
|
// label: '客户编号',minWidth: 120,
|
// search: true,
|
// },
|
// contactName: {
|
// label: '联系人姓名',minWidth: 120,
|
// },
|
// signCompanyName: {
|
// label: '签约公司', minWidth: 150,
|
// },
|
// },
|
//
|
// },
|
// props:{
|
// label: 'customerShortName',
|
// value: 'id'
|
// },
|
// onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback:any) => {
|
// if (value){
|
// let id = value;
|
// if (Array.isArray(value)){
|
// id = value[0]
|
// }
|
// getTmsCustomerInfo(id).then(res=>{
|
// return callback(res.data||{})
|
// })
|
// }else{
|
// listTmsCustomerInfo({pageSize:page.pageSize,pageNum:page.currentPage,...data}).then(res=>{
|
// return callback({
|
// total: res.total,
|
// data: res.rows||[],
|
// })
|
// })
|
// }
|
//
|
// },
|
// change: ({value}: any) => {
|
// if(value){
|
// getTmsCustomerInfo(value).then(res=>{
|
// let active = res.data || {};
|
// if (active){
|
// console.log(dialForm.value)
|
// form2.value.customerId = active.id
|
// form2.value.customerSysCode = active.customerCode
|
// form2.value.customerName = active.customerShortName
|
// }
|
// })
|
// }
|
// },
|
// },
|
// customerSysCode: {
|
// label: '客户编码',minWidth: 150,
|
// addDisplay: true,
|
// editDisplay: true,
|
// viewDisplay: true,
|
// hide: false,
|
// search: true,
|
// disabled: true,
|
// rules: [
|
// {
|
// required: true,
|
// message: "客户编码不能为空", trigger: "blur"
|
// }
|
// ],
|
// },
|
consignorType: {
|
label: '装卸货点类型',minWidth: 150,
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type',
|
addDisplay: true,
|
editDisplay: true,
|
viewDisplay: true,
|
hide: false,
|
search: true,
|
rules: [
|
{
|
required: true,
|
message: "装卸货点类型不能为空", trigger: "change"
|
}
|
],
|
},
|
}
|
},
|
{
|
label: '联系人信息',
|
prop: 'lxrxx',
|
column:{
|
contactName: {
|
label: '联系人姓名',minWidth: 150,
|
addDisplay: true,
|
editDisplay: true,
|
viewDisplay: true,
|
hide: false,
|
search: true,
|
rules: [
|
{
|
required: true,
|
message: "联系人姓名不能为空", trigger: "blur"
|
}
|
],
|
},
|
contactPhone: {
|
label: '联系人电话',minWidth: 150,
|
addDisplay: true,
|
editDisplay: true,
|
viewDisplay: true,
|
hide: true,
|
search: false,
|
},
|
contactEmail: {
|
label: '联系人邮箱',minWidth: 150,
|
addDisplay: true,
|
editDisplay: true,
|
viewDisplay: true,
|
hide: true,
|
search: false,
|
},
|
}
|
},
|
{
|
label: '地址信息',
|
prop: 'dzxx',
|
column:{
|
|
mapLocationDetail: {
|
label: '地图位置',minWidth: 150,
|
addDisplay: true,
|
editDisplay: true,span:24,
|
viewDisplay: true,
|
hide: true,
|
search: false,
|
type: 'map',
|
// mapChange: async (params:any)=>{
|
// if (params.info === "OK") {
|
// let { province, city, district, township } = params.regeocode.addressComponent || {};
|
// const res = await getAddressCode({province, city, district, township});
|
// const {provinceCode, cityCode, districtCode, townshipCode} = res.data || {};
|
// form2.value.regionLabel = province + " / " + city + " / " + district + " / " + township;
|
// //form2.value.region = [provinceCode, cityCode, districtCode, townshipCode];
|
// form2.value.provinceId = provinceCode;
|
// form2.value.cityId = cityCode;
|
// form2.value.districtId = districtCode;
|
// form2.value.streetId = townshipCode;
|
// form2.value.dispatchTransportArea = params.regeocode.formattedAddress;
|
// console.log(form2.value,"form2")
|
// }
|
// },
|
change: async ({value}:any)=>{
|
if (Array.isArray(value) && value.length === 3){
|
mapRegeo(value[1], value[0]).then(async res => {
|
let params = res.data || {};
|
if (params.info === "OK") {
|
let {province, city, district, township} = params.regeocode.addressComponent || {};
|
const res = await getAddressCode({province, city, district, township});
|
const {provinceCode, cityCode, districtCode, townshipCode} = res.data || {};
|
form2.value.regionLabel = province + " / " + city + " / " + district + " / " + township;
|
form2.value.provinceId = provinceCode;
|
form2.value.cityId = cityCode;
|
form2.value.districtId = districtCode;
|
form2.value.streetId = townshipCode;
|
form2.value.dispatchTransportArea = params.regeocode.formatted_address || params.regeocode.formattedAddress;
|
console.log(form2.value, "form2")
|
}
|
});
|
}
|
},
|
},
|
// dispatchTransportArea: {
|
// label: '调度单运输地',
|
// addDisplay: true,minWidth: 150,
|
// editDisplay: true,
|
// viewDisplay: true,
|
// hide: false,
|
// search: true,
|
// rules: [
|
// {
|
// required: true,
|
// message: "调度单运输地不能为空", trigger: "blur"
|
// }
|
// ],
|
// },
|
electronicFenceRange: {
|
label: '电子围栏范围',
|
addDisplay: true,minWidth: 150,
|
editDisplay: true,
|
viewDisplay: true,append:'米',
|
hide: false,
|
search: true,
|
rules: [
|
{
|
required: true,
|
message: "电子围栏范围不能为空", trigger: "blur"
|
}
|
],
|
},
|
}
|
},
|
{
|
label: '其他信息',
|
prop: 'qtyxx',
|
column:{
|
remark: {
|
label: '备注',minWidth: 150,
|
type: 'textarea', minRows: 3, maxRows: 5,
|
addDisplay: true,
|
editDisplay: true,span:24,
|
viewDisplay: true,
|
hide: true,
|
search: false,
|
},
|
}
|
}
|
],
|
})
|
const form2 = ref<any>({});
|
const dialForm = ref();
|
|
const handleAddShipper = () => {
|
if (!form.value.customerId){
|
return ElMessage.error('请先选择运输路线');
|
}
|
form2.value = {
|
customerId: form.value.customerId,
|
customerSysCode: form.value.customerCode,
|
customerName: form.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(form.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 handleAddReceiver = () => {
|
if (!form.value.customerId){
|
return ElMessage.error('请先选择运输路线');
|
}
|
form2.value = {
|
customerId: form.value.customerId,
|
customerSysCode: form.value.customerCode,
|
customerName: form.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(form.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 handleCustoms = () => {
|
title.value = '补充委托报关信息';
|
open.value = true;
|
form.value = selectionList.value[0];
|
optionType.value = 'customs';
|
boxFormOption.value = customsOption.value;
|
}
|
const handleLoading = () => {
|
title.value = '补充委托装卸信息';
|
open.value = true;
|
form.value = selectionList.value[0];
|
optionType.value = 'loading';
|
boxFormOption.value = loadingOption.value;
|
}
|
</script>
|