ts-glitter 20.7.7 → 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.
- package/lowcode/Entry.js +1 -1
- package/lowcode/Entry.ts +1 -1
- package/lowcode/cms-plugin/POS-setting.js +1 -0
- package/lowcode/cms-plugin/POS-setting.ts +1 -0
- package/lowcode/cms-plugin/cms-router.js +5 -0
- package/lowcode/cms-plugin/cms-router.ts +5 -0
- package/lowcode/cms-plugin/pos-config-setting.js +591 -0
- package/lowcode/cms-plugin/pos-config-setting.ts +681 -0
- package/lowcode/cms-plugin/pos-pages/imin-module.js +176 -59
- package/lowcode/cms-plugin/pos-pages/imin-module.ts +708 -568
- package/lowcode/cms-plugin/pos-pages/payment-page.js +47 -16
- package/lowcode/cms-plugin/pos-pages/payment-page.ts +55 -16
- package/lowcode/glitterBundle/dialog/ShareDialog.js +3 -0
- package/lowcode/glitterBundle/dialog/ShareDialog.ts +5 -0
- package/lowcode/glitterBundle/dialog/dialog.js +5 -1
- package/lowcode/glitterBundle/dialog/dialog.ts +4 -1
- package/lowcode/jspage/function-page/setting_editor.js +8 -0
- package/lowcode/jspage/function-page/setting_editor.ts +8 -0
- package/lowcode/public-components/terms-related/index.js +1 -1
- package/lowcode/public-components/terms-related/index.ts +1 -1
- package/package.json +1 -1
- package/src/api-public/services/order-event.js +1 -1
- package/src/api-public/services/order-event.js.map +1 -1
- package/src/api-public/services/order-event.ts +1 -1
- package/src/api-public/services/shopping.js +1 -1
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +1 -1
- package/src/api-public/services/user.js +9 -8
- package/src/api-public/services/user.js.map +1 -1
- package/src/api-public/services/user.ts +13 -13
- package/src/services/template.js +1 -0
- package/src/services/template.js.map +1 -1
- 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.
|
|
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.
|
|
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';
|
|
@@ -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);
|