@maketribe/ms-app 3.0.11 → 3.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/cjs/components/data-model/data-filter-form/composables/use-condition.js +14 -14
  2. package/dist/cjs/components/data-model/data-filter-form/composables/use-condition.js.map +1 -1
  3. package/dist/cjs/components/data-model/data-filter-form/data-filter-form-item/data-filter-form-item.js +1 -1
  4. package/dist/cjs/components/data-model/data-filter-form/data-filter-form-item/data-filter-form-item.js.map +1 -1
  5. package/dist/cjs/components/data-model/data-filter-form/data-filter-form-options.d.ts +3 -3
  6. package/dist/cjs/components/data-model/data-filter-form/data-filter-form-options.js +2 -1
  7. package/dist/cjs/components/data-model/data-filter-form/data-filter-form-options.js.map +1 -1
  8. package/dist/cjs/components/data-model/data-filter-form/data-filter-form.d.ts +4 -4
  9. package/dist/cjs/components/data-model/data-filter-form/data-filter-form.js +34 -5
  10. package/dist/cjs/components/data-model/data-filter-form/data-filter-form.js.map +1 -1
  11. package/dist/cjs/components/data-model/data-filter-form/index.d.ts +4 -4
  12. package/dist/cjs/components/data-model/data-filter-form/token.d.ts +1 -0
  13. package/dist/cjs/components/data-model/data-filter-form/token.js.map +1 -1
  14. package/dist/cjs/components/data-model/data-filter-popover/data-filter-popover.js +4 -3
  15. package/dist/cjs/components/data-model/data-filter-popover/data-filter-popover.js.map +1 -1
  16. package/dist/cjs/components/data-model/data-form/data-form.js +1 -1
  17. package/dist/cjs/components/data-model/data-form/data-form.js.map +1 -1
  18. package/dist/cjs/components/data-model/data-table/data-table.js +0 -1
  19. package/dist/cjs/components/data-model/data-table/data-table.js.map +1 -1
  20. package/dist/cjs/components/data-model/data-table/views/table-view/table-view.js +35 -30
  21. package/dist/cjs/components/data-model/data-table/views/table-view/table-view.js.map +1 -1
  22. package/dist/cjs/components/material-list/material-group-form-popover.vue2.js +8 -1
  23. package/dist/cjs/components/material-list/material-group-form-popover.vue2.js.map +1 -1
  24. package/dist/cjs/components/material-list/material-group.vue2.js +9 -7
  25. package/dist/cjs/components/material-list/material-group.vue2.js.map +1 -1
  26. package/dist/cjs/components/system-provider/system-provider.d.ts +7 -0
  27. package/dist/cjs/components/system-provider/system-provider.js +29 -46
  28. package/dist/cjs/components/system-provider/system-provider.js.map +1 -1
  29. package/dist/cjs/core/Router.d.ts +1 -11
  30. package/dist/cjs/core/Router.js +0 -22
  31. package/dist/cjs/core/Router.js.map +1 -1
  32. package/dist/cjs/core/UserSession.js +0 -12
  33. package/dist/cjs/core/UserSession.js.map +1 -1
  34. package/dist/cjs/core/tabs/Tabs.js +1 -8
  35. package/dist/cjs/core/tabs/Tabs.js.map +1 -1
  36. package/dist/cjs/dataview/material/MaterialMan.d.ts +1 -1
  37. package/dist/cjs/dataview/material/MaterialMan.js +1 -1
  38. package/dist/cjs/dataview/material/MaterialMan.js.map +1 -1
  39. package/dist/cjs/dataview/member/MemberTable.d.ts +1 -2
  40. package/dist/cjs/dataview/member/MemberTable.js +9 -3
  41. package/dist/cjs/dataview/member/MemberTable.js.map +1 -1
  42. package/dist/cjs/dataview/menu/MenuTable.js.map +1 -1
  43. package/dist/cjs/dataview/role/RoleTable.js.map +1 -1
  44. package/dist/cjs/layouts/components/bar/index.js +2 -2
  45. package/dist/cjs/layouts/components/bar/index.js.map +1 -1
  46. package/dist/cjs/layouts/components/menu/index.js +2 -2
  47. package/dist/cjs/layouts/components/menu/index.js.map +1 -1
  48. package/dist/cjs/page/index/dv/ms-member/index.vue2.js +53 -11
  49. package/dist/cjs/page/index/dv/ms-member/index.vue2.js.map +1 -1
  50. package/dist/cjs/router-middleware/auth.js +0 -19
  51. package/dist/cjs/router-middleware/auth.js.map +1 -1
  52. package/dist/esm/components/data-model/data-filter-form/composables/use-condition.js +14 -14
  53. package/dist/esm/components/data-model/data-filter-form/composables/use-condition.js.map +1 -1
  54. package/dist/esm/components/data-model/data-filter-form/data-filter-form-item/data-filter-form-item.js +1 -1
  55. package/dist/esm/components/data-model/data-filter-form/data-filter-form-item/data-filter-form-item.js.map +1 -1
  56. package/dist/esm/components/data-model/data-filter-form/data-filter-form-options.d.ts +3 -3
  57. package/dist/esm/components/data-model/data-filter-form/data-filter-form-options.js +3 -2
  58. package/dist/esm/components/data-model/data-filter-form/data-filter-form-options.js.map +1 -1
  59. package/dist/esm/components/data-model/data-filter-form/data-filter-form.d.ts +4 -4
  60. package/dist/esm/components/data-model/data-filter-form/data-filter-form.js +35 -6
  61. package/dist/esm/components/data-model/data-filter-form/data-filter-form.js.map +1 -1
  62. package/dist/esm/components/data-model/data-filter-form/index.d.ts +4 -4
  63. package/dist/esm/components/data-model/data-filter-form/token.d.ts +1 -0
  64. package/dist/esm/components/data-model/data-filter-form/token.js.map +1 -1
  65. package/dist/esm/components/data-model/data-filter-popover/data-filter-popover.js +5 -4
  66. package/dist/esm/components/data-model/data-filter-popover/data-filter-popover.js.map +1 -1
  67. package/dist/esm/components/data-model/data-form/data-form.js +1 -1
  68. package/dist/esm/components/data-model/data-form/data-form.js.map +1 -1
  69. package/dist/esm/components/data-model/data-table/data-table.js +0 -1
  70. package/dist/esm/components/data-model/data-table/data-table.js.map +1 -1
  71. package/dist/esm/components/data-model/data-table/views/table-view/table-view.js +35 -30
  72. package/dist/esm/components/data-model/data-table/views/table-view/table-view.js.map +1 -1
  73. package/dist/esm/components/material-list/material-group-form-popover.vue2.js +8 -1
  74. package/dist/esm/components/material-list/material-group-form-popover.vue2.js.map +1 -1
  75. package/dist/esm/components/material-list/material-group.vue2.js +9 -7
  76. package/dist/esm/components/material-list/material-group.vue2.js.map +1 -1
  77. package/dist/esm/components/system-provider/system-provider.d.ts +7 -0
  78. package/dist/esm/components/system-provider/system-provider.js +30 -47
  79. package/dist/esm/components/system-provider/system-provider.js.map +1 -1
  80. package/dist/esm/core/Router.d.ts +1 -11
  81. package/dist/esm/core/Router.js +1 -23
  82. package/dist/esm/core/Router.js.map +1 -1
  83. package/dist/esm/core/UserSession.js +0 -12
  84. package/dist/esm/core/UserSession.js.map +1 -1
  85. package/dist/esm/core/tabs/Tabs.js +1 -8
  86. package/dist/esm/core/tabs/Tabs.js.map +1 -1
  87. package/dist/esm/dataview/material/MaterialMan.d.ts +1 -1
  88. package/dist/esm/dataview/material/MaterialMan.js +1 -1
  89. package/dist/esm/dataview/material/MaterialMan.js.map +1 -1
  90. package/dist/esm/dataview/member/MemberTable.d.ts +1 -2
  91. package/dist/esm/dataview/member/MemberTable.js +10 -4
  92. package/dist/esm/dataview/member/MemberTable.js.map +1 -1
  93. package/dist/esm/dataview/menu/MenuTable.js.map +1 -1
  94. package/dist/esm/dataview/role/RoleTable.js.map +1 -1
  95. package/dist/esm/layouts/components/bar/index.js +2 -2
  96. package/dist/esm/layouts/components/bar/index.js.map +1 -1
  97. package/dist/esm/layouts/components/menu/index.js +2 -2
  98. package/dist/esm/layouts/components/menu/index.js.map +1 -1
  99. package/dist/esm/page/index/dv/ms-member/index.vue2.js +54 -12
  100. package/dist/esm/page/index/dv/ms-member/index.vue2.js.map +1 -1
  101. package/dist/esm/router-middleware/auth.js +0 -19
  102. package/dist/esm/router-middleware/auth.js.map +1 -1
  103. package/dist/style/components/data-filter-popover.css +1 -1
  104. package/dist/style/components/data-filter.css +1 -1
  105. package/dist/style/components/index.css +1 -1
  106. package/dist/style/index.css +2 -2
  107. package/dist/style/src/components/data-filter-popover.scss +3 -3
  108. package/dist/style/src/components/data-filter.scss +0 -1
  109. package/dist/style/src/index.scss +9 -0
  110. package/package.json +4 -4
  111. package/src/components/data-model/data-filter-form/composables/use-condition.ts +19 -16
  112. package/src/components/data-model/data-filter-form/data-filter-form-item/data-filter-form-item.tsx +7 -4
  113. package/src/components/data-model/data-filter-form/data-filter-form-options.ts +3 -2
  114. package/src/components/data-model/data-filter-form/data-filter-form.tsx +51 -6
  115. package/src/components/data-model/data-filter-form/token.ts +1 -0
  116. package/src/components/data-model/data-filter-popover/data-filter-popover.tsx +4 -3
  117. package/src/components/data-model/data-form/data-form.tsx +3 -1
  118. package/src/components/data-model/data-table/data-table.tsx +5 -1
  119. package/src/components/data-model/data-table/views/table-view/table-view.tsx +43 -35
  120. package/src/components/material-list/material-group-form-popover.vue +4 -2
  121. package/src/components/material-list/material-group.vue +13 -7
  122. package/src/components/system-provider/system-provider.tsx +52 -49
  123. package/src/core/Router.ts +0 -34
  124. package/src/core/UserSession.ts +0 -18
  125. package/src/core/tabs/Tabs.ts +20 -9
  126. package/src/dataview/material/MaterialMan.ts +1 -1
  127. package/src/dataview/member/MemberTable.tsx +12 -4
  128. package/src/dataview/menu/MenuTable.ts +1 -0
  129. package/src/dataview/role/RoleTable.ts +1 -0
  130. package/src/layouts/components/bar/index.tsx +3 -2
  131. package/src/layouts/components/menu/index.tsx +3 -2
  132. package/src/page/index/dv/ms-member/index.vue +3 -11
  133. package/src/router-middleware/auth.ts +0 -35
@@ -2,8 +2,8 @@
2
2
  &__footer {
3
3
  display: flex;
4
4
  justify-content: space-between;
5
- border-top: var(--ps-border);
6
- padding-top: var(--ps-spacing-middle);
7
- margin-top: var(--ps-spacing-large);
5
+ border-top: var(--mk-border);
6
+ padding-top: var(--mk-spacing-middle);
7
+ margin-top: var(--mk-spacing-large);
8
8
  }
9
9
  }
@@ -13,7 +13,6 @@
13
13
  padding: 0 10px;
14
14
  color: var(--el-input-text-color, var(--el-text-color-regular));
15
15
  font-size: 14px;
16
- box-sizing: border-box;
17
16
  text-align: right;
18
17
  &::after{
19
18
  content: " :";
@@ -2,3 +2,12 @@
2
2
  @use "./components/index.scss" as *;
3
3
  @use "./layouts" as *;
4
4
  @use "./page/index.scss" as *;
5
+
6
+ :root {
7
+ --mk-spacing-small: 5px;
8
+ --mk-spacing-middle: 10px;
9
+ --mk-spacing-large: 15px;
10
+
11
+ --mk-border-color: #cccccc;
12
+ --mk-border: 1px solid var(--mk-border-color);
13
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maketribe/ms-app",
3
- "version": "3.0.11",
3
+ "version": "3.0.13",
4
4
  "description": "",
5
5
  "main": "dist/cjs",
6
6
  "files": [
@@ -20,9 +20,9 @@
20
20
  "vue": "^3.3.4",
21
21
  "vue-codemirror": "^6.1.1",
22
22
  "vue-router": "^4.2.4",
23
- "@maketribe/dm": "^3.0.7",
24
- "@maketribe/utils": "^1.1.2",
25
- "@maketribe/request": "^1.1.8",
23
+ "@maketribe/utils": "^1.1.3",
24
+ "@maketribe/request": "^1.1.10",
25
+ "@maketribe/dm": "^3.0.8",
26
26
  "@maketribe/locale": "^1.0.5"
27
27
  },
28
28
  "scripts": {
@@ -39,22 +39,25 @@ export function useDataFilterCondition(options: DataFilterConditionOptions) {
39
39
 
40
40
  const currentOperator = computed(() => dataFilterItem.currentOperator);
41
41
 
42
- watch(
43
- currentOperator,
44
- () => {
45
- const defaultValue = options.defaultValue;
46
-
47
- if (unref(isBetween)) {
48
- dataFilterItem.column.defaultValue = [defaultValue, defaultValue];
49
- value.value = [defaultValue, defaultValue];
50
- return;
51
- }
52
-
53
- dataFilterItem.column.defaultValue = defaultValue;
54
- value.value = defaultValue;
55
- },
56
- { immediate: true }
57
- );
42
+ const calcDefaultValue = () => {
43
+ const defaultValue = options.defaultValue;
44
+
45
+ if (unref(isBetween)) {
46
+ return [defaultValue, defaultValue];
47
+ }
48
+
49
+ return defaultValue;
50
+ };
51
+
52
+ watch(currentOperator, () => {
53
+ const defaultValue = calcDefaultValue();
54
+
55
+ dataFilterItem.column.defaultValue = defaultValue;
56
+ value.value = defaultValue;
57
+ });
58
+
59
+ dataFilterItem.column.defaultValue = calcDefaultValue();
60
+ value.value = dataFilterItem.getValue() || calcDefaultValue();
58
61
 
59
62
  return {
60
63
  isBetween,
@@ -164,13 +164,16 @@ export default defineComponent({
164
164
  </ElSelect>
165
165
  ) : null;
166
166
 
167
- const labelWidth = computed(()=>100);
167
+ const labelWidth = computed(() => dataFilterContext.labelWidth);
168
168
 
169
169
  return (
170
170
  <div class="mk-data-filter-form-item">
171
- <div class="mk-data-filter-form-item__label" style={
172
- {width:labelWidth.value+"px"}
173
- }>{_filterColumn.label}</div>
171
+ <div
172
+ class="mk-data-filter-form-item__label"
173
+ style={{ width: labelWidth.value + "px" }}
174
+ >
175
+ {_filterColumn.label}
176
+ </div>
174
177
  {/* {operatorSelect} */}
175
178
  <div class="mk-data-filter-form-item__content">{children}</div>
176
179
  </div>
@@ -1,10 +1,11 @@
1
1
  import { ExtractPropTypes } from "vue";
2
- import { DataFilter } from "@maketribe/dm";
2
+ import { DataFilter, DataTable } from "@maketribe/dm";
3
3
  import { buildProps } from "@maketribe/utils";
4
4
  import dataFilterForm from "./data-filter-form";
5
5
 
6
6
  export const dataFilterFormProps = buildProps({
7
- dataFilter: { type: DataFilter, required: true },
7
+ // dataFilter: { type: DataFilter, required: true },
8
+ dataTable: { type: DataTable, required: true },
8
9
  } as const);
9
10
 
10
11
  export type DataFilterFormProps = ExtractPropTypes<typeof dataFilterFormProps>;
@@ -1,10 +1,14 @@
1
1
  import {
2
+ Fragment,
3
+ Suspense,
2
4
  computed,
3
5
  defineComponent,
4
- onMounted,
6
+ getCurrentInstance,
5
7
  provide,
6
8
  reactive,
7
9
  unref,
10
+ watch,
11
+ withCtx,
8
12
  } from "vue";
9
13
  import { dataFilterFormProps } from "./data-filter-form-options";
10
14
  import { MKDataFilterFormItem } from "./data-filter-form-item";
@@ -14,7 +18,8 @@ export default defineComponent({
14
18
  name: "MKDataFilterForm",
15
19
  props: dataFilterFormProps,
16
20
  setup(props, { slots }) {
17
- const dataFilter = computed(() => props.dataFilter);
21
+ const dataTable = computed(() => props.dataTable);
22
+ const dataFilter = computed(() => unref(dataTable).dataFilter);
18
23
 
19
24
  const columns = computed(() =>
20
25
  unref(dataFilter)
@@ -22,13 +27,47 @@ export default defineComponent({
22
27
  .filter((column) => column.visible)
23
28
  );
24
29
 
25
- provide(DATA_FILTER_CONTEXT, reactive({ dataFilter }));
30
+ const labelWidth = computed(() => {
31
+ const maxWordCount = Math.max(
32
+ ...unref(columns).map((column) => column.label.length)
33
+ );
26
34
 
27
- onMounted(() => {
28
- unref(dataFilter).setReady();
35
+ return maxWordCount * 14 + 10;
29
36
  });
30
37
 
38
+ provide(DATA_FILTER_CONTEXT, reactive({ dataFilter, labelWidth }));
39
+
40
+ const instance = getCurrentInstance();
41
+
42
+ const handleResolve = () => {
43
+ withCtx(() => {
44
+ watch(
45
+ dataFilter,
46
+ (dataFilter) => {
47
+ dataFilter.setReady();
48
+ },
49
+ { immediate: true }
50
+ );
51
+ }, instance)();
52
+ };
53
+
54
+ watch(
55
+ dataTable,
56
+ (dataTable) => {
57
+ dataTable.initdEvent.once(() => {
58
+ if (!dataTable.dataFilter.getColumns().length) {
59
+ dataTable.dataFilter.setReady();
60
+ }
61
+ });
62
+ },
63
+ { immediate: true }
64
+ );
65
+
31
66
  return () => {
67
+ if (!unref(columns).length) {
68
+ return null;
69
+ }
70
+
32
71
  let children: any = slots.default?.();
33
72
 
34
73
  if (!children) {
@@ -52,7 +91,13 @@ export default defineComponent({
52
91
  return null;
53
92
  }
54
93
 
55
- return <div class="mk-data-filter-form">{children}</div>;
94
+ return (
95
+ <div class="mk-data-filter-form">
96
+ <Suspense onResolve={handleResolve}>
97
+ <Fragment>{children}</Fragment>
98
+ </Suspense>
99
+ </div>
100
+ );
56
101
  };
57
102
  },
58
103
  });
@@ -4,6 +4,7 @@ import { OperatorOption } from "./operator-options";
4
4
 
5
5
  export interface DataFilterContext {
6
6
  dataFilter: DataFilter;
7
+ labelWidth: number;
7
8
  }
8
9
 
9
10
  export interface DataFilterItemContext {
@@ -8,10 +8,11 @@ export default defineComponent({
8
8
  name: "MKDataFilterPopover",
9
9
  props: dataFilterPopoverProps,
10
10
  setup(props, { slots }) {
11
- const dataFilter = computed(() => props.dataTable.dataFilter);
11
+ const dataTable = computed(() => props.dataTable);
12
+ const dataFilter = computed(() => unref(dataTable).dataFilter);
12
13
 
13
14
  const handleSearch = () => {
14
- props.dataTable.load();
15
+ unref(dataTable).load();
15
16
  };
16
17
 
17
18
  const handleReset = () => {
@@ -32,7 +33,7 @@ export default defineComponent({
32
33
  return (
33
34
  <div class="mk-data-filter-popover">
34
35
  <div class="mk-data-filter-popover__body">
35
- <MKDataFilterForm dataFilter={unref(dataFilter)} />
36
+ <MKDataFilterForm dataTable={unref(dataTable)} />
36
37
  </div>
37
38
  <div class="mk-data-filter-popover__footer">
38
39
  <ElButton onClick={handleReset}>重置</ElButton>
@@ -72,7 +72,9 @@ export default defineComponent({
72
72
  event: dataForm[key as keyof DataForm]! as Event,
73
73
  }));
74
74
 
75
- for (const item of events) {
75
+ for (const item of events.filter(
76
+ (event) => event.eventName in dataFormEmits
77
+ )) {
76
78
  disposable.register(
77
79
  // @ts-ignore
78
80
  item.event.on((event: any) => {
@@ -2,6 +2,7 @@ import { DataTable, TableColumn } from "@maketribe/dm";
2
2
  import {
3
3
  computed,
4
4
  defineComponent,
5
+ nextTick,
5
6
  provide,
6
7
  reactive,
7
8
  unref,
@@ -42,7 +43,10 @@ export default defineComponent({
42
43
  watch(
43
44
  dataTable,
44
45
  async (dataTable) => {
45
- dataTable.dataFilter.setReady();
46
+ // nextTick(() => {
47
+ // dataTable.dataFilter.setReady();
48
+ // });
49
+
46
50
  if (props.autoLoad) {
47
51
  dataTable.load();
48
52
  }
@@ -1,4 +1,4 @@
1
- import { Fragment, computed, defineComponent, unref } from "vue";
1
+ import { Fragment, VNode, computed, defineComponent, unref } from "vue";
2
2
  import { ElButton, ElCard } from "element-plus";
3
3
 
4
4
  import { MKButton } from "../../../../button";
@@ -45,44 +45,52 @@ export default defineComponent({
45
45
  classifySearch = <MKTableClassifySearch />;
46
46
  }
47
47
 
48
- const tools = !_dataTable.getSelection().length ? (
49
- <Fragment>
50
- <div class="header-box-main"></div>
51
- <div class="header-box-tools">
52
- <MKDataFilterPopover dataTable={_dataTable}>
53
- <ElButton>
54
- <MKSvgIcon iconClass="Filter" />
55
- </ElButton>
56
- </MKDataFilterPopover>
48
+ let tools: VNode;
57
49
 
58
- {buttons}
59
- </div>
60
- </Fragment>
61
- ) : (
62
- <div class="mk-table-view__selection-tip">
63
- <div class="mk-table-view__selection-tip-left">
64
- <span>
65
- 已选中
66
- <span class="selection-count">
67
- {_dataTable.getSelection().length}
50
+ if (!_dataTable.getSelection().length) {
51
+ tools = (
52
+ <Fragment>
53
+ <div class="header-box-main"></div>
54
+ <div class="header-box-tools">
55
+ <MKDataFilterPopover dataTable={_dataTable}>
56
+ <ElButton>
57
+ <MKSvgIcon iconClass="Filter" />
58
+ </ElButton>
59
+ </MKDataFilterPopover>
60
+ {buttons}
61
+ </div>
62
+ </Fragment>
63
+ );
64
+ } else {
65
+ tools = (
66
+ <div class="mk-table-view__selection-tip">
67
+ <div class="mk-table-view__selection-tip-left">
68
+ <span>
69
+ 已选中
70
+ <span class="selection-count">
71
+ {_dataTable.getSelection().length}
72
+ </span>
73
+
68
74
  </span>
69
-
70
- </span>
71
- </div>
72
- <div class="mk-table-view__selection-tip-right">
73
- {_dataTable.batchActionButtonTools.map((button) => (
74
- <MKButton
75
+ </div>
76
+ <div class="mk-table-view__selection-tip-right">
77
+ {_dataTable.batchActionButtonTools.map((button) => (
78
+ <MKButton
79
+ link
80
+ button={button}
81
+ onClick={() => button.handler()}
82
+ />
83
+ ))}
84
+ <ElButton
75
85
  link
76
- button={button}
77
- onClick={() => button.handler()}
78
- />
79
- ))}
80
- <ElButton link onClick={() => _dataTable.clearSelection()}>
81
- 取消选择
82
- </ElButton>
86
+ onClick={() => _dataTable.clearSelection()}
87
+ >
88
+ 取消选择
89
+ </ElButton>
90
+ </div>
83
91
  </div>
84
- </div>
85
- );
92
+ );
93
+ }
86
94
 
87
95
  return (
88
96
  <Fragment>
@@ -12,7 +12,9 @@
12
12
  </template>
13
13
 
14
14
  <div>
15
- <MKDataForm :data-form="materialGroupForm" v-loading="loading" />
15
+ <MKDataForm :data-form="materialGroupForm" v-loading="loading">
16
+ <MKForm :data-form="materialGroupForm" />
17
+ </MKDataForm>
16
18
  <div
17
19
  style="
18
20
  display: flex;
@@ -36,7 +38,7 @@
36
38
  <script setup lang="ts">
37
39
  import { Ref, computed, ref, unref } from "vue";
38
40
  import { ElMessage } from "element-plus";
39
- import { MKDataForm } from "../data-model/data-form";
41
+ import { MKDataForm, MKForm } from "../data-model/data-form";
40
42
  import { MaterialGroupForm, MaterialMan } from "../../dataview/material";
41
43
 
42
44
  const props = defineProps({
@@ -21,9 +21,8 @@
21
21
  :auto-load="false"
22
22
  :data-table="materialGroupTree"
23
23
  highlight-current
24
- @nodeClick="handleNodeClick"
25
24
  >
26
- <MKTree :data-tree="materialGroupTree">
25
+ <MKTree :data-tree="materialGroupTree" @nodeClick="handleNodeClick">
27
26
  <template #node-tools="{ data }">
28
27
  <div class="mk-material-group__tools" @click.stop>
29
28
  <ElTooltip content="添加">
@@ -32,7 +31,9 @@
32
31
  :material-man="materialMan"
33
32
  :material-group-form="materialGroupForm"
34
33
  >
35
- <ElIcon @click="handleAddClick(data)"><Plus /></ElIcon>
34
+ <ElIcon @click="handleAddClick(data.data)">
35
+ <Plus />
36
+ </ElIcon>
36
37
  </MaterialGroupFromPopper>
37
38
  </span>
38
39
  </ElTooltip>
@@ -42,13 +43,17 @@
42
43
  :material-man="materialMan"
43
44
  :material-group-form="materialGroupForm"
44
45
  >
45
- <ElIcon @click="handleEditClick(data)"><Edit /></ElIcon>
46
+ <ElIcon @click="handleEditClick(data.data)">
47
+ <Edit />
48
+ </ElIcon>
46
49
  </MaterialGroupFromPopper>
47
50
  </span>
48
51
  </ElTooltip>
49
52
  <ElTooltip content="删除">
50
53
  <span class="mk-material-group__tools-item">
51
- <ElIcon @click="handleDeleteClick(data)"><Delete /></ElIcon>
54
+ <ElIcon @click="handleDeleteClick(data.data)">
55
+ <Delete />
56
+ </ElIcon>
52
57
  </span>
53
58
  </ElTooltip>
54
59
  </div>
@@ -74,6 +79,7 @@ import { MKDataTable, MKTree } from "../data-model/data-table";
74
79
 
75
80
  import { useI18n } from "../../composables";
76
81
  import MaterialGroupFromPopper from "./material-group-form-popover.vue";
82
+ import { DataTreeNode } from "@maketribe/dm";
77
83
 
78
84
  const props = defineProps({
79
85
  materialMan: {
@@ -92,9 +98,9 @@ const materialGroupTree = computed(() => props.materialMan.materialGroupTree);
92
98
 
93
99
  const loading = computed(() => props.materialMan.materialGroupTree.loading);
94
100
 
95
- const handleNodeClick = (item: MaterialGroupNode) => {
101
+ const handleNodeClick = (item: DataTreeNode<MaterialGroupNode>) => {
96
102
  if (!item.children.length) {
97
- props.materialMan.setCurrentMaterialGroupId(item);
103
+ props.materialMan.setCurrentMaterialGroup(item.data);
98
104
  }
99
105
  };
100
106
 
@@ -1,10 +1,24 @@
1
- import { computed, defineComponent, renderSlot, unref, useSlots } from "vue";
1
+ import {
2
+ computed,
3
+ defineComponent,
4
+ renderSlot,
5
+ unref,
6
+ useSlots,
7
+ watch,
8
+ } from "vue";
2
9
  import { useRouter } from "vue-router";
3
10
  import { Components } from "@maketribe/dm";
4
- import { UserSession, MSAppClient } from "../../core";
5
- import { RouteType } from "../../constants";
11
+ import { MSAppClient } from "../../core";
6
12
  import { MKConfigProvider } from "../config-provider";
7
13
 
14
+ /**
15
+ * 路由变动的几种情况,
16
+ * 1.点击菜单跳转陆游
17
+ * 2.特定业务逻辑需要跳转路由
18
+ * 3.返回上一页
19
+ * 4.刷新页面
20
+ */
21
+
8
22
  export default defineComponent({
9
23
  name: "MKSystemProvider",
10
24
  setup() {
@@ -16,62 +30,51 @@ export default defineComponent({
16
30
 
17
31
  const slots = useSlots();
18
32
 
19
- function initUserSession(userSession: UserSession) {
20
- const tabs = userSession.tabs;
21
-
22
- const router = userSession.router;
33
+ watch(
34
+ computed(() => unref(vueRouter.currentRoute)),
35
+ (route) => {
36
+ const userSession = msAppClient.userSession;
23
37
 
24
- router.beforeRouteChange.on(async ({ routeInfo }) => {
25
- const currentTab = tabs.getCurrentTab();
26
-
27
- if (
28
- currentTab?.route.type === RouteType.ROUTE &&
29
- (await currentTab.beforeSwitchEvent.emitAsync()) === false
30
- ) {
31
- return false;
38
+ if (!userSession) {
39
+ return;
32
40
  }
33
41
 
34
- switch (routeInfo.type) {
35
- case RouteType.LINK:
36
- let a = document.createElement("a");
37
- a.href = routeInfo.path;
42
+ const router = userSession.router;
43
+ const menu = userSession.menu;
44
+ const tabs = userSession.tabs;
38
45
 
39
- window.open(a.href, "_blank");
46
+ const routeInfo = router.getRouteByName(route.name as string);
40
47
 
41
- return false;
42
- case RouteType.ROUTE:
43
- if (routeInfo.name === currentTab?.route.name) {
44
- return false;
45
- }
46
-
47
- break;
48
+ if (!routeInfo) {
49
+ menu.setCurrentMenuNode(null);
50
+ tabs.setCurrentTab(null);
51
+ return;
48
52
  }
49
- });
50
53
 
51
- tabs.currentTabChangeEvent.on(({ currentTab }) => {
52
- if (!currentTab) {
54
+ const menuNode = menu.findMenuNodeByID(routeInfo.menuId);
55
+
56
+ if (!menuNode) {
57
+ menu.setCurrentMenuNode(null);
58
+ tabs.setCurrentTab(null);
53
59
  return;
54
60
  }
55
61
 
56
- try {
57
- vueRouter.push(
58
- currentTab.realRoute ?? { name: currentTab.route.name }
59
- );
60
- } catch (e) {
61
- console.error(e);
62
- }
63
- });
64
- }
65
-
66
- if (msAppClient.userSession) {
67
- initUserSession(msAppClient.userSession);
68
- }
69
-
70
- msAppClient.userSessionChangeEvent.on(({ userSession }) => {
71
- if (userSession) {
72
- initUserSession(userSession);
73
- }
74
- });
62
+ menu.setCurrentMenuNode(menuNode);
63
+
64
+ const tab =
65
+ tabs.findTabByID(route.fullPath) ??
66
+ tabs.createTab({
67
+ id: route.fullPath,
68
+ title: routeInfo.title,
69
+ affix: !!route.matched?.[route.matched?.length - 1]?.meta?.affix,
70
+ realRoute: route,
71
+ route: routeInfo,
72
+ });
73
+
74
+ tabs.switchTab(tab);
75
+ },
76
+ { immediate: true }
77
+ );
75
78
 
76
79
  return () => {
77
80
  return (
@@ -9,16 +9,6 @@ export class Router extends Disposable {
9
9
 
10
10
  routes: Route[] = [];
11
11
 
12
- currentRoute: any | null = null;
13
-
14
- beforeRouteChange: Event<{ routeInfo: Route; route: any }> = this.register(
15
- new Event()
16
- );
17
-
18
- routeChange: Event<{ routeInfo: Route; route: any }> = this.register(
19
- new Event()
20
- );
21
-
22
12
  constructor(userSession: UserSession) {
23
13
  super();
24
14
 
@@ -157,28 +147,4 @@ export class Router extends Disposable {
157
147
  getRoutesByMenuID(menuId: Route["menuId"]): Route[] {
158
148
  return this.routes.filter((route) => route.menuId === menuId);
159
149
  }
160
-
161
- async changeRoute(route: any) {
162
- if (!route) {
163
- return true;
164
- }
165
-
166
- const routeInfo = this.getRouteByName(route.name);
167
-
168
- if (!routeInfo) {
169
- return true;
170
- }
171
-
172
- if (
173
- (await this.beforeRouteChange.emitAsync({ route, routeInfo })) !== false
174
- ) {
175
- this.currentRoute = route;
176
-
177
- this.routeChange.emit({ route, routeInfo });
178
-
179
- return true;
180
- }
181
-
182
- return false;
183
- }
184
150
  }
@@ -166,24 +166,6 @@ export class UserSession extends Disposable {
166
166
  this.beforeInitRouterEvent.emit();
167
167
  this.router.init();
168
168
 
169
- this.router.routeChange.on(({ route, routeInfo }) => {
170
- const menuNode = this.menu.findMenuNodeByID(routeInfo.menuId);
171
-
172
- this.menu.setCurrentMenuNode(menuNode);
173
-
174
- const tab =
175
- this.tabs.findTabByID(routeInfo.name) ??
176
- this.tabs.createTab({
177
- id: routeInfo.name,
178
- title: routeInfo.title,
179
- affix: route.matched?.[route.matched?.length - 1]?.meta?.affix,
180
- realRoute: route,
181
- route: routeInfo,
182
- });
183
-
184
- this.tabs.switchTab(tab);
185
- });
186
-
187
169
  return response;
188
170
  } catch (e) {
189
171
  httpRequest.getInterceptors().request.eject(beforeRequestInterceptorID);