Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b2785bd41 | ||
|
|
7b1b9084c7 | ||
|
|
4105636741 | ||
|
|
d136128650 | ||
|
|
1d9532ca5a | ||
|
|
b94235adf3 | ||
|
|
619491b4d0 | ||
|
|
dd4c4817e4 | ||
|
|
926eb70fe5 | ||
|
|
dc0e947334 | ||
|
|
28f768f3b2 | ||
|
|
145eabbf42 | ||
|
|
2d245d1fe7 | ||
|
|
86c33e1f68 | ||
|
|
2d16816f3f | ||
|
|
27d24cd02d | ||
|
|
40512afb49 | ||
|
|
53d1cb8fff | ||
|
|
6d641177b8 | ||
|
|
9394a7cd60 | ||
|
|
f84c10cdea | ||
|
|
79c3ba090f | ||
|
|
4b2800f723 | ||
|
|
887936ccf0 | ||
|
|
81a710c02d | ||
|
|
4a2eddbd3b | ||
|
|
3f6e3c4168 | ||
|
|
f36b01575f | ||
|
|
95bb19dc0b | ||
|
|
fd907ddf3b | ||
|
|
d9f4336717 | ||
|
|
a132f07d04 | ||
|
|
1f8e419f78 | ||
|
|
4204c31442 | ||
|
|
cf4ed96f28 | ||
|
|
db98b376ff | ||
|
|
7a6c69495d | ||
|
|
989e30810a | ||
|
|
0e3ebbd2b8 | ||
|
|
26b025aca0 | ||
|
|
74e04279c2 | ||
|
|
6aaf611291 | ||
|
|
96593dac52 | ||
|
|
da45ee034c | ||
|
|
4872f18dc6 | ||
|
|
a45c8e6d2d | ||
|
|
360cce10c7 | ||
|
|
93a0789e34 | ||
|
|
63a0e5dc3d | ||
|
|
4680a7dcfd | ||
|
|
b69a784e86 | ||
|
|
4a2a7b760a | ||
|
|
0db57da901 | ||
|
|
8f231bc296 | ||
|
|
859f25fee3 | ||
|
|
fe33517ef0 | ||
|
|
f7217a5c83 | ||
|
|
1a8c04d763 | ||
|
|
8dafe26b2b | ||
|
|
f069f809c2 | ||
|
|
8a225e66b7 | ||
|
|
f086b9c32b | ||
|
|
fc0de84d78 | ||
|
|
c697824b09 | ||
|
|
456f3d210a | ||
|
|
4d25dda7fd | ||
|
|
370851ac37 | ||
|
|
fbed29100f | ||
|
|
870a1c44e8 | ||
|
|
d8fb70628d | ||
|
|
48e78c38c8 | ||
|
|
0974ece199 | ||
|
|
9d0e77b624 | ||
|
|
8d116599b1 | ||
|
|
e1502d15a2 | ||
|
|
823530bbc9 | ||
|
|
7577fc45c4 | ||
|
|
cb6e716ce2 | ||
|
|
b1e3337cb4 | ||
|
|
65e1c7385f | ||
|
|
1a0ff0215d | ||
|
|
0e2000550a | ||
|
|
4fcc33ec60 | ||
|
|
b2dd170884 | ||
|
|
5a3ae2ab7a | ||
|
|
f07c74d83c | ||
|
|
1bd853bb32 | ||
|
|
6f47069df8 | ||
|
|
5ccca7ffa7 | ||
|
|
cb34733318 | ||
|
|
ed54cfe519 | ||
|
|
7bb482a829 | ||
|
|
2e207ddef9 | ||
|
|
90656ddb51 | ||
|
|
9c6b5eb600 | ||
|
|
25dff95fed | ||
|
|
d5f1e50495 | ||
|
|
85c0da5aec | ||
|
|
daddf79683 | ||
|
|
e6d83c1bd0 | ||
|
|
3c34602483 | ||
|
|
ef56489d46 | ||
|
|
d12c4dc258 | ||
|
|
9faad6424e | ||
|
|
fb19dd2476 | ||
|
|
e5ec820127 | ||
|
|
3e55015d77 | ||
|
|
e5de6a5cbd | ||
|
|
beaf533a14 | ||
|
|
307743b7d0 | ||
|
|
4aea2eaed5 | ||
|
|
b5c4da073a | ||
|
|
3dc02f7282 | ||
|
|
7d60b5a619 | ||
|
|
a2091df2df | ||
|
|
2205526a79 | ||
|
|
fd6fd9e520 | ||
|
|
15ed1cf5c2 | ||
|
|
d7e0b771ef | ||
|
|
52f804e204 | ||
|
|
7ba29c97aa | ||
|
|
4f941df55c | ||
|
|
4870231b61 | ||
|
|
40fe63a3fb | ||
|
|
03356576b3 | ||
|
|
10c95406d8 | ||
|
|
757f10cbe6 | ||
|
|
19789fabf5 | ||
|
|
c486dfd87a | ||
|
|
c4fda86747 | ||
|
|
f750e3b41b | ||
|
|
428f976034 | ||
|
|
8362665f2b | ||
|
|
18880c71db | ||
|
|
a2b378b131 | ||
|
|
dcc1a3e9d5 | ||
|
|
9329978f6d | ||
|
|
9aa7706722 | ||
|
|
a9623e3001 | ||
|
|
8547b28d63 | ||
|
|
7151695103 | ||
|
|
fb68dc2bfa | ||
|
|
0ceba5a441 | ||
|
|
5502911333 | ||
|
|
632dea08c0 | ||
|
|
8c0380506c | ||
|
|
395c9c3dca | ||
|
|
24270f4e9d | ||
|
|
8cb59315da | ||
|
|
15bd591c1b | ||
|
|
7414a044a6 | ||
|
|
612fa4ab92 | ||
|
|
324217a8bb | ||
|
|
b67ed77030 | ||
|
|
a13e8b77c9 | ||
|
|
0112e7203e | ||
|
|
beb7f60bc5 | ||
|
|
c4f7aa760b | ||
|
|
af1bec2a8c | ||
|
|
c3b210d2b5 | ||
|
|
2434911064 | ||
|
|
35c1551fad | ||
|
|
898593696c | ||
|
|
a06a50967e | ||
|
|
e1ccf52389 | ||
|
|
ce0f6edba6 | ||
|
|
927196c5d1 | ||
|
|
1911ed9934 | ||
|
|
075cf0c160 | ||
|
|
dd4dbb0a5c | ||
|
|
ca3e47f673 | ||
|
|
b99700455c | ||
|
|
216d8c00b2 | ||
|
|
c832af77e8 | ||
|
|
8f748edd96 | ||
|
|
295976407b | ||
|
|
69dc5c1a23 | ||
|
|
de5cda9ef4 | ||
|
|
c32e03b002 | ||
|
|
f1ffd6e6b8 | ||
|
|
535921b0d0 | ||
|
|
fd9d6e5818 | ||
|
|
6cd826d56d | ||
|
|
c820b5a574 | ||
|
|
24e1e2f26c | ||
|
|
be2ca75ef0 | ||
|
|
21621fd2d2 | ||
|
|
5bf1de5481 | ||
|
|
7ff082a930 | ||
|
|
3eeb55749d | ||
|
|
f2f39c3a91 | ||
|
|
a02712ca95 | ||
|
|
d81ca6e8e3 | ||
|
|
e9510f50f8 | ||
|
|
299fec7bdd | ||
|
|
f996d00e92 | ||
|
|
dd841c2c06 | ||
|
|
a08684089d | ||
|
|
d407bc3c41 | ||
|
|
8150b9b139 | ||
|
|
f5c093b3d8 | ||
|
|
814f9ba9c6 | ||
|
|
f11df67441 | ||
|
|
0f420bf39b | ||
|
|
31150eaa76 | ||
|
|
800ebf174f | ||
|
|
484826a5ad | ||
|
|
e75f954495 | ||
|
|
10cb91ad59 | ||
|
|
25b23881b0 | ||
|
|
e294520cf9 | ||
|
|
287421df7a | ||
|
|
45fc9957af | ||
|
|
9e695c0e69 | ||
|
|
70efcadc72 | ||
|
|
8b35ee53a8 | ||
|
|
5968fc5fbf | ||
|
|
64168a9f39 | ||
|
|
38e2063f1f | ||
|
|
ca6b61f553 | ||
|
|
c45a5228e1 | ||
|
|
8c28b8d2d9 | ||
|
|
4bddfbf95d | ||
|
|
f61f0fa2e8 | ||
|
|
5fad001468 | ||
|
|
8283c5d5ec | ||
|
|
5cdfed5741 | ||
|
|
de7a9a484c | ||
|
|
98a95e6e88 | ||
|
|
6586ba43a8 | ||
|
|
323e6197b1 | ||
|
|
1d07068806 | ||
|
|
ce5d8d3780 | ||
|
|
eb79ee1b77 | ||
|
|
d22a2933b6 | ||
|
|
273ae198a6 | ||
|
|
a4d19cc085 | ||
|
|
1c9d40fc54 | ||
|
|
edc50b6f00 | ||
|
|
b47c8f0ba0 | ||
|
|
eb9a9257de | ||
|
|
65f1863327 | ||
|
|
d3dc508171 | ||
|
|
dea9ef8cd1 | ||
|
|
30605fba76 | ||
|
|
5dc11f844d | ||
|
|
eecfb90ab6 | ||
|
|
43ad93cd20 | ||
|
|
ffdd3325dd | ||
|
|
fc5e37dd21 | ||
|
|
231bdd1dd0 | ||
|
|
b9c2d311ba | ||
|
|
ab7064037b | ||
|
|
8bbfaf2aeb | ||
|
|
b931fbc500 | ||
|
|
687c96bb0e | ||
|
|
e2754b3ede | ||
|
|
0791a8aedb | ||
|
|
7108cde060 | ||
|
|
e01883d58b | ||
|
|
a9e52b4e98 | ||
|
|
254d1e0322 | ||
|
|
3d56931268 | ||
|
|
eb7e9397f5 | ||
|
|
996fe3329c | ||
|
|
9d9f7ad7f7 | ||
|
|
92ee6d639d | ||
|
|
8b3c294e5c | ||
|
|
6b31a32a2d | ||
|
|
ab9ce936a3 | ||
|
|
0ce9ececc6 | ||
|
|
2dae231afc | ||
|
|
db75640167 | ||
|
|
13b630b9ce | ||
|
|
df90c46a5b | ||
|
|
aadf1373fc | ||
|
|
4130b2fec5 | ||
|
|
3b445d031f | ||
|
|
61fb71c010 | ||
|
|
3f57039f4d | ||
|
|
bd88d29340 | ||
|
|
16c919ce02 | ||
|
|
6afcfdd50c | ||
|
|
bcfb98cb37 | ||
|
|
d3f38c690e | ||
|
|
2dc738a6e7 | ||
|
|
4925273c0b | ||
|
|
8c2ecbd7aa | ||
|
|
c40ca1333d | ||
|
|
cc1d2b194d | ||
|
|
521ae46cba | ||
|
|
879870ee26 | ||
|
|
9475ded922 | ||
|
|
0e9fde1f8a | ||
|
|
bcb4fc3034 | ||
|
|
e7c9ca0c5b | ||
|
|
aaa5e146f1 | ||
|
|
f45c255073 | ||
|
|
3a1224a2ec | ||
|
|
5a21c0e8ca | ||
|
|
1a4c717584 | ||
|
|
c49641d988 | ||
|
|
2937f3c174 | ||
|
|
82bf084920 | ||
|
|
14192991d9 | ||
|
|
24e69ecf36 | ||
|
|
372e2215f0 | ||
|
|
fd13eb7f8f | ||
|
|
5376eb4051 | ||
|
|
a7c37fa295 | ||
|
|
38c485b2bc | ||
|
|
ab110f915c | ||
|
|
5f970864a1 | ||
|
|
b2bdcdcf9c | ||
|
|
7c73b800fa | ||
|
|
5ba69ba707 | ||
|
|
de9ec95099 | ||
|
|
f7d31d5c99 | ||
|
|
53cef8b475 | ||
|
|
fb08357e8f | ||
|
|
485e3fa466 | ||
|
|
270f41428f | ||
|
|
1c60204350 | ||
|
|
b5eb9e73a7 | ||
|
|
6edd64f13b | ||
|
|
a6e1e5ffe3 | ||
|
|
1d047d8cb2 | ||
|
|
e1cf0e4456 | ||
|
|
1b036e84d1 | ||
|
|
900d275055 | ||
|
|
2ff21aa65e | ||
|
|
108dcccafe | ||
|
|
a805ceb534 | ||
|
|
cb02377706 | ||
|
|
bead947284 | ||
|
|
fa59b3c16a | ||
|
|
3b9d115c59 | ||
|
|
8d4c9e9c16 | ||
|
|
ed36d2bfb4 | ||
|
|
d5d783af25 | ||
|
|
fde37b0410 | ||
|
|
1fe40b61a0 | ||
|
|
86880b48f7 | ||
|
|
e54fdc8d3f | ||
|
|
07adf4c68b | ||
|
|
e6f2a62c15 | ||
|
|
df8b1fbc0d | ||
|
|
36b5db16dd | ||
|
|
8bbe9ad424 | ||
|
|
3fec45b5b4 | ||
|
|
8caf19a193 | ||
|
|
05a6c4f288 | ||
|
|
d88707b306 | ||
|
|
8f31bd73cd | ||
|
|
9e44a6cf0f | ||
|
|
7cb68da5b0 | ||
|
|
c015b2e881 | ||
|
|
251a98df5c | ||
|
|
188b4033ba | ||
|
|
a4a376b18d | ||
|
|
677767fd83 | ||
|
|
8c5aaa8801 | ||
|
|
145226deed | ||
|
|
3a5c93fa84 | ||
|
|
f5d445be1d | ||
|
|
e21114c0b5 | ||
|
|
cfb3e4a5ff | ||
|
|
162b93bc1d | ||
|
|
0763f33351 | ||
|
|
0704672ad3 | ||
|
|
8ed2afb712 | ||
|
|
5d91131eb7 | ||
|
|
46da7e2876 | ||
|
|
4a829c7525 | ||
|
|
4d3c5b7eff | ||
|
|
2c11228f55 | ||
|
|
fcf948e781 | ||
|
|
bd643f9376 | ||
|
|
b7f06ec698 | ||
|
|
7f7c508bb2 | ||
|
|
638035249e | ||
|
|
bfddd674c1 | ||
|
|
33b0b5ceb3 | ||
|
|
e8a0eb08d6 | ||
|
|
4abd246d96 | ||
|
|
d072098038 | ||
|
|
1ad5de57f9 | ||
|
|
eeb76bb4c2 | ||
|
|
fe48f87f37 | ||
|
|
f0ba8ff0af | ||
|
|
14cb120519 | ||
|
|
34542cae4b | ||
|
|
ccf21dd4d4 | ||
|
|
416df14b8c | ||
|
|
21c7c17e8f | ||
|
|
a854e96343 | ||
|
|
b1752f39b6 | ||
|
|
9b647cc19e | ||
|
|
922b0c4e63 | ||
|
|
10f6a2b158 | ||
|
|
806888cce8 | ||
|
|
4d44440070 | ||
|
|
35b2708ca6 | ||
|
|
c4ee9581d0 | ||
|
|
0a48b523b9 | ||
|
|
1f22e0b88d | ||
|
|
538ad86b03 | ||
|
|
d266b99e9e | ||
|
|
69940e2780 | ||
|
|
369860a055 | ||
|
|
ae0bca1774 | ||
|
|
d14ba2ed9e | ||
|
|
bb17651915 | ||
|
|
dd76cc581c | ||
|
|
b9178c88aa | ||
|
|
933628050b | ||
|
|
925d356e41 | ||
|
|
12c0f36bb8 | ||
|
|
b98f1220ac | ||
|
|
392603c811 | ||
|
|
e655b4d6ef | ||
|
|
c76b622722 | ||
|
|
51c6bfe42c | ||
|
|
60d4175396 | ||
|
|
20054b28c3 | ||
|
|
79b6b87721 | ||
|
|
b6cd12a300 | ||
|
|
993d070560 | ||
|
|
fa0892980d | ||
|
|
32d6ac0183 | ||
|
|
ece1533436 | ||
|
|
e53786e8bd | ||
|
|
908b3c212c | ||
|
|
ec61670b75 | ||
|
|
21ade9b9ac | ||
|
|
a68ae29f3a | ||
|
|
9e628ba59d | ||
|
|
5730707be9 | ||
|
|
6550983413 | ||
|
|
0051264142 | ||
|
|
ba8681e3c7 | ||
|
|
e881b9cefd | ||
|
|
7706e46bfa | ||
|
|
75af4f07c0 | ||
|
|
9e3f228a61 | ||
|
|
d6c016e3ea | ||
|
|
dbacc0c371 | ||
|
|
4cfc785667 | ||
|
|
5734faa5fc | ||
|
|
326fc3d03f | ||
|
|
93006504ce | ||
|
|
cb68ef5fa7 | ||
|
|
b4b9015869 | ||
|
|
2204876076 | ||
|
|
ebc995ac4c | ||
|
|
9dfb869a4b | ||
|
|
61bf6fb85b | ||
|
|
ac46a37638 | ||
|
|
749e44081e | ||
|
|
5162191340 | ||
|
|
82b53b9b03 | ||
|
|
80d87b8e99 | ||
|
|
6224602152 | ||
|
|
848bc60612 | ||
|
|
1a6afa3263 | ||
|
|
2b0789112f | ||
|
|
e9bb9403b4 | ||
|
|
96a499a815 | ||
|
|
f72e4f47f4 | ||
|
|
44f322bb35 | ||
|
|
1064bbe570 | ||
|
|
1afdbe651e | ||
|
|
18e87cf967 | ||
|
|
f3777f6334 | ||
|
|
4acd379d50 | ||
|
|
8a73fbe775 | ||
|
|
38fe69fbd4 | ||
|
|
f341ba4d3c | ||
|
|
21c9cba67b | ||
|
|
3938a78db2 | ||
|
|
2871961582 | ||
|
|
a9ca98036c | ||
|
|
6f86ea96da | ||
|
|
922b9edfcb | ||
|
|
c825216063 | ||
|
|
f70c8dcee2 | ||
|
|
8d73d741d4 | ||
|
|
d3c596dcaf | ||
|
|
334c0241a9 | ||
|
|
db3b8285d1 | ||
|
|
9ab367e4f4 | ||
|
|
5fd8177791 | ||
|
|
fda50ff291 | ||
|
|
f147f05aeb | ||
|
|
53de30c698 | ||
|
|
afcb7e76b7 | ||
|
|
557dc7d5d9 | ||
|
|
8cc40626d6 | ||
|
|
ca64760dd0 | ||
|
|
cd2f049619 | ||
|
|
c09af1cbe1 | ||
|
|
cabfc5ccc0 | ||
|
|
2b329d33e4 | ||
|
|
893cd5d8f5 | ||
|
|
edaf30a32b | ||
|
|
b6ff9ede11 | ||
|
|
e89b274e3f | ||
|
|
e45cade877 | ||
|
|
bb34c2b75c | ||
|
|
39facc2f49 | ||
|
|
807e9272a5 | ||
|
|
d974124918 | ||
|
|
8f6e6fdb54 | ||
|
|
ed786b2db6 | ||
|
|
5c560e2fbe | ||
|
|
0e755acf52 | ||
|
|
16d53bbf4b | ||
|
|
9c43594010 | ||
|
|
b0b62eb250 | ||
|
|
33cf98e306 | ||
|
|
8da1c04b55 | ||
|
|
8d759b2a0b | ||
|
|
00619ca6db | ||
|
|
91c262fb24 | ||
|
|
9c05ff35db | ||
|
|
1abfec766e | ||
|
|
3d5cb15eae | ||
|
|
7a6f5c2db8 | ||
|
|
d3b4063b94 | ||
|
|
d3614cbbac | ||
|
|
f19e8c4d0a | ||
|
|
f98f794f77 | ||
|
|
68c573d902 | ||
|
|
d800143a88 | ||
|
|
9983dc5bb9 | ||
|
|
906169f9be | ||
|
|
6f9cb4f8f2 | ||
|
|
c0e51bd7aa | ||
|
|
e3c46cab53 | ||
|
|
440ad58a77 | ||
|
|
8d33476472 | ||
|
|
75d0be9742 | ||
|
|
8daf9bb347 | ||
|
|
14c9e33b60 | ||
|
|
2da5cc34a8 | ||
|
|
9516e7184f | ||
|
|
fae712b9d4 | ||
|
|
39d3995ea0 | ||
|
|
6e7812a11b | ||
|
|
36dc3c0b5c | ||
|
|
ef9ed50533 | ||
|
|
bd4f2b8b7c | ||
|
|
d66664b3d4 | ||
|
|
6ad29c6a39 | ||
|
|
64a691a3c7 | ||
|
|
7fe8b8b7a9 | ||
|
|
a0ecfed693 | ||
|
|
ca7077caf6 | ||
|
|
1bbed80e2e | ||
|
|
0895f9ffcb | ||
|
|
210c4d4024 | ||
|
|
2cd98a438f | ||
|
|
33366efe11 | ||
|
|
88356c7b2a | ||
|
|
1a04b7b9e7 | ||
|
|
8eee46d85c | ||
|
|
ea1e51a655 | ||
|
|
58fc91b810 | ||
|
|
918f35f824 | ||
|
|
bd80a6f34f | ||
|
|
63f0a2058d | ||
|
|
dc31aeb24e | ||
|
|
19c752e81d | ||
|
|
05ba908a7f | ||
|
|
8db7c7d92b | ||
|
|
990093c0cb | ||
|
|
27d7fe48c6 | ||
|
|
79819aed19 | ||
|
|
5ee0a7b946 | ||
|
|
3f3faaca9b | ||
|
|
d5a7ae1865 | ||
|
|
490c4bde02 | ||
|
|
cab9553235 | ||
|
|
7f034724a9 | ||
|
|
efcf64ed7d | ||
|
|
632bcb9944 | ||
|
|
4adc5677a0 | ||
|
|
1b070e720d | ||
|
|
520244eea9 | ||
|
|
e83df37616 | ||
|
|
c96f3cea61 | ||
|
|
29e1426a79 | ||
|
|
1be7713f56 | ||
|
|
5876fdca10 | ||
|
|
8e821445c2 | ||
|
|
9bd8d8e9cb | ||
|
|
e8d06c314e | ||
|
|
3c4327e4dd | ||
|
|
1eacbe62d6 | ||
|
|
a2474c9c43 | ||
|
|
cc9e11859d | ||
|
|
94cdb2ed29 | ||
|
|
f60b308dec | ||
|
|
616fe2c3c1 | ||
|
|
d1be8991b3 | ||
|
|
82fbb5e024 | ||
|
|
15a3e80d62 | ||
|
|
6726a7c562 | ||
|
|
8a8cb159a4 | ||
|
|
87ffd38dcd | ||
|
|
8f2c6ab0db | ||
|
|
cc39be8207 | ||
|
|
b82391da0a | ||
|
|
a9082d8b6f | ||
|
|
ecc924301d | ||
|
|
11ec263a64 | ||
|
|
bbf7956f6d | ||
|
|
b0f26f64f7 | ||
|
|
bd09ecf688 | ||
|
|
a6ec43fd46 | ||
|
|
0a9882e909 | ||
|
|
c8d26db4b4 | ||
|
|
fdeedcfe7b | ||
|
|
2211618ada | ||
|
|
c87713f040 | ||
|
|
91fc46691e | ||
|
|
ad10328b73 | ||
|
|
0b8301cc1c | ||
|
|
b768632b0c | ||
|
|
f74e8e6689 | ||
|
|
805745f384 | ||
|
|
824fb4d5ec | ||
|
|
d74677abd0 | ||
|
|
df5c3be7fa | ||
|
|
cc60edf8d3 | ||
|
|
d1e0270bee | ||
|
|
5353531e8b | ||
|
|
9cad4d6054 | ||
|
|
d9ebb61dc1 | ||
|
|
2ae7838aeb | ||
|
|
fd4ef4b172 | ||
|
|
959ee90810 | ||
|
|
cb7c5b7458 | ||
|
|
c06dd8e273 | ||
|
|
4542337f4f | ||
|
|
376ec1a61c | ||
|
|
51e28065ee | ||
|
|
3d5879ecb8 | ||
|
|
61418a1a1b | ||
|
|
9c8d10b70c | ||
|
|
131e071b2d | ||
|
|
bfa396b127 | ||
|
|
ffa691c4ee | ||
|
|
0e7dbbb04d | ||
|
|
86f3ae2301 | ||
|
|
12e87cc0f2 | ||
|
|
f156ba1877 | ||
|
|
60de1b9737 | ||
|
|
5232a2bf3f | ||
|
|
9460c264eb | ||
|
|
df6cca0731 | ||
|
|
e801ea949b | ||
|
|
3d5bef78b3 | ||
|
|
a46185e4dd | ||
|
|
cdf0a1137d | ||
|
|
46eb89695d | ||
|
|
4c259cd60f | ||
|
|
d172d3db73 | ||
|
|
ca40047f0b | ||
|
|
ac18d871ca | ||
|
|
24c459557d | ||
|
|
63693f7a83 | ||
|
|
09c03abf51 | ||
|
|
8764c6c471 | ||
|
|
8fb54dbb7c | ||
|
|
bebf1e7ae3 | ||
|
|
03c6a6ce59 | ||
|
|
142b0f7203 | ||
|
|
f1beb488ce | ||
|
|
89deddb9e0 | ||
|
|
e7403ba2a4 | ||
|
|
aa93172c1d | ||
|
|
689d92dc66 | ||
|
|
fa4081d669 | ||
|
|
4466c5b4ec | ||
|
|
431ae7b01b | ||
|
|
561d60bccd | ||
|
|
d603f1edd0 | ||
|
|
8f2b81bb79 | ||
|
|
63638ce4a1 | ||
|
|
a96a2ec9ec | ||
|
|
a431867f41 | ||
|
|
32c6818ee8 | ||
|
|
f6698c0286 | ||
|
|
2d7bf84593 | ||
|
|
a8cf6b6f29 | ||
|
|
15b8ea5a0d | ||
|
|
c06de8095e | ||
|
|
0803e33d1d | ||
|
|
d883b860ac | ||
|
|
88c7dc52be | ||
|
|
5aa8261b7b | ||
|
|
da75b1758f | ||
|
|
7237da9764 | ||
|
|
3634fca835 | ||
|
|
24ead9f09b | ||
|
|
15e7a260bf | ||
|
|
e3bc50e4fc | ||
|
|
6a03b7637e | ||
|
|
8b0d598d8a | ||
|
|
8ca3d26cbb | ||
|
|
e896e5bb27 | ||
|
|
939e3790ee | ||
|
|
8c81a9fc19 | ||
|
|
5c15b7f503 | ||
|
|
f164225bbe | ||
|
|
61fa0f65ab | ||
|
|
ac436ae186 | ||
|
|
5871464681 | ||
|
|
138cf760b2 | ||
|
|
cb64b940a5 | ||
|
|
03433278be | ||
|
|
f42c6d8375 | ||
|
|
afe28d83c9 | ||
|
|
5ac92cf362 | ||
|
|
264cad5301 | ||
|
|
7de0b075cb | ||
|
|
e04a8eeea9 | ||
|
|
c2b439c463 | ||
|
|
de754a6a6e | ||
|
|
8bea8ce623 | ||
|
|
a33c0887b0 | ||
|
|
559cd48c4f | ||
|
|
07241b5efb | ||
|
|
2be1411179 | ||
|
|
b9460d2028 | ||
|
|
959731609f | ||
|
|
d8dcc911b5 | ||
|
|
1c8bdc7e7e | ||
|
|
7acc2fcb1b | ||
|
|
2b38e62c85 | ||
|
|
0569dd1a26 | ||
|
|
43a41290a0 | ||
|
|
a3c5d253b3 | ||
|
|
055abf62cd | ||
|
|
ca2b7202e6 | ||
|
|
b6c654f039 | ||
|
|
60fdbfb838 | ||
|
|
f6f786f1b6 | ||
|
|
1a1e53ae70 | ||
|
|
fc31528367 | ||
|
|
48b3b08f0a | ||
|
|
cfdceca9f3 | ||
|
|
0fef28e4a5 | ||
|
|
efaf9ea96c | ||
|
|
68762e73a2 | ||
|
|
d5ffc80ea5 | ||
|
|
0d44b6cb37 | ||
|
|
da65de038e | ||
|
|
80746d20fd | ||
|
|
c3884c5dfd | ||
|
|
222a841226 | ||
|
|
934d5e7ca8 | ||
|
|
dbca077f31 | ||
|
|
7ab9aa77b8 | ||
|
|
6fc5f8c685 | ||
|
|
1a681c2063 | ||
|
|
58d3d1ed9a | ||
|
|
22081cbd48 | ||
|
|
b7d5ce4bc5 | ||
|
|
e0b38f5804 | ||
|
|
482ce62370 | ||
|
|
bc8948eecf | ||
|
|
a9994970fc | ||
|
|
91593d5d40 | ||
|
|
ac9e5846c4 | ||
|
|
9c370f729a | ||
|
|
36beffe140 | ||
|
|
f21991f4fc | ||
|
|
ad02983098 | ||
|
|
25d346c201 | ||
|
|
1a56021e75 | ||
|
|
da66aead54 | ||
|
|
f14032d69d | ||
|
|
9658af7c04 | ||
|
|
490b11aa3a | ||
|
|
e7643c0343 | ||
|
|
5c02e79105 | ||
|
|
b2c15ab2cb | ||
|
|
4d3c5ef7c1 | ||
|
|
83b9332125 | ||
|
|
3d83f4928a | ||
|
|
c06bc71020 | ||
|
|
3e0da37e16 | ||
|
|
986f50c6da | ||
|
|
76903f6868 | ||
|
|
bd5262e21d | ||
|
|
ebd593bf92 | ||
|
|
67ece2ac5c | ||
|
|
051a610e56 | ||
|
|
3d15eadb5d | ||
|
|
175f9d58ad | ||
|
|
8d907a76bf | ||
|
|
cea5b8b138 | ||
|
|
27569a746e | ||
|
|
20b7403a6a | ||
|
|
6c1298f7ef | ||
|
|
df60cb617f | ||
|
|
c16bcef5a6 | ||
|
|
ffc134d26c | ||
|
|
5ec08e9758 | ||
|
|
4f24141689 | ||
|
|
9e99807bd0 | ||
|
|
10beee84fb | ||
|
|
7f25419caf | ||
|
|
b0de27a721 | ||
|
|
e1fc9039b2 | ||
|
|
6cf69f04ab | ||
|
|
c1b9baf8b6 | ||
|
|
151076a79e | ||
|
|
b116d82376 | ||
|
|
be978f2e9f | ||
|
|
663c8b3824 | ||
|
|
05e6c2c2df | ||
|
|
057a980982 | ||
|
|
73e8516024 | ||
|
|
8ba6095b1b | ||
|
|
43dcefdcf0 | ||
|
|
93bee8c82c | ||
|
|
0385d4dbb3 | ||
|
|
aefee5211a | ||
|
|
dd2c4b6b3c | ||
|
|
f01dc0a539 | ||
|
|
7883e3161d | ||
|
|
0275cb6dd7 | ||
|
|
e1d2305ddd | ||
|
|
b19d56ad02 | ||
|
|
0887c46f14 | ||
|
|
9d322c3a94 | ||
|
|
1776217f1c | ||
|
|
79f011fe17 | ||
|
|
f5474840b3 | ||
|
|
be13eb1d0d | ||
|
|
02fe7e31d0 | ||
|
|
5525bc2257 | ||
|
|
cb82578b27 | ||
|
|
24f2c49e0b | ||
|
|
9cde488577 | ||
|
|
1ce3343578 | ||
|
|
40fe87920b | ||
|
|
1cf286b057 | ||
|
|
672db903f3 | ||
|
|
e8f1b411ba | ||
|
|
742456dd87 | ||
|
|
657ad506a4 | ||
|
|
22af2dc2d9 | ||
|
|
6c1798097c | ||
|
|
8454d1d3e5 | ||
|
|
9e25686c7c | ||
|
|
760bab7d29 | ||
|
|
3976e49e35 | ||
|
|
7092e24098 | ||
|
|
eeae01e661 | ||
|
|
ccd56f2dda | ||
|
|
9402b29684 | ||
|
|
e8e1467f27 | ||
|
|
0fb70607d9 | ||
|
|
a60826529b | ||
|
|
99f8fa8253 | ||
|
|
0222eef6b5 | ||
|
|
c350fc466e | ||
|
|
41cbabcf88 | ||
|
|
2101731f0b | ||
|
|
bcf2f7a5dc | ||
|
|
9f704fb8ff | ||
|
|
7c158af3cc | ||
|
|
66c6463f44 | ||
|
|
449d1191ff | ||
|
|
f4705ad4e1 | ||
|
|
143eb655b1 | ||
|
|
bbf009e15d | ||
|
|
ecf9052452 | ||
|
|
869cae0675 | ||
|
|
dd36bbce42 | ||
|
|
939ceb32ce | ||
|
|
e2fe04749b | ||
|
|
20a9780654 | ||
|
|
c77526e8c5 | ||
|
|
1434d7ddad | ||
|
|
b4d85b782e | ||
|
|
f75e8d1fd4 | ||
|
|
c1c21d826d | ||
|
|
51e6887bde | ||
|
|
bde5597467 | ||
|
|
de967a0160 | ||
|
|
9527b41b62 | ||
|
|
1f1ac1f246 | ||
|
|
ff14cf90f0 | ||
|
|
e8193a0aa0 | ||
|
|
21483448b9 | ||
|
|
769b63d9ca | ||
|
|
dcf66749af | ||
|
|
500b8632df | ||
|
|
9a2dcf2004 | ||
|
|
0d8d043250 | ||
|
|
730da857e1 | ||
|
|
c96902d622 | ||
|
|
ee895d0752 | ||
|
|
676ed6bd44 | ||
|
|
931417928f | ||
|
|
0076236280 | ||
|
|
ae53ca6f4f | ||
|
|
9a36d9d663 | ||
|
|
f55c9b7273 | ||
|
|
6ff31b90c7 | ||
|
|
a0996bd0cf | ||
|
|
f405ac3293 | ||
|
|
2d999138ba | ||
|
|
1d533e49e4 | ||
|
|
dee479ce3c | ||
|
|
715f37eb0b | ||
|
|
56543b8db4 | ||
|
|
7f3950018e | ||
|
|
d26e0976db | ||
|
|
95a51ce4f3 | ||
|
|
0925253a9d | ||
|
|
98bf5a102e | ||
|
|
ff0c12c551 | ||
|
|
243da124a8 | ||
|
|
deb4585d4b | ||
|
|
afdee2cd48 | ||
|
|
f4dd1bed63 | ||
|
|
2589fbe560 | ||
|
|
d96f951113 | ||
|
|
f5d013187b | ||
|
|
50ab864698 | ||
|
|
b1c832d27f | ||
|
|
5ba6c5ee00 | ||
|
|
ac6618a943 | ||
|
|
decdd1b25d | ||
|
|
97c8cefb7d | ||
|
|
bfb69ccccd | ||
|
|
958ec41f4e | ||
|
|
dc5bede084 | ||
|
|
755526834e | ||
|
|
221f78aa9a | ||
|
|
4e640bae88 | ||
|
|
014d1f8cd2 | ||
|
|
6acfc77d08 | ||
|
|
033462d25f | ||
|
|
2512253020 | ||
|
|
c331a83b74 | ||
|
|
56829ff921 | ||
|
|
6037ac4052 | ||
|
|
1f0ef78219 | ||
|
|
1c469300f5 | ||
|
|
7ba611bdb7 | ||
|
|
aba61120e4 | ||
|
|
e885bf2f2a | ||
|
|
ddfa0a5a0f | ||
|
|
855987d5fa | ||
|
|
bc95dc2959 | ||
|
|
12548b0af2 | ||
|
|
cfc0003388 | ||
|
|
3c49ed570a | ||
|
|
2f0fdd1d36 | ||
|
|
2d7bab8adb | ||
|
|
ab1c506226 | ||
|
|
99addf2cfa | ||
|
|
64af029c86 | ||
|
|
4793897511 | ||
|
|
786468f437 | ||
|
|
1f517c3faf | ||
|
|
4c15e6675a | ||
|
|
5358863fc6 | ||
|
|
0e15d6c9d2 | ||
|
|
4b2ff9f614 | ||
|
|
11b7cf32ca | ||
|
|
f6e4753b34 | ||
|
|
e8a3745b5e | ||
|
|
091ce90359 | ||
|
|
32d2eb11f0 | ||
|
|
b5fa188805 | ||
|
|
8f8edc9565 | ||
|
|
3c54f5f565 | ||
|
|
13cf1feefb | ||
|
|
556cac8138 | ||
|
|
6772568a58 | ||
|
|
8926dd1173 | ||
|
|
dcfad7a427 | ||
|
|
db4795744e | ||
|
|
f17dfb9a31 | ||
|
|
f79c29d168 | ||
|
|
7b84ddd358 | ||
|
|
283a9d0507 | ||
|
|
c01571d11d | ||
|
|
757281ce34 | ||
|
|
b57a2c50a9 | ||
|
|
36385a74ba | ||
|
|
4f839136c7 | ||
|
|
c048dcf02a | ||
|
|
9ede8ffe4d | ||
|
|
d16bed4ad7 | ||
|
|
68dae2d1fe | ||
|
|
d05c67ffaa | ||
|
|
5ca3358237 | ||
|
|
ffc81621d7 | ||
|
|
a489d21add | ||
|
|
bc004b3b27 | ||
|
|
52889e3504 | ||
|
|
6764f86980 | ||
|
|
02af138069 | ||
|
|
427c2d5d2a | ||
|
|
87d1047fa9 | ||
|
|
34b788cb88 | ||
|
|
291dc51849 | ||
|
|
1b7d604858 | ||
|
|
b51397fe19 | ||
|
|
253d707131 | ||
|
|
68e1556378 | ||
|
|
23150fcfc3 | ||
|
|
1f14bf4bda | ||
|
|
b4677c4546 | ||
|
|
9f3bc1ead8 | ||
|
|
607c2b6c4a | ||
|
|
627b822f15 | ||
|
|
3820710c56 | ||
|
|
cce1fadc33 | ||
|
|
cf28e42a26 | ||
|
|
4c4d13cdd0 | ||
|
|
77971f9c96 | ||
|
|
624594bb5c | ||
|
|
eed7bb2e1a | ||
|
|
cc14963bc8 | ||
|
|
7218e71884 | ||
|
|
faf4557783 | ||
|
|
728cf15c45 | ||
|
|
48f6624737 | ||
|
|
5286ad1cd6 | ||
|
|
ee12e691be | ||
|
|
c2f98043df | ||
|
|
05b408d107 | ||
|
|
0d4b6f6344 | ||
|
|
07dc725857 | ||
|
|
d16194b794 | ||
|
|
d0f73344bf | ||
|
|
08dd4ed072 | ||
|
|
501a1c2f4d | ||
|
|
a0f157c8b6 | ||
|
|
2d424fc9a6 | ||
|
|
a40866e27f | ||
|
|
60ddc45b9b | ||
|
|
03b8bd5e22 | ||
|
|
de29528165 | ||
|
|
6b45ed7e78 | ||
|
|
59c7c49efa | ||
|
|
33d59c8b7d | ||
|
|
5f7ccd4e7c | ||
|
|
960f27f6ef | ||
|
|
aa57d89bea | ||
|
|
c5b1ad480f | ||
|
|
feadd022e7 | ||
|
|
4c0a5e8c30 | ||
|
|
b0d4c87d8e | ||
|
|
1a0f0a11b1 | ||
|
|
d21c060903 | ||
|
|
0230a4af01 | ||
|
|
2ed41ab164 | ||
|
|
c89941d435 | ||
|
|
55856be1de | ||
|
|
a6e29c5615 | ||
|
|
ecf9f26547 | ||
|
|
4dabfcba23 | ||
|
|
53c63ba68f | ||
|
|
2d4ed85e94 | ||
|
|
470c5076a3 | ||
|
|
762b51a5b4 | ||
|
|
13e925e29f | ||
|
|
e4e37d0cb4 | ||
|
|
3660cd26ae | ||
|
|
a31c995508 | ||
|
|
d0501ee0a6 | ||
|
|
3ddba81e24 | ||
|
|
c9d5ec26a2 | ||
|
|
441b91381f | ||
|
|
0db264dcac | ||
|
|
783f6283ca |
No files matched your search
@@ -18,3 +18,8 @@ VITE_APP_DOCALERT_ENABLE=true
|
|||||||
|
|
||||||
# 百度统计
|
# 百度统计
|
||||||
VITE_APP_BAIDU_CODE = a1ff8825baa73c3a78eb96aa40325abc
|
VITE_APP_BAIDU_CODE = a1ff8825baa73c3a78eb96aa40325abc
|
||||||
|
|
||||||
|
# 默认账户密码
|
||||||
|
VITE_APP_DEFAULT_LOGIN_TENANT = 芋道源码
|
||||||
|
VITE_APP_DEFAULT_LOGIN_USERNAME = admin
|
||||||
|
VITE_APP_DEFAULT_LOGIN_PASSWORD = admin123
|
||||||
@@ -1,19 +1,13 @@
|
|||||||
# 开发环境:本地只启动前端项目,依赖开发环境(后端、APP)
|
# 开发环境:本地只启动前端项目,依赖开发环境(后端、APP)
|
||||||
NODE_ENV=development
|
NODE_ENV=production
|
||||||
|
|
||||||
VITE_DEV=true
|
VITE_DEV=true
|
||||||
|
|
||||||
# 请求路径
|
# 请求路径
|
||||||
VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
|
VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
|
||||||
# VITE_BASE_URL='http://dofast.demo.huizhizao.vip:20001'
|
|
||||||
|
|
||||||
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
||||||
VITE_UPLOAD_TYPE=server
|
VITE_UPLOAD_TYPE=server
|
||||||
# 上传路径
|
|
||||||
VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload'
|
|
||||||
|
|
||||||
# 接口前缀
|
|
||||||
VITE_API_BASEPATH=/dev-api
|
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VITE_API_URL=/admin-api
|
VITE_API_URL=/admin-api
|
||||||
@@ -37,4 +31,4 @@ VITE_OUT_DIR=dist
|
|||||||
VITE_MALL_H5_DOMAIN='http://mall.yudao.iocoder.cn'
|
VITE_MALL_H5_DOMAIN='http://mall.yudao.iocoder.cn'
|
||||||
|
|
||||||
# 验证码的开关
|
# 验证码的开关
|
||||||
VITE_APP_CAPTCHA_ENABLE=false
|
VITE_APP_CAPTCHA_ENABLE=true
|
||||||
@@ -8,11 +8,6 @@ VITE_BASE_URL='http://localhost:48080'
|
|||||||
|
|
||||||
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
|
||||||
VITE_UPLOAD_TYPE=server
|
VITE_UPLOAD_TYPE=server
|
||||||
# 上传路径
|
|
||||||
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload'
|
|
||||||
|
|
||||||
# 接口前缀
|
|
||||||
VITE_API_BASEPATH=/dev-api
|
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VITE_API_URL=/admin-api
|
VITE_API_URL=/admin-api
|
||||||
|
|||||||
@@ -8,11 +8,6 @@ VITE_BASE_URL='http://localhost:48080'
|
|||||||
|
|
||||||
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
||||||
VITE_UPLOAD_TYPE=server
|
VITE_UPLOAD_TYPE=server
|
||||||
# 上传路径
|
|
||||||
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload'
|
|
||||||
|
|
||||||
# 接口前缀
|
|
||||||
VITE_API_BASEPATH=
|
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VITE_API_URL=/admin-api
|
VITE_API_URL=/admin-api
|
||||||
|
|||||||
@@ -8,11 +8,6 @@ VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
|
|||||||
|
|
||||||
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
||||||
VITE_UPLOAD_TYPE=server
|
VITE_UPLOAD_TYPE=server
|
||||||
# 上传路径
|
|
||||||
VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload'
|
|
||||||
|
|
||||||
# 接口前缀
|
|
||||||
VITE_API_BASEPATH=
|
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VITE_API_URL=/admin-api
|
VITE_API_URL=/admin-api
|
||||||
|
|||||||
@@ -8,11 +8,6 @@ VITE_BASE_URL='http://localhost:48080'
|
|||||||
|
|
||||||
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
||||||
VITE_UPLOAD_TYPE=server
|
VITE_UPLOAD_TYPE=server
|
||||||
# 上传路径
|
|
||||||
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload'
|
|
||||||
|
|
||||||
# 接口前缀
|
|
||||||
VITE_API_BASEPATH=
|
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VITE_API_URL=/admin-api
|
VITE_API_URL=/admin-api
|
||||||
|
|||||||
@@ -2,9 +2,7 @@ node_modules
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
dist
|
dist
|
||||||
dist-ssr
|
dist-ssr
|
||||||
*.local
|
|
||||||
/dist*
|
/dist*
|
||||||
*-lock.*
|
|
||||||
pnpm-debug
|
pnpm-debug
|
||||||
auto-*.d.ts
|
auto-*.d.ts
|
||||||
.idea
|
.idea
|
||||||
|
|||||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 348 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 13 KiB |
@@ -3,7 +3,6 @@
|
|||||||
"christian-kohler.path-intellisense",
|
"christian-kohler.path-intellisense",
|
||||||
"vscode-icons-team.vscode-icons",
|
"vscode-icons-team.vscode-icons",
|
||||||
"davidanson.vscode-markdownlint",
|
"davidanson.vscode-markdownlint",
|
||||||
"stylelint.vscode-stylelint",
|
|
||||||
"dbaeumer.vscode-eslint",
|
"dbaeumer.vscode-eslint",
|
||||||
"esbenp.prettier-vscode",
|
"esbenp.prettier-vscode",
|
||||||
"mrmlnc.vscode-less",
|
"mrmlnc.vscode-less",
|
||||||
|
|||||||
@@ -83,10 +83,11 @@
|
|||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
},
|
},
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.fixAll.eslint": "explicit"
|
"source.fixAll.eslint": "explicit",
|
||||||
|
"source.fixAll.stylelint": "explicit"
|
||||||
},
|
},
|
||||||
"[vue]": {
|
"[vue]": {
|
||||||
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
},
|
},
|
||||||
"i18n-ally.localesPaths": ["src/locales"],
|
"i18n-ally.localesPaths": ["src/locales"],
|
||||||
"i18n-ally.keystyle": "nested",
|
"i18n-ally.keystyle": "nested",
|
||||||
|
|||||||
@@ -54,17 +54,16 @@
|
|||||||
|
|
||||||
推荐 VS Code 开发,配合插件如下:
|
推荐 VS Code 开发,配合插件如下:
|
||||||
|
|
||||||
| 插件名 | 功能 |
|
| 插件名 | 功能 |
|
||||||
|-------------------------------|--------------------------|
|
|-------------------------------|---------------------|
|
||||||
| TypeScript Vue Plugin (Volar) | 用于 TypeScript 的 Vue 插件 |
|
| Vue - Official | Vue 与 TypeScript 支持 |
|
||||||
| Vue Language Features (Volar) | Vue3.0 语法支持 |
|
| unocss | unocss for vscode |
|
||||||
| unocss | unocss for vscode |
|
| Iconify IntelliSense | Iconify 预览和搜索 |
|
||||||
| Iconify IntelliSense | Iconify 预览和搜索 |
|
| i18n Ally | 国际化智能提示 |
|
||||||
| i18n Ally | 国际化智能提示 |
|
| Stylelint | Css 格式化 |
|
||||||
| Stylelint | Css 格式化 |
|
| Prettier | 代码格式化 |
|
||||||
| Prettier | 代码格式化 |
|
| ESLint | 脚本代码检查 |
|
||||||
| ESLint | 脚本代码检查 |
|
| DotENV | env 文件高亮 |
|
||||||
| DotENV | env 文件高亮 |
|
|
||||||
|
|
||||||
## 🔥 后端架构
|
## 🔥 后端架构
|
||||||
|
|
||||||
@@ -117,6 +116,8 @@
|
|||||||
| 🚀 | 应用管理 | 管理 SSO 单点登录的应用,支持多种 OAuth2 授权方式 |
|
| 🚀 | 应用管理 | 管理 SSO 单点登录的应用,支持多种 OAuth2 授权方式 |
|
||||||
| 🚀 | 地区管理 | 展示省份、城市、区镇等城市信息,支持 IP 对应城市 |
|
| 🚀 | 地区管理 | 展示省份、城市、区镇等城市信息,支持 IP 对应城市 |
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
### 工作流程
|
### 工作流程
|
||||||
|
|
||||||
| | 功能 | 描述 |
|
| | 功能 | 描述 |
|
||||||
@@ -129,6 +130,8 @@
|
|||||||
| 🚀 | 已办任务 | 查看自己【已】审批的工作任务,未来会支持回退操作 |
|
| 🚀 | 已办任务 | 查看自己【已】审批的工作任务,未来会支持回退操作 |
|
||||||
| 🚀 | OA 请假 | 作为业务自定义接入工作流的使用示例,只需创建请求对应的工作流程,即可进行审批 |
|
| 🚀 | OA 请假 | 作为业务自定义接入工作流的使用示例,只需创建请求对应的工作流程,即可进行审批 |
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
### 支付系统
|
### 支付系统
|
||||||
|
|
||||||
| | 功能 | 描述 |
|
| | 功能 | 描述 |
|
||||||
@@ -142,27 +145,27 @@ ps:核心功能已经实现,正在对接微信小程序中...
|
|||||||
|
|
||||||
### 基础设施
|
### 基础设施
|
||||||
|
|
||||||
| | 功能 | 描述 |
|
| | 功能 | 描述 |
|
||||||
|-----|----------|----------------------------------------------|
|
|----|----------|----------------------------------------------|
|
||||||
| 🚀 | 代码生成 | 前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载 |
|
| 🚀 | 代码生成 | 前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载 |
|
||||||
| 🚀 | 系统接口 | 基于 Swagger 自动生成相关的 RESTful API 接口文档 |
|
| 🚀 | 系统接口 | 基于 Swagger 自动生成相关的 RESTful API 接口文档 |
|
||||||
| 🚀 | 数据库文档 | 基于 Screw 自动生成数据库文档,支持导出 Word、HTML、MD 格式 |
|
| 🚀 | 数据库文档 | 基于 Screw 自动生成数据库文档,支持导出 Word、HTML、MD 格式 |
|
||||||
| | 表单构建 | 拖动表单元素生成相应的 HTML 代码,支持导出 JSON、Vue 文件 |
|
| | 表单构建 | 拖动表单元素生成相应的 HTML 代码,支持导出 JSON、Vue 文件 |
|
||||||
| 🚀 | 配置管理 | 对系统动态配置常用参数,支持 SpringBoot 加载 |
|
| 🚀 | 配置管理 | 对系统动态配置常用参数,支持 SpringBoot 加载 |
|
||||||
| ⭐️ | 定时任务 | 在线(添加、修改、删除)任务调度包含执行结果日志 |
|
| ⭐️ | 定时任务 | 在线(添加、修改、删除)任务调度包含执行结果日志 |
|
||||||
| 🚀 | 文件服务 | 支持将文件存储到 S3(MinIO、阿里云、腾讯云、七牛云)、本地、FTP、数据库等 |
|
| 🚀 | 文件服务 | 支持将文件存储到 S3(MinIO、阿里云、腾讯云、七牛云)、本地、FTP、数据库等 |
|
||||||
| 🚀 | API 日志 | 包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题 |
|
| 🚀 | API 日志 | 包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题 |
|
||||||
| | MySQL 监控 | 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈 |
|
| | MySQL 监控 | 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈 |
|
||||||
| | Redis 监控 | 监控 Redis 数据库的使用情况,使用的 Redis Key 管理 |
|
| | Redis 监控 | 监控 Redis 数据库的使用情况,使用的 Redis Key 管理 |
|
||||||
| 🚀 | 消息队列 | 基于 Redis 实现消息队列,Stream 提供集群消费,Pub/Sub 提供广播消费 |
|
| 🚀 | 消息队列 | 基于 Redis 实现消息队列,Stream 提供集群消费,Pub/Sub 提供广播消费 |
|
||||||
| 🚀 | Java 监控 | 基于 Spring Boot Admin 实现 Java 应用的监控 |
|
| 🚀 | Java 监控 | 基于 Spring Boot Admin 实现 Java 应用的监控 |
|
||||||
| 🚀 | 链路追踪 | 接入 SkyWalking 组件,实现链路追踪 |
|
| 🚀 | 链路追踪 | 接入 SkyWalking 组件,实现链路追踪 |
|
||||||
| 🚀 | 日志中心 | 接入 SkyWalking 组件,实现日志中心 |
|
| 🚀 | 日志中心 | 接入 SkyWalking 组件,实现日志中心 |
|
||||||
| 🚀 | 分布式锁 | 基于 Redis 实现分布式锁,满足并发场景 |
|
| 🚀 | 服务保障 | 基于 Redis 实现分布式锁、幂等、限流功能,满足高并发场景 |
|
||||||
| 🚀 | 幂等组件 | 基于 Redis 实现幂等组件,解决重复请求问题 |
|
| 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 |
|
||||||
| 🚀 | 服务保障 | 基于 Resilience4j 实现服务的稳定性,包括限流、熔断等功能 |
|
| 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 |
|
||||||
| 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 |
|
|
||||||
| 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 |
|

|
||||||
|
|
||||||
### 数据报表
|
### 数据报表
|
||||||
|
|
||||||
@@ -188,26 +191,24 @@ ps:核心功能已经实现,正在对接微信小程序中...
|
|||||||
|
|
||||||
### 商城系统
|
### 商城系统
|
||||||
|
|
||||||
|
演示地址:<https://doc.iocoder.cn/mall-preview/>
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入芋道快速开发平台_
|
|
||||||
|
|
||||||
演示地址:<https://doc.iocoder.cn/mall-preview/>
|
|
||||||
|
|
||||||
### ERP 系统
|
### ERP 系统
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
演示地址:<https://doc.iocoder.cn/erp-preview/>
|
演示地址:<https://doc.iocoder.cn/erp-preview/>
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
### CRM 系统
|
### CRM 系统
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
演示地址:<https://doc.iocoder.cn/crm-preview/>
|
演示地址:<https://doc.iocoder.cn/crm-preview/>
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## 🐷 演示图
|
## 🐷 演示图
|
||||||
|
|
||||||
### 系统功能
|
### 系统功能
|
||||||
|
|||||||
@@ -27,6 +27,12 @@ const include = [
|
|||||||
'echarts-wordcloud',
|
'echarts-wordcloud',
|
||||||
'@wangeditor/editor',
|
'@wangeditor/editor',
|
||||||
'@wangeditor/editor-for-vue',
|
'@wangeditor/editor-for-vue',
|
||||||
|
'@microsoft/fetch-event-source',
|
||||||
|
'markdown-it',
|
||||||
|
'markmap-view',
|
||||||
|
'markmap-lib',
|
||||||
|
'markmap-toolbar',
|
||||||
|
'highlight.js',
|
||||||
'element-plus',
|
'element-plus',
|
||||||
'element-plus/es',
|
'element-plus/es',
|
||||||
'element-plus/es/locale/lang/zh-cn',
|
'element-plus/es/locale/lang/zh-cn',
|
||||||
@@ -104,7 +110,11 @@ const include = [
|
|||||||
'element-plus/es/components/collapse/style/css',
|
'element-plus/es/components/collapse/style/css',
|
||||||
'element-plus/es/components/collapse-item/style/css',
|
'element-plus/es/components/collapse-item/style/css',
|
||||||
'element-plus/es/components/button-group/style/css',
|
'element-plus/es/components/button-group/style/css',
|
||||||
'element-plus/es/components/text/style/css'
|
'element-plus/es/components/text/style/css',
|
||||||
|
'element-plus/es/components/segmented/style/css',
|
||||||
|
'@element-plus/icons-vue',
|
||||||
|
'element-plus/es/components/footer/style/css',
|
||||||
|
'element-plus/es/components/empty/style/css'
|
||||||
]
|
]
|
||||||
|
|
||||||
const exclude = ['@iconify/json']
|
const exclude = ['@iconify/json']
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
{
|
{
|
||||||
"name": "yudao-ui-admin-vue3",
|
"name": "yudao-ui-admin-vue3",
|
||||||
"version": "2.0.1-snapshot",
|
"version": "2.3.0-snapshot",
|
||||||
"description": "基于vue3、vite4、element-plus、typesScript",
|
"description": "基于vue3、vite4、element-plus、typesScript",
|
||||||
"author": "xingyu",
|
"author": "xingyu",
|
||||||
"private": false,
|
"private": false,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"i": "pnpm install",
|
"i": "pnpm install",
|
||||||
"dev": "vite --mode local-dev",
|
"dev": "vite --mode env.local",
|
||||||
"dev-server": "vite --mode dev",
|
"dev-server": "vite --mode dev",
|
||||||
"ts:check": "vue-tsc --noEmit",
|
"ts:check": "vue-tsc --noEmit",
|
||||||
"build:local-dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode local-dev",
|
"build:local": "node ./node_modules/vite/bin/vite.js build",
|
||||||
"build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode local-dev",
|
"build:dev": "node ./node_modules/vite/bin/vite.js build --mode dev",
|
||||||
"build:test": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode test",
|
"build:test": "node ./node_modules/vite/bin/vite.js build --mode test",
|
||||||
"build:stage": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode stage",
|
"build:stage": "node ./node_modules/vite/bin/vite.js build --mode stage",
|
||||||
"build:prod": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode prod",
|
"build:prod": "node ./node_modules/vite/bin/vite.js build --mode prod",
|
||||||
"serve:dev": "vite preview --mode dev",
|
"serve:dev": "vite preview --mode dev",
|
||||||
"serve:prod": "vite preview --mode prod",
|
"serve:prod": "vite preview --mode prod",
|
||||||
"preview": "pnpm build:local-dev && vite preview",
|
"preview": "pnpm build:local && vite preview",
|
||||||
"clean": "npx rimraf node_modules",
|
"clean": "npx rimraf node_modules",
|
||||||
"clean:cache": "npx rimraf node_modules/.cache",
|
"clean:cache": "npx rimraf node_modules/.cache",
|
||||||
"lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src",
|
"lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src",
|
||||||
@@ -29,13 +29,14 @@
|
|||||||
"@form-create/designer": "^3.1.3",
|
"@form-create/designer": "^3.1.3",
|
||||||
"@form-create/element-ui": "^3.1.24",
|
"@form-create/element-ui": "^3.1.24",
|
||||||
"@iconify/iconify": "^3.1.1",
|
"@iconify/iconify": "^3.1.1",
|
||||||
|
"@microsoft/fetch-event-source": "^2.0.1",
|
||||||
"@videojs-player/vue": "^1.0.0",
|
"@videojs-player/vue": "^1.0.0",
|
||||||
"@vueuse/core": "^10.9.0",
|
"@vueuse/core": "^10.9.0",
|
||||||
"@wangeditor/editor": "^5.1.23",
|
"@wangeditor/editor": "^5.1.23",
|
||||||
"@wangeditor/editor-for-vue": "^5.1.10",
|
"@wangeditor/editor-for-vue": "^5.1.10",
|
||||||
"@zxcvbn-ts/core": "^3.0.4",
|
"@zxcvbn-ts/core": "^3.0.4",
|
||||||
"animate.css": "^4.1.1",
|
"animate.css": "^4.1.1",
|
||||||
"axios": "^1.6.7",
|
"axios": "^1.6.8",
|
||||||
"benz-amr-recorder": "^1.1.5",
|
"benz-amr-recorder": "^1.1.5",
|
||||||
"bpmn-js-token-simulation": "^0.10.0",
|
"bpmn-js-token-simulation": "^0.10.0",
|
||||||
"camunda-bpmn-moddle": "^7.0.1",
|
"camunda-bpmn-moddle": "^7.0.1",
|
||||||
@@ -46,24 +47,29 @@
|
|||||||
"driver.js": "^1.3.1",
|
"driver.js": "^1.3.1",
|
||||||
"echarts": "^5.5.0",
|
"echarts": "^5.5.0",
|
||||||
"echarts-wordcloud": "^2.1.0",
|
"echarts-wordcloud": "^2.1.0",
|
||||||
"element-plus": "2.5.3",
|
"element-plus": "2.8.4",
|
||||||
"fast-xml-parser": "^4.3.2",
|
"fast-xml-parser": "^4.3.2",
|
||||||
"highlight.js": "^11.9.0",
|
"highlight.js": "^11.9.0",
|
||||||
"jsencrypt": "^3.3.2",
|
"jsencrypt": "^3.3.2",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
|
"markdown-it": "^14.1.0",
|
||||||
|
"markmap-common": "^0.16.0",
|
||||||
|
"markmap-lib": "^0.16.1",
|
||||||
|
"markmap-toolbar": "^0.17.0",
|
||||||
|
"markmap-view": "^0.16.0",
|
||||||
"min-dash": "^4.1.1",
|
"min-dash": "^4.1.1",
|
||||||
"mitt": "^3.0.1",
|
"mitt": "^3.0.1",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.1.7",
|
||||||
"pinia-plugin-persistedstate": "^3.2.0",
|
"pinia-plugin-persistedstate": "^3.2.1",
|
||||||
"qrcode": "^1.5.3",
|
"qrcode": "^1.5.3",
|
||||||
"qs": "^6.11.2",
|
"qs": "^6.12.0",
|
||||||
"steady-xml": "^0.1.0",
|
"steady-xml": "^0.1.0",
|
||||||
"url": "^0.11.3",
|
"url": "^0.11.3",
|
||||||
"video.js": "^7.21.5",
|
"video.js": "^7.21.5",
|
||||||
"vue": "3.4.20",
|
"vue": "3.4.21",
|
||||||
"vue-dompurify-html": "^4.1.4",
|
"vue-dompurify-html": "^4.1.4",
|
||||||
"vue-i18n": "9.9.1",
|
"vue-i18n": "9.10.2",
|
||||||
"vue-router": "^4.3.0",
|
"vue-router": "^4.3.0",
|
||||||
"vue-types": "^5.1.1",
|
"vue-types": "^5.1.1",
|
||||||
"vuedraggable": "^4.1.0",
|
"vuedraggable": "^4.1.0",
|
||||||
@@ -83,8 +89,8 @@
|
|||||||
"@types/qs": "^6.9.12",
|
"@types/qs": "^6.9.12",
|
||||||
"@typescript-eslint/eslint-plugin": "^7.1.0",
|
"@typescript-eslint/eslint-plugin": "^7.1.0",
|
||||||
"@typescript-eslint/parser": "^7.1.0",
|
"@typescript-eslint/parser": "^7.1.0",
|
||||||
"@unocss/transformer-variant-group": "^0.58.5",
|
|
||||||
"@unocss/eslint-config": "^0.57.4",
|
"@unocss/eslint-config": "^0.57.4",
|
||||||
|
"@unocss/transformer-variant-group": "^0.58.5",
|
||||||
"@vitejs/plugin-legacy": "^5.3.1",
|
"@vitejs/plugin-legacy": "^5.3.1",
|
||||||
"@vitejs/plugin-vue": "^5.0.4",
|
"@vitejs/plugin-vue": "^5.0.4",
|
||||||
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
||||||
@@ -102,6 +108,7 @@
|
|||||||
"postcss-html": "^1.6.0",
|
"postcss-html": "^1.6.0",
|
||||||
"postcss-scss": "^4.0.9",
|
"postcss-scss": "^4.0.9",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
|
"prettier-eslint": "^16.3.0",
|
||||||
"rimraf": "^5.0.5",
|
"rimraf": "^5.0.5",
|
||||||
"rollup": "^4.12.0",
|
"rollup": "^4.12.0",
|
||||||
"sass": "^1.69.5",
|
"sass": "^1.69.5",
|
||||||
@@ -123,7 +130,7 @@
|
|||||||
"vite-plugin-progress": "^0.0.7",
|
"vite-plugin-progress": "^0.0.7",
|
||||||
"vite-plugin-purge-icons": "^0.10.0",
|
"vite-plugin-purge-icons": "^0.10.0",
|
||||||
"vite-plugin-svg-icons": "^2.0.1",
|
"vite-plugin-svg-icons": "^2.0.1",
|
||||||
"vite-plugin-top-level-await": "^1.3.1",
|
"vite-plugin-top-level-await": "^1.4.4",
|
||||||
"vue-eslint-parser": "^9.3.2",
|
"vue-eslint-parser": "^9.3.2",
|
||||||
"vue-tsc": "^1.8.27"
|
"vue-tsc": "^1.8.27"
|
||||||
},
|
},
|
||||||
@@ -136,7 +143,6 @@
|
|||||||
"url": "https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues"
|
"url": "https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://gitee.com/yudaocode/yudao-ui-admin-vue3",
|
"homepage": "https://gitee.com/yudaocode/yudao-ui-admin-vue3",
|
||||||
"packageManager": "pnpm@8.6.0",
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 16.0.0",
|
"node": ">= 16.0.0",
|
||||||
"pnpm": ">=8.6.0"
|
"pnpm": ">=8.6.0"
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// AI 聊天对话 VO
|
||||||
|
export interface ChatConversationVO {
|
||||||
|
id: number // ID 编号
|
||||||
|
userId: number // 用户编号
|
||||||
|
title: string // 对话标题
|
||||||
|
pinned: boolean // 是否置顶
|
||||||
|
roleId: number // 角色编号
|
||||||
|
modelId: number // 模型编号
|
||||||
|
model: string // 模型标志
|
||||||
|
temperature: number // 温度参数
|
||||||
|
maxTokens: number // 单条回复的最大 Token 数量
|
||||||
|
maxContexts: number // 上下文的最大 Message 数量
|
||||||
|
createTime?: Date // 创建时间
|
||||||
|
// 额外字段
|
||||||
|
systemMessage?: string // 角色设定
|
||||||
|
modelName?: string // 模型名字
|
||||||
|
roleAvatar?: string // 角色头像
|
||||||
|
modelMaxTokens?: string // 模型的单条回复的最大 Token 数量
|
||||||
|
modelMaxContexts?: string // 模型的上下文的最大 Message 数量
|
||||||
|
}
|
||||||
|
|
||||||
|
// AI 聊天对话 API
|
||||||
|
export const ChatConversationApi = {
|
||||||
|
// 获得【我的】聊天对话
|
||||||
|
getChatConversationMy: async (id: number) => {
|
||||||
|
return await request.get({ url: `/ai/chat/conversation/get-my?id=${id}` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增【我的】聊天对话
|
||||||
|
createChatConversationMy: async (data?: ChatConversationVO) => {
|
||||||
|
return await request.post({ url: `/ai/chat/conversation/create-my`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新【我的】聊天对话
|
||||||
|
updateChatConversationMy: async (data: ChatConversationVO) => {
|
||||||
|
return await request.put({ url: `/ai/chat/conversation/update-my`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除【我的】聊天对话
|
||||||
|
deleteChatConversationMy: async (id: string) => {
|
||||||
|
return await request.delete({ url: `/ai/chat/conversation/delete-my?id=${id}` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除【我的】所有对话,置顶除外
|
||||||
|
deleteChatConversationMyByUnpinned: async () => {
|
||||||
|
return await request.delete({ url: `/ai/chat/conversation/delete-by-unpinned` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获得【我的】聊天对话列表
|
||||||
|
getChatConversationMyList: async () => {
|
||||||
|
return await request.get({ url: `/ai/chat/conversation/my-list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获得对话分页
|
||||||
|
getChatConversationPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/ai/chat/conversation/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 管理员删除消息
|
||||||
|
deleteChatConversationByAdmin: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/ai/chat/conversation/delete-by-admin?id=${id}` })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
import { fetchEventSource } from '@microsoft/fetch-event-source'
|
||||||
|
import { getAccessToken } from '@/utils/auth'
|
||||||
|
import { config } from '@/config/axios/config'
|
||||||
|
|
||||||
|
// 聊天VO
|
||||||
|
export interface ChatMessageVO {
|
||||||
|
id: number // 编号
|
||||||
|
conversationId: number // 对话编号
|
||||||
|
type: string // 消息类型
|
||||||
|
userId: string // 用户编号
|
||||||
|
roleId: string // 角色编号
|
||||||
|
model: number // 模型标志
|
||||||
|
modelId: number // 模型编号
|
||||||
|
content: string // 聊天内容
|
||||||
|
tokens: number // 消耗 Token 数量
|
||||||
|
createTime: Date // 创建时间
|
||||||
|
roleAvatar: string // 角色头像
|
||||||
|
userAvatar: string // 创建时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// AI chat 聊天
|
||||||
|
export const ChatMessageApi = {
|
||||||
|
// 消息列表
|
||||||
|
getChatMessageListByConversationId: async (conversationId: number | null) => {
|
||||||
|
return await request.get({
|
||||||
|
url: `/ai/chat/message/list-by-conversation-id?conversationId=${conversationId}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 发送 Stream 消息
|
||||||
|
// 为什么不用 axios 呢?因为它不支持 SSE 调用
|
||||||
|
sendChatMessageStream: async (
|
||||||
|
conversationId: number,
|
||||||
|
content: string,
|
||||||
|
ctrl,
|
||||||
|
enableContext: boolean,
|
||||||
|
onMessage,
|
||||||
|
onError,
|
||||||
|
onClose
|
||||||
|
) => {
|
||||||
|
const token = getAccessToken()
|
||||||
|
return fetchEventSource(`${config.base_url}/ai/chat/message/send-stream`, {
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: `Bearer ${token}`
|
||||||
|
},
|
||||||
|
openWhenHidden: true,
|
||||||
|
body: JSON.stringify({
|
||||||
|
conversationId,
|
||||||
|
content,
|
||||||
|
useContext: enableContext
|
||||||
|
}),
|
||||||
|
onmessage: onMessage,
|
||||||
|
onerror: onError,
|
||||||
|
onclose: onClose,
|
||||||
|
signal: ctrl.signal
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除消息
|
||||||
|
deleteChatMessage: async (id: string) => {
|
||||||
|
return await request.delete({ url: `/ai/chat/message/delete?id=${id}` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除指定对话的消息
|
||||||
|
deleteByConversationId: async (conversationId: number) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/ai/chat/message/delete-by-conversation-id?conversationId=${conversationId}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获得消息分页
|
||||||
|
getChatMessagePage: async (params: any) => {
|
||||||
|
return await request.get({ url: '/ai/chat/message/page', params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 管理员删除消息
|
||||||
|
deleteChatMessageByAdmin: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/ai/chat/message/delete-by-admin?id=${id}` })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// AI 绘图 VO
|
||||||
|
export interface ImageVO {
|
||||||
|
id: number // 编号
|
||||||
|
platform: string // 平台
|
||||||
|
model: string // 模型
|
||||||
|
prompt: string // 提示词
|
||||||
|
width: number // 图片宽度
|
||||||
|
height: number // 图片高度
|
||||||
|
status: number // 状态
|
||||||
|
publicStatus: boolean // 公开状态
|
||||||
|
picUrl: string // 任务地址
|
||||||
|
errorMessage: string // 错误信息
|
||||||
|
options: any // 配置 Map<string, string>
|
||||||
|
taskId: number // 任务编号
|
||||||
|
buttons: ImageMidjourneyButtonsVO[] // mj 操作按钮
|
||||||
|
createTime: Date // 创建时间
|
||||||
|
finishTime: Date // 完成时间
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImageDrawReqVO {
|
||||||
|
platform: string // 平台
|
||||||
|
prompt: string // 提示词
|
||||||
|
model: string // 模型
|
||||||
|
style: string // 图像生成的风格
|
||||||
|
width: string // 图片宽度
|
||||||
|
height: string // 图片高度
|
||||||
|
options: object // 绘制参数,Map<String, String>
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImageMidjourneyImagineReqVO {
|
||||||
|
prompt: string // 提示词
|
||||||
|
model: string // 模型 mj nijj
|
||||||
|
base64Array: string[] // size不能为空
|
||||||
|
width: string // 图片宽度
|
||||||
|
height: string // 图片高度
|
||||||
|
version: string // 版本
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImageMidjourneyActionVO {
|
||||||
|
id: number // 图片编号
|
||||||
|
customId: string // MJ::JOB::upsample::1::85a4b4c1-8835-46c5-a15c-aea34fad1862 动作标识
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImageMidjourneyButtonsVO {
|
||||||
|
customId: string // MJ::JOB::upsample::1::85a4b4c1-8835-46c5-a15c-aea34fad1862 动作标识
|
||||||
|
emoji: string // 图标 emoji
|
||||||
|
label: string // Make Variations 文本
|
||||||
|
style: number // 样式: 2(Primary)、3(Green)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AI 图片 API
|
||||||
|
export const ImageApi = {
|
||||||
|
// 获取【我的】绘图分页
|
||||||
|
getImagePageMy: async (params: any) => {
|
||||||
|
return await request.get({ url: `/ai/image/my-page`, params })
|
||||||
|
},
|
||||||
|
// 获取【我的】绘图记录
|
||||||
|
getImageMy: async (id: number) => {
|
||||||
|
return await request.get({ url: `/ai/image/get-my?id=${id}` })
|
||||||
|
},
|
||||||
|
// 获取【我的】绘图记录列表
|
||||||
|
getImageListMyByIds: async (ids: number[]) => {
|
||||||
|
return await request.get({ url: `/ai/image/my-list-by-ids`, params: { ids: ids.join(',') } })
|
||||||
|
},
|
||||||
|
// 生成图片
|
||||||
|
drawImage: async (data: ImageDrawReqVO) => {
|
||||||
|
return await request.post({ url: `/ai/image/draw`, data })
|
||||||
|
},
|
||||||
|
// 删除【我的】绘画记录
|
||||||
|
deleteImageMy: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/ai/image/delete-my?id=${id}` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// ================ midjourney 专属 ================
|
||||||
|
|
||||||
|
// 【Midjourney】生成图片
|
||||||
|
midjourneyImagine: async (data: ImageMidjourneyImagineReqVO) => {
|
||||||
|
return await request.post({ url: `/ai/image/midjourney/imagine`, data })
|
||||||
|
},
|
||||||
|
// 【Midjourney】Action 操作(二次生成图片)
|
||||||
|
midjourneyAction: async (data: ImageMidjourneyActionVO) => {
|
||||||
|
return await request.post({ url: `/ai/image/midjourney/action`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// ================ 绘图管理 ================
|
||||||
|
|
||||||
|
// 查询绘画分页
|
||||||
|
getImagePage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/ai/image/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新绘画发布状态
|
||||||
|
updateImage: async (data: any) => {
|
||||||
|
return await request.put({ url: '/ai/image/update', data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除绘画
|
||||||
|
deleteImage: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/ai/image/delete?id=` + id })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
import { getAccessToken } from '@/utils/auth'
|
||||||
|
import { fetchEventSource } from '@microsoft/fetch-event-source'
|
||||||
|
import { config } from '@/config/axios/config'
|
||||||
|
import request from '@/config/axios' // AI 思维导图 VO
|
||||||
|
|
||||||
|
// AI 思维导图 VO
|
||||||
|
export interface MindMapVO {
|
||||||
|
id: number // 编号
|
||||||
|
userId: number // 用户编号
|
||||||
|
prompt: string // 生成内容提示
|
||||||
|
generatedContent: string // 生成的思维导图内容
|
||||||
|
platform: string // 平台
|
||||||
|
model: string // 模型
|
||||||
|
errorMessage: string // 错误信息
|
||||||
|
}
|
||||||
|
|
||||||
|
// AI 思维导图生成 VO
|
||||||
|
export interface AiMindMapGenerateReqVO {
|
||||||
|
prompt: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export const AiMindMapApi = {
|
||||||
|
generateMindMap: ({
|
||||||
|
data,
|
||||||
|
onClose,
|
||||||
|
onMessage,
|
||||||
|
onError,
|
||||||
|
ctrl
|
||||||
|
}: {
|
||||||
|
data: AiMindMapGenerateReqVO
|
||||||
|
onMessage?: (res: any) => void
|
||||||
|
onError?: (...args: any[]) => void
|
||||||
|
onClose?: (...args: any[]) => void
|
||||||
|
ctrl: AbortController
|
||||||
|
}) => {
|
||||||
|
const token = getAccessToken()
|
||||||
|
return fetchEventSource(`${config.base_url}/ai/mind-map/generate-stream`, {
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: `Bearer ${token}`
|
||||||
|
},
|
||||||
|
openWhenHidden: true,
|
||||||
|
body: JSON.stringify(data),
|
||||||
|
onmessage: onMessage,
|
||||||
|
onerror: onError,
|
||||||
|
onclose: onClose,
|
||||||
|
signal: ctrl.signal
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询思维导图分页
|
||||||
|
getMindMapPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/ai/mind-map/page`, params })
|
||||||
|
},
|
||||||
|
// 删除思维导图
|
||||||
|
deleteMindMap: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/ai/mind-map/delete?id=` + id })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// AI API 密钥 VO
|
||||||
|
export interface ApiKeyVO {
|
||||||
|
id: number // 编号
|
||||||
|
name: string // 名称
|
||||||
|
apiKey: string // 密钥
|
||||||
|
platform: string // 平台
|
||||||
|
url: string // 自定义 API 地址
|
||||||
|
status: number // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
// AI API 密钥 API
|
||||||
|
export const ApiKeyApi = {
|
||||||
|
// 查询 API 密钥分页
|
||||||
|
getApiKeyPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/ai/api-key/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获得 API 密钥列表
|
||||||
|
getApiKeySimpleList: async () => {
|
||||||
|
return await request.get({ url: `/ai/api-key/simple-list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询 API 密钥详情
|
||||||
|
getApiKey: async (id: number) => {
|
||||||
|
return await request.get({ url: `/ai/api-key/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增 API 密钥
|
||||||
|
createApiKey: async (data: ApiKeyVO) => {
|
||||||
|
return await request.post({ url: `/ai/api-key/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改 API 密钥
|
||||||
|
updateApiKey: async (data: ApiKeyVO) => {
|
||||||
|
return await request.put({ url: `/ai/api-key/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除 API 密钥
|
||||||
|
deleteApiKey: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/ai/api-key/delete?id=` + id })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// AI 聊天模型 VO
|
||||||
|
export interface ChatModelVO {
|
||||||
|
id: number // 编号
|
||||||
|
keyId: number // API 秘钥编号
|
||||||
|
name: string // 模型名字
|
||||||
|
model: string // 模型标识
|
||||||
|
platform: string // 模型平台
|
||||||
|
sort: number // 排序
|
||||||
|
status: number // 状态
|
||||||
|
temperature: number // 温度参数
|
||||||
|
maxTokens: number // 单条回复的最大 Token 数量
|
||||||
|
maxContexts: number // 上下文的最大 Message 数量
|
||||||
|
}
|
||||||
|
|
||||||
|
// AI 聊天模型 API
|
||||||
|
export const ChatModelApi = {
|
||||||
|
// 查询聊天模型分页
|
||||||
|
getChatModelPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/ai/chat-model/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获得聊天模型列表
|
||||||
|
getChatModelSimpleList: async (status?: number) => {
|
||||||
|
return await request.get({
|
||||||
|
url: `/ai/chat-model/simple-list`,
|
||||||
|
params: {
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询聊天模型详情
|
||||||
|
getChatModel: async (id: number) => {
|
||||||
|
return await request.get({ url: `/ai/chat-model/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增聊天模型
|
||||||
|
createChatModel: async (data: ChatModelVO) => {
|
||||||
|
return await request.post({ url: `/ai/chat-model/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改聊天模型
|
||||||
|
updateChatModel: async (data: ChatModelVO) => {
|
||||||
|
return await request.put({ url: `/ai/chat-model/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除聊天模型
|
||||||
|
deleteChatModel: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/ai/chat-model/delete?id=` + id })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// AI 聊天角色 VO
|
||||||
|
export interface ChatRoleVO {
|
||||||
|
id: number // 角色编号
|
||||||
|
modelId: number // 模型编号
|
||||||
|
name: string // 角色名称
|
||||||
|
avatar: string // 角色头像
|
||||||
|
category: string // 角色类别
|
||||||
|
sort: number // 角色排序
|
||||||
|
description: string // 角色描述
|
||||||
|
systemMessage: string // 角色设定
|
||||||
|
welcomeMessage: string // 角色设定
|
||||||
|
publicStatus: boolean // 是否公开
|
||||||
|
status: number // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
// AI 聊天角色 分页请求 vo
|
||||||
|
export interface ChatRolePageReqVO {
|
||||||
|
name?: string // 角色名称
|
||||||
|
category?: string // 角色类别
|
||||||
|
publicStatus: boolean // 是否公开
|
||||||
|
pageNo: number // 是否公开
|
||||||
|
pageSize: number // 是否公开
|
||||||
|
}
|
||||||
|
|
||||||
|
// AI 聊天角色 API
|
||||||
|
export const ChatRoleApi = {
|
||||||
|
// 查询聊天角色分页
|
||||||
|
getChatRolePage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/ai/chat-role/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询聊天角色详情
|
||||||
|
getChatRole: async (id: number) => {
|
||||||
|
return await request.get({ url: `/ai/chat-role/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增聊天角色
|
||||||
|
createChatRole: async (data: ChatRoleVO) => {
|
||||||
|
return await request.post({ url: `/ai/chat-role/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改聊天角色
|
||||||
|
updateChatRole: async (data: ChatRoleVO) => {
|
||||||
|
return await request.put({ url: `/ai/chat-role/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除聊天角色
|
||||||
|
deleteChatRole: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/ai/chat-role/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// ======= chat 聊天
|
||||||
|
|
||||||
|
// 获取 my role
|
||||||
|
getMyPage: async (params: ChatRolePageReqVO) => {
|
||||||
|
return await request.get({ url: `/ai/chat-role/my-page`, params})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取角色分类
|
||||||
|
getCategoryList: async () => {
|
||||||
|
return await request.get({ url: `/ai/chat-role/category-list`})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 创建角色
|
||||||
|
createMy: async (data: ChatRoleVO) => {
|
||||||
|
return await request.post({ url: `/ai/chat-role/create-my`, data})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新角色
|
||||||
|
updateMy: async (data: ChatRoleVO) => {
|
||||||
|
return await request.put({ url: `/ai/chat-role/update-my`, data})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除角色 my
|
||||||
|
deleteMy: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/ai/chat-role/delete-my?id=` + id })
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// AI 音乐 VO
|
||||||
|
export interface MusicVO {
|
||||||
|
id: number // 编号
|
||||||
|
userId: number // 用户编号
|
||||||
|
title: string // 音乐名称
|
||||||
|
lyric: string // 歌词
|
||||||
|
imageUrl: string // 图片地址
|
||||||
|
audioUrl: string // 音频地址
|
||||||
|
videoUrl: string // 视频地址
|
||||||
|
status: number // 音乐状态
|
||||||
|
gptDescriptionPrompt: string // 描述词
|
||||||
|
prompt: string // 提示词
|
||||||
|
platform: string // 模型平台
|
||||||
|
model: string // 模型
|
||||||
|
generateMode: number // 生成模式
|
||||||
|
tags: string // 音乐风格标签
|
||||||
|
duration: number // 音乐时长
|
||||||
|
publicStatus: boolean // 是否发布
|
||||||
|
taskId: string // 任务id
|
||||||
|
errorMessage: string // 错误信息
|
||||||
|
}
|
||||||
|
|
||||||
|
// AI 音乐 API
|
||||||
|
export const MusicApi = {
|
||||||
|
// 查询音乐分页
|
||||||
|
getMusicPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/ai/music/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新音乐
|
||||||
|
updateMusic: async (data: any) => {
|
||||||
|
return await request.put({ url: '/ai/music/update', data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除音乐
|
||||||
|
deleteMusic: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/ai/music/delete?id=` + id })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
import { fetchEventSource } from '@microsoft/fetch-event-source'
|
||||||
|
|
||||||
|
import { getAccessToken } from '@/utils/auth'
|
||||||
|
import { config } from '@/config/axios/config'
|
||||||
|
import { AiWriteTypeEnum } from '@/views/ai/utils/constants'
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface WriteVO {
|
||||||
|
type: AiWriteTypeEnum.WRITING | AiWriteTypeEnum.REPLY // 1:撰写 2:回复
|
||||||
|
prompt: string // 写作内容提示 1。撰写 2回复
|
||||||
|
originalContent: string // 原文
|
||||||
|
length: number // 长度
|
||||||
|
format: number // 格式
|
||||||
|
tone: number // 语气
|
||||||
|
language: number // 语言
|
||||||
|
userId?: number // 用户编号
|
||||||
|
platform?: string // 平台
|
||||||
|
model?: string // 模型
|
||||||
|
generatedContent?: string // 生成的内容
|
||||||
|
errorMessage?: string // 错误信息
|
||||||
|
createTime?: Date // 创建时间
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AiWritePageReqVO extends PageParam {
|
||||||
|
userId?: number // 用户编号
|
||||||
|
type?: AiWriteTypeEnum // 写作类型
|
||||||
|
platform?: string // 平台
|
||||||
|
createTime?: [string, string] // 创建时间
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AiWriteRespVo {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
type: number
|
||||||
|
platform: string
|
||||||
|
model: string
|
||||||
|
prompt: string
|
||||||
|
generatedContent: string
|
||||||
|
originalContent: string
|
||||||
|
length: number
|
||||||
|
format: number
|
||||||
|
tone: number
|
||||||
|
language: number
|
||||||
|
errorMessage: string
|
||||||
|
createTime: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export const WriteApi = {
|
||||||
|
writeStream: ({
|
||||||
|
data,
|
||||||
|
onClose,
|
||||||
|
onMessage,
|
||||||
|
onError,
|
||||||
|
ctrl
|
||||||
|
}: {
|
||||||
|
data: WriteVO
|
||||||
|
onMessage?: (res: any) => void
|
||||||
|
onError?: (...args: any[]) => void
|
||||||
|
onClose?: (...args: any[]) => void
|
||||||
|
ctrl: AbortController
|
||||||
|
}) => {
|
||||||
|
const token = getAccessToken()
|
||||||
|
return fetchEventSource(`${config.base_url}/ai/write/generate-stream`, {
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: `Bearer ${token}`
|
||||||
|
},
|
||||||
|
openWhenHidden: true,
|
||||||
|
body: JSON.stringify(data),
|
||||||
|
onmessage: onMessage,
|
||||||
|
onerror: onError,
|
||||||
|
onclose: onClose,
|
||||||
|
signal: ctrl.signal
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取写作列表
|
||||||
|
getWritePage: (params: AiWritePageReqVO) => {
|
||||||
|
return request.get<PageResult<AiWriteRespVo[]>>({ url: `/ai/write/page`, params })
|
||||||
|
},
|
||||||
|
// 删除写作
|
||||||
|
deleteWrite(id: number) {
|
||||||
|
return request.delete({ url: `/ai/write/delete`, params: { id } })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// BPM 流程分类 VO
|
||||||
|
export interface CategoryVO {
|
||||||
|
id: number // 分类编号
|
||||||
|
name: string // 分类名
|
||||||
|
code: string // 分类标志
|
||||||
|
status: number // 分类状态
|
||||||
|
sort: number // 分类排序
|
||||||
|
}
|
||||||
|
|
||||||
|
// BPM 流程分类 API
|
||||||
|
export const CategoryApi = {
|
||||||
|
// 查询流程分类分页
|
||||||
|
getCategoryPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/bpm/category/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询流程分类列表
|
||||||
|
getCategorySimpleList: async () => {
|
||||||
|
return await request.get({ url: `/bpm/category/simple-list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询流程分类详情
|
||||||
|
getCategory: async (id: number) => {
|
||||||
|
return await request.get({ url: `/bpm/category/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增流程分类
|
||||||
|
createCategory: async (data: CategoryVO) => {
|
||||||
|
return await request.post({ url: `/bpm/category/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改流程分类
|
||||||
|
updateCategory: async (data: CategoryVO) => {
|
||||||
|
return await request.put({ url: `/bpm/category/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除流程分类
|
||||||
|
deleteCategory: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/bpm/category/delete?id=` + id })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export const getProcessDefinitionBpmnXML = async (id: number) => {
|
export const getProcessDefinition = async (id?: string, key?: string) => {
|
||||||
return await request.get({
|
return await request.get({
|
||||||
url: '/bpm/process-definition/get-bpmn-xml?id=' + id
|
url: '/bpm/process-definition/get',
|
||||||
|
params: { id, key }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ export const getFormPage = async (params) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获得动态表单的精简列表
|
// 获得动态表单的精简列表
|
||||||
export const getSimpleFormList = async () => {
|
export const getFormSimpleList = async () => {
|
||||||
return await request.get({
|
return await request.get({
|
||||||
url: '/bpm/form/list-all-simple'
|
url: '/bpm/form/simple-list'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@ import request from '@/config/axios'
|
|||||||
|
|
||||||
export type LeaveVO = {
|
export type LeaveVO = {
|
||||||
id: number
|
id: number
|
||||||
result: number
|
status: number
|
||||||
type: number
|
type: number
|
||||||
reason: string
|
reason: string
|
||||||
processInstanceId: string
|
processInstanceId: string
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ export type ProcessDefinitionVO = {
|
|||||||
version: number
|
version: number
|
||||||
deploymentTIme: string
|
deploymentTIme: string
|
||||||
suspensionState: number
|
suspensionState: number
|
||||||
|
formType?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ModelVO = {
|
export type ModelVO = {
|
||||||
@@ -29,7 +30,7 @@ export const getModelPage = async (params) => {
|
|||||||
return await request.get({ url: '/bpm/model/page', params })
|
return await request.get({ url: '/bpm/model/page', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getModel = async (id: number) => {
|
export const getModel = async (id: string) => {
|
||||||
return await request.get({ url: '/bpm/model/get?id=' + id })
|
return await request.get({ url: '/bpm/model/get?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,6 +38,10 @@ export const updateModel = async (data: ModelVO) => {
|
|||||||
return await request.put({ url: '/bpm/model/update', data: data })
|
return await request.put({ url: '/bpm/model/update', data: data })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const updateModelBpmn = async (data: ModelVO) => {
|
||||||
|
return await request.put({ url: '/bpm/model/update-bpmn', data: data })
|
||||||
|
}
|
||||||
|
|
||||||
// 任务状态修改
|
// 任务状态修改
|
||||||
export const updateModelState = async (id: number, state: number) => {
|
export const updateModelState = async (id: number, state: number) => {
|
||||||
const data = {
|
const data = {
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// BPM 流程表达式 VO
|
||||||
|
export interface ProcessExpressionVO {
|
||||||
|
id: number // 编号
|
||||||
|
name: string // 表达式名字
|
||||||
|
status: number // 表达式状态
|
||||||
|
expression: string // 表达式
|
||||||
|
}
|
||||||
|
|
||||||
|
// BPM 流程表达式 API
|
||||||
|
export const ProcessExpressionApi = {
|
||||||
|
// 查询BPM 流程表达式分页
|
||||||
|
getProcessExpressionPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/bpm/process-expression/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询BPM 流程表达式详情
|
||||||
|
getProcessExpression: async (id: number) => {
|
||||||
|
return await request.get({ url: `/bpm/process-expression/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增BPM 流程表达式
|
||||||
|
createProcessExpression: async (data: ProcessExpressionVO) => {
|
||||||
|
return await request.post({ url: `/bpm/process-expression/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改BPM 流程表达式
|
||||||
|
updateProcessExpression: async (data: ProcessExpressionVO) => {
|
||||||
|
return await request.put({ url: `/bpm/process-expression/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除BPM 流程表达式
|
||||||
|
deleteProcessExpression: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/bpm/process-expression/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出BPM 流程表达式 Excel
|
||||||
|
exportProcessExpression: async (params) => {
|
||||||
|
return await request.download({ url: `/bpm/process-expression/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
import { ProcessDefinitionVO } from '@/api/bpm/model'
|
||||||
|
import { NodeType } from '@/components/SimpleProcessDesignerV2/src/consts'
|
||||||
export type Task = {
|
export type Task = {
|
||||||
id: string
|
id: string
|
||||||
name: string
|
name: string
|
||||||
@@ -18,53 +19,81 @@ export type ProcessInstanceVO = {
|
|||||||
businessKey: string
|
businessKey: string
|
||||||
createTime: string
|
createTime: string
|
||||||
endTime: string
|
endTime: string
|
||||||
|
processDefinition?: ProcessDefinitionVO
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ProcessInstanceCCVO = {
|
// 用户信息
|
||||||
type: number,
|
export type User = {
|
||||||
taskName: string,
|
id: number,
|
||||||
taskKey: string,
|
nickname: string,
|
||||||
processInstanceName: string,
|
avatar: string
|
||||||
processInstanceKey: string,
|
}
|
||||||
startUserId: string,
|
|
||||||
options:string [],
|
// 审批任务信息
|
||||||
|
export type ApprovalTaskInfo = {
|
||||||
|
id: number,
|
||||||
|
ownerUser: User,
|
||||||
|
assigneeUser: User,
|
||||||
|
status: number,
|
||||||
reason: string
|
reason: string
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getMyProcessInstancePage = async (params) => {
|
// 审批节点信息
|
||||||
|
export type ApprovalNodeInfo = {
|
||||||
|
id : number
|
||||||
|
name: string
|
||||||
|
nodeType: NodeType
|
||||||
|
status: number
|
||||||
|
startTime?: Date
|
||||||
|
endTime?: Date
|
||||||
|
candidateUserList?: User[]
|
||||||
|
tasks: ApprovalTaskInfo[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getProcessInstanceMyPage = async (params: any) => {
|
||||||
return await request.get({ url: '/bpm/process-instance/my-page', params })
|
return await request.get({ url: '/bpm/process-instance/my-page', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const getProcessInstanceManagerPage = async (params: any) => {
|
||||||
|
return await request.get({ url: '/bpm/process-instance/manager-page', params })
|
||||||
|
}
|
||||||
|
|
||||||
export const createProcessInstance = async (data) => {
|
export const createProcessInstance = async (data) => {
|
||||||
return await request.post({ url: '/bpm/process-instance/create', data: data })
|
return await request.post({ url: '/bpm/process-instance/create', data: data })
|
||||||
}
|
}
|
||||||
|
|
||||||
export const cancelProcessInstance = async (id: number, reason: string) => {
|
export const cancelProcessInstanceByStartUser = async (id: number, reason: string) => {
|
||||||
const data = {
|
const data = {
|
||||||
id: id,
|
id: id,
|
||||||
reason: reason
|
reason: reason
|
||||||
}
|
}
|
||||||
return await request.delete({ url: '/bpm/process-instance/cancel', data: data })
|
return await request.delete({ url: '/bpm/process-instance/cancel-by-start-user', data: data })
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getProcessInstance = async (id: number) => {
|
export const cancelProcessInstanceByAdmin = async (id: number, reason: string) => {
|
||||||
|
const data = {
|
||||||
|
id: id,
|
||||||
|
reason: reason
|
||||||
|
}
|
||||||
|
return await request.delete({ url: '/bpm/process-instance/cancel-by-admin', data: data })
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getProcessInstance = async (id: string) => {
|
||||||
return await request.get({ url: '/bpm/process-instance/get?id=' + id })
|
return await request.get({ url: '/bpm/process-instance/get?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
export const getProcessInstanceCopyPage = async (params: any) => {
|
||||||
* 抄送
|
return await request.get({ url: '/bpm/process-instance/copy/page', params })
|
||||||
* @param data 抄送数据
|
|
||||||
* @returns 是否抄送成功
|
|
||||||
*/
|
|
||||||
export const createProcessInstanceCC = async (data) => {
|
|
||||||
return await request.post({ url: '/bpm/process-instance/cc/create', data: data })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 获取审批详情
|
||||||
* 抄送列表
|
export const getApprovalDetail = async (processInstanceId?:string, processDefinitionId?:string) => {
|
||||||
* @param params
|
const param = processInstanceId ? '?processInstanceId='+ processInstanceId : '?processDefinitionId='+ processDefinitionId
|
||||||
* @returns
|
return await request.get({ url: 'bpm/process-instance/get-approval-detail'+ param })
|
||||||
*/
|
}
|
||||||
export const getProcessInstanceCCPage = async (params) => {
|
|
||||||
return await request.get({ url: '/bpm/process-instance/cc/my-page', params })
|
// 获取表单字段权限
|
||||||
}
|
export const getFormFieldsPermission = async (params: any) => {
|
||||||
|
return await request.get({ url: '/bpm/process-instance/get-form-fields-permission', params })
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// BPM 流程监听器 VO
|
||||||
|
export interface ProcessListenerVO {
|
||||||
|
id: number // 编号
|
||||||
|
name: string // 监听器名字
|
||||||
|
type: string // 监听器类型
|
||||||
|
status: number // 监听器状态
|
||||||
|
event: string // 监听事件
|
||||||
|
valueType: string // 监听器值类型
|
||||||
|
value: string // 监听器值
|
||||||
|
}
|
||||||
|
|
||||||
|
// BPM 流程监听器 API
|
||||||
|
export const ProcessListenerApi = {
|
||||||
|
// 查询流程监听器分页
|
||||||
|
getProcessListenerPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/bpm/process-listener/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询流程监听器详情
|
||||||
|
getProcessListener: async (id: number) => {
|
||||||
|
return await request.get({ url: `/bpm/process-listener/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增流程监听器
|
||||||
|
createProcessListener: async (data: ProcessListenerVO) => {
|
||||||
|
return await request.post({ url: `/bpm/process-listener/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改流程监听器
|
||||||
|
updateProcessListener: async (data: ProcessListenerVO) => {
|
||||||
|
return await request.put({ url: `/bpm/process-listener/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除流程监听器
|
||||||
|
deleteProcessListener: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/bpm/process-listener/delete?id=` + id })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
|
||||||
|
export const updateBpmSimpleModel = async (data) => {
|
||||||
|
return await request.post({
|
||||||
|
url: '/bpm/model/simple/update',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getBpmSimpleModel = async (id) => {
|
||||||
|
return await request.get({
|
||||||
|
url: '/bpm/model/simple/get?id=' + id
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -1,81 +1,112 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务状态枚举
|
||||||
|
*/
|
||||||
|
export enum TaskStatusEnum {
|
||||||
|
/**
|
||||||
|
* 未开始
|
||||||
|
*/
|
||||||
|
NOT_START = -1,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待审批
|
||||||
|
*/
|
||||||
|
WAIT = 0,
|
||||||
|
/**
|
||||||
|
* 审批中
|
||||||
|
*/
|
||||||
|
RUNNING = 1,
|
||||||
|
/**
|
||||||
|
* 审批通过
|
||||||
|
*/
|
||||||
|
APPROVE = 2,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批不通过
|
||||||
|
*/
|
||||||
|
REJECT = 3,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已取消
|
||||||
|
*/
|
||||||
|
CANCEL = 4,
|
||||||
|
/**
|
||||||
|
* 已退回
|
||||||
|
*/
|
||||||
|
RETURN = 5,
|
||||||
|
/**
|
||||||
|
* 委派中
|
||||||
|
*/
|
||||||
|
DELEGATE = 6,
|
||||||
|
/**
|
||||||
|
* 审批通过中
|
||||||
|
*/
|
||||||
|
APPROVING = 7,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
export type TaskVO = {
|
export type TaskVO = {
|
||||||
id: number
|
id: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getTodoTaskPage = async (params) => {
|
export const getTaskTodoPage = async (params: any) => {
|
||||||
return await request.get({ url: '/bpm/task/todo-page', params })
|
return await request.get({ url: '/bpm/task/todo-page', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getDoneTaskPage = async (params) => {
|
export const getTaskDonePage = async (params: any) => {
|
||||||
return await request.get({ url: '/bpm/task/done-page', params })
|
return await request.get({ url: '/bpm/task/done-page', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export const completeTask = async (data) => {
|
export const getTaskManagerPage = async (params: any) => {
|
||||||
return await request.put({ url: '/bpm/task/complete', data })
|
return await request.get({ url: '/bpm/task/manager-page', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export const approveTask = async (data) => {
|
export const approveTask = async (data: any) => {
|
||||||
return await request.put({ url: '/bpm/task/approve', data })
|
return await request.put({ url: '/bpm/task/approve', data })
|
||||||
}
|
}
|
||||||
|
|
||||||
export const rejectTask = async (data) => {
|
export const rejectTask = async (data: any) => {
|
||||||
return await request.put({ url: '/bpm/task/reject', data })
|
return await request.put({ url: '/bpm/task/reject', data })
|
||||||
}
|
}
|
||||||
export const backTask = async (data) => {
|
|
||||||
return await request.put({ url: '/bpm/task/back', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
export const updateTaskAssignee = async (data) => {
|
export const getTaskListByProcessInstanceId = async (processInstanceId: string) => {
|
||||||
return await request.put({ url: '/bpm/task/update-assignee', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getTaskListByProcessInstanceId = async (processInstanceId) => {
|
|
||||||
return await request.get({
|
return await request.get({
|
||||||
url: '/bpm/task/list-by-process-instance-id?processInstanceId=' + processInstanceId
|
url: '/bpm/task/list-by-process-instance-id?processInstanceId=' + processInstanceId
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导出任务
|
|
||||||
export const exportTask = async (params) => {
|
|
||||||
return await request.download({ url: '/bpm/task/export', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取所有可回退的节点
|
// 获取所有可回退的节点
|
||||||
export const getReturnList = async (params) => {
|
export const getTaskListByReturn = async (id: string) => {
|
||||||
return await request.get({ url: '/bpm/task/return-list', params })
|
return await request.get({ url: '/bpm/task/list-by-return', params: { id } })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 回退
|
// 回退
|
||||||
export const returnTask = async (data) => {
|
export const returnTask = async (data: any) => {
|
||||||
return await request.put({ url: '/bpm/task/return', data })
|
return await request.put({ url: '/bpm/task/return', data })
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 委派
|
||||||
* 委派
|
export const delegateTask = async (data: any) => {
|
||||||
*/
|
|
||||||
export const delegateTask = async (data) => {
|
|
||||||
return await request.put({ url: '/bpm/task/delegate', data })
|
return await request.put({ url: '/bpm/task/delegate', data })
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 转派
|
||||||
* 加签
|
export const transferTask = async (data: any) => {
|
||||||
*/
|
return await request.put({ url: '/bpm/task/transfer', data })
|
||||||
export const taskAddSign = async (data) => {
|
}
|
||||||
|
|
||||||
|
// 加签
|
||||||
|
export const signCreateTask = async (data: any) => {
|
||||||
return await request.put({ url: '/bpm/task/create-sign', data })
|
return await request.put({ url: '/bpm/task/create-sign', data })
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 减签
|
||||||
* 获取减签任务列表
|
export const signDeleteTask = async (data: any) => {
|
||||||
*/
|
|
||||||
export const getChildrenTaskList = async (id: string) => {
|
|
||||||
return await request.get({ url: '/bpm/task/children-list?taskId=' + id })
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 减签
|
|
||||||
*/
|
|
||||||
export const taskSubSign = async (data) => {
|
|
||||||
return await request.delete({ url: '/bpm/task/delete-sign', data })
|
return await request.delete({ url: '/bpm/task/delete-sign', data })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取减签任务列表
|
||||||
|
export const getChildrenTaskList = async (id: string) => {
|
||||||
|
return await request.get({ url: '/bpm/task/list-by-parent-task-id?parentTaskId=' + id })
|
||||||
|
}
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export type TaskAssignVO = {
|
|
||||||
id: number
|
|
||||||
modelId: string
|
|
||||||
processDefinitionId: string
|
|
||||||
taskDefinitionKey: string
|
|
||||||
taskDefinitionName: string
|
|
||||||
options: string[]
|
|
||||||
type: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getTaskAssignRuleList = async (params) => {
|
|
||||||
return await request.get({ url: '/bpm/task-assign-rule/list', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
export const createTaskAssignRule = async (data: TaskAssignVO) => {
|
|
||||||
return await request.post({
|
|
||||||
url: '/bpm/task-assign-rule/create',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export const updateTaskAssignRule = async (data: TaskAssignVO) => {
|
|
||||||
return await request.put({
|
|
||||||
url: '/bpm/task-assign-rule/update',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -4,7 +4,7 @@ export type UserGroupVO = {
|
|||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
description: string
|
description: string
|
||||||
memberUserIds: number[]
|
userIds: number[]
|
||||||
status: number
|
status: number
|
||||||
remark: string
|
remark: string
|
||||||
createTime: string
|
createTime: string
|
||||||
@@ -42,6 +42,6 @@ export const getUserGroupPage = async (params) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取用户组精简信息列表
|
// 获取用户组精简信息列表
|
||||||
export const getSimpleUserGroupList = async (): Promise<UserGroupVO[]> => {
|
export const getUserGroupSimpleList = async (): Promise<UserGroupVO[]> => {
|
||||||
return await request.get({ url: '/bpm/user-group/list-all-simple' })
|
return await request.get({ url: '/bpm/user-group/simple-list' })
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
import { TransferReqVO } from '@/api/crm/customer'
|
import { TransferReqVO } from '@/api/crm/permission'
|
||||||
|
|
||||||
export interface BusinessVO {
|
export interface BusinessVO {
|
||||||
id: number
|
id: number
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
import { TransferReqVO } from '@/api/crm/customer'
|
import { TransferReqVO } from '@/api/crm/permission'
|
||||||
|
|
||||||
export interface ClueVO {
|
export interface ClueVO {
|
||||||
id: number // 编号
|
id: number // 编号
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
import { TransferReqVO } from '@/api/crm/customer'
|
import { TransferReqVO } from '@/api/crm/permission'
|
||||||
|
|
||||||
export interface ContactVO {
|
export interface ContactVO {
|
||||||
id: number // 编号
|
id: number // 编号
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
import { TransferReqVO } from '@/api/crm/customer'
|
import { TransferReqVO } from '@/api/crm/permission'
|
||||||
|
|
||||||
export interface ContractVO {
|
export interface ContractVO {
|
||||||
id: number
|
id: number
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
import { TransferReqVO } from '@/api/crm/permission'
|
||||||
|
|
||||||
export interface CustomerVO {
|
export interface CustomerVO {
|
||||||
id: number // 编号
|
id: number // 编号
|
||||||
@@ -102,12 +103,6 @@ export const getCustomerSimpleList = async () => {
|
|||||||
|
|
||||||
// ======================= 业务操作 =======================
|
// ======================= 业务操作 =======================
|
||||||
|
|
||||||
export interface TransferReqVO {
|
|
||||||
id: number | undefined // 客户编号
|
|
||||||
newOwnerUserId: number | undefined // 新负责人的用户编号
|
|
||||||
oldOwnerPermissionLevel: number | undefined // 老负责人加入团队后的权限级别
|
|
||||||
}
|
|
||||||
|
|
||||||
// 客户转移
|
// 客户转移
|
||||||
export const transferCustomer = async (data: TransferReqVO) => {
|
export const transferCustomer = async (data: TransferReqVO) => {
|
||||||
return await request.put({ url: '/crm/customer/transfer', data })
|
return await request.put({ url: '/crm/customer/transfer', data })
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ export interface PermissionVO {
|
|||||||
bizType: number // Crm 类型
|
bizType: number // Crm 类型
|
||||||
bizId: number // Crm 类型数据编号
|
bizId: number // Crm 类型数据编号
|
||||||
level: number // 权限级别
|
level: number // 权限级别
|
||||||
|
toBizTypes?: number[] // 同时添加至
|
||||||
deptName?: string // 部门名称
|
deptName?: string // 部门名称
|
||||||
nickname?: string // 用户昵称
|
nickname?: string // 用户昵称
|
||||||
postNames?: string[] // 岗位名称数组
|
postNames?: string[] // 岗位名称数组
|
||||||
@@ -13,6 +14,13 @@ export interface PermissionVO {
|
|||||||
ids?: number[]
|
ids?: number[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface TransferReqVO {
|
||||||
|
id: number // 模块编号
|
||||||
|
newOwnerUserId: number // 新负责人的用户编号
|
||||||
|
oldOwnerPermissionLevel?: number // 老负责人加入团队后的权限级别
|
||||||
|
toBizTypes?: number[] // 转移客户时,需要额外有【联系人】【商机】【合同】的 checkbox 选择
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CRM 业务类型枚举
|
* CRM 业务类型枚举
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -3,18 +3,20 @@ import request from '@/config/axios'
|
|||||||
export interface ReceivableVO {
|
export interface ReceivableVO {
|
||||||
id: number
|
id: number
|
||||||
no: string
|
no: string
|
||||||
planId: number
|
planId?: number
|
||||||
customerId: number
|
customerId?: number
|
||||||
customerName?: string
|
customerName?: string
|
||||||
contractId: number
|
contractId?: number
|
||||||
contract?: {
|
contract?: {
|
||||||
|
id?: number
|
||||||
|
name?: string
|
||||||
no: string
|
no: string
|
||||||
totalPrice: number
|
totalPrice: number
|
||||||
}
|
}
|
||||||
auditStatus: number
|
auditStatus: number
|
||||||
processInstanceId: number
|
processInstanceId: number
|
||||||
returnTime: Date
|
returnTime: Date
|
||||||
returnType: string
|
returnType: number
|
||||||
price: number
|
price: number
|
||||||
ownerUserId: number
|
ownerUserId: number
|
||||||
ownerUserName?: string
|
ownerUserName?: string
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export interface ReceivablePlanVO {
|
|||||||
remindTime: Date
|
remindTime: Date
|
||||||
customerId: number
|
customerId: number
|
||||||
customerName?: string
|
customerName?: string
|
||||||
contractId: number
|
contractId?: number
|
||||||
contractNo?: string
|
contractNo?: string
|
||||||
ownerUserId: number
|
ownerUserId: number
|
||||||
ownerUserName?: string
|
ownerUserName?: string
|
||||||
|
|||||||
@@ -0,0 +1,168 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CrmStatisticsCustomerSummaryByDateRespVO {
|
||||||
|
time: string
|
||||||
|
customerCreateCount: number
|
||||||
|
customerDealCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsCustomerSummaryByUserRespVO {
|
||||||
|
ownerUserName: string
|
||||||
|
customerCreateCount: number
|
||||||
|
customerDealCount: number
|
||||||
|
contractPrice: number
|
||||||
|
receivablePrice: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsFollowUpSummaryByDateRespVO {
|
||||||
|
time: string
|
||||||
|
followUpRecordCount: number
|
||||||
|
followUpCustomerCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsFollowUpSummaryByUserRespVO {
|
||||||
|
ownerUserName: string
|
||||||
|
followupRecordCount: number
|
||||||
|
followupCustomerCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsFollowUpSummaryByTypeRespVO {
|
||||||
|
followUpType: string
|
||||||
|
followUpRecordCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsCustomerContractSummaryRespVO {
|
||||||
|
customerName: string
|
||||||
|
contractName: string
|
||||||
|
totalPrice: number
|
||||||
|
receivablePrice: number
|
||||||
|
customerType: string
|
||||||
|
customerSource: string
|
||||||
|
ownerUserName: string
|
||||||
|
creatorUserName: string
|
||||||
|
createTime: Date
|
||||||
|
orderDate: Date
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsPoolSummaryByDateRespVO {
|
||||||
|
time: string
|
||||||
|
customerPutCount: number
|
||||||
|
customerTakeCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsPoolSummaryByUserRespVO {
|
||||||
|
ownerUserName: string
|
||||||
|
customerPutCount: number
|
||||||
|
customerTakeCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsCustomerDealCycleByDateRespVO {
|
||||||
|
time: string
|
||||||
|
customerDealCycle: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsCustomerDealCycleByUserRespVO {
|
||||||
|
ownerUserName: string
|
||||||
|
customerDealCycle: number
|
||||||
|
customerDealCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsCustomerDealCycleByAreaRespVO {
|
||||||
|
areaName: string
|
||||||
|
customerDealCycle: number
|
||||||
|
customerDealCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsCustomerDealCycleByProductRespVO {
|
||||||
|
productName: string
|
||||||
|
customerDealCycle: number
|
||||||
|
customerDealCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 客户分析 API
|
||||||
|
export const StatisticsCustomerApi = {
|
||||||
|
// 1.1 客户总量分析(按日期)
|
||||||
|
getCustomerSummaryByDate: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-customer-summary-by-date',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 1.2 客户总量分析(按用户)
|
||||||
|
getCustomerSummaryByUser: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-customer-summary-by-user',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 2.1 客户跟进次数分析(按日期)
|
||||||
|
getFollowUpSummaryByDate: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-follow-up-summary-by-date',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 2.2 客户跟进次数分析(按用户)
|
||||||
|
getFollowUpSummaryByUser: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-follow-up-summary-by-user',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 3.1 获取客户跟进方式统计数
|
||||||
|
getFollowUpSummaryByType: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-follow-up-summary-by-type',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 4.1 合同摘要信息(客户转化率页面)
|
||||||
|
getContractSummary: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-contract-summary',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 5.1 获取客户公海分析(按日期)
|
||||||
|
getPoolSummaryByDate: (param: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-pool-summary-by-date',
|
||||||
|
params: param
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 5.2 获取客户公海分析(按用户)
|
||||||
|
getPoolSummaryByUser: (param: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-pool-summary-by-user',
|
||||||
|
params: param
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 6.1 获取客户成交周期(按日期)
|
||||||
|
getCustomerDealCycleByDate: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-customer-deal-cycle-by-date',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 6.2 获取客户成交周期(按用户)
|
||||||
|
getCustomerDealCycleByUser: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-customer-deal-cycle-by-user',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 6.2 获取客户成交周期(按用户)
|
||||||
|
getCustomerDealCycleByArea: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-customer-deal-cycle-by-area',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 6.2 获取客户成交周期(按用户)
|
||||||
|
getCustomerDealCycleByProduct: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-customer/get-customer-deal-cycle-by-product',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CrmStatisticFunnelRespVO {
|
||||||
|
customerCount: number // 客户数
|
||||||
|
businessCount: number // 商机数
|
||||||
|
businessWinCount: number // 赢单数
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsBusinessSummaryByDateRespVO {
|
||||||
|
time: string // 时间
|
||||||
|
businessCreateCount: number // 商机数
|
||||||
|
totalPrice: number | string // 商机金额
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticsBusinessInversionRateSummaryByDateRespVO {
|
||||||
|
time: string // 时间
|
||||||
|
businessCount: number // 商机数量
|
||||||
|
businessWinCount: number // 赢单商机数
|
||||||
|
}
|
||||||
|
|
||||||
|
// 客户分析 API
|
||||||
|
export const StatisticFunnelApi = {
|
||||||
|
// 1. 获取销售漏斗统计数据
|
||||||
|
getFunnelSummary: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-funnel/get-funnel-summary',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 2. 获取商机结束状态统计
|
||||||
|
getBusinessSummaryByEndStatus: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-funnel/get-business-summary-by-end-status',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 3. 获取新增商机分析(按日期)
|
||||||
|
getBusinessSummaryByDate: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-funnel/get-business-summary-by-date',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 4. 获取商机转化率分析(按日期)
|
||||||
|
getBusinessInversionRateSummaryByDate: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-funnel/get-business-inversion-rate-summary-by-date',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 5. 获取商机列表(按日期)
|
||||||
|
getBusinessPageByDate: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-funnel/get-business-page-by-date',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface StatisticsPerformanceRespVO {
|
||||||
|
time: string
|
||||||
|
currentMonthCount: number
|
||||||
|
lastMonthCount: number
|
||||||
|
lastYearCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排行 API
|
||||||
|
export const StatisticsPerformanceApi = {
|
||||||
|
// 员工获得合同金额统计
|
||||||
|
getContractPricePerformance: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-performance/get-contract-price-performance',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 员工获得回款统计
|
||||||
|
getReceivablePricePerformance: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-performance/get-receivable-price-performance',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//员工获得签约合同数量统计
|
||||||
|
getContractCountPerformance: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-performance/get-contract-count-performance',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CrmStatisticCustomerBaseRespVO {
|
||||||
|
customerCount: number
|
||||||
|
dealCount: number
|
||||||
|
dealPortion: string | number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticCustomerIndustryRespVO extends CrmStatisticCustomerBaseRespVO {
|
||||||
|
industryId: number
|
||||||
|
industryPortion: string | number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticCustomerSourceRespVO extends CrmStatisticCustomerBaseRespVO {
|
||||||
|
source: number
|
||||||
|
sourcePortion: string | number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticCustomerLevelRespVO extends CrmStatisticCustomerBaseRespVO {
|
||||||
|
level: number
|
||||||
|
levelPortion: string | number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CrmStatisticCustomerAreaRespVO extends CrmStatisticCustomerBaseRespVO {
|
||||||
|
areaId: number
|
||||||
|
areaName: string
|
||||||
|
areaPortion: string | number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 客户分析 API
|
||||||
|
export const StatisticsPortraitApi = {
|
||||||
|
// 1. 获取客户行业统计数据
|
||||||
|
getCustomerIndustry: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-portrait/get-customer-industry-summary',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 2. 获取客户来源统计数据
|
||||||
|
getCustomerSource: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-portrait/get-customer-source-summary',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 3. 获取客户级别统计数据
|
||||||
|
getCustomerLevel: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-portrait/get-customer-level-summary',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 4. 获取客户地区统计数据
|
||||||
|
getCustomerArea: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-portrait/get-customer-area-summary',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,8 +13,8 @@ export interface ProductCategoryVO {
|
|||||||
// ERP 产品分类 API
|
// ERP 产品分类 API
|
||||||
export const ProductCategoryApi = {
|
export const ProductCategoryApi = {
|
||||||
// 查询产品分类列表
|
// 查询产品分类列表
|
||||||
getProductCategoryList: async (params) => {
|
getProductCategoryList: async () => {
|
||||||
return await request.get({ url: `/erp/product-category/list`, params })
|
return await request.get({ url: `/erp/product-category/list` })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 查询产品分类精简列表
|
// 查询产品分类精简列表
|
||||||
|
|||||||
@@ -8,11 +8,15 @@ export interface ApiAccessLogVO {
|
|||||||
applicationName: string
|
applicationName: string
|
||||||
requestMethod: string
|
requestMethod: string
|
||||||
requestParams: string
|
requestParams: string
|
||||||
|
responseBody: string
|
||||||
requestUrl: string
|
requestUrl: string
|
||||||
userIp: string
|
userIp: string
|
||||||
userAgent: string
|
userAgent: string
|
||||||
|
operateModule: string
|
||||||
|
operateName: string
|
||||||
|
operateType: number
|
||||||
beginTime: Date
|
beginTime: Date
|
||||||
endTIme: Date
|
endTime: Date
|
||||||
duration: number
|
duration: number
|
||||||
resultCode: number
|
resultCode: number
|
||||||
resultMsg: string
|
resultMsg: string
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ export type CodegenColumnVO = {
|
|||||||
columnComment: string
|
columnComment: string
|
||||||
nullable: number
|
nullable: number
|
||||||
primaryKey: number
|
primaryKey: number
|
||||||
autoIncrement: boolean
|
|
||||||
ordinalPosition: number
|
ordinalPosition: number
|
||||||
javaType: string
|
javaType: string
|
||||||
javaField: string
|
javaField: string
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// 导出Html
|
|
||||||
export const exportHtml = () => {
|
|
||||||
return request.download({ url: '/infra/db-doc/export-html' })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 导出Word
|
|
||||||
export const exportWord = () => {
|
|
||||||
return request.download({ url: '/infra/db-doc/export-word' })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 导出Markdown
|
|
||||||
export const exportMarkdown = () => {
|
|
||||||
return request.download({ url: '/infra/db-doc/export-markdown' })
|
|
||||||
}
|
|
||||||
@@ -7,8 +7,8 @@ export interface Demo02CategoryVO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 查询示例分类列表
|
// 查询示例分类列表
|
||||||
export const getDemo02CategoryList = async (params) => {
|
export const getDemo02CategoryList = async () => {
|
||||||
return await request.get({ url: `/infra/demo02-category/list`, params })
|
return await request.get({ url: `/infra/demo02-category/list` })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询示例分类详情
|
// 查询示例分类详情
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export interface JobLogVO {
|
|||||||
duration: string
|
duration: string
|
||||||
status: number
|
status: number
|
||||||
createTime: string
|
createTime: string
|
||||||
|
result: string
|
||||||
}
|
}
|
||||||
|
|
||||||
// 任务日志列表
|
// 任务日志列表
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// IoT 设备 VO
|
||||||
|
export interface DeviceVO {
|
||||||
|
id: number // 设备 ID,主键,自增
|
||||||
|
deviceKey: string // 设备唯一标识符
|
||||||
|
deviceName: string // 设备名称
|
||||||
|
productId: number // 产品编号
|
||||||
|
productKey: string // 产品标识
|
||||||
|
deviceType: number // 设备类型
|
||||||
|
nickname: string // 设备备注名称
|
||||||
|
gatewayId: number // 网关设备 ID
|
||||||
|
status: number // 设备状态
|
||||||
|
statusLastUpdateTime: Date // 设备状态最后更新时间
|
||||||
|
lastOnlineTime: Date // 最后上线时间
|
||||||
|
lastOfflineTime: Date // 最后离线时间
|
||||||
|
activeTime: Date // 设备激活时间
|
||||||
|
createTime: Date // 创建时间
|
||||||
|
ip: string // 设备的 IP 地址
|
||||||
|
firmwareVersion: string // 设备的固件版本
|
||||||
|
deviceSecret: string // 设备密钥,用于设备认证,需安全存储
|
||||||
|
mqttClientId: string // MQTT 客户端 ID
|
||||||
|
mqttUsername: string // MQTT 用户名
|
||||||
|
mqttPassword: string // MQTT 密码
|
||||||
|
authType: string // 认证类型
|
||||||
|
latitude: number // 设备位置的纬度
|
||||||
|
longitude: number // 设备位置的经度
|
||||||
|
areaId: number // 地区编码
|
||||||
|
address: string // 设备详细地址
|
||||||
|
serialNumber: string // 设备序列号
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DeviceUpdateStatusVO {
|
||||||
|
id: number // 设备 ID,主键,自增
|
||||||
|
status: number // 设备状态
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设备 API
|
||||||
|
export const DeviceApi = {
|
||||||
|
// 查询设备分页
|
||||||
|
getDevicePage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/iot/device/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询设备详情
|
||||||
|
getDevice: async (id: number) => {
|
||||||
|
return await request.get({ url: `/iot/device/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增设备
|
||||||
|
createDevice: async (data: DeviceVO) => {
|
||||||
|
return await request.post({ url: `/iot/device/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改设备
|
||||||
|
updateDevice: async (data: DeviceVO) => {
|
||||||
|
return await request.put({ url: `/iot/device/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改设备状态
|
||||||
|
updateDeviceStatus: async (data: DeviceUpdateStatusVO) => {
|
||||||
|
return await request.put({ url: `/iot/device/update-status`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除设备
|
||||||
|
deleteDevice: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/iot/device/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取设备数量
|
||||||
|
getDeviceCount: async (productId: number) => {
|
||||||
|
return await request.get({ url: `/iot/device/count?productId=` + productId })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// IoT 产品 VO
|
||||||
|
export interface ProductVO {
|
||||||
|
id: number // 产品编号
|
||||||
|
name: string // 产品名称
|
||||||
|
productKey: string // 产品标识
|
||||||
|
protocolId: number // 协议编号
|
||||||
|
categoryId: number // 产品所属品类标识符
|
||||||
|
description: string // 产品描述
|
||||||
|
validateType: number // 数据校验级别
|
||||||
|
status: number // 产品状态
|
||||||
|
deviceType: number // 设备类型
|
||||||
|
netType: number // 联网方式
|
||||||
|
protocolType: number // 接入网关协议
|
||||||
|
dataFormat: number // 数据格式
|
||||||
|
deviceCount: number // 设备数量
|
||||||
|
createTime: Date // 创建时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoT 产品 API
|
||||||
|
export const ProductApi = {
|
||||||
|
// 查询产品分页
|
||||||
|
getProductPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/iot/product/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品详情
|
||||||
|
getProduct: async (id: number) => {
|
||||||
|
return await request.get({ url: `/iot/product/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增产品
|
||||||
|
createProduct: async (data: ProductVO) => {
|
||||||
|
return await request.post({ url: `/iot/product/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改产品
|
||||||
|
updateProduct: async (data: ProductVO) => {
|
||||||
|
return await request.put({ url: `/iot/product/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除产品
|
||||||
|
deleteProduct: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/iot/product/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出产品 Excel
|
||||||
|
exportProduct: async (params) => {
|
||||||
|
return await request.download({ url: `/iot/product/export-excel`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新产品状态
|
||||||
|
updateProductStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({ url: `/iot/product/update-status?id=` + id + `&status=` + status })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品(精简)列表
|
||||||
|
getSimpleProductList() {
|
||||||
|
return request.get({ url: '/iot/product/list-all-simple' })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// IoT 产品物模型 VO
|
||||||
|
export interface ThinkModelFunctionVO {
|
||||||
|
id: number // 物模型功能编号
|
||||||
|
identifier: string // 功能标识
|
||||||
|
name: string // 功能名称
|
||||||
|
description: string // 功能描述
|
||||||
|
productId: number // 产品编号
|
||||||
|
productKey: string // 产品标识
|
||||||
|
type: number // 功能类型
|
||||||
|
property: string // 属性
|
||||||
|
event: string // 事件
|
||||||
|
service: string // 服务
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoT 产品物模型 API
|
||||||
|
export const ThinkModelFunctionApi = {
|
||||||
|
// 查询产品物模型分页
|
||||||
|
getThinkModelFunctionPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/iot/think-model-function/page`, params })
|
||||||
|
},
|
||||||
|
// 获得产品物模型
|
||||||
|
getThinkModelFunctionListByProductId: async (params: any) => {
|
||||||
|
return await request.get({
|
||||||
|
url: `/iot/think-model-function/list-by-product-id`,
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品物模型详情
|
||||||
|
getThinkModelFunction: async (id: number) => {
|
||||||
|
return await request.get({ url: `/iot/think-model-function/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增产品物模型
|
||||||
|
createThinkModelFunction: async (data: ThinkModelFunctionVO) => {
|
||||||
|
return await request.post({ url: `/iot/think-model-function/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改产品物模型
|
||||||
|
updateThinkModelFunction: async (data: ThinkModelFunctionVO) => {
|
||||||
|
return await request.put({ url: `/iot/think-model-function/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除产品物模型
|
||||||
|
deleteThinkModelFunction: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/iot/think-model-function/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出产品物模型 Excel
|
||||||
|
exportThinkModelFunction: async (params) => {
|
||||||
|
return await request.download({ url: `/iot/think-model-function/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
import { getRefreshToken } from '@/utils/auth'
|
import { getRefreshToken } from '@/utils/auth'
|
||||||
import type { UserLoginVO } from './types'
|
import type { RegisterVO, UserLoginVO } from './types'
|
||||||
|
|
||||||
export interface SmsCodeVO {
|
export interface SmsCodeVO {
|
||||||
mobile: string
|
mobile: string
|
||||||
@@ -17,6 +17,11 @@ export const login = (data: UserLoginVO) => {
|
|||||||
return request.post({ url: '/system/auth/login', data })
|
return request.post({ url: '/system/auth/login', data })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 注册
|
||||||
|
export const register = (data: RegisterVO) => {
|
||||||
|
return request.post({ url: '/system/auth/register', data })
|
||||||
|
}
|
||||||
|
|
||||||
// 刷新访问令牌
|
// 刷新访问令牌
|
||||||
export const refreshToken = () => {
|
export const refreshToken = () => {
|
||||||
return request.post({ url: '/system/auth/refresh-token?refreshToken=' + getRefreshToken() })
|
return request.post({ url: '/system/auth/refresh-token?refreshToken=' + getRefreshToken() })
|
||||||
|
|||||||
@@ -29,3 +29,10 @@ export type UserVO = {
|
|||||||
loginIp: string
|
loginIp: string
|
||||||
loginDate: string
|
loginDate: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type RegisterVO = {
|
||||||
|
tenantName: string
|
||||||
|
username: string
|
||||||
|
password: string
|
||||||
|
captchaVerification: string
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得商品浏览记录分页
|
||||||
|
*
|
||||||
|
* @param params 请求参数
|
||||||
|
*/
|
||||||
|
export const getBrowseHistoryPage = (params: any) => {
|
||||||
|
return request.get({ url: '/product/browse-history/page', params })
|
||||||
|
}
|
||||||
@@ -24,20 +24,6 @@ export interface PropertyValueVO {
|
|||||||
remark?: string
|
remark?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 商品属性值的明细
|
|
||||||
*/
|
|
||||||
export interface PropertyValueDetailVO {
|
|
||||||
/** 属性项的编号 */
|
|
||||||
propertyId: number // 属性的编号
|
|
||||||
/** 属性的名称 */
|
|
||||||
propertyName: string
|
|
||||||
/** 属性值的编号 */
|
|
||||||
valueId: number
|
|
||||||
/** 属性值的名称 */
|
|
||||||
valueName: string
|
|
||||||
}
|
|
||||||
|
|
||||||
// ------------------------ 属性项 -------------------
|
// ------------------------ 属性项 -------------------
|
||||||
|
|
||||||
// 创建属性项
|
// 创建属性项
|
||||||
@@ -65,6 +51,11 @@ export const getPropertyPage = (params: PageParam) => {
|
|||||||
return request.get({ url: '/product/property/page', params })
|
return request.get({ url: '/product/property/page', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获得属性项精简列表
|
||||||
|
export const getPropertySimpleList = (): Promise<PropertyVO[]> => {
|
||||||
|
return request.get({ url: '/product/property/simple-list' })
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------ 属性值 -------------------
|
// ------------------------ 属性值 -------------------
|
||||||
|
|
||||||
// 获得属性值分页
|
// 获得属性值分页
|
||||||
@@ -91,3 +82,8 @@ export const updatePropertyValue = (data: PropertyValueVO) => {
|
|||||||
export const deletePropertyValue = (id: number) => {
|
export const deletePropertyValue = (id: number) => {
|
||||||
return request.delete({ url: `/product/property/value/delete?id=${id}` })
|
return request.delete({ url: `/product/property/value/delete?id=${id}` })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获得属性值精简列表
|
||||||
|
export const getPropertyValueSimpleList = (propertyId: number): Promise<PropertyValueVO[]> => {
|
||||||
|
return request.get({ url: '/product/property/value/simple-list', params: { propertyId } })
|
||||||
|
}
|
||||||
@@ -50,6 +50,8 @@ export interface Spu {
|
|||||||
giveIntegral?: number // 赠送积分
|
giveIntegral?: number // 赠送积分
|
||||||
virtualSalesCount?: number // 虚拟销量
|
virtualSalesCount?: number // 虚拟销量
|
||||||
price?: number // 商品价格
|
price?: number // 商品价格
|
||||||
|
combinationPrice?: number // 商品拼团价格
|
||||||
|
seckillPrice?: number // 商品秒杀价格
|
||||||
salesCount?: number // 商品销量
|
salesCount?: number // 商品销量
|
||||||
marketPrice?: number // 市场价
|
marketPrice?: number // 市场价
|
||||||
costPrice?: number // 成本价
|
costPrice?: number // 成本价
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ export interface CombinationActivityVO {
|
|||||||
virtualGroup?: number
|
virtualGroup?: number
|
||||||
status?: number
|
status?: number
|
||||||
limitDuration?: number
|
limitDuration?: number
|
||||||
|
combinationPrice?: number
|
||||||
products: CombinationProductVO[]
|
products: CombinationProductVO[]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,7 +37,7 @@ export interface SpuExtension extends Spu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 查询拼团活动列表
|
// 查询拼团活动列表
|
||||||
export const getCombinationActivityPage = async (params) => {
|
export const getCombinationActivityPage = async (params: any) => {
|
||||||
return await request.get({ url: '/promotion/combination-activity/page', params })
|
return await request.get({ url: '/promotion/combination-activity/page', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,6 +46,11 @@ export const getCombinationActivity = async (id: number) => {
|
|||||||
return await request.get({ url: '/promotion/combination-activity/get?id=' + id })
|
return await request.get({ url: '/promotion/combination-activity/get?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获得拼团活动列表,基于活动编号数组
|
||||||
|
export const getCombinationActivityListByIds = (ids: number[]) => {
|
||||||
|
return request.get({ url: `/promotion/combination-activity/list-by-ids?ids=${ids}` })
|
||||||
|
}
|
||||||
|
|
||||||
// 新增拼团活动
|
// 新增拼团活动
|
||||||
export const createCombinationActivity = async (data: CombinationActivityVO) => {
|
export const createCombinationActivity = async (data: CombinationActivityVO) => {
|
||||||
return await request.post({ url: '/promotion/combination-activity/create', data })
|
return await request.post({ url: '/promotion/combination-activity/create', data })
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ export function getCouponTemplatePage(params: PageParam) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获得优惠劵模板分页
|
// 获得优惠劵模板分页
|
||||||
export function getCouponTemplateList(ids: number[]) {
|
export function getCouponTemplateList(ids: number[]): Promise<CouponTemplateVO[]> {
|
||||||
return request.get({
|
return request.get({
|
||||||
url: `/promotion/coupon-template/list?ids=${ids}`
|
url: `/promotion/coupon-template/list?ids=${ids}`
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface KeFuConversationRespVO {
|
||||||
|
id: number // 编号
|
||||||
|
userId: number // 会话所属用户
|
||||||
|
userAvatar: string // 会话所属用户头像
|
||||||
|
userNickname: string // 会话所属用户昵称
|
||||||
|
lastMessageTime: Date // 最后聊天时间
|
||||||
|
lastMessageContent: string // 最后聊天内容
|
||||||
|
lastMessageContentType: number // 最后发送的消息类型
|
||||||
|
adminPinned: boolean // 管理端置顶
|
||||||
|
userDeleted: boolean // 用户是否可见
|
||||||
|
adminDeleted: boolean // 管理员是否可见
|
||||||
|
adminUnreadMessageCount: number // 管理员未读消息数
|
||||||
|
createTime?: string // 创建时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// 客服会话 API
|
||||||
|
export const KeFuConversationApi = {
|
||||||
|
// 获得客服会话列表
|
||||||
|
getConversationList: async () => {
|
||||||
|
return await request.get({ url: '/promotion/kefu-conversation/list' })
|
||||||
|
},
|
||||||
|
// 客服会话置顶
|
||||||
|
updateConversationPinned: async (data: any) => {
|
||||||
|
return await request.put({
|
||||||
|
url: '/promotion/kefu-conversation/update-conversation-pinned',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 删除客服会话
|
||||||
|
deleteConversation: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/promotion/kefu-conversation/delete?id=${id}`})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface KeFuMessageRespVO {
|
||||||
|
id: number // 编号
|
||||||
|
conversationId: number // 会话编号
|
||||||
|
senderId: number // 发送人编号
|
||||||
|
senderAvatar: string // 发送人头像
|
||||||
|
senderType: number // 发送人类型
|
||||||
|
receiverId: number // 接收人编号
|
||||||
|
receiverType: number // 接收人类型
|
||||||
|
contentType: number // 消息类型
|
||||||
|
content: string // 消息
|
||||||
|
readStatus: boolean // 是否已读
|
||||||
|
createTime: Date // 创建时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// 客服会话 API
|
||||||
|
export const KeFuMessageApi = {
|
||||||
|
// 发送客服消息
|
||||||
|
sendKeFuMessage: async (data: any) => {
|
||||||
|
return await request.post({
|
||||||
|
url: '/promotion/kefu-message/send',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 更新客服消息已读状态
|
||||||
|
updateKeFuMessageReadStatus: async (conversationId: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: '/promotion/kefu-message/update-read-status?conversationId=' + conversationId
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获得消息分页数据
|
||||||
|
getKeFuMessagePage: async (params: any) => {
|
||||||
|
return await request.get({ url: '/promotion/kefu-message/page', params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
import { Sku, Spu } from '@/api/mall/product/spu' // 积分商城活动 VO
|
||||||
|
|
||||||
|
// 积分商城活动 VO
|
||||||
|
export interface PointActivityVO {
|
||||||
|
id: number // 积分商城活动编号
|
||||||
|
spuId: number // 积分商城活动商品
|
||||||
|
status: number // 活动状态
|
||||||
|
stock: number // 积分商城活动库存
|
||||||
|
totalStock: number // 积分商城活动总库存
|
||||||
|
remark?: string // 备注
|
||||||
|
sort: number // 排序
|
||||||
|
createTime: string // 创建时间
|
||||||
|
products: PointProductVO[] // 积分商城商品
|
||||||
|
|
||||||
|
// ========== 商品字段 ==========
|
||||||
|
spuName: string // 商品名称
|
||||||
|
picUrl: string // 商品主图
|
||||||
|
marketPrice: number // 商品市场价,单位:分
|
||||||
|
|
||||||
|
//======================= 显示所需兑换积分最少的 sku 信息 =======================
|
||||||
|
point: number // 兑换积分
|
||||||
|
price: number // 兑换金额,单位:分
|
||||||
|
}
|
||||||
|
|
||||||
|
// 秒杀活动所需属性
|
||||||
|
export interface PointProductVO {
|
||||||
|
id?: number // 积分商城商品编号
|
||||||
|
activityId?: number // 积分商城活动 id
|
||||||
|
spuId?: number // 商品 SPU 编号
|
||||||
|
skuId: number // 商品 SKU 编号
|
||||||
|
count: number // 可兑换数量
|
||||||
|
point: number // 兑换积分
|
||||||
|
price: number // 兑换金额,单位:分
|
||||||
|
stock: number // 积分商城商品库存
|
||||||
|
activityStatus?: number // 积分商城商品状态
|
||||||
|
}
|
||||||
|
|
||||||
|
// 扩展 Sku 配置
|
||||||
|
export type SkuExtension = Sku & {
|
||||||
|
productConfig: PointProductVO
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SpuExtension extends Spu {
|
||||||
|
skus: SkuExtension[] // 重写类型
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SpuExtension0 extends Spu {
|
||||||
|
pointStock: number // 积分商城活动库存
|
||||||
|
pointTotalStock: number // 积分商城活动总库存
|
||||||
|
point: number // 兑换积分
|
||||||
|
pointPrice: number // 兑换金额,单位:分
|
||||||
|
}
|
||||||
|
|
||||||
|
// 积分商城活动 API
|
||||||
|
export const PointActivityApi = {
|
||||||
|
// 查询积分商城活动分页
|
||||||
|
getPointActivityPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/promotion/point-activity/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询积分商城活动详情
|
||||||
|
getPointActivity: async (id: number) => {
|
||||||
|
return await request.get({ url: `/promotion/point-activity/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询积分商城活动列表,基于活动编号数组
|
||||||
|
getPointActivityListByIds: async (ids: number[]) => {
|
||||||
|
return request.get({ url: `/promotion/point-activity/list-by-ids?ids=${ids}` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增积分商城活动
|
||||||
|
createPointActivity: async (data: PointActivityVO) => {
|
||||||
|
return await request.post({ url: `/promotion/point-activity/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改积分商城活动
|
||||||
|
updatePointActivity: async (data: PointActivityVO) => {
|
||||||
|
return await request.put({ url: `/promotion/point-activity/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除积分商城活动
|
||||||
|
deletePointActivity: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/promotion/point-activity/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 关闭秒杀活动
|
||||||
|
closePointActivity: async (id: number) => {
|
||||||
|
return await request.put({ url: '/promotion/point-activity/close?id=' + id })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,34 +1,39 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface DiscountActivityVO {
|
export interface RewardActivityVO {
|
||||||
id?: number
|
id?: number
|
||||||
name?: string
|
name?: string
|
||||||
startTime?: Date
|
startTime?: Date
|
||||||
endTime?: Date
|
endTime?: Date
|
||||||
|
startAndEndTime?: Date[] // 只前端使用
|
||||||
remark?: string
|
remark?: string
|
||||||
conditionType?: number
|
conditionType?: number
|
||||||
productScope?: number
|
productScope?: number
|
||||||
|
rules: RewardRule[]
|
||||||
|
// 如下仅用于表单,不提交
|
||||||
|
productScopeValues?: number[] // 商品范围:值为品类编号列表、商品编号列表
|
||||||
|
productCategoryIds?: number[]
|
||||||
productSpuIds?: number[]
|
productSpuIds?: number[]
|
||||||
rules?: DiscountProductVO[]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 优惠规则
|
// 优惠规则
|
||||||
export interface DiscountProductVO {
|
export interface RewardRule {
|
||||||
limit: number
|
limit?: number
|
||||||
discountPrice: number
|
discountPrice?: number
|
||||||
freeDelivery: boolean
|
freeDelivery?: boolean
|
||||||
point: number
|
point: number
|
||||||
couponIds: number[]
|
giveCouponTemplateCounts?: {
|
||||||
couponCounts: number[]
|
[key: number]: number
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增满减送活动
|
// 新增满减送活动
|
||||||
export const createRewardActivity = async (data: DiscountActivityVO) => {
|
export const createRewardActivity = async (data: RewardActivityVO) => {
|
||||||
return await request.post({ url: '/promotion/reward-activity/create', data })
|
return await request.post({ url: '/promotion/reward-activity/create', data })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新满减送活动
|
// 更新满减送活动
|
||||||
export const updateRewardActivity = async (data: DiscountActivityVO) => {
|
export const updateRewardActivity = async (data: RewardActivityVO) => {
|
||||||
return await request.put({ url: '/promotion/reward-activity/update', data })
|
return await request.put({ url: '/promotion/reward-activity/update', data })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,7 +47,12 @@ export const getReward = async (id: number) => {
|
|||||||
return await request.get({ url: '/promotion/reward-activity/get?id=' + id })
|
return await request.get({ url: '/promotion/reward-activity/get?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除限时折扣活动
|
// 删除满减送活动
|
||||||
export const deleteRewardActivity = async (id: number) => {
|
export const deleteRewardActivity = async (id: number) => {
|
||||||
return await request.delete({ url: '/promotion/reward-activity/delete?id=' + id })
|
return await request.delete({ url: '/promotion/reward-activity/delete?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 关闭满减送活动
|
||||||
|
export const closeRewardActivity = async (id: number) => {
|
||||||
|
return await request.put({ url: '/promotion/reward-activity/close?id=' + id })
|
||||||
|
}
|
||||||
@@ -18,12 +18,14 @@ export interface SeckillActivityVO {
|
|||||||
singleLimitCount?: number
|
singleLimitCount?: number
|
||||||
stock?: number
|
stock?: number
|
||||||
totalStock?: number
|
totalStock?: number
|
||||||
|
seckillPrice?: number
|
||||||
products?: SeckillProductVO[]
|
products?: SeckillProductVO[]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 秒杀活动所需属性
|
// 秒杀活动所需属性
|
||||||
export interface SeckillProductVO {
|
export interface SeckillProductVO {
|
||||||
skuId: number
|
skuId: number
|
||||||
|
spuId: number
|
||||||
seckillPrice: number
|
seckillPrice: number
|
||||||
stock: number
|
stock: number
|
||||||
}
|
}
|
||||||
@@ -42,6 +44,11 @@ export const getSeckillActivityPage = async (params) => {
|
|||||||
return await request.get({ url: '/promotion/seckill-activity/page', params })
|
return await request.get({ url: '/promotion/seckill-activity/page', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询秒杀活动列表,基于活动编号数组
|
||||||
|
export const getSeckillActivityListByIds = (ids: number[]) => {
|
||||||
|
return request.get({ url: `/promotion/seckill-activity/list-by-ids?ids=${ids}` })
|
||||||
|
}
|
||||||
|
|
||||||
// 查询秒杀活动详情
|
// 查询秒杀活动详情
|
||||||
export const getSeckillActivity = async (id: number) => {
|
export const getSeckillActivity = async (id: number) => {
|
||||||
return await request.get({ url: '/promotion/seckill-activity/get?id=' + id })
|
return await request.get({ url: '/promotion/seckill-activity/get?id=' + id })
|
||||||
|
|||||||
@@ -1,49 +1,53 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// 秒杀时段 VO
|
||||||
export interface SeckillConfigVO {
|
export interface SeckillConfigVO {
|
||||||
id: number
|
id: number // 编号
|
||||||
name: string
|
name: string // 秒杀时段名称
|
||||||
startTime: string
|
startTime: string // 开始时间点
|
||||||
endTime: string
|
endTime: string // 结束时间点
|
||||||
sliderPicUrls: string[]
|
sliderPicUrls: string[] // 秒杀轮播图
|
||||||
status: number
|
status: number // 活动状态
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询秒杀时段配置列表
|
// 秒杀时段 API
|
||||||
export const getSeckillConfigPage = async (params) => {
|
export const SeckillConfigApi = {
|
||||||
return await request.get({ url: '/promotion/seckill-config/page', params })
|
// 查询秒杀时段分页
|
||||||
}
|
getSeckillConfigPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/promotion/seckill-config/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
// 查询秒杀时段配置详情
|
// 查询秒杀时段列表
|
||||||
export const getSeckillConfig = async (id: number) => {
|
getSimpleSeckillConfigList: async () => {
|
||||||
return await request.get({ url: '/promotion/seckill-config/get?id=' + id })
|
return await request.get({ url: `/promotion/seckill-config/list` })
|
||||||
}
|
},
|
||||||
|
|
||||||
// 获得所有开启状态的秒杀时段精简列表
|
// 查询秒杀时段详情
|
||||||
export const getSimpleSeckillConfigList = async () => {
|
getSeckillConfig: async (id: number) => {
|
||||||
return await request.get({ url: '/promotion/seckill-config/list-all-simple' })
|
return await request.get({ url: `/promotion/seckill-config/get?id=` + id })
|
||||||
}
|
},
|
||||||
|
|
||||||
// 新增秒杀时段配置
|
// 新增秒杀时段
|
||||||
export const createSeckillConfig = async (data: SeckillConfigVO) => {
|
createSeckillConfig: async (data: SeckillConfigVO) => {
|
||||||
return await request.post({ url: '/promotion/seckill-config/create', data })
|
return await request.post({ url: `/promotion/seckill-config/create`, data })
|
||||||
}
|
},
|
||||||
|
|
||||||
// 修改秒杀时段配置
|
// 修改秒杀时段
|
||||||
export const updateSeckillConfig = async (data: SeckillConfigVO) => {
|
updateSeckillConfig: async (data: SeckillConfigVO) => {
|
||||||
return await request.put({ url: '/promotion/seckill-config/update', data })
|
return await request.put({ url: `/promotion/seckill-config/update`, data })
|
||||||
}
|
},
|
||||||
|
|
||||||
// 修改时段配置状态
|
// 删除秒杀时段
|
||||||
export const updateSeckillConfigStatus = (id: number, status: number) => {
|
deleteSeckillConfig: async (id: number) => {
|
||||||
const data = {
|
return await request.delete({ url: `/promotion/seckill-config/delete?id=` + id })
|
||||||
id,
|
},
|
||||||
status
|
|
||||||
|
// 修改时段配置状态
|
||||||
|
updateSeckillConfigStatus: async (id: number, status: number) => {
|
||||||
|
const data = {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
return request.put({ url: '/promotion/seckill-config/update-status', data: data })
|
||||||
}
|
}
|
||||||
return request.put({ url: '/promotion/seckill-config/update-status', data: data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除秒杀时段配置
|
|
||||||
export const deleteSeckillConfig = async (id: number) => {
|
|
||||||
return await request.delete({ url: '/promotion/seckill-config/delete?id=' + id })
|
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ import { formatDate } from '@/utils/formatTime'
|
|||||||
|
|
||||||
/** 会员分析 Request VO */
|
/** 会员分析 Request VO */
|
||||||
export interface MemberAnalyseReqVO {
|
export interface MemberAnalyseReqVO {
|
||||||
times: [dayjs.ConfigType, dayjs.ConfigType]
|
times: dayjs.ConfigType[]
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 会员分析 Response VO */
|
/** 会员分析 Response VO */
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ export const getExpressTrackList = async (id: number | null) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface DeliveryVO {
|
export interface DeliveryVO {
|
||||||
id: number // 订单编号
|
id?: number // 订单编号
|
||||||
logisticsId: number | null // 物流公司编号
|
logisticsId: number | null // 物流公司编号
|
||||||
logisticsNo: string // 物流编号
|
logisticsNo: string // 物流编号
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,8 +46,3 @@ export const updateUserLevel = async (data: any) => {
|
|||||||
export const updateUserPoint = async (data: any) => {
|
export const updateUserPoint = async (data: any) => {
|
||||||
return await request.put({ url: `/member/user/update-point`, data })
|
return await request.put({ url: `/member/user/update-point`, data })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改会员用户余额
|
|
||||||
export const updateUserBalance = async (data: any) => {
|
|
||||||
return await request.put({ url: `/member/user/update-balance`, data })
|
|
||||||
}
|
|
||||||
@@ -2,6 +2,7 @@ import request from '@/config/axios'
|
|||||||
|
|
||||||
export interface AppVO {
|
export interface AppVO {
|
||||||
id: number
|
id: number
|
||||||
|
appKey: string
|
||||||
name: string
|
name: string
|
||||||
status: number
|
status: number
|
||||||
remark: string
|
remark: string
|
||||||
|
|||||||
@@ -84,8 +84,14 @@ export const getOrderPage = async (params: OrderPageReqVO) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 查询详情支付订单
|
// 查询详情支付订单
|
||||||
export const getOrder = async (id: number) => {
|
export const getOrder = async (id: number, sync?: boolean) => {
|
||||||
return await request.get({ url: '/pay/order/get?id=' + id })
|
return await request.get({
|
||||||
|
url: '/pay/order/get',
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
sync
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得支付订单的明细
|
// 获得支付订单的明细
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import request from '@/config/axios'
|
|||||||
export interface PayWalletUserReqVO {
|
export interface PayWalletUserReqVO {
|
||||||
userId: number
|
userId: number
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 钱包 VO */
|
/** 钱包 VO */
|
||||||
export interface WalletVO {
|
export interface WalletVO {
|
||||||
id: number
|
id: number
|
||||||
@@ -20,7 +21,12 @@ export const getWallet = async (params: PayWalletUserReqVO) => {
|
|||||||
return await request.get<WalletVO>({ url: `/pay/wallet/get`, params })
|
return await request.get<WalletVO>({ url: `/pay/wallet/get`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询会员钱包列表
|
/** 查询会员钱包列表 */
|
||||||
export const getWalletPage = async (params) => {
|
export const getWalletPage = async (params: any) => {
|
||||||
return await request.get({ url: `/pay/wallet/page`, params })
|
return await request.get({ url: `/pay/wallet/page`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 修改会员钱包余额 */
|
||||||
|
export const updateWalletBalance = async (data: any) => {
|
||||||
|
return await request.put({ url: `/pay/wallet/update-balance`, data })
|
||||||
|
}
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface UReportDataVO {
|
|
||||||
id: number
|
|
||||||
name: string
|
|
||||||
status: number
|
|
||||||
content: string
|
|
||||||
remark: string
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询Ureport2报表分页
|
|
||||||
export const getUReportDataPage = async (params) => {
|
|
||||||
return await request.get({ url: `/report/ureport-data/page`, params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询Ureport2报表详情
|
|
||||||
export const getUReportData = async (id: number) => {
|
|
||||||
return await request.get({ url: `/report/ureport-data/get?id=` + id })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增Ureport2报表
|
|
||||||
export const createUReportData = async (data: UReportDataVO) => {
|
|
||||||
return await request.post({ url: `/report/ureport-data/create`, data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改Ureport2报表
|
|
||||||
export const updateUReportData = async (data: UReportDataVO) => {
|
|
||||||
return await request.put({ url: `/report/ureport-data/update`, data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除Ureport2报表
|
|
||||||
export const deleteUReportData = async (id: number) => {
|
|
||||||
return await request.delete({ url: `/report/ureport-data/delete?id=` + id })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 导出Ureport2报表 Excel
|
|
||||||
export const exportUReportData = async (params) => {
|
|
||||||
return await request.download({ url: `/report/ureport-data/export-excel`, params })
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ErrorCodeVO {
|
|
||||||
id: number | undefined
|
|
||||||
type: number
|
|
||||||
applicationName: string
|
|
||||||
code: number | undefined
|
|
||||||
message: string
|
|
||||||
memo: string
|
|
||||||
createTime: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询错误码列表
|
|
||||||
export const getErrorCodePage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/system/error-code/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询错误码详情
|
|
||||||
export const getErrorCode = (id: number) => {
|
|
||||||
return request.get({ url: '/system/error-code/get?id=' + id })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增错误码
|
|
||||||
export const createErrorCode = (data: ErrorCodeVO) => {
|
|
||||||
return request.post({ url: '/system/error-code/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改错误码
|
|
||||||
export const updateErrorCode = (data: ErrorCodeVO) => {
|
|
||||||
return request.put({ url: '/system/error-code/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除错误码
|
|
||||||
export const deleteErrorCode = (id: number) => {
|
|
||||||
return request.delete({ url: '/system/error-code/delete?id=' + id })
|
|
||||||
}
|
|
||||||
// 导出错误码
|
|
||||||
export const excelErrorCode = (params) => {
|
|
||||||
return request.download({ url: '/system/error-code/export-excel', params })
|
|
||||||
}
|
|
||||||
@@ -8,6 +8,7 @@ export interface MailAccountVO {
|
|||||||
host: string
|
host: string
|
||||||
port: number
|
port: number
|
||||||
sslEnable: boolean
|
sslEnable: boolean
|
||||||
|
starttlsEnable: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询邮箱账号列表
|
// 查询邮箱账号列表
|
||||||
|
|||||||
@@ -2,30 +2,6 @@ import request from '@/config/axios'
|
|||||||
|
|
||||||
export type OperateLogVO = {
|
export type OperateLogVO = {
|
||||||
id: number
|
id: number
|
||||||
userNickname: string
|
|
||||||
traceId: string
|
|
||||||
userId: number
|
|
||||||
module: string
|
|
||||||
name: string
|
|
||||||
type: number
|
|
||||||
content: string
|
|
||||||
exts: Map<String, Object>
|
|
||||||
requestMethod: string
|
|
||||||
requestUrl: string
|
|
||||||
userIp: string
|
|
||||||
userAgent: string
|
|
||||||
javaMethod: string
|
|
||||||
javaMethodArgs: string
|
|
||||||
startTime: Date
|
|
||||||
duration: number
|
|
||||||
resultCode: number
|
|
||||||
resultMsg: string
|
|
||||||
resultData: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export type OperateLogV2VO = {
|
|
||||||
id: number
|
|
||||||
userNickname: string
|
|
||||||
traceId: string
|
traceId: string
|
||||||
userType: number
|
userType: number
|
||||||
userId: number
|
userId: number
|
||||||
@@ -42,11 +18,6 @@ export type OperateLogV2VO = {
|
|||||||
creator: string
|
creator: string
|
||||||
creatorName: string
|
creatorName: string
|
||||||
createTime: Date
|
createTime: Date
|
||||||
// 数据扩展,渲染时使用
|
|
||||||
title: string // 操作标题(如果为空则取 name 值)
|
|
||||||
colSize: number // 变更记录行数
|
|
||||||
contentStrList: string[]
|
|
||||||
tagsContentList: string[]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询操作日志列表
|
// 查询操作日志列表
|
||||||
@@ -54,6 +25,6 @@ export const getOperateLogPage = (params: PageParam) => {
|
|||||||
return request.get({ url: '/system/operate-log/page', params })
|
return request.get({ url: '/system/operate-log/page', params })
|
||||||
}
|
}
|
||||||
// 导出操作日志
|
// 导出操作日志
|
||||||
export const exportOperateLog = (params) => {
|
export const exportOperateLog = (params: any) => {
|
||||||
return request.download({ url: '/system/operate-log/export', params })
|
return request.download({ url: '/system/operate-log/export', params })
|
||||||
}
|
}
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
import request from '@/config/axios'
|
|
||||||
import qs from 'qs'
|
|
||||||
|
|
||||||
export interface SensitiveWordVO {
|
|
||||||
id: number
|
|
||||||
name: string
|
|
||||||
status: number
|
|
||||||
description: string
|
|
||||||
tags: string[]
|
|
||||||
createTime: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface SensitiveWordTestReqVO {
|
|
||||||
text: string
|
|
||||||
tag: string[]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询敏感词列表
|
|
||||||
export const getSensitiveWordPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/system/sensitive-word/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询敏感词详情
|
|
||||||
export const getSensitiveWord = (id: number) => {
|
|
||||||
return request.get({ url: '/system/sensitive-word/get?id=' + id })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增敏感词
|
|
||||||
export const createSensitiveWord = (data: SensitiveWordVO) => {
|
|
||||||
return request.post({ url: '/system/sensitive-word/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改敏感词
|
|
||||||
export const updateSensitiveWord = (data: SensitiveWordVO) => {
|
|
||||||
return request.put({ url: '/system/sensitive-word/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除敏感词
|
|
||||||
export const deleteSensitiveWord = (id: number) => {
|
|
||||||
return request.delete({ url: '/system/sensitive-word/delete?id=' + id })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 导出敏感词
|
|
||||||
export const exportSensitiveWord = (params) => {
|
|
||||||
return request.download({ url: '/system/sensitive-word/export-excel', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取所有敏感词的标签数组
|
|
||||||
export const getSensitiveWordTagList = () => {
|
|
||||||
return request.get({ url: '/system/sensitive-word/get-tags' })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得文本所包含的不合法的敏感词数组
|
|
||||||
export const validateText = (query: SensitiveWordTestReqVO) => {
|
|
||||||
return request.get({
|
|
||||||
url: '/system/sensitive-word/validate-text?' + qs.stringify(query, { arrayFormat: 'repeat' })
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1715606039621" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4256" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M878.250667 981.333333H375.338667a104.661333 104.661333 0 0 1-104.661334-104.661333V375.338667a104.661333 104.661333 0 0 1 104.661334-104.661334h502.912a104.661333 104.661333 0 0 1 104.661333 104.661334v502.912C981.333333 934.485333 934.485333 981.333333 878.250667 981.333333zM375.338667 364.373333a10.666667 10.666667 0 0 0-10.922667 10.965334v502.912c0 6.229333 4.693333 10.922667 10.922667 10.922666h502.912a10.666667 10.666667 0 0 0 10.922666-10.922666V375.338667a10.666667 10.666667 0 0 0-10.922666-10.922667H375.338667z" fill="#ffffff" p-id="4257"></path><path d="M192.597333 753.322667H147.328A104.661333 104.661333 0 0 1 42.666667 648.661333V147.328A104.661333 104.661333 0 0 1 147.328 42.666667H650.24a104.661333 104.661333 0 0 1 104.618667 104.661333v49.962667c0 26.538667-20.309333 46.848-46.848 46.848a46.037333 46.037333 0 0 1-46.848-46.848V147.328a10.666667 10.666667 0 0 0-10.922667-10.965333H147.328a10.666667 10.666667 0 0 0-10.965333 10.965333V650.24c0 6.229333 4.693333 10.922667 10.965333 10.922667h45.269333c26.538667 0 46.848 20.309333 46.848 46.848 0 26.538667-21.845333 45.312-46.848 45.312z" fill="#ffffff" p-id="4258"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1715352878351" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1499" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M624.5 786.3c92.9 0 168.2-75.3 168.2-168.2V309c0-92.4-75.3-168.2-168.2-168.2H303.6c-92.4 0-168.2 75.3-168.2 168.2v309.1c0 92.4 75.3 168.2 168.2 168.2h320.9zM178.2 618.1V309c0-69.4 56.1-125.5 125.5-125.5h320.9c69.4 0 125.5 56.1 125.5 125.5v309.1c0 69.4-56.1 125.5-125.5 125.5h-321c-69.4 0-125.4-56.1-125.4-125.5z" p-id="1500" fill="#8a8a8a"></path><path d="M849.8 295.1v361.5c0 102.7-83.6 186.3-186.3 186.3H279.1v42.7h384.4c126.3 0 229.1-102.8 229.1-229.1V295.1h-42.8zM307.9 361.8h312.3c11.8 0 21.4-9.6 21.4-21.4 0-11.8-9.6-21.4-21.4-21.4H307.9c-11.8 0-21.4 9.6-21.4 21.4 0 11.9 9.6 21.4 21.4 21.4zM307.9 484.6h312.3c11.8 0 21.4-9.6 21.4-21.4 0-11.8-9.6-21.4-21.4-21.4H307.9c-11.8 0-21.4 9.6-21.4 21.4 0 11.9 9.6 21.4 21.4 21.4z" p-id="1501" fill="#8a8a8a"></path><path d="M620.2 607.4c11.8 0 21.4-9.6 21.4-21.4 0-11.8-9.6-21.4-21.4-21.4H307.9c-11.8 0-21.4 9.6-21.4 21.4 0 11.8 9.6 21.4 21.4 21.4h312.3z" p-id="1502" fill="#8a8a8a"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 87 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1715354120346" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3256" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M907.1 263.7H118.9c-9.1 0-16.4-7.3-16.4-16.4s7.3-16.4 16.4-16.4H907c9.1 0 16.4 7.3 16.4 16.4s-7.3 16.4-16.3 16.4z" fill="#8a8a8a" p-id="3257"></path><path d="M772.5 928.3H257.4c-27.7 0-50.2-22.5-50.2-50.2V247.2c0-9.1 7.3-16.4 16.4-16.4H801c12.1 0 21.9 9.8 21.9 21.9v625.2c0 27.8-22.6 50.4-50.4 50.4zM240 263.7v614.4c0 9.6 7.8 17.4 17.4 17.4h515.2c9.7 0 17.5-7.9 17.5-17.5V263.7H240zM657.4 131.1H368.6c-9.1 0-16.4-7.3-16.4-16.4s7.3-16.4 16.4-16.4h288.7c9.1 0 16.4 7.3 16.4 16.4s-7.3 16.4-16.3 16.4z" fill="#8a8a8a" p-id="3258"></path><path d="M416 754.5c-9.1 0-16.4-7.3-16.4-16.4V517.8c0-9.1 7.3-16.4 16.4-16.4s16.4 7.3 16.4 16.4V738c0.1 9.1-7.3 16.5-16.4 16.5z" fill="#8a8a8a" p-id="3259"></path><path d="M416 465.2c-9.1 0-16.4-7.3-16.4-16.4v-59.4c0-9.1 7.3-16.4 16.4-16.4s16.4 7.3 16.4 16.4v59.4c0.1 9.1-7.3 16.4-16.4 16.4zM604.9 754.5c-9.1 0-16.4-7.3-16.4-16.4v-67.2c0-9.1 7.3-16.4 16.4-16.4s16.4 7.3 16.4 16.4V738c0 9.1-7.3 16.5-16.4 16.5z" fill="#8a8a8a" opacity=".4" p-id="3260"></path><path d="M604.9 619.1c-9.1 0-16.4-7.3-16.4-16.4V389.4c0-9.1 7.3-16.4 16.4-16.4s16.4 7.3 16.4 16.4v213.3c0 9.1-7.3 16.4-16.4 16.4z" fill="#8a8a8a" p-id="3261"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1716345268026" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5622" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M956.408445 419.226665a250.670939 250.670939 0 0 0-22.425219-209.609236A263.163526 263.163526 0 0 0 652.490412 85.715535 259.784384 259.784384 0 0 0 457.728923 0.008192a261.422756 261.422756 0 0 0-249.44216 178.582564 258.453206 258.453206 0 0 0-172.848261 123.901894c-57.03583 96.868753-44.031251 219.132275 32.153053 302.279661a250.670939 250.670939 0 0 0 22.32282 209.609237 263.163526 263.163526 0 0 0 281.595213 123.901893A259.067596 259.067596 0 0 0 566.271077 1023.990784a260.60357 260.60357 0 0 0 249.339762-178.889759 258.453206 258.453206 0 0 0 172.848261-123.901893c57.445423-96.868753 44.13365-218.82508-32.050655-302.074865zM566.578272 957.124721c-45.362429 0-89.496079-15.666934-124.516283-44.543243 1.638372-0.921584 4.198329-2.150363 6.143895-3.481541l206.537289-117.757998a32.35785 32.35785 0 0 0 16.895713-29.081105V474.82892l87.243317 49.97035c1.023983 0.307195 1.638372 1.228779 1.638372 2.252762v238.075953c0 105.8798-86.936122 191.689541-193.942303 191.996736zM148.588578 781.102113a189.846373 189.846373 0 0 1-23.346803-128.612213c1.535974 1.023983 4.09593 2.559956 6.143895 3.48154L337.922959 773.729439c10.444622 6.143896 23.346803 6.143896 34.098621 0l252.30931-143.664758v99.531108c0 1.023983-0.307195 1.945567-1.331177 2.559956l-208.892449 118.986778a196.297463 196.297463 0 0 1-265.518686-70.04041zM94.112704 335.97688c22.630015-39.013737 58.367008-68.81163 101.16948-84.171369V494.591784c0 11.7758 6.45109 22.93721 16.793315 28.978707l252.30931 143.767156L377.141493 716.796006a3.174346 3.174346 0 0 1-2.867152 0.307195l-208.892448-118.986777A190.870355 190.870355 0 0 1 94.215102 335.874482z m717.607001 164.861198L559.410394 357.070922 646.653711 307.20297a3.174346 3.174346 0 0 1 2.969549-0.307195l208.892449 118.986777a190.358364 190.358364 0 0 1 70.961994 262.139544 194.556693 194.556693 0 0 1-101.16948 84.171369V529.407192a31.538664 31.538664 0 0 0-16.588518-28.671513z m87.03852-129.329002c-1.74077-1.023983-4.300727-2.559956-6.246294-3.48154l-206.639687-117.757999a34.09862 34.09862 0 0 0-33.996222 0L399.566711 393.934295v-99.531108c0-1.023983 0.307195-1.945567 1.331178-2.559956l208.892449-119.089176a195.990268 195.990268 0 0 1 265.518686 70.450003c22.732414 38.706542 31.129071 84.171369 23.346803 128.305018zM352.258716 548.862861l-87.243317-49.560757a2.457558 2.457558 0 0 1-1.638372-2.252762V258.870991c0-105.8798 87.243317-191.996736 194.556692-191.689541a194.556693 194.556693 0 0 1 124.209089 44.543243c-1.638372 0.921584-4.198329 2.252762-6.143896 3.48154l-206.639687 117.757999a31.948257 31.948257 0 0 0-16.793315 29.081105l-0.307194 286.715126z m47.307995-100.759887L512 384.001664l112.535687 63.998912v127.997824l-112.228492 63.998912-112.535687-63.998912-0.307195-127.997824z" p-id="5623" fill="#707070"></path></svg>
|
||||||
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1724304256588" class="icon" viewBox="0 0 1300 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1272" xmlns:xlink="http://www.w3.org/1999/xlink" width="253.90625" height="200"><path d="M784.058182 99.258182l10.938182 18.385454-21.294546-2.56-14.196363 16.058182-4.072728-21.061818-19.781818-8.494545 18.734546-10.472728 2.094545-21.294545 15.709091 14.545454 20.945454-4.654545-9.076363 19.549091zM1067.287273 642.443636l-18.501818 10.821819 2.56-21.294546-16.058182-14.196364 21.061818-4.072727 8.494545-19.665454 10.472728 18.734545 21.294545 1.978182-14.661818 15.709091 4.770909 20.945454-19.432727-8.96z" fill="#2196F3" p-id="1273"></path><path d="M1067.287273 642.443636l-18.501818 10.821819 2.56-21.294546-16.058182-14.196364 21.061818-4.072727 8.494545-19.665454 10.472728 18.734545 21.294545 1.978182-14.661818 15.709091 4.770909 20.945454-19.432727-8.96zM571.927273 100.072727l-17.454546-12.567272 20.596364-6.167273 6.516364-20.48 12.218181 17.570909 21.410909-0.116364-12.916363 17.105455 6.749091 20.363636-20.247273-6.981818-17.338182 12.683636 0.465455-21.410909zM991.418182 784.407273l-21.178182 3.490909 10.123636-18.967273-9.774545-18.967273 21.061818 3.723637 15.127273-15.243637 2.909091 21.294546 19.2 9.658182-19.316364 9.309091-3.258182 21.178181-14.894545-15.476363zM427.985455 156.741818L407.272727 151.505455l16.872728-13.265455-1.396364-21.410909 17.803636 11.985454 20.014546-7.912727-5.934546 20.596364 13.730909 16.523636-21.410909 0.814546-11.52 18.152727-7.447272-20.247273zM854.225455 896.465455l-20.712728-5.352728 16.872728-13.265454-1.396364-21.294546 17.803636 11.869091 20.014546-7.912727-5.934546 20.712727 13.730909 16.523637-21.527272 0.814545-11.403637 18.036364-7.447272-20.130909zM562.501818 923.694545l10.821818 18.385455-21.294545-2.56-14.196364 16.058182-4.072727-21.061818-19.665455-8.494546 18.734546-10.356363 1.978182-21.41091 15.709091 14.661819 20.945454-4.770909-8.96 19.54909zM242.734545 420.770909l-18.385454 10.938182 2.56-21.294546-16.058182-14.196363 21.061818-4.189091 8.494546-19.665455 10.356363 18.734546 21.410909 2.094545-14.545454 15.709091 4.654545 20.945455-19.549091-9.076364z" fill="#2196F3" p-id="1274"></path><path d="M242.734545 420.770909l-18.385454 10.938182 2.56-21.294546-16.058182-14.196363 21.061818-4.189091 8.494546-19.665455 10.356363 18.734546 21.410909 2.094545-14.545454 15.709091 4.654545 20.945455-19.549091-9.076364zM700.858182 943.941818l-17.454546-12.450909 20.48-6.283636 6.516364-20.48 12.334545 17.687272 21.41091-0.116363-12.916364 17.105454 6.632727 20.363637-20.247273-7.098182-17.221818 12.683636 0.465455-21.410909zM303.592727 278.807273l-21.178182 3.490909 10.123637-18.967273-9.890909-18.967273 21.178182 3.723637 15.010909-15.243637 2.909091 21.294546 19.2 9.541818-19.316364 9.425455-3.258182 21.178181-14.778182-15.476363z" fill="#2196F3" p-id="1275"></path><path d="M407.272727 90.647273a486.632727 486.632727 0 0 1 504.552728 11.636363l25.018181-14.429091A512 512 0 0 0 139.636364 546.909091l25.018181-14.429091A486.981818 486.981818 0 0 1 407.272727 90.647273zM893.323636 933.352727a486.749091 486.749091 0 0 1-504.669091-11.636363l-24.901818 14.429091A512 512 0 0 0 1161.192727 477.090909l-24.901818 13.963636a486.981818 486.981818 0 0 1-242.967273 442.298182z" fill="#2196F3" p-id="1276"></path><path d="M814.545455 795.927273a327.447273 327.447273 0 0 1-258.21091 29.556363l-29.78909 17.105455A353.163636 353.163636 0 0 0 998.865455 570.181818l-29.789091 17.105455A326.865455 326.865455 0 0 1 814.545455 795.927273zM486.865455 228.072727A327.447273 327.447273 0 0 1 744.727273 198.516364l29.789091-17.105455A353.163636 353.163636 0 0 0 302.545455 453.818182l29.78909-17.105455A326.865455 326.865455 0 0 1 486.865455 228.072727zM1288.378182 374.690909a53.294545 53.294545 0 0 1-14.429091 11.636364L229.469091 989.090909a53.876364 53.876364 0 0 1-73.425455-19.665454L7.214545 710.632727a53.527273 53.527273 0 0 1 19.781819-73.309091L1071.476364 34.909091a53.876364 53.876364 0 0 1 73.425454 19.665454l148.829091 258.327273a53.061818 53.061818 0 0 1 5.352727 40.727273 55.272727 55.272727 0 0 1-10.705454 21.061818zM32.232727 665.716364A28.043636 28.043636 0 0 0 29.323636 698.181818l148.829091 257.978182a28.392727 28.392727 0 0 0 38.516364 10.356364l1044.48-601.949091a28.16 28.16 0 0 0 10.356364-38.516364L1122.676364 67.84a28.276364 28.276364 0 0 0-38.4-10.356364L39.68 659.432727a27.810909 27.810909 0 0 0-7.447273 6.283637z" fill="#2196F3" p-id="1277"></path><path d="M477.090909 500.945455l22.109091 38.283636-15.36 8.843636-13.963636-24.436363-151.272728 87.621818 14.545455 25.134545-15.243636 8.843637-23.272728-39.330909L377.949091 558.545455c-6.050909-4.887273-11.636364-8.843636-15.825455-11.636364l14.894546-12.450909c3.956364 3.141818 9.658182 8.145455 17.105454 14.894545zM459.869091 698.181818l-48.407273 28.043637 7.44727Line truncated
|
||||||
|
After Width: | Height: | Size: 7.4 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1724316565416" class="icon" viewBox="0 0 1300 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1339" xmlns:xlink="http://www.w3.org/1999/xlink" width="253.90625" height="200"><path d="M784.058182 99.258182l10.938182 18.385454-21.294546-2.56-14.196363 16.058182-4.072728-21.061818-19.781818-8.494545 18.734546-10.472728 2.094545-21.294545 15.709091 14.545454 20.945454-4.654545-9.076363 19.549091zM1067.287273 642.443636l-18.501818 10.821819 2.56-21.294546-16.058182-14.196364 21.061818-4.072727 8.494545-19.665454 10.472728 18.734545 21.294545 1.978182-14.661818 15.709091 4.770909 20.945454-19.432727-8.96z" fill="#13C463" p-id="1340"></path><path d="M1067.287273 642.443636l-18.501818 10.821819 2.56-21.294546-16.058182-14.196364 21.061818-4.072727 8.494545-19.665454 10.472728 18.734545 21.294545 1.978182-14.661818 15.709091 4.770909 20.945454-19.432727-8.96zM571.927273 100.072727l-17.454546-12.567272 20.596364-6.167273 6.516364-20.48 12.218181 17.570909 21.410909-0.116364-12.916363 17.105455 6.749091 20.363636-20.247273-6.981818-17.338182 12.683636 0.465455-21.410909zM991.418182 784.407273l-21.178182 3.490909 10.123636-18.967273-9.774545-18.967273 21.061818 3.723637 15.127273-15.243637 2.909091 21.294546 19.2 9.658182-19.316364 9.309091-3.258182 21.178181-14.894545-15.476363zM427.985455 156.741818L407.272727 151.505455l16.872728-13.265455-1.396364-21.410909 17.803636 11.985454 20.014546-7.912727-5.934546 20.596364 13.730909 16.523636-21.410909 0.814546-11.52 18.152727-7.447272-20.247273zM854.225455 896.465455l-20.712728-5.352728 16.872728-13.265454-1.396364-21.294546 17.803636 11.869091 20.014546-7.912727-5.934546 20.712727 13.730909 16.523637-21.527272 0.814545-11.403637 18.036364-7.447272-20.130909zM562.501818 923.694545l10.821818 18.385455-21.294545-2.56-14.196364 16.058182-4.072727-21.061818-19.665455-8.494546 18.734546-10.356363 1.978182-21.41091 15.709091 14.661819 20.945454-4.770909-8.96 19.54909zM242.734545 420.770909l-18.385454 10.938182 2.56-21.294546-16.058182-14.196363 21.061818-4.189091 8.494546-19.665455 10.356363 18.734546 21.410909 2.094545-14.545454 15.709091 4.654545 20.945455-19.549091-9.076364z" fill="#13C463" p-id="1341"></path><path d="M242.734545 420.770909l-18.385454 10.938182 2.56-21.294546-16.058182-14.196363 21.061818-4.189091 8.494546-19.665455 10.356363 18.734546 21.410909 2.094545-14.545454 15.709091 4.654545 20.945455-19.549091-9.076364zM700.858182 943.941818l-17.454546-12.450909 20.48-6.283636 6.516364-20.48 12.334545 17.687272 21.41091-0.116363-12.916364 17.105454 6.632727 20.363637-20.247273-7.098182-17.221818 12.683636 0.465455-21.410909zM303.592727 278.807273l-21.178182 3.490909 10.123637-18.967273-9.890909-18.967273 21.178182 3.723637 15.010909-15.243637 2.909091 21.294546 19.2 9.541818-19.316364 9.425455-3.258182 21.178181-14.778182-15.476363z" fill="#13C463" p-id="1342"></path><path d="M407.272727 90.647273a486.632727 486.632727 0 0 1 504.552728 11.636363l25.018181-14.429091A512 512 0 0 0 139.636364 546.909091l25.018181-14.429091A486.981818 486.981818 0 0 1 407.272727 90.647273zM893.323636 933.352727a486.749091 486.749091 0 0 1-504.669091-11.636363l-24.901818 14.429091A512 512 0 0 0 1161.192727 477.090909l-24.901818 13.963636a486.981818 486.981818 0 0 1-242.967273 442.298182z" fill="#13C463" p-id="1343"></path><path d="M814.545455 795.927273a327.447273 327.447273 0 0 1-258.21091 29.556363l-29.78909 17.105455A353.163636 353.163636 0 0 0 998.865455 570.181818l-29.789091 17.105455A326.865455 326.865455 0 0 1 814.545455 795.927273zM486.865455 228.072727A327.447273 327.447273 0 0 1 744.727273 198.516364l29.789091-17.105455A353.163636 353.163636 0 0 0 302.545455 453.818182l29.78909-17.105455A326.865455 326.865455 0 0 1 486.865455 228.072727zM1288.378182 374.690909a53.294545 53.294545 0 0 1-14.429091 11.636364L229.469091 989.090909a53.876364 53.876364 0 0 1-73.425455-19.665454L7.214545 710.632727a53.527273 53.527273 0 0 1 19.781819-73.309091L1071.476364 34.909091a53.876364 53.876364 0 0 1 73.425454 19.665454l148.829091 258.327273a53.061818 53.061818 0 0 1 5.352727 40.727273 55.272727 55.272727 0 0 1-10.705454 21.061818zM32.232727 665.716364A28.043636 28.043636 0 0 0 29.323636 698.181818l148.829091 257.978182a28.392727 28.392727 0 0 0 38.516364 10.356364l1044.48-601.949091a28.16 28.16 0 0 0 10.356364-38.516364L1122.676364 67.84a28.276364 28.276364 0 0 0-38.4-10.356364L39.68 659.432727a27.810909 27.810909 0 0 0-7.447273 6.283637z" fill="#13C463" p-id="1344"></path><path d="M356.770909 569.250909l22.341818 38.749091-15.476363 8.727273L349.090909 592.64l-153.483636 88.785455 14.778182 25.483636-15.476364 8.96-23.272727-39.912727L256 627.2c-6.283636-4.887273-11.636364-8.843636-16.174545-11.636364L256 602.647273c3.956364 3.141818 9.774545 8.261818 17.338182 15.127272z m-17.338182 199.447273l-49.221818 28.392727 7.563636 13.149091-15.47Line truncated
|
||||||
|
After Width: | Height: | Size: 10 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1724316570161" class="icon" viewBox="0 0 1185 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1505" xmlns:xlink="http://www.w3.org/1999/xlink" width="231.4453125" height="200"><path d="M414.276535 230.004913l-2.443086-31.647244 26.446614 17.351559 29.437984-11.852598-8.143622 30.31685 20.423559 24.221229-31.623055 1.475527-16.722646 26.801386-11.239811-29.760504-30.663559-7.522772zM581.664252 176.902047l13.884472-28.542992 14.206993 28.220473 31.42148 4.321763-22.350614 22.092599 5.684409 31.123149-28.180157-14.513385-27.897953 14.819779 5.28126-31.066709-22.76989-21.689448zM896.507969 672.735748l17.754708 26.398236-31.494047-2.064126-19.560819 24.705008-7.95011-30.502299-29.575055-11.02211 26.744945-16.771024 1.104629-31.526299 24.414741 20.197795 30.268472-8.619338zM777.030551 801.961323l2.112504 31.647244-26.446614-17.682142-29.413795 11.546205 8.466141-30.308787-20.092976-24.221229 31.606929-1.153008 17.045166-26.793323 10.86085 29.704063 30.647433 7.837229zM609.312252 853.451591l-14.198929 28.518803-14.110236-28.542992-31.405355-4.636221 22.673134-22.084535-5.36189-31.12315 27.833449 14.835906 28.188221-14.803654-5.28126 31.066709 22.76989 22.060346zM298.435528 354.828094l-17.448315-26.390173 31.485984 2.394709 19.875275-24.753386 7.611465 30.865134 29.583118 11.288189-27.011024 16.779087-1.419086 31.526299-24.084158-20.504189-30.518425 8.280693zM962.56 91.53915a43.636913 43.636913 0 0 1 59.375874 15.601889l138.627024 236.753638c12.175118 20.447748 5.12 47.208819-15.609953 59.375874L229.13411 938.185575a43.636913 43.636913 0 0 1-59.375874-15.60189L31.12315 685.773606a43.636913 43.636913 0 0 1 15.601889-59.319433z m25.672567 24.108346a13.594205 13.594205 0 0 0-10.441575 1.548095L61.625449 652.054173a13.586142 13.586142 0 0 0-4.853921 18.83515l138.643149 236.793953a13.586142 13.586142 0 0 0 18.843213 4.837795l915.818834-534.915024a13.957039 13.957039 0 0 0 5.160315-18.778708l-138.602834-236.78589a13.594205 13.594205 0 0 0-8.401638-6.393953z" fill="#F5222D" p-id="1506"></path><path d="M395.981606 172.338394c123.670173-72.349228 271.11811-69.462677 388.394331-5.12l29.623433-17.335433a414.574866 414.574866 0 0 0-112.107842-47.071748 429.991307 429.991307 0 0 0-162.009701-10.498016 412.792945 412.792945 0 0 0-158.80063 54.707401 417.856504 417.856504 0 0 0-125.363402 111.922394A426.282331 426.282331 0 0 0 185.206929 405.004094a417.348535 417.348535 0 0 0-13.529701 120.977134l29.623433-17.335433c1.386835-133.958551 70.688252-263.958173 194.672882-336.307401z m397.666772 679.484472c-123.670173 72.365354-271.110047 69.462677-388.394331 5.128063l-29.623433 17.335433a414.679685 414.679685 0 0 0 112.075591 47.087874 429.991307 429.991307 0 0 0 162.009701 10.498016 412.744567 412.744567 0 0 0 158.808692-54.707402 423.145827 423.145827 0 0 0 209.105638-378.976756l-29.623433 17.335434c-1.072378 133.974677-70.712441 263.95011-194.350362 336.307401h-0.008063z" fill="#F5222D" p-id="1507"></path><path d="M478.377323 313.110173a226.271748 226.271748 0 0 1 109.979212-31.219905l45.668788-26.761071c-58.634079-9.13537-118.316346 2.314079-170.612914 32.735748a258.693039 258.693039 0 0 0-111.91433 132.71685l45.67685-26.761071a230.359685 230.359685 0 0 1 81.097575-80.589606l0.104819-0.120945z m232.568945 397.674835a226.328189 226.328189 0 0 1-109.979213 31.227968l-45.668787 26.753008c58.634079 9.13537 118.316346-2.314079 170.612913-32.735748a258.709165 258.709165 0 0 0 111.914331-132.71685l-45.676851 26.761071a225.215496 225.215496 0 0 1-81.097574 80.597669l-0.104819 0.112882zM188.57726 706.938961l-10.062614-17.424126 109.938897-63.471874 9.578835 16.585574 17.093543-9.869102-18.770645-32.509984-63.689575 36.767244c-4.047622-3.918614-7.804976-7.337323-11.272063-10.24l-16.859717 13.747401c3.249386 2.144756 6.595528 4.458835 9.869103 7.038993l-62.173733 35.896441 19.254426 33.348535 17.093543-9.869102zM317.44 781.142677l-19.060913-33.017953 32.679307-18.867401 4.741039 8.216189 17.093543-9.869103-48.474708-83.959937-49.772851 28.736504-7.933984-13.747401-17.432189 10.062614 7.933984 13.747402-49.264882 28.446236 48.764977 84.459842 17.093543-9.869102-5.031307-8.708032 32.171339-18.585196 19.060913 33.017952 17.432189-10.062614z m-12.505701-97.126803l-32.679307 18.867402-8.321008-14.41663 32.679307-18.867402 8.321008 14.41663z m-50.111496 28.930016l-32.171338 18.577134-8.321008-14.41663 32.171338-18.577134 8.321008 14.41663z m16.932284 29.325102l-32.171339 18.577134-8.127496-14.077984 32.171339-18.577134 8.127496 14.077984z m50.111496-28.930016l-32.679307 18.867402-8.127496-14.077984 32.679307-18.867402 8.127496 14.077984z m95.828661 7.684032c11.062425-6.38589 13.368441-15.537386 6.692284-27.099717l-25.05978-43.411149c3.55578-4.289512 7.014803-8.740283 10.48189-13.199118l-9.482079-16.424315c-3.467087 4.458835-6.92611 8.917669-10.48189 13.199118l-17.803086-30.832882 14.755275-8.Line truncated
|
||||||
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1724297262365" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1396" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M707.91 103c16.28 0 29.522 13.007 29.897 29.195l0.009 0.706v111.878a29.96 29.96 0 0 1-0.898 7.3l171.177-0.001c16.28 0 29.522 13.007 29.897 29.195l0.008 0.706v637.12c0 16.278-13.01 29.518-29.2 29.893l-0.705 0.008H270.884c-16.28 0-29.522-13.007-29.897-29.195l-0.008-0.706V787.274c0-16.514 13.389-29.9 29.905-29.9 16.28 0 29.522 13.007 29.897 29.194l0.008 0.706v101.924h577.4V311.88h-577.4v88.787c0 16.278-13.009 29.518-29.2 29.893l-0.705 0.008c-16.28 0-29.522-13.008-29.897-29.195l-0.008-0.706V281.979c0-16.278 13.009-29.518 29.2-29.893l0.705-0.008h408.019a29.916 29.916 0 0 1-0.89-6.593l-0.008-0.706v-81.978H132.808v407.113h385.787L408.223 456.982c-11.36-11.624-11.329-30.143-0.066-41.729l0.554-0.555c11.625-11.358 30.147-11.327 41.734-0.066l0.555 0.554 161.028 164.762c11.244 11.504 11.344 29.793 0.362 41.42l-0.55 0.565-161.027 161.849c-11.648 11.707-30.583 11.757-42.292 0.11-11.524-11.461-11.754-29.979-0.657-41.723l0.546-0.563 111.319-111.89H102.905c-16.28 0-29.522-13.007-29.897-29.195l-0.008-0.705V132.9c0-16.278 13.01-29.518 29.2-29.893l0.705-0.008H707.91z" p-id="1397"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -5,6 +5,7 @@ export interface AppLinkGroup {
|
|||||||
// 链接列表
|
// 链接列表
|
||||||
links: AppLink[]
|
links: AppLink[]
|
||||||
}
|
}
|
||||||
|
|
||||||
// APP 链接
|
// APP 链接
|
||||||
export interface AppLink {
|
export interface AppLink {
|
||||||
// 链接名称
|
// 链接名称
|
||||||
@@ -21,6 +22,8 @@ export const enum APP_LINK_TYPE_ENUM {
|
|||||||
ACTIVITY_COMBINATION,
|
ACTIVITY_COMBINATION,
|
||||||
// 秒杀活动
|
// 秒杀活动
|
||||||
ACTIVITY_SECKILL,
|
ACTIVITY_SECKILL,
|
||||||
|
// 积分商城活动
|
||||||
|
ACTIVITY_POINT,
|
||||||
// 文章详情
|
// 文章详情
|
||||||
ARTICLE_DETAIL,
|
ARTICLE_DETAIL,
|
||||||
// 优惠券详情
|
// 优惠券详情
|
||||||
@@ -130,6 +133,11 @@ export const APP_LINK_GROUP_LIST = [
|
|||||||
path: '/pages/activity/seckill/list',
|
path: '/pages/activity/seckill/list',
|
||||||
type: APP_LINK_TYPE_ENUM.ACTIVITY_SECKILL
|
type: APP_LINK_TYPE_ENUM.ACTIVITY_SECKILL
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: '积分商城活动',
|
||||||
|
path: '/pages/activity/point/list',
|
||||||
|
type: APP_LINK_TYPE_ENUM.ACTIVITY_POINT
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: '签到中心',
|
name: '签到中心',
|
||||||
path: '/pages/app/sign'
|
path: '/pages/app/sign'
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ const currentLocale = computed(() => localeStore.currentLocale)
|
|||||||
<ElConfigProvider
|
<ElConfigProvider
|
||||||
:namespace="variables.elNamespace"
|
:namespace="variables.elNamespace"
|
||||||
:locale="currentLocale.elLocale"
|
:locale="currentLocale.elLocale"
|
||||||
:message="{ max: 1 }"
|
:message="{ max: 5 }"
|
||||||
:size="size"
|
:size="size"
|
||||||
>
|
>
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
|
|||||||