mirror of
https://github.com/geekgeekrun/geekgeekrun.git
synced 2026-09-08 08:57:24 +08:00
enhance the display of mark reason
This commit is contained in:
@@ -16,7 +16,7 @@ import { calculateTotalCombinations, combineFiltersWithConstraintsGenerator } fr
|
|||||||
import { default as jobFilterConditions } from './internal-config/job-filter-conditions-20241002.json'
|
import { default as jobFilterConditions } from './internal-config/job-filter-conditions-20241002.json'
|
||||||
import { default as rawIndustryFilterExemption } from './internal-config/job-filter-industry-filter-exemption-20241002.json'
|
import { default as rawIndustryFilterExemption } from './internal-config/job-filter-industry-filter-exemption-20241002.json'
|
||||||
import { ChatStartupFrom } from '@geekgeekrun/sqlite-plugin/dist/entity/ChatStartupLog'
|
import { ChatStartupFrom } from '@geekgeekrun/sqlite-plugin/dist/entity/ChatStartupLog'
|
||||||
import { MarkAsNotSuitReason } from '@geekgeekrun/sqlite-plugin/dist/entity/MarkAsNotSuitLog'
|
import { MarkAsNotSuitReason } from '@geekgeekrun/sqlite-plugin/dist/enums'
|
||||||
|
|
||||||
const jobFilterConditionsMapByCode = {}
|
const jobFilterConditionsMapByCode = {}
|
||||||
Object.values(jobFilterConditions).forEach(arr => {
|
Object.values(jobFilterConditions).forEach(arr => {
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
|
import { MarkAsNotSuitReason } from "../enums";
|
||||||
import { requireTypeorm } from "../utils/module-loader";
|
import { requireTypeorm } from "../utils/module-loader";
|
||||||
import { ChatStartupFrom } from "./ChatStartupLog";
|
import { ChatStartupFrom } from "./ChatStartupLog";
|
||||||
const { Entity, Column, PrimaryGeneratedColumn } = requireTypeorm()
|
const { Entity, Column, PrimaryGeneratedColumn } = requireTypeorm()
|
||||||
|
|
||||||
export enum MarkAsNotSuitReason {
|
|
||||||
UNKNOWN = 0,
|
|
||||||
BOSS_INACTIVE = 1,
|
|
||||||
OTHER = 2
|
|
||||||
}
|
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class MarkAsNotSuitLog {
|
export class MarkAsNotSuitLog {
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
import { requireTypeorm } from "../utils/module-loader";
|
import { requireTypeorm } from "../utils/module-loader";
|
||||||
|
import { ChatStartupFrom } from "./ChatStartupLog";
|
||||||
|
import { MarkAsNotSuitReason } from "../enums";
|
||||||
const { ViewEntity, ViewColumn } = requireTypeorm();
|
const { ViewEntity, ViewColumn } = requireTypeorm();
|
||||||
@ViewEntity({
|
@ViewEntity({
|
||||||
expression: `SELECT
|
expression: `SELECT
|
||||||
job_info.*,
|
job_info.*,
|
||||||
user_info.name as userName,
|
user_info.name as userName,
|
||||||
mark_as_not_suit_log.date,
|
mark_as_not_suit_log.date,
|
||||||
|
mark_as_not_suit_log.markFrom,
|
||||||
|
mark_as_not_suit_log.markReason,
|
||||||
|
mark_as_not_suit_log.extInfo,
|
||||||
boss_info.name AS bossName,
|
boss_info.name AS bossName,
|
||||||
boss_info.title AS bossTitle,
|
|
||||||
company_info.name AS companyName
|
company_info.name AS companyName
|
||||||
FROM
|
FROM
|
||||||
mark_as_not_suit_log
|
mark_as_not_suit_log
|
||||||
@@ -60,7 +64,13 @@ export class VMarkAsNotSuitLog {
|
|||||||
bossName: string;
|
bossName: string;
|
||||||
|
|
||||||
@ViewColumn()
|
@ViewColumn()
|
||||||
bossTitle: string;
|
markFrom: ChatStartupFrom;
|
||||||
|
|
||||||
|
@ViewColumn()
|
||||||
|
markReason: MarkAsNotSuitReason;
|
||||||
|
|
||||||
|
@ViewColumn()
|
||||||
|
extInfo: string;
|
||||||
|
|
||||||
@ViewColumn()
|
@ViewColumn()
|
||||||
companyName: string;
|
companyName: string;
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
export enum MarkAsNotSuitReason {
|
||||||
|
UNKNOWN = 0,
|
||||||
|
BOSS_INACTIVE = 1,
|
||||||
|
OTHER = 2
|
||||||
|
}
|
||||||
@@ -19,6 +19,15 @@
|
|||||||
label="标记时间"
|
label="标记时间"
|
||||||
:formatter="(_row, _col, val) => dayjs(val).format('YYYY-MM-DD HH:mm:ss')"
|
:formatter="(_row, _col, val) => dayjs(val).format('YYYY-MM-DD HH:mm:ss')"
|
||||||
/>
|
/>
|
||||||
|
<ElTableColumn prop="bossName" label="BOSS" width="64" />
|
||||||
|
<ElTableColumn prop="markReason" label="标记原因" width="250">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-if="row.markReason === MarkAsNotSuitReason.BOSS_INACTIVE">
|
||||||
|
<strong>{{ markReasonTopicMap[row.markReason] }}</strong>
|
||||||
|
<pre class="m-0 of-auto">{{ formatMarkReason(row) }}</pre>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
<ElTableColumn prop="experienceName" label="工作经验" />
|
<ElTableColumn prop="experienceName" label="工作经验" />
|
||||||
<ElTableColumn
|
<ElTableColumn
|
||||||
label="薪资"
|
label="薪资"
|
||||||
@@ -28,8 +37,6 @@
|
|||||||
(row.salaryMonth ? `* ${row.salaryMonth}薪` : '')
|
(row.salaryMonth ? `* ${row.salaryMonth}薪` : '')
|
||||||
"
|
"
|
||||||
/>
|
/>
|
||||||
<ElTableColumn prop="bossName" label="BOSS" />
|
|
||||||
<ElTableColumn prop="bossTitle" label="标记原因" />
|
|
||||||
<ElTableColumn label="职位信息" fixed="right" :width="120">
|
<ElTableColumn label="职位信息" fixed="right" :width="120">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<ElButton
|
<ElButton
|
||||||
@@ -81,12 +88,13 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, onBeforeUnmount } from 'vue'
|
import { ref, onMounted, onBeforeUnmount, h } from 'vue'
|
||||||
import { ElTable, ElTableColumn, ElButton, ElPagination, ElDrawer } from 'element-plus'
|
import { ElTable, ElTableColumn, ElButton, ElPagination, ElDrawer } from 'element-plus'
|
||||||
import { type VMarkAsNotSuitLog } from '@geekgeekrun/sqlite-plugin/src/entity/VMarkAsNotSuitLog'
|
import { type VMarkAsNotSuitLog } from '@geekgeekrun/sqlite-plugin/src/entity/VMarkAsNotSuitLog'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { PageReq, PagedRes } from '../../../../common/types/pagination'
|
import { PageReq, PagedRes } from '../../../../common/types/pagination'
|
||||||
import JobInfoSnapshot from '../../features/JobInfoSnapshot/index.vue'
|
import JobInfoSnapshot from '../../features/JobInfoSnapshot/index.vue'
|
||||||
|
import { MarkAsNotSuitReason } from '@geekgeekrun/sqlite-plugin/src/enums'
|
||||||
|
|
||||||
const tableData = ref<VMarkAsNotSuitLog[]>([])
|
const tableData = ref<VMarkAsNotSuitLog[]>([])
|
||||||
const pageSizeList = ref<number[]>([100, 200, 300, 400])
|
const pageSizeList = ref<number[]>([100, 200, 300, 400])
|
||||||
@@ -150,6 +158,33 @@ function handleViewJobSnapshotButtonClick(record: VMarkAsNotSuitLog) {
|
|||||||
selectedJobInfoForViewSnapshot.value = record
|
selectedJobInfoForViewSnapshot.value = record
|
||||||
drawVisibleModelValue.value = true
|
drawVisibleModelValue.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const markReasonTopicMap = {
|
||||||
|
[MarkAsNotSuitReason.BOSS_INACTIVE]: 'Boss不活跃'
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatMarkReason(row: VMarkAsNotSuitLog) {
|
||||||
|
switch (row.markReason) {
|
||||||
|
case MarkAsNotSuitReason.BOSS_INACTIVE: {
|
||||||
|
const extInfo = (() => {
|
||||||
|
try {
|
||||||
|
return JSON.parse(row.extInfo)
|
||||||
|
} catch {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
})()
|
||||||
|
return [
|
||||||
|
extInfo?.bossActiveTimeDesc && `Boss活跃情况:${extInfo.bossActiveTimeDesc}`,
|
||||||
|
extInfo?.chosenReasonInUi?.text && `Boss选项内容:${extInfo.chosenReasonInUi.text}`
|
||||||
|
]
|
||||||
|
.filter(Boolean)
|
||||||
|
.join('\n')
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|||||||
Reference in New Issue
Block a user