feat: first commit

This commit is contained in:
eleanor.mao
2025-03-31 22:34:22 +08:00
commit d25187c9c8
390 changed files with 57031 additions and 0 deletions

83
src/constants/app.ts Normal file
View File

@ -0,0 +1,83 @@
export const APP_TAB_BAR_ID = 'app-custom-tab-bar';
export const CONTACT_WE_COM_ID = 'a7fb5b91778009f036207269c65aaaab';
export enum PageType {
Start = 'start',
JOB = 'job',
Group = 'group',
GroupV2 = 'group-v2',
Anchor = 'anchor',
Message = 'message',
BatchPublish = 'batch-publish',
User = 'user',
DEV = 'dev',
}
export enum EventName {
ADD_GROUP = 'add_group',
SELECT_CITY = 'select_city',
CREATE_PROFILE = 'create_profile',
UPDATE_PROFILE = 'update_profile',
EDIT_JOB_DESCRIBE = 'edit_job_describe',
JOB_UPDATE = 'job_update',
COMPANY_JOB_PUBLISH_CHANGED = 'company_job_publish_changed',
SELECT_MY_PUBLISH_JOB = 'select_my_publish_job',
EXIT_CHAT_PAGE = 'exit_chat_page',
VIEW_MATERIAL_SUCCESS = 'view_material_success',
}
export enum OpenSource {
None = 'none',
JobPage = 'job_page',
JobSearch = 'job_search',
AddIndentCity = 'profile_add_indent_city',
UserPage = 'user_page',
AnchorPage = 'anchor_page',
MaterialViewPage = 'material_view_page',
}
export enum PageUrl {
Start = 'pages/start/index',
DevDebug = 'pages/dev-debug/index',
Job = 'pages/job/index',
Group = 'pages/group/index',
GroupV2 = 'pages/group-v2/index',
GroupList = 'pages/group-list/index',
Anchor = 'pages/anchor/index',
Message = 'pages/message/index',
MessageChat = 'pages/message-chat/index',
User = 'pages/user/index',
JobDetail = 'pages/job-detail/index',
JobSearch = 'pages/job-search/index',
JobPublish = 'pages/job-publish/index',
JobPublishDescribe = 'pages/job-publish-describe/index',
JobPublishAddress = 'pages/job-publish-address/index',
JobSelectMyPublish = 'pages/job-select-my-publish/index',
GroupJob = 'pages/group-job/index',
CitySearch = 'pages/search-city/index',
UserInfo = 'pages/user-info/index',
UserBatchPublish = 'pages/user-batch-publish/index',
MyDeclaration = 'pages/my-declaration/index',
MyPublish = 'pages/my-publish/index',
FollowGroup = 'pages/follow-group/index',
MaterialProfile = 'pages/material-profile/index',
MaterialUploadVideo = 'pages/material-upload-video/index',
MaterialCreateProfile = 'pages/material-create-profile/index',
MaterialEditProfile = 'pages/material-edit-profile/index',
MaterialView = 'pages/material-view/index',
MaterialWebview = 'pages/material-webview/index',
Certification = 'pages/certification/index',
CertificationStart = 'pages/certification-start/index',
CertificationManage = 'pages/certification-manage/index',
ProtocolWebview = 'pages/protocol-webview/index',
PrivacyWebview = 'pages/privacy-webview/index',
}
export enum PluginUrl {
LocationSelect = 'plugin://chooseLocation/index',
}
export enum RoleType {
Anchor = '1',
Company = '2',
}

View File

@ -0,0 +1,11 @@
export enum CacheKey {
// CACHE_USER_INFO = '__cache_user_info__',
CACHE_LOCATION_INFO = '__cache_location_info__',
JOB_SEARCH_HISTORY = '__job_search_history__',
LAST_OPEN_MINI_PROGRAM_TIME = '__last_open_mini_program_time__',
LAST_SHOW_MATERIAL_TIME = '__last_show_material_time__',
SHOW_LOGIN_DIALOG = '__show_login_dialog__',
APP_MODE = '__bl_app_mode__',
APP_MODE_NEW = '__bl_app_mode_2__',
LAST_SELECT_MY_JOB = '__last_select_my_job__',
}

5861
src/constants/city.ts Normal file

File diff suppressed because it is too large Load Diff

5
src/constants/company.ts Normal file
View File

@ -0,0 +1,5 @@
export enum CertificationStatusType {
None = '0',
Success = '1',
Fail = '2',
}

36
src/constants/event.ts Normal file
View File

@ -0,0 +1,36 @@
export enum CollectEventName {
DEBUG = 'dev_debug_info',
CREATE_ORDER_VIEW = 'create_order_view',
UPLOAD_VIDEO_FAILED = 'upload_video_failed',
SAVE_VIDEO_LIST_FAILED = 'save_video_list_failed',
VIDEO_EXCEEDING_LIMITS = 'video_exceeding_limits',
MATERIAL_CARD_VIEW = 'material_card_view',
CREATE_MATERIAL_FAILED = 'create_material_failed',
UPDATE_MATERIAL_FAILED = 'update_material_failed',
UPDATE_ID_CARD_FAILED = 'update_id_card_failed',
CERTIFICATION_PAGE = 'certification_page',
SUBMIT_CERTIFICATION_FAILED = 'submit_certification_failed',
PUBLISH_JOB_FAILED = 'publish_job_failed',
PUBLISH_OPEN_JOB_FAILED = 'publish_open_job_failed',
UPDATE_JOB_FAILED = 'update_job_failed',
CLOSE_JOB_FAILED = 'close_job_failed',
VIEW_MATERIAL_FAILED = 'view_material_failed',
REQUEST_MATERIAL_SHARE_CODE_FAILED = 'request_material_share_code_failed',
SWITCH_APP_MODE_FAILED = 'SWITCH_APP_MODE_FAILED',
MESSAGE_DEV_LOG = 'MESSAGE_DEV_LOG',
}
export enum ReportEventId {
VIEW_MATERIAL_GUIDE = 'view_material_guide',
CLICK_UPLOAD_VIDEO = 'click_upload_video',
CLICK_SAVE_VIDEOS = 'click_save_videos',
CLICK_PASTE_RESUME_TEXT = 'click_paste_resume_text',
CLICK_SAVE_RESUME_TEXT = 'click_save_resume_text',
CLICK_GO_TO_CREATE_MATERIAL = 'click_go_to_create_material',
CLICK_JOB_CONTACT = 'click_job_contact',
CLICK_START_CERTIFICATION = 'click_start_certification',
CLICK_UPLOAD_ID_CARD = 'click_upload_id_card',
CLICK_CERTIFICATION_SUBMIT = 'click_certification_submit',
CLICK_GO_TO_PUBLISH_JOB = 'click_go_to_publish_job',
CLICK_PAY_PUBLISH_JOB = 'click_pay_publish_job',
}

31
src/constants/group.ts Normal file
View File

@ -0,0 +1,31 @@
export enum GroupType {
// 所有可加入的群
All = 'ALL',
// 我加入的
Joined = 'JOINED',
// 我创建的
Created = 'CREATED',
// 我关注的
Followed = 'FOLLOWED',
}
export enum GroupStatus {
All = 0,
Requested = 1,
}
export const GROUP_PAGE_TABS = [
{
type: GroupType.All,
title: '可进群',
},
{
type: GroupType.Joined,
title: '我的群',
},
];
export const GROUP_STATUS_OPTIONS = [
{ label: '全部', value: GroupStatus.All },
{ label: '已申请', value: GroupStatus.Requested },
];

176
src/constants/job.ts Normal file
View File

@ -0,0 +1,176 @@
export enum JobType {
All = 'ALL',
Finery = 'FINERY', // 服饰
Makeups = 'MAKEUPS', // 美妆
Digital = 'DIGITAL', //数码
Foods = 'FOODS', // 食品酒饮
Jewelry = 'JEWELRY', // 珠宝
Appliance = 'APPLIANCE', // 家电
Furniture = 'FURNITURE', // 日用家具
PetFamily = 'PET_FAMILY', // 母婴宠物
Luxury = 'LUXURY', // 奢品
LocalLive = 'LOCAL_LIVE', // 本地生活
Car = 'CAR', // 汽车
Play = 'PLAY', // 娱乐
Other = 'OTHER', // 娱乐
}
export enum EmployType {
All = 'ALL',
Full = 'FULL_TIME',
Part = 'PARTY_TIME',
}
export enum SortType {
RECOMMEND = 'RECOMMEND',
DISTANCE = 'DISTANCE',
CREATE_TIME = 'CREATETIME',
}
export enum UserJobType {
MyDeclared = 0,
MyBrowsed = 1,
}
export enum JobManageType {
All = 'ALL',
Open = 'OPEN',
Pending = 'PENDING',
Error = 'FAIL',
}
export enum JobManageStatus {
WaitVerify = 0,
Open = 1,
Error = 2,
Pending = 3,
Close = 4,
Expire = 5,
}
export const ALL_JOB_TYPES = Object.values(JobType);
export const ALL_SORT_TYPES = Object.values(SortType);
export const ALL_EMPLOY_TYPES = Object.values(EmployType);
export const SORT_TYPE_TITLE_MAP = {
[SortType.RECOMMEND]: '推荐',
[SortType.DISTANCE]: '附近',
[SortType.CREATE_TIME]: '最新',
};
export const EMPLOY_TYPE_TITLE_MAP = {
[EmployType.All]: '全部',
[EmployType.Part]: '兼职',
[EmployType.Full]: '全职',
};
export const JOB_TYPE_TITLE_MAP: { [key in JobType]: string } = {
[JobType.All]: '全部',
[JobType.Finery]: '服饰',
[JobType.Makeups]: '美妆',
[JobType.Digital]: '数码',
[JobType.Foods]: '食品酒饮',
[JobType.Jewelry]: '珠宝',
[JobType.Appliance]: '家电',
[JobType.Furniture]: '日用家具',
[JobType.PetFamily]: '母婴宠物',
[JobType.Luxury]: '奢品',
[JobType.LocalLive]: '本地生活',
[JobType.Car]: '汽车',
[JobType.Play]: '娱乐',
[JobType.Other]: '其他',
};
export const JOB_MANAGE_TYPE_TITLE_MAP = {
[JobManageType.All]: '全部',
[JobManageType.Open]: '开放中',
[JobManageType.Pending]: '待开放',
[JobManageType.Error]: '审核失败',
};
export const JOB_MANAGE_STATUS_TITLE_MAP = {
[JobManageStatus.WaitVerify]: '审核中',
[JobManageStatus.Open]: '开放中',
[JobManageStatus.Pending]: '待开放',
[JobManageStatus.Error]: '审核失败',
[JobManageStatus.Close]: '已关闭',
[JobManageStatus.Expire]: '已关闭',
};
export const JOB_PAGE_TABS = [
{
type: EmployType.All,
title: EMPLOY_TYPE_TITLE_MAP[EmployType.All],
},
{
type: EmployType.Part,
title: EMPLOY_TYPE_TITLE_MAP[EmployType.Part],
},
{
type: EmployType.Full,
title: EMPLOY_TYPE_TITLE_MAP[EmployType.Full],
},
];
export const JOB_TABS = ALL_JOB_TYPES.map(type => ({
type,
title: JOB_TYPE_TITLE_MAP[type],
}));
export const JOB_MANAGE_TABS = [
{
type: JobManageType.All,
title: JOB_MANAGE_TYPE_TITLE_MAP[JobManageType.All],
},
{
type: JobManageType.Open,
title: JOB_MANAGE_TYPE_TITLE_MAP[JobManageType.Open],
},
{
type: JobManageType.Pending,
title: JOB_MANAGE_TYPE_TITLE_MAP[JobManageType.Pending],
},
{
type: JobManageType.Error,
title: JOB_MANAGE_TYPE_TITLE_MAP[JobManageType.Error],
},
];
export const JOB_TYPE_SELECT_OPTIONS = [
{ label: JOB_TYPE_TITLE_MAP[JobType.Finery], value: JobType.Finery },
{ label: JOB_TYPE_TITLE_MAP[JobType.Makeups], value: JobType.Makeups },
{ label: JOB_TYPE_TITLE_MAP[JobType.Digital], value: JobType.Digital },
{ label: JOB_TYPE_TITLE_MAP[JobType.Foods], value: JobType.Foods },
{ label: JOB_TYPE_TITLE_MAP[JobType.Jewelry], value: JobType.Jewelry },
{ label: JOB_TYPE_TITLE_MAP[JobType.Appliance], value: JobType.Appliance },
{ label: JOB_TYPE_TITLE_MAP[JobType.Furniture], value: JobType.Furniture },
{ label: JOB_TYPE_TITLE_MAP[JobType.PetFamily], value: JobType.PetFamily },
{ label: JOB_TYPE_TITLE_MAP[JobType.Luxury], value: JobType.Luxury },
{ label: JOB_TYPE_TITLE_MAP[JobType.LocalLive], value: JobType.LocalLive },
{ label: JOB_TYPE_TITLE_MAP[JobType.Car], value: JobType.Car },
{ label: JOB_TYPE_TITLE_MAP[JobType.Play], value: JobType.Play },
{ label: JOB_TYPE_TITLE_MAP[JobType.Other], value: JobType.Other },
];
const MAX_SALARY = 10000000;
export const PART_EMPLOY_SALARY_OPTIONS = [
{ label: '不限' },
{ label: '100-200', value: { minSalary: 100, maxSalary: 200 } },
{ label: '200-300', value: { minSalary: 200, maxSalary: 300 } },
{ label: '300-500', value: { minSalary: 300, maxSalary: 500 } },
{ label: '500 以上', value: { minSalary: 500, maxSalary: MAX_SALARY } },
];
export const FULL_EMPLOY_SALARY_OPTIONS = [
{ label: '不限' },
{ label: '5k-10k', value: { minSalary: 5000, maxSalary: 10000 } },
{ label: '10k-20k', value: { minSalary: 10000, maxSalary: 20000 } },
{ label: '20k-50k', value: { minSalary: 20000, maxSalary: 50000 } },
{ label: '50k 以上', value: { minSalary: 50000, maxSalary: MAX_SALARY } },
];
export const PART_PRICE_OPTIONS = PART_EMPLOY_SALARY_OPTIONS.filter(o => !!o.value);
export const FULL_PRICE_OPTIONS = FULL_EMPLOY_SALARY_OPTIONS.filter(o => !!o.value);

101
src/constants/material.ts Normal file
View File

@ -0,0 +1,101 @@
export enum ProfileGroupType {
Basic = 'basic',
Intention = 'intention',
Experience = 'experience',
Advantages = 'advantages',
}
export const ProfileTitleMap = {
[ProfileGroupType.Basic]: '基本信息',
[ProfileGroupType.Intention]: '求职意向',
[ProfileGroupType.Experience]: '直播经验',
[ProfileGroupType.Advantages]: '自身优势',
};
export enum WorkedYears {
LessOneYear = 0.5,
OneYear = 1,
TwoYear = 2,
MoreThreeYear = 3,
}
export enum GenderType {
All = -1,
MEN = 0,
WOMEN = 1,
}
// 1主播主动创建 2主播填写表单创建 3 运营人工创建 4 机器人创建
export enum ProfileCreateSource {
User = 1,
UserInput = 2,
Bl = 3,
Robot = 4,
}
export enum StyleType {
Broadcasting = 1,
HoldOrder = 2,
Passion = 3,
}
export enum MaterialStatus {
Open = 0,
Close = 1,
}
export enum AnchorSortType {
Recommend = 'recommend',
Active = 'active',
New = 'new',
}
export enum AnchorReadType {
All = 'all',
Read = 'read',
Unread = 'unread',
}
export enum MaterialViewSource {
AnchorList = 'anchor-list',
Share = 'share',
Chat = 'chat',
}
export const ALL_ANCHOR_SORT_TYPES = Object.values(AnchorSortType).filter(i => i !== AnchorSortType.Recommend);
export const ANCHOR_SORT_TYPE_TITLE_MAP = {
[AnchorSortType.Recommend]: '推荐',
[AnchorSortType.New]: '最新',
[AnchorSortType.Active]: '活跃',
};
export const WORK_YEAR_LABELS = {
[WorkedYears.LessOneYear]: '1 年以下',
[WorkedYears.OneYear]: '1 年',
[WorkedYears.TwoYear]: '2 年',
[WorkedYears.MoreThreeYear]: '3 年以上',
};
export const WORK_YEAR_OPTIONS = [
{ label: WORK_YEAR_LABELS[WorkedYears.LessOneYear], value: WorkedYears.LessOneYear },
{ label: WORK_YEAR_LABELS[WorkedYears.OneYear], value: WorkedYears.OneYear },
{ label: WORK_YEAR_LABELS[WorkedYears.TwoYear], value: WorkedYears.TwoYear },
{ label: WORK_YEAR_LABELS[WorkedYears.MoreThreeYear], value: WorkedYears.MoreThreeYear },
];
export const ALL_GENDER_TYPES = [GenderType.All, GenderType.MEN, GenderType.WOMEN];
export const GENDER_TYPE_TITLE_MAP = {
[GenderType.All]: '不限',
[GenderType.WOMEN]: '女',
[GenderType.MEN]: '男',
};
export const ALL_ANCHOR_READ_TYPES = Object.values(AnchorReadType);
export const ANCHOR_READ_TITLE_MAP = {
[AnchorReadType.All]: '全部',
[AnchorReadType.Read]: '已读',
[AnchorReadType.Unread]: '未读',
};

28
src/constants/message.ts Normal file
View File

@ -0,0 +1,28 @@
export enum MessageType {
Text = '1',
File = '2',
Image = '3',
TextAndFile = '4',
RequestAnchorContact = '5',
RequestCompanyContact = '6',
Material = '7',
Job = '8',
Location = '9',
Time = '10',
}
export enum MessageActionStatus {
Send = 0,
Agree = 1,
Reject = 2,
AgreeByDefault = 3,
}
export enum ChatWatchType {
AnchorReject = 1,
CompanyReject = 2,
}
export const REFRESH_UNREAD_COUNT_TIME = 20 * 1000;
export const REFRESH_CHAT_LIST_TIME = 20 * 1000;
export const PULL_NEW_MESSAGES_TIME = 3 * 1000;

65
src/constants/product.ts Normal file
View File

@ -0,0 +1,65 @@
export enum ProductType {
GetJob = 'GETJOB',
AddGroup = 'ADDGROUP',
BossVip = 'BOSSVIP',
VIP = 'VIP', // 主播通告 VIP
GroupBatchPublish = 'GROUP_BATCH_PUSH', // 主播通告 VIP
CompanyPublishJob = 'BOSS_PUB_JOB', // 企业购买单次发布通告
BOSS_VIP_NEW = 'BOSS_VIP_NEW',
}
export const PRODUCT_ID_MAP = {
[ProductType.GetJob]: 1,
[ProductType.AddGroup]: 2,
};
export enum DeclarationType {
// 直接连接通告主
Direct = 0,
// 客服联系 customer service
CS = 1,
// 进群报单
Group = 2,
}
export enum ProductSpecId {
AddGroup1 = 'ADDGROUP_1',
AddGroup2 = 'ADDGROUP_2',
AddGroup3 = 'ADDGROUP_3',
BossVip = 'BOSSVIP',
WeeklyVIP = 'VIP_W',
MonthlyVIP = 'VIP_M', // 30 每天十次
NewMonthlyVIP = 'VIP_M_NEW', // 18 每天五次
GroupBatchPublish20 = 'GROUP_BATCH_PUSH_20',
GroupBatchPublish50 = 'GROUP_BATCH_PUSH_50',
GroupBatchPublish100 = 'GROUP_BATCH_PUSH_100',
GroupBatchPublish300 = 'GROUP_BATCH_PUSH_300',
GroupBatchPublish500 = 'GROUP_BATCH_PUSH_500',
GroupBatchPublish1000 = 'GROUP_BATCH_PUSH_1000',
BOSS_PUB_JOB_1 = 'BOSS_PUB_JOB_1', // 旧版企业发通告会员
BOSS_VIP_NEW_1 = 'BOSS_VIP_NEW_1', // 新版企业发通告会员 - 周
BOSS_VIP_NEW_2 = 'BOSS_VIP_NEW_2', // 新版企业发通告会员 - 月
BOSS_VIP_NEW_3 = 'BOSS_VIP_NEW_3', // 新版企业发通告会员 - 季
}
export enum OrderType {
Group = 1,
BossVip = 2,
VIP = 4, // 主播会员
GroupBatchPublish = 5,
CompanyPublishJob = 6,
CompanyVip = 7,
}
export enum OrderStatus {
Waiting = 0,
Success = 1,
Refund = 2,
Cancel = 3,
}
export enum QrCodeType {
Group = 'group',
ConnectCustomerService = 'connect_customer_service',
PublishJob = 'publish_job',
}

View File

@ -0,0 +1,13 @@
export enum SubscribeTempId {
INTERVIEW_INVITATION = 'obPJO1nmXoSwAovbuuUz4aVfb6Ir8AOp1kY_JlQ18dY',
UNREAD_MESSAGE_REMINDER = 'm-Zx9zgf5KGnlHgxbxSkEtpd7XXCg1r1adC2UZS7sXs',
NEW_MESSAGE_REMINDER = '4lkxb_mDLbJ889PZqunxP5U8auvQHS6hZgzfxgGHo9U',
SUBSCRIBE_JOB = 'PYekheJ60PA53SB51wFjySYjMUQjS17elPNnLwoIEQM',
SUBSCRIBE_VIP = 'TxQSUxuB9av1bkWudq-UcM1ey9ChVYqTSC9qBPpW0e8',
}
export const MessageSubscribeIds = [
SubscribeTempId.INTERVIEW_INVITATION,
SubscribeTempId.UNREAD_MESSAGE_REMINDER,
SubscribeTempId.NEW_MESSAGE_REMINDER,
];