ts-glitter 20.7.8 → 20.7.9

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 (30) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/cms-plugin/POS-setting.js +1 -0
  4. package/lowcode/cms-plugin/POS-setting.ts +1 -0
  5. package/lowcode/cms-plugin/cms-router.js +5 -0
  6. package/lowcode/cms-plugin/cms-router.ts +5 -0
  7. package/lowcode/cms-plugin/pos-config-setting.js +591 -0
  8. package/lowcode/cms-plugin/pos-config-setting.ts +681 -0
  9. package/lowcode/cms-plugin/pos-pages/imin-module.js +176 -59
  10. package/lowcode/cms-plugin/pos-pages/imin-module.ts +708 -568
  11. package/lowcode/cms-plugin/pos-pages/payment-page.js +47 -16
  12. package/lowcode/cms-plugin/pos-pages/payment-page.ts +55 -16
  13. package/lowcode/glitterBundle/dialog/ShareDialog.js +3 -0
  14. package/lowcode/glitterBundle/dialog/ShareDialog.ts +5 -0
  15. package/lowcode/glitterBundle/dialog/dialog.js +5 -1
  16. package/lowcode/glitterBundle/dialog/dialog.ts +4 -1
  17. package/lowcode/jspage/function-page/setting_editor.js +8 -0
  18. package/lowcode/jspage/function-page/setting_editor.ts +8 -0
  19. package/lowcode/public-components/terms-related/index.js +1 -1
  20. package/lowcode/public-components/terms-related/index.ts +1 -1
  21. package/package.json +1 -1
  22. package/src/api-public/services/order-event.js +1 -1
  23. package/src/api-public/services/order-event.js.map +1 -1
  24. package/src/api-public/services/order-event.ts +1 -1
  25. package/src/api-public/services/user.js +9 -8
  26. package/src/api-public/services/user.js.map +1 -1
  27. package/src/api-public/services/user.ts +13 -13
  28. package/src/services/template.js +1 -0
  29. package/src/services/template.js.map +1 -1
  30. package/src/services/template.ts +1 -0
package/lowcode/Entry.js CHANGED
@@ -144,7 +144,7 @@ export class Entry {
144
144
  }
145
145
  window.renderClock = (_b = window.renderClock) !== null && _b !== void 0 ? _b : createClock();
146
146
  console.log(`Entry-time:`, window.renderClock.stop());
147
- glitter.share.editerVersion = 'V_20.7.8';
147
+ glitter.share.editerVersion = 'V_20.7.9';
148
148
  glitter.share.start = new Date();
149
149
  const vm = { appConfig: [] };
150
150
  window.saasConfig = {
package/lowcode/Entry.ts CHANGED
@@ -146,7 +146,7 @@ export class Entry {
146
146
  }
147
147
  (window as any).renderClock = (window as any).renderClock ?? createClock();
148
148
  console.log(`Entry-time:`, (window as any).renderClock.stop());
149
- glitter.share.editerVersion = 'V_20.7.8';
149
+ glitter.share.editerVersion = 'V_20.7.9';
150
150
  glitter.share.start = new Date();
151
151
  const vm = { appConfig: [] };
152
152
  (window as any).saasConfig = {
@@ -841,6 +841,7 @@ export class POSSetting {
841
841
  PayConfig.pos_config = res.response.value;
842
842
  vm.loading = false;
843
843
  gvc.notifyDataChange(vm.id);
844
+ console.log(`PayConfig.pos_config=>`, PayConfig.pos_config);
844
845
  });
845
846
  if (vm.type === 'home') {
846
847
  vm.type = 'menu';
@@ -937,6 +937,7 @@ export class POSSetting {
937
937
  PayConfig.pos_config = res.response.value;
938
938
  vm.loading = false;
939
939
  gvc.notifyDataChange(vm.id);
940
+ console.log(`PayConfig.pos_config=>`,PayConfig.pos_config)
940
941
  });
941
942
 
942
943
  if (vm.type === 'home') {
@@ -51,6 +51,11 @@ export class CmsRouter {
51
51
  resolve(cl.main(gvc));
52
52
  });
53
53
  break;
54
+ case 'pos_setting':
55
+ gvc.glitter.getModule(new URL('./cms-plugin/pos-config-setting.js', gvc.glitter.root_path).href, (cl) => {
56
+ resolve(cl.main(gvc));
57
+ });
58
+ break;
54
59
  case 'auto_fcm_push':
55
60
  gvc.glitter.getModule(new URL('./cms-plugin/auto-fcm-push.js', gvc.glitter.root_path).href, (cl) => {
56
61
  resolve(cl.main(gvc));
@@ -67,6 +67,11 @@ export class CmsRouter{
67
67
  resolve(cl.main(gvc))
68
68
  })
69
69
  break
70
+ case 'pos_setting':
71
+ gvc.glitter.getModule(new URL('./cms-plugin/pos-config-setting.js', gvc.glitter.root_path).href, (cl) => {
72
+ resolve(cl.main(gvc))
73
+ })
74
+ break
70
75
  case 'auto_fcm_push':
71
76
  gvc.glitter.getModule(new URL('./cms-plugin/auto-fcm-push.js', gvc.glitter.root_path).href, (cl) => {
72
77
  resolve(cl.main(gvc))
@@ -0,0 +1,591 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { ShareDialog } from '../glitterBundle/dialog/ShareDialog.js';
11
+ import { ApiUser } from '../glitter-base/route/user.js';
12
+ import { BgWidget } from '../backend-manager/bg-widget.js';
13
+ import { Currency } from '../glitter-base/global/currency.js';
14
+ import { FilterOptions } from './filter-options.js';
15
+ import { LanguageBackend } from './language-backend.js';
16
+ const html = String.raw;
17
+ export class PosConfigSetting {
18
+ static main(gvc) {
19
+ const glitter = gvc.glitter;
20
+ const dialog = new ShareDialog(gvc.glitter);
21
+ const vm = {
22
+ id: glitter.getUUID(),
23
+ tableId: glitter.getUUID(),
24
+ filterId: glitter.getUUID(),
25
+ type: 'function',
26
+ data: {
27
+ ubn: '',
28
+ email: '',
29
+ phone: '',
30
+ address: '',
31
+ category: '',
32
+ pos_type: 'retails',
33
+ ai_search: false,
34
+ shop_name: '',
35
+ support_pos_payment: ['cash', 'creditCard', 'line'],
36
+ },
37
+ SEOData: {
38
+ seo: {
39
+ code: '',
40
+ type: 'custom',
41
+ image: '',
42
+ logo: '',
43
+ title: '',
44
+ content: '',
45
+ keywords: '',
46
+ },
47
+ list: [],
48
+ version: 'v2',
49
+ formData: {},
50
+ formFormat: [],
51
+ resource_from: 'global',
52
+ globalStyleTag: [],
53
+ support_editor: 'true',
54
+ },
55
+ domain: {},
56
+ dataList: undefined,
57
+ query: '',
58
+ mainLoading: true,
59
+ SEOLoading: true,
60
+ domainLoading: true,
61
+ save_info: () => __awaiter(this, void 0, void 0, function* () {
62
+ return ApiUser.setPublicConfig({
63
+ key: 'store-information',
64
+ value: vm.data,
65
+ user_id: 'manager',
66
+ }).then(() => {
67
+ window.parent.store_info.web_type = vm.data.web_type;
68
+ return true;
69
+ });
70
+ }),
71
+ };
72
+ return gvc.bindView({
73
+ bind: vm.id,
74
+ dataList: [{ obj: vm, key: 'type' }],
75
+ view: () => {
76
+ var _a;
77
+ if (vm.mainLoading) {
78
+ ApiUser.getPublicConfig('store-information', 'manager').then((response) => {
79
+ const data = response.response.value;
80
+ vm.data = Object.assign({ ubn: '', email: '', phone: '', address: '', category: '', pos_type: 'retails', ai_search: false, wishlist: true, shop_name: '', support_pos_payment: ['cash', 'creditCard', 'line'], web_type: ['shop'], currency_code: 'TWD' }, data);
81
+ vm.mainLoading = false;
82
+ gvc.notifyDataChange(vm.id);
83
+ });
84
+ }
85
+ function createSection(title, description) {
86
+ return html `
87
+ <div style="color: #393939; font-size: 16px;">${title}</div>
88
+ ${description
89
+ ? html ` <div style="color: #8D8D8D; font-size: 13px; padding-right: 10px;">${description}</div>`
90
+ : ''}
91
+ `;
92
+ }
93
+ function createToggle(title, description, key) {
94
+ return createRow(title, description, html ` <div class="cursor_pointer form-check form-switch m-0 p-0" style="min-width: 50px;">
95
+ <input
96
+ class="form-check-input m-0"
97
+ type="checkbox"
98
+ onchange="${gvc.event(() => (vm.data[key] = !vm.data[key]))}"
99
+ ${vm.data[key] ? 'checked' : ''}
100
+ />
101
+ </div>`);
102
+ }
103
+ function createSelect(title, description, key) {
104
+ return createRow(title, description, html ` <div class="d-flex align-items-center justify-content-center" style="min-width: 150px;">
105
+ ${BgWidget.select({
106
+ gvc,
107
+ callback: text => {
108
+ vm.data[key] = text;
109
+ },
110
+ default: vm.data[key],
111
+ options: Currency.code.map(dd => ({
112
+ key: dd.currency_code,
113
+ value: dd.currency_title,
114
+ })),
115
+ })}
116
+ </div>`);
117
+ }
118
+ function createPickUpModeDialog(title, description) {
119
+ var _a;
120
+ vm.data.pos_support_finction = (_a = vm.data.pos_support_finction) !== null && _a !== void 0 ? _a : [];
121
+ return createRow(title, description, BgWidget.customButton({
122
+ button: { color: 'snow', size: 'md' },
123
+ text: { name: '編輯' },
124
+ event: gvc.event(() => {
125
+ BgWidget.settingDialog({
126
+ gvc,
127
+ title,
128
+ width: 600,
129
+ innerHTML: gvc => {
130
+ return `<div class="d-flex flex-column" style="gap:5px;">${[
131
+ html ` <div class="d-flex align-items-center" style="gap:10px;">
132
+ <div style="color: #393939; font-size: 16px;">啟用功能</div>
133
+ <div class="cursor_pointer form-check form-switch m-0 p-0" style="min-width: 50px;">
134
+ <input
135
+ class="form-check-input m-0"
136
+ type="checkbox"
137
+ onchange="${gvc.event(() => {
138
+ if (vm.data.pos_support_finction.includes('order_sort')) {
139
+ vm.data.pos_support_finction = vm.data.pos_support_finction.filter((dd) => dd != 'order_sort');
140
+ }
141
+ else {
142
+ vm.data.pos_support_finction.push('order_sort');
143
+ }
144
+ gvc.recreateView();
145
+ })}"
146
+ ${vm.data.pos_support_finction.includes('order_sort') ? `checked` : ''}
147
+ />
148
+ </div>
149
+ ${vm.data.pos_support_finction.includes('order_sort')
150
+ ? `<div class="fw-bold fs-6 d-flex align-items-center">當前號碼 : ${vm.data.pickup_now || vm.data.pickup_start || 0}
151
+ <div class="mx-2"></div>
152
+ ${BgWidget.customButton({
153
+ button: {
154
+ color: 'snow',
155
+ size: 'sm',
156
+ },
157
+ text: {
158
+ name: '重置號碼',
159
+ },
160
+ event: gvc.event(() => {
161
+ const dialog = new ShareDialog(gvc.glitter);
162
+ dialog.checkYesOrNot({
163
+ text: '是否確認重置號碼?',
164
+ callback: response => {
165
+ if (response) {
166
+ vm.data.pickup_now = vm.data.pickup_start || '0';
167
+ gvc.recreateView();
168
+ }
169
+ },
170
+ });
171
+ }),
172
+ })}
173
+ </div>`
174
+ : ``}
175
+ </div>`,
176
+ ...(() => {
177
+ if (vm.data.pos_support_finction.includes('order_sort')) {
178
+ return [
179
+ BgWidget.editeInput({
180
+ gvc: gvc,
181
+ title: '初始號碼',
182
+ default: vm.data.pickup_start || '0',
183
+ callback: text => {
184
+ vm.data.pickup_start = text;
185
+ },
186
+ placeHolder: '請輸入初始號碼',
187
+ type: 'number',
188
+ }),
189
+ BgWidget.editeInput({
190
+ gvc: gvc,
191
+ title: html ` <div class="d-flex flex-column">
192
+ ${['結束號碼', BgWidget.grayNote('輸入零則無上限')].join('')}
193
+ </div>`,
194
+ default: vm.data.pickup_end || '0',
195
+ callback: text => {
196
+ vm.data.pickup_end = text;
197
+ },
198
+ placeHolder: '請輸入結束號碼',
199
+ type: 'number',
200
+ }),
201
+ ];
202
+ }
203
+ else {
204
+ return [];
205
+ }
206
+ })(),
207
+ ].join(BgWidget.horizontalLine())}</div>`;
208
+ },
209
+ footer_html: gvc => {
210
+ return [
211
+ BgWidget.cancel(gvc.event(() => {
212
+ gvc.closeDialog();
213
+ })),
214
+ BgWidget.save(gvc.event(() => __awaiter(this, void 0, void 0, function* () {
215
+ dialog.dataLoading({ visible: true });
216
+ yield vm.save_info();
217
+ yield Promise.all(PosConfigSetting.saveArray.map(dd => dd()));
218
+ PosConfigSetting.saveArray = [];
219
+ dialog.dataLoading({ visible: false });
220
+ dialog.successMessage({ text: '儲存成功' });
221
+ gvc.closeDialog();
222
+ }))),
223
+ ].join('');
224
+ },
225
+ });
226
+ }),
227
+ }));
228
+ }
229
+ function createCheckoutModeDialog(title, description) {
230
+ return createRow(title, description, BgWidget.customButton({
231
+ button: { color: 'snow', size: 'md' },
232
+ text: { name: '編輯' },
233
+ event: gvc.event(() => {
234
+ const originData = structuredClone(vm.data);
235
+ BgWidget.settingDialog({
236
+ gvc,
237
+ title,
238
+ width: 600,
239
+ innerHTML: gvc => {
240
+ const modes = vm.data.checkout_mode;
241
+ const arr = [
242
+ {
243
+ key: 'orderStatus',
244
+ name: '訂單狀態',
245
+ data: FilterOptions.orderStatusOptions,
246
+ },
247
+ {
248
+ key: 'payload',
249
+ name: '付款狀態',
250
+ data: FilterOptions.payloadStatusOptions,
251
+ },
252
+ {
253
+ key: 'progress',
254
+ name: '出貨狀況',
255
+ data: FilterOptions.progressOptions,
256
+ },
257
+ ];
258
+ return html `${BgWidget.grayNote('提示:勾選項目後,該項目將會作為訂單累積與分析數據的篩選條件')}
259
+ <div class="d-flex flex-column gap-1">
260
+ ${arr
261
+ .map(obj => {
262
+ return BgWidget.inlineCheckBox({
263
+ gvc,
264
+ title: obj.name,
265
+ def: modes[obj.key],
266
+ array: obj.data.map(item => ({ title: item.name, value: item.key })),
267
+ callback: (array) => {
268
+ modes[obj.key] = array;
269
+ },
270
+ type: 'multiple',
271
+ });
272
+ })
273
+ .join(BgWidget.mbContainer(12))}
274
+ </div>`;
275
+ },
276
+ footer_html: gvc => {
277
+ return [
278
+ BgWidget.cancel(gvc.event(() => {
279
+ vm.data = originData;
280
+ gvc.closeDialog();
281
+ })),
282
+ BgWidget.save(gvc.event(() => __awaiter(this, void 0, void 0, function* () {
283
+ dialog.dataLoading({ visible: true });
284
+ yield vm.save_info();
285
+ yield Promise.all(PosConfigSetting.saveArray.map(dd => dd()));
286
+ PosConfigSetting.saveArray = [];
287
+ dialog.dataLoading({ visible: false });
288
+ dialog.successMessage({ text: '儲存成功' });
289
+ gvc.closeDialog();
290
+ }))),
291
+ ].join('');
292
+ },
293
+ });
294
+ }),
295
+ }));
296
+ }
297
+ function createRow(title, description, elem) {
298
+ return html `
299
+ ${BgWidget.horizontalLine({ margin: 0.5 })}
300
+ <div class="d-flex align-items-center justify-content-between">
301
+ <div class="d-flex flex-column" style="gap:8px;">${createSection(title, description)}</div>
302
+ ${elem}
303
+ </div>
304
+ `;
305
+ }
306
+ vm.data.pos_support_finction = (_a = vm.data.pos_support_finction) !== null && _a !== void 0 ? _a : [];
307
+ const typeMap = {
308
+ function: () => {
309
+ var _a;
310
+ return BgWidget.mainCard(html `
311
+ <div class="d-flex flex-column gap-2">
312
+ ${createSection('POS功能', '系統將根據您勾選的項目,開放相對應的功能')}
313
+ ${BgWidget.inlineCheckBox({
314
+ title: '',
315
+ gvc,
316
+ def: (_a = vm.data.pos_support_finction) !== null && _a !== void 0 ? _a : [],
317
+ array: [
318
+ { title: '列印明細', value: 'print_order_detail' },
319
+ { title: '列印留存聯', value: 'print_order_receipt' },
320
+ { title: '發票開立', value: 'print_invoice' },
321
+ { title: '桌號設定', value: 'table_select' },
322
+ ],
323
+ callback: (array) => {
324
+ vm.data.pos_support_finction = array;
325
+ },
326
+ type: 'multiple',
327
+ })}
328
+ ${createPickUpModeDialog('叫號取餐', `針對特店取餐功能,會自動遞增取餐號碼。`)}
329
+ </div>
330
+ `);
331
+ },
332
+ };
333
+ return BgWidget.container(html `
334
+ <div class="title-container">${BgWidget.title('全站設定')}</div>
335
+ ${BgWidget.tab([
336
+ { title: '功能管理', key: 'function' },
337
+ ], gvc, vm.type, text => {
338
+ vm.type = text;
339
+ })}
340
+ ${typeMap[vm.type] ? typeMap[vm.type]() : ''}
341
+ <div style="margin-top: 300px;"></div>
342
+ <div class="update-bar-container">
343
+ ${BgWidget.save(gvc.event(() => __awaiter(this, void 0, void 0, function* () {
344
+ dialog.dataLoading({ visible: true });
345
+ yield vm.save_info();
346
+ yield Promise.all(PosConfigSetting.saveArray.map(dd => dd()));
347
+ PosConfigSetting.saveArray = [];
348
+ dialog.dataLoading({ visible: false });
349
+ dialog.successMessage({ text: '儲存成功' });
350
+ })), '儲存', 'guide3-5')}
351
+ </div>
352
+ `);
353
+ },
354
+ divCreate: {
355
+ style: 'color: #393939; font-size: 14px;',
356
+ },
357
+ });
358
+ }
359
+ static policy(gvc) {
360
+ const id = gvc.glitter.getUUID();
361
+ const dialog = new ShareDialog(gvc.glitter);
362
+ const vm2 = {
363
+ language: window.parent.store_info.language_setting.def,
364
+ };
365
+ return BgWidget.container(gvc.bindView(() => {
366
+ return {
367
+ bind: id,
368
+ view: () => {
369
+ return [
370
+ html ` <div class="title-container mb-4">
371
+ ${BgWidget.title(`商店條款`)}
372
+ <div class="flex-fill"></div>
373
+ ${LanguageBackend.switchBtn({
374
+ gvc: gvc,
375
+ language: vm2.language,
376
+ callback: language => {
377
+ vm2.language = language;
378
+ gvc.notifyDataChange(id);
379
+ },
380
+ })}
381
+ </div>`,
382
+ gvc.bindView(() => {
383
+ return {
384
+ bind: gvc.glitter.getUUID(),
385
+ view: () => {
386
+ return BgWidget.mainCard(html ` <div class="d-flex flex-column">
387
+ ${[
388
+ ...[
389
+ {
390
+ key: 'privacy',
391
+ title: '隱私權政策',
392
+ },
393
+ {
394
+ key: 'term',
395
+ title: '服務條款',
396
+ },
397
+ {
398
+ key: 'refund',
399
+ title: '退換貨政策',
400
+ },
401
+ {
402
+ key: 'delivery',
403
+ title: '購買與配送須知',
404
+ },
405
+ ].map(dd => {
406
+ const openURL = `https://${window.parent.glitter.share.editorViewModel.domain}/${dd.key}`;
407
+ return html `
408
+ <div style="color: #393939;font-size: 16px;">${dd.title}</div>
409
+ <div
410
+ style="color: #36B;font-size:13px;cursor:pointer;"
411
+ onclick="${gvc.event(() => {
412
+ window.parent.glitter.openNewTab(openURL);
413
+ })}"
414
+ >
415
+ ${openURL}
416
+ </div>
417
+ ${gvc.bindView(() => {
418
+ const key = dd.key;
419
+ const vm = {
420
+ id: gvc.glitter.getUUID(),
421
+ loading: true,
422
+ data: {},
423
+ };
424
+ ApiUser.getPublicConfig(`terms-related-${key}-${vm2.language}`, 'manager').then(dd => {
425
+ if (dd.response.value) {
426
+ vm.data = dd.response.value;
427
+ }
428
+ vm.loading = false;
429
+ gvc.notifyDataChange(vm.id);
430
+ });
431
+ return {
432
+ bind: vm.id,
433
+ view: () => {
434
+ if (vm.loading) {
435
+ return html ` <div class="w-100 d-flex align-items-center justify-content-center">
436
+ ${BgWidget.spinner()}
437
+ </div>`;
438
+ }
439
+ return BgWidget.richTextEditor({
440
+ gvc: gvc,
441
+ content: vm.data.text || '',
442
+ callback: content => {
443
+ vm.data.text = content;
444
+ PosConfigSetting.saveArray.push(() => {
445
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
446
+ yield ApiUser.setPublicConfig({
447
+ key: `terms-related-${key}-${vm2.language}`,
448
+ user_id: 'manager',
449
+ value: vm.data,
450
+ });
451
+ resolve(true);
452
+ }));
453
+ });
454
+ },
455
+ title: dd.title,
456
+ });
457
+ },
458
+ divCreate: {
459
+ class: `w-100 mt-2`,
460
+ },
461
+ };
462
+ })}
463
+ `;
464
+ }),
465
+ ].join('<div class="my-1"></div>')}
466
+ <div
467
+ class="shadow"
468
+ style="width: 100%;padding: 14px 16px;background: #FFF; display: flex;justify-content: end;position: fixed;bottom: 0;right: 0;z-index:1;gap:14px;"
469
+ >
470
+ ${BgWidget.save(gvc.event(() => __awaiter(this, void 0, void 0, function* () {
471
+ dialog.dataLoading({ visible: true });
472
+ yield Promise.all(PosConfigSetting.saveArray.map(dd => dd()));
473
+ PosConfigSetting.saveArray = [];
474
+ dialog.dataLoading({ visible: false });
475
+ dialog.successMessage({ text: '儲存成功' });
476
+ })), '儲存')}
477
+ </div>
478
+ </div>`);
479
+ },
480
+ divCreate: {
481
+ class: 'mt-3',
482
+ },
483
+ };
484
+ }),
485
+ html ` <div style="margin-top: 300px;"></div>`,
486
+ ].join('');
487
+ },
488
+ };
489
+ }));
490
+ }
491
+ }
492
+ PosConfigSetting.saveArray = [];
493
+ PosConfigSetting.goDaddyDoc = (gvc) => {
494
+ return BgWidget.questionButton(gvc.event(() => {
495
+ BgWidget.settingDialog({
496
+ gvc: gvc,
497
+ title: 'DNS 設定指南',
498
+ innerHTML: gvc => {
499
+ gvc.addStyle(`
500
+ .gddoc-container {
501
+ word-break: break-all;
502
+ white-space: normal;
503
+ max-width: 100%;
504
+ }
505
+ .gddoc-h4 {
506
+ margin-bottom: 10px;
507
+ font-weight: 500;
508
+ }
509
+ .gddoc-blue-text {
510
+ color: #4d86db;
511
+ font-size: 14px;
512
+ font-weight: 400;
513
+ cursor: pointer;
514
+ overflow-wrap: break-word;
515
+ }
516
+ `);
517
+ return html ` <div class="gddoc-container">
518
+ <div class="tx_title text-center mb-4 fs-3">GoDaddy DNS 設定指南</div>
519
+ <h4 class="gddoc-h4" class="gddoc-h4">步驟 1:登錄 GoDaddy 帳戶</h4>
520
+ <ol>
521
+ <li>
522
+ 訪問
523
+ <a
524
+ class="gddoc-blue-text"
525
+ onclick="${gvc.event(() => window.parent.glitter.openNewTab('https://www.godaddy.com'))}"
526
+ >GoDaddy 官方網站</a
527
+ >。
528
+ </li>
529
+ <li>使用您的帳號和密碼登錄到 GoDaddy 控制台。</li>
530
+ </ol>
531
+ <h4 class="gddoc-h4">步驟 2:訪問您的域名管理區</h4>
532
+ <ol>
533
+ <li>前往「我的產品」:登錄後,點擊右上角的「我的帳戶」,然後選擇「我的產品」。</li>
534
+ <li>選擇您的域名:在「我的產品」頁面中找到您要設置的域名,點擊該域名旁邊的「DNS」按鈕。</li>
535
+ </ol>
536
+ <h4 class="gddoc-h4">步驟 3:設置 DNS 記錄</h4>
537
+ <ol>
538
+ <li>進入 DNS 管理頁面:點擊「DNS」後,會進入域名的 DNS 管理頁面。</li>
539
+ <li>
540
+ 添加 A 記錄:
541
+ <ul>
542
+ <li>
543
+ 在「記錄」區域,找到「A 記錄」,如果已有一個 A
544
+ 記錄指向根域名(@),可以編輯它。如果沒有,點擊「添加」。
545
+ </li>
546
+ <li>
547
+ 設定如下:
548
+ <ul>
549
+ <li><code>名稱(Name): @</code></li>
550
+ <li><code>類型(Type): A</code></li>
551
+ <li><code>值(Value): 34.81.28.192</code></li>
552
+ <li><code>TTL: 600</code></li>
553
+ </ul>
554
+ </li>
555
+ </ul>
556
+ </li>
557
+ <li>保存記錄:確保記錄設置正確後,點擊「保存」按鈕。</li>
558
+ </ol>
559
+ <h4 class="gddoc-h4">步驟 4:設置 WWW 子域名(選填)</h4>
560
+ <ol>
561
+ <li>
562
+ 添加 CNAME 記錄(如需將 <code>www</code> 子域名指向根域名):
563
+ <ul>
564
+ <li>點擊「添加」按鈕。</li>
565
+ <li>
566
+ 設定如下:
567
+ <ul>
568
+ <li><code>名稱(Name): @</code></li>
569
+ <li><code>類型(Type): CNAME</code></li>
570
+ <li><code>值(Value): 34.81.28.192</code></li>
571
+ <li><code>TTL: 600</code></li>
572
+ </ul>
573
+ </li>
574
+ </ul>
575
+ </li>
576
+ <li>保存記錄:確保記錄設置正確後,點擊「保存」按鈕。</li>
577
+ </ol>
578
+ <h4 class="gddoc-h4">步驟 5:確認 DNS 設置</h4>
579
+ <ol>
580
+ <li>等待生效:DNS 設置通常需要一些時間才會生效,通常在 24 到 48 小時內。</li>
581
+ </ol>
582
+ ${BgWidget.mbContainer(100)}
583
+ </div>`;
584
+ },
585
+ footer_html: (gvc) => {
586
+ return '';
587
+ },
588
+ });
589
+ }));
590
+ };
591
+ window.glitter.setModule(import.meta.url, PosConfigSetting);