Ver código fonte

[Fix 0000]修复编辑之后表格数据不更新问题

bobo04052021@163.com 2 dias atrás
pai
commit
d4e15216fc

+ 4 - 3
src/views/vent/deviceManager/comment/warningTabel/RuleTableModal.vue

@@ -19,8 +19,8 @@ import { BasicForm, useForm } from '/@/components/Form/index';
 import { BasicModal, useModalInner, useModal } from '/@/components/Modal';
 import type { FormSchema } from '/@/components/Form/src/types/form';
 import { Select, message } from 'ant-design-vue';
-import DevicePointTable from '../../../../deviceManager/comment/DevicePointTable.vue';
-import { workFacePointList } from '../../../../deviceManager/comment/warningTabel/warning.api';
+import DevicePointTable from './DevicePointTable.vue';
+import { workFacePointList } from './warning.api';
 
 const props = defineProps({
   formSchemas: {
@@ -33,7 +33,7 @@ const props = defineProps({
     default: '2',
   },
 });
-const emit = defineEmits(['add', 'update', 'register']);
+const emit = defineEmits(['add', 'update', 'register', 'success']);
 const option = ref<any[]>([]);
 const devicePointList = ref<any[]>([]);
 const pointData = ref<String[]>([]);
@@ -81,6 +81,7 @@ async function onSubmit() {
       emit('add', 'add', values);
     } else {
       emit('update', 'update', values);
+      emit('success');
     }
     // //关闭弹窗
     // closeModal();

+ 5 - 2
src/views/vent/home/configurable/components/ModuleCommonHsq.vue

@@ -16,6 +16,7 @@
             :moduleData="moduleData"
             :data="selectedData"
             :chartData="chartData"
+            @table-refresh="refreshTableData"
           />
         </slot>
       </template>
@@ -46,8 +47,10 @@ const props = defineProps<{
   visible: boolean;
   chartData?: any;
 }>();
-defineEmits(['close', 'click']);
-
+const emit = defineEmits(['close', 'click', 'table-refresh']);
+const refreshTableData = () => {
+  emit('table-refresh');
+};
 const { header } = props.moduleData;
 const selectedData = ref();
 

+ 12 - 1
src/views/vent/home/configurable/components/content.vue

@@ -223,7 +223,13 @@
           <SystemView></SystemView>
         </template>
         <template v-if="config.name === 'rule_table'">
-          <RuleTable :config="config.config" :data="config.data" :selected-row="selectRuleRow" @row-change="onRowClick"></RuleTable>
+          <RuleTable
+            :config="config.config"
+            :data="config.data"
+            :selected-row="selectRuleRow"
+            @row-change="onRowClick"
+            @table-refresh="handleTableRefresh"
+          ></RuleTable>
         </template>
         <template v-if="config.name === 'link_log'"> <LinkLog></LinkLog> </template>
         <template v-if="config.name === 'rule_num'"> <RuleNum></RuleNum> </template>
@@ -307,6 +313,11 @@ const selectRuleRow = ref<null | Record<string, any>>(null);
 const onRowClick = (singleRow) => {
   selectRuleRow.value = singleRow;
 };
+const emit = defineEmits(['table-refresh']);
+// 接收 RuleTable 子组件刷新信号,向上抛给顶层父组件
+const handleTableRefresh = () => {
+  emit('table-refresh');
+};
 // 获取当原始配置带 items 项时的最终 items 配置
 function getItems(raw, items: CommonItem[]) {
   return items.map((i) => {

+ 18 - 6
src/views/vent/home/configurable/components/preset/ruleTable.vue

@@ -83,7 +83,13 @@
       :select-sys-alarm-id="currentSelectInfo.alarmId"
       :select-sys-id="currentSelectInfo.sysId"
     />
-    <RuleTableModal @register="register" @update="onSubmit" :destroy-on-close="true" :form-schemas="workFaceWarningSchemas" />
+    <RuleTableModal
+      @register="register"
+      @update="onSubmit"
+      :destroy-on-close="true"
+      @success="handleModalSuccess"
+      :form-schemas="workFaceWarningSchemas"
+    />
   </div>
 </template>
 
@@ -107,7 +113,7 @@ const isUpdate = ref(false);
 const instanceId = ref(`${Date.now()}_${Math.floor(Math.random() * 10000)}`);
 const [registerModal, { openModal, closeModal }] = useModal(instanceId.value);
 const linkRuleStore = useLinkRuleStore();
-const emit = defineEmits(['row-change']);
+const emit = defineEmits(['row-change', 'table-refresh']);
 const currentSelectInfo = ref({
   sysId: '',
   alarmId: '',
@@ -157,7 +163,10 @@ const handleEditClick = (row: any) => {
     record: row,
   });
 };
-
+// 弹窗保存成功触发
+const handleModalSuccess = () => {
+  emit('table-refresh');
+};
 const workFaceWarningSchemas: FormSchema[] = [
   ...workFaceWarningFormSchemas,
   {
@@ -200,6 +209,8 @@ const [register, { openModal: openModalRule, closeModal: closeModalRule }] = use
 async function onSubmit(flag, values) {
   await warningLogEdit(values);
   closeModalRule();
+  // 通知外层刷新表格
+  handleModalSuccess();
 }
 // C类型数据源
 const tableList = ref<any[]>([]);
@@ -261,9 +272,10 @@ onMounted(() => {
 
 // 监听父组件传入数据,赋值给tableList(Type为C时生效)
 watch(
-  () => props.data?.[props.config.tableReadFrom],
-  (newArr) => {
-    tableList.value = newArr || [];
+  () => props.data,
+  (newData) => {
+    const list = newData?.[props.config.tableReadFrom];
+    tableList.value = list || [];
     autoSelectFirstRow();
   },
   { deep: true, immediate: true }

+ 10 - 3
src/views/vent/home/configurable/linkConfiguration.vue

@@ -9,6 +9,7 @@
       :device-type="cfg.deviceType"
       :data="data"
       :visible="true"
+      @table-refresh="handleTableRefresh"
     />
   </div>
 </template>
@@ -34,10 +35,16 @@ onMounted(() => {
 // 刷新数据
 async function refresh() {
   const res = await warningList({ sysId: '2074416476136718337' });
-  warnResult.value.warnInfo = res.records;
-  updateData(warnResult.value);
+  const newWarnData = {
+    ...warnResult.value,
+    warnInfo: res.records,
+  };
+  warnResult.value = newWarnData;
+  updateData(newWarnData);
 }
-
+const handleTableRefresh = async () => {
+  await refresh();
+};
 watch(
   () => data.value,
   (newData, oldData) => {}