ts-glitter 20.7.3 → 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 +103 -81
  32. package/lowcode/cms-plugin/third-party-google.ts +296 -265
  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 +270 -267
  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 +30 -15
  159. package/src/api-public/services/user.js.map +1 -1
  160. package/src/api-public/services/user.ts +109 -91
  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
@@ -34,6 +34,7 @@ export class UserList {
34
34
  const vm = {
35
35
  id: glitter.getUUID(),
36
36
  loading: true,
37
+ tabLoading: true,
37
38
  type: 'list',
38
39
  data: {},
39
40
  dataList: undefined,
@@ -41,7 +42,7 @@ export class UserList {
41
42
  queryType: '',
42
43
  orderString: '',
43
44
  filter: {},
44
- filter_type: `normal`,
45
+ filter_type: 'normal',
45
46
  filterId: glitter.getUUID(),
46
47
  tableId: glitter.getUUID(),
47
48
  barId: glitter.getUUID(),
@@ -131,14 +132,7 @@ export class UserList {
131
132
  },
132
133
  {
133
134
  key: '用戶狀態',
134
- value: (() => {
135
- if (dd.status === 1) {
136
- return html `<div class="badge bg-info fs-7" style="max-height:34px;">啟用中</div>`;
137
- }
138
- else {
139
- return html `<div class="badge bg-danger fs-7" style="max-height:34px;">已停用</div>`;
140
- }
141
- })(),
135
+ value: (UserList.statusBadge[dd.status] || UserList.statusBadge['1'])(),
142
136
  },
143
137
  ].filter(item => {
144
138
  if (!vm.headerConfig.includes(item.key)) {
@@ -238,6 +232,10 @@ export class UserList {
238
232
  title: '一般列表',
239
233
  key: 'normal',
240
234
  },
235
+ {
236
+ title: '觀察名單',
237
+ key: 'watch',
238
+ },
241
239
  {
242
240
  title: '黑名單',
243
241
  key: 'block',
@@ -252,13 +250,28 @@ export class UserList {
252
250
  title: '一般列表',
253
251
  key: 'normal',
254
252
  },
253
+ {
254
+ title: '觀察名單',
255
+ key: 'watch',
256
+ },
255
257
  {
256
258
  title: '黑名單',
257
259
  key: 'block',
258
260
  },
259
261
  ], gvc, vm.filter_type, text => {
260
- vm.filter_type = text;
261
- gvc.notifyDataChange(vm.id);
262
+ if (vm.tabLoading) {
263
+ BgWidget.jumpAlert({
264
+ gvc,
265
+ text: '系統繁忙中,請稍後重試',
266
+ justify: 'top',
267
+ align: 'center',
268
+ width: 240,
269
+ });
270
+ }
271
+ else {
272
+ vm.filter_type = text;
273
+ gvc.notifyDataChange(vm.id);
274
+ }
262
275
  })}
263
276
  ${BgWidget.container((() => {
264
277
  if (vm.filter_type === 'notRegistered') {
@@ -343,6 +356,7 @@ export class UserList {
343
356
  gvc: gvc,
344
357
  getData: vd => {
345
358
  vmi = vd;
359
+ vm.tabLoading = true;
346
360
  UserList.vm.page = vmi.page;
347
361
  const limit = 20;
348
362
  vm.apiJSON = {
@@ -373,6 +387,7 @@ export class UserList {
373
387
  gvc.notifyDataChange(vm.id);
374
388
  }
375
389
  vmi.loading = false;
390
+ vm.tabLoading = false;
376
391
  vmi.callback();
377
392
  });
378
393
  },
@@ -458,9 +473,11 @@ export class UserList {
458
473
  }
459
474
  static posSelect(gvc, obj) {
460
475
  const glitter = gvc.glitter;
476
+ const dialog = new ShareDialog(glitter);
461
477
  const vm = {
462
478
  id: glitter.getUUID(),
463
479
  loading: true,
480
+ tabLoading: true,
464
481
  type: 'list',
465
482
  data: {},
466
483
  dataList: undefined,
@@ -468,7 +485,7 @@ export class UserList {
468
485
  queryType: '',
469
486
  orderString: '',
470
487
  filter: {},
471
- filter_type: `normal`,
488
+ filter_type: 'normal',
472
489
  filterId: glitter.getUUID(),
473
490
  tableId: glitter.getUUID(),
474
491
  barId: glitter.getUUID(),
@@ -511,14 +528,7 @@ export class UserList {
511
528
  },
512
529
  {
513
530
  key: '用戶狀態',
514
- value: (() => {
515
- if (dd.status === 1) {
516
- return html `<div class="badge bg-info fs-7" style="max-height:34px;">啟用中</div>`;
517
- }
518
- else {
519
- return html `<div class="badge bg-danger fs-7" style="max-height:34px;">已停用</div>`;
520
- }
521
- })(),
531
+ value: (UserList.statusBadge[dd.status] || UserList.statusBadge['1'])(),
522
532
  },
523
533
  ];
524
534
  });
@@ -602,7 +612,6 @@ export class UserList {
602
612
  {
603
613
  name: '批量移除',
604
614
  event: checkedData => {
605
- const dialog = new ShareDialog(gvc.glitter);
606
615
  dialog.checkYesOrNot({
607
616
  text: '是否確認刪除所選項目?',
608
617
  callback: response => {
@@ -747,6 +756,7 @@ export class UserList {
747
756
  type: 'list',
748
757
  plan: GlobalUser.getPlan().id,
749
758
  };
759
+ const dialog = new ShareDialog(gvc.glitter);
750
760
  function regetData() {
751
761
  ApiUser.getPublicUserData(cf.userID).then(dd => {
752
762
  vm.data = dd.response;
@@ -862,7 +872,6 @@ export class UserList {
862
872
  function getButtonList() {
863
873
  return html `<div class="ms-auto d-flex" style="gap: 14px;">
864
874
  ${BgWidget.grayButton('刪除顧客', gvc.event(() => {
865
- const dialog = new ShareDialog(gvc.glitter);
866
875
  dialog.warningMessage({
867
876
  text: '您即將刪除此顧客的所有資料,此操作無法復原。確定要刪除嗎?',
868
877
  callback: response => {
@@ -877,29 +886,77 @@ export class UserList {
877
886
  },
878
887
  });
879
888
  }))}
880
- ${BgWidget.grayButton(vm.data.status ? '加入黑名單' : '解除黑名單', gvc.event(() => {
881
- const dialog = new ShareDialog(gvc.glitter);
882
- dialog.warningMessage({
883
- text: vm.data.status
884
- ? '加入黑名單之後,此顧客將無法再進行登入、購買及使用其他功能。<br/>確定要加入黑名單嗎?'
885
- : '解除黑名單後,此顧客將恢復正常權限。<br/>確定要解除黑名單嗎?',
886
- callback: response => {
887
- if (response) {
888
- dialog.dataLoading({ text: '更新中', visible: true });
889
- vm.data.userData.type = vm.data.status ? 'block' : 'normal';
890
- ApiUser.updateUserDataManager(vm.data, vm.data.userID).then(response => {
891
- dialog.dataLoading({ text: '', visible: false });
892
- if (response.result) {
893
- regetData();
894
- dialog.successMessage({ text: '更新成功' });
895
- vm.loading = true;
896
- gvc.notifyDataChange(vm.id);
897
- }
898
- else {
899
- dialog.errorMessage({ text: '更新異常' });
900
- }
889
+ ${BgWidget.grayButton('調整顧客狀態', gvc.event(() => {
890
+ BgWidget.dialog({
891
+ gvc,
892
+ title: '調整顧客狀態',
893
+ innerHTML: gvc => {
894
+ return html `
895
+ <div>
896
+ <div class="tx_700 mb-2">將此顧客狀態修改成:</div>
897
+ <div class="d-flex gap-2 ${document.body.clientWidth > 768 ? '' : 'flex-column'}">
898
+ ${[
899
+ { title: '一般會員', value: 'normal' },
900
+ { title: '觀察名單', value: 'watch' },
901
+ { title: '黑名單', value: 'block' },
902
+ ]
903
+ .filter(item => {
904
+ return [
905
+ vm.data.status === 0 && item.value === 'block',
906
+ vm.data.status === 1 && item.value === 'normal',
907
+ vm.data.status === 2 && item.value === 'watch',
908
+ ].every(bool => !bool);
909
+ })
910
+ .map(item => {
911
+ return BgWidget.customButton({
912
+ button: {
913
+ color: 'snow',
914
+ size: 'md',
915
+ class: 'w-100',
916
+ style: 'min-height: 60px;',
917
+ },
918
+ text: {
919
+ name: item.title,
920
+ },
921
+ event: gvc.event(() => {
922
+ try {
923
+ gvc.closeDialog();
924
+ function call() {
925
+ dialog.dataLoading({ text: '更新中', visible: true });
926
+ vm.data.userData.type = item.value;
927
+ ApiUser.updateUserDataManager(vm.data, vm.data.userID).then(response => {
928
+ dialog.dataLoading({ text: '', visible: false });
929
+ if (response.result) {
930
+ regetData();
931
+ dialog.successMessage({ text: '更新成功' });
932
+ vm.loading = true;
933
+ gvc.notifyDataChange(vm.id);
934
+ }
935
+ else {
936
+ dialog.errorMessage({ text: '更新異常' });
937
+ }
938
+ });
939
+ }
940
+ if (item.value === 'block') {
941
+ dialog.warningMessage({
942
+ text: '加入黑名單之後,<br/>此顧客將無法再進行登入、購買及使用其他功能。<br/>確定要加入黑名單嗎?',
943
+ callback: response => response && call(),
944
+ });
945
+ }
946
+ else {
947
+ call();
948
+ }
949
+ }
950
+ catch (error) {
951
+ console.error(error);
952
+ }
953
+ }),
901
954
  });
902
- }
955
+ })
956
+ .join('')}
957
+ </div>
958
+ </div>
959
+ `;
903
960
  },
904
961
  });
905
962
  }))}
@@ -967,7 +1024,7 @@ export class UserList {
967
1024
  ${BgWidget.editeInput({
968
1025
  gvc,
969
1026
  title: '',
970
- default: referObj[item.key] || '',
1027
+ default: `${referObj[item.key] || ''}`,
971
1028
  placeHolder: `請輸入${item.title}`,
972
1029
  callback: text => {
973
1030
  referObj[item.key] = text;
@@ -1174,9 +1231,7 @@ export class UserList {
1174
1231
  return [
1175
1232
  [
1176
1233
  html `<div class="tx_700">會員等級</div>`,
1177
- html `<div class="badge bg-dark fs-7" style="max-height: 34px;">
1178
- ${vm.data.member_level.tag_name}
1179
- </div>`,
1234
+ BgWidget.secondaryInsignia(vm.data.member_level.tag_name),
1180
1235
  ].join(BgWidget.mbContainer(12)),
1181
1236
  [
1182
1237
  html `
@@ -1377,19 +1432,17 @@ export class UserList {
1377
1432
  ? html `<div
1378
1433
  style="font-size: 32px; font-weight: 400; color: #393939;"
1379
1434
  >
1380
- ${formatNum(totalPrice)}
1435
+ $${formatNum(totalPrice)}
1381
1436
  </div>`
1382
1437
  : '尚無消費紀錄'),
1383
- renderInfoBlock('累計消費次數', `<div
1384
- style="font-size: 32px; font-weight: 400; color: #393939;"
1385
- >
1386
- ${formatNum(totalOrders)}次
1387
- </div>`),
1438
+ renderInfoBlock('累計消費次數', html `<div style="font-size: 32px; font-weight: 400; color: #393939;">
1439
+ ${formatNum(totalOrders)}次
1440
+ </div>`),
1388
1441
  renderInfoBlock('最後消費金額', firstData
1389
1442
  ? html `<div
1390
1443
  style="font-size: 32px; font-weight: 400; color: #393939;"
1391
1444
  >
1392
- ${formatNum(firstData.orderData.total)}
1445
+ $${formatNum(firstData.orderData.total)}
1393
1446
  </div>`
1394
1447
  : '尚無消費紀錄'),
1395
1448
  renderInfoBlock('最後購買日期', firstData ? formatDate(firstData.created_time) : '尚無消費紀錄'),
@@ -1494,7 +1547,6 @@ export class UserList {
1494
1547
  gvc: gvc,
1495
1548
  saveButton: {
1496
1549
  event: obj => {
1497
- const dialog = new ShareDialog(gvc.glitter);
1498
1550
  dialog.dataLoading({
1499
1551
  text: '發送中...',
1500
1552
  visible: true,
@@ -1594,83 +1646,87 @@ export class UserList {
1594
1646
  return {
1595
1647
  bind: id,
1596
1648
  view: () => {
1597
- return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
1649
+ return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
1598
1650
  yield saasConfig.api.getPrivateConfig(saasConfig.config.appName, 'glitterUserForm');
1599
- let h = html `
1600
- ${vm.plan > 1
1601
- ? html `<div class="gray-bottom-line-18">
1651
+ const textList = [
1652
+ html `<div class="gray-bottom-line-18">
1653
+ <div class="tx_700">會員狀態</div>
1654
+ <div style="margin-top: 12px">${UserList.statusBadge[vm.data.status]()}</div>
1655
+ </div>`,
1656
+ vm.plan > 1
1657
+ ? html `<div class="gray-bottom-line-18">
1602
1658
  <div class="tx_700">會員等級</div>
1603
1659
  <div style="margin-top: 12px">
1604
- <div class="badge bg-dark fs-7" style="max-height: 34px;">
1605
- ${vm.data.member_level.tag_name}
1606
- </div>
1660
+ ${BgWidget.secondaryInsignia(vm.data.member_level.tag_name)}
1607
1661
  </div>
1608
1662
  </div>`
1609
- : ''}
1610
- <div class="gray-bottom-line-18">
1663
+ : '',
1664
+ html `<div class="gray-bottom-line-18">
1611
1665
  <div class="tx_700">會員標籤</div>
1612
1666
  <div
1613
1667
  style="display: flex; gap: 12px; margin-top: 12px; flex-direction: row; flex-wrap: wrap;"
1614
1668
  >
1615
1669
  ${Array.isArray(vm.data.userData.tags) && vm.data.userData.tags.length > 0
1616
- ? vm.data.userData.tags
1617
- .map((item) => BgWidget.secondaryInsignia(item))
1618
- .join('')
1619
- : '無標籤'}
1670
+ ? vm.data.userData.tags
1671
+ .map((item) => BgWidget.secondaryInsignia(item))
1672
+ .join('')
1673
+ : '無標籤'}
1620
1674
  </div>
1621
- </div>
1622
- ${vm.plan > 0
1623
- ? html ` <div class="">
1675
+ </div>`,
1676
+ vm.plan > 0
1677
+ ? html ` <div class="">
1624
1678
  <div class="tx_700 mb-3">社群綁定</div>
1625
1679
  ${[
1626
- {
1627
- type: 'fb',
1628
- src: 'https://d3jnmi1tfjgtti.cloudfront.net/file/234285319/1722847285395-img_facebook.svg',
1629
- value: vm.data.userData['fb-id'],
1630
- },
1631
- {
1632
- type: 'line',
1633
- src: 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/LINE_Brand_icon.png',
1634
- value: vm.data.userData.lineID,
1635
- },
1636
- {
1637
- type: 'google',
1638
- src: 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/Google__G__logo.svg.webp',
1639
- value: vm.data.userData['google-id'],
1640
- },
1641
- {
1642
- type: 'apple',
1643
- src: 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/14776639.png',
1644
- value: vm.data.userData['apple-id'],
1645
- },
1646
- ]
1647
- .map(dd => {
1648
- return html `<div class="d-flex align-items-center" style="gap:5px;">
1680
+ {
1681
+ type: 'fb',
1682
+ src: 'https://d3jnmi1tfjgtti.cloudfront.net/file/234285319/1722847285395-img_facebook.svg',
1683
+ value: vm.data.userData['fb-id'],
1684
+ },
1685
+ {
1686
+ type: 'line',
1687
+ src: 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/LINE_Brand_icon.png',
1688
+ value: vm.data.userData.lineID,
1689
+ },
1690
+ {
1691
+ type: 'google',
1692
+ src: 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/Google__G__logo.svg.webp',
1693
+ value: vm.data.userData['google-id'],
1694
+ },
1695
+ {
1696
+ type: 'apple',
1697
+ src: 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/14776639.png',
1698
+ value: vm.data.userData['apple-id'],
1699
+ },
1700
+ ]
1701
+ .map(dd => {
1702
+ return html `<div class="d-flex align-items-center" style="gap:5px;">
1649
1703
  <img
1650
1704
  src="${dd.src}"
1651
1705
  style="width:25px;height: 25px;background: whitesmoke;"
1652
1706
  class="rounded-circle"
1653
1707
  />
1654
1708
  ${dd.value
1655
- ? html `<div
1709
+ ? html `<div
1656
1710
  class="fw-500 "
1657
1711
  style="font-size: 14px; font-weight: 400; color: #006621;word-break: break-all;"
1658
1712
  >
1659
1713
  已綁定: ${dd.value}
1660
1714
  </div>`
1661
- : html `<div
1715
+ : html `<div
1662
1716
  class="fw-500"
1663
1717
  style="font-size: 14px; font-weight: 400; color: #393939;"
1664
1718
  >
1665
1719
  未綁定
1666
1720
  </div>`}
1667
1721
  </div>`;
1668
- })
1669
- .join(`<div class="my-3"></div>`)}
1722
+ })
1723
+ .join(`<div class="my-3"></div>`)}
1670
1724
  </div>`
1671
- : ''}
1672
- `;
1673
- resolve(html ` <div style="display:flex; gap: 18px; flex-direction: column;">${h}</div>`);
1725
+ : '',
1726
+ ];
1727
+ resolve(html ` <div style="display:flex; gap: 18px; flex-direction: column;">
1728
+ ${textList.filter(Boolean).join('')}
1729
+ </div>`);
1674
1730
  }));
1675
1731
  },
1676
1732
  };
@@ -1696,7 +1752,6 @@ export class UserList {
1696
1752
  UserModule.setUserTags(gvc, vm.data.userData.tags);
1697
1753
  }
1698
1754
  });
1699
- const dialog = new ShareDialog(gvc.glitter);
1700
1755
  dialog.dataLoading({ text: '更新中', visible: true });
1701
1756
  ApiUser.updateUserDataManager(vm.data, vm.data.userID).then(response => {
1702
1757
  dialog.dataLoading({ text: '', visible: false });
@@ -1721,6 +1776,7 @@ export class UserList {
1721
1776
  }
1722
1777
  static createUser(gvc, vm) {
1723
1778
  const viewID = gvc.glitter.getUUID();
1779
+ const dialog = new ShareDialog(gvc.glitter);
1724
1780
  const saasConfig = window.parent.saasConfig;
1725
1781
  let userData = vm.initial_data || {
1726
1782
  name: '',
@@ -1841,7 +1897,6 @@ export class UserList {
1841
1897
  vm.type = 'list';
1842
1898
  }))}
1843
1899
  ${BgWidget.save(gvc.event(() => __awaiter(this, void 0, void 0, function* () {
1844
- const dialog = new ShareDialog(gvc.glitter);
1845
1900
  if (CheckInput.isEmpty(userData.name)) {
1846
1901
  dialog.infoMessage({ text: '請輸入顧客姓名' });
1847
1902
  return;
@@ -1906,6 +1961,7 @@ export class UserList {
1906
1961
  checkedData: [],
1907
1962
  };
1908
1963
  let vmi = undefined;
1964
+ const dialog = new ShareDialog(gvc.glitter);
1909
1965
  function getDatalist() {
1910
1966
  return vm.dataList.map((dd) => {
1911
1967
  return [
@@ -1923,14 +1979,7 @@ export class UserList {
1923
1979
  },
1924
1980
  {
1925
1981
  key: '用戶狀態',
1926
- value: (() => {
1927
- if (dd.status === 1) {
1928
- return html ` <div class="badge bg-info fs-7" style="max-height:34px;">啟用中</div>`;
1929
- }
1930
- else {
1931
- return html ` <div class="badge bg-danger fs-7" style="max-height:34px;">已停用</div>`;
1932
- }
1933
- })(),
1982
+ value: (UserList.statusBadge[dd.status] || UserList.statusBadge['1'])(),
1934
1983
  },
1935
1984
  ];
1936
1985
  });
@@ -1998,7 +2047,6 @@ export class UserList {
1998
2047
  {
1999
2048
  name: '批量移除',
2000
2049
  event: checkedData => {
2001
- const dialog = new ShareDialog(gvc.glitter);
2002
2050
  dialog.checkYesOrNot({
2003
2051
  text: '是否確認刪除所選項目?',
2004
2052
  callback: response => {
@@ -2051,4 +2099,9 @@ export class UserList {
2051
2099
  UserList.vm = {
2052
2100
  page: 1,
2053
2101
  };
2102
+ UserList.statusBadge = {
2103
+ 0: () => BgWidget.dangerInsignia('已停用'),
2104
+ 1: () => BgWidget.infoInsignia('啟用中'),
2105
+ 2: () => BgWidget.warningInsignia('觀察中'),
2106
+ };
2054
2107
  window.glitter.setModule(import.meta.url, UserList);