From 7cffe57e4d4cdaea8dcd07997498e634fe58dfff Mon Sep 17 00:00:00 2001 From: fuenmao <980740792@qq.com> Date: Thu, 17 Sep 2026 14:33:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BF=85=E5=A1=AB=E9=A1=B9?= =?UTF-8?q?=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components.d.ts | 47 ------ src/views/biz/onboarding/task/index.vue | 214 ++++++++++++++++++++++-- src/views/onboarding/fill/index.vue | 90 ++++++++-- 3 files changed, 270 insertions(+), 81 deletions(-) diff --git a/components.d.ts b/components.d.ts index 1cff276..8256656 100644 --- a/components.d.ts +++ b/components.d.ts @@ -19,70 +19,23 @@ declare module 'vue' { DatePicker: typeof import('./src/components/Form/DatePicker/index.vue')['default'] ECharts: typeof import('./src/components/ECharts/index.vue')['default'] ElAlert: typeof import('element-plus/es')['ElAlert'] - ElAside: typeof import('element-plus/es')['ElAside'] - ElAvatar: typeof import('element-plus/es')['ElAvatar'] - ElBadge: typeof import('element-plus/es')['ElBadge'] - ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] - ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] ElButton: typeof import('element-plus/es')['ElButton'] - ElCard: typeof import('element-plus/es')['ElCard'] - ElCascader: typeof import('element-plus/es')['ElCascader'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCol: typeof import('element-plus/es')['ElCol'] - ElCollapse: typeof import('element-plus/es')['ElCollapse'] - ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] - ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] - ElContainer: typeof import('element-plus/es')['ElContainer'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] - ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] - ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] - ElDialog: typeof import('element-plus/es')['ElDialog'] - ElDivider: typeof import('element-plus/es')['ElDivider'] - ElDrawer: typeof import('element-plus/es')['ElDrawer'] - ElDropdown: typeof import('element-plus/es')['ElDropdown'] - ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] - ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] ElEmpty: typeof import('element-plus/es')['ElEmpty'] - ElFooter: typeof import('element-plus/es')['ElFooter'] ElForm: typeof import('element-plus/es')['ElForm'] ElFormItem: typeof import('element-plus/es')['ElFormItem'] - ElHeader: typeof import('element-plus/es')['ElHeader'] ElIcon: typeof import('element-plus/es')['ElIcon'] ElImage: typeof import('element-plus/es')['ElImage'] - ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] ElInput: typeof import('element-plus/es')['ElInput'] - ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] - ElLink: typeof import('element-plus/es')['ElLink'] - ElMain: typeof import('element-plus/es')['ElMain'] - ElMenu: typeof import('element-plus/es')['ElMenu'] - ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElOption: typeof import('element-plus/es')['ElOption'] - ElPagination: typeof import('element-plus/es')['ElPagination'] - ElPopover: typeof import('element-plus/es')['ElPopover'] - ElRadio: typeof import('element-plus/es')['ElRadio'] - ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] - ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] - ElResult: typeof import('element-plus/es')['ElResult'] ElRow: typeof import('element-plus/es')['ElRow'] - ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] - ElSlider: typeof import('element-plus/es')['ElSlider'] - ElSpace: typeof import('element-plus/es')['ElSpace'] ElStep: typeof import('element-plus/es')['ElStep'] ElSteps: typeof import('element-plus/es')['ElSteps'] - ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] - ElSwitch: typeof import('element-plus/es')['ElSwitch'] - ElTable: typeof import('element-plus/es')['ElTable'] - ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] - ElTabPane: typeof import('element-plus/es')['ElTabPane'] - ElTabs: typeof import('element-plus/es')['ElTabs'] ElTag: typeof import('element-plus/es')['ElTag'] - ElTimeline: typeof import('element-plus/es')['ElTimeline'] - ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] - ElTooltip: typeof import('element-plus/es')['ElTooltip'] - ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] ElUpload: typeof import('element-plus/es')['ElUpload'] - ElWatermark: typeof import('element-plus/es')['ElWatermark'] ESign: typeof import('./src/components/ESign/index.vue')['default'] FormContainer: typeof import('./src/components/Form/FormContainer/index.vue')['default'] Grid: typeof import('./src/components/Grid/index.vue')['default'] diff --git a/src/views/biz/onboarding/task/index.vue b/src/views/biz/onboarding/task/index.vue index 820ae53..d83fefa 100644 --- a/src/views/biz/onboarding/task/index.vue +++ b/src/views/biz/onboarding/task/index.vue @@ -541,38 +541,75 @@ - - + + @@ -4159,4 +4196,145 @@ onMounted(loadCompanies); justify-content: flex-start; } } + +/* 任务创建分享弹窗样式优化 */ +.task-share-result { + padding: 12px 0 4px 0; +} + +.task-share-result :deep(.el-result__icon svg) { + width: 56px; + height: 56px; +} + +.task-share-result :deep(.el-result__title) { + margin-top: 10px; + font-size: 18px; + font-weight: 600; + color: #1e293b; +} + +.task-share-result :deep(.el-result__subtitle) { + margin-top: 6px; + font-size: 13px; + color: #64748b; + line-height: 1.5; +} + +.task-share-result :deep(.el-result__extra) { + margin-top: 20px; + width: 100%; +} + +.share-card { + width: 100%; + max-width: 500px; + margin: 0 auto; + background: #f8fafc; + border: 1px solid #e2e8f0; + border-radius: 12px; + padding: 18px 22px; + box-sizing: border-box; + text-align: left; +} + +.share-info-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + padding-bottom: 12px; + margin-bottom: 16px; + border-bottom: 1px dashed #cbd5e1; +} + +.share-meta-item { + display: flex; + flex-direction: column; + gap: 4px; +} + +.share-meta-label { + font-size: 12px; + color: #94a3b8; + font-weight: 500; +} + +.share-meta-val { + font-size: 14px; + color: #1e293b; + font-weight: 600; +} + +.share-link-section { + margin-bottom: 14px; +} + +.share-section-title { + font-size: 12px; + font-weight: 500; + color: #64748b; + margin-bottom: 8px; +} + +.share-link-input :deep(.el-input__inner) { + font-size: 13px; + color: #334155; + background-color: #ffffff; +} + +.share-link-input :deep(.el-input-group__append) { + background-color: #eff6ff; + color: #2563eb; + font-weight: 500; + border-color: #dbeafe; + cursor: pointer; + transition: all 0.2s; + padding: 0 16px; +} + +.share-link-input :deep(.el-input-group__append:hover) { + background-color: #dbeafe; +} + +.share-expiry-row { + display: flex; + align-items: center; + font-size: 12px; + color: #64748b; + margin-bottom: 16px; + padding: 8px 12px; + background: #ffffff; + border: 1px solid #f1f5f9; + border-radius: 6px; +} + +.expiry-icon { + margin-right: 6px; + color: #94a3b8; + font-size: 14px; +} + +.expiry-time { + color: #e11d48; + font-weight: 600; + margin-left: 2px; +} + +.share-action-section { + width: 100%; +} + +.invite-copy-btn { + width: 100%; + height: 40px; + font-size: 13px; + font-weight: 500; + border-radius: 8px; +} + +.dialog-footer-center { + display: flex; + justify-content: center; + width: 100%; +} diff --git a/src/views/onboarding/fill/index.vue b/src/views/onboarding/fill/index.vue index 35bc7e8..fc4f60f 100644 --- a/src/views/onboarding/fill/index.vue +++ b/src/views/onboarding/fill/index.vue @@ -308,19 +308,19 @@ -
+
- 教育学习经历 + *教育学习经历
- + 添加经历
-
暂未添加学习经历,可点击右上角添加
+
暂未添加学习经历,可点击右上角添加(至少填写一条最高学历)
@@ -354,19 +354,19 @@
-
+
- 主要工作经历 + *主要工作经历
- + 添加经历
-
暂未添加工作经历(应届生可留空)
+
暂未添加工作经历,可点击右上角添加(应届生可填兼职、在校或实习经历)
工作经历 #{{ idx + 1 }} @@ -381,12 +381,12 @@ - + - + @@ -396,7 +396,7 @@ - + @@ -404,19 +404,19 @@
-
+
- 家庭成员 + *家庭成员
- + 添加成员
-
暂未添加家庭成员信息
+
暂未添加家庭成员信息,可点击右上角添加(至少填写一位直系亲属)
@@ -442,7 +442,7 @@ - + @@ -1296,6 +1296,12 @@ function validateExtraVariables() { } function validateRegistrationLists() { + if (!educationHistory.value.length) { + ElMessage.warning("请至少添加一条教育学习经历(最高学历)"); + locateValidationTarget("education-history-section"); + return false; + } + for (let index = 0; index < educationHistory.value.length; index++) { const row = educationHistory.value[index]; const requiredFields = [ @@ -1312,6 +1318,12 @@ function validateRegistrationLists() { } } + if (!workHistory.value.length) { + ElMessage.warning("请至少添加一条工作经历(应届生可填写兼职、在校或实习经历)"); + locateValidationTarget("work-history-section"); + return false; + } + for (let index = 0; index < workHistory.value.length; index++) { const row = workHistory.value[index]; const requiredFields = [ @@ -1328,6 +1340,12 @@ function validateRegistrationLists() { } } + if (!familyMembers.value.length) { + ElMessage.warning("请至少添加一位家庭成员信息(如父母或配偶)"); + locateValidationTarget("family-members-section"); + return false; + } + for (let index = 0; index < familyMembers.value.length; index++) { const row = familyMembers.value[index]; const requiredFields = [ @@ -2385,6 +2403,46 @@ onBeforeUnmount(() => { margin-bottom: 14px; } +.card-section-header .card-section-title { + margin-bottom: 0; +} + +.required-asterisk { + color: #e11d48; + margin-right: 4px; + font-weight: 700; + font-size: 15px; +} + +.section-action-btn { + background-color: #ecfdf5 !important; + border: 1px solid #a7f3d0 !important; + color: #059669 !important; + font-weight: 500; + border-radius: 6px; + height: 28px; + line-height: 26px; + padding: 0 10px; + font-size: 12px; + transition: all 0.2s ease-in-out; +} + +.section-action-btn :deep(.el-icon) { + color: inherit !important; +} + +.section-action-btn:hover { + background-color: #059669 !important; + border-color: #059669 !important; + color: #ffffff !important; +} + +.section-action-btn:active { + background-color: #047857 !important; + border-color: #047857 !important; + color: #ffffff !important; +} + .dynamic-row-box { background: #fbfdfb; border: 1px solid #e5e7eb;