Przeglądaj źródła

[Wip 0000] 首页配置图表功能开发

houzekong 8 miesięcy temu
rodzic
commit
5800c9c1af

+ 45 - 0
src/views/vent/deviceManager/configurationTable/adapters.ts

@@ -0,0 +1,45 @@
+import _ from 'lodash-es';
+
+/** 将 formData 格式化为 api 需要的格式 */
+export function parseFormDataToParams(formData: Record<string, number | string | undefined>) {
+  const params = {};
+  _.forEach(formData, (v: string | undefined, k) => {
+    // 如果是以 moduleData 打头的数据要特殊处理,因为这是配置的主要项目,表单配置见 ./configuration.data
+    if (v && k.startsWith('moduleData')) {
+      _.set(params, k, JSON.parse(v));
+    } else {
+      _.set(params, k, v);
+    }
+  });
+
+  return params;
+}
+
+/** 将 api 返回的 moduleData 格式化为可用的对象,如果传入了 data,那么会返回带数据的配置,否则返回默认配置 */
+export function parseModuleDataToObject(moduleData: string): { chart: { label: string; prop: string }[]; list: { label: string; prop: string }[] };
+export function parseModuleDataToObject(
+  moduleData: string,
+  data: any
+): { chart: { label: string; value: string }[]; list: { label: string; value: string }[] };
+
+export function parseModuleDataToObject(moduleData: string, data?: any) {
+  const raw = JSON.parse(moduleData);
+  if (data) {
+    return {
+      chart: _.map(_.get(raw, 'chart', []), (label, prop) => {
+        return { label, value: _.get(data, prop, '/') };
+      }),
+      list: _.map(_.get(raw, 'list', []), (label, prop) => {
+        return { label, value: _.get(data, prop, '/') };
+      }),
+    };
+  }
+  return {
+    chart: _.map(_.get(raw, 'chart', []), (label, prop) => {
+      return { label, prop };
+    }),
+    list: _.map(_.get(raw, 'list', []), (label, prop) => {
+      return { label, prop };
+    }),
+  };
+}

+ 4 - 2
src/views/vent/deviceManager/configurationTable/configuration.api.ts

@@ -1,3 +1,4 @@
+import { parseFormDataToParams } from './adapters';
 import { defHttp } from '/@/utils/http/axios';
 
 enum Api {
@@ -41,10 +42,11 @@ export const deleteById = (params, handleSuccess) => {
 // };
 
 /**
- * 保存或者更新
+ * 保存或者更新,额外的,
  * @param params
  */
-export const saveOrUpdate = (params, isUpdate) => {
+export const saveOrUpdate = (formData: Record<string, number | string | undefined>, isUpdate) => {
   const url = isUpdate ? Api.edit : Api.save;
+  const params = parseFormDataToParams(formData);
   return isUpdate ? defHttp.post({ url: url, params }) : defHttp.post({ url: url, params });
 };