hookehuyr

feat(plan): 统一计划书权限检查使用 requireLogin

- 将 checkPlanPermission 改为 requireLogin
- 更新导入:usePlanPermission → usePermission
- 计划书专属文案:请先登录后制作专属计划书

影响文件:
- src/pages/index/index.vue
- src/pages/product-center/index.vue
- src/pages/product-detail/index.vue
- src/pages/search/index.vue

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
......@@ -95,7 +95,10 @@
:tags="product.tags"
:class="{ 'mb-[24rpx]': index < hotProducts.length - 1 }"
@detail="goToProductDetail"
@plan="(productId) => checkPlanPermission(() => openPlanPopup(productId))"
@plan="(productId) => requireLogin(
() => openPlanPopup(productId),
{ content: '请先登录后制作专属计划书', confirmText: '立即登录' }
)"
/>
</view>
</view>
......@@ -173,15 +176,14 @@ import { listAPI } from '@/api/get_product';
import { weekHotAPI } from '@/api/file';
import { homeIconAPI } from '@/api/home';
import { usePlanSubmit } from '@/composables/usePlanSubmit';
import { usePlanPermission } from '@/composables/usePlanPermission';
import { usePermission } from '@/composables/usePermission';
// 初始化权限检查
const { requireLogin } = usePermission()
// User Store
const userStore = useUserStore();
// 获取权限检查方法
const { checkPlanPermission } = usePlanPermission();
// Header Image Error State
/**
* 头部图片加载失败状态
......@@ -445,10 +447,10 @@ const handleGridNav = (item) => {
// 特殊处理:计划书页面需要登录权限
if (item.route === '/pages/plan/index') {
checkPlanPermission(navigate, {
content: '计划书功能需要登录后才能使用,是否立即登录?',
confirmText: '去登录'
});
requireLogin(
() => navigate(),
{ content: '请先登录后查看专属计划书', confirmText: '立即登录' }
);
} else {
// 其他页面直接导航
navigate();
......
......@@ -151,7 +151,11 @@ import PlanFormContainer from '@/components/plan/PlanFormContainer.vue'
import { listAPI } from '@/api/get_product'
import { mockProductListAPI } from '@/utils/mockData'
import { usePlanSubmit } from '@/composables/usePlanSubmit'
import { usePlanPermission } from '@/composables/usePlanPermission'
import { usePermission } from '@/composables/usePermission'
// 初始化权限检查
const { requireLogin } = usePermission()
import { USE_MOCK_DATA } from '@/config/app'
// ⚠️ MOCK 数据开关 - 统一从 @/config/app 导入
......@@ -160,9 +164,6 @@ const go = useGo()
// User Store
const userStore = useUserStore()
// 获取权限检查方法
const { checkPlanPermission } = usePlanPermission()
/**
* 当前列表数据
* @type {Ref<Array<any>>}
......@@ -502,11 +503,14 @@ const { handleClick: handleProductClick } = useListItemClick({
*/
const openPlanPopup = (product) => {
console.log('[Product Center] 点击制作计划书,当前登录状态:', userStore.isLoggedIn)
checkPlanPermission(() => {
requireLogin(
() => {
console.log('[Product Center] 权限检查通过,打开计划书弹窗')
selectedProduct.value = product
showPlanPopup.value = true
})
},
{ content: '请先登录后制作专属计划书', confirmText: '立即登录' }
)
}
// 使用 composable 统一处理计划书提交后逻辑
......
......@@ -104,7 +104,10 @@
<nut-button
color="#2563EB"
class="!w-full !h-[88rpx] !rounded-[16rpx] !text-[28rpx] !font-bold"
@tap="() => checkPlanPermission(() => openPlanPopup())"
@tap="() => requireLogin(
() => openPlanPopup(),
{ content: '请先登录后制作专属计划书', confirmText: '立即登录' }
)"
>
制作计划书
</nut-button>
......@@ -134,7 +137,10 @@ import Taro, { useLoad } from '@tarojs/taro'
import { getDocumentIcon, getDocumentLabel } from '@/utils/documentIcons'
import { detailAPI } from '@/api/get_product'
import { usePlanSubmit } from '@/composables/usePlanSubmit'
import { usePlanPermission } from '@/composables/usePlanPermission'
import { usePermission } from '@/composables/usePermission'
// 初始化权限检查
const { requireLogin } = usePermission()
const { viewFile } = useFileOperation()
......@@ -214,7 +220,6 @@ const viewDocument = (doc) => {
*
* @description 检查登录权限后,打开当前产品的计划书表单
*/
const { checkPlanPermission } = usePlanPermission()
const openPlanPopup = () => {
showPlanPopup.value = true
......
......@@ -74,7 +74,10 @@
:tags="item.tags || []"
class="search-result-item"
@detail="goToProductDetail"
@plan="(productId) => checkPlanPermission(() => openPlanPopup(productId))"
@plan="(productId) => requireLogin(
() => openPlanPopup(productId),
{ content: '请先登录后制作专属计划书', confirmText: '立即登录' }
)"
/>
<!-- File Results -->
......@@ -140,7 +143,6 @@ import { mockSearchAPI } from '@/utils/mockData'
import { USE_MOCK_DATA } from '@/config/app'
import { usePlanSubmit } from '@/composables/usePlanSubmit'
import { usePermission } from '@/composables/usePermission'
import { usePlanPermission } from '@/composables/usePlanPermission'
// ⚠️ MOCK 数据开关 - 统一从 @/config/app 导入
......@@ -165,9 +167,6 @@ onMounted(() => {
)
})
// 获取权限检查方法
const { checkPlanPermission } = usePlanPermission()
/**
* 搜索页面状态管理
* @description 支持双类型(产品/资料)搜索,自动切换分类
......