Commit 2471262385230764527b971d9fadfd5fc6876481
1 parent
a5a22bb3
feat: data component list add search conditions
Showing
4 changed files
with
94 additions
and
4 deletions
| @@ -14,9 +14,9 @@ VITE_PUBLIC_PATH = / | @@ -14,9 +14,9 @@ VITE_PUBLIC_PATH = / | ||
| 14 | # VITE_PROXY = [["/api","http://101.133.234.90:8080/api"]] | 14 | # VITE_PROXY = [["/api","http://101.133.234.90:8080/api"]] |
| 15 | # 线上测试环境 | 15 | # 线上测试环境 |
| 16 | # VITE_PROXY = [["/api","http://localhost:8080/api"],["/thingskit-drawio","http://localhost:3000/"]] | 16 | # VITE_PROXY = [["/api","http://localhost:8080/api"],["/thingskit-drawio","http://localhost:3000/"]] |
| 17 | -VITE_PROXY = [["/api","https://dev.thingskit.com/api"],["/thingskit-drawio","http://localhost:3000/"]] | 17 | +# VITE_PROXY = [["/api","https://dev.thingskit.com/api"],["/thingskit-drawio","http://localhost:3000/"]] |
| 18 | # VITE_PROXY = [["/api","http://121.37.251.8:8080/api"],["/thingskit-drawio","http://localhost:3000/"]] | 18 | # VITE_PROXY = [["/api","http://121.37.251.8:8080/api"],["/thingskit-drawio","http://localhost:3000/"]] |
| 19 | -# VITE_PROXY = [["/api","http://192.168.10.111:8080/api"],["/thingskit-drawio","http://192.168.10.106:8080/api"]] | 19 | +VITE_PROXY = [["/api","http://192.168.10.111:8080/api"],["/thingskit-drawio","http://192.168.10.106:8080/api"]] |
| 20 | 20 | ||
| 21 | # 实时数据的ws地址 | 21 | # 实时数据的ws地址 |
| 22 | # VITE_WEB_SOCKET = ws://localhost:8080/api/ws/plugins/telemetry?token= | 22 | # VITE_WEB_SOCKET = ws://localhost:8080/api/ws/plugins/telemetry?token= |
| 1 | +import { getOrganizationList } from '/@/api/system/system'; | ||
| 1 | import { FormSchema } from '/@/components/Form'; | 2 | import { FormSchema } from '/@/components/Form'; |
| 3 | +import { copyTransFun } from '/@/utils/fnUtils'; | ||
| 2 | export enum ViewType { | 4 | export enum ViewType { |
| 3 | PRIVATE_VIEW = 'PRIVATE_VIEW', | 5 | PRIVATE_VIEW = 'PRIVATE_VIEW', |
| 4 | PUBLIC_VIEW = 'PUBLIC_VIEW', | 6 | PUBLIC_VIEW = 'PUBLIC_VIEW', |
| @@ -9,12 +11,29 @@ export const formSchema: FormSchema[] = [ | @@ -9,12 +11,29 @@ export const formSchema: FormSchema[] = [ | ||
| 9 | field: 'name', | 11 | field: 'name', |
| 10 | label: '名称', | 12 | label: '名称', |
| 11 | component: 'Input', | 13 | component: 'Input', |
| 12 | - required: true, | 14 | + rules: [{ required: true, message: '请输入看板名称' }], |
| 13 | componentProps: { | 15 | componentProps: { |
| 14 | placeholder: '请输入看板名称', | 16 | placeholder: '请输入看板名称', |
| 15 | }, | 17 | }, |
| 16 | }, | 18 | }, |
| 17 | { | 19 | { |
| 20 | + field: 'organizationId', | ||
| 21 | + component: 'ApiTreeSelect', | ||
| 22 | + label: '组织', | ||
| 23 | + rules: [{ required: true, message: '组织为必填项' }], | ||
| 24 | + componentProps() { | ||
| 25 | + return { | ||
| 26 | + placeholder: '请选择组织', | ||
| 27 | + api: async () => { | ||
| 28 | + const data = await getOrganizationList(); | ||
| 29 | + copyTransFun(data as any as any[]); | ||
| 30 | + return data; | ||
| 31 | + }, | ||
| 32 | + getPopupContainer: () => document.body, | ||
| 33 | + }; | ||
| 34 | + }, | ||
| 35 | + }, | ||
| 36 | + { | ||
| 18 | field: 'viewType', | 37 | field: 'viewType', |
| 19 | label: '名称', | 38 | label: '名称', |
| 20 | component: 'RadioGroup', | 39 | component: 'RadioGroup', |
src/views/visual/board/config/searchForm.ts
0 → 100644
| 1 | +import { getOrganizationList } from '/@/api/system/system'; | ||
| 2 | +import { FormSchema } from '/@/components/Form'; | ||
| 3 | +import { ColEx } from '/@/components/Form/src/types'; | ||
| 4 | +import { useGridLayout } from '/@/hooks/component/useGridLayout'; | ||
| 5 | +import { copyTransFun } from '/@/utils/fnUtils'; | ||
| 6 | + | ||
| 7 | +export const formSchema: FormSchema[] = [ | ||
| 8 | + { | ||
| 9 | + field: 'name', | ||
| 10 | + label: '看板名称', | ||
| 11 | + component: 'Input', | ||
| 12 | + // colProps: { span: 10 }, | ||
| 13 | + colProps: useGridLayout(2, 3, 4) as unknown as ColEx, | ||
| 14 | + }, | ||
| 15 | + { | ||
| 16 | + field: 'organizationId', | ||
| 17 | + component: 'ApiTreeSelect', | ||
| 18 | + label: '组织', | ||
| 19 | + // colProps: { span: 10 }, | ||
| 20 | + colProps: useGridLayout(2, 3, 4) as unknown as ColEx, | ||
| 21 | + componentProps() { | ||
| 22 | + return { | ||
| 23 | + placeholder: '请选择组织', | ||
| 24 | + api: async () => { | ||
| 25 | + const data = await getOrganizationList(); | ||
| 26 | + copyTransFun(data as any as any[]); | ||
| 27 | + return data; | ||
| 28 | + }, | ||
| 29 | + getPopupContainer: () => document.body, | ||
| 30 | + }; | ||
| 31 | + }, | ||
| 32 | + }, | ||
| 33 | +]; |
| @@ -19,6 +19,8 @@ | @@ -19,6 +19,8 @@ | ||
| 19 | import { computed } from '@vue/reactivity'; | 19 | import { computed } from '@vue/reactivity'; |
| 20 | import { usePermission } from '/@/hooks/web/usePermission'; | 20 | import { usePermission } from '/@/hooks/web/usePermission'; |
| 21 | import { encode } from './config/config'; | 21 | import { encode } from './config/config'; |
| 22 | + import { useForm, BasicForm } from '/@/components/Form'; | ||
| 23 | + import { formSchema } from './config/searchForm'; | ||
| 22 | 24 | ||
| 23 | const ListItem = List.Item; | 25 | const ListItem = List.Item; |
| 24 | const router = useRouter(); | 26 | const router = useRouter(); |
| @@ -28,6 +30,21 @@ | @@ -28,6 +30,21 @@ | ||
| 28 | const listEL = ref(); | 30 | const listEL = ref(); |
| 29 | const loading = ref(false); | 31 | const loading = ref(false); |
| 30 | const dataBoardList = ref<DataBoardRecord[]>([]); | 32 | const dataBoardList = ref<DataBoardRecord[]>([]); |
| 33 | + | ||
| 34 | + const [searchFormRegister, searchFormMethod] = useForm({ | ||
| 35 | + schemas: formSchema, | ||
| 36 | + labelWidth: 80, | ||
| 37 | + layout: 'inline', | ||
| 38 | + submitButtonOptions: { | ||
| 39 | + loading: loading, | ||
| 40 | + }, | ||
| 41 | + submitFunc: async () => { | ||
| 42 | + try { | ||
| 43 | + await getDatasource(); | ||
| 44 | + } catch (error) {} | ||
| 45 | + }, | ||
| 46 | + }); | ||
| 47 | + | ||
| 31 | //分页相关 | 48 | //分页相关 |
| 32 | const page = ref(1); | 49 | const page = ref(1); |
| 33 | const pageSize = ref(10); | 50 | const pageSize = ref(10); |
| @@ -87,9 +104,11 @@ | @@ -87,9 +104,11 @@ | ||
| 87 | const getDatasource = async () => { | 104 | const getDatasource = async () => { |
| 88 | try { | 105 | try { |
| 89 | loading.value = true; | 106 | loading.value = true; |
| 107 | + const params = searchFormMethod.getFieldsValue() || {}; | ||
| 90 | const { total, items } = await getDataBoardList({ | 108 | const { total, items } = await getDataBoardList({ |
| 91 | page: unref(paginationProp).current, | 109 | page: unref(paginationProp).current, |
| 92 | pageSize: unref(paginationProp).pageSize, | 110 | pageSize: unref(paginationProp).pageSize, |
| 111 | + ...params, | ||
| 93 | }); | 112 | }); |
| 94 | dataBoardList.value = items; | 113 | dataBoardList.value = items; |
| 95 | paginationProp.value.total = total; | 114 | paginationProp.value.total = total; |
| @@ -176,12 +195,16 @@ | @@ -176,12 +195,16 @@ | ||
| 176 | 195 | ||
| 177 | <template> | 196 | <template> |
| 178 | <PageWrapper> | 197 | <PageWrapper> |
| 179 | - <div class="flex mb-6 items-center bg-light-100 h-78px"> | 198 | + <div class="flex items-center mb-3 bg-light-100 h-78px"> |
| 180 | <div class="text-lg ml-30px mr-9px font-bold">自定义看板</div> | 199 | <div class="text-lg ml-30px mr-9px font-bold">自定义看板</div> |
| 181 | <Authority value="api:yt:data_board:add:post"> | 200 | <Authority value="api:yt:data_board:add:post"> |
| 182 | <Button type="primary" @click="handleOpenDetailModal">创建看板</Button> | 201 | <Button type="primary" @click="handleOpenDetailModal">创建看板</Button> |
| 183 | </Authority> | 202 | </Authority> |
| 184 | </div> | 203 | </div> |
| 204 | + <div class="bg-light-100 mb-6 w-full p-3 search-form"> | ||
| 205 | + <BasicForm class="flex-auto w-full" @register="searchFormRegister" /> | ||
| 206 | + </div> | ||
| 207 | + <!-- <div> </div> --> | ||
| 185 | <Spin :spinning="loading"> | 208 | <Spin :spinning="loading"> |
| 186 | <List | 209 | <List |
| 187 | ref="listEL" | 210 | ref="listEL" |
| @@ -266,4 +289,19 @@ | @@ -266,4 +289,19 @@ | ||
| 266 | background-image: url('/@/assets/svg/component.svg'); | 289 | background-image: url('/@/assets/svg/component.svg'); |
| 267 | } | 290 | } |
| 268 | } | 291 | } |
| 292 | + | ||
| 293 | + .search-form { | ||
| 294 | + width: 100%; | ||
| 295 | + form { | ||
| 296 | + width: 100%; | ||
| 297 | + :deep(.ant-row) { | ||
| 298 | + width: 100%; | ||
| 299 | + } | ||
| 300 | + | ||
| 301 | + :deep(.ant-row > div:last-child) { | ||
| 302 | + flex: 1; | ||
| 303 | + max-width: 100%; | ||
| 304 | + } | ||
| 305 | + } | ||
| 306 | + } | ||
| 269 | </style> | 307 | </style> |