ts-glitter 21.9.2 → 21.9.4

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 (103) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/backend-manager/bg-product.js +1 -1
  4. package/lowcode/backend-manager/bg-product.ts +2 -1
  5. package/lowcode/cms-plugin/app-market-install.js +97 -0
  6. package/lowcode/cms-plugin/app-market-install.ts +123 -0
  7. package/lowcode/cms-plugin/app-market-published.js +42 -0
  8. package/lowcode/cms-plugin/app-market-published.ts +70 -0
  9. package/lowcode/cms-plugin/app-market.js +286 -0
  10. package/lowcode/cms-plugin/app-market.ts +343 -0
  11. package/lowcode/cms-plugin/filter-options.js +7 -0
  12. package/lowcode/cms-plugin/filter-options.ts +10 -0
  13. package/lowcode/cms-plugin/shopping-information.js +19 -463
  14. package/lowcode/cms-plugin/shopping-information.ts +50 -582
  15. package/lowcode/css/editor.css +13 -0
  16. package/lowcode/glitter-base/global/language.js +6 -0
  17. package/lowcode/glitter-base/global/language.ts +6 -0
  18. package/lowcode/glitter-base/route/market.js +43 -0
  19. package/lowcode/glitter-base/route/market.ts +47 -0
  20. package/lowcode/glitter-base/route/shopping.js +15 -0
  21. package/lowcode/glitter-base/route/shopping.ts +24 -5
  22. package/lowcode/glitterBundle/dialog/dialog.js +2 -2
  23. package/lowcode/glitterBundle/dialog/dialog.ts +5 -5
  24. package/lowcode/jspage/function-page/main_editor.js +2 -2
  25. package/lowcode/jspage/function-page/main_editor.ts +2 -2
  26. package/lowcode/jspage/function-page/setting_editor.js +27 -0
  27. package/lowcode/jspage/function-page/setting_editor.ts +27 -0
  28. package/lowcode/public-components/user-manager/um-order.js +158 -60
  29. package/lowcode/public-components/user-manager/um-order.ts +229 -73
  30. package/package.json +1 -1
  31. package/src/api-public/controllers/app-market.d.ts +3 -0
  32. package/src/api-public/controllers/app-market.js +51 -0
  33. package/src/api-public/controllers/app-market.js.map +1 -0
  34. package/src/api-public/controllers/app-market.ts +59 -0
  35. package/src/api-public/controllers/index.js +3 -0
  36. package/src/api-public/controllers/index.js.map +1 -1
  37. package/src/api-public/controllers/index.ts +3 -0
  38. package/src/api-public/controllers/shop.js +38 -6
  39. package/src/api-public/controllers/shop.js.map +1 -1
  40. package/src/api-public/controllers/shop.ts +94 -61
  41. package/src/api-public/services/ai-robot.d.ts +1 -0
  42. package/src/api-public/services/app-market.d.ts +26 -0
  43. package/src/api-public/services/app-market.js +385 -0
  44. package/src/api-public/services/app-market.js.map +1 -0
  45. package/src/api-public/services/app-market.ts +412 -0
  46. package/src/api-public/services/auto-send-email.js +4 -3
  47. package/src/api-public/services/auto-send-email.js.map +1 -1
  48. package/src/api-public/services/auto-send-email.ts +3 -2
  49. package/src/api-public/services/checkout-event.js +7 -26
  50. package/src/api-public/services/checkout-event.js.map +1 -1
  51. package/src/api-public/services/checkout-event.ts +18 -43
  52. package/src/api-public/services/fb-api.d.ts +1 -0
  53. package/src/api-public/services/fb-message.d.ts +1 -0
  54. package/src/api-public/services/fb-service.js +4 -4
  55. package/src/api-public/services/fb-service.js.map +1 -1
  56. package/src/api-public/services/financial-service.d.ts +1 -0
  57. package/src/api-public/services/financial-serviceV2.d.ts +1 -0
  58. package/src/api-public/services/line-message.d.ts +1 -0
  59. package/src/api-public/services/model/handlePaymentTransaction.js +0 -1
  60. package/src/api-public/services/model/handlePaymentTransaction.js.map +1 -1
  61. package/src/api-public/services/model/handlePaymentTransaction.ts +3 -81
  62. package/src/api-public/services/monitor.d.ts +1 -0
  63. package/src/api-public/services/share-permission.d.ts +1 -1
  64. package/src/api-public/services/shopee.d.ts +4 -3
  65. package/src/api-public/services/shopping.d.ts +1 -0
  66. package/src/api-public/services/shopping.js +7 -7
  67. package/src/api-public/services/shopping.js.map +1 -1
  68. package/src/api-public/services/shopping.ts +15 -59
  69. package/src/api-public/services/user.d.ts +1 -0
  70. package/src/api-public/utils/ut-permission.d.ts +1 -0
  71. package/src/config.d.ts +2 -1
  72. package/src/config.js +1 -0
  73. package/src/config.js.map +1 -1
  74. package/src/config.ts +1 -0
  75. package/src/index.js +3 -3
  76. package/src/modules/AWSLib.js +3 -2
  77. package/src/modules/AWSLib.js.map +1 -1
  78. package/src/modules/database.d.ts +1 -1
  79. package/src/modules/redis.d.ts +1 -1
  80. package/src/modules/tool.d.ts +4 -4
  81. package/src/modules/tool.js +2 -1
  82. package/src/modules/tool.js.map +1 -1
  83. package/src/public-config-initial/auto-fcm.d.ts +1 -0
  84. package/src/public-config-initial/auto-fcm.js +6 -4
  85. package/src/public-config-initial/auto-fcm.js.map +1 -1
  86. package/src/public-config-initial/auto-fcm.ts +14 -9
  87. package/src/run.js +2 -1
  88. package/src/run.js.map +1 -1
  89. package/src/seo-config.d.ts +1 -0
  90. package/src/seo-config.js +3 -3
  91. package/src/seo-config.js.map +1 -1
  92. package/src/services/app.d.ts +1 -0
  93. package/src/services/app.js +7 -17
  94. package/src/services/app.js.map +1 -1
  95. package/src/services/backend-service.js +7 -17
  96. package/src/services/backend-service.js.map +1 -1
  97. package/src/services/create-instance.js +4 -3
  98. package/src/services/create-instance.js.map +1 -1
  99. package/src/services/saas-table-check.js +2 -2
  100. package/src/services/seo.d.ts +1 -0
  101. package/src/services/template.d.ts +1 -0
  102. package/src/services/tool.js +3 -2
  103. package/src/services/tool.js.map +1 -1
@@ -2,7 +2,6 @@ import { GVC } from '../../glitterBundle/GVController.js';
2
2
  import { UmClass } from './um-class.js';
3
3
  import { ApiUser } from '../../glitter-base/route/user.js';
4
4
  import { ApiShop } from '../../glitter-base/route/shopping.js';
5
- import { ApiCart } from '../../glitter-base/route/api-cart.js';
6
5
  import { Ad } from '../public/ad.js';
7
6
  import { ShareDialog } from '../../glitterBundle/dialog/ShareDialog.js';
8
7
  import { FormWidget } from '../../official_view_component/official/form.js';
@@ -10,6 +9,8 @@ import { Language } from '../../glitter-base/global/language.js';
10
9
  import { CheckInput } from '../../modules/checkInput.js';
11
10
  import { ShipmentConfig } from '../../glitter-base/global/shipment-config.js';
12
11
  import { Animation } from '../../glitterBundle/module/Animation.js';
12
+ import { BgWidget } from '../../backend-manager/bg-widget.js';
13
+ import { GlobalUser } from '../../glitter-base/global/global-user.js';
13
14
 
14
15
  const html = String.raw;
15
16
  const css = String.raw;
@@ -411,30 +412,30 @@ export class UMOrder {
411
412
  cursor: pointer;
412
413
  }
413
414
  .customer-btn-text {
414
- line-height:normal;
415
+ line-height: normal;
415
416
  text-align: center;
416
417
  color: white;
417
418
  font-size: 14px;
418
419
  font-weight: 400;
419
420
  letter-spacing: 0.56px;
420
421
  }
421
-
422
+
422
423
  .payment-section {
423
424
  border: 1px solid #ccc;
424
425
  padding: 10px;
425
426
  margin-bottom: 20px;
426
427
  }
427
428
  #repay-button {
428
- height:32px;
429
-
429
+ height: 32px;
430
+
430
431
  background-color: #4caf50;
431
432
  color: white;
432
- border-radius:10px;
433
+ border-radius: 10px;
433
434
  padding: 6px 14px;
434
435
  border: none;
435
436
  cursor: pointer;
436
437
  }
437
-
438
+
438
439
  #repay-button:hover {
439
440
  background-color: #45a049;
440
441
  }
@@ -454,6 +455,7 @@ export class UMOrder {
454
455
  showPayError();
455
456
  return;
456
457
  }
458
+
457
459
  switch (payment_method) {
458
460
  case 'line_pay':
459
461
  if (gvc.glitter.share.is_application) {
@@ -472,7 +474,8 @@ export class UMOrder {
472
474
  if (res.response.approveLink) {
473
475
  location.href = res.response.approveLink;
474
476
  }
475
- showPayError();break;
477
+ showPayError();
478
+ break;
476
479
  }
477
480
  case 'jkopay': {
478
481
  if (gvc.glitter.share.is_application) {
@@ -505,9 +508,10 @@ export class UMOrder {
505
508
  padding: 0 24px;
506
509
  margin: 18px 0;
507
510
  }
511
+
508
512
  .button-text {
509
- color: #fff;
510
- font-size: 16px;
513
+ color: #fff;
514
+ font-size: 16px;
511
515
  }
512
516
  `);
513
517
  return gvc.bindView({
@@ -515,12 +519,17 @@ export class UMOrder {
515
519
  view: () => {
516
520
  return html` <div class="w-100 h-100 d-flex align-items-center justify-content-center">
517
521
  ${document.body.clientWidth < 800
518
- ? `
519
- <div class="bg-white position-relative vw-100" style="height: ${window.innerHeight}px;overflow-y: auto;
520
- padding-top:${50 + gvc.glitter.share.top_inset}px;
521
- ">
522
- `
523
- : `<div class="p-3 bg-white position-relative" style="max-height: calc(100vh - 90px);overflow-y:auto;">`}
522
+ ? html`
523
+ <div
524
+ class="bg-white position-relative vw-100"
525
+ style="height: ${window.innerHeight}px;overflow-y: auto; padding-top:${50 +
526
+ gvc.glitter.share.top_inset}px;"
527
+ ></div>
528
+ `
529
+ : html` <div
530
+ class="p-3 bg-white position-relative"
531
+ style="max-height: calc(100vh - 90px);overflow-y:auto;"
532
+ ></div>`}
524
533
  <div
525
534
  style="position: absolute; right: 15px;top:${15 + gvc.glitter.share.top_inset}px;z-index:1;"
526
535
  onclick="${gvc.event(() => {
@@ -529,7 +538,7 @@ export class UMOrder {
529
538
  >
530
539
  <i class="fa-regular fa-circle-xmark fs-5 text-dark cursor_pointer"></i>
531
540
  </div>
532
- <div id="paynow-container" >
541
+ <div id="paynow-container">
533
542
  <div style="width:200px;height:200px;">loading...</div>
534
543
  </div>
535
544
  <div class="px-3 px-sm-0 w-100">
@@ -537,10 +546,7 @@ export class UMOrder {
537
546
  class="button-bgr"
538
547
  id="checkoutButton"
539
548
  onclick="${gvc.event(() => {
540
- // const inputGroup = document.querySelector('#paynow-container');
541
- // console.log("inputGroup -- " , inputGroup)
542
549
  const PayNow = (window as any).PayNow;
543
- const dialog = new ShareDialog(gvc.glitter);
544
550
  dialog.dataLoading({ visible: true });
545
551
  PayNow.checkout().then((response: any) => {
546
552
  dialog.dataLoading({ visible: false });
@@ -558,20 +564,21 @@ export class UMOrder {
558
564
  </div>`;
559
565
  },
560
566
  divCreate: {
561
- class: ` h-100 d-flex align-items-center justify-content-center`,
562
- style: `max-width:100vw;${document.body.clientWidth < 800 ? 'width:100%;' : 'width:400px;'};`,
567
+ class: `h-100 d-flex align-items-center justify-content-center`,
568
+ style: `max-width: 100vw; ${document.body.clientWidth < 800 ? 'width: 100%;' : 'width: 400px;'}`,
563
569
  },
564
570
  onCreate: () => {
565
571
  const publicKey = res.response?.responseData.publicKey;
566
572
  const secret = res.response?.responseData.data.result.secret;
567
573
  const env = res.response.responseData.BETA == 'true' ? 'sandbox' : 'production';
568
- // res.response.result.secret
569
574
  const PayNow = (window as any).PayNow;
575
+
570
576
  PayNow.createPayment({
571
577
  publicKey: publicKey,
572
578
  secret: secret,
573
579
  env: env,
574
580
  });
581
+
575
582
  PayNow.mount('#paynow-container', {
576
583
  locale: 'zh_tw',
577
584
  appearance: {
@@ -589,7 +596,7 @@ export class UMOrder {
589
596
  },
590
597
  });
591
598
  },
592
- `paynow`,
599
+ 'paynow',
593
600
  {
594
601
  animation: document.body.clientWidth > 800 ? Animation.fade : Animation.popup,
595
602
  dismiss: () => {
@@ -601,7 +608,7 @@ export class UMOrder {
601
608
  }
602
609
  default: {
603
610
  const id = gvc.glitter.getUUID();
604
- $('body').append(`<div id="${id}" style="display: none;">${res.response.form}</div>`);
611
+ $('body').append(html` <div id="${id}" style="display: none;">${res.response.form}</div>`);
605
612
  (document.querySelector(`#${id} #submit`) as any).click();
606
613
  }
607
614
  }
@@ -610,9 +617,14 @@ export class UMOrder {
610
617
  static repay(gvc: GVC, orderData: any) {
611
618
  const id = orderData.cart_token;
612
619
  const dialog = new ShareDialog(gvc.glitter);
613
- dialog.dataLoading({ visible: true, text: Language.text('loading') });
614
620
  const redirect = gvc.glitter.root_path + 'order_detail' + location.search;
615
621
  const url = new URL(redirect as any, location.href);
622
+
623
+ dialog.dataLoading({
624
+ visible: true,
625
+ text: Language.text('loading'),
626
+ });
627
+
616
628
  return new Promise(() => {
617
629
  ApiShop.repay(id, url.href).then(res => {
618
630
  dialog.dataLoading({ visible: false });
@@ -856,20 +868,8 @@ export class UMOrder {
856
868
  ];
857
869
 
858
870
  static main(gvc: GVC, widget: any, subData: any) {
859
- this.addStyle(gvc);
860
- gvc.addMtScript(
861
- [
862
- {
863
- src: `https://js.paynow.com.tw/sdk/v2/index.js?v=20250430`,
864
- },
865
- ],
866
- () => {},
867
- () => {}
868
- );
869
- UmClass.addStyle(gvc);
870
871
  const glitter = gvc.glitter;
871
- const dialog = new ShareDialog(gvc.glitter);
872
-
872
+ const dialog = new ShareDialog(glitter);
873
873
  const ids = {
874
874
  view: glitter.getUUID(),
875
875
  };
@@ -880,15 +880,182 @@ export class UMOrder {
880
880
  data: {} as Order,
881
881
  type: '',
882
882
  formList: [] as any,
883
+ passport: false,
884
+ verify_code: '',
885
+ buyer_name: '',
886
+ buyer_phone: '',
883
887
  };
884
- //判定可以重新付款的付款方式
888
+
889
+ this.addStyle(gvc);
890
+ gvc.addMtScript(
891
+ [
892
+ {
893
+ src: `https://js.paynow.com.tw/sdk/v2/index.js?v=20250430`,
894
+ },
895
+ ],
896
+ () => {},
897
+ () => {}
898
+ );
899
+ UmClass.addStyle(gvc);
900
+ let changePage = (index: string, type: 'page' | 'home', subData: any) => {};
901
+ gvc.glitter.getModule(new URL('./official_event/page/change-page.js', gvc.glitter.root_path).href, cl => {
902
+ changePage = cl.changePage;
903
+ });
904
+
905
+ // 判定可以重新付款的付款方式
885
906
  const repayArray = ['ecPay', 'newWebPay', 'paypal', 'jkopay', 'paynow', 'line_pay'];
886
907
 
908
+ //加載訂單資料
909
+ function loadOrderData() {
910
+ ApiShop.getOrder({
911
+ limit: 1,
912
+ page: 0,
913
+ data_from: 'user',
914
+ search: glitter.getUrlParameter('cart_token'),
915
+ searchType: 'cart_token',
916
+ buyer_name:vm.buyer_name,
917
+ buyer_phone:vm.buyer_phone
918
+ }).then((res: any) => {
919
+ if (res.result && res.response.data && res.response.data[0]) {
920
+ vm.data = res.response.data[0];
921
+ loadings.view = false;
922
+ gvc.notifyDataChange(ids.view);
923
+ } else {
924
+ dialog.errorMessage({
925
+ text:Language.text('order_not_found'),
926
+ })
927
+ guestCheckView()
928
+ }
929
+ });
930
+ }
931
+
932
+ // 訪客驗證訂單是否可見彈窗
933
+ function guestCheckView() {
934
+ BgWidget.settingDialog({
935
+ gvc: gvc,
936
+ title: Language.text('find_order'),
937
+ innerHTML: () => {
938
+ return html` <div class="p-3">
939
+ ${[
940
+ Language.text('if_buyer_no_account').replace(
941
+ '#login',
942
+ gvc.event(() => {
943
+ gvc.closeDialog();
944
+ gvc.glitter.href = '/login';
945
+ })
946
+ ),
947
+ `<div class="border-top w-100 my-3"></div>`,
948
+ BgWidget.editeInput({
949
+ gvc,
950
+ title: Language.text('order_number'),
951
+ default: glitter.getUrlParameter('cart_token'),
952
+ placeHolder: `${Language.text('please_enter')} ${Language.text('order_number')}`,
953
+ callback: value => {
954
+ glitter.setUrlParameter('cart_token',value)
955
+ },
956
+ }),
957
+ BgWidget.editeInput({
958
+ gvc,
959
+ title: Language.text('customer_name'),
960
+ default: vm.buyer_name,
961
+ placeHolder: `${Language.text('please_enter')} ${Language.text('customer_name')}`,
962
+ callback: value => {
963
+ vm.buyer_name = value;
964
+ },
965
+ }),
966
+ BgWidget.editeInput({
967
+ gvc,
968
+ title: Language.text('customer_phone'),
969
+ default: vm.buyer_phone,
970
+ placeHolder: `${Language.text('please_enter')} ${Language.text('customer_phone')}`,
971
+ callback: value => {
972
+ vm.buyer_phone = value;
973
+ },
974
+ }),
975
+ ].join('')}
976
+ </div>`;
977
+ },
978
+ footer_html: (gvc: GVC) => {
979
+ return `<div class="w-100 d-flex border-top mt-0 py-2 px-3">
980
+ <div class="flex-fill"></div>
981
+ ${[
982
+ ` <button
983
+ class="customer-btn-text "
984
+ style=" height: 32px;
985
+ padding: 6px 14px;
986
+ background: #393939;
987
+ border-radius: 10px;
988
+ justify-content: center;
989
+ align-items: center;
990
+ display: inline-flex;
991
+ cursor: pointer;"
992
+ id=""
993
+ onclick="${gvc.event(() => {
994
+ loadOrderData()
995
+ gvc.closeDialog();
996
+ })}"
997
+ >
998
+ 查詢
999
+ </button>`,
1000
+ ].join('')}
1001
+ </div>`;
1002
+ },
1003
+ });
1004
+ // dialog.customCheck({
1005
+ // text: [
1006
+ // Language.text('if_buyer_no_account'),
1007
+ // BgWidget.title(''),
1008
+ // BgWidget.editeInput({
1009
+ // gvc,
1010
+ // title: '',
1011
+ // default: vm.buyer_name,
1012
+ // placeHolder: '請輸入購買人姓名',
1013
+ // callback: value => {
1014
+ // vm.buyer_name = value;
1015
+ // },
1016
+ // }),
1017
+ // BgWidget.editeInput({
1018
+ // gvc,
1019
+ // title: '',
1020
+ // default: vm.buyer_name,
1021
+ // placeHolder: '請輸入購買人手機號碼',
1022
+ // callback: value => {
1023
+ // vm.buyer_name = value;
1024
+ // },
1025
+ // })
1026
+ // ].join(''),
1027
+ // callback: response => {
1028
+ // if (response) {
1029
+ // function call() {
1030
+ // loadings.view = true;
1031
+ // gvc.notifyDataChange(ids.view);
1032
+ // }
1033
+ //
1034
+ // dialog.dataLoading({ visible: true });
1035
+ // ApiShop.verifyOrderCode(vm.verify_code).then(r => {
1036
+ // dialog.dataLoading({ visible: false });
1037
+ // vm.passport = Boolean(r.response?.result);
1038
+ //
1039
+ // if (vm.passport) {
1040
+ // dialog.successMessage({ text: '驗證成功' });
1041
+ // setTimeout(() => call(), 1200);
1042
+ // } else {
1043
+ // dialog.errorMessage({ text: '驗證失敗', callback: () => call() });
1044
+ // }
1045
+ // });
1046
+ // } else {
1047
+ // glitter.setUrlParameter('cart_token', undefined);
1048
+ // changePage('index', 'home', {});
1049
+ // }
1050
+ // },
1051
+ // });
1052
+ }
1053
+
887
1054
  return html` <div class="container py-4">
888
1055
  ${gvc.bindView({
889
1056
  bind: ids.view,
890
1057
  dataList: [{ obj: vm, key: 'type' }],
891
- view: () => {
1058
+ view: async () => {
892
1059
  try {
893
1060
  if (loadings.view) {
894
1061
  return UmClass.spinner({
@@ -904,12 +1071,14 @@ export class UMOrder {
904
1071
 
905
1072
  const orderData = vm.data.orderData;
906
1073
 
907
- //判斷需要出貨單號碼
1074
+ // 判斷需要出貨單號碼
908
1075
  if ((window as any).store_info.pickup_mode) {
909
1076
  dialog.infoMessage({
910
- text: `取貨時請核對您的取貨號碼,您的取貨號碼為<br><div class="fw-bold fs-5 text-danger">『 ${(vm.data as any).shipment_number} 號 』</div>`,
1077
+ text: html`取貨時請核對您的取貨號碼,您的取貨號碼為<br />
1078
+ <div class="fw-bold fs-5 text-danger">『 ${(vm.data as any).shipment_number} 號 』</div>`,
911
1079
  });
912
1080
  }
1081
+
913
1082
  const showUploadProof =
914
1083
  orderData.method === 'off_line' &&
915
1084
  orderData.customer_info.payment_select !== 'cash_on_delivery' &&
@@ -985,7 +1154,6 @@ export class UMOrder {
985
1154
  class="o-title-container ${item.title === Language.text('payment_instructions')
986
1155
  ? 'align-items-start mt-2'
987
1156
  : ''}"
988
-
989
1157
  >
990
1158
  <div class="o-title me-1" style="white-space: nowrap;">${item.title}:</div>
991
1159
  <div class="o-title fr-view">${item.value}</div>
@@ -1156,6 +1324,7 @@ export class UMOrder {
1156
1324
  </section>
1157
1325
  `;
1158
1326
  }
1327
+
1159
1328
  return html`
1160
1329
  <section class="o-h1">${Language.text('order_number')}<br />#${vm.data.cart_token}</section>
1161
1330
  <section class="o-card">
@@ -1163,7 +1332,7 @@ export class UMOrder {
1163
1332
  ${gvc.map(
1164
1333
  orderData.lineItems.map(item => {
1165
1334
  return html`
1166
- <div class="o-line-item ${document.body.clientWidth < 800 ? `p-2` : ``}">
1335
+ <div class="o-line-item ${document.body.clientWidth < 800 ? 'p-2' : ''}">
1167
1336
  <div class="d-flex gap-3 align-items-center">
1168
1337
  <div>
1169
1338
  ${UmClass.validImageBox({
@@ -1197,12 +1366,8 @@ export class UMOrder {
1197
1366
  });
1198
1367
  })}"
1199
1368
  >
1200
- ${(() => {
1201
- const title =
1202
- (item.language_data && (item as any).language_data[Language.getLanguage()].title) ||
1203
- item.title;
1204
- return title;
1205
- })()}
1369
+ ${(item.language_data && (item as any).language_data[Language.getLanguage()].title) ||
1370
+ item.title}
1206
1371
  </p>
1207
1372
  <p class="o-item-spec">
1208
1373
  ${item.spec.length > 0
@@ -1228,7 +1393,7 @@ export class UMOrder {
1228
1393
  })()}`
1229
1394
  : Language.text('single_specification')}
1230
1395
  </p>
1231
- <span class="me-3 d-sm-none">NT ${item.sale_price.toLocaleString()} × ${item.count}</span>
1396
+ <span class="me-3 d-sm-none">NT ${item.sale_price.toLocaleString()} × ${item.count}</span>
1232
1397
  </div>
1233
1398
  </div>
1234
1399
  <div class="d-none d-sm-flex">
@@ -1306,7 +1471,7 @@ export class UMOrder {
1306
1471
  text: `您已完成訂單,請於「付款資訊」了解付款說明後,儘速上傳結帳證明,以完成付款程序`,
1307
1472
  });
1308
1473
  }
1309
-
1474
+
1310
1475
  Ad.fbqEvent('Purchase', {
1311
1476
  value: orderData.total,
1312
1477
  currency: 'TWD',
@@ -1403,7 +1568,7 @@ export class UMOrder {
1403
1568
  value: (() => {
1404
1569
  switch (orderData.orderStatus) {
1405
1570
  case '-1':
1406
- return `<div class="text-danger">${Language.text('cancelled')}</div>`;
1571
+ return html` <div class="text-danger">${Language.text('cancelled')}</div>`;
1407
1572
  case '1':
1408
1573
  return Language.text('completed');
1409
1574
  case '-99':
@@ -1445,8 +1610,8 @@ export class UMOrder {
1445
1610
  class="customer-btn-text ms-3"
1446
1611
  id="repay-button"
1447
1612
  onclick="${gvc.event(() => {
1448
- UMOrder.repay(gvc, vm.data).then(r => {});
1449
- })}"
1613
+ UMOrder.repay(gvc, vm.data).then(r => {});
1614
+ })}"
1450
1615
  >
1451
1616
  重新付款
1452
1617
  </button>
@@ -1736,30 +1901,21 @@ export class UMOrder {
1736
1901
  `;
1737
1902
  } catch (e) {
1738
1903
  console.error(e);
1739
- return ``;
1904
+ return '';
1740
1905
  }
1741
1906
  },
1742
1907
  divCreate: {
1743
1908
  class: 'd-flex align-items-center justify-content-center gap-3 flex-column',
1744
1909
  style: 'min-height: 50vh;',
1745
1910
  },
1746
- onCreate: () => {
1911
+ onCreate: async () => {
1747
1912
  if (loadings.view) {
1748
- ApiShop.getOrder({
1749
- limit: 1,
1750
- page: 0,
1751
- data_from: 'user',
1752
- search: glitter.getUrlParameter('cart_token'),
1753
- searchType: 'cart_token',
1754
- }).then((res: any) => {
1755
- if (res.result && res.response.data) {
1756
- vm.data = res.response.data[0];
1757
- } else {
1758
- vm.data = {} as any;
1759
- }
1760
- loadings.view = false;
1761
- gvc.notifyDataChange(ids.view);
1762
- });
1913
+ vm.passport = glitter.share.GlobalUser.token ? Boolean(await UmClass.getUserData(gvc)) : vm.passport;
1914
+ if (GlobalUser.token) {
1915
+ loadOrderData();
1916
+ } else {
1917
+ guestCheckView();
1918
+ }
1763
1919
  }
1764
1920
  },
1765
1921
  })}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-glitter",
3
- "version": "21.9.2",
3
+ "version": "21.9.4",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1,3 @@
1
+ import express from 'express';
2
+ declare const router: express.Router;
3
+ export = router;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ const express_1 = __importDefault(require("express"));
6
+ const response_1 = __importDefault(require("../../modules/response"));
7
+ const exception_1 = __importDefault(require("../../modules/exception"));
8
+ const ut_permission_js_1 = require("../utils/ut-permission.js");
9
+ const app_market_1 = require("../services/app-market");
10
+ const router = express_1.default.Router();
11
+ router.get('/', async (req, resp) => {
12
+ try {
13
+ if (await ut_permission_js_1.UtPermission.isManager(req)) {
14
+ return response_1.default.succ(resp, await new app_market_1.MarketService(req.get('g-app'), req.body.token).getAppList());
15
+ }
16
+ else {
17
+ return response_1.default.fail(resp, exception_1.default.BadRequestError('BAD_REQUEST', 'No permission.', null));
18
+ }
19
+ }
20
+ catch (err) {
21
+ return response_1.default.fail(resp, err);
22
+ }
23
+ });
24
+ router.get('/install', async (req, resp) => {
25
+ try {
26
+ if (await ut_permission_js_1.UtPermission.isManager(req)) {
27
+ return response_1.default.succ(resp, await new app_market_1.MarketService(req.get('g-app'), req.body.token).getInstallAppList());
28
+ }
29
+ else {
30
+ return response_1.default.fail(resp, exception_1.default.BadRequestError('BAD_REQUEST', 'No permission.', null));
31
+ }
32
+ }
33
+ catch (err) {
34
+ return response_1.default.fail(resp, err);
35
+ }
36
+ });
37
+ router.get('/published', async (req, resp) => {
38
+ try {
39
+ if (await ut_permission_js_1.UtPermission.isManager(req)) {
40
+ return response_1.default.succ(resp, await new app_market_1.MarketService(req.get('g-app'), req.body.token).getPublishtdAppList());
41
+ }
42
+ else {
43
+ return response_1.default.fail(resp, exception_1.default.BadRequestError('BAD_REQUEST', 'No permission.', null));
44
+ }
45
+ }
46
+ catch (err) {
47
+ return response_1.default.fail(resp, err);
48
+ }
49
+ });
50
+ module.exports = router;
51
+ //# sourceMappingURL=app-market.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-market.js","sourceRoot":"","sources":["app-market.ts"],"names":[],"mappings":";;;;AAAA,sDAAyC;AACzC,sEAA8C;AAC9C,wEAAgD;AAChD,gEAAyD;AAIzD,uDAAuD;AAEvD,MAAM,MAAM,GAAmB,iBAAO,CAAC,MAAM,EAAE,CAAC;AAIhD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAoB,EAAE,IAAsB,EAAE,EAAE;IACnE,IAAI,CAAC;QACD,IAAI,MAAM,+BAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,kBAAQ,CAAC,IAAI,CAClB,IAAI,EACJ,MAAM,IAAI,0BAAa,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAW,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CACjF,CAAA;QACH,CAAC;aAAM,CAAC;YACJ,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAS,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QACjG,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAoB,EAAE,IAAsB,EAAE,EAAE;IAC5E,IAAI,CAAC;QACH,IAAI,MAAM,+BAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAEtC,OAAO,kBAAQ,CAAC,IAAI,CAClB,IAAI,EACJ,MAAM,IAAI,0BAAa,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAW,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,CACxF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAS,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,GAAoB,EAAE,IAAsB,EAAE,EAAE;IAC9E,IAAI,CAAC;QACH,IAAI,MAAM,+BAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAEtC,OAAO,kBAAQ,CAAC,IAAI,CAClB,IAAI,EACJ,MAAM,IAAI,0BAAa,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAW,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,CAC1F,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAS,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CAAC,CAAC;AA/CH,iBAAS,MAAM,CAAC"}
@@ -0,0 +1,59 @@
1
+ import express, { query } from 'express';
2
+ import response from '../../modules/response';
3
+ import exception from '../../modules/exception';
4
+ import { UtPermission } from '../utils/ut-permission.js';
5
+ import { Mail } from '../services/mail.js';
6
+ import {SMS} from "../services/sms.js";
7
+ import {LineMessage} from "../services/line-message";
8
+ import { MarketService } from '../services/app-market';
9
+
10
+ const router: express.Router = express.Router();
11
+
12
+ export = router;
13
+
14
+ router.get('/', async (req: express.Request, resp: express.Response) => {
15
+ try {
16
+ if (await UtPermission.isManager(req)) {
17
+ return response.succ(
18
+ resp,
19
+ await new MarketService(req.get('g-app') as string, req.body.token).getAppList()
20
+ )
21
+ } else {
22
+ return response.fail(resp, exception.BadRequestError('BAD_REQUEST', 'No permission.', null));
23
+ }
24
+ } catch (err) {
25
+ return response.fail(resp, err);
26
+ }
27
+ });
28
+
29
+ router.get('/install', async (req: express.Request, resp: express.Response) => {
30
+ try {
31
+ if (await UtPermission.isManager(req)) {
32
+
33
+ return response.succ(
34
+ resp,
35
+ await new MarketService(req.get('g-app') as string, req.body.token).getInstallAppList()
36
+ )
37
+ } else {
38
+ return response.fail(resp, exception.BadRequestError('BAD_REQUEST', 'No permission.', null));
39
+ }
40
+ } catch (err) {
41
+ return response.fail(resp, err);
42
+ }
43
+ });
44
+
45
+ router.get('/published', async (req: express.Request, resp: express.Response) => {
46
+ try {
47
+ if (await UtPermission.isManager(req)) {
48
+
49
+ return response.succ(
50
+ resp,
51
+ await new MarketService(req.get('g-app') as string, req.body.token).getPublishtdAppList()
52
+ )
53
+ } else {
54
+ return response.fail(resp, exception.BadRequestError('BAD_REQUEST', 'No permission.', null));
55
+ }
56
+ } catch (err) {
57
+ return response.fail(resp, err);
58
+ }
59
+ });
@@ -27,6 +27,7 @@ const app_release = require("./app-release");
27
27
  const smtp = require("./smtp");
28
28
  const sms = require("./sms");
29
29
  const line_message = require("./line-message");
30
+ const app_market = require("./app-market");
30
31
  const fb_message = require("./fb-message");
31
32
  const fcm = require("./fcm");
32
33
  const wallet = require("./wallet");
@@ -52,6 +53,7 @@ router.use(config_1.config.getRoute(config_1.config.public_route.app, 'public'),
52
53
  router.use(config_1.config.getRoute(config_1.config.public_route.smtp, 'public'), smtp);
53
54
  router.use(config_1.config.getRoute(config_1.config.public_route.sms, 'public'), sms);
54
55
  router.use(config_1.config.getRoute(config_1.config.public_route.line_message, 'public'), line_message);
56
+ router.use(config_1.config.getRoute(config_1.config.public_route.app_market, 'public'), app_market);
55
57
  router.use(config_1.config.getRoute(config_1.config.public_route.fb_message, 'public'), fb_message);
56
58
  router.use(config_1.config.getRoute(config_1.config.public_route.fcm, 'public'), fcm);
57
59
  router.use(config_1.config.getRoute(config_1.config.public_route.wallet, 'public'), wallet);
@@ -128,6 +130,7 @@ const whiteList = [
128
130
  { url: config_1.config.getRoute(config_1.config.public_route.ec + '/repay_redirect', 'public'), method: 'POST' },
129
131
  { url: config_1.config.getRoute(config_1.config.public_route.ec + '/logistics/redirect', 'public'), method: 'POST' },
130
132
  { url: config_1.config.getRoute(config_1.config.public_route.ec + '/order', 'public'), method: 'GET' },
133
+ { url: config_1.config.getRoute(config_1.config.public_route.ec + '/order/verifyCode', 'public'), method: 'POST' },
131
134
  { url: config_1.config.getRoute(config_1.config.public_route.ec + '/order/cancel', 'public'), method: 'PUT' },
132
135
  { url: config_1.config.getRoute(config_1.config.public_route.ec + '/order/proof-purchase', 'public'), method: 'PUT' },
133
136
  { url: config_1.config.getRoute(config_1.config.public_route.ec + '/order/payment-method', 'public'), method: 'GET' },