From 9517da9a58e0415be4e5a3f1911cf86997ab74f8 Mon Sep 17 00:00:00 2001 From: guoapeng Date: Tue, 20 May 2025 20:59:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=AE=9E=E9=AA=8C=E5=92=8C=E5=AE=9E?= =?UTF-8?q?=E9=AA=8C=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/home.ts | 9 +- src/assets/styles/element.scss | 7 ++ src/components/common/FTButton/index.vue | 7 +- src/components/common/FTTable/index.vue | 171 ++++++++++++++++++-------- src/components/home/SetTemperature/index.vue | 4 +- src/components/home/StartExperiment/index.vue | 6 +- src/components/home/Tube/index.vue | 3 +- src/hooks/useActivateDebug.ts | 8 ++ src/layouts/default.vue | 24 +++- src/router/index.ts | 4 +- src/router/routes.ts | 6 +- src/stores/systemStore.ts | 4 +- src/types/home.d.ts | 1 + src/types/system.d.ts | 2 + src/types/task.d.ts | 26 ++++ src/types/user.d.ts | 4 +- src/views/debug/index.vue | 3 - src/views/home/index.vue | 17 ++- src/views/point/index.vue | 2 +- src/views/taskLog/index.vue | 81 ++++++++++++ 20 files changed, 314 insertions(+), 75 deletions(-) create mode 100644 src/types/task.d.ts create mode 100644 src/views/taskLog/index.vue diff --git a/src/apis/home.ts b/src/apis/home.ts index 1ac3c2b..37d729e 100644 --- a/src/apis/home.ts +++ b/src/apis/home.ts @@ -1,6 +1,11 @@ import http from 'libs/http' +const baseUrl = '/tasks/' export const setTargetTemperature = (params: Home.SetTargetTemperatureParams): Promise => http.post('/heat/target-temperature', params) -export const trayIn = (): Promise => http.post('/tray/in') -export const trayOut = (): Promise => http.post('/tray/out') export const trayTube = (params: Home.TrayTubeParams): Promise => http.post('/tray/out', params) +export const addTask = (params: Task.TaskAdd): Promise => http.post(baseUrl, params) +export const stopTask = (): Promise => http.post(`${baseUrl}stop`) +export const getTask = (id: number): Promise => http.get(`${baseUrl}${id}`) +export const taskList = (params: Task.TaskQuery): Promise => http.get(`${baseUrl}list`, { params }) +export const getTaskIng = (): Promise => http.get(`${baseUrl}getIngTask`) +export const delTask = (params: string): Promise => http.delete(`${baseUrl}${params}`) diff --git a/src/assets/styles/element.scss b/src/assets/styles/element.scss index 443acf6..bd7bee3 100644 --- a/src/assets/styles/element.scss +++ b/src/assets/styles/element.scss @@ -34,4 +34,11 @@ .el-dialog__footer { padding: 10px; } +} + +.el-input-group__append { + padding: 0 10px; + .el-icon { + margin: 0; + } } \ No newline at end of file diff --git a/src/components/common/FTButton/index.vue b/src/components/common/FTButton/index.vue index 7b79f02..73c391a 100644 --- a/src/components/common/FTButton/index.vue +++ b/src/components/common/FTButton/index.vue @@ -2,7 +2,7 @@ import { ref } from 'vue' interface FTButton { - type?: 'default' | 'primary' | 'info' + type?: 'default' | 'primary' | 'info' | 'danger' size?: 'small' | 'default' | 'large' disabled?: boolean loading?: boolean @@ -128,6 +128,11 @@ defineExpose({ color: #fff; border: 1px solid #335AA5; } +.my-button-danger { + background: #e74444; + color: #fff; + border: 1px solid #e74444; +} .rotate-loading { animation: spin 1s linear infinite; diff --git a/src/components/common/FTTable/index.vue b/src/components/common/FTTable/index.vue index 60a2ebb..b68cf18 100644 --- a/src/components/common/FTTable/index.vue +++ b/src/components/common/FTTable/index.vue @@ -9,10 +9,28 @@ defineOptions({ const props = withDefaults(defineProps(), { columns: () => [], mustInit: true, - hasHeader: true, + hasHeader: false, + hasPage: false, + searchList: () => [], getDataFn: () => Promise.resolve([]), }) -const emits = defineEmits([]) +const emits = defineEmits([ + 'add', + 'edit', + 'detail', + 'copy', + 'sort', + 'save', + 'cancel', + 'del', + 'import', + 'export', + 'clickTreeNode', + 'newTreeNode', + 'editTreeNode', + 'delTreeNode', + 'rowClick', +]) enum ColumnType { index = 'index', selection = 'selection', @@ -32,6 +50,15 @@ interface Btn { icon?: string type?: string serverUrl: string + serverCondition?: 0 | 1 | 2 +} + +interface Search { + name: string + icon?: string + key?: string + type?: string + serverUrl: string } interface TableProp { @@ -39,14 +66,14 @@ interface TableProp { getDataFn: (params: any) => Promise // 表格数据的接口 mustInit?: boolean // 是否在mounted里执行getDataFn hasHeader?: boolean + hasPage?: boolean btnList?: Btn[] + searchList?: Search[] } -// const attrs = useAttrs() - async function methodParent(fn: any) { const newFn = fn[0] === '/' ? fn.slice(1) : fn - emits(newFn as never) + emits(newFn as never, state.selectedRows) } onMounted(() => { @@ -59,85 +86,131 @@ const state = reactive({ loading: false, dataTotal: 0, tableData: [], + selectedRows: [], + filterObj: { pageSize: 10, pageNum: 1 }, }) function initData() { state.loading = true props - .getDataFn({}) + .getDataFn(state.filterObj) .then((data) => { console.log(data) - state.tableData = data - state.loading = false + state.tableData = props.hasPage ? data.list : data + state.dataTotal = data.total }) .finally(() => { state.loading = false }) } +const handleSelectionChange = (val: any) => { + state.selectedRows = val +} + +const rowClickHandle = (data: any) => { + emits('rowClick', data) +} defineExpose({ initData, })