This commit is contained in:
chashaobao
2025-12-06 21:19:25 +08:00
parent 6b084b2df2
commit 4ed1d45873
5 changed files with 33 additions and 5 deletions

View File

@ -1,14 +1,15 @@
import { Button, Image } from '@tarojs/components';
import Taro from '@tarojs/taro';
import { Popup, Dialog } from '@taroify/core';
import { Dialog, Popup } from '@taroify/core';
import { Fragment, useCallback, useState } from 'react';
import JobBuy from '@/components/product-dialog/steps-ui/job-buy';
import SafeBottomPadding from '@/components/safe-bottom-padding';
import { PageUrl } from '@/constants/app';
import { CacheKey } from '@/constants/cache-key';
import { GET_CONTACT_TYPE } from '@/constants/job';
import { navigateTo } from '@/utils/route';
import { switchTab, navigateTo } from '@/utils/route';
import './index.less';
interface IProps {
@ -33,11 +34,19 @@ const GET_CONTACT_TYPE_OPTIONS = [
desc: '开通会员每天免费查看',
btnText: '开通',
},
{
type: GET_CONTACT_TYPE.GROUP,
icon: 'https://publiccdn.neighbourhood.com.cn/img/group-avatar.png',
title: '进群领会员(免费报单)',
desc: '群内定期发放会员,免费报单',
btnText: '进群',
},
];
export function PrejobPopup({ onCancel, onConfirm }: IProps) {
const [openPopup, setOpenPopup] = useState(true);
const [openDialog, setOpenDialog] = useState(false);
const [clicked, setClicked] = useState(!!Taro.getStorageSync(CacheKey.JOIN_GROUP_POPUP_CLICKED));
const handleClick = (type: GET_CONTACT_TYPE) => () => {
if (type === GET_CONTACT_TYPE.MATERIAL) {
navigateTo(PageUrl.MaterialUploadVideo);
@ -47,6 +56,12 @@ export function PrejobPopup({ onCancel, onConfirm }: IProps) {
setOpenPopup(false);
setOpenDialog(true);
}
if (type === GET_CONTACT_TYPE.GROUP) {
Taro.setStorageSync(CacheKey.JOIN_GROUP_POPUP_CLICKED, true);
setClicked(true);
switchTab(PageUrl.GroupV2);
onConfirm(type);
}
};
const handleAfterBuy = useCallback(async () => {
onConfirm(GET_CONTACT_TYPE.VIP);
@ -58,6 +73,9 @@ export function PrejobPopup({ onCancel, onConfirm }: IProps) {
<div className={`${PREFIX}__title`}></div>
<div className={`${PREFIX}__body`}>
{GET_CONTACT_TYPE_OPTIONS.map(option => {
if (clicked && option.type === GET_CONTACT_TYPE.GROUP) {
return;
}
return (
<div className={`${PREFIX}__item`} key={option.type}>
<div className={`${PREFIX}__item-icon ${option.type}`}>

View File

@ -12,7 +12,7 @@ import { DeclarationType, ProductType } from '@/constants/product';
import { JobDetails } from '@/types/job';
import { GetProductIsUnlockResponse, ProductInfo } from '@/types/product';
import { logWithPrefix } from '@/utils/common';
import { requestProductUseRecord, requestUseProduct } from '@/utils/product';
import { requestUseProduct } from '@/utils/product';
import Toast from '@/utils/toast';
import '../index.less';
@ -67,6 +67,7 @@ function ProductContactDialog(props: Omit<IProps, 'visible'>) {
return;
}
const productInfo = await requestUseProduct(PRODUCT_CODE, { jobId: data.id });
console.log('开始报单');
Taro.eventCenter.trigger(EventName.READ_CONTACT);
handleContact(productInfo.declarationTypeResult);
} catch (e) {

View File

@ -13,4 +13,5 @@ export enum CacheKey {
AGREEMENT_SIGNED = '__agreement_signed__',
CITY_CODES = '__city_codes__',
JOIN_GROUP_CARD_CLICKED = '__join_group_card_clicked__',
JOIN_GROUP_POPUP_CLICKED = '__join_group_popup_clicked__',
}

View File

@ -213,4 +213,5 @@ export const FULL_PRICE_OPTIONS = FULL_EMPLOY_SALARY_OPTIONS.filter(o => !!o.val
export enum GET_CONTACT_TYPE {
VIP = 'vip',
MATERIAL = 'material',
GROUP = 'group',
}

View File

@ -42,6 +42,7 @@ import { getJumpUrl, getPageQuery, navigateTo } from '@/utils/route';
import { getCommonShareMessage } from '@/utils/share';
import { formatDate } from '@/utils/time';
import Toast from '@/utils/toast';
import { isNeedPhone } from '@/utils/user';
import './index.less';
const PREFIX = 'job-detail';
@ -75,7 +76,8 @@ const AnchorFooter = (props: { data: JobDetails }) => {
const [showBuyDialog, setShowBuyDialog] = useState(false);
const [productInfo, setProductInfo] = useState<undefined | ProductInfo>();
const [productRecord, setProductRecord] = useState<undefined | GetProductIsUnlockResponse>();
const userInfo = useUserInfo();
const needPhone = isNeedPhone(userInfo);
const getProductRecord = useCallback(async () => {
const result = await requestProductUseRecord(ProductType.VIP, { jobId: data.id });
setProductRecord(result);
@ -163,8 +165,11 @@ const AnchorFooter = (props: { data: JobDetails }) => {
const handleAfterBuy = useCallback(async () => {
setShowBuyDialog(false);
Taro.showLoading({ mask: true, title: '加载中...' });
await getProductBalance();
console.log('购买后重新获取次数');
setContactDialogVisible(true);
Taro.hideLoading();
}, [getProductBalance]);
const handleCancel = useCallback(() => {
@ -217,6 +222,8 @@ const AnchorFooter = (props: { data: JobDetails }) => {
<div className={`${PREFIX}__contact-publisher-tag`}>
{data.isAuthed ? '急招岗位可免费查看' : productInfo?.content}
</div>
) : needPhone ? (
<div className={`${PREFIX}__contact-publisher-tag`}></div>
) : null}
</LoginButton>
</div>