From 76484a81944b7e7c783d8703d1ba78c30b026424 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E8=BE=89?= <13935151924@163.com> Date: Thu, 13 Nov 2025 11:49:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=80=E8=83=BD=E7=AD=89=E7=BA=A7=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/complete-info/complete-info.vue | 281 +++++++++++++++++++------- 1 file changed, 207 insertions(+), 74 deletions(-) diff --git a/pages/complete-info/complete-info.vue b/pages/complete-info/complete-info.vue index 2b8e0d0..6e540de 100644 --- a/pages/complete-info/complete-info.vue +++ b/pages/complete-info/complete-info.vue @@ -160,27 +160,7 @@ {{ item }} - - 技能等级 - - - - 技能名称 - - - {{ item }} - - + 期望薪资 + + + 技能信息 + + + 添加技能 + + + + + + + 技能 {{ index + 1 }} + + 删除 + + + + + + 技能名称 + + + + + 技能等级 + + + + + + + 暂无技能信息,点击上方按钮添加 + + + @@ -250,8 +279,8 @@ const state = reactive({ workExperience: '', salayText: '', jobsText: [], - skillLevelText: '', - skillsText: [], + skills: [], // 新的技能数据结构 + currentEditingSkillIndex: -1 // 当前正在编辑的技能索引 }); const fromValue = reactive({ sex: null, @@ -264,8 +293,6 @@ const fromValue = reactive({ idCard: '', name: '', age: '', - skillLevel: '', - skills: '', ytjPassword: '', }); @@ -320,16 +347,62 @@ function initEducationText() { checkDictData(); } +// 技能管理函数 +const addSkill = () => { + if (state.skills.length >= 3) { + $api.msg('最多只能添加3个技能'); + return; + } + state.skills.push({ name: '', level: '' }); +}; + +const removeSkill = (index) => { + state.skills.splice(index, 1); +}; + +const changeSkillName = (index) => { + state.currentEditingSkillIndex = index; + // 跳转到技能查询页面 + uni.navigateTo({ + url: `/pages/complete-info/skill-search?selected=${encodeURIComponent(JSON.stringify([]))}` + }); +}; + +const changeSkillLevel = (index) => { + state.currentEditingSkillIndex = index; + const skillLevels = [ + { label: '初级', value: '1' }, + { label: '中级', value: '2' }, + { label: '高级', value: '3' } + ]; + + openSelectPopup({ + title: '技能等级', + maskClick: true, + data: [skillLevels], + success: (_, [value]) => { + if (state.currentEditingSkillIndex >= 0) { + state.skills[state.currentEditingSkillIndex].level = value.value; + state.currentEditingSkillIndex = -1; + } + }, + }); +}; + +const getSkillLevelText = (level) => { + const levelMap = { + '1': '初级', + '2': '中级', + '3': '高级' + }; + return levelMap[level] || ''; +}; + // 技能选择回调函数 -const handleSkillSelected = (skills) => { - if (Array.isArray(skills) && skills.length > 0) { - // 更新技能显示和值,技能字段值传name - state.skillsText = skills; - fromValue.skills = skills.join(','); - } else { - // 如果返回空数组,清空选择 - state.skillsText = []; - fromValue.skills = ''; +const handleSkillSelected = (skillName) => { + if (state.currentEditingSkillIndex >= 0 && skillName) { + state.skills[state.currentEditingSkillIndex].name = skillName; + state.currentEditingSkillIndex = -1; } }; @@ -570,33 +643,6 @@ function changeJobs() { }); } -// 技能等级选择 -function changeSkillLevel() { - const skillLevels = [ - { label: '初级', value: '1' }, - { label: '中级', value: '2' }, - { label: '高级', value: '3' } - ]; - - openSelectPopup({ - title: '技能等级', - maskClick: true, - data: [skillLevels], - success: (_, [value]) => { - fromValue.skillLevel = value.value; - state.skillLevelText = value.label; - }, - }); -} - -// 技能名称选择 - 跳转到模糊查询页面 -function changeSkills() { - // 将当前已选中的技能名称传递给查询页面 - const selectedSkills = state.skillsText || []; - uni.navigateTo({ - url: `/pages/complete-info/skill-search?selected=${encodeURIComponent(JSON.stringify(selectedSkills))}` - }); -} function nextStep() { // 统一必填与格式校验 @@ -726,19 +772,16 @@ function complete() { } if (isValid) { - // 构建 experiencesList 数组 + // 构建 experiencesList 数组 - 使用新的技能数据结构 const experiencesList = []; - if (fromValue.skills && fromValue.skillLevel) { - const skillsArray = fromValue.skills.split(','); - skillsArray.forEach(skill => { - if (skill.trim()) { - experiencesList.push({ - name: skill.trim(), - levels: fromValue.skillLevel - }); - } - }); - } + state.skills.forEach(skill => { + if (skill.name && skill.level) { + experiencesList.push({ + name: skill.name, + levels: skill.level + }); + } + }); // 构建符合要求的请求数据(experiencesList 与 appUser 同级) const requestData = { @@ -1009,5 +1052,95 @@ function complete() { line-height: 90rpx position: relative z-index: 100 - + /* 技能列表样式 */ + .content-skills + margin-bottom: 52rpx + .skills-header + display: flex + justify-content: space-between + align-items: center + margin-bottom: 32rpx + .input-titile + font-weight: 400 + font-size: 28rpx + color: #6A6A6A + .add-skill-btn + padding: 16rpx 24rpx + background: #256BFA + color: #FFFFFF + border-radius: 8rpx + font-size: 24rpx + font-weight: 500 + &.disabled + background: #CCCCCC + color: #999999 + .skills-list + .skill-item + background: #F8F9FA + border-radius: 12rpx + padding: 24rpx + margin-bottom: 24rpx + .skill-header + display: flex + justify-content: space-between + align-items: center + margin-bottom: 20rpx + .skill-number + font-size: 28rpx + font-weight: 500 + color: #333333 + .skill-actions + .action-btn + padding: 8rpx 16rpx + border-radius: 6rpx + font-size: 24rpx + &.delete-btn + background: #FF4757 + color: #FFFFFF + .skill-fields + .skill-field + margin-bottom: 20rpx + &:last-child + margin-bottom: 0 + .field-label + font-size: 24rpx + color: #6A6A6A + margin-bottom: 8rpx + .field-input + width: 100% + height: 72rpx + background: #FFFFFF + border: 2rpx solid #E8EAEE + border-radius: 8rpx + padding: 0 20rpx + font-size: 28rpx + color: #333333 + position: relative + &.triangle::before + position: absolute + right: 20rpx + top: calc(50% - 2rpx) + content: '' + width: 4rpx + height: 14rpx + border-radius: 2rpx + background: #697279 + transform: translate(0, -50%) rotate(-45deg) + &.triangle::after + position: absolute + right: 20rpx + top: 50% + content: '' + width: 4rpx + height: 14rpx + border-radius: 2rpx + background: #697279 + transform: rotate(45deg) + .empty-skills + text-align: center + padding: 60rpx 0 + .empty-text + font-size: 28rpx + color: #999999 +