diff --git a/.gitignore b/.gitignore index 4f074fd..8721ed8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ .DS_Store **/.DS_Store +.playwright-cli +.superpowers +output +docs \ No newline at end of file diff --git a/悦/货代SAAS平台后台/PDA(海外)/index.html b/悦/货代SAAS平台后台/PDA(海外)/index.html new file mode 100644 index 0000000..c3b9a26 --- /dev/null +++ b/悦/货代SAAS平台后台/PDA(海外)/index.html @@ -0,0 +1,417 @@ + + + + + +Overseas Warehouse PDA + + + + + + +
+ +
+ + + diff --git a/悦/货代SAAS平台后台/index.html b/悦/货代SAAS平台后台/index.html index 145f98d..147d977 100644 --- a/悦/货代SAAS平台后台/index.html +++ b/悦/货代SAAS平台后台/index.html @@ -147,7 +147,7 @@ canvas{max-height:280px} #rsq-wrap.rsq-collapsed .rsq-toggle svg{transform:rotate(180deg)} .recon-main-table-wrap{overflow-x:auto} #page-customer-arap .arap-table-wrap{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch} -#page-customer-arap .arap-table{width:2005px;min-width:2005px;table-layout:fixed;border-collapse:collapse;font-size:12.5px} +#page-customer-arap .arap-table{width:1800px;min-width:1800px;table-layout:fixed;border-collapse:collapse;font-size:12.5px} #page-customer-arap .arap-table th{height:44px;padding:10px 8px;background:#f5f6fb;color:#333;font-size:12px;font-weight:600;text-align:left;white-space:nowrap} #page-customer-arap .arap-table td{height:55px;padding:10px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} #page-customer-arap .arap-table th:nth-child(1),#page-customer-arap .arap-table td:nth-child(1){padding-left:5px;padding-right:5px} @@ -1119,6 +1119,64 @@ body.dashboard-fullscreen #page-dashboard table:has(>thead)>tbody>tr>td{backgrou #modal-fba-carton-form .form-group{min-width:0} #modal-fba-carton-form input,#modal-fba-carton-form select,#modal-fba-carton-form textarea{box-sizing:border-box;max-width:100%} @media(max-width:600px){#modal-fba-carton-form .modal{display:flex;flex-direction:column;width:calc(100vw - 24px)!important;max-height:calc(100vh - 24px);overflow:hidden}#modal-fba-carton-form .modal-body{overflow-x:hidden;overflow-y:auto;padding:18px}#modal-fba-carton-form .form-row{grid-template-columns:minmax(0,1fr);gap:14px;margin-bottom:14px}#modal-fba-carton-form .modal-footer{flex:0 0 auto;padding:12px 18px}#modal-fba-carton-form .modal-footer .btn{min-width:0}} + +/* ===== 货柜托盘标全屏预览 ===== */ +.ct-pallet-preview-modal{--ct-pallet-code-size:120px;--ct-pallet-destination-size:180px;inset:0;padding:0;background:#1b1f22;backdrop-filter:none;align-items:stretch;justify-content:stretch} +.ct-pallet-preview-panel{width:100vw;max-width:none;height:100vh;max-height:none;border:0;border-radius:0;box-shadow:none;overflow:hidden;display:flex;flex-direction:column;background:#1b1f22;animation:none} +.ct-pallet-preview-toolbar{min-height:72px;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:12px 18px;border-bottom:1px solid #343a3f;background:#252a2e;color:#fff;box-sizing:border-box} +.ct-pallet-preview-meta{flex:0 0 176px;display:grid;gap:3px;min-width:176px} +.ct-pallet-preview-meta>span{font-size:12px;color:#b9c0c5} +.ct-pallet-preview-meta strong{font-size:15px;color:#fff;white-space:nowrap} +.ct-pallet-preview-controls{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0;flex-wrap:wrap} +.ct-pallet-font-control{display:flex;align-items:center;gap:8px;white-space:nowrap;font-size:12px;color:#d9dee2} +.ct-pallet-font-stepper{height:34px;display:grid;grid-template-columns:34px 48px 34px;align-items:stretch;border:1px solid #535b61;border-radius:6px;overflow:hidden;background:#1b1f22} +.ct-pallet-font-stepper button{border:0;background:#343a3f;color:#fff;font-size:18px;line-height:1;cursor:pointer} +.ct-pallet-font-stepper button:hover{background:#454d53} +.ct-pallet-font-stepper button:focus-visible,.ct-pallet-preview-close:focus-visible,.ct-pallet-preview-toolbar .btn:focus-visible{outline:2px solid #69b1ff;outline-offset:2px} +.ct-pallet-font-stepper output{display:flex;align-items:center;justify-content:center;border-inline:1px solid #535b61;color:#fff;font-size:12px;font-variant-numeric:tabular-nums} +.ct-pallet-preview-toolbar .btn{height:34px;padding:0 14px;border-radius:6px;font-size:12px;box-shadow:none;transform:none} +.ct-pallet-preview-toolbar .btn-default{background:#fff;color:#374151;border:1px solid #d1d5db} +.ct-pallet-preview-toolbar .btn-primary{background:#1677ff;color:#fff;border:1px solid #1677ff} +.ct-pallet-print-action{background:#0958d9!important;border:1px solid #0958d9!important;color:#fff} +.ct-pallet-print-action:hover,.ct-pallet-print-action:focus{background:#003eb3!important;border-color:#003eb3!important;color:#fff} +.ct-pallet-preview-toolbar .btn:hover{transform:none;box-shadow:none} +.ct-pallet-preview-close{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:6px;background:transparent;color:#d9dee2;font-size:24px;line-height:1;cursor:pointer} +.ct-pallet-preview-close:hover{background:#343a3f;color:#fff} +.ct-pallet-preview-scroll{flex:1;min-width:0;min-height:0;overflow:auto;padding:28px;background:#1b1f22;box-sizing:border-box} +#ct-pallet-label-list{width:max-content;min-width:100%;display:grid;justify-items:center;gap:28px} +.ct-pallet-label-sheet{page:ctPalletLabel;position:relative;width:297mm;height:210mm;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12mm;padding:14mm;background:#fff;color:#000;box-shadow:0 8px 28px rgba(0,0,0,.34);overflow:hidden;page-break-after:always;break-after:page;font-family:"Microsoft YaHei","SimHei",sans-serif} +.ct-pallet-label-sheet:last-child{page-break-after:auto;break-after:auto} +.ct-pallet-label-code,.ct-pallet-label-destination{width:100%;max-width:100%;margin:0;text-align:center;font-weight:900;line-height:.95;letter-spacing:0;overflow-wrap:anywhere;word-break:break-word} +.ct-pallet-label-code{font-size:var(--ct-pallet-code-size)} +.ct-pallet-label-destination{font-size:var(--ct-pallet-destination-size)} +.ct-pallet-label-empty{width:min(520px,calc(100vw - 48px));padding:28px;text-align:center;color:#c8cdd1;border:1px solid #454b50;border-radius:6px;background:#252a2e;box-sizing:border-box} +@media(max-width:900px){ + .ct-pallet-preview-toolbar{align-items:flex-start;gap:10px;padding:10px 12px;flex-wrap:wrap} + .ct-pallet-preview-meta{flex-basis:100%;min-width:0} + .ct-pallet-preview-controls{width:100%;justify-content:flex-start} + .ct-pallet-preview-scroll{padding:16px 12px} +} +@media(max-width:760px){ + .ct-pallet-preview-controls{gap:8px} + .ct-pallet-preview-controls .btn,.ct-pallet-preview-controls .booking-print-close,.ct-pallet-preview-controls .ct-pallet-preview-close,.ct-pallet-font-control button{min-height:40px} + .ct-pallet-preview-controls .ct-pallet-preview-close{min-width:40px} + .ct-pallet-font-stepper{height:40px;grid-template-columns:40px 48px 40px} + .ct-pallet-font-stepper button{width:40px;height:40px} +} +@page ctPalletLabel{size:A4 landscape;margin:0} +@media print{ + html:has(body.ct-pallet-printing),body.ct-pallet-printing{width:297mm!important;min-width:0!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;background:#fff!important;overflow:visible!important} + body.ct-pallet-printing>*:not(#modal-ct-pallet-label-preview){display:none!important} + body.ct-pallet-printing #modal-booking-print-preview{display:none!important} + body.ct-pallet-printing #modal-ct-pallet-label-preview{display:block!important;position:static!important;inset:auto!important;width:297mm!important;height:auto!important;padding:0!important;background:#fff!important} + body.ct-pallet-printing #modal-ct-pallet-label-preview,body.ct-pallet-printing #modal-ct-pallet-label-preview *{visibility:visible!important} + body.ct-pallet-printing .ct-pallet-preview-panel{display:block!important;position:static!important;width:297mm!important;height:auto!important;max-width:none!important;max-height:none!important;margin:0!important;background:#fff!important;overflow:visible!important} + body.ct-pallet-printing .ct-pallet-preview-toolbar{display:none!important} + body.ct-pallet-printing .ct-pallet-preview-scroll{display:block!important;position:static!important;width:297mm!important;height:auto!important;padding:0!important;background:#fff!important;overflow:visible!important} + body.ct-pallet-printing #ct-pallet-label-list{display:block!important;width:297mm!important;min-width:0!important;margin:0!important} + body.ct-pallet-printing .ct-pallet-label-sheet{display:flex!important;width:297mm!important;height:210mm!important;margin:0!important;box-shadow:none!important;page-break-after:always;break-after:page} + body.ct-pallet-printing .ct-pallet-label-sheet:last-child{page-break-after:auto;break-after:auto} +} @@ -1189,8 +1247,6 @@ body.dashboard-fullscreen #page-dashboard table:has(>thead)>tbody>tr>td{backgrou - - @@ -4415,8 +4471,8 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台
-
操作亚马逊仓AMS+换单费内陆清关/报关费关税提柜费拆柜费托盘费派送费费用小计海运费成本总成本(USD)汇率折人民币重量(kg)成本单价(元/kg)建议报价
-
计算公式:费用小计 = AMS/换单 + 内陆 + 清关/报关 + 关税 + 提柜 + 拆柜 + 托盘 + 派送;总成本 = 小计 + 海运费;成本单价 = 总成本 × 汇率 ÷ 计费基数。
+
操作亚马逊仓AMS+换单费内陆清关/报关费关税提柜费拆柜费托盘费派送费费用小计海运费成本总成本(USD)汇率折人民币重量(kg)成本单价(元/kg)销售底价建议报价
+
计算公式:费用小计 = AMS/换单 + 内陆 + 清关/报关 + 关税 + 提柜 + 拆柜 + 托盘 + 派送;总成本 = 小计 + 海运费;成本单价 = 总成本 × 汇率 ÷ 计费基数;销售底价 = 建议报价 - 0.6。
@@ -4508,7 +4564,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台 -
销售编号销售姓名区域/团队客户数订单数销售额(元)综合提成率提成金额(元)操作
+
销售编号销售姓名区域/团队客户数订单数销售额(元)综合提成率固定提成(元)溢价提成(元)垫款利息(元)提成金额(元)操作
@@ -5925,16 +5981,15 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台
客户账户数
0个
账户实际余额
¥0
冻结金额
¥0
本月累计扣款
¥0
客户账户
-
操作客户基本信息客户编号联系人联系电话实际余额冻结金额可用余额账户状态最后变动时间
+
操作客户基本信息客户编号联系人联系电话实际余额冻结金额可用余额账户状态最后变动时间
+
充值申请记录
操作申请单号客户名称充值金额充值方式到账日期凭证数量申请时间申请状态审核人审核时间审核备注
-
客户账户详情正常
+
客户账户详情正常
实际余额
¥0.00
冻结金额
¥0.00
可用余额
¥0.00
账户明细(充值/扣款)
至
流水号发生时间扣款类型关联单据收入支出变动后余额操作人备注
- -
@@ -6006,7 +6061,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台
- + @@ -6019,6 +6074,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台 + @@ -6258,7 +6314,6 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台 - @@ -6318,7 +6373,6 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台 - @@ -7772,7 +7826,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台
-
货柜列表
+
货柜列表
@@ -7790,7 +7844,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台 ⟳ 刷新⚙ 设置
-
操作订单状态 派送单号 费用类型金额 集装箱号 柜号
操作 结算单号 客户公司名费用类型 币种 应收金额 已收操作 结算单号 供应商费用类型 币种 应付金额 已付
操作报空预警集装箱号装柜清单号货柜状态是否异常柜号目的港清关资料DO资料PU资料码头车队仓库提单号船名航次箱型(货柜类型)船公司始发港目的港货柜容量(m³)装柜时间预计开船时间实际开船时间预计到港时间实际到港时间预计提柜时间预计报空时间报空时间还柜时间
+
操作报空预警集装箱号装柜清单号货柜状态是否异常柜号目的港清关资料DO资料PU资料码头车队仓库提单号船名航次箱型(货柜类型)船公司始发港目的港货柜容量(m³)装柜时间预计开船时间实际开船时间预计到港时间实际到港时间预计提柜时间约车时间报空时间还柜时间
@@ -7816,6 +7870,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台
+
装柜清单
@@ -7826,8 +7881,6 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台 展开 ▼
- -
已选择 0 项   清空 @@ -7840,7 +7893,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台
- + @@ -8272,13 +8325,12 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台
财务利润表
- - - +
查询维度 + 时间 @@ -8397,6 +8449,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台
+ @@ -8412,6 +8465,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台 + @@ -8442,7 +8496,11 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台
-
+
+
+
+ +
@@ -8809,6 +8867,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台
+ @@ -8819,7 +8878,7 @@ FORM: 通用模块中的管理清单加分区编辑弹窗,作为既有后台 - +
@@ -9994,11 +10053,11 @@ FORM: 采用现有后台的列表加标准详情结构,保持高信息密度
-
国内采购订单详情

商品信息

库存信息

订单信息

快递信息

进销存明细

+
国内采购订单详情

商品信息

库存信息

订单信息

快递信息

操作记录

-
海外采购订单详情

商品信息

库存信息

订单信息

快递信息

进销存明细

+
海外采购订单详情

商品信息

库存信息

订单信息

快递信息

操作记录

@@ -10224,7 +10283,6 @@ FORM: 采用现有后台的列表加标准详情结构,保持高信息密度
- @@ -10789,7 +10847,7 @@ FORM: 采用现有后台的列表加标准详情结构,保持高信息密度
-
+
@@ -11822,8 +11880,8 @@ FORM: 采用现有后台的列表加标准详情结构,保持高信息密度
-
-
+
+
保存后记录将进入“待审核”,审核通过后不可编辑。
@@ -11836,7 +11894,7 @@ FORM: 采用现有后台的列表加标准详情结构,保持高信息密度 @@ -11905,6 +11963,25 @@ FORM: 采用现有后台的列表加标准详情结构,保持高信息密度
+ + + + + + + + + + + +
操作操作 仓库 装柜清单号 集装箱号 当前公里码(km) 司机 联系电话 状态 区域 操作当前公里码(km) 外派单位 联系电话 当前派送单 最近更换原因 状态 托盘类型 仓库 容积(m³)托盘重量(kg) 采购价格 所属FBA仓 状态