@maketribe/ms-app 3.0.0 → 3.0.1

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 (201) hide show
  1. package/dist/cjs/MSAppClient.js +12 -18
  2. package/dist/cjs/MSAppClient.js.map +1 -1
  3. package/dist/cjs/Router.js +6 -8
  4. package/dist/cjs/Router.js.map +1 -1
  5. package/dist/cjs/components/member-table/member-table.vue2.js +2 -10
  6. package/dist/cjs/components/member-table/member-table.vue2.js.map +1 -1
  7. package/dist/cjs/components/verify-dialog/verify-dialog.js +1 -24
  8. package/dist/cjs/components/verify-dialog/verify-dialog.js.map +1 -1
  9. package/dist/cjs/init-application.js +8 -1
  10. package/dist/cjs/init-application.js.map +1 -1
  11. package/dist/cjs/page/index/dv/default/add.vue.js +2 -2
  12. package/dist/cjs/page/index/dv/default/edit.vue.js +2 -2
  13. package/dist/cjs/page/index/dv/default/tree.vue.js +2 -2
  14. package/dist/cjs/page/index/dv/ms-member/index.vue.js +2 -2
  15. package/dist/cjs/page/index/dv/ms-role/index.vue.js +2 -2
  16. package/dist/cjs/page/index/material/index.vue.js +2 -2
  17. package/dist/cjs/page/login/index.vue.js +2 -2
  18. package/dist/cjs/page/login/index.vue2.js +2 -17
  19. package/dist/cjs/page/login/index.vue2.js.map +1 -1
  20. package/dist/cjs/page/signup/index.vue.js +2 -2
  21. package/dist/cjs/page/signup/index.vue2.js +2 -18
  22. package/dist/cjs/page/signup/index.vue2.js.map +1 -1
  23. package/dist/cjs/router-middleware/auth.d.ts +2 -1
  24. package/dist/cjs/router-middleware/auth.js +1 -3
  25. package/dist/cjs/router-middleware/auth.js.map +1 -1
  26. package/dist/esm/MSAppClient.js +11 -19
  27. package/dist/esm/MSAppClient.js.map +1 -1
  28. package/dist/esm/Router.js +4 -8
  29. package/dist/esm/Router.js.map +1 -1
  30. package/dist/esm/components/member-table/member-table.vue2.js +2 -10
  31. package/dist/esm/components/member-table/member-table.vue2.js.map +1 -1
  32. package/dist/esm/components/verify-dialog/verify-dialog.js +1 -24
  33. package/dist/esm/components/verify-dialog/verify-dialog.js.map +1 -1
  34. package/dist/esm/init-application.js +8 -1
  35. package/dist/esm/init-application.js.map +1 -1
  36. package/dist/esm/page/index/dv/default/add.vue.js +2 -2
  37. package/dist/esm/page/index/dv/default/edit.vue.js +2 -2
  38. package/dist/esm/page/index/dv/default/tree.vue.js +2 -2
  39. package/dist/esm/page/index/dv/ms-member/index.vue.js +2 -2
  40. package/dist/esm/page/index/dv/ms-role/index.vue.js +2 -2
  41. package/dist/esm/page/index/material/index.vue.js +2 -2
  42. package/dist/esm/page/login/index.vue.js +2 -2
  43. package/dist/esm/page/login/index.vue2.js +2 -17
  44. package/dist/esm/page/login/index.vue2.js.map +1 -1
  45. package/dist/esm/page/signup/index.vue.js +2 -2
  46. package/dist/esm/page/signup/index.vue2.js +2 -18
  47. package/dist/esm/page/signup/index.vue2.js.map +1 -1
  48. package/dist/esm/router-middleware/auth.d.ts +2 -1
  49. package/dist/esm/router-middleware/auth.js +1 -3
  50. package/dist/esm/router-middleware/auth.js.map +1 -1
  51. package/package.json +8 -5
  52. package/gulpfile.ts +0 -1
  53. package/rollup.config.mjs +0 -11
  54. package/src/ConfigComponents.ts +0 -20
  55. package/src/MSAppClient.ts +0 -343
  56. package/src/MSDataFilterComponents.ts +0 -6
  57. package/src/MSDataFormComponents.ts +0 -12
  58. package/src/MSDataTableComponents.ts +0 -6
  59. package/src/MaterialComponents.ts +0 -26
  60. package/src/PermissionPointManager.ts +0 -26
  61. package/src/Router.ts +0 -133
  62. package/src/UserInfo.ts +0 -66
  63. package/src/UserSession.ts +0 -190
  64. package/src/components/image-select/image-select-option.ts +0 -11
  65. package/src/components/image-select/image-select.tsx +0 -40
  66. package/src/components/image-select/index.ts +0 -6
  67. package/src/components/index.ts +0 -8
  68. package/src/components/material-list/index.ts +0 -7
  69. package/src/components/material-list/material-group-form-popover.vue +0 -66
  70. package/src/components/material-list/material-group.vue +0 -138
  71. package/src/components/material-list/material-item.vue +0 -26
  72. package/src/components/material-list/material-list-options.ts +0 -23
  73. package/src/components/material-list/material-list.vue +0 -151
  74. package/src/components/material-select/index.ts +0 -15
  75. package/src/components/material-select/material-select-api.ts +0 -48
  76. package/src/components/material-select/material-select-options.ts +0 -18
  77. package/src/components/material-select/material-select-type.ts +0 -11
  78. package/src/components/material-select/material-select.tsx +0 -95
  79. package/src/components/member-table/index.ts +0 -6
  80. package/src/components/member-table/member-table.vue +0 -220
  81. package/src/components/menu-permission-table/index.ts +0 -6
  82. package/src/components/menu-permission-table/menu-permission-table.vue +0 -143
  83. package/src/components/role-permission-config/index.ts +0 -7
  84. package/src/components/role-permission-config/role-permission-config-options.ts +0 -20
  85. package/src/components/role-permission-config/role-permission-config.tsx +0 -280
  86. package/src/components/system-provider/index.ts +0 -5
  87. package/src/components/system-provider/system-provider.tsx +0 -93
  88. package/src/components/verify-dialog/index.ts +0 -5
  89. package/src/components/verify-dialog/verify-dialog-option.ts +0 -23
  90. package/src/components/verify-dialog/verify-dialog.tsx +0 -113
  91. package/src/composables/index.ts +0 -13
  92. package/src/composables/on-tab-before-close.ts +0 -8
  93. package/src/composables/on-tab-before-switch.ts +0 -8
  94. package/src/composables/on-tab-refresh.ts +0 -8
  95. package/src/composables/use-current-tab.ts +0 -5
  96. package/src/composables/use-http-request.ts +0 -5
  97. package/src/composables/use-ms-app-client.ts +0 -10
  98. package/src/composables/use-user-info.ts +0 -4
  99. package/src/constants/index.ts +0 -2
  100. package/src/constants/route.ts +0 -4
  101. package/src/constants/token.ts +0 -5
  102. package/src/dataview/config/ConfigForm.ts +0 -110
  103. package/src/dataview/config/ConfigTable.ts +0 -68
  104. package/src/dataview/config/index.ts +0 -2
  105. package/src/dataview/department/DepartmentForm.ts +0 -43
  106. package/src/dataview/department/DepartmentTable.ts +0 -67
  107. package/src/dataview/department/index.ts +0 -2
  108. package/src/dataview/index.ts +0 -7
  109. package/src/dataview/material/MaterialForm.ts +0 -51
  110. package/src/dataview/material/MaterialMan.ts +0 -176
  111. package/src/dataview/material/MaterialTable.ts +0 -123
  112. package/src/dataview/material/index.ts +0 -4
  113. package/src/dataview/material/material-group/MaterialGroupForm.ts +0 -30
  114. package/src/dataview/material/material-group/MaterialGroupTable.ts +0 -60
  115. package/src/dataview/material/material-group/index.ts +0 -2
  116. package/src/dataview/member/MemberForm.ts +0 -122
  117. package/src/dataview/member/MemberTable.tsx +0 -242
  118. package/src/dataview/member/index.ts +0 -2
  119. package/src/dataview/member/member-role/MemberRoleTable.ts +0 -21
  120. package/src/dataview/menu/MenuForm.ts +0 -113
  121. package/src/dataview/menu/MenuTable.ts +0 -37
  122. package/src/dataview/menu/MenuTree.ts +0 -143
  123. package/src/dataview/menu/index.ts +0 -4
  124. package/src/dataview/menu/permission-point/PermissionPointDefineForm.ts +0 -28
  125. package/src/dataview/menu/permission-point/PermissionPointDefineTable.ts +0 -30
  126. package/src/dataview/menu/permission-point/index.ts +0 -2
  127. package/src/dataview/role/RoleForm.ts +0 -36
  128. package/src/dataview/role/RolePermissionConfigTable.ts +0 -471
  129. package/src/dataview/role/RoleTable.ts +0 -68
  130. package/src/dataview/role/index.ts +0 -5
  131. package/src/dataview/role/role-permission-point/RolePermissionPointTable.ts +0 -27
  132. package/src/dataview/role/role-permission-point/index.ts +0 -1
  133. package/src/dataview/role/role-route/RoleRouteTable.ts +0 -28
  134. package/src/dataview/role/role-route/index.ts +0 -1
  135. package/src/dataview/route/RouteForm.ts +0 -92
  136. package/src/dataview/route/RouteTable.ts +0 -71
  137. package/src/dataview/route/index.ts +0 -2
  138. package/src/init-application.ts +0 -84
  139. package/src/installer.ts +0 -26
  140. package/src/layouts/index.ts +0 -1
  141. package/src/layouts/manager-system/components/aside/aside.tsx +0 -45
  142. package/src/layouts/manager-system/components/aside/bar/bar.tsx +0 -79
  143. package/src/layouts/manager-system/components/aside/bar/index.ts +0 -5
  144. package/src/layouts/manager-system/components/aside/index.ts +0 -5
  145. package/src/layouts/manager-system/components/aside/menu/index.ts +0 -5
  146. package/src/layouts/manager-system/components/aside/menu/menu-item.tsx +0 -63
  147. package/src/layouts/manager-system/components/aside/menu/menu.tsx +0 -51
  148. package/src/layouts/manager-system/components/aside/panel/index.ts +0 -5
  149. package/src/layouts/manager-system/components/aside/panel/panel.tsx +0 -57
  150. package/src/layouts/manager-system/components/header/breadcrumb/breadcrumb.tsx +0 -47
  151. package/src/layouts/manager-system/components/header/breadcrumb/index.ts +0 -5
  152. package/src/layouts/manager-system/components/header/header.tsx +0 -17
  153. package/src/layouts/manager-system/components/header/index.ts +0 -5
  154. package/src/layouts/manager-system/components/header/nav/index.ts +0 -5
  155. package/src/layouts/manager-system/components/header/nav/nav.tsx +0 -100
  156. package/src/layouts/manager-system/components/header/tabs/index.ts +0 -5
  157. package/src/layouts/manager-system/components/header/tabs/tabs.tsx +0 -72
  158. package/src/layouts/manager-system/components/header/tools/index.ts +0 -5
  159. package/src/layouts/manager-system/components/header/tools/tools.tsx +0 -15
  160. package/src/layouts/manager-system/index.ts +0 -6
  161. package/src/layouts/manager-system/manager-system.tsx +0 -25
  162. package/src/menu/Menu.ts +0 -142
  163. package/src/menu/MenuNode.ts +0 -49
  164. package/src/menu/index.ts +0 -2
  165. package/src/page/index/dv/default/add.vue +0 -49
  166. package/src/page/index/dv/default/edit.vue +0 -55
  167. package/src/page/index/dv/default/index.vue +0 -56
  168. package/src/page/index/dv/default/tree.vue +0 -31
  169. package/src/page/index/dv/ms-member/index.vue +0 -38
  170. package/src/page/index/dv/ms-role/index.vue +0 -28
  171. package/src/page/index/material/index.vue +0 -14
  172. package/src/page/login/index.vue +0 -191
  173. package/src/page/signup/index.vue +0 -157
  174. package/src/resolver/ITypeResolver.ts +0 -5
  175. package/src/router-middleware/auth.ts +0 -64
  176. package/src/router-middleware/index.ts +0 -1
  177. package/src/tabs/Tab.ts +0 -59
  178. package/src/tabs/Tabs.ts +0 -176
  179. package/src/tabs/index.ts +0 -2
  180. package/src/tokens/index.ts +0 -1
  181. package/src/tokens/ms-app-client.ts +0 -10
  182. package/style/components/image-select.scss +0 -13
  183. package/style/components/index.scss +0 -9
  184. package/style/components/material-group.scss +0 -38
  185. package/style/components/material-item.scss +0 -20
  186. package/style/components/material-list.scss +0 -67
  187. package/style/components/material-select.scss +0 -23
  188. package/style/components/member-table.scss +0 -9
  189. package/style/components/menu-permission-table.scss +0 -43
  190. package/style/components/role-permission-config.scss +0 -18
  191. package/style/components/verify-dialog.scss +0 -16
  192. package/style/index.scss +0 -4
  193. package/style/layouts/index.scss +0 -1
  194. package/style/layouts/manager-system/aside.scss +0 -116
  195. package/style/layouts/manager-system/header.scss +0 -129
  196. package/style/layouts/manager-system/index.scss +0 -4
  197. package/style/layouts/manager-system/manager-system.scss +0 -26
  198. package/style/layouts/manager-system/menu.scss +0 -47
  199. package/style/page/login.scss +0 -107
  200. package/tsconfig.build.json +0 -10
  201. package/tsconfig.json +0 -14
@@ -1,190 +0,0 @@
1
- import { Disposable, Event, createDisposable } from "@maketribe/utils";
2
- import { MemberInfo, UserInfo } from "./UserInfo";
3
- import { Menu } from "./menu";
4
- import { Tabs } from "./tabs";
5
- import { Router } from "./Router";
6
- import {
7
- PermissionPoint,
8
- PermissionPointManager,
9
- } from "./PermissionPointManager";
10
- import type { MSAppClient } from "./MSAppClient";
11
- import { MenuResult, Role, Route } from "./dataview";
12
- import { R } from "@maketribe/request";
13
- import {
14
- ACCESS_TOKEN_HEADER,
15
- AUTHORIZATION,
16
- AUTHORIZATION_PREFIX,
17
- X_ACCESS_TOKEN_HEADER,
18
- X_AUTHORIZATION,
19
- } from "./constants";
20
-
21
- export type UserSessionOptions = {
22
- msAppClient: MSAppClient;
23
- };
24
-
25
- export class UserSession extends Disposable {
26
- msAppClient: MSAppClient;
27
-
28
- vueRouter: MSAppClient["vueRouter"];
29
-
30
- userInfo: UserInfo | null;
31
-
32
- menu: Menu;
33
-
34
- tabs: Tabs;
35
-
36
- router: Router;
37
-
38
- permissionPointManager: PermissionPointManager;
39
-
40
- accessToken: string;
41
-
42
- xAccessToken: string;
43
-
44
- beforeInitRouterEvent: Event = this.register(new Event());
45
-
46
- constructor(options: UserSessionOptions) {
47
- super();
48
-
49
- this.msAppClient = options.msAppClient;
50
-
51
- this.vueRouter = this.msAppClient.vueRouter;
52
-
53
- this.userInfo = null;
54
-
55
- this.router = this.register(new Router(this));
56
- this.tabs = this.register(new Tabs(this));
57
- this.permissionPointManager = new PermissionPointManager();
58
- this.menu = this.register(
59
- new Menu(this.permissionPointManager, this.router)
60
- );
61
-
62
- this.accessToken = localStorage.getItem(ACCESS_TOKEN_HEADER) ?? "";
63
- this.xAccessToken = localStorage.getItem(X_ACCESS_TOKEN_HEADER) ?? "";
64
- }
65
-
66
- async init() {
67
- type BasicInfoResult = {
68
- member: MemberInfo;
69
- menus: MenuResult[];
70
- routes: Route[];
71
- roles: Role[];
72
- permissionPoints: PermissionPoint[];
73
- };
74
-
75
- const msAppClient = this.msAppClient;
76
-
77
- const httpRequest = msAppClient.httpRequest;
78
-
79
- const beforeRequestInterceptorID = httpRequest
80
- .getInterceptors()
81
- .request.use((config) => {
82
- if (this.accessToken) {
83
- config.headers[
84
- AUTHORIZATION
85
- ] = `${AUTHORIZATION_PREFIX} ${this.accessToken}`;
86
- }
87
-
88
- if (this.xAccessToken) {
89
- config.headers[
90
- X_AUTHORIZATION
91
- ] = `${AUTHORIZATION_PREFIX} ${this.xAccessToken}`;
92
- }
93
-
94
- return config;
95
- });
96
-
97
- const beforeResponseInterceptorID = httpRequest
98
- .getInterceptors()
99
- .response.use((config) => {
100
- if (config.data.code === 401) {
101
- this.accessToken = this.xAccessToken = "";
102
- } else {
103
- this.accessToken =
104
- config.headers[ACCESS_TOKEN_HEADER] || this.accessToken;
105
-
106
- this.xAccessToken =
107
- config.headers[X_ACCESS_TOKEN_HEADER] || this.xAccessToken;
108
- }
109
-
110
- localStorage.setItem(ACCESS_TOKEN_HEADER, this.accessToken);
111
-
112
- localStorage.setItem(X_ACCESS_TOKEN_HEADER, this.xAccessToken);
113
-
114
- return config;
115
- });
116
-
117
- try {
118
- let response = await httpRequest.request<R<BasicInfoResult>>({
119
- url: "/api/ms-login/login-info",
120
- method: "GET",
121
- });
122
-
123
- if (!response.data || response.data.code !== 200) {
124
- return response;
125
- }
126
-
127
- const BasicInfoResult = response.data!;
128
-
129
- const { member, routes, menus, permissionPoints, roles } =
130
- BasicInfoResult.data!;
131
-
132
- this.userInfo = new UserInfo(
133
- msAppClient,
134
- member,
135
- roles,
136
- permissionPoints
137
- );
138
-
139
- this.router.setRoutes(routes);
140
- this.permissionPointManager.setPermissionPoints(permissionPoints);
141
- this.menu.setMenus(menus);
142
-
143
- this.tabs.init();
144
-
145
- this.beforeInitRouterEvent.emit();
146
- this.router.init();
147
-
148
- this.router.routeChange.on(({ route, routeInfo }) => {
149
- const menuNode = this.menu.findMenuNodeByID(routeInfo.menuId);
150
-
151
- this.menu.setCurrentMenuNode(menuNode);
152
-
153
- const tab =
154
- this.tabs.findTabByID(routeInfo.name) ??
155
- this.tabs.createTab({
156
- id: routeInfo.name,
157
- title: routeInfo.title,
158
- affix: route.matched?.[route.matched?.length - 1]?.meta?.affix,
159
- realRoute: route,
160
- route: routeInfo,
161
- });
162
-
163
- this.tabs.switchTab(tab);
164
- });
165
-
166
- this.register(
167
- createDisposable(() => {
168
- httpRequest
169
- .getInterceptors()
170
- .request.eject(beforeRequestInterceptorID);
171
- httpRequest
172
- .getInterceptors()
173
- .request.eject(beforeResponseInterceptorID);
174
- })
175
- );
176
-
177
- return response;
178
- } catch (e) {
179
- httpRequest.getInterceptors().request.eject(beforeRequestInterceptorID);
180
- httpRequest.getInterceptors().request.eject(beforeResponseInterceptorID);
181
- }
182
- }
183
-
184
- public dispose(): void {
185
- localStorage.removeItem(ACCESS_TOKEN_HEADER);
186
- localStorage.removeItem(X_ACCESS_TOKEN_HEADER);
187
-
188
- super.dispose();
189
- }
190
- }
@@ -1,11 +0,0 @@
1
- import { ExtractPropTypes } from "vue";
2
- import { buildProps } from "@maketribe/utils";
3
-
4
- export const imageSelectProps = buildProps({
5
- modelValue: { type: String, required: true },
6
- } as const);
7
-
8
- export const imageSelectEmits = {
9
- "update:model-value": (modelValue: any) => true,
10
- };
11
- export type imageSelectProps = ExtractPropTypes<typeof imageSelectProps>;
@@ -1,40 +0,0 @@
1
- import { defineComponent, computed } from "vue";
2
- import { ElIcon } from "element-plus";
3
- import { Plus } from "@element-plus/icons";
4
- import { imageSelectProps, imageSelectEmits } from "./image-select-option";
5
- import { MKMaterialSelect } from "../../components/material-select";
6
-
7
- export default defineComponent({
8
- name: "MKFileView",
9
- props: imageSelectProps,
10
- emits: imageSelectEmits,
11
-
12
- setup(props, { emit }) {
13
- const modelValue = computed({
14
- get: () => props.modelValue,
15
- set: (v) => emit("update:model-value", v),
16
- });
17
-
18
- const handleSelectClick = async (e: MouseEvent) => {
19
- modelValue.value = await MKMaterialSelect();
20
- };
21
-
22
- return () => {
23
- const imageVNode = props.modelValue ? (
24
- <img
25
- src={props.modelValue}
26
- class="img-select-content"
27
- onClick={handleSelectClick}
28
- />
29
- ) : (
30
- <span onClick={handleSelectClick}>
31
- <ElIcon class="img-select-icon">
32
- <Plus />
33
- </ElIcon>
34
- </span>
35
- );
36
-
37
- return <div class="img-select">{imageVNode}</div>;
38
- };
39
- },
40
- });
@@ -1,6 +0,0 @@
1
- import { withInstall } from "@maketribe/utils";
2
- import imageSelect from "./image-select";
3
-
4
- export const MKImageSelect = withInstall(imageSelect);
5
-
6
- export default MKImageSelect;
@@ -1,8 +0,0 @@
1
- export * from "./system-provider";
2
- export * from "./material-list";
3
- export * from "./material-select";
4
- export * from "./role-permission-config";
5
- export * from "./menu-permission-table";
6
- export * from "./image-select";
7
- export * from "./verify-dialog";
8
- export * from "./member-table";
@@ -1,7 +0,0 @@
1
- import { withInstall } from "@maketribe/utils";
2
- import MaterialList from "./material-list.vue";
3
-
4
- export const MKMaterialList = withInstall(MaterialList);
5
- export default MKMaterialList;
6
-
7
- export * from "./material-list-options";
@@ -1,66 +0,0 @@
1
- <template>
2
- <ElPopover
3
- v-model:visible="visible"
4
- title="添加素材分组"
5
- effect="light"
6
- placement="right"
7
- trigger="click"
8
- width="320"
9
- >
10
- <template #reference>
11
- <slot></slot>
12
- </template>
13
-
14
- <div>
15
- <MKDataForm :data-form="materialGroupForm" v-loading="loading" />
16
- <div style=" display: flex; align-items: center; justify-content: space-between;">
17
- <ElButton type="primary" :loading="!allowSubmit" @click="handleSaveClick" >
18
- 保存
19
- </ElButton>
20
- <ElButton @click="handleCancelClick">取消</ElButton>
21
- </div>
22
- </div>
23
- </ElPopover>
24
- </template>
25
-
26
- <script setup lang="ts">
27
- import { Ref, computed, ref, unref } from "vue";
28
- import { ElMessage } from "element-plus";
29
- import { MKDataForm } from "@maketribe/dm-ui";
30
- import { MaterialGroupForm, MaterialMan } from "../../dataview";
31
-
32
- const props = defineProps({
33
- materialMan: {
34
- type: MaterialMan,
35
- required: true,
36
- },
37
- materialGroupForm: {
38
- type: MaterialGroupForm,
39
- required: true,
40
- },
41
- });
42
-
43
- const visible: Ref<boolean> = ref(false);
44
-
45
- const loading = computed(() => props.materialGroupForm.loading);
46
- const allowSubmit = computed(
47
- () => !!(unref(loading) || !props.materialGroupForm.allowSubmit)
48
- );
49
-
50
- const handleSaveClick = async () => {
51
- const result = await props.materialGroupForm.submit();
52
-
53
- if (result.data.code !== 200) {
54
- ElMessage.error(result.data.msg);
55
- return;
56
- }
57
-
58
- props.materialMan.materialGroupTable.load();
59
-
60
- visible.value = false;
61
- };
62
-
63
- const handleCancelClick = () => {
64
- visible.value = false;
65
- };
66
- </script>
@@ -1,138 +0,0 @@
1
- <template>
2
- <div class="mk-material-group" v-loading="loading">
3
- <div class="mk-material-group__header">
4
- <div class="mk-material-group__header-title">素材分组</div>
5
- <MaterialGroupFromPopper
6
- :material-man="materialMan"
7
- :material-group-form="materialGroupForm"
8
- >
9
- <ElButton
10
- @click="handleAddClick"
11
- :icon="Plus"
12
- size="small"
13
- type="primary"
14
- >
15
- </ElButton>
16
- </MaterialGroupFromPopper>
17
- </div>
18
- <div class="mk-material-group__main">
19
- <ElScrollbar height="100%">
20
- <MKDataTree
21
- :auto-load="false"
22
- :data-table="materialGroupTable"
23
- :props="{ label: 'desc', children: 'children' }"
24
- highlight-current
25
- @nodeClick="handleNodeClick"
26
- >
27
- <template #node-tools="{ data }">
28
- <div class="mk-material-group__tools" @click.stop>
29
- <ElTooltip content="添加">
30
- <span class="mk-material-group__tools-item">
31
- <MaterialGroupFromPopper
32
- :material-man="materialMan"
33
- :material-group-form="materialGroupForm"
34
- >
35
- <ElIcon @click="handleAddClick(data)"><Plus /></ElIcon>
36
- </MaterialGroupFromPopper>
37
- </span>
38
- </ElTooltip>
39
- <ElTooltip content="编辑">
40
- <span class="mk-material-group__tools-item">
41
- <MaterialGroupFromPopper
42
- :material-man="materialMan"
43
- :material-group-form="materialGroupForm"
44
- >
45
- <ElIcon @click="handleEditClick(data)"><Edit /></ElIcon>
46
- </MaterialGroupFromPopper>
47
- </span>
48
- </ElTooltip>
49
- <ElTooltip content="删除">
50
- <span class="mk-material-group__tools-item">
51
- <ElIcon @click="handleDeleteClick(data)"><Delete /></ElIcon>
52
- </span>
53
- </ElTooltip>
54
- </div>
55
- </template>
56
- </MKDataTree>
57
- </ElScrollbar>
58
- </div>
59
- <div class="mk-material-group__footer"></div>
60
- </div>
61
- </template>
62
-
63
- <script setup lang="ts">
64
- import { computed, nextTick, reactive } from "vue";
65
- import { ElMessage, ElMessageBox } from "element-plus";
66
- import { Plus, Edit, Delete } from "@element-plus/icons";
67
- import {
68
- MaterialMan,
69
- MaterialGroupNode,
70
- MaterialGroupForm,
71
- Material,
72
- } from "../../dataview";
73
- import { MKDataTree, useI18n } from "@maketribe/dm-ui";
74
- import MaterialGroupFromPopper from "./material-group-form-popover.vue";
75
-
76
- const props = defineProps({
77
- materialMan: {
78
- type: MaterialMan,
79
- required: true,
80
- },
81
- });
82
-
83
- const i18n = useI18n()!;
84
-
85
- const materialGroupForm = reactive(
86
- new MaterialGroupForm()
87
- ) as MaterialGroupForm;
88
-
89
- (window as any).materialGroupForm = materialGroupForm;
90
-
91
- const materialGroupTable = computed(() => props.materialMan.materialGroupTable);
92
-
93
- const loading = computed(() => props.materialMan.materialGroupTable.loading);
94
-
95
- const handleNodeClick = (item: MaterialGroupNode) => {
96
- if (!item.children.length) {
97
- props.materialMan.setCurrentMaterialGroupId(item.id);
98
- }
99
- };
100
-
101
- const handleAddClick = async (parent?: MaterialGroupNode) => {
102
- materialGroupForm.addRecord();
103
-
104
- await nextTick();
105
-
106
- materialGroupForm.setData({
107
- ...materialGroupForm.data,
108
- parentGroupId: parent?.id || null,
109
- } as MaterialGroupNode);
110
- };
111
-
112
- const handleEditClick = (item: MaterialGroupNode) => {
113
- materialGroupForm.editRecord(item);
114
- };
115
-
116
- const handleDeleteClick = async (item: MaterialGroupNode) => {
117
- const isConfirm = await ElMessageBox.confirm(
118
- i18n.translate("mk.dataTablePage.deleteMessage"),
119
- i18n.translate("mk.dataTablePage.deleteTitle"),
120
- { type: "warning" }
121
- ).then(
122
- () => true,
123
- () => false
124
- );
125
-
126
- if (!isConfirm) {
127
- return;
128
- }
129
-
130
- const result =
131
- await props.materialMan.materialGroupTable.deleteRecordAfterRefresh(item);
132
-
133
- if (result.data.code !== 200) {
134
- ElMessage.error(result.data.msg);
135
- return;
136
- }
137
- };
138
- </script>
@@ -1,26 +0,0 @@
1
- <template>
2
- <ElCard class="mk-material-item" shadow="never">
3
- <div class="mk-material-item__preview">
4
- <MaterialComponent :src="material.path" />
5
- </div>
6
- <div class="mk-material-item__title">{{ material.desc }}</div>
7
- </ElCard>
8
- </template>
9
-
10
- <script setup lang="ts">
11
- import { Material, MaterialTable } from "../../dataview";
12
- import { computed, toRaw } from "vue";
13
-
14
- const props = defineProps({
15
- materialTable: { type: MaterialTable, required: true },
16
- material: { type: Object, required: true },
17
- });
18
-
19
- const MaterialComponent = computed(() => {
20
- const component =
21
- props.materialTable.resolveMaterialComponent(props.material as Material) ||
22
- props.materialTable.materialComponents.resolveComponent("MKFileView")!;
23
-
24
- return toRaw(component.component);
25
- });
26
- </script>
@@ -1,23 +0,0 @@
1
- import { ExtractPropTypes } from "vue";
2
- import { buildProps } from "@maketribe/utils";
3
- import { MaterialMan } from "../../dataview";
4
-
5
- export const materialListProps = buildProps({
6
- materialMan: {
7
- type: MaterialMan,
8
- required: true,
9
- },
10
- selectable: {
11
- type: Boolean,
12
- default: false,
13
- },
14
- selectedPath: {
15
- type: String,
16
- },
17
- } as const);
18
-
19
- export type MaterialListProps = ExtractPropTypes<typeof materialListProps>;
20
-
21
- export const materialListEmits = {
22
- "update:selected-path": (path: any) => typeof path === "string",
23
- };
@@ -1,151 +0,0 @@
1
- <template>
2
- <div class="mk-material-list">
3
- <MaterialGroup :material-man="materialMan" />
4
- <div class="mk-material-list__main" v-loading="loading">
5
- <div class="mk-material-list__header">
6
- <div class="mk-material-list__header-left">
7
- <div class="mk-material-list__types">
8
- <div
9
- v-for="item of materialTypes"
10
- :key="item.value"
11
- :class="[
12
- 'mk-material-list__type',
13
- currentMaterialTypeId === item.value ? 'is-active' : '',
14
- ]"
15
- @click="handleMaterialTypeClick(item)"
16
- >
17
- {{ item.label }}
18
- </div>
19
- </div>
20
- </div>
21
- <div class="mk-material-list__header-right">
22
- <template v-if="currentMaterialType">
23
- {{ currentMaterialType.label }}大小不超过
24
- {{ currentMaterialType.limit }} M
25
- <MKUploadFile
26
- :upload="materialMan.upload"
27
- :accept="currentMaterialType.accept"
28
- >
29
- <ElButton type="primary">
30
- 选择{{ currentMaterialType.label }}
31
- </ElButton>
32
- </MKUploadFile>
33
- </template>
34
- </div>
35
- </div>
36
-
37
- <div class="mk-material-list__body">
38
- <ElScrollbar height="100%">
39
- <div class="mk-material-list__wrapper">
40
- <MaterialItem
41
- v-for="material of materialList"
42
- :key="material.id"
43
- :class="[
44
- 'mk-material-list__item',
45
- value === material.path ? 'is-current' : '',
46
- ]"
47
- :material-table="materialTable"
48
- :material="material"
49
- @click.capture="handleMaterialItemClick($event, material)"
50
- />
51
- </div>
52
- </ElScrollbar>
53
- <div class="mk-material-list__footer">
54
- <ElPagination
55
- class="mk-data-table-pagination"
56
- :background="true"
57
- :pageSizes="unref(pageSizes)"
58
- :currentPage="unref(currentPage)"
59
- :pageSize="unref(pageSize)"
60
- :total="unref(totalRecCount)"
61
- layout="prev, pager, next"
62
- @current-change="changeCurrentPage"
63
- @size-change="changePageSize"
64
- />
65
- </div>
66
- </div>
67
- </div>
68
- </div>
69
- </template>
70
-
71
- <script setup lang="ts">
72
- import { computed, unref, watch } from "vue";
73
- import { ElPagination } from "element-plus";
74
- import { MKUploadFile } from "@maketribe/dm-ui";
75
- import { MaterialType, Material } from "../../dataview";
76
- import MaterialGroup from "./material-group.vue";
77
- import MaterialItem from "./material-item.vue";
78
- import { materialListProps, materialListEmits } from "./material-list-options";
79
-
80
- defineOptions({ name: "MKMaterialList" });
81
-
82
- const props = defineProps(materialListProps);
83
-
84
- const emit = defineEmits(materialListEmits);
85
-
86
- props.materialMan.init();
87
-
88
- const loading = computed(() => props.materialMan.materialTable.loading);
89
-
90
- const value = computed({
91
- get: () => {
92
- return props.selectable ? props.selectedPath ?? null : null;
93
- },
94
- set: (v) => {
95
- emit("update:selected-path", v);
96
- },
97
- });
98
-
99
- const materialTable = computed(() => props.materialMan.materialTable);
100
- const pageSizes = computed(() => unref(materialTable).pageSizes);
101
- const currentPage = computed({
102
- get: () => unref(materialTable).currentPage,
103
- set: (v) => {
104
- unref(materialTable).pageTo(v);
105
- },
106
- });
107
- const pageSize = computed({
108
- get: () => unref(materialTable).pageSize,
109
- set: (v) => {
110
- unref(materialTable).setPageSize(v);
111
- },
112
- });
113
- const totalRecCount = computed(() => unref(materialTable).totalRecCount);
114
- const changeCurrentPage = (v: number) => {
115
- currentPage.value = v;
116
- };
117
- const changePageSize = (v: number) => {
118
- pageSize.value = v;
119
- };
120
-
121
-
122
-
123
- const materialList = computed(() => unref(materialTable).getList());
124
- const materialTypes = computed(() => props.materialMan.materialTypes);
125
- const currentMaterialTypeId = computed(
126
- () => props.materialMan.currentMaterialTypeId
127
- );
128
-
129
- const currentMaterialType = computed(
130
- () => props.materialMan.currentMaterialType
131
- );
132
-
133
- const handleMaterialTypeClick = (materialType: MaterialType) => {
134
- if (materialType.value === unref(currentMaterialTypeId)) {
135
- return;
136
- }
137
-
138
- props.materialMan.setCurrentMaterialTypeId(materialType.value);
139
- };
140
-
141
- const handleMaterialItemClick = (event: MouseEvent, material: Material) => {
142
- if (!props.selectable) {
143
- return;
144
- }
145
-
146
- event.preventDefault();
147
- event.stopPropagation();
148
-
149
- value.value = material.path;
150
- };
151
- </script>
@@ -1,15 +0,0 @@
1
- import { App } from "vue";
2
- import { SFCWithInstall } from "@maketribe/utils";
3
- import MaterialSelect from "./material-select-api";
4
-
5
- const _MaterialSelect = MaterialSelect as SFCWithInstall<typeof MaterialSelect>;
6
-
7
- _MaterialSelect.install = (app: App) => {
8
- _MaterialSelect._context = app._context;
9
- };
10
-
11
- export default _MaterialSelect;
12
- export const MKMaterialSelect = _MaterialSelect;
13
-
14
- export * from "./material-select-type";
15
-