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, })