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
@@ -4,9 +4,7 @@ import { ShoppingDiscountSetting } from './shopping-discount-setting.js';
4
4
  import { ApiUser } from '../glitter-base/route/user.js';
5
5
  import { FilterOptions } from './filter-options.js';
6
6
  import { BgWidget } from '../backend-manager/bg-widget.js';
7
- import { ApiPost } from '../glitter-base/route/post.js';
8
7
  import { EditorElem } from '../glitterBundle/plugins/editor-elem.js';
9
- import { ApiSmtp } from '../glitter-base/route/smtp.js';
10
8
  import { ApiFcm } from '../glitter-base/route/fcm.js';
11
9
 
12
10
  const html = String.raw;
@@ -24,7 +22,7 @@ type PostData = {
24
22
  boolean: 'and' | 'or';
25
23
  title: string;
26
24
  content: string;
27
- link:string;
25
+ link: string;
28
26
  sendTime: { date: string; time: string } | undefined;
29
27
  sendGroup: string[];
30
28
  email?: string[];
@@ -55,7 +53,7 @@ export class AutoFcmAdvertise {
55
53
  boolean: 'or',
56
54
  name: '',
57
55
  title: '',
58
- link:'',
56
+ link: '',
59
57
  content: '',
60
58
  sendTime: { date: startDate, time: startTime },
61
59
  sendGroup: [],
@@ -187,7 +185,7 @@ export class AutoFcmAdvertise {
187
185
  ApiUser.getUserList({
188
186
  page: 0,
189
187
  limit: 99999,
190
- only_id:true
188
+ only_id: true,
191
189
  }).then(dd => {
192
190
  dd.response.data.map((user: any) => {
193
191
  postData.userList.push({
@@ -453,300 +451,303 @@ export class AutoFcmAdvertise {
453
451
  return {
454
452
  bind: vm.containerId,
455
453
  view: () => {
456
- return [
457
- BgWidget.mainCard(
458
- [
459
- html` <div class="tx_700">選擇收件對象</div>`,
460
- html` <div class="tx_normal fw-normal mt-3">根據</div>`,
461
- html` <div
462
- style="display: flex; ${document.body.clientWidth > 768
463
- ? 'gap: 18px;'
464
- : 'flex-direction: column;'}"
465
- >
466
- <div style="width: ${document.body.clientWidth > 768 ? '400px' : '100%'};">
467
- ${BgWidget.select({
468
- gvc: gvc,
469
- default: postData.tag,
470
- callback: key => {
471
- postData.tag = key;
472
- vm.loading = true;
473
- gvc.notifyDataChange(vm.id);
474
- },
475
- options: FilterOptions.emailOptions,
476
- style: 'margin: 8px 0;',
477
- })}
478
- </div>
479
- <div style="width: 100%; display: flex; align-items: center;">
480
- ${gvc.bindView({
481
- bind: vm.id,
482
- view: () => {
483
- const getDefault = (def: any) => {
484
- const data = postData.tagList.find(data => data.tag === postData.tag);
485
- return data ? data.filter : def;
486
- };
487
- const callback = (value?: any) => {
488
- if (typeof value === 'string' || typeof value === 'number') {
489
- const intFiltter = parseInt(`${value}`, 10);
490
- value = intFiltter > 0 ? intFiltter : 0;
491
- if (isNaN(intFiltter) || intFiltter < 0) {
492
- const dialog = new ShareDialog(gvc.glitter);
493
- dialog.infoMessage({ text: '請輸入正整數或0' });
494
- return;
454
+ return (
455
+ [
456
+ BgWidget.mainCard(
457
+ [
458
+ html` <div class="tx_700">選擇收件對象</div>`,
459
+ html` <div class="tx_normal fw-normal mt-3">根據</div>`,
460
+ html` <div
461
+ style="display: flex; ${document.body.clientWidth > 768
462
+ ? 'gap: 18px;'
463
+ : 'flex-direction: column;'}"
464
+ >
465
+ <div style="width: ${document.body.clientWidth > 768 ? '400px' : '100%'};">
466
+ ${BgWidget.select({
467
+ gvc: gvc,
468
+ default: postData.tag,
469
+ callback: key => {
470
+ postData.tag = key;
471
+ vm.loading = true;
472
+ gvc.notifyDataChange(vm.id);
473
+ },
474
+ options: FilterOptions.emailOptions,
475
+ style: 'margin: 8px 0;',
476
+ })}
477
+ </div>
478
+ <div style="width: 100%; display: flex; align-items: center;">
479
+ ${gvc.bindView({
480
+ bind: vm.id,
481
+ view: () => {
482
+ const getDefault = (def: any) => {
483
+ const data = postData.tagList.find(data => data.tag === postData.tag);
484
+ return data ? data.filter : def;
485
+ };
486
+ const callback = (value?: any) => {
487
+ if (typeof value === 'string' || typeof value === 'number') {
488
+ const intFiltter = parseInt(`${value}`, 10);
489
+ value = intFiltter > 0 ? intFiltter : 0;
490
+ if (isNaN(intFiltter) || intFiltter < 0) {
491
+ const dialog = new ShareDialog(gvc.glitter);
492
+ dialog.infoMessage({ text: '請輸入正整數或0' });
493
+ return;
494
+ }
495
495
  }
496
- }
497
- filterEvent(value);
498
- };
499
- switch (postData.tag) {
500
- case 'all':
501
- dialog.dataLoading({ visible: true, text: '取得所有會員資料中...' });
502
- new Promise(resolve => {
503
- ApiUser.getUserList({
504
- page: 0,
505
- limit: 99999,
506
- only_id:true
507
- }).then(dd => {
508
- if (dd.response.data) {
509
- const ids: number[] = [];
510
- vm.dataList = dd.response.data
511
- .filter((item: { userData: { email: string } }) => {
512
- return item.userData.email && item.userData.email.length > 0;
513
- })
514
- .map((item: { userID: number; userData: { name: string; email: string } }) => {
515
- ids.push(item.userID);
516
- return {
517
- key: item.userID,
518
- value: item.userData.name ?? '(尚無姓名)',
519
- note: item.userData.email,
520
- };
521
- });
522
- resolve(ids);
523
- }
524
- });
525
- }).then(data => {
526
- dialog.dataLoading({ visible: false });
527
- callback(data);
528
- });
529
- return '';
530
- case 'level':
531
- case 'group':
532
- case 'birth':
533
- case 'tags':
534
- return BgWidget.selectDropList({
535
- gvc: gvc,
536
- callback: callback,
537
- default: getDefault([]),
538
- options: vm.loading ? [] : vm.dataList,
539
- placeholder: vm.loading ? '資料載入中...' : undefined,
540
- style: 'margin: 8px 0; width: 100%;',
541
- });
542
- case 'customers':
543
- return BgWidget.grayButton(
544
- '點擊選取顧客',
545
- gvc.event(() => {
546
- BgWidget.selectDropDialog({
547
- gvc: gvc,
548
- title: '搜尋特定顧客',
549
- tag: 'set_send_users',
550
- updownOptions: FilterOptions.userOrderBy,
551
- callback: callback,
552
- default: getDefault([]),
553
- api: (data: { query: string; orderString: string }) => {
554
- return new Promise(resolve => {
555
- ApiUser.getUserList({
556
- page: 0,
557
- limit: 99999,
558
- only_id:true,
559
- search: data.query
560
- }).then(dd => {
561
- if (dd.response.data) {
562
- vm.dataList = dd.response.data
563
- .filter((item: { userData: { email: string } }) => {
564
- return item.userData.email && item.userData.email.length > 0;
565
- })
566
- .map(
567
- (item: {
568
- userID: number;
569
- userData: { name: string; email: string };
570
- }) => {
571
- return {
572
- key: item.userID,
573
- value: item.userData.name ?? '(尚無姓名)',
574
- note: item.userData.email,
575
- };
576
- }
577
- );
578
- resolve(vm.dataList);
496
+ filterEvent(value);
497
+ };
498
+ switch (postData.tag) {
499
+ case 'all':
500
+ dialog.dataLoading({ visible: true, text: '取得所有會員資料中...' });
501
+ new Promise(resolve => {
502
+ ApiUser.getUserList({
503
+ page: 0,
504
+ limit: 99999,
505
+ only_id: true,
506
+ }).then(dd => {
507
+ if (dd.response.data) {
508
+ const ids: number[] = [];
509
+ vm.dataList = dd.response.data
510
+ .filter((item: { userData: { email: string } }) => {
511
+ return item.userData.email && item.userData.email.length > 0;
512
+ })
513
+ .map(
514
+ (item: { userID: number; userData: { name: string; email: string } }) => {
515
+ ids.push(item.userID);
516
+ return {
517
+ key: item.userID,
518
+ value: item.userData.name ?? '(尚無姓名)',
519
+ note: item.userData.email,
520
+ };
579
521
  }
580
- });
581
- });
582
- },
583
- style: 'width: 100%;',
522
+ );
523
+ resolve(ids);
524
+ }
584
525
  });
585
- }),
586
- { textStyle: 'font-weight: 400;' }
587
- );
588
- case 'expiry':
589
- return BgWidget.editeInput({
590
- gvc: gvc,
591
- title: '',
592
- default: getDefault('0'),
593
- placeHolder: '請輸入剩餘多少天',
594
- callback: callback,
595
- endText: '天',
596
- });
597
- case 'remain':
598
- return BgWidget.editeInput({
599
- gvc: gvc,
600
- title: '',
601
- default: getDefault('0'),
602
- placeHolder: '請輸入大於多少',
603
- callback: callback,
604
- startText: '大於',
605
- endText: '點',
606
- });
607
- case 'uncheckout':
608
- return BgWidget.editeInput({
609
- gvc: gvc,
610
- title: '',
611
- default: getDefault('0'),
612
- placeHolder: '請輸入超過幾天未結帳',
613
- callback: callback,
614
- endText: '天',
615
- });
616
- default:
617
- return '';
618
- }
619
- },
620
- divCreate: { class: 'w-100' },
621
- onCreate: () => {
622
- if (vm.loading) {
623
- getOptions(postData.tag).then(opts => {
624
- vm.dataList = opts as { key: string; value: string }[];
625
- vm.loading = false;
626
- gvc.notifyDataChange(vm.id);
627
- });
628
- }
629
- },
630
- })}
631
- </div>
632
- </div>`,
633
- gvc.bindView({
634
- bind: vm.tagsId,
635
- view: () => getTagsHTML(),
636
- divCreate: { style: 'margin-top: 8px;' },
637
- }),
638
- ].join('')
639
- ),
640
- BgWidget.mainCard(
641
- [
642
- html` <div class="tx_700">推播內容</div>`,
643
- gvc.bindView({
644
- bind: vm.emailId,
645
- view: () => {
646
- return [
647
- BgWidget.editeInput({
648
- gvc: gvc,
649
- title: '推播標題',
650
- default: postData.title,
651
- placeHolder: '請輸入推播標題',
652
- callback: text => {
653
- postData.title = text;
654
- },
655
- global_language: true,
656
- }),
657
- BgWidget.editeInput({
658
- gvc: gvc,
659
- title: '推播內文',
660
- default: postData.content,
661
- placeHolder: '請輸入推播內文',
662
- callback: text => {
663
- postData.content = text;
526
+ }).then(data => {
527
+ dialog.dataLoading({ visible: false });
528
+ callback(data);
529
+ });
530
+ return '';
531
+ case 'level':
532
+ case 'group':
533
+ case 'birth':
534
+ case 'tags':
535
+ return BgWidget.selectDropList({
536
+ gvc: gvc,
537
+ callback: callback,
538
+ default: getDefault([]),
539
+ options: vm.loading ? [] : vm.dataList,
540
+ placeholder: vm.loading ? '資料載入中...' : undefined,
541
+ style: 'margin: 8px 0; width: 100%;',
542
+ });
543
+ case 'customers':
544
+ return BgWidget.grayButton(
545
+ '點擊選取顧客',
546
+ gvc.event(() => {
547
+ BgWidget.selectDropDialog({
548
+ gvc: gvc,
549
+ title: '搜尋特定顧客',
550
+ tag: 'set_send_users',
551
+ updownOptions: FilterOptions.userOrderBy,
552
+ callback: callback,
553
+ default: getDefault([]),
554
+ api: (data: { query: string; orderString: string }) => {
555
+ return new Promise(resolve => {
556
+ ApiUser.getUserList({
557
+ page: 0,
558
+ limit: 99999,
559
+ only_id: true,
560
+ search: data.query,
561
+ }).then(dd => {
562
+ if (dd.response.data) {
563
+ vm.dataList = dd.response.data
564
+ .filter((item: { userData: { email: string } }) => {
565
+ return item.userData.email && item.userData.email.length > 0;
566
+ })
567
+ .map(
568
+ (item: {
569
+ userID: number;
570
+ userData: { name: string; email: string };
571
+ }) => {
572
+ return {
573
+ key: item.userID,
574
+ value: item.userData.name ?? '(尚無姓名)',
575
+ note: item.userData.email,
576
+ };
577
+ }
578
+ );
579
+ resolve(vm.dataList);
580
+ }
581
+ });
582
+ });
583
+ },
584
+ style: 'width: 100%;',
585
+ });
586
+ }),
587
+ { textStyle: 'font-weight: 400;' }
588
+ );
589
+ case 'expiry':
590
+ return BgWidget.editeInput({
591
+ gvc: gvc,
592
+ title: '',
593
+ default: getDefault('0'),
594
+ placeHolder: '請輸入剩餘多少天',
595
+ callback: callback,
596
+ endText: '天',
597
+ });
598
+ case 'remain':
599
+ return BgWidget.editeInput({
600
+ gvc: gvc,
601
+ title: '',
602
+ default: getDefault('0'),
603
+ placeHolder: '請輸入大於多少',
604
+ callback: callback,
605
+ startText: '大於',
606
+ endText: '點',
607
+ });
608
+ case 'uncheckout':
609
+ return BgWidget.editeInput({
610
+ gvc: gvc,
611
+ title: '',
612
+ default: getDefault('0'),
613
+ placeHolder: '請輸入超過幾天未結帳',
614
+ callback: callback,
615
+ endText: '天',
616
+ });
617
+ default:
618
+ return '';
619
+ }
664
620
  },
665
- global_language: true,
666
- }),
667
- BgWidget.linkList({
668
- gvc: gvc,
669
- title: '跳轉頁面',
670
- default: postData.link || '',
671
- placeHolder: '為空則為首頁',
672
- callback: text => {
673
- postData.link = text;
621
+ divCreate: { class: 'w-100' },
622
+ onCreate: () => {
623
+ if (vm.loading) {
624
+ getOptions(postData.tag).then(opts => {
625
+ vm.dataList = opts as { key: string; value: string }[];
626
+ vm.loading = false;
627
+ gvc.notifyDataChange(vm.id);
628
+ });
629
+ }
674
630
  },
675
- })
676
- ].join('');
677
- },
678
- divCreate: {
679
- class: 'mt-2',
680
- },
681
- }),
682
- ].join('')
683
- ),
684
- BgWidget.mainCard(
685
- html` <div class="tx_700 mb-3">發送時間</div>
686
- ${EditorElem.radio({
687
- gvc: gvc,
688
- title: '',
689
- def: postData.sendTime === undefined ? 'now' : 'set',
690
- array: [
691
- {
692
- title: '立即發送',
693
- value: 'now',
694
- },
695
- {
696
- title: '排定發送時間',
697
- value: 'set',
698
- innerHtml: html` <div
699
- class="d-flex mt-3 ${document.body.clientWidth < 768 ? 'flex-column' : ''}"
700
- style="gap: 12px"
701
- >
702
- ${EditorElem.editeInput({
631
+ })}
632
+ </div>
633
+ </div>`,
634
+ gvc.bindView({
635
+ bind: vm.tagsId,
636
+ view: () => getTagsHTML(),
637
+ divCreate: { style: 'margin-top: 8px;' },
638
+ }),
639
+ ].join('')
640
+ ),
641
+ BgWidget.mainCard(
642
+ [
643
+ html` <div class="tx_700">推播內容</div>`,
644
+ gvc.bindView({
645
+ bind: vm.emailId,
646
+ view: () => {
647
+ return [
648
+ BgWidget.editeInput({
649
+ gvc: gvc,
650
+ title: '推播標題',
651
+ default: postData.title,
652
+ placeHolder: '請輸入推播標題',
653
+ callback: text => {
654
+ postData.title = text;
655
+ },
656
+ global_language: true,
657
+ }),
658
+ BgWidget.editeInput({
703
659
  gvc: gvc,
704
- title: '',
705
- type: 'date',
706
- style: inputStyle,
707
- default: startDate,
708
- placeHolder: '',
709
- callback: date => {
710
- postData.sendTime = {
711
- date: date,
712
- time: postData.sendTime?.time ?? '',
713
- };
660
+ title: '推播內文',
661
+ default: postData.content,
662
+ placeHolder: '請輸入推播內文',
663
+ callback: text => {
664
+ postData.content = text;
714
665
  },
715
- })}
716
- ${EditorElem.editeInput({
666
+ global_language: true,
667
+ }),
668
+ BgWidget.linkList({
717
669
  gvc: gvc,
718
- title: '',
719
- type: 'time',
720
- style: inputStyle,
721
- default: startTime,
722
- placeHolder: '',
723
- callback: time => {
724
- postData.sendTime = {
725
- date: postData.sendTime?.date ?? '',
726
- time: time,
727
- };
670
+ title: '跳轉頁面',
671
+ default: postData.link || '',
672
+ placeHolder: '為空則為首頁',
673
+ callback: text => {
674
+ postData.link = text;
728
675
  },
729
- })}
730
- </div>`,
676
+ }),
677
+ ].join('');
731
678
  },
732
- ],
733
- callback: text => {
734
- if (text === 'now') {
735
- postData.sendTime = undefined;
736
- }
737
- if (text === 'set') {
738
- postData.sendTime = { date: startDate, time: startTime };
739
- }
740
- },
741
- })}`
742
- ),
743
- ].join(BgWidget.mbContainer(16));
679
+ divCreate: {
680
+ class: 'mt-2',
681
+ },
682
+ }),
683
+ ].join('')
684
+ ),
685
+ BgWidget.mainCard(
686
+ html` <div class="tx_700 mb-3">發送時間</div>
687
+ ${EditorElem.radio({
688
+ gvc: gvc,
689
+ title: '',
690
+ def: postData.sendTime === undefined ? 'now' : 'set',
691
+ array: [
692
+ {
693
+ title: '立即發送',
694
+ value: 'now',
695
+ },
696
+ {
697
+ title: '排定發送時間',
698
+ value: 'set',
699
+ innerHtml: html` <div
700
+ class="d-flex mt-3 ${document.body.clientWidth < 768 ? 'flex-column' : ''}"
701
+ style="gap: 12px"
702
+ >
703
+ ${EditorElem.editeInput({
704
+ gvc: gvc,
705
+ title: '',
706
+ type: 'date',
707
+ style: inputStyle,
708
+ default: startDate,
709
+ placeHolder: '',
710
+ callback: date => {
711
+ postData.sendTime = {
712
+ date: date,
713
+ time: postData.sendTime?.time ?? '',
714
+ };
715
+ },
716
+ })}
717
+ ${EditorElem.editeInput({
718
+ gvc: gvc,
719
+ title: '',
720
+ type: 'time',
721
+ style: inputStyle,
722
+ default: startTime,
723
+ placeHolder: '',
724
+ callback: time => {
725
+ postData.sendTime = {
726
+ date: postData.sendTime?.date ?? '',
727
+ time: time,
728
+ };
729
+ },
730
+ })}
731
+ </div>`,
732
+ },
733
+ ],
734
+ callback: text => {
735
+ if (text === 'now') {
736
+ postData.sendTime = undefined;
737
+ }
738
+ if (text === 'set') {
739
+ postData.sendTime = { date: startDate, time: startTime };
740
+ }
741
+ },
742
+ })}`
743
+ ),
744
+ ].join(BgWidget.mbContainer(16)) + BgWidget.mbContainer(240)
745
+ );
744
746
  },
745
- divCreate: {},
746
747
  };
747
748
  })
748
749
  )}
749
- ${BgWidget.mbContainer(240)}
750
+ ${BgWidget.mbContainer(480)}
750
751
  <div class="update-bar-container">
751
752
  ${BgWidget.save(
752
753
  gvc.event(() => {