1 Commits

Author SHA1 Message Date
fde2027588 feat: 2025-10-26 22:23:14 +08:00
14 changed files with 104 additions and 34 deletions

View File

@ -5,10 +5,16 @@
&__banner {
font-weight: 400;
font-size: 24px;
height: 72px;
height: 74px;
padding: 32px 32px 25px;
line-height: 36px;
color: #999999;
background: #F5F6FA;
position: fixed;
z-index: 1;
top: 99px;
left: 0;
right: 0;
}
&__title {
height: 72px;

View File

@ -52,8 +52,8 @@ export default function PartnerBanner({ isBoss = false }) {
className={`${PREFIX}__image`}
src={
isBoss
? 'https://publiccdn.neighbourhood.com.cn/img/partner-banner-boss.png'
: 'https://publiccdn.neighbourhood.com.cn/img/partner_banner.png'
? 'https://publiccdn.neighbourhood.com.cn/img/partner_banner.png'
: 'https://publiccdn.neighbourhood.com.cn/img/partner-banner-boss.png'
}
mode="scaleToFill"
/>

View File

@ -97,6 +97,7 @@
}
&-details {
margin-top: 5px;
white-space: nowrap;
}
&-id {
font-size: 24px;

View File

@ -87,10 +87,10 @@ export default function PartnerIntro() {
{[EarnType.CHAT_ACTIVITY_SHARE_L1, EarnType.CHAT_ACTIVITY_SHARE_L2].includes(item.earnType)
? '主播被开聊'
: '会员支付'}
<div className="money">+{formatMoney(item.total)}</div>
<div className="money">+{formatMoney(item.amount, 1)}</div>
</div>
<div className={`${PREFIX}__swiper-item-info`}>
<div className="money">{formatMoney(item.amount)}</div>
<div className="money">{formatMoney(item.total, 1)}</div>
</div>
</div>
</Swiper.Item>

View File

@ -48,8 +48,8 @@ const LIST: Item[] = [
{
id: ProductSpecId.BOSS_VIP_NEW_2,
title: '推荐一月',
price: '480播豆',
amt: 48,
price: '680播豆',
amt: 68,
badge: '限时体验',
contents: [
{ content: '-通告每日优先展示', highlight: true },
@ -61,8 +61,8 @@ const LIST: Item[] = [
{
id: ProductSpecId.BOSS_VIP_NEW_3,
title: '推荐一季',
price: '960播豆',
amt: 96,
price: '1360播豆',
amt: 136,
badge: '6.7折',
contents: [
{ content: '-通告每日优先展示', highlight: true },

View File

@ -2,7 +2,7 @@ import { BaseEventOrig, InputProps, ScrollView } from '@tarojs/components';
import Taro from '@tarojs/taro';
import { Search } from '@taroify/core';
import { useCallback, useEffect, useState } from 'react';
import { Fragment, useCallback, useEffect, useState } from 'react';
import { CITY_CODE_TO_NAME_MAP, CITY_INDEXES_LIST } from '@/constants/city';
import useCityOperators from '@/hooks/use-city-operators';
@ -81,6 +81,8 @@ export default function SearchCity({
}).filter(item => item.data.length > 0)
: CITY_INDEXES_LIST;
const HOT_CITY_LIST = forGroup ? HOT_CITY.filter(it => groupCityCodes.includes(`${it.cityCode}`)) : HOT_CITY;
const handleSearchChange = useCallback((event: BaseEventOrig<InputProps.inputEventDetail>) => {
const value = event.detail.value;
log('handleSearchChange', value);
@ -183,19 +185,25 @@ export default function SearchCity({
<div>
<div className={`${PREFIX}__position-title`}></div>
<div className={`${PREFIX}__position-city`}>{CITY_CODE_TO_NAME_MAP.get(currentCity)}</div>
<div className={`${PREFIX}__hot-city-title`}></div>
<div className={`${PREFIX}__hot-city-container`}>
{HOT_CITY.map(city => (
<div
key={city.cityCode}
className={`${PREFIX}__hot-city-item`}
data-code={city.cityCode}
onClick={handleSelectCity}
>
{city.cityName}
{!!HOT_CITY_LIST.length && (
<Fragment>
<div className={`${PREFIX}__hot-city-title`}></div>
<div className={`${PREFIX}__hot-city-container`}>
{HOT_CITY_LIST.map(city => {
return (
<div
key={city.cityCode}
className={`${PREFIX}__hot-city-item`}
data-code={city.cityCode}
onClick={handleSelectCity}
>
{city.cityName}
</div>
);
})}
</div>
))}
</div>
</Fragment>
)}
<div className={`${PREFIX}__indexes-list`}>
{CITY_LIST.map(item => {
return (

View File

@ -75,7 +75,7 @@ export const EMPLOY_TYPE_TITLE_MAP = {
export const JOB_SOURCE_TYPE_TITLE_MAP = {
[JobSourceType.All]: '全部',
[JobSourceType.BL]: '认证通告',
[JobSourceType.BL]: '急招',
[JobSourceType.VX]: '群通告',
};
@ -122,10 +122,10 @@ export const JOB_PAGE_TABS = [
type: JobSourceType.BL,
title: JOB_SOURCE_TYPE_TITLE_MAP[JobSourceType.BL],
},
{
type: JobSourceType.VX,
title: JOB_SOURCE_TYPE_TITLE_MAP[JobSourceType.VX],
},
// {
// type: JobSourceType.VX,
// title: JOB_SOURCE_TYPE_TITLE_MAP[JobSourceType.VX],
// },
];
export const JOB_EMPLOY_TYPE_OPTIONS = [

View File

@ -13,6 +13,21 @@
.taroify-cell__value {
color: @blColor;
}
&-icon {
width: 40px;
height: 40px;
border-radius: 50%;
background: rgba(255, 80, 81, 0.16);
display: inline-flex;
justify-content: center;
align-items: center;
margin-right: 16px;
> image {
width: 18px;
height: 24px;
}
}
}
&__go-publish-cell {
@ -24,4 +39,6 @@
color: @blHighlightColor;
}
}
}

View File

@ -1,3 +1,5 @@
import { Image } from '@tarojs/components';
import { Cell } from '@taroify/core';
import classNames from 'classnames';
import { useCallback } from 'react';
@ -27,7 +29,14 @@ export default function CompanyFragment() {
<Cell
isLink
align="center"
title="发通告,让主播主动报单"
title={
<div>
<div className={`${PREFIX}__cell-icon`}>
<Image src="https://publiccdn.neighbourhood.com.cn/img/lightning.svg" />
</div>
</div>
}
className={classNames(`${PREFIX}__cell`, `${PREFIX}__go-publish-cell`)}
onClick={handlePublishJob}
>

View File

@ -107,7 +107,7 @@ class Http {
url: BASE_URL + url,
data,
method: method,
header: { 'content-type': contentType /*'user-Id': '588002047871053824' */ },
header: { 'content-type': contentType /*,'user-Id': '588002047871053824'*/ },
};
return this.request(option);
};

View File

@ -30,10 +30,10 @@ export default function GroupOwnerCertification() {
const { authCode } = await generateGroupAuthCode();
return getCommonShareMessage({
useCapture: false,
title: `群主测试 ${authCode}`,
title: `我在认证群主,宝子帮我点击下 ${authCode}`,
inviteCode,
params: { authCode },
path: PageUrl.GroupOwnerCertificate,
path: PageUrl.Job,
imageUrl: 'https://publiccdn.neighbourhood.com.cn/img/share-group-owner-certificate.png',
});
});

View File

@ -28,4 +28,19 @@
position: absolute;
}
}
&__tab-icon {
width: 32px;
height: 32px;
border-radius: 50%;
background: rgba(255, 80, 81, 0.16);
display: inline-flex;
justify-content: center;
align-items: center;
margin-right: 8px;
> image {
width: 14.4px;
height: 19.2px;
}
}
}

View File

@ -1,3 +1,4 @@
import { Image } from '@tarojs/components';
import Taro, { useDidShow, useLoad, useShareAppMessage } from '@tarojs/taro';
import { Tabs } from '@taroify/core';
@ -156,7 +157,20 @@ export default function Job() {
style={{ height: barHeight.current, paddingTop: statusBarHeight.current }}
>
{JOB_PAGE_TABS.map(tab => (
<Tabs.TabPane value={tab.type} title={tab.title} key={tab.type}>
<Tabs.TabPane
value={tab.type}
title={
<>
{tab.type === JobSourceType.BL ? (
<div className={`${PREFIX}__tab-icon`}>
<Image src="https://publiccdn.neighbourhood.com.cn/img/lightning.svg" />
</div>
) : null}
{tab.title}
</>
}
key={tab.type}
>
<JobFragment
cityCode={cityCode}
sortType={sortType}

View File

@ -81,12 +81,12 @@ export const getProfitList = async (data: GetProfitRequest) => {
return Array.isArray(result) ? result : [];
return [];
};
export const formatMoney = (cents: number) => {
export const formatMoney = (cents: number, fraction = 2) => {
if (!cents) {
return '0';
}
const yuan = cents / 100;
return yuan.toFixed(2);
return yuan.toFixed(fraction);
};
export function formatTimestamp(timestamp: string, dateOnly?: boolean): string {
// 创建 Date 对象