From b53fe81999b30e1101e86bd44acc9abfb82ded48 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Fri, 31 Jul 2026 15:34:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 +- index.html | 6 +- .../counterparties-import-template.xlsx | Bin 7039 -> 0 bytes .../express-companies-import-template.xlsx | Bin 6141 -> 0 bytes src/api/platformIam.ts | 28 ++ src/assets/brand/baiyue-favicon.png | Bin 0 -> 19511 bytes src/assets/brand/baiyue-logo-white.png | Bin 0 -> 26917 bytes src/assets/brand/baiyue-mark-white.png | Bin 0 -> 10381 bytes src/components.d.ts | 4 - .../PlatformFirstLegOrdersPanel.vue | 2 +- src/components/RolePreviewSwitcher.test.ts | 63 --- src/components/RolePreviewSwitcher.vue | 52 --- .../StaticBatchImportDialog.test.ts | 19 - src/components/StaticBatchImportDialog.vue | 118 ------ src/layouts/AppLayout.test.ts | 330 +-------------- src/layouts/AppLayout.vue | 211 +--------- src/router/index.ts | 13 +- src/stores/accessPreview.test.ts | 211 +--------- src/stores/accessPreview.ts | 121 +----- src/stores/adminData.test.ts | 126 ------ src/stores/adminData.ts | 389 ------------------ src/styles/index.css | 20 +- src/views/AccessControlledActions.test.ts | 354 ---------------- src/views/CounterpartiesView.vue | 182 -------- src/views/CustomersView.vue | 190 --------- src/views/EnterpriseReviewsView.test.ts | 4 + src/views/EnterpriseReviewsView.vue | 2 +- src/views/ExpressCompaniesView.test.ts | 78 ---- src/views/ExpressCompaniesView.vue | 153 ------- src/views/FirstLegOrdersView.vue | 238 +---------- src/views/ForbiddenView.test.ts | 81 +--- src/views/ForbiddenView.vue | 21 +- src/views/IntegrationUnavailableView.vue | 33 ++ src/views/InternalUsersView.vue | 163 ++++---- src/views/LoginView.test.ts | 37 +- src/views/LoginView.vue | 11 +- src/views/PermissionsView.vue | 64 +-- src/views/RolesView.test.ts | 8 +- src/views/RolesView.vue | 100 +++-- src/views/WarehousesView.test.ts | 8 +- src/views/WarehousesView.vue | 11 +- 41 files changed, 362 insertions(+), 3106 deletions(-) delete mode 100644 public/templates/counterparties-import-template.xlsx delete mode 100644 public/templates/express-companies-import-template.xlsx create mode 100644 src/assets/brand/baiyue-favicon.png create mode 100644 src/assets/brand/baiyue-logo-white.png create mode 100644 src/assets/brand/baiyue-mark-white.png delete mode 100644 src/components/RolePreviewSwitcher.test.ts delete mode 100644 src/components/RolePreviewSwitcher.vue delete mode 100644 src/components/StaticBatchImportDialog.test.ts delete mode 100644 src/components/StaticBatchImportDialog.vue delete mode 100644 src/stores/adminData.test.ts delete mode 100644 src/stores/adminData.ts delete mode 100644 src/views/AccessControlledActions.test.ts delete mode 100644 src/views/CounterpartiesView.vue delete mode 100644 src/views/CustomersView.vue delete mode 100644 src/views/ExpressCompaniesView.test.ts delete mode 100644 src/views/ExpressCompaniesView.vue create mode 100644 src/views/IntegrationUnavailableView.vue diff --git a/README.md b/README.md index 20b415e1..738a759a 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ pnpm test 工作台已从一期路由与菜单移除;登录后按当前角色进入第一个有权限的业务页面。一期 Admin 路由聚焦登录、客户及注册审核、平台收货仓、快递公司、往来单位、头程订单、内部用户、角色管理和菜单权限。 -后台菜单按“业务管理”和“系统管理”分组。企业审核、平台角色、菜单及按钮权限资源已接入真实 IAM 接口;客户档案、基础资料和部分系统管理页面仍使用 Pinia 模拟数据,不请求尚未确定的 Java 业务接口。 +后台菜单按“业务管理”和“系统管理”分组。企业审核、仓库、头程订单、平台角色、菜单及按钮权限资源均接入真实接口;内部用户使用 IAM 的真实查询和新增接口。运行时不再提供本地演示业务数据或静态角色预览。 ## 本地 Gateway 联调 @@ -42,19 +42,8 @@ API_PROXY_TARGET=http://8.163.30.128:9000 仓库管理已接入真实平台 Warehouse API,支持按租户筛选、详情、新增、编辑和启停,并在更新时保留后端返回的地址、能力和截单时间等完整字段。停用仓库保留历史数据,但不再提供给客户新建头程订单选择;订单详情使用下单时保存的仓库编码、名称和地址快照,仓库主数据后续修改不改变历史展示。本阶段不包含 FBA/海外目的仓、库存、库位或出入库作业。 -快递公司和往来单位一期静态维护已完成:支持筛选、详情、新增、编辑、启停、唯一校验、标准模板下载和导入文件基础检查;往来单位支持六类多选角色、联系人和完整地址。两类主数据只导入不导出,导入只新增,任一行错误整批失败。工作表内容、模板版本、重复数据和整批事务必须由后端解析校验;接口提供前,前端不模拟校验或导入成功。头程订单列表、详情、状态历史、内部备注和快递信息已经接入真实平台 Order API;订单不设“已驳回”,后台修改待审核订单后仍保持待审核并写入审计。快递公司和平台往来单位仍使用 Pinia,等待后端正式契约后接入。 +头程订单列表、详情、状态历史、内部备注和快递信息已经接入真实平台 Order API;订单不设“已驳回”,后台修改待审核订单后仍保持待审核并写入审计。客户档案、快递公司和平台往来单位尚无正式平台端接口,相应页面明确展示不可用状态,不展示静态数据,也不模拟新增、编辑或导入成功。内部用户后端当前只支持查询和新增,编辑、启停、重置密码及角色分配保持不可用。 真实接口错误会保留后端返回的业务错误码、`requestId` 和 `traceId`。登录、企业审核、平台角色及权限资源的主要失败态支持直接复制追踪标识,便于与后端日志关联。 -平台联调账号和密码只在 Vite 开发模式下预填,联调提示也只在开发模式显示。生产登录表单默认留空;生产构建产物不得包含本地联调账号、密码或开发提示文案。 - -## 静态权限预览 - -管理后台支持在顶栏切换本地角色,预览该角色可见的菜单、可访问页面和可用操作。预览角色保存在浏览器本地,刷新后继续保留;退出登录时清除,下次登录重新使用默认角色。 - -该功能仅用于静态页面和交互验收: - -- 预览角色和演示业务数据来自本地 Pinia;真实登录会切换到服务端权限,并让已接入页面调用 Java 业务 API。 -- 当前不模拟角色的 `dataScope` 数据范围。 -- 菜单隐藏、页面拦截和操作禁用不能替代服务端鉴权。 -- 后续接入 Java 服务时,接口仍须独立校验登录身份、角色权限和数据范围。 +登录表单在开发和生产环境均默认留空,不包含联调账号、密码或演示提示。菜单、路由和操作权限只使用真实登录会话返回的服务端权限快照;前端控制仅改善体验,服务端仍须独立校验身份、角色权限和数据范围。接口失败时页面展示真实错误及追踪标识,不回退到假数据或模拟成功。 diff --git a/index.html b/index.html index 02879339..47c0ca33 100644 --- a/index.html +++ b/index.html @@ -3,12 +3,12 @@ - - 虫虫出海管理后台 + + + 柏悦物流管理后台
- diff --git a/public/templates/counterparties-import-template.xlsx b/public/templates/counterparties-import-template.xlsx deleted file mode 100644 index 3e5a8bc98271621f60128073554211f548fd8fc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7039 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 XV_;=myt9WcV-7{k&JpwVv%CKQjpTJ; diff --git a/public/templates/express-companies-import-template.xlsx b/public/templates/express-companies-import-template.xlsx deleted file mode 100644 index 5b2d267ff8884768774f528c45cfe57e875726e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6141 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 EAL;Sn`Tzg` diff --git a/src/api/platformIam.ts b/src/api/platformIam.ts index 556a167b..7ccd5870 100644 --- a/src/api/platformIam.ts +++ b/src/api/platformIam.ts @@ -76,6 +76,26 @@ export interface CreatePlatformPermissionRequest { sortNo: number } +export interface PlatformInternalUser { + membershipId: number | string + userId: number | string + authUserId: number | string + username: string + displayName: string + memberType: string + memberNo: string | null + status: 'ACTIVE' | 'DISABLED' | string + roleIds: Array +} + +export interface CreatePlatformInternalUserRequest { + authUserId: number | string + userType: string + displayName: string + phone: string + email: string +} + async function getData(path: string): Promise { const response = await http.get, ApiEnvelope>(path) return unwrapApiResponse(response) @@ -163,6 +183,14 @@ export function createPlatformPermission(payload: CreatePlatformPermissionReques return postData('/platform/v1/iam/permissions', payload) } +export function listPlatformInternalUsers() { + return getData('/platform/v1/iam/internal-users') +} + +export function createPlatformInternalUser(payload: CreatePlatformInternalUserRequest) { + return postData('/platform/v1/iam/internal-users', payload) +} + export function approveEnterpriseReview(reviewId: number, comment: string) { return postData(`/platform/v1/iam/reviews/${reviewId}/approve`, { comment }) } diff --git a/src/assets/brand/baiyue-favicon.png b/src/assets/brand/baiyue-favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..e6151c8896bb003eaa0e17fd1db7eb26c8eabb79 GIT binary patch literal 19511 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 literal 0 HcmV?d00001 diff --git a/src/assets/brand/baiyue-mark-white.png b/src/assets/brand/baiyue-mark-white.png new file mode 100644 index 0000000000000000000000000000000000000000..f5dfbcf943f429f347b6b851c4322357e9cb9b5c GIT binary patch literal 10381 zcmai3Wn5HW&|XqfkPhjPB?K1`0qKUNOOR&il$0(BL4kz@TsjwNr6mo(r5mJ`?xm6R zz5L%V@3;5E{oUPj=FFKhcjlRA?tQDHr9w)?Km-DTNYzvo^*|sjec)0hzz0V5OquwB z8==I3DD#wh2$w9>o?>Svfa^fL`GE953*GayCNrvRCD5% z^Ld&bEh`U+@3!fY%KI9pD7K4)ysYbB$Hw0m24(PCn+O`1$8wRErL`F^Clo z`pr(UL5!8G2SPtKKvRLxbf8cAbuc0j0t9jm2$p9Dm6L*YPt>IGK)=dT=V?K|3Llmc zfZk()kUT1!*s`r4E5isqe(bN`LHU)k?2mE3R%3;mG(uFc!`tydeu*!V$z-iS;YfM@ z0TAmmY>)yo-HP2n3L|pTbBb5c4@Z5rQ5c5 z*tj5atzpcp<=Wa5j^|ITPrjWlWiLUqMj*$f3v=N)!hBPrk-&?DfM?gT%((?R=;uri ziHM2!xNHjAg;o-z{|W!`_?-}X2F%{h1s;H2Wy&I}z7|E@ys~!ptJX{0=*N|R;(ort zar-km>?RRBx-9b9jGsFG@WtC^9d^y10blgsifp}U%M@E-kVBUA8^Tn7Qcz`#_E)XO zdky`rUqkn?uoLdT81n8YCh#Dn{+A_Tm^P^_`nrn?A;KWV{r`#p5ctif(H8MF_cpRfG=?YGPy$gL1eJNcNy&w{b!W+*( zq78(mA&f|e4`d%a3}5h`@di`F`zX>R(u~qV(>BTt4809yCIiZe4Jr)DDlCjbP|AjN zIxA&_6Eqc*WlV;xWlyVz^!)XbbcS^;i#jZCA}?)8Yh$97^J7$t3~ZZv=-;!^^g!$m zU&v2+8R6{kyL`~Jd0Bh03-!ahV)PRXg6b=Hm)lp`!|ij{Ukzg2@A>@uKzt@!eTZ#{ zbSOvwM?gm4^OSRyeN||c*lgfz$E?ks*B;H@&Md~)GeWUYG^$qgsF`~|)?r2THLbLLrN={?N|8mod6(zbHcpVa;;!QE)ei6= z!X?wbWwd_WXJ7!$KVSK)vUfL8d@|c5*Sce-ZSMMgbcs@Sw|c_UgrDiN>B0SY>6+>1 zl^=|xjRK5LjixKrrp$Kucig6oU3D0Zvq-Wevici8R%KOn`DM8+Q7uy?fycn7`tGw& zcCUAdb~AVJ_r%Yv&$!Oq&W4!=9#Sw(N%}|zd-?bd__=zv?G*nJ`BBzY_G8P~fzhGB zJLg!G7NwEgPm$r5L96dp8ei(37ucV+#<1Tq)-Zlrl+~IwUp3=4u`nRj9a3?n`8bQQ z*ZhYRM(*U`{KfLCft8%ntkUnt$s2+eeikMcSMAK&b=lmxQ$lX&xvrPL+xvs8B&4P6 zE{C>oq(=Z0yz)8cpQ>Cn zxpHVvJWMKk_eFBfxzWqdq0-q^&((G}t2w;6ygA}^>|dqB3<@7gPQtynt6jgkq~5N0 zV{f=-3TLlo8l?N!Ry4~rJX%nkPK0{bd1qf_U#cS)Yjt*fYYaZ;W*YbQk+_> z9G-bKBOs2*Mr0T1kvgT<^Gypi@ib}M^YNvUt_G~T^)aT#_MNYCTzDVPQM*P%M~mw9 zs&($uKm|YYy?#me@^!OnyQ=Ag@RI%Q_5}xVBu#L8@+Y0 zr}cmQ#9Xfh_S)%SETrGDzc&3wXZeMm;gNH|{86G_)L2Q00$-%DNLm@9x8J?`#Po|T zwRIZI5aXON`O+wimp09^(zEho_1{m*&Fjm?T9%W+rvYxWvy19YeS15qJHX_l4o$6fh4?4ad#Y8Q+h(YYOHSoPQc4=1%Idvb~k6cJ%uwiWJTn}AnR`J*F z&P@s`3A%TtgxPWS@o=55>Flf}bklqKo>^7Gb1f^}V>W9q)4##fl=uF3xwUVPmQcY# zD>|D6LqFz!3@#zVnobFJR0H_NBszU71&ZAAr3%_Ho9~Kpm@Jr7I-354VxFwn`u-G6 zGS1D<;gLGLSdC0wDTS5h=4i=CO(5q3&Y{;x7js?nb_a#wTp3!QeQ1;AdGGP!Mw0nK zo97Apxy>9`lSY+PwUkPz=glA0nwK6scIW+j#?PyLPBeEUM=|4Jm(E`&y{G?9KQ_+` zXvg&IGB&w$FFb7KYB~MuceY3CPqYu6HxEpDU31+rd$WD-l59Jy{`RxoSGV7Pt-e|f z|1crL+$W69y+!;RkNq>IGN3Zaq0I3Rn^l3fdaWepztUV=;9x6-vWVrg+QQf zD-cNH1HeK(QY^cbK_I3UHAOjt*R#7hF2+>;x#2q;Cn}r9t=@ja*;~kk0a%Zkp7%RS z(I?|YY_GNFIO63r*>Dvj(<9@E#@I*96p5*e!bif5Wd+{L;lX>}5?S=}d_=zbj-44Y zeTCgiPW!pQ!#5z;J5kA?^u-X4QW1W zq|HmQN$KzYucpSr!5>j*Q1*9)b?-m)ZWQf(tg|1nGnqv(udAQ26jNx-{Ef;IQO8 z;b(LYFAF*cgH%o*5g}5KJhSP)|0W-me%TqIK2~*T^#-Wn*j#|Aq@vy z`F4jGgcbok`+y5d2D9UVU<@Wmc0G_RDvk=2>;$um2dF&~(s1v;iCPsR5E>zt1p*f>8@2n^xjtOTaaE$4iqMSm|o z$g*x12oVoH*W_$MuI0@SHW>m1*UNjD+xo?2Gkwm)#P3JS0i4@f=DNzo&!3&(cxLm?XMDXq$`kIi zY1fClH0lFc4I7osZhGo?$@C7Pw*JjYRc!o5n?ymhr#-OgRzgE&w2f* zTL>|Wx6qZHa{BO2v^%BcG{0y^OHi`T9C2#FW;s@I3h5U;qy^kR6hQeqBh0N=cpb*>GTItrF!>L`8z}$mzny>d< z1n~L@k&n9bA=E`){ARJe*Qwo?j zJt#-POnrW5vvFUXzGqTDDUE*0EG(3&6T~93X2%F)cow4FfdS8k8HKuNp`ulYp)(4; z_G1c4C=vvSygULHxMrHL+iYwCMo*{3#L=C?pn zJHOm8Zy1z(*q-!{ej>K|{7@!nw#|QHoc4AbtfSRya?y~&(II=i(&l3-Y0b%1Hy;7@ z<=5wA_zpePX5{CHeE7h2p^UFD?%}D|N>c#lV{U3yUmWa9Ev&R9!wISvFp~JY)oZVV zq4Q8fvI(;q;31dpt0oWs&{8#~+g!7yqKhx-JyC9TZk*>`rNvj*Db5$2t}{}r-yH${ z!8+cw;o5+!P^clZq~Z7H(Ks#4B!{rOFvv1BIDb8|qUyMM*0(9C4r~bkQ%#esIC%K& zjQdJ8o8)906i<%41tXn15%s){BVN&RrVh&UpoH{lcRytC2w77TL~d`T03Gh_k5`!O zzIjRrIp*bpG2kQJ(TC5tc}I~6-t?Sptj-r&bB<1DQn$G{K?+~A|NeE-HVS=zvVO0( z9{YOr{njDP-5R1u)(NqIv}rs1AEjc*mxV)bC|y#B| z`-fk4sdQ{?K?Wg>y0b9;{>P)ul+LSt4i6wxZF&mE5HcS1&nPvNYBfVtMfp0Fk6Pe@fQ&TY4jGCIn<#{uH%+up05^_j6oWASZOwsP#&F~nGM=;+_;N$a*K_k;N182mtshgtE{k`0*b8|SdO{E-IPb1GXQ4SoC_VgE zgXr=ae8#o)6kr0Dy0w^EH*c0SpzcRmJW4LOjL=P5S3qH*Q&X6(tqq+Cr6zRE_BV~- zWrTL|&)Mh{%A7`bkVl7oNEm06`@HB>k~MY+9JUp#MYbgp_T( z$=>0`@*0u4|HyM3h2bk*Fk}(|Ei$J1)!3S(0l>013Daif#IR^c*-~)F58LO+#fezx zQfB+i9c=0jPcZpteOt7Jw4!?EL?`Q^4v+gjyZf_b&^?TR^VCSJ08SL)hnQzJs}u*{ zD;k@9rJ)3jtU{_jI=wn<#sVG?Q2LQmVtzc&ox`DU@Lfq(x*A45w-1L7vX4u^7>JNV z0K~36z^T&-S}u%)!ktuM>UmTHinqB%mC9`6BWOfZ`d8@x!UT+g0(ta00{Pmuhaq9c z&eZ$b1rLdDa_1ODWeHkMp-eSluJx? z%UDTB7%;>oXew5yNZ8tGzV5eA-V`t*a&DTMMYcj+xfgUzhKeXOm6hJX)OhC$cw2uW zRDo6h5d@FY%HRIi$fi(0>kjPBmUMP~A(1u1Qgfb(U#Y=)!yBz{pjh%Mn4(fCkAb+R zd>vcuBRCke7V_eO!z21LouasYpUdxi*>rd@oWeCJcsCiUL%;T9QEgddzr`NboyYqh zC7J6agCTea30X}nueVY&D=g!oSdjx?M~-jHba!6c`H)DPwSBW+bqV{zgv7?xEGEge zc<+fUXaZ4;)f3%&^LGI9`fU=RM0W2j4fi>>;9-b#9!Bqq z6h;)T3OokT;34D57Gv3$C`(V^BC(;#Q;F`> z@G(9m6bMTvC_6eh5b!(*t{jK*-ecD9t1o6iV!z|I6E2m}OvlS}f3hdGkPQAxe8*yc zmNf72!2J(^lW}f^oYep9coUU_^D??TZ7`UOOFZoFd`KHP8N74 zs;g$v-1Y z6QK{YGmVDIEeToKJYfOsB=}U^B&gO@Ai;f(K8c3TNnpy&i1Lf4nLn#Z?#;hKQ}JxE zhcB4f0SImAZAxW zS&_e8$2cW#CDbC4fCz!6%&rI!g^Z#4U9!`jZ&j6MKK!>Z3o1P}~% zec3|9MK~1eZKUTak3-tse{!Kl{|pmm=}XBx4mnh~BAbr%3xqQxU2soDaZ7qxB=i)0 zkjulTrM&Fc3R_FlgAu7xMLtQ+Y#H!c-3$o)c!}6jgO%gNEag}_D2c7Jo*kP>h8Vzz zt9rOBo4wu%Cjnz4790l-Bl$7_OXqyVl5y^xf=^X#(w_WJwc}- z+CK3L7D$Ku?kO|T!TBQw^4mAKqYV9xh#C@|p?>j4e-FH7ZPV5%)ZGINl^`&iM*0x& z+G*c4HF9}qjN!|cS?k8wWY)H-ptse5$vY%I|66s|T(z1+|GLYrh>xTHuel`WFyjlejPt1%|295HZ*~IK6-P z5%IWb$$$g$!SvHqeQZhaJLqX%bh>elA3Qp^urw zp8B%KgQnxUS*sA6v|8fGnDzJwzsySKvY&%H;leW0EIA5P{`LI@ocR{ANOyg-u$Hcq z=gCsGYe0_6HVRV!YoaIE_Lie85QnG~N1@9?(_yW_#;4IxQOWn6A9Z>dlYnzuhfxcs z%#^Vb$QRA7%K>FzH)I4c;DtKGPjf8RGLQH1yG)RICO~%eE^L_!@?NNlsmTC0UQr=0 z2c;q+84?y+ONxw9LIt2ww$Q9j&IaYw3#_A_Bd_=4AB}astteJkMzN)DJ>pIVV=EQH z*Q>~kRjwC0YxX3%8?q|PNIg;jBC=XIILoGtu_t{FUwOX)*AjK+bNrmzX5pG z7gLb>xV>%f_!9;rW%_sFoy39)N{(XlfZT~xfs;}wObJD|ZFi+}cpKT!sQNEd-@e-f zK)2J2;G%Qcgx!zbW;Z(Rd5`ltZ1akvmug$&MCS{}SOjn6aUeI)E65&@Ii+pe@A~)W zT^0E3dDo_2oHI+TLHfQi!576vz5L>#KMNXG($)WsSDHAMaZtr3DYlg}1W(nZE&bKI z@})*H7@&&!{V(&@SE7_Gf5p^|Y{W=QYw>mZL%%-u&@hg@oJ=j$9f_F8ZT?v7IahvgNuH7pdsqu^18i(?bMdEk(DO%+d3PFj zy{}`&7FM~giHNZ$e}bIfY{%3QK}ZYlcpxBgaawerL<%EwV_532kbaZs#8PUa8}}t( zW0-KN*ys36_EDsf1(-=QG8-cl1J!TfxHH!G<(Z_G<>m(IV&7?DknM~WJ-aEXM0zgilT;u%RJW+34%`4|<@(SM=V8~@@*RuZ&1Iu>*xNLgoJv2Q8x{*o9H{V8qF#AeYw zDfq&f7U_WNXfXHOv|Y@8K;sjeK8(orU}#s-Meou**6ZV_(y%_G>wqq&z>@G~#+C$( z2uo|WwA+NH%Z>WjFK88YYz&?e?R$5j_Eca=B`|N3L;u6;FU(Db1D;HX#D}f<^KF__ zW%roRLZ*vOueO)dJPZIjK-wFonNY|7ZjRU8j|t&SURn*lI{KiobN(`I$Py^ftatC~ z>SUU#RTu48z>_S}mnvjLgCso#>t zdnY&fiUp6C^?Ly?DaXi!u+P!-xKSSWZLemoSn{b-TG;nhKH~#&la=5*%R1*vT3}WT z^PF>!w<1;0a!-#QKSIVaK=-a1z9DR33;e>*t`Bo=OPT*X+UU9F_X?oZZ55Rk9rL5_ zh1g*8oBM~`TNi(an`lh|x{wbo``JOhjyq*(VVs3Zpb$oGO z+eJl;(rd)H#s?W1SkeP`iobxhI2tz6W#~CBHI&Ldu5tBi(2I|X7+LnuO)k^2lQ=E% zo$9Xe>Ou_0bA)L}&0nWYkI#+{W=UHS*$-UJqg3EpNr_Et;{@o5{ee#c7C9XD>xSw8 zcUUzF%m8)NM$O8Mtfp1y{#eRUK@}jjmM6uRRbytZHo0+48Xe-p8ifQcpL9l6x)4W7ejtY*IjiTTjD-nKvW#Kmf4LJ2{==VmxMAvsMpRN+*=z=ghw-1>`sxj$5f0o__7BF43+3;iTcLd``u^qC)oPp7hONaEtuwiYgy zoV!E;OcI=`+M^|LAM%d4+}(=gn$5ke$3@6v_Elcw>*B*X}NuT z5iH;~4X}j#2l)7Tr&(&nz`NATPD zi)@g&9G_Mp>r-xREV7W6M}ZKhu#!}3m;k`n-y~}oS6A2z?u516U-P2dV=xZPqykpT z4;+QwDAtbM3(+Py7e9wL08E!0=I*m}p1J47U3aDqv;ZDMDVz@g%1;W&stAXj&4~ls%X*0L?@H@zK$d;OMy`q-PL|3@krsRMsC>ygZ;dlD<%yL_Rw=jN z7R71<-BOByShiv4?GQV0%fq|`w=mJ&I)M^<$z-rBh%3ZrAn<|aWgSu4j?hv2!H&%1 zMxZ?-JoMOA7fnwClU_j)8+Jcd3ynxgKyL1upfLm7lvI^8q8 zs2{n?c5O@8$VfJgi}y1@T@pZC%XTsQSbwIKx{(<5oJ{r8!@2R~#uDmcOAAO)&7 zgX(ZFtB!2(%0UYuV7=zKtak#R9d5iT$KXGb`=_1mkx5WFeUb92-1p)^CE&Wv2zI@_ zWb;p!xoD4QC>#4)kZ)9Z7pH4o5uakYQcuu57NmR^9bNF0Om+zG7{VkkC1gANp?`E) zo?2L}7MeyJLy!i3hJ zO~>1dC;2=dtDVoJvpr?O)zh z=SF>I$Q~F0bXF3n>m_H5$_p)&1T!pE^E~vRC0eEU0_cT6a%z2atk>&X8@mIk&e!44v z2v^iJn$lk7cpZ}p2CG@9Yv$)rA0Jmu2`0PY*VfqK910hXk# zDiwf@Nb#Wtc9YGnz(OYzceNb~K%MpP!7VM9#8!C}?Y2y;)O&TFp}SoqV)Pbew6fg~ zgVQtjMl@)EHz(goVud?f-pK4a8Js-UxdUUbdFo^rT*AU2;R{s0We|8Zf`vfw)A z>a=5^aW>ryMD3WXN}(fSfD(zVnCzrm;Yvw8c3R!KnBM5(%*oMe)p_0GS((09$Mm)k r`KHX|?t>^f8u9;p8YN-;CkFbq^A#cy%WDaI@dc?VX(?9ATSfj4slDQH literal 0 HcmV?d00001 diff --git a/src/components.d.ts b/src/components.d.ts index d0a482ab..4aa94402 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -36,8 +36,6 @@ declare module 'vue' { ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] ElSelect: typeof import('element-plus/es')['ElSelect'] - ElStep: typeof import('element-plus/es')['ElStep'] - ElSteps: typeof import('element-plus/es')['ElSteps'] ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] ElTable: typeof import('element-plus/es')['ElTable'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] @@ -47,10 +45,8 @@ declare module 'vue' { ElTree: typeof import('element-plus/es')['ElTree'] MetricStrip: typeof import('./components/MetricStrip.vue')['default'] PlatformFirstLegOrdersPanel: typeof import('./components/PlatformFirstLegOrdersPanel.vue')['default'] - RolePreviewSwitcher: typeof import('./components/RolePreviewSwitcher.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] - StaticBatchImportDialog: typeof import('./components/StaticBatchImportDialog.vue')['default'] StatusBadge: typeof import('./components/StatusBadge.vue')['default'] } export interface GlobalDirectives { diff --git a/src/components/PlatformFirstLegOrdersPanel.vue b/src/components/PlatformFirstLegOrdersPanel.vue index 3ea8c131..8e19d9c6 100644 --- a/src/components/PlatformFirstLegOrdersPanel.vue +++ b/src/components/PlatformFirstLegOrdersPanel.vue @@ -297,7 +297,7 @@ onMounted(() => { 重新加载 - 当前页面已直连 Order 服务。后端尚未提供平台代客创建、平台编辑及履约任务查询接口,因此真实会话不显示这些静态操作。 + 当前页面已直连 Order 服务。后端尚未提供平台代客创建、平台编辑及履约任务查询接口,因此相关操作暂不可用。
diff --git a/src/components/RolePreviewSwitcher.test.ts b/src/components/RolePreviewSwitcher.test.ts deleted file mode 100644 index 6a221d8a..00000000 --- a/src/components/RolePreviewSwitcher.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { mount } from '@vue/test-utils' -import { describe, expect, it } from 'vitest' -import type { Role } from '@/types/admin' -import RolePreviewSwitcher from './RolePreviewSwitcher.vue' - -const roles: Role[] = [ - { id: 'R001', name: '超级管理员', code: 'SUPER_ADMIN', description: '', userCount: 1, dataScope: '全部数据', status: '启用', permissionIds: [] }, - { id: 'R003', name: '操作员', code: 'OPERATOR', description: '', userCount: 2, dataScope: '本部门数据', status: '启用', permissionIds: [] }, -] - -const stubs = { - 'el-dropdown': { - name: 'ElDropdownStub', - emits: ['command'], - template: '
', - }, - 'el-dropdown-menu': { template: '
' }, - 'el-dropdown-item': { - props: ['command', 'disabled'], - template: '', - }, -} - -describe('RolePreviewSwitcher', () => { - it('announces the active role and explains the static preview boundary', () => { - const wrapper = mount(RolePreviewSwitcher, { - props: { roles, currentRole: roles[0] }, - global: { stubs }, - }) - - const trigger = wrapper.get('button[aria-label]') - expect(trigger.attributes('aria-label')).toBe('权限预览:超级管理员,数据范围未模拟') - expect(trigger.attributes('title')).toBe('权限预览:超级管理员,数据范围未模拟') - expect(wrapper.text()).toContain('权限预览:超级管理员') - expect(wrapper.text()).toContain('仅预览菜单、页面和操作;数据范围未模拟') - expect(wrapper.find('svg.lucide-user-round-cog').exists()).toBe(true) - }) - - it('disables the current role and emits a string role id for another selection', async () => { - const wrapper = mount(RolePreviewSwitcher, { - props: { roles, currentRole: roles[0] }, - global: { stubs }, - }) - - const items = wrapper.findAll('[data-role]') - expect(items[0].attributes('disabled')).toBeDefined() - expect(items[1].attributes('disabled')).toBeUndefined() - wrapper.getComponent({ name: 'ElDropdownStub' }).vm.$emit('command', 3) - - expect(wrapper.emitted('select')).toEqual([['3']]) - }) - - it('labels the trigger when no enabled role is available', () => { - const wrapper = mount(RolePreviewSwitcher, { - props: { roles: [], currentRole: null }, - global: { stubs }, - }) - - expect(wrapper.get('button[aria-label]').attributes('aria-label')) - .toBe('权限预览:无可用角色,数据范围未模拟') - }) -}) - diff --git a/src/components/RolePreviewSwitcher.vue b/src/components/RolePreviewSwitcher.vue deleted file mode 100644 index b0f677cd..00000000 --- a/src/components/RolePreviewSwitcher.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - diff --git a/src/components/StaticBatchImportDialog.test.ts b/src/components/StaticBatchImportDialog.test.ts deleted file mode 100644 index b56a95dc..00000000 --- a/src/components/StaticBatchImportDialog.test.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { readFileSync } from 'node:fs' -import { describe, expect, it } from 'vitest' - -const source = readFileSync('src/components/StaticBatchImportDialog.vue', 'utf8') - -describe('StaticBatchImportDialog source contract', () => { - it('only performs safe client-side file checks before the backend endpoint exists', () => { - expect(source).toContain("fileName.endsWith('.xlsx')") - expect(source).toContain('10 * 1024 * 1024') - expect(source).toContain('前端不会解析工作表内容') - expect(source).toContain('等待后端导入接口') - }) - - it('does not simulate server validation or a successful import', () => { - expect(source).not.toContain('demonstratesFailure') - expect(source).not.toContain('静态演示') - expect(source).not.toContain("emit('imported'") - }) -}) diff --git a/src/components/StaticBatchImportDialog.vue b/src/components/StaticBatchImportDialog.vue deleted file mode 100644 index 2e14e890..00000000 --- a/src/components/StaticBatchImportDialog.vue +++ /dev/null @@ -1,118 +0,0 @@ - - - - - diff --git a/src/layouts/AppLayout.test.ts b/src/layouts/AppLayout.test.ts index 9d89313b..6f77c264 100644 --- a/src/layouts/AppLayout.test.ts +++ b/src/layouts/AppLayout.test.ts @@ -1,341 +1,49 @@ import { createPinia, setActivePinia } from 'pinia' import { flushPromises, mount } from '@vue/test-utils' import { createMemoryHistory, createRouter } from 'vue-router' -import { nextTick } from 'vue' import { beforeEach, describe, expect, it, vi } from 'vitest' -import { ElMessage, ElMessageBox } from 'element-plus' -import { ApiResponseError } from '@/api/http' -import { useAccessPreviewStore } from '@/stores/accessPreview' -import { useAdminDataStore } from '@/stores/adminData' +import { ElMessageBox } from 'element-plus' import { useAuthStore } from '@/stores/auth' -import { useUnsavedWorkStore } from '@/stores/unsavedWork' import AppLayout from './AppLayout.vue' vi.mock('element-plus', async (importOriginal) => { const actual = await importOriginal() - return { - ...actual, - ElMessage: { success: vi.fn(), warning: vi.fn(), error: vi.fn() }, - ElMessageBox: { confirm: vi.fn() }, - } + return { ...actual, ElMessage: { warning: vi.fn(), error: vi.fn() }, ElMessageBox: { confirm: vi.fn() } } }) -const page = { template: '

page

' } - -function createMemoryStorage(): Storage { - const values = new Map() - return { - get length() { return values.size }, - clear: () => values.clear(), - getItem: (key) => values.get(key) ?? null, - key: (index) => [...values.keys()][index] ?? null, - removeItem: (key) => values.delete(key), - setItem: (key, value) => values.set(key, value), - } -} - -async function mountLayout(path: string) { +async function mountLayout() { const pinia = createPinia() setActivePinia(pinia) const auth = useAuthStore() - auth.token = 'test-access-token' - auth.user = { id: '1', name: '平台管理员', account: 'platform_admin', roles: ['PLATFORM_ADMIN'] } - localStorage.setItem('cc-admin-token', auth.token) + auth.token = 'token' + auth.user = { id: '1', name: '平台管理员', account: 'admin', roles: ['PLATFORM_ADMIN'] } + auth.permissions = ['platform:warehouse:list'] const router = createRouter({ history: createMemoryHistory(), - routes: [ - { path: '/', component: page, meta: { title: '管理后台' } }, - { path: '/customers', component: page, meta: { title: '客户管理', permission: 'platform:customer:list' } }, - { path: '/warehouses', component: page, meta: { title: '仓库管理', permission: 'platform:warehouse:list' } }, - { path: '/orders/first-leg', component: page, meta: { title: '头程订单', permission: 'platform:order:list' } }, - { path: '/system/users', component: page, meta: { title: '内部用户', permission: 'platform:user:list' } }, - { path: '/403', component: page, meta: { title: '权限不足' } }, - { path: '/login', component: page, meta: { title: '登录' } }, - ], + routes: [{ path: '/', component: { template: '

page

' } }, { path: '/login', component: { template: '

login

' } }], }) - await router.push(path) + await router.push('/') await router.isReady() - const wrapper = mount(AppLayout, { - attachTo: document.body, - global: { - plugins: [pinia, router], - stubs: { - AdminSidebarMenu: { props: ['items'], template: '