This commit is contained in:
chashaobao
2025-10-15 20:44:20 +08:00
parent 7ba04b27ff
commit 3d2b121b92
23 changed files with 724 additions and 65 deletions

View File

@ -1,26 +1,123 @@
import { Button, Image } from '@tarojs/components';
import Taro, { useShareAppMessage } from '@tarojs/taro';
import { Tabs } from '@taroify/core';
import { Arrow } from '@taroify/icons';
import { useCallback, useEffect, useRef, useState } from 'react';
import GroupCertificationList from '@/components/group-certification-list';
import { EventName, OpenSource, PageUrl } from '@/constants/app';
import { CITY_CODE_TO_NAME_MAP } from '@/constants/city';
import useInviteCode from '@/hooks/use-invite-code';
import useLocation from '@/hooks/use-location';
import { StaffInfo } from '@/types/partner';
import { generateGroupAuthCode, getStaffInfo } from '@/utils/partner';
import { navigateTo } from '@/utils/route';
import { getCommonShareMessage } from '@/utils/share';
import './index.less';
const PREFIX = 'group-owner-certification';
export default function GroupOwnerCertification() {
return;
<div className={PREFIX}>
<Tabs className={`${PREFIX}__tabs`}>
<Tabs.TabPane value={0} title="认证方法">
<div className={`${PREFIX}__main`}>
<div className={`${PREFIX}__block`}>
<div className={`${PREFIX}__title`}></div>
<div className={`${PREFIX}__card`}>
<div className={`${PREFIX}__body`}>
<div></div>
<div></div>
const location = useLocation();
const inviteCode = useInviteCode();
const [cityCode, setCityCode] = useState<string>(location.cityCode);
const cityValuesChangedRef = useRef(false);
Taro.showShareMenu({
withShareTicket: true,
});
useShareAppMessage(async () => {
const { authCode } = await generateGroupAuthCode();
return getCommonShareMessage({
useCapture: false,
title: `群主测试,${authCode}`,
inviteCode,
params: { authCode },
path: PageUrl.GroupOwnerCertificate,
imageUrl: 'https://publiccdn.neighbourhood.com.cn/img/share-group-owner-certificate.png',
});
});
const handleClickCityMenu = useCallback(() => {
navigateTo(PageUrl.CitySearch, { city: cityCode, source: OpenSource.GroupOwnerCertificate });
}, [cityCode]);
const handleCityChange = useCallback(data => {
console.log('handleCityChange', data);
const { openSource, cityCode: cCode } = data;
if (openSource !== OpenSource.GroupOwnerCertificate) {
return;
}
cityValuesChangedRef.current = true;
setCityCode(cCode);
}, []);
useEffect(() => {
if (cityValuesChangedRef.current) {
return;
}
setCityCode(location.cityCode);
}, [location]);
useEffect(() => {
Taro.eventCenter.on(EventName.SELECT_CITY, handleCityChange);
return () => {
Taro.eventCenter.off(EventName.SELECT_CITY, handleCityChange);
};
}, [handleCityChange]);
const [staffInfo, setStaffInfo] = useState<StaffInfo | null>(null);
useEffect(() => {
getStaffInfo(cityCode)
.then(data => {
setStaffInfo(data);
})
.catch(() => {
setStaffInfo(null);
});
}, [cityCode]);
return (
<div className={PREFIX}>
<Tabs className={`${PREFIX}__tabs`}>
<Tabs.TabPane value={0} title="认证方法">
<div className={`${PREFIX}__main`}>
<div className={`${PREFIX}__block`}>
<div className={`${PREFIX}__title`}></div>
<div className={`${PREFIX}__card`}>
<div className={`${PREFIX}__body`}>
<div></div>
<div></div>
</div>
<div className={`${PREFIX}__lined-wrapper`}>
<div className={`${PREFIX}__lined-title`}></div>
</div>
<div className={`${PREFIX}__city-select`} onClick={handleClickCityMenu}>
{CITY_CODE_TO_NAME_MAP.get(cityCode)}
<Arrow size={16} />
</div>
<div className={`${PREFIX}__lined-wrapper`}>
<div className={`${PREFIX}__lined-title`}></div>
</div>
{staffInfo && <Image className={`${PREFIX}__qrcode`} src={staffInfo.staffQrCode} mode="aspectFill" />}
</div>
<div className={`${PREFIX}__title`}></div>
<div className={`${PREFIX}__card`}>
<div className={`${PREFIX}__h1 ${PREFIX}__bold`}></div>
<div className={`${PREFIX}__body center`}>
<div className="highlight">1</div>
1
</div>
<Button className={`${PREFIX}__share`} openType="share">
</Button>
</div>
</div>
</div>
</div>
</Tabs.TabPane>
<Tabs.TabPane value={1} title="已认证的群"></Tabs.TabPane>
</Tabs>
</div>;
</Tabs.TabPane>
<Tabs.TabPane value={1} title="已认证的群">
<GroupCertificationList />
</Tabs.TabPane>
</Tabs>
</div>
);
}