ts-glitter 13.3.4 → 13.3.7

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 (101) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/backend-manager/bg-blog.js +2 -7
  4. package/lowcode/backend-manager/bg-blog.ts +8 -13
  5. package/lowcode/backend-manager/bg-customer-message.js +4 -2
  6. package/lowcode/backend-manager/bg-customer-message.ts +4 -2
  7. package/lowcode/backend-manager/bg-graph-api.js +6 -11
  8. package/lowcode/backend-manager/bg-graph-api.ts +14 -20
  9. package/lowcode/backend-manager/bg-line.js +526 -1002
  10. package/lowcode/backend-manager/bg-line.ts +1815 -2354
  11. package/lowcode/backend-manager/bg-notify.js +392 -746
  12. package/lowcode/backend-manager/bg-notify.ts +436 -835
  13. package/lowcode/backend-manager/bg-project.js +176 -293
  14. package/lowcode/backend-manager/bg-project.ts +214 -344
  15. package/lowcode/backend-manager/bg-recommend.js +39 -148
  16. package/lowcode/backend-manager/bg-recommend.ts +43 -162
  17. package/lowcode/backend-manager/bg-sns.js +489 -814
  18. package/lowcode/backend-manager/bg-sns.ts +1876 -2238
  19. package/lowcode/backend-manager/bg-widget.js +301 -171
  20. package/lowcode/backend-manager/bg-widget.ts +324 -193
  21. package/lowcode/cms-plugin/ai-points.js +84 -67
  22. package/lowcode/cms-plugin/ai-points.ts +280 -247
  23. package/lowcode/cms-plugin/auto-reply.js +6 -7
  24. package/lowcode/cms-plugin/auto-reply.ts +6 -7
  25. package/lowcode/cms-plugin/data-analyze.js +5 -6
  26. package/lowcode/cms-plugin/data-analyze.ts +5 -6
  27. package/lowcode/cms-plugin/form-setting.js +122 -220
  28. package/lowcode/cms-plugin/form-setting.ts +124 -240
  29. package/lowcode/cms-plugin/line-auto-reply.js +17 -18
  30. package/lowcode/cms-plugin/line-auto-reply.ts +29 -36
  31. package/lowcode/cms-plugin/member-group-list.js +5 -2
  32. package/lowcode/cms-plugin/member-group-list.ts +5 -2
  33. package/lowcode/cms-plugin/member-type-list.js +36 -84
  34. package/lowcode/cms-plugin/member-type-list.ts +39 -92
  35. package/lowcode/cms-plugin/menus-setting.js +8 -73
  36. package/lowcode/cms-plugin/menus-setting.ts +8 -78
  37. package/lowcode/cms-plugin/permission-setting.js +73 -106
  38. package/lowcode/cms-plugin/permission-setting.ts +236 -278
  39. package/lowcode/cms-plugin/shopping-collections.js +95 -137
  40. package/lowcode/cms-plugin/shopping-collections.ts +103 -147
  41. package/lowcode/cms-plugin/shopping-discount-setting.js +310 -416
  42. package/lowcode/cms-plugin/shopping-discount-setting.ts +1269 -1386
  43. package/lowcode/cms-plugin/shopping-finance-setting.js +1 -0
  44. package/lowcode/cms-plugin/shopping-finance-setting.ts +1 -0
  45. package/lowcode/cms-plugin/shopping-order-manager.js +742 -973
  46. package/lowcode/cms-plugin/shopping-order-manager.ts +1928 -2164
  47. package/lowcode/cms-plugin/shopping-order-return.js +147 -267
  48. package/lowcode/cms-plugin/shopping-order-return.ts +154 -292
  49. package/lowcode/cms-plugin/shopping-product-setting.js +6 -2
  50. package/lowcode/cms-plugin/shopping-product-setting.ts +8 -4
  51. package/lowcode/cms-plugin/shopping-product-stock.js +12 -92
  52. package/lowcode/cms-plugin/shopping-product-stock.ts +14 -94
  53. package/lowcode/cms-plugin/shopping-product-text.js +0 -3
  54. package/lowcode/cms-plugin/shopping-product-text.ts +0 -3
  55. package/lowcode/cms-plugin/shopping-rebate.js +95 -151
  56. package/lowcode/cms-plugin/shopping-rebate.ts +101 -159
  57. package/lowcode/cms-plugin/sms-points.js +83 -67
  58. package/lowcode/cms-plugin/sms-points.ts +281 -241
  59. package/lowcode/cms-plugin/sns-auto-reply.js +18 -18
  60. package/lowcode/cms-plugin/sns-auto-reply.ts +34 -40
  61. package/lowcode/cms-plugin/user-list.js +71 -90
  62. package/lowcode/cms-plugin/user-list.ts +76 -95
  63. package/lowcode/cms-plugin/web-config-setting.js +61 -111
  64. package/lowcode/cms-plugin/web-config-setting.ts +65 -124
  65. package/lowcode/css/editor.css +5 -2
  66. package/lowcode/glitter-base/route/shopping.js +1 -1
  67. package/lowcode/glitter-base/route/shopping.ts +19 -19
  68. package/lowcode/jspage/editor.js +1 -1
  69. package/lowcode/jspage/editor.ts +1 -1
  70. package/lowcode/jspage/main.js +3 -0
  71. package/lowcode/jspage/main.ts +3 -0
  72. package/package.json +1 -2
  73. package/src/api-public/controllers/ai-chat.js.map +5 -1
  74. package/src/api-public/controllers/article.js.map +1 -1
  75. package/src/api-public/controllers/chat.js.map +1 -1
  76. package/src/api-public/controllers/fb-message.js.map +1 -1
  77. package/src/api-public/controllers/index.js.map +1 -1
  78. package/src/api-public/controllers/line-message.js.map +1 -1
  79. package/src/api-public/controllers/rebate.js.map +1 -1
  80. package/src/api-public/controllers/shop.js.map +1 -1
  81. package/src/api-public/controllers/user.js.map +1 -1
  82. package/src/api-public/services/auto-send-email.js.map +1 -1
  83. package/src/api-public/services/chat.js +3 -3
  84. package/src/api-public/services/chat.js.map +1 -1
  85. package/src/api-public/services/chat.ts +3 -4
  86. package/src/api-public/services/fb-message.js.map +5 -1
  87. package/src/api-public/services/filter-protect-data.js.map +1 -1
  88. package/src/api-public/services/line-message.js.map +1 -1
  89. package/src/api-public/services/monitor.js.map +1 -1
  90. package/src/api-public/services/notify.js.map +1 -1
  91. package/src/api-public/services/rebate.js.map +1 -1
  92. package/src/api-public/services/schedule.js.map +1 -1
  93. package/src/api-public/services/share-permission.js.map +1 -1
  94. package/src/api-public/services/shopping.js.map +1 -1
  95. package/src/api-public/services/user.js +67 -66
  96. package/src/api-public/services/user.js.map +1 -1
  97. package/src/api-public/services/user.ts +212 -182
  98. package/src/helper/glitter-util.js.map +1 -1
  99. package/src/modules/firebase.d.ts +1 -0
  100. package/src/modules/firebase.js +1 -1
  101. package/src/modules/firebase.js.map +1 -1
@@ -1,60 +1,68 @@
1
- import {GVC} from "../glitterBundle/GVController.js";
2
- import {FormSetting} from "./form-setting.js";
3
- import {BgWidget} from "../backend-manager/bg-widget.js";
4
- import {TriggerEvent} from "../glitterBundle/plugins/trigger-event.js";
5
- import {AiPointsApi} from "../glitter-base/route/ai-points-api.js";
6
- import {ShareDialog} from "../glitterBundle/dialog/ShareDialog.js";
7
- import {ApiUser} from "../glitter-base/route/user.js";
8
- import {AiPointsList} from "./ai-points-list.js";
9
- import {EditorElem} from "../glitterBundle/plugins/editor-elem.js";
10
- import {UserList} from "./user-list.js";
1
+ import { GVC } from '../glitterBundle/GVController.js';
2
+ import { BgWidget } from '../backend-manager/bg-widget.js';
3
+ import { AiPointsApi } from '../glitter-base/route/ai-points-api.js';
4
+ import { ShareDialog } from '../glitterBundle/dialog/ShareDialog.js';
5
+ import { ApiUser } from '../glitter-base/route/user.js';
11
6
 
12
- const html = String.raw
7
+ const html = String.raw;
13
8
 
14
9
  export class AiPoints {
15
10
  public static main(gvc: GVC) {
16
- return [BgWidget.container([
17
- BgWidget.mainCard([
18
- BgWidget.title('AI Points'),
19
- BgWidget.grayNote([`*透過AI Points來使用各種 AI 輔助功能`, `*1塊台幣可以換取10點AI Points`, `*最少儲值金額500元`, `*AI Points購買後無法退費,請購買前瞭解會員權益需知`].map((dd) => {
20
- return `<div style="letter-spacing: 1.2px;">${dd}</div>`
21
- }).join('')),
22
- html`
23
- <div class="d-flex align-items-center rounded-3" style="height:35px;width:100%;max-width: 500px;">
24
- <div style="height:100%;background:var(--main-black-hover)"
25
- class="d-flex align-items-center justify-content-center text-white px-3">目前 AI Points
26
- </div>
27
- <div class="bgf6 d-flex align-items-center flex-fill h-100 ps-3 pe-2">${gvc.bindView(() => {
28
- const id = gvc.glitter.getUUID()
29
- const vm = {
30
- loading: true,
31
- sum: 0
32
- }
33
- AiPointsApi.getSum({}).then((res) => {
34
- vm.sum = parseInt(res.response.sum, 10)
35
- vm.loading = false
11
+ return [
12
+ BgWidget.container(
13
+ [
14
+ BgWidget.mainCard(
15
+ [
16
+ BgWidget.title('AI Points'),
17
+ BgWidget.grayNote(
18
+ [`*透過AI Points來使用各種 AI 輔助功能`, `*1塊台幣可以換取10點AI Points`, `*最少儲值金額500元`, `*AI Points購買後無法退費,請購買前瞭解會員權益需知`]
19
+ .map((dd) => {
20
+ return `<div style="letter-spacing: 1.2px;">${dd}</div>`;
21
+ })
22
+ .join('')
23
+ ),
24
+ html` <div class="d-flex align-items-center rounded-3" style="height:35px;width:100%;max-width: 500px;">
25
+ <div style="height:100%;background:var(--main-black-hover)" class="d-flex align-items-center justify-content-center text-white px-3">目前 AI Points</div>
26
+ <div class="bgf6 d-flex align-items-center flex-fill h-100 ps-3 pe-2">
27
+ ${gvc.bindView(() => {
28
+ const id = gvc.glitter.getUUID();
29
+ const vm = {
30
+ loading: true,
31
+ sum: 0,
32
+ };
33
+ AiPointsApi.getSum({}).then((res) => {
34
+ vm.sum = parseInt(res.response.sum, 10);
35
+ vm.loading = false;
36
36
 
37
- gvc.notifyDataChange(id)
38
- })
39
- return {
40
- bind: id,
41
- view: () => {
42
- if (vm.loading) {
43
- return `<div class="h-100 d-flex align-items-center"><div class="spinner-border" style="height:20px;width: 20px;"></div></div>`
44
- } else {
45
- return `${vm.sum.toLocaleString()}`
46
- }
47
- }
48
- }
49
- })}
50
- <div class="flex-fill"></div>
51
- ${BgWidget.blueNote('儲值', gvc.event(() => {
52
- AiPoints.store(gvc)
53
- }))}
54
- </div>
55
- </div>`
56
- ].join(`<div class="my-2"></div>`))
57
- ].join(''), BgWidget.getContainerWidth()), AiPoints.walletList(gvc)].join('')
37
+ gvc.notifyDataChange(id);
38
+ });
39
+ return {
40
+ bind: id,
41
+ view: () => {
42
+ if (vm.loading) {
43
+ return html`<div class="h-100 d-flex align-items-center"><div class="spinner-border" style="height:20px;width: 20px;"></div></div>`;
44
+ } else {
45
+ return `${vm.sum.toLocaleString()}`;
46
+ }
47
+ },
48
+ };
49
+ })}
50
+ <div class="flex-fill"></div>
51
+ ${BgWidget.blueNote(
52
+ '儲值',
53
+ gvc.event(() => {
54
+ AiPoints.store(gvc);
55
+ })
56
+ )}
57
+ </div>
58
+ </div>`,
59
+ ].join(`<div class="my-2"></div>`)
60
+ ),
61
+ ].join(''),
62
+ BgWidget.getContainerWidth()
63
+ ),
64
+ AiPoints.walletList(gvc),
65
+ ].join('');
58
66
  }
59
67
 
60
68
  //紀錄列表
@@ -65,13 +73,13 @@ export class AiPoints {
65
73
  data: any;
66
74
  dataList: any;
67
75
  query?: string;
68
- select: 'all' | 'cost' | 'income'
76
+ select: 'all' | 'cost' | 'income';
69
77
  } = {
70
78
  type: 'list',
71
79
  data: {},
72
80
  dataList: undefined,
73
81
  query: '',
74
- select: 'all'
82
+ select: 'all',
75
83
  };
76
84
  const filterID = gvc.glitter.getUUID();
77
85
 
@@ -85,105 +93,112 @@ export class AiPoints {
85
93
 
86
94
  return {
87
95
  bind: id,
88
- dataList: [{obj: vm, key: 'type'}],
96
+ dataList: [{ obj: vm, key: 'type' }],
89
97
  view: () => {
90
98
  if (vm.type === 'list') {
91
- return BgWidget.container(BgWidget.card(html`
92
- ${BgWidget.tab([
93
- {title: '紀錄總覽', key: 'all'},
94
- {title: '使用紀錄', key: 'cost'},
95
- {title: '儲值紀錄', key: 'income'}
96
- ], gvc, vm.select, (text) => {
97
- vm.select = text as any
98
- gvc.notifyDataChange(id)
99
- })}
100
- <div class="border-bottom mb-2 w-100"></div>
101
- ${BgWidget.tableV2({
102
- gvc: gvc,
103
- getData: (vmi) => {
104
- AiPointsApi.get({
105
- page: vmi.page - 1,
106
- limit: 20,
107
- search: vm.query || undefined,
108
- type: (() => {
109
- switch (vm.select) {
110
- case "all":
111
- return undefined
112
- case "cost":
113
- return 'minus'
114
- case "income":
115
- return 'plus'
99
+ return BgWidget.container(
100
+ BgWidget.card(html`
101
+ ${BgWidget.tab(
102
+ [
103
+ { title: '紀錄總覽', key: 'all' },
104
+ { title: '使用紀錄', key: 'cost' },
105
+ { title: '儲值紀錄', key: 'income' },
106
+ ],
107
+ gvc,
108
+ vm.select,
109
+ (text) => {
110
+ vm.select = text as any;
111
+ gvc.notifyDataChange(id);
112
+ }
113
+ )}
114
+ <div class="border-bottom mb-2 w-100"></div>
115
+ ${BgWidget.tableV3({
116
+ gvc: gvc,
117
+ getData: (vmi) => {
118
+ const limit = 20;
119
+ AiPointsApi.get({
120
+ page: vmi.page - 1,
121
+ limit: limit,
122
+ search: vm.query || undefined,
123
+ type: (() => {
124
+ switch (vm.select) {
125
+ case 'all':
126
+ return undefined;
127
+ case 'cost':
128
+ return 'minus';
129
+ case 'income':
130
+ return 'plus';
131
+ }
132
+ })(),
133
+ }).then((data) => {
134
+ function getDatalist() {
135
+ return data.response.data.map((dd: any) => {
136
+ return [
137
+ {
138
+ key: '用戶名稱',
139
+ value: `<span class="fs-7">${(dd.userData && dd.userData.name) ?? '資料異常'}</span>`,
140
+ },
141
+ {
142
+ key: '金流單號',
143
+ value: `<span class="fs-7">${dd.status === 2 ? `手動新增` : dd.orderID}</span>`,
144
+ },
145
+ {
146
+ key: '異動金額',
147
+ value: dd.money > 0 ? `<span class="fs-7 text-success">+ ${dd.money}</span>` : `<span class="fs-7 text-danger">- ${dd.money * -1}</span>`,
148
+ },
149
+ {
150
+ key: '異動原因',
151
+ value: `${dd.money > 0 ? `加值服務` : `使用AI智能助手`}`,
152
+ },
153
+ {
154
+ key: '異動時間',
155
+ value: `<span class="fs-7">${glitter.ut.dateFormat(new Date(dd.created_time), 'yyyy-MM-dd hh:mm')}</span>`,
156
+ },
157
+ ];
158
+ });
116
159
  }
117
- })()
118
- }).then((data) => {
119
- vmi.pageSize = Math.ceil(data.response.total / 20);
120
- vm.dataList = data.response.data;
121
160
 
122
- function getDatalist() {
123
- return data.response.data.map((dd: any) => {
124
- return [
125
- {
126
- key: '用戶名稱',
127
- value: `<span class="fs-7">${(dd.userData && dd.userData.name) ?? '資料異常'}</span>`,
128
- },
129
- {
130
- key: '金流單號',
131
- value: `<span class="fs-7">${dd.status === 2 ? `手動新增` : dd.orderID}</span>`,
132
- },
133
- {
134
- key: '異動金額',
135
- value: `${dd.money > 0 ? `<span class="fs-7 text-success">+ ${dd.money}</span>` : `<span class="fs-7 text-danger">- ${dd.money * -1}</span>`}`,
136
- },
137
- {
138
- key: '異動原因',
139
- value: `${dd.money > 0 ? `加值服務` : `使用AI智能助手`}`,
140
- },
141
- {
142
- key: '異動時間',
143
- value: `<span class="fs-7">${glitter.ut.dateFormat(new Date(dd.created_time), 'yyyy-MM-dd hh:mm')}</span>`,
144
- },
145
- ];
146
- });
147
- }
148
-
149
- vmi.data = getDatalist();
150
- vmi.loading = false;
151
- vmi.callback();
152
- });
153
- },
154
- rowClick: (data, index) => {
155
-
156
- },
157
- filter: ``
158
- })}
159
- `), BgWidget.getContainerWidth());
161
+ vm.dataList = data.response.data;
162
+ vmi.pageSize = Math.ceil(data.response.total / limit);
163
+ vmi.originalData = vm.dataList;
164
+ vmi.tableData = getDatalist();
165
+ vmi.loading = false;
166
+ vmi.callback();
167
+ });
168
+ },
169
+ rowClick: () => {},
170
+ filter: [],
171
+ })}
172
+ `),
173
+ BgWidget.getContainerWidth()
174
+ );
160
175
  } else if (vm.type == 'replace') {
161
- return ``
176
+ return ``;
162
177
  } else {
163
178
  return ``;
164
179
  }
165
180
  },
166
181
  divCreate: {
167
- class: `mt-n4`
168
- }
182
+ class: `mt-n4`,
183
+ },
169
184
  };
170
185
  });
171
186
  }
172
187
 
173
188
  //儲值
174
189
  public static async store(gvc: GVC) {
175
- const dialog = new ShareDialog(gvc.glitter)
176
- dialog.dataLoading({visible: true})
190
+ const dialog = new ShareDialog(gvc.glitter);
191
+ dialog.dataLoading({ visible: true });
177
192
  const vm: {
178
- total: number,
179
- note: any,
180
- return_url: string,
193
+ total: number;
194
+ note: any;
195
+ return_url: string;
181
196
  user_info: {
182
- email: string,
183
- invoice_type: 'me' | 'company' | 'donate',
184
- company: string,
185
- gui_number: string
186
- }
197
+ email: string;
198
+ invoice_type: 'me' | 'company' | 'donate';
199
+ company: string;
200
+ gui_number: string;
201
+ };
187
202
  } = {
188
203
  total: 500,
189
204
  note: {},
@@ -192,15 +207,15 @@ export class AiPoints {
192
207
  email: '',
193
208
  invoice_type: 'me',
194
209
  company: '',
195
- gui_number: ''
196
- }
197
- }
210
+ gui_number: '',
211
+ },
212
+ };
198
213
  vm.user_info.email = vm.user_info.email || '';
199
- const dd = (await ApiUser.getPublicConfig('ai-points-store', 'manager'))
214
+ const dd = await ApiUser.getPublicConfig('ai-points-store', 'manager');
200
215
  if (dd.response.value) {
201
- vm.user_info = dd.response.value
216
+ vm.user_info = dd.response.value;
202
217
  }
203
- dialog.dataLoading({visible: false});
218
+ dialog.dataLoading({ visible: false });
204
219
  BgWidget.settingDialog({
205
220
  gvc: gvc,
206
221
  title: '設定儲值金額',
@@ -210,144 +225,162 @@ export class AiPoints {
210
225
  BgWidget.select({
211
226
  gvc: gvc,
212
227
  callback: (text) => {
213
- vm.total = parseInt(text)
214
- gvc.recreateView()
228
+ vm.total = parseInt(text);
229
+ gvc.recreateView();
215
230
  },
216
231
  options: [
217
- {key: '500', value: '5,000點 ( NT.500 )'},
218
- {key: '1000', value: '10,000點 ( NT.1,000 )'},
219
- {key: '1500', value: '15,000點 ( NT.1,500 )'},
220
- {key: '2000', value: '20,000點 ( NT.2,000 )'}
232
+ { key: '500', value: '5,000點 ( NT.500 )' },
233
+ { key: '1000', value: '10,000點 ( NT.1,000 )' },
234
+ { key: '1500', value: '15,000點 ( NT.1,500 )' },
235
+ { key: '2000', value: '20,000點 ( NT.2,000 )' },
221
236
  ],
222
- default: `${vm.total}`
237
+ default: `${vm.total}`,
223
238
  }),
224
239
  ...(() => {
225
240
  if (vm.total) {
226
- return [BgWidget.greenNote(`此次儲值可獲得AI Points『 ${(vm.total * 10).toLocaleString()} 』`)]
241
+ return [BgWidget.greenNote(`此次儲值可獲得AI Points『 ${(vm.total * 10).toLocaleString()} 』`)];
227
242
  } else {
228
- return []
243
+ return [];
229
244
  }
230
245
  })(),
231
- ...(()=>{
232
- if(gvc.glitter.deviceType !== gvc.glitter.deviceTypeEnum.Ios){
233
- return [ BgWidget.editeInput({
234
- gvc: gvc,
235
- title: `發票寄送電子信箱`,
236
- placeHolder: '請輸入發票寄送電子信箱',
237
- callback: (text) => {
238
- vm.user_info.email = text
239
- },
240
- type: 'email',
241
- default: vm.user_info.email
242
- }),
243
- `<div class="tx_normal fw-normal" >發票開立方式</div>`,
246
+ ...(() => {
247
+ if (gvc.glitter.deviceType !== gvc.glitter.deviceTypeEnum.Ios) {
248
+ return [
249
+ BgWidget.editeInput({
250
+ gvc: gvc,
251
+ title: `發票寄送電子信箱`,
252
+ placeHolder: '請輸入發票寄送電子信箱',
253
+ callback: (text) => {
254
+ vm.user_info.email = text;
255
+ },
256
+ type: 'email',
257
+ default: vm.user_info.email,
258
+ }),
259
+ html`<div class="tx_normal fw-normal">發票開立方式</div>`,
244
260
  BgWidget.select({
245
- gvc: gvc, callback: (text) => {
246
- vm.user_info.invoice_type = text
247
- gvc.recreateView()
248
- }, options: [
249
- {key: 'me', value: '個人單位'},
250
- {key: 'company', value: '公司行號'}
251
- ], default: vm.user_info.invoice_type
261
+ gvc: gvc,
262
+ callback: (text) => {
263
+ vm.user_info.invoice_type = text;
264
+ gvc.recreateView();
265
+ },
266
+ options: [
267
+ { key: 'me', value: '個人單位' },
268
+ { key: 'company', value: '公司行號' },
269
+ ],
270
+ default: vm.user_info.invoice_type,
252
271
  }),
253
272
  ...(() => {
254
273
  if (vm.user_info.invoice_type === 'company') {
255
274
  return [
256
275
  BgWidget.editeInput({
257
- gvc: gvc, title: `發票抬頭`, placeHolder: '請輸入發票抬頭', callback: (text) => {
258
- vm.user_info.company = text
259
- }, type: 'text', default: `${vm.user_info.company}`
276
+ gvc: gvc,
277
+ title: `發票抬頭`,
278
+ placeHolder: '請輸入發票抬頭',
279
+ callback: (text) => {
280
+ vm.user_info.company = text;
281
+ },
282
+ type: 'text',
283
+ default: `${vm.user_info.company}`,
260
284
  }),
261
285
  BgWidget.editeInput({
262
286
  gvc: gvc,
263
287
  title: `公司統一編號`,
264
288
  placeHolder: '請輸入統一編號',
265
289
  callback: (text) => {
266
- vm.user_info.gui_number = text
290
+ vm.user_info.gui_number = text;
267
291
  },
268
292
  type: 'number',
269
- default: `${vm.user_info.gui_number}`
270
- })
271
- ]
293
+ default: `${vm.user_info.gui_number}`,
294
+ }),
295
+ ];
272
296
  } else {
273
- return []
297
+ return [];
274
298
  }
275
- })()]
276
- }else{
277
- return []
299
+ })(),
300
+ ];
301
+ } else {
302
+ return [];
278
303
  }
279
- })()
280
- ].join(`<div class="my-2"></div>`)}</div>`
304
+ })(),
305
+ ].join(`<div class="my-2"></div>`)}</div>`;
281
306
  },
282
307
  footer_html: (gvc: GVC) => {
283
- return [BgWidget.cancel(gvc.event(() => {
284
- gvc.closeDialog()
285
- })), BgWidget.save(gvc.event(async () => {
286
- if (vm.user_info.invoice_type !== 'company') {
287
- vm.user_info.company = ''
288
- vm.user_info.gui_number = ''
289
- }
290
- if(gvc.glitter.deviceType !== gvc.glitter.deviceTypeEnum.Ios){
291
- if (vm.user_info.invoice_type === 'company' && !vm.user_info.company) {
292
- dialog.errorMessage({text: '請確實填寫發票抬頭'})
293
- return
294
- } else if (vm.user_info.invoice_type === 'company' && !vm.user_info.gui_number) {
295
- dialog.errorMessage({text: '請確實填寫統一編號'})
296
- return
297
- } else if (!vm.user_info.email) {
298
- dialog.errorMessage({text: '請確實填寫信箱'})
299
- return
300
- } else if (!BgWidget.isValidEmail(vm.user_info.email)) {
301
- dialog.errorMessage({text: '請輸入有效信箱'})
302
- return
303
- } else if (vm.user_info.invoice_type === 'company' && !BgWidget.isValidNumbers(vm.user_info.gui_number)) {
304
- dialog.errorMessage({text: '請輸入有效統一編號'})
305
- return
306
- }
307
- }
308
-
309
- await ApiUser.setPublicConfig({
310
- key: 'ai-points-store',
311
- value: vm.user_info,
312
- user_id: 'manager',
313
- })
314
- vm.note = {
315
- invoice_data: vm.user_info
316
- }
317
- dialog.dataLoading({visible: true})
318
- if (gvc.glitter.deviceType === gvc.glitter.deviceTypeEnum.Ios) {
319
- gvc.glitter.runJsInterFace("in_app_product", {
320
- total: `ai_points_${vm.total}`
321
- }, async (res) => {
322
- console.log(`res.receipt_data=>`, res.receipt_data);
323
- if (res.receipt_data) {
324
- await AiPointsApi.apple_webhook(res.receipt_data);
325
- window.parent.location.reload();
326
- } else {
327
- dialog.dataLoading({visible: false});
328
- dialog.errorMessage({text:'儲值失敗'})
329
- }
308
+ return [
309
+ BgWidget.cancel(
310
+ gvc.event(() => {
311
+ gvc.closeDialog();
330
312
  })
331
- } else {
332
- AiPointsApi.store(vm).then(async (res) => {
333
- dialog.dataLoading({visible: false})
334
- if (res.response.form) {
335
- const id = gvc.glitter.getUUID();
336
- (window.parent as any).$('body').append(`<div id="${id}" style="display: none;">${res.response.form}</div>`);
337
- (window.parent as any).document.querySelector(`#${id} #submit`).click();
313
+ ),
314
+ BgWidget.save(
315
+ gvc.event(async () => {
316
+ if (vm.user_info.invoice_type !== 'company') {
317
+ vm.user_info.company = '';
318
+ vm.user_info.gui_number = '';
319
+ }
320
+ if (gvc.glitter.deviceType !== gvc.glitter.deviceTypeEnum.Ios) {
321
+ if (vm.user_info.invoice_type === 'company' && !vm.user_info.company) {
322
+ dialog.errorMessage({ text: '請確實填寫發票抬頭' });
323
+ return;
324
+ } else if (vm.user_info.invoice_type === 'company' && !vm.user_info.gui_number) {
325
+ dialog.errorMessage({ text: '請確實填寫統一編號' });
326
+ return;
327
+ } else if (!vm.user_info.email) {
328
+ dialog.errorMessage({ text: '請確實填寫信箱' });
329
+ return;
330
+ } else if (!BgWidget.isValidEmail(vm.user_info.email)) {
331
+ dialog.errorMessage({ text: '請輸入有效信箱' });
332
+ return;
333
+ } else if (vm.user_info.invoice_type === 'company' && !BgWidget.isValidNumbers(vm.user_info.gui_number)) {
334
+ dialog.errorMessage({ text: '請輸入有效統一編號' });
335
+ return;
336
+ }
337
+ }
338
+
339
+ await ApiUser.setPublicConfig({
340
+ key: 'ai-points-store',
341
+ value: vm.user_info,
342
+ user_id: 'manager',
343
+ });
344
+ vm.note = {
345
+ invoice_data: vm.user_info,
346
+ };
347
+ dialog.dataLoading({ visible: true });
348
+ if (gvc.glitter.deviceType === gvc.glitter.deviceTypeEnum.Ios) {
349
+ gvc.glitter.runJsInterFace(
350
+ 'in_app_product',
351
+ {
352
+ total: `ai_points_${vm.total}`,
353
+ },
354
+ async (res) => {
355
+ console.log(`res.receipt_data=>`, res.receipt_data);
356
+ if (res.receipt_data) {
357
+ await AiPointsApi.apple_webhook(res.receipt_data);
358
+ window.parent.location.reload();
359
+ } else {
360
+ dialog.dataLoading({ visible: false });
361
+ dialog.errorMessage({ text: '儲值失敗' });
362
+ }
363
+ }
364
+ );
338
365
  } else {
339
- dialog.errorMessage({text: '發生錯誤'})
366
+ AiPointsApi.store(vm).then(async (res) => {
367
+ dialog.dataLoading({ visible: false });
368
+ if (res.response.form) {
369
+ const id = gvc.glitter.getUUID();
370
+ (window.parent as any).$('body').append(`<div id="${id}" style="display: none;">${res.response.form}</div>`);
371
+ (window.parent as any).document.querySelector(`#${id} #submit`).click();
372
+ } else {
373
+ dialog.errorMessage({ text: '發生錯誤' });
374
+ }
375
+ });
340
376
  }
341
377
  })
342
- }
343
-
344
- }))].join('')
345
- }
346
- })
347
- return
348
-
378
+ ),
379
+ ].join('');
380
+ },
381
+ });
382
+ return;
349
383
  }
350
384
  }
351
385
 
352
-
353
- (window as any).glitter.setModule(import.meta.url, AiPoints);
386
+ (window as any).glitter.setModule(import.meta.url, AiPoints);