@maketribe/ms-app 3.0.40 → 3.0.41

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 (27) hide show
  1. package/dist/cjs/core/PageManager.js +1 -1
  2. package/dist/cjs/core/PageManager.js.map +1 -1
  3. package/dist/cjs/dataview/member/MemberForm.d.ts +8 -0
  4. package/dist/cjs/dataview/member/MemberForm.js.map +1 -1
  5. package/dist/cjs/dataview/member/MemberTable.js +185 -123
  6. package/dist/cjs/dataview/member/MemberTable.js.map +1 -1
  7. package/dist/cjs/page/index/dv/default/single/list/normal.vue.js +2 -2
  8. package/dist/cjs/page/index/dv/default/single/table-tree/dialog.vue2.js +1 -1
  9. package/dist/cjs/page/index/dv/ms-member/index.vue2.js +155 -11
  10. package/dist/cjs/page/index/dv/ms-member/index.vue2.js.map +1 -1
  11. package/dist/esm/core/PageManager.js +1 -1
  12. package/dist/esm/core/PageManager.js.map +1 -1
  13. package/dist/esm/dataview/member/MemberForm.d.ts +8 -0
  14. package/dist/esm/dataview/member/MemberForm.js.map +1 -1
  15. package/dist/esm/dataview/member/MemberTable.js +185 -123
  16. package/dist/esm/dataview/member/MemberTable.js.map +1 -1
  17. package/dist/esm/page/index/dv/default/single/list/normal.vue.js +2 -2
  18. package/dist/esm/page/index/dv/default/single/table-tree/dialog.vue2.js +1 -1
  19. package/dist/esm/page/index/dv/ms-member/index.vue2.js +156 -12
  20. package/dist/esm/page/index/dv/ms-member/index.vue2.js.map +1 -1
  21. package/dist/style/index.css +1 -1
  22. package/dist/style/page/dv/index.css +1 -1
  23. package/dist/style/page/dv/ms-member.css +1 -0
  24. package/dist/style/page/index.css +1 -1
  25. package/dist/style/src/page/dv/index.scss +2 -1
  26. package/dist/style/src/page/dv/ms-member.scss +42 -0
  27. package/package.json +3 -3
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
3
  var vue = require('vue');
4
+ var vueRouter = require('vue-router');
4
5
  var elementPlus = require('element-plus');
5
6
  require('@maketribe/dm');
6
7
  require('@maketribe/utils');
7
8
  var DataModelDefines = require('../../../../core/DataModelDefines.js');
8
- require('vue-router');
9
9
  require('@maketribe/request');
10
10
  require('@maketribe/locale');
11
- var index = require('../../../../components/data-model/data-form/index.js');
11
+ var index$4 = require('../../../../components/data-model/data-form/index.js');
12
12
  require('../../../../components/data-model/data-form-page/index.js');
13
13
  require('../../../../components/data-model/data-table/index.js');
14
- require('../../../../components/data-model/data-table-page/index.js');
14
+ var index = require('../../../../components/data-model/data-table-page/index.js');
15
15
  require('../../../../components/data-model/data-table-pagination/index.js');
16
16
  require('../../../../components/form-components/form-data-select/index.js');
17
17
  require('../../../../components/form-components/form-icon-select/index.js');
@@ -26,7 +26,7 @@ require('lodash-es');
26
26
  require('../../../../components/form-components/form-date-picker/index.js');
27
27
  require('../../../../components/form-components/form-rich-text-editor/index.js');
28
28
  require('../../../../components/column-components/column-action/column-action-options.js');
29
- require('../../../../components/svg-icon/index.js');
29
+ var index$3 = require('../../../../components/svg-icon/index.js');
30
30
  require('../../../../components/button/button-options.js');
31
31
  require('../../../../components/data-model/data-table/composables/use-column.js');
32
32
  require('../../../../components/column-components/column-image/column-image-options.js');
@@ -66,44 +66,188 @@ require('../../../../components/upload-file/context/web-file-upload-context.js')
66
66
  require('../../../../components/upload-file/context/web-file-upload-context-options.js');
67
67
  require('../../../../components/upload-file/ui/upload-image/index.js');
68
68
  require('../../../../components/upload-file/upload-file-options.js');
69
- var normal = require('../default/single/list/normal.vue.js');
69
+ var index$1 = require('../../../../components/data-model/data-table/views/table-view/index.js');
70
+ var index$2 = require('../../../../components/data-model/data-table/views/table/index.js');
71
+ var index$5 = require('../../../../components/data-model/data-form/views/form/index.js');
70
72
 
73
+ const _hoisted_1 = { class: "member-info" };
74
+ const _hoisted_2 = { class: "member-info-text" };
75
+ const _hoisted_3 = { class: "member-info-text__name" };
76
+ const _hoisted_4 = { class: "member-info-text__email" };
77
+ const _hoisted_5 = { class: "roles-Info" };
71
78
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
79
+ ...{
80
+ mkRoute: {
81
+ name: "dv/ms-member/list"
82
+ }
83
+ },
72
84
  __name: "index",
73
85
  setup(__props) {
74
- vue.ref("");
75
86
  const memberTable = vue.reactive(
76
87
  DataModelDefines.DataModelDefines.instance.getDataTable("ms-member")
77
88
  );
78
89
  const activeMemberForm = vue.computed(() => memberTable.activeMemberForm);
90
+ const router = vueRouter.useRouter();
79
91
  const handleActiveMemberConfirm = async () => {
80
92
  memberTable.approveMember();
81
93
  };
94
+ memberTable.addRecordEvent.on(() => {
95
+ router.push({
96
+ name: "dv/ms-member/add"
97
+ });
98
+ });
99
+ memberTable.editRecordEvent.on(({ item }) => {
100
+ router.push({
101
+ name: "dv/ms-member/edit",
102
+ params: {
103
+ id: item.id
104
+ }
105
+ });
106
+ });
82
107
  return (_ctx, _cache) => {
83
108
  return vue.openBlock(), vue.createElementBlock(
84
109
  vue.Fragment,
85
110
  null,
86
111
  [
87
- vue.createVNode(normal, { "data-table": memberTable }, null, 8, ["data-table"]),
112
+ vue.createCommentVNode(' <DefaultSingleListPage :data-table="memberTable" /> '),
113
+ vue.createVNode(vue.unref(index.MKDataTablePage), { "data-table": memberTable }, {
114
+ default: vue.withCtx(() => [
115
+ vue.createVNode(vue.unref(index$1.MKTableView), { "data-table": memberTable }, {
116
+ default: vue.withCtx(() => [
117
+ vue.createVNode(vue.unref(index$2.MKTable), { "data-table": memberTable }, {
118
+ "col-name-content": vue.withCtx(({ row }) => [
119
+ vue.createElementVNode("div", _hoisted_1, [
120
+ vue.createVNode(vue.unref(elementPlus.ElImage), {
121
+ src: row.avatar,
122
+ class: "member-info-img"
123
+ }, {
124
+ error: vue.withCtx(() => [
125
+ vue.createVNode(vue.unref(index$3.MKSvgIcon), {
126
+ "icon-class": "User",
127
+ class: "member-info-img__icon"
128
+ })
129
+ ]),
130
+ _: 2
131
+ /* DYNAMIC */
132
+ }, 1032, ["src"]),
133
+ vue.createElementVNode("div", _hoisted_2, [
134
+ vue.createElementVNode(
135
+ "span",
136
+ _hoisted_3,
137
+ vue.toDisplayString(row.name),
138
+ 1
139
+ /* TEXT */
140
+ ),
141
+ vue.createElementVNode(
142
+ "span",
143
+ _hoisted_4,
144
+ vue.toDisplayString(row.email),
145
+ 1
146
+ /* TEXT */
147
+ )
148
+ ])
149
+ ])
150
+ ]),
151
+ "col-roles-content": vue.withCtx(({ row }) => [
152
+ vue.createElementVNode("div", _hoisted_5, [
153
+ (vue.openBlock(true), vue.createElementBlock(
154
+ vue.Fragment,
155
+ null,
156
+ vue.renderList(row.roles, (role) => {
157
+ return vue.openBlock(), vue.createBlock(
158
+ vue.unref(elementPlus.ElTag),
159
+ {
160
+ key: role.id,
161
+ size: "large",
162
+ type: "info",
163
+ class: "roles-Info-tag"
164
+ },
165
+ {
166
+ default: vue.withCtx(() => [
167
+ vue.createTextVNode(
168
+ vue.toDisplayString(role.name),
169
+ 1
170
+ /* TEXT */
171
+ )
172
+ ]),
173
+ _: 2
174
+ /* DYNAMIC */
175
+ },
176
+ 1024
177
+ /* DYNAMIC_SLOTS */
178
+ );
179
+ }),
180
+ 128
181
+ /* KEYED_FRAGMENT */
182
+ ))
183
+ ])
184
+ ]),
185
+ "col-type-content": vue.withCtx(({ row }) => [
186
+ row.valid == 0 ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElTag), { key: 0 }, {
187
+ default: vue.withCtx(() => [
188
+ vue.createTextVNode("\u5F85\u6FC0\u6D3B")
189
+ ]),
190
+ _: 1
191
+ /* STABLE */
192
+ })) : row.isLock == 1 ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElTag), {
193
+ key: 1,
194
+ type: "danger"
195
+ }, {
196
+ default: vue.withCtx(() => [
197
+ vue.createTextVNode("\u5DF2\u9501\u5B9A")
198
+ ]),
199
+ _: 1
200
+ /* STABLE */
201
+ })) : (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElTag), {
202
+ key: 2,
203
+ type: "success"
204
+ }, {
205
+ default: vue.withCtx(() => [
206
+ vue.createTextVNode("\u6B63\u5E38")
207
+ ]),
208
+ _: 1
209
+ /* STABLE */
210
+ }))
211
+ ]),
212
+ _: 1
213
+ /* STABLE */
214
+ }, 8, ["data-table"])
215
+ ]),
216
+ _: 1
217
+ /* STABLE */
218
+ }, 8, ["data-table"])
219
+ ]),
220
+ _: 1
221
+ /* STABLE */
222
+ }, 8, ["data-table"]),
88
223
  vue.createVNode(vue.unref(elementPlus.ElDialog), {
89
224
  modelValue: memberTable.isShowActiveMemberForm,
90
225
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => memberTable.isShowActiveMemberForm = $event),
91
- class: "dialogClass"
226
+ class: "dialogClass",
227
+ title: "\u6FC0\u6D3B\u6210\u5458",
228
+ "append-to-body": ""
92
229
  }, {
93
230
  footer: vue.withCtx(() => [
94
231
  vue.createVNode(vue.unref(elementPlus.ElButton), {
95
232
  onClick: handleActiveMemberConfirm,
96
- type: "primary"
233
+ type: "primary",
234
+ loading: activeMemberForm.value.loading
97
235
  }, {
98
236
  default: vue.withCtx(() => [
99
237
  vue.createTextVNode(" \u786E\u5B9A ")
100
238
  ]),
101
239
  _: 1
102
240
  /* STABLE */
103
- })
241
+ }, 8, ["loading"])
104
242
  ]),
105
243
  default: vue.withCtx(() => [
106
- vue.createVNode(vue.unref(index.MKDataForm), { "data-form": activeMemberForm.value }, null, 8, ["data-form"])
244
+ vue.createVNode(vue.unref(index$4.MKDataForm), { "data-form": activeMemberForm.value }, {
245
+ default: vue.withCtx(() => [
246
+ vue.createVNode(vue.unref(index$5.MKForm), { "data-form": activeMemberForm.value }, null, 8, ["data-form"])
247
+ ]),
248
+ _: 1
249
+ /* STABLE */
250
+ }, 8, ["data-form"])
107
251
  ]),
108
252
  _: 1
109
253
  /* STABLE */
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.js","sources":["../../../../../../src/page/index/dv/ms-member/index.vue"],"sourcesContent":["<template>\r\n <DefaultSingleListPage :data-table=\"memberTable\" />\r\n\r\n <ElDialog v-model=\"memberTable.isShowActiveMemberForm\" class=\"dialogClass\">\r\n <MKDataForm :data-form=\"activeMemberForm\" />\r\n <template #footer>\r\n <ElButton @click=\"handleActiveMemberConfirm\" type=\"primary\">\r\n 确定\r\n </ElButton>\r\n </template>\r\n </ElDialog>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, reactive, ref } from \"vue\";\r\nimport { ElButton, ElDialog } from \"element-plus\";\r\nimport { DataModelDefines } from \"../../../../core\";\r\nimport { MKDataForm } from \"../../../../components\";\r\nimport { MemberTable } from \"../../../../dataview\";\r\nimport DefaultSingleListPage from \"../default/single/list/normal.vue\";\r\nimport { MKUploadImage } from \"../../../../components/upload-file\";\r\n\r\nconst src = ref(\"\");\r\n\r\nconst memberTable = reactive(\r\n DataModelDefines.instance.getDataTable(\"ms-member\")!\r\n) as MemberTable;\r\nconst activeMemberForm = computed(() => memberTable.activeMemberForm);\r\n\r\nconst handleActiveMemberConfirm = async () => {\r\n memberTable.approveMember();\r\n};\r\n</script>\r\n"],"names":["ref","reactive","DataModelDefines","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,IAAYA,QAAI,EAAE,EAAA;AAElB,IAAA,MAAM,WAAc,GAAAC,YAAA;AAAA,MAClBC,iCAAA,CAAiB,QAAS,CAAA,YAAA,CAAa,WAAW,CAAA;AAAA,KACpD,CAAA;AACA,IAAA,MAAM,gBAAmB,GAAAC,YAAA,CAAS,MAAM,WAAA,CAAY,gBAAgB,CAAA,CAAA;AAEpE,IAAA,MAAM,4BAA4B,YAAY;AAC5C,MAAA,WAAA,CAAY,aAAc,EAAA,CAAA;AAAA,KAC5B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.vue2.js","sources":["../../../../../../src/page/index/dv/ms-member/index.vue"],"sourcesContent":["<template>\r\n <!-- <DefaultSingleListPage :data-table=\"memberTable\" /> -->\r\n <MKDataTablePage :data-table=\"memberTable\">\r\n <MKTableView :data-table=\"memberTable\">\r\n <MKTable :data-table=\"memberTable\">\r\n <template #col-name-content=\"{ row }\">\r\n <div class=\"member-info\">\r\n <ElImage :src=\"row.avatar\" class=\"member-info-img\">\r\n <template #error>\r\n <MKSvgIcon icon-class=\"User\" class=\"member-info-img__icon\"></MKSvgIcon>\r\n </template>\r\n </ElImage>\r\n <div class=\"member-info-text\">\r\n <span class=\"member-info-text__name\">{{ row.name }}</span>\r\n <span class=\"member-info-text__email\">{{ row.email }}</span>\r\n </div>\r\n </div>\r\n </template>\r\n <template #col-roles-content=\"{ row }\">\r\n <div class=\"roles-Info\">\r\n <ElTag v-for=\"role in row.roles\" :key=\"role.id\" size=\"large\" type=\"info\" class=\"roles-Info-tag\">\r\n {{ role.name }}</ElTag>\r\n </div>\r\n </template>\r\n <template #col-type-content=\"{ row }\">\r\n <ElTag v-if=\"row.valid == 0\">待激活</ElTag>\r\n <ElTag v-else-if=\"row.isLock == 1\" type=\"danger\">已锁定</ElTag>\r\n <ElTag v-else type=\"success\">正常</ElTag>\r\n </template>\r\n </MKTable>\r\n </MKTableView>\r\n </MKDataTablePage>\r\n <ElDialog v-model=\"memberTable.isShowActiveMemberForm\" class=\"dialogClass\" title=\"激活成员\" append-to-body>\r\n <MKDataForm :data-form=\"activeMemberForm\">\r\n <MKForm :data-form=\"activeMemberForm\">\r\n </MKForm>\r\n </MKDataForm>\r\n <template #footer>\r\n <ElButton @click=\"handleActiveMemberConfirm\" type=\"primary\" :loading=\"activeMemberForm.loading\">\r\n 确定\r\n </ElButton>\r\n </template>\r\n </ElDialog>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, reactive, ref } from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { ElButton, ElDialog, ElImage, ElTag } from \"element-plus\";\r\nimport { DataModelDefines } from \"../../../../core\";\r\nimport { MKDataForm, MKDataTablePage, MKTableView, MKTable, MKSvgIcon, MKForm } from \"../../../../components\";\r\nimport { MemberTable } from \"../../../../dataview\";\r\nimport DefaultSingleListPage from \"../default/single/list/normal.vue\";\r\nimport { MKUploadImage } from \"../../../../components/upload-file\";\r\n\r\ndefineOptions({\r\n mkRoute: {\r\n name: \"dv/ms-member/list\",\r\n }\r\n})\r\nconst memberTable = reactive(\r\n DataModelDefines.instance.getDataTable(\"ms-member\")!\r\n) as MemberTable;\r\nconst activeMemberForm = computed(() => memberTable.activeMemberForm);\r\nconst router = useRouter();\r\nconst handleActiveMemberConfirm = async () => {\r\n memberTable.approveMember();\r\n};\r\n\r\nmemberTable.addRecordEvent.on(() => {\r\n router.push({\r\n name: \"dv/ms-member/add\",\r\n });\r\n});\r\n\r\nmemberTable.editRecordEvent.on(({ item }) => {\r\n router.push({\r\n name: \"dv/ms-member/edit\",\r\n params: {\r\n id: item.id,\r\n },\r\n });\r\n});\r\n\r\n</script>\r\n<style lang=\"scss\"></style>\r\n"],"names":["reactive","DataModelDefines","computed","useRouter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,IAAA,MAAM,WAAc,GAAAA,YAAA;AAAA,MAClBC,iCAAA,CAAiB,QAAS,CAAA,YAAA,CAAa,WAAW,CAAA;AAAA,KACpD,CAAA;AACA,IAAA,MAAM,gBAAmB,GAAAC,YAAA,CAAS,MAAM,WAAA,CAAY,gBAAgB,CAAA,CAAA;AACpE,IAAA,MAAM,SAASC,mBAAU,EAAA,CAAA;AACzB,IAAA,MAAM,4BAA4B,YAAY;AAC5C,MAAA,WAAA,CAAY,aAAc,EAAA,CAAA;AAAA,KAC5B,CAAA;AAEA,IAAY,WAAA,CAAA,cAAA,CAAe,GAAG,MAAM;AAClC,MAAA,MAAA,CAAO,IAAK,CAAA;AAAA,QACV,IAAM,EAAA,kBAAA;AAAA,OACP,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAED,IAAA,WAAA,CAAY,eAAgB,CAAA,EAAA,CAAG,CAAC,EAAE,MAAW,KAAA;AAC3C,MAAA,MAAA,CAAO,IAAK,CAAA;AAAA,QACV,IAAM,EAAA,mBAAA;AAAA,QACN,MAAQ,EAAA;AAAA,UACN,IAAI,IAAK,CAAA,EAAA;AAAA,SACX;AAAA,OACD,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -47,7 +47,7 @@ class PageManager {
47
47
  meta: { name: "ms-material" }
48
48
  });
49
49
  this.addExtendsPage({
50
- name: "dv/ms-member/single/list/normal",
50
+ name: "dv/ms-member/list",
51
51
  path: "/dv/ms-member",
52
52
  component: () => import('../page/index/dv/ms-member/index.vue.js'),
53
53
  meta: { name: "ms-member" }
@@ -1 +1 @@
1
- {"version":3,"file":"PageManager.js","sources":["../../../src/core/PageManager.ts"],"sourcesContent":["import { RouteRecordRaw } from \"vue-router\";\r\nimport type { MSAppClient } from \"./MSAppClient\";\r\nimport { Disposable, Event, createDisposable } from \"@maketribe/utils\";\r\n\r\nexport class PageManager {\r\n normalPages: RouteRecordRaw[] = [];\r\n\r\n extendsPages: RouteRecordRaw[] = [];\r\n\r\n msAppClient: MSAppClient | null = null;\r\n\r\n msAppClientChangeEvent: Event<{ msAppClient: MSAppClient | null }> =\r\n new Event();\r\n\r\n msAppClientDisposable: Disposable | null = null;\r\n\r\n setMSAppCLient(msAppClient: MSAppClient | null) {\r\n this.msAppClientDisposable?.dispose();\r\n\r\n this.msAppClientDisposable = new Disposable();\r\n\r\n this.msAppClient = msAppClient;\r\n\r\n this.msAppClientChangeEvent.emit({ msAppClient });\r\n }\r\n\r\n addNormalPage(normalPage: RouteRecordRaw) {\r\n this.normalPages.push(normalPage);\r\n }\r\n\r\n addExtendsPage(extendsPage: RouteRecordRaw) {\r\n this.extendsPages.push(extendsPage);\r\n }\r\n\r\n init() {\r\n this.addNormalPage({\r\n name: \"mk-ms-layout\",\r\n path: \"/\",\r\n component: () => import(\"../page/index.vue\"),\r\n });\r\n\r\n this.addNormalPage({\r\n name: \"login\",\r\n path: \"/login\",\r\n meta: {\r\n isAuthorization: false,\r\n },\r\n component: () => import(\"../page/login/index.vue\"),\r\n });\r\n\r\n this.addNormalPage({\r\n name: \"signup\",\r\n path: \"/signup\",\r\n meta: {\r\n isAuthorization: false,\r\n },\r\n component: () => import(\"../page/signup/index.vue\"),\r\n });\r\n\r\n this.addExtendsPage({\r\n name: \"dv/ms-material/list\",\r\n path: \"/material-list\",\r\n component: () => import(\"../page/index/material/index.vue\"),\r\n meta: { name: \"ms-material\" },\r\n });\r\n\r\n this.addExtendsPage({\r\n name: \"dv/ms-member/single/list/normal\",\r\n path: \"/dv/ms-member\",\r\n component: () => import(\"../page/index/dv/ms-member/index.vue\"),\r\n meta: { name: \"ms-member\" },\r\n });\r\n\r\n this.addExtendsPage({\r\n name: \"dv/ms-role/single/list/dialog\",\r\n path: \"/dv/ms-role\",\r\n component: () => import(\"../page/index/dv/ms-role/index.vue\"),\r\n meta: { name: \"ms-role\" },\r\n });\r\n\r\n this.addExtendsPage({\r\n name: \"dv/local-log/single/tree/dialog\",\r\n path: \"/log/local\",\r\n component: () => import(\"../page/index/dv/local-log/index.vue\"),\r\n meta: { name: \"local-log\" },\r\n });\r\n\r\n this.msAppClientChangeEvent.on(({ msAppClient }) => {\r\n if (!msAppClient) {\r\n return;\r\n }\r\n\r\n const vueRouter = msAppClient.vueRouter;\r\n const vueRoutes = vueRouter.getRoutes();\r\n\r\n const addedNormalPageNames: string[] = [];\r\n\r\n for (const normalPage of this.normalPages) {\r\n const vueRoute = vueRoutes.find(\r\n (vueRoute) => vueRoute.name === normalPage.name\r\n );\r\n\r\n if (!vueRoute) {\r\n addedNormalPageNames.push(normalPage.name as string);\r\n vueRouter.addRoute(normalPage);\r\n }\r\n }\r\n\r\n this.msAppClientDisposable?.register(\r\n createDisposable(() => {\r\n for (const addedNormalPageName of addedNormalPageNames) {\r\n vueRouter.removeRoute(addedNormalPageName);\r\n }\r\n })\r\n );\r\n\r\n this.msAppClientDisposable?.register(\r\n msAppClient.beforeInitUserSessionEvent.on(({ userSession }) => {\r\n if (!userSession) {\r\n return;\r\n }\r\n\r\n userSession.beforeInitRouterEvent.on(() => {\r\n const router = userSession.router;\r\n\r\n const addedExtendsPageNames: string[] = [];\r\n\r\n for (const extendsPage of this.extendsPages) {\r\n const routeInfo = router.getRouteByName(\r\n extendsPage.name as string\r\n );\r\n\r\n if (!routeInfo) {\r\n continue;\r\n }\r\n\r\n const vueRoute = vueRoutes.find(\r\n (vueRoute) => vueRoute.name === extendsPage.name\r\n );\r\n\r\n if (!vueRoute) {\r\n extendsPage.path = routeInfo.route || extendsPage.path;\r\n addedExtendsPageNames.push(extendsPage.name as string);\r\n vueRouter.addRoute(\"mk-ms-layout\", extendsPage);\r\n }\r\n }\r\n\r\n if (!this.extendsPages.find((page) => page.name === \"notFound\")) {\r\n this.addExtendsPage({\r\n name: \"notFound\",\r\n // path: \":pathMatch(.*)*\",\r\n path: \"\",\r\n component: () => import(\"../page/index/404.vue\"),\r\n });\r\n }\r\n\r\n userSession.register(\r\n createDisposable(() => {\r\n for (const addedExtendsPageName of addedExtendsPageNames) {\r\n vueRouter.removeRoute(addedExtendsPageName);\r\n }\r\n })\r\n );\r\n });\r\n })\r\n );\r\n });\r\n }\r\n}\r\n"],"names":["vueRoute"],"mappings":"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"}
1
+ {"version":3,"file":"PageManager.js","sources":["../../../src/core/PageManager.ts"],"sourcesContent":["import { RouteRecordRaw } from \"vue-router\";\r\nimport type { MSAppClient } from \"./MSAppClient\";\r\nimport { Disposable, Event, createDisposable } from \"@maketribe/utils\";\r\n\r\nexport class PageManager {\r\n normalPages: RouteRecordRaw[] = [];\r\n\r\n extendsPages: RouteRecordRaw[] = [];\r\n\r\n msAppClient: MSAppClient | null = null;\r\n\r\n msAppClientChangeEvent: Event<{ msAppClient: MSAppClient | null }> =\r\n new Event();\r\n\r\n msAppClientDisposable: Disposable | null = null;\r\n\r\n setMSAppCLient(msAppClient: MSAppClient | null) {\r\n this.msAppClientDisposable?.dispose();\r\n\r\n this.msAppClientDisposable = new Disposable();\r\n\r\n this.msAppClient = msAppClient;\r\n\r\n this.msAppClientChangeEvent.emit({ msAppClient });\r\n }\r\n\r\n addNormalPage(normalPage: RouteRecordRaw) {\r\n this.normalPages.push(normalPage);\r\n }\r\n\r\n addExtendsPage(extendsPage: RouteRecordRaw) {\r\n this.extendsPages.push(extendsPage);\r\n }\r\n\r\n init() {\r\n this.addNormalPage({\r\n name: \"mk-ms-layout\",\r\n path: \"/\",\r\n component: () => import(\"../page/index.vue\"),\r\n });\r\n\r\n this.addNormalPage({\r\n name: \"login\",\r\n path: \"/login\",\r\n meta: {\r\n isAuthorization: false,\r\n },\r\n component: () => import(\"../page/login/index.vue\"),\r\n });\r\n\r\n this.addNormalPage({\r\n name: \"signup\",\r\n path: \"/signup\",\r\n meta: {\r\n isAuthorization: false,\r\n },\r\n component: () => import(\"../page/signup/index.vue\"),\r\n });\r\n\r\n this.addExtendsPage({\r\n name: \"dv/ms-material/list\",\r\n path: \"/material-list\",\r\n component: () => import(\"../page/index/material/index.vue\"),\r\n meta: { name: \"ms-material\" },\r\n });\r\n\r\n this.addExtendsPage({\r\n name: \"dv/ms-member/list\",\r\n path: \"/dv/ms-member\",\r\n component: () => import(\"../page/index/dv/ms-member/index.vue\"),\r\n meta: { name: \"ms-member\" },\r\n });\r\n\r\n this.addExtendsPage({\r\n name: \"dv/ms-role/single/list/dialog\",\r\n path: \"/dv/ms-role\",\r\n component: () => import(\"../page/index/dv/ms-role/index.vue\"),\r\n meta: { name: \"ms-role\" },\r\n });\r\n\r\n this.addExtendsPage({\r\n name: \"dv/local-log/single/tree/dialog\",\r\n path: \"/log/local\",\r\n component: () => import(\"../page/index/dv/local-log/index.vue\"),\r\n meta: { name: \"local-log\" },\r\n });\r\n\r\n this.msAppClientChangeEvent.on(({ msAppClient }) => {\r\n if (!msAppClient) {\r\n return;\r\n }\r\n\r\n const vueRouter = msAppClient.vueRouter;\r\n const vueRoutes = vueRouter.getRoutes();\r\n\r\n const addedNormalPageNames: string[] = [];\r\n\r\n for (const normalPage of this.normalPages) {\r\n const vueRoute = vueRoutes.find(\r\n (vueRoute) => vueRoute.name === normalPage.name\r\n );\r\n\r\n if (!vueRoute) {\r\n addedNormalPageNames.push(normalPage.name as string);\r\n vueRouter.addRoute(normalPage);\r\n }\r\n }\r\n\r\n this.msAppClientDisposable?.register(\r\n createDisposable(() => {\r\n for (const addedNormalPageName of addedNormalPageNames) {\r\n vueRouter.removeRoute(addedNormalPageName);\r\n }\r\n })\r\n );\r\n\r\n this.msAppClientDisposable?.register(\r\n msAppClient.beforeInitUserSessionEvent.on(({ userSession }) => {\r\n if (!userSession) {\r\n return;\r\n }\r\n\r\n userSession.beforeInitRouterEvent.on(() => {\r\n const router = userSession.router;\r\n\r\n const addedExtendsPageNames: string[] = [];\r\n\r\n for (const extendsPage of this.extendsPages) {\r\n const routeInfo = router.getRouteByName(\r\n extendsPage.name as string\r\n );\r\n\r\n if (!routeInfo) {\r\n continue;\r\n }\r\n\r\n const vueRoute = vueRoutes.find(\r\n (vueRoute) => vueRoute.name === extendsPage.name\r\n );\r\n\r\n if (!vueRoute) {\r\n extendsPage.path = routeInfo.route || extendsPage.path;\r\n addedExtendsPageNames.push(extendsPage.name as string);\r\n vueRouter.addRoute(\"mk-ms-layout\", extendsPage);\r\n }\r\n }\r\n\r\n if (!this.extendsPages.find((page) => page.name === \"notFound\")) {\r\n this.addExtendsPage({\r\n name: \"notFound\",\r\n // path: \":pathMatch(.*)*\",\r\n path: \"\",\r\n component: () => import(\"../page/index/404.vue\"),\r\n });\r\n }\r\n\r\n userSession.register(\r\n createDisposable(() => {\r\n for (const addedExtendsPageName of addedExtendsPageNames) {\r\n vueRouter.removeRoute(addedExtendsPageName);\r\n }\r\n })\r\n );\r\n });\r\n })\r\n );\r\n });\r\n }\r\n}\r\n"],"names":["vueRoute"],"mappings":"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"}
@@ -11,6 +11,10 @@ export type MemberResult = {
11
11
  roles: any[];
12
12
  depts: any[];
13
13
  valid: number;
14
+ isLock?: number;
15
+ errorCount?: number;
16
+ unlockDatetime?: string;
17
+ memo?: string;
14
18
  };
15
19
  export type Member = {
16
20
  id: string;
@@ -24,6 +28,10 @@ export type Member = {
24
28
  roles: any[];
25
29
  depts: any[];
26
30
  valid: number;
31
+ isLock?: number;
32
+ errorCount?: number;
33
+ unlockDatetime?: string;
34
+ memo?: string;
27
35
  };
28
36
  export declare class MemberForm<T extends MemberResult = MemberResult, F extends Member = Member> extends DataForm<T, F> {
29
37
  constructor(options?: DataFormOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"MemberForm.js","sources":["../../../../src/dataview/member/MemberForm.ts"],"sourcesContent":["import { DataForm, DataFormOptions, FormColumn } from \"@maketribe/dm\";\r\nimport { defineDataForm } from \"../../define-data-form\";\r\nimport { RoleTable } from \"../role\";\r\nimport { DepartmentTable } from \"../department\";\r\nimport { EMAIL_PATTERN } from \"../../constants\";\r\nimport { WebFileUploadContext } from \"../../components/upload-file/context/WebFileUploadContext\";\r\n\r\nexport type MemberResult = {\r\n id: string;\r\n name: string;\r\n wechatNo: string;\r\n nickName: string;\r\n email: string;\r\n phone: string;\r\n account: string;\r\n avatar: string;\r\n roles: any[];\r\n depts: any[];\r\n valid: number;\r\n};\r\n\r\nexport type Member = {\r\n id: string;\r\n name: string;\r\n wechatNo: string;\r\n nickName: string;\r\n email: string;\r\n phone: string;\r\n account: string;\r\n avatar: string | null;\r\n roles: any[];\r\n depts: any[];\r\n valid: number;\r\n};\r\n\r\nexport class MemberForm<\r\n T extends MemberResult = MemberResult,\r\n F extends Member = Member\r\n> extends DataForm<T, F> {\r\n constructor(options: DataFormOptions = {}) {\r\n super({ name: \"ms-member\", ...options });\r\n }\r\n\r\n protected async initialize() {\r\n await super.initialize();\r\n \r\n this.setColumns([\r\n new FormColumn({ name: \"id\", label: \"编号\" }),\r\n new FormColumn({ name: \"name\", label: \"姓名\", required: true }),\r\n new FormColumn({ name: \"wechatNo\", label: \"微信号\", defaultValue: null }),\r\n new FormColumn({ name: \"nickName\", label: \"昵称\", required: true }),\r\n new FormColumn({\r\n name: \"email\",\r\n label: \"邮箱\",\r\n required: true,\r\n rules: [{ message: \"邮箱格式有误\", pattern: EMAIL_PATTERN }],\r\n }),\r\n new FormColumn({ name: \"phone\", label: \"手机号\", defaultValue: null }),\r\n new FormColumn({ name: \"account\", label: \"账号\", required: true }),\r\n new FormColumn({\r\n name: \"avatar\",\r\n label: \"头像\",\r\n defaultValue: null,\r\n componentInfo: \"MKFormImageUpload\",\r\n componentProps: {\r\n uploadContext: new WebFileUploadContext(),\r\n },\r\n }),\r\n new FormColumn({\r\n name: \"roles\",\r\n label: \"角色\",\r\n defaultValue: null,\r\n componentInfo: \"MKFormDataTableSelect\",\r\n componentProps: {\r\n multiple: true,\r\n labelFieldName: \"name\",\r\n dataTable: new RoleTable(),\r\n },\r\n }),\r\n new FormColumn({\r\n name: \"depts\",\r\n label: \"部门\",\r\n defaultValue: null,\r\n componentInfo: \"MKFormDataTableSelect\",\r\n componentProps: {\r\n multiple: true,\r\n labelFieldName: \"name\",\r\n dataTable: new DepartmentTable(),\r\n },\r\n }),\r\n new FormColumn({ name: \"memo\", label: \"备注\" }),\r\n ]);\r\n }\r\n\r\n formatSubmitData(data: any) {\r\n const { roles, depts, ...rest } = data;\r\n\r\n const rolesArr = roles?.map((item: any) => {\r\n return { roleId: item };\r\n });\r\n const deptsArr = depts?.map((item: any) => {\r\n return { deptId: item };\r\n });\r\n return { ...rest, roles: rolesArr, depts: deptsArr };\r\n }\r\n\r\n formatItem(item: T): F {\r\n return {\r\n id: item.id,\r\n name: item.name || \"\",\r\n wechatNo: item.wechatNo || \"\",\r\n nickName: item.nickName || \"\",\r\n email: item.email || \"\",\r\n phone: item.phone || \"\",\r\n account: item.account || \"\",\r\n avatar: item.avatar,\r\n roles: item.roles?.map((role) => role.roleId),\r\n depts: item.depts?.map((department) => department.deptId),\r\n valid: item.valid,\r\n } as F;\r\n }\r\n}\r\n\r\ndefineDataForm(MemberForm);\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemberForm.js","sources":["../../../../src/dataview/member/MemberForm.ts"],"sourcesContent":["import { DataForm, DataFormOptions, FormColumn } from \"@maketribe/dm\";\r\nimport { defineDataForm } from \"../../define-data-form\";\r\nimport { RoleTable } from \"../role\";\r\nimport { DepartmentTable } from \"../department\";\r\nimport { EMAIL_PATTERN } from \"../../constants\";\r\nimport { WebFileUploadContext } from \"../../components/upload-file/context/WebFileUploadContext\";\r\n\r\nexport type MemberResult = {\r\n id: string;\r\n name: string;\r\n wechatNo: string;\r\n nickName: string;\r\n email: string;\r\n phone: string;\r\n account: string;\r\n avatar: string;\r\n roles: any[];\r\n depts: any[];\r\n valid: number;\r\n isLock?: number;\r\n errorCount?: number;\r\n unlockDatetime?: string;\r\n memo?: string;\r\n\r\n};\r\n\r\nexport type Member = {\r\n id: string;\r\n name: string;\r\n wechatNo: string;\r\n nickName: string;\r\n email: string;\r\n phone: string;\r\n account: string;\r\n avatar: string | null;\r\n roles: any[];\r\n depts: any[];\r\n valid: number;\r\n isLock?: number;\r\n errorCount?: number;\r\n unlockDatetime?: string;\r\n memo?: string;\r\n\r\n};\r\n\r\nexport class MemberForm<\r\n T extends MemberResult = MemberResult,\r\n F extends Member = Member\r\n> extends DataForm<T, F> {\r\n constructor(options: DataFormOptions = {}) {\r\n super({ name: \"ms-member\", ...options });\r\n }\r\n\r\n protected async initialize() {\r\n await super.initialize();\r\n\r\n this.setColumns([\r\n new FormColumn({ name: \"id\", label: \"编号\" }),\r\n new FormColumn({ name: \"name\", label: \"姓名\", required: true }),\r\n new FormColumn({ name: \"wechatNo\", label: \"微信号\", defaultValue: null }),\r\n new FormColumn({ name: \"nickName\", label: \"昵称\", required: true }),\r\n new FormColumn({\r\n name: \"email\",\r\n label: \"邮箱\",\r\n required: true,\r\n rules: [{ message: \"邮箱格式有误\", pattern: EMAIL_PATTERN }],\r\n }),\r\n new FormColumn({ name: \"phone\", label: \"手机号\", defaultValue: null }),\r\n new FormColumn({ name: \"account\", label: \"账号\", required: true }),\r\n new FormColumn({\r\n name: \"avatar\",\r\n label: \"头像\",\r\n defaultValue: null,\r\n componentInfo: \"MKFormImageUpload\",\r\n componentProps: {\r\n uploadContext: new WebFileUploadContext(),\r\n },\r\n }),\r\n new FormColumn({\r\n name: \"roles\",\r\n label: \"角色\",\r\n defaultValue: null,\r\n componentInfo: \"MKFormDataTableSelect\",\r\n componentProps: {\r\n multiple: true,\r\n labelFieldName: \"name\",\r\n dataTable: new RoleTable(),\r\n },\r\n }),\r\n new FormColumn({\r\n name: \"depts\",\r\n label: \"部门\",\r\n defaultValue: null,\r\n componentInfo: \"MKFormDataTableSelect\",\r\n componentProps: {\r\n multiple: true,\r\n labelFieldName: \"name\",\r\n dataTable: new DepartmentTable(),\r\n },\r\n }),\r\n new FormColumn({ name: \"memo\", label: \"备注\" }),\r\n ]);\r\n }\r\n\r\n formatSubmitData(data: any) {\r\n const { roles, depts, ...rest } = data;\r\n\r\n const rolesArr = roles?.map((item: any) => {\r\n return { roleId: item };\r\n });\r\n const deptsArr = depts?.map((item: any) => {\r\n return { deptId: item };\r\n });\r\n return { ...rest, roles: rolesArr, depts: deptsArr };\r\n }\r\n\r\n formatItem(item: T): F {\r\n return {\r\n id: item.id,\r\n name: item.name || \"\",\r\n wechatNo: item.wechatNo || \"\",\r\n nickName: item.nickName || \"\",\r\n email: item.email || \"\",\r\n phone: item.phone || \"\",\r\n account: item.account || \"\",\r\n avatar: item.avatar,\r\n roles: item.roles?.map((role) => role.roleId),\r\n depts: item.depts?.map((department) => department.deptId),\r\n valid: item.valid,\r\n } as F;\r\n }\r\n}\r\n\r\ndefineDataForm(MemberForm);\r\n"],"names":[],"mappings":"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"}