refactor: reuse shared header on G03
This commit is contained in:
@@ -3,21 +3,11 @@
|
|||||||
<view class="flow-page">
|
<view class="flow-page">
|
||||||
<GenealogyPageBackground />
|
<GenealogyPageBackground />
|
||||||
|
|
||||||
<view class="flow-header">
|
<PageHeader
|
||||||
<view class="flow-header__content">
|
:title="isAncestorStep ? '录入首代人物' : '创建家谱'"
|
||||||
<view class="flow-header__back" @click="goBack">
|
custom-back
|
||||||
<image
|
@back="goBack"
|
||||||
class="flow-header__back-icon"
|
/>
|
||||||
src="/static/assets/foundation/transparent/chevron-right.png"
|
|
||||||
mode="aspectFit"
|
|
||||||
/>
|
|
||||||
</view>
|
|
||||||
<text class="flow-header__title">{{
|
|
||||||
isAncestorStep ? "录入首代人物" : "创建家谱"
|
|
||||||
}}</text>
|
|
||||||
<view class="flow-header__side" />
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="flow-content">
|
<view class="flow-content">
|
||||||
<view class="create-flow-panel">
|
<view class="create-flow-panel">
|
||||||
@@ -248,6 +238,7 @@
|
|||||||
import { computed, onMounted, onUnmounted, reactive, ref } from "vue";
|
import { computed, onMounted, onUnmounted, reactive, ref } from "vue";
|
||||||
import { onLoad, onShow } from "@dcloudio/uni-app";
|
import { onLoad, onShow } from "@dcloudio/uni-app";
|
||||||
import GenealogyPageBackground from "@/components/GenealogyPageBackground.vue";
|
import GenealogyPageBackground from "@/components/GenealogyPageBackground.vue";
|
||||||
|
import PageHeader from "@/components/PageHeader.vue";
|
||||||
|
|
||||||
const currentStep = ref("create");
|
const currentStep = ref("create");
|
||||||
const genealogyId = ref("");
|
const genealogyId = ref("");
|
||||||
@@ -423,47 +414,6 @@ const enterOverview = () =>
|
|||||||
background: #f9f6ef;
|
background: #f9f6ef;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flow-header {
|
|
||||||
z-index: 3;
|
|
||||||
height: 112rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
background: url("/static/assets/foundation/opaque/root-header-cinnabar.jpg")
|
|
||||||
center / 100% 100% no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flow-header__content {
|
|
||||||
z-index: 1;
|
|
||||||
display: flex;
|
|
||||||
height: 100%;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
padding: 0 26rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flow-header__back,
|
|
||||||
.flow-header__side {
|
|
||||||
display: flex;
|
|
||||||
width: 72rpx;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flow-header__back-icon {
|
|
||||||
width: 34rpx;
|
|
||||||
height: 34rpx;
|
|
||||||
transform: rotate(180deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.flow-header__title {
|
|
||||||
flex: 1;
|
|
||||||
color: #ffe4a7;
|
|
||||||
font-family: "STKaiti", "KaiTi", serif;
|
|
||||||
font-size: 39rpx;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 4rpx;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flow-content {
|
.flow-content {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
padding: 24rpx 32rpx 48rpx;
|
padding: 24rpx 32rpx 48rpx;
|
||||||
|
|||||||
@@ -37,15 +37,18 @@ foreach ($required in @(
|
|||||||
'if (isSubmitting.value) return;',
|
'if (isSubmitting.value) return;',
|
||||||
'/pages/genealogy/g05-genealogy-overview?genealogyId=',
|
'/pages/genealogy/g05-genealogy-overview?genealogyId=',
|
||||||
'g01-empty-panel-frame.png',
|
'g01-empty-panel-frame.png',
|
||||||
'root-header-cinnabar.jpg',
|
|
||||||
'a01-scroll-primary-v3.png',
|
'a01-scroll-primary-v3.png',
|
||||||
'create-flow-panel',
|
'create-flow-panel',
|
||||||
'flow-primary-action'
|
'flow-primary-action',
|
||||||
|
'import PageHeader from "@/components/PageHeader.vue";',
|
||||||
|
'<PageHeader',
|
||||||
|
'custom-back',
|
||||||
|
'@back="goBack"'
|
||||||
)) {
|
)) {
|
||||||
Assert-Contains -Content $g03 -Expected $required -Message "Missing G03 flow contract: $required"
|
Assert-Contains -Content $g03 -Expected $required -Message "Missing G03 flow contract: $required"
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($forbidden in @("from '@/utils/api.js'", 'appApi.', 'uni.showToast', 'uni.showModal', 'uni.showLoading', 'uni.showActionSheet', '/pages/tree/t01-tree-overview?genealogyId=')) {
|
foreach ($forbidden in @("from '@/utils/api.js'", 'appApi.', 'uni.showToast', 'uni.showModal', 'uni.showLoading', 'uni.showActionSheet', '/pages/tree/t01-tree-overview?genealogyId=', 'class="flow-header"', 'flow-header__back', 'root-header-cinnabar.jpg')) {
|
||||||
if ($g03 -match [regex]::Escape($forbidden)) { throw "G03 retains forbidden implementation: $forbidden" }
|
if ($g03 -match [regex]::Escape($forbidden)) { throw "G03 retains forbidden implementation: $forbidden" }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,11 @@ if ($positions.Count -ne 1 -or $positions[0].Groups[1].Value.Trim() -ne 'fixed')
|
|||||||
throw "G03 must retain only its combined fixed dialog layer rule; found $($positions.Count) position declarations"
|
throw "G03 must retain only its combined fixed dialog layer rule; found $($positions.Count) position declarations"
|
||||||
}
|
}
|
||||||
foreach ($required in @(
|
foreach ($required in @(
|
||||||
'background: url("/static/assets/foundation/opaque/root-header-cinnabar.jpg")',
|
|
||||||
'background: url("/static/assets/modules/genealogy/transparent/g01-empty-panel-frame.png")',
|
'background: url("/static/assets/modules/genealogy/transparent/g01-empty-panel-frame.png")',
|
||||||
'background: url("/static/assets/modules/auth/transparent/a01-scroll-dialog-v3.png")',
|
'background: url("/static/assets/modules/auth/transparent/a01-scroll-dialog-v3.png")',
|
||||||
'background: url("/static/assets/foundation/transparent/a01-scroll-primary-v3.png")'
|
'background: url("/static/assets/foundation/transparent/a01-scroll-primary-v3.png")'
|
||||||
)) { if ($page -notmatch [regex]::Escape($required)) { throw "G03 is missing real asset background: $required" } }
|
)) { if ($page -notmatch [regex]::Escape($required)) { throw "G03 is missing real asset background: $required" } }
|
||||||
|
foreach ($forbidden in @('flow-header', 'root-header-cinnabar.jpg')) {
|
||||||
|
if ($page -match [regex]::Escape($forbidden)) { throw "G03 must not retain private header token: $forbidden" }
|
||||||
|
}
|
||||||
Write-Output 'G03-DOCUMENT-FLOW-CONTRACT PASS'
|
Write-Output 'G03-DOCUMENT-FLOW-CONTRACT PASS'
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ function Assert-Match {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($g03 -match '<text>返回</text>') { throw 'G03 header must use only the approved image back arrow' }
|
if ($g03 -match '<text>返回</text>') { throw 'G03 header must use only the approved image back arrow' }
|
||||||
Assert-Match -Content $g03 -Pattern '(?s)\.flow-header__back,\s*\.flow-header__side\s*\{[^}]*width:\s*72rpx;' -Message 'G03 header side slots must preserve centered title after removing back text'
|
Assert-Match -Content $g03 -Pattern '(?s)<PageHeader\s+:title="isAncestorStep \? .\u5F55\u5165\u9996\u4EE3\u4EBA\u7269. : .\u521B\u5EFA\u5BB6\u8C31."\s+custom-back\s+@back="goBack"\s*/>' -Message 'G03 must use PageHeader with its dynamic title and custom back handler'
|
||||||
Assert-Match -Content $g03 -Pattern '(?s)\.flow-header__back-icon\s*\{[^}]*width:\s*34rpx;[^}]*height:\s*34rpx;' -Message 'G03 back arrow must use the approved visible size'
|
if ($g03 -match 'flow-header|flow-header__back|flow-header__title') { throw 'G03 must not retain a private header implementation' }
|
||||||
Assert-Match -Content $g03 -Pattern '(?s)\.flow-note,\s*\.flow-rule__note\s*\{[^}]*font-size:\s*25rpx;' -Message 'G03 guidance copy must use the approved readable size'
|
Assert-Match -Content $g03 -Pattern '(?s)\.flow-note,\s*\.flow-rule__note\s*\{[^}]*font-size:\s*25rpx;' -Message 'G03 guidance copy must use the approved readable size'
|
||||||
Assert-Match -Content $g03 -Pattern '(?s)\.flow-rule__option\s*\{[^}]*font-size:\s*23rpx;' -Message 'G03 visibility options must use the approved readable size'
|
Assert-Match -Content $g03 -Pattern '(?s)\.flow-rule__option\s*\{[^}]*font-size:\s*23rpx;' -Message 'G03 visibility options must use the approved readable size'
|
||||||
Assert-Match -Content $g03 -Pattern '(?s)\.field-error\s*\{[^}]*font-size:\s*24rpx;[^}]*line-height:\s*34rpx;' -Message 'G03 field errors must use the approved readable size'
|
Assert-Match -Content $g03 -Pattern '(?s)\.field-error\s*\{[^}]*font-size:\s*24rpx;[^}]*line-height:\s*34rpx;' -Message 'G03 field errors must use the approved readable size'
|
||||||
|
|||||||
Reference in New Issue
Block a user