From 6747681b366670b7325fb4b351b2457906b59c53 Mon Sep 17 00:00:00 2001 From: CJL6015 <1253368419@qq.com> Date: Sun, 18 May 2025 21:09:54 +0800 Subject: [PATCH] feat: Implement model management interface with multiple steps for model creation and training - Added ModelCard component to display model cards with details and actions. - Introduced UnitSelect component for filtering models based on unit, system, and type. - Created a data structure for model items to manage model attributes. - Developed a multi-step form (Step1 to Step5) for model configuration, including parameters, data management, and model training. - Integrated API calls for fetching model data and saving model configurations. - Enhanced UI with Ant Design components for better user experience. - Implemented charting capabilities for visualizing model data. - Added trash management interface for model deletion. --- src/api/model/baseModel.ts | 9 ++ src/views/model/list/CreateModel.vue | 145 +++++++++++++++++ src/views/model/list/ModelCard.vue | 111 +++++++++++++ src/views/model/list/UnitSelect.vue | 139 ++++++++++++++++ src/views/model/list/data.tsx | 15 ++ src/views/model/list/index.vue | 45 ++++++ src/views/model/list/step/Step1.vue | 105 ++++++++++++ src/views/model/list/step/Step2.vue | 125 +++++++++++++++ src/views/model/list/step/Step3.vue | 168 +++++++++++++++++++ src/views/model/list/step/Step4.vue | 190 ++++++++++++++++++++++ src/views/model/list/step/Step5.vue | 62 +++++++ src/views/model/list/step/data.tsx | 101 ++++++++++++ src/views/model/train/data.tsx | 108 +++++++++++++ src/views/model/train/index.vue | 231 +++++++++++++++++++++++++++ src/views/model/trash/index.vue | 3 + 15 files changed, 1557 insertions(+) create mode 100644 src/api/model/baseModel.ts create mode 100644 src/views/model/list/CreateModel.vue create mode 100644 src/views/model/list/ModelCard.vue create mode 100644 src/views/model/list/UnitSelect.vue create mode 100644 src/views/model/list/data.tsx create mode 100644 src/views/model/list/index.vue create mode 100644 src/views/model/list/step/Step1.vue create mode 100644 src/views/model/list/step/Step2.vue create mode 100644 src/views/model/list/step/Step3.vue create mode 100644 src/views/model/list/step/Step4.vue create mode 100644 src/views/model/list/step/Step5.vue create mode 100644 src/views/model/list/step/data.tsx create mode 100644 src/views/model/train/data.tsx create mode 100644 src/views/model/train/index.vue create mode 100644 src/views/model/trash/index.vue diff --git a/src/api/model/baseModel.ts b/src/api/model/baseModel.ts new file mode 100644 index 0000000..1a36511 --- /dev/null +++ b/src/api/model/baseModel.ts @@ -0,0 +1,9 @@ +export interface BasicPageParams { + page: number; + pageSize: number; +} + +export interface BasicFetchResult { + items: T[]; + total: number; +} diff --git a/src/views/model/list/CreateModel.vue b/src/views/model/list/CreateModel.vue new file mode 100644 index 0000000..09ed1ce --- /dev/null +++ b/src/views/model/list/CreateModel.vue @@ -0,0 +1,145 @@ + + + diff --git a/src/views/model/list/ModelCard.vue b/src/views/model/list/ModelCard.vue new file mode 100644 index 0000000..a7c5e30 --- /dev/null +++ b/src/views/model/list/ModelCard.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/model/list/UnitSelect.vue b/src/views/model/list/UnitSelect.vue new file mode 100644 index 0000000..f289574 --- /dev/null +++ b/src/views/model/list/UnitSelect.vue @@ -0,0 +1,139 @@ + + diff --git a/src/views/model/list/data.tsx b/src/views/model/list/data.tsx new file mode 100644 index 0000000..741d873 --- /dev/null +++ b/src/views/model/list/data.tsx @@ -0,0 +1,15 @@ +import { CSSProperties } from 'vue'; + +export interface ModelItem { + id: number; + icon: string; + title: string; + value: number; + total: number; + color: string; + status: string; + creator: string; + description: string; + headStyle: CSSProperties; + bodyStyle: CSSProperties; +} diff --git a/src/views/model/list/index.vue b/src/views/model/list/index.vue new file mode 100644 index 0000000..0fd956a --- /dev/null +++ b/src/views/model/list/index.vue @@ -0,0 +1,45 @@ + + diff --git a/src/views/model/list/step/Step1.vue b/src/views/model/list/step/Step1.vue new file mode 100644 index 0000000..46e13ed --- /dev/null +++ b/src/views/model/list/step/Step1.vue @@ -0,0 +1,105 @@ + + + diff --git a/src/views/model/list/step/Step2.vue b/src/views/model/list/step/Step2.vue new file mode 100644 index 0000000..9daf8db --- /dev/null +++ b/src/views/model/list/step/Step2.vue @@ -0,0 +1,125 @@ + + + diff --git a/src/views/model/list/step/Step3.vue b/src/views/model/list/step/Step3.vue new file mode 100644 index 0000000..9fd3507 --- /dev/null +++ b/src/views/model/list/step/Step3.vue @@ -0,0 +1,168 @@ + + + diff --git a/src/views/model/list/step/Step4.vue b/src/views/model/list/step/Step4.vue new file mode 100644 index 0000000..30c787c --- /dev/null +++ b/src/views/model/list/step/Step4.vue @@ -0,0 +1,190 @@ + + + diff --git a/src/views/model/list/step/Step5.vue b/src/views/model/list/step/Step5.vue new file mode 100644 index 0000000..8370ebf --- /dev/null +++ b/src/views/model/list/step/Step5.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/views/model/list/step/data.tsx b/src/views/model/list/step/data.tsx new file mode 100644 index 0000000..46be970 --- /dev/null +++ b/src/views/model/list/step/data.tsx @@ -0,0 +1,101 @@ +import { FormSchema } from '/@/components/Form'; + +export const step1Schemas: FormSchema[] = [ + { + field: 'modelName', + component: 'Input', + label: '模型名称', + required: true, + defaultValue: '', + colProps: { + span: 24, + }, + }, + { + field: 'targetName', + component: 'Input', + label: '目标参数名称', + required: true, + colProps: { + span: 24, + }, + }, + { + field: 'movingSpeed', + component: 'InputNumber', + label: '滑动窗速度', + defaultValue: 600, + required: true, + }, + { + field: 'windowLength', + component: 'InputNumber', + label: '滑动窗长度', + required: true, + defaultValue: 120, + }, + { + field: 'samplingInterval', + component: 'InputNumber', + label: '取样间隔', + required: true, + defaultValue: 30, + }, +]; + +export const step2Schemas: FormSchema[] = [ + { + field: 'targetPoint', + component: 'Input', + label: '目标参数', + helpMessage: ['输入关键词搜索点号'], + required: true, + slot: 'remoteSearch', + colProps: { + span: 24, + }, + }, +]; + +export const step3Schemas: FormSchema[] = [ + { + field: 'point0', + component: 'Input', + label: '边界参数1', + required: true, + slot: 'remoteSearch', + colProps: { + span: 16, + }, + }, + { + field: '0', + component: 'Input', + label: ' ', + slot: 'add', + colProps: { + span: 2, + }, + }, +]; +export const step4Schemas: FormSchema[] = [ + { + field: 'point0', + component: 'Input', + label: '相关参数1', + required: true, + slot: 'remoteSearch', + colProps: { + span: 16, + }, + }, + { + field: '0', + component: 'Input', + label: ' ', + slot: 'add', + colProps: { + span: 2, + }, + }, +]; diff --git a/src/views/model/train/data.tsx b/src/views/model/train/data.tsx new file mode 100644 index 0000000..6263171 --- /dev/null +++ b/src/views/model/train/data.tsx @@ -0,0 +1,108 @@ +import { BasicColumn } from '/@/components/Table/src/types/table'; + +export const targetTableSchema: BasicColumn[] = [ + { + title: '描述', + width: 150, + dataIndex: 'description', + edit: true, + }, + { + title: '点号', + width: 150, + dataIndex: 'targetPoint', + }, + { + title: '单位', + width: 150, + dataIndex: 'unit', + edit: true, + }, + { + title: '上限 ', + width: 150, + dataIndex: 'upperlimit', + edit: true, + }, + { + title: '下限', + width: 150, + dataIndex: 'lowerlimit', + edit: true, + }, + { + title: '时实值', + width: 150, + dataIndex: 'realTimeValue', + }, +]; + +export const boundaryTableSchema: BasicColumn[] = [ + { + title: '描述', + width: 150, + dataIndex: 'description', + edit: true, + }, + { + title: '点号', + width: 150, + dataIndex: 'targetPoint', + }, + { + title: '单位', + width: 150, + dataIndex: 'unit', + edit: true, + }, + { + title: '上限 ', + width: 150, + dataIndex: 'upperlimit', + edit: true, + }, + { + title: '下限', + width: 150, + dataIndex: 'lowerlimit', + edit: true, + }, + { + title: '网格数', + width: 150, + dataIndex: 'gridNumber', + edit: true, + }, +]; + +export const relationTableSchema: BasicColumn[] = [ + { + title: '描述', + width: 150, + dataIndex: 'description', + edit: true, + }, + { + title: '点号', + width: 150, + dataIndex: 'targetPoint', + }, + { + title: '单位', + width: 150, + dataIndex: 'unit', + edit: true, + }, + { + title: '上限 ', + width: 150, + dataIndex: 'upperlimit', + edit: true, + }, + { + title: '下限', + width: 150, + dataIndex: 'lowerlimit', + edit: true, + }, +]; diff --git a/src/views/model/train/index.vue b/src/views/model/train/index.vue new file mode 100644 index 0000000..75aca6e --- /dev/null +++ b/src/views/model/train/index.vue @@ -0,0 +1,231 @@ + + + diff --git a/src/views/model/trash/index.vue b/src/views/model/trash/index.vue new file mode 100644 index 0000000..b1b6161 --- /dev/null +++ b/src/views/model/trash/index.vue @@ -0,0 +1,3 @@ +