ts-glitter 13.6.4 → 13.6.5

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 (60) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/backend-manager/bg-customer-message.js +338 -47
  4. package/lowcode/backend-manager/bg-customer-message.ts +351 -52
  5. package/lowcode/backend-manager/bg-widget.js +2 -2
  6. package/lowcode/backend-manager/bg-widget.ts +2 -2
  7. package/lowcode/cms-plugin/auto-reply.js +9 -9
  8. package/lowcode/cms-plugin/auto-reply.ts +9 -9
  9. package/lowcode/cms-plugin/customer-message-user.js +4 -3
  10. package/lowcode/cms-plugin/customer-message-user.ts +4 -3
  11. package/lowcode/cms-plugin/filter-options.js +1 -1
  12. package/lowcode/cms-plugin/filter-options.ts +1 -1
  13. package/lowcode/cms-plugin/line-auto-reply.js +1 -1
  14. package/lowcode/cms-plugin/line-auto-reply.ts +1 -1
  15. package/lowcode/cms-plugin/shopping-finance-setting.js +1 -1
  16. package/lowcode/cms-plugin/shopping-finance-setting.ts +1 -1
  17. package/lowcode/cms-plugin/sns-auto-reply.js +8 -8
  18. package/lowcode/cms-plugin/sns-auto-reply.ts +8 -8
  19. package/lowcode/glitterBundle/module/html-generate.js +1 -1
  20. package/lowcode/glitterBundle/module/html-generate.ts +1 -1
  21. package/lowcode/jspage/editor.ts +496 -496
  22. package/lowcode/view-model/saas-view-model.js +7 -7
  23. package/lowcode/view-model/saas-view-model.ts +7 -7
  24. package/package.json +1 -1
  25. package/src/api-public/controllers/ai-chat.js.map +1 -1
  26. package/src/api-public/controllers/ai-chat.ts +2 -0
  27. package/src/api-public/services/ai-robot.d.ts +5 -0
  28. package/src/api-public/services/ai-robot.js +182 -3
  29. package/src/api-public/services/ai-robot.js.map +1 -1
  30. package/src/api-public/services/ai-robot.ts +174 -0
  31. package/src/api-public/services/auto-send-email.js +24 -24
  32. package/src/api-public/services/auto-send-email.js.map +1 -1
  33. package/src/api-public/services/auto-send-email.ts +24 -24
  34. package/src/api-public/services/chat.d.ts +2 -0
  35. package/src/api-public/services/chat.js +63 -55
  36. package/src/api-public/services/chat.js.map +1 -1
  37. package/src/api-public/services/chat.ts +115 -105
  38. package/src/api-public/services/line-message.js +68 -61
  39. package/src/api-public/services/line-message.js.map +1 -1
  40. package/src/api-public/services/line-message.ts +203 -211
  41. package/src/api-public/services/notify.d.ts +15 -6
  42. package/src/api-public/services/notify.js +360 -216
  43. package/src/api-public/services/notify.js.map +1 -1
  44. package/src/api-public/services/notify.ts +395 -222
  45. package/src/api-public/services/post.js +2 -9
  46. package/src/api-public/services/post.js.map +1 -1
  47. package/src/api-public/services/post.ts +2 -13
  48. package/src/api-public/services/public-table-check.js +14 -6
  49. package/src/api-public/services/public-table-check.js.map +1 -1
  50. package/src/api-public/services/public-table-check.ts +21 -11
  51. package/src/api-public/services/shopping.js +1 -1
  52. package/src/api-public/services/shopping.js.map +1 -1
  53. package/src/api-public/services/shopping.ts +1 -3
  54. package/src/api-public/services/sms.js +28 -24
  55. package/src/api-public/services/sms.js.map +1 -1
  56. package/src/api-public/services/sms.ts +112 -123
  57. package/src/api-public/services/user.js +5 -5
  58. package/src/api-public/services/user.js.map +1 -1
  59. package/src/api-public/services/user.ts +6 -6
  60. package/src/services/template.js.map +1 -1
@@ -137,7 +137,7 @@ export class BgCustomerMessage {
137
137
  gvc,
138
138
  title: '提示',
139
139
  innerHTML: () => {
140
- return `<div class="w-100" style="white-space:normal;word-break: break-all;">${BgWidget.grayNote([`*單一後台即可管理各渠道訊息`, `*前往第三方整合設定,設定Line與Facebook官方訊息串接`, `*為確保訊息同步,請統一透過SHOPNEX後台發送訊息`].map((dd) => {
140
+ return `<div class="w-100" style="white-space:normal;word-break: break-all;">${BgWidget.grayNote([`*單一後台即可管理各渠道訊息`, `*前往第三方整合設定,設定Line與Facebook官方訊息串接`, `*為確保訊息同步,請統一透過SHOPNEX後台發送訊息`].map((dd) => {
141
141
  return `<div style="letter-spacing: 1.2px;white-space:normal;word-break: break-all;">${dd}</div>`
142
142
  }).join('<div class="my-1"></div>'))}</div>`
143
143
  },
@@ -399,53 +399,347 @@ export class BgCustomerMessage {
399
399
  </div>
400
400
  ${BgWidget.switchButton(gvc, keyData.toggle, (bool) => {
401
401
  keyData.toggle = bool;
402
+ gvc.notifyDataChange(vO.id)
402
403
  })}
403
404
  </div>`,
404
- BgWidget.editeInput({
405
- gvc: gvc,
406
- title: '客服名稱',
407
- type: 'name',
408
- placeHolder: `請輸入客服名稱`,
409
- default: keyData.name,
410
- callback: (text) => {
411
- keyData.name = text;
412
- },
413
- }),
414
- EditorElem.uploadImage({
415
- title: '大頭照',
416
- gvc: gvc,
417
- def: keyData.head || '',
418
- callback: (text: string) => {
419
- keyData.head = text;
420
- },
421
- }),
422
- EditorElem.colorSelect({
423
- gvc: gvc,
424
- title: '設定主色調',
425
- def: keyData.color,
426
- callback: (text) => {
427
- keyData.color = text;
428
- gvc.notifyDataChange(vO.id)
429
- },
430
- }),
431
- BgWidget.editeInput({
432
- gvc: gvc,
433
- title: '置頂標題',
434
- placeHolder: `請輸入置頂標題`,
435
- default: keyData.title,
436
- callback: (text) => {
437
- keyData.title = text;
438
- },
439
- }),
440
- BgWidget.textArea({
441
- gvc: gvc,
442
- title: '置頂內文',
443
- placeHolder: `請輸入置頂內文`,
444
- default: keyData.content,
445
- callback: (text) => {
446
- keyData.content = text;
447
- },
448
- }),
405
+ ...(() => {
406
+ if (keyData.toggle) {
407
+ return [
408
+ gvc.bindView(() => {
409
+ keyData.ask_manual_keyword=keyData.ask_manual_keyword||'真人客服'
410
+ keyData.ask_ai_keyword=keyData.ask_ai_keyword||'AI客服'
411
+ const cid = gvc.glitter.getUUID()
412
+ return {
413
+ bind: cid,
414
+ view: () => {
415
+ return html`
416
+ <div class="d-flex flex-column"
417
+ style="gap:5px;">
418
+ <div class="tx_normal fw-normal"
419
+ style="">AI客服機器人
420
+ </div>
421
+ <div class="d-flex">
422
+ ${BgWidget.switchButton(gvc, keyData.ai_toggle, (bool) => {
423
+ keyData.ai_toggle = bool;
424
+ gvc.notifyDataChange(cid)
425
+ })}
426
+ ${keyData.ai_toggle ? `啟用` : `關閉`}
427
+ </div>
428
+ ${keyData.ai_toggle ? html`
429
+ <div class="mt-2 d-flex align-items-center"
430
+ style="gap:10px;">
431
+ ${BgWidget.grayButton('AI 問答設定', gvc.event(async () => {
432
+ let keyData = (await ApiUser.getPublicConfig(`robot_ai_reply`, 'manager')).response.value || {};
433
+ BgWidget.settingDialog({
434
+ gvc: gvc,
435
+ title: 'AI問答設定',
436
+ innerHTML: (gvc) => {
437
+ return gvc.bindView(() => {
438
+ const id = gvc.glitter.getUUID();
439
+ const html = String.raw;
440
+ return {
441
+ bind: id,
442
+ view: () => {
443
+ if (Array.isArray(keyData)) {
444
+ keyData = {};
445
+ }
446
+ keyData.question = keyData.question ?? []
447
+ const parId = gvc.glitter.getUUID()
448
+ const id = gvc.glitter.getUUID()
449
+
450
+ function refresh() {
451
+ gvc.notifyDataChange(id)
452
+ }
453
+
454
+ return html`
455
+ ${BgWidget.alertInfo('', [
456
+ `<span class="fw-500 fs-6">*當AI判斷,客戶提出的問題與你設定的問題有關聯的話,將會直接回答你設定的回覆內容。</span>`,
457
+ `<span class="fw-500 fs-6">*建議設定多個問答項目,來提升機器人客服的妥善率。</span>`,
458
+ ], {
459
+ class: 'p-2',
460
+ style: ``
461
+ })}
462
+ <div style=""
463
+ class="p-2">
464
+
465
+ ${gvc.bindView(() => {
466
+ return {
467
+ bind: id,
468
+ view: () => {
469
+ return (keyData.question || []).map((d2: any, index: number) => {
470
+ return html`
471
+ <li onclick="${gvc.event(() => {
472
+ const copy = JSON.parse(JSON.stringify(d2))
473
+ BgWidget.settingDialog({
474
+ gvc: gvc,
475
+ title: '設定問答',
476
+ innerHTML: (gvc) => {
477
+ return [BgWidget.editeInput({
478
+ gvc: gvc,
479
+ title: '問題',
480
+ placeHolder: `請輸入問題`,
481
+ default: copy.ask,
482
+ callback: (text) => {
483
+ copy.ask = text;
484
+ },
485
+ }), BgWidget.textArea({
486
+ gvc: gvc,
487
+ title: '回答',
488
+ placeHolder: `請輸入回答`,
489
+ default: copy.response,
490
+ callback: (text) => {
491
+ copy.response = text;
492
+ },
493
+ })].map((dd) => {
494
+ return `<div>${dd}</div>`
495
+ }).join('')
496
+ },
497
+ footer_html: (gvc) => {
498
+ return [
499
+ BgWidget.cancel(gvc.event(() => {
500
+ gvc.closeDialog()
501
+ })),
502
+ BgWidget.save(gvc.event(() => {
503
+ refresh()
504
+ gvc.closeDialog()
505
+ }))
506
+ ].join(``)
507
+ }
508
+ })
509
+ })}">
510
+ <div class="w-100 fw-500 d-flex align-items-center fs-6 hoverBtn h_item rounded px-2 hoverF2 mb-1 subComponentGuide"
511
+ style="gap:5px;color:#393939;">
512
+ <div class=" p-1 dragItem ">
513
+ <i class="fa-solid fa-grip-dots-vertical d-flex align-items-center justify-content-center "
514
+ style="width:15px;height:15px;"
515
+ aria-hidden="true"></i>
516
+ </div>
517
+ <span style="max-width:calc(100% - 60px);text-overflow: ellipsis;white-space: nowrap;overflow: hidden;">${d2.ask}</span>
518
+ <div class="flex-fill"></div>
519
+ <div class="hoverBtn p-1 child"
520
+ onclick="${gvc.event((e, event) => {
521
+ event.stopPropagation();
522
+ event.preventDefault();
523
+ dialog.checkYesOrNot({
524
+ text: '是否確認移除問答?',
525
+ callback: (response) => {
526
+ if (response) {
527
+ keyData.question.splice(index, 1)
528
+ gvc.notifyDataChange(id)
529
+ }
530
+ }
531
+ })
532
+ })}">
533
+ <i class="fa-regular fa-trash d-flex align-items-center justify-content-center "
534
+ aria-hidden="true"></i>
535
+ </div>
536
+ </div>
537
+ </li>`
538
+ }).join('')
539
+ },
540
+ divCreate: {
541
+ class: `mx-n2`,
542
+ elem: 'ul',
543
+ option: [{
544
+ key: 'id',
545
+ value: parId
546
+ }],
547
+ },
548
+ onCreate: () => {
549
+ gvc.glitter.addMtScript(
550
+ [
551
+ {
552
+ src: `https://raw.githack.com/SortableJS/Sortable/master/Sortable.js`,
553
+ },
554
+ ],
555
+ () => {
556
+ const interval = setInterval(() => {
557
+ if ((window as any).Sortable) {
558
+ try {
559
+ gvc.addStyle(`
560
+ ul {
561
+ list-style: none;
562
+ padding: 0;
563
+ }
564
+ `);
565
+
566
+ function swapArr(arr: any, index1: number, index2: number) {
567
+ const data = arr[index1];
568
+ arr.splice(index1, 1);
569
+ arr.splice(index2, 0, data);
570
+ }
571
+
572
+ let startIndex = 0;
573
+ //@ts-ignore
574
+ Sortable.create(gvc.glitter.document.getElementById(parId), {
575
+ handle: '.dragItem',
576
+ group: gvc.glitter.getUUID(),
577
+
578
+ animation: 100,
579
+ onChange: function (evt: any) {
580
+ swapArr(keyData.question, startIndex, evt.newIndex);
581
+ const newIndex = evt.newIndex
582
+ startIndex = newIndex
583
+ },
584
+ onEnd: (evt: any) => {
585
+
586
+ },
587
+ onStart: function (evt: any) {
588
+ startIndex = evt.oldIndex;
589
+ },
590
+ });
591
+ } catch (e) {
592
+ }
593
+ clearInterval(interval);
594
+ }
595
+ }, 100);
596
+ },
597
+ () => {
598
+ }
599
+ );
600
+ }
601
+ }
602
+ })}
603
+ <div class="w-100"
604
+ style="justify-content: center; align-items: center; gap: 4px; display: flex;color: #3366BB;cursor: pointer;"
605
+ data-bs-toggle="dropdown"
606
+ aria-haspopup="true"
607
+ aria-expanded="false"
608
+ onclick="${gvc.event(() => {
609
+ const copy = {
610
+ ask: '',
611
+ response: ''
612
+ }
613
+ BgWidget.settingDialog({
614
+ gvc: gvc,
615
+ title: '設定問答',
616
+ innerHTML: (gvc) => {
617
+ return [BgWidget.editeInput({
618
+ gvc: gvc,
619
+ title: '問題',
620
+ placeHolder: `請輸入問題`,
621
+ default: copy.ask,
622
+ callback: (text) => {
623
+ copy.ask = text;
624
+ },
625
+ }), BgWidget.textArea({
626
+ gvc: gvc,
627
+ title: '回答',
628
+ placeHolder: `請輸入回答`,
629
+ default: copy.response,
630
+ callback: (text) => {
631
+ copy.response = text;
632
+ },
633
+ })].map((dd) => {
634
+ return `<div>${dd}</div>`
635
+ }).join('')
636
+ },
637
+ footer_html: (gvc) => {
638
+ return [
639
+ BgWidget.cancel(gvc.event(() => {
640
+ gvc.closeDialog()
641
+ })),
642
+ BgWidget.save(gvc.event(() => {
643
+ if (!copy.ask || !copy.response) {
644
+ dialog.errorMessage({text: '內容不得為空'})
645
+ return
646
+ }
647
+ keyData.question.push(copy)
648
+ refresh()
649
+ gvc.closeDialog()
650
+ }))
651
+ ].join(``)
652
+ }
653
+ })
654
+ })}">
655
+ <div style="font-size: 16px; font-family: Noto Sans; font-weight: 400; word-wrap: break-word">
656
+ 新增一則問答
657
+ </div>
658
+ <i class="fa-solid fa-plus"
659
+ aria-hidden="true"></i>
660
+ </div>
661
+ </div>
662
+ `
663
+ },
664
+ divCreate: {
665
+ class: `m-n2`,
666
+ },
667
+ };
668
+ })
669
+ },
670
+ footer_html: (gvc) => {
671
+ return [BgWidget.cancel(gvc.event(() => {
672
+ gvc.closeDialog()
673
+ }), '取消'), BgWidget.save(gvc.event(async () => {
674
+ dialog.dataLoading({visible: true});
675
+ await ApiUser.setPublicConfig({
676
+ key: `robot_ai_reply`,
677
+ value: keyData,
678
+ user_id: 'manager',
679
+ });
680
+ dialog.dataLoading({visible: false});
681
+ dialog.successMessage({text: '設定成功!'});
682
+ gvc.closeDialog()
683
+ }), '儲存')].join('')
684
+ }
685
+ })
686
+ }))}
687
+ </div>` : ``}
688
+ </div>
689
+ `
690
+ }
691
+ }
692
+ }),
693
+ BgWidget.editeInput({
694
+ gvc: gvc,
695
+ title: '客服名稱',
696
+ type: 'name',
697
+ placeHolder: `請輸入客服名稱`,
698
+ default: keyData.name,
699
+ callback: (text) => {
700
+ keyData.name = text;
701
+ },
702
+ }),
703
+ EditorElem.uploadImage({
704
+ title: '大頭照',
705
+ gvc: gvc,
706
+ def: keyData.head || '',
707
+ callback: (text: string) => {
708
+ keyData.head = text;
709
+ },
710
+ }),
711
+ EditorElem.colorSelect({
712
+ gvc: gvc,
713
+ title: '設定主色調',
714
+ def: keyData.color,
715
+ callback: (text) => {
716
+ keyData.color = text;
717
+ gvc.notifyDataChange(vO.id)
718
+ },
719
+ }),
720
+ BgWidget.editeInput({
721
+ gvc: gvc,
722
+ title: '置頂標題',
723
+ placeHolder: `請輸入置頂標題`,
724
+ default: keyData.title,
725
+ callback: (text) => {
726
+ keyData.title = text;
727
+ },
728
+ }),
729
+ BgWidget.textArea({
730
+ gvc: gvc,
731
+ title: '置頂內文',
732
+ placeHolder: `請輸入置頂內文`,
733
+ default: keyData.content,
734
+ callback: (text) => {
735
+ keyData.content = text;
736
+ },
737
+ })
738
+ ]
739
+ } else {
740
+ return []
741
+ }
742
+ })()
449
743
  ].join(`<div class="my-2"></div>`)}
450
744
  </div>`,
451
745
  gvc.bindView(() => {
@@ -454,6 +748,9 @@ export class BgCustomerMessage {
454
748
  return {
455
749
  bind: id,
456
750
  view: () => {
751
+ if (!keyData.toggle) {
752
+ return ``
753
+ }
457
754
  return new Promise(async (resolve, reject) => {
458
755
  let keyData = (await ApiUser.getPublicConfig(`robot_auto_reply`, 'manager')).response.value || {};
459
756
  if (Array.isArray(keyData)) {
@@ -470,10 +767,12 @@ export class BgCustomerMessage {
470
767
 
471
768
  resolve(html`
472
769
  <div class="position-relative bgf6 d-flex align-items-center justify-content-between mx-n2 p-2 py-3 border-top border-bottom mt-2 shadow">
473
- <span class="fs-6 fw-bold "
474
- style="color:black;">常見問題</span>
770
+ <span class="fs-6 fw-bold d-flex flex-column"
771
+ style="color:black;">常見問題
772
+ ${BgWidget.grayNote('將顯示於客服聊天首頁,讓用戶直接點選')}</span>
475
773
  </div>
476
774
  <div style="" class="p-2">
775
+
477
776
  ${gvc.bindView(() => {
478
777
  return {
479
778
  bind: id,
@@ -821,11 +1120,11 @@ export class BgCustomerMessage {
821
1120
  </div>
822
1121
  <img
823
1122
  src="${head}"
824
- class="rounded-circle ${(dd.chat_id.startsWith('line') || dd.chat_id.startsWith('fb')) ? ``:`border`}"
825
- style="border-radius: 50%;${(()=>{
826
- if(dd.chat_id.startsWith('line')){
1123
+ class="rounded-circle ${(dd.chat_id.startsWith('line') || dd.chat_id.startsWith('fb')) ? `` : `border`}"
1124
+ style="border-radius: 50%;${(() => {
1125
+ if (dd.chat_id.startsWith('line')) {
827
1126
  return `border:2px solid green;`
828
- }else if(dd.chat_id.startsWith('fb')){
1127
+ } else if (dd.chat_id.startsWith('fb')) {
829
1128
  return `border:2px solid #0078ff;`
830
1129
  }
831
1130
  })()}"
@@ -1630,9 +1630,9 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
1630
1630
  h += html `<p class="mb-1" style="white-space: normal; word-break: break-all;">${str}</p>`;
1631
1631
  });
1632
1632
  }
1633
- return html ` <div class="w-100 alert alert-secondary p-3 mb-0 ${css.class}" style="white-space: normal; word-break: break-all; ${css.style} ">
1633
+ return html `<div class="w-100 alert alert-secondary p-3 mb-0 ${css.class}" style="white-space: normal; word-break: break-all; ${css.style} ">
1634
1634
  <div class="fs-5 mb-0"><strong>${title}</strong></div>
1635
- ${messageList && messageList.length > 0 ? `<div class="mt-2" style="white-space: normal; word-break: break-all;">${h}</div>` : ``}
1635
+ ${messageList && messageList.length > 0 ? html `<div class="mt-2" style="white-space: normal;">${h}</div>` : ``}
1636
1636
  </div>`;
1637
1637
  }
1638
1638
  static selNavbar(data) {
@@ -1982,9 +1982,9 @@ ${obj.default ?? ''}</textarea
1982
1982
  h += html`<p class="mb-1" style="white-space: normal; word-break: break-all;">${str}</p>`;
1983
1983
  });
1984
1984
  }
1985
- return html` <div class="w-100 alert alert-secondary p-3 mb-0 ${css.class}" style="white-space: normal; word-break: break-all; ${css.style} ">
1985
+ return html`<div class="w-100 alert alert-secondary p-3 mb-0 ${css.class}" style="white-space: normal; word-break: break-all; ${css.style} ">
1986
1986
  <div class="fs-5 mb-0"><strong>${title}</strong></div>
1987
- ${messageList && messageList.length > 0 ? `<div class="mt-2" style="white-space: normal; word-break: break-all;">${h}</div>` : ``}
1987
+ ${messageList && messageList.length > 0 ? html`<div class="mt-2" style="white-space: normal;">${h}</div>` : ``}
1988
1988
  </div>`;
1989
1989
  }
1990
1990
 
@@ -107,8 +107,8 @@ export class AutoReply {
107
107
  vm.dataList = [
108
108
  'auto-email-shipment-arrival',
109
109
  'auto-email-shipment',
110
- 'auto-email-payment-successful',
111
110
  'auto-email-order-create',
111
+ 'auto-email-payment-successful',
112
112
  'proof-purchase',
113
113
  'auto-email-birthday',
114
114
  'auto-email-welcome',
@@ -269,14 +269,6 @@ export class AutoReply {
269
269
  content: '[@{{app_name}}] #@{{訂單號碼}} 送貨狀態 更新為: 已到達',
270
270
  toggle: true,
271
271
  },
272
- {
273
- tag: 'auto-email-payment-successful',
274
- tag_name: '訂單付款成功',
275
- name: '@{{app_name}}',
276
- title: '[@{{app_name}}] #@{{訂單號碼}} 付款狀態 更新為: 已付款',
277
- content: '[@{{app_name}}] #@{{訂單號碼}} 付款狀態 更新為: 已付款',
278
- toggle: true,
279
- },
280
272
  {
281
273
  tag: 'auto-email-order-create',
282
274
  tag_name: '訂單成立',
@@ -285,6 +277,14 @@ export class AutoReply {
285
277
  content: '[@{{app_name}}] 您的訂單 #@{{訂單號碼}} 已成立',
286
278
  toggle: true,
287
279
  },
280
+ {
281
+ tag: 'auto-email-payment-successful',
282
+ tag_name: '訂單付款成功',
283
+ name: '@{{app_name}}',
284
+ title: '[@{{app_name}}] #@{{訂單號碼}} 付款狀態 更新為: 已付款',
285
+ content: '[@{{app_name}}] #@{{訂單號碼}} 付款狀態 更新為: 已付款',
286
+ toggle: true,
287
+ },
288
288
  {
289
289
  tag: 'proof-purchase',
290
290
  tag_name: '訂單待核款',
@@ -122,8 +122,8 @@ export class AutoReply {
122
122
  vm.dataList = [
123
123
  'auto-email-shipment-arrival',
124
124
  'auto-email-shipment',
125
- 'auto-email-payment-successful',
126
125
  'auto-email-order-create',
126
+ 'auto-email-payment-successful',
127
127
  'proof-purchase',
128
128
  // 'auto-email-order-cancel-success',
129
129
  // 'auto-email-order-cancel-false',
@@ -307,14 +307,6 @@ export class AutoReply {
307
307
  content: '[@{{app_name}}] #@{{訂單號碼}} 送貨狀態 更新為: 已到達',
308
308
  toggle: true,
309
309
  },
310
- {
311
- tag: 'auto-email-payment-successful',
312
- tag_name: '訂單付款成功',
313
- name: '@{{app_name}}',
314
- title: '[@{{app_name}}] #@{{訂單號碼}} 付款狀態 更新為: 已付款',
315
- content: '[@{{app_name}}] #@{{訂單號碼}} 付款狀態 更新為: 已付款',
316
- toggle: true,
317
- },
318
310
  {
319
311
  tag: 'auto-email-order-create',
320
312
  tag_name: '訂單成立',
@@ -323,6 +315,14 @@ export class AutoReply {
323
315
  content: '[@{{app_name}}] 您的訂單 #@{{訂單號碼}} 已成立',
324
316
  toggle: true,
325
317
  },
318
+ {
319
+ tag: 'auto-email-payment-successful',
320
+ tag_name: '訂單付款成功',
321
+ name: '@{{app_name}}',
322
+ title: '[@{{app_name}}] #@{{訂單號碼}} 付款狀態 更新為: 已付款',
323
+ content: '[@{{app_name}}] #@{{訂單號碼}} 付款狀態 更新為: 已付款',
324
+ toggle: true,
325
+ },
326
326
  {
327
327
  tag: 'proof-purchase',
328
328
  tag_name: '訂單待核款',