Files
tehran_taj/apps/user-app-v2/dist/assets/ChildOrdersView-CPIWszvr.css
T
s.esmaeiliandClaude Opus 5 f71fd5bfe1 feat(apps): sales-expert screens in both apps + v2 admin home slider (D21, APP-02)
Both expert screens are built in user-app and user-app-v2, with byte-identical
template and script and a per-app style block only — verified by diffing
everything above <style>:

  ChildOrdersView  "سفارش مشتریان"  — legacy ChildOrders.vue. Keeps the
    reference's title, search, infinite paging, and per-card item count, total
    weight, customer name and the fixed «تحویل مسئول فروش» chip (the endpoint
    only returns that status, ApiMobileController:766).
  CustomerChoiceView "لیست مشتریان" — legacy customerChoice.vue. Keeps its
    title, per-search re-query and the reference's choice to LIST inactive
    customers (its active() scope is commented out at :187).

Reachable from inside the app, not just by URL: routes carry the reference's own
paths and names, the dashboard grows the two entries only for an expert (v1 as
tiles, v2 as its own rows), and a router guard sends an ordinary customer back
to their dashboard. None of that is relied on for safety — the server scopes
both endpoints on the AdminUser id in the token and answers 403 otherwise.

Not ported, both recorded in D21: the act-as api_token minting (:197-201) and
the child-order edit drawer, which recomputed an order's money from client-sent
values. The card opens a read-only summary instead.

APP-02 fixed: user-app-v2 gained getHomeSlider and now prefers admin-configured
slides, keeping its category-derived hero as the fallback and its own design.

Session stores stay byte-identical across the apps.
build 5/5, jest 45/45, expert login 36/36, apps smoke 43/43, typecheck clean.

[ref: henza_pwa/src/views/user/src/components/ChildOrders.vue, customerChoice.vue]
[ref: henza_pwa/src/router/index.ts:171-188]

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 01:12:53 +03:30

2 lines
2.5 KiB
CSS

.cho__barExtra[data-v-b76e0ead]{padding:0 16px 12px}.cho__body[data-v-b76e0ead]{padding-top:132px;padding-bottom:90px}.cho__list[data-v-b76e0ead]{display:flex;flex-direction:column;padding-top:8px}.cho__card[data-v-b76e0ead]{padding:18px 2px;background:transparent;border:none;border-bottom:1px solid #ECEDEF;cursor:pointer}.cho__card[data-v-b76e0ead]:last-child{border-bottom:none}.cho__card[data-v-b76e0ead]:active{opacity:.75}.cho__top[data-v-b76e0ead]{display:flex;justify-content:space-between;gap:12px}.cho__right[data-v-b76e0ead]{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.cho__num[data-v-b76e0ead]{font-size:15px;font-weight:700;margin-bottom:10px}.cho__muted[data-v-b76e0ead]{color:#8a909c;font-weight:500;margin-left:4px}.cho__meta[data-v-b76e0ead]{display:flex;align-items:baseline;gap:4px}.cho__strong[data-v-b76e0ead]{font-size:15px;font-weight:700}.cho__unit[data-v-b76e0ead]{font-size:12px;color:#8a909c}.cho__status[data-v-b76e0ead]{padding:5px 14px;border-radius:999px;font-size:11.5px;font-weight:600;color:#06b6d4;background:#ecfeff;white-space:nowrap}.cho__divider[data-v-b76e0ead]{height:10px}.cho__bottom[data-v-b76e0ead]{display:flex;justify-content:space-between;align-items:center}.cho__customer[data-v-b76e0ead]{font-size:13.5px;font-weight:600;color:#5b616e}.cho__more[data-v-b76e0ead],.cho__sentinel[data-v-b76e0ead]{padding:12px 0;text-align:center;font-size:12px;color:#8a909c}.cho__empty[data-v-b76e0ead]{margin-top:8px;padding:34px 20px;border:1px dashed #ECEDEF;border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:#8a909c}.cho__empty p[data-v-b76e0ead]{margin:0;font-size:12.5px}.cho__retry[data-v-b76e0ead]{padding:8px 18px;border-radius:999px;border:1px solid #ECEDEF;background:#fff;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cho__detail[data-v-b76e0ead]{padding:20px 16px 24px}.cho__detailTitle[data-v-b76e0ead]{margin:0 0 16px;font-size:17px;font-weight:700}.cho__rows[data-v-b76e0ead]{margin:0;display:flex;flex-direction:column}.cho__row[data-v-b76e0ead]{display:flex;justify-content:space-between;align-items:center;padding:13px 2px;border-bottom:1px solid #ECEDEF}.cho__row[data-v-b76e0ead]:last-child{border-bottom:none}.cho__row dt[data-v-b76e0ead]{font-size:13px;color:#8a909c}.cho__row dd[data-v-b76e0ead]{margin:0;font-size:14px;font-weight:600}.cho__close[data-v-b76e0ead]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:#14161a;color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}