diff --git a/index.html b/index.html index 9e75bc3..e01cadb 100644 --- a/index.html +++ b/index.html @@ -121,9 +121,12 @@ #loader-wrapper .loader-section { position: fixed; top: 0; - width: 51%; + width: 100%; height: 100%; - background: #7171c6; + //background: #7171c6; + background: radial-gradient(circle at 90% 50%, rgba(255, 255, 255, 0.8) 0%, rgba(255, 255, 255, 0.4) 60%, transparent 100%), + url("data:image/svg+xml;utf8,") center/cover; + z-index: 1000; -webkit-transform: translateX(0); -ms-transform: translateX(0); diff --git a/src/api/amz/purchaseOrder/index.ts b/src/api/amz/purchaseOrder/index.ts index 9e3d131..fe85268 100644 --- a/src/api/amz/purchaseOrder/index.ts +++ b/src/api/amz/purchaseOrder/index.ts @@ -74,3 +74,16 @@ export const delPurchaseOrder = (orderSn: string | number | Array { + return request({ + url: '/amz/purchaseOrder/take-today-purchase-order', + method: 'get' + }); +}; + +export const updateTodayPurchaseOrder = () => { + return request({ + url: '/amz/purchaseOrder/update-today-purchase-order', + method: 'get' + }); +}; diff --git a/src/api/amz/shipForward/types.ts b/src/api/amz/shipForward/types.ts index 3aa4f8a..aa46db5 100644 --- a/src/api/amz/shipForward/types.ts +++ b/src/api/amz/shipForward/types.ts @@ -95,6 +95,7 @@ export interface ShipForwardForm extends BaseEntity { * 采购单号 */ orderSn?: string; + inOrderSn?: string; /** * 采购店铺名称 @@ -169,6 +170,7 @@ export interface ShipForwardForm extends BaseEntity { expDeliveryDate?: string; boxNum?: number; + totalPrice?: number; /** * 采购单子项ID diff --git a/src/api/amz/shipmentPlan/index.ts b/src/api/amz/shipmentPlan/index.ts index 501dcec..767b38f 100644 --- a/src/api/amz/shipmentPlan/index.ts +++ b/src/api/amz/shipmentPlan/index.ts @@ -89,6 +89,14 @@ export const linkShipmentPlan = (data: ShipmentPlanForm) => { }); }; +export const createBatchRelations = (data: any) => { + return request({ + url: '/amz/sendShipmentRel/createBatchRelations', + method: 'post', + data: data + }); +}; + export const updateShipmentPlanList = (data: string[]) => { return request({ url: '/amz/shipmentPlan/update/list/send', @@ -107,3 +115,10 @@ export const delShipmentPlan = (id: string | number | Array) => method: 'delete' }); }; + +export const deleteShipmentPlanSendOrder = (shipmentPlanId: string | number, sendOrderId: string | number) => { + return request({ + url: '/amz/shipmentPlan/delete/' + shipmentPlanId + '/' + sendOrderId, + method: 'delete' + }); +}; diff --git a/src/api/amz/shipmentPlan/types.ts b/src/api/amz/shipmentPlan/types.ts index 8ebd20e..f28b931 100644 --- a/src/api/amz/shipmentPlan/types.ts +++ b/src/api/amz/shipmentPlan/types.ts @@ -1,6 +1,7 @@ import { LogisticsOrderVO } from '@/api/amz/logisticsOrder/types'; import { LogisticsOrderDetailVO } from '@/api/amz/logisticsOrderDetail/types'; import { ShipmentItemVO } from '@/api/amz/shipmentItem/types'; +import { SendOrderVO } from '@/api/amz/sendOrder/types'; export interface ShipmentPlanVO { /** @@ -18,6 +19,8 @@ export interface ShipmentPlanVO { */ shipmentId: string | number; + shipmentIds?: string[] | number[]; + /** * 货件名称 */ @@ -152,10 +155,13 @@ export interface ShipmentPlanVO { */ channelName: string; + sendOrders?: SendOrderVO[]; + /** * 供应商发货单id */ sendOrderId?: string | number; + sendOrderIds?: string[] | number[]; } interface Address { @@ -476,6 +482,8 @@ export interface ShipmentPlanForm extends BaseEntity { * 物流渠道 */ channelName?: string; + + linkType?: string; } export interface ShipmentPlanQuery extends PageQuery { diff --git a/src/assets/images/background.svg b/src/assets/images/background.svg new file mode 100644 index 0000000..5466c84 --- /dev/null +++ b/src/assets/images/background.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/logo/logo.svg b/src/assets/logo/logo.svg new file mode 100644 index 0000000..6af14db --- /dev/null +++ b/src/assets/logo/logo.svg @@ -0,0 +1,18 @@ + + + + + + + diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 16db894..e0abbfb 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -56,9 +56,9 @@ - - - + + + diff --git a/src/views/amz/inquiryRequest/index.vue b/src/views/amz/inquiryRequest/index.vue index 9f10ac3..4fa9df2 100644 --- a/src/views/amz/inquiryRequest/index.vue +++ b/src/views/amz/inquiryRequest/index.vue @@ -407,7 +407,7 @@ const data = reactive>({ surcharge: [{ required: true, message: '附加费不能为空', trigger: 'blur' }], quoteDate: [{ required: true, message: '报价生效日期不能为空', trigger: 'blur' }], isSubmitted: [{ required: true, message: '提交状态不能为空', trigger: 'blur' }], - remark: [{ required: true, message: '报价备注不能为空', trigger: 'blur' }], + // remark: [{ required: true, message: '报价备注不能为空', trigger: 'blur' }], channelType: [{ required: true, message: '渠道类型不能为空', trigger: 'change' }], isDdp: [{ required: true, message: '是否双清包税不能为空', trigger: 'blur' }], unit: [{ required: true, message: '单位不能为空', trigger: 'blur' }] @@ -607,8 +607,31 @@ const handleDelete = async (row?: InquiryRequestVO) => { }; const handleSubmit = async (row?: InquiryRequestVO) => { + reset(); console.log('handleSubmit'); console.log(row.channelId); + + quoteForm.value = { + id: undefined, + userId: undefined, + destination: undefined, + transportChannel: undefined, + price: 10, + minLeadTime: 10, + leadTime: 10, + surcharge: 0, + channelName: undefined, + quoteStartDate: undefined, + quoteEndDate: undefined, + quoteDate: [] as Date[], + isSubmitted: undefined, + remark: undefined, + channelType: undefined, + channelId: undefined, + isDdp: 'Y', + unit: 'kg', + backLogisticsType: '快递' + }; quoteForm.value.id = row.id; quoteForm.value.destination = row.destination; quoteForm.value.transportChannel = row.transportChannel; diff --git a/src/views/amz/logisticsQuote/index.vue b/src/views/amz/logisticsQuote/index.vue index 88d6a91..f5160a2 100644 --- a/src/views/amz/logisticsQuote/index.vue +++ b/src/views/amz/logisticsQuote/index.vue @@ -275,7 +275,7 @@ const data = reactive>({ surcharge: [{ required: true, message: '附加费不能为空', trigger: 'blur' }], quoteDate: [{ required: true, message: '报价生效日期不能为空', trigger: 'blur' }], isSubmitted: [{ required: true, message: '提交状态不能为空', trigger: 'blur' }], - remark: [{ required: true, message: '报价备注不能为空', trigger: 'blur' }], + // remark: [{ required: true, message: '报价备注不能为空', trigger: 'blur' }], channelType: [{ required: true, message: '渠道类型不能为空', trigger: 'change' }], channelId: [{ required: true, message: '渠道ID不能为空', trigger: 'blur' }], isDdp: [{ required: true, message: '是否双清包税不能为空', trigger: 'blur' }], diff --git a/src/views/amz/purchaseOrder/index.vue b/src/views/amz/purchaseOrder/index.vue index 7c2b186..b8ddf39 100644 --- a/src/views/amz/purchaseOrder/index.vue +++ b/src/views/amz/purchaseOrder/index.vue @@ -28,14 +28,16 @@ - - - - - - - - + + + 同步今天的采购单 + + + + 更新采购单状态 + + @@ -388,7 +390,9 @@ import { delPurchaseOrder, addPurchaseOrder, updatePurchaseOrder, - confirmPurchaseOrder + confirmPurchaseOrder, + takeTodayPurchaseOrder, + updateTodayPurchaseOrder } from '@/api/amz/purchaseOrder'; import { PurchaseOrderVO, PurchaseOrderQuery, PurchaseOrderForm } from '@/api/amz/purchaseOrder/types'; @@ -654,6 +658,19 @@ const handleSelectionChange = (selection: PurchaseOrderVO[]) => { multiple.value = !selection.length; }; +const handleOrderAdd = async () => { + //获取领星采购单 + const res = await takeTodayPurchaseOrder(); + console.log(res); +}; + +const handleOrderUpdate = async () => { + //更新领星采购单 + //获取领星采购单 + const res = await updateTodayPurchaseOrder(); + console.log(res); +}; + /** 新增按钮操作 */ const handleAdd = () => { reset(); diff --git a/src/views/amz/purchaseOrderConfirm/index.vue b/src/views/amz/purchaseOrderConfirm/index.vue index 224fddc..99919a8 100644 --- a/src/views/amz/purchaseOrderConfirm/index.vue +++ b/src/views/amz/purchaseOrderConfirm/index.vue @@ -98,7 +98,7 @@ - + - - - + 设置延期 + @@ -418,6 +418,7 @@ + @@ -427,12 +428,15 @@ {{ item.label }} - - {{ item.rawData.userName }} - + + + + + + @@ -461,7 +465,7 @@ @@ -881,6 +885,7 @@ const data = reactive>({ rules2: { id: [{ required: true, message: '$comment不能为空', trigger: 'blur' }], orderSn: [{ required: true, message: '采购单号不能为空', trigger: 'blur' }], + inOrderSn: [{ required: true, message: '收货方采购单号不能为空', trigger: 'blur' }], storeName: [{ required: true, message: '采购店铺名称不能为空', trigger: 'blur' }], sku: [{ required: true, message: '产品唯一标识码不能为空', trigger: 'blur' }], productName: [{ required: true, message: '产品全称不能为空', trigger: 'blur' }], @@ -1119,7 +1124,7 @@ const handleUpdate = async (row?: PurchaseOrderVO) => { const res = await getPurchaseOrder(_id); Object.assign(form.value, res.data); dialog.visible = true; - dialog.title = '修改订单状态'; + dialog.title = '设置延期'; }; const handleConfirm = async (row?: PurchaseOrderVO) => { @@ -1407,7 +1412,7 @@ const shipSubmitForm = () => { numberToLetter(index) + ': ' + group.boxCount + - '箱' + + '箱x' + group.itemCount + '件,长' + group.lengthPerBox + diff --git a/src/views/amz/sendOrder/index.vue b/src/views/amz/sendOrder/index.vue index d7df0ac..c7b5a94 100644 --- a/src/views/amz/sendOrder/index.vue +++ b/src/views/amz/sendOrder/index.vue @@ -58,8 +58,9 @@ - + + {{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }} @@ -407,13 +408,6 @@ const addGroup = () => { }); }; -const formatText = (text) => { - if (text === null) { - return ''; - } - return text.replace(/\n/g, ''); -}; - // 删除组 const removeGroup = (index) => { groups.value.splice(index, 1); diff --git a/src/views/amz/sendOrderConfirm/index.vue b/src/views/amz/sendOrderConfirm/index.vue index 794ea99..33ae1de 100644 --- a/src/views/amz/sendOrderConfirm/index.vue +++ b/src/views/amz/sendOrderConfirm/index.vue @@ -59,8 +59,9 @@ - + + {{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }} diff --git a/src/views/amz/sendOrderLast/index.vue b/src/views/amz/sendOrderLast/index.vue index ae03015..719a9f2 100644 --- a/src/views/amz/sendOrderLast/index.vue +++ b/src/views/amz/sendOrderLast/index.vue @@ -59,9 +59,80 @@ - + + + + + + + + {{ parseTime(scope.row.gmtCreate, '{y}-{m}-{d}') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ scope.row.shipmentStatus }} + + + + + + + + + + + + + + + + + {{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }} @@ -102,6 +173,12 @@ + + + 已关联 + 未关联 + + @@ -110,13 +187,13 @@ 待创建FBA + >确认发货 @@ -186,6 +263,7 @@ import { listSendOrder, getSendOrder, delSendOrder, addSendOrder, updateSendOrder } from '@/api/amz/sendOrder'; import { SendOrderVO, SendOrderQuery, SendOrderForm } from '@/api/amz/sendOrder/types'; import { formatText } from '@/utils/asinkj'; +import { ElTable } from 'element-plus'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { send_status } = toRefs(proxy?.useDict('send_status')); @@ -311,11 +389,12 @@ const handleUpdate = async (row?: SendOrderVO) => { const res = await getSendOrder(_id); Object.assign(form.value, res.data); dialog.visible = true; - dialog.title = '待创建FBA货件信息'; + dialog.title = '确认发货'; }; /** 提交按钮 */ const submitForm = () => { + form.value.sendStatus = 'set_store'; sendOrderFormRef.value?.validate(async (valid: boolean) => { if (valid) { buttonLoading.value = true; @@ -355,3 +434,66 @@ onMounted(() => { getList(); }); + diff --git a/src/views/amz/shipForwardIn/index.vue b/src/views/amz/shipForwardIn/index.vue index 649954f..0f5348e 100644 --- a/src/views/amz/shipForwardIn/index.vue +++ b/src/views/amz/shipForwardIn/index.vue @@ -76,12 +76,14 @@ - + + + diff --git a/src/views/amz/shipForwardOut/index.vue b/src/views/amz/shipForwardOut/index.vue index 1bbb3f8..42bd5e7 100644 --- a/src/views/amz/shipForwardOut/index.vue +++ b/src/views/amz/shipForwardOut/index.vue @@ -179,9 +179,9 @@ - - - + + + @@ -199,7 +199,20 @@ - + + + + + + + + + + + + ¥ + + diff --git a/src/views/amz/shipmentPlanAsk/index.vue b/src/views/amz/shipmentPlanAsk/index.vue index b57aa85..56f3608 100644 --- a/src/views/amz/shipmentPlanAsk/index.vue +++ b/src/views/amz/shipmentPlanAsk/index.vue @@ -57,6 +57,9 @@ >同步今天的货件 + + 关联采购单 + 批量提交询价 @@ -77,20 +80,93 @@ > - - {{ props.row.shipmentName }} - - - - - - - {{ parseTime(props.row.staShipmentDate, '{y}-{m}-{d}') }} - - - + + + + + + + + {{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }} + + + + + {{ parseTime(scope.row.sendDate, '{y}-{m}-{d}') }} + + + + + + + + + + + + + + + + + + + + + + + + {{ row.boxCount }}箱 + + + 暂无数据 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -98,6 +174,7 @@ + @@ -116,6 +193,12 @@ + + + 已关联 + 未关联 + + @@ -130,35 +213,35 @@ - - - - - - 已关联 - - - - - {{ scope.row.sendOrder.orderSn }} - + + + + + + + + + + + + - - {{ scope.row.sendOrder.productName }} - + + + - {{ scope.row.sendOrder.boxCount }} 箱 - {{ scope.row.sendOrder.weightPerBox }} kg - {{ scope.row.sendOrder.sendDetail }} + + + - - - - - 未关联 - - - + + + + + + + + @@ -190,16 +273,16 @@ 询 价 - - - + + + + + + + + + + @@ -354,10 +437,11 @@ - + + {{ parseTime(scope.row.sendDate, '{y}-{m}-{d}') }} @@ -371,21 +455,28 @@ - - - - - - - - 关联采购单 + + + + + + + + - - - - - + + + + + + + + @@ -437,7 +528,9 @@ import { addShipmentPlan, updateShipmentPlan, takeTodayAmzPlanData, - linkShipmentPlan + linkShipmentPlan, + createBatchRelations, + deleteShipmentPlanSendOrder } from '@/api/amz/shipmentPlan'; import { listAllLogisticsChannel } from '@/api/amz/logisticsChannel'; import type { DrawerProps } from 'element-plus'; @@ -454,6 +547,7 @@ import { InquiryRequestItemVO } from '@/api/amz/inquiryRequest/types'; import { listSendOrder } from '@/api/amz/sendOrder'; import { PurchaseOrderVO } from '@/api/amz/purchaseOrder/types'; import { SendOrderVO } from '@/api/amz/sendOrder/types'; +import { formatText } from '@/utils/asinkj'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { biz_transport_channel } = toRefs(proxy?.useDict('biz_transport_channel')); @@ -790,7 +884,7 @@ const batchCascaderChange = (value) => { // console.log('channelCascaderRef', channelCascaderRef); // console.log('label====', channelCascaderRef.value.getCheckedNodes()); }; - +const multiSelect = ref(true); const channelDialogVisibleAction = () => { if (selectionDatas.value === undefined || selectionDatas.value?.length === 0) { ElMessage.error('请选择需要批量提交的数据'); @@ -798,7 +892,7 @@ const channelDialogVisibleAction = () => { } let allHasSendOrder = true; selectionDatas.value.forEach((item) => { - if (!item.sendOrderId) { + if (item.sendOrders == null || item.sendOrders.length === 0) { allHasSendOrder = false; } }); @@ -815,6 +909,38 @@ const channelDialogVisibleAction = () => { }); }; +const batchLinkOrderAction = async () => { + multiSelect.value = false; + if (selectionDatas.value === undefined || selectionDatas.value?.length === 0) { + ElMessage.error('请勾选需要关联的数据'); + return; + } + + orderQueryParams.value.sendStatus = 'confirm,completed,set_store'; + console.log('orderQueryParams', orderQueryParams.value); + const res = await listSendOrder(orderQueryParams.value); + sendOrderList.value = res.rows; + + orderTableVisible.visible = true; + // let allHasSendOrder = true; + // selectionDatas.value.forEach((item) => { + // if (!item.sendOrderId) { + // allHasSendOrder = false; + // } + // }); + // + // if (!allHasSendOrder) { + // ElMessage.error('请选择已关联采购单的数据'); + // return; + // } + + // channelDialogVisible.value = true; + // console.log('channelDialogVisibleAction', selectionDatas.value.length); + // selectionDatas.value.forEach((item) => { + // console.log(item.channelId); + // }); +}; + function confirmClick() { ElMessageBox.confirm(`你确定要关闭 ${radio1.value} ?`) .then(() => { @@ -979,6 +1105,7 @@ const reset = () => { /** 搜索按钮操作 */ const handleQuery = () => { console.log('queryParams.value.gmtCreate', queryParams.value.gmtCreate); + queryParams.value.shipmentId = queryParams.value.shipmentId.trim(); queryParams.value.pageNum = 1; getList(); }; @@ -998,11 +1125,17 @@ const handleSelectionChange = (selection: ShipmentPlanVO[]) => { const selectionDatas = ref(); +const selectionLinkDatas = ref(); + /** 多选框选中数据 */ const fbaDataSelectionChange = (selection: ShipmentPlanVO[]) => { selectionDatas.value = selection; }; +const linkOrderSelectionChange = (selection: SendOrderVO[]) => { + selectionLinkDatas.value = selection; +}; + /** 新增按钮操作 */ const handleAdd = () => { reset(); @@ -1092,9 +1225,21 @@ const checkPrice = async () => { // } }; +const handleDeleteRelation = async (shipmentPlanId: number, sendOrderId: number) => { + console.log('shipmentPlanId', shipmentPlanId); + console.log('sendOrderId', sendOrderId); + const res = await deleteShipmentPlanSendOrder(shipmentPlanId, sendOrderId); + if (res.code == 200) { + ElMessage.success('删除成功'); + getList(); + } else { + ElMessage.error('删除失败'); + } +}; /** 修改按钮操作 */ const handleUpdate = async (row?: ShipmentPlanVO) => { - if (!row.sendOrderId) { + console.log('row', row); + if (row.sendOrders == null || row.sendOrders.length === 0) { ElMessage.warning('请先关联采购单!'); return; } @@ -1125,6 +1270,7 @@ const linkShipmentPlanVO = ref(); const handleLink = async (row: any) => { console.log('row', row); + return; // const res = await getShipmentPlan(row.id); // console.log('res', res); // if (res.code == 200) { @@ -1132,8 +1278,8 @@ const handleLink = async (row: any) => { // getList(); // } linkShipmentPlanVO.value = row; - orderQueryParams.value.realStoreName = row.sellerName; - orderQueryParams.value.sendStatus = 'confirm'; + // orderQueryParams.value.realStoreName = row.sellerName; + orderQueryParams.value.sendStatus = 'confirm,completed'; console.log('orderQueryParams', orderQueryParams.value); const res = await listSendOrder(orderQueryParams.value); sendOrderList.value = res.rows; @@ -1142,21 +1288,69 @@ const handleLink = async (row: any) => { orderTableVisible.title = '选择需要关联的采购单'; console.log('res', res); }; - -const handleLinkOrder = async (row: SendOrderVO) => { +//开始选多个plan 然后选一个然后选多个sendOrder +const handleLinkOrder = async (row: ShipmentPlanVO) => { console.log('row', row); + const shipmentIds: (string | number)[] = []; + selectionDatas.value.forEach((item) => { + shipmentIds.push(item.id); + }); const updateForm = ref({ - id: linkShipmentPlanVO.value.id, - sendOrderId: row.id, + linkType: '1', + // id: linkShipmentPlanVO.value.id, + // sendOrderIds: sendOrderIds, sendStatus: 'completed', - shipmentId: linkShipmentPlanVO.value.shipmentId + // shipmentId: row.id, + + sendOrderIds: [row.id], + + shipmentIds: shipmentIds // boxSize: plength.value + '*' + pwidth.value + '*' + pheight.value, // vendorWeight: form.value.vendorWeight, // setTotal: form.value.setTotal // channelId: selectedChannel, // channelName: channelCascaderRef.value.getCheckedNodes()[0].label }); - const res = await linkShipmentPlan(updateForm.value).finally(() => (buttonLoading.value = false)); + const res = await createBatchRelations(updateForm.value).finally(() => (buttonLoading.value = false)); + console.log('res', res); + if (res.code == 200) { + orderTableVisible.visible = false; + ElMessage.success('关联成功'); + getList(); + } +}; +//开始选一个plan 然后选多个sendOrder +const handleLinkBatchOrder = async () => { + if (selectionLinkDatas.value === undefined || selectionLinkDatas.value?.length === 0) { + ElMessage.error('请勾选需要关联的数据'); + return; + } + + const sendOrderIds: (string | number)[] = []; + selectionLinkDatas.value.forEach((item) => { + sendOrderIds.push(item.id); + }); + + const shipmentIds: (string | number)[] = []; + selectionDatas.value.forEach((item) => { + shipmentIds.push(item.id); + }); + const updateForm = ref({ + linkType: '2', + // id: linkShipmentPlanVO.value.id, + sendOrderIds: sendOrderIds, + + shipmentIds: shipmentIds, + sendStatus: 'completed' + + // shipmentIds: shipmentIds + // boxSize: plength.value + '*' + pwidth.value + '*' + pheight.value, + // vendorWeight: form.value.vendorWeight, + // setTotal: form.value.setTotal + // channelId: selectedChannel, + // channelName: channelCascaderRef.value.getCheckedNodes()[0].label + }); + const res = await createBatchRelations(updateForm.value).finally(() => (buttonLoading.value = false)); console.log('res', res); if (res.code == 200) { orderTableVisible.visible = false; @@ -1293,3 +1487,66 @@ onMounted(() => { getAllChannelData(); }); + diff --git a/src/views/login.vue b/src/views/login.vue index 640f6de..3abf5c9 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -1,48 +1,35 @@ + 香港SMT订单物流管理系统 - + 智能化物流解决方案 + + + + + - - - - - - - - + - + + - + + - + @@ -51,45 +38,43 @@ - {{ proxy.$t('login.rememberPassword') }} - - - - - - - - - - - - - - - - - + + 记住密码 + - - {{ proxy.$t('login.login') }} - {{ proxy.$t('login.logging') }} + + 登 录 + 登 录 中... - - {{ proxy.$t('login.switchRegisterPage') }} - + + + + - + + + + + + 智慧物流管理系统 + 让供应链更智能,让物流更高效 + + + +
智能化物流解决方案
让供应链更智能,让物流更高效