ts-glitter 13.3.5 → 13.3.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.
Files changed (99) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/backend-manager/bg-blog.js +2 -7
  4. package/lowcode/backend-manager/bg-blog.ts +8 -13
  5. package/lowcode/backend-manager/bg-graph-api.js +6 -11
  6. package/lowcode/backend-manager/bg-graph-api.ts +14 -20
  7. package/lowcode/backend-manager/bg-line.js +526 -1002
  8. package/lowcode/backend-manager/bg-line.ts +1815 -2354
  9. package/lowcode/backend-manager/bg-notify.js +392 -746
  10. package/lowcode/backend-manager/bg-notify.ts +436 -835
  11. package/lowcode/backend-manager/bg-project.js +176 -293
  12. package/lowcode/backend-manager/bg-project.ts +214 -344
  13. package/lowcode/backend-manager/bg-recommend.js +39 -148
  14. package/lowcode/backend-manager/bg-recommend.ts +43 -162
  15. package/lowcode/backend-manager/bg-sns.js +489 -814
  16. package/lowcode/backend-manager/bg-sns.ts +1876 -2238
  17. package/lowcode/backend-manager/bg-widget.js +301 -171
  18. package/lowcode/backend-manager/bg-widget.ts +324 -193
  19. package/lowcode/cms-plugin/ai-points.js +84 -67
  20. package/lowcode/cms-plugin/ai-points.ts +280 -247
  21. package/lowcode/cms-plugin/auto-reply.js +6 -7
  22. package/lowcode/cms-plugin/auto-reply.ts +6 -7
  23. package/lowcode/cms-plugin/data-analyze.js +5 -6
  24. package/lowcode/cms-plugin/data-analyze.ts +5 -6
  25. package/lowcode/cms-plugin/form-setting.js +122 -220
  26. package/lowcode/cms-plugin/form-setting.ts +124 -240
  27. package/lowcode/cms-plugin/line-auto-reply.js +17 -18
  28. package/lowcode/cms-plugin/line-auto-reply.ts +29 -36
  29. package/lowcode/cms-plugin/member-group-list.js +5 -2
  30. package/lowcode/cms-plugin/member-group-list.ts +5 -2
  31. package/lowcode/cms-plugin/member-type-list.js +36 -84
  32. package/lowcode/cms-plugin/member-type-list.ts +39 -92
  33. package/lowcode/cms-plugin/menus-setting.js +8 -73
  34. package/lowcode/cms-plugin/menus-setting.ts +8 -78
  35. package/lowcode/cms-plugin/permission-setting.js +73 -106
  36. package/lowcode/cms-plugin/permission-setting.ts +236 -278
  37. package/lowcode/cms-plugin/shopping-collections.js +95 -137
  38. package/lowcode/cms-plugin/shopping-collections.ts +103 -147
  39. package/lowcode/cms-plugin/shopping-discount-setting.js +310 -416
  40. package/lowcode/cms-plugin/shopping-discount-setting.ts +1269 -1386
  41. package/lowcode/cms-plugin/shopping-finance-setting.js +1 -0
  42. package/lowcode/cms-plugin/shopping-finance-setting.ts +1 -0
  43. package/lowcode/cms-plugin/shopping-order-manager.js +742 -973
  44. package/lowcode/cms-plugin/shopping-order-manager.ts +1928 -2164
  45. package/lowcode/cms-plugin/shopping-order-return.js +147 -267
  46. package/lowcode/cms-plugin/shopping-order-return.ts +154 -292
  47. package/lowcode/cms-plugin/shopping-product-setting.js +6 -2
  48. package/lowcode/cms-plugin/shopping-product-setting.ts +8 -4
  49. package/lowcode/cms-plugin/shopping-product-stock.js +12 -92
  50. package/lowcode/cms-plugin/shopping-product-stock.ts +14 -94
  51. package/lowcode/cms-plugin/shopping-product-text.js +0 -3
  52. package/lowcode/cms-plugin/shopping-product-text.ts +0 -3
  53. package/lowcode/cms-plugin/shopping-rebate.js +95 -151
  54. package/lowcode/cms-plugin/shopping-rebate.ts +101 -159
  55. package/lowcode/cms-plugin/sms-points.js +83 -67
  56. package/lowcode/cms-plugin/sms-points.ts +281 -241
  57. package/lowcode/cms-plugin/sns-auto-reply.js +18 -18
  58. package/lowcode/cms-plugin/sns-auto-reply.ts +34 -40
  59. package/lowcode/cms-plugin/user-list.js +71 -90
  60. package/lowcode/cms-plugin/user-list.ts +76 -95
  61. package/lowcode/cms-plugin/web-config-setting.js +61 -111
  62. package/lowcode/cms-plugin/web-config-setting.ts +65 -124
  63. package/lowcode/css/editor.css +5 -2
  64. package/lowcode/glitter-base/route/shopping.js +1 -1
  65. package/lowcode/glitter-base/route/shopping.ts +19 -19
  66. package/lowcode/jspage/editor.js +1 -1
  67. package/lowcode/jspage/editor.ts +1 -1
  68. package/lowcode/jspage/main.js +4 -0
  69. package/lowcode/jspage/main.ts +4 -0
  70. package/package.json +1 -2
  71. package/src/api-public/controllers/ai-chat.js.map +5 -1
  72. package/src/api-public/controllers/article.js.map +1 -1
  73. package/src/api-public/controllers/chat.js.map +1 -1
  74. package/src/api-public/controllers/fb-message.js.map +1 -1
  75. package/src/api-public/controllers/index.js.map +1 -1
  76. package/src/api-public/controllers/line-message.js.map +1 -1
  77. package/src/api-public/controllers/rebate.js.map +1 -1
  78. package/src/api-public/controllers/shop.js.map +1 -1
  79. package/src/api-public/controllers/user.js.map +1 -1
  80. package/src/api-public/services/auto-send-email.js.map +1 -1
  81. package/src/api-public/services/chat.js +3 -3
  82. package/src/api-public/services/chat.js.map +1 -1
  83. package/src/api-public/services/chat.ts +2 -3
  84. package/src/api-public/services/fb-message.js.map +5 -1
  85. package/src/api-public/services/filter-protect-data.js.map +1 -1
  86. package/src/api-public/services/line-message.js.map +1 -1
  87. package/src/api-public/services/monitor.js.map +1 -1
  88. package/src/api-public/services/notify.js.map +1 -1
  89. package/src/api-public/services/rebate.js.map +1 -1
  90. package/src/api-public/services/schedule.js.map +1 -1
  91. package/src/api-public/services/share-permission.js.map +1 -1
  92. package/src/api-public/services/shopping.js.map +1 -1
  93. package/src/api-public/services/user.js +67 -66
  94. package/src/api-public/services/user.js.map +1 -1
  95. package/src/api-public/services/user.ts +212 -182
  96. package/src/helper/glitter-util.js.map +1 -1
  97. package/src/modules/firebase.d.ts +1 -0
  98. package/src/modules/firebase.js +1 -1
  99. package/src/modules/firebase.js.map +1 -1
@@ -19,13 +19,11 @@ import { FilterOptions } from '../cms-plugin/filter-options.js';
19
19
  import { ShoppingDiscountSetting } from '../cms-plugin/shopping-discount-setting.js';
20
20
  import { BgListComponent } from './bg-list-component.js';
21
21
  import { Tool } from '../modules/tool.js';
22
- import { ApiWallet } from "../glitter-base/route/wallet.js";
23
- import { ApiLineMessage } from "../glitter-base/route/line.js";
22
+ import { ApiLineMessage } from '../glitter-base/route/line.js';
24
23
  const html = String.raw;
25
- const inputStyle = 'font-size: 16px; height:40px; width:300px;';
24
+ const inputStyle = 'font-size: 16px; height: 40px; width: 300px;';
26
25
  export class BgLine {
27
- static email(gvc, type = 'list', callback = () => {
28
- }) {
26
+ static email(gvc, type = 'list', callback = () => { }) {
29
27
  const vm = {
30
28
  type: 'list',
31
29
  data: {
@@ -50,58 +48,8 @@ export class BgLine {
50
48
  view: () => {
51
49
  let vmi = undefined;
52
50
  function getDatalist() {
53
- let interval = 0;
54
51
  return vm.dataList.map((dd) => {
55
52
  return [
56
- {
57
- key: (() => {
58
- clearInterval(interval);
59
- if (!vm.dataList.find((dd) => {
60
- return !dd.checked;
61
- })) {
62
- interval = setTimeout(() => {
63
- ApiUser.getSubScribe({
64
- page: vmi.page - 1,
65
- limit: 100000,
66
- search: vm.query || undefined,
67
- }).then((data) => {
68
- callback(data.response.data);
69
- });
70
- }, 10);
71
- }
72
- return EditorElem.checkBoxOnly({
73
- gvc: gvc,
74
- def: !vm.dataList.find((dd) => {
75
- return !dd.checked;
76
- }),
77
- callback: (result) => {
78
- vm.dataList.map((dd) => {
79
- dd.checked = result;
80
- });
81
- vmi.data = getDatalist();
82
- vmi.callback();
83
- gvc.notifyDataChange(filterID);
84
- callback(vm.dataList.filter((dd) => {
85
- return dd.checked;
86
- }));
87
- },
88
- });
89
- })(),
90
- value: EditorElem.checkBoxOnly({
91
- gvc: gvc,
92
- def: dd.checked,
93
- callback: (result) => {
94
- dd.checked = result;
95
- vmi.data = getDatalist();
96
- vmi.callback();
97
- gvc.notifyDataChange(filterID);
98
- callback(vm.dataList.filter((dd) => {
99
- return dd.checked;
100
- }));
101
- },
102
- style: 'height:25px;',
103
- }),
104
- },
105
53
  {
106
54
  key: '註冊信箱',
107
55
  value: `<span class="fs-7">${dd.email}</span>`,
@@ -113,107 +61,74 @@ export class BgLine {
113
61
  ];
114
62
  });
115
63
  }
116
- return BgWidget.container(BgWidget.mainCard(BgWidget.tableV2({
117
- gvc: gvc,
118
- getData: (vmk) => {
119
- vmi = vmk;
120
- ApiUser.getSubScribe({
121
- page: vmi.page - 1,
122
- limit: 20,
123
- search: vm.query || undefined,
124
- filter: { account: 'no' },
125
- }).then((data) => {
126
- vmi.pageSize = Math.ceil(data.response.total / 20);
127
- vm.dataList = data.response.data;
128
- vmi.data = getDatalist();
129
- vmi.loading = false;
130
- vmi.callback();
131
- if (type === 'select') {
132
- callback(vm.dataList.filter((dd) => {
133
- return dd.checked;
134
- }));
135
- }
136
- });
137
- },
138
- rowClick: (data, index) => {
139
- vm.dataList[index].checked = !vm.dataList[index].checked;
140
- vmi.data = getDatalist();
141
- vmi.callback();
142
- gvc.notifyDataChange(filterID);
143
- callback(vm.dataList.filter((dd) => {
144
- return dd.checked;
145
- }));
146
- },
147
- filter: html `
148
- ${BgWidget.searchPlace(gvc.event((e, event) => {
64
+ return BgWidget.container(BgWidget.mainCard([
65
+ BgWidget.searchPlace(gvc.event((e, event) => {
149
66
  vm.query = e.value;
150
67
  gvc.notifyDataChange(id);
151
- }), vm.query || '', '搜尋信箱或標籤')}
152
- ${gvc.bindView(() => {
153
- return {
154
- bind: filterID,
155
- view: () => {
156
- if (!vm.dataList ||
157
- !vm.dataList.find((dd) => {
68
+ }), vm.query || '', '搜尋信箱或標籤'),
69
+ BgWidget.tableV3({
70
+ gvc: gvc,
71
+ getData: (vmk) => {
72
+ vmi = vmk;
73
+ const limit = 20;
74
+ ApiUser.getSubScribe({
75
+ page: vmi.page - 1,
76
+ limit: limit,
77
+ search: vm.query || undefined,
78
+ filter: { account: 'no' },
79
+ }).then((data) => {
80
+ vm.dataList = data.response.data;
81
+ vmi.pageSize = Math.ceil(data.response.total / limit);
82
+ vmi.originalData = vm.dataList;
83
+ vmi.tableData = getDatalist();
84
+ vmi.loading = false;
85
+ vmi.callback();
86
+ if (type === 'select') {
87
+ callback(vm.dataList.filter((dd) => {
158
88
  return dd.checked;
159
- })) {
160
- return ``;
89
+ }));
161
90
  }
162
- else {
91
+ });
92
+ },
93
+ rowClick: (data, index) => {
94
+ vm.dataList[index].checked = !vm.dataList[index].checked;
95
+ vmi.data = getDatalist();
96
+ vmi.callback();
97
+ gvc.notifyDataChange(filterID);
98
+ callback(vm.dataList.filter((dd) => {
99
+ return dd.checked;
100
+ }));
101
+ },
102
+ filter: [
103
+ {
104
+ name: '批量移除',
105
+ event: (checkedData) => {
163
106
  const dialog = new ShareDialog(gvc.glitter);
164
- const selCount = vm.dataList.filter((dd) => dd.checked).length;
165
- return BgWidget.selNavbar({
166
- count: selCount,
167
- buttonList: [
168
- BgWidget.selEventButton('批量移除', gvc.event(() => {
169
- dialog.checkYesOrNot({
170
- text: '是否確認刪除所選項目?',
171
- callback: (response) => {
172
- if (response) {
173
- dialog.dataLoading({ visible: true });
174
- ApiUser.deleteSubscribe({
175
- email: vm.dataList
176
- .filter((dd) => {
177
- return dd.checked;
178
- })
179
- .map((dd) => {
180
- return dd.email;
181
- })
182
- .join(`,`),
183
- }).then((res) => {
184
- dialog.dataLoading({ visible: false });
185
- if (res.result) {
186
- vm.dataList = undefined;
187
- gvc.notifyDataChange(id);
188
- }
189
- else {
190
- dialog.errorMessage({ text: '刪除失敗' });
191
- }
192
- });
193
- }
194
- },
107
+ dialog.checkYesOrNot({
108
+ text: '是否確認刪除所選項目?',
109
+ callback: (response) => {
110
+ if (response) {
111
+ dialog.dataLoading({ visible: true });
112
+ ApiUser.deleteSubscribe({
113
+ email: checkedData.map((dd) => dd.email).join(`,`),
114
+ }).then((res) => {
115
+ dialog.dataLoading({ visible: false });
116
+ if (res.result) {
117
+ vm.dataList = undefined;
118
+ gvc.notifyDataChange(id);
119
+ }
120
+ else {
121
+ dialog.errorMessage({ text: '刪除失敗' });
122
+ }
195
123
  });
196
- })),
197
- ],
124
+ }
125
+ },
198
126
  });
199
- }
200
- },
201
- divCreate: () => {
202
- return {
203
- class: `d-flex align-items-center p-2 py-3 ${!vm.dataList ||
204
- !vm.dataList.find((dd) => {
205
- return dd.checked;
206
- }) ||
207
- type === 'select'
208
- ? `d-none`
209
- : ``}`,
210
- style: ``,
211
- };
127
+ },
212
128
  },
213
- };
214
- })}
215
- `,
216
- })), type === 'select' ? 850 : BgWidget.getContainerWidth(), 'padding: 0;');
129
+ ],
130
+ }),
131
+ ].join('')), type === 'select' ? 850 : BgWidget.getContainerWidth(), 'padding: 0;');
217
132
  },
218
133
  };
219
134
  });
@@ -243,136 +158,77 @@ export class BgLine {
243
158
  vm.type = 'add';
244
159
  }))}
245
160
  </div>
246
- ${BgWidget.container(BgWidget.mainCard(BgWidget.tableV2({
247
- gvc: gvc,
248
- getData: (vmi) => {
249
- ApiPost.getManagerPost({
250
- page: vmi.page - 1,
251
- limit: 20,
252
- search: vm.query ? [`title->${vm.query}`] : undefined,
253
- type: 'notify-line-config',
254
- }).then((data) => {
255
- vmi.pageSize = Math.ceil(data.response.total / 20);
256
- vm.dataList = data.response.data;
257
- function getDatalist() {
258
- return data.response.data.map((dd) => {
259
- return [
260
- {
261
- key: EditorElem.checkBoxOnly({
262
- gvc: gvc,
263
- def: !data.response.data.find((dd) => {
264
- return !dd.checked;
265
- }),
266
- callback: (result) => {
267
- data.response.data.map((dd) => {
268
- dd.checked = result;
269
- });
270
- vmi.data = getDatalist();
271
- vmi.callback();
272
- gvc.notifyDataChange(filterID);
273
- },
274
- }),
275
- value: EditorElem.checkBoxOnly({
276
- gvc: gvc,
277
- def: dd.checked,
278
- callback: (result) => {
279
- dd.checked = result;
280
- vmi.data = getDatalist();
281
- vmi.callback();
282
- gvc.notifyDataChange(filterID);
283
- },
284
- style: 'height:25px;',
285
- }),
286
- },
287
- {
288
- key: '標題',
289
- value: html `<span
290
- class="fs-7">${dd.content.title}</span>`,
291
- },
292
- {
293
- key: '最後更新時間',
294
- value: dd.updated_time ? gvc.glitter.ut.dateFormat(new Date(dd.updated_time), 'yyyy-MM-dd') : '無',
295
- },
296
- ];
297
- });
298
- }
299
- vmi.data = getDatalist();
300
- vmi.loading = false;
301
- vmi.callback();
302
- });
303
- },
304
- style: ['', `min-width: ${BgWidget.getContainerWidth() / 2 - 30}px`, ''],
305
- rowClick: (data, index) => {
306
- vm.data = vm.dataList[index].content;
307
- vm.type = 'replace';
308
- },
309
- filter: html ` ${BgWidget.searchPlace(gvc.event((e) => {
161
+ ${BgWidget.container(BgWidget.mainCard([
162
+ BgWidget.searchPlace(gvc.event((e) => {
310
163
  vm.query = e.value;
311
164
  gvc.notifyDataChange(id);
312
- }), vm.query || '', '搜尋所有信件內容')}
313
- ${gvc.bindView(() => {
314
- return {
315
- bind: filterID,
316
- view: () => {
317
- if (!vm.dataList ||
318
- !vm.dataList.find((dd) => {
319
- return dd.checked;
320
- })) {
321
- return ``;
165
+ }), vm.query || '', '搜尋所有信件內容'),
166
+ BgWidget.tableV3({
167
+ gvc: gvc,
168
+ getData: (vmi) => {
169
+ const limit = 20;
170
+ ApiPost.getManagerPost({
171
+ page: vmi.page - 1,
172
+ limit: limit,
173
+ search: vm.query ? [`title->${vm.query}`] : undefined,
174
+ type: 'notify-line-config',
175
+ }).then((data) => {
176
+ function getDatalist() {
177
+ return data.response.data.map((dd) => {
178
+ return [
179
+ {
180
+ key: '標題',
181
+ value: html `<span class="fs-7">${dd.content.title}</span>`,
182
+ },
183
+ {
184
+ key: '最後更新時間',
185
+ value: dd.updated_time ? gvc.glitter.ut.dateFormat(new Date(dd.updated_time), 'yyyy-MM-dd') : '無',
186
+ },
187
+ ];
188
+ });
322
189
  }
323
- else {
324
- const dialog = new ShareDialog(gvc.glitter);
325
- const selCount = vm.dataList.filter((dd) => dd.checked).length;
326
- return BgWidget.selNavbar({
327
- count: selCount,
328
- buttonList: [
329
- BgWidget.selEventButton('批量移除', gvc.event(() => {
330
- dialog.checkYesOrNot({
331
- text: '是否確認刪除所選項目?',
332
- callback: (response) => {
333
- if (response) {
334
- dialog.dataLoading({ visible: true });
335
- ApiPost.delete({
336
- id: vm.dataList
337
- .filter((dd) => {
338
- return dd.checked;
339
- })
340
- .map((dd) => {
341
- return dd.id;
342
- })
343
- .join(`,`),
344
- }).then((res) => {
345
- dialog.dataLoading({ visible: false });
346
- if (res.result) {
347
- vm.dataList = undefined;
348
- gvc.notifyDataChange(id);
349
- }
350
- else {
351
- dialog.errorMessage({ text: '刪除失敗' });
352
- }
353
- });
354
- }
355
- },
190
+ vm.dataList = data.response.data;
191
+ vmi.pageSize = Math.ceil(data.response.total / limit);
192
+ vmi.originalData = vm.dataList;
193
+ vmi.tableData = getDatalist();
194
+ vmi.loading = false;
195
+ vmi.callback();
196
+ });
197
+ },
198
+ rowClick: (data, index) => {
199
+ vm.data = vm.dataList[index].content;
200
+ vm.type = 'replace';
201
+ },
202
+ filter: [
203
+ {
204
+ name: '批量移除',
205
+ event: (checkedData) => {
206
+ const dialog = new ShareDialog(glitter);
207
+ dialog.checkYesOrNot({
208
+ text: '是否確認刪除所選項目?',
209
+ callback: (response) => {
210
+ if (response) {
211
+ dialog.dataLoading({ visible: true });
212
+ ApiPost.delete({
213
+ id: checkedData.map((dd) => dd.id).join(`,`),
214
+ }).then((res) => {
215
+ dialog.dataLoading({ visible: false });
216
+ if (res.result) {
217
+ vm.dataList = undefined;
218
+ gvc.notifyDataChange(id);
219
+ }
220
+ else {
221
+ dialog.errorMessage({ text: '刪除失敗' });
222
+ }
356
223
  });
357
- })),
358
- ],
224
+ }
225
+ },
359
226
  });
360
- }
361
- },
362
- divCreate: () => {
363
- return {
364
- class: `d-flex align-items-center p-2 py-3 ${!vm.dataList ||
365
- !vm.dataList.find((dd) => {
366
- return dd.checked;
367
- })
368
- ? `d-none`
369
- : ``}`,
370
- style: ``,
371
- };
227
+ },
372
228
  },
373
- };
374
- })}`,
375
- })))}
229
+ ],
230
+ }),
231
+ ].join('')))}
376
232
  ${BgWidget.mbContainer(120)}
377
233
  `, BgWidget.getContainerWidth());
378
234
  }
@@ -450,24 +306,18 @@ export class BgLine {
450
306
  ];
451
307
  const filterTags = ListComp.getFilterTags(FilterOptions.snsFunnel);
452
308
  if (document.body.clientWidth < 768) {
453
- return html `
454
- <div style="display: flex; align-items: center; gap: 10px; width: 100%; justify-content: space-between">
455
- <div>${filterList[0]}</div>
456
- <div style="display: flex;">
457
- <div class="me-2">${filterList[2]}</div>
458
- </div>
459
- </div>
460
- <div style="display: flex; margin-top: 8px;">
461
- ${filterList[1]}
462
- </div>
463
- <div>${filterTags}</div>`;
309
+ return html ` <div style="display: flex; align-items: center; gap: 10px; width: 100%; justify-content: space-between">
310
+ <div>${filterList[0]}</div>
311
+ <div style="display: flex;">
312
+ <div class="me-2">${filterList[2]}</div>
313
+ </div>
314
+ </div>
315
+ <div style="display: flex; margin-top: 8px;">${filterList[1]}</div>
316
+ <div>${filterTags}</div>`;
464
317
  }
465
318
  else {
466
- return html `
467
- <div style="display: flex; align-items: center; gap: 10px;">
468
- ${filterList.join('')}
469
- </div>
470
- <div>${filterTags}</div>`;
319
+ return html ` <div style="display: flex; align-items: center; gap: 10px;">${filterList.join('')}</div>
320
+ <div>${filterTags}</div>`;
471
321
  }
472
322
  },
473
323
  });
@@ -475,7 +325,7 @@ export class BgLine {
475
325
  gvc.bindView({
476
326
  bind: vm.tableId,
477
327
  view: () => {
478
- return BgWidget.tableV2({
328
+ return BgWidget.tableV3({
479
329
  gvc: gvc,
480
330
  getData: (vmi) => {
481
331
  var _a, _b;
@@ -490,27 +340,21 @@ export class BgLine {
490
340
  mailType: vm.filter.mailType,
491
341
  }).then((data) => {
492
342
  if (data.result) {
493
- vmi.pageSize = Math.ceil(data.response.total / limit);
494
- vm.dataList = data.response.data;
495
343
  function getDatalist() {
496
344
  return data.response.data.map((dd) => {
497
- console.log(dd);
498
345
  return [
499
346
  {
500
347
  key: '寄件類型',
501
- value: html `<span
502
- class="fs-7">${dd.content.typeName}</span>`,
348
+ value: html `<span class="fs-7">${dd.content.typeName}</span>`,
503
349
  },
504
350
  {
505
351
  key: '標題',
506
- value: html `<span
507
- class="fs-7">${Tool.truncateString(`${dd.content.title}`, 25)}</span>`,
352
+ value: html `<span class="fs-7">${Tool.truncateString(`${dd.content.title}`, 25)}</span>`,
508
353
  },
509
354
  {
510
355
  key: '收件群組',
511
- value: html `<span
512
- class="fs-7"
513
- >${(() => {
356
+ value: html `<span class="fs-7"
357
+ >${(() => {
514
358
  if (!dd.content.sendGroup) {
515
359
  return '沒有群組';
516
360
  }
@@ -526,13 +370,11 @@ export class BgLine {
526
370
  tagList.push(group);
527
371
  }
528
372
  }
529
- return tagList.join(html `<span
530
- class="badge fs-7 mx-1 px-1"
531
- style="color: #393939; background: #FFD5D0;"
532
- >${dd.content.boolean === 'and' ? '且' : '或'}</span
533
- >`);
373
+ return tagList.join(html `<span class="badge fs-7 mx-1 px-1" style="color: #393939; background: #FFD5D0;"
374
+ >${dd.content.boolean === 'and' ? '且' : '或'}</span
375
+ >`);
534
376
  })()}</span
535
- >`,
377
+ >`,
536
378
  },
537
379
  {
538
380
  key: '寄送時間',
@@ -543,30 +385,21 @@ export class BgLine {
543
385
  value: (() => {
544
386
  switch (dd.status) {
545
387
  case 0:
546
- return html `
547
- <div class="badge fs-7"
548
- style="color: #393939; background: #ffd6a4;">
549
- 尚未寄送
550
- </div>`;
388
+ return BgWidget.warningInsignia('尚未寄送');
551
389
  case 1:
552
- return html `
553
- <div class="badge fs-7"
554
- style="color: #393939; background: #0000000f;">
555
- 已寄出
556
- </div>`;
390
+ return BgWidget.secondaryInsignia('已寄出');
557
391
  case 2:
558
- return html `
559
- <div class="badge fs-7"
560
- style="color: #393939; background: #0000000f;">
561
- 取消預約
562
- </div>`;
392
+ return BgWidget.notifyInsignia('取消預約');
563
393
  }
564
394
  })(),
565
395
  },
566
396
  ];
567
397
  });
568
398
  }
569
- vmi.data = getDatalist();
399
+ vm.dataList = data.response.data;
400
+ vmi.pageSize = Math.ceil(data.response.total / limit);
401
+ vmi.originalData = vm.dataList;
402
+ vmi.tableData = getDatalist();
570
403
  vmi.loading = false;
571
404
  vmi.callback();
572
405
  }
@@ -577,6 +410,7 @@ export class BgLine {
577
410
  vm.data = vm.dataList[index].content;
578
411
  vm.type = 'replace';
579
412
  },
413
+ filter: [],
580
414
  });
581
415
  },
582
416
  }),
@@ -614,22 +448,13 @@ export class BgLine {
614
448
  <div class="flex-fill"></div>
615
449
  ${obj.readonly
616
450
  ? [
617
- html `
618
- <div class="badge fs-7 me-2" style="color: #393939; background: #0000000f;">
619
- ${vm.data.typeName}
620
- </div>`,
451
+ html `<div class="me-2">${BgWidget.secondaryInsignia(vm.data.typeName)}</div>`,
621
452
  (() => {
622
453
  switch (vm.data.status) {
623
454
  case 0:
624
- return html `
625
- <div class="badge fs-7 me-1"
626
- style="color: #393939; background: #ffd6a4;">尚未寄送
627
- </div>`;
455
+ return BgWidget.warningInsignia('尚未寄送');
628
456
  case 1:
629
- return html `
630
- <div class="badge fs-7 me-1"
631
- style="color: #393939; background: #0000000f;">已寄出
632
- </div>`;
457
+ return BgWidget.secondaryInsignia('已寄出');
633
458
  }
634
459
  })(),
635
460
  ].join('')
@@ -644,30 +469,25 @@ export class BgLine {
644
469
  var _a, _b;
645
470
  let htmlList = [];
646
471
  if (obj.readonly) {
647
- const sendGroupHTML = ((_a = vm.data.sendGroup) !== null && _a !== void 0 ? _a : []).map((str) => html `
648
- <div class="c_filter_tag">${str}</div>`);
649
- const emailHTML = vm.data.userList.map((data) => html `
650
- <div class="c_filter_tag">${data.email}</div>`);
472
+ const sendGroupHTML = ((_a = vm.data.sendGroup) !== null && _a !== void 0 ? _a : []).map((str) => html ` <div class="c_filter_tag">${str}</div>`);
473
+ const emailHTML = vm.data.userList.map((data) => html ` <div class="c_filter_tag">${data.email}</div>`);
651
474
  htmlList = htmlList.concat([
652
475
  BgWidget.mainCard(html `
653
- <div class="tx_normal fw-normal">收訊者信箱</div>
654
- <div class="c_filter_container">${emailHTML.join('')}</div>
655
- `),
476
+ <div class="tx_normal fw-normal">收訊者信箱</div>
477
+ <div class="c_filter_container">${emailHTML.join('')}</div>
478
+ `),
656
479
  BgWidget.mainCard(html `
657
- <div class="tx_normal fw-normal">篩選條件</div>
658
- <div class="c_filter_container">
659
- ${sendGroupHTML.length === 0
480
+ <div class="tx_normal fw-normal">篩選條件</div>
481
+ <div class="c_filter_container">
482
+ ${sendGroupHTML.length === 0
660
483
  ? '沒有群組'
661
- : sendGroupHTML.join(html `<span
662
- class="badge fs-7 px-1"
663
- style="color: #393939; background: #FFD5D0;"
664
- >${vm.data.boolean === 'and' ? '且' : '或'}</span
665
- >`)}
666
- </div>
667
- `),
668
- BgWidget.mainCard(html `
669
- <div class="tx_700 mb-3">發送時間</div>
670
- ${EditorElem.radio({
484
+ : sendGroupHTML.join(html `<span class="badge fs-7 px-1" style="color: #393939; background: #FFD5D0;"
485
+ >${vm.data.boolean === 'and' ? '且' : '或'}</span
486
+ >`)}
487
+ </div>
488
+ `),
489
+ BgWidget.mainCard(html ` <div class="tx_700 mb-3">發送時間</div>
490
+ ${EditorElem.radio({
671
491
  gvc: gvc,
672
492
  title: '',
673
493
  def: vm.data.sendTime === undefined ? 'now' : 'set',
@@ -679,64 +499,58 @@ export class BgLine {
679
499
  {
680
500
  title: '排定發送時間',
681
501
  value: 'set',
682
- innerHtml: html `
683
- <div class="d-flex mt-3 ${document.body.clientWidth < 768 ? 'flex-column' : ''}"
684
- style="gap: 12px">
685
- ${EditorElem.editeInput({
502
+ innerHtml: html ` <div class="d-flex mt-3 ${document.body.clientWidth < 768 ? 'flex-column' : ''}" style="gap: 12px">
503
+ ${EditorElem.editeInput({
686
504
  gvc: gvc,
687
505
  title: '',
688
506
  type: 'date',
689
507
  style: inputStyle,
690
508
  default: vm.data.sendTime ? vm.data.sendTime.date : '',
691
509
  placeHolder: '',
692
- callback: () => {
693
- },
510
+ callback: () => { },
694
511
  readonly: true,
695
512
  })}
696
- ${EditorElem.editeInput({
513
+ ${EditorElem.editeInput({
697
514
  gvc: gvc,
698
515
  title: '',
699
516
  type: 'time',
700
517
  style: inputStyle,
701
518
  default: vm.data.sendTime ? vm.data.sendTime.time : '',
702
519
  placeHolder: '',
703
- callback: () => {
704
- },
520
+ callback: () => { },
705
521
  readonly: true,
706
522
  })}
707
- </div>`,
523
+ </div>`,
708
524
  },
709
525
  ],
710
- callback: () => {
711
- },
526
+ callback: () => { },
712
527
  readonly: true,
713
528
  })}`),
714
529
  ]);
715
530
  }
716
531
  htmlList = htmlList.concat([
717
- BgWidget.mainCard(html `
718
- ${BgWidget.editeInput({
532
+ BgWidget.mainCard(html ` ${BgWidget.editeInput({
719
533
  gvc: gvc,
720
534
  title: '訊息主題',
721
- default: (_b = postData.title) !== null && _b !== void 0 ? _b : "",
535
+ default: (_b = postData.title) !== null && _b !== void 0 ? _b : '',
722
536
  readonly: true,
723
537
  placeHolder: '請輸入訊息主題',
724
538
  callback: (text) => {
725
539
  postData.title = text;
726
540
  },
727
541
  })}
728
- <div class="d-flex align-items-center my-3">
729
- <div class="tx_normal fw-normal me-2">訊息內文</div>
730
- </div>
731
- ${EditorElem.editeText({
542
+ <div class="d-flex align-items-center my-3">
543
+ <div class="tx_normal fw-normal me-2">訊息內文</div>
544
+ </div>
545
+ ${EditorElem.editeText({
732
546
  gvc: gvc,
733
- title: "",
547
+ title: '',
734
548
  readonly: true,
735
- default: postData.content || "",
736
- placeHolder: "",
549
+ default: postData.content || '',
550
+ placeHolder: '',
737
551
  callback: (text) => {
738
552
  postData.content = text;
739
- }
553
+ },
740
554
  })}`),
741
555
  ]);
742
556
  return htmlList.filter((str) => str.length > 0).join(BgWidget.mbContainer(16));
@@ -775,8 +589,8 @@ export class BgLine {
775
589
  const dialog = new ShareDialog(gvc.glitter);
776
590
  dialog.dataLoading({ text: '取消預約中', visible: true });
777
591
  ApiLineMessage.delete({
778
- id: vm.data.name
779
- }).then(r => {
592
+ id: vm.data.name,
593
+ }).then((r) => {
780
594
  dialog.dataLoading({ visible: false });
781
595
  if (r.result) {
782
596
  vm.status = 'list';
@@ -837,8 +651,6 @@ export class BgLine {
837
651
  const dialog = new ShareDialog(gvc.glitter);
838
652
  const startDate = ShoppingDiscountSetting.getDateTime(1).date;
839
653
  const startTime = ShoppingDiscountSetting.getDateTime(1).time;
840
- let wallet = 0;
841
- let pointCount = 1;
842
654
  const vm = {
843
655
  id: glitter.getUUID(),
844
656
  containerId: glitter.getUUID(),
@@ -1126,19 +938,18 @@ export class BgLine {
1126
938
  const formatName = value && value.length > 0 ? `${name}:${value}` : name;
1127
939
  return {
1128
940
  name: formatName,
1129
- html: html `
1130
- <div class="c_filter_tag">
1131
- ${formatName}
1132
- <i
1133
- class="fa-solid fa-xmark ms-1"
1134
- style="cursor: pointer"
1135
- onclick="${gvc.event(() => {
941
+ html: html ` <div class="c_filter_tag">
942
+ ${formatName}
943
+ <i
944
+ class="fa-solid fa-xmark ms-1"
945
+ style="cursor: pointer"
946
+ onclick="${gvc.event(() => {
1136
947
  postData.tagList = postData.tagList.filter((data) => data.tag !== key);
1137
948
  setUserList();
1138
949
  gvc.notifyDataChange(vm.tagsId);
1139
950
  })}"
1140
- ></i>
1141
- </div>`,
951
+ ></i>
952
+ </div>`,
1142
953
  };
1143
954
  }
1144
955
  function getTagsHTML() {
@@ -1158,12 +969,11 @@ export class BgLine {
1158
969
  });
1159
970
  postData.sendGroup = badgeList.map((item) => item.name);
1160
971
  return [
1161
- html `
1162
- <div class="tx_normal fw-normal">標籤判斷</div>
972
+ html ` <div class="tx_normal fw-normal">標籤判斷</div>
1163
973
  <div style="margin: 8px 0;">
1164
974
  ${BgWidget.switchTextButton(gvc, postData.boolean === 'and', {
1165
975
  left: '或',
1166
- right: '且'
976
+ right: '且',
1167
977
  }, (bool) => {
1168
978
  postData.boolean = bool ? 'and' : 'or';
1169
979
  setUserList();
@@ -1187,8 +997,7 @@ export class BgLine {
1187
997
  gvc: gvc,
1188
998
  title: '預計寄件顧客',
1189
999
  tag: 'send_users_list',
1190
- callback: () => {
1191
- },
1000
+ callback: () => { },
1192
1001
  default: [],
1193
1002
  api: () => {
1194
1003
  return new Promise((resolve) => {
@@ -1228,7 +1037,8 @@ export class BgLine {
1228
1037
  readonly: true,
1229
1038
  });
1230
1039
  }), { textStyle: 'font-weight: 400;' })}
1231
- </div> `,
1040
+ </div>
1041
+ `,
1232
1042
  html `
1233
1043
  <div class="tx_normal fw-normal">篩選條件</div>
1234
1044
  <div class="c_filter_container">
@@ -1243,9 +1053,6 @@ export class BgLine {
1243
1053
  `,
1244
1054
  ].join(BgWidget.mbContainer(18));
1245
1055
  }
1246
- ApiWallet.getWallet().then(r => {
1247
- wallet = r.response.sum;
1248
- });
1249
1056
  return BgWidget.container(html `
1250
1057
  <div class="d-flex w-100 align-items-center">
1251
1058
  ${BgWidget.title('line手動發送')}
@@ -1258,14 +1065,11 @@ export class BgLine {
1258
1065
  view: () => {
1259
1066
  return [
1260
1067
  BgWidget.mainCard([
1261
- html `
1262
- <div class="tx_700">選擇收訊對象</div>`,
1263
- html `
1264
- <div class="tx_normal fw-normal mt-3">根據</div>`,
1265
- html `
1266
- <div style="display: flex; ${document.body.clientWidth > 768 ? 'gap: 18px;' : 'flex-direction: column;'}">
1267
- <div style="width: ${document.body.clientWidth > 768 ? '400px' : '100%'};">
1268
- ${BgWidget.select({
1068
+ html ` <div class="tx_700">選擇收訊對象</div>`,
1069
+ html ` <div class="tx_normal fw-normal mt-3">根據</div>`,
1070
+ html ` <div style="display: flex; ${document.body.clientWidth > 768 ? 'gap: 18px;' : 'flex-direction: column;'}">
1071
+ <div style="width: ${document.body.clientWidth > 768 ? '400px' : '100%'};">
1072
+ ${BgWidget.select({
1269
1073
  gvc: gvc,
1270
1074
  default: postData.tag,
1271
1075
  callback: (key) => {
@@ -1276,9 +1080,9 @@ export class BgLine {
1276
1080
  options: FilterOptions.emailOptions,
1277
1081
  style: 'margin: 8px 0;',
1278
1082
  })}
1279
- </div>
1280
- <div style="width: 100%; display: flex; align-items: center;">
1281
- ${gvc.bindView({
1083
+ </div>
1084
+ <div style="width: 100%; display: flex; align-items: center;">
1085
+ ${gvc.bindView({
1282
1086
  bind: vm.id,
1283
1087
  view: () => {
1284
1088
  const getDefault = (def) => {
@@ -1301,7 +1105,7 @@ export class BgLine {
1301
1105
  case 'all':
1302
1106
  dialog.dataLoading({
1303
1107
  visible: true,
1304
- text: '取得所有會員資料中...'
1108
+ text: '取得所有會員資料中...',
1305
1109
  });
1306
1110
  new Promise((resolve) => {
1307
1111
  ApiUser.getUserListOrders({
@@ -1423,8 +1227,8 @@ export class BgLine {
1423
1227
  }
1424
1228
  },
1425
1229
  })}
1426
- </div>
1427
- </div>`,
1230
+ </div>
1231
+ </div>`,
1428
1232
  gvc.bindView({
1429
1233
  bind: vm.tagsId,
1430
1234
  view: () => getTagsHTML(),
@@ -1432,10 +1236,8 @@ export class BgLine {
1432
1236
  }),
1433
1237
  ].join('')),
1434
1238
  BgWidget.mainCard([
1435
- html `
1436
- <div class="tx_700">訊息內容</div>`,
1437
- html `
1438
- <div class="tx_normal fw-normal mt-3">定型文樣式</div>`,
1239
+ html ` <div class="tx_700">訊息內容</div>`,
1240
+ html ` <div class="tx_normal fw-normal mt-3">定型文樣式</div>`,
1439
1241
  (() => {
1440
1242
  const selectVM = {
1441
1243
  id: glitter.getUUID(),
@@ -1496,31 +1298,29 @@ export class BgLine {
1496
1298
  view: () => {
1497
1299
  return [
1498
1300
  html `
1499
- <div class="d-flex align-items-center mb-3">
1500
- <div class="tx_normal fw-normal me-2 d-flex">訊息內容
1501
- </div>
1502
- ${BgWidget.selEventButton('範例', gvc.event(() => {
1301
+ <div class="d-flex align-items-center mb-3">
1302
+ <div class="tx_normal fw-normal me-2 d-flex">訊息內容</div>
1303
+ ${BgWidget.selEventButton('範例', gvc.event(() => {
1503
1304
  postData.content = defaultEmailText();
1504
1305
  gvc.notifyDataChange(vm.containerId);
1505
1306
  }))}
1506
- </div>
1507
- ${EditorElem.editeText({
1307
+ </div>
1308
+ ${EditorElem.editeText({
1508
1309
  gvc: gvc,
1509
- title: "",
1510
- default: postData.content || "",
1511
- placeHolder: "",
1310
+ title: '',
1311
+ default: postData.content || '',
1312
+ placeHolder: '',
1512
1313
  callback: (text) => {
1513
1314
  postData.content = text;
1514
- }
1315
+ },
1515
1316
  })}
1516
- `,
1317
+ `,
1517
1318
  ].join('');
1518
1319
  },
1519
1320
  }),
1520
1321
  ].join('')),
1521
- BgWidget.mainCard(html `
1522
- <div class="tx_700 mb-3">發送時間</div>
1523
- ${EditorElem.radio({
1322
+ BgWidget.mainCard(html ` <div class="tx_700 mb-3">發送時間</div>
1323
+ ${EditorElem.radio({
1524
1324
  gvc: gvc,
1525
1325
  title: '',
1526
1326
  def: postData.sendTime === undefined ? 'now' : 'set',
@@ -1532,10 +1332,8 @@ export class BgLine {
1532
1332
  {
1533
1333
  title: '排定發送時間',
1534
1334
  value: 'set',
1535
- innerHtml: html `
1536
- <div class="d-flex mt-3 ${document.body.clientWidth < 768 ? 'flex-column' : ''}"
1537
- style="gap: 12px">
1538
- ${EditorElem.editeInput({
1335
+ innerHtml: html ` <div class="d-flex mt-3 ${document.body.clientWidth < 768 ? 'flex-column' : ''}" style="gap: 12px">
1336
+ ${EditorElem.editeInput({
1539
1337
  gvc: gvc,
1540
1338
  title: '',
1541
1339
  type: 'date',
@@ -1550,7 +1348,7 @@ export class BgLine {
1550
1348
  };
1551
1349
  },
1552
1350
  })}
1553
- ${EditorElem.editeInput({
1351
+ ${EditorElem.editeInput({
1554
1352
  gvc: gvc,
1555
1353
  title: '',
1556
1354
  type: 'time',
@@ -1565,7 +1363,7 @@ export class BgLine {
1565
1363
  };
1566
1364
  },
1567
1365
  })}
1568
- </div>`,
1366
+ </div>`,
1569
1367
  },
1570
1368
  ],
1571
1369
  callback: (text) => {
@@ -1639,8 +1437,7 @@ export class BgLine {
1639
1437
  ${BgWidget.title(`編輯推播通知`)}
1640
1438
  <div class="flex-fill"></div>
1641
1439
  </div>
1642
- ${BgWidget.container(html `
1643
- <div class="d-flex px-0" style="gap: 10px;">
1440
+ ${BgWidget.container(html ` <div class="d-flex px-0" style="gap: 10px;">
1644
1441
  <div style="width: 100%">
1645
1442
  ${BgWidget.mainCard(obj.gvc.bindView(() => {
1646
1443
  const bi = obj.gvc.glitter.getUUID();
@@ -1684,9 +1481,9 @@ export class BgLine {
1684
1481
  </div>
1685
1482
  ${obj.type === 'replace'
1686
1483
  ? html `
1687
- <div class="d-flex w-100 mt-2">
1688
- <div class="flex-fill"></div>
1689
- ${BgWidget.redButton('刪除樣本', obj.gvc.event(() => {
1484
+ <div class="d-flex w-100 mt-2">
1485
+ <div class="flex-fill"></div>
1486
+ ${BgWidget.redButton('刪除樣本', obj.gvc.event(() => {
1690
1487
  const dialog = new ShareDialog(obj.gvc.glitter);
1691
1488
  dialog.checkYesOrNot({
1692
1489
  text: '是否確認刪除樣本?',
@@ -1708,8 +1505,8 @@ export class BgLine {
1708
1505
  },
1709
1506
  });
1710
1507
  }))}
1711
- </div>
1712
- `
1508
+ </div>
1509
+ `
1713
1510
  : ``}
1714
1511
  <div class="update-bar-container">
1715
1512
  ${BgWidget.cancel(gvc.event(() => {
@@ -1755,8 +1552,7 @@ export class BgLine {
1755
1552
  </div>`)}
1756
1553
  `, BgWidget.getContainerWidth({ rate: { web: 0.68 } }));
1757
1554
  }
1758
- static fcmDevice(gvc, type = 'list', callback = () => {
1759
- }) {
1555
+ static fcmDevice(gvc, type = 'list', callback = () => { }) {
1760
1556
  const vm = {
1761
1557
  type: 'list',
1762
1558
  data: {
@@ -1782,59 +1578,9 @@ export class BgLine {
1782
1578
  view: () => {
1783
1579
  let vmi = undefined;
1784
1580
  function getDatalist() {
1785
- let interval = 0;
1786
1581
  return vm.dataList.map((dd) => {
1787
1582
  var _a;
1788
1583
  return [
1789
- {
1790
- key: (() => {
1791
- clearInterval(interval);
1792
- if (!vm.dataList.find((dd) => {
1793
- return !dd.checked;
1794
- })) {
1795
- interval = setTimeout(() => {
1796
- ApiUser.getFCM({
1797
- page: vmi.page - 1,
1798
- limit: 100000,
1799
- search: vm.query || undefined,
1800
- }).then((data) => {
1801
- callback(data.response.data);
1802
- });
1803
- }, 10);
1804
- }
1805
- return EditorElem.checkBoxOnly({
1806
- gvc: gvc,
1807
- def: !vm.dataList.find((dd) => {
1808
- return !dd.checked;
1809
- }),
1810
- callback: (result) => {
1811
- vm.dataList.map((dd) => {
1812
- dd.checked = result;
1813
- });
1814
- vmi.data = getDatalist();
1815
- vmi.callback();
1816
- gvc.notifyDataChange(filterID);
1817
- callback(vm.dataList.filter((dd) => {
1818
- return dd.checked;
1819
- }));
1820
- },
1821
- });
1822
- })(),
1823
- value: EditorElem.checkBoxOnly({
1824
- gvc: gvc,
1825
- def: dd.checked,
1826
- callback: (result) => {
1827
- dd.checked = result;
1828
- vmi.data = getDatalist();
1829
- vmi.callback();
1830
- gvc.notifyDataChange(filterID);
1831
- callback(vm.dataList.filter((dd) => {
1832
- return dd.checked;
1833
- }));
1834
- },
1835
- style: 'height:25px;',
1836
- }),
1837
- },
1838
1584
  {
1839
1585
  key: '用戶ID',
1840
1586
  value: `<span class="fs-7">${(_a = dd.userID) !== null && _a !== void 0 ? _a : '尚未登入'}</span>`,
@@ -1855,106 +1601,73 @@ export class BgLine {
1855
1601
  ${BgWidget.title('已訂閱裝置')}
1856
1602
  <div class="flex-fill"></div>
1857
1603
  </div>
1858
- ${BgWidget.container(BgWidget.mainCard(BgWidget.tableV2({
1859
- gvc: gvc,
1860
- getData: (vmk) => {
1861
- vmi = vmk;
1862
- ApiUser.getFCM({
1863
- page: vmi.page - 1,
1864
- limit: 20,
1865
- search: vm.query || undefined,
1866
- }).then((data) => {
1867
- vmi.pageSize = Math.ceil(data.response.total / 20);
1868
- vm.dataList = data.response.data;
1869
- vmi.data = getDatalist();
1870
- vmi.loading = false;
1871
- vmi.callback();
1872
- if (type === 'select') {
1873
- callback(vm.dataList.filter((dd) => {
1874
- return dd.checked;
1875
- }));
1876
- }
1877
- });
1878
- },
1879
- rowClick: (data, index) => {
1880
- vm.dataList[index].checked = !vm.dataList[index].checked;
1881
- vmi.data = getDatalist();
1882
- vmi.callback();
1883
- gvc.notifyDataChange(filterID);
1884
- callback(vm.dataList.filter((dd) => {
1885
- return dd.checked;
1886
- }));
1887
- },
1888
- filter: html `
1889
- ${BgWidget.searchPlace(gvc.event((e, event) => {
1604
+ ${BgWidget.container(BgWidget.mainCard([
1605
+ BgWidget.searchPlace(gvc.event((e, event) => {
1890
1606
  vm.query = e.value;
1891
1607
  gvc.notifyDataChange(id);
1892
- }), vm.query || '', '搜尋信箱或者標籤')}
1893
- ${gvc.bindView(() => {
1894
- return {
1895
- bind: filterID,
1896
- view: () => {
1897
- if (!vm.dataList ||
1898
- !vm.dataList.find((dd) => {
1608
+ }), vm.query || '', '搜尋信箱或者標籤'),
1609
+ BgWidget.tableV3({
1610
+ gvc: gvc,
1611
+ getData: (vmk) => {
1612
+ vmi = vmk;
1613
+ const limit = 20;
1614
+ ApiUser.getFCM({
1615
+ page: vmi.page - 1,
1616
+ limit: limit,
1617
+ search: vm.query || undefined,
1618
+ }).then((data) => {
1619
+ vm.dataList = data.response.data;
1620
+ vmi.pageSize = Math.ceil(data.response.total / limit);
1621
+ vmi.originalData = vm.dataList;
1622
+ vmi.tableData = getDatalist();
1623
+ vmi.loading = false;
1624
+ vmi.callback();
1625
+ if (type === 'select') {
1626
+ callback(vm.dataList.filter((dd) => {
1899
1627
  return dd.checked;
1900
- })) {
1901
- return ``;
1628
+ }));
1902
1629
  }
1903
- else {
1904
- const dialog = new ShareDialog(gvc.glitter);
1905
- const selCount = vm.dataList.filter((dd) => dd.checked).length;
1906
- return BgWidget.selNavbar({
1907
- count: selCount,
1908
- buttonList: [
1909
- BgWidget.selEventButton('批量移除', gvc.event(() => {
1910
- dialog.checkYesOrNot({
1911
- text: '是否確認刪除所選項目?',
1912
- callback: (response) => {
1913
- if (response) {
1914
- dialog.dataLoading({ visible: true });
1915
- ApiUser.deleteSubscribe({
1916
- email: vm.dataList
1917
- .filter((dd) => {
1918
- return dd.checked;
1919
- })
1920
- .map((dd) => {
1921
- return dd.email;
1922
- })
1923
- .join(`,`),
1924
- }).then((res) => {
1925
- dialog.dataLoading({ visible: false });
1926
- if (res.result) {
1927
- vm.dataList = undefined;
1928
- gvc.notifyDataChange(id);
1929
- }
1930
- else {
1931
- dialog.errorMessage({ text: '刪除失敗' });
1932
- }
1933
- });
1934
- }
1935
- },
1630
+ });
1631
+ },
1632
+ rowClick: (data, index) => {
1633
+ vm.dataList[index].checked = !vm.dataList[index].checked;
1634
+ vmi.data = getDatalist();
1635
+ vmi.callback();
1636
+ gvc.notifyDataChange(filterID);
1637
+ callback(vm.dataList.filter((dd) => {
1638
+ return dd.checked;
1639
+ }));
1640
+ },
1641
+ filter: [
1642
+ {
1643
+ name: '批量移除',
1644
+ event: (checkedData) => {
1645
+ dialog.checkYesOrNot({
1646
+ text: '是否確認刪除所選項目?',
1647
+ callback: (response) => {
1648
+ if (response) {
1649
+ const dialog = new ShareDialog(gvc.glitter);
1650
+ dialog.dataLoading({ visible: true });
1651
+ ApiUser.deleteSubscribe({
1652
+ email: checkedData.map((dd) => dd.email).join(`,`),
1653
+ }).then((res) => {
1654
+ dialog.dataLoading({ visible: false });
1655
+ if (res.result) {
1656
+ vm.dataList = undefined;
1657
+ gvc.notifyDataChange(id);
1658
+ }
1659
+ else {
1660
+ dialog.errorMessage({ text: '刪除失敗' });
1661
+ }
1936
1662
  });
1937
- })),
1938
- ],
1663
+ }
1664
+ },
1939
1665
  });
1940
- }
1941
- },
1942
- divCreate: () => {
1943
- return {
1944
- class: `d-flex align-items-center p-2 py-3 ${!vm.dataList ||
1945
- !vm.dataList.find((dd) => {
1946
- return dd.checked;
1947
- }) ||
1948
- type === 'select'
1949
- ? `d-none`
1950
- : ``}`,
1951
- style: ``,
1952
- };
1666
+ },
1953
1667
  },
1954
- };
1955
- })}
1956
- `,
1957
- })))}
1668
+ ],
1669
+ }),
1670
+ ].join('')))}
1958
1671
  `, BgWidget.getContainerWidth());
1959
1672
  },
1960
1673
  divCreate: {
@@ -1988,220 +1701,162 @@ export class BgLine {
1988
1701
  vm.type = 'add';
1989
1702
  }))}
1990
1703
  </div>
1991
- ${BgWidget.container(BgWidget.mainCard(BgWidget.tableV2({
1992
- gvc: gvc,
1993
- getData: (vmi) => {
1994
- ApiPost.getManagerPost({
1995
- page: vmi.page - 1,
1996
- limit: 20,
1997
- search: vm.query ? [`title->${vm.query}`] : undefined,
1998
- type: 'notify-message-config',
1999
- }).then((data) => {
2000
- vmi.pageSize = Math.ceil(data.response.total / 20);
2001
- vm.dataList = data.response.data;
2002
- function getDatalist() {
2003
- return data.response.data.map((dd) => {
2004
- return [
2005
- {
2006
- key: EditorElem.checkBoxOnly({
2007
- gvc: gvc,
2008
- def: !data.response.data.find((dd) => {
2009
- return !dd.checked;
2010
- }),
2011
- callback: (result) => {
2012
- data.response.data.map((dd) => {
2013
- dd.checked = result;
2014
- });
2015
- vmi.data = getDatalist();
2016
- vmi.callback();
2017
- gvc.notifyDataChange(filterID);
2018
- },
2019
- }),
2020
- value: EditorElem.checkBoxOnly({
2021
- gvc: gvc,
2022
- def: dd.checked,
2023
- callback: (result) => {
2024
- dd.checked = result;
2025
- vmi.data = getDatalist();
2026
- vmi.callback();
2027
- gvc.notifyDataChange(filterID);
2028
- },
2029
- style: 'height:25px;',
2030
- }),
2031
- },
2032
- {
2033
- key: '推播標題',
2034
- value: `<span class="fs-7">${dd.content.title}</span>`,
2035
- },
2036
- {
2037
- key: '推播內文',
2038
- value: `<span class="fs-7">${Tool.truncateString(dd.content.content.replace(/<[^>]*>/g, ''), 30)}</span>`,
2039
- },
2040
- {
2041
- key: '發送推播',
2042
- value: html `
2043
- <button
2044
- class="btn btn-primary-c px-4"
2045
- style="width:20px !important;height: 30px;"
2046
- onclick="${gvc.event((e, event) => {
2047
- event.stopPropagation();
2048
- gvc.glitter.innerDialog((gvc) => {
2049
- let dataList = [];
2050
- return html `
2051
- <div style="max-height: calc(100vh - 100px);overflow-y: auto;">
2052
- ${BgWidget.container(BgWidget.card([
2053
- html `
2054
- <div class="d-flex w-100 align-items-center mb-3 ">
2055
- ${BgWidget.goBack(gvc.event(() => {
2056
- gvc.closeDialog();
2057
- }))}
2058
- ${BgWidget.title(`選擇群發對象`)}
2059
- <div class="flex-fill"></div>
2060
- <button
2061
- class="btn bt_c39 me-2"
2062
- style="height:38px;font-size: 14px;"
2063
- onclick="${gvc.event(() => {
2064
- const dialog = new ShareDialog(gvc.glitter);
2065
- dialog.dataLoading({
2066
- text: '發送中...',
2067
- visible: true,
2068
- });
2069
- ApiFcm.send({
2070
- device_token: ['all'],
2071
- title: dd.content.title,
2072
- content: dd.content.content,
2073
- link: dd.content.link,
2074
- }).then(() => {
2075
- dialog.dataLoading({ visible: false });
2076
- dialog.successMessage({ text: `發送成功` });
2077
- });
2078
- })}"
2079
- >
2080
- 發送給所有用戶
2081
- </button>
2082
- <button
2083
- class="btn bt_c39"
2084
- style="height:38px;font-size: 14px;"
2085
- onclick="${gvc.event(() => {
2086
- const dialog = new ShareDialog(gvc.glitter);
2087
- if (dataList.length > 0) {
1704
+ ${BgWidget.container(BgWidget.mainCard([
1705
+ BgWidget.searchPlace(gvc.event((e, event) => {
1706
+ vm.query = e.value;
1707
+ gvc.notifyDataChange(id);
1708
+ }), vm.query || '', '搜尋所有信件內容'),
1709
+ BgWidget.tableV3({
1710
+ gvc: gvc,
1711
+ getData: (vmi) => {
1712
+ const limit = 20;
1713
+ ApiPost.getManagerPost({
1714
+ page: vmi.page - 1,
1715
+ limit: limit,
1716
+ search: vm.query ? [`title->${vm.query}`] : undefined,
1717
+ type: 'notify-message-config',
1718
+ }).then((data) => {
1719
+ function getDatalist() {
1720
+ return data.response.data.map((dd) => {
1721
+ return [
1722
+ {
1723
+ key: '推播標題',
1724
+ value: `<span class="fs-7">${dd.content.title}</span>`,
1725
+ },
1726
+ {
1727
+ key: '推播內文',
1728
+ value: `<span class="fs-7">${Tool.truncateString(dd.content.content.replace(/<[^>]*>/g, ''), 30)}</span>`,
1729
+ },
1730
+ {
1731
+ key: '發送推播',
1732
+ value: html ` <button
1733
+ class="btn btn-primary-c px-4"
1734
+ style="width:20px !important;height: 30px;"
1735
+ onclick="${gvc.event((e, event) => {
1736
+ event.stopPropagation();
1737
+ gvc.glitter.innerDialog((gvc) => {
1738
+ let dataList = [];
1739
+ return html `
1740
+ <div style="max-height: calc(100vh - 100px);overflow-y: auto;">
1741
+ ${BgWidget.container(BgWidget.card([
1742
+ html `
1743
+ <div class="d-flex w-100 align-items-center mb-3 ">
1744
+ ${BgWidget.goBack(gvc.event(() => {
1745
+ gvc.closeDialog();
1746
+ }))}
1747
+ ${BgWidget.title(`選擇群發對象`)}
1748
+ <div class="flex-fill"></div>
1749
+ <button
1750
+ class="btn bt_c39 me-2"
1751
+ style="height:38px;font-size: 14px;"
1752
+ onclick="${gvc.event(() => {
1753
+ const dialog = new ShareDialog(gvc.glitter);
2088
1754
  dialog.dataLoading({
2089
1755
  text: '發送中...',
2090
1756
  visible: true,
2091
1757
  });
2092
1758
  ApiFcm.send({
2093
- device_token: dataList.map((dd) => {
2094
- return dd.deviceToken;
2095
- }),
1759
+ device_token: ['all'],
2096
1760
  title: dd.content.title,
2097
1761
  content: dd.content.content,
2098
1762
  link: dd.content.link,
2099
1763
  }).then(() => {
2100
1764
  dialog.dataLoading({ visible: false });
2101
- dialog.successMessage({ text: '發送成功' });
1765
+ dialog.successMessage({ text: `發送成功` });
2102
1766
  });
2103
- }
2104
- else {
2105
- dialog.errorMessage({ text: '請選擇發送對象' });
2106
- }
2107
- })}"
2108
- >
2109
- 確認並發送
2110
- </button>
2111
- </div>
2112
- ` +
2113
- BgLine.fcmDevice(gvc, 'select', (data) => {
2114
- dataList = data;
2115
- }),
2116
- ].join('')), 900)}
2117
- <div></div>
2118
- </div>
2119
- `;
2120
- }, 'email');
2121
- })}"
2122
- >
2123
- <i class="fa-sharp fa-regular fa-paper-plane-top"></i>
2124
- </button>`,
2125
- },
2126
- ];
2127
- });
2128
- }
2129
- vmi.data = getDatalist();
2130
- vmi.loading = false;
2131
- vmi.callback();
2132
- });
2133
- },
2134
- rowClick: (data, index) => {
2135
- vm.data = vm.dataList[index].content;
2136
- vm.type = 'replace';
2137
- },
2138
- filter: html ` ${BgWidget.searchPlace(gvc.event((e, event) => {
2139
- vm.query = e.value;
2140
- gvc.notifyDataChange(id);
2141
- }), vm.query || '', '搜尋所有信件內容')}
2142
- ${gvc.bindView(() => {
2143
- return {
2144
- bind: filterID,
2145
- view: () => {
2146
- if (!vm.dataList ||
2147
- !vm.dataList.find((dd) => {
2148
- return dd.checked;
2149
- })) {
2150
- return ``;
2151
- }
2152
- else {
2153
- const dialog = new ShareDialog(gvc.glitter);
2154
- const selCount = vm.dataList.filter((dd) => dd.checked).length;
2155
- return BgWidget.selNavbar({
2156
- count: selCount,
2157
- buttonList: [
2158
- BgWidget.selEventButton('批量移除', gvc.event(() => {
2159
- dialog.checkYesOrNot({
2160
- text: '是否確認刪除所選項目?',
2161
- callback: (response) => {
2162
- if (response) {
2163
- dialog.dataLoading({ visible: true });
2164
- ApiPost.delete({
2165
- id: vm.dataList
2166
- .filter((dd) => {
2167
- return dd.checked;
2168
- })
2169
- .map((dd) => {
2170
- return dd.id;
2171
- })
2172
- .join(`,`),
2173
- }).then((res) => {
2174
- dialog.dataLoading({ visible: false });
2175
- if (res.result) {
2176
- vm.dataList = undefined;
2177
- gvc.notifyDataChange(id);
1767
+ })}"
1768
+ >
1769
+ 發送給所有用戶
1770
+ </button>
1771
+ <button
1772
+ class="btn bt_c39"
1773
+ style="height:38px;font-size: 14px;"
1774
+ onclick="${gvc.event(() => {
1775
+ const dialog = new ShareDialog(gvc.glitter);
1776
+ if (dataList.length > 0) {
1777
+ dialog.dataLoading({
1778
+ text: '發送中...',
1779
+ visible: true,
1780
+ });
1781
+ ApiFcm.send({
1782
+ device_token: dataList.map((dd) => {
1783
+ return dd.deviceToken;
1784
+ }),
1785
+ title: dd.content.title,
1786
+ content: dd.content.content,
1787
+ link: dd.content.link,
1788
+ }).then(() => {
1789
+ dialog.dataLoading({ visible: false });
1790
+ dialog.successMessage({ text: '發送成功' });
1791
+ });
2178
1792
  }
2179
1793
  else {
2180
- dialog.errorMessage({ text: '刪除失敗' });
1794
+ dialog.errorMessage({ text: '請選擇發送對象' });
2181
1795
  }
2182
- });
2183
- }
2184
- },
2185
- });
2186
- })),
2187
- ],
1796
+ })}"
1797
+ >
1798
+ 確認並發送
1799
+ </button>
1800
+ </div>
1801
+ ` +
1802
+ BgLine.fcmDevice(gvc, 'select', (data) => {
1803
+ dataList = data;
1804
+ }),
1805
+ ].join('')), 900)}
1806
+ <div></div>
1807
+ </div>
1808
+ `;
1809
+ }, 'email');
1810
+ })}"
1811
+ >
1812
+ <i class="fa-sharp fa-regular fa-paper-plane-top"></i>
1813
+ </button>`,
1814
+ },
1815
+ ];
2188
1816
  });
2189
1817
  }
1818
+ vm.dataList = data.response.data;
1819
+ vmi.pageSize = Math.ceil(data.response.total / limit);
1820
+ vmi.originalData = vm.dataList;
1821
+ vmi.tableData = getDatalist();
1822
+ vmi.loading = false;
1823
+ vmi.callback();
1824
+ });
1825
+ },
1826
+ rowClick: (data, index) => {
1827
+ vm.data = vm.dataList[index].content;
1828
+ vm.type = 'replace';
1829
+ },
1830
+ filter: [
1831
+ {
1832
+ name: '批量移除',
1833
+ event: (checkedData) => {
1834
+ const dialog = new ShareDialog(gvc.glitter);
1835
+ dialog.checkYesOrNot({
1836
+ text: '是否確認刪除所選項目?',
1837
+ callback: (response) => {
1838
+ if (response) {
1839
+ dialog.dataLoading({ visible: true });
1840
+ ApiPost.delete({
1841
+ id: checkedData.map((dd) => dd.id).join(`,`),
1842
+ }).then((res) => {
1843
+ dialog.dataLoading({ visible: false });
1844
+ if (res.result) {
1845
+ vm.dataList = undefined;
1846
+ gvc.notifyDataChange(id);
1847
+ }
1848
+ else {
1849
+ dialog.errorMessage({ text: '刪除失敗' });
1850
+ }
1851
+ });
1852
+ }
1853
+ },
1854
+ });
1855
+ },
2190
1856
  },
2191
- divCreate: () => {
2192
- return {
2193
- class: `d-flex align-items-center p-2 py-3 ${!vm.dataList ||
2194
- !vm.dataList.find((dd) => {
2195
- return dd.checked;
2196
- })
2197
- ? `d-none`
2198
- : ``}`,
2199
- style: ``,
2200
- };
2201
- },
2202
- };
2203
- })}`,
2204
- })))}
1857
+ ],
1858
+ }),
1859
+ ].join('')))}
2205
1860
  `, BgWidget.getContainerWidth());
2206
1861
  }
2207
1862
  else if (vm.type == 'replace') {
@@ -2222,8 +1877,7 @@ export class BgLine {
2222
1877
  };
2223
1878
  });
2224
1879
  }
2225
- static rebackMessage(gvc, type = 'list', callback = () => {
2226
- }) {
1880
+ static rebackMessage(gvc, type = 'list', callback = () => { }) {
2227
1881
  const vm = {
2228
1882
  type: 'list',
2229
1883
  data: {
@@ -2252,55 +1906,6 @@ export class BgLine {
2252
1906
  return vm.dataList.map((dd) => {
2253
1907
  var _a;
2254
1908
  return [
2255
- {
2256
- key: (() => {
2257
- clearInterval(interval);
2258
- if (!vm.dataList.find((dd) => {
2259
- return !dd.checked;
2260
- })) {
2261
- interval = setTimeout(() => {
2262
- ApiUser.getFCM({
2263
- page: vmi.page - 1,
2264
- limit: 100000,
2265
- search: vm.query || undefined,
2266
- }).then((data) => {
2267
- callback(data.response.data);
2268
- });
2269
- }, 10);
2270
- }
2271
- return EditorElem.checkBoxOnly({
2272
- gvc: gvc,
2273
- def: !vm.dataList.find((dd) => {
2274
- return !dd.checked;
2275
- }),
2276
- callback: (result) => {
2277
- vm.dataList.map((dd) => {
2278
- dd.checked = result;
2279
- });
2280
- vmi.data = getDatalist();
2281
- vmi.callback();
2282
- gvc.notifyDataChange(filterID);
2283
- callback(vm.dataList.filter((dd) => {
2284
- return dd.checked;
2285
- }));
2286
- },
2287
- });
2288
- })(),
2289
- value: EditorElem.checkBoxOnly({
2290
- gvc: gvc,
2291
- def: dd.checked,
2292
- callback: (result) => {
2293
- dd.checked = result;
2294
- vmi.data = getDatalist();
2295
- vmi.callback();
2296
- gvc.notifyDataChange(filterID);
2297
- callback(vm.dataList.filter((dd) => {
2298
- return dd.checked;
2299
- }));
2300
- },
2301
- style: 'height:25px;',
2302
- }),
2303
- },
2304
1909
  {
2305
1910
  key: '名稱',
2306
1911
  value: `<span class="fs-7">${dd.content.name}</span>`,
@@ -2431,8 +2036,7 @@ export class BgLine {
2431
2036
  },
2432
2037
  },
2433
2038
  ],
2434
- refresh: () => {
2435
- },
2039
+ refresh: () => { },
2436
2040
  formData: vm.data.content,
2437
2041
  })}`)}
2438
2042
  `, 800);
@@ -2442,103 +2046,76 @@ export class BgLine {
2442
2046
  ${BgWidget.title('回饋信件')}
2443
2047
  <div class="flex-fill"></div>
2444
2048
  </div>
2445
- ${BgWidget.table({
2446
- gvc: gvc,
2447
- getData: (vmk) => {
2448
- vmi = vmk;
2449
- ApiPost.getUserPost({
2450
- page: vmi.page - 1,
2451
- limit: 20,
2452
- search: vm.query || undefined,
2453
- type: 'userQuestion',
2454
- }).then((data) => {
2455
- vmi.pageSize = Math.ceil(data.response.total / 20);
2456
- vm.dataList = data.response.data;
2457
- vmi.data = getDatalist();
2458
- vmi.loading = false;
2459
- vmi.callback();
2460
- if (type === 'select') {
2461
- callback(vm.dataList.filter((dd) => {
2462
- return dd.checked;
2463
- }));
2464
- }
2465
- });
2466
- },
2467
- rowClick: (data, index) => {
2468
- vm.type = 'replace';
2469
- vm.data = vm.dataList[index];
2470
- gvc.notifyDataChange(id);
2471
- },
2472
- filter: html `
2473
- ${BgWidget.searchPlace(gvc.event((e, event) => {
2049
+ ${BgWidget.mainCard([
2050
+ BgWidget.searchPlace(gvc.event((e, event) => {
2474
2051
  vm.query = e.value;
2475
2052
  gvc.notifyDataChange(id);
2476
- }), vm.query || '', '搜尋標題')}
2477
- ${gvc.bindView(() => {
2478
- return {
2479
- bind: filterID,
2480
- view: () => {
2481
- if (!vm.dataList ||
2482
- !vm.dataList.find((dd) => {
2053
+ }), vm.query || '', '搜尋標題'),
2054
+ BgWidget.tableV3({
2055
+ gvc: gvc,
2056
+ getData: (vmi) => {
2057
+ const limit = 20;
2058
+ ApiPost.getUserPost({
2059
+ page: vmi.page - 1,
2060
+ limit: limit,
2061
+ search: vm.query || undefined,
2062
+ type: 'userQuestion',
2063
+ }).then((data) => {
2064
+ vm.dataList = data.response.data;
2065
+ vmi.pageSize = Math.ceil(data.response.total / limit);
2066
+ vmi.originalData = vm.dataList;
2067
+ vmi.tableData = getDatalist();
2068
+ vmi.loading = false;
2069
+ vmi.callback();
2070
+ if (type === 'select') {
2071
+ callback(vm.dataList.filter((dd) => {
2483
2072
  return dd.checked;
2484
- })) {
2485
- return ``;
2073
+ }));
2486
2074
  }
2487
- else {
2075
+ });
2076
+ },
2077
+ rowClick: (data, index) => {
2078
+ vm.type = 'replace';
2079
+ vm.data = vm.dataList[index];
2080
+ gvc.notifyDataChange(id);
2081
+ },
2082
+ filter: [
2083
+ {
2084
+ name: '批量移除',
2085
+ event: () => {
2488
2086
  const dialog = new ShareDialog(gvc.glitter);
2489
- const selCount = vm.dataList.filter((dd) => dd.checked).length;
2490
- return BgWidget.selNavbar({
2491
- count: selCount,
2492
- buttonList: [
2493
- BgWidget.selEventButton('批量移除', gvc.event(() => {
2494
- dialog.checkYesOrNot({
2495
- text: '是否確認刪除所選項目?',
2496
- callback: (response) => {
2497
- if (response) {
2498
- dialog.dataLoading({ visible: true });
2499
- ApiPost.deleteUserPost({
2500
- id: vm.dataList
2501
- .filter((dd) => {
2502
- return dd.checked;
2503
- })
2504
- .map((dd) => {
2505
- return dd.id;
2506
- })
2507
- .join(`,`),
2508
- }).then((res) => {
2509
- dialog.dataLoading({ visible: false });
2510
- if (res.result) {
2511
- vm.dataList = undefined;
2512
- gvc.notifyDataChange(id);
2513
- }
2514
- else {
2515
- dialog.errorMessage({ text: '刪除失敗' });
2516
- }
2517
- });
2518
- }
2519
- },
2087
+ dialog.checkYesOrNot({
2088
+ text: '是否確認刪除所選項目?',
2089
+ callback: (response) => {
2090
+ if (response) {
2091
+ dialog.dataLoading({ visible: true });
2092
+ ApiPost.deleteUserPost({
2093
+ id: vm.dataList
2094
+ .filter((dd) => {
2095
+ return dd.checked;
2096
+ })
2097
+ .map((dd) => {
2098
+ return dd.id;
2099
+ })
2100
+ .join(`,`),
2101
+ }).then((res) => {
2102
+ dialog.dataLoading({ visible: false });
2103
+ if (res.result) {
2104
+ vm.dataList = undefined;
2105
+ gvc.notifyDataChange(id);
2106
+ }
2107
+ else {
2108
+ dialog.errorMessage({ text: '刪除失敗' });
2109
+ }
2520
2110
  });
2521
- })),
2522
- ],
2111
+ }
2112
+ },
2523
2113
  });
2524
- }
2525
- },
2526
- divCreate: () => {
2527
- return {
2528
- class: `d-flex align-items-center p-2 py-3 ${!vm.dataList ||
2529
- !vm.dataList.find((dd) => {
2530
- return dd.checked;
2531
- }) ||
2532
- type === 'select'
2533
- ? `d-none`
2534
- : ``}`,
2535
- style: ``,
2536
- };
2114
+ },
2537
2115
  },
2538
- };
2539
- })}
2540
- `,
2541
- })}
2116
+ ],
2117
+ }),
2118
+ ].join(''))}
2542
2119
  `);
2543
2120
  },
2544
2121
  divCreate: {
@@ -2547,8 +2124,7 @@ export class BgLine {
2547
2124
  };
2548
2125
  });
2549
2126
  }
2550
- static customerMessage(gvc, type = 'list', callback = () => {
2551
- }) {
2127
+ static customerMessage(gvc, type = 'list', callback = () => { }) {
2552
2128
  const vm = {
2553
2129
  type: 'list',
2554
2130
  data: {
@@ -2577,55 +2153,6 @@ export class BgLine {
2577
2153
  let interval = 0;
2578
2154
  return vm.dataList.map((dd) => {
2579
2155
  return [
2580
- {
2581
- key: (() => {
2582
- clearInterval(interval);
2583
- if (!vm.dataList.find((dd) => {
2584
- return !dd.checked;
2585
- })) {
2586
- interval = setTimeout(() => {
2587
- ApiUser.getFCM({
2588
- page: vmi.page - 1,
2589
- limit: 100000,
2590
- search: vm.query || undefined,
2591
- }).then((data) => {
2592
- callback(data.response.data);
2593
- });
2594
- }, 10);
2595
- }
2596
- return EditorElem.checkBoxOnly({
2597
- gvc: gvc,
2598
- def: !vm.dataList.find((dd) => {
2599
- return !dd.checked;
2600
- }),
2601
- callback: (result) => {
2602
- vm.dataList.map((dd) => {
2603
- dd.checked = result;
2604
- });
2605
- vmi.data = getDatalist();
2606
- vmi.callback();
2607
- gvc.notifyDataChange(filterID);
2608
- callback(vm.dataList.filter((dd) => {
2609
- return dd.checked;
2610
- }));
2611
- },
2612
- });
2613
- })(),
2614
- value: EditorElem.checkBoxOnly({
2615
- gvc: gvc,
2616
- def: dd.checked,
2617
- callback: (result) => {
2618
- dd.checked = result;
2619
- vmi.data = getDatalist();
2620
- vmi.callback();
2621
- gvc.notifyDataChange(filterID);
2622
- callback(vm.dataList.filter((dd) => {
2623
- return dd.checked;
2624
- }));
2625
- },
2626
- style: 'height:25px;',
2627
- }),
2628
- },
2629
2156
  {
2630
2157
  key: '名稱',
2631
2158
  value: `<span class="fs-7">${dd.user_data ? dd.user_data.userData.name : `訪客`}</span>`,
@@ -2752,8 +2279,7 @@ export class BgLine {
2752
2279
  },
2753
2280
  },
2754
2281
  ],
2755
- refresh: () => {
2756
- },
2282
+ refresh: () => { },
2757
2283
  formData: vm.data.content,
2758
2284
  })}`)}
2759
2285
  `, 800);
@@ -2763,9 +2289,9 @@ export class BgLine {
2763
2289
  ${BgWidget.title('客服訊息')}
2764
2290
  <div class="flex-fill"></div>
2765
2291
  <button
2766
- class="btn hoverBtn me-2 px-3"
2767
- style="height:35px !important;font-size: 14px;color:black;border:1px solid black;"
2768
- onclick="${gvc.event(() => {
2292
+ class="btn hoverBtn me-2 px-3"
2293
+ style="height:35px !important;font-size: 14px;color:black;border:1px solid black;"
2294
+ onclick="${gvc.event(() => {
2769
2295
  EditorElem.openEditorDialog(gvc, (gvc) => {
2770
2296
  const saasConfig = window.saasConfig;
2771
2297
  const id = gvc.glitter.getUUID();
@@ -2798,7 +2324,7 @@ export class BgLine {
2798
2324
  },
2799
2325
  input: {
2800
2326
  class: '',
2801
- style: ''
2327
+ style: '',
2802
2328
  },
2803
2329
  container: {
2804
2330
  class: '',
@@ -2865,13 +2391,12 @@ export class BgLine {
2865
2391
  },
2866
2392
  };
2867
2393
  }),
2868
- html `
2869
- <div class="d-flex">
2870
- <div class="flex-fill"></div>
2871
- <div
2872
- class=" btn-primary-c btn my-2 me-2"
2873
- style="margin-left: 10px;height:35px;"
2874
- onclick="${gvc.event(() => {
2394
+ html ` <div class="d-flex">
2395
+ <div class="flex-fill"></div>
2396
+ <div
2397
+ class=" btn-primary-c btn my-2 me-2"
2398
+ style="margin-left: 10px;height:35px;"
2399
+ onclick="${gvc.event(() => {
2875
2400
  dialog.dataLoading({ visible: true });
2876
2401
  ApiUser.setPublicConfig({
2877
2402
  key: `robot_auto_reply`,
@@ -2882,13 +2407,12 @@ export class BgLine {
2882
2407
  dialog.successMessage({ text: '設定成功' });
2883
2408
  });
2884
2409
  })}"
2885
- >
2886
- 儲存設定
2887
- </div>
2888
- </div>`,
2410
+ >
2411
+ 儲存設定
2412
+ </div>
2413
+ </div>`,
2889
2414
  ].join('');
2890
- }, () => {
2891
- }, 500, '自訂表單');
2415
+ }, () => { }, 500, '自訂表單');
2892
2416
  })}"
2893
2417
  >
2894
2418
  <i class="fa-regular fa-gear me-2 "></i>
@@ -2938,14 +2462,14 @@ export class BgLine {
2938
2462
  filter: html `
2939
2463
  <div style="height:50px;" class="w-100 border-bottom ">
2940
2464
  <input
2941
- class="form-control h-100 "
2942
- style="border: none;"
2943
- placeholder="搜尋用戶名稱"
2944
- onchange="${gvc.event((e, event) => {
2465
+ class="form-control h-100 "
2466
+ style="border: none;"
2467
+ placeholder="搜尋用戶名稱"
2468
+ onchange="${gvc.event((e, event) => {
2945
2469
  vm.query = e.value;
2946
2470
  gvc.notifyDataChange(id);
2947
2471
  })}"
2948
- value="${vm.query || ''}"
2472
+ value="${vm.query || ''}"
2949
2473
  />
2950
2474
  </div>
2951
2475
  ${gvc.bindView(() => {