Commit 1ce3d0e6f5d78161e292c38acc51bfc6a9b27d53

Authored by ww
1 parent 09977928

fix: DEFECT-685 update component info component not recalculate

1 import { 1 import {
2 AddDataBoardParams, 2 AddDataBoardParams,
3 AddDataComponentParams, 3 AddDataComponentParams,
  4 + ComponentInfoDetail,
4 DataBoardList, 5 DataBoardList,
5 DataComponentRecord, 6 DataComponentRecord,
6 GetDataBoardParams, 7 GetDataBoardParams,
@@ -103,12 +104,10 @@ export const updateDataBoardLayout = (params: UpdateDataBoardLayoutParams) => { @@ -103,12 +104,10 @@ export const updateDataBoardLayout = (params: UpdateDataBoardLayoutParams) => {
103 * @returns 104 * @returns
104 */ 105 */
105 export const getDataComponent = (params: string) => { 106 export const getDataComponent = (params: string) => {
106 - return defHttp.get<{ data: { componentData: DataComponentRecord[]; componentLayout: Layout[] } }>(  
107 - {  
108 - url: `${DataComponentUrl.GET_DATA_COMPONENT}/${params}`,  
109 - // params: { boardId: params },  
110 - }  
111 - ); 107 + return defHttp.get<ComponentInfoDetail>({
  108 + url: `${DataComponentUrl.GET_DATA_COMPONENT}/${params}`,
  109 + // params: { boardId: params },
  110 + });
112 }; 111 };
113 112
114 export const addDataComponent = (params: AddDataComponentParams) => { 113 export const addDataComponent = (params: AddDataComponentParams) => {
@@ -151,7 +150,7 @@ export const updateDataComponent = (params: UpdateDataComponentParams) => { @@ -151,7 +150,7 @@ export const updateDataComponent = (params: UpdateDataComponentParams) => {
151 */ 150 */
152 export const getShareBoardComponentInfo = (params: { boardId: string; tenantId: string }) => { 151 export const getShareBoardComponentInfo = (params: { boardId: string; tenantId: string }) => {
153 const { boardId, tenantId } = params; 152 const { boardId, tenantId } = params;
154 - return defHttp.get({ 153 + return defHttp.get<ComponentInfoDetail>({
155 url: `${DataBoardShareUrl.GET_DATA_COMPONENT}/${boardId}/${tenantId}`, 154 url: `${DataBoardShareUrl.GET_DATA_COMPONENT}/${boardId}/${tenantId}`,
156 }); 155 });
157 }; 156 };
@@ -136,3 +136,7 @@ export interface MasterDeviceList { @@ -136,3 +136,7 @@ export interface MasterDeviceList {
136 id: string; 136 id: string;
137 name: string; 137 name: string;
138 } 138 }
  139 +
  140 +export interface ComponentInfoDetail {
  141 + data: { componentData: DataComponentRecord[]; componentLayout: Layout[] };
  142 +}
@@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
10 import { TextComponentDefaultConfig, TextComponentLayout, TextComponentValue } from './config'; 10 import { TextComponentDefaultConfig, TextComponentLayout, TextComponentValue } from './config';
11 import { SvgIcon } from '/@/components/Icon'; 11 import { SvgIcon } from '/@/components/Icon';
12 import { dateUtil } from '/@/utils/dateUtil'; 12 import { dateUtil } from '/@/utils/dateUtil';
  13 + import { min } from 'lodash';
13 const props = defineProps({ 14 const props = defineProps({
14 layout: { 15 layout: {
15 type: Object as PropType<TextComponentLayout>, 16 type: Object as PropType<TextComponentLayout>,
@@ -66,8 +67,8 @@ @@ -66,8 +67,8 @@
66 prefix="iconfont" 67 prefix="iconfont"
67 :style="{ 68 :style="{
68 color: props.value.iconColor, 69 color: props.value.iconColor,
69 - width: fontSize({ radio: getRadio, basic: 50 }),  
70 - height: fontSize({ radio: getRadio, basic: 50 }), 70 + width: fontSize({ radio: getRadio, basic: 50, min: 16 }),
  71 + height: fontSize({ radio: getRadio, basic: 50, min: 16 }),
71 }" 72 }"
72 /> 73 />
73 </div> 74 </div>
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 id: string; 15 id: string;
16 } 16 }
17 17
18 - const emit = defineEmits(['submit', 'register']); 18 + const emit = defineEmits(['submit', 'update', 'create', 'register']);
19 19
20 const ROUTE = useRoute(); 20 const ROUTE = useRoute();
21 21
@@ -75,7 +75,7 @@ @@ -75,7 +75,7 @@
75 const handleUpdateComponent = async (value: Recordable) => { 75 const handleUpdateComponent = async (value: Recordable) => {
76 try { 76 try {
77 changeOkLoading(true); 77 changeOkLoading(true);
78 - await updateDataComponent({ 78 + const res = await updateDataComponent({
79 boardId: unref(boardId), 79 boardId: unref(boardId),
80 record: { 80 record: {
81 id: unref(componentRecord).i, 81 id: unref(componentRecord).i,
@@ -86,7 +86,8 @@ @@ -86,7 +86,8 @@
86 }); 86 });
87 createMessage.success('修改成功'); 87 createMessage.success('修改成功');
88 closeModal(); 88 closeModal();
89 - emit('submit'); 89 + // emit('submit');
  90 + emit('update', res.data.id);
90 } catch (error) { 91 } catch (error) {
91 // createMessage.error('修改失败'); 92 // createMessage.error('修改失败');
92 } finally { 93 } finally {
@@ -39,8 +39,19 @@ export const calcScale = ( @@ -39,8 +39,19 @@ export const calcScale = (
39 }; 39 };
40 }; 40 };
41 41
42 -export const fontSize = ({ radio, basic, max }: { radio: number; basic: number; max?: number }) => { 42 +export const fontSize = ({
  43 + radio,
  44 + basic,
  45 + max,
  46 + min,
  47 +}: {
  48 + radio: number;
  49 + basic: number;
  50 + max?: number;
  51 + min?: number;
  52 +}) => {
43 let res = basic * radio; 53 let res = basic * radio;
44 if (max && res > max) res = max; 54 if (max && res > max) res = max;
  55 + if (min && res < min) res = min;
45 return res + 'px'; 56 return res + 'px';
46 }; 57 };
@@ -24,7 +24,12 @@ @@ -24,7 +24,12 @@
24 } from '/@/api/dataBoard'; 24 } from '/@/api/dataBoard';
25 import { useRoute, useRouter } from 'vue-router'; 25 import { useRoute, useRouter } from 'vue-router';
26 import { computed, unref } from '@vue/reactivity'; 26 import { computed, unref } from '@vue/reactivity';
27 - import { DataComponentRecord, DataSource, Layout } from '/@/api/dataBoard/model'; 27 + import {
  28 + ComponentInfoDetail,
  29 + DataComponentRecord,
  30 + DataSource,
  31 + Layout,
  32 + } from '/@/api/dataBoard/model';
28 import { frontComponentMap } from './config/help'; 33 import { frontComponentMap } from './config/help';
29 import { calcScale } from './config/util'; 34 import { calcScale } from './config/util';
30 import { useMessage } from '/@/hooks/web/useMessage'; 35 import { useMessage } from '/@/hooks/web/useMessage';
@@ -98,6 +103,9 @@ @@ -98,6 +103,9 @@
98 width = 100; 103 width = 100;
99 } 104 }
100 105
  106 + data.width = newWPx;
  107 + data.height = newHPx;
  108 +
101 data.record.dataSource = data?.record.dataSource.map((item) => { 109 data.record.dataSource = data?.record.dataSource.map((item) => {
102 if (!item.uuid) item.uuid = buildUUID(); 110 if (!item.uuid) item.uuid = buildUUID();
103 return { 111 return {
@@ -194,7 +202,7 @@ @@ -194,7 +202,7 @@
194 try { 202 try {
195 return await getDataComponent(unref(getBoardId)); 203 return await getDataComponent(unref(getBoardId));
196 } catch (error) {} 204 } catch (error) {}
197 - return []; 205 + return {} as ComponentInfoDetail;
198 }; 206 };
199 207
200 const getSharePageComponentData = async () => { 208 const getSharePageComponentData = async () => {
@@ -202,7 +210,7 @@ @@ -202,7 +210,7 @@
202 const params = unref(getSharePageParams); 210 const params = unref(getSharePageParams);
203 return await getShareBoardComponentInfo(params); 211 return await getShareBoardComponentInfo(params);
204 } catch (error) {} 212 } catch (error) {}
205 - return []; 213 + return {} as ComponentInfoDetail;
206 }; 214 };
207 215
208 const getDataBoradDetail = async () => { 216 const getDataBoradDetail = async () => {
@@ -211,7 +219,7 @@ @@ -211,7 +219,7 @@
211 ? await getSharePageComponentData() 219 ? await getSharePageComponentData()
212 : await getBasePageComponentData(); 220 : await getBasePageComponentData();
213 } catch (error) {} 221 } catch (error) {}
214 - return []; 222 + return {} as ComponentInfoDetail;
215 }; 223 };
216 224
217 const loading = ref(false); 225 const loading = ref(false);
@@ -245,6 +253,35 @@ @@ -245,6 +253,35 @@
245 } 253 }
246 }; 254 };
247 255
  256 + const handleUpdateComponent = async (id: string) => {
  257 + try {
  258 + loading.value = true;
  259 + const data = await getDataBoradDetail();
  260 + const updateIndex = data.data.componentData.findIndex((item) => item.id === id);
  261 + const originalIndex = unref(dataBoardList).findIndex((item) => item.i === id);
  262 +
  263 + const newUpdateData = data.data.componentData[updateIndex];
  264 + const originalData = unref(dataBoardList)[originalIndex];
  265 + dataBoardList.value[updateIndex] = {
  266 + i: id,
  267 + w: originalData.w || DEFAULT_WIDGET_WIDTH,
  268 + h: originalData.h || DEFAULT_WIDGET_HEIGHT,
  269 + x: originalData.x || 0,
  270 + y: originalData.y || 0,
  271 + width: originalData.width,
  272 + height: originalData.height,
  273 + record: newUpdateData,
  274 + };
  275 + console.log(dataBoardList.value[updateIndex]);
  276 + updateSize(id, 0, 0, originalData.height || 0, originalData.width || 0);
  277 +
  278 + // beginSendMessage();
  279 + } catch (error) {
  280 + } finally {
  281 + loading.value = false;
  282 + }
  283 + };
  284 +
248 const getComponent = (record: DataComponentRecord) => { 285 const getComponent = (record: DataComponentRecord) => {
249 const frontComponent = record.frontId; 286 const frontComponent = record.frontId;
250 const component = frontComponentMap.get(frontComponent as WidgetComponentType); 287 const component = frontComponentMap.get(frontComponent as WidgetComponentType);
@@ -392,7 +429,11 @@ @@ -392,7 +429,11 @@
392 <Empty v-if="!dataBoardList.length" /> 429 <Empty v-if="!dataBoardList.length" />
393 </Spin> 430 </Spin>
394 </section> 431 </section>
395 - <DataBindModal @register="register" @submit="getDataBoardComponent" /> 432 + <DataBindModal
  433 + @register="register"
  434 + @update="handleUpdateComponent"
  435 + @submit="getDataBoardComponent"
  436 + />
396 <HistoryTrendModal @register="registerHistoryDataModal" /> 437 <HistoryTrendModal @register="registerHistoryDataModal" />
397 </section> 438 </section>
398 </template> 439 </template>
@@ -5,4 +5,6 @@ export type FrontDataSourceRecord = DataSource; @@ -5,4 +5,6 @@ export type FrontDataSourceRecord = DataSource;
5 5
6 export type DataBoardLayoutInfo = Layout & { 6 export type DataBoardLayoutInfo = Layout & {
7 record: DataComponentRecord; 7 record: DataComponentRecord;
  8 + width?: number;
  9 + height?: number;
8 }; 10 };