zhuoyuan.wang
2024-06-19 15ebe96f28cadec6a726c5324593a40bbf56205f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<template>
  <app-page-form v-bind="pageFormProps" v-loading="appStore.getLoading('getEntity')">
    <base-info v-bind="baseInfoProps"/>
    <workbook-table v-bind="workbookTableProps"/>
    <joint-table v-bind="jointTableProps"/>
    <filter-table v-bind="filterTableProps"/>
  </app-page-form>
</template>
 
<script setup>
 
import BaseInfo from './BaseInfo';
import WorkbookTable from './WorkbookTable';
import FilterTable from './FilterTable';
import JointTable from './JointTable';
import {closeTab} from '@/utils/iframe.js';
import {useAppStore, useEntityStore} from "@/store/modules";
import {convertFilter} from "@/utils/filter.js";
 
const entityStore = useEntityStore();
const appStore = useAppStore();
 
const router = useRouter();
 
const baseInfoRef = ref();
 
const baseInfoProps = {
  ref: baseInfoRef,
}
 
const params = router.currentRoute.value.query;
 
const onReset = async () => {
  if (params.id) {
    const [plan, join] = await Promise.all([
      entityStore.getEntity({
        dataName: "pkg_plan",
        filter: convertFilter({
          andEqParams: {
            id: params.id
          }
        })
      }),
      entityStore.getEntity({
        dataName: "pkg_plan_joins",
        filter: convertFilter({
          andEqParams: {
            id: params.id
          }
        })
      }),
    ]);
    const {fee_model_plan, fee_model_workbook} = plan.data;
    const {fee_model_filter, fee_model_joint} = join.data;
 
    await nextTick();
    baseInfoRef.value.onSetData(fee_model_plan);
    workbookTableRef.value.onSetData(fee_model_workbook);
    filterTableRef.value.onSetData(fee_model_filter);
    jointTableRef.value.onSetData(fee_model_joint);
    return;
  }
  baseInfoRef.value.onSetData({});
  workbookTableRef.value.onSetData([]);
  filterTableRef.value.onSetData([]);
  jointTableRef.value.onSetData([]);
 
}
 
onMounted(async () => {
  await onReset();
});
 
const workbookTableRef = ref();
 
const workbookTableProps = {
  ref: workbookTableRef,
}
 
const jointTableRef = ref();
 
const jointTableProps = {
  ref: jointTableRef,
  subOpenDialog(row) {
    row.bookList = workbookTableRef.value.onGetData();
  }
};
 
 
const filterTableRef = ref();
 
const filterTableProps = {
  ref: filterTableRef,
  subOpenDialog(row) {
    row.bookList = workbookTableRef.value.onGetData();
  }
}
 
const pageFormProps = {
  subClose() {
    closeTab();
  },
  async subSubmit() {
    const fee_model_plan = await baseInfoRef.value.onGetData();
    const fee_model_workbook = await workbookTableRef.value.onGetData();
    const fee_model_filter = await filterTableRef.value.onGetData();
    const fee_model_joint = await jointTableRef.value.onGetData();
    const {data} = await entityStore.saveEntity({
      dataName: 'pkg_plan',
      data: {
        fee_model_plan,
        fee_model_workbook
      }
    });
    const planKeys = Object.keys(data.fee_model_plan);
    await entityStore.saveEntity({
      dataName: 'pkg_plan_joins',
      data: {
        fee_model_plan: Object.fromEntries(planKeys.map(key => [key, data.fee_model_plan[key] || ''])),
        fee_model_filter,
        fee_model_joint
      }
    });
    closeTab();
  },
  async subReset() {
    await onReset();
  },
}
 
</script>