diff --git a/IDE官网/assets/img/favicon.png b/IDE官网/assets/img/favicon.png
new file mode 100644
index 0000000..3f851af
Binary files /dev/null and b/IDE官网/assets/img/favicon.png differ
diff --git a/IDE官网/assets/js/ai-advisor.js b/IDE官网/assets/js/ai-advisor.js
index b51bb86..6788fca 100644
--- a/IDE官网/assets/js/ai-advisor.js
+++ b/IDE官网/assets/js/ai-advisor.js
@@ -10,7 +10,7 @@
const PHONE = '18123959245';
const EMAIL = 'bd01@1st56.com';
const WECHAT = 'ydgjzzh';
- const ICP = '粤ICP备19018720号';
+ const ICP = '粤ICP备2025463970号-2';
const ADDRESS_ZH = '深圳宝安区福永怀德翠岗5区36栋';
const ADDRESS_EN = 'Bldg 36, Cuigang 5, Fuyong, Bao’an, Shenzhen';
diff --git a/IDE官网/assets/js/main.js b/IDE官网/assets/js/main.js
index 32d8f39..db67105 100644
--- a/IDE官网/assets/js/main.js
+++ b/IDE官网/assets/js/main.js
@@ -115,8 +115,8 @@ document.addEventListener('DOMContentLoaded', () => {
const languageStorageKey = 'ide-language';
const pageTitleMap = {
- 'IDE|Faster & Simpler': 'IDE|更快 · 更简单',
- 'IDE|Immediate Delivery Express — Cross-Border Logistics': 'IDE|Immediate Delivery Express — 跨境物流',
+ 'IDE | Global Digital One-Stop Cross-Border Logistics': 'IDE | 全球数字化一站式跨境物流服务商',
+ 'IDE|Immediate Delivery Express — Cross-Border Logistics': 'IDE | 全球数字化一站式跨境物流服务商',
'Faster & Simpler': '更快 · 更简单',
'|Faster & Simpler': '更快 · 更简单',
'IDE - About': 'IDE - 关于我们',
diff --git a/IDE官网/index.html b/IDE官网/index.html
index fdc5cf5..5d80eb9 100644
--- a/IDE官网/index.html
+++ b/IDE官网/index.html
@@ -5,12 +5,12 @@
-
IDE|Immediate Delivery Express — 跨境物流
+ IDE | 全球数字化一站式跨境物流服务商
-
-
+
+
diff --git a/generate-menu-excel.js b/generate-menu-excel.js
index ecbca4d..1e97c56 100644
--- a/generate-menu-excel.js
+++ b/generate-menu-excel.js
@@ -370,6 +370,17 @@ const menuData = [
hideInMenu: false,
parentRoute: '/order',
},
+ {
+ level: 2,
+ name: '9610订单',
+ permissionCode: 'Order.Customs9610',
+ route: '/order/customs9610Order',
+ component: 'views/order/customs9610Order/index',
+ icon: null,
+ order: 5,
+ hideInMenu: false,
+ parentRoute: '/order',
+ },
// 一级菜单 - 渠道
{
diff --git a/nginx-default.conf b/nginx-default.conf
index 36b250b..7814ccf 100644
--- a/nginx-default.conf
+++ b/nginx-default.conf
@@ -73,6 +73,20 @@ server {
access_log off;
}
+ location = /favicon.ico {
+ try_files /favicon.png =404;
+ expires 7d;
+ add_header Cache-Control "public";
+ access_log off;
+ }
+
+ location = /favicon.png {
+ try_files /favicon.png =404;
+ expires 7d;
+ add_header Cache-Control "public";
+ access_log off;
+ }
+
# ============ 客户 / 管理端登录入口 ============
location = /login {
try_files /index.html =200;
@@ -166,6 +180,9 @@ server {
location ^~ /order/pickupOrder {
try_files /index.html =200;
}
+ location ^~ /order/customs9610Order {
+ try_files /index.html =200;
+ }
location ^~ /order/batchJobs {
try_files /index.html =200;
}
diff --git a/nginx-docker.conf b/nginx-docker.conf
index 5ea76fb..075a684 100644
--- a/nginx-docker.conf
+++ b/nginx-docker.conf
@@ -39,6 +39,20 @@ server {
access_log off;
}
+ location = /favicon.ico {
+ try_files /favicon.png =404;
+ expires 7d;
+ add_header Cache-Control "public";
+ access_log off;
+ }
+
+ location = /favicon.png {
+ try_files /favicon.png =404;
+ expires 7d;
+ add_header Cache-Control "public";
+ access_log off;
+ }
+
location = /login {
try_files /index.html =200;
}
@@ -85,6 +99,7 @@ server {
location ^~ /order/fulfillOrders { try_files /index.html =200; }
location ^~ /order/waybillManage { try_files /index.html =200; }
location ^~ /order/pickupOrder { try_files /index.html =200; }
+ location ^~ /order/customs9610Order { try_files /index.html =200; }
location ^~ /order/batchJobs { try_files /index.html =200; }
location ^~ /order/templateMapping { try_files /index.html =200; }
location ^~ /order/platformStore { try_files /index.html =200; }
diff --git a/package.json b/package.json
index 0a9dcae..2026724 100644
--- a/package.json
+++ b/package.json
@@ -43,6 +43,7 @@
"@codemirror/state": "^6.5.4",
"@codemirror/theme-one-dark": "^6.1.3",
"@codemirror/view": "^6.39.17",
+ "@fontsource/zcool-qingke-huangyou": "^5.3.0",
"@handsontable/vue3": "^16.2.0",
"@types/lodash-es": "^4.17.12",
"@vueuse/core": "^9.3.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 52db08d..cb50e42 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -32,6 +32,9 @@ importers:
'@codemirror/view':
specifier: ^6.39.17
version: 6.39.17
+ '@fontsource/zcool-qingke-huangyou':
+ specifier: ^5.3.0
+ version: 5.3.0
'@handsontable/vue3':
specifier: ^16.2.0
version: 16.2.0(handsontable@16.2.0)(vue@3.5.18(typescript@4.9.5))
@@ -922,6 +925,9 @@ packages:
'@floating-ui/utils@0.2.10':
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
+ '@fontsource/zcool-qingke-huangyou@5.3.0':
+ resolution: {integrity: sha512-6/ld8x/knq1NjDQxLSyg9pDnBPOmtWDb30ZTFk+n8OxfkBoUvPAxh3aV/6+UFGmA5CekJfcgpUwd2/x/weLvSQ==}
+
'@handsontable/pikaday@1.0.0':
resolution: {integrity: sha512-1VN6N38t5/DcjJ7y7XUYrDx1LuzvvzlrFdBdMG90Qo1xc8+LXHqbWbsTEm5Ec5gXTEbDEO53vUT35R+2COmOyg==}
@@ -7893,6 +7899,8 @@ snapshots:
'@floating-ui/utils@0.2.10': {}
+ '@fontsource/zcool-qingke-huangyou@5.3.0': {}
+
'@handsontable/pikaday@1.0.0': {}
'@handsontable/vue3@16.2.0(handsontable@16.2.0)(vue@3.5.18(typescript@4.9.5))':
diff --git a/scripts/postbuild-cleanup-dist.js b/scripts/postbuild-cleanup-dist.js
index de2f8d0..bbff6fc 100644
--- a/scripts/postbuild-cleanup-dist.js
+++ b/scripts/postbuild-cleanup-dist.js
@@ -74,6 +74,12 @@ function copyOfficialSite() {
fs.copyFileSync(src9610, path.join(dist, '9610.html'));
}
+ const faviconSrc = path.join(siteDir, 'assets', 'img', 'logo1.png');
+ if (fs.existsSync(faviconSrc)) {
+ fs.copyFileSync(faviconSrc, path.join(siteDir, 'assets', 'img', 'favicon.png'));
+ fs.copyFileSync(faviconSrc, path.join(dist, 'favicon.png'));
+ }
+
console.log('[postbuild] copied official site to dist/site (assets under /site/assets)');
}
diff --git a/src/api/order/customs9610.ts b/src/api/order/customs9610.ts
new file mode 100644
index 0000000..ead6e52
--- /dev/null
+++ b/src/api/order/customs9610.ts
@@ -0,0 +1,37 @@
+import { axiosInstance } from '@/api/rbac'
+import { assertBusinessOk, omsUrl, parseListPayload, unwrapData } from '@/api/oms/common'
+
+function postOk(path: string, body: Record) {
+ return axiosInstance.post(omsUrl(path), body).then((res) => {
+ assertBusinessOk(res.data)
+ return unwrapData(res.data)
+ })
+}
+
+function getData(path: string, params?: Record) {
+ return axiosInstance.get(omsUrl(path), { params }).then((res) => unwrapData(res.data))
+}
+
+export const getCustoms9610List = (body: Record) =>
+ axiosInstance.post(omsUrl('/order/customs-9610/list'), body).then((res) => parseListPayload(res.data))
+
+export const getCustoms9610StatusCounts = (params?: { customerId?: number }) =>
+ getData('/order/customs-9610/status-counts', params as Record | undefined)
+
+export const getCustoms9610Detail = (id: number | string) =>
+ getData('/order/customs-9610/detail', { id })
+
+export const updateCustoms9610 = (body: Record) =>
+ postOk('/order/customs-9610/update', body)
+
+export const declareCustoms9610 = (id: number | string) =>
+ postOk('/order/customs-9610/declare', { id })
+
+export const declareCustoms9610Batch = (ids: Array) =>
+ postOk('/order/customs-9610/declare-batch', { ids })
+
+export const fetchCustoms9610ManifestBatch = (ids: Array) =>
+ postOk('/order/customs-9610/fetch-manifest-batch', { ids })
+
+export const fetchCustoms9610DeclarationFormBatch = (ids: Array) =>
+ postOk('/order/customs-9610/fetch-declaration-form-batch', { ids })
diff --git a/src/api/order/pickupOrder.ts b/src/api/order/pickupOrder.ts
index 6272f01..ca84ef9 100644
--- a/src/api/order/pickupOrder.ts
+++ b/src/api/order/pickupOrder.ts
@@ -30,6 +30,9 @@ export const createPickupOrderV2 = (body: PickupOrderCreateBody) =>
export const getPickupOrderList = (body: Record) =>
axiosInstance.post(omsUrl('/order/pickup-order/list'), body).then((res) => parseListPayload(res.data))
+export const getPickupOrderStatusCounts = (params?: { customerId?: number }) =>
+ getData('/order/pickup-order/status-counts', params as Record | undefined)
+
export const getPickupOrderDetail = (id: number | string) =>
getData('/order/pickup-order/detail', { id })
diff --git a/src/components/RbacSplit/RbacDetailShell.vue b/src/components/RbacSplit/RbacDetailShell.vue
index 9cf33dc..0757566 100644
--- a/src/components/RbacSplit/RbacDetailShell.vue
+++ b/src/components/RbacSplit/RbacDetailShell.vue
@@ -12,33 +12,38 @@