Browse Source

无用文件删除

Xiao_123 11 hours ago
parent
commit
216d0fde5a

+ 0 - 293
api/common.js

@@ -15,20 +15,6 @@ export const refreshToken = (refreshToken) => {
   })
 }
 
-// 发送手机验证码
-export const sendSmsCode = (data) => {
-  return request({
-    url: '/app-api/menduner/system/auth/send-sms-code',
-    method: "POST",
-    data,
-    custom: {
-      loadingMsg: '发送中',
-      showSuccess: true,
-      successMsg: '发送成功'
-    }
-  })
-}
-
 // 短信登录
 export const smsLogin = (data) => {
   return request({
@@ -53,19 +39,6 @@ export const weChatLogin = (data) => {
   })
 }
 
-// 短信登录
-export const userRegister = (data) => {
-  return request({
-    url: '/app-api/menduner/system/auth/register',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false
-    }
-  })
-}
-
-
 // 密码登录
 export const passwordLogin = (data) => {
   return request({
@@ -78,18 +51,6 @@ export const passwordLogin = (data) => {
   })
 }
 
-// 二维码扫码用户注册并登录
-export const shareUserRegister = (data) => {
-  return request({
-    url: '/app-api/menduner/system/auth/register',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false
-    }
-  })
-}
-
 // 招聘端-退出登录
 export const logout = (token) => {
   return request({
@@ -102,224 +63,7 @@ export const logout = (token) => {
   })
 }
 
-// 个人端-退出登录
-export const userLogout = () => {
-  return request({
-    url: `/app-api/menduner/system/auth/logout`,
-    method: 'POST',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
 
-// 字典
-export const getDictData = (params) => {
-  return request({
-    url: '/app-api/system/dict-data/type',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获取行业列表
-export const getIndustryListData = (params) => {
-  return request({
-    url: '/app-api/menduner/system/industry/list',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获取技能列表
-export const getSkillList = () => {
-  return request({
-    url: '/app-api/menduner/system/skill/list',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获取行业树形
-export const getIndustryTreeData = (params) => {
-  return request({
-    url: '/app-api/menduner/system/industry/get/tree',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获取地区列表
-export const getAreaListData = (params) => {
-  return request({
-    url: '/app-api/menduner/system/area/list',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获取地区获取地区map
-export const getAreaMapData = (params) => {
-  return request({
-    url: '/app-api/menduner/system/area/map',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获得职位类型
-export const getPositionTreeData = (params) => {
-  return request({
-    url: '/app-api/menduner/system/position/get/tree',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获取职位列表
-export const getPositionData = (params) => {
-  return request({
-    url: '/app-api/menduner/system/position/list',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获取区域树形
-export const getAreaTreeData = () => {
-  return request({
-    url: '/app-api/menduner/system/area/get/tree',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-
-
-
-// 同步最近会话
-export const getConversationSync = async (data) => {
-  return request({
-    url: '/app-api/im/conversation/sync',
-    method: 'POST',
-    data,
-    custom: {
-      openEncryption: true,
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-
-// 获取聊天秘钥信息
-export const getChatKey = async (data) => {
-  return request({
-    url: '/app-api/im/user/get',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 同步最近会话
-export const getMessageSync = async (data) => {
-  return request({
-    url: '/app-api/im/im/channel/messagesync',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-// 设置最近会话未读数量
-export const setUnread = async (data) => {
-  return request({
-    url: '/app-api/im/conversations/setUnread',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-// 设置最近会话未读数量
-export const deleteConversation = async (data) => {
-  return request({
-    url: '/app-api/im/conversation/delete',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-// 获取type类型聊天记录
-export const getMessageType = async (data) => {
-  return request({
-    url: '/app-api/im/im/history/messages',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 求职端-根据邀请人id获取面试邀约列表
-export const getInterviewInviteListByInviteUserId = async (inviteUserId) => {
-  return request({
-    url: `/app-api/menduner/system/interview-invite/get/list/by/${inviteUserId}`,
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
 
 // 内容管理-广告
 export const getWebContent = async () => {
@@ -333,31 +77,6 @@ export const getWebContent = async () => {
   })
 }
 
-// 联系我们
-// 提交猎寻服务
-export const huntSubmit = async (data) => {
-  return request({
-    url: '/admin-api/menduner/system/hunt/submit',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获得微信小程订阅模板列表
-// export const getSubscribeTemplateList = async () => {
-//   return request({
-//     url: `/app-api/menduner/system/social-user/get-subscribe-template-list`,
-//     method: 'GET',
-//     custom: {
-//       showLoading: false,
-//       auth: false
-//     }
-//   })
-// }
 
 // 求职端交易订单  创建
 export const orderCreated = async (data) => {
@@ -451,15 +170,3 @@ export const socialUserBind = async (data) => {
     }
   })
 }
-
-// 企业营业执照图片识别文字
-export const getBusinessLicenseOCR = async (url) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/enterprise/business/ocr?url=' + url,
-    method: 'POST',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}

+ 0 - 154
api/enterprise.js

@@ -1,154 +0,0 @@
-import request from "@/utils/request"
-
-// 获取精选企业列表
-export const getHotEnterprise = (params) => {
-  return request({
-    url: '/app-api/menduner/system/job/advertised/get/hot/enterprise',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 更新员工信息
-export const updateStaffInfo = (data) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/user/save',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获取企业基本信息
-export const getEnterpriseInfo = () => {
-  return request({
-    url: '/app-api/menduner/system/recruit/enterprise/get',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 更新企业基本信息
-export const updateEnterpriseInfo = (data) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/enterprise/update',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 更新企业LOGO
-export const updateEnterpriseLogo = (url) => {
-  return request({
-    url: `/app-api/menduner/system/recruit/enterprise/logo/update?logoUrl=${url}`,
-    method: 'POST',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获取人才的在线简历详情
-export const getPersonCvDetail = (userId) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/person-cv/detail?userId=' + userId,
-    method: 'GET',
-    custom: {
-      openEncryption: true,
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 企业注册
-export const enterpriseRegisterApply = (data) => {
-  return request({
-    url: `/app-api/menduner/system/enterprise-register/apply`,
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获取当前用户提交的企业申请
-export const getUserRegisterEnterpriseApply = () => {
-  return request({
-    url: '/app-api/menduner/system/enterprise-register/by/user',
-    method: 'GET',
-    custom: {
-      openEncryption: true,
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 根据邮箱获取企业注册申请
-export const getEnterpriseRegisterApply = (email) => {
-  return request({
-    url: '/app-api/menduner/system/enterprise-register/by/email?email=' + email,
-    method: 'GET',
-    custom: {
-      openEncryption: true,
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 修改密码
-export const entUpdatePassword = (data) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/user/update-password',
-    method: 'PUT',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 重置密码
-export const resetPassword = (data) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/enterprise/auth/reset-password',
-    method: 'PUT',
-    data,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 发送邮箱验证码
-export const getEnterpriseEmailCode = (email) => {
-  return request({
-    url: `/app-api/menduner/system/recruit/enterprise/auth/send-email-code?email=${email}`,
-    method: 'POST',
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}

+ 0 - 48
api/file.js

@@ -1,48 +0,0 @@
-import { baseUrl, tenantId, apiPath } from '@/utils/config'
-
-// const uploadApi = {
-//   file: '/menduner/system/file/upload',
-//   img: '/infra/file/upload'
-// }
-
-// 文件上传
-export const uploadFile = (file, path) => {
-  uni.showLoading({
-    title: '上传中'
-  })
-  return new Promise((resolve, reject) => {
-    uni.uploadFile({
-      url: baseUrl + apiPath + '/menduner/system/file/upload',
-      filePath: file,
-      formData: {
-        path
-      },
-      name: 'file',
-      header: {
-        Accept: '*/*',
-        'tenant-id': tenantId,
-        'Authorization': 'Bearer ' + uni.getStorageSync('token'),
-        'Accept-Language': 'zh_CN',
-        'terminal': 'mp-weixin'
-      },
-      success: (uploadFileRes) => {
-        let result = JSON.parse(uploadFileRes.data)
-        if (result.error === 1) {
-          uni.showToast({
-            icon: 'none',
-            title: result.msg
-          })
-        } else {
-          return resolve(result)
-        }
-      },
-      fail: (error) => {
-        console.log('上传失败:', error)
-        return resolve(false)
-      },
-      complete: () => {
-        uni.hideLoading()
-      }
-    })
-  })
-}

+ 0 - 38
api/integral.js

@@ -1,38 +0,0 @@
-import request from "@/utils/request"
-
-// 获取规则配置跟踪列表
-export const getRewardEventTrackList = () => {
-  return request({
-    url: '/admin-api/menduner/reward/event-track/list',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 规则接口触发
-export const rewardEventTrackClick = (url) => {
-  return request({
-    url: '/admin-api/menduner/reward/event-track/click?url=' + url,
-    method: 'POST',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 推荐任务
-export const getTaskList = (params) => {
-  return request({
-    url: '/admin-api/menduner/reward/event-track/get/mark/task',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}

+ 0 - 80
api/interview.js

@@ -1,80 +0,0 @@
-import request from "@/utils/request"
-
-// 面试信息分页
-export const getInterviewInvitePage = async (params) => {
-	return request({
-		url: '/app-api/menduner/system/recruit/interview-invite/page',
-		params,
-		method: 'GET',
-		custom: {
-			showLoading: false,
-			auth: true
-		}
-	})
-}
-
-// 完成面试
-export const completedInterviewInvite = async (id) => {
-	return request({
-		url: `/app-api/menduner/system/recruit/interview-invite/completed?id=${id}`,
-		method: 'POST',
-		custom: {
-			showLoading: false,
-			openEncryption: true,
-			auth: true
-		}
-	})
-}
-
-// 保存、重新邀约
-export const saveInterviewInvite = async (data) => {
-	return request({
-		url: '/app-api/menduner/system/recruit/interview-invite/save',
-		method: 'POST',
-		data,
-		custom: {
-			showLoading: false,
-			openEncryption: true,
-			auth: true
-		}
-	})
-}
-
-// 取消面试
-export const cancelInterviewInvite = async (data) => {
-	return request({
-		url: '/app-api/menduner/system/recruit/interview-invite/cancellation',
-		method: 'POST',
-		data,
-		custom: {
-			showLoading: false,
-			auth: true
-		}
-	})
-}
-
-// 未能爽约面试
-export const noAttendInterviewInvite = async (data) => {
-	return request({
-		url: '/app-api/menduner/system/recruit/interview-invite/not/attended',
-		method: 'POST',
-		data,
-		custom: {
-			showLoading: false,
-			auth: true
-		}
-	})
-}
-
-// 面试反馈
-export const feedbackInterviewInvite = async (data) => {
-	return request({
-		url: '/app-api/menduner/system/recruit/interview-invite/feedback',
-		method: 'POST',
-		data,
-		custom: {
-			showLoading: false,
-			auth: true
-		}
-	})
-}

+ 0 - 143
api/jobFair.js

@@ -1,143 +0,0 @@
-import request from "@/utils/request"
-
-// 获得招聘会列表
-export const getJobFairList = (params) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/job-fair/list',
-    method: 'GET',
-	params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 当前企业白名单的招聘会
-export const getJobFairWhiteList = () => {
-  return request({
-    url: '/app-api/menduner/system/recruit/job-fair/list-by-enterprise',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 效验是否有权限参加招聘会
-export const checkJobFairPermission = (jobFairId) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/job-fair/check/permission',
-    method: 'GET',
-    params: { jobFairId },
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获得招聘会-招聘会详情
-export const getJobFair = (id) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/job-fair/get',
-    method: 'GET',
-    params: { id },
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 招聘会企业分页查询
-export const getJobFairEnterprisePage = (params) => {
-  return request({
-    url: '/app-api/menduner/system/job-fair/enterprise/page',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 查询企业招聘会职位列表
-export const getJobFairPosition = (id) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/job-fair/get/by/job-fair',
-    method: 'GET',
-    params: { id },
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 企业将职位移除招聘会
-export const quitJobFairPosition = (data) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/job-fair/quit',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 企业将职位加入招聘会
-export const joinJobFairPosition = (data) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/job-fair/join',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 保存分享参数
-export const saveShareQuery = (data) => {
-  return request({
-    url: '/app-api/menduner/system/share/share',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 根据id获取分享参数
-export const getShareQueryById = (params) => {
-  return request({
-    url: '/app-api/menduner/system/share/get',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 根据招聘会id获取未加入招聘会的职位列表
-export const getJobFairPositionList = (params) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/job-fair/get/not-joined-job/page',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}

+ 0 - 40
api/position.js

@@ -1,40 +0,0 @@
-import request from "@/utils/request"
-
-// 职位详情
-export const getPositionDetails = (params) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/job-advertised/detail',
-    method: 'GET',
-    params,
-    custom: {
-      openEncryption: true,
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 根据id查询分享的职位id与推荐人id
-export const getShareDetail = (params) => {
-  return request({
-    url: '/app-api/menduner/system/job/advertised/get/share',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获取企业发布职位类型权限
-export const getEnterprisePubJobTypePermission = () => {
-  return request({
-    url: '/app-api/menduner/system/recruit/enterprise/get/pub-job-type-perm',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}

+ 0 - 128
api/resume.js

@@ -1,128 +0,0 @@
-import request from "@/utils/request"
-
-// 投递简历分页
-export const getPersonCvPage = async (params) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/person-cv/page',
-    params,
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 不合适简历分页
-export const personCvUnfitPage = async (params) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/person-cv/unfitPage',
-    params,
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 不合适
-export const joinEliminate = async (data) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/person-cv/unfit/eliminate',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 取消不合适
-export const personCvUnfitCancel = async (id) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/person-cv/unfit/cancellation?id=' + id,
-    method: 'POST',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 加入储备
-export const joinToTalentPool = async (id) => {
-  return request({
-    url: `/app-api/menduner/system/enterprise-talent-pool/add?userId=${id}`,
-    method: 'POST',
-    custom: {
-      openEncryption: true,
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 入职
-export const personEntryByEnterprise = async (id) => {
-  return request({
-    url: `/app-api/menduner/system/recruit/person-cv/entry?id=${id}`,
-    method: 'POST',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 结算
-export const hireJobCvRelSettlement = async (id) => {
-  return request({
-    url: `/app-api/menduner/system/recruit/person-cv/settlement?id=${id}`,
-    method: 'POST',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 记录查看简历
-export const personJobCvLook = async (id) => {
-  return request({
-    url: `/app-api/menduner/system/recruit/person-cv/look?id=${id}`,
-    method: 'POST',
-    custom: {
-      showLoading: false,
-      auth: true,
-      openEncryption: true
-    }
-  })
-}
-
-// 根据专业名称模糊搜索
-export const schoolMajorByName = async (params) => {
-  return request({
-    url: '/app-api/menduner/system/major/search/by/name',
-    params,
-    method: 'GET',
-    custom: {
-     showLoading: false,
-     auth: true
-    }
-  })
-}
-  
-// 根据专业id搜索
-export const schoolMajorById = async (params) => {
-  return request({
-    url: '/app-api/menduner/system/major/get',
-    params,
-    method: 'GET',
-    custom: {
-     showLoading: false,
-     auth: true
-    }
-  })
-}

+ 0 - 42
api/search.js

@@ -1,42 +0,0 @@
-import request from "@/utils/request"
-
-// 获取发布的职位列表
-export const getJobAdvertised = async (params) => {
-	return request({
-		url: '/app-api/menduner/system/recruit/job-advertised/list',
-		method: 'GET',
-		params,
-		custom: {
-			showLoading: false,
-			auth: true
-		}
-	})
-}
-
-// 根据职位id获取推荐人才列表
-export const getPersonRecommendPage = (params) => {
-	return request({
-		url: '/app-api/menduner/system/recruit/person-recommend/page',
-		method: 'GET',
-		params,
-		custom: {
-			openEncryption: true,
-			showLoading: false,
-			auth: false
-		}
-	})
-}
-
-// 根据条件搜索人才
-export const getPersonConditionSearchPage = (params) => {
-	return request({
-		url: '/app-api/menduner/system/recruit/person-search/page',
-		method: 'GET',
-		params,
-		custom: {
-			openEncryption: true,
-			showLoading: false,
-			auth: false
-		}
-	})
-}

+ 0 - 187
api/sign.js

@@ -1,187 +0,0 @@
-import request from "@/utils/request"
-
-// 签到
-export const createRewardSignInRecord = (data) => {
-  return request({
-    url: '/app-api/menduner/reward/sign-in/record/create',
-    method: 'POST',
-    data,
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-
-// 获得个人签到统计
-export const getRewardSignInRecordSummary = () => {
-  return request({
-    url: '/app-api/menduner/reward/sign-in/record/get-summary',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获得签到记录分页
-export const getRewardSignInRecordPage = (pageNo, pageSize) => {
-  return request({
-    url: `/app-api/menduner/reward/sign-in/record/page?pageSize=${pageSize}&pageNo=${pageNo}`,
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获取签到规则列表
-export const getRewardSignInConfigList = () => {
-  return request({
-    url: '/app-api/menduner/reward/sign-in/config/list',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 获取账户余额
-export const getAccountBalance = () => {
-  return request({
-    url: '/app-api/pay/wallet/get',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获取积分余额
-export const getUserAccount = () => {
-  return request({
-    url: '/app-api/menduner/system/mde-user/get/account',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 福利 领领取优惠券
-export const takeCoupon = (templateId) => {
-  return request({
-    url: '/app-api/promotion/coupon/take',
-    method: 'POST',
-    data: { templateId },
-    custom: {
-      auth: true,
-      showLoading: true,
-      loadingMsg: '领取中',
-      showSuccess: true,
-      successMsg: '领取成功'
-    }
-  })
-}
-// 福利 优惠券ID
-export const getDiyTemplate = (ids) => {
-  return request({
-    url: '/app-api/promotion/coupon-template/list-by-ids',
-    method: 'GET',
-    params: {
-      ids
-    },
-    custom: {
-      auth: true,
-      showError: false,
-      showLoading: false,
-    }
-  })
-}
-// 福利 获取商城模板
-export const getDiyTemplateUsed = () => {
-  return request({
-    url: '/app-api/promotion/diy-template/used',
-    method: 'GET',
-    custom: {
-      auth: true,
-      showError: false,
-      showLoading: false,
-    }
-  })
-}
-
-
-
-// 获取优惠券模板分页
-export const getCouponTemplatePage = (params) => {
-  return request({
-    url: '/app-api/promotion/coupon-template/page',
-    method: 'GET',
-    params,
-    custom: {
-      auth: false,
-      showError: false,
-      showLoading: false,
-    }
-  })
-}
-
-// 我的优惠劵列表
-export const getCouponPage = (params) => {
-  return request({
-    url: '/app-api/promotion/coupon/page',
-    method: 'GET',
-    params,
-    custom: {
-      auth: true,
-      showError: false,
-      showLoading: false,
-    }
-  })
-}
-
-// 获得钱包充值记录分页
-export const getUserWalletRechargePage = async (params) => {
-  return request({
-    url: '/app-api/pay/wallet-recharge/page',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获得钱包流水分页
-export const getUserWalletTransactionPage = async (params) => {
-  return request({
-    url: '/app-api/pay/wallet-transaction/page',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 账户变动记录
-export const getEnterpriseAccountRecordPage = async (params) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/enterprise/account/record/page',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}

+ 0 - 128
api/student.js

@@ -1,128 +0,0 @@
-import request from "@/utils/request"
-
-// 获取企业推荐信列表
-export const getRecommendationPage = async (data) => {
-	return request({
-		url: '/app-api/flames/student/recommendation/list',
-		method: 'POST',
-		data,
-		custom: {
-			openEncryption: true,
-			showLoading: false,
-			auth: true
-		}
-	})
-}
-
-// 获取实习证书列表
-export const getEnterpriseCertificateList = async (data) => {
-	return request({
-		url: '/app-api/flames/student/internship/certificate/list',
-		method: 'POST',
-		data,
-		custom: {
-			openEncryption: true,
-			showLoading: false,
-			auth: true
-		}
-	})
-}
-
-// 获取学校详情
-export const getSchoolDetails = async (data) => {
-	return request({
-		url: '/app-api/flames/school/detail',
-		method: 'POST',
-		data,
-		custom: {
-			openEncryption: true,
-			showLoading: false,
-			auth: true
-		}
-	})
-}
-
-// 获得学生实习记录分页
-export const getStudentPage = async (params) => {
-	return request({
-		url: '/app-api/menduner/system/student/page',
-		method: 'GET',
-		params,
-		custom: {
-			auth: true
-		}
-	})
-}
-
-// 获得学生实习报告列表
-export const getStudentReportList = async (params) => {
-	return request({
-		url: '/app-api/menduner/system/student/get/report/list',
-		method: 'GET',
-		params,
-		custom: {
-			auth: true
-		}
-	})
-}
-
-// 保存学生实习报告
-export const saveStudentReport = async (data) => {
-	return request({
-		url: '/app-api/menduner/system/student/report/save',
-		method: 'POST',
-		data,
-		custom: {
-			openEncryption: true,
-			showLoading: false,
-			auth: true
-		}
-	})
-}
-
-// 获取学生实习的企业列表
-export const getStudentPracticeCompanyList = async () => {
-	return request({
-		url: '/app-api/menduner/system/student/record-enterprise/list',
-		method: 'GET',
-		custom: {
-			auth: true
-		}
-	})
-}
-
-// 获取学校信息列表
-export const getSchoolList = async (params) => {
-	return request({
-		url: '/app-api/menduner/system/school/info/list',
-		params,
-		method: 'GET',
-		custom: {
-			auth: false
-		}
-	})
-}
-
-// 根据学校id获取院系列表
-export const getDepartmentListBySchoolId = async (params) => {
-	return request({
-		url: '/app-api/menduner/system/school/organization/list',
-		params,
-		method: 'GET',
-		custom: {
-			auth: false
-		}
-	})
-}
-
-// 获取专业列表
-export const getMajorList = async (params) => {
-	return request({
-    url: '/app-api/menduner/system/major/list',
-		params,
-		method: 'GET',
-		custom: {
-			auth: false
-		}
-	})
-}

+ 0 - 25
api/system.js

@@ -1,25 +0,0 @@
-import request from "@/utils/request"
-
-// 版本信息(服务器时间戳)
-export const getVersion = () => {
-  return request({
-    url: '/app-api/menduner/system/get/version',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-export const sendError = (data) => {
-  return request({
-    url: '/app-api/menduner/system/error-record/create',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}

+ 0 - 405
api/user.js

@@ -1,405 +0,0 @@
-import request from "@/utils/request"
-
-// 获取人才信息信息
-export const getBaseInfo = (params) => {
-  return request({
-    url: '/app-api/menduner/system/person/get',
-    method: 'GET',
-    params,
-    custom: {
-      openEncryption: true,
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获取用户信息
-export const getUserInfo = (params) => {
-  return request({
-    url: '/app-api/menduner/system/recruit/user/get',
-    method: 'GET',
-    params,
-    custom: {
-      openEncryption: true,
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获取账户信息
-export const getUserAccountInfo = () => {
-  return request({
-    url: '/app-api/pay/currency/get',
-    method: 'GET',
-    custom: {
-      openEncryption: true,
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获取附件列表
-export const getPersonResumeCv = () => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/get/person/cv',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 简历解析-保存简历信息
-export const saveResumeInfo = (data) => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/save',
-    method: 'POST',
-    data,
-    custom: {
-      openEncryption: true,
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 获取收藏的招聘职位列表
-export const getJobFavoriteList = (params) => {
-  return request({
-    url: '/app-api/menduner/system/person/get/job/favorite/page',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获取关注的企业列表
-export const getSubscribeEnterprise = (params) => {
-  return request({
-    url: '/app-api/menduner/system/person/get/enterprise/subscribe/page',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 谁看过我
-export const getInterestedMePage = (params) => {
-  return request({
-    url: '/app-api/menduner/system/job-cv-rel/look/page',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 众聘比例信息
-export const getPublicRatio = () => {
-  return request({
-    url: '/admin-api/menduner/system/hire-commission-ratio/get',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 上传附件简历
-export const saveResume = (data) => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/person/cv/save',
-    method: 'POST',
-    data,
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 删除附件简历
-export const deleteResume = (id) => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/person/cv/remove',
-    method: 'DELETE',
-    params: {
-      id
-    },
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 获取已投递的职位列表
-export const getJobDeliveryList = (params) => {
-  return request({
-    url: '/app-api/menduner/system/job-cv-rel/page',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 获取面试日程分页
-export const getUserInterviewInvitePage = (params) => {
-  return request({
-    url: '/app-api/menduner/system/interview-invite/page',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 同意邀约面试
-export const userInterviewInviteConsent = (data) => {
-  return request({
-    url: '/app-api/menduner/system/interview-invite/consent',
-    method: 'POST',
-    data,
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 拒绝邀约面试
-export const userInterviewInviteReject = (id) => {
-  return request({
-    url: '/app-api/menduner/system/interview-invite/reject',
-    method: 'POST',
-    params: {
-      id
-    },
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 企业详情
-export const getEnterpriseDetails = (id) => {
-  return request({
-    url: '/app-api/menduner/system/enterprise/detail',
-    method: 'GET',
-    params: {
-      id
-    },
-    custom: {
-      auth: false,
-      showLoading: false
-    }
-  })
-}
-
-// 效验求职者是否关注该企业
-export const getEnterpriseSubscribeCheck = (params) => {
-  return request({
-    url: '/app-api/menduner/system/person/enterprise/subscribe/check',
-    method: 'GET',
-    params,
-    custom: {
-      auth: false,
-      showLoading: false
-    }
-  })
-}
-
-// 关注企业
-export const getEnterpriseSubscribe = (data) => {
-  return request({
-    url: '/app-api/menduner/system/person/enterprise/subscribe',
-    method: 'POST',
-    data,
-    custom: {
-      auth: false,
-      showLoading: false
-    }
-  })
-}
-
-// 取消关注企业
-export const getEnterpriseUnsubscribe = (enterpriseId) => {
-  return request({
-    url: '/app-api/menduner/system/person/enterprise/unsubscribe',
-    method: 'DELETE',
-    params: {
-      enterpriseId
-    },
-    custom: {
-      auth: false,
-      showLoading: false
-    }
-  })
-}
-
-// 点击企业详情埋点
-export const enterpriseClick = (data) => {
-  return request({
-    url: '/app-api/menduner/system/enterprise/click',
-    method: 'POST',
-    data,
-    custom: {
-      auth: false,
-      showLoading: false
-    }
-  })
-}
-
-// 获取企业实名认证信息
-export const getEnterpriseAuthDetails = (enterpriseId) => {
-  return request({
-    url: '/app-api/menduner/system/enterprise/get/auth',
-    method: 'GET',
-    params: {
-      enterpriseId
-    },
-    custom: {
-      auth: false,
-      showLoading: false
-    }
-  })
-}
-
-// 保存基本信息
-export const saveBaseInfo = (data) => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/info/save',
-    method: 'POST',
-    data,
-    custom: {
-      openEncryption: true,
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 根据类型获取标签信息
-export const getTagTreeDataApi = async (params) => {
-  return request({
-    url: '/admin-api/menduner/system/tag/get/by/type',
-    method: 'GET',
-    params,
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}
-
-// 修改个人画像
-export const savePersonPortrait = (data) => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/tag/update',
-    method: 'POST',
-    data,
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 保存个人优势
-export const saveResumeAdvantage = (data) => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/advantage/save',
-    method: 'POST',
-    data,
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 修改头像
-export const updatePersonAvatar = (avatar) => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/avatar/update',
-    method: 'POST',
-    params: {
-      avatar
-    },
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 获取职位分享小程序二维码
-export const getJobAdvertisedShareQrcode = (data, custom) => {
-  return request({
-    url: '/app-api/menduner/system/social-user/wxa-qrcode',
-    method: 'POST',
-    data,
-    custom: {
-      auth: custom?.noAuth ? false : true,
-      showLoading: false
-    }
-  })
-}
-
-// 保存简易基本信息
-export const savePersonSimpleInfo = (data) => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/info/simple/save',
-    method: 'POST',
-    data,
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 保存学生基本信息
-export const saveStudentSimpleInfo = (data) => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/student/save',
-    method: 'POST',
-    data,
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}
-
-// 获取学生基本信息
-export const getStudentInfo = (data) => {
-  return request({
-    url: '/app-api/menduner/system/person/resume/student/get',
-    method: 'POST',
-    data,
-    custom: {
-      auth: true,
-      showLoading: false
-    }
-  })
-}

+ 0 - 50
api/vip.js

@@ -1,50 +0,0 @@
-import request from "@/utils/request"
-
-// 屏蔽企业-获得屏蔽的企业
-export const getBlockEnterpriseList = async () => {
-  return request({
-    url: '/app-api/menduner/system/person/enterprise-block/page',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 屏蔽企业-加入屏蔽
-export const handleBlockEnterprise = async (data) => {
-  return request({
-    url: '/app-api/menduner/system/person/enterprise-block/block',
-    method: 'POST',
-    data,
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 屏蔽企业-取消屏蔽
-export const handleUnBlockEnterprise = async (enterpriseId) => {
-  return request({
-    url: '/app-api/menduner/system/person/enterprise-block/un-block?enterpriseId=' + enterpriseId,
-    method: 'DELETE',
-    custom: {
-      showLoading: false,
-      auth: true
-    }
-  })
-}
-
-// 套餐列表
-export const getMembershipPackageList = async (enterpriseId) => {
-  return request({
-    url: 'app-api/menduner/system/user-package/list',
-    method: 'GET',
-    custom: {
-      showLoading: false,
-      auth: false
-    }
-  })
-}

+ 0 - 95
hooks/useDictionaries.js

@@ -1,95 +0,0 @@
-import {
-  getDictData,
-  getIndustryListData,
-  getSkillList,
-  getIndustryTreeData,
-  getAreaListData,
-  getAreaMapData,
-  getPositionTreeData,
-  getAreaTreeData,
-  getPositionData
-} from '@/api/common'
-import { getSecondNodes } from '@/utils/dealData'
-
-// const setDict = (type, val, cacheTime = 7200) => {
-const setDict = (type, val) => {
-  if (!val) {
-    return
-  }
-  if (type === 'areaTreeData') {
-    const obj = val.data.find(e => e.name === '中国')
-    val.data = obj?.children ? obj.children.map(e =>{
-      // 市辖区直接显示区
-      const municipality = e.children && e.children.length && e.children[0].name === '市辖区'
-      if (municipality && e.children[0].children?.length) e.children = e.children[0].children
-      return e
-    }) : []
-  }
-  if (type === 'areaTreeDataExtend') { // 前排加上不限
-    const obj = val.data.find(e => e.name === '中国')
-    if (obj?.children?.length) {
-      // const province = 
-      obj.children.forEach(e=> {
-        // 市辖区直接显示区
-        const municipality = e.children && e.children.length && e.children[0].name === '市辖区'
-        if (municipality && e.children[0].children?.length) e.children = e.children[0].children
-        // 不限
-        extendFun(e)
-      })
-      val.data = obj.children
-    } else val.data = []
-
-    function extendFun (e) {
-      const idType = Number.isInteger(e.id) ? 'int' : 'str'
-      if(e.children?.length) {
-        e.children.unshift({ name: '不限', id: e.id+'unlimited', idType })
-        e.children.forEach(i => extendFun(i))
-      }
-    }
-  }
-  // 一小时过期
-  const currentTime = new Date()
-  currentTime.setTime(currentTime.getTime() + 3600 * 1000)
-  
-  uni.setStorageSync(type, JSON.stringify({
-    data: val,
-    // expire: Date.now() + cacheTime * 1000
-    expire: currentTime.getTime()
-  }))
-}
-
-export const getDict = (type, params, apiType = 'dict') => {
-    if (!type) {
-      return []
-    }
-    return new Promise((resolve) => {
-      const item = uni.getStorageSync(type)
-      const catchData = item ? JSON.parse(item) : null
-      if (catchData && catchData.expire && (Date.now() <= catchData.expire) && catchData.data && catchData.data?.data?.length) {
-        return resolve({ data: catchData.data })
-      }
-      // 传参按照规范参数传
-      const query = params ? params : { type }
-      const apiFn = {
-        dict: getDictData,
-        positionTreeData: getPositionTreeData, // 职位tree
-        areaTreeData: getAreaTreeData, // 区域tree
-        areaTreeDataExtend: getAreaTreeData, // 区域tree(二级以后含不限)
-        industryTreeData: getIndustryTreeData, // 行业tree
-        industryList: getIndustryListData,
-        skillList: getSkillList,
-        areaList: getAreaListData,
-        areaMap: getAreaMapData,
-        positionSecondData: getPositionTreeData,
-        positionData: getPositionData
-      }
-      apiFn[apiType](query).then(data => {
-        // setDict(type, data, Date.now())
-        if (type === 'positionSecondData') {
-          data.data = getSecondNodes(data.data)
-        }
-        setDict(type, data)
-        resolve({ data })
-      })
-    })
-}

+ 1 - 1
layout/components/auth-modal.vue

@@ -1,7 +1,7 @@
 <!--  -->
 <template>
   <view v-if="authType !== ''">
-    <ct-popup :show="authType !== ''" round="10" :showClose="true" @close="closeAuthModal">
+    <ct-popup :show="authType !== 'necessaryInfo'" round="10" :showClose="true" @close="closeAuthModal">
       <login></login>
     </ct-popup>
   </view>

+ 56 - 244
layout/components/authModal/login/index.vue

@@ -1,291 +1,103 @@
 <template>
   <view class="ss-p-30 head-box">
     <template v-if="changeType === 'login'">
-      <view class="head-title ss-m-b-30">欢迎来到门墩儿</view>
-
-      <view class="ss-m-t-30">
-        <!-- 企业邮箱+密码登录 -->
-        <uni-forms
-          ref="accountLoginRef"
-          v-model="state.account"
-          :rules="state.rules"
-          validateTrigger="bind"
-          labelWidth="140"
-          labelAlign="center"
-        >
-          <uni-forms-item name="phone" label="企业邮箱">
-            <uni-easyinput placeholder="请输入企业邮箱" v-model="state.account.phone" :inputBorder="false"></uni-easyinput>
-          </uni-forms-item>
-
-          <uni-forms-item name="password" label="登录密码">
-            <uni-easyinput type="password" placeholder="请输入密码" v-model="state.account.password" :inputBorder="false"></uni-easyinput>
-          </uni-forms-item>
-        </uni-forms>
-
-        <view class="quickLogon">
-          <view class="color-666" style="font-size: .85em; text-decoration: underline;" @tap.stop="handleForgotPassword">忘记密码</view>
-          <view class="register" @tap="handleChangeRegister">还没有登录账户?去注册</view>
+      <view class="head-title ss-m-b-30 MiSans-Semibold">欢迎来到辞图科技,请先登录</view>
+
+      <view class="ss-m-t-100">
+        <view>
+          <button
+            v-if="!protocol"
+            class="send-button MiSans-Medium"
+            @click="showProtocolToast"
+            >
+            手机号快捷登录
+          </button>
+          <button 
+          v-else
+            class="send-button MiSans-Medium"
+            :loading="phoneNumberLoading"
+            :disabled="phoneNumberLoading"
+            open-type="getPhoneNumber"
+            @getphonenumber="getPhoneNumber"
+            >
+            手机号快捷登录
+          </button>
         </view>
-        <button class="send-button" @tap="handleLogin"> 登 录  </button>
-        <view class="agreement-box ss-flex ss-row-center" style="margin-bottom: 30px;">
+
+        <view class="ss-flex ss-row-center ss-m-y-50">
           <uni-icons size="20" :type="protocol ? 'checkbox-filled' : 'circle'" :color="protocol ? '#00B760' : '#ccc'" @tap="protocol = !protocol"></uni-icons>
           <view class="color-999 ss-flex ss-col-center ss-m-l-8 font-size-13">
-            我已阅读并遵守
-            <view class="color-primary" @tap.stop="handleToDetail('user')">
+            <span class="MiSans-Normal">我已阅读并遵守</span>
+            <view class="color-primary MiSans-Medium" @tap.stop="handleToDetail('user')">
               《用户协议》
             </view>
-            <view class="agreement-text">和</view>
-            <view class="color-primary" @tap.stop="handleToDetail('privacy')">
+            <view class="agreement-text MiSans-Normal">和</view>
+            <view class="color-primary MiSans-Medium" @tap.stop="handleToDetail('privacy')">
               《隐私协议》
             </view>
           </view>
         </view>
       </view>
     </template>
-
-    <template v-if="changeType === 'register'">
-      <view class="head-title pb-20">手机号验证</view>
-
-      <uni-forms
-        ref="registerForm"
-        v-model="state.register"
-        :rules="state.smsRules"
-        validateTrigger="bind"
-        labelWidth="140"
-        labelAlign="center"
-      >
-
-        <uni-forms-item name="phone" label="手机号">
-          <uni-easyinput placeholder="请输入手机号" v-model="state.register.phone" :inputBorder="false" type="number">
-          </uni-easyinput>
-        </uni-forms-item>
-
-        <uni-forms-item name="code" label="验证码">
-          <uni-easyinput
-            placeholder="请输入验证码"
-            v-model="state.register.code"
-            :inputBorder="false"
-            type="number"
-            maxlength="6"
-          >
-            <template v-slot:right>
-              <button
-                class="login-code"
-                :disabled="state.isMobileEnd"
-                :class="{ 'code-btn-end': state.isMobileEnd }"
-                @tap="handleRegisterCode"
-              >
-                {{ getSmsTimer('smsRegister') }}
-              </button>
-            </template>
-          </uni-easyinput>
-        </uni-forms-item>
-      </uni-forms>
-      <view class="register login" style="text-align: end;" @tap="handleChangeLogin">已有账户?去登陆</view>
-      <view>
-        <button class="send-button" @tap="handleRegister"> 注 册 </button>
-      </view>
-      <view class="color-999 ss-flex ss-col-center ss-row-center ss-m-l-8 font-size-13" style="margin-bottom: 30px;">
-        点击注册即代表您同意
-        <view class="color-primary" @tap.stop="handleToDetail('user')">
-          《用户协议》
-        </view>
-        <view class="agreement-text">和</view>
-        <view class="color-primary" @tap.stop="handleToDetail('privacy')">
-          《隐私协议》
-        </view>
-      </view>
-    </template>
   </view>
 </template>
 
 <script setup>
-import { ref, unref } from 'vue'
-import { mobile, password, code, emailRequired } from '@/utils/validate'
-import { getSmsCode, getSmsTimer } from '@/utils/code'
+import { ref } from 'vue'
 import { userStore } from '@/store/user'
-import { closeAuthModal } from '@/hooks/useModal'
-import { getEnterpriseRegisterApply } from '@/api/enterprise'
-import { testEnvBool } from '@/utils/config'
 
 const useUserStore = userStore()
-const accountLoginRef = ref()
-const registerForm = ref()
+const phoneNumberLoading = ref(false)
 const protocol = ref(false)
-const state = ref({
-  isMobileEnd: false, // 手机号输入完毕
-  codeText: '获取验证码',
-  sms: {
-    phone: '',
-    code: ''
-  },
-  register: {
-    phone: '',
-    code: ''
-  },
-  account: {
-    phone: testEnvBool ? '1687284007@qq.com' : '', // 1687284007 18406571584 
-    password: testEnvBool ? 'Citu123456' : '',
-  },
-  rules: {
-    phone: emailRequired,
-    password,
-  },
-  smsRules: {
-    code,
-    phone: mobile
-  }
-})
-
-
-// 设置默认账号密码便于开发快捷登录
-if (window && window.location && window.location.hostname && window.location.hostname === 'localhost') {
-  state.value.account.phone = '1687284007@qq.com'
-  state.value.account.password = 'Citu123456'
-}
-
-// 忘记密码
-const handleForgotPassword = () => {
-  uni.navigateTo({
-    url: '/pagesA/forgotPassword/index'
-  })
-}
 
 const changeType = ref('login')
 
-// 获取验证码
-const handleRegisterCode = () => {
-  if (!state.value.register.phone) {
-    uni.showToast({
-      title: '请输入手机号',
-      icon: 'none',
-      duration: 2000
-    })
-    return
-  }
-  getSmsCode('smsRegister', state.value.register.phone)
-}
 // 查看协议详情
 const handleToDetail = (type) => {
-  const url = type === 'user' ? '/pagesB/agreement/user' : '/pagesB/agreement/privacy'
+  const url = type === 'user' ? '/pagesA/agreement/user' : '/pagesA/agreement/privacy'
   uni.navigateTo({
     url
   })
 }
 
-// 注册
-function handleChangeRegister () {
-  changeType.value = 'register'
+const showProtocolToast = () => {
+  uni.showToast({ title: '请先阅读并同意用户协议和隐私政策', icon: 'none' })
 }
 
-// 登录
-function handleChangeLogin () {
-  changeType.value = 'login'
-}
-
-async function handleRegister () {
-  const validate = await unref(registerForm).validate()
-  if (!validate) return
-  const query = state.value.register
-  Object.assign(query, {
-    account: query.phone,
-    autoRegister: true
-  })
-  try {
-    await useUserStore.handleRegister(query)
-    uni.showToast({
-      title: '手机号验证成功',
-      icon: 'none',
-      duration: 2000
-    })
-    // 查看用户是否有在申请中的数据
-    const { code } =  await useUserStore.getPersonalApplyingData()
-    changeType.value = 'login'
-    uni.navigateTo({ url: code ? '/pages/register/review?hasData=true' : '/pages/register/index' })
-  } finally {
-  }
-}
-
-const handleCheckEnterprise = async () => {
-  const { data } = await getEnterpriseRegisterApply(state.value.account.phone)
-  if (data && Object.keys(data).length) {
-    // 查看申请状态
-    uni.setStorageSync('entRegisterData', JSON.stringify(data))
-    uni.navigateTo({
-      url: '/pages/register/review?hasData=true'
-    })
+// 微信登录
+const getPhoneNumber = async (e) => {
+  if (e?.detail?.errMsg !== 'getPhoneNumber:ok') {
+    uni.showToast({ title: '微信登录失败', icon: 'none' })
+    return
   }
-  closeAuthModal()
-}
-
-// 登录
-const handleLogin = async () => {
-  if (!protocol.value) return uni.showToast({ title: '请先阅读并同意用户协议和隐私政策', icon: 'none' })
-  const validate = await unref(accountLoginRef).validate()
-  if (!validate) return
-  const query = state.value.account
-  Object.assign(query, {
-    account: query.phone
-  })
-  console.log(query, '登录参数')
-  try {
-    await useUserStore.handleSmsLogin(query, 1)
-    closeAuthModal()
-  } catch (err) {
-    console.log(err, '登录失败')
-    if (!err.code || (err?.message && err.message.includes('timeout'))) return closeAuthModal()
-    if (err.code === 1100017022) {
-      // 密码不安全
-      uni.showToast({ title: '您的密码不安全,请重置密码', icon: 'none', duration: 2000 })
-      closeAuthModal()
-      return
-    }
-    if (err.code === 1100021016) {
-      // 企业注册申请中
-      handleCheckEnterprise()
-      return
-    }
-    if (err.code === 1100017019) {
-      uni.showToast({ title: '您的邮箱还未注册过,请先注册', icon: 'none', duration: 2000 })
-      changeType.value = 'register'
+  changeType.value = 'login'
+  phoneNumberLoading.value = true
+
+  wx.login({
+    success: async (result) => {
+      console.log(result, '微信登录返回res', e)
+      const wxLoginCode = result?.code || ''
+      const query = {
+        loginCode: wxLoginCode,
+        phoneCode: e.detail.code,
+        state: e.detail.encryptedData,
+      }
+      // await useUserStore.handleSmsLogin(query, current.value)
+      phoneNumberLoading.value = false
+    },
+    fail:(res)=> { 
+      phoneNumberLoading.value = false
+      console.log("获取登录凭证code失败!", res)
     }
-  }
+  })
 }
 </script>
 
 <style scoped lang="scss">
-.login-code {
-  width: 73px;
-  min-width: 73px;
-  color: #00B760;
-  text-align: center; 
-  font-size: 12px; 
-  cursor: pointer;
-  padding: 0;
-}
 .head-title {
   font-size: 40rpx;
   text-align: center;
   color: #00B760;
   margin-top: 30rpx;
 }
-.quickLogon {
-  display: flex;
-  justify-content: space-between;
-  padding: 0 20rpx;
-  align-items: center;
-}
-.register {
-  widows: 100%;
-  font-size: .85em;
-  color: #00B760;
-  text-decoration: underline;
-  &.login {
-    color: #00B760;
-  }
-}
-.pb-20 {
-  padding-bottom: 40rpx;
-}
-
 </style>

+ 0 - 17
layout/index.vue

@@ -11,29 +11,12 @@
     <view class="page-modal">
       <!-- 全局授权弹窗 -->
       <authModal />
-      <!-- 全局分享弹窗 -->
-      <!-- <s-share-modal :shareInfo="shareInfo" /> -->
-      <!-- 全局快捷入口 -->
-      <!-- <s-menu-tools /> -->
     </view>
   </view>
 </template>
 
 <script setup>
 import authModal from './components/auth-modal.vue'
-import { useIM } from '@/hooks/useIM'
-import { watch } from 'vue'
-import { userStore } from '@/store/user'
-const emit = defineEmits(['loginSucceeded'])
-const { resetConfig } = useIM()
-const useUserStore = userStore()
-watch(() => useUserStore?.accountInfo?.userId, (newVal, oldVal) => {
-  if (useUserStore.refreshToken) {
-		// 监听登录状态
-    resetConfig()
-    emit('loginSucceeded')
-	}
-})
 
 </script>
 

+ 25 - 0
pages.json

@@ -17,6 +17,31 @@
 			"style": {
 				"navigationBarTitleText": "信息采集"
 			}
+		},
+		{
+			"path": "pages/drawLots/journal",
+			"style": {
+				"navigationBarTitleText": "手账"
+			}
+		}
+	],
+	"subPackages": [
+		{
+			"root": "pagesA",
+			"pages": [
+				{
+					"path": "agreement/user",
+					"style": {
+						"navigationBarTitleText": "用户协议"
+					}
+				},
+				{
+					"path": "agreement/privacy",
+					"style": {
+						"navigationBarTitleText": "隐私协议"
+					}
+				}
+			]
 		}
 	],
 	"globalStyle": {

+ 138 - 100
pages/drawLots/index.vue

@@ -1,86 +1,90 @@
 <template>
-  <view>
-		<Calendar
-			class="uni-calendar--hook"
-			:selected="selected"
-			:lunar="true"
-			:range="false"
-			:showMonth="true"
-			@change="handleChange"
-		/>
+  <layout-page>
+		<view style="position: relative;">
+			<Calendar
+				class="uni-calendar--hook"
+				:selected="selected"
+				:lunar="true"
+				:range="false"
+				:showMonth="true"
+				@change="handleChange"
+			/>
 
-		<uni-popup ref="popupRef" type="dialog">
-			<view class="popupContent">
-				<!-- <image class="img" src="https://menduner.citupro.com:3443/dev/f7b4ce5cdd4a96286640a88c868c47694fd98b536a79218d1e755498db547725.png"></image>
-				<view class="title">{{ calendarInfo.yangli }}</view>
-				<view class="d-flex align-center justify-center" style="margin-top: 55px;">
-					幸运色:
-					<view class="luckyColor" :style="{ 'background-color': currentColor }"></view>
-				</view>
+			<view class="journal" v-if="journalData && Object.keys(journalData).length > 0">
+				<view class="title">手账</view>
+				<uni-card @click.stop="handleAddJournal(journalData.id, journalData.description)">
+					<view class="d-flex align-center">
+						<view class="line"></view>
+						<view class="date">{{ journalData.date }}</view>
+					</view>
+					<view class="description ss-m-t-15">{{ journalData.description }}</view>
+				</uni-card>
+			</view>
 
-				<view class="font-size-12 ss-m-t-30" style="text-align: left; color: #888;">
-					<view>阴历:{{ calendarInfo.yinli }}</view>
-					<view class="ss-m-y-10">宜:{{ calendarInfo.yi }}</view>
-					<view>忌:{{ calendarInfo.ji }}</view>
-				</view> -->
+			<view class="add-btn" @click.stop="handleAddJournal">
+				<uni-icons type="plusempty" size="30" color="#fff"></uni-icons>
+			</view>
 
-				<view class="content-box">
-					<view class="text-center ss-p-y-30">
-						<view class="yangli">{{ calendarInfo.yangli }}</view>
-						<view class="yinli">{{ calendarInfo.yinli }}</view>
-						<view class="d-flex align-center justify-center">
-							<span style="color: #7f7f7f;">幸运色</span>
-							<view class="luckyColor ss-m-l-20" :style="{ 'background-color': `${currentColor || '#2979ff'}` }"></view>
-						</view>
-					</view>
-					<view class="center-box ss-p-y-30 ss-p-x-30">
-						<view class="d-flex">
-							<view class="yi d-flex align-center justify-center">宜</view>
-							<view class="font-size-15" style="flex: 1; color: #c6b393;">{{ calendarInfo.yi }}</view>
-						</view>
-						<view class="d-flex ss-m-t-30">
-							<view class="ji d-flex align-center justify-center">忌</view>
-							<view class="font-size-15" style="flex: 1; color: #7f7f7f;">{{ calendarInfo.ji }}</view>
+			<uni-popup ref="popupRef" type="dialog">
+				<view class="popupContent">
+					<view class="content-box">
+						<view class="text-center ss-p-y-30">
+							<view class="yangli">{{ calendarInfo.yangli }}</view>
+							<view class="yinli">{{ calendarInfo.yinli }}</view>
+							<view class="d-flex align-center justify-center">
+								<span style="color: #7f7f7f;">幸运色</span>
+								<view class="luckyColor ss-m-l-20" :style="{ 'background-color': `${currentColor || '#2979ff'}` }"></view>
+							</view>
 						</view>
-					</view>
-					<view class="bottom-box">
-						<view class="bottom-box-item d-flex flex-column align-center justify-center">
-							<view class="padding">
-								<view class="label">五行</view>
-								<view class="value">{{ calendarInfo.wuxing }}</view>
+						<view class="center-box ss-p-y-30 ss-p-x-30">
+							<view class="d-flex">
+								<view class="yi d-flex align-center justify-center">宜</view>
+								<view class="font-size-15" style="flex: 1; color: #c6b393;">{{ calendarInfo.yi }}</view>
 							</view>
-							<view style="border-top: 1px solid #c2a08c; height: 1px; width: 100%;"></view>
-							<view class="padding">
-								<view class="label">吉神</view>
-								<view class="value">{{ calendarInfo.jishen }}</view>
+							<view class="d-flex ss-m-t-30">
+								<view class="ji d-flex align-center justify-center">忌</view>
+								<view class="font-size-15" style="flex: 1; color: #7f7f7f;">{{ calendarInfo.ji }}</view>
 							</view>
 						</view>
-						<view class="bottom-box-item d-flex align-center justify-center">
-							<view class="padding">
-								<view class="label">彭祖</view>
-								<view class="value">{{ calendarInfo.baiji }}</view>
+						<view class="bottom-box">
+							<view class="bottom-box-item d-flex flex-column align-center justify-center">
+								<view class="padding">
+									<view class="label">五行</view>
+									<view class="value">{{ calendarInfo.wuxing }}</view>
+								</view>
+								<view style="border-top: 1px solid #c2a08c; height: 1px; width: 100%;"></view>
+								<view class="padding">
+									<view class="label">吉神</view>
+									<view class="value">{{ calendarInfo.jishen }}</view>
+								</view>
 							</view>
-						</view>
-						<view class="bottom-box-item d-flex flex-column align-center justify-center">
-							<view class="padding">
-								<view class="label">冲煞</view>
-								<view class="value">{{ calendarInfo.chongsha }}</view>
+							<view class="bottom-box-item d-flex align-center justify-center">
+								<view class="padding">
+									<view class="label">彭祖</view>
+									<view class="value">{{ calendarInfo.baiji }}</view>
+								</view>
 							</view>
-							<view style="border-top: 1px solid #c2a08c; height: 1px; width: 100%;"></view>
-							<view class="padding">
-								<view class="label">凶神</view>
-								<view class="value">{{ calendarInfo.xiongshen }}</view>
+							<view class="bottom-box-item d-flex flex-column align-center justify-center">
+								<view class="padding">
+									<view class="label">冲煞</view>
+									<view class="value">{{ calendarInfo.chongsha }}</view>
+								</view>
+								<view style="border-top: 1px solid #c2a08c; height: 1px; width: 100%;"></view>
+								<view class="padding">
+									<view class="label">凶神</view>
+									<view class="value">{{ calendarInfo.xiongshen }}</view>
+								</view>
 							</view>
 						</view>
 					</view>
 				</view>
-			</view>
 
-			<view class="text-center ss-m-t-50">
-				<uni-icons type="close" size="40" color="#fff" @click="handleClose"></uni-icons>
-			</view>
-		</uni-popup>
-  </view>
+				<view class="text-center ss-m-t-50">
+					<uni-icons type="close" size="40" color="#fff" @click="handleClose"></uni-icons>
+				</view>
+			</uni-popup>
+		</view>
+	</layout-page>
 </template>
 
 <script setup>
@@ -88,10 +92,15 @@ import { onLoad } from '@dcloudio/uni-app'
 import { ref } from 'vue'
 import Calendar from '@/components/uni-calendar/components/uni-calendar/uni-calendar.vue'
 import { getDrawLots } from '@/api/drawLots.js'
+import layoutPage from '@/layout'
+import { showAuthModal, closeAuthModal } from '@/hooks/useModal'
+
+const journalData = ref({
+	id: 1,
+	date: '2025-08-27',
+	description: '南京金陵酒店管理有限公司隶属于金陵饭店集团酒店业务板块,成立于2004年,已成为品牌化、连锁化、规模化发展的酒店管理专业机构。着力打造多层级品牌体系,构建涵盖高中端精品商务酒店、休闲度假酒店、主题文化酒店、智能公寓酒店等多样化产品线。公司秉承金陵饭店“细意浓情”服务理念,融合国际标准、传承中国文化、深耕本土特色,依托总部强大的支撑体系,为在管运营酒店赋能,为业主提供超值服务。“金陵”相继摘取中国质量奖——“全国质量工作先进单位标兵”,荣膺中国质量领域政府性荣誉——首届“中国质量奖”提名奖,十度蝉联世界品牌实验室评定的全球服务业奖项——“五星钻石奖”,位列中国饭店集团前30强,保持全国国有高星级酒店集团前三甲。国家旅游局在《饭店星评标准访查示范》中,将金陵饭店的管理模式和服务标准作为五星级酒店示范样板并拍摄成教学片,向全国酒店业推广。'
+})
 
-	/**
-	 * 获取任意时间
-	 */
 	function getDate(date, AddDayCount = 0) {
 		if (!date) {
 			date = new Date()
@@ -152,13 +161,8 @@ import { getDrawLots } from '@/api/drawLots.js'
 	}
 
 	onLoad(() => {
-		// const birthday = uni.getStorageSync('birthday')
-		// if (!birthday) {
-		// 	uni.reLaunch({
-		// 		url: '/pages/drawLots/form'
-		// 	})
-		// 	return
-		// }
+		// showAuthModal()
+		closeAuthModal()
 
 		// 设置选中项
 		setTimeout(() => {
@@ -176,7 +180,8 @@ import { getDrawLots } from '@/api/drawLots.js'
 
 		try {
 			const { result } = await getDrawLots({ date: e.fulldate })
-			// console.log(result, '成功信息')
+			if (!result) return uni.showToast({ title: '黄历信息获取失败', icon: 'none' })
+			console.log(result, '成功信息')
 			calendarInfo.value = result || {}
 
 			popupRef.value.open()
@@ -191,25 +196,75 @@ import { getDrawLots } from '@/api/drawLots.js'
 		currentColor.value = null
 		calendarInfo.value = {}
 	}
+
+	// 添加手账
+	const handleAddJournal = (id, text) => {
+		let url = `/pages/drawLots/journal`
+		if (id) url += `?id=${id}&text=${text}`
+		uni.navigateTo({
+			url
+		})
+	}
 </script>
 
 <style lang="scss" scoped>
 $commonColor: #c2a08c;
 $size: 25px;
 
+:deep {
+	.uni-card {
+		border-radius: 10px !important;
+	}
+}
+.journal {
+	margin-top: 30rpx;
+	padding-bottom: 100px;
+	.title {
+		// color: #2979ff;
+		color: #999;
+		margin: 0 30px;
+	}
+	.date {
+		font-size: 17px;
+		font-weight: bold;
+	}
+	.line {
+		width: 5px;
+		height: 15px;
+		border-radius: 4px;
+		background-color: #2979ff;
+		margin-right: 10px;
+	}
+	.description {
+		display: -webkit-box;
+		-webkit-box-orient: vertical;
+		-webkit-line-clamp: 6;
+		overflow: hidden;
+	}
+}
+
+.add-btn {
+	position: fixed;
+	right: 20px;
+	bottom: 50px;
+	width: 60px;
+	height: 60px;
+	border-radius: 50%;
+	background-color: #2979ff;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+
 .popupContent {
 	position: relative;
 	background-color: #fff;
-	// border-radius: 12px;
 	width: 70vw;
-	// height: 400rpx;
-	// text-align: center;
 	padding: 30rpx;
 	.content-box {
 		height: 100%;
 		border: 1px solid $commonColor;
 		border-radius: 6px; 
-		// padding: 20rpx;
 	}
 	.yangli {
 		font-weight: bold;
@@ -269,22 +324,5 @@ $size: 25px;
 		height: 50rpx;
 		border-radius: 50%;
 	}
-
-	.img {
-		position: absolute;
-		top: -56px;
-		left: 50%;
-		transform: translateX(-50%);
-		width: 150px;
-		height: 150px;
-	}
-	.title {
-		position: absolute;
-		top: 7px;
-		left: 50%;
-		color: #F49610;
-		font-weight: bold;
-		transform: translateX(-50%);
-	}
 }
 </style>

+ 43 - 0
pages/drawLots/journal.vue

@@ -0,0 +1,43 @@
+<template>
+  <view class="ss-p-x-30 ss-p-y-30">
+		<uni-easyinput type="textarea" v-model="journal" clearable maxlength="500" autoHeight placeholder="请输入要记录的内容" />
+		<view class="f-horizon-center">
+      <button
+				v-if="editId"
+				size="default"
+				class="delete-button commonBtnStyle" 
+				:disabled="deleteDisabled"
+				@click="handleDelete"
+			>删 除</button>
+      <button 
+        size="default" 
+        :class="{'save-button': editId, 'commonBtnStyle': editId, 'send-button': !editId}" 
+        @click="handleSubmit"
+        :disabled="disabled"
+       >保 存</button>
+    </view>
+  </view>
+</template>
+
+<script setup>
+import { ref } from 'vue'
+import { onLoad } from '@dcloudio/uni-app'
+
+const editId = ref(null)
+const journal = ref(null)
+const disabled = ref(false)
+const deleteDisabled = ref(false)
+
+onLoad((options) => {
+  editId.value = options?.id || null
+  journal.value = options?.text || null
+})
+
+const handleDelete = () => {}
+
+const handleSubmit = async () => {
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 3 - 286
pages/index/index.vue

@@ -1,290 +1,7 @@
 <template>
-  <view>
-		<Calendar
-			class="uni-calendar--hook"
-			:selected="selected"
-			:lunar="true"
-			:range="false"
-			:showMonth="true"
-			@change="handleChange"
-		/>
-
-		<uni-popup ref="popupRef" type="dialog">
-			<view class="popupContent">
-				<!-- <image class="img" src="https://menduner.citupro.com:3443/dev/f7b4ce5cdd4a96286640a88c868c47694fd98b536a79218d1e755498db547725.png"></image>
-				<view class="title">{{ calendarInfo.yangli }}</view>
-				<view class="d-flex align-center justify-center" style="margin-top: 55px;">
-					幸运色:
-					<view class="luckyColor" :style="{ 'background-color': currentColor }"></view>
-				</view>
-
-				<view class="font-size-12 ss-m-t-30" style="text-align: left; color: #888;">
-					<view>阴历:{{ calendarInfo.yinli }}</view>
-					<view class="ss-m-y-10">宜:{{ calendarInfo.yi }}</view>
-					<view>忌:{{ calendarInfo.ji }}</view>
-				</view> -->
-
-				<view class="content-box">
-					<view class="text-center ss-p-y-30">
-						<view class="yangli">{{ calendarInfo.yangli }}</view>
-						<view class="yinli">{{ calendarInfo.yinli }}</view>
-						<view class="d-flex align-center justify-center">
-							<span style="color: #7f7f7f;">幸运色</span>
-							<view class="luckyColor ss-m-l-20" :style="{ 'background-color': `${currentColor || '#2979ff'}` }"></view>
-						</view>
-					</view>
-					<view class="center-box ss-p-y-30 ss-p-x-30">
-						<view class="d-flex">
-							<view class="yi d-flex align-center justify-center">宜</view>
-							<view class="font-size-15" style="flex: 1; color: #c6b393;">{{ calendarInfo.yi }}</view>
-						</view>
-						<view class="d-flex ss-m-t-30">
-							<view class="ji d-flex align-center justify-center">忌</view>
-							<view class="font-size-15" style="flex: 1; color: #7f7f7f;">{{ calendarInfo.ji }}</view>
-						</view>
-					</view>
-					<view class="bottom-box">
-						<view class="bottom-box-item d-flex flex-column align-center justify-center">
-							<view class="padding">
-								<view class="label">五行</view>
-								<view class="value">{{ calendarInfo.wuxing }}</view>
-							</view>
-							<view style="border-top: 1px solid #c2a08c; height: 1px; width: 100%;"></view>
-							<view class="padding">
-								<view class="label">吉神</view>
-								<view class="value">{{ calendarInfo.jishen }}</view>
-							</view>
-						</view>
-						<view class="bottom-box-item d-flex align-center justify-center">
-							<view class="padding">
-								<view class="label">彭祖</view>
-								<view class="value">{{ calendarInfo.baiji }}</view>
-							</view>
-						</view>
-						<view class="bottom-box-item d-flex flex-column align-center justify-center">
-							<view class="padding">
-								<view class="label">冲煞</view>
-								<view class="value">{{ calendarInfo.chongsha }}</view>
-							</view>
-							<view style="border-top: 1px solid #c2a08c; height: 1px; width: 100%;"></view>
-							<view class="padding">
-								<view class="label">凶神</view>
-								<view class="value">{{ calendarInfo.xiongshen }}</view>
-							</view>
-						</view>
-					</view>
-				</view>
-			</view>
-
-			<view class="text-center ss-m-t-50">
-				<uni-icons type="close" size="40" color="#fff" @click="handleClose"></uni-icons>
-			</view>
-		</uni-popup>
-  </view>
+  <DrawLotsPage />
 </template>
 
 <script setup>
-import { onLoad } from '@dcloudio/uni-app'
-import { ref } from 'vue'
-import Calendar from '@/components/uni-calendar/components/uni-calendar/uni-calendar.vue'
-import { getDrawLots } from '@/api/drawLots.js'
-
-	/**
-	 * 获取任意时间
-	 */
-	function getDate(date, AddDayCount = 0) {
-		if (!date) {
-			date = new Date()
-		}
-		if (typeof date !== 'object') {
-			date = date.replace(/-/g, '/')
-		}
-		const dd = new Date(date)
-
-		dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
-
-		const y = dd.getFullYear()
-		const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
-		const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
-		return {
-			fullDate: y + '-' + m + '-' + d,
-			year: y,
-			month: m,
-			date: d,
-			day: dd.getDay()
-		}
-	}
-
-	const selected = ref([])
-	const setSelectedDates = () => {
-		selected.value = [ 
-			{
-				date: getDate(new Date(),-20).fullDate,
-				color: '#d3e3fd',
-				url: 'https://menduner.citupro.com:3443/dev/2dbc20a5db2122e399b491638889ba9f8aea4e1c7a44463ee0df40b25f85b8cc.png'
-			},
-			{
-				date: getDate(new Date(),-16).fullDate,
-				color: '#f8bbd0',
-				url: 'https://menduner.citupro.com:3443/dev/2dbc20a5db2122e399b491638889ba9f8aea4e1c7a44463ee0df40b25f85b8cc.png'
-			},
-			{
-				date: getDate(new Date(),-12).fullDate,
-				color: '#3bb19b',
-				url: 'https://menduner.citupro.com:3443/dev/2dbc20a5db2122e399b491638889ba9f8aea4e1c7a44463ee0df40b25f85b8cc.png'
-			},
-			{
-				date: getDate(new Date(),-7).fullDate,
-				color: '#facd89',
-				url: 'https://menduner.citupro.com:3443/dev/2dbc20a5db2122e399b491638889ba9f8aea4e1c7a44463ee0df40b25f85b8cc.png'
-			},
-			{
-				date: getDate(new Date(),-3).fullDate,
-				color: '#d7ccc8',
-				url: 'https://menduner.citupro.com:3443/dev/2dbc20a5db2122e399b491638889ba9f8aea4e1c7a44463ee0df40b25f85b8cc.png'
-			},
-			{
-				date: getDate(new Date(),-2).fullDate,
-				color: '#c5cae9',
-				url: 'https://menduner.citupro.com:3443/dev/2dbc20a5db2122e399b491638889ba9f8aea4e1c7a44463ee0df40b25f85b8cc.png'
-			}
-		]
-	}
-
-	onLoad(() => {
-		// const birthday = uni.getStorageSync('birthday')
-		// if (!birthday) {
-		// 	uni.reLaunch({
-		// 		url: '/pages/drawLots/form'
-		// 	})
-		// 	return
-		// }
-
-		// 设置选中项
-		setTimeout(() => {
-			setSelectedDates()
-		}, 2000)
-	})
-
-
-	const popupRef = ref()
-	const currentColor = ref(null)
-
-	const calendarInfo = ref({})
-	const handleChange = async (e) => {
-		if (e.isBackToday) return // 点击左上角“今日”按钮不弹窗
-
-		try {
-			const { result } = await getDrawLots({ date: e.fulldate })
-			// console.log(result, '成功信息')
-			calendarInfo.value = result || {}
-
-			popupRef.value.open()
-			currentColor.value = result?.color || e.extraInfo?.color
-		} catch (error) {
-			console.log(error, '错误信息')
-		}
-	}
-
-	const handleClose = () => {
-		popupRef.value.close()
-		currentColor.value = null
-		calendarInfo.value = {}
-	}
-</script>
-
-<style lang="scss" scoped>
-$commonColor: #c2a08c;
-$size: 25px;
-
-.popupContent {
-	position: relative;
-	background-color: #fff;
-	// border-radius: 12px;
-	width: 70vw;
-	// height: 400rpx;
-	// text-align: center;
-	padding: 30rpx;
-	.content-box {
-		height: 100%;
-		border: 1px solid $commonColor;
-		border-radius: 6px; 
-		// padding: 20rpx;
-	}
-	.yangli {
-		font-weight: bold;
-		color: $commonColor;
-		font-size: 30px;
-	}
-	.yinli {
-		color: #7f7f7f;
-		margin: 10px 0;
-	}
-	.center-box {
-		border-top: 1px solid $commonColor;
-		border-bottom: 1px solid $commonColor;
-		.yi {
-			width: $size;
-			height: $size;
-			background-color: #c39c87;
-			border-radius: 50%;
-			color: #fff;
-			margin-right: 10px;
-			font-size: 14px;
-		}
-		.ji {
-			width: $size;
-			height: $size;
-			background-color: #bfbfbf;
-			border-radius: 50%;
-			color: #fff;
-			margin-right: 10px;
-			font-size: 14px;
-		}
-	}
-	.bottom-box {
-		display: flex;
-		&-item {
-			width: 33.3%;
-			text-align: center;
-			border-right: 1px solid $commonColor;
-			&:nth-child(3n) {
-				border-right: none;
-			}
-			.label {
-				font-size: 17px;
-			}
-			.value {
-				color: #7f7f7f;
-				font-size: 14px;
-				margin-top: 10px;
-			}
-			.padding {
-				padding: 10px;
-			}
-		}
-	}
-	.luckyColor {
-		width: 50rpx;
-		height: 50rpx;
-		border-radius: 50%;
-	}
-
-	.img {
-		position: absolute;
-		top: -56px;
-		left: 50%;
-		transform: translateX(-50%);
-		width: 150px;
-		height: 150px;
-	}
-	.title {
-		position: absolute;
-		top: 7px;
-		left: 50%;
-		color: #F49610;
-		font-weight: bold;
-		transform: translateX(-50%);
-	}
-}
-</style>
+import DrawLotsPage from '../drawLots/index.vue'
+</script>

+ 51 - 0
pagesA/agreement/privacy.vue

@@ -0,0 +1,51 @@
+<template>
+  <view class="conter">
+    <view class="Protocol">
+      <h1 class="segment">隐私政策</h1>
+      <h2 class="subtitle text-size"><span class="text-font">引言</span></h2>
+      <p class="text-color"><span class="text-font">苏州识喜识谊信息科技有限公司(“识喜识谊”、“我们”、“我们的”)尊重您的隐私,致力于保护您在使用我们的网站www.menduner.com、企业公众服务号、小程序、其他线上产品和服务(“网站”)、在您注册网站会员时、或在您以其他方式与我们互动时,提供给我们、或我们收集的属于您的个人信息的隐私性、保密性和安全性。</span></p>
+      <p class="text-color"><span class="text-font">本网站关注每一位用户的权益,珍视您的隐私,此隐私保障政策解释了我们的个人信息实际操作和您能够选择的个人信息被使用的方式。此隐私保障政策是我们对您个人信息保护的承诺,并已被所有识喜识谊其关联公司或子公司所采纳。</span></p>
+      <p class="text-color"><span class="text-font">在下列情形下,您将被要求同意此隐私保障政策中的各项条款:注册会员、享受会员服务、注册加入活动或促销活动、通过网站与我们联系或适用法律法规所要求的其他情况。除此之外,您对本网站的继续使用将视为您已同意该隐私保障政策的各项条款。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">数据使用</span></h2>
+      <p class="text-color"><span class="text-font">我们给您提供的服务将基于您提供的数据。</span></p>
+      <p class="text-color"><span class="text-font">在您确定使用我们的服务,以及您使用服务的方式及设置后,我们将确定如何使用您的个人数据。为更好为您提供服务,我们在使用您的个人数据进行服务时,将借助智能系统进行处理。</span></p>
+      <p class="text-color"><span class="text-font">为更好提供服务,我们将对服务内容进行更新,由此造成的数据采集内容及使用方式的变更,我们将及时通知您,同时可能会对本政策进行修改。</span></p>
+      <p class="text-color"><span class="text-font">我们在使用您的个人信息时将以合理、合法为原则。我们将在以下几个方面使用您的个人信息。</span></p>
+      <p class="text-color"><span class="text-font">1. 我们收集的个人信息将被用于确保我们产品和服务的功能和安全、验证您的身份、防止并追究欺诈或其他不当使用的情形。</span></p>
+      <p class="text-color"><span class="text-font">2. 我们收集的个人信息将被用于我们的产品和服务开发,尽管一般情况下,我们为此目的仅使用综合信息和统计性信息。</span></p>
+      <p class="text-color"><span class="text-font">3. 我们收集的个人信息将被用于与您进行交流,例如在本网站产品或服务更新、发布的第一时间向您发出通知。</span></p>
+      <p class="text-color"><span class="text-font">4. 我们所收集的个人信息将被用于进行产品的个性化设计,并向您提供更优化的服务。</span></p>
+      <p class="text-color"><span class="text-font">5. 为了更好的为您提供服务,本网站可能将您同意公开的姓名、简历信息、个人标签、职位等信息推送给适合的招聘或求职用户。</span></p>
+      <p class="text-color"><span class="text-font">6. 如果您参与本网站举办的调查、抽奖、竞赛或类似推广活动,我们会将您提供的个人信息用于管理此类活动。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">信息分享</span></h2>
+      <p class="text-color"><span class="text-font">1. 与本公司其他产品或关联公司产品或共享:为更好的向您提供服务,推荐您可能感兴趣的信息,您的部分个人信息可能会共享给本公司其他产品或者关联公司的产品。我们只会共享必要的个人信息,例如共享您的行为偏好,以向您推荐同类信息。</span></p>
+      <p class="text-color"><span class="text-font">2. 为更好提供服务,我们可能会在《用户协议》框架内及法律允许的范围内将您的信息与第三方信息进行匹配,从而为您量身定制相关信息。在使用过程中,我们会采取一切必要措施保证您的个人数据安全。随着我们业务的持续发展,我们以及我们的关联公司有可能进行合并、收购、资产转让或类似的交易,我们收集的相关信息有可能作为此类交易的一部分而被转移。</span></p>
+      <p class="text-color"><span class="text-font">3. 法律声明</span></p>
+      <p class="text-color"><span class="text-font">如果我们或我们的关联公司依照法律、法规、法院命令、监管机构命令的要求,或根据政府的行为、监管要求或请求,或为了保护您、我们和他人的权利与安全,我们也许需要共享您的数据。</span></p>
+      <p class="text-color"><span class="text-font">我们将根据法律及相关政策要求,在以下情况下公开您的信息: (1) 相关政府执法部门在执法过程中需要进行协助的;(2) 根据《用户协议》可以公开的;(3) 针对任何第三方主张或指控进行调查与自我辩护;(4) 保护我们“服务”的安全性或完整性;或 (5) 行使或保护本网站、“会员”、职员或他人的权利和安全。在应法律及相关政策要求需要提供您个人数据时,我们将根据情况尽力通知您。</span></p>
+      <p class="text-color"><span class="text-font">4. 管理变更或出售</span></p>
+      <p class="text-color"><span class="text-font">将来我们可能会被出售、合并等管理主体变更时,您的数据依然会被新的管理主体共享,但本政策会被继续遵守。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">您的选择与义务</span></h2>
+      <p class="text-color"><span class="text-font">1. 数据保留</span></p>
+      <p class="text-color"><span class="text-font">在您使用我们账号的过程中,您的数据将被我们保留。此数据包含您提供的数据及我们经过推断而产生的数据等。</span></p>
+      <p class="text-color"><span class="text-font">2. 访问与控制个人数据的权利</span></p>
+      <p class="text-color"><span class="text-font">对于您的个人数据,您可以随时查看和更改,同时我们对于您数据的收集、使用、共享提供了多种选择。</span></p>
+      <p class="text-color"><span class="text-font">数据管理:</span></p>
+      <p class="text-color"><span class="text-font">删除数据:您可以要求我们清除或删除您的全部或部分个人数据。</span></p>
+      <p class="text-color"><span class="text-font">更改或纠正数据: 您可以通过您的帐号编辑您的部分个人数据。</span></p>
+      <p class="text-color"><span class="text-font">限制对数据的使用:您可以要求我们停止使用您的全部或部分个人数据。</span></p>
+      <p class="text-color"><span class="text-font">3. 注销帐号</span></p>
+      <p class="text-color"><span class="text-font">在您被注销帐号之后,我们仍然会保留您的部分数据。</span></p>
+      <p class="text-color"><span class="text-font">在您注销您的本网站帐号后24小时内,您的个人数据将不再向其他人显示。以下情形除外:</span></p>
+      <p class="text-color"><span class="text-font">法律或相关政策要求、遵守监管要求、解决争议、保证安全、防止欺诈与滥用、执行《用户协议》或满足您向我们“退订”某些消息的请求,即使您注销帐号,本网站仍可能保留您的部分个人数据。在您的帐号注销后,我们将保留不可识别个人的信息。</span></p>
+      <p class="text-color"><span class="text-font">您已与他人分享的信息在您注销帐号或从职业档案或收件箱中删除后,将仍对他人公开,并且我们无法控制其他“会员”从我们的“服务”中复制的信息。与注销帐号相关的群组内容、评分或点评内容,会以“未知用户”列为内容来源。您的职业档案可能继续显示在其他方的服务中,直到其更新缓存。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">联系信息</span></h2>
+      <p class="text-color"><span class="text-font">您可以联系我们或使用其他方式来解决任何投诉。</span></p>
+      <p class="text-color"><span class="text-font">若您对本《隐私政策》有任何疑问或投诉,您可以通过邮件来联系我们。</span></p>
+    </view>
+  </view>
+</template>
+
+<style scoped lang="scss">
+@import '../../static/style/protocol/index.scss';
+</style>

+ 78 - 0
pagesA/agreement/user.vue

@@ -0,0 +1,78 @@
+<template>
+  <view class="conter">
+    <view class="Protocol">
+      <h1 class="segment">用户协议</h1>
+      <h2 class="subtitle text-size"><span class="text-font">1.引言</span></h2>
+      <p class="text-color"><span class="text-font">1.1苏州识喜识谊信息科技有限公司同意按照本协议的规定及其不时发布的操作规则提供门墩儿网站,小程序(www.menduner.com)(以下称“本网站”或“我们”)网络服务,为获得网络服务,服务使用人(以下称“用户”或“您”,包括酒店管理者及相关从业人员、企业用户等)应当同意本协议的全部条款并按照页面上的提示完成全部的注册程序。用户在进行注册程序过程中勾选“我已阅读并同意”选项表示您完全接受并遵守本用户协议项下的全部条款,请您务必仔细阅读,充分理解协议的条款内容后再点击同意确认,您点击同意后即视为已接受本用户协议为构成对双方具有约束力的法律文件。</span></p>
+      <p class="text-color"><span class="text-font">1.2用户注册完成后,用户账号和密码由用户自行保管,用户应当对以其账号进行的所有活动和事件负法律责任。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">2.用户使用限制及收费</span></h2>
+      <p class="text-color"><span class="text-font">2.1本网站的会员只适用于已年满十八周岁,且具备相应的民事行为能力签订本用户协议。十六周岁至十八周岁的未成年人如希望使用服务,请由未成年人的监护人注册账号和填写相关信息。本网站不对任何不具备完全民事行为能力的主体开放,完全民事行为能力以外的人不是本网站的合格使用者,本网站有权采取包括但不限于注销账户的处理措施,并向使用者的监护人或负责人索偿。</span></p>
+      <p class="text-color"><span class="text-font">2.2本网站有权限制您使用“服务”时与会员建立联系和进行互动的方式。</span></p>
+      <p class="text-color"><span class="text-font">2.3本网站保留限制您使用“服务”的权利,包括限制您联系人的数量和您与其他会员互动的能力。如果本网站认为您可能违反了本合同或法律,或对“服务”使用不当 (如违反任何应做或禁止事项或职场社区政策),本网站将保留限制、暂停或终止您帐号的权利。因本网站主要接纳的会员为酒店管理者及相关从业人员、企业用户等,如果本网站认为您不属于上述会员范畴,本网站将保留限制、暂停或终止您帐号的权利。</span></p>
+      <p class="text-color"><span class="text-font">2.4本网站对部分“服务”收取一定的费用。在此情况下,本网站会在相关页面上做明确的提示。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">3.用户授权</span></h2>
+      <p class="text-color"><span class="text-font">用户应确保提供给本网站的所有内容、反馈和个人信息均具有真实性、准确性、完整性以及合法有效性,同时用户也授予门墩儿网站享有如下权限:在不需要另行通知并取得用户授权的情况下免费在全球范围内,可以使用、复制、修改、传播、发表、加工用户通过本网站“服务”提供的信息和内容,以上权限可以转让及可以授权给第三方。</span></p>
+      <p class="text-color"><span class="text-font">本网站在使用这些权限时有如下限制:</span></p>
+      <p class="text-color"><span class="text-font">3.1您可以通过删除“服务”里的特定内容或注销帐号,来终止您授予本网站的权限,但该内容已经被您或他人分享时已经被他人复制、重新分享或保存了该内容的除外;</span></p>
+      <p class="text-color"><span class="text-font">3.2您的内容将不会被我们用于商业目的。但本网站免费享有在您的内容旁发布广告的权利;</span></p>
+      <p class="text-color"><span class="text-font">3.3如果我们想给予第三方在“服务”范围之外发布您发表内容的权利,须取得您的同意。但是,如果您选择“公开,我们将允许会员将您的公开动态嵌入第三方服务,还将允许搜索引擎通过其服务将这些公开内容作为可被查找的内容。</span></p>
+      <p class="text-color"><span class="text-font">3.4 您的内容可能会被我们在不更改本身含义的情况下进行编辑或修改。</span></p>
+      <p class="text-color"><span class="text-font">3.5 我们将根据您所提供的信息及数据,向您推送相关的信息及服务。</span></p>
+      <p class="text-color"><span class="text-font">3.6在遵守《隐私政策》的条款以及您同意前提下,您和本网站同意,我们能访问、保存、处理和使用您提供的任何信息和个人数据。</span></p>
+      <p class="text-color"><span class="text-font">3.7您承诺您所提供的档案是真实的,同时您所发布的信息和内容没有任何侵权。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">4.用户使用规则</span></h2>
+      <p class="text-color"><span class="text-font">4.1用户义务</span></p>
+      <p class="text-color"><span class="text-font">4.1.1遵守中华人民共和国相关法律法规,包括但不限于《中华人民共和国数据安全法》《中华人民共和国网络安全法》《个人信息保护法》等有关法律和法规;</span></p>
+      <p class="text-color"><span class="text-font">4.1.2提供准确信息,并及时更新信息;在职业档案中使用真实姓名。</span></p>
+      <p class="text-color"><span class="text-font">4.2用户禁止事项:</span></p>
+      <p class="text-color"><span class="text-font">4.2.1在本网站上创建虚假身份,并以此为本人或他人谋取不正当利益;</span></p>
+      <p class="text-color"><span class="text-font">4.2.2未经本网站同意进行“服务”数据采集或复制“服务”中的职业档案等其他信息;</span></p>
+      <p class="text-color"><span class="text-font">4.2.3未经本网站同意,复制、使用、公开或传播任何通过“服务”获得的信息,无论是直接获得还是通过第三方(例如搜索引擎)获得的;</span></p>
+      <p class="text-color"><span class="text-font">4.2.4侵犯其他任何第三方专利权、著作权、商标权、名誉权或其他任何合法权益;</span></p>
+      <p class="text-color"><span class="text-font">4.2.5侵犯本网站的知识产权或其他权利;</span></p>
+      <p class="text-color"><span class="text-font">4.2.6未经本网站明确同意,不得以本网站名义从事任何商业及收费商业活动;</span></p>
+      <p class="text-color"><span class="text-font">4.2.7未经本网站同意,以宣传您的本网站档案或某个本网站群组以外的任何目的,深层链接到“服务”;</span></p>
+      <p class="text-color"><span class="text-font">4.2.8 使用自动程序(即“bots”)或其他自动方法访问“服务”、添加或下载通讯录、发送或重定向信息;</span></p>
+      <p class="text-color"><span class="text-font">4.2.9以任何竞争目的监控“服务”的可用性、性能或功能;</span></p>
+      <p class="text-color"><span class="text-font">4.2.10 参与“建立构架”、“制作镜像”或其他模拟“服务”外观或功能的活动;</span></p>
+      <p class="text-color"><span class="text-font">4.2.11擅自修改本网站“服务”或其外观;</span></p>
+      <p class="text-color"><span class="text-font">4.2.12干扰“服务”的运营、或给“服务”带来不合理的负荷(例如群发邮件、拒绝服务攻击、病毒、游戏运算);和/或违反在您注册或开始使用某项特定“服务”时所规定的《职业社区政策》或任何附加条款。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">5.服务变更</span></h2>
+      <p class="text-color"><span class="text-font">本网站可能会修改、暂停或取消某些本网站所提供的服务,或会自行更改价格,本网站无法承诺保存或持续展示您发布的任何信息和内容。在法律允许的范围内,这些更改可能在向您发送通知时开始生效。本网站没有义务保存、维护您或他人提供的任何信息和内容,也没有义务提供这些内容和信息的副本。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">6. 知识产权</span></h2>
+      <p class="text-color"><span class="text-font">6.1本网站保留“服务”中的所有知识产权。使用“服务”并不代表您对我们的“服务”或通过“服务”提供的内容或信息拥有任何所有权。本网站在本服务中提供的内容(包括但不限于网页、文字、图片、音频、视频、图表等)的知识产权均归本网站所有,但本服务中涉及广告的知识产权由相应广告商享有的,用户在使用本服务前对自己发布的内容已合法取得知识产权的、在内容中声明了转载或经过第三方授权,且非通过载入第三方网页的除外。</span></p>
+      <p class="text-color"><span class="text-font">6.2除另有特别声明外,本网站提供服务时所依托软件的著作权、专利权及其他知识产权均归门墩儿网站所有。</span></p>
+      <p class="text-color"><span class="text-font">6.3与“服务”相关的商标和标志是其各自所有者的商标。本网站以及本网站服务使用的其他本网站商标、服务标志、图片和标志均为本网站的商标或注册商标。未经本网站事先书面同意,用户不得将本网站的标识以任何方式展示或使用或用作其他处理,也不得向他人表明用户有权展示、使用、或其他有权处理本网站标识的行为。</span></p>
+      <p class="text-color"><span class="text-font">6.4 基于对数据的合法加工而获得的具有竞争性的数据权益,除法律法规另有规定外,我们享有独立的使用权益而无须获得您的同意。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">7.风险提示</span></h2>
+      <p class="text-color"><span class="text-font">7.1由于本网站一般不对会员及他人提供的内容进行审查,如果您在使用服务时看到不准确、不完整、过时、有误导性、非法、冒犯性或有害的内容或信息,本网站不对以上信息负责。</span></p>
+      <p class="text-color"><span class="text-font">7.2如果您通过本网站“服务”上的链接访问或使用第三方 APP 、小程序或网站进行访问,通过以上方式进行访问时,他们可能会获取并使用您的相关信息,本网站对上述风险不承担责任。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">8.免责声明和有限责任</span></h2>
+      <p class="text-color"><span class="text-font">8.1本网站对由于政府禁令、现行生效的适用法律或法规的变更、火灾、地震、动乱、战争、停电、通讯线路中断、黑客攻击、计算机病毒侵入或发作、电信部门技术调整、因政府管制而造成网站的暂时性关闭等任何影响网络正常运营的不可预见、不可避免、不可克服和不可控制的事件(“不可抗力事件”),以及他人蓄意破坏、本网站工作人员的疏忽或不当使用,正常的系统维护、系统升级,或者因网络拥塞而导致本网站不能访问而造成的本网站所提供的信息及数据的延误、停滞或错误,以及使用者由此受到的一切损失不承担任何责任;</span></p>
+      <p class="text-color"><span class="text-font">8.2本网站不对用户的线下行为负责。企业用户及个人用户均应审慎对待他方之行为,因为他方之行为给用户造成任何不利影响的,本网站不承担任何法律责任。</span></p>
+      <p class="text-color"><span class="text-font">8.3本网站对于向用户免费提供的服务或向用户赠送的任何产品或者服务的质量缺陷及其引发的任何损失,本网站无需承担任何责任。</span></p>
+      <p class="text-color"><span class="text-font">8.4对于本网站为使用者提供便利而设置的外部链接网址,本网站并不保证其准确性、安全性和完整性,亦并不代表本网站对其链接内容的认可,请使用者谨慎确认后使用,本网站对由此导致的任何损失或伤害不承担任何责任。</span></p>
+      <p class="text-color"><span class="text-font">8.5用户因使用本网站产生损失而提出的索赔金额,以用户向本网站已交付的款项之和为限。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">9. 协议终止</span></h2>
+      <p class="text-color"><span class="text-font">9.1双方可于任何时候终止本协议。</span></p>
+      <p class="text-color"><span class="text-font">9.2本网站或您均可在任何时间通知对方终止本协议。一旦协议终止,您就失去了访问或使用“服务”的权利。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">10. 适用法律和纠纷解决</span></h2>
+      <p class="text-color"><span class="text-font">若您我双方发生法律纠纷,双方同意在苏州工业园区人民法院解决,适用中华人民共和国的法律。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">11.适用语言及其他</span></h2>
+      <p class="text-color"><span class="text-font">11.1在法律允许的范围内,本合同的中文版本将具法律效力,其他语言版本仅起参考作用。</span></p>
+      <p class="text-color"><span class="text-font">11.2您不得在没有取得本网站同意的情况下将本合同(包括您的会员身份或“服务”使用权)转让或转移给任何人。但是,您同意本网站可以在没有您同意的情况下将本合同转让给关联机构或本网站的收购方。本合同不存在第三方受益者。</span></p>
+      <p class="text-color"><span class="text-font">11.3用户理解并同意,本网站对于用户所有的通知均可以通过网页公告、电子邮件、手机短信、微信模板信息方式进行;该等通知于发送之日视为已送达收件人。</span></p>
+      <p class="text-color"><span class="text-font">11.4用户对于本网站的通知应当通过本网站对外正式公布的通信地址、电子邮件地址等联系信息进行送达。</span></p>
+      <h2 class="subtitle text-size"><span class="text-font">12. 联系信息</span></h2>
+      <p class="text-color"><span class="text-font">如果您想向我们发送通知或送达法律文件,请联系我们:</span></p>
+      <p class="text-color"><span class="text-font">地址:江苏省苏州工业园区林泉街 399 号东南大学国家 大学科技园(苏州)南工院(2#)304 室</span></p>
+      <p class="text-color"><span class="text-font">邮编:215123</span></p>
+      <p class="text-color"><span class="text-font">公司:苏州识喜识谊信息科技有限公司</span></p>
+      <p class="text-color"><span class="text-font">邮箱:services@menduner.com</span></p>
+    </view>
+  </view>
+</template>
+
+<style scoped lang="scss">
+@import '../../static/style/protocol/index.scss';
+</style>

+ 1 - 1
project.config.json

@@ -26,5 +26,5 @@
     "ignore": [],
     "include": []
   },
-  "appid": "wx247547be545cfc27"
+  "appid": "wx6decdf12f9e7a061"
 }

+ 43 - 3
static/style/index.css

@@ -191,10 +191,51 @@
   cursor: pointer;
 }
 
+.default-radius {
+  border-radius: 10rpx;
+}
+
+.list-item-bgc {
+  background-color: #fbfbfb;
+}
+
+.default-border {
+  border: 1rpx solid #E1E4E9;
+}
+
 .defaultBgc {
   background-color: #f7f8fa;
 }
 
+.commonBackground {
+  position: relative;
+}
+
+.commonBackground::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 160px;
+  background: linear-gradient(180deg, #BCFEDE, #F7F8FA);
+}
+
+.uni-forms-item__label {
+  font-family: MiSans-Normal;
+}
+
+.uni-forms-item__content {
+  font-family: MiSans-Normal;
+}
+
+.nodata-img-parent {
+  height: 90vh;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
 .f-horizon {
   display: flex;
   justify-content: space-between;
@@ -9092,9 +9133,8 @@
 
 .delete-button {
   margin: 20px auto;
-  color: #FE574A !important;
-  background-color: #fff !important;
-  border: 1px solid #FE574A;
+  color: #fff !important;
+  background-color: #FE574A !important;
 }
 
 .disabled-button {

File diff suppressed because it is too large
+ 0 - 0
static/style/index.min.css


+ 2 - 3
static/style/index.scss

@@ -495,9 +495,8 @@
 }
 .delete-button {
   margin: 20px auto;
-	color: #FE574A !important;
-  background-color: #fff !important;
-	border: 1px solid #FE574A;
+	color: #fff !important;
+  background-color: #FE574A !important;
 }
 //禁用按钮
 .disabled-button {

+ 126 - 0
static/style/protocol/index.css

@@ -0,0 +1,126 @@
+html, body, h1, h2, h3, h4, h5, h6, div, dl, dt, dd, ul, ol, li, p, blockquote, pre, hr, figure, table, caption, th, td, form, fieldset, legend, input, button, textarea, menu {
+  margin: 0;
+  padding: 0;
+}
+
+header, footer, section, article, aside, nav, hgroup, address, figure, figcaption, menu, details {
+  display: block;
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+caption, th {
+  text-align: left;
+  font-weight: normal;
+}
+
+html, body, fieldset, img, iframe, abbr {
+  border: 0;
+}
+
+i, cite, em, var, address, dfn {
+  font-style: normal;
+}
+
+[hidefocus], summary {
+  outline: 0;
+}
+
+li {
+  list-style: none;
+}
+
+h1, h2, h3, h4, h5, h6, small {
+  font-size: 100%;
+}
+
+a, button {
+  cursor: pointer;
+}
+
+h1, h2, h3, h4, h5, h6, em, strong, b {
+  font-weight: bold;
+}
+
+del, ins, u, s, a, a:hover {
+  text-decoration: none;
+}
+
+.conter, .conttle {
+  overflow: hidden;
+  padding: 30rpx;
+  padding-bottom: 200rpx;
+}
+
+.large {
+  width: 100%;
+  height: 1px;
+  background-color: var(--v-primary-base);
+}
+
+.Protocol {
+  width: 100%;
+  background-color: #fff;
+}
+
+.Protocol p {
+  color: var(--color-333);
+  font-size: 14px;
+  line-height: 30px;
+}
+
+.segment {
+  width: 100%;
+  font-size: 38rpx;
+  color: #0E100F;
+  margin-top: 40rpx;
+  margin-bottom: 30rpx;
+  font-weight: 700;
+  text-align: center;
+  font-family: MiSans-Semibold;
+}
+
+.subtitle, .crosshead {
+  color: var(--v-primary-base);
+  font-size: 14px;
+  line-height: 30px;
+}
+
+.crosshead {
+  color: var(--color-333);
+}
+
+.text-color {
+  margin-top: 0px;
+  margin-bottom: 0px;
+  padding: 0px;
+  color: #333333;
+  font-size: 14px;
+  line-height: 30px;
+  font-family: MiSans-Normal;
+  white-space: normal;
+}
+
+.text-font {
+  font-family: MiSans-Normal;
+}
+
+.text-size {
+  margin: 0px;
+  padding: 0px;
+  font-size: 14px;
+  color: #00B760;
+  line-height: 30px;
+  font-family: MiSans-Normal;
+  white-space: normal;
+}
+
+.text-p {
+  text-align: justify;
+  font-family: Calibri;
+  font-size: 14px;
+  white-space: normal;
+}

+ 1 - 0
static/style/protocol/index.min.css

@@ -0,0 +1 @@
+html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,caption,th,td,form,fieldset,legend,input,button,textarea,menu{margin:0;padding:0}header,footer,section,article,aside,nav,hgroup,address,figure,figcaption,menu,details{display:block}table{border-collapse:collapse;border-spacing:0}caption,th{text-align:left;font-weight:normal}html,body,fieldset,img,iframe,abbr{border:0}i,cite,em,var,address,dfn{font-style:normal}[hidefocus],summary{outline:0}li{list-style:none}h1,h2,h3,h4,h5,h6,small{font-size:100%}a,button{cursor:pointer}h1,h2,h3,h4,h5,h6,em,strong,b{font-weight:bold}del,ins,u,s,a,a:hover{text-decoration:none}.conter,.conttle{overflow:hidden;padding:30rpx;padding-bottom:200rpx}.large{width:100%;height:1px;background-color:var(--v-primary-base)}.Protocol{width:100%;background-color:#fff}.Protocol p{color:var(--color-333);font-size:14px;line-height:30px}.segment{width:100%;font-size:38rpx;color:#0E100F;margin-top:40rpx;margin-bottom:30rpx;font-weight:700;text-align:center;font-family:MiSans-Semibold}.subtitle,.crosshead{color:var(--v-primary-base);font-size:14px;line-height:30px}.crosshead{color:var(--color-333)}.text-color{margin-top:0px;margin-bottom:0px;padding:0px;color:#333;font-size:14px;line-height:30px;font-family:MiSans-Normal;white-space:normal}.text-font{font-family:MiSans-Normal}.text-size{margin:0px;padding:0px;font-size:14px;color:#00B760;line-height:30px;font-family:MiSans-Normal;white-space:normal}.text-p{text-align:justify;font-family:Calibri;font-size:14px;white-space:normal}

+ 121 - 0
static/style/protocol/index.scss

@@ -0,0 +1,121 @@
+html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,caption,th,td,form,fieldset,legend,input,button,textarea,menu {
+  margin: 0;
+  padding: 0;
+}
+
+header,footer,section,article,aside,nav,hgroup,address,figure,figcaption,menu,details {
+  display: block;
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+caption,th {
+  text-align: left;
+  font-weight: normal;
+}
+
+html,body,fieldset,img,iframe,abbr {
+  border: 0;
+}
+
+i,cite,em,var,address,dfn {
+  font-style: normal;
+}
+
+[hidefocus],summary {
+  outline: 0;
+}
+
+li {
+  list-style: none;
+}
+
+h1,h2,h3,h4,h5,h6,small {
+  font-size: 100%;
+}
+
+a,button {
+  cursor: pointer;
+}
+
+h1,h2,h3,h4,h5,h6,em,strong,b {
+  font-weight: bold;
+}
+
+del,ins,u,s,a,a:hover {
+  text-decoration: none;
+}
+
+.conter,.conttle {
+  overflow: hidden;
+  padding: 30rpx;
+  padding-bottom: 200rpx;
+}
+
+.large {
+  width: 100%;
+  height: 1px;
+  background-color: var(--v-primary-base);
+}
+
+.Protocol {
+  width: 100%;
+  background-color: #fff;
+}
+
+.Protocol p {
+  color: var(--color-333);
+  font-size: 14px;
+  line-height: 30px;
+}
+
+.segment {
+  width: 100%;
+  font-size: 38rpx;
+  color: #0E100F;
+  margin-top: 40rpx;
+  margin-bottom: 30rpx;
+  font-weight: 700;
+  text-align: center;
+  font-family: MiSans-Semibold;
+}
+
+.subtitle,.crosshead {
+  color: var(--v-primary-base);
+  font-size: 14px;
+  line-height: 30px;
+}
+
+.crosshead {
+  color: var(--color-333);
+}
+.text-color {
+  margin-top: 0px; 
+  margin-bottom: 0px; 
+  padding: 0px; 
+  color: rgb(51, 51, 51); 
+  font-size: 14px; 
+  line-height: 30px; 
+  font-family: MiSans-Normal; 
+  white-space: normal;
+}
+.text-font {
+  font-family: MiSans-Normal;
+}
+.text-size {
+  margin: 0px; 
+  padding: 0px; 
+  font-size: 14px; 
+  color: #00B760; 
+  line-height: 30px; 
+  font-family: MiSans-Normal; 
+  white-space: normal;
+}
+.text-p {
+  text-align: justify;
+  font-family: Calibri;
+  font-size: 14px;
+  white-space: normal
+}

+ 1 - 96
store/user.js

@@ -1,11 +1,5 @@
 import { defineStore } from 'pinia';
-import { getBaseInfo, getUserInfo, getUserAccountInfo } from '@/api/user';
-import { smsLogin, passwordLogin, weChatLogin, logout, userRegister, shareUserRegister } from '@/api/common'
-import { closeAuthModal, showAuthModal } from '@/hooks/useModal'
-import { timesTampChange } from '@/utils/date'
-import { getBaseInfoDictOfName } from '@/utils/getText'
-import { userLogout } from '@/api/common';
-import { getUserRegisterEnterpriseApply } from '@/api/enterprise'
+import { smsLogin, passwordLogin, logout } from '@/api/common'
 
 // 默认账户信息
 const defaultAccountInfo = {
@@ -46,55 +40,7 @@ export const userStore = defineStore('user', {
           title: '登录成功'
         })
       }
-      this.isPersonal = false
       this.accountInfo = data
-      uni.removeStorageSync('isPersonalToken') // 注册企业时个人登录
-      uni.removeStorageSync('entRegisterData') // 企业注册申请中的数据
-
-      // 企业注册-审核被拒绝-重新提交-效验手机号不需要获取用户信息
-      if (!isGetData) return
-
-      this.getUserInfos()
-      this.getAccountInfo()
-    },
-
-    async handleRegister (query) {
-      this.phone = query.phone
-      const { data, code } = await smsLogin(query)
-      if (code === 0) {
-        uni.showToast({
-          title: '手机号验证成功'
-        })
-      }
-      this.isPersonal = true
-      this.accountInfo = data
-      uni.setStorageSync('isPersonalToken', true); // 注册企业时个人登录
-      closeAuthModal()
-    },
-    // 获取用户信息
-    async getUserInfos() {
-      const { code, data } = await getUserInfo();
-      if (code !== 0) {
-        return;
-      }
-      this.userInfo = data;
-      return Promise.resolve(data);
-    },
-    // 获取账户信息
-    async getAccountInfo () {
-      const { code, data } = await getUserAccountInfo();
-      if (code !== 0) {
-        return;
-      }
-      this.userAccountInfo = data;
-      return Promise.resolve(data);
-    },
-    // 查看用户是否有在申请中的数据
-    async getPersonalApplyingData () {
-      const { data } = await getUserRegisterEnterpriseApply()
-      const bool = data && Object.keys(data).length > 0
-      uni.setStorageSync('entRegisterData', bool ? JSON.stringify(data) : "") // 企业注册申请中的数据
-      return Promise.resolve({ code: bool ? 1 : 0 , data: bool ? JSON.stringify(data) : "" });
     },
 
     // 设置 token
@@ -155,47 +101,6 @@ export const userStore = defineStore('user', {
         this.resetUserData()
       }
       // return !this.isLogin;
-    },
-    // 账号注册-回到首页
-    async handleUserLogout () {
-      await userLogout()
-      uni.removeStorageSync('isPersonalToken') // 注册企业时个人登录
-      uni.removeStorageSync('entRegisterData') // 企业注册申请中的数据
-      this.resetUserData()
-      return !this.isLogin
-    },
-    // 字典对应中文
-    async getFieldText (data) {
-      if (!data || !Object.keys(data).length) return {}
-      if (data.birthday && data.birthday !== 0) {
-        data.birthdayText = timesTampChange(data.birthday, 'Y-M-D') // 出生日期
-      }
-      if (data.firstWorkTime && data.firstWorkTime !== 0) {
-        data.firstWorkTimeText = timesTampChange(data.firstWorkTime, 'Y-M-D') // 首次工作时间
-      }
-      if (data.areaId && data.areaId !== 0) {
-        await getBaseInfoDictOfName(0, data, data.areaId, 'areaName') // 现居住地text
-        await getBaseInfoDictOfName(0, data, data.regId, 'regName') // 户籍地text
-      }
-      if (data.eduType && data.eduType !== 0) {
-        await getBaseInfoDictOfName(1, data, data.eduType, 'eduTypeText') // 学历
-      }
-      if (data.expType && data.expType !== 0) {
-        await getBaseInfoDictOfName(2, data, data.expType, 'expTypeText') // 工作经验
-      }
-      if (data.sex && data.sex !== 0) {
-        await getBaseInfoDictOfName(3, data, data.sex, 'sexTypeText') // 性别
-      }
-      if (data.jobType && data.jobType !== 0) {
-        await getBaseInfoDictOfName(4, data, data.jobType, 'jobTypeText') // 求职类型
-      }
-      if (data.jobStatus && data.jobStatus !== 0) {
-        await getBaseInfoDictOfName(5, data, data.jobStatus, 'jobStatusText') // 	求职状态
-      }
-      if (data.maritalStatus && data.maritalStatus !== 0) {
-        await getBaseInfoDictOfName(6, data, data.maritalStatus, 'maritalText') // 	婚姻状况
-      }
-      return data
     }
   },
   persist: {

+ 0 - 28
utils/base64src.js

@@ -1,28 +0,0 @@
-
-function base64src(data, fileName) {
-	const fsm = wx.getFileSystemManager()
-	if (!data) return
-	fsm.writeFile({
-		filePath: `wx.env.USER_DATA_PATH+'/${fileName}.png'`,
-		data: data.slice(22),
-		encoding:'base64',
-		success: res => {
-			wx.saveImageToPhotosAlbum({
-				filePath: `wx.env.USER_DATA_PATH + '/${fileName}.png'`,
-				success: function (res) {
-					wx.showToast({
-						title: '保存成功',
-					})
-				},
-				fail: function (err) {
-					console.log(err)
-				}
-			})
-			// console.log(res)
-		}, fail: err => {
-			console.log(err)
-		}
-	})
-}
-
-export { base64src };

+ 0 - 137
utils/code.js

@@ -1,137 +0,0 @@
-import { ref } from 'vue'
-import { sendSmsCode } from '@/api/common'
-import { getEnterpriseEmailCode } from '@/api/enterprise'
-import { modalStore } from '@/store/modal'
-import dayjs from 'dayjs';
-import test from './test'
-
-const modal = modalStore()
-// 发送验证码
-export const getSmsCode = (event, mobile) => {
-  const lastSendTimer = modal.lastTimer[event];
-  if (typeof lastSendTimer === 'undefined') {
-    uni.showToast({
-      icon: 'error',
-      title: '短信发送事件错误'
-    })
-    return;
-  }
-
-  const duration = dayjs().unix() - lastSendTimer;
-  const canSend = duration >= 60;
-  if (!canSend) {
-    uni.showToast({
-      icon: 'none',
-      title: '请稍后再试'
-    })
-    return;
-  }
-  // 只有 mobile 非空时才校验。因为部分场景(修改密码),不需要输入手机
-  if (mobile && !test.mobile(mobile)) {
-    uni.showToast({
-      icon: 'none',
-      title: '手机号码格式不正确'
-    })
-    return;
-  }
-
-  // 发送验证码 + 更新上次发送验证码时间
-  let scene = -1;
-  switch (event) {
-    case 'resetPassword':
-      scene = 4;
-      break;
-    case 'changePassword':
-      scene = 3;
-      break;
-    case 'changeMobile':
-      scene = 2;
-      break;
-    case 'smsLogin':
-      scene = 30; // 对接门墩短信登录
-    case 'smsRegister':
-      scene = 30; // 对接门墩短信登录
-      break;
-  }
-  sendSmsCode({ phone: mobile, scene }).then((res) => {
-    if (res.code === 0) {
-      uni.showToast({
-        title: '发送成功,请注意查收',
-        icon: 'none',
-        duration: 2000
-      })
-      modal.$patch((state) => {
-        state.lastTimer[event] = dayjs().unix();
-      })
-    }
-  })
-}
-
-// 发送邮箱验证码
-export const getEmailCode = (event, email) => {
-  const lastSendTimer = modal.lastTimer[event];
-  if (typeof lastSendTimer === 'undefined') {
-    uni.showToast({
-      icon: 'error',
-      title: '短信发送事件错误'
-    })
-    return;
-  }
-
-  const duration = dayjs().unix() - lastSendTimer;
-  const canSend = duration >= 60;
-  if (!canSend) {
-    uni.showToast({
-      icon: 'none',
-      title: '请稍后再试'
-    })
-    return;
-  }
-  if (email && !test.email(email)) {
-    uni.showToast({
-      icon: 'none',
-      title: '企业邮箱格式不正确'
-    })
-    return;
-  }
-
-  getEnterpriseEmailCode(email).then((res) => {
-    if (res.code === 0) {
-      uni.showToast({
-        title: '发送成功,请注意查收',
-        icon: 'none',
-        duration: 2000
-      })
-      modal.$patch((state) => {
-        state.lastTimer[event] = dayjs().unix();
-      })
-    }
-  })
-}
-
-// 验证码倒计时
-export const getSmsTimer = (event) => {
-  const lastSendTimer = modal.lastTimer[event]
-
-  if (typeof lastSendTimer === 'undefined') {
-    uni.showToast({
-      icon: 'none',
-      title: '短信发送事件错误'
-    })
-    return
-  }
-
-  const duration = ref(dayjs().unix() - lastSendTimer - 60)
-  const canSend = duration.value >= 0
-
-  if (canSend) {
-    return '获取验证码'
-  }
-
-  if (!canSend) {
-    setTimeout(() => {
-      duration.value++;
-    }, 1000);
-    return -duration.value.toString() + ' 秒'
-  }
-}

+ 0 - 136
utils/date.js

@@ -1,136 +0,0 @@
-// 时间戳转换为年月日时分秒
-export const timesTampChange = (timestamp, format = 'Y-M-D h:m:s') => {
-  if (!timestamp) return ''
-  const date = new Date(timestamp)
-  const Y = date.getFullYear().toString()
-  const M = (date.getMonth() + 1).toString().padStart(2, '0')
-  const D = date.getDate().toString().padStart(2, '0')
-
-  const h = date.getHours().toString().padStart(2, '0')
-  const m = date.getMinutes().toString().padStart(2, '0')
-  const s = date.getSeconds().toString().padStart(2, '0')
-
-  const formatter = { 'Y': Y, 'M': M, 'D': D, 'h': h, 'm': m, 's': s } // 替换format中的占位符
-  let formattedDate = format.replace(/Y|M|D|h|m|s/g, matched => formatter[matched]) // 使用正则表达式匹配并替换占位符
-  
-  if (!formattedDate) formattedDate = Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s
-
-  return formattedDate
-}
-
-// 根据生日时间戳计算年龄
-export const getAgeByBirthdayTimestamp = (timestamp) => {
-  const now = new Date()
-  const birthday = new Date(timestamp)
-  const age = now.getFullYear() - birthday.getFullYear()
-  return age
-}
-
-// 将YYYY-MM转换为时间戳
-export const convertYearMonthToTimestamp = (yearMonth) => {  
-  const regex = /^\d{4}-\d{2}$/
-  if (!regex.test(yearMonth)) {  
-    throw new Error("Invalid input format. Expected 'YYYY-MM'.")
-  }
-  const [year, month] = yearMonth.split('-').map(Number)
-  const date = new Date(Date.UTC(year, month - 1, 1))
-  const timestamp = date.getTime()
-  return timestamp  
-}
-
-// 法将 YYYY-MM-DD、YYYY-MM 或 YYYY 格式的日期转换为时间戳
-export const dateToTimestamp = (dateStr) => {  
-  if (!dateStr) return null
-  if (dateStr.length === 4) {
-      dateStr += '-01-01' // YYYY -> YYYY-01-01
-  } else if (dateStr.length === 7) {
-      dateStr += '-01' // YYYY-MM -> YYYY-MM-01
-  }
-  return new Date(dateStr).getTime()
-}
-
-export const getTimeDifferenceInChinese = (startTime, endTime) => {
-  // 将时间戳转换为 Date 对象(假设时间戳单位为毫秒)
-  const startDate = startTime ? new Date(startTime) : new Date();
-  const endDate = endTime ? new Date(endTime) : new Date();
-
-  // 计算年份差
-  let yearsDiff = endDate.getFullYear() - startDate.getFullYear();
-  // 计算月份差(考虑年份差后调整)
-  let monthsDiff = endDate.getMonth() - startDate.getMonth();
-  // 如果月份差为负,则从上一年借月
-  if (monthsDiff < 0) {
-    yearsDiff--;
-    monthsDiff += 12;
-  }
-  // 计算日期差(考虑月份差后调整,如果日期差为负,则从上一月借天)
-  let daysDiff = endDate.getDate() - startDate.getDate();
-  if (daysDiff < 0) {
-    monthsDiff--;
-    // 获取 startDate 所在月的最后一天
-    const lastDayOfMonth = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0).getDate();
-    daysDiff += lastDayOfMonth; // 加上最后一天以补全月份差
-  }
-
-  // 构建结果字符串
-  let result = "";
-  if (yearsDiff > 0) {
-    result += `${yearsDiff}年`;
-  }
-  if (monthsDiff > 0) {
-    if (result) {
-      // 如果已经有年份差异,则直接添加月份数(不带单位),后面正则替换会处理
-      result += monthsDiff;
-    } else {
-      // 如果没有年份差异,则正常添加月份和单位
-      result += `${monthsDiff}个月`;
-      // 特别处理只有1个月的情况
-      if (monthsDiff === 1) {
-        result = "不到1个月"; // 直接替换为“不到1个月”,避免后续复杂的正则替换
-      }
-    }
-  } else if (!result && daysDiff >= 0) {
-    // 如果没有年份和月份差异,但天数差异存在(这里其实没处理天数,只是为完整性添加)
-    // 理论上应该处理天数,但题目要求只到月份,所以这里直接返回“不到1个月”
-    result = "不到1个月";
-  }
- 
-  // 如果之前添加了月份数但没有年份(且不是直接处理的1个月情况),则需要去除末尾多余的数字并添加“个月”
-  if (result && !/\d年$/.test(result) && /\d$/.test(result)) {
-    result += "个月";
-  }
-  return result
-}
-
-// 设置面试邀请默认时间
-export const getInterviewInviteDefaultTime = () => {
-  const today = new Date()
-  today.setDate(today.getDate() + 1)
-
-  const time = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 10, 0, 0)
-  return {
-    time,
-    timeStamp: time.getTime()
-  }
-}
-
-export const getNextDate = (createTimestamp, format = 'YYYY-MM-DD', type, startTime) => {
-  if (type === 'day') createTimestamp = createTimestamp * 24 * 60 * 60 * 1000
-  if (type === 'hour') createTimestamp = createTimestamp * 60 * 60 * 1000
-
-  let date = new Date(startTime ? startTime + createTimestamp : new Date().getTime() + createTimestamp)
-  let year = date.getFullYear()
-  let month = date.getMonth() + 1
-  let day = date.getDate()
-
-  month = month < 10 ? `0${month}` : month
-  day = day < 10 ? `0${day}` : day
-
-  if (format === 'YYYY-MM') {
-    return `${year}-${month}`
-  } else if (format === 'YYYY-MM-DD') {
-    return `${year}-${month}-${day}`
-  } else {
-    return `${year}-${month}-${day}` // 默认返回 yyyy-mm-dd
-  }
-}

+ 0 - 49
utils/dealData.js

@@ -1,49 +0,0 @@
-// 获取所有的叶子节点
-export const getLeafNodes = (tree) => {
-  const leafNodes = []
-  function traverse(node) {
-    if (!node.children || node.children.length === 0) {
-      leafNodes.push(node)
-    } else {
-      for (let child of node.children) {
-        traverse(child)
-      }
-    }
-  }
-  // 开始遍历
-  if (!tree?.length) return []
-  for (let rootNode of tree) {
-    traverse(rootNode)
-  }
-  return leafNodes
-}
-
-// 获取所有二级节点
-export const getSecondNodes = (tree) => {
-  let nodes = []
-  for (const rootNode of tree) {
-    if (rootNode.children?.length) nodes = [...nodes, ...rootNode.children]
-  }
-  return nodes
-}
-
-// 找到数组中第一对重复的元素并返回元素及元素在原数组的下标
-export const findFirstDuplicateWithIndices = (arr) => {
-  const elementIndices = new Map();
-  for (let i = 0; i < arr.length; i++) {
-    const element = arr[i];
-    if (elementIndices.has(element)) {
-      // 如果元素已经在 elementIndices 中,返回元素和它的两个下标
-      return {
-        element: element,
-        firstIndex: elementIndices.get(element),
-        secondIndex: i
-      };
-    } else {
-      // 如果元素不在 elementIndices 中,存储它的下标
-      elementIndices.set(element, i);
-    }
-  }
-  // 如果没有找到重复元素,返回 null 或其他表示未找到的值
-  return null;
-}

+ 0 - 62
utils/getText.js

@@ -1,62 +0,0 @@
-import { getDict } from '@/hooks/useDictionaries'
-
-export const getText = (value, arr, itemText = 'label', itemValue = 'value') => { // 一维数组
-  // console.log('getText', value, arr)
-  if (!arr?.length || !(value && value !== 0)) return
-  const item = arr.find(formItem => formItem[itemValue] === value)
-  if (!item) return
-  return item[itemText]
-}
-
-export const getBaseInfoDictOfName = async (index = 0, baseInfo, value, addKeyName) => { // 一维数组
-  const test = [
-    { dictType: 'menduner_area_type', itemText: 'name', itemValue: 'id', saveType: 'areaList' },
-    { dictType: 'menduner_education_type', itemText: 'label', itemValue: 'value' },
-    { dictType: 'menduner_exp_type', itemText: 'label', itemValue: 'value' },
-    { dictType: 'menduner_sex', itemText: 'label', itemValue: 'value' },
-    { dictType: 'menduner_job_type', itemText: 'label', itemValue: 'value' },
-    { dictType: 'menduner_job_seek_status', itemText: 'label', itemValue: 'value' },
-    { dictType: 'menduner_marital_status', itemText: 'label', itemValue: 'value' },
-  ]
-  const e = test[index]
-
-  if (!value && value !== 0 && !e) baseInfo[addKeyName] = '暂无'
-  const params = e.saveType === 'areaList' ? {} : null
-  const { data } = await getDict(e.dictType, params, (e.saveType || 'dict'))
-  if (data.code !== 0) {
-    return
-  }
-  const item = data.data.find(formItem => Number(formItem[e.itemValue]) === Number(value))
-  baseInfo[addKeyName] = item ? item[e.itemText] : '暂无'
-}
-
-// export const getBaseInfoDictOfName1 = async (baseInfo, value, addKey, itemText = 'name', itemValue = 'id') => { // 一维数组
-//   if (!value && value !== 0) baseInfo[addKey] = '暂无'
-//   const { data } = await getDict('menduner_area_type', {}, 'areaList')
-//   const item = data.find(formItem => Number(formItem[itemValue]) === Number(value))
-//   baseInfo[addKey] = item ? item[itemText] : '暂无'
-// }
-
-export const dealCanBeInputtedValueAndLabel = (formItem, data) => {
-  if (!formItem.key || !formItem.itemTextName) return
-  //
-  formItem.value = data[formItem.key] || data[formItem.itemTextName]
-  formItem[formItem.itemTextName] = data[formItem.itemTextName]
-  if (data[formItem.key] && data[formItem.itemTextName]) {
-    formItem.search(data[formItem.itemTextName]) // 存在id的情况下->回显下拉框列表
-  }
-  // if (data[formItem.key] && data[formItem.itemTextName]) {
-  //   formItem.items = [{ [formItem.itemText]: data[formItem.itemTextName], [formItem.itemValue]: data[formItem.key] }] // 存在id的情况下->回显下拉框
-  // }
-}
-export const dealCanBeInputtedSave = (formItem, params) => {
-  if (formItem.value === formItem[formItem.itemTextName]) {
-    params[formItem.key] = null; params[formItem.itemTextName] = formItem[formItem.itemTextName]
-  }
-  else { params[formItem.key] = formItem.value; params[formItem.itemTextName] = formItem[formItem.itemTextName] }
-}
-
-// 格式化企业名称、职位名称
-export const formatName = (name) => {
-  return name ? name.replace(/&amp;/g, '&') : ''
-}

+ 0 - 196
utils/image-tools.js

@@ -1,196 +0,0 @@
-function getLocalFilePath(path) {
-    if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) {
-        return path
-    }
-    if (path.indexOf('file://') === 0) {
-        return path
-    }
-    if (path.indexOf('/storage/emulated/0/') === 0) {
-        return path
-    }
-    if (path.indexOf('/') === 0) {
-        var localFilePath = plus.io.convertAbsoluteFileSystem(path)
-        if (localFilePath !== path) {
-            return localFilePath
-        } else {
-            path = path.substr(1)
-        }
-    }
-    return '_www/' + path
-}
-
-function dataUrlToBase64(str) {
-    var array = str.split(',')
-    return array[array.length - 1]
-}
-
-var index = 0
-function getNewFileId() {
-    return Date.now() + String(index++)
-}
-
-function biggerThan(v1, v2) {
-    var v1Array = v1.split('.')
-    var v2Array = v2.split('.')
-    var update = false
-    for (var index = 0; index < v2Array.length; index++) {
-        var diff = v1Array[index] - v2Array[index]
-        if (diff !== 0) {
-            update = diff > 0
-            break
-        }
-    }
-    return update
-}
-
-export function pathToBase64(path) {
-    return new Promise(function(resolve, reject) {
-        if (typeof window === 'object' && 'document' in window) {
-            if (typeof FileReader === 'function') {
-                var xhr = new XMLHttpRequest()
-                xhr.open('GET', path, true)
-                xhr.responseType = 'blob'
-                xhr.onload = function() {
-                    if (this.status === 200) {
-                        let fileReader = new FileReader()
-                        fileReader.onload = function(e) {
-                            resolve(e.target.result)
-                        }
-                        fileReader.onerror = reject
-                        fileReader.readAsDataURL(this.response)
-                    }
-                }
-                xhr.onerror = reject
-                xhr.send()
-                return
-            }
-            var canvas = document.createElement('canvas')
-            var c2x = canvas.getContext('2d')
-            var img = new Image
-            img.onload = function() {
-                canvas.width = img.width
-                canvas.height = img.height
-                c2x.drawImage(img, 0, 0)
-                resolve(canvas.toDataURL())
-                canvas.height = canvas.width = 0
-            }
-            img.onerror = reject
-            img.src = path
-            return
-        }
-        if (typeof plus === 'object') {
-            plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) {
-                entry.file(function(file) {
-                    var fileReader = new plus.io.FileReader()
-                    fileReader.onload = function(data) {
-                        resolve(data.target.result)
-                    }
-                    fileReader.onerror = function(error) {
-                        reject(error)
-                    }
-                    fileReader.readAsDataURL(file)
-                }, function(error) {
-                    reject(error)
-                })
-            }, function(error) {
-                reject(error)
-            })
-            return
-        }
-        if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
-            wx.getFileSystemManager().readFile({
-                filePath: path,
-                encoding: 'base64',
-                success: function(res) {
-                    resolve('data:image/png;base64,' + res.data)
-                },
-                fail: function(error) {
-                    reject(error)
-                }
-            })
-            return
-        }
-        reject(new Error('not support'))
-    })
-}
-
-export function base64ToPath(base64) {
-    return new Promise(function(resolve, reject) {
-        if (typeof window === 'object' && 'document' in window) {
-            base64 = base64.split(',')
-            var type = base64[0].match(/:(.*?);/)[1]
-            var str = atob(base64[1])
-            var n = str.length
-            var array = new Uint8Array(n)
-            while (n--) {
-                array[n] = str.charCodeAt(n)
-            }
-            return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type })))
-        }
-        var extName = base64.split(',')[0].match(/data\:\S+\/(\S+);/)
-        if (extName) {
-            extName = extName[1]
-        } else {
-            reject(new Error('base64 error'))
-        }
-        var fileName = getNewFileId() + '.' + extName
-        if (typeof plus === 'object') {
-            var basePath = '_doc'
-            var dirPath = 'uniapp_temp'
-            var filePath = basePath + '/' + dirPath + '/' + fileName
-            if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime.innerVersion)) {
-                plus.io.resolveLocalFileSystemURL(basePath, function(entry) {
-                    entry.getDirectory(dirPath, {
-                        create: true,
-                        exclusive: false,
-                    }, function(entry) {
-                        entry.getFile(fileName, {
-                            create: true,
-                            exclusive: false,
-                        }, function(entry) {
-                            entry.createWriter(function(writer) {
-                                writer.onwrite = function() {
-                                    resolve(filePath)
-                                }
-                                writer.onerror = reject
-                                writer.seek(0)
-                                writer.writeAsBinary(dataUrlToBase64(base64))
-                            }, reject)
-                        }, reject)
-                    }, reject)
-                }, reject)
-                return
-            }
-            var bitmap = new plus.nativeObj.Bitmap(fileName)
-            bitmap.loadBase64Data(base64, function() {
-                bitmap.save(filePath, {}, function() {
-                    bitmap.clear()
-                    resolve(filePath)
-                }, function(error) {
-                    bitmap.clear()
-                    reject(error)
-                })
-            }, function(error) {
-                bitmap.clear()
-                reject(error)
-            })
-            return
-        }
-        if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
-            var filePath = wx.env.USER_DATA_PATH + '/' + fileName
-            wx.getFileSystemManager().writeFile({
-                filePath: filePath,
-                data: dataUrlToBase64(base64),
-                encoding: 'base64',
-                success: function() {
-                    resolve(filePath)
-                },
-                fail: function(error) {
-                    reject(error)
-                }
-            })
-            return
-        }
-        reject(new Error('not support'))
-    })
-}

+ 0 - 285
utils/test.js

@@ -1,285 +0,0 @@
-/**
- * 验证电子邮箱格式
- */
-function email(value) {
-  return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value);
-}
-
-/**
- * 验证手机格式
- */
-function mobile(value) {
-  return /^1[23456789]\d{9}$/.test(value);
-}
-
-/**
- * 验证URL格式
- */
-function url(value) {
-  return /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/.test(
-    value,
-  );
-}
-
-/**
- * 验证日期格式
- */
-function date(value) {
-  if (!value) return false;
-  // 判断是否数值或者字符串数值(意味着为时间戳),转为数值,否则new Date无法识别字符串时间戳
-  if (number(value)) value = +value;
-  return !/Invalid|NaN/.test(new Date(value).toString());
-}
-
-/**
- * 验证ISO类型的日期格式
- */
-function dateISO(value) {
-  return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value);
-}
-
-/**
- * 验证十进制数字
- */
-function number(value) {
-  return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value);
-}
-
-/**
- * 验证字符串
- */
-function string(value) {
-  return typeof value === 'string';
-}
-
-/**
- * 验证整数
- */
-function digits(value) {
-  return /^\d+$/.test(value);
-}
-
-/**
- * 验证身份证号码
- */
-function idCard(value) {
-  return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value);
-}
-
-/**
- * 是否车牌号
- */
-function carNo(value) {
-  // 新能源车牌
-  const xreg =
-    /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
-  // 旧车牌
-  const creg =
-    /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
-  if (value.length === 7) {
-    return creg.test(value);
-  }
-  if (value.length === 8) {
-    return xreg.test(value);
-  }
-  return false;
-}
-
-/**
- * 金额,只允许2位小数
- */
-function amount(value) {
-  // 金额,只允许保留两位小数
-  return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value);
-}
-
-/**
- * 中文
- */
-function chinese(value) {
-  const reg = /^[\u4e00-\u9fa5]+$/gi;
-  return reg.test(value);
-}
-
-/**
- * 只能输入字母
- */
-function letter(value) {
-  return /^[a-zA-Z]*$/.test(value);
-}
-
-/**
- * 只能是字母或者数字
- */
-function enOrNum(value) {
-  // 英文或者数字
-  const reg = /^[0-9a-zA-Z]*$/g;
-  return reg.test(value);
-}
-
-/**
- * 验证是否包含某个值
- */
-function contains(value, param) {
-  return value.indexOf(param) >= 0;
-}
-
-/**
- * 验证一个值范围[min, max]
- */
-function range(value, param) {
-  return value >= param[0] && value <= param[1];
-}
-
-/**
- * 验证一个长度范围[min, max]
- */
-function rangeLength(value, param) {
-  return value.length >= param[0] && value.length <= param[1];
-}
-
-/**
- * 是否固定电话
- */
-function landline(value) {
-  const reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/;
-  return reg.test(value);
-}
-
-/**
- * 判断是否为空
- */
-function empty(value) {
-  switch (typeof value) {
-    case 'undefined':
-      return true;
-    case 'string':
-      if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true;
-      break;
-    case 'boolean':
-      if (!value) return true;
-      break;
-    case 'number':
-      if (value === 0 || isNaN(value)) return true;
-      break;
-    case 'object':
-      if (value === null || value.length === 0) return true;
-      for (const i in value) {
-        return false;
-      }
-      return true;
-  }
-  return false;
-}
-
-/**
- * 是否json字符串
- */
-function jsonString(value) {
-  if (typeof value === 'string') {
-    try {
-      const obj = JSON.parse(value);
-      if (typeof obj === 'object' && obj) {
-        return true;
-      }
-      return false;
-    } catch (e) {
-      return false;
-    }
-  }
-  return false;
-}
-
-/**
- * 是否数组
- */
-function array(value) {
-  if (typeof Array.isArray === 'function') {
-    return Array.isArray(value);
-  }
-  return Object.prototype.toString.call(value) === '[object Array]';
-}
-
-/**
- * 是否对象
- */
-function object(value) {
-  return Object.prototype.toString.call(value) === '[object Object]';
-}
-
-/**
- * 是否短信验证码
- */
-function code(value, len = 6) {
-  return new RegExp(`^\\d{${len}}$`).test(value);
-}
-
-/**
- * 是否函数方法
- * @param {Object} value
- */
-function func(value) {
-  return typeof value === 'function';
-}
-
-/**
- * 是否promise对象
- * @param {Object} value
- */
-function promise(value) {
-  return object(value) && func(value.then) && func(value.catch);
-}
-
-/** 是否图片格式
- * @param {Object} value
- */
-function image(value) {
-  const newValue = value.split('?')[0];
-  const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i;
-  return IMAGE_REGEXP.test(newValue);
-}
-
-/**
- * 是否视频格式
- * @param {Object} value
- */
-function video(value) {
-  const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i;
-  return VIDEO_REGEXP.test(value);
-}
-
-/**
- * 是否为正则对象
- * @param {Object}
- * @return {Boolean}
- */
-function regExp(o) {
-  return o && Object.prototype.toString.call(o) === '[object RegExp]';
-}
-
-export default {
-  email,
-  mobile,
-  url,
-  date,
-  dateISO,
-  number,
-  digits,
-  idCard,
-  carNo,
-  amount,
-  chinese,
-  letter,
-  enOrNum,
-  contains,
-  range,
-  rangeLength,
-  empty,
-  isEmpty: empty,
-  isNumber: number,
-  jsonString,
-  landline,
-  object,
-  array,
-  code,
-};

+ 0 - 249
utils/validate.js

@@ -1,249 +0,0 @@
-/**
- * Validate v1.0.0 通用验证
- * @description 项目中用到的表单验证规则
- */
-import test from './test.js';
-
-// 效验身份证号码
-export const isValidIdCard18 = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入您的身份证号码',
-    },
-    {
-      validateFunction: function (rule, value, data, callback) {
-        // 身份证号码正则表达式(18位)
-        var regex = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([012]\d)|3[01])\d{3}(\d|X|x)$/
-
-        // 校验长度,类型
-        if (!regex.test(value)) {
-          return false
-        }
-
-        // 提取出生年月日,并验证是否为有效日期
-        var year = value.substring(6, 10)
-        var month = value.substring(10, 12)
-        var day = value.substring(12, 14)
-        var date = new Date(year, month - 1, day)
-
-        if (date.getFullYear() !== parseInt(year, 10) ||
-          date.getMonth() !== parseInt(month, 10) - 1 ||
-          date.getDate() !== parseInt(day, 10)) {
-          return false
-        }
-
-        // 校验码部分
-        var idCardBase = value.substring(0, 17)
-        var weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
-        var checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
-        var sum = 0
-        for (var i = 0; i < idCardBase.length; i++) {
-          sum += idCardBase[i] * weights[i]
-        }
-        var index = sum % 11
-        var last = checkCodes[index]
-
-        // return last.toUpperCase() === value.substring(17).toUpperCase()
-        if (last.toUpperCase() !== value.substring(17).toUpperCase()) {
-          callback('请输入正确的身份证号码');
-        }
-        return true;
-      },
-    },
-  ],
-};
-
-// 手机号
-export const mobile = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入手机号',
-    },
-    {
-      validateFunction: function (rule, value, data, callback) {
-        if (!test.mobile(value)) {
-          callback('手机号码格式不正确');
-        }
-        return true;
-      },
-    },
-  ],
-};
-
-// 密码
-export const password = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入密码',
-    },
-    {
-      validateFunction: function (rule, value, data, callback) {
-        if (!/^.{8,}$/.test(value)) {
-          callback('密码长度不能少于8位');
-        }
-        return true;
-      },
-    },
-  ],
-};
-
-// 短信验证码
-export const code = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入验证码',
-    },
-  ],
-};
-
-// 校验邮箱格式
-export const emailFormat = {
-  rules: [
-    {
-      validateFunction: function (rule, value, data, callback) {
-        const emailReg = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;  
-        if (!emailReg.test(value)) {
-          callback('邮箱格式不正确');
-        }
-        return true;
-      },
-    },
-  ],
-};
-// 邮箱必填且校验邮箱格式
-export const emailRequired = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入邮箱',
-    },
-    {
-      validateFunction: function (rule, value, data, callback) {
-        const emailReg = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;  
-        if (!emailReg.test(value)) {
-          callback('邮箱格式不正确');
-        }
-        return true;
-      },
-    },
-  ],
-};
-
-// 真实姓名
-export const realName = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入姓名',
-    },
-    {
-      validateFunction: function (rule, value, data, callback) {
-        if (!test.chinese(value)) {
-          callback('请输入汉字');
-        }
-        return true;
-      },
-    },
-  ],
-};
-
-export const taxName = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入发票抬头名称',
-    },
-    {
-      validateFunction: function (rule, value, data, callback) {
-        if (!test.chinese(value)) {
-          callback('请输入汉字');
-        }
-        return true;
-      },
-    },
-  ],
-};
-
-// 税号
-export const taxNo = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入税号',
-    },
-  ],
-};
-
-// 开户行
-export const bankName = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入开户行',
-    },
-    {
-      validateFunction: function (rule, value, data, callback) {
-        if (!test.chinese(value)) {
-          callback('请输入汉字');
-        }
-        return true;
-      },
-    },
-  ],
-};
-// 银行卡号
-export const bankCode = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入银行卡号',
-    },
-    {
-      validateFunction: function (rule, value, data, callback) {
-        if (!test.number(value)) {
-          callback('请输入正确账号');
-        }
-        return true;
-      },
-    },
-  ],
-};
-
-// 支付宝账号
-export const alipayAccount = {
-  rules: [
-    {
-      required: true,
-      errorMessage: '请输入支付宝账号',
-    },
-    {
-      validateFunction: function (rule, value, data, callback) {
-        let isEmail = test.email(value);
-        let isMobile = test.mobile(value);
-
-        if (!isEmail && !isMobile) {
-          callback('请输入正确账号');
-        }
-        return true;
-      },
-    },
-  ],
-};
-
-export default {
-  mobile,
-  alipayAccount,
-  bankCode,
-  bankName,
-  realName,
-  password,
-  code,
-  emailFormat,
-  emailRequired,
-  taxNo,
-  taxName,
-};

Some files were not shown because too many files changed in this diff