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