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 { &__banner {
font-weight: 400; font-weight: 400;
font-size: 24px; font-size: 24px;
height: 72px; height: 74px;
padding: 32px 32px 25px; padding: 32px 32px 25px;
line-height: 36px; line-height: 36px;
color: #999999; color: #999999;
background: #F5F6FA;
position: fixed;
z-index: 1;
top: 99px;
left: 0;
right: 0;
} }
&__title { &__title {
height: 72px; height: 72px;

View File

@ -52,8 +52,8 @@ export default function PartnerBanner({ isBoss = false }) {
className={`${PREFIX}__image`} className={`${PREFIX}__image`}
src={ src={
isBoss 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" mode="scaleToFill"
/> />

View File

@ -97,6 +97,7 @@
} }
&-details { &-details {
margin-top: 5px; margin-top: 5px;
white-space: nowrap;
} }
&-id { &-id {
font-size: 24px; 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) {[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>
<div className={`${PREFIX}__swiper-item-info`}> <div className={`${PREFIX}__swiper-item-info`}>
<div className="money">{formatMoney(item.amount)}</div> <div className="money">{formatMoney(item.total, 1)}</div>
</div> </div>
</div> </div>
</Swiper.Item> </Swiper.Item>

View File

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

View File

@ -2,7 +2,7 @@ import { BaseEventOrig, InputProps, ScrollView } from '@tarojs/components';
import Taro from '@tarojs/taro'; import Taro from '@tarojs/taro';
import { Search } from '@taroify/core'; 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 { CITY_CODE_TO_NAME_MAP, CITY_INDEXES_LIST } from '@/constants/city';
import useCityOperators from '@/hooks/use-city-operators'; import useCityOperators from '@/hooks/use-city-operators';
@ -81,6 +81,8 @@ export default function SearchCity({
}).filter(item => item.data.length > 0) }).filter(item => item.data.length > 0)
: CITY_INDEXES_LIST; : 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 handleSearchChange = useCallback((event: BaseEventOrig<InputProps.inputEventDetail>) => {
const value = event.detail.value; const value = event.detail.value;
log('handleSearchChange', value); log('handleSearchChange', value);
@ -183,9 +185,12 @@ export default function SearchCity({
<div> <div>
<div className={`${PREFIX}__position-title`}></div> <div className={`${PREFIX}__position-title`}></div>
<div className={`${PREFIX}__position-city`}>{CITY_CODE_TO_NAME_MAP.get(currentCity)}</div> <div className={`${PREFIX}__position-city`}>{CITY_CODE_TO_NAME_MAP.get(currentCity)}</div>
{!!HOT_CITY_LIST.length && (
<Fragment>
<div className={`${PREFIX}__hot-city-title`}></div> <div className={`${PREFIX}__hot-city-title`}></div>
<div className={`${PREFIX}__hot-city-container`}> <div className={`${PREFIX}__hot-city-container`}>
{HOT_CITY.map(city => ( {HOT_CITY_LIST.map(city => {
return (
<div <div
key={city.cityCode} key={city.cityCode}
className={`${PREFIX}__hot-city-item`} className={`${PREFIX}__hot-city-item`}
@ -194,8 +199,11 @@ export default function SearchCity({
> >
{city.cityName} {city.cityName}
</div> </div>
))} );
})}
</div> </div>
</Fragment>
)}
<div className={`${PREFIX}__indexes-list`}> <div className={`${PREFIX}__indexes-list`}>
{CITY_LIST.map(item => { {CITY_LIST.map(item => {
return ( return (

View File

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

View File

@ -13,6 +13,21 @@
.taroify-cell__value { .taroify-cell__value {
color: @blColor; 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 { &__go-publish-cell {
@ -24,4 +39,6 @@
color: @blHighlightColor; color: @blHighlightColor;
} }
} }
} }

View File

@ -1,3 +1,5 @@
import { Image } from '@tarojs/components';
import { Cell } from '@taroify/core'; import { Cell } from '@taroify/core';
import classNames from 'classnames'; import classNames from 'classnames';
import { useCallback } from 'react'; import { useCallback } from 'react';
@ -27,7 +29,14 @@ export default function CompanyFragment() {
<Cell <Cell
isLink isLink
align="center" 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`)} className={classNames(`${PREFIX}__cell`, `${PREFIX}__go-publish-cell`)}
onClick={handlePublishJob} onClick={handlePublishJob}
> >

View File

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

View File

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

View File

@ -28,4 +28,19 @@
position: absolute; 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 Taro, { useDidShow, useLoad, useShareAppMessage } from '@tarojs/taro';
import { Tabs } from '@taroify/core'; import { Tabs } from '@taroify/core';
@ -156,7 +157,20 @@ export default function Job() {
style={{ height: barHeight.current, paddingTop: statusBarHeight.current }} style={{ height: barHeight.current, paddingTop: statusBarHeight.current }}
> >
{JOB_PAGE_TABS.map(tab => ( {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 <JobFragment
cityCode={cityCode} cityCode={cityCode}
sortType={sortType} sortType={sortType}

View File

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