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 | ||
|
|
6f38676af7 | ||
|
|
9ea698e86c | ||
|
|
9b0890d195 | ||
|
|
ff0566bb7f | ||
|
|
d0501ee0a6 | ||
|
|
db106834a7 | ||
|
|
3be088e370 | ||
|
|
8f14355903 | ||
|
|
74a66b7c70 | ||
|
|
1bc4eefeab | ||
|
|
560a336f8c | ||
|
|
3ddba81e24 | ||
|
|
9a4d1dcbce | ||
|
|
f413556c73 | ||
|
|
8d23c38f2f | ||
|
|
fe61119735 | ||
|
|
d884f71d57 | ||
|
|
f8580fdf2a | ||
|
|
ca8858a33f | ||
|
|
4e39c11d7c | ||
|
|
4231a7d133 | ||
|
|
aebb04a7c2 | ||
|
|
1a5e7902b8 | ||
|
|
8d88f4206b | ||
|
|
035bccb472 | ||
|
|
c9d5ec26a2 | ||
|
|
441b91381f | ||
|
|
776846febc | ||
|
|
1694827c6c | ||
|
|
32d5892422 | ||
|
|
0db264dcac | ||
|
|
9e86e47c1c | ||
|
|
c0eaad3a4b | ||
|
|
249fe126ee | ||
|
|
c792e69aa5 | ||
|
|
d220ffae6a | ||
|
|
783f6283ca | ||
|
|
154f84a89e | ||
|
|
25665f548e | ||
|
|
c5e5228e78 | ||
|
|
5369328b37 | ||
|
|
70bf234133 | ||
|
|
56d92e5bfb | ||
|
|
fee444d191 | ||
|
|
5cb86589c6 | ||
|
|
f30f71b775 | ||
|
|
174724da98 | ||
|
|
d9e1ffd522 | ||
|
|
41e5cf667e | ||
|
|
6725318f27 | ||
|
|
12972cdf5c | ||
|
|
dcfe1abb67 | ||
|
|
6caa94ec47 | ||
|
|
8f8591fc45 | ||
|
|
43bdb3cdba | ||
|
|
7164ae5d49 | ||
|
|
28eb23738c | ||
|
|
a9e4ef9b7b | ||
|
|
56db6bf307 | ||
|
|
c1f507bcae | ||
|
|
9acd01e768 | ||
|
|
3bfdb2df33 | ||
|
|
9d44b9acaa | ||
|
|
11766f5107 | ||
|
|
bbf6c16b8d | ||
|
|
cf7036d34b | ||
|
|
8512fe6b43 | ||
|
|
01684aa6e8 | ||
|
|
29605800b5 | ||
|
|
6baeadc87a | ||
|
|
a2443e48f7 | ||
|
|
08bb022cb5 | ||
|
|
094b1925d6 | ||
|
|
a401fff74c | ||
|
|
4362251b59 | ||
|
|
ac9a77e6e4 | ||
|
|
04a42bc6d4 | ||
|
|
0ae6139e92 | ||
|
|
1047c5b097 | ||
|
|
e7bb17dc4e | ||
|
|
c804ec5e7a | ||
|
|
f5b8d92d97 | ||
|
|
f01bb2dc78 | ||
|
|
cd86c08e59 | ||
|
|
e067d5073d | ||
|
|
42b8df4767 | ||
|
|
ea68da9d8e | ||
|
|
71ac59f22e | ||
|
|
a3b21e70dc | ||
|
|
1549a57c4b | ||
|
|
d3fab9a0fd | ||
|
|
ffeaa891df | ||
|
|
a3e95b56ca | ||
|
|
b603515855 | ||
|
|
06e2019adf | ||
|
|
2f37232f5e | ||
|
|
6e9e9e88a8 | ||
|
|
a0497a6485 | ||
|
|
96071bdcb7 | ||
|
|
8d532dfc3a | ||
|
|
a451c0b7c8 | ||
|
|
6fd8856735 | ||
|
|
2a1e6518e2 | ||
|
|
bb6d6dac79 | ||
|
|
c1c48c20a3 | ||
|
|
c18b24e611 | ||
|
|
e07e19106c | ||
|
|
a2de0665eb | ||
|
|
e951ed1bd1 | ||
|
|
8a70b3fbba | ||
|
|
d7427bf49c | ||
|
|
aa964e17d6 | ||
|
|
58972e0b98 | ||
|
|
fcba2b4c48 | ||
|
|
db446330c3 | ||
|
|
ee35056767 | ||
|
|
57044cb716 | ||
|
|
3d4feeff6b | ||
|
|
5339cca40e | ||
|
|
600892b112 | ||
|
|
eae2ea0a82 | ||
|
|
3860aaef6f | ||
|
|
949096f776 | ||
|
|
5736083534 | ||
|
|
00a386dd7c | ||
|
|
c0db4df880 | ||
|
|
e535384f45 | ||
|
|
f7c5266015 | ||
|
|
b25d9c0f09 | ||
|
|
5deabcf692 | ||
|
|
ab63660bf8 | ||
|
|
2615054fb2 | ||
|
|
b55c8417fb | ||
|
|
14ab46c870 | ||
|
|
0319056e4b | ||
|
|
ae3d44d8bd | ||
|
|
3c4932bc77 | ||
|
|
896f9758ed | ||
|
|
616fd3f7ba | ||
|
|
318d5261ad | ||
|
|
3308a494c7 | ||
|
|
1c98deaf27 | ||
|
|
115c30ea40 | ||
|
|
361c06bd6f | ||
|
|
5bdf0fc0ff | ||
|
|
9cbdfe0ecb | ||
|
|
53c94af027 | ||
|
|
d92404f351 | ||
|
|
26343635e4 | ||
|
|
6d9ca290b3 | ||
|
|
36a0330277 | ||
|
|
3cdcd67a6a | ||
|
|
e033793a94 | ||
|
|
89fdb5ced9 | ||
|
|
ce9317e3d0 | ||
|
|
dd08fbcb46 | ||
|
|
490bb901e1 | ||
|
|
cac39ae126 | ||
|
|
6d0231d409 | ||
|
|
3ad68c3227 | ||
|
|
fffc9aed63 | ||
|
|
fe91c5ec5c | ||
|
|
6d0e242387 | ||
|
|
4549f8ed3c | ||
|
|
d6438943b8 | ||
|
|
956f19d9d0 | ||
|
|
34a796de89 | ||
|
|
9d9cdf427a | ||
|
|
a5f8c3d79c | ||
|
|
4271788a83 | ||
|
|
f0a2c529b2 | ||
|
|
df7806d8d3 | ||
|
|
770e551900 | ||
|
|
41195d5b4a | ||
|
|
668da2fa86 | ||
|
|
90e0baf5bc | ||
|
|
4a2349ecf5 | ||
|
|
331b6c5611 | ||
|
|
ed94205fa7 | ||
|
|
a64d4240a3 | ||
|
|
5adf75d15b | ||
|
|
26daa3a1ff | ||
|
|
6203744272 | ||
|
|
acc3a6bcfd | ||
|
|
b3ed46db72 | ||
|
|
64cfcbf6e0 | ||
|
|
24062c7a3b | ||
|
|
530107eba7 | ||
|
|
bc934f56ad | ||
|
|
66ff10d00c | ||
|
|
213af427a2 | ||
|
|
e0bc3ea6dc | ||
|
|
3471b5c5b2 | ||
|
|
c38bbb99a1 | ||
|
|
7c0c651592 | ||
|
|
d735f782fc | ||
|
|
24e8bd4c47 | ||
|
|
9628517b8b | ||
|
|
f88b26e3c3 | ||
|
|
040b80b35f | ||
|
|
48693b50f2 | ||
|
|
39da43cc7d | ||
|
|
e106fb73b6 | ||
|
|
c2038b95bf | ||
|
|
89dbb8c9e8 |
No files matched your search
@@ -13,5 +13,13 @@ VITE_APP_TENANT_ENABLE=true
|
|||||||
# 验证码的开关
|
# 验证码的开关
|
||||||
VITE_APP_CAPTCHA_ENABLE=true
|
VITE_APP_CAPTCHA_ENABLE=true
|
||||||
|
|
||||||
|
# 文档地址的开关
|
||||||
|
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,17 +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服务
|
||||||
VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload'
|
VITE_UPLOAD_TYPE=server
|
||||||
|
|
||||||
# 接口前缀
|
|
||||||
VITE_API_BASEPATH=/dev-api
|
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VITE_API_URL=/admin-api
|
VITE_API_URL=/admin-api
|
||||||
@@ -35,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
|
||||||
@@ -6,11 +6,8 @@ VITE_DEV=true
|
|||||||
# 请求路径
|
# 请求路径
|
||||||
VITE_BASE_URL='http://localhost:48080'
|
VITE_BASE_URL='http://localhost:48080'
|
||||||
|
|
||||||
# 上传路径
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
|
||||||
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload'
|
VITE_UPLOAD_TYPE=server
|
||||||
|
|
||||||
# 接口前缀
|
|
||||||
VITE_API_BASEPATH=/dev-api
|
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VITE_API_URL=/admin-api
|
VITE_API_URL=/admin-api
|
||||||
|
|||||||
@@ -6,11 +6,8 @@ VITE_DEV=false
|
|||||||
# 请求路径
|
# 请求路径
|
||||||
VITE_BASE_URL='http://localhost:48080'
|
VITE_BASE_URL='http://localhost:48080'
|
||||||
|
|
||||||
# 上传路径
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
||||||
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload'
|
VITE_UPLOAD_TYPE=server
|
||||||
|
|
||||||
# 接口前缀
|
|
||||||
VITE_API_BASEPATH=
|
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VITE_API_URL=/admin-api
|
VITE_API_URL=/admin-api
|
||||||
|
|||||||
@@ -6,11 +6,8 @@ VITE_DEV=false
|
|||||||
# 请求路径
|
# 请求路径
|
||||||
VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
|
VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
|
||||||
|
|
||||||
# 上传路径
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
||||||
VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload'
|
VITE_UPLOAD_TYPE=server
|
||||||
|
|
||||||
# 接口前缀
|
|
||||||
VITE_API_BASEPATH=
|
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VITE_API_URL=/admin-api
|
VITE_API_URL=/admin-api
|
||||||
|
|||||||
@@ -6,11 +6,8 @@ VITE_DEV=false
|
|||||||
# 请求路径
|
# 请求路径
|
||||||
VITE_BASE_URL='http://localhost:48080'
|
VITE_BASE_URL='http://localhost:48080'
|
||||||
|
|
||||||
# 上传路径
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
||||||
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload'
|
VITE_UPLOAD_TYPE=server
|
||||||
|
|
||||||
# 接口前缀
|
|
||||||
VITE_API_BASEPATH=
|
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VITE_API_URL=/admin-api
|
VITE_API_URL=/admin-api
|
||||||
|
|||||||
@@ -68,6 +68,8 @@ module.exports = defineConfig({
|
|||||||
],
|
],
|
||||||
'vue/multi-word-component-names': 'off',
|
'vue/multi-word-component-names': 'off',
|
||||||
'vue/no-v-html': 'off',
|
'vue/no-v-html': 'off',
|
||||||
'prettier/prettier': 'off' // 芋艿:默认关闭 prettier 的 ESLint 校验,因为我们使用的是 IDE 的 Prettier 插件
|
'prettier/prettier': 'off', // 芋艿:默认关闭 prettier 的 ESLint 校验,因为我们使用的是 IDE 的 Prettier 插件
|
||||||
|
'@unocss/order': 'off', // 芋艿:禁用 unocss 【css】顺序的提示,因为暂时不需要这么严格,警告也有点繁琐
|
||||||
|
'@unocss/order-attributify': 'off' // 芋艿:禁用 unocss 【属性】顺序的提示,因为暂时不需要这么严格,警告也有点繁琐
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -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: 15 KiB |
|
After Width: | Height: | Size: 46 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 文件高亮 |
|
|
||||||
|
|
||||||
## 🔥 后端架构
|
## 🔥 后端架构
|
||||||
|
|
||||||
@@ -90,6 +89,8 @@
|
|||||||
* 数据报表
|
* 数据报表
|
||||||
* 商城系统
|
* 商城系统
|
||||||
* 微信公众号
|
* 微信公众号
|
||||||
|
* ERP 系统
|
||||||
|
* CRM 系统
|
||||||
|
|
||||||
### 系统功能
|
### 系统功能
|
||||||
|
|
||||||
@@ -115,6 +116,8 @@
|
|||||||
| 🚀 | 应用管理 | 管理 SSO 单点登录的应用,支持多种 OAuth2 授权方式 |
|
| 🚀 | 应用管理 | 管理 SSO 单点登录的应用,支持多种 OAuth2 授权方式 |
|
||||||
| 🚀 | 地区管理 | 展示省份、城市、区镇等城市信息,支持 IP 对应城市 |
|
| 🚀 | 地区管理 | 展示省份、城市、区镇等城市信息,支持 IP 对应城市 |
|
||||||
|
|
||||||
|

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

|
||||||
|
|
||||||
### 支付系统
|
### 支付系统
|
||||||
|
|
||||||
| | 功能 | 描述 |
|
| | 功能 | 描述 |
|
||||||
@@ -140,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 实现单元测试,保证功能的正确性、代码的质量等 |
|

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

|

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

|

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

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

|
||||||
|
|
||||||
## 🐷 演示图
|
## 🐷 演示图
|
||||||
|
|
||||||
@@ -238,6 +253,7 @@ _前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入芋
|
|||||||
|---------|---------------------------|---------------------------------|---------------------------------|
|
|---------|---------------------------|---------------------------------|---------------------------------|
|
||||||
| 商家 & 应用 |  |  |  |
|
| 商家 & 应用 |  |  |  |
|
||||||
| 支付 & 退款 |  |  | --- |
|
| 支付 & 退款 |  |  | --- |
|
||||||
|
|
||||||
### 数据报表
|
### 数据报表
|
||||||
|
|
||||||
| 模块 | biu | biu | biu |
|
| 模块 | biu | biu | biu |
|
||||||
|
|||||||
@@ -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.0-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.6.1",
|
"@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.1",
|
"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",
|
||||||
@@ -44,87 +45,94 @@
|
|||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
"diagram-js": "^12.8.0",
|
"diagram-js": "^12.8.0",
|
||||||
"driver.js": "^1.3.1",
|
"driver.js": "^1.3.1",
|
||||||
"echarts": "^5.4.3",
|
"echarts": "^5.5.0",
|
||||||
"echarts-wordcloud": "^2.1.0",
|
"echarts-wordcloud": "^2.1.0",
|
||||||
"element-plus": "2.4.2",
|
"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.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.3.8",
|
"vue": "3.4.21",
|
||||||
"vue-dompurify-html": "^4.1.4",
|
"vue-dompurify-html": "^4.1.4",
|
||||||
"vue-i18n": "^9.6.5",
|
"vue-i18n": "9.10.2",
|
||||||
"vue-router": "^4.2.5",
|
"vue-router": "^4.3.0",
|
||||||
"vue-types": "^5.1.1",
|
"vue-types": "^5.1.1",
|
||||||
"vuedraggable": "^4.1.0",
|
"vuedraggable": "^4.1.0",
|
||||||
"web-storage-cache": "^1.1.1",
|
"web-storage-cache": "^1.1.1",
|
||||||
"xml-js": "^1.6.11"
|
"xml-js": "^1.6.11"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^18.4.1",
|
"@commitlint/cli": "^19.0.1",
|
||||||
"@commitlint/config-conventional": "^18.4.0",
|
"@commitlint/config-conventional": "^19.0.0",
|
||||||
"@iconify/json": "^2.2.142",
|
"@iconify/json": "^2.2.187",
|
||||||
"@intlify/unplugin-vue-i18n": "^1.5.0",
|
"@intlify/unplugin-vue-i18n": "^2.0.0",
|
||||||
"@purge-icons/generated": "^0.9.0",
|
"@purge-icons/generated": "^0.9.0",
|
||||||
"@types/lodash-es": "^4.17.11",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/node": "^20.9.0",
|
"@types/node": "^20.11.21",
|
||||||
"@types/nprogress": "^0.2.3",
|
"@types/nprogress": "^0.2.3",
|
||||||
"@types/qrcode": "^1.5.5",
|
"@types/qrcode": "^1.5.5",
|
||||||
"@types/qs": "^6.9.10",
|
"@types/qs": "^6.9.12",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.11.0",
|
"@typescript-eslint/eslint-plugin": "^7.1.0",
|
||||||
"@typescript-eslint/parser": "^6.11.0",
|
"@typescript-eslint/parser": "^7.1.0",
|
||||||
"@unocss/transformer-variant-group": "^0.57.4",
|
|
||||||
"@unocss/eslint-config": "^0.57.4",
|
"@unocss/eslint-config": "^0.57.4",
|
||||||
"@vitejs/plugin-legacy": "^4.1.1",
|
"@unocss/transformer-variant-group": "^0.58.5",
|
||||||
"@vitejs/plugin-vue": "^4.4.1",
|
"@vitejs/plugin-legacy": "^5.3.1",
|
||||||
"@vitejs/plugin-vue-jsx": "^3.0.2",
|
"@vitejs/plugin-vue": "^5.0.4",
|
||||||
"autoprefixer": "^10.4.16",
|
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
||||||
|
"autoprefixer": "^10.4.17",
|
||||||
"bpmn-js": "8.9.0",
|
"bpmn-js": "8.9.0",
|
||||||
"bpmn-js-properties-panel": "0.46.0",
|
"bpmn-js-properties-panel": "0.46.0",
|
||||||
"consola": "^3.2.3",
|
"consola": "^3.2.3",
|
||||||
"eslint": "^8.53.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-config-prettier": "^9.0.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-define-config": "^1.24.1",
|
"eslint-define-config": "^2.1.0",
|
||||||
"eslint-plugin-prettier": "^5.0.1",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
"eslint-plugin-vue": "^9.18.1",
|
"eslint-plugin-vue": "^9.22.0",
|
||||||
"lint-staged": "^15.1.0",
|
"lint-staged": "^15.2.2",
|
||||||
"postcss": "^8.4.31",
|
"postcss": "^8.4.35",
|
||||||
"postcss-html": "^1.5.0",
|
"postcss-html": "^1.6.0",
|
||||||
"postcss-scss": "^4.0.9",
|
"postcss-scss": "^4.0.9",
|
||||||
"prettier": "^3.1.0",
|
"prettier": "^3.2.5",
|
||||||
|
"prettier-eslint": "^16.3.0",
|
||||||
"rimraf": "^5.0.5",
|
"rimraf": "^5.0.5",
|
||||||
"rollup": "^4.4.1",
|
"rollup": "^4.12.0",
|
||||||
"sass": "^1.69.5",
|
"sass": "^1.69.5",
|
||||||
"stylelint": "^15.11.0",
|
"stylelint": "^16.2.1",
|
||||||
"stylelint-config-html": "^1.1.0",
|
"stylelint-config-html": "^1.1.0",
|
||||||
"stylelint-config-recommended": "^13.0.0",
|
"stylelint-config-recommended": "^14.0.0",
|
||||||
"stylelint-config-standard": "^34.0.0",
|
"stylelint-config-standard": "^36.0.0",
|
||||||
"stylelint-order": "^6.0.3",
|
"stylelint-order": "^6.0.4",
|
||||||
"terser": "^5.24.0",
|
"terser": "^5.28.1",
|
||||||
"typescript": "5.2.2",
|
"typescript": "5.3.3",
|
||||||
"unocss": "^0.57.4",
|
"unocss": "^0.58.5",
|
||||||
"unplugin-auto-import": "^0.16.7",
|
"unplugin-auto-import": "^0.16.7",
|
||||||
"unplugin-element-plus": "^0.8.0",
|
"unplugin-element-plus": "^0.8.0",
|
||||||
"unplugin-vue-components": "^0.25.2",
|
"unplugin-vue-components": "^0.25.2",
|
||||||
"vite": "4.5.0",
|
"vite": "5.1.4",
|
||||||
"vite-plugin-compression": "^0.5.1",
|
"vite-plugin-compression": "^0.5.1",
|
||||||
"vite-plugin-ejs": "^1.6.4",
|
"vite-plugin-ejs": "^1.7.0",
|
||||||
"vite-plugin-eslint": "^1.8.1",
|
"vite-plugin-eslint": "^1.8.1",
|
||||||
"vite-plugin-progress": "^0.0.7",
|
"vite-plugin-progress": "^0.0.7",
|
||||||
"vite-plugin-purge-icons": "^0.9.2",
|
"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.22"
|
"vue-tsc": "^1.8.27"
|
||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
@@ -135,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,24 +1,45 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
import { TransferReqVO } from '@/api/crm/permission'
|
||||||
|
|
||||||
export interface BusinessVO {
|
export interface BusinessVO {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
statusTypeId: number
|
|
||||||
statusId: number
|
|
||||||
contactNextTime: Date
|
|
||||||
customerId: number
|
customerId: number
|
||||||
dealTime: Date
|
customerName?: string
|
||||||
price: number
|
followUpStatus: boolean
|
||||||
discountPercent: number
|
contactLastTime: Date
|
||||||
productPrice: number
|
contactNextTime: Date
|
||||||
remark: string
|
|
||||||
ownerUserId: number
|
ownerUserId: number
|
||||||
roUserIds: string
|
ownerUserName?: string // 负责人的用户名称
|
||||||
rwUserIds: string
|
ownerUserDept?: string // 负责人的部门名称
|
||||||
|
statusTypeId: number
|
||||||
|
statusTypeName?: string
|
||||||
|
statusId: number
|
||||||
|
statusName?: string
|
||||||
endStatus: number
|
endStatus: number
|
||||||
endRemark: string
|
endRemark: string
|
||||||
contactLastTime: Date
|
dealTime: Date
|
||||||
followUpStatus: number
|
totalProductPrice: number
|
||||||
|
totalPrice: number
|
||||||
|
discountPercent: number
|
||||||
|
remark: string
|
||||||
|
creator: string // 创建人
|
||||||
|
creatorName?: string // 创建人名称
|
||||||
|
createTime: Date // 创建时间
|
||||||
|
updateTime: Date // 更新时间
|
||||||
|
products?: [
|
||||||
|
{
|
||||||
|
id: number
|
||||||
|
productId: number
|
||||||
|
productName: string
|
||||||
|
productNo: string
|
||||||
|
productUnit: number
|
||||||
|
productPrice: number
|
||||||
|
businessPrice: number
|
||||||
|
count: number
|
||||||
|
totalPrice: number
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询 CRM 商机列表
|
// 查询 CRM 商机列表
|
||||||
@@ -51,6 +72,11 @@ export const updateBusiness = async (data: BusinessVO) => {
|
|||||||
return await request.put({ url: `/crm/business/update`, data })
|
return await request.put({ url: `/crm/business/update`, data })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 修改 CRM 商机状态
|
||||||
|
export const updateBusinessStatus = async (data: BusinessVO) => {
|
||||||
|
return await request.put({ url: `/crm/business/update-status`, data })
|
||||||
|
}
|
||||||
|
|
||||||
// 删除 CRM 商机
|
// 删除 CRM 商机
|
||||||
export const deleteBusiness = async (id: number) => {
|
export const deleteBusiness = async (id: number) => {
|
||||||
return await request.delete({ url: `/crm/business/delete?id=` + id })
|
return await request.delete({ url: `/crm/business/delete?id=` + id })
|
||||||
@@ -66,7 +92,7 @@ export const getBusinessPageByContact = async (params) => {
|
|||||||
return await request.get({ url: `/crm/business/page-by-contact`, params })
|
return await request.get({ url: `/crm/business/page-by-contact`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得 CRM 商机列表
|
// 商机转移
|
||||||
export const getBusinessListByIds = async (val: number[]) => {
|
export const transferBusiness = async (data: TransferReqVO) => {
|
||||||
return await request.get({ url: '/crm/business/list-by-ids', params: { ids: val.join(',') } })
|
return await request.put({ url: '/crm/business/transfer', data })
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface BusinessStatusTypeVO {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
deptIds: number[]
|
||||||
|
statuses?: {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
percent: number
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const DEFAULT_STATUSES = [
|
||||||
|
{
|
||||||
|
endStatus: 1,
|
||||||
|
key: '结束',
|
||||||
|
name: '赢单',
|
||||||
|
percent: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
endStatus: 2,
|
||||||
|
key: '结束',
|
||||||
|
name: '输单',
|
||||||
|
percent: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
endStatus: 3,
|
||||||
|
key: '结束',
|
||||||
|
name: '无效',
|
||||||
|
percent: 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
// 查询商机状态组列表
|
||||||
|
export const getBusinessStatusPage = async (params: any) => {
|
||||||
|
return await request.get({ url: `/crm/business-status/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增商机状态组
|
||||||
|
export const createBusinessStatus = async (data: BusinessStatusTypeVO) => {
|
||||||
|
return await request.post({ url: `/crm/business-status/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改商机状态组
|
||||||
|
export const updateBusinessStatus = async (data: BusinessStatusTypeVO) => {
|
||||||
|
return await request.put({ url: `/crm/business-status/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询商机状态类型详情
|
||||||
|
export const getBusinessStatus = async (id: number) => {
|
||||||
|
return await request.get({ url: `/crm/business-status/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除商机状态
|
||||||
|
export const deleteBusinessStatus = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/crm/business-status/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得商机状态组列表
|
||||||
|
export const getBusinessStatusTypeSimpleList = async () => {
|
||||||
|
return await request.get({ url: `/crm/business-status/type-simple-list` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得商机阶段列表
|
||||||
|
export const getBusinessStatusSimpleList = async (typeId: number) => {
|
||||||
|
return await request.get({ url: `/crm/business-status/status-simple-list`, params: { typeId } })
|
||||||
|
}
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface BusinessStatusTypeVO {
|
|
||||||
id: number
|
|
||||||
name: string
|
|
||||||
deptIds: number[]
|
|
||||||
status: boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询商机状态类型列表
|
|
||||||
export const getBusinessStatusTypePage = async (params) => {
|
|
||||||
return await request.get({ url: `/crm/business-status-type/page`, params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询商机状态类型详情
|
|
||||||
export const getBusinessStatusType = async (id: number) => {
|
|
||||||
return await request.get({ url: `/crm/business-status-type/get?id=` + id })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增商机状态类型
|
|
||||||
export const createBusinessStatusType = async (data: BusinessStatusTypeVO) => {
|
|
||||||
return await request.post({ url: `/crm/business-status-type/create`, data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改商机状态类型
|
|
||||||
export const updateBusinessStatusType = async (data: BusinessStatusTypeVO) => {
|
|
||||||
return await request.put({ url: `/crm/business-status-type/update`, data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除商机状态类型
|
|
||||||
export const deleteBusinessStatusType = async (id: number) => {
|
|
||||||
return await request.delete({ url: `/crm/business-status-type/delete?id=` + id })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 导出商机状态类型 Excel
|
|
||||||
export const exportBusinessStatusType = async (params) => {
|
|
||||||
return await request.download({ url: `/crm/business-status-type/export-excel`, params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取商机状态类型信息列表
|
|
||||||
export const getBusinessStatusTypeList = async () => {
|
|
||||||
return await request.get({ url: `/crm/business-status-type/get-simple-list` })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 根据类型ID获取商机状态信息列表
|
|
||||||
export const getBusinessStatusListByTypeId = async (typeId: number) => {
|
|
||||||
return await request.get({ url: `/crm/business-status-type/get-status-list?typeId=` + typeId })
|
|
||||||
}
|
|
||||||
@@ -1,22 +1,39 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
import { TransferReqVO } from '@/api/crm/permission'
|
||||||
|
|
||||||
export interface ClueVO {
|
export interface ClueVO {
|
||||||
id: number
|
id: number // 编号
|
||||||
transformStatus: boolean
|
name: string // 线索名称
|
||||||
followUpStatus: boolean
|
followUpStatus: boolean // 跟进状态
|
||||||
name: string
|
contactLastTime: Date // 最后跟进时间
|
||||||
customerId: number
|
contactLastContent: string // 最后跟进内容
|
||||||
contactNextTime: Date
|
contactNextTime: Date // 下次联系时间
|
||||||
telephone: string
|
ownerUserId: number // 负责人的用户编号
|
||||||
mobile: string
|
ownerUserName?: string // 负责人的用户名称
|
||||||
address: string
|
ownerUserDept?: string // 负责人的部门名称
|
||||||
ownerUserId: number
|
transformStatus: boolean // 转化状态
|
||||||
contactLastTime: Date
|
customerId: number // 客户编号
|
||||||
remark: string
|
customerName?: string // 客户名称
|
||||||
|
mobile: string // 手机号
|
||||||
|
telephone: string // 电话
|
||||||
|
qq: string // QQ
|
||||||
|
wechat: string // wechat
|
||||||
|
email: string // email
|
||||||
|
areaId: number // 所在地
|
||||||
|
areaName?: string // 所在地名称
|
||||||
|
detailAddress: string // 详细地址
|
||||||
|
industryId: number // 所属行业
|
||||||
|
level: number // 客户等级
|
||||||
|
source: number // 客户来源
|
||||||
|
remark: string // 备注
|
||||||
|
creator: string // 创建人
|
||||||
|
creatorName?: string // 创建人名称
|
||||||
|
createTime: Date // 创建时间
|
||||||
|
updateTime: Date // 更新时间
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询线索列表
|
// 查询线索列表
|
||||||
export const getCluePage = async (params) => {
|
export const getCluePage = async (params: any) => {
|
||||||
return await request.get({ url: `/crm/clue/page`, params })
|
return await request.get({ url: `/crm/clue/page`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,3 +61,18 @@ export const deleteClue = async (id: number) => {
|
|||||||
export const exportClue = async (params) => {
|
export const exportClue = async (params) => {
|
||||||
return await request.download({ url: `/crm/clue/export-excel`, params })
|
return await request.download({ url: `/crm/clue/export-excel`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 线索转移
|
||||||
|
export const transferClue = async (data: TransferReqVO) => {
|
||||||
|
return await request.put({ url: '/crm/clue/transfer', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 线索转化为客户
|
||||||
|
export const transformClue = async (id: number) => {
|
||||||
|
return await request.put({ url: '/crm/clue/transform', params: { id } })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得分配给我的、待跟进的线索数量
|
||||||
|
export const getFollowClueCount = async () => {
|
||||||
|
return await request.get({ url: '/crm/clue/follow-count' })
|
||||||
|
}
|
||||||
@@ -1,29 +1,35 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
import { TransferReqVO } from '@/api/crm/permission'
|
||||||
|
|
||||||
export interface ContactVO {
|
export interface ContactVO {
|
||||||
name: string
|
id: number // 编号
|
||||||
nextTime: Date
|
name: string // 联系人名称
|
||||||
mobile: string
|
customerId: number // 客户编号
|
||||||
telephone: string
|
customerName?: string // 客户名称
|
||||||
email: string
|
contactLastTime: Date // 最后跟进时间
|
||||||
post: string
|
contactLastContent: string // 最后跟进内容
|
||||||
customerId: number
|
contactNextTime: Date // 下次联系时间
|
||||||
detailAddress: string
|
ownerUserId: number // 负责人的用户编号
|
||||||
remark: string
|
ownerUserName?: string // 负责人的用户名称
|
||||||
ownerUserId: string
|
ownerUserDept?: string // 负责人的部门名称
|
||||||
lastTime: Date
|
mobile: string // 手机号
|
||||||
id: number
|
telephone: string // 电话
|
||||||
parentId: number
|
qq: string // QQ
|
||||||
qq: number
|
wechat: string // wechat
|
||||||
wechat: string
|
email: string // email
|
||||||
sex: number
|
areaId: number // 所在地
|
||||||
master: boolean
|
areaName?: string // 所在地名称
|
||||||
creatorName: string
|
detailAddress: string // 详细地址
|
||||||
updateTime?: Date
|
sex: number // 性别
|
||||||
createTime?: Date
|
master: boolean // 是否主联系人
|
||||||
customerName: string
|
post: string // 职务
|
||||||
areaName: string
|
parentId: number // 上级联系人编号
|
||||||
ownerUserName: string
|
parentName?: string // 上级联系人名称
|
||||||
|
remark: string // 备注
|
||||||
|
creator: string // 创建人
|
||||||
|
creatorName?: string // 创建人名称
|
||||||
|
createTime: Date // 创建时间
|
||||||
|
updateTime: Date // 更新时间
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ContactBusinessReqVO {
|
export interface ContactBusinessReqVO {
|
||||||
@@ -31,6 +37,11 @@ export interface ContactBusinessReqVO {
|
|||||||
businessIds: number[]
|
businessIds: number[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ContactBusiness2ReqVO {
|
||||||
|
businessId: number
|
||||||
|
contactIds: number[]
|
||||||
|
}
|
||||||
|
|
||||||
// 查询 CRM 联系人列表
|
// 查询 CRM 联系人列表
|
||||||
export const getContactPage = async (params) => {
|
export const getContactPage = async (params) => {
|
||||||
return await request.get({ url: `/crm/contact/page`, params })
|
return await request.get({ url: `/crm/contact/page`, params })
|
||||||
@@ -41,6 +52,11 @@ export const getContactPageByCustomer = async (params: any) => {
|
|||||||
return await request.get({ url: `/crm/contact/page-by-customer`, params })
|
return await request.get({ url: `/crm/contact/page-by-customer`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询 CRM 联系人列表,基于指定商机
|
||||||
|
export const getContactPageByBusiness = async (params: any) => {
|
||||||
|
return await request.get({ url: `/crm/contact/page-by-business`, params })
|
||||||
|
}
|
||||||
|
|
||||||
// 查询 CRM 联系人详情
|
// 查询 CRM 联系人详情
|
||||||
export const getContact = async (id: number) => {
|
export const getContact = async (id: number) => {
|
||||||
return await request.get({ url: `/crm/contact/get?id=` + id })
|
return await request.get({ url: `/crm/contact/get?id=` + id })
|
||||||
@@ -71,22 +87,27 @@ export const getSimpleContactList = async () => {
|
|||||||
return await request.get({ url: `/crm/contact/simple-all-list` })
|
return await request.get({ url: `/crm/contact/simple-all-list` })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得 CRM 联系人列表
|
|
||||||
export const getContactListByIds = async (val: number[]) => {
|
|
||||||
return await request.get({ url: '/crm/contact/list-by-ids', params: { ids: val.join(',') } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 批量新增联系人商机关联
|
// 批量新增联系人商机关联
|
||||||
export const createContactBusinessList = async (data: ContactBusinessReqVO) => {
|
export const createContactBusinessList = async (data: ContactBusinessReqVO) => {
|
||||||
return await request.post({ url: `/crm/contact/create-business-list`, data })
|
return await request.post({ url: `/crm/contact/create-business-list`, data })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 批量新增联系人商机关联
|
||||||
|
export const createContactBusinessList2 = async (data: ContactBusiness2ReqVO) => {
|
||||||
|
return await request.post({ url: `/crm/contact/create-business-list2`, data })
|
||||||
|
}
|
||||||
|
|
||||||
// 解除联系人商机关联
|
// 解除联系人商机关联
|
||||||
export const deleteContactBusinessList = async (data: ContactBusinessReqVO) => {
|
export const deleteContactBusinessList = async (data: ContactBusinessReqVO) => {
|
||||||
return await request.delete({ url: `/crm/contact/delete-business-list`, data })
|
return await request.delete({ url: `/crm/contact/delete-business-list`, data })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询联系人操作日志
|
// 解除联系人商机关联
|
||||||
export const getOperateLogPage = async (params: any) => {
|
export const deleteContactBusinessList2 = async (data: ContactBusiness2ReqVO) => {
|
||||||
return await request.get({ url: '/crm/contact/operate-log-page', params })
|
return await request.delete({ url: `/crm/contact/delete-business-list2`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 联系人转移
|
||||||
|
export const transferContact = async (data: TransferReqVO) => {
|
||||||
|
return await request.put({ url: '/crm/contact/transfer', data })
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface ContractConfigVO {
|
||||||
|
notifyEnabled?: boolean
|
||||||
|
notifyDays?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取合同配置
|
||||||
|
export const getContractConfig = async () => {
|
||||||
|
return await request.get({ url: `/crm/contract-config/get` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新合同配置
|
||||||
|
export const saveContractConfig = async (data: ContractConfigVO) => {
|
||||||
|
return await request.put({ url: `/crm/contract-config/save`, data })
|
||||||
|
}
|
||||||
@@ -1,25 +1,49 @@
|
|||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
import { TransferReqVO } from '@/api/crm/permission'
|
||||||
|
|
||||||
export interface ContractVO {
|
export interface ContractVO {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
customerId: number
|
|
||||||
businessId: number
|
|
||||||
processInstanceId: number
|
|
||||||
orderDate: Date
|
|
||||||
ownerUserId: number
|
|
||||||
no: string
|
no: string
|
||||||
|
customerId: number
|
||||||
|
customerName?: string
|
||||||
|
businessId: number
|
||||||
|
businessName: string
|
||||||
|
contactLastTime: Date
|
||||||
|
ownerUserId: number
|
||||||
|
ownerUserName?: string
|
||||||
|
ownerUserDeptName?: string
|
||||||
|
processInstanceId: number
|
||||||
|
auditStatus: number
|
||||||
|
orderDate: Date
|
||||||
startTime: Date
|
startTime: Date
|
||||||
endTime: Date
|
endTime: Date
|
||||||
price: number
|
totalProductPrice: number
|
||||||
discountPercent: number
|
discountPercent: number
|
||||||
productPrice: number
|
totalPrice: number
|
||||||
roUserIds: string
|
totalReceivablePrice: number
|
||||||
rwUserIds: string
|
signContactId: number
|
||||||
contactId: number
|
signContactName?: string
|
||||||
signUserId: number
|
signUserId: number
|
||||||
contactLastTime: Date
|
signUserName: string
|
||||||
remark: string
|
remark: string
|
||||||
|
createTime?: Date
|
||||||
|
creator: string
|
||||||
|
creatorName: string
|
||||||
|
updateTime?: Date
|
||||||
|
products?: [
|
||||||
|
{
|
||||||
|
id: number
|
||||||
|
productId: number
|
||||||
|
productName: string
|
||||||
|
productNo: string
|
||||||
|
productUnit: number
|
||||||
|
productPrice: number
|
||||||
|
contractPrice: number
|
||||||
|
count: number
|
||||||
|
totalPrice: number
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询 CRM 合同列表
|
// 查询 CRM 合同列表
|
||||||
@@ -32,11 +56,23 @@ export const getContractPageByCustomer = async (params: any) => {
|
|||||||
return await request.get({ url: `/crm/contract/page-by-customer`, params })
|
return await request.get({ url: `/crm/contract/page-by-customer`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询 CRM 联系人列表,基于指定商机
|
||||||
|
export const getContractPageByBusiness = async (params: any) => {
|
||||||
|
return await request.get({ url: `/crm/contract/page-by-business`, params })
|
||||||
|
}
|
||||||
|
|
||||||
// 查询 CRM 合同详情
|
// 查询 CRM 合同详情
|
||||||
export const getContract = async (id: number) => {
|
export const getContract = async (id: number) => {
|
||||||
return await request.get({ url: `/crm/contract/get?id=` + id })
|
return await request.get({ url: `/crm/contract/get?id=` + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询 CRM 合同下拉列表
|
||||||
|
export const getContractSimpleList = async (customerId: number) => {
|
||||||
|
return await request.get({
|
||||||
|
url: `/crm/contract/simple-list?customerId=${customerId}`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 新增 CRM 合同
|
// 新增 CRM 合同
|
||||||
export const createContract = async (data: ContractVO) => {
|
export const createContract = async (data: ContractVO) => {
|
||||||
return await request.post({ url: `/crm/contract/create`, data })
|
return await request.post({ url: `/crm/contract/create`, data })
|
||||||
@@ -56,3 +92,23 @@ export const deleteContract = async (id: number) => {
|
|||||||
export const exportContract = async (params) => {
|
export const exportContract = async (params) => {
|
||||||
return await request.download({ url: `/crm/contract/export-excel`, params })
|
return await request.download({ url: `/crm/contract/export-excel`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 提交审核
|
||||||
|
export const submitContract = async (id: number) => {
|
||||||
|
return await request.put({ url: `/crm/contract/submit?id=${id}` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 合同转移
|
||||||
|
export const transferContract = async (data: TransferReqVO) => {
|
||||||
|
return await request.put({ url: '/crm/contract/transfer', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得待审核合同数量
|
||||||
|
export const getAuditContractCount = async () => {
|
||||||
|
return await request.get({ url: '/crm/contract/audit-count' })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得即将到期(提醒)的合同数量
|
||||||
|
export const getRemindContractCount = async () => {
|
||||||
|
return await request.get({ url: '/crm/contract/remind-count' })
|
||||||
|
}
|
||||||
@@ -1,36 +1,34 @@
|
|||||||
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 // 编号
|
||||||
name: string
|
name: string // 客户名称
|
||||||
industryId: number
|
followUpStatus: boolean // 跟进状态
|
||||||
level: number
|
contactLastTime: Date // 最后跟进时间
|
||||||
source: number
|
contactLastContent: string // 最后跟进内容
|
||||||
followUpStatus?: boolean
|
contactNextTime: Date // 下次联系时间
|
||||||
|
ownerUserId: number // 负责人的用户编号
|
||||||
|
ownerUserName?: string // 负责人的用户名称
|
||||||
|
ownerUserDept?: string // 负责人的部门名称
|
||||||
lockStatus?: boolean
|
lockStatus?: boolean
|
||||||
dealStatus?: boolean
|
dealStatus?: boolean
|
||||||
mobile: string
|
mobile: string // 手机号
|
||||||
telephone: string
|
telephone: string // 电话
|
||||||
website: string
|
qq: string // QQ
|
||||||
qq: string
|
wechat: string // wechat
|
||||||
wechat: string
|
email: string // email
|
||||||
email: string
|
areaId: number // 所在地
|
||||||
description: string
|
areaName?: string // 所在地名称
|
||||||
remark: string
|
detailAddress: string // 详细地址
|
||||||
ownerUserId?: number
|
industryId: number // 所属行业
|
||||||
ownerUserName?: string
|
level: number // 客户等级
|
||||||
ownerUserDept?: string
|
source: number // 客户来源
|
||||||
roUserIds?: string
|
remark: string // 备注
|
||||||
rwUserIds?: string
|
creator: string // 创建人
|
||||||
areaId?: number
|
creatorName?: string // 创建人名称
|
||||||
areaName?: string
|
createTime: Date // 创建时间
|
||||||
detailAddress: string
|
updateTime: Date // 更新时间
|
||||||
contactLastTime?: Date
|
|
||||||
contactNextTime: Date
|
|
||||||
createTime?: Date
|
|
||||||
updateTime?: Date
|
|
||||||
creator?: string
|
|
||||||
creatorName?: string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询客户列表
|
// 查询客户列表
|
||||||
@@ -38,6 +36,26 @@ export const getCustomerPage = async (params) => {
|
|||||||
return await request.get({ url: `/crm/customer/page`, params })
|
return await request.get({ url: `/crm/customer/page`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 进入公海客户提醒的客户列表
|
||||||
|
export const getPutPoolRemindCustomerPage = async (params) => {
|
||||||
|
return await request.get({ url: `/crm/customer/put-pool-remind-page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得待进入公海客户数量
|
||||||
|
export const getPutPoolRemindCustomerCount = async () => {
|
||||||
|
return await request.get({ url: `/crm/customer/put-pool-remind-count` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得今日需联系客户数量
|
||||||
|
export const getTodayContactCustomerCount = async () => {
|
||||||
|
return await request.get({ url: `/crm/customer/today-contact-count` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得分配给我、待跟进的线索数量的客户数量
|
||||||
|
export const getFollowCustomerCount = async () => {
|
||||||
|
return await request.get({ url: `/crm/customer/follow-count` })
|
||||||
|
}
|
||||||
|
|
||||||
// 查询客户详情
|
// 查询客户详情
|
||||||
export const getCustomer = async (id: number) => {
|
export const getCustomer = async (id: number) => {
|
||||||
return await request.get({ url: `/crm/customer/get?id=` + id })
|
return await request.get({ url: `/crm/customer/get?id=` + id })
|
||||||
@@ -53,6 +71,11 @@ export const updateCustomer = async (data: CustomerVO) => {
|
|||||||
return await request.put({ url: `/crm/customer/update`, data })
|
return await request.put({ url: `/crm/customer/update`, data })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 更新客户的成交状态
|
||||||
|
export const updateCustomerDealStatus = async (id: number, dealStatus: boolean) => {
|
||||||
|
return await request.put({ url: `/crm/customer/update-deal-status`, params: { id, dealStatus } })
|
||||||
|
}
|
||||||
|
|
||||||
// 删除客户
|
// 删除客户
|
||||||
export const deleteCustomer = async (id: number) => {
|
export const deleteCustomer = async (id: number) => {
|
||||||
return await request.delete({ url: `/crm/customer/delete?id=` + id })
|
return await request.delete({ url: `/crm/customer/delete?id=` + id })
|
||||||
@@ -63,26 +86,25 @@ export const exportCustomer = async (params: any) => {
|
|||||||
return await request.download({ url: `/crm/customer/export-excel`, params })
|
return await request.download({ url: `/crm/customer/export-excel`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 客户列表
|
// 下载客户导入模板
|
||||||
export const getSimpleCustomerList = async () => {
|
export const importCustomerTemplate = () => {
|
||||||
return await request.get({ url: `/crm/customer/list-all-simple` })
|
return request.download({ url: '/crm/customer/get-import-template' })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询客户操作日志
|
// 导入客户
|
||||||
export const getOperateLogPage = async (id: number) => {
|
export const handleImport = async (formData) => {
|
||||||
return await request.get({ url: '/crm/customer/operate-log-page?id=' + id })
|
return await request.upload({ url: `/crm/customer/import`, data: formData })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 客户列表
|
||||||
|
export const getCustomerSimpleList = async () => {
|
||||||
|
return await request.get({ url: `/crm/customer/simple-list` })
|
||||||
}
|
}
|
||||||
|
|
||||||
// ======================= 业务操作 =======================
|
// ======================= 业务操作 =======================
|
||||||
|
|
||||||
export interface TransferReqVO {
|
|
||||||
id: number | undefined // 客户编号
|
|
||||||
newOwnerUserId: number | undefined // 新负责人的用户编号
|
|
||||||
oldOwnerPermissionLevel: number | undefined // 老负责人加入团队后的权限级别
|
|
||||||
}
|
|
||||||
|
|
||||||
// 客户转移
|
// 客户转移
|
||||||
export const transfer = 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 })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,6 +118,14 @@ export const receiveCustomer = async (ids: any[]) => {
|
|||||||
return await request.put({ url: '/crm/customer/receive', params: { ids: ids.join(',') } })
|
return await request.put({ url: '/crm/customer/receive', params: { ids: ids.join(',') } })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 分配公海给对应负责人
|
||||||
|
export const distributeCustomer = async (ids: any[], ownerUserId: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: '/crm/customer/distribute',
|
||||||
|
data: { ids: ids, ownerUserId }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 客户放入公海
|
// 客户放入公海
|
||||||
export const putCustomerPool = async (id: number) => {
|
export const putCustomerPool = async (id: number) => {
|
||||||
return await request.put({ url: `/crm/customer/put-pool?id=${id}` })
|
return await request.put({ url: `/crm/customer/put-pool?id=${id}` })
|
||||||
|
|||||||
@@ -7,9 +7,21 @@ export interface FollowUpRecordVO {
|
|||||||
bizId: number // 数据编号
|
bizId: number // 数据编号
|
||||||
type: number // 跟进类型
|
type: number // 跟进类型
|
||||||
content: string // 跟进内容
|
content: string // 跟进内容
|
||||||
|
picUrls: string[] // 图片
|
||||||
|
fileUrls: string[] // 附件
|
||||||
nextTime: Date // 下次联系时间
|
nextTime: Date // 下次联系时间
|
||||||
businessIds: number[] // 关联的商机编号数组
|
businessIds: number[] // 关联的商机编号数组
|
||||||
|
businesses: {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
}[] // 关联的商机数组
|
||||||
contactIds: number[] // 关联的联系人编号数组
|
contactIds: number[] // 关联的联系人编号数组
|
||||||
|
contacts: {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
}[] // 关联的联系人数组
|
||||||
|
creator: string
|
||||||
|
creatorName?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
// 跟进记录 API
|
// 跟进记录 API
|
||||||
@@ -19,28 +31,13 @@ export const FollowUpRecordApi = {
|
|||||||
return await request.get({ url: `/crm/follow-up-record/page`, params })
|
return await request.get({ url: `/crm/follow-up-record/page`, params })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 查询跟进记录详情
|
|
||||||
getFollowUpRecord: async (id: number) => {
|
|
||||||
return await request.get({ url: `/crm/follow-up-record/get?id=` + id })
|
|
||||||
},
|
|
||||||
|
|
||||||
// 新增跟进记录
|
// 新增跟进记录
|
||||||
createFollowUpRecord: async (data: FollowUpRecordVO) => {
|
createFollowUpRecord: async (data: FollowUpRecordVO) => {
|
||||||
return await request.post({ url: `/crm/follow-up-record/create`, data })
|
return await request.post({ url: `/crm/follow-up-record/create`, data })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 修改跟进记录
|
|
||||||
updateFollowUpRecord: async (data: FollowUpRecordVO) => {
|
|
||||||
return await request.put({ url: `/crm/follow-up-record/update`, data })
|
|
||||||
},
|
|
||||||
|
|
||||||
// 删除跟进记录
|
// 删除跟进记录
|
||||||
deleteFollowUpRecord: async (id: number) => {
|
deleteFollowUpRecord: async (id: number) => {
|
||||||
return await request.delete({ url: `/crm/follow-up-record/delete?id=` + id })
|
return await request.delete({ url: `/crm/follow-up-record/delete?id=` + id })
|
||||||
},
|
|
||||||
|
|
||||||
// 导出跟进记录 Excel
|
|
||||||
exportFollowUpRecord: async (params) => {
|
|
||||||
return await request.download({ url: `/crm/follow-up-record/export-excel`, params })
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface CustomerVO {
|
|
||||||
id?: number
|
|
||||||
name: string
|
|
||||||
industryId: number
|
|
||||||
level: number
|
|
||||||
source: number
|
|
||||||
followUpStatus?: boolean
|
|
||||||
lockStatus?: boolean
|
|
||||||
dealStatus?: boolean
|
|
||||||
mobile: string
|
|
||||||
telephone: string
|
|
||||||
website: string
|
|
||||||
qq: string
|
|
||||||
wechat: string
|
|
||||||
email: string
|
|
||||||
description: string
|
|
||||||
remark: string
|
|
||||||
ownerUserId?: number
|
|
||||||
ownerUserName?: string
|
|
||||||
ownerUserDept?: string
|
|
||||||
roUserIds?: string
|
|
||||||
rwUserIds?: string
|
|
||||||
areaId?: number
|
|
||||||
areaName?: string
|
|
||||||
detailAddress: string
|
|
||||||
contactLastTime?: Date
|
|
||||||
contactNextTime: Date
|
|
||||||
createTime?: Date
|
|
||||||
updateTime?: Date
|
|
||||||
creator?: string
|
|
||||||
creatorName?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询客户列表
|
|
||||||
// TODO @芋艿:看看是不是后续融合到 getCustomerPage 里;
|
|
||||||
export const getTodayCustomerPage = async (params) => {
|
|
||||||
return await request.get({ url: `/crm/message/todayCustomer`, params })
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface OperateLogVO extends PageParam {
|
||||||
|
bizType: number
|
||||||
|
bizId: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得操作日志
|
||||||
|
export const getOperateLogPage = async (params: OperateLogVO) => {
|
||||||
|
return await request.get({ url: `/crm/operate-log/page`, params })
|
||||||
|
}
|
||||||
@@ -2,14 +2,23 @@ import request from '@/config/axios'
|
|||||||
|
|
||||||
export interface PermissionVO {
|
export interface PermissionVO {
|
||||||
id?: number // 数据权限编号
|
id?: number // 数据权限编号
|
||||||
userId: number | undefined // 用户编号
|
userId: number // 用户编号
|
||||||
bizType: number | undefined // Crm 类型
|
bizType: number // Crm 类型
|
||||||
bizId: number | undefined // Crm 类型数据编号
|
bizId: number // Crm 类型数据编号
|
||||||
level: number | undefined // 权限级别
|
level: number // 权限级别
|
||||||
|
toBizTypes?: number[] // 同时添加至
|
||||||
deptName?: string // 部门名称
|
deptName?: string // 部门名称
|
||||||
nickname?: string // 用户昵称
|
nickname?: string // 用户昵称
|
||||||
postNames?: string[] // 岗位名称数组
|
postNames?: string[] // 岗位名称数组
|
||||||
createTime?: Date
|
createTime?: Date
|
||||||
|
ids?: number[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TransferReqVO {
|
||||||
|
id: number // 模块编号
|
||||||
|
newOwnerUserId: number // 新负责人的用户编号
|
||||||
|
oldOwnerPermissionLevel?: number // 老负责人加入团队后的权限级别
|
||||||
|
toBizTypes?: number[] // 转移客户时,需要额外有【联系人】【商机】【合同】的 checkbox 选择
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,11 +27,14 @@ export interface PermissionVO {
|
|||||||
* @author HUIHUI
|
* @author HUIHUI
|
||||||
*/
|
*/
|
||||||
export enum BizTypeEnum {
|
export enum BizTypeEnum {
|
||||||
CRM_LEADS = 1, // 线索
|
CRM_CLUE = 1, // 线索
|
||||||
CRM_CUSTOMER = 2, // 客户
|
CRM_CUSTOMER = 2, // 客户
|
||||||
CRM_CONTACT = 3, // 联系人
|
CRM_CONTACT = 3, // 联系人
|
||||||
CRM_BUSINESS = 5, // 商机
|
CRM_BUSINESS = 4, // 商机
|
||||||
CRM_CONTRACT = 6 // 合同
|
CRM_CONTRACT = 5, // 合同
|
||||||
|
CRM_PRODUCT = 6, // 产品
|
||||||
|
CRM_RECEIVABLE = 7, // 回款
|
||||||
|
CRM_RECEIVABLE_PLAN = 8 // 回款计划
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -50,11 +62,11 @@ export const updatePermission = async (data) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 删除数据权限(删除团队成员)
|
// 删除数据权限(删除团队成员)
|
||||||
export const deletePermissionBatch = async (params) => {
|
export const deletePermissionBatch = async (val: number[]) => {
|
||||||
return await request.delete({ url: '/crm/permission/delete', params })
|
return await request.delete({ url: '/crm/permission/delete?ids=' + val.join(',') })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除自己的数据权限(退出团队)
|
// 删除自己的数据权限(退出团队)
|
||||||
export const deleteSelfPermission = async (id) => {
|
export const deleteSelfPermission = async (id: number) => {
|
||||||
return await request.delete({ url: '/crm/permission/quit-team?id=' + id })
|
return await request.delete({ url: '/crm/permission/delete-self?id=' + id })
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@ export interface ProductVO {
|
|||||||
price: number
|
price: number
|
||||||
status: number
|
status: number
|
||||||
categoryId: number
|
categoryId: number
|
||||||
|
categoryName?: string
|
||||||
description: string
|
description: string
|
||||||
ownerUserId: number
|
ownerUserId: number
|
||||||
}
|
}
|
||||||
@@ -17,6 +18,11 @@ export const getProductPage = async (params) => {
|
|||||||
return await request.get({ url: `/crm/product/page`, params })
|
return await request.get({ url: `/crm/product/page`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获得产品精简列表
|
||||||
|
export const getProductSimpleList = async () => {
|
||||||
|
return await request.get({ url: `/crm/product/simple-list` })
|
||||||
|
}
|
||||||
|
|
||||||
// 查询产品详情
|
// 查询产品详情
|
||||||
export const getProduct = async (id: number) => {
|
export const getProduct = async (id: number) => {
|
||||||
return await request.get({ url: `/crm/product/get?id=` + id })
|
return await request.get({ url: `/crm/product/get?id=` + id })
|
||||||
@@ -41,8 +47,3 @@ export const deleteProduct = async (id: number) => {
|
|||||||
export const exportProduct = async (params) => {
|
export const exportProduct = async (params) => {
|
||||||
return await request.download({ url: `/crm/product/export-excel`, params })
|
return await request.download({ url: `/crm/product/export-excel`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询产品操作日志
|
|
||||||
export const getOperateLogPage = async (params: any) => {
|
|
||||||
return await request.get({ url: '/crm/product/operate-log-page', params })
|
|
||||||
}
|
|
||||||
@@ -3,17 +3,28 @@ 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
|
||||||
contractId: number
|
customerName?: string
|
||||||
|
contractId?: number
|
||||||
|
contract?: {
|
||||||
|
id?: number
|
||||||
|
name?: string
|
||||||
|
no: string
|
||||||
|
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
|
||||||
sort: number
|
ownerUserName?: string
|
||||||
remark: string
|
remark: string
|
||||||
|
creator: string // 创建人
|
||||||
|
creatorName?: string // 创建人名称
|
||||||
|
createTime: Date // 创建时间
|
||||||
|
updateTime: Date // 更新时间
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询回款列表
|
// 查询回款列表
|
||||||
@@ -50,3 +61,13 @@ export const deleteReceivable = async (id: number) => {
|
|||||||
export const exportReceivable = async (params) => {
|
export const exportReceivable = async (params) => {
|
||||||
return await request.download({ url: `/crm/receivable/export-excel`, params })
|
return await request.download({ url: `/crm/receivable/export-excel`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 提交审核
|
||||||
|
export const submitReceivable = async (id: number) => {
|
||||||
|
return await request.put({ url: `/crm/receivable/submit?id=${id}` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得待审核回款数量
|
||||||
|
export const getAuditReceivableCount = async () => {
|
||||||
|
return await request.get({ url: '/crm/receivable/audit-count' })
|
||||||
|
}
|
||||||
@@ -4,18 +4,26 @@ export interface ReceivablePlanVO {
|
|||||||
id: number
|
id: number
|
||||||
period: number
|
period: number
|
||||||
receivableId: number
|
receivableId: number
|
||||||
status: number
|
|
||||||
checkStatus: string
|
|
||||||
processInstanceId: number
|
|
||||||
price: number
|
price: number
|
||||||
returnTime: Date
|
returnTime: Date
|
||||||
remindDays: number
|
remindDays: number
|
||||||
|
returnType: number
|
||||||
remindTime: Date
|
remindTime: Date
|
||||||
customerId: number
|
customerId: number
|
||||||
contractId: number
|
customerName?: string
|
||||||
|
contractId?: number
|
||||||
|
contractNo?: string
|
||||||
ownerUserId: number
|
ownerUserId: number
|
||||||
sort: number
|
ownerUserName?: string
|
||||||
remark: string
|
remark: string
|
||||||
|
creator: string // 创建人
|
||||||
|
creatorName?: string // 创建人名称
|
||||||
|
createTime: Date // 创建时间
|
||||||
|
updateTime: Date // 更新时间
|
||||||
|
receivable?: {
|
||||||
|
price: number
|
||||||
|
returnTime: Date
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询回款计划列表
|
// 查询回款计划列表
|
||||||
@@ -33,6 +41,13 @@ export const getReceivablePlan = async (id: number) => {
|
|||||||
return await request.get({ url: `/crm/receivable-plan/get?id=` + id })
|
return await request.get({ url: `/crm/receivable-plan/get?id=` + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询回款计划下拉数据
|
||||||
|
export const getReceivablePlanSimpleList = async (customerId: number, contractId: number) => {
|
||||||
|
return await request.get({
|
||||||
|
url: `/crm/receivable-plan/simple-list?customerId=${customerId}&contractId=${contractId}`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 新增回款计划
|
// 新增回款计划
|
||||||
export const createReceivablePlan = async (data: ReceivablePlanVO) => {
|
export const createReceivablePlan = async (data: ReceivablePlanVO) => {
|
||||||
return await request.post({ url: `/crm/receivable-plan/create`, data })
|
return await request.post({ url: `/crm/receivable-plan/create`, data })
|
||||||
@@ -52,3 +67,8 @@ export const deleteReceivablePlan = async (id: number) => {
|
|||||||
export const exportReceivablePlan = async (params) => {
|
export const exportReceivablePlan = async (params) => {
|
||||||
return await request.download({ url: `/crm/receivable-plan/export-excel`, params })
|
return await request.download({ url: `/crm/receivable-plan/export-excel`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获得待回款提醒数量
|
||||||
|
export const getReceivablePlanRemindCount = async () => {
|
||||||
|
return await request.get({ url: '/crm/receivable-plan/remind-count' })
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface StatisticsRankRespVO {
|
||||||
|
count: number
|
||||||
|
nickname: string
|
||||||
|
deptName: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排行 API
|
||||||
|
export const StatisticsRankApi = {
|
||||||
|
// 获得合同排行榜
|
||||||
|
getContractPriceRank: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-rank/get-contract-price-rank',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获得回款排行榜
|
||||||
|
getReceivablePriceRank: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-rank/get-receivable-price-rank',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 签约合同排行
|
||||||
|
getContractCountRank: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-rank/get-contract-count-rank',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 产品销量排行
|
||||||
|
getProductSalesRank: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-rank/get-product-sales-rank',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 新增客户数排行
|
||||||
|
getCustomerCountRank: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-rank/get-customer-count-rank',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 新增联系人数排行
|
||||||
|
getContactsCountRank: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-rank/get-contacts-count-rank',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 跟进次数排行
|
||||||
|
getFollowCountRank: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-rank/get-follow-count-rank',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 跟进客户数排行
|
||||||
|
getFollowCustomerCountRank: (params: any) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/crm/statistics-rank/get-follow-customer-count-rank',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 结算账户 VO
|
||||||
|
export interface AccountVO {
|
||||||
|
id: number // 结算账户编号
|
||||||
|
no: string // 账户编码
|
||||||
|
remark: string // 备注
|
||||||
|
status: number // 开启状态
|
||||||
|
sort: number // 排序
|
||||||
|
defaultStatus: boolean // 是否默认
|
||||||
|
name: string // 账户名称
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 结算账户 API
|
||||||
|
export const AccountApi = {
|
||||||
|
// 查询结算账户分页
|
||||||
|
getAccountPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/account/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询结算账户精简列表
|
||||||
|
getAccountSimpleList: async () => {
|
||||||
|
return await request.get({ url: `/erp/account/simple-list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询结算账户详情
|
||||||
|
getAccount: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/account/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增结算账户
|
||||||
|
createAccount: async (data: AccountVO) => {
|
||||||
|
return await request.post({ url: `/erp/account/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改结算账户
|
||||||
|
updateAccount: async (data: AccountVO) => {
|
||||||
|
return await request.put({ url: `/erp/account/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改结算账户默认状态
|
||||||
|
updateAccountDefaultStatus: async (id: number, defaultStatus: boolean) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/account/update-default-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
defaultStatus
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除结算账户
|
||||||
|
deleteAccount: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/erp/account/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出结算账户 Excel
|
||||||
|
exportAccount: async (params: any) => {
|
||||||
|
return await request.download({ url: `/erp/account/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 付款单 VO
|
||||||
|
export interface FinancePaymentVO {
|
||||||
|
id: number // 付款单编号
|
||||||
|
no: string // 付款单号
|
||||||
|
supplierId: number // 供应商编号
|
||||||
|
paymentTime: Date // 付款时间
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 付款单 API
|
||||||
|
export const FinancePaymentApi = {
|
||||||
|
// 查询付款单分页
|
||||||
|
getFinancePaymentPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/finance-payment/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询付款单详情
|
||||||
|
getFinancePayment: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/finance-payment/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增付款单
|
||||||
|
createFinancePayment: async (data: FinancePaymentVO) => {
|
||||||
|
return await request.post({ url: `/erp/finance-payment/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改付款单
|
||||||
|
updateFinancePayment: async (data: FinancePaymentVO) => {
|
||||||
|
return await request.put({ url: `/erp/finance-payment/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新付款单的状态
|
||||||
|
updateFinancePaymentStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/finance-payment/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除付款单
|
||||||
|
deleteFinancePayment: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/finance-payment/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出付款单 Excel
|
||||||
|
exportFinancePayment: async (params: any) => {
|
||||||
|
return await request.download({ url: `/erp/finance-payment/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 收款单 VO
|
||||||
|
export interface FinanceReceiptVO {
|
||||||
|
id: number // 收款单编号
|
||||||
|
no: string // 收款单号
|
||||||
|
customerId: number // 客户编号
|
||||||
|
receiptTime: Date // 收款时间
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 收款单 API
|
||||||
|
export const FinanceReceiptApi = {
|
||||||
|
// 查询收款单分页
|
||||||
|
getFinanceReceiptPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/finance-receipt/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询收款单详情
|
||||||
|
getFinanceReceipt: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/finance-receipt/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增收款单
|
||||||
|
createFinanceReceipt: async (data: FinanceReceiptVO) => {
|
||||||
|
return await request.post({ url: `/erp/finance-receipt/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改收款单
|
||||||
|
updateFinanceReceipt: async (data: FinanceReceiptVO) => {
|
||||||
|
return await request.put({ url: `/erp/finance-receipt/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新收款单的状态
|
||||||
|
updateFinanceReceiptStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/finance-receipt/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除收款单
|
||||||
|
deleteFinanceReceipt: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/finance-receipt/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出收款单 Excel
|
||||||
|
exportFinanceReceipt: async (params: any) => {
|
||||||
|
return await request.download({ url: `/erp/finance-receipt/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 产品分类 VO
|
||||||
|
export interface ProductCategoryVO {
|
||||||
|
id: number // 分类编号
|
||||||
|
parentId: number // 父分类编号
|
||||||
|
name: string // 分类名称
|
||||||
|
code: string // 分类编码
|
||||||
|
sort: number // 分类排序
|
||||||
|
status: number // 开启状态
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 产品分类 API
|
||||||
|
export const ProductCategoryApi = {
|
||||||
|
// 查询产品分类列表
|
||||||
|
getProductCategoryList: async () => {
|
||||||
|
return await request.get({ url: `/erp/product-category/list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品分类精简列表
|
||||||
|
getProductCategorySimpleList: async () => {
|
||||||
|
return await request.get({ url: `/erp/product-category/simple-list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品分类详情
|
||||||
|
getProductCategory: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/product-category/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增产品分类
|
||||||
|
createProductCategory: async (data: ProductCategoryVO) => {
|
||||||
|
return await request.post({ url: `/erp/product-category/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改产品分类
|
||||||
|
updateProductCategory: async (data: ProductCategoryVO) => {
|
||||||
|
return await request.put({ url: `/erp/product-category/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除产品分类
|
||||||
|
deleteProductCategory: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/erp/product-category/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出产品分类 Excel
|
||||||
|
exportProductCategory: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/product-category/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 产品 VO
|
||||||
|
export interface ProductVO {
|
||||||
|
id: number // 产品编号
|
||||||
|
name: string // 产品名称
|
||||||
|
barCode: string // 产品条码
|
||||||
|
categoryId: number // 产品类型编号
|
||||||
|
unitId: number // 单位编号
|
||||||
|
unitName?: string // 单位名字
|
||||||
|
status: number // 产品状态
|
||||||
|
standard: string // 产品规格
|
||||||
|
remark: string // 产品备注
|
||||||
|
expiryDay: number // 保质期天数
|
||||||
|
weight: number // 重量(kg)
|
||||||
|
purchasePrice: number // 采购价格,单位:元
|
||||||
|
salePrice: number // 销售价格,单位:元
|
||||||
|
minPrice: number // 最低价格,单位:元
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 产品 API
|
||||||
|
export const ProductApi = {
|
||||||
|
// 查询产品分页
|
||||||
|
getProductPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/product/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品精简列表
|
||||||
|
getProductSimpleList: async () => {
|
||||||
|
return await request.get({ url: `/erp/product/simple-list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品详情
|
||||||
|
getProduct: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/product/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增产品
|
||||||
|
createProduct: async (data: ProductVO) => {
|
||||||
|
return await request.post({ url: `/erp/product/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改产品
|
||||||
|
updateProduct: async (data: ProductVO) => {
|
||||||
|
return await request.put({ url: `/erp/product/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除产品
|
||||||
|
deleteProduct: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/erp/product/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出产品 Excel
|
||||||
|
exportProduct: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/product/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 产品单位 VO
|
||||||
|
export interface ProductUnitVO {
|
||||||
|
id: number // 单位编号
|
||||||
|
name: string // 单位名字
|
||||||
|
status: number // 单位状态
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 产品单位 API
|
||||||
|
export const ProductUnitApi = {
|
||||||
|
// 查询产品单位分页
|
||||||
|
getProductUnitPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/product-unit/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品单位精简列表
|
||||||
|
getProductUnitSimpleList: async () => {
|
||||||
|
return await request.get({ url: `/erp/product-unit/simple-list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品单位详情
|
||||||
|
getProductUnit: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/product-unit/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增产品单位
|
||||||
|
createProductUnit: async (data: ProductUnitVO) => {
|
||||||
|
return await request.post({ url: `/erp/product-unit/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改产品单位
|
||||||
|
updateProductUnit: async (data: ProductUnitVO) => {
|
||||||
|
return await request.put({ url: `/erp/product-unit/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除产品单位
|
||||||
|
deleteProductUnit: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/erp/product-unit/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出产品单位 Excel
|
||||||
|
exportProductUnit: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/product-unit/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 采购入库 VO
|
||||||
|
export interface PurchaseInVO {
|
||||||
|
id: number // 入库工单编号
|
||||||
|
no: string // 采购入库号
|
||||||
|
customerId: number // 客户编号
|
||||||
|
inTime: Date // 入库时间
|
||||||
|
totalCount: number // 合计数量
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
outCount: number // 采购出库数量
|
||||||
|
returnCount: number // 采购退货数量
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 采购入库 API
|
||||||
|
export const PurchaseInApi = {
|
||||||
|
// 查询采购入库分页
|
||||||
|
getPurchaseInPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/purchase-in/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询采购入库详情
|
||||||
|
getPurchaseIn: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/purchase-in/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增采购入库
|
||||||
|
createPurchaseIn: async (data: PurchaseInVO) => {
|
||||||
|
return await request.post({ url: `/erp/purchase-in/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改采购入库
|
||||||
|
updatePurchaseIn: async (data: PurchaseInVO) => {
|
||||||
|
return await request.put({ url: `/erp/purchase-in/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新采购入库的状态
|
||||||
|
updatePurchaseInStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/purchase-in/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除采购入库
|
||||||
|
deletePurchaseIn: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/purchase-in/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出采购入库 Excel
|
||||||
|
exportPurchaseIn: async (params: any) => {
|
||||||
|
return await request.download({ url: `/erp/purchase-in/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 采购订单 VO
|
||||||
|
export interface PurchaseOrderVO {
|
||||||
|
id: number // 订单工单编号
|
||||||
|
no: string // 采购订单号
|
||||||
|
customerId: number // 客户编号
|
||||||
|
orderTime: Date // 订单时间
|
||||||
|
totalCount: number // 合计数量
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
outCount: number // 采购出库数量
|
||||||
|
returnCount: number // 采购退货数量
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 采购订单 API
|
||||||
|
export const PurchaseOrderApi = {
|
||||||
|
// 查询采购订单分页
|
||||||
|
getPurchaseOrderPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/purchase-order/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询采购订单详情
|
||||||
|
getPurchaseOrder: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/purchase-order/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增采购订单
|
||||||
|
createPurchaseOrder: async (data: PurchaseOrderVO) => {
|
||||||
|
return await request.post({ url: `/erp/purchase-order/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改采购订单
|
||||||
|
updatePurchaseOrder: async (data: PurchaseOrderVO) => {
|
||||||
|
return await request.put({ url: `/erp/purchase-order/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新采购订单的状态
|
||||||
|
updatePurchaseOrderStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/purchase-order/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除采购订单
|
||||||
|
deletePurchaseOrder: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/purchase-order/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出采购订单 Excel
|
||||||
|
exportPurchaseOrder: async (params: any) => {
|
||||||
|
return await request.download({ url: `/erp/purchase-order/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 采购退货 VO
|
||||||
|
export interface PurchaseReturnVO {
|
||||||
|
id: number // 采购退货编号
|
||||||
|
no: string // 采购退货号
|
||||||
|
customerId: number // 客户编号
|
||||||
|
returnTime: Date // 退货时间
|
||||||
|
totalCount: number // 合计数量
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 采购退货 API
|
||||||
|
export const PurchaseReturnApi = {
|
||||||
|
// 查询采购退货分页
|
||||||
|
getPurchaseReturnPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/purchase-return/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询采购退货详情
|
||||||
|
getPurchaseReturn: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/purchase-return/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增采购退货
|
||||||
|
createPurchaseReturn: async (data: PurchaseReturnVO) => {
|
||||||
|
return await request.post({ url: `/erp/purchase-return/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改采购退货
|
||||||
|
updatePurchaseReturn: async (data: PurchaseReturnVO) => {
|
||||||
|
return await request.put({ url: `/erp/purchase-return/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新采购退货的状态
|
||||||
|
updatePurchaseReturnStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/purchase-return/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除采购退货
|
||||||
|
deletePurchaseReturn: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/purchase-return/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出采购退货 Excel
|
||||||
|
exportPurchaseReturn: async (params: any) => {
|
||||||
|
return await request.download({ url: `/erp/purchase-return/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 供应商 VO
|
||||||
|
export interface SupplierVO {
|
||||||
|
id: number // 供应商编号
|
||||||
|
name: string // 供应商名称
|
||||||
|
contact: string // 联系人
|
||||||
|
mobile: string // 手机号码
|
||||||
|
telephone: string // 联系电话
|
||||||
|
email: string // 电子邮箱
|
||||||
|
fax: string // 传真
|
||||||
|
remark: string // 备注
|
||||||
|
status: number // 开启状态
|
||||||
|
sort: number // 排序
|
||||||
|
taxNo: string // 纳税人识别号
|
||||||
|
taxPercent: number // 税率
|
||||||
|
bankName: string // 开户行
|
||||||
|
bankAccount: string // 开户账号
|
||||||
|
bankAddress: string // 开户地址
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 供应商 API
|
||||||
|
export const SupplierApi = {
|
||||||
|
// 查询供应商分页
|
||||||
|
getSupplierPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/supplier/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获得供应商精简列表
|
||||||
|
getSupplierSimpleList: async () => {
|
||||||
|
return await request.get({ url: `/erp/supplier/simple-list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询供应商详情
|
||||||
|
getSupplier: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/supplier/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增供应商
|
||||||
|
createSupplier: async (data: SupplierVO) => {
|
||||||
|
return await request.post({ url: `/erp/supplier/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改供应商
|
||||||
|
updateSupplier: async (data: SupplierVO) => {
|
||||||
|
return await request.put({ url: `/erp/supplier/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除供应商
|
||||||
|
deleteSupplier: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/erp/supplier/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出供应商 Excel
|
||||||
|
exportSupplier: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/supplier/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 客户 VO
|
||||||
|
export interface CustomerVO {
|
||||||
|
id: number // 客户编号
|
||||||
|
name: string // 客户名称
|
||||||
|
contact: string // 联系人
|
||||||
|
mobile: string // 手机号码
|
||||||
|
telephone: string // 联系电话
|
||||||
|
email: string // 电子邮箱
|
||||||
|
fax: string // 传真
|
||||||
|
remark: string // 备注
|
||||||
|
status: number // 开启状态
|
||||||
|
sort: number // 排序
|
||||||
|
taxNo: string // 纳税人识别号
|
||||||
|
taxPercent: number // 税率
|
||||||
|
bankName: string // 开户行
|
||||||
|
bankAccount: string // 开户账号
|
||||||
|
bankAddress: string // 开户地址
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 客户 API
|
||||||
|
export const CustomerApi = {
|
||||||
|
// 查询客户分页
|
||||||
|
getCustomerPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/customer/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询客户精简列表
|
||||||
|
getCustomerSimpleList: async () => {
|
||||||
|
return await request.get({ url: `/erp/customer/simple-list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询客户详情
|
||||||
|
getCustomer: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/customer/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增客户
|
||||||
|
createCustomer: async (data: CustomerVO) => {
|
||||||
|
return await request.post({ url: `/erp/customer/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改客户
|
||||||
|
updateCustomer: async (data: CustomerVO) => {
|
||||||
|
return await request.put({ url: `/erp/customer/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除客户
|
||||||
|
deleteCustomer: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/erp/customer/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出客户 Excel
|
||||||
|
exportCustomer: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/customer/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 销售订单 VO
|
||||||
|
export interface SaleOrderVO {
|
||||||
|
id: number // 订单工单编号
|
||||||
|
no: string // 销售订单号
|
||||||
|
customerId: number // 客户编号
|
||||||
|
orderTime: Date // 订单时间
|
||||||
|
totalCount: number // 合计数量
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
outCount: number // 销售出库数量
|
||||||
|
returnCount: number // 销售退货数量
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 销售订单 API
|
||||||
|
export const SaleOrderApi = {
|
||||||
|
// 查询销售订单分页
|
||||||
|
getSaleOrderPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/sale-order/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询销售订单详情
|
||||||
|
getSaleOrder: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/sale-order/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增销售订单
|
||||||
|
createSaleOrder: async (data: SaleOrderVO) => {
|
||||||
|
return await request.post({ url: `/erp/sale-order/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改销售订单
|
||||||
|
updateSaleOrder: async (data: SaleOrderVO) => {
|
||||||
|
return await request.put({ url: `/erp/sale-order/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新销售订单的状态
|
||||||
|
updateSaleOrderStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/sale-order/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除销售订单
|
||||||
|
deleteSaleOrder: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/sale-order/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出销售订单 Excel
|
||||||
|
exportSaleOrder: async (params: any) => {
|
||||||
|
return await request.download({ url: `/erp/sale-order/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 销售出库 VO
|
||||||
|
export interface SaleOutVO {
|
||||||
|
id: number // 销售出库编号
|
||||||
|
no: string // 销售出库号
|
||||||
|
customerId: number // 客户编号
|
||||||
|
outTime: Date // 出库时间
|
||||||
|
totalCount: number // 合计数量
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 销售出库 API
|
||||||
|
export const SaleOutApi = {
|
||||||
|
// 查询销售出库分页
|
||||||
|
getSaleOutPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/sale-out/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询销售出库详情
|
||||||
|
getSaleOut: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/sale-out/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增销售出库
|
||||||
|
createSaleOut: async (data: SaleOutVO) => {
|
||||||
|
return await request.post({ url: `/erp/sale-out/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改销售出库
|
||||||
|
updateSaleOut: async (data: SaleOutVO) => {
|
||||||
|
return await request.put({ url: `/erp/sale-out/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新销售出库的状态
|
||||||
|
updateSaleOutStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/sale-out/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除销售出库
|
||||||
|
deleteSaleOut: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/sale-out/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出销售出库 Excel
|
||||||
|
exportSaleOut: async (params: any) => {
|
||||||
|
return await request.download({ url: `/erp/sale-out/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 销售退货 VO
|
||||||
|
export interface SaleReturnVO {
|
||||||
|
id: number // 销售退货编号
|
||||||
|
no: string // 销售退货号
|
||||||
|
customerId: number // 客户编号
|
||||||
|
returnTime: Date // 退货时间
|
||||||
|
totalCount: number // 合计数量
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 销售退货 API
|
||||||
|
export const SaleReturnApi = {
|
||||||
|
// 查询销售退货分页
|
||||||
|
getSaleReturnPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/sale-return/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询销售退货详情
|
||||||
|
getSaleReturn: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/sale-return/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增销售退货
|
||||||
|
createSaleReturn: async (data: SaleReturnVO) => {
|
||||||
|
return await request.post({ url: `/erp/sale-return/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改销售退货
|
||||||
|
updateSaleReturn: async (data: SaleReturnVO) => {
|
||||||
|
return await request.put({ url: `/erp/sale-return/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新销售退货的状态
|
||||||
|
updateSaleReturnStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/sale-return/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除销售退货
|
||||||
|
deleteSaleReturn: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/sale-return/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出销售退货 Excel
|
||||||
|
exportSaleReturn: async (params: any) => {
|
||||||
|
return await request.download({ url: `/erp/sale-return/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 采购全局统计 VO
|
||||||
|
export interface ErpPurchaseSummaryRespVO {
|
||||||
|
todayPrice: number // 今日采购金额
|
||||||
|
yesterdayPrice: number // 昨日采购金额
|
||||||
|
monthPrice: number // 本月采购金额
|
||||||
|
yearPrice: number // 今年采购金额
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 采购时间段统计 VO
|
||||||
|
export interface ErpPurchaseTimeSummaryRespVO {
|
||||||
|
time: string // 时间
|
||||||
|
price: number // 采购金额
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 采购统计 API
|
||||||
|
export const PurchaseStatisticsApi = {
|
||||||
|
// 获得采购统计
|
||||||
|
getPurchaseSummary: async (): Promise<ErpPurchaseSummaryRespVO> => {
|
||||||
|
return await request.get({ url: `/erp/purchase-statistics/summary` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获得采购时间段统计
|
||||||
|
getPurchaseTimeSummary: async (): Promise<ErpPurchaseTimeSummaryRespVO[]> => {
|
||||||
|
return await request.get({ url: `/erp/purchase-statistics/time-summary` })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 销售全局统计 VO
|
||||||
|
export interface ErpSaleSummaryRespVO {
|
||||||
|
todayPrice: number // 今日销售金额
|
||||||
|
yesterdayPrice: number // 昨日销售金额
|
||||||
|
monthPrice: number // 本月销售金额
|
||||||
|
yearPrice: number // 今年销售金额
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 销售时间段统计 VO
|
||||||
|
export interface ErpSaleTimeSummaryRespVO {
|
||||||
|
time: string // 时间
|
||||||
|
price: number // 销售金额
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 销售统计 API
|
||||||
|
export const SaleStatisticsApi = {
|
||||||
|
// 获得销售统计
|
||||||
|
getSaleSummary: async (): Promise<ErpSaleSummaryRespVO> => {
|
||||||
|
return await request.get({ url: `/erp/sale-statistics/summary` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获得销售时间段统计
|
||||||
|
getSaleTimeSummary: async (): Promise<ErpSaleTimeSummaryRespVO[]> => {
|
||||||
|
return await request.get({ url: `/erp/sale-statistics/time-summary` })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 库存盘点单 VO
|
||||||
|
export interface StockCheckVO {
|
||||||
|
id: number // 出库编号
|
||||||
|
no: string // 出库单号
|
||||||
|
outTime: Date // 出库时间
|
||||||
|
totalCount: number // 合计数量
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 库存盘点单 API
|
||||||
|
export const StockCheckApi = {
|
||||||
|
// 查询库存盘点单分页
|
||||||
|
getStockCheckPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/stock-check/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询库存盘点单详情
|
||||||
|
getStockCheck: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/stock-check/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增库存盘点单
|
||||||
|
createStockCheck: async (data: StockCheckVO) => {
|
||||||
|
return await request.post({ url: `/erp/stock-check/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改库存盘点单
|
||||||
|
updateStockCheck: async (data: StockCheckVO) => {
|
||||||
|
return await request.put({ url: `/erp/stock-check/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新库存盘点单的状态
|
||||||
|
updateStockCheckStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/stock-check/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除库存盘点单
|
||||||
|
deleteStockCheck: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/stock-check/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出库存盘点单 Excel
|
||||||
|
exportStockCheck: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/stock-check/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 其它入库单 VO
|
||||||
|
export interface StockInVO {
|
||||||
|
id: number // 入库编号
|
||||||
|
no: string // 入库单号
|
||||||
|
supplierId: number // 供应商编号
|
||||||
|
inTime: Date // 入库时间
|
||||||
|
totalCount: number // 合计数量
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 其它入库单 API
|
||||||
|
export const StockInApi = {
|
||||||
|
// 查询其它入库单分页
|
||||||
|
getStockInPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/stock-in/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询其它入库单详情
|
||||||
|
getStockIn: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/stock-in/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增其它入库单
|
||||||
|
createStockIn: async (data: StockInVO) => {
|
||||||
|
return await request.post({ url: `/erp/stock-in/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改其它入库单
|
||||||
|
updateStockIn: async (data: StockInVO) => {
|
||||||
|
return await request.put({ url: `/erp/stock-in/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新其它入库单的状态
|
||||||
|
updateStockInStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/stock-in/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除其它入库单
|
||||||
|
deleteStockIn: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/stock-in/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出其它入库单 Excel
|
||||||
|
exportStockIn: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/stock-in/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 库存调度单 VO
|
||||||
|
export interface StockMoveVO {
|
||||||
|
id: number // 出库编号
|
||||||
|
no: string // 出库单号
|
||||||
|
outTime: Date // 出库时间
|
||||||
|
totalCount: number // 合计数量
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 库存调度单 API
|
||||||
|
export const StockMoveApi = {
|
||||||
|
// 查询库存调度单分页
|
||||||
|
getStockMovePage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/stock-move/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询库存调度单详情
|
||||||
|
getStockMove: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/stock-move/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增库存调度单
|
||||||
|
createStockMove: async (data: StockMoveVO) => {
|
||||||
|
return await request.post({ url: `/erp/stock-move/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改库存调度单
|
||||||
|
updateStockMove: async (data: StockMoveVO) => {
|
||||||
|
return await request.put({ url: `/erp/stock-move/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新库存调度单的状态
|
||||||
|
updateStockMoveStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/stock-move/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除库存调度单
|
||||||
|
deleteStockMove: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/stock-move/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出库存调度单 Excel
|
||||||
|
exportStockMove: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/stock-move/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 其它出库单 VO
|
||||||
|
export interface StockOutVO {
|
||||||
|
id: number // 出库编号
|
||||||
|
no: string // 出库单号
|
||||||
|
customerId: number // 客户编号
|
||||||
|
outTime: Date // 出库时间
|
||||||
|
totalCount: number // 合计数量
|
||||||
|
totalPrice: number // 合计金额,单位:元
|
||||||
|
status: number // 状态
|
||||||
|
remark: string // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 其它出库单 API
|
||||||
|
export const StockOutApi = {
|
||||||
|
// 查询其它出库单分页
|
||||||
|
getStockOutPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/stock-out/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询其它出库单详情
|
||||||
|
getStockOut: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/stock-out/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增其它出库单
|
||||||
|
createStockOut: async (data: StockOutVO) => {
|
||||||
|
return await request.post({ url: `/erp/stock-out/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改其它出库单
|
||||||
|
updateStockOut: async (data: StockOutVO) => {
|
||||||
|
return await request.put({ url: `/erp/stock-out/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 更新其它出库单的状态
|
||||||
|
updateStockOutStatus: async (id: number, status: number) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/stock-out/update-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除其它出库单
|
||||||
|
deleteStockOut: async (ids: number[]) => {
|
||||||
|
return await request.delete({
|
||||||
|
url: `/erp/stock-out/delete`,
|
||||||
|
params: {
|
||||||
|
ids: ids.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出其它出库单 Excel
|
||||||
|
exportStockOut: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/stock-out/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 产品库存明细 VO
|
||||||
|
export interface StockRecordVO {
|
||||||
|
id: number // 编号
|
||||||
|
productId: number // 产品编号
|
||||||
|
warehouseId: number // 仓库编号
|
||||||
|
count: number // 出入库数量
|
||||||
|
totalCount: number // 总库存量
|
||||||
|
bizType: number // 业务类型
|
||||||
|
bizId: number // 业务编号
|
||||||
|
bizItemId: number // 业务项编号
|
||||||
|
bizNo: string // 业务单号
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 产品库存明细 API
|
||||||
|
export const StockRecordApi = {
|
||||||
|
// 查询产品库存明细分页
|
||||||
|
getStockRecordPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/stock-record/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品库存明细详情
|
||||||
|
getStockRecord: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/stock-record/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出产品库存明细 Excel
|
||||||
|
exportStockRecord: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/stock-record/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 产品库存 VO
|
||||||
|
export interface StockVO {
|
||||||
|
// 编号
|
||||||
|
id: number
|
||||||
|
// 产品编号
|
||||||
|
productId: number
|
||||||
|
// 仓库编号
|
||||||
|
warehouseId: number
|
||||||
|
// 库存数量
|
||||||
|
count: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 产品库存 API
|
||||||
|
export const StockApi = {
|
||||||
|
// 查询产品库存分页
|
||||||
|
getStockPage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/stock/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品库存详情
|
||||||
|
getStock: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/stock/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询产品库存详情
|
||||||
|
getStock2: async (productId: number, warehouseId: number) => {
|
||||||
|
return await request.get({ url: `/erp/stock/get`, params: { productId, warehouseId } })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获得产品库存数量
|
||||||
|
getStockCount: async (productId: number) => {
|
||||||
|
return await request.get({ url: `/erp/stock/get-count`, params: { productId } })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出产品库存 Excel
|
||||||
|
exportStock: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/stock/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// ERP 仓库 VO
|
||||||
|
export interface WarehouseVO {
|
||||||
|
id: number // 仓库编号
|
||||||
|
name: string // 仓库名称
|
||||||
|
address: string // 仓库地址
|
||||||
|
sort: number // 排序
|
||||||
|
remark: string // 备注
|
||||||
|
principal: string // 负责人
|
||||||
|
warehousePrice: number // 仓储费,单位:元
|
||||||
|
truckagePrice: number // 搬运费,单位:元
|
||||||
|
status: number // 开启状态
|
||||||
|
defaultStatus: boolean // 是否默认
|
||||||
|
}
|
||||||
|
|
||||||
|
// ERP 仓库 API
|
||||||
|
export const WarehouseApi = {
|
||||||
|
// 查询仓库分页
|
||||||
|
getWarehousePage: async (params: any) => {
|
||||||
|
return await request.get({ url: `/erp/warehouse/page`, params })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询仓库精简列表
|
||||||
|
getWarehouseSimpleList: async () => {
|
||||||
|
return await request.get({ url: `/erp/warehouse/simple-list` })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询仓库详情
|
||||||
|
getWarehouse: async (id: number) => {
|
||||||
|
return await request.get({ url: `/erp/warehouse/get?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增仓库
|
||||||
|
createWarehouse: async (data: WarehouseVO) => {
|
||||||
|
return await request.post({ url: `/erp/warehouse/create`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改仓库
|
||||||
|
updateWarehouse: async (data: WarehouseVO) => {
|
||||||
|
return await request.put({ url: `/erp/warehouse/update`, data })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改仓库默认状态
|
||||||
|
updateWarehouseDefaultStatus: async (id: number, defaultStatus: boolean) => {
|
||||||
|
return await request.put({
|
||||||
|
url: `/erp/warehouse/update-default-status`,
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
defaultStatus
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除仓库
|
||||||
|
deleteWarehouse: async (id: number) => {
|
||||||
|
return await request.delete({ url: `/erp/warehouse/delete?id=` + id })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出仓库 Excel
|
||||||
|
exportWarehouse: async (params) => {
|
||||||
|
return await request.download({ url: `/erp/warehouse/export-excel`, params })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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` })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询示例分类详情
|
// 查询示例分类详情
|
||||||
|
|||||||
@@ -6,6 +6,16 @@ export interface FilePageReqVO extends PageParam {
|
|||||||
createTime?: Date[]
|
createTime?: Date[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 文件预签名地址 Response VO
|
||||||
|
export interface FilePresignedUrlRespVO {
|
||||||
|
// 文件配置编号
|
||||||
|
configId: number
|
||||||
|
// 文件上传 URL
|
||||||
|
uploadUrl: string
|
||||||
|
// 文件 URL
|
||||||
|
url: string
|
||||||
|
}
|
||||||
|
|
||||||
// 查询文件列表
|
// 查询文件列表
|
||||||
export const getFilePage = (params: FilePageReqVO) => {
|
export const getFilePage = (params: FilePageReqVO) => {
|
||||||
return request.get({ url: '/infra/file/page', params })
|
return request.get({ url: '/infra/file/page', params })
|
||||||
@@ -15,3 +25,21 @@ export const getFilePage = (params: FilePageReqVO) => {
|
|||||||
export const deleteFile = (id: number) => {
|
export const deleteFile = (id: number) => {
|
||||||
return request.delete({ url: '/infra/file/delete?id=' + id })
|
return request.delete({ url: '/infra/file/delete?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取文件预签名地址
|
||||||
|
export const getFilePresignedUrl = (path: string) => {
|
||||||
|
return request.get<FilePresignedUrlRespVO>({
|
||||||
|
url: '/infra/file/presigned-url',
|
||||||
|
params: { path }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建文件
|
||||||
|
export const createFile = (data: any) => {
|
||||||
|
return request.post({ url: '/infra/file/create', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上传文件
|
||||||
|
export const updateFile = (data: any) => {
|
||||||
|
return request.upload({ url: '/infra/file/upload', data })
|
||||||
|
}
|
||||||
@@ -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 // 成本价
|
||||||
|
|||||||