ts-glitter 21.9.2 → 21.9.6
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 +2 -1
- package/lowcode/cms-plugin/app-market-install.js +97 -0
- package/lowcode/cms-plugin/app-market-install.ts +123 -0
- package/lowcode/cms-plugin/app-market-published.js +42 -0
- package/lowcode/cms-plugin/app-market-published.ts +70 -0
- package/lowcode/cms-plugin/app-market.js +286 -0
- package/lowcode/cms-plugin/app-market.ts +343 -0
- package/lowcode/cms-plugin/filter-options.js +7 -0
- package/lowcode/cms-plugin/filter-options.ts +10 -0
- package/lowcode/cms-plugin/shopping-information.js +19 -463
- package/lowcode/cms-plugin/shopping-information.ts +50 -582
- package/lowcode/css/editor.css +13 -0
- package/lowcode/glitter-base/global/language.js +6 -0
- package/lowcode/glitter-base/global/language.ts +6 -0
- package/lowcode/glitter-base/route/market.js +43 -0
- package/lowcode/glitter-base/route/market.ts +47 -0
- package/lowcode/glitter-base/route/shopping.js +15 -0
- package/lowcode/glitter-base/route/shopping.ts +24 -5
- package/lowcode/glitterBundle/dialog/dialog.js +2 -2
- package/lowcode/glitterBundle/dialog/dialog.ts +5 -5
- package/lowcode/jspage/function-page/main_editor.js +2 -2
- package/lowcode/jspage/function-page/main_editor.ts +2 -2
- package/lowcode/jspage/function-page/setting_editor.js +27 -0
- package/lowcode/jspage/function-page/setting_editor.ts +27 -0
- package/lowcode/public-components/user-manager/um-order.js +158 -60
- package/lowcode/public-components/user-manager/um-order.ts +229 -73
- package/package.json +1 -1
- package/src/api-public/controllers/app-market.d.ts +3 -0
- package/src/api-public/controllers/app-market.js +51 -0
- package/src/api-public/controllers/app-market.js.map +1 -0
- package/src/api-public/controllers/app-market.ts +59 -0
- package/src/api-public/controllers/index.js +3 -0
- package/src/api-public/controllers/index.js.map +1 -1
- package/src/api-public/controllers/index.ts +3 -0
- package/src/api-public/controllers/shop.js +38 -6
- package/src/api-public/controllers/shop.js.map +1 -1
- package/src/api-public/controllers/shop.ts +94 -61
- package/src/api-public/controllers/user.js +2 -2
- package/src/api-public/controllers/user.js.map +1 -1
- package/src/api-public/controllers/user.ts +2 -3
- package/src/api-public/services/app-market.d.ts +26 -0
- package/src/api-public/services/app-market.js +385 -0
- package/src/api-public/services/app-market.js.map +1 -0
- package/src/api-public/services/app-market.ts +412 -0
- package/src/api-public/services/auto-send-email.js +4 -3
- package/src/api-public/services/auto-send-email.js.map +1 -1
- package/src/api-public/services/auto-send-email.ts +3 -2
- package/src/api-public/services/checkout-event.js +7 -26
- package/src/api-public/services/checkout-event.js.map +1 -1
- package/src/api-public/services/checkout-event.ts +18 -43
- package/src/api-public/services/model/handlePaymentTransaction.js +0 -1
- package/src/api-public/services/model/handlePaymentTransaction.js.map +1 -1
- package/src/api-public/services/model/handlePaymentTransaction.ts +3 -81
- package/src/api-public/services/shopping.d.ts +1 -0
- package/src/api-public/services/shopping.js +7 -7
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +15 -59
- package/src/api-public/services/user.js +2 -2
- package/src/api-public/services/user.js.map +1 -1
- package/src/api-public/services/user.ts +2 -2
- package/src/config.d.ts +1 -0
- package/src/config.js +1 -0
- package/src/config.js.map +1 -1
- package/src/config.ts +1 -0
- package/src/public-config-initial/auto-fcm.d.ts +1 -0
- package/src/public-config-initial/auto-fcm.js +6 -4
- package/src/public-config-initial/auto-fcm.js.map +1 -1
- package/src/public-config-initial/auto-fcm.ts +14 -9
- package/src/services/app.js +7 -17
- package/src/services/app.js.map +1 -1
- package/src/services/backend-service.js +7 -17
- package/src/services/backend-service.js.map +1 -1
|
@@ -2,7 +2,6 @@ import { GVC } from '../../glitterBundle/GVController.js';
|
|
|
2
2
|
import { UmClass } from './um-class.js';
|
|
3
3
|
import { ApiUser } from '../../glitter-base/route/user.js';
|
|
4
4
|
import { ApiShop } from '../../glitter-base/route/shopping.js';
|
|
5
|
-
import { ApiCart } from '../../glitter-base/route/api-cart.js';
|
|
6
5
|
import { Ad } from '../public/ad.js';
|
|
7
6
|
import { ShareDialog } from '../../glitterBundle/dialog/ShareDialog.js';
|
|
8
7
|
import { FormWidget } from '../../official_view_component/official/form.js';
|
|
@@ -10,6 +9,8 @@ import { Language } from '../../glitter-base/global/language.js';
|
|
|
10
9
|
import { CheckInput } from '../../modules/checkInput.js';
|
|
11
10
|
import { ShipmentConfig } from '../../glitter-base/global/shipment-config.js';
|
|
12
11
|
import { Animation } from '../../glitterBundle/module/Animation.js';
|
|
12
|
+
import { BgWidget } from '../../backend-manager/bg-widget.js';
|
|
13
|
+
import { GlobalUser } from '../../glitter-base/global/global-user.js';
|
|
13
14
|
|
|
14
15
|
const html = String.raw;
|
|
15
16
|
const css = String.raw;
|
|
@@ -411,30 +412,30 @@ export class UMOrder {
|
|
|
411
412
|
cursor: pointer;
|
|
412
413
|
}
|
|
413
414
|
.customer-btn-text {
|
|
414
|
-
line-height:normal;
|
|
415
|
+
line-height: normal;
|
|
415
416
|
text-align: center;
|
|
416
417
|
color: white;
|
|
417
418
|
font-size: 14px;
|
|
418
419
|
font-weight: 400;
|
|
419
420
|
letter-spacing: 0.56px;
|
|
420
421
|
}
|
|
421
|
-
|
|
422
|
+
|
|
422
423
|
.payment-section {
|
|
423
424
|
border: 1px solid #ccc;
|
|
424
425
|
padding: 10px;
|
|
425
426
|
margin-bottom: 20px;
|
|
426
427
|
}
|
|
427
428
|
#repay-button {
|
|
428
|
-
height:32px;
|
|
429
|
-
|
|
429
|
+
height: 32px;
|
|
430
|
+
|
|
430
431
|
background-color: #4caf50;
|
|
431
432
|
color: white;
|
|
432
|
-
border-radius:10px;
|
|
433
|
+
border-radius: 10px;
|
|
433
434
|
padding: 6px 14px;
|
|
434
435
|
border: none;
|
|
435
436
|
cursor: pointer;
|
|
436
437
|
}
|
|
437
|
-
|
|
438
|
+
|
|
438
439
|
#repay-button:hover {
|
|
439
440
|
background-color: #45a049;
|
|
440
441
|
}
|
|
@@ -454,6 +455,7 @@ export class UMOrder {
|
|
|
454
455
|
showPayError();
|
|
455
456
|
return;
|
|
456
457
|
}
|
|
458
|
+
|
|
457
459
|
switch (payment_method) {
|
|
458
460
|
case 'line_pay':
|
|
459
461
|
if (gvc.glitter.share.is_application) {
|
|
@@ -472,7 +474,8 @@ export class UMOrder {
|
|
|
472
474
|
if (res.response.approveLink) {
|
|
473
475
|
location.href = res.response.approveLink;
|
|
474
476
|
}
|
|
475
|
-
showPayError();
|
|
477
|
+
showPayError();
|
|
478
|
+
break;
|
|
476
479
|
}
|
|
477
480
|
case 'jkopay': {
|
|
478
481
|
if (gvc.glitter.share.is_application) {
|
|
@@ -505,9 +508,10 @@ export class UMOrder {
|
|
|
505
508
|
padding: 0 24px;
|
|
506
509
|
margin: 18px 0;
|
|
507
510
|
}
|
|
511
|
+
|
|
508
512
|
.button-text {
|
|
509
|
-
|
|
510
|
-
|
|
513
|
+
color: #fff;
|
|
514
|
+
font-size: 16px;
|
|
511
515
|
}
|
|
512
516
|
`);
|
|
513
517
|
return gvc.bindView({
|
|
@@ -515,12 +519,17 @@ export class UMOrder {
|
|
|
515
519
|
view: () => {
|
|
516
520
|
return html` <div class="w-100 h-100 d-flex align-items-center justify-content-center">
|
|
517
521
|
${document.body.clientWidth < 800
|
|
518
|
-
? `
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
522
|
+
? html`
|
|
523
|
+
<div
|
|
524
|
+
class="bg-white position-relative vw-100"
|
|
525
|
+
style="height: ${window.innerHeight}px;overflow-y: auto; padding-top:${50 +
|
|
526
|
+
gvc.glitter.share.top_inset}px;"
|
|
527
|
+
></div>
|
|
528
|
+
`
|
|
529
|
+
: html` <div
|
|
530
|
+
class="p-3 bg-white position-relative"
|
|
531
|
+
style="max-height: calc(100vh - 90px);overflow-y:auto;"
|
|
532
|
+
></div>`}
|
|
524
533
|
<div
|
|
525
534
|
style="position: absolute; right: 15px;top:${15 + gvc.glitter.share.top_inset}px;z-index:1;"
|
|
526
535
|
onclick="${gvc.event(() => {
|
|
@@ -529,7 +538,7 @@ export class UMOrder {
|
|
|
529
538
|
>
|
|
530
539
|
<i class="fa-regular fa-circle-xmark fs-5 text-dark cursor_pointer"></i>
|
|
531
540
|
</div>
|
|
532
|
-
<div id="paynow-container"
|
|
541
|
+
<div id="paynow-container">
|
|
533
542
|
<div style="width:200px;height:200px;">loading...</div>
|
|
534
543
|
</div>
|
|
535
544
|
<div class="px-3 px-sm-0 w-100">
|
|
@@ -537,10 +546,7 @@ export class UMOrder {
|
|
|
537
546
|
class="button-bgr"
|
|
538
547
|
id="checkoutButton"
|
|
539
548
|
onclick="${gvc.event(() => {
|
|
540
|
-
// const inputGroup = document.querySelector('#paynow-container');
|
|
541
|
-
// console.log("inputGroup -- " , inputGroup)
|
|
542
549
|
const PayNow = (window as any).PayNow;
|
|
543
|
-
const dialog = new ShareDialog(gvc.glitter);
|
|
544
550
|
dialog.dataLoading({ visible: true });
|
|
545
551
|
PayNow.checkout().then((response: any) => {
|
|
546
552
|
dialog.dataLoading({ visible: false });
|
|
@@ -558,20 +564,21 @@ export class UMOrder {
|
|
|
558
564
|
</div>`;
|
|
559
565
|
},
|
|
560
566
|
divCreate: {
|
|
561
|
-
class: `
|
|
562
|
-
style: `max-width:100vw
|
|
567
|
+
class: `h-100 d-flex align-items-center justify-content-center`,
|
|
568
|
+
style: `max-width: 100vw; ${document.body.clientWidth < 800 ? 'width: 100%;' : 'width: 400px;'}`,
|
|
563
569
|
},
|
|
564
570
|
onCreate: () => {
|
|
565
571
|
const publicKey = res.response?.responseData.publicKey;
|
|
566
572
|
const secret = res.response?.responseData.data.result.secret;
|
|
567
573
|
const env = res.response.responseData.BETA == 'true' ? 'sandbox' : 'production';
|
|
568
|
-
// res.response.result.secret
|
|
569
574
|
const PayNow = (window as any).PayNow;
|
|
575
|
+
|
|
570
576
|
PayNow.createPayment({
|
|
571
577
|
publicKey: publicKey,
|
|
572
578
|
secret: secret,
|
|
573
579
|
env: env,
|
|
574
580
|
});
|
|
581
|
+
|
|
575
582
|
PayNow.mount('#paynow-container', {
|
|
576
583
|
locale: 'zh_tw',
|
|
577
584
|
appearance: {
|
|
@@ -589,7 +596,7 @@ export class UMOrder {
|
|
|
589
596
|
},
|
|
590
597
|
});
|
|
591
598
|
},
|
|
592
|
-
|
|
599
|
+
'paynow',
|
|
593
600
|
{
|
|
594
601
|
animation: document.body.clientWidth > 800 ? Animation.fade : Animation.popup,
|
|
595
602
|
dismiss: () => {
|
|
@@ -601,7 +608,7 @@ export class UMOrder {
|
|
|
601
608
|
}
|
|
602
609
|
default: {
|
|
603
610
|
const id = gvc.glitter.getUUID();
|
|
604
|
-
$('body').append(
|
|
611
|
+
$('body').append(html` <div id="${id}" style="display: none;">${res.response.form}</div>`);
|
|
605
612
|
(document.querySelector(`#${id} #submit`) as any).click();
|
|
606
613
|
}
|
|
607
614
|
}
|
|
@@ -610,9 +617,14 @@ export class UMOrder {
|
|
|
610
617
|
static repay(gvc: GVC, orderData: any) {
|
|
611
618
|
const id = orderData.cart_token;
|
|
612
619
|
const dialog = new ShareDialog(gvc.glitter);
|
|
613
|
-
dialog.dataLoading({ visible: true, text: Language.text('loading') });
|
|
614
620
|
const redirect = gvc.glitter.root_path + 'order_detail' + location.search;
|
|
615
621
|
const url = new URL(redirect as any, location.href);
|
|
622
|
+
|
|
623
|
+
dialog.dataLoading({
|
|
624
|
+
visible: true,
|
|
625
|
+
text: Language.text('loading'),
|
|
626
|
+
});
|
|
627
|
+
|
|
616
628
|
return new Promise(() => {
|
|
617
629
|
ApiShop.repay(id, url.href).then(res => {
|
|
618
630
|
dialog.dataLoading({ visible: false });
|
|
@@ -856,20 +868,8 @@ export class UMOrder {
|
|
|
856
868
|
];
|
|
857
869
|
|
|
858
870
|
static main(gvc: GVC, widget: any, subData: any) {
|
|
859
|
-
this.addStyle(gvc);
|
|
860
|
-
gvc.addMtScript(
|
|
861
|
-
[
|
|
862
|
-
{
|
|
863
|
-
src: `https://js.paynow.com.tw/sdk/v2/index.js?v=20250430`,
|
|
864
|
-
},
|
|
865
|
-
],
|
|
866
|
-
() => {},
|
|
867
|
-
() => {}
|
|
868
|
-
);
|
|
869
|
-
UmClass.addStyle(gvc);
|
|
870
871
|
const glitter = gvc.glitter;
|
|
871
|
-
const dialog = new ShareDialog(
|
|
872
|
-
|
|
872
|
+
const dialog = new ShareDialog(glitter);
|
|
873
873
|
const ids = {
|
|
874
874
|
view: glitter.getUUID(),
|
|
875
875
|
};
|
|
@@ -880,15 +880,182 @@ export class UMOrder {
|
|
|
880
880
|
data: {} as Order,
|
|
881
881
|
type: '',
|
|
882
882
|
formList: [] as any,
|
|
883
|
+
passport: false,
|
|
884
|
+
verify_code: '',
|
|
885
|
+
buyer_name: '',
|
|
886
|
+
buyer_phone: '',
|
|
883
887
|
};
|
|
884
|
-
|
|
888
|
+
|
|
889
|
+
this.addStyle(gvc);
|
|
890
|
+
gvc.addMtScript(
|
|
891
|
+
[
|
|
892
|
+
{
|
|
893
|
+
src: `https://js.paynow.com.tw/sdk/v2/index.js?v=20250430`,
|
|
894
|
+
},
|
|
895
|
+
],
|
|
896
|
+
() => {},
|
|
897
|
+
() => {}
|
|
898
|
+
);
|
|
899
|
+
UmClass.addStyle(gvc);
|
|
900
|
+
let changePage = (index: string, type: 'page' | 'home', subData: any) => {};
|
|
901
|
+
gvc.glitter.getModule(new URL('./official_event/page/change-page.js', gvc.glitter.root_path).href, cl => {
|
|
902
|
+
changePage = cl.changePage;
|
|
903
|
+
});
|
|
904
|
+
|
|
905
|
+
// 判定可以重新付款的付款方式
|
|
885
906
|
const repayArray = ['ecPay', 'newWebPay', 'paypal', 'jkopay', 'paynow', 'line_pay'];
|
|
886
907
|
|
|
908
|
+
//加載訂單資料
|
|
909
|
+
function loadOrderData() {
|
|
910
|
+
ApiShop.getOrder({
|
|
911
|
+
limit: 1,
|
|
912
|
+
page: 0,
|
|
913
|
+
data_from: 'user',
|
|
914
|
+
search: glitter.getUrlParameter('cart_token'),
|
|
915
|
+
searchType: 'cart_token',
|
|
916
|
+
buyer_name:vm.buyer_name,
|
|
917
|
+
buyer_phone:vm.buyer_phone
|
|
918
|
+
}).then((res: any) => {
|
|
919
|
+
if (res.result && res.response.data && res.response.data[0]) {
|
|
920
|
+
vm.data = res.response.data[0];
|
|
921
|
+
loadings.view = false;
|
|
922
|
+
gvc.notifyDataChange(ids.view);
|
|
923
|
+
} else {
|
|
924
|
+
dialog.errorMessage({
|
|
925
|
+
text:Language.text('order_not_found'),
|
|
926
|
+
})
|
|
927
|
+
guestCheckView()
|
|
928
|
+
}
|
|
929
|
+
});
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
// 訪客驗證訂單是否可見彈窗
|
|
933
|
+
function guestCheckView() {
|
|
934
|
+
BgWidget.settingDialog({
|
|
935
|
+
gvc: gvc,
|
|
936
|
+
title: Language.text('find_order'),
|
|
937
|
+
innerHTML: () => {
|
|
938
|
+
return html` <div class="p-3">
|
|
939
|
+
${[
|
|
940
|
+
Language.text('if_buyer_no_account').replace(
|
|
941
|
+
'#login',
|
|
942
|
+
gvc.event(() => {
|
|
943
|
+
gvc.closeDialog();
|
|
944
|
+
gvc.glitter.href = '/login';
|
|
945
|
+
})
|
|
946
|
+
),
|
|
947
|
+
`<div class="border-top w-100 my-3"></div>`,
|
|
948
|
+
BgWidget.editeInput({
|
|
949
|
+
gvc,
|
|
950
|
+
title: Language.text('order_number'),
|
|
951
|
+
default: glitter.getUrlParameter('cart_token'),
|
|
952
|
+
placeHolder: `${Language.text('please_enter')} ${Language.text('order_number')}`,
|
|
953
|
+
callback: value => {
|
|
954
|
+
glitter.setUrlParameter('cart_token',value)
|
|
955
|
+
},
|
|
956
|
+
}),
|
|
957
|
+
BgWidget.editeInput({
|
|
958
|
+
gvc,
|
|
959
|
+
title: Language.text('customer_name'),
|
|
960
|
+
default: vm.buyer_name,
|
|
961
|
+
placeHolder: `${Language.text('please_enter')} ${Language.text('customer_name')}`,
|
|
962
|
+
callback: value => {
|
|
963
|
+
vm.buyer_name = value;
|
|
964
|
+
},
|
|
965
|
+
}),
|
|
966
|
+
BgWidget.editeInput({
|
|
967
|
+
gvc,
|
|
968
|
+
title: Language.text('customer_phone'),
|
|
969
|
+
default: vm.buyer_phone,
|
|
970
|
+
placeHolder: `${Language.text('please_enter')} ${Language.text('customer_phone')}`,
|
|
971
|
+
callback: value => {
|
|
972
|
+
vm.buyer_phone = value;
|
|
973
|
+
},
|
|
974
|
+
}),
|
|
975
|
+
].join('')}
|
|
976
|
+
</div>`;
|
|
977
|
+
},
|
|
978
|
+
footer_html: (gvc: GVC) => {
|
|
979
|
+
return `<div class="w-100 d-flex border-top mt-0 py-2 px-3">
|
|
980
|
+
<div class="flex-fill"></div>
|
|
981
|
+
${[
|
|
982
|
+
` <button
|
|
983
|
+
class="customer-btn-text "
|
|
984
|
+
style=" height: 32px;
|
|
985
|
+
padding: 6px 14px;
|
|
986
|
+
background: #393939;
|
|
987
|
+
border-radius: 10px;
|
|
988
|
+
justify-content: center;
|
|
989
|
+
align-items: center;
|
|
990
|
+
display: inline-flex;
|
|
991
|
+
cursor: pointer;"
|
|
992
|
+
id=""
|
|
993
|
+
onclick="${gvc.event(() => {
|
|
994
|
+
loadOrderData()
|
|
995
|
+
gvc.closeDialog();
|
|
996
|
+
})}"
|
|
997
|
+
>
|
|
998
|
+
查詢
|
|
999
|
+
</button>`,
|
|
1000
|
+
].join('')}
|
|
1001
|
+
</div>`;
|
|
1002
|
+
},
|
|
1003
|
+
});
|
|
1004
|
+
// dialog.customCheck({
|
|
1005
|
+
// text: [
|
|
1006
|
+
// Language.text('if_buyer_no_account'),
|
|
1007
|
+
// BgWidget.title(''),
|
|
1008
|
+
// BgWidget.editeInput({
|
|
1009
|
+
// gvc,
|
|
1010
|
+
// title: '',
|
|
1011
|
+
// default: vm.buyer_name,
|
|
1012
|
+
// placeHolder: '請輸入購買人姓名',
|
|
1013
|
+
// callback: value => {
|
|
1014
|
+
// vm.buyer_name = value;
|
|
1015
|
+
// },
|
|
1016
|
+
// }),
|
|
1017
|
+
// BgWidget.editeInput({
|
|
1018
|
+
// gvc,
|
|
1019
|
+
// title: '',
|
|
1020
|
+
// default: vm.buyer_name,
|
|
1021
|
+
// placeHolder: '請輸入購買人手機號碼',
|
|
1022
|
+
// callback: value => {
|
|
1023
|
+
// vm.buyer_name = value;
|
|
1024
|
+
// },
|
|
1025
|
+
// })
|
|
1026
|
+
// ].join(''),
|
|
1027
|
+
// callback: response => {
|
|
1028
|
+
// if (response) {
|
|
1029
|
+
// function call() {
|
|
1030
|
+
// loadings.view = true;
|
|
1031
|
+
// gvc.notifyDataChange(ids.view);
|
|
1032
|
+
// }
|
|
1033
|
+
//
|
|
1034
|
+
// dialog.dataLoading({ visible: true });
|
|
1035
|
+
// ApiShop.verifyOrderCode(vm.verify_code).then(r => {
|
|
1036
|
+
// dialog.dataLoading({ visible: false });
|
|
1037
|
+
// vm.passport = Boolean(r.response?.result);
|
|
1038
|
+
//
|
|
1039
|
+
// if (vm.passport) {
|
|
1040
|
+
// dialog.successMessage({ text: '驗證成功' });
|
|
1041
|
+
// setTimeout(() => call(), 1200);
|
|
1042
|
+
// } else {
|
|
1043
|
+
// dialog.errorMessage({ text: '驗證失敗', callback: () => call() });
|
|
1044
|
+
// }
|
|
1045
|
+
// });
|
|
1046
|
+
// } else {
|
|
1047
|
+
// glitter.setUrlParameter('cart_token', undefined);
|
|
1048
|
+
// changePage('index', 'home', {});
|
|
1049
|
+
// }
|
|
1050
|
+
// },
|
|
1051
|
+
// });
|
|
1052
|
+
}
|
|
1053
|
+
|
|
887
1054
|
return html` <div class="container py-4">
|
|
888
1055
|
${gvc.bindView({
|
|
889
1056
|
bind: ids.view,
|
|
890
1057
|
dataList: [{ obj: vm, key: 'type' }],
|
|
891
|
-
view: () => {
|
|
1058
|
+
view: async () => {
|
|
892
1059
|
try {
|
|
893
1060
|
if (loadings.view) {
|
|
894
1061
|
return UmClass.spinner({
|
|
@@ -904,12 +1071,14 @@ export class UMOrder {
|
|
|
904
1071
|
|
|
905
1072
|
const orderData = vm.data.orderData;
|
|
906
1073
|
|
|
907
|
-
|
|
1074
|
+
// 判斷需要出貨單號碼
|
|
908
1075
|
if ((window as any).store_info.pickup_mode) {
|
|
909
1076
|
dialog.infoMessage({
|
|
910
|
-
text: `取貨時請核對您的取貨號碼,您的取貨號碼為<br
|
|
1077
|
+
text: html`取貨時請核對您的取貨號碼,您的取貨號碼為<br />
|
|
1078
|
+
<div class="fw-bold fs-5 text-danger">『 ${(vm.data as any).shipment_number} 號 』</div>`,
|
|
911
1079
|
});
|
|
912
1080
|
}
|
|
1081
|
+
|
|
913
1082
|
const showUploadProof =
|
|
914
1083
|
orderData.method === 'off_line' &&
|
|
915
1084
|
orderData.customer_info.payment_select !== 'cash_on_delivery' &&
|
|
@@ -985,7 +1154,6 @@ export class UMOrder {
|
|
|
985
1154
|
class="o-title-container ${item.title === Language.text('payment_instructions')
|
|
986
1155
|
? 'align-items-start mt-2'
|
|
987
1156
|
: ''}"
|
|
988
|
-
|
|
989
1157
|
>
|
|
990
1158
|
<div class="o-title me-1" style="white-space: nowrap;">${item.title}:</div>
|
|
991
1159
|
<div class="o-title fr-view">${item.value}</div>
|
|
@@ -1156,6 +1324,7 @@ export class UMOrder {
|
|
|
1156
1324
|
</section>
|
|
1157
1325
|
`;
|
|
1158
1326
|
}
|
|
1327
|
+
|
|
1159
1328
|
return html`
|
|
1160
1329
|
<section class="o-h1">${Language.text('order_number')}<br />#${vm.data.cart_token}</section>
|
|
1161
1330
|
<section class="o-card">
|
|
@@ -1163,7 +1332,7 @@ export class UMOrder {
|
|
|
1163
1332
|
${gvc.map(
|
|
1164
1333
|
orderData.lineItems.map(item => {
|
|
1165
1334
|
return html`
|
|
1166
|
-
<div class="o-line-item ${document.body.clientWidth < 800 ?
|
|
1335
|
+
<div class="o-line-item ${document.body.clientWidth < 800 ? 'p-2' : ''}">
|
|
1167
1336
|
<div class="d-flex gap-3 align-items-center">
|
|
1168
1337
|
<div>
|
|
1169
1338
|
${UmClass.validImageBox({
|
|
@@ -1197,12 +1366,8 @@ export class UMOrder {
|
|
|
1197
1366
|
});
|
|
1198
1367
|
})}"
|
|
1199
1368
|
>
|
|
1200
|
-
${(()
|
|
1201
|
-
|
|
1202
|
-
(item.language_data && (item as any).language_data[Language.getLanguage()].title) ||
|
|
1203
|
-
item.title;
|
|
1204
|
-
return title;
|
|
1205
|
-
})()}
|
|
1369
|
+
${(item.language_data && (item as any).language_data[Language.getLanguage()].title) ||
|
|
1370
|
+
item.title}
|
|
1206
1371
|
</p>
|
|
1207
1372
|
<p class="o-item-spec">
|
|
1208
1373
|
${item.spec.length > 0
|
|
@@ -1228,7 +1393,7 @@ export class UMOrder {
|
|
|
1228
1393
|
})()}`
|
|
1229
1394
|
: Language.text('single_specification')}
|
|
1230
1395
|
</p>
|
|
1231
|
-
<span class="me-3
|
|
1396
|
+
<span class="me-3 d-sm-none">NT ${item.sale_price.toLocaleString()} × ${item.count}</span>
|
|
1232
1397
|
</div>
|
|
1233
1398
|
</div>
|
|
1234
1399
|
<div class="d-none d-sm-flex">
|
|
@@ -1306,7 +1471,7 @@ export class UMOrder {
|
|
|
1306
1471
|
text: `您已完成訂單,請於「付款資訊」了解付款說明後,儘速上傳結帳證明,以完成付款程序`,
|
|
1307
1472
|
});
|
|
1308
1473
|
}
|
|
1309
|
-
|
|
1474
|
+
|
|
1310
1475
|
Ad.fbqEvent('Purchase', {
|
|
1311
1476
|
value: orderData.total,
|
|
1312
1477
|
currency: 'TWD',
|
|
@@ -1403,7 +1568,7 @@ export class UMOrder {
|
|
|
1403
1568
|
value: (() => {
|
|
1404
1569
|
switch (orderData.orderStatus) {
|
|
1405
1570
|
case '-1':
|
|
1406
|
-
return
|
|
1571
|
+
return html` <div class="text-danger">${Language.text('cancelled')}</div>`;
|
|
1407
1572
|
case '1':
|
|
1408
1573
|
return Language.text('completed');
|
|
1409
1574
|
case '-99':
|
|
@@ -1445,8 +1610,8 @@ export class UMOrder {
|
|
|
1445
1610
|
class="customer-btn-text ms-3"
|
|
1446
1611
|
id="repay-button"
|
|
1447
1612
|
onclick="${gvc.event(() => {
|
|
1448
|
-
|
|
1449
|
-
|
|
1613
|
+
UMOrder.repay(gvc, vm.data).then(r => {});
|
|
1614
|
+
})}"
|
|
1450
1615
|
>
|
|
1451
1616
|
重新付款
|
|
1452
1617
|
</button>
|
|
@@ -1736,30 +1901,21 @@ export class UMOrder {
|
|
|
1736
1901
|
`;
|
|
1737
1902
|
} catch (e) {
|
|
1738
1903
|
console.error(e);
|
|
1739
|
-
return
|
|
1904
|
+
return '';
|
|
1740
1905
|
}
|
|
1741
1906
|
},
|
|
1742
1907
|
divCreate: {
|
|
1743
1908
|
class: 'd-flex align-items-center justify-content-center gap-3 flex-column',
|
|
1744
1909
|
style: 'min-height: 50vh;',
|
|
1745
1910
|
},
|
|
1746
|
-
onCreate: () => {
|
|
1911
|
+
onCreate: async () => {
|
|
1747
1912
|
if (loadings.view) {
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
}).then((res: any) => {
|
|
1755
|
-
if (res.result && res.response.data) {
|
|
1756
|
-
vm.data = res.response.data[0];
|
|
1757
|
-
} else {
|
|
1758
|
-
vm.data = {} as any;
|
|
1759
|
-
}
|
|
1760
|
-
loadings.view = false;
|
|
1761
|
-
gvc.notifyDataChange(ids.view);
|
|
1762
|
-
});
|
|
1913
|
+
vm.passport = glitter.share.GlobalUser.token ? Boolean(await UmClass.getUserData(gvc)) : vm.passport;
|
|
1914
|
+
if (GlobalUser.token) {
|
|
1915
|
+
loadOrderData();
|
|
1916
|
+
} else {
|
|
1917
|
+
guestCheckView();
|
|
1918
|
+
}
|
|
1763
1919
|
}
|
|
1764
1920
|
},
|
|
1765
1921
|
})}
|
package/package.json
CHANGED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const express_1 = __importDefault(require("express"));
|
|
6
|
+
const response_1 = __importDefault(require("../../modules/response"));
|
|
7
|
+
const exception_1 = __importDefault(require("../../modules/exception"));
|
|
8
|
+
const ut_permission_js_1 = require("../utils/ut-permission.js");
|
|
9
|
+
const app_market_1 = require("../services/app-market");
|
|
10
|
+
const router = express_1.default.Router();
|
|
11
|
+
router.get('/', async (req, resp) => {
|
|
12
|
+
try {
|
|
13
|
+
if (await ut_permission_js_1.UtPermission.isManager(req)) {
|
|
14
|
+
return response_1.default.succ(resp, await new app_market_1.MarketService(req.get('g-app'), req.body.token).getAppList());
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return response_1.default.fail(resp, exception_1.default.BadRequestError('BAD_REQUEST', 'No permission.', null));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
return response_1.default.fail(resp, err);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
router.get('/install', async (req, resp) => {
|
|
25
|
+
try {
|
|
26
|
+
if (await ut_permission_js_1.UtPermission.isManager(req)) {
|
|
27
|
+
return response_1.default.succ(resp, await new app_market_1.MarketService(req.get('g-app'), req.body.token).getInstallAppList());
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return response_1.default.fail(resp, exception_1.default.BadRequestError('BAD_REQUEST', 'No permission.', null));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
return response_1.default.fail(resp, err);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
router.get('/published', async (req, resp) => {
|
|
38
|
+
try {
|
|
39
|
+
if (await ut_permission_js_1.UtPermission.isManager(req)) {
|
|
40
|
+
return response_1.default.succ(resp, await new app_market_1.MarketService(req.get('g-app'), req.body.token).getPublishtdAppList());
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return response_1.default.fail(resp, exception_1.default.BadRequestError('BAD_REQUEST', 'No permission.', null));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
return response_1.default.fail(resp, err);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
module.exports = router;
|
|
51
|
+
//# sourceMappingURL=app-market.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-market.js","sourceRoot":"","sources":["app-market.ts"],"names":[],"mappings":";;;;AAAA,sDAAyC;AACzC,sEAA8C;AAC9C,wEAAgD;AAChD,gEAAyD;AAIzD,uDAAuD;AAEvD,MAAM,MAAM,GAAmB,iBAAO,CAAC,MAAM,EAAE,CAAC;AAIhD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAoB,EAAE,IAAsB,EAAE,EAAE;IACnE,IAAI,CAAC;QACD,IAAI,MAAM,+BAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,kBAAQ,CAAC,IAAI,CAClB,IAAI,EACJ,MAAM,IAAI,0BAAa,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAW,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CACjF,CAAA;QACH,CAAC;aAAM,CAAC;YACJ,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAS,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QACjG,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAoB,EAAE,IAAsB,EAAE,EAAE;IAC5E,IAAI,CAAC;QACH,IAAI,MAAM,+BAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAEtC,OAAO,kBAAQ,CAAC,IAAI,CAClB,IAAI,EACJ,MAAM,IAAI,0BAAa,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAW,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,CACxF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAS,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,GAAoB,EAAE,IAAsB,EAAE,EAAE;IAC9E,IAAI,CAAC;QACH,IAAI,MAAM,+BAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAEtC,OAAO,kBAAQ,CAAC,IAAI,CAClB,IAAI,EACJ,MAAM,IAAI,0BAAa,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAW,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,CAC1F,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAS,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,kBAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CAAC,CAAC;AA/CH,iBAAS,MAAM,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import express, { query } from 'express';
|
|
2
|
+
import response from '../../modules/response';
|
|
3
|
+
import exception from '../../modules/exception';
|
|
4
|
+
import { UtPermission } from '../utils/ut-permission.js';
|
|
5
|
+
import { Mail } from '../services/mail.js';
|
|
6
|
+
import {SMS} from "../services/sms.js";
|
|
7
|
+
import {LineMessage} from "../services/line-message";
|
|
8
|
+
import { MarketService } from '../services/app-market';
|
|
9
|
+
|
|
10
|
+
const router: express.Router = express.Router();
|
|
11
|
+
|
|
12
|
+
export = router;
|
|
13
|
+
|
|
14
|
+
router.get('/', async (req: express.Request, resp: express.Response) => {
|
|
15
|
+
try {
|
|
16
|
+
if (await UtPermission.isManager(req)) {
|
|
17
|
+
return response.succ(
|
|
18
|
+
resp,
|
|
19
|
+
await new MarketService(req.get('g-app') as string, req.body.token).getAppList()
|
|
20
|
+
)
|
|
21
|
+
} else {
|
|
22
|
+
return response.fail(resp, exception.BadRequestError('BAD_REQUEST', 'No permission.', null));
|
|
23
|
+
}
|
|
24
|
+
} catch (err) {
|
|
25
|
+
return response.fail(resp, err);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
router.get('/install', async (req: express.Request, resp: express.Response) => {
|
|
30
|
+
try {
|
|
31
|
+
if (await UtPermission.isManager(req)) {
|
|
32
|
+
|
|
33
|
+
return response.succ(
|
|
34
|
+
resp,
|
|
35
|
+
await new MarketService(req.get('g-app') as string, req.body.token).getInstallAppList()
|
|
36
|
+
)
|
|
37
|
+
} else {
|
|
38
|
+
return response.fail(resp, exception.BadRequestError('BAD_REQUEST', 'No permission.', null));
|
|
39
|
+
}
|
|
40
|
+
} catch (err) {
|
|
41
|
+
return response.fail(resp, err);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
router.get('/published', async (req: express.Request, resp: express.Response) => {
|
|
46
|
+
try {
|
|
47
|
+
if (await UtPermission.isManager(req)) {
|
|
48
|
+
|
|
49
|
+
return response.succ(
|
|
50
|
+
resp,
|
|
51
|
+
await new MarketService(req.get('g-app') as string, req.body.token).getPublishtdAppList()
|
|
52
|
+
)
|
|
53
|
+
} else {
|
|
54
|
+
return response.fail(resp, exception.BadRequestError('BAD_REQUEST', 'No permission.', null));
|
|
55
|
+
}
|
|
56
|
+
} catch (err) {
|
|
57
|
+
return response.fail(resp, err);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
@@ -27,6 +27,7 @@ const app_release = require("./app-release");
|
|
|
27
27
|
const smtp = require("./smtp");
|
|
28
28
|
const sms = require("./sms");
|
|
29
29
|
const line_message = require("./line-message");
|
|
30
|
+
const app_market = require("./app-market");
|
|
30
31
|
const fb_message = require("./fb-message");
|
|
31
32
|
const fcm = require("./fcm");
|
|
32
33
|
const wallet = require("./wallet");
|
|
@@ -52,6 +53,7 @@ router.use(config_1.config.getRoute(config_1.config.public_route.app, 'public'),
|
|
|
52
53
|
router.use(config_1.config.getRoute(config_1.config.public_route.smtp, 'public'), smtp);
|
|
53
54
|
router.use(config_1.config.getRoute(config_1.config.public_route.sms, 'public'), sms);
|
|
54
55
|
router.use(config_1.config.getRoute(config_1.config.public_route.line_message, 'public'), line_message);
|
|
56
|
+
router.use(config_1.config.getRoute(config_1.config.public_route.app_market, 'public'), app_market);
|
|
55
57
|
router.use(config_1.config.getRoute(config_1.config.public_route.fb_message, 'public'), fb_message);
|
|
56
58
|
router.use(config_1.config.getRoute(config_1.config.public_route.fcm, 'public'), fcm);
|
|
57
59
|
router.use(config_1.config.getRoute(config_1.config.public_route.wallet, 'public'), wallet);
|
|
@@ -128,6 +130,7 @@ const whiteList = [
|
|
|
128
130
|
{ url: config_1.config.getRoute(config_1.config.public_route.ec + '/repay_redirect', 'public'), method: 'POST' },
|
|
129
131
|
{ url: config_1.config.getRoute(config_1.config.public_route.ec + '/logistics/redirect', 'public'), method: 'POST' },
|
|
130
132
|
{ url: config_1.config.getRoute(config_1.config.public_route.ec + '/order', 'public'), method: 'GET' },
|
|
133
|
+
{ url: config_1.config.getRoute(config_1.config.public_route.ec + '/order/verifyCode', 'public'), method: 'POST' },
|
|
131
134
|
{ url: config_1.config.getRoute(config_1.config.public_route.ec + '/order/cancel', 'public'), method: 'PUT' },
|
|
132
135
|
{ url: config_1.config.getRoute(config_1.config.public_route.ec + '/order/proof-purchase', 'public'), method: 'PUT' },
|
|
133
136
|
{ url: config_1.config.getRoute(config_1.config.public_route.ec + '/order/payment-method', 'public'), method: 'GET' },
|