ts-glitter 20.8.6 → 20.8.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/backend-manager/bg-product.js +1 -1
- package/lowcode/backend-manager/bg-product.ts +1 -1
- package/lowcode/backend-manager/bg-recommend.js +1 -1
- package/lowcode/backend-manager/bg-recommend.ts +2 -2
- package/lowcode/backend-manager/bg-shopping.js +2 -5
- package/lowcode/backend-manager/bg-shopping.ts +2 -5
- package/lowcode/cms-plugin/POS-setting.js +58 -34
- package/lowcode/cms-plugin/POS-setting.ts +69 -33
- package/lowcode/cms-plugin/data-analyze-orders.js +0 -1
- package/lowcode/cms-plugin/data-analyze-orders.ts +1 -1
- package/lowcode/cms-plugin/data-analyze.js +1 -21
- package/lowcode/cms-plugin/data-analyze.ts +25 -25
- package/lowcode/cms-plugin/filter-options.js +1 -1
- package/lowcode/cms-plugin/filter-options.ts +1 -2
- package/lowcode/cms-plugin/information/information-module.js +275 -0
- package/lowcode/cms-plugin/information/information-module.ts +308 -0
- package/lowcode/cms-plugin/pos-pages/models.ts +3 -1
- package/lowcode/cms-plugin/pos-pages/payment-page.js +3 -11
- package/lowcode/cms-plugin/pos-pages/payment-page.ts +3 -11
- package/lowcode/cms-plugin/pos-pages/pos-function.js +1 -0
- package/lowcode/cms-plugin/pos-pages/pos-function.ts +1 -0
- package/lowcode/cms-plugin/pos-pages/products-page.js +1 -1
- package/lowcode/cms-plugin/pos-pages/products-page.ts +1 -1
- package/lowcode/cms-plugin/product-service.js +4 -9
- package/lowcode/cms-plugin/product-service.ts +4 -13
- package/lowcode/cms-plugin/shopping-discount-setting.js +76 -27
- package/lowcode/cms-plugin/shopping-discount-setting.ts +123 -63
- package/lowcode/cms-plugin/shopping-information.js +21 -167
- package/lowcode/cms-plugin/shopping-information.ts +35 -191
- package/lowcode/cms-plugin/shopping-order-return.js +212 -360
- package/lowcode/cms-plugin/shopping-order-return.ts +349 -482
- package/lowcode/cms-plugin/shopping-product-setting.js +8 -0
- package/lowcode/cms-plugin/shopping-product-setting.ts +12 -4
- package/lowcode/form-view/e-commerce/product-select.js +59 -51
- package/lowcode/form-view/e-commerce/product-select.ts +279 -266
- package/lowcode/glitter-base/global/language.js +2 -1
- package/lowcode/glitter-base/global/language.ts +2 -1
- package/lowcode/public-components/checkout/index.ts +2078 -2078
- package/lowcode/public-components/headers/sy-02.js +190 -179
- package/lowcode/public-components/headers/sy-02.ts +397 -370
- package/lowcode/public-components/headers/sy-03.js +133 -107
- package/lowcode/public-components/headers/sy-03.ts +276 -244
- package/lowcode/public-components/headers/sy-04.js +181 -146
- package/lowcode/public-components/headers/sy-04.ts +289 -247
- package/lowcode/public-components/product/pd-class.js +31 -23
- package/lowcode/public-components/product/pd-class.ts +51 -29
- package/lowcode/public-components/user-manager/um-voucher.js +1 -0
- package/lowcode/public-components/user-manager/um-voucher.ts +1 -0
- package/package.json +1 -1
- package/src/Language.js +1 -1
- package/src/Language.js.map +1 -1
- package/src/Language.ts +1 -1
- package/src/api-public/controllers/ai-chat.js.map +1 -1
- package/src/api-public/controllers/ai-points.js.map +1 -1
- package/src/api-public/controllers/chat.js.map +1 -1
- package/src/api-public/controllers/customer-sessions.js.map +1 -1
- package/src/api-public/controllers/delivery.js.map +1 -1
- package/src/api-public/controllers/fb-message.js.map +1 -1
- package/src/api-public/controllers/fb-service.js.map +1 -1
- package/src/api-public/controllers/invoice.js.map +1 -1
- package/src/api-public/controllers/line-message.js.map +1 -1
- package/src/api-public/controllers/oauth.js.map +1 -1
- package/src/api-public/controllers/progress.js.map +1 -1
- package/src/api-public/controllers/rebate.js.map +1 -1
- package/src/api-public/controllers/recommend.js.map +1 -1
- package/src/api-public/controllers/reconciliation.js.map +1 -1
- package/src/api-public/controllers/shop.js +5 -2
- package/src/api-public/controllers/shop.js.map +1 -1
- package/src/api-public/controllers/shop.ts +7 -3
- package/src/api-public/controllers/shopee.js.map +1 -1
- package/src/api-public/controllers/sms-points.js.map +1 -1
- package/src/api-public/controllers/sms.js.map +1 -1
- package/src/api-public/controllers/smtp.js.map +1 -1
- package/src/api-public/controllers/stock.js.map +1 -1
- package/src/api-public/controllers/track.js.map +1 -1
- package/src/api-public/controllers/voucher.js.map +1 -1
- package/src/api-public/controllers/wallet.js.map +1 -1
- package/src/api-public/models/glitter-finance.js +1 -2
- package/src/api-public/models/glitter-finance.js.map +1 -1
- package/src/api-public/services/EcInvoice.js.map +1 -1
- package/src/api-public/services/ai-pointes.js.map +1 -1
- package/src/api-public/services/article.js.map +1 -1
- package/src/api-public/services/auto-send-email.js.map +1 -1
- package/src/api-public/services/chat.js.map +1 -1
- package/src/api-public/services/checkout-event.d.ts +1 -0
- package/src/api-public/services/checkout-event.js +17 -7
- package/src/api-public/services/checkout-event.js.map +1 -1
- package/src/api-public/services/checkout-event.ts +21 -9
- package/src/api-public/services/checkout.js.map +1 -1
- package/src/api-public/services/custom-code.js.map +1 -1
- package/src/api-public/services/customer-sessions.js.map +1 -1
- package/src/api-public/services/data-analyze.d.ts +1 -1
- package/src/api-public/services/data-analyze.js +209 -196
- package/src/api-public/services/data-analyze.js.map +1 -1
- package/src/api-public/services/data-analyze.ts +219 -205
- package/src/api-public/services/delivery.js.map +1 -1
- package/src/api-public/services/ezpay/tool.d.ts +0 -1
- package/src/api-public/services/ezpay/tool.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-order.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-product.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-user.js.map +1 -1
- package/src/api-public/services/fb-api.js.map +1 -1
- package/src/api-public/services/filter-protect-data.js.map +1 -1
- package/src/api-public/services/financial-service.d.ts +1 -0
- package/src/api-public/services/financial-service.js +10 -5
- package/src/api-public/services/financial-service.js.map +1 -1
- package/src/api-public/services/financial-service.ts +21 -16
- package/src/api-public/services/form-check.js.map +1 -1
- package/src/api-public/services/graph-api.js.map +1 -1
- package/src/api-public/services/initial-fake-data.js.map +1 -1
- package/src/api-public/services/invoice.d.ts +3 -9
- package/src/api-public/services/invoice.js +66 -85
- package/src/api-public/services/invoice.js.map +1 -1
- package/src/api-public/services/invoice.ts +287 -293
- package/src/api-public/services/language-setting.js.map +1 -1
- package/src/api-public/services/mail.js.map +1 -1
- package/src/api-public/services/manager.js.map +1 -1
- package/src/api-public/services/monitor.js.map +1 -1
- package/src/api-public/services/monitor.ts +1 -1
- package/src/api-public/services/paynow-logistics.js.map +1 -1
- package/src/api-public/services/phone-verify.js.map +1 -1
- package/src/api-public/services/pos.js.map +1 -1
- package/src/api-public/services/post.js.map +1 -1
- package/src/api-public/services/product-initial.js.map +1 -1
- package/src/api-public/services/rebate.js.map +1 -1
- package/src/api-public/services/reconciliation.js.map +1 -1
- package/src/api-public/services/schedule.d.ts +1 -0
- package/src/api-public/services/schedule.js +27 -0
- package/src/api-public/services/schedule.js.map +1 -1
- package/src/api-public/services/schedule.ts +30 -0
- package/src/api-public/services/shopping.d.ts +4 -3
- package/src/api-public/services/shopping.js +40 -20
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +52 -28
- package/src/api-public/services/sms-pointes.js.map +1 -1
- package/src/api-public/services/stock.js.map +1 -1
- package/src/api-public/services/terms-check.js.map +1 -1
- package/src/api-public/services/updated-table-checked.js.map +1 -1
- package/src/api-public/services/user-update.js.map +1 -1
- package/src/api-public/services/user.d.ts +10 -0
- package/src/api-public/services/user.js +35 -8
- package/src/api-public/services/user.js.map +1 -1
- package/src/api-public/services/user.ts +50 -7
- package/src/api-public/services/voucher.js.map +1 -1
- package/src/api-public/services/wallet.js.map +1 -1
- package/src/api-public/utils/ut-database.js.map +1 -1
- package/src/app-project/android/app/src/main/AndroidManifest.xml +4 -2
- package/src/app-project/android/app/src/main/res/xml/network_security_config.xml +3 -3
- package/src/app-project/android/app/src/main/res/xml/s.xml +5 -5
- package/src/app-project/android/gradlew.bat +94 -94
- package/src/app-project/serverless/src/controllers/index.js.map +1 -1
- package/src/app-project/serverless/src/controllers/sample.js.map +1 -1
- package/src/app-project/serverless/src/modules/database.d.ts +1 -2
- package/src/app-project/serverless/src/modules/database.js.map +1 -1
- package/src/app-project/serverless/src/modules/exception.js.map +1 -1
- package/src/app-project/serverless/src/modules/hooks.js.map +1 -1
- package/src/app-project/serverless/src/modules/logger.js.map +1 -1
- package/src/app-project/serverless/src/modules/redis.d.ts +1 -1
- package/src/app-project/serverless/src/modules/redis.js.map +1 -1
- package/src/app-project/serverless/src/modules/response.js.map +1 -1
- package/src/app-project/serverless/src/modules/ssh.js.map +1 -1
- package/src/controllers/ai.js.map +1 -1
- package/src/controllers/global-event.js.map +1 -1
- package/src/controllers/page.js.map +1 -1
- package/src/controllers/private_config.js.map +1 -1
- package/src/export/export-test.js.map +1 -1
- package/src/firebase/message.js +1 -2
- package/src/firebase/message.js.map +1 -1
- package/src/helper/app_creater.js +1 -2
- package/src/helper/app_creater.js.map +1 -1
- package/src/helper/glitter-util.d.ts +0 -1
- package/src/helper/glitter-util.js.map +1 -1
- package/src/lambda/interface.d.ts +1 -1
- package/src/lambda/interface.js +2 -2
- package/src/lambda/interface.js.map +1 -1
- package/src/modules/exception.js.map +1 -1
- package/src/modules/hooks.js.map +1 -1
- package/src/modules/response.js.map +1 -1
- package/src/modules/ssh.js.map +1 -1
- package/src/public-config-initial/auto-fcm.js.map +1 -1
- package/src/run.js.map +1 -1
- package/src/run.ts +12 -12
- package/src/services/ai.js.map +1 -1
- package/src/services/ses.js +1 -2
- package/src/services/ses.js.map +1 -1
- package/src/services/system-schedule.js.map +1 -1
- package/src/update-progress-track.js.map +1 -1
- package/src/update-script.js.map +1 -1
|
@@ -35,6 +35,7 @@ function getVoucherText(gvc: GVC, voucherData: VoucherContent): string[] {
|
|
|
35
35
|
const productForList = [
|
|
36
36
|
{ title: Language.text('all_products'), value: 'all' },
|
|
37
37
|
{ title: Language.text('product_categories'), value: 'collection' },
|
|
38
|
+
{ title: Language.text('products'), value: 'manager_tag' }, // 管理員標籤的篩選於前台顯示「特定商品」
|
|
38
39
|
{ title: Language.text('products'), value: 'product' },
|
|
39
40
|
];
|
|
40
41
|
|
|
@@ -390,7 +390,7 @@ export class ProductsPage {
|
|
|
390
390
|
return html `
|
|
391
391
|
<div class="w-100 d-flex">
|
|
392
392
|
<div style="font-size: 18px;font-style: normal;font-weight: 700;">${data.left}</div>
|
|
393
|
-
<div class="ms-auto" style="font-size: 16px;font-weight: 700;">${data.right}</div>
|
|
393
|
+
<div class="ms-auto" style="font-size: 16px;font-weight: 700;">$ ${data.right}</div>
|
|
394
394
|
</div>
|
|
395
395
|
`;
|
|
396
396
|
})
|
|
@@ -480,7 +480,7 @@ export class ProductsPage {
|
|
|
480
480
|
return html`
|
|
481
481
|
<div class="w-100 d-flex">
|
|
482
482
|
<div style="font-size: 18px;font-style: normal;font-weight: 700;">${data.left}</div>
|
|
483
|
-
<div class="ms-auto" style="font-size: 16px;font-weight: 700;">${data.right}</div>
|
|
483
|
+
<div class="ms-auto" style="font-size: 16px;font-weight: 700;">$ ${data.right}</div>
|
|
484
484
|
</div>
|
|
485
485
|
`;
|
|
486
486
|
})
|
|
@@ -5,16 +5,11 @@ export class ProductService {
|
|
|
5
5
|
const gvc = obj.gvc;
|
|
6
6
|
const dialog = new ShareDialog(gvc.glitter);
|
|
7
7
|
function checkEmpty() {
|
|
8
|
-
const variantsCheckList = ['sale_price'];
|
|
9
8
|
if (postMD.product_category !== 'kitchen') {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
text: '售價未填',
|
|
15
|
-
});
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
9
|
+
const salePrice = postMD['variants'][0]['sale_price'];
|
|
10
|
+
if (salePrice === '' || salePrice === undefined || salePrice === null) {
|
|
11
|
+
dialog.infoMessage({ text: '尚未填寫售價' });
|
|
12
|
+
return false;
|
|
18
13
|
}
|
|
19
14
|
}
|
|
20
15
|
for (const index in postMD['variants']) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ShareDialog } from '../glitterBundle/dialog/ShareDialog.js';
|
|
2
2
|
import { ShoppingProductSetting } from './shopping-product-setting.js';
|
|
3
3
|
import { LanguageData } from '../public-models/product.js';
|
|
4
|
-
import { CheckInput } from '../modules/checkInput.js';
|
|
5
4
|
|
|
6
5
|
export class ProductService {
|
|
7
6
|
public static checkData(postMD: any, obj: any, vm: any, refresh: () => void) {
|
|
@@ -9,19 +8,11 @@ export class ProductService {
|
|
|
9
8
|
const dialog = new ShareDialog(gvc.glitter);
|
|
10
9
|
|
|
11
10
|
function checkEmpty() {
|
|
12
|
-
const variantsCheckList = ['sale_price'];
|
|
13
|
-
|
|
14
11
|
if (postMD.product_category !== 'kitchen') {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
) {
|
|
20
|
-
dialog.infoMessage({
|
|
21
|
-
text: '售價未填',
|
|
22
|
-
});
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
12
|
+
const salePrice = (postMD['variants'][0] as any)['sale_price'];
|
|
13
|
+
if (salePrice === '' || salePrice === undefined || salePrice === null) {
|
|
14
|
+
dialog.infoMessage({ text: '尚未填寫售價' });
|
|
15
|
+
return false;
|
|
25
16
|
}
|
|
26
17
|
}
|
|
27
18
|
|
|
@@ -38,7 +38,6 @@ export class ShoppingDiscountSetting {
|
|
|
38
38
|
const html = String.raw;
|
|
39
39
|
return gvc.bindView(() => {
|
|
40
40
|
const id = glitter.getUUID();
|
|
41
|
-
const filterID = glitter.getUUID();
|
|
42
41
|
return {
|
|
43
42
|
bind: id,
|
|
44
43
|
dataList: [{ obj: vm, key: 'type' }],
|
|
@@ -75,7 +74,7 @@ export class ShoppingDiscountSetting {
|
|
|
75
74
|
};
|
|
76
75
|
function getDatalist() {
|
|
77
76
|
return data.response.data.map((dd) => {
|
|
78
|
-
var _a;
|
|
77
|
+
var _a, _b;
|
|
79
78
|
return [
|
|
80
79
|
{
|
|
81
80
|
key: '標題',
|
|
@@ -96,9 +95,9 @@ export class ShoppingDiscountSetting {
|
|
|
96
95
|
</span>`,
|
|
97
96
|
},
|
|
98
97
|
{
|
|
99
|
-
key: '
|
|
98
|
+
key: '套用至',
|
|
100
99
|
value: html `<span class="fs-7"
|
|
101
|
-
>${dd.content.for ===
|
|
100
|
+
>${(_b = ShoppingDiscountSetting.productForList.find(item => item.value === dd.content.for)) === null || _b === void 0 ? void 0 : _b.title}</span
|
|
102
101
|
>`,
|
|
103
102
|
},
|
|
104
103
|
{
|
|
@@ -190,17 +189,12 @@ export class ShoppingDiscountSetting {
|
|
|
190
189
|
const vm = obj.vm;
|
|
191
190
|
const html = String.raw;
|
|
192
191
|
const voucherData = Object.assign({ title: '', code: '', trigger: 'auto', method: 'fixed', value: '0', for: 'all', forKey: [], device: ['normal'], rule: 'min_price', ruleValue: 1000, startDate: this.getDateTime().date, startTime: this.getDateTime().time, endDate: undefined, endTime: undefined, status: 1, type: 'voucher', overlay: false, start_ISO_Date: '', end_ISO_Date: '', reBackType: obj.reBackType, rebateEndDay: '30', target: 'all', targetList: [], macroLimited: 0, microLimited: 0, counting: 'single', conditionType: 'order', includeDiscount: 'before', productOffStart: 'price_desc' }, vm.data);
|
|
193
|
-
const productForList = [
|
|
194
|
-
{ title: '所有商品', value: 'all' },
|
|
195
|
-
{ title: '商品分類', value: 'collection' },
|
|
196
|
-
{ title: '單一商品', value: 'product' },
|
|
197
|
-
];
|
|
198
192
|
function getVoucherTextList() {
|
|
199
193
|
var _a, _b;
|
|
200
194
|
return [
|
|
201
195
|
`活動標題:${voucherData.title && voucherData.title.length > 0 ? voucherData.title : '尚無標題'}`,
|
|
202
196
|
`適用商品:${(() => {
|
|
203
|
-
const forData = productForList.find(item => item.value === voucherData.for);
|
|
197
|
+
const forData = ShoppingDiscountSetting.productForList.find(item => item.value === voucherData.for);
|
|
204
198
|
return forData ? forData.title : '';
|
|
205
199
|
})()}`,
|
|
206
200
|
`活動方式:${(() => {
|
|
@@ -466,7 +460,7 @@ export class ShoppingDiscountSetting {
|
|
|
466
460
|
</div>
|
|
467
461
|
${obj.gvc.map(customVM.dataList.map((opt, index) => {
|
|
468
462
|
return html ` <div class="form-check-label c_updown_label">
|
|
469
|
-
<span class="tx_normal">${index + 1}
|
|
463
|
+
<span class="tx_normal">${index + 1}. ${opt.value}</span>
|
|
470
464
|
${opt.note
|
|
471
465
|
? html ` <span class="tx_gray_12 ms-2">${opt.note}</span> `
|
|
472
466
|
: ''}
|
|
@@ -634,10 +628,12 @@ export class ShoppingDiscountSetting {
|
|
|
634
628
|
BgWidget.mainCard(gvc.bindView(() => {
|
|
635
629
|
var _a;
|
|
636
630
|
const id = glitter.getUUID();
|
|
631
|
+
const originForType = String(voucherData.for);
|
|
637
632
|
voucherData.forKey = (_a = voucherData.forKey) !== null && _a !== void 0 ? _a : [];
|
|
638
633
|
let defKeys = {
|
|
639
634
|
collection: JSON.parse(JSON.stringify(voucherData.forKey)),
|
|
640
635
|
product: JSON.parse(JSON.stringify(voucherData.forKey)),
|
|
636
|
+
manager_tag: JSON.parse(JSON.stringify(voucherData.forKey)),
|
|
641
637
|
};
|
|
642
638
|
return {
|
|
643
639
|
bind: id,
|
|
@@ -711,7 +707,7 @@ export class ShoppingDiscountSetting {
|
|
|
711
707
|
gvc: gvc,
|
|
712
708
|
title: '',
|
|
713
709
|
def: (_a = voucherData.for) !== null && _a !== void 0 ? _a : 'all',
|
|
714
|
-
array: productForList,
|
|
710
|
+
array: ShoppingDiscountSetting.productForList,
|
|
715
711
|
callback: text => {
|
|
716
712
|
voucherData.forKey = defKeys[text];
|
|
717
713
|
voucherData.for = text;
|
|
@@ -722,6 +718,52 @@ export class ShoppingDiscountSetting {
|
|
|
722
718
|
${BgWidget.mbContainer(8)}
|
|
723
719
|
${(() => {
|
|
724
720
|
switch (voucherData.for) {
|
|
721
|
+
case 'manager_tag':
|
|
722
|
+
return gvc.bindView(() => {
|
|
723
|
+
const subVM = {
|
|
724
|
+
id: gvc.glitter.getUUID(),
|
|
725
|
+
dataList: originForType === 'manager_tag' ? [...defKeys.manager_tag] : [],
|
|
726
|
+
};
|
|
727
|
+
return {
|
|
728
|
+
bind: subVM.id,
|
|
729
|
+
view: () => {
|
|
730
|
+
return html `
|
|
731
|
+
<div class="d-flex flex-column p-2" style="gap: 18px;">
|
|
732
|
+
<div
|
|
733
|
+
class="d-flex align-items-center gray-bottom-line-18"
|
|
734
|
+
style="gap: 24px; justify-content: space-between;"
|
|
735
|
+
>
|
|
736
|
+
<div class="form-check-label c_updown_label">
|
|
737
|
+
<div class="tx_normal">標籤列表</div>
|
|
738
|
+
</div>
|
|
739
|
+
${BgWidget.grayButton('選擇標籤', gvc.event(() => {
|
|
740
|
+
BgProduct.useProductTags({
|
|
741
|
+
gvc,
|
|
742
|
+
config_key: 'product_manager_tags',
|
|
743
|
+
def: originForType === 'manager_tag' && voucherData.forKey
|
|
744
|
+
? voucherData.forKey.map(item => `${item}`)
|
|
745
|
+
: [],
|
|
746
|
+
callback: (value) => __awaiter(this, void 0, void 0, function* () {
|
|
747
|
+
voucherData.forKey = value;
|
|
748
|
+
defKeys.manager_tag = value;
|
|
749
|
+
subVM.dataList = value;
|
|
750
|
+
gvc.notifyDataChange(subVM.id);
|
|
751
|
+
}),
|
|
752
|
+
});
|
|
753
|
+
}), { textStyle: 'font-weight: 400;' })}
|
|
754
|
+
</div>
|
|
755
|
+
${obj.gvc.map(subVM.dataList.map((opt, index) => {
|
|
756
|
+
return html ` <div
|
|
757
|
+
class="d-flex align-items-center form-check-label c_updown_label gap-3"
|
|
758
|
+
>
|
|
759
|
+
<span class="tx_normal">${index + 1}. #${opt}</span>
|
|
760
|
+
</div>`;
|
|
761
|
+
}))}
|
|
762
|
+
</div>
|
|
763
|
+
`;
|
|
764
|
+
},
|
|
765
|
+
};
|
|
766
|
+
});
|
|
725
767
|
case 'collection':
|
|
726
768
|
return gvc.bindView(() => {
|
|
727
769
|
const subVM = {
|
|
@@ -763,7 +805,7 @@ export class ShoppingDiscountSetting {
|
|
|
763
805
|
return html ` <div
|
|
764
806
|
class="d-flex align-items-center form-check-label c_updown_label gap-3"
|
|
765
807
|
>
|
|
766
|
-
<span class="tx_normal">${index + 1}
|
|
808
|
+
<span class="tx_normal">${index + 1}. ${opt.value}</span>
|
|
767
809
|
${opt.note
|
|
768
810
|
? html ` <span class="tx_gray_12 ms-2">${opt.note}</span> `
|
|
769
811
|
: ''}
|
|
@@ -836,7 +878,7 @@ export class ShoppingDiscountSetting {
|
|
|
836
878
|
return html ` <div
|
|
837
879
|
class="d-flex align-items-center form-check-label c_updown_label gap-3"
|
|
838
880
|
>
|
|
839
|
-
<span class="tx_normal">${index + 1}
|
|
881
|
+
<span class="tx_normal">${index + 1}.</span>
|
|
840
882
|
${BgWidget.validImageBox({
|
|
841
883
|
gvc: gvc,
|
|
842
884
|
image: opt.image,
|
|
@@ -886,7 +928,6 @@ export class ShoppingDiscountSetting {
|
|
|
886
928
|
})(),
|
|
887
929
|
].join(BgWidget.horizontalLine());
|
|
888
930
|
},
|
|
889
|
-
divCreate: {},
|
|
890
931
|
};
|
|
891
932
|
})),
|
|
892
933
|
...(() => {
|
|
@@ -961,7 +1002,7 @@ export class ShoppingDiscountSetting {
|
|
|
961
1002
|
return html ` <div
|
|
962
1003
|
class="d-flex align-items-center form-check-label c_updown_label gap-3"
|
|
963
1004
|
>
|
|
964
|
-
<span class="tx_normal">${index + 1}
|
|
1005
|
+
<span class="tx_normal">${index + 1}.</span>
|
|
965
1006
|
${BgWidget.validImageBox({
|
|
966
1007
|
gvc: gvc,
|
|
967
1008
|
image: opt.image,
|
|
@@ -1265,7 +1306,8 @@ export class ShoppingDiscountSetting {
|
|
|
1265
1306
|
...(() => {
|
|
1266
1307
|
var _a, _b;
|
|
1267
1308
|
if (voucherData.reBackType === 'rebate') {
|
|
1268
|
-
return [
|
|
1309
|
+
return [
|
|
1310
|
+
[
|
|
1269
1311
|
`<div class="tx_700">購物金有效天數</div>`,
|
|
1270
1312
|
BgWidget.multiCheckboxContainer(gvc, [
|
|
1271
1313
|
{
|
|
@@ -1276,13 +1318,13 @@ export class ShoppingDiscountSetting {
|
|
|
1276
1318
|
key: 'withEnd',
|
|
1277
1319
|
name: '有效期限',
|
|
1278
1320
|
innerHtml: html ` <div
|
|
1279
|
-
|
|
1321
|
+
class="d-flex mt-0 mt-md-3 ${document.body.clientWidth < 768
|
|
1280
1322
|
? 'flex-column'
|
|
1281
1323
|
: ''}"
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1324
|
+
style="gap: 12px"
|
|
1325
|
+
>
|
|
1326
|
+
<div class="d-flex align-items-center" style="gap:10px;">
|
|
1327
|
+
${BgWidget.editeInput({
|
|
1286
1328
|
gvc: gvc,
|
|
1287
1329
|
title: '',
|
|
1288
1330
|
type: 'number',
|
|
@@ -1294,16 +1336,17 @@ export class ShoppingDiscountSetting {
|
|
|
1294
1336
|
gvc.notifyDataChange(id);
|
|
1295
1337
|
},
|
|
1296
1338
|
})}
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1339
|
+
<span class="tx_normal me-2">天</span>
|
|
1340
|
+
</div>
|
|
1341
|
+
</div>`,
|
|
1300
1342
|
},
|
|
1301
1343
|
], [parseInt((_b = voucherData.rebateEndDay) !== null && _b !== void 0 ? _b : '0', 10) ? `withEnd` : `noEnd`], text => {
|
|
1302
1344
|
if (text[0] === 'noEnd') {
|
|
1303
1345
|
voucherData.rebateEndDay = '0';
|
|
1304
1346
|
}
|
|
1305
|
-
}, { single: true })
|
|
1306
|
-
].join('<div class="my-2"></div>')
|
|
1347
|
+
}, { single: true }),
|
|
1348
|
+
].join('<div class="my-2"></div>'),
|
|
1349
|
+
];
|
|
1307
1350
|
}
|
|
1308
1351
|
else {
|
|
1309
1352
|
return [];
|
|
@@ -1535,4 +1578,10 @@ ShoppingDiscountSetting.getDateTime = (n = 0) => {
|
|
|
1535
1578
|
const timeStr = `${hours}:00`;
|
|
1536
1579
|
return { date: dateStr, time: timeStr };
|
|
1537
1580
|
};
|
|
1581
|
+
ShoppingDiscountSetting.productForList = [
|
|
1582
|
+
{ title: '所有商品', value: 'all' },
|
|
1583
|
+
{ title: '商品分類', value: 'collection' },
|
|
1584
|
+
{ title: '管理員標籤', value: 'manager_tag' },
|
|
1585
|
+
{ title: '特定商品', value: 'product' },
|
|
1586
|
+
];
|
|
1538
1587
|
window.glitter.setModule(import.meta.url, ShoppingDiscountSetting);
|
|
@@ -8,6 +8,8 @@ import { ShareDialog } from '../glitterBundle/dialog/ShareDialog.js';
|
|
|
8
8
|
import { FilterOptions } from './filter-options.js';
|
|
9
9
|
import { Tool } from '../modules/tool.js';
|
|
10
10
|
|
|
11
|
+
type VoucherForType = 'all' | 'collection' | 'product' | 'manager_tag';
|
|
12
|
+
|
|
11
13
|
export class ShoppingDiscountSetting {
|
|
12
14
|
public static getLabel(voucher_type: string): string {
|
|
13
15
|
const labels: Record<string, string> = {
|
|
@@ -37,7 +39,6 @@ export class ShoppingDiscountSetting {
|
|
|
37
39
|
|
|
38
40
|
return gvc.bindView(() => {
|
|
39
41
|
const id = glitter.getUUID();
|
|
40
|
-
const filterID = glitter.getUUID();
|
|
41
42
|
return {
|
|
42
43
|
bind: id,
|
|
43
44
|
dataList: [{ obj: vm, key: 'type' }],
|
|
@@ -104,9 +105,11 @@ export class ShoppingDiscountSetting {
|
|
|
104
105
|
</span>`,
|
|
105
106
|
},
|
|
106
107
|
{
|
|
107
|
-
key: '
|
|
108
|
+
key: '套用至',
|
|
108
109
|
value: html`<span class="fs-7"
|
|
109
|
-
>${
|
|
110
|
+
>${ShoppingDiscountSetting.productForList.find(
|
|
111
|
+
item => item.value === dd.content.for
|
|
112
|
+
)?.title}</span
|
|
110
113
|
>`,
|
|
111
114
|
},
|
|
112
115
|
{
|
|
@@ -205,6 +208,13 @@ export class ShoppingDiscountSetting {
|
|
|
205
208
|
return { date: dateStr, time: timeStr };
|
|
206
209
|
};
|
|
207
210
|
|
|
211
|
+
static productForList = [
|
|
212
|
+
{ title: '所有商品', value: 'all' },
|
|
213
|
+
{ title: '商品分類', value: 'collection' },
|
|
214
|
+
{ title: '管理員標籤', value: 'manager_tag' },
|
|
215
|
+
{ title: '特定商品', value: 'product' },
|
|
216
|
+
];
|
|
217
|
+
|
|
208
218
|
public static voucherEditor(obj: { vm: any; gvc: GVC; type?: 'add' | 'replace'; defData?: any; reBackType: string }) {
|
|
209
219
|
const gvc = obj.gvc;
|
|
210
220
|
const glitter = gvc.glitter;
|
|
@@ -220,7 +230,7 @@ export class ShoppingDiscountSetting {
|
|
|
220
230
|
device: ('normal' | 'pos')[];
|
|
221
231
|
value: string;
|
|
222
232
|
add_on_products?: string[];
|
|
223
|
-
for:
|
|
233
|
+
for: VoucherForType;
|
|
224
234
|
rule: 'min_price' | 'min_count';
|
|
225
235
|
counting: 'single' | 'each';
|
|
226
236
|
conditionType: 'item' | 'order';
|
|
@@ -276,17 +286,11 @@ export class ShoppingDiscountSetting {
|
|
|
276
286
|
...vm.data,
|
|
277
287
|
};
|
|
278
288
|
|
|
279
|
-
const productForList = [
|
|
280
|
-
{ title: '所有商品', value: 'all' },
|
|
281
|
-
{ title: '商品分類', value: 'collection' },
|
|
282
|
-
{ title: '單一商品', value: 'product' },
|
|
283
|
-
];
|
|
284
|
-
|
|
285
289
|
function getVoucherTextList() {
|
|
286
290
|
return [
|
|
287
291
|
`活動標題:${voucherData.title && voucherData.title.length > 0 ? voucherData.title : '尚無標題'}`,
|
|
288
292
|
`適用商品:${(() => {
|
|
289
|
-
const forData = productForList.find(item => item.value === voucherData.for);
|
|
293
|
+
const forData = ShoppingDiscountSetting.productForList.find(item => item.value === voucherData.for);
|
|
290
294
|
return forData ? forData.title : '';
|
|
291
295
|
})()}`,
|
|
292
296
|
`活動方式:${(() => {
|
|
@@ -586,7 +590,7 @@ export class ShoppingDiscountSetting {
|
|
|
586
590
|
${obj.gvc.map(
|
|
587
591
|
customVM.dataList.map((opt: OptionsItem, index) => {
|
|
588
592
|
return html` <div class="form-check-label c_updown_label">
|
|
589
|
-
<span class="tx_normal">${index + 1}
|
|
593
|
+
<span class="tx_normal">${index + 1}. ${opt.value}</span>
|
|
590
594
|
${opt.note
|
|
591
595
|
? html` <span class="tx_gray_12 ms-2">${opt.note}</span> `
|
|
592
596
|
: ''}
|
|
@@ -770,10 +774,12 @@ export class ShoppingDiscountSetting {
|
|
|
770
774
|
BgWidget.mainCard(
|
|
771
775
|
gvc.bindView(() => {
|
|
772
776
|
const id = glitter.getUUID();
|
|
777
|
+
const originForType = String(voucherData.for);
|
|
773
778
|
voucherData.forKey = voucherData.forKey ?? [];
|
|
774
779
|
let defKeys: any = {
|
|
775
780
|
collection: JSON.parse(JSON.stringify(voucherData.forKey)),
|
|
776
781
|
product: JSON.parse(JSON.stringify(voucherData.forKey)),
|
|
782
|
+
manager_tag: JSON.parse(JSON.stringify(voucherData.forKey)),
|
|
777
783
|
};
|
|
778
784
|
return {
|
|
779
785
|
bind: id,
|
|
@@ -851,10 +857,10 @@ export class ShoppingDiscountSetting {
|
|
|
851
857
|
gvc: gvc,
|
|
852
858
|
title: '',
|
|
853
859
|
def: voucherData.for ?? 'all',
|
|
854
|
-
array: productForList,
|
|
860
|
+
array: ShoppingDiscountSetting.productForList,
|
|
855
861
|
callback: text => {
|
|
856
862
|
voucherData.forKey = defKeys[text];
|
|
857
|
-
voucherData.for = text as
|
|
863
|
+
voucherData.for = text as VoucherForType;
|
|
858
864
|
gvc.notifyDataChange(id);
|
|
859
865
|
},
|
|
860
866
|
oneLine: true,
|
|
@@ -862,6 +868,60 @@ export class ShoppingDiscountSetting {
|
|
|
862
868
|
${BgWidget.mbContainer(8)}
|
|
863
869
|
${(() => {
|
|
864
870
|
switch (voucherData.for) {
|
|
871
|
+
case 'manager_tag':
|
|
872
|
+
return gvc.bindView(() => {
|
|
873
|
+
const subVM = {
|
|
874
|
+
id: gvc.glitter.getUUID(),
|
|
875
|
+
dataList: originForType === 'manager_tag' ? [...defKeys.manager_tag] : [],
|
|
876
|
+
};
|
|
877
|
+
|
|
878
|
+
return {
|
|
879
|
+
bind: subVM.id,
|
|
880
|
+
view: () => {
|
|
881
|
+
return html`
|
|
882
|
+
<div class="d-flex flex-column p-2" style="gap: 18px;">
|
|
883
|
+
<div
|
|
884
|
+
class="d-flex align-items-center gray-bottom-line-18"
|
|
885
|
+
style="gap: 24px; justify-content: space-between;"
|
|
886
|
+
>
|
|
887
|
+
<div class="form-check-label c_updown_label">
|
|
888
|
+
<div class="tx_normal">標籤列表</div>
|
|
889
|
+
</div>
|
|
890
|
+
${BgWidget.grayButton(
|
|
891
|
+
'選擇標籤',
|
|
892
|
+
gvc.event(() => {
|
|
893
|
+
BgProduct.useProductTags({
|
|
894
|
+
gvc,
|
|
895
|
+
config_key: 'product_manager_tags',
|
|
896
|
+
def:
|
|
897
|
+
originForType === 'manager_tag' && voucherData.forKey
|
|
898
|
+
? voucherData.forKey.map(item => `${item}`)
|
|
899
|
+
: [],
|
|
900
|
+
callback: async value => {
|
|
901
|
+
voucherData.forKey = value;
|
|
902
|
+
defKeys.manager_tag = value;
|
|
903
|
+
subVM.dataList = value;
|
|
904
|
+
gvc.notifyDataChange(subVM.id);
|
|
905
|
+
},
|
|
906
|
+
});
|
|
907
|
+
}),
|
|
908
|
+
{ textStyle: 'font-weight: 400;' }
|
|
909
|
+
)}
|
|
910
|
+
</div>
|
|
911
|
+
${obj.gvc.map(
|
|
912
|
+
subVM.dataList.map((opt, index) => {
|
|
913
|
+
return html` <div
|
|
914
|
+
class="d-flex align-items-center form-check-label c_updown_label gap-3"
|
|
915
|
+
>
|
|
916
|
+
<span class="tx_normal">${index + 1}. #${opt}</span>
|
|
917
|
+
</div>`;
|
|
918
|
+
})
|
|
919
|
+
)}
|
|
920
|
+
</div>
|
|
921
|
+
`;
|
|
922
|
+
},
|
|
923
|
+
};
|
|
924
|
+
});
|
|
865
925
|
case 'collection':
|
|
866
926
|
return gvc.bindView(() => {
|
|
867
927
|
const subVM = {
|
|
@@ -907,7 +967,7 @@ export class ShoppingDiscountSetting {
|
|
|
907
967
|
return html` <div
|
|
908
968
|
class="d-flex align-items-center form-check-label c_updown_label gap-3"
|
|
909
969
|
>
|
|
910
|
-
<span class="tx_normal">${index + 1}
|
|
970
|
+
<span class="tx_normal">${index + 1}. ${opt.value}</span>
|
|
911
971
|
${opt.note
|
|
912
972
|
? html` <span class="tx_gray_12 ms-2">${opt.note}</span> `
|
|
913
973
|
: ''}
|
|
@@ -985,7 +1045,7 @@ export class ShoppingDiscountSetting {
|
|
|
985
1045
|
return html` <div
|
|
986
1046
|
class="d-flex align-items-center form-check-label c_updown_label gap-3"
|
|
987
1047
|
>
|
|
988
|
-
<span class="tx_normal">${index + 1}
|
|
1048
|
+
<span class="tx_normal">${index + 1}.</span>
|
|
989
1049
|
${BgWidget.validImageBox({
|
|
990
1050
|
gvc: gvc,
|
|
991
1051
|
image: opt.image,
|
|
@@ -1034,7 +1094,6 @@ export class ShoppingDiscountSetting {
|
|
|
1034
1094
|
})(),
|
|
1035
1095
|
].join(BgWidget.horizontalLine());
|
|
1036
1096
|
},
|
|
1037
|
-
divCreate: {},
|
|
1038
1097
|
};
|
|
1039
1098
|
})
|
|
1040
1099
|
),
|
|
@@ -1122,7 +1181,7 @@ export class ShoppingDiscountSetting {
|
|
|
1122
1181
|
return html` <div
|
|
1123
1182
|
class="d-flex align-items-center form-check-label c_updown_label gap-3"
|
|
1124
1183
|
>
|
|
1125
|
-
<span class="tx_normal">${index + 1}
|
|
1184
|
+
<span class="tx_normal">${index + 1}.</span>
|
|
1126
1185
|
${BgWidget.validImageBox({
|
|
1127
1186
|
gvc: gvc,
|
|
1128
1187
|
image: opt.image,
|
|
@@ -1500,52 +1559,53 @@ export class ShoppingDiscountSetting {
|
|
|
1500
1559
|
)}`,
|
|
1501
1560
|
...(() => {
|
|
1502
1561
|
if (voucherData.reBackType === 'rebate') {
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1562
|
+
return [
|
|
1563
|
+
[
|
|
1564
|
+
`<div class="tx_700">購物金有效天數</div>`,
|
|
1565
|
+
BgWidget.multiCheckboxContainer(
|
|
1566
|
+
gvc,
|
|
1567
|
+
[
|
|
1568
|
+
{
|
|
1569
|
+
key: 'noEnd',
|
|
1570
|
+
name: '無期限',
|
|
1571
|
+
},
|
|
1572
|
+
{
|
|
1573
|
+
key: 'withEnd',
|
|
1574
|
+
name: '有效期限',
|
|
1575
|
+
innerHtml: html` <div
|
|
1576
|
+
class="d-flex mt-0 mt-md-3 ${document.body.clientWidth < 768
|
|
1577
|
+
? 'flex-column'
|
|
1578
|
+
: ''}"
|
|
1579
|
+
style="gap: 12px"
|
|
1580
|
+
>
|
|
1581
|
+
<div class="d-flex align-items-center" style="gap:10px;">
|
|
1582
|
+
${BgWidget.editeInput({
|
|
1583
|
+
gvc: gvc,
|
|
1584
|
+
title: '',
|
|
1585
|
+
type: 'number',
|
|
1586
|
+
style: inputStyle,
|
|
1587
|
+
default: `${voucherData.rebateEndDay ?? ''}`,
|
|
1588
|
+
placeHolder: '0則為無期限',
|
|
1589
|
+
callback: text => {
|
|
1590
|
+
voucherData.rebateEndDay = text;
|
|
1591
|
+
gvc.notifyDataChange(id);
|
|
1592
|
+
},
|
|
1593
|
+
})}
|
|
1594
|
+
<span class="tx_normal me-2">天</span>
|
|
1595
|
+
</div>
|
|
1596
|
+
</div>`,
|
|
1597
|
+
},
|
|
1598
|
+
],
|
|
1599
|
+
[parseInt(voucherData.rebateEndDay ?? '0', 10) ? `withEnd` : `noEnd`],
|
|
1600
|
+
text => {
|
|
1601
|
+
if (text[0] === 'noEnd') {
|
|
1602
|
+
voucherData.rebateEndDay = '0';
|
|
1603
|
+
}
|
|
1538
1604
|
},
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
voucherData.rebateEndDay='0'
|
|
1544
|
-
}
|
|
1545
|
-
},
|
|
1546
|
-
{ single: true }
|
|
1547
|
-
)
|
|
1548
|
-
].join('<div class="my-2"></div>')];
|
|
1605
|
+
{ single: true }
|
|
1606
|
+
),
|
|
1607
|
+
].join('<div class="my-2"></div>'),
|
|
1608
|
+
];
|
|
1549
1609
|
} else {
|
|
1550
1610
|
return [];
|
|
1551
1611
|
}
|