Browse Source

Merge branch 'master' of http://182.92.126.35:3000/hrx/mky-vent-base

lxh 8 months ago
parent
commit
3275d7812f

+ 3 - 2
src/components/Form/src/jeecg/components/JAddInput.vue

@@ -1,7 +1,7 @@
 <template>
   <div v-for="(param, index) in dynamicInput.params" :key="index" style="display: flex">
-    <a-input placeholder="请输入参数key" v-model:value="param.label" style="width: 30%; margin-bottom: 5px" @input="emitChange" />
-    <a-input placeholder="请输入参数value" v-model:value="param.value" style="width: 30%; margin: 0 0 5px 5px" @input="emitChange" />
+    <a-input :placeholder="placeholders[0]" v-model:value="param.label" style="width: 30%; margin-bottom: 5px" @input="emitChange" />
+    <a-input :placeholder="placeholders[1]" v-model:value="param.value" style="width: 30%; margin: 0 0 5px 5px" @input="emitChange" />
     <MinusCircleOutlined
       v-if="dynamicInput.params.length > min"
       class="dynamic-delete-button"
@@ -34,6 +34,7 @@
       //update-begin---author:wangshuai ---date:20220516  for:[VUEN-1043]系统编码规则,最后一个输入框不能删除------------
       //自定义删除按钮多少才会显示
       min: propTypes.integer.def(1),
+      placeholders: propTypes.array.def(['请输入参数key', '请输入参数value']),
       //update-end---author:wangshuai ---date:20220516  for:[VUEN-1043]系统编码规则,最后一个输入框不能删除--------------
     },
     emits: ['change', 'update:value'],

+ 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 });
 };

+ 12 - 2
src/views/vent/deviceManager/configurationTable/configuration.data.ts

@@ -79,11 +79,21 @@ export const formSchema: FormSchema[] = [
     },
   },
   {
-    label: '所展示点位及名称',
-    field: 'moduleData',
+    label: '主要内容配置',
+    field: 'moduleData.list',
     component: 'JAddInput',
     componentProps: {
       min: 0,
+      placeholders: ['请输入点位', '请输入名称'],
+    },
+  },
+  {
+    label: '图表内容配置',
+    field: 'moduleData.chart',
+    component: 'JAddInput',
+    componentProps: {
+      min: 0,
+      placeholders: ['请输入点位', '请输入名称'],
     },
   },
 ];

+ 2 - 1
src/views/vent/deviceManager/configurationTable/index.vue

@@ -1,3 +1,4 @@
+<!-- eslint-disable vue/multi-word-component-names -->
 <template>
   <div class="device-manager-box">
     <NormalTable
@@ -15,7 +16,7 @@
 </template>
 
 <script lang="ts" name="system-user" setup>
-  //ts语法
+  // 相关文档请参阅 vent/home/configurable/README.md
   import { ref } from 'vue';
   import NormalTable from '../comment/NormalTable.vue';
   import { list, deleteById, saveOrUpdate } from './configuration.api';