flat:合并

This commit is contained in:
史典卓
2025-09-24 12:54:02 +08:00
parent 1bb796b5ef
commit 19ef39061e
3 changed files with 374 additions and 47 deletions

View File

@@ -0,0 +1,303 @@
import React, { Fragment } from 'react';
import { Collapse, InputNumber, Select } from 'antd';
import style from './modelStyle.less';
export default function ModelManagement() {
const text = `
A dog is a type of domesticated animal.
Known for its loyalty and faithfulness,
it can be found as a welcome guest in many households across the world.
`;
return (
<Fragment>
<Collapse defaultActiveKey={['1']}>
<Collapse.Panel header="人岗精准匹配模型" key="1">
<div className={style.cards}>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
controls={false}
style={{ width: 150 }}
addonAfter="岁"
min={0}
max={100}
maxLength={3}
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
controls={false}
style={{ width: 150 }}
addonAfter="年"
min={0}
max={100}
maxLength={3}
/>
</div>
</div>
</div>
</Collapse.Panel>
<Collapse.Panel header="人岗匹配度计算模型" key="2">
<div className={style.cards}>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
stringMode
min={0}
max={1}
style={{ width: 150 }}
controls={false}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
stringMode
min={0}
max={1}
controls={false}
style={{ width: 150 }}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
stringMode
min={0}
style={{ width: 150 }}
max={1}
controls={false}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
stringMode
min={0}
max={1}
controls={false}
style={{ width: 150 }}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
</div>
</Collapse.Panel>
<Collapse.Panel header="基于求职者行为推荐模型" key="3">
<div className={style.cards}>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
stringMode
min={0}
max={1}
controls={false}
style={{ width: 150 }}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
stringMode
min={0}
style={{ width: 150 }}
max={1}
controls={false}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
stringMode
min={0}
style={{ width: 150 }}
max={1}
controls={false}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
</div>
</Collapse.Panel>
<Collapse.Panel header="竞争力计算模型" key="4">
<div className={style.cards}>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
stringMode
style={{ width: 150 }}
min={0}
max={1}
controls={false}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
style={{ width: 150 }}
stringMode
min={0}
max={1}
controls={false}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
stringMode
style={{ width: 150 }}
min={0}
max={1}
controls={false}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
style={{ width: 150 }}
stringMode
min={0}
max={1}
controls={false}
precision={1}
step="0.1"
placeholder="例如0.7"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<Select
defaultValue="lucy"
style={{ width: 150 }}
options={[
{ value: 'jack', label: '余弦相似度' },
{ value: 'lucy', label: '欧式距离' },
{ value: 'Yiminghe', label: 'embedding' },
]}
/>
</div>
</div>
</div>
</Collapse.Panel>
<Collapse.Panel header="位置匹配模型" key="5">
<div className={style.cards}>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<Select
defaultValue="lucy"
style={{ width: 150 }}
options={[
{ value: 'jack', label: 'wgs84' },
{ value: 'lucy', label: 'gcj02' },
]}
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
style={{ width: 150 }}
stringMode
min={1}
max={12}
controls={false}
precision={0}
step="1"
placeholder="1-12"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
style={{ width: 150 }}
stringMode
min={0}
max={10}
controls={false}
precision={0}
step="0"
placeholder="10公里附近"
addonAfter="公里"
/>
</div>
</div>
<div className={style.card}>
<div className={style.label}></div>
<div className={style.input}>
<InputNumber
style={{ width: 150 }}
stringMode
min={0}
max={10}
controls={false}
precision={0}
step="0"
placeholder="10公里附近"
addonAfter="公里"
/>
</div>
</div>
</div>
</Collapse.Panel>
</Collapse>
</Fragment>
);
}

View File

@@ -0,0 +1,19 @@
.cards {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-row-gap: 30px;
.card {
display: flex;
align-items: center;
margin-right: 80px;
.label {
margin-right: 10px;
white-space: nowrap;
}
.input {
}
}
}

View File

@@ -1,47 +1,52 @@
import { request } from '@umijs/max'; import { request } from '@umijs/max';
// 行业
export async function getIndustryTrend(params?: API.Analysis.IndustryParams) { // 行业
return request<API.Analysis.IndustryResult>('/api/cms/statics/industry', { export async function getIndustryTrend(params?: API.Analysis.IndustryParams) {
method: 'GET', return request<API.Analysis.IndustryResult>('/api/cms/statics/industry', {
params method: 'GET',
}); params,
} });
// 区域热力图 }
export async function getIndustryAreaTrend(params: any) {
try { // 区域热力图
const response = await request('/api/cms/statics/industryArea', { export async function getIndustryAreaTrend(params: any) {
method: 'GET', try {
params, const response = await request('/api/cms/statics/industryArea', {
headers: { method: 'GET',
'Content-Type': 'application/json' params,
} headers: {
}); 'Content-Type': 'application/json',
},
console.log('接口原始响应:', response); // 调试日志 });
return response; // 兼容不同后端响应格式
} catch (error) { console.log('接口原始响应:', response); // 调试日志
console.error('接口请求异常:', error); return response; // 兼容不同后端响应格式
throw error; } catch (error) {
} console.error('接口请求异常:', error);
} throw error;
// 薪资 }
export async function getSalaryTrend(params?: API.Analysis.IndustryParams) { }
return request<API.Analysis.IndustryResult>('/api/cms/statics/salary', {
method: 'GET', // 薪资
params export async function getSalaryTrend(params?: API.Analysis.IndustryParams) {
}); return request<API.Analysis.IndustryResult>('/api/cms/statics/salary', {
} method: 'GET',
// 工作年限 params,
export async function getWorkYearTrend(params?: API.Analysis.IndustryParams) { });
return request<API.Analysis.IndustryResult>('/api/cms/statics/workYear', { }
method: 'GET',
params // 工作年限
}); export async function getWorkYearTrend(params?: API.Analysis.IndustryParams) {
} return request<API.Analysis.IndustryResult>('/api/cms/statics/workYear', {
// 学历趋势 method: 'GET',
export async function getEducationTrend(params?: API.Analysis.IndustryParams) { params,
return request<API.Analysis.IndustryResult>('/api/cms/statics/education', { });
method: 'GET', }
params
}); // 学历趋势
} export async function getEducationTrend(params?: API.Analysis.IndustryParams) {
return request<API.Analysis.IndustryResult>('/api/cms/statics/education', {
method: 'GET',
params,
});
}