From bd503eb26818a8f0f0b3a62326500b98a1e8446f Mon Sep 17 00:00:00 2001 From: geekgeekrun Date: Sun, 1 Jun 2025 23:20:18 +0800 Subject: [PATCH] add work experience filter ui --- .../flow/OPEN_SETTING_WINDOW/ipc/index.ts | 16 +++ .../GeekAutoStartChatWithBoss/index.vue | 126 +++++++++++++++++- 2 files changed, 138 insertions(+), 4 deletions(-) diff --git a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts index 14691be..04d6ede 100644 --- a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts +++ b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts @@ -107,6 +107,8 @@ export default function initIpc() { if (hasOwn(payload, 'autoReminder')) { bossConfig.autoReminder = payload.autoReminder } + + // city if (hasOwn(payload, 'expectCityList')) { bossConfig.expectCityList = payload.expectCityList } @@ -117,6 +119,8 @@ export default function initIpc() { bossConfig.strategyScopeOptionWhenMarkJobCityNotMatch = payload.strategyScopeOptionWhenMarkJobCityNotMatch } + + // salary if (hasOwn(payload, 'expectSalaryCalculateWay')) { bossConfig.expectSalaryCalculateWay = payload.expectSalaryCalculateWay } @@ -134,6 +138,18 @@ export default function initIpc() { bossConfig.expectSalaryHigh = payload.expectSalaryHigh } + // work exp + if (hasOwn(payload, 'expectWorkExpList')) { + bossConfig.expectWorkExpList = payload.expectWorkExpList + } + if (hasOwn(payload, 'expectWorkExpNotMatchStrategy')) { + bossConfig.expectWorkExpNotMatchStrategy = payload.expectWorkExpNotMatchStrategy + } + if (hasOwn(payload, 'strategyScopeOptionWhenMarkJobWorkExpNotMatch')) { + bossConfig.strategyScopeOptionWhenMarkJobWorkExpNotMatch = + payload.strategyScopeOptionWhenMarkJobWorkExpNotMatch + } + promiseArr.push(writeConfigFile('boss.json', bossConfig)) if (hasOwn(payload, 'expectCompanies')) { diff --git a/packages/ui/src/renderer/src/page/MainLayout/GeekAutoStartChatWithBoss/index.vue b/packages/ui/src/renderer/src/page/MainLayout/GeekAutoStartChatWithBoss/index.vue index 278c31c..e4f87ab 100644 --- a/packages/ui/src/renderer/src/page/MainLayout/GeekAutoStartChatWithBoss/index.vue +++ b/packages/ui/src/renderer/src/page/MainLayout/GeekAutoStartChatWithBoss/index.vue @@ -106,7 +106,6 @@ >
-
薪资(暂不支持日结职位,日结职位将直接跳过)
+
+ 薪资(仅支持按月计算薪资的职位;非按月计算薪资职位(例如兼职职位、实习职位)将直接跳过) +
+
+
工作经验
+
+ +
认为匹配的工作经验
+
+ + + +
+
+
+
+ +
当前工作经验不匹配时:
+ + {{ op.name }} + +
+ +
标记不合适针对的职位范围:
+ + {{ op.name }} + +
+
+
+
@@ -687,6 +783,7 @@ import { import { debounce } from 'lodash-es' import mittBus from '../../../utils/mitt' import CityChooser from './components/CityChooser.vue' +import conditions from '@geekgeekrun/geek-auto-start-chat-with-boss/internal-config/job-filter-conditions-20241002.json' const router = useRouter() @@ -700,6 +797,7 @@ const formContent = ref({ jobNotMatchStrategy: MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS, jobNotActiveStrategy: MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS, markAsNotActiveSelectedTimeRange: 7, + // city expectCityList: [], expectCityNotMatchStrategy: MarkAsNotSuitOp.NO_OP, strategyScopeOptionWhenMarkJobCityNotMatch: @@ -710,7 +808,12 @@ const formContent = ref({ strategyScopeOptionWhenMarkSalaryNotMatch: StrategyScopeOptionWhenMarkJobNotMatch.ONLY_COMPANY_MATCHED_JOB, expectSalaryLow: null, - expectSalaryHigh: null + expectSalaryHigh: null, + // work exp + expectWorkExpList: [], + expectWorkExpNotMatchStrategy: MarkAsNotSuitOp.NO_OP, + strategyScopeOptionWhenMarkJobWorkExpNotMatch: + StrategyScopeOptionWhenMarkJobNotMatch.ONLY_COMPANY_MATCHED_JOB }) const currentAnyCombineRecommendJobFilterCombinationCount = computed(() => { @@ -773,6 +876,7 @@ electron.ipcRenderer.invoke('fetch-config-file-content').then((res) => { ? res.config['boss.json'].jobNotActiveStrategy : MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS + // city formContent.value.expectCityList = res.config['boss.json']?.expectCityList ?? [] formContent.value.expectCityNotMatchStrategy = strategyOptionWhenCurrentJobNotMatch .map((it) => it.value) @@ -782,7 +886,9 @@ electron.ipcRenderer.invoke('fetch-config-file-content').then((res) => { formContent.value.strategyScopeOptionWhenMarkJobCityNotMatch = res.config['boss.json']?.strategyScopeOptionWhenMarkJobCityNotMatch ?? StrategyScopeOptionWhenMarkJobNotMatch.ONLY_COMPANY_MATCHED_JOB - formContent.value.strategyScopeOptionWhenMarkJobCityNotMatch = + + // salary + formContent.value.expectSalaryCalculateWay = res.config['boss.json'].expectSalaryCalculateWay ?? SalaryCalculateWay.MONTH_SALARY formContent.value.expectSalaryNotMatchStrategy = res.config['boss.json'].expectSalaryNotMatchStrategy ?? MarkAsNotSuitOp.NO_OP @@ -792,6 +898,18 @@ electron.ipcRenderer.invoke('fetch-config-file-content').then((res) => { formContent.value.expectSalaryLow = parseFloat(res.config['boss.json'].expectSalaryLow) || null formContent.value.expectSalaryHigh = parseFloat(res.config['boss.json'].expectSalaryHigh) || null ensureSalaryRangeCorrect() + + // work exp + formContent.value.expectWorkExpList = + Array.isArray(res.config['boss.json'].expectWorkExpList) && + res.config['boss.json'].expectWorkExpList.length + ? res.config['boss.json'].expectWorkExpList + : [] + formContent.value.expectWorkExpNotMatchStrategy = + res.config['boss.json'].expectWorkExpNotMatchStrategy ?? MarkAsNotSuitOp.NO_OP + formContent.value.strategyScopeOptionWhenMarkJobWorkExpNotMatch = + res.config['boss.json'].strategyScopeOptionWhenMarkJobWorkExpNotMatch ?? + StrategyScopeOptionWhenMarkJobNotMatch.ONLY_COMPANY_MATCHED_JOB }) const formRules = {