ts-glitter 21.0.3 → 21.0.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 (161) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/backend-manager/bg-blog.js +22 -37
  4. package/lowcode/backend-manager/bg-blog.ts +45 -34
  5. package/lowcode/backend-manager/bg-list-component.js +2 -2
  6. package/lowcode/backend-manager/bg-list-component.ts +2 -2
  7. package/lowcode/backend-manager/bg-widget.js +21 -0
  8. package/lowcode/backend-manager/bg-widget.ts +21 -0
  9. package/lowcode/cms-plugin/filter-options.js +3 -3
  10. package/lowcode/cms-plugin/filter-options.ts +1 -1
  11. package/lowcode/cms-plugin/shopping-finance-setting.js +251 -6
  12. package/lowcode/cms-plugin/shopping-finance-setting.ts +291 -6
  13. package/lowcode/cms-plugin/shopping-order-manager.js +56 -46
  14. package/lowcode/cms-plugin/shopping-order-manager.ts +59 -47
  15. package/lowcode/cms-plugin/shopping-product-setting.js +10 -5
  16. package/lowcode/cms-plugin/shopping-product-setting.ts +14 -6
  17. package/lowcode/cms-plugin/shopping-setting-advance.js +21 -72
  18. package/lowcode/cms-plugin/shopping-setting-advance.ts +31 -98
  19. package/lowcode/css/editor.css +48 -16
  20. package/lowcode/css/front-end.css +16 -17
  21. package/lowcode/glitter-base/global/language.js +2 -0
  22. package/lowcode/glitter-base/global/language.ts +3 -0
  23. package/lowcode/glitter-base/global/shipment-config.js +4 -4
  24. package/lowcode/glitter-base/global/shipment-config.ts +1 -1
  25. package/lowcode/glitter-base/route/shopping.js +11 -0
  26. package/lowcode/glitter-base/route/shopping.ts +12 -0
  27. package/lowcode/official_view_component/form-widget/input-custom.js +0 -1
  28. package/lowcode/official_view_component/form-widget/input-custom.ts +0 -1
  29. package/lowcode/public-components/checkout/index.js +578 -780
  30. package/lowcode/public-components/checkout/index.ts +2457 -2652
  31. package/lowcode/public-components/headers/header-class.js +252 -324
  32. package/lowcode/public-components/headers/header-class.ts +389 -480
  33. package/lowcode/public-components/modules/cart-module.js +433 -0
  34. package/lowcode/public-components/modules/cart-module.ts +491 -0
  35. package/lowcode/public-components/modules/product-module.js +45 -0
  36. package/lowcode/public-components/modules/product-module.ts +58 -0
  37. package/lowcode/public-components/product/product-detail.js +178 -184
  38. package/lowcode/public-components/product/product-detail.ts +564 -579
  39. package/lowcode/public-components/user-manager/um-order.js +162 -32
  40. package/lowcode/public-components/user-manager/um-order.ts +181 -46
  41. package/lowcode/public-models/product.ts +1 -0
  42. package/lowcode/view-model/saas-view-model.js +1 -1
  43. package/lowcode/view-model/saas-view-model.ts +1 -1
  44. package/package.json +1 -1
  45. package/src/Language.js +1 -0
  46. package/src/Language.js.map +1 -1
  47. package/src/Language.ts +3 -0
  48. package/src/api-public/controllers/article.js +33 -29
  49. package/src/api-public/controllers/article.js.map +1 -1
  50. package/src/api-public/controllers/article.ts +152 -146
  51. package/src/api-public/controllers/index.js +2 -0
  52. package/src/api-public/controllers/index.js.map +1 -1
  53. package/src/api-public/controllers/index.ts +2 -0
  54. package/src/api-public/controllers/shop.js +125 -47
  55. package/src/api-public/controllers/shop.js.map +1 -1
  56. package/src/api-public/controllers/shop.ts +148 -61
  57. package/src/api-public/controllers/user.js +51 -52
  58. package/src/api-public/controllers/user.js.map +1 -1
  59. package/src/api-public/controllers/user.ts +63 -52
  60. package/src/api-public/models/glitter-finance.js +2 -1
  61. package/src/api-public/models/glitter-finance.js.map +5 -1
  62. package/src/api-public/services/checkout-event.d.ts +1 -0
  63. package/src/api-public/services/checkout-event.js +18 -10
  64. package/src/api-public/services/checkout-event.js.map +1 -1
  65. package/src/api-public/services/checkout-event.ts +18 -7
  66. package/src/api-public/services/factories/payment-strategy-factory.d.ts +6 -0
  67. package/src/api-public/services/factories/payment-strategy-factory.js +49 -0
  68. package/src/api-public/services/factories/payment-strategy-factory.js.map +1 -0
  69. package/src/api-public/services/factories/payment-strategy-factory.ts +71 -0
  70. package/src/api-public/services/fb-service.js +4 -4
  71. package/src/api-public/services/fb-service.js.map +1 -1
  72. package/src/api-public/services/financial-service.d.ts +2 -1
  73. package/src/api-public/services/financial-service.js +48 -53
  74. package/src/api-public/services/financial-service.js.map +1 -1
  75. package/src/api-public/services/financial-service.ts +29 -38
  76. package/src/api-public/services/financial-serviceV2.d.ts +298 -0
  77. package/src/api-public/services/financial-serviceV2.js +1158 -0
  78. package/src/api-public/services/financial-serviceV2.js.map +1 -0
  79. package/src/api-public/services/financial-serviceV2.ts +1518 -0
  80. package/src/api-public/services/interface/payment-keys-interface.d.ts +37 -0
  81. package/src/api-public/services/interface/payment-keys-interface.js +3 -0
  82. package/src/api-public/services/interface/payment-keys-interface.js.map +1 -0
  83. package/src/api-public/services/interface/payment-keys-interface.ts +46 -0
  84. package/src/api-public/services/interface/payment-strategy-interface.d.ts +17 -0
  85. package/src/api-public/services/interface/payment-strategy-interface.js +3 -0
  86. package/src/api-public/services/interface/payment-strategy-interface.js.map +1 -0
  87. package/src/api-public/services/interface/payment-strategy-interface.ts +48 -0
  88. package/src/api-public/services/migrate-event/public-user-config.d.ts +5 -0
  89. package/src/api-public/services/migrate-event/public-user-config.js +81 -0
  90. package/src/api-public/services/migrate-event/public-user-config.js.map +1 -0
  91. package/src/api-public/services/migrate-event/public-user-config.ts +106 -0
  92. package/src/api-public/services/model/handlePaymentTransaction.js +0 -68
  93. package/src/api-public/services/model/handlePaymentTransaction.js.map +1 -1
  94. package/src/api-public/services/model/handlePaymentTransaction.ts +62 -54
  95. package/src/api-public/services/monitor.d.ts +1 -0
  96. package/src/api-public/services/payment-service.d.ts +12 -0
  97. package/src/api-public/services/payment-service.js +83 -0
  98. package/src/api-public/services/payment-service.js.map +1 -0
  99. package/src/api-public/services/payment-service.ts +112 -0
  100. package/src/api-public/services/shopping.d.ts +2 -1
  101. package/src/api-public/services/shopping.js +60 -23
  102. package/src/api-public/services/shopping.js.map +1 -1
  103. package/src/api-public/services/shopping.ts +88 -16
  104. package/src/api-public/services/strategies/ecpay-strategy.d.ts +8 -0
  105. package/src/api-public/services/strategies/ecpay-strategy.js +26 -0
  106. package/src/api-public/services/strategies/ecpay-strategy.js.map +1 -0
  107. package/src/api-public/services/strategies/ecpay-strategy.ts +30 -0
  108. package/src/api-public/services/strategies/ezpay-strategy.d.ts +8 -0
  109. package/src/api-public/services/strategies/ezpay-strategy.js +26 -0
  110. package/src/api-public/services/strategies/ezpay-strategy.js.map +1 -0
  111. package/src/api-public/services/strategies/ezpay-strategy.ts +31 -0
  112. package/src/api-public/services/strategies/jkopay-strategy.d.ts +8 -0
  113. package/src/api-public/services/strategies/jkopay-strategy.js +32 -0
  114. package/src/api-public/services/strategies/jkopay-strategy.js.map +1 -0
  115. package/src/api-public/services/strategies/jkopay-strategy.ts +36 -0
  116. package/src/api-public/services/strategies/linepay-strategy.d.ts +8 -0
  117. package/src/api-public/services/strategies/linepay-strategy.js +32 -0
  118. package/src/api-public/services/strategies/linepay-strategy.js.map +1 -0
  119. package/src/api-public/services/strategies/linepay-strategy.ts +35 -0
  120. package/src/api-public/services/strategies/paynow-strategy.d.ts +8 -0
  121. package/src/api-public/services/strategies/paynow-strategy.js +26 -0
  122. package/src/api-public/services/strategies/paynow-strategy.js.map +1 -0
  123. package/src/api-public/services/strategies/paynow-strategy.ts +29 -0
  124. package/src/api-public/services/strategies/paypal-strategy.d.ts +8 -0
  125. package/src/api-public/services/strategies/paypal-strategy.js +28 -0
  126. package/src/api-public/services/strategies/paypal-strategy.js.map +1 -0
  127. package/src/api-public/services/strategies/paypal-strategy.ts +31 -0
  128. package/src/api-public/services/updated-table-checked.d.ts +1 -0
  129. package/src/api-public/services/updated-table-checked.js +37 -15
  130. package/src/api-public/services/updated-table-checked.js.map +1 -1
  131. package/src/api-public/services/updated-table-checked.ts +56 -36
  132. package/src/api-public/utils/ut-permission.d.ts +1 -0
  133. package/src/app-project/serverless/src/index.js +17 -7
  134. package/src/app-project/serverless/src/index.js.map +1 -1
  135. package/src/app-project/serverless/src/modules/CryptoJS.js +17 -7
  136. package/src/app-project/serverless/src/modules/CryptoJS.js.map +1 -1
  137. package/src/app-project/serverless/src/modules/ssh.js +17 -7
  138. package/src/app-project/serverless/src/modules/ssh.js.map +1 -1
  139. package/src/config.d.ts +1 -1
  140. package/src/modules/AWSLib.js +3 -2
  141. package/src/modules/AWSLib.js.map +1 -1
  142. package/src/modules/CryptoJS.js +17 -7
  143. package/src/modules/CryptoJS.js.map +1 -1
  144. package/src/modules/database.d.ts +1 -1
  145. package/src/modules/redis.d.ts +1 -1
  146. package/src/modules/ssh.js +17 -7
  147. package/src/modules/ssh.js.map +1 -1
  148. package/src/modules/tool.d.ts +4 -4
  149. package/src/modules/tool.js +2 -1
  150. package/src/modules/tool.js.map +1 -1
  151. package/src/run.js +2 -1
  152. package/src/run.js.map +1 -1
  153. package/src/services/create-instance.js +4 -3
  154. package/src/services/create-instance.js.map +1 -1
  155. package/src/services/saas-table-check.js +2 -2
  156. package/src/services/saas-table-check.js.map +5 -1
  157. package/src/services/tool.js +3 -2
  158. package/src/services/tool.js.map +1 -1
  159. package/vp00rqhw1r.json +1 -0
  160. package/src/api-public/services/product-migrate.d.ts +0 -8
  161. package/src/api-public/services/product-migrate.js.map +0 -1
@@ -331,24 +331,30 @@ export class ShoppingOrderManager {
331
331
  })
332
332
  .flat()),
333
333
  ];
334
+ function cartTokenComponent(cart_token, source_badge, is_watch_user) {
335
+ return html `<div style="min-width:200px;">
336
+ <div style="position: relative; height: 40px;">
337
+ <div
338
+ style="position: absolute; bottom: 9px; height: 9px; width: 127px; ${is_watch_user
339
+ ? 'background-color: #ffe9b2'
340
+ : ''}"
341
+ ></div>
342
+ <span style="position: absolute; bottom: 0;">${cart_token}${source_badge}</span>
343
+ </div>
344
+ </div>`;
345
+ }
334
346
  return data.response.data.map((dd) => {
335
347
  var _a;
336
348
  const vt = OrderSetting.getAllStatusBadge(dd);
337
349
  dd.orderData.total = dd.orderData.total || 0;
338
350
  dd.orderData.customer_info = (_a = dd.orderData.customer_info) !== null && _a !== void 0 ? _a : {};
339
351
  const isWatchUser = watchUsers.includes(dd.orderData.email);
340
- const backgroundColor = isWatchUser ? `background-color: #ffe9b2` : '';
341
352
  const tooltipText = isWatchUser ? '此份訂單的顧客為觀察名單' : '';
342
353
  if (query.isShipment) {
343
354
  return [
344
355
  {
345
356
  key: '訂單編號',
346
- value: html ` <div
347
- class="d-flex align-items-center gap-2"
348
- style="min-width: 200px; ${backgroundColor}"
349
- >
350
- ${dd.cart_token}${vt.sourceBadge()}
351
- </div>`,
357
+ value: cartTokenComponent(dd.cart_token, vt.sourceBadge(), isWatchUser),
352
358
  tooltip: tooltipText,
353
359
  },
354
360
  {
@@ -378,12 +384,7 @@ export class ShoppingOrderManager {
378
384
  return [
379
385
  {
380
386
  key: '訂單編號',
381
- value: html ` <div
382
- class="d-flex align-items-center gap-2"
383
- style="min-width: 200px; ${backgroundColor}"
384
- >
385
- ${dd.cart_token}${vt.sourceBadge()}
386
- </div>`,
387
+ value: cartTokenComponent(dd.cart_token, vt.sourceBadge(), isWatchUser),
387
388
  tooltip: tooltipText,
388
389
  },
389
390
  {
@@ -1541,12 +1542,13 @@ export class ShoppingOrderManager {
1541
1542
  ['姓名', 'name'],
1542
1543
  ['電話', 'phone'],
1543
1544
  ['信箱', 'email'],
1545
+ ['縣市', 'city'],
1546
+ ['鄉鎮', 'area'],
1547
+ ['地址', 'address'],
1544
1548
  ];
1545
1549
  const receipt = (yield ApiUser.getPublicConfig('custom_form_checkout_recipient', 'manager')).response.value;
1546
1550
  receipt.list.map((d1) => {
1547
- if (!viewModel.find(dd => {
1548
- return dd[1] === d1.key;
1549
- })) {
1551
+ if (!viewModel.find(dd => dd[1] === d1.key)) {
1550
1552
  viewModel.push([d1.title, d1.key]);
1551
1553
  }
1552
1554
  });
@@ -2603,7 +2605,7 @@ export class ShoppingOrderManager {
2603
2605
  html ` <div class="d-flex flex-column" style="gap:8px;">
2604
2606
  <div
2605
2607
  class="d-flex align-items-center"
2606
- style="font-weight: 700; gap:8px;cursor:pointer;"
2608
+ style="gap: 8px; cursor: pointer;"
2607
2609
  onclick="${gvc.event(() => {
2608
2610
  if (userData.userID) {
2609
2611
  child_vm.userID = userData.userID;
@@ -2611,31 +2613,44 @@ export class ShoppingOrderManager {
2611
2613
  }
2612
2614
  })}"
2613
2615
  >
2614
- ${(() => {
2615
- var _a;
2616
- const name = (_a = userData === null || userData === void 0 ? void 0 : userData.userData) === null || _a === void 0 ? void 0 : _a.name;
2617
- if (name) {
2618
- return html `<span style="color: #4D86DB;">${name}</span>`;
2619
- }
2620
- return html `<span style="color: #393939;">訪客</span>`;
2621
- })()}
2622
- ${(() => {
2623
- if (userDataLoading) {
2624
- return BgWidget.secondaryInsignia('讀取中');
2625
- }
2626
- if (userData.member == undefined) {
2627
- return BgWidget.secondaryInsignia('訪客');
2628
- }
2629
- if ((userData === null || userData === void 0 ? void 0 : userData.member.length) > 0) {
2630
- for (let i = 0; i < userData.member.length; i++) {
2631
- if (userData.member[i].trigger) {
2632
- return BgWidget.primaryInsignia(userData.member[i].tag_name);
2616
+ ${[
2617
+ (() => {
2618
+ var _a;
2619
+ const name = (_a = userData === null || userData === void 0 ? void 0 : userData.userData) === null || _a === void 0 ? void 0 : _a.name;
2620
+ if (name) {
2621
+ return html `<span style="font-weight: 500; color: #4D86DB;">${name}</span>`;
2622
+ }
2623
+ return html `<span style="font-weight: normal; color: #393939;">訪客</span>`;
2624
+ })(),
2625
+ (() => {
2626
+ if (userData.status === 0) {
2627
+ return '';
2628
+ }
2629
+ if (userDataLoading) {
2630
+ return BgWidget.grayInsignia('讀取中');
2631
+ }
2632
+ if (userData.member === undefined) {
2633
+ return BgWidget.grayInsignia('訪客');
2634
+ }
2635
+ if ((userData === null || userData === void 0 ? void 0 : userData.member.length) > 0) {
2636
+ for (let i = 0; i < userData.member.length; i++) {
2637
+ if (userData.member[i].trigger) {
2638
+ return BgWidget.darkInsignia(userData.member[i].tag_name);
2639
+ }
2633
2640
  }
2634
2641
  }
2635
- return BgWidget.primaryInsignia('一般會員');
2636
- }
2637
- return BgWidget.secondaryInsignia('訪客');
2638
- })()}
2642
+ return BgWidget.darkInsignia('一般會員');
2643
+ })(),
2644
+ (() => {
2645
+ if (userData.status === 0) {
2646
+ return BgWidget.dangerInsignia('黑名單');
2647
+ }
2648
+ if (userData.status === 2) {
2649
+ return BgWidget.watchingInsignia('觀察名單');
2650
+ }
2651
+ return '';
2652
+ })(),
2653
+ ].join('')}
2639
2654
  </div>
2640
2655
  <div style="color: #393939;font-weight: 400;">
2641
2656
  ${(_h = (_g = (_f = userData === null || userData === void 0 ? void 0 : userData.userData) === null || _f === void 0 ? void 0 : _f.phone) !== null && _g !== void 0 ? _g : orderData.orderData.user_info.phone) !== null && _h !== void 0 ? _h : '此會員未填手機'}
@@ -2643,9 +2658,6 @@ export class ShoppingOrderManager {
2643
2658
  <div style="color: #393939;font-weight: 400;word-break:break-all;">
2644
2659
  ${(_l = (_k = (_j = userData === null || userData === void 0 ? void 0 : userData.userData) === null || _j === void 0 ? void 0 : _j.email) !== null && _k !== void 0 ? _k : orderData.orderData.user_info.email) !== null && _l !== void 0 ? _l : ''}
2645
2660
  </div>
2646
- <div style="color: #393939;font-weight: 700;">
2647
- ${userData.status === 2 ? '* 此顧客列為觀察名單' : ''}
2648
- </div>
2649
2661
  </div>`,
2650
2662
  BgWidget.horizontalLine(),
2651
2663
  gvc.bindView({
@@ -2744,9 +2756,7 @@ export class ShoppingOrderManager {
2744
2756
  orderData.orderData.user_info.area,
2745
2757
  orderData.orderData.user_info.address,
2746
2758
  ]
2747
- .filter(dd => {
2748
- return dd;
2749
- })
2759
+ .filter(Boolean)
2750
2760
  .join('')}
2751
2761
  </div>`);
2752
2762
  }
@@ -402,25 +402,32 @@ export class ShoppingOrderManager {
402
402
  ),
403
403
  ];
404
404
 
405
+ function cartTokenComponent(cart_token: any, source_badge: string, is_watch_user: boolean) {
406
+ return html`<div style="min-width:200px;">
407
+ <div style="position: relative; height: 40px;">
408
+ <div
409
+ style="position: absolute; bottom: 9px; height: 9px; width: 127px; ${is_watch_user
410
+ ? 'background-color: #ffe9b2'
411
+ : ''}"
412
+ ></div>
413
+ <span style="position: absolute; bottom: 0;">${cart_token}${source_badge}</span>
414
+ </div>
415
+ </div>`;
416
+ }
417
+
405
418
  return data.response.data.map((dd: any) => {
406
419
  const vt = OrderSetting.getAllStatusBadge(dd);
407
420
  dd.orderData.total = dd.orderData.total || 0;
408
421
  dd.orderData.customer_info = dd.orderData.customer_info ?? {};
409
422
 
410
423
  const isWatchUser = watchUsers.includes(dd.orderData.email);
411
- const backgroundColor = isWatchUser ? `background-color: #ffe9b2` : '';
412
424
  const tooltipText = isWatchUser ? '此份訂單的顧客為觀察名單' : '';
413
425
 
414
426
  if (query.isShipment) {
415
427
  return [
416
428
  {
417
429
  key: '訂單編號',
418
- value: html` <div
419
- class="d-flex align-items-center gap-2"
420
- style="min-width: 200px; ${backgroundColor}"
421
- >
422
- ${dd.cart_token}${vt.sourceBadge()}
423
- </div>`,
430
+ value: cartTokenComponent(dd.cart_token, vt.sourceBadge(), isWatchUser),
424
431
  tooltip: tooltipText,
425
432
  },
426
433
  {
@@ -449,12 +456,7 @@ export class ShoppingOrderManager {
449
456
  return [
450
457
  {
451
458
  key: '訂單編號',
452
- value: html` <div
453
- class="d-flex align-items-center gap-2"
454
- style="min-width: 200px; ${backgroundColor}"
455
- >
456
- ${dd.cart_token}${vt.sourceBadge()}
457
- </div>`,
459
+ value: cartTokenComponent(dd.cart_token, vt.sourceBadge(), isWatchUser),
458
460
  tooltip: tooltipText,
459
461
  },
460
462
  {
@@ -1738,19 +1740,21 @@ export class ShoppingOrderManager {
1738
1740
  ['姓名', 'name'],
1739
1741
  ['電話', 'phone'],
1740
1742
  ['信箱', 'email'],
1743
+ ['縣市', 'city'],
1744
+ ['鄉鎮', 'area'],
1745
+ ['地址', 'address'],
1741
1746
  ];
1747
+
1742
1748
  const receipt = (
1743
1749
  await ApiUser.getPublicConfig('custom_form_checkout_recipient', 'manager')
1744
1750
  ).response.value;
1751
+
1745
1752
  receipt.list.map((d1: any) => {
1746
- if (
1747
- !viewModel.find(dd => {
1748
- return dd[1] === d1.key;
1749
- })
1750
- ) {
1753
+ if (!viewModel.find(dd => dd[1] === d1.key)) {
1751
1754
  viewModel.push([d1.title, d1.key]);
1752
1755
  }
1753
1756
  });
1757
+
1754
1758
  if (vm.mode == 'read') {
1755
1759
  return viewModel
1756
1760
  .map(item => {
@@ -2865,7 +2869,7 @@ export class ShoppingOrderManager {
2865
2869
  html` <div class="d-flex flex-column" style="gap:8px;">
2866
2870
  <div
2867
2871
  class="d-flex align-items-center"
2868
- style="font-weight: 700; gap:8px;cursor:pointer;"
2872
+ style="gap: 8px; cursor: pointer;"
2869
2873
  onclick="${gvc.event(() => {
2870
2874
  if (userData.userID) {
2871
2875
  child_vm.userID = userData.userID;
@@ -2873,30 +2877,43 @@ export class ShoppingOrderManager {
2873
2877
  }
2874
2878
  })}"
2875
2879
  >
2876
- ${(() => {
2877
- const name = userData?.userData?.name;
2878
- if (name) {
2879
- return html`<span style="color: #4D86DB;">${name}</span>`;
2880
- }
2881
- return html`<span style="color: #393939;">訪客</span>`;
2882
- })()}
2883
- ${(() => {
2884
- if (userDataLoading) {
2885
- return BgWidget.secondaryInsignia('讀取中');
2886
- }
2887
- if (userData.member == undefined) {
2888
- return BgWidget.secondaryInsignia('訪客');
2889
- }
2890
- if (userData?.member.length > 0) {
2891
- for (let i = 0; i < userData.member.length; i++) {
2892
- if (userData.member[i].trigger) {
2893
- return BgWidget.primaryInsignia(userData.member[i].tag_name);
2880
+ ${[
2881
+ (() => {
2882
+ const name = userData?.userData?.name;
2883
+ if (name) {
2884
+ return html`<span style="font-weight: 500; color: #4D86DB;">${name}</span>`;
2885
+ }
2886
+ return html`<span style="font-weight: normal; color: #393939;">訪客</span>`;
2887
+ })(),
2888
+ (() => {
2889
+ if (userData.status === 0) {
2890
+ return '';
2891
+ }
2892
+ if (userDataLoading) {
2893
+ return BgWidget.grayInsignia('讀取中');
2894
+ }
2895
+ if (userData.member === undefined) {
2896
+ return BgWidget.grayInsignia('訪客');
2897
+ }
2898
+ if (userData?.member.length > 0) {
2899
+ for (let i = 0; i < userData.member.length; i++) {
2900
+ if (userData.member[i].trigger) {
2901
+ return BgWidget.darkInsignia(userData.member[i].tag_name);
2902
+ }
2894
2903
  }
2895
2904
  }
2896
- return BgWidget.primaryInsignia('一般會員');
2897
- }
2898
- return BgWidget.secondaryInsignia('訪客');
2899
- })()}
2905
+ return BgWidget.darkInsignia('一般會員');
2906
+ })(),
2907
+ (() => {
2908
+ if (userData.status === 0) {
2909
+ return BgWidget.dangerInsignia('黑名單');
2910
+ }
2911
+ if (userData.status === 2) {
2912
+ return BgWidget.watchingInsignia('觀察名單');
2913
+ }
2914
+ return '';
2915
+ })(),
2916
+ ].join('')}
2900
2917
  </div>
2901
2918
  <div style="color: #393939;font-weight: 400;">
2902
2919
  ${userData?.userData?.phone ??
@@ -2906,9 +2923,6 @@ export class ShoppingOrderManager {
2906
2923
  <div style="color: #393939;font-weight: 400;word-break:break-all;">
2907
2924
  ${userData?.userData?.email ?? orderData.orderData.user_info.email ?? ''}
2908
2925
  </div>
2909
- <div style="color: #393939;font-weight: 700;">
2910
- ${userData.status === 2 ? '* 此顧客列為觀察名單' : ''}
2911
- </div>
2912
2926
  </div>`,
2913
2927
  BgWidget.horizontalLine(),
2914
2928
  gvc.bindView({
@@ -3020,9 +3034,7 @@ export class ShoppingOrderManager {
3020
3034
  orderData.orderData.user_info.area,
3021
3035
  orderData.orderData.user_info.address,
3022
3036
  ]
3023
- .filter(dd => {
3024
- return dd;
3025
- })
3037
+ .filter(Boolean)
3026
3038
  .join('')}
3027
3039
  </div>`
3028
3040
  );
@@ -297,12 +297,17 @@ export class ShoppingProductSetting {
297
297
  }
298
298
  });
299
299
  if (countStock == 0) {
300
- return html ` 無追蹤庫存 `;
300
+ return '無追蹤庫存';
301
301
  }
302
- return html `${countStock}個子類
303
- ${sum > 1
304
- ? `有${sum}件庫存`
305
- : html ` <span style="color:#8E0E2B">有${sum} 件庫存</span>`}`;
302
+ const countStockText = countStock > 1 ? `${countStock} 個子類` : '';
303
+ const stockText = html ` <span
304
+ style="${sum > 1
305
+ ? 'color: #393939'
306
+ : 'color: #8E0E2B; font-weight: 500;'}"
307
+ >
308
+ 庫存 ${sum.toLocaleString()} 件</span
309
+ >`;
310
+ return `${countStockText}${stockText}`;
306
311
  })(),
307
312
  },
308
313
  {
@@ -345,20 +345,28 @@ export class ShoppingProductSetting {
345
345
  value: (() => {
346
346
  let sum = 0;
347
347
  let countStock = 0;
348
+
348
349
  dd.content.variants.forEach((variant: any) => {
349
350
  if (variant.show_understocking == 'true') {
350
351
  countStock++;
351
352
  sum += variant.stock;
352
353
  }
353
354
  });
354
- // const sum = dd.content.variants.reduce((acc: any, curr: any) => acc + curr.stock, 0);
355
+
355
356
  if (countStock == 0) {
356
- return html` 無追蹤庫存 `;
357
+ return '無追蹤庫存';
357
358
  }
358
- return html`${countStock}個子類
359
- ${sum > 1
360
- ? `有${sum}件庫存`
361
- : html` <span style="color:#8E0E2B">有${sum} 件庫存</span>`}`;
359
+
360
+ const countStockText = countStock > 1 ? `${countStock} 個子類` : '';
361
+ const stockText = html` <span
362
+ style="${sum > 1
363
+ ? 'color: #393939'
364
+ : 'color: #8E0E2B; font-weight: 500;'}"
365
+ >
366
+ 庫存 ${sum.toLocaleString()} 件</span
367
+ >`;
368
+
369
+ return `${countStockText}${stockText}`;
362
370
  })(),
363
371
  },
364
372
  {
@@ -9,9 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { BgWidget } from '../backend-manager/bg-widget.js';
11
11
  import { BgProduct } from '../backend-manager/bg-product.js';
12
- import { ApiPageConfig } from '../api/pageConfig.js';
13
12
  import { ApiUser } from '../glitter-base/route/user.js';
14
- import { ShipmentConfig } from '../glitter-base/global/shipment-config.js';
15
13
  import { QuestionInfo } from './module/question-info.js';
16
14
  import { Tool } from '../modules/tool.js';
17
15
  const html = String.raw;
@@ -753,7 +751,7 @@ export class ShoppingSettingAdvance {
753
751
  var _a;
754
752
  let loading = true;
755
753
  let dataList = [];
756
- postMD.designated_logistics = (_a = postMD.designated_logistics) !== null && _a !== void 0 ? _a : { type: 'all', list: [] };
754
+ postMD.designated_logistics = (_a = postMD.designated_logistics) !== null && _a !== void 0 ? _a : { group: '' };
757
755
  return {
758
756
  bind: 'designatedLogistics',
759
757
  view: () => {
@@ -785,79 +783,30 @@ export class ShoppingSettingAdvance {
785
783
  key: 'designated',
786
784
  value: '指定物流',
787
785
  },
788
- ],
786
+ ].filter(item => {
787
+ return !(item.key === 'designated' && dataList.length === 0);
788
+ }),
789
789
  style: 'width: 100%;',
790
790
  })}
791
791
  <div>
792
792
  ${(() => {
793
793
  switch (postMD.designated_logistics.type) {
794
794
  case 'designated':
795
- return (() => {
796
- const designatedVM = {
797
- id: gvc.glitter.getUUID(),
798
- loading: true,
799
- dataList: [],
800
- };
801
- return gvc.bindView({
802
- bind: designatedVM.id,
803
- view: () => {
804
- var _a;
805
- if (designatedVM.loading) {
806
- return BgWidget.spinner({ text: { visible: false } });
807
- }
808
- else {
809
- return BgWidget.selectDropList({
810
- gvc: gvc,
811
- callback: (value) => {
812
- postMD.designated_logistics.list = value;
813
- gvc.notifyDataChange(id);
814
- },
815
- default: (_a = postMD.designated_logistics.list) !== null && _a !== void 0 ? _a : [],
816
- options: designatedVM.dataList,
817
- style: 'width: 100%;',
818
- });
819
- }
820
- },
821
- divCreate: {
822
- style: 'width: 100%;',
823
- },
824
- onCreate: () => {
825
- if (designatedVM.loading) {
826
- ApiPageConfig.getPrivateConfig(window.parent.appName, 'logistics_setting')
827
- .then((dd) => {
828
- var _a;
829
- if (!dd.result || !dd.response.result[0]) {
830
- throw new Error('Failed to fetch logistics setting or empty result.');
831
- }
832
- const shipment_setting = dd.response.result[0].value;
833
- const combinedList = [
834
- ...ShipmentConfig.list.map(dd => ({
835
- name: dd.title,
836
- value: dd.value,
837
- })),
838
- ...((_a = shipment_setting.custom_delivery) !== null && _a !== void 0 ? _a : []).map((dd) => ({
839
- form: dd.form,
840
- name: dd.name,
841
- value: dd.id,
842
- })),
843
- ];
844
- const supportedList = combinedList.filter(d1 => shipment_setting.support.some((d2) => d2 === d1.value));
845
- designatedVM.dataList = supportedList.map(item => ({
846
- key: item.value,
847
- value: item.name,
848
- }));
849
- designatedVM.loading = false;
850
- gvc.notifyDataChange(designatedVM.id);
851
- })
852
- .catch(error => {
853
- console.error('Error fetching logistics setting:', error);
854
- designatedVM.loading = false;
855
- gvc.notifyDataChange(designatedVM.id);
856
- });
857
- }
858
- },
859
- });
860
- })();
795
+ return BgWidget.selectDropList({
796
+ gvc: gvc,
797
+ callback: (value) => {
798
+ postMD.designated_logistics.group = value;
799
+ gvc.notifyDataChange(id);
800
+ },
801
+ default: postMD.designated_logistics.group || [],
802
+ options: dataList.map((data) => {
803
+ return {
804
+ key: data.key,
805
+ value: data.name,
806
+ };
807
+ }),
808
+ style: 'width: 100%;',
809
+ });
861
810
  default:
862
811
  return '';
863
812
  }
@@ -871,10 +820,10 @@ export class ShoppingSettingAdvance {
871
820
  },
872
821
  onCreate: () => {
873
822
  if (loading) {
874
- ApiPageConfig.getPrivateConfig(window.parent.appName, 'glitter_delivery').then(res => {
823
+ ApiUser.getPublicConfig('logistics_group', 'manager').then(r => {
875
824
  dataList = (() => {
876
825
  try {
877
- return res.response.result[0].value;
826
+ return r.response.value;
878
827
  }
879
828
  catch (error) {
880
829
  return dataList;