ts-glitter 20.4.6 → 20.4.7
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-widget.js +19 -17
- package/lowcode/backend-manager/bg-widget.ts +19 -17
- package/lowcode/cms-plugin/user/user-module.js +28 -28
- package/lowcode/cms-plugin/user/user-module.ts +29 -31
- package/lowcode/cms-plugin/user-list.js +55 -42
- package/lowcode/cms-plugin/user-list.ts +71 -47
- package/lowcode/glitter-base/route/progress.js +32 -0
- package/lowcode/glitter-base/route/progress.ts +36 -0
- package/lowcode/glitter-base/route/user.js +37 -1
- package/lowcode/glitter-base/route/user.ts +40 -1
- package/lowcode/glitterBundle/dialog/ShareDialog.ts +0 -1
- package/package.json +3 -1
- package/src/api-public/controllers/ai-chat.js.map +1 -1
- package/src/api-public/controllers/app-release.js.map +1 -1
- package/src/api-public/controllers/delivery.js.map +1 -1
- package/src/api-public/controllers/graph-api.js.map +1 -1
- package/src/api-public/controllers/index.js +9 -8
- package/src/api-public/controllers/index.js.map +1 -1
- package/src/api-public/controllers/index.ts +171 -169
- package/src/api-public/controllers/lambda.js.map +1 -1
- package/src/api-public/controllers/manager.js.map +1 -1
- package/src/api-public/controllers/post.js.map +1 -1
- package/src/api-public/controllers/progress.d.ts +3 -0
- package/src/api-public/controllers/progress.js +29 -0
- package/src/api-public/controllers/progress.js.map +1 -0
- package/src/api-public/controllers/progress.ts +25 -0
- package/src/api-public/controllers/sql_api.js.map +1 -1
- package/src/api-public/controllers/track.js.map +1 -1
- package/src/api-public/controllers/user.js +47 -1
- package/src/api-public/controllers/user.js.map +1 -1
- package/src/api-public/controllers/user.ts +44 -3
- package/src/api-public/services/checkout.d.ts +1 -0
- package/src/api-public/services/checkout.js +16 -6
- package/src/api-public/services/checkout.js.map +1 -1
- package/src/api-public/services/checkout.ts +28 -18
- package/src/api-public/services/customer-sessions.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-order.d.ts +6 -1
- package/src/api-public/services/fake-data-model/fake-order.js +159 -155
- package/src/api-public/services/fake-data-model/fake-order.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-order.ts +186 -179
- package/src/api-public/services/fake-data-model/fake-product.js +94 -94
- package/src/api-public/services/fake-data-model/fake-product.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-product.ts +109 -114
- package/src/api-public/services/fake-data-model/fake-user.d.ts +17 -1
- package/src/api-public/services/fake-data-model/fake-user.js +70 -384
- package/src/api-public/services/fake-data-model/fake-user.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-user.ts +111 -394
- package/src/api-public/services/initial-fake-data.js +50 -10
- package/src/api-public/services/initial-fake-data.js.map +1 -1
- package/src/api-public/services/initial-fake-data.ts +92 -22
- package/src/api-public/services/invoice.js.map +1 -1
- package/src/api-public/services/manager.js.map +1 -1
- package/src/api-public/services/notify.js +234 -213
- package/src/api-public/services/notify.js.map +1 -1
- package/src/api-public/services/notify.ts +520 -494
- package/src/api-public/services/phone-verify.js.map +1 -1
- package/src/api-public/services/pos.js.map +1 -1
- package/src/api-public/services/post.js.map +1 -1
- package/src/api-public/services/rebate.d.ts +1 -0
- package/src/api-public/services/rebate.js +15 -8
- package/src/api-public/services/rebate.js.map +1 -1
- package/src/api-public/services/rebate.ts +24 -15
- package/src/api-public/services/recommend.js.map +1 -1
- package/src/api-public/services/schedule.js +7 -4
- package/src/api-public/services/schedule.js.map +1 -1
- package/src/api-public/services/schedule.ts +344 -335
- package/src/api-public/services/shopee.js.map +1 -1
- package/src/api-public/services/shopping.d.ts +1 -1
- package/src/api-public/services/shopping.js +28 -25
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +89 -76
- package/src/api-public/services/stock.js.map +1 -1
- package/src/api-public/services/user.d.ts +10 -1
- package/src/api-public/services/user.js +245 -42
- package/src/api-public/services/user.js.map +1 -1
- package/src/api-public/services/user.ts +325 -45
- package/src/api-public/services/voucher.js.map +1 -1
- package/src/api-public/services/workers.js.map +1 -1
- package/src/api-public/utils/ut-permission.d.ts +0 -1
- package/src/api-public/utils/ut-permission.js.map +1 -1
- package/src/config.d.ts +2 -1
- package/src/config.js +2 -1
- package/src/config.js.map +1 -1
- package/src/config.ts +142 -142
- package/src/controllers/app.js.map +1 -1
- package/src/controllers/backend-server.js.map +1 -1
- package/src/controllers/filemanager.js.map +1 -1
- package/src/controllers/index.js.map +1 -1
- package/src/controllers/user.js.map +1 -1
- package/src/domain-check.js.map +1 -1
- package/src/index.js.map +1 -1
- package/src/index.ts +3 -12
- package/src/modules/AWSLib.js +2 -3
- package/src/modules/AWSLib.js.map +1 -1
- package/src/modules/database.d.ts +1 -2
- package/src/modules/database.js.map +1 -1
- package/src/modules/firebase.js.map +1 -1
- package/src/modules/logger.js.map +1 -1
- package/src/modules/redis.d.ts +1 -1
- package/src/modules/redis.js.map +1 -1
- package/src/run.js +1 -2
- package/src/run.js.map +1 -1
- package/src/services/backend-service.js.map +1 -1
- package/src/services/create-instance.js +3 -4
- package/src/services/create-instance.js.map +1 -1
- package/src/services/global-event.js.map +1 -1
- package/src/services/ios-release.js.map +1 -1
- package/src/services/page.js.map +1 -1
- package/src/services/private_config.js.map +1 -1
- package/src/services/release.js.map +1 -1
- package/src/services/seo.js.map +1 -1
- package/src/services/tool.js +2 -3
- package/src/services/tool.js.map +1 -1
- package/src/services/user.js.map +1 -1
- package/src/services/web-socket.js.map +1 -1
- package/src/update-progress-track.d.ts +14 -0
- package/src/update-progress-track.js +28 -0
- package/src/update-progress-track.js.map +1 -0
- package/src/update-progress-track.ts +34 -0
package/lowcode/Entry.js
CHANGED
|
@@ -144,7 +144,7 @@ export class Entry {
|
|
|
144
144
|
}
|
|
145
145
|
window.renderClock = (_b = window.renderClock) !== null && _b !== void 0 ? _b : createClock();
|
|
146
146
|
console.log(`Entry-time:`, window.renderClock.stop());
|
|
147
|
-
glitter.share.editerVersion = 'V_20.4.
|
|
147
|
+
glitter.share.editerVersion = 'V_20.4.7';
|
|
148
148
|
glitter.share.start = new Date();
|
|
149
149
|
const vm = { appConfig: [] };
|
|
150
150
|
window.saasConfig = {
|
package/lowcode/Entry.ts
CHANGED
|
@@ -146,7 +146,7 @@ export class Entry {
|
|
|
146
146
|
}
|
|
147
147
|
(window as any).renderClock = (window as any).renderClock ?? createClock();
|
|
148
148
|
console.log(`Entry-time:`, (window as any).renderClock.stop());
|
|
149
|
-
glitter.share.editerVersion = 'V_20.4.
|
|
149
|
+
glitter.share.editerVersion = 'V_20.4.7';
|
|
150
150
|
glitter.share.start = new Date();
|
|
151
151
|
const vm = { appConfig: [] };
|
|
152
152
|
(window as any).saasConfig = {
|
|
@@ -1661,7 +1661,6 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
|
|
|
1661
1661
|
pageSize: 0,
|
|
1662
1662
|
tableData: [],
|
|
1663
1663
|
originalData: [],
|
|
1664
|
-
allResultData: [],
|
|
1665
1664
|
callback: () => {
|
|
1666
1665
|
vm.loading = false;
|
|
1667
1666
|
gvc.notifyDataChange(ids.container);
|
|
@@ -1746,21 +1745,24 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
|
|
|
1746
1745
|
initCheckData();
|
|
1747
1746
|
const selectAllObject = {
|
|
1748
1747
|
gvc,
|
|
1749
|
-
event: () => {
|
|
1750
|
-
if (vm.limit > 0) {
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1748
|
+
event: () => __awaiter(this, void 0, void 0, function* () {
|
|
1749
|
+
if (vm.limit > 0 && vm.allResult) {
|
|
1750
|
+
const allResultArray = yield vm.allResult();
|
|
1751
|
+
if (Array.isArray(allResultArray) && allResultArray.length > 0) {
|
|
1752
|
+
vm.checkedArray = allResultArray.map((item, i) => {
|
|
1753
|
+
const index = i % vm.limit;
|
|
1754
|
+
const page = Math.ceil(i / vm.limit) + (Boolean(index) ? 0 : 1);
|
|
1755
|
+
item.dataPin = `${page}-${index}`;
|
|
1756
|
+
item.checked = true;
|
|
1757
|
+
return item;
|
|
1758
|
+
});
|
|
1759
|
+
vm.originalData.forEach((item) => {
|
|
1760
|
+
item.checked = true;
|
|
1761
|
+
});
|
|
1762
|
+
renderRowCheckbox(true);
|
|
1763
|
+
}
|
|
1762
1764
|
}
|
|
1763
|
-
},
|
|
1765
|
+
}),
|
|
1764
1766
|
};
|
|
1765
1767
|
const cancelAllObject = {
|
|
1766
1768
|
gvc,
|
|
@@ -1813,7 +1815,7 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
|
|
|
1813
1815
|
text: '',
|
|
1814
1816
|
}),
|
|
1815
1817
|
],
|
|
1816
|
-
allSelectCallback: vm.
|
|
1818
|
+
allSelectCallback: vm.allResult ? selectAllObject : undefined,
|
|
1817
1819
|
cancelCallback: cancelAllObject,
|
|
1818
1820
|
});
|
|
1819
1821
|
}
|
|
@@ -1844,7 +1846,7 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
|
|
|
1844
1846
|
}),
|
|
1845
1847
|
count: vm.checkedArray.length,
|
|
1846
1848
|
buttonList: [...inList, ...outList],
|
|
1847
|
-
allSelectCallback: vm.
|
|
1849
|
+
allSelectCallback: vm.allResult ? selectAllObject : undefined,
|
|
1848
1850
|
cancelCallback: cancelAllObject,
|
|
1849
1851
|
});
|
|
1850
1852
|
}
|
|
@@ -45,7 +45,7 @@ type TableV3 = {
|
|
|
45
45
|
originalData: any;
|
|
46
46
|
callback: () => void;
|
|
47
47
|
checkedArray: any[];
|
|
48
|
-
|
|
48
|
+
allResult?: () => Promise<any[]>;
|
|
49
49
|
limit: number;
|
|
50
50
|
};
|
|
51
51
|
|
|
@@ -1981,7 +1981,6 @@ ${obj.default ?? ''}</textarea
|
|
|
1981
1981
|
pageSize: 0,
|
|
1982
1982
|
tableData: [],
|
|
1983
1983
|
originalData: [],
|
|
1984
|
-
allResultData: [],
|
|
1985
1984
|
callback: () => {
|
|
1986
1985
|
vm.loading = false;
|
|
1987
1986
|
gvc.notifyDataChange(ids.container);
|
|
@@ -2086,19 +2085,22 @@ ${obj.default ?? ''}</textarea
|
|
|
2086
2085
|
// 全選物件
|
|
2087
2086
|
const selectAllObject = {
|
|
2088
2087
|
gvc,
|
|
2089
|
-
event: () => {
|
|
2090
|
-
if (vm.limit > 0) {
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2088
|
+
event: async () => {
|
|
2089
|
+
if (vm.limit > 0 && vm.allResult) {
|
|
2090
|
+
const allResultArray = await vm.allResult();
|
|
2091
|
+
if (Array.isArray(allResultArray) && allResultArray.length > 0) {
|
|
2092
|
+
vm.checkedArray = allResultArray.map((item, i) => {
|
|
2093
|
+
const index = i % vm.limit;
|
|
2094
|
+
const page = Math.ceil(i / vm.limit) + (Boolean(index) ? 0 : 1);
|
|
2095
|
+
item.dataPin = `${page}-${index}`;
|
|
2096
|
+
item.checked = true;
|
|
2097
|
+
return item;
|
|
2098
|
+
});
|
|
2099
|
+
vm.originalData.forEach((item: any) => {
|
|
2100
|
+
item.checked = true;
|
|
2101
|
+
});
|
|
2102
|
+
renderRowCheckbox(true);
|
|
2103
|
+
}
|
|
2102
2104
|
}
|
|
2103
2105
|
},
|
|
2104
2106
|
};
|
|
@@ -2162,7 +2164,7 @@ ${obj.default ?? ''}</textarea
|
|
|
2162
2164
|
text: '',
|
|
2163
2165
|
}),
|
|
2164
2166
|
],
|
|
2165
|
-
allSelectCallback: vm.
|
|
2167
|
+
allSelectCallback: vm.allResult ? selectAllObject : undefined,
|
|
2166
2168
|
cancelCallback: cancelAllObject,
|
|
2167
2169
|
});
|
|
2168
2170
|
}
|
|
@@ -2201,7 +2203,7 @@ ${obj.default ?? ''}</textarea
|
|
|
2201
2203
|
}),
|
|
2202
2204
|
count: vm.checkedArray.length,
|
|
2203
2205
|
buttonList: [...inList, ...outList],
|
|
2204
|
-
allSelectCallback: vm.
|
|
2206
|
+
allSelectCallback: vm.allResult ? selectAllObject : undefined,
|
|
2205
2207
|
cancelCallback: cancelAllObject,
|
|
2206
2208
|
});
|
|
2207
2209
|
}
|
|
@@ -69,6 +69,7 @@ export class UserModule {
|
|
|
69
69
|
static addTags(obj) {
|
|
70
70
|
const gvc = obj.gvc;
|
|
71
71
|
const dataArray = obj.dataArray;
|
|
72
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
72
73
|
const vmt = {
|
|
73
74
|
id: gvc.glitter.getUUID(),
|
|
74
75
|
loading: true,
|
|
@@ -128,15 +129,16 @@ export class UserModule {
|
|
|
128
129
|
清除全部
|
|
129
130
|
</div>`,
|
|
130
131
|
BgWidget.cancel(gvc2.event(() => gvc2.closeDialog())),
|
|
131
|
-
BgWidget.save(gvc2.event(() =>
|
|
132
|
-
dataArray.
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
132
|
+
BgWidget.save(gvc2.event(() => {
|
|
133
|
+
const ids = dataArray.map((data) => data.userID).filter(Boolean);
|
|
134
|
+
ApiUser.batchAddTag({ userId: ids, tags: vmt.postData }).then(() => {
|
|
135
|
+
dialog.successMessage({ text: '「新增標籤」更新完成' });
|
|
136
|
+
gvc.notifyDataChange(obj.vm.id);
|
|
136
137
|
});
|
|
137
|
-
obj.saveEvent(dataArray);
|
|
138
138
|
gvc2.closeDialog();
|
|
139
|
-
|
|
139
|
+
dialog.successMessage({ text: '準備開始更新資料,請稍後' });
|
|
140
|
+
gvc.notifyDataChange(obj.vm.progressId);
|
|
141
|
+
})),
|
|
140
142
|
].join('');
|
|
141
143
|
},
|
|
142
144
|
});
|
|
@@ -144,19 +146,13 @@ export class UserModule {
|
|
|
144
146
|
static removeTags(obj) {
|
|
145
147
|
const gvc = obj.gvc;
|
|
146
148
|
const dataArray = obj.dataArray;
|
|
149
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
147
150
|
const vmt = {
|
|
148
151
|
id: gvc.glitter.getUUID(),
|
|
149
152
|
loading: true,
|
|
150
153
|
dataList: [],
|
|
151
154
|
postData: JSON.parse(JSON.stringify([])),
|
|
152
|
-
tagJoinList: {},
|
|
153
155
|
};
|
|
154
|
-
dataArray.forEach((item) => {
|
|
155
|
-
const tags = item.userData.tags || [];
|
|
156
|
-
tags.forEach((tag) => {
|
|
157
|
-
vmt.tagJoinList[tag] = true;
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
156
|
BgWidget.settingDialog({
|
|
161
157
|
gvc,
|
|
162
158
|
title: '批量刪除標籤',
|
|
@@ -180,7 +176,7 @@ export class UserModule {
|
|
|
180
176
|
ApiUser.getPublicConfig('user_general_tags', 'manager').then((dd) => {
|
|
181
177
|
var _b, _c;
|
|
182
178
|
if (dd.result && ((_c = (_b = dd.response) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.list)) {
|
|
183
|
-
vmt.dataList = dd.response.value.list
|
|
179
|
+
vmt.dataList = dd.response.value.list;
|
|
184
180
|
vmt.loading = false;
|
|
185
181
|
gvc2.notifyDataChange(vmt.id);
|
|
186
182
|
}
|
|
@@ -205,16 +201,16 @@ export class UserModule {
|
|
|
205
201
|
清除全部
|
|
206
202
|
</div>`,
|
|
207
203
|
BgWidget.cancel(gvc2.event(() => gvc2.closeDialog())),
|
|
208
|
-
BgWidget.save(gvc2.event(() =>
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
: [];
|
|
204
|
+
BgWidget.save(gvc2.event(() => {
|
|
205
|
+
const ids = dataArray.map((data) => data.userID).filter(Boolean);
|
|
206
|
+
ApiUser.batchRemoveTag({ userId: ids, tags: vmt.postData }).then(() => {
|
|
207
|
+
dialog.successMessage({ text: '「移除標籤」更新完成' });
|
|
208
|
+
gvc.notifyDataChange(obj.vm.id);
|
|
214
209
|
});
|
|
215
|
-
obj.saveEvent(dataArray);
|
|
216
210
|
gvc2.closeDialog();
|
|
217
|
-
|
|
211
|
+
dialog.successMessage({ text: '準備開始更新資料,請稍後' });
|
|
212
|
+
gvc.notifyDataChange(obj.vm.progressId);
|
|
213
|
+
})),
|
|
218
214
|
].join('');
|
|
219
215
|
},
|
|
220
216
|
});
|
|
@@ -222,6 +218,7 @@ export class UserModule {
|
|
|
222
218
|
static manualSetLevel(obj) {
|
|
223
219
|
const gvc = obj.gvc;
|
|
224
220
|
const dataArray = obj.dataArray;
|
|
221
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
225
222
|
const levelVM = {
|
|
226
223
|
id: gvc.glitter.getUUID(),
|
|
227
224
|
loading: true,
|
|
@@ -239,11 +236,12 @@ export class UserModule {
|
|
|
239
236
|
return BgWidget.spinner();
|
|
240
237
|
}
|
|
241
238
|
else {
|
|
239
|
+
levelVM.level = levelVM.options[0].key;
|
|
242
240
|
return html `
|
|
243
241
|
${BgWidget.grayNote('此功能針對特殊會員,手動調整後將無法自動升級')}
|
|
244
242
|
${BgWidget.select({
|
|
245
243
|
gvc: gvc2,
|
|
246
|
-
default: levelVM.
|
|
244
|
+
default: levelVM.level,
|
|
247
245
|
callback: key => {
|
|
248
246
|
levelVM.level = key;
|
|
249
247
|
},
|
|
@@ -276,12 +274,14 @@ export class UserModule {
|
|
|
276
274
|
return [
|
|
277
275
|
BgWidget.cancel(gvc2.event(() => gvc2.closeDialog())),
|
|
278
276
|
BgWidget.save(gvc2.event(() => __awaiter(this, void 0, void 0, function* () {
|
|
279
|
-
dataArray.
|
|
280
|
-
|
|
281
|
-
|
|
277
|
+
const ids = dataArray.map((data) => data.userID).filter(Boolean);
|
|
278
|
+
ApiUser.batchManualLevel({ userId: ids, level: levelVM.level }).then(() => {
|
|
279
|
+
dialog.successMessage({ text: '「手動修改會員標籤」更新完成' });
|
|
280
|
+
gvc.notifyDataChange(obj.vm.id);
|
|
282
281
|
});
|
|
283
|
-
obj.saveEvent(dataArray);
|
|
284
282
|
gvc2.closeDialog();
|
|
283
|
+
dialog.successMessage({ text: '準備開始更新資料,請稍後' });
|
|
284
|
+
gvc.notifyDataChange(obj.vm.progressId);
|
|
285
285
|
}))),
|
|
286
286
|
].join('');
|
|
287
287
|
},
|
|
@@ -63,9 +63,10 @@ export class UserModule {
|
|
|
63
63
|
return vmt.dataList.map((item: any) => this.printOption(gvc, vmt, { key: item, value: item })).join('');
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
static addTags(obj: { gvc: GVC;
|
|
66
|
+
static addTags(obj: { gvc: GVC; vm: any; dataArray: any }) {
|
|
67
67
|
const gvc = obj.gvc;
|
|
68
68
|
const dataArray = obj.dataArray;
|
|
69
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
69
70
|
const vmt = {
|
|
70
71
|
id: gvc.glitter.getUUID(),
|
|
71
72
|
loading: true,
|
|
@@ -130,14 +131,15 @@ export class UserModule {
|
|
|
130
131
|
</div>`,
|
|
131
132
|
BgWidget.cancel(gvc2.event(() => gvc2.closeDialog())),
|
|
132
133
|
BgWidget.save(
|
|
133
|
-
gvc2.event(
|
|
134
|
-
dataArray.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
134
|
+
gvc2.event(() => {
|
|
135
|
+
const ids = dataArray.map((data: any) => data.userID).filter(Boolean);
|
|
136
|
+
ApiUser.batchAddTag({ userId: ids, tags: vmt.postData }).then(() => {
|
|
137
|
+
dialog.successMessage({ text: '「新增標籤」更新完成' });
|
|
138
|
+
gvc.notifyDataChange(obj.vm.id);
|
|
138
139
|
});
|
|
139
|
-
obj.saveEvent(dataArray);
|
|
140
140
|
gvc2.closeDialog();
|
|
141
|
+
dialog.successMessage({ text: '準備開始更新資料,請稍後' });
|
|
142
|
+
gvc.notifyDataChange(obj.vm.progressId);
|
|
141
143
|
})
|
|
142
144
|
),
|
|
143
145
|
].join('');
|
|
@@ -145,24 +147,17 @@ export class UserModule {
|
|
|
145
147
|
});
|
|
146
148
|
}
|
|
147
149
|
|
|
148
|
-
static removeTags(obj: { gvc: GVC;
|
|
150
|
+
static removeTags(obj: { gvc: GVC; vm: any; dataArray: any }) {
|
|
149
151
|
const gvc = obj.gvc;
|
|
150
152
|
const dataArray = obj.dataArray;
|
|
153
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
151
154
|
const vmt = {
|
|
152
155
|
id: gvc.glitter.getUUID(),
|
|
153
156
|
loading: true,
|
|
154
157
|
dataList: [] as string[],
|
|
155
158
|
postData: JSON.parse(JSON.stringify([])) as string[],
|
|
156
|
-
tagJoinList: {} as Record<string, boolean>,
|
|
157
159
|
};
|
|
158
160
|
|
|
159
|
-
dataArray.forEach((item: any) => {
|
|
160
|
-
const tags = item.userData.tags || [];
|
|
161
|
-
tags.forEach((tag: string) => {
|
|
162
|
-
vmt.tagJoinList[tag] = true;
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
|
|
166
161
|
BgWidget.settingDialog({
|
|
167
162
|
gvc,
|
|
168
163
|
title: '批量刪除標籤',
|
|
@@ -184,7 +179,7 @@ export class UserModule {
|
|
|
184
179
|
if (vmt.loading) {
|
|
185
180
|
ApiUser.getPublicConfig('user_general_tags', 'manager').then((dd: any) => {
|
|
186
181
|
if (dd.result && dd.response?.value?.list) {
|
|
187
|
-
vmt.dataList = dd.response.value.list
|
|
182
|
+
vmt.dataList = dd.response.value.list;
|
|
188
183
|
vmt.loading = false;
|
|
189
184
|
gvc2.notifyDataChange(vmt.id);
|
|
190
185
|
} else {
|
|
@@ -209,16 +204,15 @@ export class UserModule {
|
|
|
209
204
|
</div>`,
|
|
210
205
|
BgWidget.cancel(gvc2.event(() => gvc2.closeDialog())),
|
|
211
206
|
BgWidget.save(
|
|
212
|
-
gvc2.event(
|
|
213
|
-
const
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
? item.userData.tags.filter((tag: string) => !postMap.get(tag))
|
|
218
|
-
: [];
|
|
207
|
+
gvc2.event(() => {
|
|
208
|
+
const ids = dataArray.map((data: any) => data.userID).filter(Boolean);
|
|
209
|
+
ApiUser.batchRemoveTag({ userId: ids, tags: vmt.postData }).then(() => {
|
|
210
|
+
dialog.successMessage({ text: '「移除標籤」更新完成' });
|
|
211
|
+
gvc.notifyDataChange(obj.vm.id);
|
|
219
212
|
});
|
|
220
|
-
obj.saveEvent(dataArray);
|
|
221
213
|
gvc2.closeDialog();
|
|
214
|
+
dialog.successMessage({ text: '準備開始更新資料,請稍後' });
|
|
215
|
+
gvc.notifyDataChange(obj.vm.progressId);
|
|
222
216
|
})
|
|
223
217
|
),
|
|
224
218
|
].join('');
|
|
@@ -226,9 +220,10 @@ export class UserModule {
|
|
|
226
220
|
});
|
|
227
221
|
}
|
|
228
222
|
|
|
229
|
-
static manualSetLevel(obj: { gvc: GVC;
|
|
223
|
+
static manualSetLevel(obj: { gvc: GVC; vm: any; dataArray: any }) {
|
|
230
224
|
const gvc = obj.gvc;
|
|
231
225
|
const dataArray = obj.dataArray;
|
|
226
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
232
227
|
const levelVM = {
|
|
233
228
|
id: gvc.glitter.getUUID(),
|
|
234
229
|
loading: true,
|
|
@@ -246,11 +241,12 @@ export class UserModule {
|
|
|
246
241
|
if (levelVM.loading) {
|
|
247
242
|
return BgWidget.spinner();
|
|
248
243
|
} else {
|
|
244
|
+
levelVM.level = levelVM.options[0].key;
|
|
249
245
|
return html`
|
|
250
246
|
${BgWidget.grayNote('此功能針對特殊會員,手動調整後將無法自動升級')}
|
|
251
247
|
${BgWidget.select({
|
|
252
248
|
gvc: gvc2,
|
|
253
|
-
default: levelVM.
|
|
249
|
+
default: levelVM.level,
|
|
254
250
|
callback: key => {
|
|
255
251
|
levelVM.level = key;
|
|
256
252
|
},
|
|
@@ -283,12 +279,14 @@ export class UserModule {
|
|
|
283
279
|
BgWidget.cancel(gvc2.event(() => gvc2.closeDialog())),
|
|
284
280
|
BgWidget.save(
|
|
285
281
|
gvc2.event(async () => {
|
|
286
|
-
dataArray.
|
|
287
|
-
|
|
288
|
-
|
|
282
|
+
const ids = dataArray.map((data: any) => data.userID).filter(Boolean);
|
|
283
|
+
ApiUser.batchManualLevel({ userId: ids, level: levelVM.level }).then(() => {
|
|
284
|
+
dialog.successMessage({ text: '「手動修改會員標籤」更新完成' });
|
|
285
|
+
gvc.notifyDataChange(obj.vm.id);
|
|
289
286
|
});
|
|
290
|
-
obj.saveEvent(dataArray);
|
|
291
287
|
gvc2.closeDialog();
|
|
288
|
+
dialog.successMessage({ text: '準備開始更新資料,請稍後' });
|
|
289
|
+
gvc.notifyDataChange(obj.vm.progressId);
|
|
292
290
|
})
|
|
293
291
|
),
|
|
294
292
|
].join('');
|
|
@@ -15,6 +15,7 @@ import { ShareDialog } from '../glitterBundle/dialog/ShareDialog.js';
|
|
|
15
15
|
import { FormWidget } from '../official_view_component/official/form.js';
|
|
16
16
|
import { ApiWallet } from '../glitter-base/route/wallet.js';
|
|
17
17
|
import { ApiShop } from '../glitter-base/route/shopping.js';
|
|
18
|
+
import { ApiProgress } from '../glitter-base/route/progress.js';
|
|
18
19
|
import { ShoppingOrderManager } from './shopping-order-manager.js';
|
|
19
20
|
import { FilterOptions } from './filter-options.js';
|
|
20
21
|
import { ShoppingRebate } from './shopping-rebate.js';
|
|
@@ -44,6 +45,7 @@ export class UserList {
|
|
|
44
45
|
filterId: glitter.getUUID(),
|
|
45
46
|
tableId: glitter.getUUID(),
|
|
46
47
|
barId: glitter.getUUID(),
|
|
48
|
+
progressId: glitter.getUUID(),
|
|
47
49
|
initial_data: {},
|
|
48
50
|
group: obj && obj.group ? obj.group : undefined,
|
|
49
51
|
plan: GlobalUser.getPlan().id,
|
|
@@ -171,6 +173,46 @@ export class UserList {
|
|
|
171
173
|
}
|
|
172
174
|
return BgWidget.title('顧客列表');
|
|
173
175
|
})()}
|
|
176
|
+
${gvc.bindView((() => {
|
|
177
|
+
let dataList = [];
|
|
178
|
+
return {
|
|
179
|
+
bind: vm.progressId,
|
|
180
|
+
view: () => {
|
|
181
|
+
if (dataList.length == 0) {
|
|
182
|
+
return '';
|
|
183
|
+
}
|
|
184
|
+
const progressMap = {
|
|
185
|
+
batchGetUser: '資料處理中',
|
|
186
|
+
batchAddtag: '新增標籤中',
|
|
187
|
+
batchRemovetag: '移除標籤中',
|
|
188
|
+
batchManualLevel: '手動修改會員等級中',
|
|
189
|
+
};
|
|
190
|
+
return dataList
|
|
191
|
+
.map((item) => {
|
|
192
|
+
const { taskTag, progress } = item;
|
|
193
|
+
if (Number(progress) === 100) {
|
|
194
|
+
return '';
|
|
195
|
+
}
|
|
196
|
+
const toFixProgress = Number(progress).toFixed(1);
|
|
197
|
+
return BgWidget.notifyInsignia(`${progressMap[taskTag]}: ${toFixProgress}%`);
|
|
198
|
+
})
|
|
199
|
+
.join('');
|
|
200
|
+
},
|
|
201
|
+
divCreate: {
|
|
202
|
+
class: 'ms-2',
|
|
203
|
+
},
|
|
204
|
+
onCreate: () => {
|
|
205
|
+
setTimeout(() => {
|
|
206
|
+
ApiProgress.getAllProgress().then(t => {
|
|
207
|
+
dataList = t.result && Array.isArray(t.response) ? t.response : [];
|
|
208
|
+
if (dataList.length > 0) {
|
|
209
|
+
gvc.notifyDataChange(vm.progressId);
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}, 2500);
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
})())}
|
|
174
216
|
<div class="flex-fill"></div>
|
|
175
217
|
<div class="d-flex align-items-center" style="gap: 10px;">
|
|
176
218
|
${BgWidget.grayButton('匯入', gvc.event(() => UserExcel.importDialog(gvc, () => gvc.notifyDataChange(vm.id))))}
|
|
@@ -299,28 +341,6 @@ export class UserList {
|
|
|
299
341
|
if (vm.loading) {
|
|
300
342
|
return '';
|
|
301
343
|
}
|
|
302
|
-
function batchUpdateUser(checkedData) {
|
|
303
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
304
|
-
try {
|
|
305
|
-
dialog.dataLoading({ visible: true });
|
|
306
|
-
const results = yield UserModule.batchProcess(checkedData, 100);
|
|
307
|
-
const failedUpdates = results.filter((r) => !r.result);
|
|
308
|
-
if (failedUpdates.length > 0) {
|
|
309
|
-
UserModule.failedUpdateDialog(gvc, failedUpdates, checkedData.length);
|
|
310
|
-
}
|
|
311
|
-
else {
|
|
312
|
-
dialog.successMessage({ text: '更新成功' });
|
|
313
|
-
}
|
|
314
|
-
dialog.dataLoading({ visible: false });
|
|
315
|
-
gvc.notifyDataChange(vm.id);
|
|
316
|
-
}
|
|
317
|
-
catch (error) {
|
|
318
|
-
console.error('更新失敗:', error);
|
|
319
|
-
dialog.dataLoading({ visible: false });
|
|
320
|
-
dialog.errorMessage({ text: '更新失敗,請稍後再試' });
|
|
321
|
-
}
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
344
|
return BgWidget.tableV3({
|
|
325
345
|
gvc: gvc,
|
|
326
346
|
getData: vd => {
|
|
@@ -336,21 +356,25 @@ export class UserList {
|
|
|
336
356
|
filter: vm.filter,
|
|
337
357
|
filter_type: vm.filter_type,
|
|
338
358
|
group: vm.group,
|
|
339
|
-
all_result: true,
|
|
340
359
|
};
|
|
341
360
|
ApiUser.getUserListOrders(vm.apiJSON).then(data => {
|
|
342
|
-
var _a;
|
|
343
361
|
vm.dataList = data.response.data;
|
|
362
|
+
vmi.limit = limit;
|
|
344
363
|
vmi.pageSize = Math.ceil(data.response.total / limit);
|
|
345
364
|
vmi.originalData = vm.dataList;
|
|
346
|
-
vmi.allResultData = (_a = data.response.allUsers) !== null && _a !== void 0 ? _a : [];
|
|
347
|
-
vmi.limit = limit;
|
|
348
365
|
vmi.tableData = getUserlist();
|
|
349
|
-
vmi.
|
|
366
|
+
vmi.allResult = () => __awaiter(this, void 0, void 0, function* () {
|
|
367
|
+
dialog.dataLoading({ visible: true });
|
|
368
|
+
return ApiUser.getUserListOrders(Object.assign(Object.assign({}, vm.apiJSON), { all_result: true })).then(data => {
|
|
369
|
+
dialog.dataLoading({ visible: false });
|
|
370
|
+
return data.response.allUsers;
|
|
371
|
+
});
|
|
372
|
+
});
|
|
350
373
|
if (vmi.pageSize != 0 && vmi.page > vmi.pageSize) {
|
|
351
374
|
UserList.vm.page = 1;
|
|
352
375
|
gvc.notifyDataChange(vm.id);
|
|
353
376
|
}
|
|
377
|
+
vmi.loading = false;
|
|
354
378
|
vmi.callback();
|
|
355
379
|
});
|
|
356
380
|
},
|
|
@@ -363,33 +387,21 @@ export class UserList {
|
|
|
363
387
|
name: '新增標籤',
|
|
364
388
|
option: true,
|
|
365
389
|
event: (dataArray) => {
|
|
366
|
-
UserModule.addTags({
|
|
367
|
-
gvc,
|
|
368
|
-
dataArray,
|
|
369
|
-
saveEvent: result => batchUpdateUser(result),
|
|
370
|
-
});
|
|
390
|
+
UserModule.addTags({ gvc, vm, dataArray });
|
|
371
391
|
},
|
|
372
392
|
},
|
|
373
393
|
{
|
|
374
394
|
name: '移除標籤',
|
|
375
395
|
option: true,
|
|
376
396
|
event: (dataArray) => {
|
|
377
|
-
UserModule.removeTags({
|
|
378
|
-
gvc,
|
|
379
|
-
dataArray,
|
|
380
|
-
saveEvent: result => batchUpdateUser(result),
|
|
381
|
-
});
|
|
397
|
+
UserModule.removeTags({ gvc, vm, dataArray });
|
|
382
398
|
},
|
|
383
399
|
},
|
|
384
400
|
{
|
|
385
401
|
name: '手動調整等級',
|
|
386
402
|
option: true,
|
|
387
403
|
event: (dataArray) => {
|
|
388
|
-
UserModule.manualSetLevel({
|
|
389
|
-
gvc,
|
|
390
|
-
dataArray,
|
|
391
|
-
saveEvent: result => batchUpdateUser(result),
|
|
392
|
-
});
|
|
404
|
+
UserModule.manualSetLevel({ gvc, vm, dataArray });
|
|
393
405
|
},
|
|
394
406
|
},
|
|
395
407
|
{
|
|
@@ -462,6 +474,7 @@ export class UserList {
|
|
|
462
474
|
filterId: glitter.getUUID(),
|
|
463
475
|
tableId: glitter.getUUID(),
|
|
464
476
|
barId: glitter.getUUID(),
|
|
477
|
+
progressId: glitter.getUUID(),
|
|
465
478
|
group: obj && obj.group ? obj.group : undefined,
|
|
466
479
|
plan: 0,
|
|
467
480
|
headerConfig: [],
|