'use client'; import { useState } from 'react'; import { PageContainer } from '@/components/layout'; import { cn } from '@/utils/helpers'; import styles from './authorization.module.scss'; /** * 省/市公司数据接口 */ interface CompanyItem { id: string; avatar: string; nickname: string; accountId: string; province: string; city?: string; teamAdoptions: number; authStatus: 'authorized' | 'pending'; } /** * 阶梯性考核目标数据接口 */ interface TargetItem { month: string; provinceMonthly: number; provinceTotal: number; cityMonthly: number; cityTotal: number; } /** * 特殊城市规则接口 */ interface SpecialCityRule { city: string; enabled: boolean; } // 模拟省公司数据 const mockProvinceCompanies: CompanyItem[] = [ { id: '1', avatar: '', nickname: '用户昵称一', accountId: '123456789', province: '广东省', teamAdoptions: 1234, authStatus: 'authorized' }, ]; // 模拟市公司数据 const mockCityCompanies: CompanyItem[] = [ { id: '1', avatar: '', nickname: '用户昵称二', accountId: '987654321', province: '广东省', city: '深圳市', teamAdoptions: 567, authStatus: 'pending' }, ]; // 阶梯性考核目标数据 const targetData: TargetItem[] = [ { month: '第 1 个月', provinceMonthly: 500, provinceTotal: 500, cityMonthly: 100, cityTotal: 100 }, { month: '第 2 个月', provinceMonthly: 500, provinceTotal: 1000, cityMonthly: 100, cityTotal: 200 }, { month: '...', provinceMonthly: 0, provinceTotal: 0, cityMonthly: 0, cityTotal: 0 }, { month: '第 9 个月', provinceMonthly: 1000, provinceTotal: 6000, cityMonthly: 200, cityTotal: 1200 }, ]; // 特殊城市规则 const specialCities: SpecialCityRule[] = [ { city: '北京市', enabled: false }, { city: '上海市', enabled: true }, ]; /** * 授权管理页面 * 基于 UIPro Figma 设计实现 */ export default function AuthorizationPage() { // 省公司规则状态 const [provinceThreshold, setProvinceThreshold] = useState('500'); const [provinceBenefit, setProvinceBenefit] = useState('20'); const [provinceAfterBenefit, setProvinceAfterBenefit] = useState('20'); const [provinceResetEnabled, setProvinceResetEnabled] = useState(true); // 市公司规则状态 const [cityThreshold, setCityThreshold] = useState('100'); const [cityBenefit, setCityBenefit] = useState('40'); const [cityAfterBenefit, setCityAfterBenefit] = useState('40'); const [cityResetEnabled, setCityResetEnabled] = useState(true); // 授权限制规则 const [topRankLimit, setTopRankLimit] = useState('10'); const [specialRules, setSpecialRules] = useState(specialCities); // 渲染开关组件 const renderToggle = (checked: boolean, onChange: (checked: boolean) => void) => (
onChange(!checked)} role="switch" aria-checked={checked} tabIndex={0} onKeyDown={(e) => e.key === 'Enter' && onChange(!checked)} >
); // 渲染省公司表格 const renderProvinceTable = () => (
头像
昵称
账户序列号
所属省份
伞下团队认种总量(棵)
授权状态
操作
{mockProvinceCompanies.map((item) => (
{item.nickname}
{item.accountId}
{item.province}
{item.teamAdoptions.toLocaleString()}
{item.authStatus === 'authorized' ? '已授权' : '待授权'}
))}
); // 渲染市公司表格 const renderCityTable = () => (
头像
昵称
账户序列号
所属省/市
伞下团队认种总量(棵)
授权状态
操作
{mockCityCompanies.map((item) => (
{item.nickname}
{item.accountId}
{item.province} / {item.city}
{item.teamAdoptions}
{item.authStatus === 'authorized' ? '已授权' : '待授权'}
))}
); return (
{/* 授权省公司管理 */}

授权省公司管理

{renderProvinceTable()}

帮助:在此管理和筛选具备省公司资格的账号,并发起授权操作。

{/* 授权省公司团队权益考核规则 */}

授权省公司团队权益考核规则

setProvinceThreshold(e.target.value)} placeholder="500" />
setProvinceBenefit(e.target.value)} placeholder="20" /> 即,累计完成 {provinceThreshold} 棵目标前,每新增 1 棵获得的权益
setProvinceAfterBenefit(e.target.value)} placeholder="20" />
未达成本月考核目标时,权益失效并从 0 重新累计 {provinceThreshold} 棵 {renderToggle(provinceResetEnabled, setProvinceResetEnabled)}
{/* 授权市公司管理 */}

授权市公司管理

{renderCityTable()}

帮助:在此管理和筛选具备市公司资格的账号,并发起授权操作。

{/* 授权市公司团队权益考核规则 */}

授权市公司团队权益考核规则

setCityThreshold(e.target.value)} placeholder="100" />
setCityBenefit(e.target.value)} placeholder="40" /> 即,累计完成 {cityThreshold} 棵目标前,每新增 1 棵获得的权益
setCityAfterBenefit(e.target.value)} placeholder="40" />
未达成本月考核目标时,权益失效并从 0 重新累计 {cityThreshold} 棵 {renderToggle(cityResetEnabled, setCityResetEnabled)}
{/* 正式省公司/市公司授权管理 */}

正式省公司授权管理

当省公司完成全部阶梯性考核后,可在此授权为正式省公司。

头像
昵称
序列号
省份
状态
操作

正式市公司授权管理

当市公司完成全部阶梯性考核后,可在此授权为正式市公司。

头像
昵称
序列号
省/市
状态
操作
{/* 省公司 / 市公司 授权限制规则 */}

省公司 / 市公司 授权限制规则

每个省份仅可授权 1 个省公司账号
每个城市仅可授权 1 个市公司账号 (例如:广东省深圳市)
伞下团队认种总量排名前 setTopRankLimit(e.target.value)} aria-label="排名限制" /> 的账号具备授权资格
特殊城市授权规则 (如直辖市、特别行政区)
{specialRules.map((rule, index) => (
{rule.city}
{renderToggle(rule.enabled, (enabled) => { const newRules = [...specialRules]; newRules[index] = { ...rule, enabled }; setSpecialRules(newRules); })} 启用特例
))}
{/* 省公司 / 市公司 阶梯性考核目标 */}

省公司 / 市公司 阶梯性考核目标

考核月
省代当月目标(棵)
省代累计目标(棵)
市代当月目标(棵)
市代累计目标(棵)
{targetData.map((row, index) => (
{row.month}
{row.month === '...' ? '...' : row.provinceMonthly}
{row.month === '...' ? '...' : row.provinceTotal}
{row.month === '...' ? '...' : row.cityMonthly}
{row.month === '...' ? '...' : row.cityTotal}
))}

帮助:完成全部 9 个月阶梯考核后,可升级为正式省/市公司。

); }