From 89f97b0a4b9142e7b92badcbb6833b7a3b55b336 Mon Sep 17 00:00:00 2001 From: bin <719488417@qq.com> Date: Thu, 6 Nov 2025 16:07:12 +0800 Subject: [PATCH] =?UTF-8?q?feat=20:=20=E6=96=B0=E5=A2=9E=E5=B2=97=E4=BD=8D?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=85=A5=E5=BA=93=E7=9B=91=E6=B5=8B=E3=80=81?= =?UTF-8?q?=E5=B2=97=E4=BD=8D=E4=BF=A1=E6=81=AF=E6=9D=A5=E6=BA=90=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E3=80=81=E5=B2=97=E4=BD=8D=E4=BF=A1=E6=81=AF=E6=8C=87?= =?UTF-8?q?=E6=A0=87=E7=AE=A1=E7=90=86=20=E4=B8=89=E4=B8=AA=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JobMonitor/edit.tsx | 126 ++++++++ .../JobMonitor/index.tsx | 190 ++++++++++++ .../MetricAdmin/edit.tsx | 122 ++++++++ .../MetricAdmin/index.tsx | 267 +++++++++++++++++ .../SourceManager/edit.tsx | 129 +++++++++ .../SourceManager/index.tsx | 272 ++++++++++++++++++ .../recruitmentDataCollection/jobMonitor.ts | 24 ++ .../recruitmentDataCollection/metricAdmin.ts | 35 +++ .../sourceManager.ts | 35 +++ .../RecruitmentDataCollection/jobMonitor.d.ts | 35 +++ .../metricAdmin.d.ts | 46 +++ .../sourceManager.d.ts | 50 ++++ 12 files changed, 1331 insertions(+) create mode 100644 src/pages/RecruitmentDataCollection/JobMonitor/edit.tsx create mode 100644 src/pages/RecruitmentDataCollection/JobMonitor/index.tsx create mode 100644 src/pages/RecruitmentDataCollection/MetricAdmin/edit.tsx create mode 100644 src/pages/RecruitmentDataCollection/MetricAdmin/index.tsx create mode 100644 src/pages/RecruitmentDataCollection/SourceManager/edit.tsx create mode 100644 src/pages/RecruitmentDataCollection/SourceManager/index.tsx create mode 100644 src/services/recruitmentDataCollection/jobMonitor.ts create mode 100644 src/services/recruitmentDataCollection/metricAdmin.ts create mode 100644 src/services/recruitmentDataCollection/sourceManager.ts create mode 100644 src/types/RecruitmentDataCollection/jobMonitor.d.ts create mode 100644 src/types/RecruitmentDataCollection/metricAdmin.d.ts create mode 100644 src/types/RecruitmentDataCollection/sourceManager.d.ts diff --git a/src/pages/RecruitmentDataCollection/JobMonitor/edit.tsx b/src/pages/RecruitmentDataCollection/JobMonitor/edit.tsx new file mode 100644 index 0000000..a12a026 --- /dev/null +++ b/src/pages/RecruitmentDataCollection/JobMonitor/edit.tsx @@ -0,0 +1,126 @@ +import { + ModalForm, + ProForm, + ProFormDatePicker, + ProFormDigit, + ProFormText, + ProFormTextArea, + ProDescriptions, +} from '@ant-design/pro-components'; +import { Form } from 'antd'; +import React, { useEffect } from 'react'; + +export type StorageFormProps = { + onCancel: (flag?: boolean, formVals?: unknown) => void; + onSubmit: (values: API.StorageDetection.StorageItem) => Promise; + open: boolean; + values?: Partial; + mode?: 'view' | 'edit' | 'create'; +}; + +const StorageEdit: React.FC = (props) => { + const [form] = Form.useForm(); + const { mode = props.values ? 'edit' : 'create' } = props; + + useEffect(() => { + if (props.open) { + form.resetFields(); + if (props.values) { + form.setFieldsValue(props.values); + } + } + }, [form, props.values?.detectionId, props.open]); + + const handleCancel = () => { + props.onCancel(); + form.resetFields(); + }; + + const handleFinish = async (values: Record) => { + props.onSubmit(values as API.StorageDetection.StorageItem); + }; + + if (mode === 'view') { + return ( + handleCancel(), + footer: null, + }} + submitter={false} + > + + column={2} + dataSource={props.values || {}} + > + + + + + + + + ); + } + + return ( + + title={mode === 'edit' ? '编辑入库监测' : '新建入库监测'} + form={form} + autoFocusFirstInput + open={props.open} + modalProps={{ + destroyOnClose: true, + onCancel: () => handleCancel(), + }} + submitTimeout={2000} + onFinish={handleFinish} + > + + + + + + + + + + ); +}; + +export default StorageEdit; diff --git a/src/pages/RecruitmentDataCollection/JobMonitor/index.tsx b/src/pages/RecruitmentDataCollection/JobMonitor/index.tsx new file mode 100644 index 0000000..54c612b --- /dev/null +++ b/src/pages/RecruitmentDataCollection/JobMonitor/index.tsx @@ -0,0 +1,190 @@ +import React, { Fragment, useRef, useState } from 'react'; +import { useAccess } from '@umijs/max'; +import { + getStorageDetectionList, + getStorageDetectionSingle, + saveStorageDetection, +} from '@/services/recruitmentDataCollection/jobMonitor'; +import { Button, FormInstance, message } from 'antd'; +import { ActionType, ProColumns, ProTable } from '@ant-design/pro-components'; +import { FormOutlined, EyeOutlined } from '@ant-design/icons'; +import EditStorageRow from './edit'; + +function StorageDetectionList() { + const access = useAccess(); + + const formTableRef = useRef(); + const actionRef = useRef(); + + const [currentRow, setCurrentRow] = useState(); + const [modalVisible, setModalVisible] = useState(false); + const [mode, setMode] = useState<'view' | 'edit'>('view'); + const [loading, setLoading] = useState(false); + + // 查看详情 + const handleViewDetail = async (detectionId: any) => { + setLoading(true); + try { + const res = await getStorageDetectionSingle(detectionId); + if (res.code === 200) { + setCurrentRow(res.data); + setModalVisible(true); + setMode('view'); + } else { + message.error(res.msg); + } + } catch (error) { + message.error('获取详情失败'); + } finally { + setLoading(false); + } + }; + + // 编辑 + const handleEdit = async (detectionId: any) => { + setLoading(true); + try { + const res = await getStorageDetectionSingle(detectionId); + if (res.code === 200) { + setCurrentRow(res.data); + setModalVisible(true); + setMode('edit'); + } else { + message.error(res.msg); + } + } catch (error) { + message.error('获取编辑数据失败'); + } finally { + setLoading(false); + } + }; + + const columns: ProColumns[] = [ + { + title: '监测ID', + dataIndex: 'detectionId', + valueType: 'text', + align: 'center', + hideInSearch: true, + }, + { + title: '采集入库日期', + dataIndex: 'storageDate', + valueType: 'date', + align: 'center', + }, + { + title: '采集入库数量', + dataIndex: 'storageNumber', + valueType: 'text', + align: 'center', + hideInSearch: true, + }, + { + title: '采集入库结果', + dataIndex: 'storageResult', + valueType: 'text', + align: 'center', + hideInSearch: true, + }, + { + title: '入库数据详情', + dataIndex: 'storageDetail', + valueType: 'text', + align: 'center', + hideInSearch: true, + ellipsis: true, + }, + { + title: '操作', + hideInSearch: true, + align: 'center', + dataIndex: 'detectionId', + width: 200, + render: (detectionId, record) => ( +
+ + +
+ ), + }, + ]; + + return ( + +
+ + actionRef={actionRef} + formRef={formTableRef} + rowKey="detectionId" + key="storageDetectionIndex" + columns={columns} + search={{ labelWidth: 'auto' }} + request={async ( + params: API.StorageDetection.ListParams & { + pageSize?: number; + current?: number; + }, + ) => { + const res = await getStorageDetectionList({ + ...params, + } as API.StorageDetection.ListParams); + return { + data: res.rows, + total: res.total, + success: true, + }; + }} + /> +
+ { + try { + const resData = await saveStorageDetection(values); + if (resData.code === 200) { + setModalVisible(false); + setCurrentRow(undefined); + message.success('保存成功'); + if (actionRef.current) { + actionRef.current.reload(); + } + } else { + message.error(resData.msg || '保存失败'); + } + } catch (error) { + message.error('保存失败'); + } + }} + values={currentRow} + onCancel={() => { + setModalVisible(false); + setCurrentRow(undefined); + }} + /> +
+ ); +} + +export default StorageDetectionList; diff --git a/src/pages/RecruitmentDataCollection/MetricAdmin/edit.tsx b/src/pages/RecruitmentDataCollection/MetricAdmin/edit.tsx new file mode 100644 index 0000000..bf70fe6 --- /dev/null +++ b/src/pages/RecruitmentDataCollection/MetricAdmin/edit.tsx @@ -0,0 +1,122 @@ +import { + ModalForm, + ProForm, + ProFormSelect, + ProFormText, + ProFormTextArea, + ProDescriptions, +} from '@ant-design/pro-components'; +import { Form } from 'antd'; +import React, { useEffect } from 'react'; + +export type JobIndexFormProps = { + onCancel: (flag?: boolean, formVals?: unknown) => void; + onSubmit: (values: API.JobIndex.JobIndexItem) => Promise; + open: boolean; + values?: Partial; + mode?: 'view' | 'edit' | 'create'; +}; + +const JobIndexEdit: React.FC = (props) => { + const [form] = Form.useForm(); + const { mode = props.values ? 'edit' : 'create' } = props; + + useEffect(() => { + if (props.open) { + form.resetFields(); + if (props.values) { + form.setFieldsValue(props.values); + } + } + }, [form, props.values?.indexId, props.open]); + + const handleCancel = () => { + props.onCancel(); + form.resetFields(); + }; + + const handleFinish = async (values: Record) => { + await props.onSubmit(values as API.JobIndex.JobIndexItem); + }; + + if (mode === 'view') { + return ( + handleCancel(), + footer: null, + }} + submitter={false} + > + column={2} dataSource={props.values || {}}> + + + + + + + ); + } + + return ( + + title={mode === 'edit' ? '编辑指标信息' : '新建指标信息'} + form={form} + autoFocusFirstInput + open={props.open} + modalProps={{ + destroyOnClose: true, + onCancel: () => handleCancel(), + }} + submitTimeout={2000} + onFinish={handleFinish} + > + + + + + + + ); +}; + +export default JobIndexEdit; diff --git a/src/pages/RecruitmentDataCollection/MetricAdmin/index.tsx b/src/pages/RecruitmentDataCollection/MetricAdmin/index.tsx new file mode 100644 index 0000000..84a5954 --- /dev/null +++ b/src/pages/RecruitmentDataCollection/MetricAdmin/index.tsx @@ -0,0 +1,267 @@ +import React, { Fragment, useRef, useState } from 'react'; +import { useAccess } from '@umijs/max'; +import { + getJobIndexList, + getJobIndexSingle, + saveJobIndex, + updateJobIndex, + deleteJobIndex, +} from '@/services/recruitmentDataCollection/metricAdmin'; +import { Button, FormInstance, message, Modal } from 'antd'; +import { ActionType, ProColumns, ProTable } from '@ant-design/pro-components'; +import { DeleteOutlined, FormOutlined, PlusOutlined, EyeOutlined } from '@ant-design/icons'; +import EditJobIndexRow from './edit'; + +function JobIndexList() { + const access = useAccess(); + + const formTableRef = useRef(); + const actionRef = useRef(); + + const [currentRow, setCurrentRow] = useState(); + const [modalVisible, setModalVisible] = useState(false); + const [mode, setMode] = useState<'view' | 'edit' | 'create'>('create'); + const [loading, setLoading] = useState(false); + + // 删除处理 + const handleRemoveOne = async (indexId: any) => { + const hide = message.loading('正在删除'); + if (!indexId) return true; + try { + const resp = await deleteJobIndex({ indexId }); + hide(); + if (resp.code === 200) { + message.success('删除成功,即将刷新'); + } else { + message.error(resp.msg); + } + return true; + } catch (error) { + hide(); + message.error('删除失败,请重试'); + return false; + } + }; + + // 查看详情 + const handleViewDetail = async (indexId: any) => { + setLoading(true); + try { + const res = await getJobIndexSingle(indexId); + if (res.code === 200) { + setCurrentRow(res.data); + setModalVisible(true); + setMode('view'); + } else { + message.error(res.msg); + } + } catch (error) { + message.error('获取详情失败'); + } finally { + setLoading(false); + } + }; + + // 编辑 + const handleEdit = async (indexId: any) => { + setLoading(true); + try { + const res = await getJobIndexSingle(indexId); + if (res.code === 200) { + setCurrentRow(res.data); + setModalVisible(true); + setMode('edit'); + } else { + message.error(res.msg); + } + } catch (error) { + message.error('获取编辑数据失败'); + } finally { + setLoading(false); + } + }; + + const columns: ProColumns[] = [ + { + title: '指标ID', + dataIndex: 'indexId', + valueType: 'text', + align: 'center', + hideInSearch: true, + }, + { + title: '指标名称', + dataIndex: 'indexName', + valueType: 'text', + align: 'center', + }, + { + title: '指标描述', + dataIndex: 'indexDesc', + valueType: 'text', + align: 'center', + }, + { + title: '是否启用', + dataIndex: 'isActive', + valueType: 'select', + align: 'center', + valueEnum: { + '0': { text: '启用' }, + '2': { text: '未启用' }, + }, + fieldProps: { + options: [ + { label: '启用', value: '0' }, + { label: '未启用', value: '2' }, + ], + defaultValue: '0', + allowClear: false, + }, + }, + { + title: '操作', + hideInSearch: true, + align: 'center', + dataIndex: 'indexId', + width: 300, + render: (indexId, record) => ( +
+ + + +
+ ), + }, + ]; + + return ( + +
+ + actionRef={actionRef} + formRef={formTableRef} + rowKey="indexId" + key="jobIndexIndex" + columns={columns} + search={{ + labelWidth: 'auto', + }} + request={async ( + params: API.JobIndex.ListParams & { + pageSize?: number; + current?: number; + }, + ) => { + const queryParams = { + ...params, + isActive: params.isActive || '0', //默认查询启用 + }; + const res = await getJobIndexList({ ...queryParams } as API.JobIndex.ListParams); + return { + data: res.rows, + total: res.total, + success: true, + }; + }} + toolBarRender={() => [ + , + ]} + /> +
+ { + try { + let resData; + if (values.indexId) { + resData = await updateJobIndex(values as API.JobIndex.UpdateParams); + } else { + resData = await saveJobIndex(values as API.JobIndex.AddParams); + } + if (resData.code === 200) { + setModalVisible(false); + setCurrentRow(undefined); + if (values.indexId) { + message.success('修改成功'); + } else { + message.success('新增成功'); + } + if (actionRef.current) { + actionRef.current.reload(); + } + } else { + message.error(resData.msg || '操作失败'); + } + } catch (error) { + message.error('操作失败'); + } + }} + values={currentRow} + onCancel={() => { + setModalVisible(false); + setCurrentRow(undefined); + }} + /> +
+ ); +} + +export default JobIndexList; diff --git a/src/pages/RecruitmentDataCollection/SourceManager/edit.tsx b/src/pages/RecruitmentDataCollection/SourceManager/edit.tsx new file mode 100644 index 0000000..4928c5e --- /dev/null +++ b/src/pages/RecruitmentDataCollection/SourceManager/edit.tsx @@ -0,0 +1,129 @@ +import { + ModalForm, + ProForm, + ProFormSelect, + ProFormText, + ProDescriptions, +} from '@ant-design/pro-components'; +import { Form } from 'antd'; +import React, { useEffect } from 'react'; + +export type WebsiteFormProps = { + onCancel: (flag?: boolean, formVals?: unknown) => void; + onSubmit: (values: API.Website.WebsiteItem) => Promise; + open: boolean; + values?: Partial; + mode?: 'view' | 'edit' | 'create'; +}; + +const WebsiteEdit: React.FC = (props) => { + const [form] = Form.useForm(); + const { mode = props.values ? 'edit' : 'create' } = props; + + useEffect(() => { + if (props.open) { + form.resetFields(); + if (props.values) { + form.setFieldsValue(props.values); + } + } + }, [form, props.values?.websiteId, props.open]); + + const handleCancel = () => { + props.onCancel(); + form.resetFields(); + }; + + const handleFinish = async (values: Record) => { + await props.onSubmit(values as API.Website.WebsiteItem); + }; + + if (mode === 'view') { + return ( + handleCancel(), + footer: null, + }} + submitter={false} + > + column={2} dataSource={props.values || {}}> + + + + + + + + ); + } + + return ( + + title={mode === 'edit' ? '编辑网站信息' : '新建网站信息'} + form={form} + autoFocusFirstInput + open={props.open} + modalProps={{ + destroyOnClose: true, + onCancel: () => handleCancel(), + }} + submitTimeout={2000} + onFinish={handleFinish} + > + + + + + + + + ); +}; + +export default WebsiteEdit; diff --git a/src/pages/RecruitmentDataCollection/SourceManager/index.tsx b/src/pages/RecruitmentDataCollection/SourceManager/index.tsx new file mode 100644 index 0000000..881ad58 --- /dev/null +++ b/src/pages/RecruitmentDataCollection/SourceManager/index.tsx @@ -0,0 +1,272 @@ +import React, { Fragment, useRef, useState } from 'react'; +import { useAccess } from '@umijs/max'; +import { + getWebsiteList, + getWebsiteSingle, + saveWebsite, + updateWebsite, + deleteWebsite, +} from '@/services/recruitmentDataCollection/sourceManager'; +import { Button, FormInstance, message, Modal } from 'antd'; +import { ActionType, ProColumns, ProTable } from '@ant-design/pro-components'; +import { DeleteOutlined, FormOutlined, PlusOutlined, EyeOutlined } from '@ant-design/icons'; +import EditWebsiteRow from './edit'; + +function WebsiteList() { + const access = useAccess(); + + const formTableRef = useRef(); + const actionRef = useRef(); + + const [currentRow, setCurrentRow] = useState(); + const [modalVisible, setModalVisible] = useState(false); + const [mode, setMode] = useState<'view' | 'edit' | 'create'>('create'); + const [loading, setLoading] = useState(false); + + // 删除处理 + const handleRemoveOne = async (websiteId: any) => { + const hide = message.loading('正在删除'); + if (!websiteId) return true; + try { + const resp = await deleteWebsite({ websiteId }); + hide(); + if (resp.code === 200) { + message.success('删除成功,即将刷新'); + } else { + message.error(resp.msg); + } + return true; + } catch (error) { + hide(); + message.error('删除失败,请重试'); + return false; + } + }; + + // 查看详情 + const handleViewDetail = async (websiteId: any) => { + setLoading(true); + try { + const res = await getWebsiteSingle(websiteId); + if (res.code === 200) { + setCurrentRow(res.data); + setModalVisible(true); + setMode('view'); + } else { + message.error(res.msg); + } + } catch (error) { + message.error('获取详情失败'); + } finally { + setLoading(false); + } + }; + + // 编辑 + const handleEdit = async (websiteId: any) => { + setLoading(true); + try { + const res = await getWebsiteSingle(websiteId); + if (res.code === 200) { + setCurrentRow(res.data); + setModalVisible(true); + setMode('edit'); + } else { + message.error(res.msg); + } + } catch (error) { + message.error('获取编辑数据失败'); + } finally { + setLoading(false); + } + }; + + const columns: ProColumns[] = [ + { + title: '网站ID', + dataIndex: 'websiteId', + valueType: 'text', + align: 'center', + hideInSearch: true, + }, + { + title: '网站名称', + dataIndex: 'websiteName', + valueType: 'text', + align: 'center', + }, + { + title: '网站地址', + dataIndex: 'websiteUrl', + valueType: 'text', + align: 'center', + }, + { + title: '归属单位公司', + dataIndex: 'websiteOwnerCompany', + valueType: 'text', // 改为文本输入 + align: 'center', + }, + { + title: '是否启用', + dataIndex: 'isActive', + valueType: 'select', + align: 'center', + valueEnum: { + '0': { text: '启用' }, + '2': { text: '未启用' }, + }, + fieldProps: { + options: [ + { label: '启用', value: '0' }, + { label: '未启用', value: '2' }, + ], + allowClear: false, + }, + }, + { + title: '操作', + hideInSearch: true, + align: 'center', + dataIndex: 'websiteId', + width: 300, + render: (websiteId, record) => ( +
+ + + +
+ ), + }, + ]; + + return ( + +
+ + actionRef={actionRef} + formRef={formTableRef} + rowKey="websiteId" + key="websiteIndex" + columns={columns} + search={{ + labelWidth: 'auto', + }} + request={async ( + params: API.Website.ListParams & { + pageSize?: number; + current?: number; + }, + ) => { + const queryParams = { + ...params, + isActive: params.isActive || '0', //默认查询启用 + }; + const res = await getWebsiteList({ ...queryParams } as API.Website.ListParams); + return { + data: res.rows, + total: res.total, + success: true, + }; + }} + toolBarRender={() => [ + , + ]} + /> +
+ { + try { + let resData; + if (values.websiteId) { + resData = await updateWebsite(values as API.Website.UpdateParams); + } else { + resData = await saveWebsite(values as API.Website.AddParams); + } + if (resData.code === 200) { + setModalVisible(false); + setCurrentRow(undefined); + if (values.websiteId) { + message.success('修改成功'); + } else { + message.success('新增成功'); + } + if (actionRef.current) { + actionRef.current.reload(); + } + } else { + message.error(resData.msg || '操作失败'); + } + } catch (error) { + message.error('操作失败'); + } + }} + values={currentRow} + onCancel={() => { + setModalVisible(false); + setCurrentRow(undefined); + }} + /> +
+ ); +} + +export default WebsiteList; diff --git a/src/services/recruitmentDataCollection/jobMonitor.ts b/src/services/recruitmentDataCollection/jobMonitor.ts new file mode 100644 index 0000000..038cb5d --- /dev/null +++ b/src/services/recruitmentDataCollection/jobMonitor.ts @@ -0,0 +1,24 @@ +import { request } from '@umijs/max'; + +export async function getStorageDetectionList(params?: API.StorageDetection.ListParams) { + return request(`/api/cms/storageDetection/getList`, { + method: 'GET', + params: params, + }); +} + +export async function getStorageDetectionSingle(detectionId: string) { + return request( + `/api/cms/storageDetection/getSingle/${detectionId}`, + { + method: 'GET', + }, + ); +} + +export async function saveStorageDetection(params?: API.StorageDetection.AddParams) { + return request(`/api/cms/storageDetection/save`, { + method: 'POST', + data: params, + }); +} diff --git a/src/services/recruitmentDataCollection/metricAdmin.ts b/src/services/recruitmentDataCollection/metricAdmin.ts new file mode 100644 index 0000000..f0840c0 --- /dev/null +++ b/src/services/recruitmentDataCollection/metricAdmin.ts @@ -0,0 +1,35 @@ +import { request } from '@umijs/max'; + +export async function getJobIndexList(params?: API.JobIndex.ListParams) { + return request(`/api/cms/jobIndex/getList`, { + method: 'GET', + params: params, + }); +} + +export async function getJobIndexSingle(indexId: string) { + return request(`/api/cms/jobIndex/getSingle/${indexId}`, { + method: 'GET', + }); +} + +export async function saveJobIndex(params?: API.JobIndex.AddParams) { + return request(`/api/cms/jobIndex/save`, { + method: 'POST', + data: params, + }); +} + +export async function updateJobIndex(params?: API.JobIndex.UpdateParams) { + return request(`/api/cms/jobIndex/update`, { + method: 'POST', + data: params, + }); +} + +export async function deleteJobIndex(params?: API.JobIndex.DeleteParams) { + return request(`/api/cms/jobIndex/delete`, { + method: 'POST', + data: params, + }); +} diff --git a/src/services/recruitmentDataCollection/sourceManager.ts b/src/services/recruitmentDataCollection/sourceManager.ts new file mode 100644 index 0000000..709321c --- /dev/null +++ b/src/services/recruitmentDataCollection/sourceManager.ts @@ -0,0 +1,35 @@ +import { request } from '@umijs/max'; + +export async function getWebsiteList(params?: API.Website.ListParams) { + return request(`/api/cms/website/getList`, { + method: 'GET', + params: params, + }); +} + +export async function getWebsiteSingle(websiteId: string) { + return request(`/api/cms/website/getSingle/${websiteId}`, { + method: 'GET', + }); +} + +export async function saveWebsite(params?: API.Website.AddParams) { + return request(`/api/cms/website/save`, { + method: 'POST', + data: params, + }); +} + +export async function updateWebsite(params?: API.Website.UpdateParams) { + return request(`/api/cms/website/update`, { + method: 'POST', + data: params, + }); +} + +export async function deleteWebsite(params?: API.Website.DeleteParams) { + return request(`/api/cms/website/delete`, { + method: 'POST', + data: params, + }); +} diff --git a/src/types/RecruitmentDataCollection/jobMonitor.d.ts b/src/types/RecruitmentDataCollection/jobMonitor.d.ts new file mode 100644 index 0000000..637697c --- /dev/null +++ b/src/types/RecruitmentDataCollection/jobMonitor.d.ts @@ -0,0 +1,35 @@ +declare namespace API.StorageDetection { + export interface StorageItem { + detectionId?: string; + storageDate?: string; + storageNumber?: string; + storageResult?: string; + storageDetail?: string; + } + + export interface AddParams { + storageDate?: string; + storageNumber?: string; + storageResult?: string; + storageDetail?: string; + } + + export interface ListParams { + storageDate?: string; + pageSize?: number; + current?: number; + } + + export interface StorageIdResult { + code: number; + msg: string; + data: StorageItem; + } + + export interface StoragePageResult { + code: number; + msg: string; + total: number; + rows: Array; + } +} diff --git a/src/types/RecruitmentDataCollection/metricAdmin.d.ts b/src/types/RecruitmentDataCollection/metricAdmin.d.ts new file mode 100644 index 0000000..ff50903 --- /dev/null +++ b/src/types/RecruitmentDataCollection/metricAdmin.d.ts @@ -0,0 +1,46 @@ +declare namespace API.JobIndex { + export interface JobIndexItem { + indexId?: string; + indexName?: string; + indexDesc?: string; + isActive?: string; + } + + export interface AddParams { + indexName?: string; + indexDesc?: string; + isActive?: string; + } + + export interface UpdateParams { + indexId?: string; + indexName?: string; + indexDesc?: string; + isActive?: string; + } + + export interface ListParams { + indexName?: string; + indexDesc?: string; + isActive?: string; + pageSize?: number; + current?: number; + } + + export interface DeleteParams { + indexId?: string; + } + + export interface JobIndexIdResult { + code: number; + msg: string; + data: JobIndexItem; + } + + export interface JobIndexPageResult { + code: number; + msg: string; + total: number; + rows: Array; + } +} diff --git a/src/types/RecruitmentDataCollection/sourceManager.d.ts b/src/types/RecruitmentDataCollection/sourceManager.d.ts new file mode 100644 index 0000000..a5c7c69 --- /dev/null +++ b/src/types/RecruitmentDataCollection/sourceManager.d.ts @@ -0,0 +1,50 @@ +declare namespace API.Website { + export interface WebsiteItem { + websiteId?: string; + websiteName?: string; + websiteUrl?: string; + websiteOwnerCompany?: string; + isActive?: string; + } + + export interface AddParams { + websiteName?: string; + websiteUrl?: string; + websiteOwnerCompany?: string; + isActive?: string; + } + + export interface UpdateParams { + websiteId?: string; + websiteName?: string; + websiteUrl?: string; + websiteOwnerCompany?: string; + isActive?: string; + } + + export interface ListParams { + websiteName?: string; + websiteUrl?: string; + websiteOwnerCompany?: string; + isActive?: string; + pageSize?: number; + current?: number; + } + + export interface DeleteParams { + websiteId?: string; + } + + export interface WebsiteIdResult { + code: number; + msg: string; + data: WebsiteItem; + } + + export interface WebsitePageResult { + code: number; + msg: string; + total: number; + rows: Array; + } +}