ts-glitter 21.9.6 → 21.9.8
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.
- package/lowcode/Entry.js +1 -1
- package/lowcode/Entry.ts +1 -1
- package/lowcode/backend-manager/bg-blog.js +2 -0
- package/lowcode/backend-manager/bg-blog.ts +4 -0
- package/lowcode/backend-manager/bg-product.js +3 -3
- package/lowcode/backend-manager/bg-product.ts +3 -3
- package/lowcode/backend-manager/bg-widget.js +15 -11
- package/lowcode/backend-manager/bg-widget.ts +30 -21
- package/lowcode/cms-plugin/menus-setting.js +389 -141
- package/lowcode/cms-plugin/menus-setting.ts +519 -228
- package/lowcode/cms-plugin/shopping-collections.js +5 -38
- package/lowcode/cms-plugin/shopping-collections.ts +5 -47
- package/lowcode/jspage/function-page/setting_editor.js +0 -27
- package/lowcode/jspage/function-page/setting_editor.ts +27 -27
- package/lowcode/public-components/footer/footer-01.js +183 -158
- package/lowcode/public-components/footer/footer-01.ts +275 -256
- package/lowcode/public-components/footer/footer-02.js +83 -63
- package/lowcode/public-components/footer/footer-02.ts +160 -145
- package/lowcode/public-components/footer/footer-03.js +78 -60
- package/lowcode/public-components/footer/footer-03.ts +149 -137
- package/lowcode/public-components/headers/sy-02.js +17 -2
- package/lowcode/public-components/headers/sy-02.ts +18 -6
- package/lowcode/public-components/headers/sy-03.js +18 -4
- package/lowcode/public-components/headers/sy-03.ts +26 -15
- package/lowcode/public-components/headers/sy-04.js +18 -4
- package/lowcode/public-components/headers/sy-04.ts +26 -15
- package/lowcode/public-components/headers/sy-05.js +93 -68
- package/lowcode/public-components/headers/sy-05.ts +174 -151
- package/lowcode/public-components/product/pd-class.js +27 -8
- package/lowcode/public-components/product/pd-class.ts +60 -35
- package/package.json +1 -1
- package/src/api-public/services/shopee.js +17 -7
- package/src/api-public/services/user.js +17 -7
- package/src/index.js +17 -7
- package/src/services/app.js +17 -7
- package/src/services/app.js.map +1 -1
- package/src/services/backend-service.js +17 -7
- package/src/services/backend-service.js.map +1 -1
|
@@ -9,7 +9,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { BgWidget } from '../backend-manager/bg-widget.js';
|
|
11
11
|
import { ApiUser } from '../glitter-base/route/user.js';
|
|
12
|
-
import { EditorElem } from '../glitterBundle/plugins/editor-elem.js';
|
|
13
12
|
import { LanguageBackend } from './language-backend.js';
|
|
14
13
|
import { ShareDialog } from '../glitterBundle/dialog/ShareDialog.js';
|
|
15
14
|
const html = String.raw;
|
|
@@ -17,18 +16,17 @@ export class MenusSetting {
|
|
|
17
16
|
static main(gvc, widget, def) {
|
|
18
17
|
const html = String.raw;
|
|
19
18
|
const glitter = gvc.glitter;
|
|
19
|
+
const dialog = new ShareDialog(glitter);
|
|
20
20
|
const vm = {
|
|
21
21
|
type: 'list',
|
|
22
22
|
index: 0,
|
|
23
23
|
dataList: undefined,
|
|
24
24
|
query: '',
|
|
25
25
|
tab: def || 'menu',
|
|
26
|
-
select: { title: '', tag: '' }
|
|
26
|
+
select: { title: '', tag: '' },
|
|
27
27
|
};
|
|
28
|
-
const filterID = gvc.glitter.getUUID();
|
|
29
|
-
let vmi = undefined;
|
|
30
28
|
function getDatalist() {
|
|
31
|
-
return vm.dataList.map((dd
|
|
29
|
+
return vm.dataList.map((dd) => {
|
|
32
30
|
return [
|
|
33
31
|
{
|
|
34
32
|
key: '選單名稱',
|
|
@@ -39,9 +37,6 @@ export class MenusSetting {
|
|
|
39
37
|
}
|
|
40
38
|
return gvc.bindView(() => {
|
|
41
39
|
const id = glitter.getUUID();
|
|
42
|
-
function refresh() {
|
|
43
|
-
gvc.notifyDataChange(id);
|
|
44
|
-
}
|
|
45
40
|
return {
|
|
46
41
|
bind: id,
|
|
47
42
|
dataList: [{ obj: vm, key: 'type' }],
|
|
@@ -56,7 +51,6 @@ export class MenusSetting {
|
|
|
56
51
|
function next() {
|
|
57
52
|
var _a;
|
|
58
53
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
const dialog = new ShareDialog(gvc.glitter);
|
|
60
54
|
dialog.dataLoading({ visible: true });
|
|
61
55
|
const tab = vm.tab === 'menu' ? `頁首選單` : `頁腳選單`;
|
|
62
56
|
let menu_all = (yield ApiUser.getPublicConfig('menu-setting-list', 'manager')).response.value;
|
|
@@ -64,14 +58,14 @@ export class MenusSetting {
|
|
|
64
58
|
menu_all.list = [
|
|
65
59
|
{
|
|
66
60
|
tag: gvc.glitter.getUUID(),
|
|
67
|
-
title: title || [tab, `${
|
|
68
|
-
tab: vm.tab === 'menu' ? 'menu-setting' : 'footer-setting'
|
|
69
|
-
}
|
|
61
|
+
title: title || [tab, `${menu_all.list.length + 1}`].join(''),
|
|
62
|
+
tab: vm.tab === 'menu' ? 'menu-setting' : 'footer-setting',
|
|
63
|
+
},
|
|
70
64
|
].concat(menu_all.list);
|
|
71
65
|
yield ApiUser.setPublicConfig({
|
|
72
66
|
key: 'menu-setting-list',
|
|
73
67
|
value: menu_all,
|
|
74
|
-
user_id: 'manager'
|
|
68
|
+
user_id: 'manager',
|
|
75
69
|
});
|
|
76
70
|
dialog.dataLoading({ visible: false });
|
|
77
71
|
gvc.notifyDataChange(id);
|
|
@@ -84,13 +78,13 @@ export class MenusSetting {
|
|
|
84
78
|
return [
|
|
85
79
|
BgWidget.editeInput({
|
|
86
80
|
title: '',
|
|
87
|
-
callback:
|
|
81
|
+
callback: text => {
|
|
88
82
|
title = text;
|
|
89
83
|
},
|
|
90
84
|
default: title,
|
|
91
85
|
gvc: gvc,
|
|
92
|
-
placeHolder: '請輸入選單名稱'
|
|
93
|
-
})
|
|
86
|
+
placeHolder: '請輸入選單名稱',
|
|
87
|
+
}),
|
|
94
88
|
].join('');
|
|
95
89
|
},
|
|
96
90
|
footer_html: (gvc) => {
|
|
@@ -99,17 +93,19 @@ export class MenusSetting {
|
|
|
99
93
|
gvc.closeDialog();
|
|
100
94
|
}), '儲存');
|
|
101
95
|
},
|
|
102
|
-
width: 300
|
|
96
|
+
width: 300,
|
|
103
97
|
});
|
|
104
98
|
})))}
|
|
105
99
|
</div>
|
|
106
|
-
${def
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
gvc.
|
|
112
|
-
|
|
100
|
+
${def
|
|
101
|
+
? ''
|
|
102
|
+
: BgWidget.tab([
|
|
103
|
+
{ title: '主選單', key: 'menu' },
|
|
104
|
+
{ title: '頁腳', key: 'footer' },
|
|
105
|
+
], gvc, vm.tab, text => {
|
|
106
|
+
vm.tab = text;
|
|
107
|
+
gvc.notifyDataChange(id);
|
|
108
|
+
}, `${document.body.clientWidth < 800 ? '' : `margin-bottom:0px !important;`}
|
|
113
109
|
`)}
|
|
114
110
|
${BgWidget.container(BgWidget.mainCard(BgWidget.tableV3({
|
|
115
111
|
gvc: gvc,
|
|
@@ -119,12 +115,16 @@ export class MenusSetting {
|
|
|
119
115
|
let menu_all = (yield ApiUser.getPublicConfig('menu-setting-list', 'manager')).response.value;
|
|
120
116
|
menu_all.list = (_a = menu_all.list) !== null && _a !== void 0 ? _a : [];
|
|
121
117
|
vm.dataList = [
|
|
122
|
-
{
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
118
|
+
{
|
|
119
|
+
tag: tag,
|
|
120
|
+
title: html `
|
|
121
|
+
<div>
|
|
122
|
+
${vm.tab === 'menu' ? '頁首選單' : '頁腳選單'}
|
|
123
|
+
<span style="font-size: 12px; color: #36B;">系統預設</span>
|
|
124
|
+
</div>
|
|
125
|
+
`,
|
|
126
|
+
},
|
|
127
|
+
...menu_all.list.filter((d1) => d1.tab === tag),
|
|
128
128
|
];
|
|
129
129
|
vmi.pageSize = 1;
|
|
130
130
|
vmi.originalData = vm.dataList;
|
|
@@ -132,7 +132,7 @@ export class MenusSetting {
|
|
|
132
132
|
vmi.loading = false;
|
|
133
133
|
vmi.callback();
|
|
134
134
|
}),
|
|
135
|
-
rowClick: (
|
|
135
|
+
rowClick: (_, index) => {
|
|
136
136
|
vm.select = vm.dataList[index];
|
|
137
137
|
vm.type = 'replace';
|
|
138
138
|
},
|
|
@@ -163,8 +163,8 @@ export class MenusSetting {
|
|
|
163
163
|
}
|
|
164
164
|
},
|
|
165
165
|
divCreate: {
|
|
166
|
-
class:
|
|
167
|
-
style:
|
|
166
|
+
class: 'w-100',
|
|
167
|
+
style: 'max-width: 100%;',
|
|
168
168
|
},
|
|
169
169
|
};
|
|
170
170
|
});
|
|
@@ -179,8 +179,10 @@ export class MenusSetting {
|
|
|
179
179
|
},
|
|
180
180
|
selected: false,
|
|
181
181
|
loading: true,
|
|
182
|
-
language: window.parent.store_info.language_setting.def
|
|
182
|
+
language: window.parent.store_info.language_setting.def,
|
|
183
183
|
};
|
|
184
|
+
const gvc = cf.gvc;
|
|
185
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
184
186
|
ApiUser.getPublicConfig(cf.key, 'manager').then((data) => {
|
|
185
187
|
if (data.response.value) {
|
|
186
188
|
vm.link = data.response.value;
|
|
@@ -200,16 +202,17 @@ export class MenusSetting {
|
|
|
200
202
|
vm.link[a] = (_a = vm.link[a]) !== null && _a !== void 0 ? _a : [];
|
|
201
203
|
clearNoNeedData(vm.link[a]);
|
|
202
204
|
}
|
|
203
|
-
const dialog = new ShareDialog(gvc.glitter);
|
|
204
205
|
dialog.dataLoading({ visible: true });
|
|
205
206
|
let menu_all = (yield ApiUser.getPublicConfig('menu-setting-list', 'manager')).response.value;
|
|
206
207
|
menu_all.list = (_b = menu_all.list) !== null && _b !== void 0 ? _b : [];
|
|
207
|
-
const find_ = menu_all.list.find((d1) => {
|
|
208
|
+
const find_ = menu_all.list.find((d1) => {
|
|
209
|
+
return d1.tag === cf.key;
|
|
210
|
+
});
|
|
208
211
|
find_ && (find_.title = cf.title);
|
|
209
212
|
yield ApiUser.setPublicConfig({
|
|
210
213
|
key: 'menu-setting-list',
|
|
211
214
|
value: menu_all,
|
|
212
|
-
user_id: 'manager'
|
|
215
|
+
user_id: 'manager',
|
|
213
216
|
});
|
|
214
217
|
ApiUser.setPublicConfig({
|
|
215
218
|
key: cf.key,
|
|
@@ -258,7 +261,6 @@ export class MenusSetting {
|
|
|
258
261
|
return !d1.selected;
|
|
259
262
|
});
|
|
260
263
|
}
|
|
261
|
-
const gvc = cf.gvc;
|
|
262
264
|
function refresh() {
|
|
263
265
|
gvc.notifyDataChange(vm.id);
|
|
264
266
|
}
|
|
@@ -273,8 +275,8 @@ export class MenusSetting {
|
|
|
273
275
|
${BgWidget.goBack(cf.gvc.event(() => {
|
|
274
276
|
cf.goBack();
|
|
275
277
|
}))}${BgWidget.title((_b = cf.title) !== null && _b !== void 0 ? _b : '選單設定')}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
+
<div class="mx-2 ${['menu-setting', 'footer-setting', 'text-manager'].includes(cf.key) ? 'd-none' : ''}">
|
|
279
|
+
${BgWidget.grayButton('重新命名', gvc.event(() => {
|
|
278
280
|
BgWidget.settingDialog({
|
|
279
281
|
gvc: gvc,
|
|
280
282
|
title: '重新命名',
|
|
@@ -282,13 +284,13 @@ export class MenusSetting {
|
|
|
282
284
|
return [
|
|
283
285
|
BgWidget.editeInput({
|
|
284
286
|
title: '',
|
|
285
|
-
callback:
|
|
287
|
+
callback: text => {
|
|
286
288
|
cf.title = text;
|
|
287
289
|
},
|
|
288
290
|
default: cf.title,
|
|
289
291
|
gvc: gvc,
|
|
290
|
-
placeHolder: ''
|
|
291
|
-
})
|
|
292
|
+
placeHolder: '',
|
|
293
|
+
}),
|
|
292
294
|
].join('');
|
|
293
295
|
},
|
|
294
296
|
footer_html: (gvc) => {
|
|
@@ -297,13 +299,11 @@ export class MenusSetting {
|
|
|
297
299
|
refresh();
|
|
298
300
|
}), '儲存');
|
|
299
301
|
},
|
|
300
|
-
width: 500
|
|
302
|
+
width: 500,
|
|
301
303
|
});
|
|
302
304
|
}))}
|
|
303
|
-
|
|
304
|
-
|
|
305
|
+
</div>
|
|
305
306
|
<div class="flex-fill"></div>
|
|
306
|
-
|
|
307
307
|
${LanguageBackend.switchBtn({
|
|
308
308
|
gvc: gvc,
|
|
309
309
|
language: vm.language,
|
|
@@ -321,19 +321,13 @@ export class MenusSetting {
|
|
|
321
321
|
style="width: 100%; left: 0px; top: 0px; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 20px; display: inline-flex"
|
|
322
322
|
>
|
|
323
323
|
<div
|
|
324
|
-
class="w-100 ${getSelectCount({
|
|
325
|
-
items: link,
|
|
326
|
-
}) > 0
|
|
327
|
-
? ``
|
|
328
|
-
: `d-none`}"
|
|
324
|
+
class="w-100 ${getSelectCount({ items: link }) > 0 ? '' : 'd-none'}"
|
|
329
325
|
style="height: 40px; padding: 12px 18px;background: #F7F7F7; border-radius: 10px; justify-content: flex-end; align-items: center; gap: 8px; display: inline-flex"
|
|
330
326
|
>
|
|
331
327
|
<div
|
|
332
328
|
style="flex: 1 1 0; color: #393939; font-size: 14px; font-family: Noto Sans; font-weight: 700; word-wrap: break-word"
|
|
333
329
|
>
|
|
334
|
-
已選取${getSelectCount({
|
|
335
|
-
items: link,
|
|
336
|
-
})}項
|
|
330
|
+
已選取${getSelectCount({ items: link })}項
|
|
337
331
|
</div>
|
|
338
332
|
<div
|
|
339
333
|
style="cursor:pointer;padding: 4px 14px;background: white; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.10); border-radius: 20px; border: 1px #DDDDDD solid; justify-content: flex-start; align-items: flex-start; gap: 10px; display: flex"
|
|
@@ -356,26 +350,18 @@ export class MenusSetting {
|
|
|
356
350
|
<div
|
|
357
351
|
class="${allSelect({
|
|
358
352
|
items: link,
|
|
359
|
-
selected: !link.find(dd =>
|
|
360
|
-
return !dd.selected;
|
|
361
|
-
}),
|
|
353
|
+
selected: !link.find(dd => !dd.selected),
|
|
362
354
|
})
|
|
363
|
-
?
|
|
364
|
-
:
|
|
365
|
-
style="color
|
|
355
|
+
? 'fa-solid fa-square-check'
|
|
356
|
+
: 'fa-regular fa-square'}"
|
|
357
|
+
style="color: #393939; width: 16px; height: 16px; cursor: pointer;"
|
|
366
358
|
onclick="${cf.gvc.event((e, event) => {
|
|
367
359
|
event.stopPropagation();
|
|
368
|
-
if (link.find(dd => {
|
|
369
|
-
|
|
370
|
-
})) {
|
|
371
|
-
selectAll({
|
|
372
|
-
items: link,
|
|
373
|
-
});
|
|
360
|
+
if (link.find(dd => !dd.selected)) {
|
|
361
|
+
selectAll({ items: link });
|
|
374
362
|
}
|
|
375
363
|
else {
|
|
376
|
-
clearAll({
|
|
377
|
-
items: link,
|
|
378
|
-
});
|
|
364
|
+
clearAll({ items: link });
|
|
379
365
|
}
|
|
380
366
|
gvc.notifyDataChange(vm.id);
|
|
381
367
|
})}"
|
|
@@ -400,7 +386,7 @@ export class MenusSetting {
|
|
|
400
386
|
.map((dd, index) => {
|
|
401
387
|
const list = html `
|
|
402
388
|
<div
|
|
403
|
-
class="
|
|
389
|
+
class="w-100"
|
|
404
390
|
style="width: 100%; justify-content: flex-start; align-items: center; gap: 5px; display: inline-flex;cursor: pointer;"
|
|
405
391
|
onclick="${cf.gvc.event(() => {
|
|
406
392
|
if (dd.items && dd.items.length > 0) {
|
|
@@ -414,7 +400,7 @@ export class MenusSetting {
|
|
|
414
400
|
? `fa-solid fa-square-check`
|
|
415
401
|
: `fa-regular fa-square`}"
|
|
416
402
|
style="color:#393939;width: 16px; height: 16px;"
|
|
417
|
-
onclick="${cf.gvc.event((
|
|
403
|
+
onclick="${cf.gvc.event((_, event) => {
|
|
418
404
|
event.stopPropagation();
|
|
419
405
|
dd.selected = !dd.selected;
|
|
420
406
|
if (dd.selected) {
|
|
@@ -447,9 +433,9 @@ export class MenusSetting {
|
|
|
447
433
|
</div>
|
|
448
434
|
${dd.items && dd.items.length > 0
|
|
449
435
|
? !dd.toggle
|
|
450
|
-
? `<i class="fa-solid fa-angle-down color39"></i>`
|
|
451
|
-
: `<i class="fa-solid fa-angle-up color39"></i>`
|
|
452
|
-
:
|
|
436
|
+
? html `<i class="fa-solid fa-angle-down color39"></i>`
|
|
437
|
+
: html `<i class="fa-solid fa-angle-up color39"></i>`
|
|
438
|
+
: ''}
|
|
453
439
|
</div>
|
|
454
440
|
<div
|
|
455
441
|
style="justify-content: flex-start; align-items: center; gap: 8px; display: inline-flex;white-space: normal;word-break: break-all;"
|
|
@@ -469,11 +455,12 @@ export class MenusSetting {
|
|
|
469
455
|
<div class="flex-fill"></div>
|
|
470
456
|
<div
|
|
471
457
|
class="child me-2"
|
|
472
|
-
onclick="${cf.gvc.event((
|
|
458
|
+
onclick="${cf.gvc.event((_, event) => {
|
|
473
459
|
event.stopPropagation();
|
|
474
460
|
MenusSetting.editEvent({
|
|
475
461
|
link: '',
|
|
476
462
|
title: '',
|
|
463
|
+
visible_type: 'all',
|
|
477
464
|
items: [],
|
|
478
465
|
}, data => {
|
|
479
466
|
dd.items = dd.items || [];
|
|
@@ -486,7 +473,7 @@ export class MenusSetting {
|
|
|
486
473
|
</div>
|
|
487
474
|
<div
|
|
488
475
|
class="child"
|
|
489
|
-
onclick="${cf.gvc.event((
|
|
476
|
+
onclick="${cf.gvc.event((_, event) => {
|
|
490
477
|
event.stopPropagation();
|
|
491
478
|
MenusSetting.editEvent(dd, data => {
|
|
492
479
|
array[index] = data;
|
|
@@ -501,13 +488,13 @@ export class MenusSetting {
|
|
|
501
488
|
${dd.items && dd.items.length > 0
|
|
502
489
|
? html `
|
|
503
490
|
<div
|
|
504
|
-
class=" w-100 ${dd.toggle ?
|
|
491
|
+
class=" w-100 ${dd.toggle ? '' : 'd-none'}"
|
|
505
492
|
style="padding-left: 35px;"
|
|
506
493
|
>
|
|
507
494
|
${renderItems(dd.items)}
|
|
508
495
|
</div>
|
|
509
496
|
`
|
|
510
|
-
:
|
|
497
|
+
: ''}
|
|
511
498
|
`;
|
|
512
499
|
return html `<li class="w-100 ">${list}</li>`;
|
|
513
500
|
})
|
|
@@ -515,8 +502,8 @@ export class MenusSetting {
|
|
|
515
502
|
},
|
|
516
503
|
divCreate: {
|
|
517
504
|
elem: 'ul',
|
|
518
|
-
class:
|
|
519
|
-
style:
|
|
505
|
+
class: 'w-100 my-2',
|
|
506
|
+
style: 'display:flex; flex-direction: column; gap: 18px;',
|
|
520
507
|
},
|
|
521
508
|
onCreate: () => {
|
|
522
509
|
gvc.glitter.addMtScript([
|
|
@@ -528,11 +515,11 @@ export class MenusSetting {
|
|
|
528
515
|
if (window.Sortable) {
|
|
529
516
|
try {
|
|
530
517
|
gvc.addStyle(`
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
518
|
+
ul {
|
|
519
|
+
list-style: none;
|
|
520
|
+
padding: 0;
|
|
521
|
+
}
|
|
522
|
+
`);
|
|
536
523
|
function swapArr(arr, index1, index2) {
|
|
537
524
|
const data = arr[index1];
|
|
538
525
|
arr.splice(index1, 1);
|
|
@@ -566,6 +553,7 @@ export class MenusSetting {
|
|
|
566
553
|
MenusSetting.editEvent({
|
|
567
554
|
link: '',
|
|
568
555
|
title: '',
|
|
556
|
+
visible_type: 'all',
|
|
569
557
|
items: [],
|
|
570
558
|
}, data => {
|
|
571
559
|
array.push(data);
|
|
@@ -592,26 +580,28 @@ export class MenusSetting {
|
|
|
592
580
|
</div>
|
|
593
581
|
</div>`)}
|
|
594
582
|
<div class="update-bar-container">
|
|
595
|
-
${['menu-setting', 'footer-setting', 'text-manager'].includes(cf.key)
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
583
|
+
${['menu-setting', 'footer-setting', 'text-manager'].includes(cf.key)
|
|
584
|
+
? ''
|
|
585
|
+
: BgWidget.danger(gvc.event(() => __awaiter(this, void 0, void 0, function* () {
|
|
586
|
+
dialog.checkYesOrNot({
|
|
587
|
+
text: '是否確認刪除?',
|
|
588
|
+
callback: (response) => __awaiter(this, void 0, void 0, function* () {
|
|
589
|
+
if (response) {
|
|
590
|
+
dialog.dataLoading({ visible: true });
|
|
591
|
+
let menu_all = (yield ApiUser.getPublicConfig('menu-setting-list', 'manager')).response
|
|
592
|
+
.value;
|
|
593
|
+
menu_all.list = menu_all.list.filter((d1) => d1.tag != cf.key);
|
|
594
|
+
yield ApiUser.setPublicConfig({
|
|
595
|
+
key: 'menu-setting-list',
|
|
596
|
+
value: menu_all,
|
|
597
|
+
user_id: 'manager',
|
|
598
|
+
});
|
|
599
|
+
dialog.dataLoading({ visible: false });
|
|
600
|
+
cf.goBack();
|
|
601
|
+
}
|
|
602
|
+
}),
|
|
603
|
+
});
|
|
604
|
+
})))}
|
|
615
605
|
${BgWidget.cancel(gvc.event(() => {
|
|
616
606
|
cf.goBack();
|
|
617
607
|
}))}
|
|
@@ -628,7 +618,226 @@ export class MenusSetting {
|
|
|
628
618
|
}
|
|
629
619
|
static editEvent(data, save) {
|
|
630
620
|
const gvc = window.parent.glitter.pageConfig[0].gvc;
|
|
631
|
-
const
|
|
621
|
+
const glitter = gvc.glitter;
|
|
622
|
+
const rightMenu = glitter.share.NormalPageEditor;
|
|
623
|
+
const vm = {
|
|
624
|
+
search: '',
|
|
625
|
+
levelList: undefined,
|
|
626
|
+
userList: undefined,
|
|
627
|
+
visibleDataList: undefined,
|
|
628
|
+
cloneData: structuredClone(data),
|
|
629
|
+
show: false,
|
|
630
|
+
dataLoading: true,
|
|
631
|
+
};
|
|
632
|
+
const ids = {
|
|
633
|
+
main: glitter.getUUID(),
|
|
634
|
+
visibleSelect: glitter.getUUID(),
|
|
635
|
+
dataArray: glitter.getUUID(),
|
|
636
|
+
};
|
|
637
|
+
const setVisibleSelect = () => {
|
|
638
|
+
return gvc.bindView({
|
|
639
|
+
bind: ids.visibleSelect,
|
|
640
|
+
view: () => {
|
|
641
|
+
var _a;
|
|
642
|
+
return html `
|
|
643
|
+
<div class="tx_normal fw-normal">選單可見對象</div>
|
|
644
|
+
<div class="d-flex align-items-center" style="margin-top: 8px; gap: 10px;">
|
|
645
|
+
${[
|
|
646
|
+
BgWidget.select({
|
|
647
|
+
gvc,
|
|
648
|
+
callback: value => {
|
|
649
|
+
data.visible_type = value;
|
|
650
|
+
data.visible_data_array = [];
|
|
651
|
+
vm.visibleDataList = [];
|
|
652
|
+
vm.show = false;
|
|
653
|
+
vm.dataLoading = true;
|
|
654
|
+
gvc.notifyDataChange([ids.visibleSelect, ids.dataArray]);
|
|
655
|
+
},
|
|
656
|
+
default: (_a = data.visible_type) !== null && _a !== void 0 ? _a : 'all',
|
|
657
|
+
options: [
|
|
658
|
+
{ key: 'all', value: '所有顧客' },
|
|
659
|
+
{ key: 'loggedIn', value: '已登入顧客' },
|
|
660
|
+
{ key: 'user', value: '特定顧客' },
|
|
661
|
+
{ key: 'level', value: '特定會員等級' },
|
|
662
|
+
],
|
|
663
|
+
}),
|
|
664
|
+
['user', 'level'].includes(data.visible_type)
|
|
665
|
+
? BgWidget.grayButton('選擇', gvc.event(() => {
|
|
666
|
+
if (!vm.show) {
|
|
667
|
+
vm.show = true;
|
|
668
|
+
gvc.notifyDataChange(ids.dataArray);
|
|
669
|
+
}
|
|
670
|
+
}))
|
|
671
|
+
: '',
|
|
672
|
+
].join('')}
|
|
673
|
+
</div>
|
|
674
|
+
`;
|
|
675
|
+
},
|
|
676
|
+
divCreate: {
|
|
677
|
+
style: 'margin-top: 8px;',
|
|
678
|
+
},
|
|
679
|
+
});
|
|
680
|
+
};
|
|
681
|
+
const optionView = () => {
|
|
682
|
+
const id = glitter.getUUID();
|
|
683
|
+
return gvc.bindView({
|
|
684
|
+
bind: id,
|
|
685
|
+
view: () => {
|
|
686
|
+
var _a;
|
|
687
|
+
function includesItem(item) {
|
|
688
|
+
var _a, _b;
|
|
689
|
+
const text = vm.search.toLowerCase();
|
|
690
|
+
return ((_a = item.name) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(text)) || ((_b = item.note) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(text));
|
|
691
|
+
}
|
|
692
|
+
const targetList = data.visible_type === 'user' ? vm.userList : vm.levelList;
|
|
693
|
+
if (!targetList) {
|
|
694
|
+
return BgWidget.spinner({ container: { class: 'w-100' } });
|
|
695
|
+
}
|
|
696
|
+
const filterList = targetList.filter((item) => includesItem(item));
|
|
697
|
+
const filterListIdArray = new Set(filterList.map((item) => item.key));
|
|
698
|
+
return BgWidget.multiCheckboxContainer(gvc, filterList, (_a = data.visible_data_array) !== null && _a !== void 0 ? _a : [], items => {
|
|
699
|
+
var _a;
|
|
700
|
+
data.visible_data_array = [
|
|
701
|
+
...new Set(((_a = data.visible_data_array) !== null && _a !== void 0 ? _a : [])
|
|
702
|
+
.filter(item => {
|
|
703
|
+
return !filterListIdArray.has(item);
|
|
704
|
+
})
|
|
705
|
+
.concat(items)),
|
|
706
|
+
];
|
|
707
|
+
});
|
|
708
|
+
},
|
|
709
|
+
divCreate: {
|
|
710
|
+
style: 'max-height: 300px; overflow-y: auto; width: 100%;',
|
|
711
|
+
},
|
|
712
|
+
onCreate: () => {
|
|
713
|
+
if (vm.userList === undefined) {
|
|
714
|
+
this.getUserOption().then(data => {
|
|
715
|
+
vm.userList = data;
|
|
716
|
+
gvc.notifyDataChange(id);
|
|
717
|
+
});
|
|
718
|
+
}
|
|
719
|
+
if (vm.levelList === undefined) {
|
|
720
|
+
this.getLevelOption().then(data => {
|
|
721
|
+
vm.levelList = data;
|
|
722
|
+
gvc.notifyDataChange(id);
|
|
723
|
+
});
|
|
724
|
+
}
|
|
725
|
+
},
|
|
726
|
+
});
|
|
727
|
+
};
|
|
728
|
+
const setVisibleDataArray = () => {
|
|
729
|
+
return gvc.bindView({
|
|
730
|
+
bind: ids.dataArray,
|
|
731
|
+
view: () => {
|
|
732
|
+
if (data.visible_type === 'user' || data.visible_type === 'level') {
|
|
733
|
+
if (!vm.show) {
|
|
734
|
+
if (vm.dataLoading) {
|
|
735
|
+
return BgWidget.spinner({ container: { class: 'w-100' } });
|
|
736
|
+
}
|
|
737
|
+
return html `
|
|
738
|
+
<div class="mt-2">${data.visible_type === 'user' ? '顧客名稱' : '會員等級'}</div>
|
|
739
|
+
${BgWidget.horizontalLine()}
|
|
740
|
+
<div class="d-flex flex-column gap-1">
|
|
741
|
+
${Array.isArray(vm.visibleDataList)
|
|
742
|
+
? data.visible_type === 'user'
|
|
743
|
+
? vm.visibleDataList
|
|
744
|
+
.map(item => {
|
|
745
|
+
return html `<div class="d-flex gap-1">
|
|
746
|
+
<div>${item.userData.name}</div>
|
|
747
|
+
${BgWidget.grayNote(item.account)}
|
|
748
|
+
</div>`;
|
|
749
|
+
})
|
|
750
|
+
.join('')
|
|
751
|
+
: vm.visibleDataList
|
|
752
|
+
.map(item => {
|
|
753
|
+
return html `<div class="d-flex gap-1">
|
|
754
|
+
<div>${item.title.replace('會員等級 - ', '')}</div>
|
|
755
|
+
</div>`;
|
|
756
|
+
})
|
|
757
|
+
.join('')
|
|
758
|
+
: ''}
|
|
759
|
+
</div>
|
|
760
|
+
`;
|
|
761
|
+
}
|
|
762
|
+
return BgWidget.mainCard([
|
|
763
|
+
html `<div
|
|
764
|
+
class="d-flex align-items-center cursor_pointer"
|
|
765
|
+
onclick="${gvc.event(() => {
|
|
766
|
+
vm.show = false;
|
|
767
|
+
vm.dataLoading = true;
|
|
768
|
+
gvc.notifyDataChange(ids.dataArray);
|
|
769
|
+
})}"
|
|
770
|
+
>
|
|
771
|
+
${BgWidget.goBack('')}
|
|
772
|
+
<span>返回</span>
|
|
773
|
+
</div>`,
|
|
774
|
+
BgWidget.searchPlace(gvc.event(e => {
|
|
775
|
+
vm.search = e.value;
|
|
776
|
+
gvc.notifyDataChange(ids.dataArray);
|
|
777
|
+
}), vm.search || '', '搜尋', undefined, '0', 'width: 100%;'),
|
|
778
|
+
optionView(),
|
|
779
|
+
].join(''), 'd-flex flex-column align-items-start');
|
|
780
|
+
}
|
|
781
|
+
return '';
|
|
782
|
+
},
|
|
783
|
+
divCreate: {
|
|
784
|
+
class: 'mt-1 p-1',
|
|
785
|
+
},
|
|
786
|
+
onCreate: () => {
|
|
787
|
+
if (vm.dataLoading && (data.visible_type === 'user' || data.visible_type === 'level')) {
|
|
788
|
+
Promise.all([
|
|
789
|
+
Array.isArray(data.visible_data_array) && data.visible_data_array.length > 0
|
|
790
|
+
? data.visible_type === 'user'
|
|
791
|
+
? this.getUserList(data.visible_data_array)
|
|
792
|
+
: this.getLevelList(data.visible_data_array)
|
|
793
|
+
: [],
|
|
794
|
+
]).then(([visibleDataList]) => {
|
|
795
|
+
vm.visibleDataList = visibleDataList;
|
|
796
|
+
vm.dataLoading = false;
|
|
797
|
+
gvc.notifyDataChange(ids.dataArray);
|
|
798
|
+
});
|
|
799
|
+
}
|
|
800
|
+
},
|
|
801
|
+
});
|
|
802
|
+
};
|
|
803
|
+
const backToDefault = () => {
|
|
804
|
+
return html `<div
|
|
805
|
+
class="position-absolute bottom-0 left-0 w-100 d-flex align-items-center justify-content-end p-3 border-top pe-4"
|
|
806
|
+
style="gap: 10px; background-color: #fff"
|
|
807
|
+
>
|
|
808
|
+
${BgWidget.cancel(gvc.event(() => {
|
|
809
|
+
data = vm.cloneData;
|
|
810
|
+
vm.show = false;
|
|
811
|
+
vm.dataLoading = true;
|
|
812
|
+
gvc.notifyDataChange(ids.main);
|
|
813
|
+
}), '回到預設值')}
|
|
814
|
+
</div>`;
|
|
815
|
+
};
|
|
816
|
+
const view = [
|
|
817
|
+
BgWidget.editeInput({
|
|
818
|
+
gvc: gvc,
|
|
819
|
+
title: '選單名稱',
|
|
820
|
+
default: data.title || '',
|
|
821
|
+
placeHolder: '請輸入選單名稱',
|
|
822
|
+
callback: text => {
|
|
823
|
+
data.title = text;
|
|
824
|
+
},
|
|
825
|
+
}),
|
|
826
|
+
BgWidget.linkList({
|
|
827
|
+
gvc: gvc,
|
|
828
|
+
title: '連結位置',
|
|
829
|
+
default: data.link || '',
|
|
830
|
+
placeHolder: '選擇或貼上外部連結',
|
|
831
|
+
callback: text => {
|
|
832
|
+
data.link = text;
|
|
833
|
+
},
|
|
834
|
+
}),
|
|
835
|
+
setVisibleSelect(),
|
|
836
|
+
setVisibleDataArray(),
|
|
837
|
+
backToDefault(),
|
|
838
|
+
]
|
|
839
|
+
.map(h => html `<div class="w-100">${h}</div>`)
|
|
840
|
+
.join('');
|
|
632
841
|
rightMenu.closeEvent = () => {
|
|
633
842
|
if (data.title.length > 0 || data.link.length > 0) {
|
|
634
843
|
save(data);
|
|
@@ -637,39 +846,10 @@ export class MenusSetting {
|
|
|
637
846
|
rightMenu.toggle({
|
|
638
847
|
visible: true,
|
|
639
848
|
title: '新增選單',
|
|
640
|
-
view:
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
bind: id,
|
|
645
|
-
view: () => {
|
|
646
|
-
return [
|
|
647
|
-
EditorElem.editeInput({
|
|
648
|
-
gvc: gvc,
|
|
649
|
-
title: '選單名稱',
|
|
650
|
-
default: data.title || '',
|
|
651
|
-
placeHolder: '請輸入選單名稱',
|
|
652
|
-
callback: text => {
|
|
653
|
-
data.title = text;
|
|
654
|
-
},
|
|
655
|
-
}),
|
|
656
|
-
BgWidget.linkList({
|
|
657
|
-
gvc: gvc,
|
|
658
|
-
title: '',
|
|
659
|
-
default: data.link || '',
|
|
660
|
-
placeHolder: '選擇或貼上外部連結',
|
|
661
|
-
callback: text => {
|
|
662
|
-
data.link = text;
|
|
663
|
-
},
|
|
664
|
-
}),
|
|
665
|
-
].join('');
|
|
666
|
-
},
|
|
667
|
-
divCreate: {
|
|
668
|
-
style: `padding:20px;`,
|
|
669
|
-
},
|
|
670
|
-
};
|
|
671
|
-
}),
|
|
672
|
-
].join(''),
|
|
849
|
+
view: gvc.bindView({
|
|
850
|
+
bind: ids.main,
|
|
851
|
+
view: () => html `<div class="d-flex flex-column p-3">${view}</div>`,
|
|
852
|
+
}),
|
|
673
853
|
right: true,
|
|
674
854
|
});
|
|
675
855
|
}
|
|
@@ -712,7 +892,7 @@ export class MenusSetting {
|
|
|
712
892
|
].join('');
|
|
713
893
|
},
|
|
714
894
|
divCreate: {
|
|
715
|
-
style:
|
|
895
|
+
style: 'padding: 20px;',
|
|
716
896
|
},
|
|
717
897
|
};
|
|
718
898
|
}),
|
|
@@ -720,5 +900,73 @@ export class MenusSetting {
|
|
|
720
900
|
right: true,
|
|
721
901
|
});
|
|
722
902
|
}
|
|
903
|
+
static getUserList(visible_data_array) {
|
|
904
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
905
|
+
return yield ApiUser.getUserList({
|
|
906
|
+
page: 0,
|
|
907
|
+
limit: 15,
|
|
908
|
+
only_id: true,
|
|
909
|
+
id: visible_data_array.join(','),
|
|
910
|
+
}).then(dd => {
|
|
911
|
+
try {
|
|
912
|
+
return dd.response.data;
|
|
913
|
+
}
|
|
914
|
+
catch (error) {
|
|
915
|
+
return [];
|
|
916
|
+
}
|
|
917
|
+
});
|
|
918
|
+
});
|
|
919
|
+
}
|
|
920
|
+
static getUserOption() {
|
|
921
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
922
|
+
return yield ApiUser.getUserList({
|
|
923
|
+
page: 0,
|
|
924
|
+
limit: 15,
|
|
925
|
+
only_id: true,
|
|
926
|
+
}).then(dd => {
|
|
927
|
+
var _a;
|
|
928
|
+
try {
|
|
929
|
+
return ((_a = dd.response.data.map((item) => {
|
|
930
|
+
var _a;
|
|
931
|
+
return {
|
|
932
|
+
key: item.userID,
|
|
933
|
+
name: (_a = item.userData.name) !== null && _a !== void 0 ? _a : '(尚無姓名)',
|
|
934
|
+
note: item.userData.email,
|
|
935
|
+
};
|
|
936
|
+
})) !== null && _a !== void 0 ? _a : []);
|
|
937
|
+
}
|
|
938
|
+
catch (error) {
|
|
939
|
+
return [];
|
|
940
|
+
}
|
|
941
|
+
});
|
|
942
|
+
});
|
|
943
|
+
}
|
|
944
|
+
static getLevelList(visible_data_array) {
|
|
945
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
946
|
+
return yield ApiUser.getUserGroupList('level').then(r => {
|
|
947
|
+
var _a;
|
|
948
|
+
if (r.result && Array.isArray((_a = r.response) === null || _a === void 0 ? void 0 : _a.data)) {
|
|
949
|
+
return r.response.data.filter((d) => {
|
|
950
|
+
return visible_data_array === null || visible_data_array === void 0 ? void 0 : visible_data_array.includes(d.tag === '' ? 'default' : d.tag);
|
|
951
|
+
});
|
|
952
|
+
}
|
|
953
|
+
return [];
|
|
954
|
+
});
|
|
955
|
+
});
|
|
956
|
+
}
|
|
957
|
+
static getLevelOption() {
|
|
958
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
959
|
+
return yield ApiUser.getUserGroupList('level').then(r => {
|
|
960
|
+
var _a;
|
|
961
|
+
if (r.result && Array.isArray((_a = r.response) === null || _a === void 0 ? void 0 : _a.data)) {
|
|
962
|
+
return r.response.data.map((d) => ({
|
|
963
|
+
key: d.tag || 'default',
|
|
964
|
+
name: d.title.replace('會員等級 - ', ''),
|
|
965
|
+
}));
|
|
966
|
+
}
|
|
967
|
+
return [];
|
|
968
|
+
});
|
|
969
|
+
});
|
|
970
|
+
}
|
|
723
971
|
}
|
|
724
972
|
window.glitter.setModule(import.meta.url, MenusSetting);
|