ts-glitter 18.3.3 → 18.3.4

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.
@@ -18,7 +18,7 @@ export class ShoppingInformation {
18
18
  id: string;
19
19
  tableId: string;
20
20
  filterId: string;
21
- type: 'list' | 'add' | 'replace';
21
+ type: 'basic' | 'function' | 'global';
22
22
  data: any;
23
23
  SEOData: any,
24
24
  domain: any,
@@ -32,7 +32,7 @@ export class ShoppingInformation {
32
32
  id: glitter.getUUID(),
33
33
  tableId: glitter.getUUID(),
34
34
  filterId: glitter.getUUID(),
35
- type: 'list',
35
+ type: 'basic',
36
36
  data: {
37
37
  "ubn": "",
38
38
  "email": "",
@@ -202,137 +202,335 @@ export class ShoppingInformation {
202
202
  }
203
203
  vm.data.web_type = vm.data.web_type ?? ['shop']
204
204
  vm.data.currency_code = vm.data.currency_code || 'TWD'
205
+ vm.data.cookie_check=vm.data.cookie_check ?? true
205
206
  return BgWidget.container(html`
206
- <div class="title-container mb-4">
207
- ${BgWidget.title(`商店訊息`)}
208
- <div class="flex-fill"></div>
207
+ <div class="title-container">
208
+ ${BgWidget.title('全站設定')}
209
209
  </div>
210
- ${gvc.bindView({
211
- bind: "basic",
212
- view: () => {
213
- vm.save_info = () => {
214
- return new Promise((resolve, reject) => {
215
- ApiUser.setPublicConfig({
216
- key: "store-information",
217
- value: vm.data,
218
- user_id: 'manager'
219
- }).then(r => {
220
- resolve(true);
221
- (window.parent as any).store_info.web_type=vm.data.web_type;
222
- })
223
- })
210
+ ${BgWidget.tab(
211
+ [
212
+ {title: '商店訊息', key: 'basic'},
213
+ {title: '功能管理', key: 'function'},
214
+ {title: '跨境電商', key: 'global'}
215
+ ],
216
+ gvc,
217
+ vm.type,
218
+ (text) => {
219
+ vm.type=text as any
220
+ // vm.select = text as any;
221
+ // gvc.notifyDataChange(id);
224
222
  }
225
- return BgWidget.mainCard(html`
223
+ )}
224
+ ${(()=>{
225
+ switch (vm.type){
226
+ case 'basic':
227
+ return ` ${gvc.bindView({
228
+ bind: "basic",
229
+ view: () => {
230
+ vm.save_info = () => {
231
+ return new Promise((resolve, reject) => {
232
+ ApiUser.setPublicConfig({
233
+ key: "store-information",
234
+ value: vm.data,
235
+ user_id: 'manager'
236
+ }).then(r => {
237
+ resolve(true);
238
+ (window.parent as any).store_info.web_type=vm.data.web_type;
239
+ })
240
+ })
241
+ }
242
+ return BgWidget.mainCard(html`
226
243
  <div class="d-flex flex-column " style="gap:18px;">
227
244
  <div class="d-flex flex-column guide6-3">
228
245
  <div style="font-size: 16px;font-weight: 700;">商店基本資訊</div>
229
246
  <div class="d-flex w-100" style="gap:24px;">
230
247
  ${BgWidget.editeInput({
231
- gvc: gvc,
232
- title: '商店名稱',
233
- default: vm.data.shop_name ?? "",
234
- callback: (text) => {
235
- vm.data.shop_name = text;
236
- },
237
- placeHolder: '請輸入商店資訊',
238
- divStyle: "width:100%;"
239
- })}
248
+ gvc: gvc,
249
+ title: '商店名稱',
250
+ default: vm.data.shop_name ?? "",
251
+ callback: (text) => {
252
+ vm.data.shop_name = text;
253
+ },
254
+ placeHolder: '請輸入商店資訊',
255
+ divStyle: "width:100%;"
256
+ })}
240
257
  <div class="w-100 d-flex flex-column">
241
258
  <div class="tx_normal fw-normal">商店類別</div>
242
259
  ${BgWidget.select({
243
- gvc: gvc,
244
- default: vm.data.category ?? "",
245
- callback: (key) => {
246
- vm.data.category = key;
247
- },
248
- options: shopCategory,
249
- style: 'width:100%;margin: 8px 0;',
250
- })}
260
+ gvc: gvc,
261
+ default: vm.data.category ?? "",
262
+ callback: (key) => {
263
+ vm.data.category = key;
264
+ },
265
+ options: shopCategory,
266
+ style: 'width:100%;margin: 8px 0;',
267
+ })}
251
268
  </div>
252
269
  </div>
253
270
  <div class="d-flex w-100" style="gap:24px;">
254
271
  ${BgWidget.editeInput({
255
- gvc: gvc,
256
- title: '電子信箱',
257
- default: vm.data.email ?? "",
258
- callback: (text) => {
259
- vm.data.email = text;
260
- },
261
- placeHolder: '請輸入電子信箱',
262
- divStyle: "width:100%;"
263
- })}
272
+ gvc: gvc,
273
+ title: '電子信箱',
274
+ default: vm.data.email ?? "",
275
+ callback: (text) => {
276
+ vm.data.email = text;
277
+ },
278
+ placeHolder: '請輸入電子信箱',
279
+ divStyle: "width:100%;"
280
+ })}
264
281
  ${BgWidget.editeInput({
265
- gvc: gvc,
266
- title: '聯絡電話',
267
- default: vm.data.phone ?? "",
268
- callback: (text) => {
269
- vm.data.phone = text;
270
- },
271
- placeHolder: '請輸入聯絡電話',
272
- divStyle: "width:100%;"
273
- })}
282
+ gvc: gvc,
283
+ title: '聯絡電話',
284
+ default: vm.data.phone ?? "",
285
+ callback: (text) => {
286
+ vm.data.phone = text;
287
+ },
288
+ placeHolder: '請輸入聯絡電話',
289
+ divStyle: "width:100%;"
290
+ })}
274
291
  </div>
275
292
  <div class="d-flex w-100" style="gap:24px;">
276
293
  ${BgWidget.editeInput({
277
- gvc: gvc,
278
- title: '店家地址',
279
- default: vm.data.address,
280
- callback: (text) => {
281
- vm.data.address = text;
282
- },
283
- placeHolder: '請輸入店家地址',
284
- divStyle: "width:100%;"
285
- })}
294
+ gvc: gvc,
295
+ title: '店家地址',
296
+ default: vm.data.address,
297
+ callback: (text) => {
298
+ vm.data.address = text;
299
+ },
300
+ placeHolder: '請輸入店家地址',
301
+ divStyle: "width:100%;"
302
+ })}
286
303
  ${BgWidget.editeInput({
304
+ gvc: gvc,
305
+ title: '統一編號',
306
+ default: vm.data.ubn,
307
+ callback: (text) => {
308
+ vm.data.ubn = text;
309
+ },
310
+ placeHolder: '請輸入統一編號',
311
+ divStyle: "width:100%;"
312
+ })}
313
+ </div>
314
+ </div>
315
+ </div>
316
+ `, ``)
317
+ }, divCreate: {}
318
+ })}
319
+ <div style="margin-top: 24px;"></div>
320
+ ${gvc.bindView(() => {
321
+ const origin_select = (window.parent as any).glitter.share.editorViewModel.domain.includes('shopnex.tw') ? `free` : `custom`
322
+ let domain_from = (window.parent as any).glitter.share.editorViewModel.domain.includes('shopnex.tw') ? `free` : `custom`
323
+ let domain_text = (window.parent as any).glitter.share.editorViewModel.domain.replace('.shopnex.tw', '')
324
+ return {
325
+ bind: `domain`,
326
+ view: () => {
327
+ return BgWidget.mainCard(html`
328
+ <div class="d-flex flex-column" style="gap:24px">
329
+ <div class="d-flex flex-column" style="">
330
+ <div class="tx_normal fw-bold">網域設定</div>
331
+ <div class="d-flex align-items-center" style="gap:8px;">
332
+ ${BgWidget.inlineCheckBox({
333
+ title: '',
287
334
  gvc: gvc,
288
- title: '統一編號',
289
- default: vm.data.ubn,
335
+ def: domain_from,
336
+ array: [
337
+ {
338
+ title: '子網域',
339
+ value: 'free',
340
+ },
341
+ {
342
+ title: '獨立網域',
343
+ value: 'custom',
344
+ },
345
+ ],
290
346
  callback: (text) => {
291
- vm.data.ubn = text;
347
+ domain_from = text as any
348
+ if (origin_select === domain_from) {
349
+ domain_text = (window.parent as any).glitter.share.editorViewModel.domain.replace('.shopnex.tw', '')
350
+ } else {
351
+ domain_text = ''
352
+ }
353
+ gvc.notifyDataChange('domain')
292
354
  },
293
- placeHolder: '請輸入統一編號',
294
- divStyle: "width:100%;"
295
355
  })}
356
+ ${BgWidget.questionButton(
357
+ gvc.event(() => {
358
+ BgWidget.settingDialog({
359
+ gvc: gvc,
360
+ title: 'DNS 設定指南',
361
+ innerHTML: (gvc) => {
362
+ return `<div class=" s000032" style="word-break: break-all;white-space:normal;max-width: 100%;" >
363
+ ${BgWidget.title('GoDaddy DNS 設定指南')}
364
+ <div class="fw-bold fw-normal">DNS 設定指南(以 GoDaddy 舉例</div>
365
+ <h3>步驟 1:登錄 GoDaddy 帳戶</h3>
366
+ <ol>
367
+ <li>訪問 <a href="https://www.godaddy.com" target="_blank">GoDaddy 官方網站</a>。</li>
368
+ <li>使用你的帳號和密碼登錄到 GoDaddy 控制台。</li>
369
+ </ol>
370
+
371
+ <h3>步驟 2:訪問你的域名管理區</h3>
372
+ <ol>
373
+ <li>前往「我的產品」:登錄後,點擊右上角的「我的帳戶」,然後選擇「我的產品」。</li>
374
+ <li>選擇你的域名:在「我的產品」頁面中找到你要設置的域名,點擊該域名旁邊的「DNS」按鈕。</li>
375
+ </ol>
376
+
377
+ <h3>步驟 3:設置 DNS 記錄</h3>
378
+ <ol>
379
+ <li>進入 DNS 管理頁面:點擊「DNS」後,會進入域名的 DNS 管理頁面。</li>
380
+ <li>添加 A 記錄:
381
+ <ul>
382
+ <li>在「記錄」區域,找到「A 記錄」,如果已有一個 A 記錄指向根域名(@),可以編輯它。如果沒有,點擊「添加」。</li>
383
+ <li>設定如下:
384
+ <ul>
385
+ <li><code>名稱(Name): @</code></li>
386
+ <li><code>類型(Type): A</code></li>
387
+ <li><code>值(Value): 34.81.28.192</code></li>
388
+ <li><code>TTL: 600</code></li>
389
+ </ul>
390
+ </li>
391
+ </ul>
392
+ </li>
393
+ <li>保存記錄:確保記錄設置正確後,點擊「保存」按鈕。</li>
394
+ </ol>
395
+
396
+ <h3>步驟 4:設置 WWW 子域名(選擇性)</h3>
397
+ <ol>
398
+ <li>添加 CNAME 記錄(如需將 <code>www</code> 子域名指向根域名):
399
+ <ul>
400
+ <li>點擊「添加」按鈕。</li>
401
+ <li>設定如下:
402
+ <ul>
403
+ <li><code>名稱(Name): @</code></li>
404
+ <li><code>類型(Type): CNAME</code></li>
405
+ <li><code>值(Value): 34.81.28.192</code></li>
406
+ <li><code>TTL: 600</code></li>
407
+ </ul>
408
+ </li>
409
+ </ul>
410
+ </li>
411
+ <li>保存記錄:確保記錄設置正確後,點擊「保存」按鈕。</li>
412
+ </ol>
413
+
414
+ <h3>步驟 5:確認 DNS 設置</h3>
415
+ <ol style="padding-bottom: 60px;">
416
+ <li>等待生效:DNS 設置通常需要一些時間才能完全生效,通常在 24 到 48 小時內。</li>
417
+ </ol>
418
+
419
+
420
+
421
+ </div>`
422
+ },
423
+ footer_html: (gvc: GVC) => {
424
+ return ``
425
+ }
426
+ })
427
+ })
428
+ )}
429
+ </div>
430
+ <div class="d-flex w-100"
431
+ style="border:1px solid #DDD;border-radius:10px;overflow:hidden;">
432
+ <div style="display: flex;padding: 9px 10px;justify-content: center;align-items: center;gap: 10px;border-radius: 10px 0px 0px 10px;background: #EAEAEA;">
433
+ https://
434
+ </div>
435
+ <input class="flex-fill border-0 px-2" onchange="${gvc.event((e) => {
436
+ domain_text = e.value;
437
+ })}" value="${domain_text}">
438
+ <div class="${domain_from === 'custom' ? `d-none` : ``}"
439
+ style="padding: 9px 10px;border-radius: 0px 10px 10px 0px;background: #EAEAEA;">
440
+ .shopnex.tw
441
+ </div>
442
+ </div>
443
+ </div>
444
+ <div class="d-flex justify-content-end">
445
+ ${BgWidget.save(gvc.event(() => {
446
+ const glitter = (window.parent as any).glitter;
447
+ if (!domain_text) {
448
+ dialog.errorMessage({text: '請輸入網域名稱'})
449
+ return
450
+ } else if (glitter.share.editorViewModel.domain === domain_text) {
451
+ dialog.errorMessage({text: '此網域已部署完成'})
452
+ return
453
+ }
454
+ dialog.dataLoading({visible: true})
455
+ const appName = (window.parent as any).appName;
456
+ const saasConfig = (window.parent as any).saasConfig;
457
+ if (domain_from === 'custom') {
458
+ saasConfig.api.setDomain({
459
+ domain: domain_text,
460
+ app_name: appName,
461
+ token: saasConfig.config.token
462
+ }).then((res: any) => {
463
+ dialog.dataLoading({visible: false})
464
+ if (res.result) {
465
+ dialog.successMessage({text: '網域部署成功!'})
466
+ glitter.share.editorViewModel.domain = domain_text;
467
+ } else {
468
+ dialog.errorMessage({text: '網域部署失敗!'})
469
+ }
470
+ })
471
+ } else {
472
+ saasConfig.api.setSubDomain({
473
+ sub_domain: domain_text,
474
+ app_name: appName,
475
+ token: saasConfig.config.token
476
+ }).then((res: any) => {
477
+ dialog.dataLoading({visible: false})
478
+ if (res.result) {
479
+ dialog.successMessage({text: '網域部署成功!'})
480
+ glitter.share.editorViewModel.domain = `${domain_text}.shopnex.tw`
481
+ } else {
482
+ dialog.errorMessage({text: '網域部署失敗!'})
483
+ }
484
+ })
485
+ }
486
+ }), '申請')}
296
487
  </div>
297
488
  </div>
489
+ `, 'guide6-5')
298
490
 
299
- <div class="d-flex flex-column" style="gap:8px;">
491
+ }
492
+ }
493
+ })}
494
+ `
495
+ case 'function':
496
+ return BgWidget.mainCard(`
497
+ <div class="d-flex flex-column" style="gap:8px;">
300
498
  <div style="color: #393939;font-size: 16px;">網站功能</div>
301
499
  ${BgWidget.grayNote('系統將根據您勾選的項目,開放相對應的功能')}
302
500
  <div class="d-flex align-items-center">
303
501
  ${
304
- BgWidget.inlineCheckBox({
305
- title: '',
306
- gvc: gvc,
307
- def: vm.data.web_type,
308
- array: [
309
- {
310
- title: '零售購物',
311
- value: 'shop',
312
- },
313
- // {
314
- // title: '形象網站',
315
- // value: 'image',
316
- // },
317
- {
318
- title: '授課網站',
319
- value: 'teaching',
320
- },
321
- {
322
- title: '預約系統',
323
- value: 'reserve',
324
- },
325
- {
326
- title: '餐飲組合',
327
- value: 'kitchen',
328
- }
329
- ],
330
- callback: (array: any) => {
331
- vm.data.web_type = array
332
- },
333
- type: 'multiple',
334
- })
335
- }
502
+ BgWidget.inlineCheckBox({
503
+ title: '',
504
+ gvc: gvc,
505
+ def: vm.data.web_type,
506
+ array: [
507
+ {
508
+ title: '零售購物',
509
+ value: 'shop',
510
+ },
511
+ // {
512
+ // title: '形象網站',
513
+ // value: 'image',
514
+ // },
515
+ {
516
+ title: '授課網站',
517
+ value: 'teaching',
518
+ },
519
+ {
520
+ title: '預約系統',
521
+ value: 'reserve',
522
+ },
523
+ {
524
+ title: '餐飲組合',
525
+ value: 'kitchen',
526
+ }
527
+ ],
528
+ callback: (array: any) => {
529
+ vm.data.web_type = array
530
+ },
531
+ type: 'multiple',
532
+ })
533
+ }
336
534
  </div>
337
535
  <div style="color: #393939;font-size: 16px;">啟用 AI 選品</div>
338
536
  <div style="color: #8D8D8D;font-size:13px;">透過 AI 選品功能用戶可以使用自然語言描述找到所需商品<br>
@@ -344,11 +542,11 @@ export class ShoppingInformation {
344
542
  class="form-check-input m-0"
345
543
  type="checkbox"
346
544
  onchange="${gvc.event((e, event) => {
347
- vm.data.ai_search = !vm.data.ai_search
545
+ vm.data.ai_search = !vm.data.ai_search
348
546
 
349
- })}"
547
+ })}"
350
548
  ${vm.data.ai_search ? `checked`
351
- : ``}
549
+ : ``}
352
550
  />
353
551
  </div>
354
552
  <div class="d-flex flex-column" style="gap:8px;">
@@ -361,8 +559,8 @@ export class ShoppingInformation {
361
559
  class="form-check-input m-0"
362
560
  type="checkbox"
363
561
  onchange="${gvc.event((e, event) => {
364
- vm.data.chat_toggle = !vm.data.chat_toggle
365
- })}"
562
+ vm.data.chat_toggle = !vm.data.chat_toggle
563
+ })}"
366
564
  ${vm.data.chat_toggle ? `checked` : ``}
367
565
  />
368
566
  </div>
@@ -378,8 +576,8 @@ export class ShoppingInformation {
378
576
  class="form-check-input m-0"
379
577
  type="checkbox"
380
578
  onchange="${gvc.event((e, event) => {
381
- vm.data.wishlist = !vm.data.wishlist
382
- })}"
579
+ vm.data.wishlist = !vm.data.wishlist
580
+ })}"
383
581
  ${vm.data.wishlist ? `checked` : ``}
384
582
  />
385
583
  </div>
@@ -394,51 +592,70 @@ export class ShoppingInformation {
394
592
  class="form-check-input m-0"
395
593
  type="checkbox"
396
594
  onchange="${gvc.event((e, event) => {
397
- vm.data.customer_comment = !vm.data.customer_comment
398
- })}"
595
+ vm.data.customer_comment = !vm.data.customer_comment
596
+ })}"
399
597
  ${vm.data.customer_comment ? `checked` : ``}
400
598
  />
401
599
  </div>
402
600
  </div>
403
- ${gvc.bindView(() => {
404
- const id = gvc.glitter.getUUID()
405
- const html = String.raw
406
- const all_lan = ['en-US', 'zh-CN', 'zh-TW'];
407
- vm.data.language_setting = (window.parent as any).store_info.language_setting
601
+ <div class="d-flex flex-column" style="gap:8px;">
602
+ <div style="color: #393939;font-size: 16px;">啟用Cookie聲明</div>
603
+ <div style="color: #8D8D8D;font-size:13px;">如需使用廣告追蹤行為,必須啟用Cookie聲明,才可發送廣告。</div>
604
+ <div class="cursor_pointer form-check form-switch m-0 p-0"
605
+ style="margin-top: 10px;">
606
+ <input
607
+ class="form-check-input m-0"
608
+ type="checkbox"
609
+ onchange="${gvc.event((e, event) => {
610
+ vm.data.cookie_check = !vm.data.cookie_check
611
+ })}"
612
+ ${vm.data.cookie_check ? `checked` : ``}
613
+ />
614
+ </div>
615
+ </div>
616
+ </div>
617
+ `)
618
+ case "global":
619
+ return BgWidget.mainCard(`
620
+ ${gvc.bindView(() => {
621
+ const id = gvc.glitter.getUUID()
622
+ const html = String.raw
623
+ const all_lan = ['en-US', 'zh-CN', 'zh-TW'];
624
+ vm.data.language_setting = (window.parent as any).store_info.language_setting
408
625
 
409
- function refreshLanguage() {
410
- gvc.notifyDataChange([id, 'SEO'])
411
- }
626
+ function refreshLanguage() {
627
+ gvc.notifyDataChange([id, 'SEO'])
628
+ }
412
629
 
413
- return {
414
- bind: id,
415
- view: () => {
416
- const sup = [
417
- {
418
- key: 'en-US',
419
- value: '英文'
420
- },
421
- {
422
- key: 'zh-CN',
423
- value: '簡體中文'
424
- },
425
- {
426
- key: 'zh-TW',
427
- value: '繁體中文'
428
- }
429
- ].filter((dd) => {
430
- return vm.data.language_setting.support.includes(dd.key)
431
- }).sort((dd: any) => {
432
- return dd.key === vm.data.language_setting.def ? -1 : 1
433
- });
434
- return html`
630
+ return {
631
+ bind: id,
632
+ view: () => {
633
+ const sup = [
634
+ {
635
+ key: 'en-US',
636
+ value: '英文'
637
+ },
638
+ {
639
+ key: 'zh-CN',
640
+ value: '簡體中文'
641
+ },
642
+ {
643
+ key: 'zh-TW',
644
+ value: '繁體中文'
645
+ }
646
+ ].filter((dd) => {
647
+ return vm.data.language_setting.support.includes(dd.key)
648
+ }).sort((dd: any) => {
649
+ return dd.key === vm.data.language_setting.def ? -1 : 1
650
+ });
651
+ return html`
435
652
  <div class="mt-2" style="color: #393939;font-size: 16px;">
436
653
  多國語言
437
654
  <span class="cursor_pointer"
438
655
  style="font-size: 13px;color:#36B;"
439
656
  onclick="${gvc.event(() => {
440
- BgWidget.selectLanguage({})
441
- })}">
657
+ BgWidget.selectLanguage({})
658
+ })}">
442
659
  管理語言包
443
660
  </span>
444
661
  </div>
@@ -447,91 +664,91 @@ export class ShoppingInformation {
447
664
  </div>
448
665
  <div class="d-flex mt-3" style="gap:15px;">
449
666
  ${sup.map((dd: any) => {
450
- return `<div class="px-3 py-1 text-white position-relative d-flex align-items-center justify-content-center" style="border-radius: 20px;background: #393939;cursor: pointer;width:100px;" onclick="${gvc.event(() => {
451
- BgWidget.settingDialog({
452
- gvc: gvc,
453
- title: '語系設定',
454
- innerHTML: (gvc: GVC) => {
455
- return html`
667
+ return `<div class="px-3 py-1 text-white position-relative d-flex align-items-center justify-content-center" style="border-radius: 20px;background: #393939;cursor: pointer;width:100px;" onclick="${gvc.event(() => {
668
+ BgWidget.settingDialog({
669
+ gvc: gvc,
670
+ title: '語系設定',
671
+ innerHTML: (gvc: GVC) => {
672
+ return html`
456
673
  <div class="w-100 d-flex align-items-center justify-content-end"
457
674
  style="gap:10px;">
458
675
  ${
459
- BgWidget.danger(gvc.event(() => {
460
- vm.data.language_setting.support = vm.data.language_setting.support.filter((d1: any) => {
461
- return d1 != dd.key
462
- });
463
- refreshLanguage()
464
- gvc.closeDialog()
465
- }), '刪除語系')
466
- }
676
+ BgWidget.danger(gvc.event(() => {
677
+ vm.data.language_setting.support = vm.data.language_setting.support.filter((d1: any) => {
678
+ return d1 != dd.key
679
+ });
680
+ refreshLanguage()
681
+ gvc.closeDialog()
682
+ }), '刪除語系')
683
+ }
467
684
  ${
468
- BgWidget.save(gvc.event(() => {
469
- vm.data.language_setting.def = dd.key;
470
- refreshLanguage()
471
- gvc.closeDialog()
472
- }), '設為預設語系')
473
- }
685
+ BgWidget.save(gvc.event(() => {
686
+ vm.data.language_setting.def = dd.key;
687
+ refreshLanguage()
688
+ gvc.closeDialog()
689
+ }), '設為預設語系')
690
+ }
474
691
  </div>`
475
- },
476
- footer_html: (gvc) => {
477
- return ``
478
- },
479
- width: 400
480
- })
481
- })}">${dd.value}
692
+ },
693
+ footer_html: (gvc) => {
694
+ return ``
695
+ },
696
+ width: 400
697
+ })
698
+ })}">${dd.value}
482
699
  <div class="position-absolute text-white rounded-2 px-2 d-flex align-items-center rounded-3 ${dd.key !== vm.data.language_setting.def ? `d-none` : ``}" style="top: -12px;right: -10px; height:20px;font-size: 11px;background: #ff6c02;">預設</div>
483
700
  </div>
484
701
  `
485
- }).join('')}
702
+ }).join('')}
486
703
  <div class="d-flex align-items-center">
487
704
  ${[((all_lan.length !== vm.data.language_setting.support.length) ? html`
488
705
  <div class=" d-flex align-items-center justify-content-center cursor_pointer"
489
706
  style="color: #36B; font-size: 16px; font-weight: 400;"
490
707
  onclick="${gvc.event(() => {
491
- let add = ''
492
- BgWidget.settingDialog({
493
- gvc: gvc,
494
- title: '新增語言',
495
- innerHTML: (gvc: GVC) => {
496
- const can_add = [{
497
- key: 'en-US',
498
- value: '英文'
499
- },
500
- {
501
- key: 'zh-CN',
502
- value: '簡體中文'
503
- },
504
- {
505
- key: 'zh-TW',
506
- value: '繁體中文'
507
- }].filter((dd) => {
508
- return !vm.data.language_setting.support.includes(dd.key)
509
- });
510
- add = can_add[0].key
511
- return [
512
- BgWidget.select({
513
- gvc: gvc,
514
- default: can_add[0].key,
515
- options: can_add,
516
- callback: (text) => {
517
- add = text
518
- },
519
- })
520
- ].join('')
521
- },
522
- footer_html: (gvc: GVC) => {
523
- return BgWidget.save(gvc.event(() => {
524
- vm.data.language_setting.support.push(add)
525
- gvc.closeDialog()
526
- setTimeout(() => {
527
- refreshLanguage()
528
- }, 100)
708
+ let add = ''
709
+ BgWidget.settingDialog({
710
+ gvc: gvc,
711
+ title: '新增語言',
712
+ innerHTML: (gvc: GVC) => {
713
+ const can_add = [{
714
+ key: 'en-US',
715
+ value: '英文'
716
+ },
717
+ {
718
+ key: 'zh-CN',
719
+ value: '簡體中文'
720
+ },
721
+ {
722
+ key: 'zh-TW',
723
+ value: '繁體中文'
724
+ }].filter((dd) => {
725
+ return !vm.data.language_setting.support.includes(dd.key)
726
+ });
727
+ add = can_add[0].key
728
+ return [
729
+ BgWidget.select({
730
+ gvc: gvc,
731
+ default: can_add[0].key,
732
+ options: can_add,
733
+ callback: (text) => {
734
+ add = text
735
+ },
736
+ })
737
+ ].join('')
738
+ },
739
+ footer_html: (gvc: GVC) => {
740
+ return BgWidget.save(gvc.event(() => {
741
+ vm.data.language_setting.support.push(add)
742
+ gvc.closeDialog()
743
+ setTimeout(() => {
744
+ refreshLanguage()
745
+ }, 100)
529
746
 
530
- }), '新增')
531
- },
532
- width: 200
533
- })
534
- })}">
747
+ }), '新增')
748
+ },
749
+ width: 200
750
+ })
751
+ })}">
535
752
  <div>新增語系</div>
536
753
  <div class="d-flex align-items-center justify-content-center p-2">
537
754
  <i class="fa-solid fa-plus fs-6"
@@ -540,32 +757,32 @@ export class ShoppingInformation {
540
757
  </div>
541
758
  </div>
542
759
  ` : ``)].filter((dd) => {
543
- return dd.trim()
544
- }).join(``)}
760
+ return dd.trim()
761
+ }).join(``)}
545
762
  </div>
546
763
  </div>`
547
- }
548
- }
549
- })}
550
- <div class="d-flex flex-column mt-2" style="gap:8px;">
764
+ }
765
+ }
766
+ })}
767
+ <div class="d-flex flex-column mt-2" style="gap:8px;">
551
768
  <div style="color: #393939;font-size: 16px;">商店貨幣</div>
552
769
  <div style="color: #8D8D8D;font-size:13px;">
553
770
  統一設定商品幣別,前台將依據商品幣別進行換算顯示
554
771
  </div>
555
772
  <div class="d-flex align-items-center justify-content-center">
556
773
  ${BgWidget.select({
557
- gvc: gvc,
558
- callback: (text) => {
559
- vm.data.currency_code = text
560
- },
561
- default: vm.data.currency_code,
562
- options: Currency.code.map((dd) => {
563
- return {
564
- key: dd.currency_code,
565
- value: dd.currency_title
566
- }
567
- })
568
- })}
774
+ gvc: gvc,
775
+ callback: (text) => {
776
+ vm.data.currency_code = text
777
+ },
778
+ default: vm.data.currency_code,
779
+ options: Currency.code.map((dd) => {
780
+ return {
781
+ key: dd.currency_code,
782
+ value: dd.currency_title
783
+ }
784
+ })
785
+ })}
569
786
  </div>
570
787
  </div>
571
788
  <div class="d-flex flex-column mt-2" style="gap:8px;">
@@ -579,9 +796,9 @@ export class ShoppingInformation {
579
796
  class="form-check-input m-0"
580
797
  type="checkbox"
581
798
  onchange="${gvc.event((e, event) => {
582
- vm.data.multi_currency = !vm.data.multi_currency
583
- gvc.notifyDataChange('basic')
584
- })}"
799
+ vm.data.multi_currency = !vm.data.multi_currency
800
+ gvc.notifyDataChange('basic')
801
+ })}"
585
802
  ${vm.data.multi_currency ? `checked` : ``}
586
803
  />
587
804
  </div>
@@ -597,8 +814,8 @@ export class ShoppingInformation {
597
814
  class="form-check-input m-0"
598
815
  type="checkbox"
599
816
  onchange="${gvc.event((e, event) => {
600
- vm.data.switch_currency = !vm.data.switch_currency
601
- })}"
817
+ vm.data.switch_currency = !vm.data.switch_currency
818
+ })}"
602
819
  ${vm.data.switch_currency ? `checked` : ``}
603
820
  />
604
821
  </div>
@@ -610,201 +827,23 @@ export class ShoppingInformation {
610
827
  </div>
611
828
  <div class="d-flex align-items-center justify-content-center">
612
829
  ${BgWidget.select({
613
- gvc: gvc,
614
- callback: (text) => {
615
- vm.data.currency_code_f_def = text
616
- },
617
- default: vm.data.currency_code_f_def,
618
- options: Currency.code.map((dd) => {
619
- return {
620
- key: dd.currency_code,
621
- value: dd.currency_title
622
- }
623
- })
624
- })}
625
- </div>
626
- </div>
627
-
628
- </div>
629
- </div>
630
- `, ``)
631
- }, divCreate: {}
632
- })}
633
- <div style="margin-top: 24px;"></div>
634
- ${gvc.bindView(() => {
635
- const origin_select = (window.parent as any).glitter.share.editorViewModel.domain.includes('shopnex.tw') ? `free` : `custom`
636
- let domain_from = (window.parent as any).glitter.share.editorViewModel.domain.includes('shopnex.tw') ? `free` : `custom`
637
- let domain_text = (window.parent as any).glitter.share.editorViewModel.domain.replace('.shopnex.tw', '')
638
- return {
639
- bind: `domain`,
640
- view: () => {
641
- return BgWidget.mainCard(html`
642
- <div class="d-flex flex-column" style="gap:24px">
643
- <div class="d-flex flex-column" style="">
644
- <div class="tx_normal fw-bold">網域設定</div>
645
- <div class="d-flex align-items-center" style="gap:8px;">
646
- ${BgWidget.inlineCheckBox({
647
- title: '',
648
- gvc: gvc,
649
- def: domain_from,
650
- array: [
651
- {
652
- title: '子網域',
653
- value: 'free',
654
- },
655
- {
656
- title: '獨立網域',
657
- value: 'custom',
658
- },
659
- ],
660
- callback: (text) => {
661
- domain_from = text as any
662
- if (origin_select === domain_from) {
663
- domain_text = (window.parent as any).glitter.share.editorViewModel.domain.replace('.shopnex.tw', '')
664
- } else {
665
- domain_text = ''
666
- }
667
- gvc.notifyDataChange('domain')
668
- },
669
- })}
670
- ${BgWidget.questionButton(
671
- gvc.event(() => {
672
- BgWidget.settingDialog({
673
- gvc: gvc,
674
- title: 'DNS 設定指南',
675
- innerHTML: (gvc) => {
676
- return `<div class=" s000032" style="word-break: break-all;white-space:normal;max-width: 100%;" >
677
- ${BgWidget.title('GoDaddy DNS 設定指南')}
678
- <div class="fw-bold fw-normal">DNS 設定指南(以 GoDaddy 舉例</div>
679
- <h3>步驟 1:登錄 GoDaddy 帳戶</h3>
680
- <ol>
681
- <li>訪問 <a href="https://www.godaddy.com" target="_blank">GoDaddy 官方網站</a>。</li>
682
- <li>使用你的帳號和密碼登錄到 GoDaddy 控制台。</li>
683
- </ol>
684
-
685
- <h3>步驟 2:訪問你的域名管理區</h3>
686
- <ol>
687
- <li>前往「我的產品」:登錄後,點擊右上角的「我的帳戶」,然後選擇「我的產品」。</li>
688
- <li>選擇你的域名:在「我的產品」頁面中找到你要設置的域名,點擊該域名旁邊的「DNS」按鈕。</li>
689
- </ol>
690
-
691
- <h3>步驟 3:設置 DNS 記錄</h3>
692
- <ol>
693
- <li>進入 DNS 管理頁面:點擊「DNS」後,會進入域名的 DNS 管理頁面。</li>
694
- <li>添加 A 記錄:
695
- <ul>
696
- <li>在「記錄」區域,找到「A 記錄」,如果已有一個 A 記錄指向根域名(@),可以編輯它。如果沒有,點擊「添加」。</li>
697
- <li>設定如下:
698
- <ul>
699
- <li><code>名稱(Name): @</code></li>
700
- <li><code>類型(Type): A</code></li>
701
- <li><code>值(Value): 34.81.28.192</code></li>
702
- <li><code>TTL: 600</code></li>
703
- </ul>
704
- </li>
705
- </ul>
706
- </li>
707
- <li>保存記錄:確保記錄設置正確後,點擊「保存」按鈕。</li>
708
- </ol>
709
-
710
- <h3>步驟 4:設置 WWW 子域名(選擇性)</h3>
711
- <ol>
712
- <li>添加 CNAME 記錄(如需將 <code>www</code> 子域名指向根域名):
713
- <ul>
714
- <li>點擊「添加」按鈕。</li>
715
- <li>設定如下:
716
- <ul>
717
- <li><code>名稱(Name): @</code></li>
718
- <li><code>類型(Type): CNAME</code></li>
719
- <li><code>值(Value): 34.81.28.192</code></li>
720
- <li><code>TTL: 600</code></li>
721
- </ul>
722
- </li>
723
- </ul>
724
- </li>
725
- <li>保存記錄:確保記錄設置正確後,點擊「保存」按鈕。</li>
726
- </ol>
727
-
728
- <h3>步驟 5:確認 DNS 設置</h3>
729
- <ol style="padding-bottom: 60px;">
730
- <li>等待生效:DNS 設置通常需要一些時間才能完全生效,通常在 24 到 48 小時內。</li>
731
- </ol>
732
-
733
-
734
-
735
- </div>`
736
- },
737
- footer_html: (gvc: GVC) => {
738
- return ``
739
- }
740
- })
741
- })
742
- )}
743
- </div>
744
- <div class="d-flex w-100"
745
- style="border:1px solid #DDD;border-radius:10px;overflow:hidden;">
746
- <div style="display: flex;padding: 9px 10px;justify-content: center;align-items: center;gap: 10px;border-radius: 10px 0px 0px 10px;background: #EAEAEA;">
747
- https://
748
- </div>
749
- <input class="flex-fill border-0 px-2" onchange="${gvc.event((e) => {
750
- domain_text = e.value;
751
- })}" value="${domain_text}">
752
- <div class="${domain_from === 'custom' ? `d-none` : ``}"
753
- style="padding: 9px 10px;border-radius: 0px 10px 10px 0px;background: #EAEAEA;">
754
- .shopnex.tw
755
- </div>
830
+ gvc: gvc,
831
+ callback: (text) => {
832
+ vm.data.currency_code_f_def = text
833
+ },
834
+ default: vm.data.currency_code_f_def,
835
+ options: Currency.code.map((dd) => {
836
+ return {
837
+ key: dd.currency_code,
838
+ value: dd.currency_title
839
+ }
840
+ })
841
+ })}
756
842
  </div>
757
843
  </div>
758
- <div class="d-flex justify-content-end">
759
- ${BgWidget.save(gvc.event(() => {
760
- const glitter = (window.parent as any).glitter;
761
- if (!domain_text) {
762
- dialog.errorMessage({text: '請輸入網域名稱'})
763
- return
764
- } else if (glitter.share.editorViewModel.domain === domain_text) {
765
- dialog.errorMessage({text: '此網域已部署完成'})
766
- return
767
- }
768
- dialog.dataLoading({visible: true})
769
- const appName = (window.parent as any).appName;
770
- const saasConfig = (window.parent as any).saasConfig;
771
- if (domain_from === 'custom') {
772
- saasConfig.api.setDomain({
773
- domain: domain_text,
774
- app_name: appName,
775
- token: saasConfig.config.token
776
- }).then((res: any) => {
777
- dialog.dataLoading({visible: false})
778
- if (res.result) {
779
- dialog.successMessage({text: '網域部署成功!'})
780
- glitter.share.editorViewModel.domain = domain_text;
781
- } else {
782
- dialog.errorMessage({text: '網域部署失敗!'})
783
- }
784
- })
785
- } else {
786
- saasConfig.api.setSubDomain({
787
- sub_domain: domain_text,
788
- app_name: appName,
789
- token: saasConfig.config.token
790
- }).then((res: any) => {
791
- dialog.dataLoading({visible: false})
792
- if (res.result) {
793
- dialog.successMessage({text: '網域部署成功!'})
794
- glitter.share.editorViewModel.domain = `${domain_text}.shopnex.tw`
795
- } else {
796
- dialog.errorMessage({text: '網域部署失敗!'})
797
- }
798
- })
799
- }
800
- }), '申請')}
801
- </div>
802
- </div>
803
- `, 'guide6-5')
804
-
805
- }
844
+ `)
806
845
  }
807
- })}
846
+ })()}
808
847
  <div style="margin-top: 300px;"></div>
809
848
  <div class="shadow"
810
849
  style="width: 100%;padding: 14px 16px;background: #FFF; display: flex;justify-content: end;position: fixed;bottom: 0;right: 0;z-index:1;gap:14px;">