ts-glitter 13.3.5 → 13.3.7

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 +3 -0
  69. package/lowcode/jspage/main.ts +3 -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
@@ -57,10 +57,10 @@ interface PosPermissionItem {
57
57
  }[];
58
58
  name: string;
59
59
  pin: string;
60
- phone:string;
60
+ phone: string;
61
61
  member_id: string;
62
62
  title: string;
63
- come_from:string;
63
+ come_from: string;
64
64
  };
65
65
  created_time: string;
66
66
  updated_time: string;
@@ -98,15 +98,13 @@ type PosViewModel = {
98
98
  filter: any;
99
99
  };
100
100
 
101
-
102
-
103
101
  export class PermissionSetting {
104
- static main(gvc: GVC,edit_mode:'pos'|'backend') {
102
+ static main(gvc: GVC, edit_mode: 'pos' | 'backend') {
105
103
  const glitter = gvc.glitter;
106
104
  const dialog = new ShareDialog(glitter);
107
- function getInitialData(){
108
- if(edit_mode==='backend'){
109
- const a:ViewModel={
105
+ function getInitialData() {
106
+ if (edit_mode === 'backend') {
107
+ const a: ViewModel = {
110
108
  id: glitter.getUUID(),
111
109
  filterId: glitter.getUUID(),
112
110
  tableId: glitter.getUUID(),
@@ -134,10 +132,10 @@ export class PermissionSetting {
134
132
  },
135
133
  dataList: [],
136
134
  filter: {},
137
- }
138
- return a
139
- }else {
140
- return {
135
+ };
136
+ return a;
137
+ } else {
138
+ return {
141
139
  id: glitter.getUUID(),
142
140
  filterId: glitter.getUUID(),
143
141
  tableId: glitter.getUUID(),
@@ -165,7 +163,7 @@ export class PermissionSetting {
165
163
  },
166
164
  dataList: [],
167
165
  filter: {},
168
- }
166
+ };
169
167
  }
170
168
  }
171
169
  const vm: any = getInitialData();
@@ -176,40 +174,13 @@ export class PermissionSetting {
176
174
  function getDatalist() {
177
175
  return vm.dataList.map((dd: any) => {
178
176
  return [
179
- {
180
- key: EditorElem.checkBoxOnly({
181
- gvc: gvc,
182
- def: !vm.dataList.find((dd: any) => {
183
- return !dd.checked;
184
- }),
185
- callback: (result) => {
186
- vm.dataList.map((dd: any) => {
187
- dd.checked = result;
188
- });
189
- vmi.data = getDatalist();
190
- vmi.callback();
191
- gvc.notifyDataChange(vm.filterId);
192
- },
193
- }),
194
- value: EditorElem.checkBoxOnly({
195
- gvc: gvc,
196
- def: dd.checked,
197
- callback: (result) => {
198
- dd.checked = result;
199
- vmi.data = getDatalist();
200
- vmi.callback();
201
- gvc.notifyDataChange(vm.filterId);
202
- },
203
- style: 'height:25px;',
204
- }),
205
- },
206
177
  {
207
178
  key: '員工名稱',
208
179
  value: `<span class="fs-7">${dd.config.name}</span>`,
209
180
  },
210
181
  {
211
182
  key: '信箱帳號',
212
- value: dd.email||dd.config.verifyEmail ? `<span class="fs-7">${dd.email||dd.config.verifyEmail}</span>` : BgWidget.warningInsignia('信箱尚未註冊'),
183
+ value: dd.email || dd.config.verifyEmail ? `<span class="fs-7">${dd.email || dd.config.verifyEmail}</span>` : BgWidget.warningInsignia('信箱尚未註冊'),
213
184
  },
214
185
  {
215
186
  key: '電話',
@@ -219,14 +190,16 @@ export class PermissionSetting {
219
190
  key: '職稱',
220
191
  value: `<span class="fs-7">${dd.config.title}</span>`,
221
192
  },
222
- ...(()=>{
223
- if(edit_mode==='pos'){
224
- return []
225
- }else{
226
- return [ {
227
- key: '最後登入',
228
- value: dd.online_time ? html`<span class="fs-7">${glitter.ut.dateFormat(new Date(dd.online_time), 'yyyy-MM-dd hh:mm')}</span>` : '...',
229
- },]
193
+ ...(() => {
194
+ if (edit_mode === 'pos') {
195
+ return [];
196
+ } else {
197
+ return [
198
+ {
199
+ key: '最後登入',
200
+ value: dd.online_time ? html`<span class="fs-7">${glitter.ut.dateFormat(new Date(dd.online_time), 'yyyy-MM-dd hh:mm')}</span>` : '...',
201
+ },
202
+ ];
230
203
  }
231
204
  })(),
232
205
  {
@@ -270,14 +243,16 @@ export class PermissionSetting {
270
243
  })()
271
244
  ),
272
245
  },
273
- ...(()=>{
274
- if(edit_mode==='pos'){
275
- return []
276
- }else{
277
- return [ {
278
- key: '邀請狀態',
279
- value: dd.invited ? BgWidget.infoInsignia('已接受') : BgWidget.notifyInsignia('邀請中'),
280
- }]
246
+ ...(() => {
247
+ if (edit_mode === 'pos') {
248
+ return [];
249
+ } else {
250
+ return [
251
+ {
252
+ key: '邀請狀態',
253
+ value: dd.invited ? BgWidget.infoInsignia('已接受') : BgWidget.notifyInsignia('邀請中'),
254
+ },
255
+ ];
281
256
  }
282
257
  })(),
283
258
  ];
@@ -288,7 +263,6 @@ export class PermissionSetting {
288
263
  bind: vm.id,
289
264
  dataList: [{ obj: vm, key: 'type' }],
290
265
  view: () => {
291
-
292
266
  if (vm.type === 'list') {
293
267
  return BgWidget.container(
294
268
  html` <div class="d-flex w-100 align-items-center mb-3 mb-sm-3" style="gap: 14px;">
@@ -302,7 +276,7 @@ export class PermissionSetting {
302
276
  })
303
277
  )}
304
278
  </div>
305
-
279
+
306
280
  ${BgWidget.mainCard(
307
281
  [
308
282
  (() => {
@@ -370,7 +344,7 @@ export class PermissionSetting {
370
344
  gvc.bindView({
371
345
  bind: vm.tableId,
372
346
  view: () => {
373
- return BgWidget.tableV2({
347
+ return BgWidget.tableV3({
374
348
  gvc: gvc,
375
349
  getData: (vd) => {
376
350
  vmi = vd;
@@ -383,9 +357,11 @@ export class PermissionSetting {
383
357
  orderBy: vm.orderString,
384
358
  filter: vm.filter,
385
359
  }).then((data) => {
386
- vmi.pageSize = Math.ceil(data.response.total / limit);
387
360
  vm.dataList = data.response.data;
388
- vmi.data = getDatalist();
361
+ vmi.pageSize = Math.ceil(data.response.total / limit);
362
+ vmi.originalData = vm.dataList;
363
+ vmi.tableData = getDatalist();
364
+ vmi.loading = false;
389
365
  vmi.callback();
390
366
  });
391
367
  },
@@ -393,71 +369,53 @@ export class PermissionSetting {
393
369
  vm.data = vm.dataList[index];
394
370
  vm.type = 'replace';
395
371
  },
396
- filter: gvc.bindView(() => {
397
- return {
398
- bind: vm.filterId,
399
- view: () => {
372
+ filter: [
373
+ {
374
+ name: '批量刪除',
375
+ event: () => {
400
376
  const dialog = new ShareDialog(gvc.glitter);
401
- const selCount = vm.dataList.filter((dd: any) => dd.checked).length;
402
- return BgWidget.selNavbar({
403
- count: selCount,
404
- buttonList: [
405
- BgWidget.selEventButton(
406
- '批量刪除',
407
- gvc.event(() => {
408
- dialog.warningMessage({
409
- text: '您即將批量刪除所選員工的所有資料<br />此操作無法復原。確定要刪除嗎?',
410
- callback: (response) => {
411
- if (response) {
412
- let n = 0;
413
- const emails = vm.dataList
414
- .filter((dd: any) => {
415
- return dd.checked;
416
- })
417
- .map((dd: any) => {
418
- return dd.email || dd.config.verifyEmail;
419
- });
377
+ dialog.warningMessage({
378
+ text: '您即將批量刪除所選員工的所有資料<br />此操作無法復原。確定要刪除嗎?',
379
+ callback: (response) => {
380
+ if (response) {
381
+ let n = 0;
382
+ const emails = vm.dataList
383
+ .filter((dd: any) => {
384
+ return dd.checked;
385
+ })
386
+ .map((dd: any) => {
387
+ return dd.email || dd.config.verifyEmail;
388
+ });
420
389
 
421
- dialog.dataLoading({ visible: true });
422
- new Promise<void>((resolve, reject) => {
423
- for (const email of emails) {
424
- ApiUser.deletePermission(email).then((res) => {
425
- if (res.result && res.response.result) {
426
- if (++n === emails.length) {
427
- resolve();
428
- }
429
- } else {
430
- dialog.dataLoading({ visible: false });
431
- dialog.errorMessage({ text: '刪除失敗' });
432
- reject();
433
- }
434
- });
435
- }
436
- }).then(() => {
437
- dialog.dataLoading({ visible: false });
438
- dialog.successMessage({ text: '刪除成功' });
439
- setTimeout(() => {
440
- vm.dataList = undefined;
441
- gvc.notifyDataChange(vm.id);
442
- }, 400);
443
- });
390
+ dialog.dataLoading({ visible: true });
391
+ new Promise<void>((resolve, reject) => {
392
+ for (const email of emails) {
393
+ ApiUser.deletePermission(email).then((res) => {
394
+ if (res.result && res.response.result) {
395
+ if (++n === emails.length) {
396
+ resolve();
397
+ }
398
+ } else {
399
+ dialog.dataLoading({ visible: false });
400
+ dialog.errorMessage({ text: '刪除失敗' });
401
+ reject();
444
402
  }
445
- },
446
- });
447
- })
448
- ),
449
- ],
403
+ });
404
+ }
405
+ }).then(() => {
406
+ dialog.dataLoading({ visible: false });
407
+ dialog.successMessage({ text: '刪除成功' });
408
+ setTimeout(() => {
409
+ vm.dataList = undefined;
410
+ gvc.notifyDataChange(vm.id);
411
+ }, 300);
412
+ });
413
+ }
414
+ },
450
415
  });
451
416
  },
452
- divCreate: () => {
453
- const display = !vm.dataList || !vm.dataList.find((dd: any) => dd.checked) ? 'd-none' : '';
454
- return {
455
- class: `d-flex align-items-center p-2 ${display}`,
456
- style: ``,
457
- };
458
- },
459
- };
460
- }),
417
+ },
418
+ ],
461
419
  });
462
420
  },
463
421
  }),
@@ -466,35 +424,33 @@ export class PermissionSetting {
466
424
  BgWidget.getContainerWidth()
467
425
  );
468
426
  } else if (vm.type == 'replace') {
469
- if(edit_mode==='pos'){
427
+ if (edit_mode === 'pos') {
470
428
  return this.editorDetailPos({
471
429
  vm: vm,
472
430
  gvc: gvc,
473
- type: 'replace'
431
+ type: 'replace',
474
432
  });
475
- }else{
433
+ } else {
476
434
  return this.editorDetail({
477
435
  vm: vm,
478
436
  gvc: gvc,
479
- type: 'replace'
437
+ type: 'replace',
480
438
  });
481
439
  }
482
-
483
440
  }
484
- if(edit_mode==='pos'){
441
+ if (edit_mode === 'pos') {
485
442
  return this.editorDetailPos({
486
443
  vm: vm,
487
444
  gvc: gvc,
488
- type: 'add'
445
+ type: 'add',
489
446
  });
490
- }else{
447
+ } else {
491
448
  return this.editorDetail({
492
449
  vm: vm,
493
450
  gvc: gvc,
494
- type: 'add'
451
+ type: 'add',
495
452
  });
496
453
  }
497
-
498
454
  },
499
455
  });
500
456
  }
@@ -591,9 +547,11 @@ export class PermissionSetting {
591
547
  ),
592
548
  BgWidget.mainCard(html` <div class="tx_700">權限指派</div>
593
549
  ${BgWidget.mbContainer(18)} ${this.permissionOptions(gvc, vm.data.config.auth)}`),
594
- ].filter((dd)=>{
595
- return dd
596
- }).join(BgWidget.mbContainer(24)),
550
+ ]
551
+ .filter((dd) => {
552
+ return dd;
553
+ })
554
+ .join(BgWidget.mbContainer(24)),
597
555
  // 空白容器
598
556
  BgWidget.mbContainer(240),
599
557
  // 儲存資料
@@ -684,7 +642,7 @@ export class PermissionSetting {
684
642
  });
685
643
  }
686
644
 
687
- static editorDetailPos(obj: { vm: PosViewModel; gvc: GVC; type: string}) {
645
+ static editorDetailPos(obj: { vm: PosViewModel; gvc: GVC; type: string }) {
688
646
  const html = String.raw;
689
647
  const gvc = obj.gvc;
690
648
  const vm = obj.vm;
@@ -695,16 +653,15 @@ export class PermissionSetting {
695
653
  return {
696
654
  bind: viewID,
697
655
  view: () => {
698
-
699
656
  return BgWidget.container(
700
657
  [
701
658
  // 上層導覽
702
659
  html` <div class="d-flex w-100 align-items-center ">
703
660
  ${BgWidget.goBack(
704
- gvc.event(() => {
705
- vm.type = 'list';
706
- })
707
- )}
661
+ gvc.event(() => {
662
+ vm.type = 'list';
663
+ })
664
+ )}
708
665
  ${BgWidget.title(obj.type === 'add' ? '新增員工' : '編輯員工')}
709
666
  </div>`,
710
667
  [
@@ -715,8 +672,8 @@ export class PermissionSetting {
715
672
  <div class="d-flex align-items-center gap-2">
716
673
  <div class="tx_normal">存取權開啟</div>
717
674
  ${BgWidget.switchButton(gvc, vm.data.status === 1, () => {
718
- vm.data.status = (vm.data.status - 1) * -1;
719
- })}
675
+ vm.data.status = (vm.data.status - 1) * -1;
676
+ })}
720
677
  </div>
721
678
  ${BgWidget.grayNote('一鍵開啟或關閉此員工的登入存取權,停用後員工將無法登入店家管理後台。')}
722
679
  `)
@@ -727,24 +684,24 @@ export class PermissionSetting {
727
684
  ${BgWidget.mbContainer(18)}
728
685
  <div class="row">
729
686
  ${[
730
- BgWidget.editeInput({
731
- gvc: gvc,
732
- title: '員工名稱',
733
- placeHolder: `請輸入員工名稱`,
734
- default: vm.data.config.name,
735
- callback: (text) => {
736
- vm.data.config.name = text;
737
- },
738
- }),
739
- BgWidget.editeInput({
740
- gvc: gvc,
741
- title: '職稱',
742
- placeHolder: `請輸入職稱`,
743
- default: vm.data.config.title,
744
- callback: (text) => {
745
- vm.data.config.title = text;
746
- },
747
- }),
687
+ BgWidget.editeInput({
688
+ gvc: gvc,
689
+ title: '員工名稱',
690
+ placeHolder: `請輸入員工名稱`,
691
+ default: vm.data.config.name,
692
+ callback: (text) => {
693
+ vm.data.config.name = text;
694
+ },
695
+ }),
696
+ BgWidget.editeInput({
697
+ gvc: gvc,
698
+ title: '職稱',
699
+ placeHolder: `請輸入職稱`,
700
+ default: vm.data.config.title,
701
+ callback: (text) => {
702
+ vm.data.config.title = text;
703
+ },
704
+ }),
748
705
  BgWidget.editeInput({
749
706
  gvc: gvc,
750
707
  title: '電話',
@@ -764,136 +721,137 @@ export class PermissionSetting {
764
721
  },
765
722
  readonly: obj.type === 'replace',
766
723
  }),
767
- BgWidget.editeInput({
768
- gvc: gvc,
769
- title: '員工編號',
770
- placeHolder: '此員工編號會用作POS登入帳號',
771
- default: vm.data.config.member_id,
772
- callback: (text) => {
773
- vm.data.config.member_id = text;
774
- }
775
- }),
776
- BgWidget.editeInput({
777
- gvc: gvc,
778
- title: 'PIN碼',
779
- type:'number',
780
- placeHolder: `此PIN碼會用作員工登入密碼`,
781
- default: vm.data.config.pin,
782
- callback: (text) => {
783
- vm.data.config.pin = text;
784
- },
785
- pattern:"0-9",
786
- oninput:(text)=>{
787
-
788
- if(text.length>=6){
789
- text.substring(0,6)
790
- vm.data.config.pin = text;
791
- gvc.notifyDataChange(viewID)
792
- }
793
- }
794
- }),
795
- ]
796
- .filter((str) => {
797
- return str.length > 0;
798
- })
799
- .map((str) => {
800
- return html`<div class="col-12 col-md-6">${str}</div>`;
801
- })
802
- .join('')}
724
+ BgWidget.editeInput({
725
+ gvc: gvc,
726
+ title: '員工編號',
727
+ placeHolder: '此員工編號會用作POS登入帳號',
728
+ default: vm.data.config.member_id,
729
+ callback: (text) => {
730
+ vm.data.config.member_id = text;
731
+ },
732
+ }),
733
+ BgWidget.editeInput({
734
+ gvc: gvc,
735
+ title: 'PIN碼',
736
+ type: 'number',
737
+ placeHolder: `此PIN碼會用作員工登入密碼`,
738
+ default: vm.data.config.pin,
739
+ callback: (text) => {
740
+ vm.data.config.pin = text;
741
+ },
742
+ pattern: '0-9',
743
+ oninput: (text) => {
744
+ if (text.length >= 6) {
745
+ text.substring(0, 6);
746
+ vm.data.config.pin = text;
747
+ gvc.notifyDataChange(viewID);
748
+ }
749
+ },
750
+ }),
751
+ ]
752
+ .filter((str) => {
753
+ return str.length > 0;
754
+ })
755
+ .map((str) => {
756
+ return html`<div class="col-12 col-md-6">${str}</div>`;
757
+ })
758
+ .join('')}
803
759
  </div>
804
760
  `
805
- )
806
- ].filter((dd)=>{
807
- return dd
808
- }).join(BgWidget.mbContainer(24)),
761
+ ),
762
+ ]
763
+ .filter((dd) => {
764
+ return dd;
765
+ })
766
+ .join(BgWidget.mbContainer(24)),
809
767
  // 空白容器
810
768
  BgWidget.mbContainer(240),
811
769
  // 儲存資料
812
770
  html` <div class="update-bar-container">
813
771
  ${obj.type === 'replace'
814
- ? BgWidget.redButton(
815
- '移除此員工',
772
+ ? BgWidget.redButton(
773
+ '移除此員工',
774
+ gvc.event(() => {
775
+ dialog.warningMessage({
776
+ text: '此動作無法復原,確定要刪除此員工嗎?',
777
+ callback: (bool) => {
778
+ if (bool) {
779
+ dialog.dataLoading({ visible: true });
780
+ ApiUser.deletePermission(vm.data.email || (vm.data.config as any).verifyEmail).then((res) => {
781
+ dialog.dataLoading({ visible: false });
782
+ if (res.result && res.response.result) {
783
+ dialog.successMessage({ text: '刪除成功' });
784
+ vm.type = 'list';
785
+ } else {
786
+ dialog.errorMessage({ text: '刪除失敗' });
787
+ }
788
+ });
789
+ }
790
+ },
791
+ });
792
+ })
793
+ )
794
+ : ''}
795
+ ${BgWidget.cancel(
816
796
  gvc.event(() => {
817
- dialog.warningMessage({
818
- text: '此動作無法復原,確定要刪除此員工嗎?',
819
- callback: (bool) => {
820
- if (bool) {
821
- dialog.dataLoading({ visible: true });
822
- ApiUser.deletePermission(vm.data.email || (vm.data.config as any).verifyEmail).then((res) => {
823
- dialog.dataLoading({ visible: false });
824
- if (res.result && res.response.result) {
825
- dialog.successMessage({ text: '刪除成功' });
826
- vm.type = 'list';
827
- } else {
828
- dialog.errorMessage({ text: '刪除失敗' });
829
- }
830
- });
831
- }
832
- },
833
- });
797
+ vm.type = 'list';
834
798
  })
835
- )
836
- : ''}
837
- ${BgWidget.cancel(
838
- gvc.event(() => {
839
- vm.type = 'list';
840
- })
841
- )}
799
+ )}
842
800
  ${BgWidget.save(
843
- gvc.event(() => {
844
- if (CheckInput.isEmpty(vm.data.config.name)) {
845
- dialog.infoMessage({ text: '員工名稱不可為空' });
846
- return;
847
- }
848
- if (CheckInput.isEmpty(vm.data.config.title)) {
849
- dialog.infoMessage({ text: '職稱不可為空' });
850
- return;
851
- }
852
- if (obj.type === 'add' && !CheckInput.isEmail(vm.data.email)) {
853
- dialog.infoMessage({ text: '信箱格式錯誤' });
854
- return;
855
- }
856
- if (CheckInput.isEmpty(vm.data.config.phone)) {
857
- dialog.infoMessage({ text: '電話不可為空' });
858
- return;
859
- }
860
- if(CheckInput.isEmpty( vm.data.config.pin)){
861
- dialog.infoMessage({ text: 'PIN不可為空' });
862
- return;
863
- }else if(vm.data.config.pin.length<6){
864
- dialog.infoMessage({ text: 'PIN碼長度需等於6' });
865
- return;
866
- }else if(!(/^[0-9]+$/.test(vm.data.config.pin))){
867
- dialog.infoMessage({ text: 'PIN碼只能包含數字' });
868
- return;
869
- }
870
-
871
- if (!CheckInput.isTaiwanPhone(vm.data.config.phone)) {
872
- dialog.infoMessage({ text: BgWidget.taiwanPhoneAlert() });
873
- return;
874
- }
801
+ gvc.event(() => {
802
+ if (CheckInput.isEmpty(vm.data.config.name)) {
803
+ dialog.infoMessage({ text: '員工名稱不可為空' });
804
+ return;
805
+ }
806
+ if (CheckInput.isEmpty(vm.data.config.title)) {
807
+ dialog.infoMessage({ text: '職稱不可為空' });
808
+ return;
809
+ }
810
+ if (obj.type === 'add' && !CheckInput.isEmail(vm.data.email)) {
811
+ dialog.infoMessage({ text: '信箱格式錯誤' });
812
+ return;
813
+ }
814
+ if (CheckInput.isEmpty(vm.data.config.phone)) {
815
+ dialog.infoMessage({ text: '電話不可為空' });
816
+ return;
817
+ }
818
+ if (CheckInput.isEmpty(vm.data.config.pin)) {
819
+ dialog.infoMessage({ text: 'PIN不可為空' });
820
+ return;
821
+ } else if (vm.data.config.pin.length < 6) {
822
+ dialog.infoMessage({ text: 'PIN碼長度需等於6' });
823
+ return;
824
+ } else if (!/^[0-9]+$/.test(vm.data.config.pin)) {
825
+ dialog.infoMessage({ text: 'PIN碼只能包含數字' });
826
+ return;
827
+ }
828
+
829
+ if (!CheckInput.isTaiwanPhone(vm.data.config.phone)) {
830
+ dialog.infoMessage({ text: BgWidget.taiwanPhoneAlert() });
831
+ return;
832
+ }
875
833
 
876
- dialog.dataLoading({ visible: true });
877
- vm.data.config.come_from='pos'
878
- ApiUser.setPermission({
879
- email: obj.type === 'add' ? vm.data.email : original.email,
880
- config: vm.data.config,
881
- status: vm.data.status
882
- }).then((res) => {
883
- dialog.dataLoading({ visible: false });
884
- if (res.result) {
885
- if (res.response.result) {
886
- vm.type = 'list';
887
- dialog.successMessage({ text: '更新成功' });
834
+ dialog.dataLoading({ visible: true });
835
+ vm.data.config.come_from = 'pos';
836
+ ApiUser.setPermission({
837
+ email: obj.type === 'add' ? vm.data.email : original.email,
838
+ config: vm.data.config,
839
+ status: vm.data.status,
840
+ }).then((res) => {
841
+ dialog.dataLoading({ visible: false });
842
+ if (res.result) {
843
+ if (res.response.result) {
844
+ vm.type = 'list';
845
+ dialog.successMessage({ text: '更新成功' });
846
+ } else {
847
+ dialog.errorMessage({ text: res.response.message });
848
+ }
888
849
  } else {
889
- dialog.errorMessage({ text: res.response.message });
850
+ dialog.errorMessage({ text: '更新失敗' });
890
851
  }
891
- } else {
892
- dialog.errorMessage({ text: '更新失敗' });
893
- }
894
- });
895
- })
896
- )}
852
+ });
853
+ })
854
+ )}
897
855
  </div>`,
898
856
  ].join(html`<div style="margin-top: 24px;"></div>`),
899
857
  BgWidget.getContainerWidth() / (document.body.clientWidth > 768 ? 1.25 : 1)