hookehuyr

fix(plan): 防止计划弹窗选择器点击遮罩关闭

- 为所有 PlanFields 选择器添加 close-on-click-overlay="false"
- 添加 catch-move 防止触摸事件穿透
- 优化弹窗交互体验,避免误操作关闭

影响文件:
- src/components/PlanFields/AgePicker.vue
- src/components/PlanFields/AgePickerGlobal.vue
- src/components/PlanFields/DatePicker.vue
- src/components/PlanFields/DatePickerGlobal.vue
- src/components/PlanFields/SelectPicker.vue
- src/components/PlanFields/SelectPickerGlobal.vue
- src/components/PlanPopup/index.vue

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
......@@ -9,7 +9,6 @@ declare module 'vue' {
export interface GlobalComponents {
AgePicker: typeof import('./src/components/PlanFields/AgePicker.vue')['default']
AgePickerGlobal: typeof import('./src/components/PlanFields/AgePickerGlobal.vue')['default']
AmountInput: typeof import('./src/components/PlanFields/AmountInput.vue')['default']
AmountKeyboard: typeof import('./src/components/PlanFields/AmountKeyboard.vue')['default']
CriticalIllnessTemplate: typeof import('./src/components/PlanTemplates/CriticalIllnessTemplate.vue')['default']
DatePicker: typeof import('./src/components/PlanFields/DatePicker.vue')['default']
......@@ -18,7 +17,6 @@ declare module 'vue' {
FilterTabs: typeof import('./src/components/FilterTabs.vue')['default']
'FilterTabs.example': typeof import('./src/components/FilterTabs.example.vue')['default']
IconFont: typeof import('./src/components/IconFont.vue')['default']
IndexNav: typeof import('./src/components/indexNav.vue')['default']
LifeInsuranceTemplate: typeof import('./src/components/PlanTemplates/LifeInsuranceTemplate.vue')['default']
ListItemActions: typeof import('./src/components/ListItemActions/index.vue')['default']
LoadMoreList: typeof import('./src/components/LoadMoreList/index.vue')['default']
......@@ -38,20 +36,15 @@ declare module 'vue' {
NutTabs: typeof import('@nutui/nutui-taro')['Tabs']
OfficeViewer: typeof import('./src/components/OfficeViewer.vue')['default']
PdfPreview: typeof import('./src/components/PdfPreview.vue')['default']
Picker: typeof import('./src/components/time-picker-data/picker.vue')['default']
PlanFormContainer: typeof import('./src/components/PlanFormContainer.vue')['default']
PlanPopup: typeof import('./src/components/PlanSchemes/PlanPopup.vue')['default']
PlanPopup: typeof import('./src/components/PlanPopup/index.vue')['default']
PlanPopupNew: typeof import('./src/components/PlanPopupNew.vue')['default']
PosterBuilder: typeof import('./src/components/PosterBuilder/index.vue')['default']
ProductCard: typeof import('./src/components/ProductCard.vue')['default']
QrCode: typeof import('./src/components/qrCode.vue')['default']
QrCodeSearch: typeof import('./src/components/qrCodeSearch.vue')['default']
RadioGroup: typeof import('./src/components/PlanFields/RadioGroup.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SavingsTemplate: typeof import('./src/components/SavingsTemplate.vue')['default']
SchemeA: typeof import('./src/components/PlanSchemes/SchemeA.vue')['default']
SchemeB: typeof import('./src/components/PlanSchemes/SchemeB.vue')['default']
SavingsTemplate: typeof import('./src/components/PlanTemplates/SavingsTemplate.vue')['default']
SearchBar: typeof import('./src/components/SearchBar.vue')['default']
SectionCard: typeof import('./src/components/SectionCard.vue')['default']
SectionItem: typeof import('./src/components/SectionItem.vue')['default']
......
......@@ -22,7 +22,9 @@
position="bottom"
v-model:visible="showPicker"
:z-index="9999"
:overlay="true"
:overlay="false"
:close-on-click-overlay="false"
:catch-move="true"
>
<nut-picker
v-model="pickerValue"
......
......@@ -23,6 +23,7 @@
v-model:visible="showPicker"
:z-index="9999"
:overlay="true"
:close-on-click-overlay="false"
>
<nut-picker
v-model="pickerValue"
......
......@@ -18,7 +18,7 @@
</div>
<!-- DatePicker 弹窗 -->
<nut-popup position="bottom" v-model:visible="showDatePicker">
<nut-popup position="bottom" v-model:visible="showDatePicker" :close-on-click-overlay="false">
<nut-date-picker
v-model="currentDate"
:min-date="minDate"
......
......@@ -18,7 +18,7 @@
</div>
<!-- DatePicker 弹窗 -->
<nut-popup position="bottom" v-model:visible="showDatePicker">
<nut-popup position="bottom" v-model:visible="showDatePicker" :close-on-click-overlay="false">
<nut-date-picker
v-model="currentDate"
:min-date="minDate"
......
......@@ -23,6 +23,7 @@
v-model:visible="showPicker"
:z-index="9999"
:overlay="true"
:close-on-click-overlay="false"
>
<nut-picker
:columns="pickerColumns"
......
......@@ -22,6 +22,7 @@
position="bottom"
v-model:visible="showPicker"
:overlay="true"
:close-on-click-overlay="false"
>
<nut-picker
:columns="pickerColumns"
......
<!--
* @Date: 2026-01-31 12:49:11
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2026-02-06 21:40:34
* @LastEditTime: 2026-02-09 20:22:23
* @FilePath: /manulife-weapp/src/components/PlanPopup/index.vue
* @Description: 文件描述
-->
......@@ -13,6 +13,7 @@
:style="{ height: '90%' }"
:close-on-click-overlay="true"
:safe-area-inset-bottom="true"
:catch-move="true"
@update:visible="handleVisibleChange"
>
<div class="h-full flex flex-col bg-gray-50 overflow-hidden rounded-t-2xl">
......