ts-glitter 21.9.0 → 21.9.2

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.
@@ -47,6 +47,7 @@ export class OrderSetting {
47
47
  { title: '部分付款', value: '3' },
48
48
  { title: '待核款 / 貨到付款 / 未付款', value: '0' },
49
49
  { title: '已退款', value: '-2' },
50
+ { title: '付款失敗', value: '-1' },
50
51
  ].map(item => {
51
52
  return {
52
53
  key: item.value,
@@ -1132,6 +1133,43 @@ export class OrderSetting {
1132
1133
  });
1133
1134
  }, 'combineOrders');
1134
1135
  }
1136
+ static allEditDialog(data) {
1137
+ const gvc = data.gvc;
1138
+ const dialog = new ShareDialog(gvc.glitter);
1139
+ const defaultValue = '';
1140
+ let temp = '';
1141
+ BgWidget.settingDialog({
1142
+ gvc: gvc,
1143
+ title: data.title,
1144
+ innerHTML: (innerGVC) => {
1145
+ return html ` <div>
1146
+ <div class="tx_700 mb-2">更改為</div>
1147
+ ${BgWidget.select({
1148
+ gvc: innerGVC,
1149
+ callback: (value) => {
1150
+ temp = value;
1151
+ },
1152
+ default: defaultValue,
1153
+ options: [{ key: '', value: '請選擇狀態' }, ...data.options],
1154
+ })}
1155
+ </div>`;
1156
+ },
1157
+ footer_html: (footerGVC) => {
1158
+ return [
1159
+ BgWidget.cancel(footerGVC.event(() => footerGVC.closeDialog()), '取消'),
1160
+ BgWidget.save(footerGVC.event(() => {
1161
+ if (temp === defaultValue) {
1162
+ dialog.infoMessage({ text: '請選擇欲更改的選項' });
1163
+ return;
1164
+ }
1165
+ footerGVC.closeDialog();
1166
+ data.callback(temp);
1167
+ }), '儲存'),
1168
+ ].join('');
1169
+ },
1170
+ width: 350,
1171
+ });
1172
+ }
1135
1173
  static batchEditOrders(obj) {
1136
1174
  const wp = window.parent;
1137
1175
  const topGVC = wp.glitter.pageConfig[wp.glitter.pageConfig.length - 1].gvc;
@@ -1241,8 +1279,23 @@ export class OrderSetting {
1241
1279
  dd.status = value;
1242
1280
  },
1243
1281
  default: `${dd.status || 0}`,
1244
- options: OrderSetting.getPaymentStatusOpt(),
1245
- style: 'min-width: 220px;',
1282
+ options: (() => {
1283
+ const paymentOptions = OrderSetting.getPaymentStatusOpt();
1284
+ const unpayOption = paymentOptions.find(item => item.key === '0');
1285
+ if (unpayOption) {
1286
+ if (dd.orderData.proof_purchase) {
1287
+ unpayOption.value = '待核款';
1288
+ }
1289
+ else if (dd.orderData.customer_info.payment_select == 'cash_on_delivery') {
1290
+ unpayOption.value = '貨到付款';
1291
+ }
1292
+ else {
1293
+ unpayOption.value = '未付款';
1294
+ }
1295
+ }
1296
+ return paymentOptions;
1297
+ })(),
1298
+ style: 'min-width: 150px;',
1246
1299
  }),
1247
1300
  },
1248
1301
  {
@@ -1319,7 +1372,7 @@ export class OrderSetting {
1319
1372
  return html ` <div class="d-flex align-items-center gap-2">${htmlArray.join('')}</div>`;
1320
1373
  },
1321
1374
  divCreate: {
1322
- style: 'min-width: 580px;',
1375
+ style: 'min-width: 620px;',
1323
1376
  },
1324
1377
  };
1325
1378
  })()),
@@ -1327,42 +1380,6 @@ export class OrderSetting {
1327
1380
  ];
1328
1381
  });
1329
1382
  }
1330
- function allEditDialog(data) {
1331
- const defaultValue = '';
1332
- let temp = '';
1333
- BgWidget.settingDialog({
1334
- gvc: gvc,
1335
- title: data.title,
1336
- innerHTML: (innerGVC) => {
1337
- return html ` <div>
1338
- <div class="tx_700 mb-2">更改為</div>
1339
- ${BgWidget.select({
1340
- gvc: innerGVC,
1341
- callback: (value) => {
1342
- temp = value;
1343
- },
1344
- default: defaultValue,
1345
- options: [{ key: '', value: '請選擇狀態' }, ...data.options],
1346
- })}
1347
- </div>`;
1348
- },
1349
- footer_html: (footerGVC) => {
1350
- return [
1351
- BgWidget.cancel(footerGVC.event(() => footerGVC.closeDialog()), '取消'),
1352
- BgWidget.save(footerGVC.event(() => {
1353
- if (temp === defaultValue) {
1354
- dialog.infoMessage({ text: '請選擇欲更改的選項' });
1355
- return;
1356
- }
1357
- footerGVC.closeDialog();
1358
- data.callback(temp);
1359
- gvc.notifyDataChange(vm.id);
1360
- }), '儲存'),
1361
- ].join('');
1362
- },
1363
- width: 350,
1364
- });
1365
- }
1366
1383
  function editOrderView() {
1367
1384
  return BgWidget.tableV3({
1368
1385
  gvc,
@@ -1370,13 +1387,15 @@ export class OrderSetting {
1370
1387
  {
1371
1388
  name: '更改付款狀態',
1372
1389
  event: (checkArray) => {
1373
- allEditDialog({
1390
+ OrderSetting.allEditDialog({
1391
+ gvc,
1374
1392
  title: '批量更改付款狀態',
1375
1393
  options: OrderSetting.getPaymentStatusOpt(),
1376
1394
  callback: (value) => {
1377
1395
  checkArray.forEach((order) => {
1378
1396
  order.status = Number(value);
1379
1397
  });
1398
+ gvc.notifyDataChange(vm.id);
1380
1399
  },
1381
1400
  });
1382
1401
  },
@@ -1384,7 +1403,8 @@ export class OrderSetting {
1384
1403
  {
1385
1404
  name: '更改出貨狀態',
1386
1405
  event: (checkArray) => {
1387
- allEditDialog({
1406
+ OrderSetting.allEditDialog({
1407
+ gvc,
1388
1408
  title: '批量更改出貨狀態',
1389
1409
  options: OrderSetting.getShippmentOpt(),
1390
1410
  callback: (value) => {
@@ -1394,6 +1414,7 @@ export class OrderSetting {
1394
1414
  order.orderData.user_info.shipment_number = '';
1395
1415
  }
1396
1416
  });
1417
+ gvc.notifyDataChange(vm.id);
1397
1418
  },
1398
1419
  });
1399
1420
  },
@@ -1401,13 +1422,15 @@ export class OrderSetting {
1401
1422
  {
1402
1423
  name: '更改訂單狀態',
1403
1424
  event: (checkArray) => {
1404
- allEditDialog({
1425
+ OrderSetting.allEditDialog({
1426
+ gvc,
1405
1427
  title: '批量更改訂單狀態',
1406
1428
  options: OrderSetting.getOrderStatusOpt(),
1407
1429
  callback: (value) => {
1408
1430
  checkArray.forEach((order) => {
1409
1431
  order.orderData.orderStatus = value;
1410
1432
  });
1433
+ gvc.notifyDataChange(vm.id);
1411
1434
  },
1412
1435
  });
1413
1436
  },
@@ -1467,25 +1490,11 @@ export class OrderSetting {
1467
1490
  <div class="w-100 d-flex justify-content-end" style="padding: 14px 16px; gap: 14px;">
1468
1491
  ${BgWidget.cancel(gvc.event(() => closeEvent()))}
1469
1492
  ${BgWidget.save(gvc.event(() => {
1470
- for (let i = 0; i < vm.orders.length; i++) {
1471
- const order = vm.orders[i];
1472
- const cloneOrder = cloneOrders[i];
1473
- if (['wait', 'returns', undefined].includes(cloneOrder.orderData.progress) &&
1474
- ['arrived', 'finish', 'shipping', 'in_stock'].includes(order.orderData.progress) &&
1475
- !order.orderData.user_info.shipment_number) {
1476
- dialog.errorMessage({
1477
- text: `訂單編號 #${order.cart_token} 未輸入出貨單號碼`,
1478
- });
1479
- return;
1480
- }
1493
+ const verify = this.batchUpdateOrderVerify(gvc, cloneOrders, vm.orders);
1494
+ if (verify) {
1495
+ obj.callback(vm.orders);
1496
+ topGVC.glitter.closeDiaLog();
1481
1497
  }
1482
- vm.orders.forEach((order) => {
1483
- if (order.orderData.progress === 'in_stock') {
1484
- order.orderData.progress = 'wait';
1485
- }
1486
- });
1487
- obj.callback(vm.orders);
1488
- topGVC.glitter.closeDiaLog();
1489
1498
  }))}
1490
1499
  </div>
1491
1500
  </div>
@@ -1494,6 +1503,27 @@ export class OrderSetting {
1494
1503
  });
1495
1504
  }, 'batchEditOrders');
1496
1505
  }
1506
+ static batchUpdateOrderVerify(gvc, cloneOrders, updateOrders) {
1507
+ const dialog = new ShareDialog(gvc.glitter);
1508
+ for (let i = 0; i < updateOrders.length; i++) {
1509
+ const order = updateOrders[i];
1510
+ const cloneOrder = cloneOrders[i];
1511
+ if (['wait', 'returns', undefined].includes(cloneOrder.orderData.progress) &&
1512
+ ['arrived', 'finish', 'shipping', 'in_stock'].includes(order.orderData.progress) &&
1513
+ !order.orderData.user_info.shipment_number) {
1514
+ dialog.errorMessage({
1515
+ text: `訂單編號 #${order.cart_token} 未輸入出貨單號碼`,
1516
+ });
1517
+ return false;
1518
+ }
1519
+ }
1520
+ updateOrders.forEach((order) => {
1521
+ if (order.orderData.progress === 'in_stock') {
1522
+ order.orderData.progress = 'wait';
1523
+ }
1524
+ });
1525
+ return true;
1526
+ }
1497
1527
  static splitOrder(topGVC, origOrderData, callback) {
1498
1528
  var _a, _b;
1499
1529
  const orderData = structuredClone(origOrderData);
@@ -4,7 +4,7 @@ import { ApiUser } from '../../glitter-base/route/user.js';
4
4
  import { ApiShop } from '../../glitter-base/route/shopping.js';
5
5
  import { ShareDialog } from '../../glitterBundle/dialog/ShareDialog.js';
6
6
  import { Tool } from '../../modules/tool.js';
7
- import { CartData, LineItem, OrderData, OrderDetail } from './data.js';
7
+ import { OrderDetail } from './data.js';
8
8
  import { EditorElem } from '../../glitterBundle/plugins/editor-elem.js';
9
9
  import { ShipmentConfig } from '../../glitter-base/global/shipment-config.js';
10
10
  import { PaymentConfig } from '../../glitter-base/global/payment-config.js';
@@ -83,6 +83,7 @@ export class OrderSetting {
83
83
  { title: '部分付款', value: '3' },
84
84
  { title: '待核款 / 貨到付款 / 未付款', value: '0' },
85
85
  { title: '已退款', value: '-2' },
86
+ { title: '付款失敗', value: '-1' },
86
87
  ].map(item => {
87
88
  return {
88
89
  key: item.value,
@@ -1300,6 +1301,51 @@ export class OrderSetting {
1300
1301
  }, 'combineOrders');
1301
1302
  }
1302
1303
 
1304
+ static allEditDialog(data: { gvc: GVC; title: string; options: OptionsItem[]; callback: (value: any) => void }) {
1305
+ const gvc = data.gvc;
1306
+ const dialog = new ShareDialog(gvc.glitter);
1307
+ const defaultValue = '';
1308
+ let temp = '';
1309
+
1310
+ BgWidget.settingDialog({
1311
+ gvc: gvc,
1312
+ title: data.title,
1313
+ innerHTML: (innerGVC: GVC) => {
1314
+ return html` <div>
1315
+ <div class="tx_700 mb-2">更改為</div>
1316
+ ${BgWidget.select({
1317
+ gvc: innerGVC,
1318
+ callback: (value: any) => {
1319
+ temp = value;
1320
+ },
1321
+ default: defaultValue,
1322
+ options: [{ key: '', value: '請選擇狀態' }, ...data.options],
1323
+ })}
1324
+ </div>`;
1325
+ },
1326
+ footer_html: (footerGVC: GVC) => {
1327
+ return [
1328
+ BgWidget.cancel(
1329
+ footerGVC.event(() => footerGVC.closeDialog()),
1330
+ '取消'
1331
+ ),
1332
+ BgWidget.save(
1333
+ footerGVC.event(() => {
1334
+ if (temp === defaultValue) {
1335
+ dialog.infoMessage({ text: '請選擇欲更改的選項' });
1336
+ return;
1337
+ }
1338
+ footerGVC.closeDialog();
1339
+ data.callback(temp);
1340
+ }),
1341
+ '儲存'
1342
+ ),
1343
+ ].join('');
1344
+ },
1345
+ width: 350,
1346
+ });
1347
+ }
1348
+
1303
1349
  // 大量編輯
1304
1350
  static batchEditOrders(obj: { gvc: GVC; orders: any; callback: (orders: any) => void }) {
1305
1351
  const wp = window.parent as any;
@@ -1417,8 +1463,23 @@ export class OrderSetting {
1417
1463
  dd.status = value;
1418
1464
  },
1419
1465
  default: `${dd.status || 0}`,
1420
- options: OrderSetting.getPaymentStatusOpt(),
1421
- style: 'min-width: 220px;',
1466
+ options: (() => {
1467
+ const paymentOptions = OrderSetting.getPaymentStatusOpt();
1468
+ const unpayOption = paymentOptions.find(item => item.key === '0');
1469
+
1470
+ if (unpayOption) {
1471
+ if (dd.orderData.proof_purchase) {
1472
+ unpayOption.value = '待核款';
1473
+ } else if (dd.orderData.customer_info.payment_select == 'cash_on_delivery') {
1474
+ unpayOption.value = '貨到付款';
1475
+ } else {
1476
+ unpayOption.value = '未付款';
1477
+ }
1478
+ }
1479
+
1480
+ return paymentOptions;
1481
+ })(),
1482
+ style: 'min-width: 150px;',
1422
1483
  }),
1423
1484
  },
1424
1485
  {
@@ -1499,7 +1560,7 @@ export class OrderSetting {
1499
1560
  return html` <div class="d-flex align-items-center gap-2">${htmlArray.join('')}</div>`;
1500
1561
  },
1501
1562
  divCreate: {
1502
- style: 'min-width: 580px;',
1563
+ style: 'min-width: 620px;',
1503
1564
  },
1504
1565
  };
1505
1566
  })()
@@ -1509,50 +1570,6 @@ export class OrderSetting {
1509
1570
  });
1510
1571
  }
1511
1572
 
1512
- function allEditDialog(data: { title: string; options: OptionsItem[]; callback: (value: any) => void }) {
1513
- const defaultValue = '';
1514
- let temp = '';
1515
-
1516
- BgWidget.settingDialog({
1517
- gvc: gvc,
1518
- title: data.title,
1519
- innerHTML: (innerGVC: GVC) => {
1520
- return html` <div>
1521
- <div class="tx_700 mb-2">更改為</div>
1522
- ${BgWidget.select({
1523
- gvc: innerGVC,
1524
- callback: (value: any) => {
1525
- temp = value;
1526
- },
1527
- default: defaultValue,
1528
- options: [{ key: '', value: '請選擇狀態' }, ...data.options],
1529
- })}
1530
- </div>`;
1531
- },
1532
- footer_html: (footerGVC: GVC) => {
1533
- return [
1534
- BgWidget.cancel(
1535
- footerGVC.event(() => footerGVC.closeDialog()),
1536
- '取消'
1537
- ),
1538
- BgWidget.save(
1539
- footerGVC.event(() => {
1540
- if (temp === defaultValue) {
1541
- dialog.infoMessage({ text: '請選擇欲更改的選項' });
1542
- return;
1543
- }
1544
- footerGVC.closeDialog();
1545
- data.callback(temp);
1546
- gvc.notifyDataChange(vm.id);
1547
- }),
1548
- '儲存'
1549
- ),
1550
- ].join('');
1551
- },
1552
- width: 350,
1553
- });
1554
- }
1555
-
1556
1573
  function editOrderView() {
1557
1574
  return BgWidget.tableV3({
1558
1575
  gvc,
@@ -1560,13 +1577,15 @@ export class OrderSetting {
1560
1577
  {
1561
1578
  name: '更改付款狀態',
1562
1579
  event: (checkArray: any) => {
1563
- allEditDialog({
1580
+ OrderSetting.allEditDialog({
1581
+ gvc,
1564
1582
  title: '批量更改付款狀態',
1565
1583
  options: OrderSetting.getPaymentStatusOpt(),
1566
1584
  callback: (value: any) => {
1567
1585
  checkArray.forEach((order: any) => {
1568
1586
  order.status = Number(value);
1569
1587
  });
1588
+ gvc.notifyDataChange(vm.id);
1570
1589
  },
1571
1590
  });
1572
1591
  },
@@ -1574,7 +1593,8 @@ export class OrderSetting {
1574
1593
  {
1575
1594
  name: '更改出貨狀態',
1576
1595
  event: (checkArray: any) => {
1577
- allEditDialog({
1596
+ OrderSetting.allEditDialog({
1597
+ gvc,
1578
1598
  title: '批量更改出貨狀態',
1579
1599
  options: OrderSetting.getShippmentOpt(),
1580
1600
  callback: (value: any) => {
@@ -1584,6 +1604,7 @@ export class OrderSetting {
1584
1604
  order.orderData.user_info.shipment_number = '';
1585
1605
  }
1586
1606
  });
1607
+ gvc.notifyDataChange(vm.id);
1587
1608
  },
1588
1609
  });
1589
1610
  },
@@ -1591,13 +1612,15 @@ export class OrderSetting {
1591
1612
  {
1592
1613
  name: '更改訂單狀態',
1593
1614
  event: (checkArray: any) => {
1594
- allEditDialog({
1615
+ OrderSetting.allEditDialog({
1616
+ gvc,
1595
1617
  title: '批量更改訂單狀態',
1596
1618
  options: OrderSetting.getOrderStatusOpt(),
1597
1619
  callback: (value: any) => {
1598
1620
  checkArray.forEach((order: any) => {
1599
1621
  order.orderData.orderStatus = value;
1600
1622
  });
1623
+ gvc.notifyDataChange(vm.id);
1601
1624
  },
1602
1625
  });
1603
1626
  },
@@ -1660,33 +1683,13 @@ export class OrderSetting {
1660
1683
  ${BgWidget.cancel(gvc.event(() => closeEvent()))}
1661
1684
  ${BgWidget.save(
1662
1685
  gvc.event(() => {
1663
- // 與原訂單的資料做驗證
1664
- for (let i = 0; i < vm.orders.length; i++) {
1665
- const order = vm.orders[i];
1666
- const cloneOrder = cloneOrders[i];
1667
-
1668
- if (
1669
- ['wait', 'returns', undefined].includes(cloneOrder.orderData.progress) &&
1670
- ['arrived', 'finish', 'shipping', 'in_stock'].includes(order.orderData.progress) &&
1671
- !order.orderData.user_info.shipment_number
1672
- ) {
1673
- dialog.errorMessage({
1674
- text: `訂單編號 #${order.cart_token} 未輸入出貨單號碼`,
1675
- });
1676
- return;
1677
- }
1678
- }
1679
-
1680
- // 「備貨中」重新賦值
1681
- vm.orders.forEach((order: any) => {
1682
- if (order.orderData.progress === 'in_stock') {
1683
- order.orderData.progress = 'wait';
1684
- }
1685
- });
1686
+ const verify = this.batchUpdateOrderVerify(gvc, cloneOrders, vm.orders);
1686
1687
 
1687
- // 觸發更新事件
1688
- obj.callback(vm.orders);
1689
- topGVC.glitter.closeDiaLog();
1688
+ if (verify) {
1689
+ // 觸發更新事件
1690
+ obj.callback(vm.orders);
1691
+ topGVC.glitter.closeDiaLog();
1692
+ }
1690
1693
  })
1691
1694
  )}
1692
1695
  </div>
@@ -1697,6 +1700,36 @@ export class OrderSetting {
1697
1700
  }, 'batchEditOrders');
1698
1701
  }
1699
1702
 
1703
+ // 與原訂單的資料做驗證
1704
+ static batchUpdateOrderVerify(gvc: GVC, cloneOrders: Order[], updateOrders: Order[]): Boolean {
1705
+ const dialog = new ShareDialog(gvc.glitter);
1706
+
1707
+ for (let i = 0; i < updateOrders.length; i++) {
1708
+ const order = updateOrders[i];
1709
+ const cloneOrder = cloneOrders[i];
1710
+
1711
+ if (
1712
+ ['wait', 'returns', undefined].includes(cloneOrder.orderData.progress) &&
1713
+ ['arrived', 'finish', 'shipping', 'in_stock'].includes(order.orderData.progress) &&
1714
+ !order.orderData.user_info.shipment_number
1715
+ ) {
1716
+ dialog.errorMessage({
1717
+ text: `訂單編號 #${order.cart_token} 未輸入出貨單號碼`,
1718
+ });
1719
+ return false;
1720
+ }
1721
+ }
1722
+
1723
+ // 「備貨中」重新賦值
1724
+ updateOrders.forEach((order: any) => {
1725
+ if (order.orderData.progress === 'in_stock') {
1726
+ order.orderData.progress = 'wait';
1727
+ }
1728
+ });
1729
+
1730
+ return true;
1731
+ }
1732
+
1700
1733
  // 拆分訂單
1701
1734
  static splitOrder(topGVC: GVC, origOrderData: any, callback: () => void) {
1702
1735
  //把原本的預設資訊扔進拆分表單內,並且把商品的數量設定為0