ts-glitter 20.8.7 → 20.9.1

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.
Files changed (180) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/backend-manager/bg-product.js +1 -1
  4. package/lowcode/backend-manager/bg-product.ts +1 -1
  5. package/lowcode/backend-manager/bg-recommend.js +1 -1
  6. package/lowcode/backend-manager/bg-recommend.ts +2 -2
  7. package/lowcode/backend-manager/bg-shopping.js +2 -5
  8. package/lowcode/backend-manager/bg-shopping.ts +2 -5
  9. package/lowcode/cms-plugin/POS-setting.js +58 -34
  10. package/lowcode/cms-plugin/POS-setting.ts +69 -33
  11. package/lowcode/cms-plugin/data-analyze-orders.js +0 -1
  12. package/lowcode/cms-plugin/data-analyze-orders.ts +1 -1
  13. package/lowcode/cms-plugin/data-analyze.js +1 -21
  14. package/lowcode/cms-plugin/data-analyze.ts +25 -25
  15. package/lowcode/cms-plugin/filter-options.js +1 -1
  16. package/lowcode/cms-plugin/filter-options.ts +1 -2
  17. package/lowcode/cms-plugin/information/information-module.js +275 -0
  18. package/lowcode/cms-plugin/information/information-module.ts +308 -0
  19. package/lowcode/cms-plugin/pos-pages/models.ts +3 -1
  20. package/lowcode/cms-plugin/pos-pages/payment-page.js +3 -11
  21. package/lowcode/cms-plugin/pos-pages/payment-page.ts +3 -11
  22. package/lowcode/cms-plugin/pos-pages/pos-function.js +1 -0
  23. package/lowcode/cms-plugin/pos-pages/pos-function.ts +1 -0
  24. package/lowcode/cms-plugin/pos-pages/products-page.js +1 -1
  25. package/lowcode/cms-plugin/pos-pages/products-page.ts +1 -1
  26. package/lowcode/cms-plugin/product-service.js +4 -9
  27. package/lowcode/cms-plugin/product-service.ts +4 -13
  28. package/lowcode/cms-plugin/shopping-discount-setting.js +76 -27
  29. package/lowcode/cms-plugin/shopping-discount-setting.ts +123 -63
  30. package/lowcode/cms-plugin/shopping-information.js +21 -167
  31. package/lowcode/cms-plugin/shopping-information.ts +35 -191
  32. package/lowcode/cms-plugin/shopping-order-return.js +212 -360
  33. package/lowcode/cms-plugin/shopping-order-return.ts +349 -482
  34. package/lowcode/cms-plugin/shopping-product-setting.js +8 -0
  35. package/lowcode/cms-plugin/shopping-product-setting.ts +12 -4
  36. package/lowcode/form-view/e-commerce/product-select.js +59 -51
  37. package/lowcode/form-view/e-commerce/product-select.ts +279 -266
  38. package/lowcode/glitter-base/global/language.js +2 -1
  39. package/lowcode/glitter-base/global/language.ts +2 -1
  40. package/lowcode/public-components/checkout/index.ts +2078 -2078
  41. package/lowcode/public-components/headers/sy-02.js +190 -179
  42. package/lowcode/public-components/headers/sy-02.ts +397 -370
  43. package/lowcode/public-components/headers/sy-03.js +133 -107
  44. package/lowcode/public-components/headers/sy-03.ts +276 -244
  45. package/lowcode/public-components/headers/sy-04.js +181 -146
  46. package/lowcode/public-components/headers/sy-04.ts +289 -247
  47. package/lowcode/public-components/product/pd-class.js +31 -23
  48. package/lowcode/public-components/product/pd-class.ts +51 -29
  49. package/lowcode/public-components/user-manager/um-voucher.js +1 -0
  50. package/lowcode/public-components/user-manager/um-voucher.ts +1 -0
  51. package/package.json +1 -1
  52. package/src/Language.js +1 -1
  53. package/src/Language.js.map +1 -1
  54. package/src/Language.ts +1 -1
  55. package/src/api-public/controllers/ai-chat.js.map +1 -1
  56. package/src/api-public/controllers/chat.js.map +1 -1
  57. package/src/api-public/controllers/customer-sessions.js.map +1 -1
  58. package/src/api-public/controllers/fb-message.js.map +1 -1
  59. package/src/api-public/controllers/fb-service.js.map +1 -1
  60. package/src/api-public/controllers/invoice.js.map +1 -1
  61. package/src/api-public/controllers/line-message.js.map +1 -1
  62. package/src/api-public/controllers/oauth.js.map +1 -1
  63. package/src/api-public/controllers/progress.js.map +1 -1
  64. package/src/api-public/controllers/rebate.js.map +1 -1
  65. package/src/api-public/controllers/recommend.js.map +1 -1
  66. package/src/api-public/controllers/reconciliation.js.map +1 -1
  67. package/src/api-public/controllers/shop.js +5 -2
  68. package/src/api-public/controllers/shop.js.map +1 -1
  69. package/src/api-public/controllers/shop.ts +7 -3
  70. package/src/api-public/controllers/shopee.js.map +1 -1
  71. package/src/api-public/controllers/sms.js.map +1 -1
  72. package/src/api-public/controllers/smtp.js.map +1 -1
  73. package/src/api-public/controllers/stock.js.map +1 -1
  74. package/src/api-public/controllers/track.js.map +1 -1
  75. package/src/api-public/controllers/voucher.js.map +1 -1
  76. package/src/api-public/models/glitter-finance.js +1 -2
  77. package/src/api-public/models/glitter-finance.js.map +1 -1
  78. package/src/api-public/services/EcInvoice.js.map +1 -1
  79. package/src/api-public/services/article.js.map +1 -1
  80. package/src/api-public/services/auto-send-email.js.map +1 -1
  81. package/src/api-public/services/chat.js.map +1 -1
  82. package/src/api-public/services/checkout-event.d.ts +1 -0
  83. package/src/api-public/services/checkout-event.js +17 -7
  84. package/src/api-public/services/checkout-event.js.map +1 -1
  85. package/src/api-public/services/checkout-event.ts +21 -9
  86. package/src/api-public/services/checkout.js.map +1 -1
  87. package/src/api-public/services/custom-code.js.map +1 -1
  88. package/src/api-public/services/customer-sessions.js.map +1 -1
  89. package/src/api-public/services/data-analyze.js +209 -196
  90. package/src/api-public/services/data-analyze.js.map +1 -1
  91. package/src/api-public/services/data-analyze.ts +219 -205
  92. package/src/api-public/services/delivery.js.map +1 -1
  93. package/src/api-public/services/ezpay/tool.d.ts +0 -1
  94. package/src/api-public/services/ezpay/tool.js.map +1 -1
  95. package/src/api-public/services/fake-data-model/fake-order.js.map +1 -1
  96. package/src/api-public/services/fake-data-model/fake-product.js.map +1 -1
  97. package/src/api-public/services/fake-data-model/fake-user.js.map +1 -1
  98. package/src/api-public/services/fb-api.js.map +1 -1
  99. package/src/api-public/services/filter-protect-data.js.map +1 -1
  100. package/src/api-public/services/financial-service.js +0 -1
  101. package/src/api-public/services/financial-service.js.map +1 -1
  102. package/src/api-public/services/form-check.js.map +1 -1
  103. package/src/api-public/services/graph-api.js.map +1 -1
  104. package/src/api-public/services/initial-fake-data.js.map +1 -1
  105. package/src/api-public/services/invoice.d.ts +3 -9
  106. package/src/api-public/services/invoice.js +66 -85
  107. package/src/api-public/services/invoice.js.map +1 -1
  108. package/src/api-public/services/invoice.ts +287 -293
  109. package/src/api-public/services/language-setting.js.map +1 -1
  110. package/src/api-public/services/mail.js.map +1 -1
  111. package/src/api-public/services/manager.js.map +1 -1
  112. package/src/api-public/services/paynow-logistics.js.map +1 -1
  113. package/src/api-public/services/phone-verify.js.map +1 -1
  114. package/src/api-public/services/pos.js.map +1 -1
  115. package/src/api-public/services/post.js.map +1 -1
  116. package/src/api-public/services/product-initial.js.map +1 -1
  117. package/src/api-public/services/rebate.js.map +1 -1
  118. package/src/api-public/services/reconciliation.js.map +1 -1
  119. package/src/api-public/services/schedule.d.ts +1 -0
  120. package/src/api-public/services/schedule.js +27 -0
  121. package/src/api-public/services/schedule.js.map +1 -1
  122. package/src/api-public/services/schedule.ts +30 -0
  123. package/src/api-public/services/shopping.d.ts +4 -3
  124. package/src/api-public/services/shopping.js +40 -20
  125. package/src/api-public/services/shopping.js.map +1 -1
  126. package/src/api-public/services/shopping.ts +52 -28
  127. package/src/api-public/services/stock.js.map +1 -1
  128. package/src/api-public/services/terms-check.js.map +1 -1
  129. package/src/api-public/services/updated-table-checked.js.map +1 -1
  130. package/src/api-public/services/user-update.js.map +1 -1
  131. package/src/api-public/services/user.d.ts +10 -0
  132. package/src/api-public/services/user.js +35 -8
  133. package/src/api-public/services/user.js.map +1 -1
  134. package/src/api-public/services/user.ts +50 -7
  135. package/src/api-public/services/voucher.js.map +1 -1
  136. package/src/api-public/utils/ut-database.js.map +1 -1
  137. package/src/app-project/android/app/src/main/res/xml/network_security_config.xml +3 -3
  138. package/src/app-project/android/app/src/main/res/xml/s.xml +5 -5
  139. package/src/app-project/android/gradlew.bat +94 -94
  140. package/src/app-project/serverless/src/controllers/index.js.map +1 -1
  141. package/src/app-project/serverless/src/controllers/sample.js.map +1 -1
  142. package/src/app-project/serverless/src/modules/database.d.ts +1 -2
  143. package/src/app-project/serverless/src/modules/database.js.map +1 -1
  144. package/src/app-project/serverless/src/modules/exception.js.map +1 -1
  145. package/src/app-project/serverless/src/modules/hooks.js.map +1 -1
  146. package/src/app-project/serverless/src/modules/logger.js.map +1 -1
  147. package/src/app-project/serverless/src/modules/redis.d.ts +1 -1
  148. package/src/app-project/serverless/src/modules/redis.js.map +1 -1
  149. package/src/app-project/serverless/src/modules/response.js.map +1 -1
  150. package/src/app-project/serverless/src/modules/ssh.js.map +1 -1
  151. package/src/controllers/ai.js.map +1 -1
  152. package/src/controllers/global-event.js.map +1 -1
  153. package/src/controllers/page.js.map +1 -1
  154. package/src/controllers/private_config.js.map +1 -1
  155. package/src/export/export-test.js.map +1 -1
  156. package/src/firebase/message.js +1 -2
  157. package/src/firebase/message.js.map +1 -1
  158. package/src/helper/app_creater.js +1 -2
  159. package/src/helper/app_creater.js.map +1 -1
  160. package/src/helper/glitter-util.d.ts +0 -1
  161. package/src/helper/glitter-util.js.map +1 -1
  162. package/src/lambda/interface.d.ts +1 -1
  163. package/src/lambda/interface.js +2 -2
  164. package/src/lambda/interface.js.map +1 -1
  165. package/src/modules/database.js +4 -3
  166. package/src/modules/database.js.map +1 -1
  167. package/src/modules/database.ts +4 -4
  168. package/src/modules/exception.js.map +1 -1
  169. package/src/modules/hooks.js.map +1 -1
  170. package/src/modules/response.js.map +1 -1
  171. package/src/modules/ssh.js.map +1 -1
  172. package/src/public-config-initial/auto-fcm.js.map +1 -1
  173. package/src/run.js.map +1 -1
  174. package/src/run.ts +12 -12
  175. package/src/services/ai.js.map +1 -1
  176. package/src/services/ses.js +1 -2
  177. package/src/services/ses.js.map +1 -1
  178. package/src/services/system-schedule.js.map +1 -1
  179. package/src/update-progress-track.js.map +1 -1
  180. package/src/update-script.js.map +1 -1
@@ -20,10 +20,116 @@ interface ViewModel {
20
20
  filter_type: 'normal' | 'block' | 'void';
21
21
  }
22
22
 
23
+ interface ReturnOrderData {
24
+ id: number;
25
+ order_id: string;
26
+ return_order_id: string;
27
+ status: number;
28
+ email: string;
29
+ orderData: {
30
+ rebateChange: any;
31
+ return_inf: string | any;
32
+ refundTime?: string;
33
+ bank_info?: any;
34
+ customer_info: any;
35
+ editRecord: any;
36
+ method: string;
37
+ orderStatus: string;
38
+ use_wallet: number;
39
+ email: string;
40
+ return_discount: number;
41
+ return_rebate: number;
42
+ total: number;
43
+ discount: number;
44
+ expectDate: string;
45
+ shipment_fee: number;
46
+ use_rebate: number;
47
+ lineItems: {
48
+ id: number;
49
+ spec: string[];
50
+ count: string;
51
+ sale_price: number;
52
+ return_count: number;
53
+ return_reason: string;
54
+ }[];
55
+ user_info: {
56
+ name: string;
57
+ email: string;
58
+ phone: string;
59
+ address: string;
60
+ shipment: 'normal' | 'FAMIC2C' | 'UNIMARTC2C' | 'HILIFEC2C' | 'OKMARTC2C';
61
+ CVSStoreName: string;
62
+ CVSStoreID: string;
63
+ CVSTelephone: string;
64
+ MerchantTradeNo: string;
65
+ CVSAddress: string;
66
+ note?: string;
67
+ code_note?: string;
68
+ };
69
+ custom_form_format?: any;
70
+ custom_form_data?: any;
71
+ proof_purchase: any;
72
+ progress: string;
73
+ returnProgress: string;
74
+ order_note: string;
75
+ return_order_remark: string;
76
+ voucherList: [
77
+ {
78
+ title: string;
79
+ method: 'percent' | 'fixed';
80
+ trigger: 'auto' | 'code';
81
+ value: string;
82
+ for: 'collection' | 'product';
83
+ rule: 'min_price' | 'min_count';
84
+ forKey: string[];
85
+ ruleValue: number;
86
+ startDate: string;
87
+ startTime: string;
88
+ endDate?: string;
89
+ endTime?: string;
90
+ status: 0 | 1 | -1;
91
+ type: 'voucher';
92
+ code?: string;
93
+ overlay: boolean;
94
+ bind?: {
95
+ id: string;
96
+ spec: string[];
97
+ count: number;
98
+ sale_price: number;
99
+ collection: string[];
100
+ discount_price: number;
101
+ }[];
102
+ start_ISO_Date: string;
103
+ end_ISO_Date: string;
104
+ },
105
+ ];
106
+ };
107
+ created_time: string;
108
+ }
109
+
23
110
  const html = String.raw;
24
111
 
25
112
  export class ShoppingReturnOrderManager {
26
- public static main(gvc: GVC) {
113
+ static getShipmentBadge(data: string, size: 'sm' | 'md' = 'md') {
114
+ const shipmentMap: any = {
115
+ '0': () => BgWidget.warningInsignia('退貨中', { size }),
116
+ '1': () => BgWidget.secondaryInsignia('處理中', { size }),
117
+ '-1': () => BgWidget.successInsignia('已退貨', { size }),
118
+ };
119
+
120
+ return (shipmentMap[data] ?? shipmentMap['1'])();
121
+ }
122
+
123
+ static getPaymentBadge(data: string, size: 'sm' | 'md' = 'md') {
124
+ const paymentMap: any = {
125
+ '0': () => BgWidget.warningInsignia('退款中', { size }),
126
+ '1': () => BgWidget.successInsignia('已退款', { size }),
127
+ };
128
+
129
+ return (paymentMap[data] ?? paymentMap['0'])();
130
+ }
131
+
132
+ static main(gvc: GVC) {
27
133
  const glitter = gvc.glitter;
28
134
  const dialog = new ShareDialog(gvc.glitter);
29
135
 
@@ -43,11 +149,6 @@ export class ShoppingReturnOrderManager {
43
149
  const ListComp = new BgListComponent(gvc, vm, FilterOptions.returnOrderFilterFrame);
44
150
 
45
151
  vm.filter = ListComp.getFilterObject();
46
- gvc.addMtScript(
47
- [{ src: 'https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.9/xlsx.full.min.js' }],
48
- () => {},
49
- () => {}
50
- );
51
152
 
52
153
  return gvc.bindView(() => {
53
154
  return {
@@ -66,22 +167,7 @@ export class ShoppingReturnOrderManager {
66
167
  })
67
168
  )}
68
169
  </div>
69
- <div class="title-container">
70
- ${BgWidget.tab(
71
- [
72
- {
73
- title: '一般列表',
74
- key: 'normal',
75
- },
76
- ],
77
- gvc,
78
- vm.filter_type,
79
- text => {
80
- vm.filter_type = text as any;
81
- gvc.notifyDataChange(vm.id);
82
- }
83
- )}
84
- </div>
170
+ <div class="mb-3"></div>
85
171
  ${BgWidget.mainCard(
86
172
  [
87
173
  html`<div>
@@ -96,12 +182,12 @@ export class ShoppingReturnOrderManager {
96
182
  options: FilterOptions.returnOrderSelect,
97
183
  })}
98
184
  ${BgWidget.searchFilter(
99
- gvc.event((e, event) => {
185
+ gvc.event(e => {
100
186
  vm.query = `${e.value}`.trim();
101
187
  gvc.notifyDataChange(vm.id);
102
188
  }),
103
189
  vm.query || '',
104
- '搜尋所有訂單 按下Enter後執行'
190
+ '搜尋訂單'
105
191
  )}
106
192
  ${BgWidget.funnelFilter({
107
193
  gvc,
@@ -149,59 +235,18 @@ export class ShoppingReturnOrderManager {
149
235
  },
150
236
  {
151
237
  key: '申請人',
152
- value: dd.orderData.user_info ? dd.orderData.user_info.name : `匿名`,
238
+ value: dd.orderData.user_info ? dd.orderData.user_info.name : '匿名',
153
239
  },
154
240
  {
155
241
  key: '退貨狀態',
156
- value: (() => {
157
- switch (dd.orderData.returnProgress ?? '1') {
158
- case '0':
159
- return html`<div
160
- class="badge"
161
- style="font-size: 14px;color:#393939;height: 22px;padding: 4px 6px;border-radius: 7px;background: #FFE9B2;"
162
- >
163
- 退貨中
164
- </div>`;
165
- case '-1':
166
- return html`<div
167
- class="badge"
168
- style="font-size: 14px;border-radius: 7px;background: #D8ECDA;height: 22px;padding: 4px 6px;color:#393939;"
169
- >
170
- 已退貨
171
- </div>`;
172
- default:
173
- return html`<div
174
- class="badge"
175
- style="font-size: 14px;color:#393939;height: 22px;padding: 4px 6px;border-radius: 7px;background: #FFE9B2;"
176
- >
177
- 處理中
178
- </div>`;
179
- }
180
- })(),
242
+ value: ShoppingReturnOrderManager.getShipmentBadge(`${dd.orderData.returnProgress}`),
181
243
  },
182
244
  {
183
245
  key: '退款狀態',
184
- value: (() => {
185
- switch (dd.status ?? 0) {
186
- case 1:
187
- return html`<div
188
- class="badge "
189
- style="font-size: 14px;color:#393939;border-radius: 7px;background: #D8ECDA;height: 22px;padding: 4px 6px;"
190
- >
191
- 已退款
192
- </div>`;
193
- default:
194
- return html`<div
195
- class="badge"
196
- style="font-size: 14px;color:#393939;height: 22px;padding: 4px 6px;border-radius: 7px;background: #FFE9B2;"
197
- >
198
- 退款中
199
- </div>`;
200
- }
201
- })(),
246
+ value: ShoppingReturnOrderManager.getPaymentBadge(`${dd.status}`),
202
247
  },
203
248
  ].map((dd: any) => {
204
- dd.value = html`<div style="line-height:40px;">${dd.value}</div>`;
249
+ dd.value = html`<div style="line-height: 40px;">${dd.value}</div>`;
205
250
  return dd;
206
251
  });
207
252
  });
@@ -215,43 +260,43 @@ export class ShoppingReturnOrderManager {
215
260
  vmi.callback();
216
261
  });
217
262
  },
218
- rowClick: (data, index) => {
263
+ rowClick: (_, index) => {
219
264
  vm.data = vm.dataList[index];
220
265
  vm.type = 'replace';
221
266
  },
222
267
  filter: [
223
- {
224
- name: vm.filter_type === 'normal' ? `批量封存` : `解除封存`,
225
- option: true,
226
- event: () => {
227
- const action_text = vm.filter_type === 'normal' ? `封存` : `解除封存`;
228
- dialog.checkYesOrNot({
229
- text: `是否確認${action_text}所選項目?`,
230
- callback: async response => {
231
- if (response) {
232
- dialog.dataLoading({ visible: true });
233
- const check = vm.dataList.filter((dd: any) => {
234
- return dd.checked;
235
- });
236
- for (const b of check) {
237
- b.orderData.archived = vm.filter_type === 'normal' ? `true` : `false`;
238
- await ApiShop.putReturnOrder({
239
- id: `${b.id}`,
240
- data: b,
241
- });
242
- }
243
- setTimeout(() => {
244
- dialog.dataLoading({ visible: false });
245
- gvc.notifyDataChange(vm.id);
246
- }, 100);
247
- }
248
- },
249
- });
250
- },
251
- },
268
+ // {
269
+ // name: vm.filter_type === 'normal' ? `批量封存` : `解除封存`,
270
+ // option: true,
271
+ // event: () => {
272
+ // const action_text = vm.filter_type === 'normal' ? `封存` : `解除封存`;
273
+ // dialog.checkYesOrNot({
274
+ // text: `是否確認${action_text}所選項目?`,
275
+ // callback: async response => {
276
+ // if (response) {
277
+ // dialog.dataLoading({ visible: true });
278
+ // const check = vm.dataList.filter((dd: any) => {
279
+ // return dd.checked;
280
+ // });
281
+ // for (const b of check) {
282
+ // b.orderData.archived = vm.filter_type === 'normal' ? `true` : `false`;
283
+ // await ApiShop.putReturnOrder({
284
+ // id: `${b.id}`,
285
+ // data: b,
286
+ // });
287
+ // }
288
+ // setTimeout(() => {
289
+ // dialog.dataLoading({ visible: false });
290
+ // gvc.notifyDataChange(vm.id);
291
+ // }, 100);
292
+ // }
293
+ // },
294
+ // });
295
+ // },
296
+ // },
252
297
  {
253
298
  name: vm.filter_type === 'void' ? `批量作廢` : `解除作廢`,
254
- option: true,
299
+ // option: true,
255
300
  event: () => {
256
301
  dialog.checkYesOrNot({
257
302
  text: `是否確認${vm.filter_type === 'void' ? `解除作廢` : `作廢`}所選項目?`,
@@ -286,129 +331,29 @@ export class ShoppingReturnOrderManager {
286
331
  return this.replaceOrder(gvc, vm);
287
332
  } else if (vm.type == 'addSearch') {
288
333
  return this.searchOrder(gvc, vm);
289
- } else {
290
- return '';
291
334
  }
335
+ return '';
292
336
  },
293
337
  };
294
338
  });
295
339
  }
296
340
 
297
- public static replaceOrder(gvc: GVC, vm: any) {
341
+ static replaceOrder(gvc: GVC, vm: any) {
298
342
  const glitter = gvc.glitter;
299
- const orderData: {
300
- id: number;
301
- order_id: string;
302
- return_order_id: string;
303
- status: number;
304
- email: string;
305
- orderData: {
306
- rebateChange: any;
307
- return_inf: string | any;
308
- refundTime?: string;
309
- bank_info?: any;
310
- customer_info: any;
311
- editRecord: any;
312
- method: string;
313
- orderStatus: string;
314
- use_wallet: number;
315
- email: string;
316
- return_discount: number;
317
- return_rebate: number;
318
- total: number;
319
- discount: number;
320
- expectDate: string;
321
- shipment_fee: number;
322
- use_rebate: number;
323
- lineItems: {
324
- id: number;
325
- spec: string[];
326
- count: string;
327
- sale_price: number;
328
- return_count: number;
329
- return_reason: string;
330
- }[];
331
- user_info: {
332
- name: string;
333
- email: string;
334
- phone: string;
335
- address: string;
336
- shipment: 'normal' | 'FAMIC2C' | 'UNIMARTC2C' | 'HILIFEC2C' | 'OKMARTC2C';
337
- CVSStoreName: string;
338
- CVSStoreID: string;
339
- CVSTelephone: string;
340
- MerchantTradeNo: string;
341
- CVSAddress: string;
342
- note?: string;
343
- code_note?: string;
344
- };
345
- custom_form_format?: any;
346
- custom_form_data?: any;
347
- proof_purchase: any;
348
- progress: string;
349
- returnProgress: string;
350
- order_note: string;
351
- return_order_remark: string;
352
- voucherList: [
353
- {
354
- title: string;
355
- method: 'percent' | 'fixed';
356
- trigger: 'auto' | 'code';
357
- value: string;
358
- for: 'collection' | 'product';
359
- rule: 'min_price' | 'min_count';
360
- forKey: string[];
361
- ruleValue: number;
362
- startDate: string;
363
- startTime: string;
364
- endDate?: string;
365
- endTime?: string;
366
- status: 0 | 1 | -1;
367
- type: 'voucher';
368
- code?: string;
369
- overlay: boolean;
370
- bind?: {
371
- id: string;
372
- spec: string[];
373
- count: number;
374
- sale_price: number;
375
- collection: string[];
376
- discount_price: number;
377
- }[];
378
- start_ISO_Date: string;
379
- end_ISO_Date: string;
380
- },
381
- ];
382
- };
383
- created_time: string;
384
- } = vm.data;
385
- let userData: any = {};
343
+ const dialog = new ShareDialog(glitter);
344
+ const orderData: ReturnOrderData = vm.data;
386
345
  const mainViewID = gvc.glitter.getUUID();
387
- gvc.addStyle(`
388
- .bg-warning {
389
- background: #ffef9d !important;
390
- color: black !important;
391
- }
392
- `);
393
- let userDataLoading = true;
394
- const dialog = new ShareDialog(gvc.glitter);
395
346
 
396
- function drawBadge(color: string, text: string) {
397
- switch (color) {
398
- case 'green':
399
- return `<div class="badge fs-6" style="background:#D8ECDA;color: #393939;max-height:34px;border-radius: 7px;">${text}</div>`;
400
- case 'red':
401
- return `<div class="badge fs-6" style="border-radius: 7px;background: #FFD5D0;color: #393939;max-height:34px;">${text}</div>`;
402
- case 'yellow':
403
- return `<div class="badge fs-6" style="max-height:34px;border-radius: 7px;color: #393939;background: #FFE9B2;">${text}</div>`;
404
- default:
405
- return `<div class="badge fs-6" style="max-height:34px;border-radius: 7px;color: #393939;background: ${color};">${text}</div>`;
347
+ gvc.addStyle(`
348
+ .bg-warning {
349
+ background: #ffef9d !important;
350
+ color: black !important;
406
351
  }
407
- }
352
+ `);
408
353
 
409
354
  function drawInputRow(text: string, value: any, readonly: boolean, style?: string): string {
410
355
  return html`
411
- <div class=" d-flex flex-column" style="gap:8px;flex:1;${style ? style : ''}">
356
+ <div class="d-flex flex-column" style="gap:8px;flex:1;${style ? style : ''}">
412
357
  <div style="font-size: 16px;font-weight: 400;">${text}</div>
413
358
  ${(() => {
414
359
  if (readonly) {
@@ -437,30 +382,10 @@ export class ShoppingReturnOrderManager {
437
382
  `;
438
383
  }
439
384
 
440
- const vt = {
441
- paymentBadge: () => {
442
- if (orderData.status === 0) {
443
- return drawBadge('red', '尚未退款');
444
- } else if (orderData.status === 1) {
445
- return drawBadge('green', '已退款');
446
- }
447
- },
448
- outShipBadge: () => {
449
- switch (orderData.orderData.returnProgress ?? '1') {
450
- case '1':
451
- return drawBadge('#FFD5D0', '申請中');
452
- case '0':
453
- return drawBadge('#FFD5D0', '退貨中');
454
- case '-1':
455
- return drawBadge('#D8ECDA', '已退貨');
456
- }
457
- },
458
- };
459
385
  ApiUser.getUsersDataWithEmail(orderData.email).then(res => {
460
- userData = res.response;
461
- userDataLoading = false;
462
386
  gvc.notifyDataChange(mainViewID);
463
387
  });
388
+
464
389
  const child_vm: {
465
390
  type: 'order' | 'user';
466
391
  userID: string;
@@ -511,10 +436,11 @@ export class ShoppingReturnOrderManager {
511
436
  style="color: #8D8D8D;font-size: 16px;font-weight: 400;gap:10px;"
512
437
  >
513
438
  訂單成立時間 :
514
- ${glitter.ut.dateFormat(
515
- new Date(orderData.created_time),
516
- 'yyyy-MM-dd hh:mm'
517
- )}${vt.paymentBadge()}${vt.outShipBadge()}
439
+ ${[
440
+ glitter.ut.dateFormat(new Date(orderData.created_time), 'yyyy-MM-dd hh:mm'),
441
+ this.getPaymentBadge(`${orderData.status}`, 'sm'),
442
+ this.getShipmentBadge(`${orderData.orderData.returnProgress}`, 'sm'),
443
+ ].join('')}
518
444
  </div>
519
445
  </div>
520
446
  </div>`
@@ -543,7 +469,7 @@ export class ShoppingReturnOrderManager {
543
469
  儲存並更改
544
470
  </button>
545
471
  </div>
546
- <div class="d-flex flex-column" style="gap:20px;">
472
+ <div class="d-flex flex-column mt-3" style="gap:20px;">
547
473
  ${BgWidget.mainCard(html`
548
474
  <div class="d-flex flex-column" style="gap:18px;">
549
475
  <div class="d-flex flex-column" style="gap: 12px;">
@@ -567,7 +493,7 @@ export class ShoppingReturnOrderManager {
567
493
  return html`
568
494
  <option
569
495
  value="${data[1]}"
570
- ${orderData.orderData.returnProgress == data[1] ? `selected` : ``}
496
+ ${orderData.orderData.returnProgress == data[1] ? `selected` : ''}
571
497
  >
572
498
  ${data[0]}
573
499
  </option>
@@ -587,23 +513,20 @@ export class ShoppingReturnOrderManager {
587
513
  style="width:100%;display: flex;flex-direction: column;align-items: flex-start;gap: 18px;align-self: stretch;color:#393939;font-size: 16px;font-weight: 400;"
588
514
  >
589
515
  <div style="font-weight: 700;">收件人資訊</div>
590
- ${(() => {
591
- // viewModel.searchData.orderData.customer_info
592
- return [
593
- ['姓名', 'name'],
594
- ['電話', 'phone'],
595
- ['電子信箱', 'email'],
596
- ]
597
- .map(data => {
598
- return drawInputRow(
599
- data[0],
600
- (orderData.orderData.user_info as any)[data[1]],
601
- false,
602
- 'width:100%;'
603
- );
604
- })
605
- .join('');
606
- })()}
516
+ ${[
517
+ ['姓名', 'name'],
518
+ ['電話', 'phone'],
519
+ ['電子信箱', 'email'],
520
+ ]
521
+ .map(data => {
522
+ return drawInputRow(
523
+ data[0],
524
+ (orderData.orderData.user_info as any)[data[1]],
525
+ false,
526
+ 'width:100%;'
527
+ );
528
+ })
529
+ .join('')}
607
530
  </div>
608
531
  `)}
609
532
  ${BgWidget.mainCard(html`
@@ -622,132 +545,114 @@ export class ShoppingReturnOrderManager {
622
545
  <div style="width:50px;text-align: right;">小計</div>
623
546
  </div>
624
547
  </div>
548
+ ${orderData.orderData.lineItems
549
+ .map((data: any, index: number) => {
550
+ return gvc.bindView({
551
+ bind: `lineItem${index}`,
552
+ view: () => {
553
+ gvc.addStyle(`
554
+ input[type='number']::-webkit-outer-spin-button,
555
+ input[type='number']::-webkit-inner-spin-button {
556
+ -webkit-appearance: none;
557
+ margin: 0;
558
+ }
625
559
 
626
- ${(() => {
627
- return orderData.orderData.lineItems
628
- .map((data: any, index: number) => {
629
- return gvc.bindView({
630
- bind: `lineItem${index}`,
631
- view: () => {
632
- gvc.addStyle(`
633
- input[type=number]::-webkit-outer-spin-button,
634
- input[type=number]::-webkit-inner-spin-button {
635
- -webkit-appearance: none;
636
- margin: 0;
637
- }
638
-
639
- /* Firefox */
640
- input[type=number] {
641
- -moz-appearance: textfield;
642
- }
643
- `);
644
- return html` <div style="flex:1 0 0;display: flex;align-items: center;gap: 12px;">
645
- <img style="width: 54px;height: 54px;" src="${data.preview_image}" />
646
- <div class="d-flex justify-content-center flex-column" style="gap: 4px;">
647
- <div style="color:#393939;font-weight: 400;">${data.title}</div>
648
- <div class="d-flex " style="gap:4px;">
649
- ${(() => {
650
- function isBlankString(input: any): boolean {
651
- if (
652
- input === null ||
653
- input === undefined ||
654
- input === '' ||
655
- input.length == 0
656
- ) {
657
- return true;
658
- }
659
- //檢查空白跟tab
660
- return /^\s*$/.test(input);
661
- }
662
-
663
- if (data.spec.length == 0 || isBlankString(data.spec[0])) {
664
- return html`
665
- <div
666
- style="border-radius: 7px;background: #EAEAEA;display: flex;height: 22px;padding: 4px 6px;justify-content: center;align-items: center;gap: 10px;color:#393939;font-weight: 400;"
667
- >
668
- 單一規格
669
- </div>
670
- `;
671
- }
672
- return data.spec
673
- .map((spec: string) => {
674
- data.return_count = data.return_count ?? data.count;
675
- return html` <div
676
- style="border-radius: 7px;background: #EAEAEA;display: flex;height: 22px;padding: 4px 6px;justify-content: center;align-items: center;gap: 10px;color:#393939;font-weight: 400;"
677
- >
678
- ${spec}
679
- </div>`;
680
- })
681
- .join();
682
- })()}
683
- </div>
684
- <div style="color: #8D8D8D;font-size: 14px;font-weight: 400;">
685
- 存貨單位 (SKU): ${data.sku ?? ''}
686
- </div>
560
+ /* Firefox */
561
+ input[type='number'] {
562
+ -moz-appearance: textfield;
563
+ }
564
+ `);
565
+ return html` <div style="flex:1 0 0;display: flex;align-items: center;gap: 12px;">
566
+ <img style="width: 54px;height: 54px;" src="${data.preview_image}" />
567
+ <div class="d-flex justify-content-center flex-column" style="gap: 4px;">
568
+ <div style="color:#393939;font-weight: 400;">${data.title}</div>
569
+ <div class="d-flex" style="gap:4px;">
570
+ ${(() => {
571
+ if (data.spec.length == 0 || isBlankString(data.spec[0])) {
572
+ return html`
573
+ <div
574
+ style="border-radius: 7px;background: #EAEAEA;display: flex;height: 22px;padding: 4px 6px;justify-content: center;align-items: center;gap: 10px;color:#393939;font-weight: 400;"
575
+ >
576
+ 單一規格
577
+ </div>
578
+ `;
579
+ }
580
+ return data.spec
581
+ .map((spec: string) => {
582
+ data.return_count = data.return_count ?? data.count;
583
+ return html` <div
584
+ style="border-radius: 7px;background: #EAEAEA;display: flex;height: 22px;padding: 4px 6px;justify-content: center;align-items: center;gap: 10px;color:#393939;font-weight: 400;"
585
+ >
586
+ ${spec}
587
+ </div>`;
588
+ })
589
+ .join();
590
+ })()}
591
+ </div>
592
+ <div style="color: #8D8D8D;font-size: 14px;font-weight: 400;">
593
+ 存貨單位 (SKU): ${data.sku ?? ''}
687
594
  </div>
688
595
  </div>
689
- <div
690
- style="width:13%;margin-right: 20px;"
691
- class="d-flex align-items-center justify-content-center"
692
- >
693
- ${(() => {
694
- let options: {
695
- value: string;
696
- text: string;
697
- }[] = [
698
- {
699
- value: 'not_as_described',
700
- text: '商品不符合',
701
- },
702
- {
703
- value: 'damaged_in_shipping',
704
- text: '運送中毀損',
705
- },
706
- {
707
- value: 'not_as_described',
708
- text: '商品有瑕疵',
709
- },
710
- {
711
- value: 'not_as_described',
712
- text: '訂單有誤',
713
- },
714
- ];
596
+ </div>
597
+ <div
598
+ style="width:13%;margin-right: 20px;"
599
+ class="d-flex align-items-center justify-content-center"
600
+ >
601
+ ${(() => {
602
+ let options: {
603
+ value: string;
604
+ text: string;
605
+ }[] = [
606
+ {
607
+ value: 'not_as_described',
608
+ text: '商品不符合',
609
+ },
610
+ {
611
+ value: 'damaged_in_shipping',
612
+ text: '運送中毀損',
613
+ },
614
+ {
615
+ value: 'not_as_described',
616
+ text: '商品有瑕疵',
617
+ },
618
+ {
619
+ value: 'not_as_described',
620
+ text: '訂單有誤',
621
+ },
622
+ ];
715
623
 
716
- return html`
717
- <div style="font-size: 16px;font-weight: 400;">
718
- ${options.filter(data2 => data2.value == data.return_reason)[0].text}
719
- </div>
720
- `;
721
- })()}
722
- </div>
723
- <div style="width:5%;">${data.sale_price}</div>
724
- <div style="width:10%;" class="d-flex align-items-center justify-content-center">
725
- <div style="font-size: 16px;font-weight: 400;">${data.return_count}</div>
726
- </div>
727
- <div style="width:10%;" class="d-flex align-items-center justify-content-center">
728
- <input
729
- type="number"
730
- style="text-align: center;width:94px;border-radius: 10px;border: 1px solid #DDD;display: flex;padding: 9px 18px;"
731
- value="${data.return_stock ?? 0}"
732
- max="${data.return_count}"
733
- min="0"
734
- onchange="${gvc.event(e => {
735
- data.return_stock = e.value;
736
- gvc.notifyDataChange(`lineItem${index}`);
737
- })}"
738
- />
739
- </div>
740
- <div style="width:50px;text-align: right;">
741
- ${data.return_count * data.sale_price}
742
- </div>`;
743
- },
744
- divCreate: {
745
- style: `display: flex;padding: 0px 4px 12px 0px;align-items: center;gap: 18px;background: #FFF;width: 100%;padding-right:12px;`,
746
- },
747
- });
748
- })
749
- .join('');
750
- })()}
624
+ return html`
625
+ <div style="font-size: 16px;font-weight: 400;">
626
+ ${options.filter(data2 => data2.value == data.return_reason)[0].text}
627
+ </div>
628
+ `;
629
+ })()}
630
+ </div>
631
+ <div style="width:5%;">${data.sale_price}</div>
632
+ <div style="width:10%;" class="d-flex align-items-center justify-content-center">
633
+ <div style="font-size: 16px;font-weight: 400;">${data.return_count}</div>
634
+ </div>
635
+ <div style="width:10%;" class="d-flex align-items-center justify-content-center">
636
+ <input
637
+ type="number"
638
+ style="text-align: center;width:94px;border-radius: 10px;border: 1px solid #DDD;display: flex;padding: 9px 18px;"
639
+ value="${data.return_stock ?? 0}"
640
+ max="${data.return_count}"
641
+ min="0"
642
+ onchange="${gvc.event(e => {
643
+ data.return_stock = e.value;
644
+ gvc.notifyDataChange(`lineItem${index}`);
645
+ })}"
646
+ />
647
+ </div>
648
+ <div style="width:50px;text-align: right;">${data.return_count * data.sale_price}</div>`;
649
+ },
650
+ divCreate: {
651
+ style: `display: flex;padding: 0px 4px 12px 0px;align-items: center;gap: 18px;background: #FFF;width: 100%;padding-right:12px;`,
652
+ },
653
+ });
654
+ })
655
+ .join('')}
751
656
  <div style="width: 100%;height: 1px;background-color: #DDD;margin-bottom:18px;"></div>
752
657
  ${gvc.bindView({
753
658
  bind: `checkout`,
@@ -791,7 +696,7 @@ export class ShoppingReturnOrderManager {
791
696
  <div>商品名稱</div>
792
697
  <div class="ms-auto d-flex">
793
698
  <div class="d-flex align-items-center justify-content-center" style="width: 60px;">
794
- 運費
699
+ ${type}
795
700
  </div>
796
701
  </div>
797
702
  </div>
@@ -810,23 +715,10 @@ export class ShoppingReturnOrderManager {
810
715
  >
811
716
  ${data.title}
812
717
  </div>
813
- <div class="d-flex " style="gap:4px;">
718
+ <div class="d-flex" style="gap:4px;">
814
719
  ${(() => {
815
720
  data.return_count = data.return_count ?? data.count;
816
721
 
817
- function isBlankString(input: any): boolean {
818
- if (
819
- input === null ||
820
- input === undefined ||
821
- input === '' ||
822
- input.length == 0
823
- ) {
824
- return true;
825
- }
826
- //檢查空白跟tab
827
- return /^\s*$/.test(input);
828
- }
829
-
830
722
  if (data.spec.length == 0 || isBlankString(data.spec[0])) {
831
723
  return html`
832
724
  <div
@@ -863,7 +755,7 @@ export class ShoppingReturnOrderManager {
863
755
  class="d-flex align-items-center justify-content-center"
864
756
  style="width: 60px;"
865
757
  >
866
- ${data[dict[type]]}
758
+ ${data[dict[type]] || 0}
867
759
  </div>
868
760
  </div>
869
761
  </div>
@@ -882,9 +774,6 @@ export class ShoppingReturnOrderManager {
882
774
  orderData.orderData.return_rebate = orderData.orderData.return_rebate ?? '0';
883
775
  orderData.orderData.return_discount = orderData.orderData.return_discount ?? '0';
884
776
 
885
- let returnTotal = (((subTotal + orderData.orderData.return_rebate) as number) +
886
- orderData.orderData.return_discount) as number;
887
-
888
777
  return html`
889
778
  ${(() => {
890
779
  return [
@@ -896,7 +785,9 @@ export class ShoppingReturnOrderManager {
896
785
  return html`
897
786
  <div class="d-flex" style="gap: 24px;">
898
787
  <div style="font-size: 16px;font-weight: 400;">${data[0]}</div>
899
- <div style="width:158px;text-align: right;">${data[1]}</div>
788
+ <div style="width:158px;text-align: right;">
789
+ $ ${Number(data[1]).toLocaleString()}
790
+ </div>
900
791
  </div>
901
792
  `;
902
793
  })
@@ -921,7 +812,7 @@ export class ShoppingReturnOrderManager {
921
812
  <div style="text-align: right;">${item[0]}</div>
922
813
  </div>
923
814
 
924
- <div class="d-flex " style="width: 112px;height: 100%">
815
+ <div class="d-flex" style="width: 112px;height: 100%">
925
816
  <div
926
817
  style="text-align: right;width: 112px;color: #4D86DB;text-decoration-line: underline;cursor: pointer"
927
818
  onclick="${gvc.event(() => {
@@ -938,7 +829,9 @@ export class ShoppingReturnOrderManager {
938
829
  })()}
939
830
  <div class="d-flex" style="gap: 24px;color:#393939;font-size: 16px;font-weight: 700;">
940
831
  <div>退款總金額</div>
941
- <div style="width:158px;text-align: right;">${orderData.orderData.return_inf.subTotal}</div>
832
+ <div style="width:158px;text-align: right;">
833
+ $ ${Number(orderData.orderData.return_inf.subTotal).toLocaleString()}
834
+ </div>
942
835
  </div>
943
836
  `;
944
837
  },
@@ -948,20 +841,19 @@ export class ShoppingReturnOrderManager {
948
841
  })}
949
842
  `)}
950
843
  ${BgWidget.mainCard(html`
951
- <div class="d-flex flex-column"
952
- style="color: #393939;font-size: 16px;font-weight: 400;gap: 8px;">
953
- <div style="font-weight: 700;">退貨備註</div>
954
- <textarea
955
- style="height: 102px;border-radius: 10px;border: 1px solid #DDD;padding: 15px;"
956
- ">${orderData.orderData?.return_order_remark ?? ''}</textarea>
957
- </div>
958
- `)} ${BgWidget.mainCard(html`
844
+ <div class="d-flex flex-column" style="color: #393939;font-size: 16px;font-weight: 400;gap: 8px;">
845
+ <div style="font-weight: 700;">退貨備註</div>
846
+ <textarea style="height: 102px;border-radius: 10px;border: 1px solid #DDD;padding: 15px;">
847
+ ${orderData.orderData?.return_order_remark ?? ''}</textarea
848
+ >
849
+ </div>
850
+ `)}
851
+ ${BgWidget.mainCard(html`
959
852
  <div
960
853
  style="width:100%;display: flex;flex-direction: column;align-items: flex-start;gap: 18px;align-self: stretch;color:#393939;font-size: 16px;font-weight: 400;"
961
854
  >
962
855
  <div style="font-weight: 700;">訂購人資訊</div>
963
856
  ${(() => {
964
- // viewModel.searchData.orderData.customer_info
965
857
  return [
966
858
  ['姓名', 'name'],
967
859
  ['電話', 'phone'],
@@ -1063,20 +955,19 @@ export class ShoppingReturnOrderManager {
1063
955
  },
1064
956
  divCreate: {
1065
957
  class: `d-flex flex-column`,
1066
- style: `color: #393939;font-size: 16px;font-weight: 700;gap: 18px;margin-bottom:18px;`,
958
+ style: `color: #393939;font-size: 16px;font-weight: 700;gap: 12px; `,
1067
959
  },
1068
960
  })}
1069
-
1070
- <div style="margin-top: 12px;">退款銀行帳號</div>
961
+ <div class="tx_700">退款銀行帳號</div>
1071
962
  ${gvc.bindView({
1072
963
  bind: 'return_Info',
1073
964
  view: () => {
1074
965
  let dateArray: string[][] = [
1075
- ['銀行代碼:', 'bankCode'],
1076
- ['銀行名稱:', 'bankName'],
1077
- ['銀行分行:', 'bankBranch'],
1078
- ['銀行戶名:', 'bankAccountName'],
1079
- ['銀行帳號:', 'bankAccountNumber'],
966
+ ['銀行代碼', 'bankCode'],
967
+ ['銀行名稱', 'bankName'],
968
+ ['銀行分行', 'bankBranch'],
969
+ ['銀行戶名', 'bankAccountName'],
970
+ ['銀行帳號', 'bankAccountNumber'],
1080
971
  ];
1081
972
 
1082
973
  orderData.orderData.bank_info = orderData.orderData.bank_info ?? {
@@ -1093,7 +984,6 @@ export class ShoppingReturnOrderManager {
1093
984
  <div class="d-flex flex-column" style="gap:8px;width: calc(50% - 10px);">
1094
985
  <div style="text-align: left;">${data[0]}</div>
1095
986
  <input
1096
- class=" "
1097
987
  value="${orderData.orderData.bank_info[data[1]]}"
1098
988
  style="display: flex;height: 44px;padding: 11px 12px;align-items: center;gap: 21px;border-radius: 10px;border: 1px solid #DDD;"
1099
989
  placeholder=""
@@ -1155,14 +1045,14 @@ export class ShoppingReturnOrderManager {
1155
1045
  `);
1156
1046
  } catch (e) {
1157
1047
  console.error(e);
1158
- return ``;
1048
+ return '';
1159
1049
  }
1160
1050
  },
1161
- divCreate: {},
1162
1051
  });
1163
1052
  }
1164
1053
 
1165
- public static searchOrder(gvc: GVC, vm: any) {
1054
+ static searchOrder(gvc: GVC, vm: any) {
1055
+ const dialog = new ShareDialog(gvc.glitter);
1166
1056
  let viewModel: any = {
1167
1057
  searchOrder: '',
1168
1058
  searchData: '',
@@ -1170,11 +1060,8 @@ export class ShoppingReturnOrderManager {
1170
1060
  };
1171
1061
  let checkList: any[] = [];
1172
1062
  let rebate = 0;
1173
- let rebateOverflow = false;
1174
- let rebateLoading = false;
1175
1063
  let detailShow = false;
1176
1064
  let detail2Show = false;
1177
- const dialog = new ShareDialog(gvc.glitter);
1178
1065
 
1179
1066
  return BgWidget.container(html`
1180
1067
  <div class="title-container">
@@ -1188,7 +1075,7 @@ export class ShoppingReturnOrderManager {
1188
1075
  <div style="margin-top: 24px;"></div>
1189
1076
  ${BgWidget.mainCard(html`
1190
1077
  <div
1191
- style="display: flex;padding: 20px;flex-direction: column;align-items: flex-start;gap: 12px;align-self: stretch;"
1078
+ style="display: flex;padding: 4px;flex-direction: column;align-items: flex-start;gap: 12px;align-self: stretch;"
1192
1079
  >
1193
1080
  <div style="font-size: 16px;font-weight: 700;">訂單編號*</div>
1194
1081
  <input
@@ -1199,9 +1086,9 @@ export class ShoppingReturnOrderManager {
1199
1086
  viewModel.searchOrder = e.value;
1200
1087
  })}"
1201
1088
  />
1202
- <div
1203
- style="display: flex;padding: 6px 18px;justify-content: center;align-items: center;gap: 8px;border-radius: 10px;background: #EAEAEA;font-weight: 700;cursor: pointer;"
1204
- onclick="${gvc.event(() => {
1089
+ ${BgWidget.grayButton(
1090
+ '查詢訂單',
1091
+ gvc.event(() => {
1205
1092
  if (viewModel.searchOrder == '') {
1206
1093
  return;
1207
1094
  }
@@ -1210,25 +1097,21 @@ export class ShoppingReturnOrderManager {
1210
1097
  limit: 100,
1211
1098
  search: viewModel.searchOrder,
1212
1099
  searchType: 'cart_token',
1213
- archived: `false`,
1100
+ archived: 'false',
1214
1101
  returnSearch: 'true',
1215
- }).then((response: any) => {
1216
- if (response.response.length == 0) {
1102
+ }).then(r => {
1103
+ if (!r.result) {
1217
1104
  viewModel.errorReport = '查無此訂單';
1218
- }
1219
- if (response.response.orderData.lineItems.length > 0) {
1220
- viewModel.searchData = response.response;
1105
+ } else if (r.response.orderData.lineItems.length > 0) {
1106
+ viewModel.searchData = r.response;
1221
1107
  } else {
1222
1108
  viewModel.errorReport = '此訂單已無商品可退貨';
1223
1109
  }
1224
1110
 
1225
1111
  gvc.notifyDataChange(['notFind', 'orderDetail']);
1226
1112
  });
1227
- })}"
1228
- >
1229
- 查詢訂單
1230
- </div>
1231
-
1113
+ })
1114
+ )}
1232
1115
  ${gvc.bindView({
1233
1116
  bind: 'notFind',
1234
1117
  view: () => {
@@ -1241,7 +1124,7 @@ export class ShoppingReturnOrderManager {
1241
1124
  </div>
1242
1125
  `;
1243
1126
  }
1244
- return ``;
1127
+ return '';
1245
1128
  },
1246
1129
  divCreate: { style: `width:100%` },
1247
1130
  })}
@@ -1255,11 +1138,12 @@ export class ShoppingReturnOrderManager {
1255
1138
  let orderData = viewModel.searchData.orderData;
1256
1139
  let lineItems = orderData.lineItems;
1257
1140
  let origShipment = orderData.shipment_fee;
1141
+
1258
1142
  ApiUser.getUserRebate({ email: orderData.customer_info.email }).then(r => {
1259
1143
  rebate = r.response.data.point;
1260
- rebateLoading = true;
1261
1144
  gvc.notifyDataChange(['inputRebate', 'inputReturn']);
1262
1145
  });
1146
+
1263
1147
  return html`
1264
1148
  <div style="display: flex;flex-direction: column;gap: 24px">
1265
1149
  ${BgWidget.mainCard(html`
@@ -1361,23 +1245,10 @@ export class ShoppingReturnOrderManager {
1361
1245
  <img style="width: 54px;height: 54px;" src="${data.preview_image}" />
1362
1246
  <div class="d-flex justify-content-center flex-column" style="gap: 4px;">
1363
1247
  <div style="color:#393939;font-weight: 400;">${data.title}</div>
1364
- <div class="d-flex " style="gap:4px;">
1248
+ <div class="d-flex" style="gap:4px;">
1365
1249
  ${(() => {
1366
1250
  data.return_count = data.return_count ?? data.count;
1367
1251
 
1368
- function isBlankString(input: any): boolean {
1369
- if (
1370
- input === null ||
1371
- input === undefined ||
1372
- input === '' ||
1373
- input.length == 0
1374
- ) {
1375
- return true;
1376
- }
1377
- //檢查空白跟tab
1378
- return /^\s*$/.test(input);
1379
- }
1380
-
1381
1252
  if (data.spec.length == 0 || isBlankString(data.spec[0])) {
1382
1253
  return html`
1383
1254
  <div
@@ -1410,7 +1281,7 @@ export class ShoppingReturnOrderManager {
1410
1281
  <select
1411
1282
  class="form-select"
1412
1283
  style="width:80%;padding: 9px 18px;border-radius: 10px;border: 1px solid #DDD;"
1413
- ${data.select ? `` : `disabled`}
1284
+ ${data.select ? '' : `disabled`}
1414
1285
  onchange="${gvc.event(e => {
1415
1286
  data.return_reason = e.value;
1416
1287
  gvc.notifyDataChange([`lineItem${index}`, 'checkout']);
@@ -1455,12 +1326,12 @@ export class ShoppingReturnOrderManager {
1455
1326
  <input
1456
1327
  type="number"
1457
1328
  style="text-align: center;width:94px;border-radius: 10px;border: 1px solid #DDD;display: flex;padding: 9px 18px;${data.select
1458
- ? ``
1329
+ ? ''
1459
1330
  : `text-decoration-line: strikethrough;`}"
1460
1331
  value="${data.return_count ?? data.count}"
1461
1332
  min="0"
1462
1333
  max="${data.count}"
1463
- ${data.select ? `` : `disabled`}
1334
+ ${data.select ? '' : `disabled`}
1464
1335
  onchange="${gvc.event(e => {
1465
1336
  e.value = e.value > data.count ? data.count : e.value;
1466
1337
  e.value = e.value < 0 ? 0 : e.value;
@@ -1473,12 +1344,12 @@ export class ShoppingReturnOrderManager {
1473
1344
  <input
1474
1345
  type="number"
1475
1346
  style="text-align: center;width:94px;border-radius: 10px;border: 1px solid #DDD;display: flex;padding: 9px 18px;${data.select
1476
- ? ``
1347
+ ? ''
1477
1348
  : `text-decoration-line: strikethrough;`}"
1478
1349
  value="${data.return_stock ?? 0}"
1479
1350
  max=${data.return_count}
1480
1351
  min="0"
1481
- ${data.select ? `` : `disabled`}
1352
+ ${data.select ? '' : `disabled`}
1482
1353
  onchange="${gvc.event(e => {
1483
1354
  e.value = e.value > data.return_count ? e.value : data.return_count;
1484
1355
  e.value = e.value < 0 ? 0 : e.value;
@@ -1581,23 +1452,10 @@ export class ShoppingReturnOrderManager {
1581
1452
  >
1582
1453
  ${data.title}
1583
1454
  </div>
1584
- <div class="d-flex " style="gap:4px;">
1455
+ <div class="d-flex" style="gap:4px;">
1585
1456
  ${(() => {
1586
1457
  data.return_count = data.return_count ?? data.count;
1587
1458
 
1588
- function isBlankString(input: any): boolean {
1589
- if (
1590
- input === null ||
1591
- input === undefined ||
1592
- input === '' ||
1593
- input.length == 0
1594
- ) {
1595
- return true;
1596
- }
1597
- //檢查空白跟tab
1598
- return /^\s*$/.test(input);
1599
- }
1600
-
1601
1459
  if (data.spec.length == 0 || isBlankString(data.spec[0])) {
1602
1460
  return html`
1603
1461
  <div
@@ -1658,7 +1516,9 @@ export class ShoppingReturnOrderManager {
1658
1516
  return html`
1659
1517
  <div class="d-flex" style="gap: 24px;">
1660
1518
  <div style="font-size: 16px;font-weight: 400;">${data[0]}</div>
1661
- <div style="width:158px;text-align: right;">${data[1]}</div>
1519
+ <div style="width:158px;text-align: right;">
1520
+ $ ${Number(data[1]).toLocaleString()}
1521
+ </div>
1662
1522
  </div>
1663
1523
  `;
1664
1524
  })
@@ -1683,7 +1543,7 @@ export class ShoppingReturnOrderManager {
1683
1543
  <div style="text-align: right;">${item[0]}</div>
1684
1544
  </div>
1685
1545
 
1686
- <div class="d-flex " style="width: 112px;height: 100%">
1546
+ <div class="d-flex" style="width: 112px;height: 100%">
1687
1547
  <div
1688
1548
  style="text-align: right;width: 112px;color: #4D86DB;text-decoration-line: underline;cursor: pointer"
1689
1549
  onclick="${gvc.event(() => {
@@ -1700,7 +1560,9 @@ export class ShoppingReturnOrderManager {
1700
1560
  })()}
1701
1561
  <div class="d-flex" style="gap: 24px;color:#393939;font-size: 16px;font-weight: 700;">
1702
1562
  <div>退款總金額</div>
1703
- <div style="width:158px;text-align: right;">${orderData.return_inf.subTotal}</div>
1563
+ <div style="width:158px;text-align: right;">
1564
+ $ ${Number(orderData.return_inf.subTotal).toLocaleString()}
1565
+ </div>
1704
1566
  </div>
1705
1567
  `;
1706
1568
  },
@@ -1746,7 +1608,6 @@ export class ShoppingReturnOrderManager {
1746
1608
  orderData.rebateChange = rebateDiff;
1747
1609
  if (rebate + rebateDiff < 0) {
1748
1610
  orderData.rebateChange = -rebate;
1749
- rebateOverflow = true;
1750
1611
  }
1751
1612
  return html`
1752
1613
  <div style="font-weight: 700;margin-bottom: 12px;">持有購物金</div>
@@ -1767,7 +1628,7 @@ export class ShoppingReturnOrderManager {
1767
1628
  bind: 'rebateHint',
1768
1629
  view: () => {
1769
1630
  if (rebate + rebateDiff >= 0) {
1770
- return ``;
1631
+ return '';
1771
1632
  }
1772
1633
 
1773
1634
  return html` <div class="d-flex align-items-center" style="margin-top: 8px;">
@@ -1798,7 +1659,7 @@ export class ShoppingReturnOrderManager {
1798
1659
  bind: 'rebateHintDetail',
1799
1660
  view: () => {
1800
1661
  if (!detailShow) {
1801
- return ``;
1662
+ return '';
1802
1663
  }
1803
1664
  return html`
1804
1665
  <div
@@ -1835,14 +1696,13 @@ export class ShoppingReturnOrderManager {
1835
1696
  color: #fff;
1836
1697
  font-size: 16px;
1837
1698
  font-weight: 400;
1838
- ${!detailShow ? `display:none;` : ``}
1699
+ ${!detailShow ? `display:none;` : ''}
1839
1700
  `,
1840
1701
  },
1841
1702
  })}
1842
1703
  </div>
1843
1704
  </div>`;
1844
1705
  },
1845
- divCreate: {},
1846
1706
  })}
1847
1707
  `;
1848
1708
  },
@@ -1993,12 +1853,19 @@ ${orderData?.return_order_remark ?? ''}</textarea
1993
1853
  </div>
1994
1854
  `;
1995
1855
  }
1996
- return ``;
1856
+ return '';
1997
1857
  },
1998
- divCreate: {},
1999
1858
  })}
2000
1859
  `);
2001
1860
  }
2002
1861
  }
2003
1862
 
1863
+ // 檢查空白跟tab
1864
+ function isBlankString(input: any): boolean {
1865
+ if (input === null || input === undefined || input === '' || input.length == 0) {
1866
+ return true;
1867
+ }
1868
+ return /^\s*$/.test(input);
1869
+ }
1870
+
2004
1871
  (window as any).glitter.setModule(import.meta.url, ShoppingReturnOrderManager);