ts-glitter 20.7.4 → 20.7.6

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 (250) 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 -16
  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 +1 -3
  206. package/src/modules/caught-error.js.map +1 -1
  207. package/src/modules/caught-error.ts +1 -3
  208. package/src/modules/database.d.ts +2 -1
  209. package/src/modules/database.js.map +1 -1
  210. package/src/modules/exception.js.map +1 -1
  211. package/src/modules/firebase.js.map +1 -1
  212. package/src/modules/hooks.js.map +1 -1
  213. package/src/modules/logger.js.map +1 -1
  214. package/src/modules/redis.d.ts +1 -1
  215. package/src/modules/redis.js.map +1 -1
  216. package/src/modules/response.js.map +1 -1
  217. package/src/modules/ssh.js.map +1 -1
  218. package/src/modules/tool.d.ts +4 -4
  219. package/src/modules/tool.js +2 -1
  220. package/src/modules/tool.js.map +1 -1
  221. package/src/public-config-initial/auto-fcm.js.map +1 -1
  222. package/src/run.js +2 -1
  223. package/src/run.js.map +1 -1
  224. package/src/seo-config.d.ts +1 -0
  225. package/src/seo-config.js +3 -3
  226. package/src/seo-config.js.map +1 -1
  227. package/src/services/ai.js.map +1 -1
  228. package/src/services/app.js.map +1 -1
  229. package/src/services/backend-service.js.map +1 -1
  230. package/src/services/create-instance.js +4 -3
  231. package/src/services/create-instance.js.map +1 -1
  232. package/src/services/global-event.js.map +1 -1
  233. package/src/services/ios-release.js.map +1 -1
  234. package/src/services/page.js.map +1 -1
  235. package/src/services/private_config.js.map +1 -1
  236. package/src/services/release.js.map +1 -1
  237. package/src/services/saas-table-check.js +2 -2
  238. package/src/services/saas-table-check.js.map +1 -1
  239. package/src/services/seo.js.map +1 -1
  240. package/src/services/ses.js +2 -1
  241. package/src/services/ses.js.map +1 -1
  242. package/src/services/system-schedule.js.map +1 -1
  243. package/src/services/template.js.map +1 -1
  244. package/src/services/tool.js +3 -2
  245. package/src/services/tool.js.map +1 -1
  246. package/src/services/user.js.map +1 -1
  247. package/src/services/web-socket.js.map +1 -1
  248. package/src/update-progress-track.js.map +1 -1
  249. package/src/update-script.js.map +1 -1
  250. package/src/api-public/services/checkout-service.js +0 -1074
@@ -314,29 +314,42 @@ export class ShoppingOrderManager {
314
314
  ApiShop.getOrder(vm.apiJSON).then((data) => __awaiter(this, void 0, void 0, function* () {
315
315
  function getDatalist() {
316
316
  return __awaiter(this, void 0, void 0, function* () {
317
- const payment_support = yield PaymentConfig.getSupportPayment();
317
+ const [payment_support, watchUserList] = yield Promise.all([
318
+ PaymentConfig.getSupportPayment(),
319
+ ApiUser.getUserListOrders({
320
+ page: 0,
321
+ limit: 99999,
322
+ filter_type: 'watch',
323
+ }),
324
+ ]).then(dataArray => {
325
+ return [dataArray[0], dataArray[1].response.data];
326
+ });
327
+ const watchUsers = [
328
+ ...new Set(watchUserList
329
+ .map((item) => {
330
+ return [item.account, item.email, item.phone];
331
+ })
332
+ .flat()),
333
+ ];
318
334
  return data.response.data.map((dd) => {
319
335
  var _a;
336
+ const vt = OrderSetting.getAllStatusBadge(dd);
320
337
  dd.orderData.total = dd.orderData.total || 0;
321
338
  dd.orderData.customer_info = (_a = dd.orderData.customer_info) !== null && _a !== void 0 ? _a : {};
339
+ const isWatchUser = watchUsers.includes(dd.orderData.email);
340
+ const backgroundColor = isWatchUser ? `background-color: #ffe9b2` : '';
341
+ const tooltipText = isWatchUser ? '此份訂單的顧客為觀察名單' : '';
322
342
  if (query.isShipment) {
323
343
  return [
324
344
  {
325
345
  key: '訂單編號',
326
- value: html ` <div class="d-flex align-items-center gap-2" style="min-width: 200px;">
327
- ${dd.cart_token}${(() => {
328
- switch (dd.order_source) {
329
- case 'manual':
330
- return BgWidget.primaryInsignia('手動', { type: 'border' });
331
- case 'combine':
332
- return BgWidget.warningInsignia('合併', { type: 'border' });
333
- case 'POS':
334
- return BgWidget.primaryInsignia('POS', { type: 'border' });
335
- default:
336
- return '';
337
- }
338
- })()}
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()}
339
351
  </div>`,
352
+ tooltip: tooltipText,
340
353
  },
341
354
  {
342
355
  key: '出貨日期',
@@ -346,32 +359,11 @@ export class ShoppingOrderManager {
346
359
  },
347
360
  {
348
361
  key: '訂購人',
349
- value: dd.orderData.user_info ? dd.orderData.user_info.name || '未填寫' : `匿名`,
362
+ value: dd.orderData.user_info ? dd.orderData.user_info.name || '未填寫' : '匿名',
350
363
  },
351
364
  {
352
365
  key: '出貨狀態',
353
- value: (() => {
354
- var _a;
355
- switch ((_a = dd.orderData.progress) !== null && _a !== void 0 ? _a : 'wait') {
356
- case 'pre_order':
357
- return BgWidget.notifyInsignia('待預購');
358
- case 'wait':
359
- if (dd.orderData.user_info.shipment_number) {
360
- return BgWidget.secondaryInsignia('備貨中');
361
- }
362
- else {
363
- return BgWidget.notifyInsignia('未出貨');
364
- }
365
- case 'shipping':
366
- return BgWidget.warningInsignia('已出貨');
367
- case 'finish':
368
- return BgWidget.infoInsignia('已取貨');
369
- case 'arrived':
370
- return BgWidget.warningInsignia('已送達');
371
- case 'returns':
372
- return BgWidget.dangerInsignia('已退貨');
373
- }
374
- })(),
366
+ value: vt.outShipBadge(),
375
367
  },
376
368
  {
377
369
  key: '出貨單號碼',
@@ -386,25 +378,13 @@ export class ShoppingOrderManager {
386
378
  return [
387
379
  {
388
380
  key: '訂單編號',
389
- value: html ` <div class="d-flex align-items-center gap-2" style="min-width: 200px;">
390
- ${dd.cart_token}${(() => {
391
- switch (dd.orderData.orderSource) {
392
- case 'manual':
393
- return BgWidget.primaryInsignia('手動', { type: 'border' });
394
- case 'combine':
395
- return BgWidget.warningInsignia('合併', { type: 'border' });
396
- case 'POS':
397
- if (vm.filter_type === 'pos') {
398
- return '';
399
- }
400
- return BgWidget.primaryInsignia('POS', { type: 'border' });
401
- case 'split':
402
- return BgWidget.warningInsignia('拆分', { type: 'border' });
403
- default:
404
- return '';
405
- }
406
- })()}
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()}
407
386
  </div>`,
387
+ tooltip: tooltipText,
408
388
  },
409
389
  {
410
390
  key: '訂單日期',
@@ -414,7 +394,7 @@ export class ShoppingOrderManager {
414
394
  },
415
395
  {
416
396
  key: '訂購人',
417
- value: dd.orderData.user_info ? dd.orderData.user_info.name || '未填寫' : `匿名`,
397
+ value: dd.orderData.user_info ? dd.orderData.user_info.name || '未填寫' : '匿名',
418
398
  },
419
399
  {
420
400
  key: '訂單金額',
@@ -422,65 +402,15 @@ export class ShoppingOrderManager {
422
402
  },
423
403
  {
424
404
  key: '付款狀態',
425
- value: (() => {
426
- switch (dd.status) {
427
- case 0:
428
- if (dd.orderData.proof_purchase) {
429
- return BgWidget.warningInsignia('待核款');
430
- }
431
- if (dd.orderData.customer_info.payment_select == 'cash_on_delivery') {
432
- return BgWidget.warningInsignia('貨到付款');
433
- }
434
- return BgWidget.notifyInsignia('未付款');
435
- case 3:
436
- return BgWidget.warningInsignia('部分付款');
437
- case 1:
438
- return BgWidget.infoInsignia('已付款');
439
- case -1:
440
- return BgWidget.notifyInsignia('付款失敗');
441
- case -2:
442
- return BgWidget.notifyInsignia('已退款');
443
- }
444
- })(),
405
+ value: vt.paymentBadge(),
445
406
  },
446
407
  {
447
408
  key: '出貨狀態',
448
- value: (() => {
449
- var _a;
450
- switch ((_a = dd.orderData.progress) !== null && _a !== void 0 ? _a : 'wait') {
451
- case 'pre_order':
452
- return BgWidget.notifyInsignia('待預購');
453
- case 'wait':
454
- if (dd.orderData.user_info.shipment_number) {
455
- return BgWidget.secondaryInsignia('備貨中');
456
- }
457
- else {
458
- return BgWidget.notifyInsignia('未出貨');
459
- }
460
- case 'shipping':
461
- return BgWidget.warningInsignia('已出貨');
462
- case 'finish':
463
- return BgWidget.infoInsignia('已取貨');
464
- case 'arrived':
465
- return BgWidget.warningInsignia('已送達');
466
- case 'returns':
467
- return BgWidget.dangerInsignia('已退貨');
468
- }
469
- })(),
409
+ value: vt.outShipBadge(),
470
410
  },
471
411
  {
472
412
  key: '訂單狀態',
473
- value: (() => {
474
- var _a;
475
- switch ((_a = dd.orderData.orderStatus) !== null && _a !== void 0 ? _a : '0') {
476
- case '-1':
477
- return BgWidget.notifyInsignia('已取消');
478
- case '0':
479
- return BgWidget.warningInsignia('處理中');
480
- case '1':
481
- return BgWidget.infoInsignia('已完成');
482
- }
483
- })(),
413
+ value: vt.orderStatusBadge(),
484
414
  },
485
415
  {
486
416
  key: '運送方式',
@@ -517,7 +447,7 @@ export class ShoppingOrderManager {
517
447
  return vm.headerConfig.includes(item.key);
518
448
  })
519
449
  .map((dd) => {
520
- dd.value = html ` <div style="line-height:40px;">${dd.value}</div>`;
450
+ dd.value = html `<div style="line-height: 40px;">${dd.value}</div>`;
521
451
  return dd;
522
452
  });
523
453
  }
@@ -1105,7 +1035,6 @@ export class ShoppingOrderManager {
1105
1035
  splitOrder: () => {
1106
1036
  return html ` <div
1107
1037
  class="funInsignia"
1108
- style=""
1109
1038
  onclick="${gvc.event(() => {
1110
1039
  if (orderData.orderData.orderSource == 'split') {
1111
1040
  return;
@@ -1119,10 +1048,10 @@ export class ShoppingOrderManager {
1119
1048
  };
1120
1049
  };
1121
1050
  function getBadgeList() {
1122
- const vt = OrderSetting.getAllStatusBadge(orderData);
1123
- return html ` <div style="display: flex; gap: 10px; justify-content: flex-end;">
1051
+ const vt = OrderSetting.getAllStatusBadge(orderData, 'sm');
1052
+ return html ` <div class="d-flex justify-content-end align-items-center gap-3">
1124
1053
  ${vt.archivedBadge()}
1125
- ${vt.paymentBadge()}${vt.outShipBadge()}${vt.orderStatusBadge()}${OrderInfo.reconciliationStatus(orderData)}
1054
+ ${vt.paymentBadge()}${vt.outShipBadge()}${vt.orderStatusBadge()}${OrderInfo.reconciliationStatus(orderData, false, 'sm')}
1126
1055
  </div>`;
1127
1056
  }
1128
1057
  if (!['CVSStoreID', 'CVSStoreName', 'CVSAddress'].find(dd => {
@@ -1798,14 +1727,21 @@ export class ShoppingOrderManager {
1798
1727
  <div class="align-items-center" style="gap:10px;color: #393939;font-size: 24px;font-weight: 700;">
1799
1728
  #${is_shipment ? orderData.orderData.user_info.shipment_number : orderData.cart_token}
1800
1729
  </div>
1801
-
1802
- ${BgWidget.grayNote(`訂單成立時間 : ${Tool.formatDateTime(orderData.created_time)}`)}
1730
+ <div class="d-flex align-items-center gap-2">
1731
+ ${BgWidget.grayNote(`訂單成立時間 : ${Tool.formatDateTime(orderData.created_time)}`)}
1732
+ ${document.body.clientWidth > 768 ? getBadgeList() : ''}
1733
+ </div>
1803
1734
  </div>
1804
1735
  <div class="flex-fill"></div>
1805
- ${document.body.clientWidth > 768 ? getBadgeList() : ''}
1736
+ <div
1737
+ class="${orderData.orderData.orderSource === 'split' ? 'd-none' : 'd-flex'} justify-content-end"
1738
+ >
1739
+ ${funBTN().splitOrder()}
1740
+ </div>
1806
1741
  </div>
1807
- ${document.body.clientWidth > 768 ? '' : html ` <div class="mt-1 mb-3">${getBadgeList()}</div>`}
1808
- <div class="d-flex justify-content-end">${funBTN().splitOrder()}</div>
1742
+ ${document.body.clientWidth > 768
1743
+ ? BgWidget.mbContainer(18)
1744
+ : html ` <div class="mt-1 mb-3 mx-1">${getBadgeList()}</div>`}
1809
1745
  ${BgWidget.container1x2({
1810
1746
  html: [
1811
1747
  !is_shipment ? '' : shipment_card,
@@ -1991,13 +1927,15 @@ export class ShoppingOrderManager {
1991
1927
  return [];
1992
1928
  }
1993
1929
  })(),
1994
- ...orderData.orderData.voucherList.map((dd) => {
1930
+ ...(orderData.orderData.voucherList || []).map((dd) => {
1995
1931
  var _a;
1996
- const descHTML = html ` <div
1997
- style="color: #8D8D8D; font-size: 14px; white-space: nowrap; text-overflow: ellipsis;"
1998
- >
1999
- ${dd.title}
2000
- </div>`;
1932
+ const descHTML = dd.title
1933
+ ? html ` <div
1934
+ style="color: #8D8D8D; font-size: 14px; white-space: nowrap; text-overflow: ellipsis;"
1935
+ >
1936
+ ${dd.title}
1937
+ </div>`
1938
+ : '';
2001
1939
  const rebackMaps = {
2002
1940
  add_on_items: {
2003
1941
  title: '加購優惠',
@@ -2018,6 +1956,9 @@ export class ShoppingOrderManager {
2018
1956
  title: dd.id == 0 ? '手動調整' : '折扣',
2019
1957
  description: descHTML,
2020
1958
  total: (() => {
1959
+ if (orderData.orderData.orderSource === 'split') {
1960
+ return `- $${orderData.orderData.discount.toLocaleString()}`;
1961
+ }
2021
1962
  const status = dd.discount_total > 0;
2022
1963
  const isMinus = status ? '-' : '';
2023
1964
  const isNegative = status ? 1 : -1;
@@ -2702,6 +2643,9 @@ export class ShoppingOrderManager {
2702
2643
  <div style="color: #393939;font-weight: 400;word-break:break-all;">
2703
2644
  ${(_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 : ''}
2704
2645
  </div>
2646
+ <div style="color: #393939;font-weight: 700;">
2647
+ ${userData.status === 2 ? '* 此顧客列為觀察名單' : ''}
2648
+ </div>
2705
2649
  </div>`,
2706
2650
  BgWidget.horizontalLine(),
2707
2651
  gvc.bindView({
@@ -3667,23 +3611,55 @@ export class ShoppingOrderManager {
3667
3611
  ${gvc.bindView({
3668
3612
  bind: 'addProduct',
3669
3613
  view: () => {
3670
- return html `
3671
- <div
3672
- class="w-100 d-flex justify-content-center align-items-center"
3673
- style="color: #36B;"
3674
- onclick="${gvc.event(() => {
3675
- let confirm = true;
3676
- window.parent.glitter.innerDialog((gvc) => {
3677
- newOrder.query = '';
3678
- newOrder.search = '';
3679
- newOrder.productArray = [];
3680
- return gvc.bindView({
3681
- bind: 'addDialog',
3682
- view: () => {
3683
- var _a;
3684
- let width = window.innerWidth > 1000 ? 690 : 350;
3685
- let searchLoading = false;
3686
- return html ` <div
3614
+ return BgWidget.plusButton({
3615
+ title: '新增一個商品',
3616
+ event: gvc.event(() => {
3617
+ BgWidget.dialog({
3618
+ gvc,
3619
+ title: '選擇商品種類',
3620
+ innerHTML: gvc => {
3621
+ const buttonHTML = [
3622
+ { title: '一般商品', value: 'product' },
3623
+ { title: '加購品', value: 'addProduct' },
3624
+ { title: '贈品', value: 'giveaway' },
3625
+ { title: '隱形商品', value: 'hidden' },
3626
+ ]
3627
+ .map(item => {
3628
+ return html `<div class="col-6 p-2">
3629
+ ${BgWidget.customButton({
3630
+ button: {
3631
+ color: 'snow',
3632
+ size: 'md',
3633
+ class: 'w-100',
3634
+ style: 'min-height: 60px;',
3635
+ },
3636
+ text: {
3637
+ name: item.title,
3638
+ },
3639
+ event: gvc.event(() => {
3640
+ gvc.closeDialog();
3641
+ productDialog(item.value);
3642
+ }),
3643
+ })}
3644
+ </div>`;
3645
+ })
3646
+ .join('');
3647
+ return html `<div class="row px-1">${buttonHTML}</div>`;
3648
+ },
3649
+ });
3650
+ function productDialog(type) {
3651
+ let confirm = true;
3652
+ return window.parent.glitter.innerDialog((gvc) => {
3653
+ newOrder.query = '';
3654
+ newOrder.search = '';
3655
+ newOrder.productArray = [];
3656
+ return gvc.bindView({
3657
+ bind: 'addDialog',
3658
+ view: () => {
3659
+ var _a;
3660
+ let width = window.innerWidth > 1000 ? 690 : 350;
3661
+ let searchLoading = false;
3662
+ return html ` <div
3687
3663
  style="display: flex;width: ${width}px;flex-direction: column;align-items: flex-start;gap: 18px;border-radius: 10px;background: #FFF;"
3688
3664
  >
3689
3665
  <div
@@ -3714,73 +3690,74 @@ export class ShoppingOrderManager {
3714
3690
  style="border-radius: 10px; border: 1px solid #DDD; padding-left: 50px;"
3715
3691
  placeholder="輸入商品名稱或商品貨號"
3716
3692
  oninput="${gvc.event(e => {
3717
- searchLoading = false;
3718
- newOrder.query = e.value;
3719
- newOrder.productArray = [];
3720
- gvc.notifyDataChange('productArray');
3721
- })}"
3693
+ searchLoading = false;
3694
+ newOrder.query = e.value;
3695
+ newOrder.productArray = [];
3696
+ gvc.notifyDataChange('productArray');
3697
+ })}"
3722
3698
  value="${(_a = newOrder.query) !== null && _a !== void 0 ? _a : ''}"
3723
3699
  />
3724
3700
  </div>
3725
-
3726
3701
  ${BgWidget.updownFilter({
3727
- gvc,
3728
- callback: (value) => {
3729
- searchLoading = false;
3730
- newOrder.orderString = value;
3731
- newOrder.productArray = [];
3732
- gvc.notifyDataChange('productArray');
3733
- },
3734
- default: newOrder.orderString || 'default',
3735
- options: FilterOptions.productOrderBy,
3736
- })}
3702
+ gvc,
3703
+ callback: (value) => {
3704
+ searchLoading = false;
3705
+ newOrder.orderString = value;
3706
+ newOrder.productArray = [];
3707
+ gvc.notifyDataChange('productArray');
3708
+ },
3709
+ default: newOrder.orderString || 'default',
3710
+ options: FilterOptions.productOrderBy,
3711
+ })}
3737
3712
  </div>
3738
3713
  <div
3739
3714
  style="height:350px;display: flex;justify-content: center;align-items: flex-start;padding-right: 24px;align-self: stretch;overflow-y: scroll;"
3740
3715
  >
3741
3716
  ${gvc.bindView({
3742
- bind: 'productArray',
3743
- view: () => {
3744
- if (!searchLoading) {
3745
- ApiShop.getProduct({
3746
- page: 0,
3747
- limit: 50,
3748
- search: newOrder.query,
3749
- orderBy: newOrder.orderString,
3750
- status: 'inRange',
3751
- }).then(data => {
3752
- searchLoading = true;
3753
- newOrder.productArray = data.response.data;
3754
- gvc.notifyDataChange('productArray');
3755
- });
3756
- return BgWidget.spinner();
3757
- }
3758
- if (newOrder.productArray.length == 0) {
3759
- return html ` <div
3717
+ bind: 'productArray',
3718
+ view: () => {
3719
+ if (!searchLoading) {
3720
+ ApiShop.getProduct({
3721
+ page: 0,
3722
+ limit: 50,
3723
+ search: newOrder.query,
3724
+ orderBy: newOrder.orderString,
3725
+ status: 'inRange',
3726
+ filter_visible: `${type !== 'hidden'}`,
3727
+ productType: type === 'hidden' ? 'product' : type,
3728
+ }).then(data => {
3729
+ searchLoading = true;
3730
+ newOrder.productArray = data.response.data;
3731
+ gvc.notifyDataChange('productArray');
3732
+ });
3733
+ return BgWidget.spinner();
3734
+ }
3735
+ if (newOrder.productArray.length == 0) {
3736
+ return html ` <div
3760
3737
  class="w-100 h-100 d-flex align-items-center justify-content-center"
3761
3738
  style="color:#8D8D8D;"
3762
3739
  >
3763
3740
  查無此商品
3764
3741
  </div>`;
3765
- }
3766
- return newOrder.productArray
3767
- .map((product, productIndex) => {
3768
- return gvc.bindView({
3769
- bind: `product${productIndex}`,
3770
- view: () => {
3771
- return html `
3742
+ }
3743
+ return newOrder.productArray
3744
+ .map((product, productIndex) => {
3745
+ return gvc.bindView({
3746
+ bind: `product${productIndex}`,
3747
+ view: () => {
3748
+ return html `
3772
3749
  ${(() => {
3773
- if (product.select) {
3774
- return html ` <svg
3750
+ if (product.select) {
3751
+ return html ` <svg
3775
3752
  xmlns="http://www.w3.org/2000/svg"
3776
3753
  width="16"
3777
3754
  height="16"
3778
3755
  viewBox="0 0 16 16"
3779
3756
  fill="none"
3780
3757
  onclick="${gvc.event(() => {
3781
- product.select = false;
3782
- gvc.notifyDataChange(`product${productIndex}`);
3783
- })}"
3758
+ product.select = false;
3759
+ gvc.notifyDataChange(`product${productIndex}`);
3760
+ })}"
3784
3761
  >
3785
3762
  <rect width="16" height="16" rx="3" fill="#393939" />
3786
3763
  <path
@@ -3791,29 +3768,29 @@ export class ShoppingOrderManager {
3791
3768
  stroke-linejoin="round"
3792
3769
  />
3793
3770
  </svg>`;
3794
- }
3795
- else {
3796
- return html `
3771
+ }
3772
+ else {
3773
+ return html `
3797
3774
  <div
3798
3775
  style="display: flex;align-items: center;justify-content: center;height: 60px;width: 16px;cursor: pointer;"
3799
3776
  onclick="${gvc.event(() => {
3800
- product.select = true;
3801
- if (product.content.variants.length > 1) {
3802
- product.selectIndex = window.parent.document.querySelector('.varitantSelect').value;
3803
- }
3804
- gvc.notifyDataChange(`product${productIndex}`);
3805
- })}"
3777
+ product.select = true;
3778
+ if (product.content.variants.length > 1) {
3779
+ product.selectIndex = window.parent.document.querySelector('.varitantSelect').value;
3780
+ }
3781
+ gvc.notifyDataChange(`product${productIndex}`);
3782
+ })}"
3806
3783
  >
3807
3784
  <div
3808
3785
  style="width: 16px;height: 16px;border-radius: 3px;border: 1px solid #DDD;cursor: pointer;"
3809
3786
  ></div>
3810
3787
  </div>
3811
3788
  `;
3812
- }
3813
- })()}
3789
+ }
3790
+ })()}
3814
3791
  <div
3815
3792
  style="width: 50px;height: 50px;border-radius: 5px;background: url('${product
3816
- .content.preview_image[0]}') lightgray 50% / cover no-repeat;"
3793
+ .content.preview_image[0]}') lightgray 50% / cover no-repeat;"
3817
3794
  ></div>
3818
3795
  <div class="flex-fill d-flex flex-column">
3819
3796
  <div
@@ -3822,17 +3799,17 @@ export class ShoppingOrderManager {
3822
3799
  ${product.content.title}
3823
3800
  </div>
3824
3801
  ${product.content.variants.length > 1
3825
- ? html `
3802
+ ? html `
3826
3803
  <select
3827
3804
  class="w-100 d-flex align-items-center form-select varitantSelect"
3828
3805
  style="border-radius: 10px;border: 1px solid #DDD;padding: 6px 18px;"
3829
3806
  onchange="${gvc.event(e => {
3830
- product.selectIndex = e.value;
3831
- })}"
3807
+ product.selectIndex = e.value;
3808
+ })}"
3832
3809
  >
3833
3810
  ${product.content.variants
3834
- .map((variant, index) => {
3835
- return html `
3811
+ .map((variant, index) => {
3812
+ return html `
3836
3813
  <option
3837
3814
  value="${index}"
3838
3815
  ${product.selectIndex == index ? 'selected' : ''}
@@ -3840,11 +3817,11 @@ export class ShoppingOrderManager {
3840
3817
  ${variant.spec.join(', ')}
3841
3818
  </option>
3842
3819
  `;
3843
- })
3844
- .join('')}
3820
+ })
3821
+ .join('')}
3845
3822
  </select>
3846
3823
  `
3847
- : html ` <div
3824
+ : html ` <div
3848
3825
  class="d-flex align-items-center"
3849
3826
  style="height: 34px;color: #8D8D8D;font-size: 14px;font-weight: 400;"
3850
3827
  >
@@ -3852,25 +3829,25 @@ export class ShoppingOrderManager {
3852
3829
  </div>`}
3853
3830
  </div>
3854
3831
  `;
3855
- },
3856
- divCreate: {
3857
- style: `
3832
+ },
3833
+ divCreate: {
3834
+ style: `
3858
3835
  display: flex;
3859
3836
  padding: 0px 12px;
3860
3837
  align-items: center;
3861
3838
  gap: 18px;
3862
3839
  align-self: stretch;
3863
3840
  `,
3864
- },
3865
- });
3866
- })
3867
- .join('');
3868
- },
3869
- divCreate: {
3870
- class: `d-flex flex-column h-100`,
3871
- style: `gap: 18px;width:100%;`,
3872
- },
3873
- })}
3841
+ },
3842
+ });
3843
+ })
3844
+ .join('');
3845
+ },
3846
+ divCreate: {
3847
+ class: `d-flex flex-column h-100`,
3848
+ style: `gap: 18px;width:100%;`,
3849
+ },
3850
+ })}
3874
3851
  </div>
3875
3852
  </div>
3876
3853
  <div
@@ -3878,83 +3855,61 @@ export class ShoppingOrderManager {
3878
3855
  style="display: flex;padding: 12px 20px;align-items: center;justify-content: end;gap: 10px;"
3879
3856
  >
3880
3857
  ${BgWidget.cancel(gvc.event(() => {
3881
- confirm = false;
3882
- gvc.closeDialog();
3883
- }))}
3858
+ confirm = false;
3859
+ gvc.closeDialog();
3860
+ }))}
3884
3861
  ${BgWidget.save(gvc.event(() => {
3885
- confirm = true;
3886
- newOrder.productTemp = [];
3887
- newOrder.productArray.map((product) => {
3888
- if (product.select) {
3889
- newOrder.productTemp.push(product);
3890
- }
3891
- });
3892
- gvc.closeDialog();
3893
- }))}
3862
+ confirm = true;
3863
+ newOrder.productTemp = [];
3864
+ newOrder.productArray.map((product) => {
3865
+ if (product.select) {
3866
+ if (type === 'giveaway') {
3867
+ product.content.variants.forEach((item) => (item.sale_price = 0));
3868
+ }
3869
+ newOrder.productTemp.push(product);
3870
+ }
3871
+ });
3872
+ gvc.closeDialog();
3873
+ }))}
3894
3874
  </div>
3895
3875
  </div>
3896
3876
  </div>`;
3897
- },
3898
- });
3899
- }, 'addProduct', {
3900
- dismiss: () => {
3901
- if (confirm) {
3902
- orderDetailRefresh = true;
3903
- if (newOrder.productCheck.length > 0) {
3904
- const updateProductCheck = (tempData) => {
3905
- var _a;
3906
- const productData = newOrder.productCheck.find((p) => {
3907
- return p.id === tempData.id && p.selectIndex === tempData.selectIndex;
3908
- });
3909
- if (productData) {
3910
- const index = parseInt((_a = productData.selectIndex) !== null && _a !== void 0 ? _a : '0', 10);
3911
- productData.content.variants[index].qty++;
3912
- tempData.add = true;
3877
+ },
3878
+ });
3879
+ }, 'addProduct', {
3880
+ dismiss: () => {
3881
+ if (confirm) {
3882
+ orderDetailRefresh = true;
3883
+ if (newOrder.productCheck.length > 0) {
3884
+ const updateProductCheck = (tempData) => {
3885
+ var _a;
3886
+ const productData = newOrder.productCheck.find((p) => {
3887
+ return p.id === tempData.id && p.selectIndex === tempData.selectIndex;
3888
+ });
3889
+ if (productData) {
3890
+ const index = parseInt((_a = productData.selectIndex) !== null && _a !== void 0 ? _a : '0', 10);
3891
+ productData.content.variants[index].qty++;
3892
+ tempData.add = true;
3893
+ }
3894
+ else {
3895
+ newOrder.productCheck.push(tempData);
3896
+ }
3897
+ };
3898
+ newOrder.productTemp.forEach(updateProductCheck);
3913
3899
  }
3914
3900
  else {
3915
- newOrder.productCheck.push(tempData);
3901
+ newOrder.productCheck = newOrder.productTemp;
3916
3902
  }
3917
- };
3918
- newOrder.productTemp.forEach(updateProductCheck);
3919
- }
3920
- else {
3921
- newOrder.productCheck = newOrder.productTemp;
3922
- }
3923
- gvc.notifyDataChange(['listProduct', 'addProduct']);
3924
- }
3925
- },
3926
- });
3927
- })}"
3928
- >
3929
- 新增一個商品
3930
- <svg
3931
- style="margin-left: 5px;"
3932
- xmlns="http://www.w3.org/2000/svg"
3933
- width="14"
3934
- height="14"
3935
- viewBox="0 0 14 14"
3936
- fill="none"
3937
- >
3938
- <path
3939
- d="M1.5 7.23926H12.5"
3940
- stroke="#3366BB"
3941
- stroke-width="2"
3942
- stroke-linecap="round"
3943
- stroke-linejoin="round"
3944
- />
3945
- <path
3946
- d="M6.76172 1.5L6.76172 12.5"
3947
- stroke="#3366BB"
3948
- stroke-width="2"
3949
- stroke-linecap="round"
3950
- stroke-linejoin="round"
3951
- />
3952
- </svg>
3953
- </div>
3954
- `;
3903
+ gvc.notifyDataChange(['listProduct', 'addProduct']);
3904
+ }
3905
+ },
3906
+ });
3907
+ }
3908
+ }),
3909
+ });
3955
3910
  },
3956
3911
  divCreate: {
3957
- style: `width: 100%;display: flex;align-items: center;margin:24px 0;cursor: pointer;`,
3912
+ style: 'width: 100%; display: flex; align-items: center; margin: 24px 0;',
3958
3913
  },
3959
3914
  })}
3960
3915
  ${BgWidget.horizontalLine()} ${showOrderDetail()}