mirror of
https://github.com/geekgeekrun/geekgeekrun.git
synced 2026-09-08 17:09:07 +08:00
add work experience filter ui
This commit is contained in:
@@ -107,6 +107,8 @@ export default function initIpc() {
|
|||||||
if (hasOwn(payload, 'autoReminder')) {
|
if (hasOwn(payload, 'autoReminder')) {
|
||||||
bossConfig.autoReminder = payload.autoReminder
|
bossConfig.autoReminder = payload.autoReminder
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// city
|
||||||
if (hasOwn(payload, 'expectCityList')) {
|
if (hasOwn(payload, 'expectCityList')) {
|
||||||
bossConfig.expectCityList = payload.expectCityList
|
bossConfig.expectCityList = payload.expectCityList
|
||||||
}
|
}
|
||||||
@@ -117,6 +119,8 @@ export default function initIpc() {
|
|||||||
bossConfig.strategyScopeOptionWhenMarkJobCityNotMatch =
|
bossConfig.strategyScopeOptionWhenMarkJobCityNotMatch =
|
||||||
payload.strategyScopeOptionWhenMarkJobCityNotMatch
|
payload.strategyScopeOptionWhenMarkJobCityNotMatch
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// salary
|
||||||
if (hasOwn(payload, 'expectSalaryCalculateWay')) {
|
if (hasOwn(payload, 'expectSalaryCalculateWay')) {
|
||||||
bossConfig.expectSalaryCalculateWay = payload.expectSalaryCalculateWay
|
bossConfig.expectSalaryCalculateWay = payload.expectSalaryCalculateWay
|
||||||
}
|
}
|
||||||
@@ -134,6 +138,18 @@ export default function initIpc() {
|
|||||||
bossConfig.expectSalaryHigh = payload.expectSalaryHigh
|
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))
|
promiseArr.push(writeConfigFile('boss.json', bossConfig))
|
||||||
|
|
||||||
if (hasOwn(payload, 'expectCompanies')) {
|
if (hasOwn(payload, 'expectCompanies')) {
|
||||||
|
|||||||
@@ -106,7 +106,6 @@
|
|||||||
></div>
|
></div>
|
||||||
<div
|
<div
|
||||||
v-if="formContent.expectCityList?.length"
|
v-if="formContent.expectCityList?.length"
|
||||||
prop="expectCityList"
|
|
||||||
:style="{
|
:style="{
|
||||||
flex: 1,
|
flex: 1,
|
||||||
minWidth: '400px'
|
minWidth: '400px'
|
||||||
@@ -167,7 +166,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="h-1px bg-#f0f0f0" mt16px mb16px />
|
<div class="h-1px bg-#f0f0f0" mt16px mb16px />
|
||||||
<div mt16px>
|
<div mt16px>
|
||||||
<div font-size-14px>薪资(暂不支持日结职位,日结职位将直接跳过)</div>
|
<div font-size-14px>
|
||||||
|
薪资(仅支持按月计算薪资的职位;非按月计算薪资职位(例如兼职职位、实习职位)将直接跳过)
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
:style="{
|
:style="{
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
@@ -401,6 +402,101 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="h-1px bg-#f0f0f0" mt16px mb16px />
|
||||||
|
<div mt16px>
|
||||||
|
<div font-size-14px>工作经验</div>
|
||||||
|
<div
|
||||||
|
:style="{
|
||||||
|
display: 'flex',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
gap: '10px'
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<el-form-item prop="expectWorkExpList" mb0>
|
||||||
|
<div font-size-12px>认为匹配的工作经验</div>
|
||||||
|
<div
|
||||||
|
font-size-12px
|
||||||
|
:style="{
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
alignItems: 'center',
|
||||||
|
width: '100%'
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
v-model="formContent.expectWorkExpList"
|
||||||
|
multiple
|
||||||
|
placeholder="不限制,都匹配"
|
||||||
|
@change="(value) => gtagRenderer('expect_work_exp_list_changed', { value })"
|
||||||
|
>
|
||||||
|
<template v-for="op in conditions.experienceList" :key="op.code">
|
||||||
|
<el-option v-if="!!op.code" :label="op.name" :value="op.name">{{
|
||||||
|
op.name
|
||||||
|
}}</el-option>
|
||||||
|
</template>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<div
|
||||||
|
v-if="formContent.expectWorkExpList?.length"
|
||||||
|
:style="{
|
||||||
|
backgroundColor: '#f0f0f0',
|
||||||
|
width: '1px'
|
||||||
|
}"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
v-if="formContent.expectWorkExpList?.length"
|
||||||
|
:style="{
|
||||||
|
flex: 1,
|
||||||
|
minWidth: '400px'
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<el-form-item
|
||||||
|
mb10px
|
||||||
|
:style="{
|
||||||
|
width: '100%'
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<div font-size-12px>当前工作经验不匹配时:</div>
|
||||||
|
<el-select
|
||||||
|
v-model="formContent.expectWorkExpNotMatchStrategy"
|
||||||
|
@change="
|
||||||
|
(value) => gtagRenderer('expect_we_not_match_strategy_changed', { value })
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="op in strategyOptionWhenCurrentJobNotMatch"
|
||||||
|
:key="op.value"
|
||||||
|
:label="op.name"
|
||||||
|
:value="op.value"
|
||||||
|
>{{ op.name }}</el-option
|
||||||
|
>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
mb0
|
||||||
|
:style="{
|
||||||
|
width: '100%'
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<div font-size-12px>标记不合适针对的职位范围:</div>
|
||||||
|
<el-select
|
||||||
|
v-model="formContent.strategyScopeOptionWhenMarkJobWorkExpNotMatch"
|
||||||
|
@change="
|
||||||
|
(value) => gtagRenderer('strategy_scope_option_wmjwenm_changed', { value })
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="op in strategyScopeOptionWhenMarkJobNotMatch"
|
||||||
|
:key="op.value"
|
||||||
|
:label="op.name"
|
||||||
|
:value="op.value"
|
||||||
|
>{{ op.name }}</el-option
|
||||||
|
>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card class="config-section">
|
<el-card class="config-section">
|
||||||
<el-form-item mb0>
|
<el-form-item mb0>
|
||||||
@@ -687,6 +783,7 @@ import {
|
|||||||
import { debounce } from 'lodash-es'
|
import { debounce } from 'lodash-es'
|
||||||
import mittBus from '../../../utils/mitt'
|
import mittBus from '../../../utils/mitt'
|
||||||
import CityChooser from './components/CityChooser.vue'
|
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()
|
const router = useRouter()
|
||||||
|
|
||||||
@@ -700,6 +797,7 @@ const formContent = ref({
|
|||||||
jobNotMatchStrategy: MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS,
|
jobNotMatchStrategy: MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS,
|
||||||
jobNotActiveStrategy: MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS,
|
jobNotActiveStrategy: MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS,
|
||||||
markAsNotActiveSelectedTimeRange: 7,
|
markAsNotActiveSelectedTimeRange: 7,
|
||||||
|
// city
|
||||||
expectCityList: [],
|
expectCityList: [],
|
||||||
expectCityNotMatchStrategy: MarkAsNotSuitOp.NO_OP,
|
expectCityNotMatchStrategy: MarkAsNotSuitOp.NO_OP,
|
||||||
strategyScopeOptionWhenMarkJobCityNotMatch:
|
strategyScopeOptionWhenMarkJobCityNotMatch:
|
||||||
@@ -710,7 +808,12 @@ const formContent = ref({
|
|||||||
strategyScopeOptionWhenMarkSalaryNotMatch:
|
strategyScopeOptionWhenMarkSalaryNotMatch:
|
||||||
StrategyScopeOptionWhenMarkJobNotMatch.ONLY_COMPANY_MATCHED_JOB,
|
StrategyScopeOptionWhenMarkJobNotMatch.ONLY_COMPANY_MATCHED_JOB,
|
||||||
expectSalaryLow: null,
|
expectSalaryLow: null,
|
||||||
expectSalaryHigh: null
|
expectSalaryHigh: null,
|
||||||
|
// work exp
|
||||||
|
expectWorkExpList: [],
|
||||||
|
expectWorkExpNotMatchStrategy: MarkAsNotSuitOp.NO_OP,
|
||||||
|
strategyScopeOptionWhenMarkJobWorkExpNotMatch:
|
||||||
|
StrategyScopeOptionWhenMarkJobNotMatch.ONLY_COMPANY_MATCHED_JOB
|
||||||
})
|
})
|
||||||
|
|
||||||
const currentAnyCombineRecommendJobFilterCombinationCount = computed(() => {
|
const currentAnyCombineRecommendJobFilterCombinationCount = computed(() => {
|
||||||
@@ -773,6 +876,7 @@ electron.ipcRenderer.invoke('fetch-config-file-content').then((res) => {
|
|||||||
? res.config['boss.json'].jobNotActiveStrategy
|
? res.config['boss.json'].jobNotActiveStrategy
|
||||||
: MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS
|
: MarkAsNotSuitOp.MARK_AS_NOT_SUIT_ON_BOSS
|
||||||
|
|
||||||
|
// city
|
||||||
formContent.value.expectCityList = res.config['boss.json']?.expectCityList ?? []
|
formContent.value.expectCityList = res.config['boss.json']?.expectCityList ?? []
|
||||||
formContent.value.expectCityNotMatchStrategy = strategyOptionWhenCurrentJobNotMatch
|
formContent.value.expectCityNotMatchStrategy = strategyOptionWhenCurrentJobNotMatch
|
||||||
.map((it) => it.value)
|
.map((it) => it.value)
|
||||||
@@ -782,7 +886,9 @@ electron.ipcRenderer.invoke('fetch-config-file-content').then((res) => {
|
|||||||
formContent.value.strategyScopeOptionWhenMarkJobCityNotMatch =
|
formContent.value.strategyScopeOptionWhenMarkJobCityNotMatch =
|
||||||
res.config['boss.json']?.strategyScopeOptionWhenMarkJobCityNotMatch ??
|
res.config['boss.json']?.strategyScopeOptionWhenMarkJobCityNotMatch ??
|
||||||
StrategyScopeOptionWhenMarkJobNotMatch.ONLY_COMPANY_MATCHED_JOB
|
StrategyScopeOptionWhenMarkJobNotMatch.ONLY_COMPANY_MATCHED_JOB
|
||||||
formContent.value.strategyScopeOptionWhenMarkJobCityNotMatch =
|
|
||||||
|
// salary
|
||||||
|
formContent.value.expectSalaryCalculateWay =
|
||||||
res.config['boss.json'].expectSalaryCalculateWay ?? SalaryCalculateWay.MONTH_SALARY
|
res.config['boss.json'].expectSalaryCalculateWay ?? SalaryCalculateWay.MONTH_SALARY
|
||||||
formContent.value.expectSalaryNotMatchStrategy =
|
formContent.value.expectSalaryNotMatchStrategy =
|
||||||
res.config['boss.json'].expectSalaryNotMatchStrategy ?? MarkAsNotSuitOp.NO_OP
|
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.expectSalaryLow = parseFloat(res.config['boss.json'].expectSalaryLow) || null
|
||||||
formContent.value.expectSalaryHigh = parseFloat(res.config['boss.json'].expectSalaryHigh) || null
|
formContent.value.expectSalaryHigh = parseFloat(res.config['boss.json'].expectSalaryHigh) || null
|
||||||
ensureSalaryRangeCorrect()
|
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 = {
|
const formRules = {
|
||||||
|
|||||||
Reference in New Issue
Block a user