Commit 2471262385230764527b971d9fadfd5fc6876481

Authored by ww
1 parent a5a22bb3

feat: data component list add search conditions

@@ -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',
  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>