Commit 6db4cfff66b69a764e19718118071df05b0aacc4

Authored by xp.Huang
2 parents 548a05f2 f8203089

Merge branch 'dev-fix-ww' into 'main_dev'

fix: 修复teambition BUG

See merge request yunteng/thingskit-front!546
  1 +<script lang="ts" setup>
  2 + import { ReloadOutlined } from '@ant-design/icons-vue';
  3 + import { Button, List, Tooltip } from 'ant-design-vue';
  4 + import { reactive } from 'vue';
  5 + import { ref } from 'vue';
  6 +
  7 + const listElRef = ref<Nullable<ComponentElRef>>(null);
  8 +
  9 + const pagination = reactive({});
  10 +
  11 + const loading = ref(false);
  12 +
  13 + const dataSource = ref([]);
  14 +
  15 + const getDataSource = () => {};
  16 +</script>
  17 +
  18 +<template>
  19 + <section class="bg-light-50 my-4 p-4 x dark:text-gray-300 dark:bg-dark-900">
  20 + <List
  21 + ref="listElRef"
  22 + :dataSource="dataSource"
  23 + :pagination="pagination"
  24 + :grid="{ gutter: 16, xs: 1, sm: 1, md: 1, lg: 2, xl: 2, xxl: 3, column: 3 }"
  25 + :loading="loading"
  26 + >
  27 + <template #header>
  28 + <section class="flex justify-between gap-4 min-h-12 items-center">
  29 + <div class="text-lg font-semibold">
  30 + <span>任务列表</span>
  31 + </div>
  32 + <Tooltip title="刷新">
  33 + <Button type="primary" @click="getDataSource">
  34 + <ReloadOutlined :spin="loading" />
  35 + </Button>
  36 + </Tooltip>
  37 + </section>
  38 + </template>
  39 + <template #renderItem="{ item }">
  40 + <List.Item :key="item.id">
  41 + <slot name="item" :item="item"></slot>
  42 + </List.Item>
  43 + </template>
  44 + </List>
  45 + </section>
  46 +</template>
... ...
  1 +import { ComponentPropsOptions } from 'vue';
  2 +
  3 +export const props = {
  4 + title: {
  5 + type: String,
  6 + },
  7 +} as ComponentPropsOptions;
... ...
1 1 <script lang="ts" setup>
2 2 import { nextTick, onMounted, onUnmounted, reactive, ref, unref } from 'vue';
3   - import { List, Button, Card } from 'ant-design-vue';
  3 + import { List, Button, Card, Tooltip } from 'ant-design-vue';
4 4 import { PageWrapper } from '/@/components/Page';
5 5 import { BasicTable, useTable } from '/@/components/Table';
6 6 import { realTimeDataColumns } from '../../config/detail.config';
... ... @@ -31,6 +31,9 @@
31 31 key?: string;
32 32 value?: string;
33 33 time?: number;
  34 + type?: string;
  35 + boolClose?: string;
  36 + boolOpen?: string;
34 37 }
35 38
36 39 const props = defineProps<{
... ... @@ -214,6 +217,14 @@
214 217 open();
215 218 });
216 219
  220 + const formatValue = (item: DataSource) => {
  221 + return item.type === DataTypeEnum.IS_BOOL
  222 + ? !!Number(item.value)
  223 + ? item.boolOpen
  224 + : item.boolClose
  225 + : item.value || '--';
  226 + };
  227 +
217 228 onUnmounted(() => close());
218 229 </script>
219 230
... ... @@ -252,13 +263,9 @@
252 263 </template>
253 264 <section class="min-h-16 flex flex-col justify-between">
254 265 <div class="flex font-bold text-lg mb-4 gap-2">
255   - <div>{{
256   - item.type === DataTypeEnum.IS_BOOL
257   - ? !!Number(item.value)
258   - ? item.boolOpen
259   - : item.boolClose
260   - : item.value || '--'
261   - }}</div>
  266 + <Tooltip :title="formatValue(item)" placement="topLeft">
  267 + <div class="truncate">{{ formatValue(item) }}</div>
  268 + </Tooltip>
262 269 <div class="text-xs flex items-center">{{ item.unit }}</div>
263 270 </div>
264 271 <div class="text-dark-800 text-xs">
... ...
... ... @@ -92,7 +92,6 @@ export const schemas: DescItem[] = [
92 92 render(_val: any, data: TaskRecordType) {
93 93 const { executeTime } = data;
94 94 const { time, type, periodType, pollUnit, period } = executeTime;
95   - console.log({ time, type, periodType, pollUnit });
96 95 return type === ExecuteTimeTypeEnum.POLL
97 96 ? `${time}${TimeUnitNameEnum[pollUnit]}`
98 97 : `${PeriodTypeNameEnum[periodType]} ${
... ...
... ... @@ -11,6 +11,7 @@
11 11 import { FormValueType } from './util';
12 12 import { unref } from 'vue';
13 13 import { computed } from 'vue';
  14 + import { useMessage } from '/@/hooks/web/useMessage';
14 15
15 16 const props = defineProps<{
16 17 reload: Fn;
... ... @@ -49,6 +50,7 @@
49 50 });
50 51
51 52 const loading = ref(false);
  53 + const { createMessage } = useMessage();
52 54 const handleOk = async () => {
53 55 try {
54 56 loading.value = true;
... ... @@ -58,6 +60,9 @@
58 60 formMode.value === DataActionModeEnum.CREATE
59 61 ? await createTask(_res)
60 62 : await updateTask({ ..._res, id: unref(dataSource)?.id as string });
  63 + createMessage.success(
  64 + unref(modalMode) === DataActionModeEnum.CREATE ? '创建成功' : '修改成功'
  65 + );
61 66 closeModal();
62 67 props.reload?.();
63 68 } catch (error) {
... ...
... ... @@ -65,7 +65,7 @@ export const formSchemas: FormSchema[] = [
65 65 component: 'ApiSelect',
66 66 label: '指定目标设备',
67 67 ifShow: ({ model }) => model[FormFieldsEnum.EXECUTE_TARGET_TYPE] === TargetType.ASSIGN,
68   - rules: [{ required: true, message: '请选择指定目标设备' }],
  68 + rules: [{ required: true, message: '请选择指定目标设备', type: 'array' }],
69 69 componentProps: ({ formModel }) => {
70 70 const record = JSON.parse(formModel[FormFieldsEnum.TASK_RECORD]) as TaskRecordType;
71 71 const isDevices = record.targetType === TaskTargetEnum.DEVICES;
... ...
1 1 <script setup lang="ts">
2   - import { Button, List, Tooltip } from 'ant-design-vue';
  2 + import { Button, List, Space, Tooltip } from 'ant-design-vue';
3 3 import { PageWrapper } from '/@/components/Page';
4 4 import { BasicForm, useForm } from '/@/components/Form';
5 5 import { PermissionEnum, formSchemas } from './config';
... ... @@ -19,6 +19,7 @@
19 19 import { RunTaskModal } from './components/RunTaskModal';
20 20 import { DetailDrawer } from './components/DetailDrawer';
21 21 import { useDrawer } from '/@/components/Drawer';
  22 + import { CardLayoutButton } from '/@/components/Widget';
22 23
23 24 const [registerModal, { openModal }] = useModal();
24 25 const [registerDrawer, { openDrawer }] = useDrawer();
... ... @@ -41,12 +42,14 @@
41 42 getDataSource();
42 43 };
43 44
  45 + const colNumber = ref(5);
44 46 const pagination = reactive({
45 47 current: 1,
46   - pageSize: 10,
47 48 total: 0,
  49 + pageSize: unref(colNumber) * 2,
48 50 showQuickJumper: true,
49 51 size: 'small',
  52 + showSizeChanger: false,
50 53 showTotal: (total: number) => `共 ${total} 条数据`,
51 54 onChange: paginationChange,
52 55 onShowSizeChange: paginationChange,
... ... @@ -58,13 +61,15 @@
58 61 try {
59 62 loading.value = true;
60 63 const params = getFieldsValue();
  64 + const pageSize = unref(colNumber) * 2;
61 65 const { items, total } = await getTaskCenterList({
62 66 page: pagination.current,
63   - pageSize: pagination.pageSize,
  67 + pageSize,
64 68 ...params,
65 69 });
66 70 dataSource.value = items;
67 71 pagination.total = total;
  72 + pagination.pageSize = pageSize;
68 73 } catch (error) {
69 74 throw error;
70 75 } finally {
... ... @@ -148,11 +153,14 @@
148 153 <div>
149 154 <span class="text-lg font-medium">任务列表</span>
150 155 </div>
151   - <Tooltip v-if="dataSource.length" title="刷新">
152   - <Button type="primary" @click="getDataSource">
153   - <ReloadOutlined :spin="loading" />
154   - </Button>
155   - </Tooltip>
  156 + <Space>
  157 + <CardLayoutButton v-model:value="colNumber" @change="reload" />
  158 + <Tooltip v-if="dataSource.length" title="刷新">
  159 + <Button type="primary" @click="getDataSource">
  160 + <ReloadOutlined :spin="loading" />
  161 + </Button>
  162 + </Tooltip>
  163 + </Space>
156 164 </section>
157 165 </template>
158 166 <template #renderItem="{ item }">
... ...