修改未完成
This commit is contained in:
@@ -1,52 +1,54 @@
|
||||
<!-- 页面编号:A-01;用途:启动/登录引导;视觉基准已由用户验收,地基迁移不得改变可见效果。 -->
|
||||
<template>
|
||||
<view class="auth-page entry-page">
|
||||
<image class="paper-background" src="/static/assets/backgrounds/auth-rice-paper-v1.jpg" mode="aspectFill" />
|
||||
<image class="scenery-background" src="/static/assets/backgrounds/auth-ink-scenery-v1.png" mode="aspectFill" />
|
||||
<!-- 不透明纸纹底图承担页面底色;透明山水只作为上层装饰。 -->
|
||||
<image class="paper-background" src="/static/assets/foundation/opaque/auth-page-paper.jpg" mode="aspectFill" />
|
||||
<image class="scenery-background" src="/static/assets/foundation/transparent/auth-ink-scenery.png" mode="aspectFill" />
|
||||
|
||||
<view class="auth-content">
|
||||
<view class="auth-header">
|
||||
<image class="header-background" src="/static/assets/backgrounds/auth-ancestral-header-v1.png" mode="aspectFill" />
|
||||
<image class="header-seal" src="/static/assets/icons/brand/jiapu-seal-logo-header.png" mode="aspectFit" />
|
||||
<image class="header-background" src="/static/assets/foundation/opaque/auth-header.png" mode="aspectFill" />
|
||||
<image class="header-seal" src="/static/assets/foundation/transparent/brand-seal.png" mode="aspectFit" />
|
||||
</view>
|
||||
|
||||
<view class="brand-intro">
|
||||
<view class="title-decoration">
|
||||
<image class="title-cloud title-cloud-left" src="/static/assets/icons/auth/auth-title-cloud-v1.png" mode="aspectFit" />
|
||||
<image class="title-cloud title-cloud-left" src="/static/assets/foundation/transparent/auth-title-cloud.png" mode="aspectFit" />
|
||||
<text class="brand-title">家谱</text>
|
||||
<image class="title-cloud title-cloud-right" src="/static/assets/icons/auth/auth-title-cloud-v1.png" mode="aspectFit" />
|
||||
<image class="title-cloud title-cloud-right" src="/static/assets/foundation/transparent/auth-title-cloud.png" mode="aspectFit" />
|
||||
</view>
|
||||
<view class="brand-divider brand-divider--top">
|
||||
<view class="brand-divider__line" />
|
||||
<image class="brand-divider__ornament" src="/static/assets/icons/auth/auth-divider-knot-v1.png" mode="aspectFit" />
|
||||
<image class="brand-divider__ornament" src="/static/assets/foundation/transparent/auth-divider-knot.png" mode="aspectFit" />
|
||||
<view class="brand-divider__line" />
|
||||
</view>
|
||||
<text class="brand-subtitle">为家族留存可传承的记忆</text>
|
||||
<view class="brand-divider brand-divider--bottom">
|
||||
<view class="brand-divider__line" />
|
||||
<image class="brand-divider__ornament" src="/static/assets/icons/auth/auth-divider-knot-v1.png" mode="aspectFit" />
|
||||
<image class="brand-divider__ornament" src="/static/assets/foundation/transparent/auth-divider-knot.png" mode="aspectFit" />
|
||||
<view class="brand-divider__line" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="entry-actions">
|
||||
<view class="entry-button entry-button--primary" hover-class="entry-button--pressed" @click="openLogin">
|
||||
<image class="button-corner-asset button-corner-asset--top-left" src="/static/assets/icons/auth/auth-button-corner-v1.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--top-right" src="/static/assets/icons/auth/auth-button-corner-v1.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--bottom-left" src="/static/assets/icons/auth/auth-button-corner-v1.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--bottom-right" src="/static/assets/icons/auth/auth-button-corner-v1.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--top-left" src="/static/assets/foundation/transparent/auth-button-corner.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--top-right" src="/static/assets/foundation/transparent/auth-button-corner.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--bottom-left" src="/static/assets/foundation/transparent/auth-button-corner.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--bottom-right" src="/static/assets/foundation/transparent/auth-button-corner.png" mode="aspectFit" />
|
||||
<view class="entry-button__content">
|
||||
<image class="entry-button__icon" src="/static/assets/icons/auth/login-outline-v1.png" mode="aspectFit" />
|
||||
<image class="entry-button__icon" src="/static/assets/foundation/transparent/auth-login-outline.png" mode="aspectFit" />
|
||||
<text>登录</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="entry-button entry-button--secondary" hover-class="entry-button--pressed" @click="prepareWechatLogin">
|
||||
<image class="button-corner-asset button-corner-asset--top-left" src="/static/assets/icons/auth/auth-button-corner-v1.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--top-right" src="/static/assets/icons/auth/auth-button-corner-v1.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--bottom-left" src="/static/assets/icons/auth/auth-button-corner-v1.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--bottom-right" src="/static/assets/icons/auth/auth-button-corner-v1.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--top-left" src="/static/assets/foundation/transparent/auth-button-corner.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--top-right" src="/static/assets/foundation/transparent/auth-button-corner.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--bottom-left" src="/static/assets/foundation/transparent/auth-button-corner.png" mode="aspectFit" />
|
||||
<image class="button-corner-asset button-corner-asset--bottom-right" src="/static/assets/foundation/transparent/auth-button-corner.png" mode="aspectFit" />
|
||||
<view class="entry-button__content">
|
||||
<image class="entry-button__icon entry-button__icon--wechat" src="/static/assets/icons/auth/wechat-licensed-v1.png" mode="aspectFit" />
|
||||
<image class="entry-button__icon entry-button__icon--wechat" src="/static/assets/foundation/transparent/auth-wechat.png" mode="aspectFit" />
|
||||
<text>微信登录</text>
|
||||
</view>
|
||||
</view>
|
||||
@@ -88,7 +90,7 @@ const requireAgreement = () => {
|
||||
|
||||
const openLogin = () => {
|
||||
if (!requireAgreement()) return
|
||||
uni.navigateTo({ url: '/pages/auth/login?agreed=1' })
|
||||
uni.navigateTo({ url: '/pages/auth/a02-login?agreed=1' })
|
||||
}
|
||||
|
||||
const prepareWechatLogin = () => {
|
||||
@@ -1,12 +1,14 @@
|
||||
<!-- 页面编号:A-02;用途:账号登录;当前仅保留已确认的本地登录界面。 -->
|
||||
<template>
|
||||
<view class="auth-page login-page">
|
||||
<image class="paper-background" src="/static/assets/backgrounds/auth-rice-paper-v1.jpg" mode="aspectFill" />
|
||||
<image class="scenery-background" src="/static/assets/backgrounds/auth-ink-scenery-v1.png" mode="aspectFill" />
|
||||
<!-- 与 A01 共用的登录页底图层:先不透明纸纹,后透明山水。 -->
|
||||
<image class="paper-background" src="/static/assets/foundation/opaque/auth-page-paper.jpg" mode="aspectFill" />
|
||||
<image class="scenery-background" src="/static/assets/foundation/transparent/auth-ink-scenery.png" mode="aspectFill" />
|
||||
|
||||
<view class="auth-content">
|
||||
<view class="auth-header">
|
||||
<image class="header-background" src="/static/assets/backgrounds/auth-ancestral-header-v1.png" mode="aspectFill" />
|
||||
<image class="header-seal" src="/static/assets/icons/brand/jiapu-seal-logo-header.png" mode="aspectFit" />
|
||||
<image class="header-background" src="/static/assets/foundation/opaque/auth-header.png" mode="aspectFill" />
|
||||
<image class="header-seal" src="/static/assets/foundation/transparent/brand-seal.png" mode="aspectFit" />
|
||||
</view>
|
||||
|
||||
<view class="login-panel">
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:F-01;用途:家族动态首页。 -->
|
||||
<template>
|
||||
<view class="page-shell family-page">
|
||||
<view class="family-top"><view><text class="top-kicker">家族共建</text><text class="page-name">家族记事</text></view><text class="publish" @click="publishFeed">发布动态</text></view>
|
||||
@@ -30,10 +31,10 @@ onMounted(async () => {
|
||||
if (!genealogyId.value) { loadError.value = '请先从“我的家谱”选择一个家谱。'; return }
|
||||
try { feeds.value = await appApi.getFeeds(genealogyId.value) } catch (error) { loadError.value = error.message || '家族动态加载失败。' }
|
||||
})
|
||||
const openSection = (type) => uni.navigateTo({ url: `/pages/content/list?type=${type}&genealogyId=${genealogyId.value}` })
|
||||
const openSection = (type) => uni.navigateTo({ url: `/pages/skeleton/content-list-skeleton?type=${type}&genealogyId=${genealogyId.value}` })
|
||||
const publishFeed = () => {
|
||||
if (!genealogyId.value) { uni.showToast({ title: '请先选择家谱', icon: 'none' }); return }
|
||||
uni.navigateTo({ url: `/pages/content/editor?type=feed&genealogyId=${genealogyId.value}` })
|
||||
uni.navigateTo({ url: `/pages/family/f02-publish-feed?type=feed&genealogyId=${genealogyId.value}` })
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:F-02;用途:发布家族动态。 -->
|
||||
<template>
|
||||
<view class="page-shell editor-page">
|
||||
<PageHeader title="发布家族动态" />
|
||||
@@ -1,13 +1,14 @@
|
||||
<!-- 页面编号:G-01;用途:我的家谱列表;视觉基准已由用户验收,地基迁移不得改变可见效果。 -->
|
||||
<template>
|
||||
<view class="page-shell genealogy-index">
|
||||
<image
|
||||
class="page-paper-texture"
|
||||
src="/static/assets/backgrounds/paper-rice-texture-v2.jpg"
|
||||
src="/static/assets/foundation/opaque/page-paper.jpg"
|
||||
mode="scaleToFill"
|
||||
/>
|
||||
<image
|
||||
class="page-footer-landscape"
|
||||
src="/static/assets/backgrounds/footer-mountain-bamboo.png"
|
||||
src="/static/assets/foundation/transparent/footer-mountain-bamboo.png"
|
||||
mode="scaleToFill"
|
||||
/>
|
||||
<PageHeader
|
||||
@@ -28,14 +29,14 @@
|
||||
<view class="current-slip" @click="openGenealogy(currentGenealogy)">
|
||||
<image
|
||||
class="current-frame"
|
||||
src="/static/assets/backgrounds/genealogy-current-slip-frame.png"
|
||||
src="/static/assets/modules/genealogy/transparent/current-slip-frame.png"
|
||||
mode="scaleToFill"
|
||||
/>
|
||||
<view class="current-summary">
|
||||
<view class="current-seal">
|
||||
<image
|
||||
class="current-seal-frame"
|
||||
src="/static/assets/icons/genealogy/seal-current-frame-v1.png"
|
||||
src="/static/assets/modules/genealogy/transparent/current-seal-frame.png"
|
||||
mode="scaleToFill"
|
||||
/>
|
||||
<text class="current-seal-title">家谱</text>
|
||||
@@ -47,7 +48,7 @@
|
||||
<view class="current-meta-item">
|
||||
<image
|
||||
class="current-meta-icon"
|
||||
src="/static/assets/icons/common/location-v1.png"
|
||||
src="/static/assets/foundation/transparent/meta-location.png"
|
||||
mode="aspectFit"
|
||||
/>
|
||||
<text class="current-meta-item-text">{{
|
||||
@@ -57,7 +58,7 @@
|
||||
<view class="current-meta-item">
|
||||
<image
|
||||
class="current-meta-icon"
|
||||
src="/static/assets/icons/common/member-meta-v1.png"
|
||||
src="/static/assets/foundation/transparent/meta-member.png"
|
||||
mode="aspectFit"
|
||||
/>
|
||||
<text class="current-meta-item-text"
|
||||
@@ -67,7 +68,7 @@
|
||||
<view class="current-meta-item">
|
||||
<image
|
||||
class="current-meta-icon"
|
||||
src="/static/assets/icons/common/admin-v1.png"
|
||||
src="/static/assets/foundation/transparent/meta-admin.png"
|
||||
mode="aspectFit"
|
||||
/>
|
||||
<text class="current-meta-item-text">管理员</text>
|
||||
@@ -89,7 +90,7 @@
|
||||
|
||||
<image
|
||||
class="section-divider"
|
||||
src="/static/assets/backgrounds/genealogy-section-divider-v2.png"
|
||||
src="/static/assets/modules/genealogy/transparent/section-divider.png"
|
||||
mode="scaleToFill"
|
||||
/>
|
||||
|
||||
@@ -120,18 +121,18 @@
|
||||
<view class="create-action" @click="createGenealogy">
|
||||
<image
|
||||
class="create-cloud"
|
||||
src="/static/assets/icons/action/create-cloud-v2.png"
|
||||
src="/static/assets/modules/genealogy/transparent/create-cloud.png"
|
||||
mode="aspectFit"
|
||||
/>
|
||||
<image
|
||||
class="create-icon"
|
||||
src="/static/assets/icons/action/add-v2.png"
|
||||
src="/static/assets/modules/genealogy/transparent/add.png"
|
||||
mode="aspectFit"
|
||||
/>
|
||||
<text>新建家谱</text>
|
||||
<image
|
||||
class="create-cloud create-cloud--right"
|
||||
src="/static/assets/icons/action/create-cloud-v2.png"
|
||||
src="/static/assets/modules/genealogy/transparent/create-cloud.png"
|
||||
mode="aspectFit"
|
||||
/>
|
||||
</view>
|
||||
@@ -145,7 +146,7 @@
|
||||
<view class="empty-primary" @click="createGenealogy">
|
||||
<image
|
||||
class="create-icon"
|
||||
src="/static/assets/icons/action/add-v2.png"
|
||||
src="/static/assets/modules/genealogy/transparent/add.png"
|
||||
mode="aspectFit"
|
||||
/>
|
||||
<text>新建家谱</text>
|
||||
@@ -185,39 +186,39 @@ const shortcuts = [
|
||||
{
|
||||
key: "tree",
|
||||
label: "世系图",
|
||||
icon: "/static/assets/icons/genealogy/tree-v2.png",
|
||||
icon: "/static/assets/modules/genealogy/transparent/shortcut-tree.png",
|
||||
},
|
||||
{
|
||||
key: "members",
|
||||
label: "成员",
|
||||
icon: "/static/assets/icons/genealogy/members-v2.png",
|
||||
icon: "/static/assets/modules/genealogy/transparent/shortcut-members.png",
|
||||
},
|
||||
{
|
||||
key: "poem",
|
||||
label: "字辈诗",
|
||||
icon: "/static/assets/icons/genealogy/generation-poem-v2.png",
|
||||
icon: "/static/assets/modules/genealogy/transparent/shortcut-generation-poem.png",
|
||||
},
|
||||
{
|
||||
key: "applications",
|
||||
label: "申请审核",
|
||||
icon: "/static/assets/icons/genealogy/application-v2.png",
|
||||
icon: "/static/assets/modules/genealogy/transparent/shortcut-application.png",
|
||||
},
|
||||
];
|
||||
|
||||
const openGenealogy = (genealogy) =>
|
||||
uni.navigateTo({ url: `/pages/genealogy/detail?id=${genealogy.id}` });
|
||||
uni.navigateTo({ url: `/pages/genealogy/g05-genealogy-overview?id=${genealogy.id}` });
|
||||
const createGenealogy = () =>
|
||||
uni.navigateTo({ url: "/pages/genealogy/create" });
|
||||
const applyToJoin = () => uni.navigateTo({ url: "/pages/genealogy/search" });
|
||||
uni.navigateTo({ url: "/pages/genealogy/g03-create-genealogy" });
|
||||
const applyToJoin = () => uni.navigateTo({ url: "/pages/genealogy/g06-search-genealogies" });
|
||||
const toNotifications = () =>
|
||||
uni.navigateTo({ url: "/pages/notification/index" });
|
||||
uni.navigateTo({ url: "/pages/notification/n01-message-center" });
|
||||
|
||||
const openShortcut = (key) => {
|
||||
const paths = {
|
||||
tree: "/pages/tree/index",
|
||||
members: `/pages/genealogy/detail?id=${currentGenealogy.value.id}`,
|
||||
poem: "/pages/content/list?type=poem",
|
||||
applications: "/pages/genealogy/applications",
|
||||
tree: "/pages/tree/t01-tree-overview",
|
||||
members: `/pages/genealogy/g05-genealogy-overview?id=${currentGenealogy.value.id}`,
|
||||
poem: "/pages/skeleton/content-list-skeleton?type=poem",
|
||||
applications: "/pages/genealogy/g10-application-review",
|
||||
};
|
||||
uni.navigateTo({ url: paths[key] });
|
||||
};
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:G-03;用途:创建家谱表单。 -->
|
||||
<template>
|
||||
<view class="page-shell create-page">
|
||||
<PageHeader title="创建家谱" />
|
||||
@@ -49,7 +50,7 @@ const submit = async () => {
|
||||
}
|
||||
const created = await appApi.createGenealogy({ ...form })
|
||||
genealogyContext.setCurrentGenealogyId(created.id)
|
||||
uni.redirectTo({ url: `/pages/lineage/first-person?genealogyId=${created.id}` })
|
||||
uni.redirectTo({ url: `/pages/genealogy/g04-first-ancestor?genealogyId=${created.id}` })
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:G-04;用途:创建家谱后的始祖录入。 -->
|
||||
<template>
|
||||
<view class="page-shell first-person-page">
|
||||
<PageHeader title="录入首代人物" />
|
||||
@@ -35,7 +36,7 @@ const submit = async () => {
|
||||
isSubmitting.value = true
|
||||
try {
|
||||
const person = await appApi.createPerson(genealogyId.value, { ...form, personName: form.personName.trim() })
|
||||
uni.redirectTo({ url: `/pages/tree/index?genealogyId=${genealogyId.value}&selectedId=${person.id}` })
|
||||
uni.redirectTo({ url: `/pages/tree/t01-tree-overview?genealogyId=${genealogyId.value}&selectedId=${person.id}` })
|
||||
} catch (error) {
|
||||
uni.showToast({ title: error.message || '保存失败,请稍后重试', icon: 'none' })
|
||||
} finally {
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:G-05;用途:家谱总览。 -->
|
||||
<template>
|
||||
<view class="page-shell detail-page">
|
||||
<PageHeader title="家谱总览" action="管理" @action="showSoon" />
|
||||
@@ -52,10 +53,10 @@ const loadGenealogy = async (id) => {
|
||||
}
|
||||
|
||||
onLoad((query) => loadGenealogy(query.id))
|
||||
const toTree = () => uni.navigateTo({ url: `/pages/tree/index?genealogyId=${genealogyId.value}` })
|
||||
const toFirstPerson = () => uni.navigateTo({ url: `/pages/lineage/first-person?genealogyId=${genealogyId.value}` })
|
||||
const toFamily = () => uni.reLaunch({ url: '/pages/family/index' })
|
||||
const toApplications = () => uni.navigateTo({ url: `/pages/genealogy/applications?genealogyId=${genealogyId.value}` })
|
||||
const toTree = () => uni.navigateTo({ url: `/pages/tree/t01-tree-overview?genealogyId=${genealogyId.value}` })
|
||||
const toFirstPerson = () => uni.navigateTo({ url: `/pages/genealogy/g04-first-ancestor?genealogyId=${genealogyId.value}` })
|
||||
const toFamily = () => uni.reLaunch({ url: '/pages/family/f01-family-feed' })
|
||||
const toApplications = () => uni.navigateTo({ url: `/pages/genealogy/g10-application-review?genealogyId=${genealogyId.value}` })
|
||||
const showSoon = () => uni.showToast({ title: '该模块将在后续阶段接入', icon: 'none' })
|
||||
</script>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:G-06;用途:公开家谱搜索。 -->
|
||||
<template>
|
||||
<view class="page-shell search-page">
|
||||
<PageHeader title="查找家谱" />
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:G-10;用途:管理员入谱申请审核。 -->
|
||||
<template>
|
||||
<view class="page-shell applications-page">
|
||||
<PageHeader title="入谱审核" action="审核说明" @action="showHelp" />
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:N-01;用途:消息中心。 -->
|
||||
<template>
|
||||
<view class="page-shell notification-page">
|
||||
<PageHeader title="消息通知" action="全部已读" @action="readAll" />
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:M-01;用途:我的首页。 -->
|
||||
<template>
|
||||
<view class="page-shell profile-page">
|
||||
<view class="profile-hero"><view class="profile-seal">{{ profile.name ? profile.name.slice(0, 1) : '谱' }}</view><view class="profile-copy"><text class="profile-name">{{ profile.name || '家谱用户' }}</text><text class="profile-meta">{{ profile.phone || '资料加载中' }} · {{ profile.role || '家谱成员' }}</text></view><text class="profile-edit" @click="showSoon">资料</text></view>
|
||||
@@ -24,7 +25,7 @@ const serviceItems = ['帮助中心', '意见反馈', 'VIP 服务']
|
||||
onMounted(async () => {
|
||||
try { profile.value = await appApi.getProfile() } catch (error) { loadError.value = error.message || '个人资料加载失败。' }
|
||||
})
|
||||
const toNotifications = () => uni.navigateTo({ url: '/pages/notification/index' })
|
||||
const toNotifications = () => uni.navigateTo({ url: '/pages/notification/n01-message-center' })
|
||||
const showSoon = () => uni.showToast({ title: '该服务将按计划逐步开放', icon: 'none' })
|
||||
</script>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:S-01;用途:多类型内容列表功能骨架;不计为任何已完成设计页面。 -->
|
||||
<template>
|
||||
<view class="page-shell content-page">
|
||||
<PageHeader :title="config.title" />
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:T-01;用途:世系树总览。 -->
|
||||
<template>
|
||||
<view class="tree-page">
|
||||
<PageHeader title="世系树" action="树形视图" />
|
||||
@@ -38,7 +39,7 @@ const loadTree = async (query) => {
|
||||
|
||||
onLoad(loadTree)
|
||||
const nodeStyle = (member) => ({ left: `${member.x}%`, top: `${member.y}%` })
|
||||
const toMember = () => uni.navigateTo({ url: `/pages/member/detail?genealogyId=${genealogyId.value}&personId=${selected.value.id}` })
|
||||
const toMember = () => uni.navigateTo({ url: `/pages/tree/t03-member-profile?genealogyId=${genealogyId.value}&personId=${selected.value.id}` })
|
||||
const showSoon = () => uni.showToast({ title: '亲属关系编辑将在下一阶段接入', icon: 'none' })
|
||||
</script>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 页面编号:T-03;用途:成员档案详情。 -->
|
||||
<template>
|
||||
<view class="page-shell member-page">
|
||||
<PageHeader title="成员档案" action="编辑" @action="showSoon" />
|
||||
Reference in New Issue
Block a user