enhance the display of mark reason

This commit is contained in:
geekgeekrun
2024-10-20 12:55:56 +08:00
parent 6b28a9d0ed
commit 072df7e92a
5 changed files with 57 additions and 12 deletions

View File

@@ -16,7 +16,7 @@ import { calculateTotalCombinations, combineFiltersWithConstraintsGenerator } fr
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 { 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 = {}
Object.values(jobFilterConditions).forEach(arr => {

View File

@@ -1,13 +1,8 @@
import { MarkAsNotSuitReason } from "../enums";
import { requireTypeorm } from "../utils/module-loader";
import { ChatStartupFrom } from "./ChatStartupLog";
const { Entity, Column, PrimaryGeneratedColumn } = requireTypeorm()
export enum MarkAsNotSuitReason {
UNKNOWN = 0,
BOSS_INACTIVE = 1,
OTHER = 2
}
@Entity()
export class MarkAsNotSuitLog {
@PrimaryGeneratedColumn()

View File

@@ -1,12 +1,16 @@
import { requireTypeorm } from "../utils/module-loader";
import { ChatStartupFrom } from "./ChatStartupLog";
import { MarkAsNotSuitReason } from "../enums";
const { ViewEntity, ViewColumn } = requireTypeorm();
@ViewEntity({
expression: `SELECT
job_info.*,
user_info.name as userName,
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.title AS bossTitle,
company_info.name AS companyName
FROM
mark_as_not_suit_log
@@ -60,7 +64,13 @@ export class VMarkAsNotSuitLog {
bossName: string;
@ViewColumn()
bossTitle: string;
markFrom: ChatStartupFrom;
@ViewColumn()
markReason: MarkAsNotSuitReason;
@ViewColumn()
extInfo: string;
@ViewColumn()
companyName: string;

View File

@@ -0,0 +1,5 @@
export enum MarkAsNotSuitReason {
UNKNOWN = 0,
BOSS_INACTIVE = 1,
OTHER = 2
}

View File

@@ -19,6 +19,15 @@
label="标记时间"
: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
label="薪资"
@@ -28,8 +37,6 @@
(row.salaryMonth ? `* ${row.salaryMonth}薪` : '')
"
/>
<ElTableColumn prop="bossName" label="BOSS" />
<ElTableColumn prop="bossTitle" label="标记原因" />
<ElTableColumn label="职位信息" fixed="right" :width="120">
<template #default="{ row }">
<ElButton
@@ -81,12 +88,13 @@
</template>
<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 { type VMarkAsNotSuitLog } from '@geekgeekrun/sqlite-plugin/src/entity/VMarkAsNotSuitLog'
import dayjs from 'dayjs'
import { PageReq, PagedRes } from '../../../../common/types/pagination'
import JobInfoSnapshot from '../../features/JobInfoSnapshot/index.vue'
import { MarkAsNotSuitReason } from '@geekgeekrun/sqlite-plugin/src/enums'
const tableData = ref<VMarkAsNotSuitLog[]>([])
const pageSizeList = ref<number[]>([100, 200, 300, 400])
@@ -150,6 +158,33 @@ function handleViewJobSnapshotButtonClick(record: VMarkAsNotSuitLog) {
selectedJobInfoForViewSnapshot.value = record
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>
<style scoped lang="scss">