ts-glitter 20.7.4 → 20.7.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 (248) hide show
  1. package/jr9x7k3aau.json +1 -0
  2. package/lowcode/Entry.js +1 -1
  3. package/lowcode/Entry.ts +1 -1
  4. package/lowcode/backend-manager/bg-notify.js +2 -0
  5. package/lowcode/backend-manager/bg-notify.ts +2 -0
  6. package/lowcode/backend-manager/bg-widget.js +280 -155
  7. package/lowcode/backend-manager/bg-widget.ts +387 -244
  8. package/lowcode/backend-manager/splitPage.js +27 -52
  9. package/lowcode/backend-manager/splitPage.ts +29 -47
  10. package/lowcode/cms-plugin/app-release.js +63 -13
  11. package/lowcode/cms-plugin/app-release.ts +73 -13
  12. package/lowcode/cms-plugin/auto-fcm-advertise.js +23 -24
  13. package/lowcode/cms-plugin/auto-fcm-advertise.ts +286 -285
  14. package/lowcode/cms-plugin/auto-reply.js +285 -273
  15. package/lowcode/cms-plugin/auto-reply.ts +673 -660
  16. package/lowcode/cms-plugin/module/data.ts +1 -0
  17. package/lowcode/cms-plugin/module/order-setting.js +134 -117
  18. package/lowcode/cms-plugin/module/order-setting.ts +152 -138
  19. package/lowcode/cms-plugin/pos-pages/products-page.js +8 -16
  20. package/lowcode/cms-plugin/pos-pages/products-page.ts +10 -12
  21. package/lowcode/cms-plugin/shopping-order-manager.js +244 -289
  22. package/lowcode/cms-plugin/shopping-order-manager.ts +128 -156
  23. package/lowcode/cms-plugin/shopping-order-return.js +1 -1
  24. package/lowcode/cms-plugin/shopping-order-return.ts +1 -1
  25. package/lowcode/cms-plugin/shopping-product-setting.js +3 -3
  26. package/lowcode/cms-plugin/shopping-product-setting.ts +3 -3
  27. package/lowcode/cms-plugin/shopping-setting-advance.js +3 -28
  28. package/lowcode/cms-plugin/shopping-setting-advance.ts +3 -28
  29. package/lowcode/cms-plugin/stock-history.js +31 -15
  30. package/lowcode/cms-plugin/stock-history.ts +43 -25
  31. package/lowcode/cms-plugin/third-party-google.js +2 -2
  32. package/lowcode/cms-plugin/third-party-google.ts +2 -2
  33. package/lowcode/cms-plugin/user-list.js +166 -113
  34. package/lowcode/cms-plugin/user-list.ts +136 -78
  35. package/lowcode/form-view/e-commerce/path-select.js +100 -87
  36. package/lowcode/form-view/e-commerce/path-select.ts +372 -343
  37. package/lowcode/glitter-base/route/stock.ts +153 -141
  38. package/lowcode/glitterBundle/plugins/editor-elem.js +139 -149
  39. package/lowcode/glitterBundle/plugins/editor-elem.ts +207 -222
  40. package/lowcode/public-components/blogs/list.js +8 -16
  41. package/lowcode/public-components/blogs/list.ts +10 -12
  42. package/lowcode/public-components/product/product-list.js +8 -16
  43. package/lowcode/public-components/product/product-list.ts +10 -12
  44. package/lowcode/public-components/user-manager/um-login.js +268 -265
  45. package/lowcode/public-components/user-manager/um-login.ts +987 -983
  46. package/lowcode/public-models/order-info.js +12 -20
  47. package/lowcode/public-models/order-info.ts +13 -12
  48. package/package.json +1 -1
  49. package/src/Language.js.map +1 -1
  50. package/src/api-public/controllers/ai-chat.js.map +1 -1
  51. package/src/api-public/controllers/ai-points.js.map +1 -1
  52. package/src/api-public/controllers/app-release.js.map +1 -1
  53. package/src/api-public/controllers/article.js.map +1 -1
  54. package/src/api-public/controllers/chat.js.map +1 -1
  55. package/src/api-public/controllers/customer-sessions.js.map +1 -1
  56. package/src/api-public/controllers/delivery.js.map +1 -1
  57. package/src/api-public/controllers/fb-message.js.map +1 -1
  58. package/src/api-public/controllers/fb-service.js.map +1 -1
  59. package/src/api-public/controllers/fcm.js.map +1 -1
  60. package/src/api-public/controllers/graph-api.js.map +1 -1
  61. package/src/api-public/controllers/index.js.map +1 -1
  62. package/src/api-public/controllers/invoice.js.map +1 -1
  63. package/src/api-public/controllers/lambda.js.map +1 -1
  64. package/src/api-public/controllers/line-message.js.map +1 -1
  65. package/src/api-public/controllers/manager.js.map +1 -1
  66. package/src/api-public/controllers/oauth.js.map +1 -1
  67. package/src/api-public/controllers/post.js.map +1 -1
  68. package/src/api-public/controllers/progress.js.map +1 -1
  69. package/src/api-public/controllers/rebate.js.map +1 -1
  70. package/src/api-public/controllers/recommend.js.map +1 -1
  71. package/src/api-public/controllers/reconciliation.js.map +1 -1
  72. package/src/api-public/controllers/shop.js.map +1 -1
  73. package/src/api-public/controllers/shopee.js.map +1 -1
  74. package/src/api-public/controllers/sms-points.js.map +1 -1
  75. package/src/api-public/controllers/sms.js.map +1 -1
  76. package/src/api-public/controllers/smtp.js.map +1 -1
  77. package/src/api-public/controllers/sql_api.js.map +1 -1
  78. package/src/api-public/controllers/stock.js.map +1 -1
  79. package/src/api-public/controllers/track.js.map +1 -1
  80. package/src/api-public/controllers/user.js +1 -1
  81. package/src/api-public/controllers/user.js.map +1 -1
  82. package/src/api-public/controllers/user.ts +1 -1
  83. package/src/api-public/controllers/voucher.js.map +1 -1
  84. package/src/api-public/controllers/wallet.js.map +1 -1
  85. package/src/api-public/models/glitter-finance.js +2 -1
  86. package/src/api-public/models/glitter-finance.js.map +1 -1
  87. package/src/api-public/services/EcInvoice.js.map +1 -1
  88. package/src/api-public/services/ai-pointes.js.map +1 -1
  89. package/src/api-public/services/ai-robot.d.ts +1 -0
  90. package/src/api-public/services/ai-robot.js.map +1 -1
  91. package/src/api-public/services/article.js.map +1 -1
  92. package/src/api-public/services/auto-send-email.js.map +1 -1
  93. package/src/api-public/services/chat.js.map +1 -1
  94. package/src/api-public/services/checkout-event.d.ts +3 -1
  95. package/src/api-public/services/checkout-event.js +7 -4
  96. package/src/api-public/services/checkout-event.js.map +1 -1
  97. package/src/api-public/services/checkout-event.ts +26 -17
  98. package/src/api-public/services/checkout.js.map +1 -1
  99. package/src/api-public/services/custom-code.js.map +1 -1
  100. package/src/api-public/services/customer-sessions.js.map +1 -1
  101. package/src/api-public/services/data-analyze.js +3 -3
  102. package/src/api-public/services/data-analyze.js.map +1 -1
  103. package/src/api-public/services/data-analyze.ts +3 -3
  104. package/src/api-public/services/delivery.js.map +1 -1
  105. package/src/api-public/services/ezpay/tool.d.ts +1 -0
  106. package/src/api-public/services/ezpay/tool.js.map +1 -1
  107. package/src/api-public/services/fake-data-model/fake-order.js.map +1 -1
  108. package/src/api-public/services/fake-data-model/fake-product.js.map +1 -1
  109. package/src/api-public/services/fake-data-model/fake-user.js.map +1 -1
  110. package/src/api-public/services/fb-api.d.ts +1 -0
  111. package/src/api-public/services/fb-api.js.map +1 -1
  112. package/src/api-public/services/fb-message.d.ts +1 -0
  113. package/src/api-public/services/fb-message.js.map +1 -1
  114. package/src/api-public/services/fb-service.js +4 -4
  115. package/src/api-public/services/fb-service.js.map +1 -1
  116. package/src/api-public/services/filter-protect-data.js.map +1 -1
  117. package/src/api-public/services/financial-service.d.ts +1 -0
  118. package/src/api-public/services/financial-service.js.map +1 -1
  119. package/src/api-public/services/form-check.js.map +1 -1
  120. package/src/api-public/services/graph-api.js.map +1 -1
  121. package/src/api-public/services/initial-fake-data.js.map +1 -1
  122. package/src/api-public/services/invoice.js.map +1 -1
  123. package/src/api-public/services/language-setting.js.map +1 -1
  124. package/src/api-public/services/line-message.d.ts +1 -0
  125. package/src/api-public/services/line-message.js.map +1 -1
  126. package/src/api-public/services/mail.js.map +1 -1
  127. package/src/api-public/services/manager.js.map +1 -1
  128. package/src/api-public/services/model/handlePaymentTransaction.js.map +1 -1
  129. package/src/api-public/services/model/shopnex-line-message.js.map +1 -1
  130. package/src/api-public/services/monitor.d.ts +1 -0
  131. package/src/api-public/services/monitor.js.map +1 -1
  132. package/src/api-public/services/notify.js.map +1 -1
  133. package/src/api-public/services/order-event.js.map +1 -1
  134. package/src/api-public/services/paynow-logistics.js.map +1 -1
  135. package/src/api-public/services/phone-verify.js.map +1 -1
  136. package/src/api-public/services/pos.js.map +1 -1
  137. package/src/api-public/services/post.js.map +1 -1
  138. package/src/api-public/services/product-initial.js.map +1 -1
  139. package/src/api-public/services/public-table-check.js.map +1 -1
  140. package/src/api-public/services/rebate.js.map +1 -1
  141. package/src/api-public/services/recommend.js.map +1 -1
  142. package/src/api-public/services/reconciliation.js.map +1 -1
  143. package/src/api-public/services/schedule.js.map +1 -1
  144. package/src/api-public/services/share-permission.d.ts +1 -1
  145. package/src/api-public/services/share-permission.js.map +1 -1
  146. package/src/api-public/services/shopee.d.ts +1 -0
  147. package/src/api-public/services/shopee.js.map +1 -1
  148. package/src/api-public/services/shopping.js +5 -9
  149. package/src/api-public/services/shopping.js.map +1 -1
  150. package/src/api-public/services/shopping.ts +4 -10
  151. package/src/api-public/services/sms-pointes.js.map +1 -1
  152. package/src/api-public/services/sms.js.map +1 -1
  153. package/src/api-public/services/stock.js.map +1 -1
  154. package/src/api-public/services/terms-check.js.map +1 -1
  155. package/src/api-public/services/updated-table-checked.js.map +1 -1
  156. package/src/api-public/services/user-update.js.map +1 -1
  157. package/src/api-public/services/user.d.ts +6 -1
  158. package/src/api-public/services/user.js +23 -15
  159. package/src/api-public/services/user.js.map +1 -1
  160. package/src/api-public/services/user.ts +100 -90
  161. package/src/api-public/services/voucher.js.map +1 -1
  162. package/src/api-public/services/wallet.js.map +1 -1
  163. package/src/api-public/services/workers.js.map +1 -1
  164. package/src/api-public/utils/ut-database.js.map +1 -1
  165. package/src/api-public/utils/ut-permission.d.ts +1 -0
  166. package/src/api-public/utils/ut-permission.js.map +1 -1
  167. package/src/app-project/serverless/src/controllers/index.js.map +1 -1
  168. package/src/app-project/serverless/src/controllers/sample.js.map +1 -1
  169. package/src/app-project/serverless/src/modules/database.d.ts +2 -1
  170. package/src/app-project/serverless/src/modules/database.js.map +1 -1
  171. package/src/app-project/serverless/src/modules/exception.js.map +1 -1
  172. package/src/app-project/serverless/src/modules/hooks.js.map +1 -1
  173. package/src/app-project/serverless/src/modules/logger.js.map +1 -1
  174. package/src/app-project/serverless/src/modules/redis.d.ts +1 -1
  175. package/src/app-project/serverless/src/modules/redis.js.map +1 -1
  176. package/src/app-project/serverless/src/modules/response.js.map +1 -1
  177. package/src/app-project/serverless/src/modules/ssh.js.map +1 -1
  178. package/src/config.d.ts +1 -1
  179. package/src/config.js.map +1 -1
  180. package/src/controllers/ai.js.map +1 -1
  181. package/src/controllers/app.js.map +1 -1
  182. package/src/controllers/backend-server.js.map +1 -1
  183. package/src/controllers/filemanager.js.map +1 -1
  184. package/src/controllers/global-event.js.map +1 -1
  185. package/src/controllers/index.js.map +1 -1
  186. package/src/controllers/page.js.map +1 -1
  187. package/src/controllers/private_config.js.map +1 -1
  188. package/src/controllers/template.js.map +1 -1
  189. package/src/controllers/user.js.map +1 -1
  190. package/src/domain-check.js.map +1 -1
  191. package/src/export/export-test.js.map +1 -1
  192. package/src/firebase/message.js +2 -1
  193. package/src/firebase/message.js.map +1 -1
  194. package/src/helper/app_creater.js +2 -1
  195. package/src/helper/app_creater.js.map +1 -1
  196. package/src/helper/glitter-util.d.ts +1 -0
  197. package/src/helper/glitter-util.js.map +1 -1
  198. package/src/index.js +3 -3
  199. package/src/index.js.map +1 -1
  200. package/src/lambda/interface.d.ts +1 -1
  201. package/src/lambda/interface.js +2 -2
  202. package/src/lambda/interface.js.map +1 -1
  203. package/src/modules/AWSLib.js +3 -2
  204. package/src/modules/AWSLib.js.map +1 -1
  205. package/src/modules/caught-error.js.map +1 -1
  206. package/src/modules/database.d.ts +2 -1
  207. package/src/modules/database.js.map +1 -1
  208. package/src/modules/exception.js.map +1 -1
  209. package/src/modules/firebase.js.map +1 -1
  210. package/src/modules/hooks.js.map +1 -1
  211. package/src/modules/logger.js.map +1 -1
  212. package/src/modules/redis.d.ts +1 -1
  213. package/src/modules/redis.js.map +1 -1
  214. package/src/modules/response.js.map +1 -1
  215. package/src/modules/ssh.js.map +1 -1
  216. package/src/modules/tool.d.ts +4 -4
  217. package/src/modules/tool.js +2 -1
  218. package/src/modules/tool.js.map +1 -1
  219. package/src/public-config-initial/auto-fcm.js.map +1 -1
  220. package/src/run.js +2 -1
  221. package/src/run.js.map +1 -1
  222. package/src/seo-config.d.ts +1 -0
  223. package/src/seo-config.js +3 -3
  224. package/src/seo-config.js.map +1 -1
  225. package/src/services/ai.js.map +1 -1
  226. package/src/services/app.js.map +1 -1
  227. package/src/services/backend-service.js.map +1 -1
  228. package/src/services/create-instance.js +4 -3
  229. package/src/services/create-instance.js.map +1 -1
  230. package/src/services/global-event.js.map +1 -1
  231. package/src/services/ios-release.js.map +1 -1
  232. package/src/services/page.js.map +1 -1
  233. package/src/services/private_config.js.map +1 -1
  234. package/src/services/release.js.map +1 -1
  235. package/src/services/saas-table-check.js +2 -2
  236. package/src/services/saas-table-check.js.map +1 -1
  237. package/src/services/seo.js.map +1 -1
  238. package/src/services/ses.js +2 -1
  239. package/src/services/ses.js.map +1 -1
  240. package/src/services/system-schedule.js.map +1 -1
  241. package/src/services/template.js.map +1 -1
  242. package/src/services/tool.js +3 -2
  243. package/src/services/tool.js.map +1 -1
  244. package/src/services/user.js.map +1 -1
  245. package/src/services/web-socket.js.map +1 -1
  246. package/src/update-progress-track.js.map +1 -1
  247. package/src/update-script.js.map +1 -1
  248. package/src/api-public/services/checkout-service.js +0 -1074
@@ -381,28 +381,47 @@ export class ShoppingOrderManager {
381
381
 
382
382
  ApiShop.getOrder(vm.apiJSON).then(async data => {
383
383
  async function getDatalist() {
384
- const payment_support = await PaymentConfig.getSupportPayment();
384
+ const [payment_support, watchUserList] = await Promise.all([
385
+ PaymentConfig.getSupportPayment(),
386
+ ApiUser.getUserListOrders({
387
+ page: 0,
388
+ limit: 99999,
389
+ filter_type: 'watch',
390
+ }),
391
+ ]).then(dataArray => {
392
+ return [dataArray[0], dataArray[1].response.data];
393
+ });
394
+
395
+ const watchUsers = [
396
+ ...new Set(
397
+ watchUserList
398
+ .map((item: any) => {
399
+ return [item.account, item.email, item.phone];
400
+ })
401
+ .flat()
402
+ ),
403
+ ];
404
+
385
405
  return data.response.data.map((dd: any) => {
406
+ const vt = OrderSetting.getAllStatusBadge(dd);
386
407
  dd.orderData.total = dd.orderData.total || 0;
387
408
  dd.orderData.customer_info = dd.orderData.customer_info ?? {};
409
+
410
+ const isWatchUser = watchUsers.includes(dd.orderData.email);
411
+ const backgroundColor = isWatchUser ? `background-color: #ffe9b2` : '';
412
+ const tooltipText = isWatchUser ? '此份訂單的顧客為觀察名單' : '';
413
+
388
414
  if (query.isShipment) {
389
415
  return [
390
416
  {
391
417
  key: '訂單編號',
392
- value: html` <div class="d-flex align-items-center gap-2" style="min-width: 200px;">
393
- ${dd.cart_token}${(() => {
394
- switch (dd.order_source) {
395
- case 'manual':
396
- return BgWidget.primaryInsignia('手動', { type: 'border' });
397
- case 'combine':
398
- return BgWidget.warningInsignia('合併', { type: 'border' });
399
- case 'POS':
400
- return BgWidget.primaryInsignia('POS', { type: 'border' });
401
- default:
402
- return '';
403
- }
404
- })()}
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()}
405
423
  </div>`,
424
+ tooltip: tooltipText,
406
425
  },
407
426
  {
408
427
  key: '出貨日期',
@@ -412,30 +431,11 @@ export class ShoppingOrderManager {
412
431
  },
413
432
  {
414
433
  key: '訂購人',
415
- value: dd.orderData.user_info ? dd.orderData.user_info.name || '未填寫' : `匿名`,
434
+ value: dd.orderData.user_info ? dd.orderData.user_info.name || '未填寫' : '匿名',
416
435
  },
417
436
  {
418
437
  key: '出貨狀態',
419
- value: (() => {
420
- switch (dd.orderData.progress ?? 'wait') {
421
- case 'pre_order':
422
- return BgWidget.notifyInsignia('待預購');
423
- case 'wait':
424
- if (dd.orderData.user_info.shipment_number) {
425
- return BgWidget.secondaryInsignia('備貨中');
426
- } else {
427
- return BgWidget.notifyInsignia('未出貨');
428
- }
429
- case 'shipping':
430
- return BgWidget.warningInsignia('已出貨');
431
- case 'finish':
432
- return BgWidget.infoInsignia('已取貨');
433
- case 'arrived':
434
- return BgWidget.warningInsignia('已送達');
435
- case 'returns':
436
- return BgWidget.dangerInsignia('已退貨');
437
- }
438
- })(),
438
+ value: vt.outShipBadge(),
439
439
  },
440
440
  {
441
441
  key: '出貨單號碼',
@@ -449,25 +449,13 @@ export class ShoppingOrderManager {
449
449
  return [
450
450
  {
451
451
  key: '訂單編號',
452
- value: html` <div class="d-flex align-items-center gap-2" style="min-width: 200px;">
453
- ${dd.cart_token}${(() => {
454
- switch (dd.orderData.orderSource) {
455
- case 'manual':
456
- return BgWidget.primaryInsignia('手動', { type: 'border' });
457
- case 'combine':
458
- return BgWidget.warningInsignia('合併', { type: 'border' });
459
- case 'POS':
460
- if (vm.filter_type === 'pos') {
461
- return '';
462
- }
463
- return BgWidget.primaryInsignia('POS', { type: 'border' });
464
- case 'split':
465
- return BgWidget.warningInsignia('拆分', { type: 'border' });
466
- default:
467
- return '';
468
- }
469
- })()}
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()}
470
457
  </div>`,
458
+ tooltip: tooltipText,
471
459
  },
472
460
  {
473
461
  key: '訂單日期',
@@ -477,7 +465,7 @@ export class ShoppingOrderManager {
477
465
  },
478
466
  {
479
467
  key: '訂購人',
480
- value: dd.orderData.user_info ? dd.orderData.user_info.name || '未填寫' : `匿名`,
468
+ value: dd.orderData.user_info ? dd.orderData.user_info.name || '未填寫' : '匿名',
481
469
  },
482
470
  {
483
471
  key: '訂單金額',
@@ -485,62 +473,15 @@ export class ShoppingOrderManager {
485
473
  },
486
474
  {
487
475
  key: '付款狀態',
488
- value: (() => {
489
- switch (dd.status) {
490
- case 0:
491
- if (dd.orderData.proof_purchase) {
492
- return BgWidget.warningInsignia('待核款');
493
- }
494
- if (dd.orderData.customer_info.payment_select == 'cash_on_delivery') {
495
- return BgWidget.warningInsignia('貨到付款');
496
- }
497
- return BgWidget.notifyInsignia('未付款');
498
- case 3:
499
- return BgWidget.warningInsignia('部分付款');
500
- case 1:
501
- return BgWidget.infoInsignia('已付款');
502
- case -1:
503
- return BgWidget.notifyInsignia('付款失敗');
504
- case -2:
505
- return BgWidget.notifyInsignia('已退款');
506
- }
507
- })(),
476
+ value: vt.paymentBadge(),
508
477
  },
509
478
  {
510
479
  key: '出貨狀態',
511
- value: (() => {
512
- switch (dd.orderData.progress ?? 'wait') {
513
- case 'pre_order':
514
- return BgWidget.notifyInsignia('待預購');
515
- case 'wait':
516
- if (dd.orderData.user_info.shipment_number) {
517
- return BgWidget.secondaryInsignia('備貨中');
518
- } else {
519
- return BgWidget.notifyInsignia('未出貨');
520
- }
521
- case 'shipping':
522
- return BgWidget.warningInsignia('已出貨');
523
- case 'finish':
524
- return BgWidget.infoInsignia('已取貨');
525
- case 'arrived':
526
- return BgWidget.warningInsignia('已送達');
527
- case 'returns':
528
- return BgWidget.dangerInsignia('已退貨');
529
- }
530
- })(),
480
+ value: vt.outShipBadge(),
531
481
  },
532
482
  {
533
483
  key: '訂單狀態',
534
- value: (() => {
535
- switch (dd.orderData.orderStatus ?? '0') {
536
- case '-1':
537
- return BgWidget.notifyInsignia('已取消');
538
- case '0':
539
- return BgWidget.warningInsignia('處理中');
540
- case '1':
541
- return BgWidget.infoInsignia('已完成');
542
- }
543
- })(),
484
+ value: vt.orderStatusBadge(),
544
485
  },
545
486
  {
546
487
  key: '運送方式',
@@ -579,7 +520,7 @@ export class ShoppingOrderManager {
579
520
  return vm.headerConfig.includes(item.key);
580
521
  })
581
522
  .map((dd: any) => {
582
- dd.value = html` <div style="line-height:40px;">${dd.value}</div>`;
523
+ dd.value = html`<div style="line-height: 40px;">${dd.value}</div>`;
583
524
  return dd;
584
525
  });
585
526
  }
@@ -1223,7 +1164,6 @@ export class ShoppingOrderManager {
1223
1164
  splitOrder: () => {
1224
1165
  return html` <div
1225
1166
  class="funInsignia"
1226
- style=""
1227
1167
  onclick="${gvc.event(() => {
1228
1168
  if (orderData.orderData.orderSource == 'split') {
1229
1169
  return;
@@ -1238,10 +1178,14 @@ export class ShoppingOrderManager {
1238
1178
  };
1239
1179
 
1240
1180
  function getBadgeList() {
1241
- const vt = OrderSetting.getAllStatusBadge(orderData as any);
1242
- return html` <div style="display: flex; gap: 10px; justify-content: flex-end;">
1181
+ const vt = OrderSetting.getAllStatusBadge(orderData as any, 'sm');
1182
+ return html` <div class="d-flex justify-content-end align-items-center gap-3">
1243
1183
  ${vt.archivedBadge()}
1244
- ${vt.paymentBadge()}${vt.outShipBadge()}${vt.orderStatusBadge()}${OrderInfo.reconciliationStatus(orderData)}
1184
+ ${vt.paymentBadge()}${vt.outShipBadge()}${vt.orderStatusBadge()}${OrderInfo.reconciliationStatus(
1185
+ orderData,
1186
+ false,
1187
+ 'sm'
1188
+ )}
1245
1189
  </div>`;
1246
1190
  }
1247
1191
 
@@ -2000,14 +1944,21 @@ export class ShoppingOrderManager {
2000
1944
  <div class="align-items-center" style="gap:10px;color: #393939;font-size: 24px;font-weight: 700;">
2001
1945
  #${is_shipment ? orderData.orderData.user_info.shipment_number : orderData.cart_token}
2002
1946
  </div>
2003
-
2004
- ${BgWidget.grayNote(`訂單成立時間 : ${Tool.formatDateTime(orderData.created_time)}`)}
1947
+ <div class="d-flex align-items-center gap-2">
1948
+ ${BgWidget.grayNote(`訂單成立時間 : ${Tool.formatDateTime(orderData.created_time)}`)}
1949
+ ${document.body.clientWidth > 768 ? getBadgeList() : ''}
1950
+ </div>
2005
1951
  </div>
2006
1952
  <div class="flex-fill"></div>
2007
- ${document.body.clientWidth > 768 ? getBadgeList() : ''}
1953
+ <div
1954
+ class="${orderData.orderData.orderSource === 'split' ? 'd-none' : 'd-flex'} justify-content-end"
1955
+ >
1956
+ ${funBTN().splitOrder()}
1957
+ </div>
2008
1958
  </div>
2009
- ${document.body.clientWidth > 768 ? '' : html` <div class="mt-1 mb-3">${getBadgeList()}</div>`}
2010
- <div class="d-flex justify-content-end">${funBTN().splitOrder()}</div>
1959
+ ${document.body.clientWidth > 768
1960
+ ? BgWidget.mbContainer(18)
1961
+ : html` <div class="mt-1 mb-3 mx-1">${getBadgeList()}</div>`}
2011
1962
  ${BgWidget.container1x2(
2012
1963
  {
2013
1964
  html: [
@@ -2196,12 +2147,14 @@ export class ShoppingOrderManager {
2196
2147
  return [];
2197
2148
  }
2198
2149
  })(),
2199
- ...orderData.orderData.voucherList.map((dd: any) => {
2200
- const descHTML = html` <div
2201
- style="color: #8D8D8D; font-size: 14px; white-space: nowrap; text-overflow: ellipsis;"
2202
- >
2203
- ${dd.title}
2204
- </div>`;
2150
+ ...(orderData.orderData.voucherList || []).map((dd: any) => {
2151
+ const descHTML = dd.title
2152
+ ? html` <div
2153
+ style="color: #8D8D8D; font-size: 14px; white-space: nowrap; text-overflow: ellipsis;"
2154
+ >
2155
+ ${dd.title}
2156
+ </div>`
2157
+ : '';
2205
2158
  const rebackMaps: Record<
2206
2159
  string,
2207
2160
  {
@@ -2229,6 +2182,10 @@ export class ShoppingOrderManager {
2229
2182
  title: dd.id == 0 ? '手動調整' : '折扣',
2230
2183
  description: descHTML,
2231
2184
  total: (() => {
2185
+ if (orderData.orderData.orderSource === 'split') {
2186
+ return `- $${orderData.orderData.discount.toLocaleString()}`;
2187
+ }
2188
+
2232
2189
  const status = dd.discount_total > 0;
2233
2190
  const isMinus = status ? '-' : '';
2234
2191
  const isNegative = status ? 1 : -1;
@@ -2949,6 +2906,9 @@ export class ShoppingOrderManager {
2949
2906
  <div style="color: #393939;font-weight: 400;word-break:break-all;">
2950
2907
  ${userData?.userData?.email ?? orderData.orderData.user_info.email ?? ''}
2951
2908
  </div>
2909
+ <div style="color: #393939;font-weight: 700;">
2910
+ ${userData.status === 2 ? '* 此顧客列為觀察名單' : ''}
2911
+ </div>
2952
2912
  </div>`,
2953
2913
  BgWidget.horizontalLine(),
2954
2914
  gvc.bindView({
@@ -4000,13 +3960,46 @@ export class ShoppingOrderManager {
4000
3960
  ${gvc.bindView({
4001
3961
  bind: 'addProduct',
4002
3962
  view: () => {
4003
- return html`
4004
- <div
4005
- class="w-100 d-flex justify-content-center align-items-center"
4006
- style="color: #36B;"
4007
- onclick="${gvc.event(() => {
3963
+ return BgWidget.plusButton({
3964
+ title: '新增一個商品',
3965
+ event: gvc.event(() => {
3966
+ BgWidget.dialog({
3967
+ gvc,
3968
+ title: '選擇商品種類',
3969
+ innerHTML: gvc => {
3970
+ const buttonHTML = [
3971
+ { title: '一般商品', value: 'product' },
3972
+ { title: '加購品', value: 'addProduct' },
3973
+ { title: '贈品', value: 'giveaway' },
3974
+ { title: '隱形商品', value: 'hidden' },
3975
+ ]
3976
+ .map(item => {
3977
+ return html`<div class="col-6 p-2">
3978
+ ${BgWidget.customButton({
3979
+ button: {
3980
+ color: 'snow',
3981
+ size: 'md',
3982
+ class: 'w-100',
3983
+ style: 'min-height: 60px;',
3984
+ },
3985
+ text: {
3986
+ name: item.title,
3987
+ },
3988
+ event: gvc.event(() => {
3989
+ gvc.closeDialog();
3990
+ productDialog(item.value);
3991
+ }),
3992
+ })}
3993
+ </div>`;
3994
+ })
3995
+ .join('');
3996
+ return html`<div class="row px-1">${buttonHTML}</div>`;
3997
+ },
3998
+ });
3999
+
4000
+ function productDialog(type: string) {
4008
4001
  let confirm = true;
4009
- (window.parent as any).glitter.innerDialog(
4002
+ return (window.parent as any).glitter.innerDialog(
4010
4003
  (gvc: GVC) => {
4011
4004
  newOrder.query = '';
4012
4005
  newOrder.search = '';
@@ -4056,7 +4049,6 @@ export class ShoppingOrderManager {
4056
4049
  value="${newOrder.query ?? ''}"
4057
4050
  />
4058
4051
  </div>
4059
-
4060
4052
  ${BgWidget.updownFilter({
4061
4053
  gvc,
4062
4054
  callback: (value: any) => {
@@ -4082,6 +4074,8 @@ export class ShoppingOrderManager {
4082
4074
  search: newOrder.query,
4083
4075
  orderBy: newOrder.orderString,
4084
4076
  status: 'inRange',
4077
+ filter_visible: `${type !== 'hidden'}`,
4078
+ productType: type === 'hidden' ? 'product' : type,
4085
4079
  }).then(data => {
4086
4080
  searchLoading = true;
4087
4081
  newOrder.productArray = data.response.data;
@@ -4226,6 +4220,9 @@ export class ShoppingOrderManager {
4226
4220
  newOrder.productTemp = [];
4227
4221
  newOrder.productArray.map((product: any) => {
4228
4222
  if (product.select) {
4223
+ if (type === 'giveaway') {
4224
+ product.content.variants.forEach((item: any) => (item.sale_price = 0));
4225
+ }
4229
4226
  newOrder.productTemp.push(product);
4230
4227
  }
4231
4228
  });
@@ -4267,37 +4264,12 @@ export class ShoppingOrderManager {
4267
4264
  },
4268
4265
  }
4269
4266
  );
4270
- })}"
4271
- >
4272
- 新增一個商品
4273
- <svg
4274
- style="margin-left: 5px;"
4275
- xmlns="http://www.w3.org/2000/svg"
4276
- width="14"
4277
- height="14"
4278
- viewBox="0 0 14 14"
4279
- fill="none"
4280
- >
4281
- <path
4282
- d="M1.5 7.23926H12.5"
4283
- stroke="#3366BB"
4284
- stroke-width="2"
4285
- stroke-linecap="round"
4286
- stroke-linejoin="round"
4287
- />
4288
- <path
4289
- d="M6.76172 1.5L6.76172 12.5"
4290
- stroke="#3366BB"
4291
- stroke-width="2"
4292
- stroke-linecap="round"
4293
- stroke-linejoin="round"
4294
- />
4295
- </svg>
4296
- </div>
4297
- `;
4267
+ }
4268
+ }),
4269
+ });
4298
4270
  },
4299
4271
  divCreate: {
4300
- style: `width: 100%;display: flex;align-items: center;margin:24px 0;cursor: pointer;`,
4272
+ style: 'width: 100%; display: flex; align-items: center; margin: 24px 0;',
4301
4273
  },
4302
4274
  })}
4303
4275
  ${BgWidget.horizontalLine()} ${showOrderDetail()}
@@ -106,7 +106,7 @@ export class ShoppingReturnOrderManager {
106
106
  archived: vm.filter_type === 'normal' ? `false` : `true`,
107
107
  }).then(data => {
108
108
  function getDatalist() {
109
- return data.response.data.map((dd) => {
109
+ return (data.response.data || []).map((dd) => {
110
110
  return [
111
111
  {
112
112
  key: '退貨單編號',
@@ -133,7 +133,7 @@ export class ShoppingReturnOrderManager {
133
133
  archived: vm.filter_type === 'normal' ? `false` : `true`,
134
134
  }).then(data => {
135
135
  function getDatalist() {
136
- return data.response.data.map((dd: any) => {
136
+ return (data.response.data || []).map((dd: any) => {
137
137
  return [
138
138
  {
139
139
  key: '退貨單編號',
@@ -223,9 +223,9 @@ export class ShoppingProductSetting {
223
223
  return undefined;
224
224
  })(),
225
225
  filter_visible: `${type !== 'hidden'}`,
226
+ productType: type === 'hidden' ? 'product' : type,
226
227
  collection: vm.filter.collection,
227
228
  accurate_search_collection: true,
228
- productType: type === 'hidden' ? 'product' : type,
229
229
  general_tag: (() => {
230
230
  if (vm.filter.general_tag && vm.filter.general_tag.length > 0) {
231
231
  return vm.filter.general_tag.join(',');
@@ -253,7 +253,7 @@ export class ShoppingProductSetting {
253
253
  width: 40,
254
254
  class: 'rounded border me-2',
255
255
  })}
256
- <div class="d-flex flex-column" style="">
256
+ <div class="d-flex flex-column">
257
257
  ${dd.content.shopee_id
258
258
  ? html `<div style="margin-bottom: -10px;">
259
259
  <div
@@ -1280,7 +1280,7 @@ export class ShoppingProductSetting {
1280
1280
  const categoryTitle = categoryTitleMap[postMD.product_category] || '商品';
1281
1281
  return [
1282
1282
  BgWidget.container(html `
1283
- <div class="title-container flex-column flex-sm-row" style="">
1283
+ <div class="title-container flex-column flex-sm-row">
1284
1284
  <div class="d-flex align-items-center w-100">
1285
1285
  ${BgWidget.goBack(obj.gvc.event(() => {
1286
1286
  if (window.parent.glitter.share.checkData &&
@@ -280,9 +280,9 @@ export class ShoppingProductSetting {
280
280
  return undefined;
281
281
  })(),
282
282
  filter_visible: `${type !== 'hidden'}`,
283
+ productType: type === 'hidden' ? 'product' : type,
283
284
  collection: vm.filter.collection,
284
285
  accurate_search_collection: true,
285
- productType: type === 'hidden' ? 'product' : type,
286
286
  general_tag: (() => {
287
287
  if (vm.filter.general_tag && vm.filter.general_tag.length > 0) {
288
288
  return vm.filter.general_tag.join(',');
@@ -309,7 +309,7 @@ export class ShoppingProductSetting {
309
309
  width: 40,
310
310
  class: 'rounded border me-2',
311
311
  })}
312
- <div class="d-flex flex-column" style="">
312
+ <div class="d-flex flex-column">
313
313
  ${dd.content.shopee_id
314
314
  ? html`<div style="margin-bottom: -10px;">
315
315
  <div
@@ -1534,7 +1534,7 @@ export class ShoppingProductSetting {
1534
1534
  const categoryTitle = categoryTitleMap[postMD.product_category] || '商品';
1535
1535
  return [
1536
1536
  BgWidget.container(html`
1537
- <div class="title-container flex-column flex-sm-row" style="">
1537
+ <div class="title-container flex-column flex-sm-row">
1538
1538
  <div class="d-flex align-items-center w-100">
1539
1539
  ${BgWidget.goBack(
1540
1540
  obj.gvc.event(() => {
@@ -990,34 +990,9 @@ export class ShoppingSettingAdvance {
990
990
  postMD.email_notice = content;
991
991
  },
992
992
  title: '內容編輯',
993
- quick_insert: (() => {
994
- return [
995
- {
996
- title: '商家名稱',
997
- value: '@{{app_name}}',
998
- },
999
- {
1000
- title: '會員姓名',
1001
- value: '@{{user_name}}',
1002
- },
1003
- {
1004
- title: '姓名',
1005
- value: '@{{姓名}}',
1006
- },
1007
- {
1008
- title: '電話',
1009
- value: '@{{電話}}',
1010
- },
1011
- {
1012
- title: '地址',
1013
- value: '@{{地址}}',
1014
- },
1015
- {
1016
- title: '信箱',
1017
- value: '@{{信箱}}',
1018
- },
1019
- ];
1020
- })(),
993
+ quick_insert: BgWidget.richTextQuickList.filter(item => {
994
+ return !['訂單號碼', '訂單金額'].includes(item.title);
995
+ }),
1021
996
  })}
1022
997
  `;
1023
998
  }
@@ -1090,34 +1090,9 @@ export class ShoppingSettingAdvance {
1090
1090
  postMD.email_notice = content;
1091
1091
  },
1092
1092
  title: '內容編輯',
1093
- quick_insert: (() => {
1094
- return [
1095
- {
1096
- title: '商家名稱',
1097
- value: '@{{app_name}}',
1098
- },
1099
- {
1100
- title: '會員姓名',
1101
- value: '@{{user_name}}',
1102
- },
1103
- {
1104
- title: '姓名',
1105
- value: '@{{姓名}}',
1106
- },
1107
- {
1108
- title: '電話',
1109
- value: '@{{電話}}',
1110
- },
1111
- {
1112
- title: '地址',
1113
- value: '@{{地址}}',
1114
- },
1115
- {
1116
- title: '信箱',
1117
- value: '@{{信箱}}',
1118
- },
1119
- ];
1120
- })(),
1093
+ quick_insert: BgWidget.richTextQuickList.filter(item => {
1094
+ return !['訂單號碼', '訂單金額'].includes(item.title);
1095
+ }),
1121
1096
  })}
1122
1097
  `;
1123
1098
  } catch (e) {