liudong
2024-08-15 2542ae393e12cee28b2ffd81a3e6723386c58492
新建对话页面开发
1个文件已修改
13个文件已添加
4244 ■■■■ 已修改文件
src/assets/images/add.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/addbg.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/agent.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/agentbg.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/history.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/history1.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/history2.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/historybg.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/talk.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/talkbg.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sessionManager/components/chatMenu.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sessionManager/index.vue 1193 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sessionManager/index2.vue 838 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sessionManager/style/layout.css 2074 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/add.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723700302380" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5140" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M153.6 102.4a51.2 51.2 0 0 0-51.2 51.2v544a51.2 51.2 0 0 0 51.2 51.2h99.214222a51.2 51.2 0 0 1 51.2 51.2v89.969778l271.473778-135.736889c7.111111-3.555556 14.933333-5.404444 22.897778-5.432889H870.4a51.2 51.2 0 0 0 51.2-51.2V512a51.2 51.2 0 1 1 102.4 0v185.6a153.6 153.6 0 0 1-153.6 153.6h-259.896889L275.655111 1018.624a51.2 51.2 0 0 1-74.040889-45.795556v-121.628444H153.6a153.6 153.6 0 0 1-153.6-153.6V153.6A153.6 153.6 0 0 1 153.6 0h300.8a51.2 51.2 0 0 1 0 102.4H153.6zM771.214222 0a51.2 51.2 0 0 1 51.2 51.2v121.6h121.6a51.2 51.2 0 0 1 0 102.4h-121.6v121.6a51.2 51.2 0 1 1-102.4 0V275.2h-121.6a51.2 51.2 0 0 1 0-102.4h121.571556V51.2a51.2 51.2 0 0 1 51.2-51.2h0.028444z" fill="#000000" p-id="5141"></path></svg>
src/assets/images/addbg.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723701373447" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5573" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M153.599886 102.399924a51.199962 51.199962 0 0 0-51.199962 51.199962v543.999596a51.199962 51.199962 0 0 0 51.199962 51.199962h99.213926a51.199962 51.199962 0 0 1 51.199962 51.199962v89.969933l271.473799-135.736899a51.552962 51.552962 0 0 1 22.897983-5.432996H870.399354a51.199962 51.199962 0 0 0 51.199962-51.199962V511.99962a51.199962 51.199962 0 1 1 102.399924 0v185.599862a153.599886 153.599886 0 0 1-153.599886 153.599886H610.502547l-334.847752 167.423876a51.199962 51.199962 0 0 1-74.039945-45.795966V851.199368H153.599886A153.599886 153.599886 0 0 1 0 697.599482v-543.999596A153.599886 153.599886 0 0 1 153.599886 0h300.799777a51.199962 51.199962 0 0 1 0 102.399924H153.599886zM771.213428 0a51.199962 51.199962 0 0 1 51.199962 51.199962v121.59991h121.599909a51.199962 51.199962 0 0 1 0 102.399924h-121.599909v121.59991a51.199962 51.199962 0 1 1-102.399924 0V275.199796h-121.59991a51.199962 51.199962 0 0 1 0-102.399924h121.57191V51.199962a51.199962 51.199962 0 0 1 51.199962-51.199962h0.028z" p-id="5574" fill="#707070"></path></svg>
src/assets/images/agent.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723702163522" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13119" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><path d="M897.1264 510.5152c3.9936-5.12 7.7824-10.3936 11.4688-15.5648 65.28-91.9552 81.408-176.896 45.5168-239.36-35.9424-62.464-117.6064-91.0336-229.888-80.7424-6.5024 0.5632-13.056 1.3824-19.6608 2.2016-2.56-6.144-5.2736-12.288-7.8848-18.176C649.6768 56.32 584.0384 0 511.9488 0 439.9104 0 374.3744 56.6272 327.3728 158.976c-2.7136 5.8368-5.2224 11.8784-7.8848 17.92-6.5024-0.768-13.0048-1.536-19.456-2.1504-112.128-10.496-193.9456 18.0736-229.888 80.5376-35.9936 62.464-19.8656 147.4048 45.312 239.36 3.6864 5.12 7.5776 10.3936 11.4688 15.5136-3.9936 5.12-7.7824 10.4448-11.4688 15.5648-65.28 91.9552-81.5104 176.9472-45.5168 239.36C101.0688 819.2 166.5024 847.872 256.256 847.872c13.9264 0 28.4672-0.6656 43.4688-2.048 6.5024-0.5632 13.0048-1.3824 19.6608-2.1504 2.56 6.144 5.2736 12.2368 7.8848 18.176 47.0016 102.4512 112.64 158.8224 184.6784 158.8224 72.0896 0 137.5744-56.32 184.7296-158.8224 2.7136-5.8368 5.2224-11.9296 7.8848-17.92a490.3936 490.3936 0 0 0 63.3344 4.352c89.6512-0.0512 154.88-28.7744 186.0608-82.6368 36.0448-62.464 19.968-147.4048-45.2608-239.36a505.7536 505.7536 0 0 0-11.5712-15.7696z m-603.3408 270.336c-84.1728 7.7824-145.2544-9.8304-167.424-48.3328-22.2208-38.5536-6.8608-100.1984 42.1888-169.0624l1.6896-2.4064a850.176 850.176 0 0 0 99.1744 89.344c6.144 45.9776 15.5648 89.6 27.648 130.1504l-3.2768 0.3072z m-32.512-221.8496a738.816 738.816 0 0 1-49.408-48.6912c15.104-16.4864 31.5904-32.768 49.408-48.7424-0.6656 16.128-1.1264 32.3584-1.1264 48.8448 0 16.2304 0.4608 32.4608 1.1264 48.64z m8.2432-188.8256c-36.864 28.3648-70.144 58.4704-99.1744 89.2416-0.512-0.8192-1.2288-1.6384-1.6896-2.4064-48.9472-69.12-64.256-130.7136-42.0864-169.1648 18.7392-32.4608 65.024-50.0736 129.536-50.0736a398.5408 398.5408 0 0 1 41.1136 2.1504 850.432 850.432 0 0 0-27.6992 130.2528z m409.7536-52.8384a1029.888 1029.888 0 0 0-83.8144-48.384c22.528-7.2704 44.6976-13.312 66.304-18.176 6.656 20.8384 12.4928 43.008 17.5104 66.56z m-167.168-252.0576c44.1344 0 90.7776 45.6704 126.464 124.1088-41.0624 9.728-83.456 23.4496-126.2592 40.96a850.9952 850.9952 0 0 0-126.464-41.216c35.4304-78.336 82.0736-123.8528 126.2592-123.8528zM362.2912 250.5728c21.7088 4.8128 43.8784 10.8544 66.56 18.2784a1114.2656 1114.2656 0 0 0-84.0704 48.384c5.0176-23.552 10.8544-45.8752 17.5104-66.6624z m-17.5104 452.7616a1029.888 1029.888 0 0 0 83.8144 48.384c-22.528 7.3216-44.6976 13.3632-66.304 18.176-6.656-20.6848-12.4928-43.008-17.5104-66.56z m167.3216 252.16c-44.1856 0-90.8288-45.6192-126.464-124.0576 41.0112-9.728 83.456-23.4496 126.208-40.96 42.9056 17.6128 85.4528 31.4368 126.464 41.1648-35.5328 78.2336-82.176 123.904-126.208 123.904z m149.6576-185.344a692.6848 692.6848 0 0 1-66.56-18.3296 1114.2656 1114.2656 0 0 0 84.0704-48.384c-5.0176 23.552-10.8544 45.8752-17.5104 66.6624z m31.488-154.9824c-27.5968 19.968-57.088 39.1168-88.064 56.9344-30.8736 17.8688-62.208 33.6384-93.3376 47.4624a995.4304 995.4304 0 0 1-181.0432-104.6528 985.6 985.6 0 0 1-5.4784-104.6016c0-36.608 1.9456-71.6288 5.4784-104.7552 27.5968-20.0192 57.088-39.1168 88.064-56.9856a995.7376 995.7376 0 0 1 93.3376-47.4624 995.4304 995.4304 0 0 1 181.0432 104.6528c3.5328 33.1776 5.4784 68.1472 5.4784 104.6528 0 36.608-1.9456 71.4752-5.4784 104.7552z m37.0176-375.3472c13.056-1.28 25.6-1.8432 37.5296-1.8432 64.7168 0 111.1552 17.6128 129.8944 50.176 22.2208 38.6048 6.8608 100.1984-42.1888 169.0624l-1.6896 2.4064a850.176 850.176 0 0 0-99.1744-89.2928 848.896 848.896 0 0 0-27.648-130.1504l3.2768-0.3584z m32.512 221.952c17.7152 16.0256 34.304 32.256 49.408 48.7424-15.104 16.4864-31.5904 32.7168-49.408 48.7424 0.6656-16.128 1.1264-32.4096 1.1264-48.8448 0-16.384-0.3584-32.6144-1.1264-48.64z m134.7072 271.1552c-22.1696 38.5536-83.2512 56.064-167.424 48.128l-3.2256-0.3072c12.1344-40.448 21.504-84.1728 27.648-130.1504 36.864-28.3648 70.144-58.4192 99.2256-89.1904 0.512 0.8192 1.2288 1.5872 1.6896 2.4064 49.0496 68.9664 64.256 130.56 42.0864 169.1136z" fill="#707070" p-id="13120"></path></svg>
src/assets/images/agentbg.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723702163522" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13119" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><path d="M897.1264 510.5152c3.9936-5.12 7.7824-10.3936 11.4688-15.5648 65.28-91.9552 81.408-176.896 45.5168-239.36-35.9424-62.464-117.6064-91.0336-229.888-80.7424-6.5024 0.5632-13.056 1.3824-19.6608 2.2016-2.56-6.144-5.2736-12.288-7.8848-18.176C649.6768 56.32 584.0384 0 511.9488 0 439.9104 0 374.3744 56.6272 327.3728 158.976c-2.7136 5.8368-5.2224 11.8784-7.8848 17.92-6.5024-0.768-13.0048-1.536-19.456-2.1504-112.128-10.496-193.9456 18.0736-229.888 80.5376-35.9936 62.464-19.8656 147.4048 45.312 239.36 3.6864 5.12 7.5776 10.3936 11.4688 15.5136-3.9936 5.12-7.7824 10.4448-11.4688 15.5648-65.28 91.9552-81.5104 176.9472-45.5168 239.36C101.0688 819.2 166.5024 847.872 256.256 847.872c13.9264 0 28.4672-0.6656 43.4688-2.048 6.5024-0.5632 13.0048-1.3824 19.6608-2.1504 2.56 6.144 5.2736 12.2368 7.8848 18.176 47.0016 102.4512 112.64 158.8224 184.6784 158.8224 72.0896 0 137.5744-56.32 184.7296-158.8224 2.7136-5.8368 5.2224-11.9296 7.8848-17.92a490.3936 490.3936 0 0 0 63.3344 4.352c89.6512-0.0512 154.88-28.7744 186.0608-82.6368 36.0448-62.464 19.968-147.4048-45.2608-239.36a505.7536 505.7536 0 0 0-11.5712-15.7696z m-603.3408 270.336c-84.1728 7.7824-145.2544-9.8304-167.424-48.3328-22.2208-38.5536-6.8608-100.1984 42.1888-169.0624l1.6896-2.4064a850.176 850.176 0 0 0 99.1744 89.344c6.144 45.9776 15.5648 89.6 27.648 130.1504l-3.2768 0.3072z m-32.512-221.8496a738.816 738.816 0 0 1-49.408-48.6912c15.104-16.4864 31.5904-32.768 49.408-48.7424-0.6656 16.128-1.1264 32.3584-1.1264 48.8448 0 16.2304 0.4608 32.4608 1.1264 48.64z m8.2432-188.8256c-36.864 28.3648-70.144 58.4704-99.1744 89.2416-0.512-0.8192-1.2288-1.6384-1.6896-2.4064-48.9472-69.12-64.256-130.7136-42.0864-169.1648 18.7392-32.4608 65.024-50.0736 129.536-50.0736a398.5408 398.5408 0 0 1 41.1136 2.1504 850.432 850.432 0 0 0-27.6992 130.2528z m409.7536-52.8384a1029.888 1029.888 0 0 0-83.8144-48.384c22.528-7.2704 44.6976-13.312 66.304-18.176 6.656 20.8384 12.4928 43.008 17.5104 66.56z m-167.168-252.0576c44.1344 0 90.7776 45.6704 126.464 124.1088-41.0624 9.728-83.456 23.4496-126.2592 40.96a850.9952 850.9952 0 0 0-126.464-41.216c35.4304-78.336 82.0736-123.8528 126.2592-123.8528zM362.2912 250.5728c21.7088 4.8128 43.8784 10.8544 66.56 18.2784a1114.2656 1114.2656 0 0 0-84.0704 48.384c5.0176-23.552 10.8544-45.8752 17.5104-66.6624z m-17.5104 452.7616a1029.888 1029.888 0 0 0 83.8144 48.384c-22.528 7.3216-44.6976 13.3632-66.304 18.176-6.656-20.6848-12.4928-43.008-17.5104-66.56z m167.3216 252.16c-44.1856 0-90.8288-45.6192-126.464-124.0576 41.0112-9.728 83.456-23.4496 126.208-40.96 42.9056 17.6128 85.4528 31.4368 126.464 41.1648-35.5328 78.2336-82.176 123.904-126.208 123.904z m149.6576-185.344a692.6848 692.6848 0 0 1-66.56-18.3296 1114.2656 1114.2656 0 0 0 84.0704-48.384c-5.0176 23.552-10.8544 45.8752-17.5104 66.6624z m31.488-154.9824c-27.5968 19.968-57.088 39.1168-88.064 56.9344-30.8736 17.8688-62.208 33.6384-93.3376 47.4624a995.4304 995.4304 0 0 1-181.0432-104.6528 985.6 985.6 0 0 1-5.4784-104.6016c0-36.608 1.9456-71.6288 5.4784-104.7552 27.5968-20.0192 57.088-39.1168 88.064-56.9856a995.7376 995.7376 0 0 1 93.3376-47.4624 995.4304 995.4304 0 0 1 181.0432 104.6528c3.5328 33.1776 5.4784 68.1472 5.4784 104.6528 0 36.608-1.9456 71.4752-5.4784 104.7552z m37.0176-375.3472c13.056-1.28 25.6-1.8432 37.5296-1.8432 64.7168 0 111.1552 17.6128 129.8944 50.176 22.2208 38.6048 6.8608 100.1984-42.1888 169.0624l-1.6896 2.4064a850.176 850.176 0 0 0-99.1744-89.2928 848.896 848.896 0 0 0-27.648-130.1504l3.2768-0.3584z m32.512 221.952c17.7152 16.0256 34.304 32.256 49.408 48.7424-15.104 16.4864-31.5904 32.7168-49.408 48.7424 0.6656-16.128 1.1264-32.4096 1.1264-48.8448 0-16.384-0.3584-32.6144-1.1264-48.64z m134.7072 271.1552c-22.1696 38.5536-83.2512 56.064-167.424 48.128l-3.2256-0.3072c12.1344-40.448 21.504-84.1728 27.648-130.1504 36.864-28.3648 70.144-58.4192 99.2256-89.1904 0.512 0.8192 1.2288 1.5872 1.6896 2.4064 49.0496 68.9664 64.256 130.56 42.0864 169.1136z" fill="#2c2c2c" p-id="13120"></path></svg>
src/assets/images/history.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723701570374" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7581" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M798.5152 707.9936v-77.0048c0-12.288-9.8304-22.7328-22.1184-22.7328-13.9264 0-24.1664 11.4688-24.1664 25.3952V739.328c0 8.192 6.7584 14.9504 14.9504 14.9504h83.5584c13.1072 0 24.1664-10.6496 23.7568-23.7568-0.4096-13.7216-11.6736-22.528-25.3952-22.528h-50.5856z m-502.3744-119.1936c-16.384 0-29.2864 13.9264-27.8528 30.5152 1.2288 14.5408 13.9264 25.3952 28.672 25.3952h142.9504c14.5408 0 27.2384-10.8544 28.672-25.3952 1.4336-16.5888-11.4688-30.5152-27.8528-30.5152h-144.5888z m0-231.6288h309.4528c15.7696 0 28.4672-12.9024 28.0576-28.8768-0.4096-14.9504-13.7216-27.2384-28.672-27.2384H296.7552c-14.7456 0-27.8528 11.8784-28.672 26.624-0.4096 7.9872 2.6624 15.5648 8.192 21.2992 5.3248 5.12 12.288 8.192 19.8656 8.192z m241.4592 113.0496c0-15.36-12.4928-28.0576-28.0576-28.0576H296.7552c-14.5408 0-27.2384 10.8544-28.4672 25.3952-1.4336 16.5888 11.6736 30.5152 28.0576 30.5152h213.4016c15.36 0.4096 27.8528-12.288 27.8528-27.8528z m0 0" p-id="7582" fill="#2c2c2c"></path><path d="M568.5248 846.4384H248.0128c-24.1664 0-44.032-19.8656-44.032-44.032V212.1728c0-24.1664 19.8656-44.032 44.032-44.032h461.0048c24.1664 0 44.032 19.8656 44.032 44.032v223.0272c0 15.5648 11.6736 28.8768 27.0336 30.3104 17.6128 1.6384 32.3584-12.288 32.3584-29.696V212.1728c0-57.1392-46.4896-103.6288-103.424-103.6288H248.0128c-55.296 0-100.5568 43.008-103.424 98.0992v601.4976c2.8672 54.8864 48.3328 97.8944 103.424 97.8944h319.8976c14.9504 0 28.0576-10.6496 30.1056-25.3952 2.6624-18.432-11.6736-34.2016-29.4912-34.2016z m0 0" p-id="7583" fill="#2c2c2c"></path><path d="M782.7456 502.1696c-111.8208 0-202.752 91.3408-201.9328 203.5712 0.8192 109.7728 90.5216 199.4752 200.4992 200.4992 112.0256 0.8192 203.5712-90.112 203.5712-201.9328-0.2048-111.616-90.7264-202.1376-202.1376-202.1376z m146.432 201.9328c0 81.5104-66.7648 147.456-148.48 146.432-78.848-1.024-143.1552-65.3312-144.384-143.9744-1.2288-81.92 64.9216-148.8896 146.432-148.8896 80.6912 0 146.432 65.536 146.432 146.432z m0 0" p-id="7584" fill="#2c2c2c"></path></svg>
src/assets/images/history1.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723702451417" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15353" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><path d="M798.5152 707.9936v-77.0048c0-12.288-9.8304-22.7328-22.1184-22.7328-13.9264 0-24.1664 11.4688-24.1664 25.3952V739.328c0 8.192 6.7584 14.9504 14.9504 14.9504h83.5584c13.1072 0 24.1664-10.6496 23.7568-23.7568-0.4096-13.7216-11.6736-22.528-25.3952-22.528h-50.5856z m-502.3744-119.1936c-16.384 0-29.2864 13.9264-27.8528 30.5152 1.2288 14.5408 13.9264 25.3952 28.672 25.3952h142.9504c14.5408 0 27.2384-10.8544 28.672-25.3952 1.4336-16.5888-11.4688-30.5152-27.8528-30.5152h-144.5888z m0-231.6288h309.4528c15.7696 0 28.4672-12.9024 28.0576-28.8768-0.4096-14.9504-13.7216-27.2384-28.672-27.2384H296.7552c-14.7456 0-27.8528 11.8784-28.672 26.624-0.4096 7.9872 2.6624 15.5648 8.192 21.2992 5.3248 5.12 12.288 8.192 19.8656 8.192z m241.4592 113.0496c0-15.36-12.4928-28.0576-28.0576-28.0576H296.7552c-14.5408 0-27.2384 10.8544-28.4672 25.3952-1.4336 16.5888 11.6736 30.5152 28.0576 30.5152h213.4016c15.36 0.4096 27.8528-12.288 27.8528-27.8528z m0 0" p-id="15354" fill="#2c2c2c"></path><path d="M568.5248 846.4384H248.0128c-24.1664 0-44.032-19.8656-44.032-44.032V212.1728c0-24.1664 19.8656-44.032 44.032-44.032h461.0048c24.1664 0 44.032 19.8656 44.032 44.032v223.0272c0 15.5648 11.6736 28.8768 27.0336 30.3104 17.6128 1.6384 32.3584-12.288 32.3584-29.696V212.1728c0-57.1392-46.4896-103.6288-103.424-103.6288H248.0128c-55.296 0-100.5568 43.008-103.424 98.0992v601.4976c2.8672 54.8864 48.3328 97.8944 103.424 97.8944h319.8976c14.9504 0 28.0576-10.6496 30.1056-25.3952 2.6624-18.432-11.6736-34.2016-29.4912-34.2016z m0 0" p-id="15355" fill="#2c2c2c"></path><path d="M782.7456 502.1696c-111.8208 0-202.752 91.3408-201.9328 203.5712 0.8192 109.7728 90.5216 199.4752 200.4992 200.4992 112.0256 0.8192 203.5712-90.112 203.5712-201.9328-0.2048-111.616-90.7264-202.1376-202.1376-202.1376z m146.432 201.9328c0 81.5104-66.7648 147.456-148.48 146.432-78.848-1.024-143.1552-65.3312-144.384-143.9744-1.2288-81.92 64.9216-148.8896 146.432-148.8896 80.6912 0 146.432 65.536 146.432 146.432z m0 0" p-id="15356" fill="#2c2c2c"></path></svg>
src/assets/images/history2.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723702451417" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15353" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><path d="M798.5152 707.9936v-77.0048c0-12.288-9.8304-22.7328-22.1184-22.7328-13.9264 0-24.1664 11.4688-24.1664 25.3952V739.328c0 8.192 6.7584 14.9504 14.9504 14.9504h83.5584c13.1072 0 24.1664-10.6496 23.7568-23.7568-0.4096-13.7216-11.6736-22.528-25.3952-22.528h-50.5856z m-502.3744-119.1936c-16.384 0-29.2864 13.9264-27.8528 30.5152 1.2288 14.5408 13.9264 25.3952 28.672 25.3952h142.9504c14.5408 0 27.2384-10.8544 28.672-25.3952 1.4336-16.5888-11.4688-30.5152-27.8528-30.5152h-144.5888z m0-231.6288h309.4528c15.7696 0 28.4672-12.9024 28.0576-28.8768-0.4096-14.9504-13.7216-27.2384-28.672-27.2384H296.7552c-14.7456 0-27.8528 11.8784-28.672 26.624-0.4096 7.9872 2.6624 15.5648 8.192 21.2992 5.3248 5.12 12.288 8.192 19.8656 8.192z m241.4592 113.0496c0-15.36-12.4928-28.0576-28.0576-28.0576H296.7552c-14.5408 0-27.2384 10.8544-28.4672 25.3952-1.4336 16.5888 11.6736 30.5152 28.0576 30.5152h213.4016c15.36 0.4096 27.8528-12.288 27.8528-27.8528z m0 0" p-id="15354" fill="#707070"></path><path d="M568.5248 846.4384H248.0128c-24.1664 0-44.032-19.8656-44.032-44.032V212.1728c0-24.1664 19.8656-44.032 44.032-44.032h461.0048c24.1664 0 44.032 19.8656 44.032 44.032v223.0272c0 15.5648 11.6736 28.8768 27.0336 30.3104 17.6128 1.6384 32.3584-12.288 32.3584-29.696V212.1728c0-57.1392-46.4896-103.6288-103.424-103.6288H248.0128c-55.296 0-100.5568 43.008-103.424 98.0992v601.4976c2.8672 54.8864 48.3328 97.8944 103.424 97.8944h319.8976c14.9504 0 28.0576-10.6496 30.1056-25.3952 2.6624-18.432-11.6736-34.2016-29.4912-34.2016z m0 0" p-id="15355" fill="#707070"></path><path d="M782.7456 502.1696c-111.8208 0-202.752 91.3408-201.9328 203.5712 0.8192 109.7728 90.5216 199.4752 200.4992 200.4992 112.0256 0.8192 203.5712-90.112 203.5712-201.9328-0.2048-111.616-90.7264-202.1376-202.1376-202.1376z m146.432 201.9328c0 81.5104-66.7648 147.456-148.48 146.432-78.848-1.024-143.1552-65.3312-144.384-143.9744-1.2288-81.92 64.9216-148.8896 146.432-148.8896 80.6912 0 146.432 65.536 146.432 146.432z m0 0" p-id="15356" fill="#707070"></path></svg>
src/assets/images/historybg.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723701570374" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7581" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M798.5152 707.9936v-77.0048c0-12.288-9.8304-22.7328-22.1184-22.7328-13.9264 0-24.1664 11.4688-24.1664 25.3952V739.328c0 8.192 6.7584 14.9504 14.9504 14.9504h83.5584c13.1072 0 24.1664-10.6496 23.7568-23.7568-0.4096-13.7216-11.6736-22.528-25.3952-22.528h-50.5856z m-502.3744-119.1936c-16.384 0-29.2864 13.9264-27.8528 30.5152 1.2288 14.5408 13.9264 25.3952 28.672 25.3952h142.9504c14.5408 0 27.2384-10.8544 28.672-25.3952 1.4336-16.5888-11.4688-30.5152-27.8528-30.5152h-144.5888z m0-231.6288h309.4528c15.7696 0 28.4672-12.9024 28.0576-28.8768-0.4096-14.9504-13.7216-27.2384-28.672-27.2384H296.7552c-14.7456 0-27.8528 11.8784-28.672 26.624-0.4096 7.9872 2.6624 15.5648 8.192 21.2992 5.3248 5.12 12.288 8.192 19.8656 8.192z m241.4592 113.0496c0-15.36-12.4928-28.0576-28.0576-28.0576H296.7552c-14.5408 0-27.2384 10.8544-28.4672 25.3952-1.4336 16.5888 11.6736 30.5152 28.0576 30.5152h213.4016c15.36 0.4096 27.8528-12.288 27.8528-27.8528z m0 0" p-id="7582" fill="#707070"></path><path d="M568.5248 846.4384H248.0128c-24.1664 0-44.032-19.8656-44.032-44.032V212.1728c0-24.1664 19.8656-44.032 44.032-44.032h461.0048c24.1664 0 44.032 19.8656 44.032 44.032v223.0272c0 15.5648 11.6736 28.8768 27.0336 30.3104 17.6128 1.6384 32.3584-12.288 32.3584-29.696V212.1728c0-57.1392-46.4896-103.6288-103.424-103.6288H248.0128c-55.296 0-100.5568 43.008-103.424 98.0992v601.4976c2.8672 54.8864 48.3328 97.8944 103.424 97.8944h319.8976c14.9504 0 28.0576-10.6496 30.1056-25.3952 2.6624-18.432-11.6736-34.2016-29.4912-34.2016z m0 0" p-id="7583" fill="#707070"></path><path d="M782.7456 502.1696c-111.8208 0-202.752 91.3408-201.9328 203.5712 0.8192 109.7728 90.5216 199.4752 200.4992 200.4992 112.0256 0.8192 203.5712-90.112 203.5712-201.9328-0.2048-111.616-90.7264-202.1376-202.1376-202.1376z m146.432 201.9328c0 81.5104-66.7648 147.456-148.48 146.432-78.848-1.024-143.1552-65.3312-144.384-143.9744-1.2288-81.92 64.9216-148.8896 146.432-148.8896 80.6912 0 146.432 65.536 146.432 146.432z m0 0" p-id="7584" fill="#707070"></path></svg>
src/assets/images/talk.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723703182973" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="30378" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><path d="M512 9.309091c273.128727 0 495.429818 217.832727 502.504727 489.285818l0.186182 14.149818c0 83.642182-17.314909 152.436364-52.782545 205.637818a37.236364 37.236364 0 0 1-61.998546-41.332363c24.669091-36.957091 38.260364-86.621091 40.075637-149.550546L940.218182 512a428.218182 428.218182 0 0 0-856.250182-12.427636L83.781818 512v232.727273a195.490909 195.490909 0 0 0 185.716364 195.258182L279.272727 940.218182h231.610182c59.019636 0 118.085818-7.912727 177.338182-23.738182a37.236364 37.236364 0 0 1 19.223273 71.912727 761.949091 761.949091 0 0 1-171.985455 25.879273l-24.576 0.418909H279.272727a269.963636 269.963636 0 0 1-269.777454-259.630545L9.309091 744.727273v-232.727273C9.309091 234.356364 234.356364 9.309091 512 9.309091z m50.269091 515.258182a37.236364 37.236364 0 0 1 4.654545 74.193454l-4.654545 0.279273H286.301091a37.236364 37.236364 0 0 1-4.654546-74.146909l4.654546-0.279273h275.874909z m139.636364-186.181818a37.236364 37.236364 0 0 1 4.654545 74.193454l-4.654545 0.279273H286.301091a37.236364 37.236364 0 0 1-4.654546-74.146909l4.654546-0.279273h415.511273z" fill="#707070" p-id="30379"></path><path d="M847.872 734.487273c21.410909 0 38.772364 17.361455 38.772364 38.772363v38.772364h38.772363a38.772364 38.772364 0 1 1 0 77.591273h-38.772363v38.818909a38.772364 38.772364 0 0 1-77.591273 0v-38.818909h-38.772364a38.772364 38.772364 0 1 1 0-77.544728l38.772364-0.046545v-38.772364c0-21.410909 17.361455-38.772364 38.818909-38.772363z" fill="#707070" p-id="30380"></path></svg>
src/assets/images/talkbg.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723703182973" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="30378" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><path d="M512 9.309091c273.128727 0 495.429818 217.832727 502.504727 489.285818l0.186182 14.149818c0 83.642182-17.314909 152.436364-52.782545 205.637818a37.236364 37.236364 0 0 1-61.998546-41.332363c24.669091-36.957091 38.260364-86.621091 40.075637-149.550546L940.218182 512a428.218182 428.218182 0 0 0-856.250182-12.427636L83.781818 512v232.727273a195.490909 195.490909 0 0 0 185.716364 195.258182L279.272727 940.218182h231.610182c59.019636 0 118.085818-7.912727 177.338182-23.738182a37.236364 37.236364 0 0 1 19.223273 71.912727 761.949091 761.949091 0 0 1-171.985455 25.879273l-24.576 0.418909H279.272727a269.963636 269.963636 0 0 1-269.777454-259.630545L9.309091 744.727273v-232.727273C9.309091 234.356364 234.356364 9.309091 512 9.309091z m50.269091 515.258182a37.236364 37.236364 0 0 1 4.654545 74.193454l-4.654545 0.279273H286.301091a37.236364 37.236364 0 0 1-4.654546-74.146909l4.654546-0.279273h275.874909z m139.636364-186.181818a37.236364 37.236364 0 0 1 4.654545 74.193454l-4.654545 0.279273H286.301091a37.236364 37.236364 0 0 1-4.654546-74.146909l4.654546-0.279273h415.511273z" fill="#2c2c2c" p-id="30379"></path><path d="M847.872 734.487273c21.410909 0 38.772364 17.361455 38.772364 38.772363v38.772364h38.772363a38.772364 38.772364 0 1 1 0 77.591273h-38.772363v38.818909a38.772364 38.772364 0 0 1-77.591273 0v-38.818909h-38.772364a38.772364 38.772364 0 1 1 0-77.544728l38.772364-0.046545v-38.772364c0-21.410909 17.361455-38.772364 38.818909-38.772363z" fill="#2c2c2c" p-id="30380"></path></svg>
src/views/sessionManager/components/chatMenu.vue
New file
@@ -0,0 +1,129 @@
<template>
  <div class="layoutNavMoveCenter">
    <div class="layoutNavMove___j5ets">
      <div class="myAgent___djnd_ myAgentAnim myAgentlight___yK7Gk">
<!--        <div data-testid="msh-sidebar-main" class="myAgentHome___PG6IZ"></div>-->
        <div class="myAgentLine___Isl6E"></div>
        <div class="myAgentTool___Y1_mC" data-testid="msh-sidebar-new">
          <div class="myAgentToolIcon___gaAKI myAgentToolIconNew___DBZrW">
            <img
            src="../../../assets/images/talkbg.svg"
            style="width: 24px"
            alt=""></div>
        </div>
        <div data-testid="msh-sidebar-history" class="myAgentTool___Y1_mC">
          <div class="myAgentToolIcon___gaAKI myAgentToolIconHistory___GTLWk">
            <img
              src="../../../assets/images/history.svg"
              style="width: 24px"
            alt="">
          </div>
        </div>
        <div data-testid="msh-sidebar-square" class="myAgentTool___Y1_mC myAgentToolSquare___dbLm1">
          <div class="myAgentToolIcon___gaAKI myAgentToolIconSquare___Rj1o_"><img
            src="../../../assets/images/agentbg.svg"
            style="width: 24px"
            alt=""></div>
        </div>
        <div class="myAgentLine___Isl6E" style="margin-top: 4px;"></div>
        <div class="myAgentBox___zrCit myAgentBoxhistoryconph28t7lagf3d1bhq0">
          <div class="myAgentBoxImg___Mgu9e">
            <div class="myAgentBoxImgLayout___u69B_">
              <div class="MuiBox-root css-5nczy5"><img
                src="https://kimi-img.moonshot.cn/prod-chat-kimi/avatar/kimiplus/academic.png" alt=""
                style="border-radius: 50%; width: 100%; height: 100%;"></div>
              <span class="myAgentBoxImgLayoutTip___xHV4m">学术搜索</span></div>
            <div data-testid="msh-sidebar-bot-delete" class="myAgentBoxImgDelete___qXZuq">
              <div class="myAgentBoxImgDeleteInner____Hawc">从侧边栏移除</div>
            </div>
          </div>
        </div>
        <div class="myAgentBox___zrCit myAgentBoxhistoryconpgu0t7lagecg63730">
          <div class="myAgentBoxImg___Mgu9e">
            <div class="myAgentBoxImgLayout___u69B_">
              <div class="MuiBox-root css-5nczy5"><img
                src="https://kimi-img.moonshot.cn/prod-chat-kimi/avatar/kimiplus/paper_rewrite.png" alt=""
                style="border-radius: 50%; width: 100%; height: 100%;"></div>
              <span class="myAgentBoxImgLayoutTip___xHV4m">论文改写</span></div>
            <div data-testid="msh-sidebar-bot-delete" class="myAgentBoxImgDelete___qXZuq">
              <div class="myAgentBoxImgDeleteInner____Hawc">从侧边栏移除</div>
            </div>
          </div>
        </div>
        <div class="myAgentBox___zrCit myAgentBoxhistoryconpg00t7lagbbsfqkq0">
          <div class="myAgentBoxImg___Mgu9e">
            <div class="myAgentBoxImgLayout___u69B_">
              <div class="MuiBox-root css-5nczy5"><img
                src="https://kimi-img.moonshot.cn/prod-chat-kimi/avatar/kimiplus/prompt.png" alt=""
                style="border-radius: 50%; width: 100%; height: 100%;"></div>
              <span class="myAgentBoxImgLayoutTip___xHV4m">提示词专家</span></div>
            <div data-testid="msh-sidebar-bot-delete" class="myAgentBoxImgDelete___qXZuq">
              <div class="myAgentBoxImgDeleteInner____Hawc">从侧边栏移除</div>
            </div>
          </div>
        </div>
        <div class="myAgentBox___zrCit myAgentBoxhistoryconpgbgt7lagcavlq340">
          <div class="myAgentBoxImg___Mgu9e">
            <div class="myAgentBoxImgLayout___u69B_">
              <div class="MuiBox-root css-5nczy5"><img
                src="https://kimi-img.moonshot.cn/prod-chat-kimi/avatar/kimiplus/taro.png" alt=""
                style="border-radius: 50%; width: 100%; height: 100%;"></div>
              <span class="myAgentBoxImgLayoutTip___xHV4m">塔罗师</span></div>
            <div data-testid="msh-sidebar-bot-delete" class="myAgentBoxImgDelete___qXZuq">
              <div class="myAgentBoxImgDeleteInner____Hawc">从侧边栏移除</div>
            </div>
          </div>
        </div>
        <div class="myAgentBox___zrCit myAgentBoxhistoryconpgbot7lagcavlq34g">
          <div class="myAgentBoxImg___Mgu9e">
            <div class="myAgentBoxImgLayout___u69B_">
              <div class="MuiBox-root css-5nczy5"><img
                src="https://kimi-img.moonshot.cn/prod-chat-kimi/avatar/kimiplus/guess.png" alt=""
                style="border-radius: 50%; width: 100%; height: 100%;"></div>
              <span class="myAgentBoxImgLayoutTip___xHV4m">猜猜我在想谁</span></div>
            <div data-testid="msh-sidebar-bot-delete" class="myAgentBoxImgDelete___qXZuq">
              <div class="myAgentBoxImgDeleteInner____Hawc">从侧边栏移除</div>
            </div>
          </div>
        </div>
        <div class="myAgentLine___Isl6E" style="margin-top: 4px;"></div>
      </div>
    </div>
  </div>
</template>
<script setup lang="ts">
import {
  IconClose,
  IconSearch,
  IconTiktokColor
} from "@arco-design/web-vue/es/icon";
import { useAppStore, useUserStore } from "@/store";
import { computed, nextTick, onMounted, watch, reactive, ref } from "vue";
import { Message } from "@arco-design/web-vue";
import { EventSourceParserStream } from "eventsource-parser/stream";
import {
  chatApi,
  getDialogListApi,
  getSessionDetailsApi,
  sessionListApi
} from "@/api/session";
</script>
<style scoped lang="less">
  @import "@/views/sessionManager/style/layout.css";
  .layoutNavMoveCenter {
    display: flex;
    justify-content: center;
    align-items: center;
    height: calc(100vh - 160px); /* 或者指定高度 */
    position: relative;
  }
  .layoutNavMove___j5ets{
  }
</style>
src/views/sessionManager/index.vue
@@ -5,143 +5,146 @@
      @addSession="addSession"
      :dialogId="dialogId"
    ></AddSession>
    <a-card class="top-title">AI会话记录</a-card>
    <a-row :gutter="[5, 5]" style="margin-top: 3px">
      <a-col :span="6">
        <a-card class="left-select">
          <a-select
            v-model="selectValue"
            :options="dialogs"
            :field-names="fieldNames"
            @change="dialogChange"
          >
          </a-select>
        </a-card>
        <a-card style="height: 50px">
          <template #cover>
            <div style="display: flex; justify-content: space-between">
              <a-button
                type="primary"
                shape="round"
                class="card-btn-1"
                @click="modalObj.add = true"
              >
                +新建会话
              </a-button>
              <!-- <a-button type="text" shape="circle" class="card-btn-2">
                <icon-search />
              </a-button> -->
            </div>
          </template>
        </a-card>
        <a-card class="left">
          <a-scrollbar
            class="left-list"
            style="
              height: calc(100vh - 350px);
              overflow-y: auto;
              overflow-x: hidden;
            "
          >
            <div
              class="item left-list-item"
              v-for="session in sessionList"
              @click="querySessionDetail(session)"
              :class="{ isLeftActive: activeSessionId === session.id }"
            >
              <div class="text" :class="{ time: theme === 'dark' }"
                >{{ session.name }}
              </div>
              <div class="time"
                >{{
                  moment(new Date(session.create_time)).format(
                    'YYYY-MM-DD HH:mm:ss'
                  )
                }}
              </div>
            </div>
          </a-scrollbar>
        </a-card>
    <!--    <a-card class="top-title">AI会话记录</a-card>-->
    <a-row :gutter="[5, 5]" style="margin-top: 3px;">
      <!--      <a-col :span="6">-->
      <!--        <a-card class="left-select">-->
      <!--          <a-select-->
      <!--            v-model="selectValue"-->
      <!--            :options="dialogs"-->
      <!--            :field-names="fieldNames"-->
      <!--            @change="dialogChange"-->
      <!--          >-->
      <!--          </a-select>-->
      <!--        </a-card>-->
      <!--        <a-card style="height: 50px">-->
      <!--          <template #cover>-->
      <!--            <div style="display: flex; justify-content: space-between">-->
      <!--              <a-button-->
      <!--                type="primary"-->
      <!--                shape="round"-->
      <!--                class="card-btn-1"-->
      <!--                @click="modalObj.add = true"-->
      <!--              >-->
      <!--                +新建会话-->
      <!--              </a-button>-->
      <!--              &lt;!&ndash; <a-button type="text" shape="circle" class="card-btn-2">-->
      <!--                <icon-search />-->
      <!--              </a-button> &ndash;&gt;-->
      <!--            </div>-->
      <!--          </template>-->
      <!--        </a-card>-->
      <!--        <a-card class="left">-->
      <!--          <a-scrollbar-->
      <!--            class="left-list"-->
      <!--            style="-->
      <!--              height: calc(100vh - 350px);-->
      <!--              overflow-y: auto;-->
      <!--              overflow-x: hidden;-->
      <!--            "-->
      <!--          >-->
      <!--            <div-->
      <!--              class="item left-list-item"-->
      <!--              v-for="session in sessionList"-->
      <!--              @click="querySessionDetail(session)"-->
      <!--              :class="{ isLeftActive: activeSessionId === session.id }"-->
      <!--            >-->
      <!--              <div class="text" :class="{ time: theme === 'dark' }"-->
      <!--                >{{ session.name }}-->
      <!--              </div>-->
      <!--              <div class="time"-->
      <!--                >{{-->
      <!--                  moment(new Date(session.create_time)).format(-->
      <!--                    'YYYY-MM-DD HH:mm:ss'-->
      <!--                  )-->
      <!--                }}-->
      <!--              </div>-->
      <!--            </div>-->
      <!--          </a-scrollbar>-->
      <!--        </a-card>-->
      <!--      </a-col>-->
      <a-col :span="1">
        <chatMenu></chatMenu>
      </a-col>
      <!--      智能体会话-->
      <a-col :span="18" v-show="agentType == '1'">
        <a-card class="center">
          <!-- <div
            v-if="sessionDetailList.length === 0"
            style="
              width: 90%;
              overflow: auto;
              height: 65vh;
              margin: 0px auto 20px;
            "
          >
            <div class="center-title">智能问答</div>
            <div class="center-content">
              我可以理解和学习人类的语言,具备多轮对话的能力,现在和我开始交流吧~
      <a-col :span="23" v-show="agentType == '1'">
        <!-- <div
          v-if="sessionDetailList.length === 0"
          style="
            width: 90%;
            overflow: auto;
            height: 65vh;
            margin: 0px auto 20px;
          "
        >
          <div class="center-title">智能问答</div>
          <div class="center-content">
            我可以理解和学习人类的语言,具备多轮对话的能力,现在和我开始交流吧~
          </div>
          <div class="center-question">
            <div class="center-question-left">试一试这样问我</div>
            <div class="center-question-right">
              <a-button type="primary">换一换</a-button>
            </div>
            <div class="center-question">
              <div class="center-question-left">试一试这样问我</div>
              <div class="center-question-right">
                <a-button type="primary">换一换</a-button>
          </div>
          <a-row justify="space-around" class="center-list">
            <a-col :span="7" class="item">
              <div class="item-title">
                <IconTiktokColor></IconTiktokColor>
                抖音带货脚本
              </div>
            </div>
            <a-row justify="space-around" class="center-list">
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
            </a-row>
          </div> -->
              <div class="item-content" :class="{ dark: theme === 'dark' }">
                编写引人注目且具有说服力的、适用于产品的...
              </div>
            </a-col>
            <a-col :span="7" class="item">
              <div class="item-title">
                <IconTiktokColor></IconTiktokColor>
                抖音带货脚本
              </div>
              <div class="item-content" :class="{ dark: theme === 'dark' }">
                编写引人注目且具有说服力的、适用于产品的...
              </div>
            </a-col>
            <a-col :span="7" class="item">
              <div class="item-title">
                <IconTiktokColor></IconTiktokColor>
                抖音带货脚本
              </div>
              <div class="item-content" :class="{ dark: theme === 'dark' }">
                编写引人注目且具有说服力的、适用于产品的...
              </div>
            </a-col>
            <a-col :span="7" class="item">
              <div class="item-title">
                <IconTiktokColor></IconTiktokColor>
                抖音带货脚本
              </div>
              <div class="item-content" :class="{ dark: theme === 'dark' }">
                编写引人注目且具有说服力的、适用于产品的...
              </div>
            </a-col>
            <a-col :span="7" class="item">
              <div class="item-title">
                <IconTiktokColor></IconTiktokColor>
                抖音带货脚本
              </div>
              <div class="item-content" :class="{ dark: theme === 'dark' }">
                编写引人注目且具有说服力的、适用于产品的...
              </div>
            </a-col>
            <a-col :span="7" class="item">
              <div class="item-title">
                <IconTiktokColor></IconTiktokColor>
                抖音带货脚本
              </div>
              <div class="item-content" :class="{ dark: theme === 'dark' }">
                编写引人注目且具有说服力的、适用于产品的...
              </div>
            </a-col>
          </a-row>
        </div> -->
        <div class="center">
          <a-scrollbar
            ref="scrollbar"
            id="home"
@@ -149,7 +152,7 @@
            style="
              width: 90%;
              overflow: auto;
              height: calc(100vh - 380px);
              height: calc(100vh - 300px);
              margin: 0px auto 20px;
            "
          >
@@ -164,7 +167,7 @@
                </template>
                <template #content>
                  <div :class="{ chartUserText: theme === 'light' }"
                    >{{ sessionDetail.content }}
                  >{{ sessionDetail.content }}
                  </div>
                </template>
              </a-comment>
@@ -179,7 +182,7 @@
                <template #content>
                  <a-card :class="{ chatItemAnswer: theme === 'light' }">
                    <div :class="{ light: theme === 'light' }"
                      >{{ sessionDetail.content }}
                    >{{ sessionDetail.content }}
                    </div>
                  </a-card>
                </template>
@@ -243,17 +246,18 @@
                  style="border-radius: 24px"
                  :loading="loading"
                  size="large"
                  >发送</a-button
                >发送
                </a-button
                >
              </div>
            </div>
          </div>
        </a-card>
        </div>
      </a-col>
      <a-col :span="18" v-show="agentType == '2'">
        <a-card class="center">
      <a-col :span="23" v-show="agentType == '2'">
        <div class="center">
          <agentSession :modalObj="agentObj"></agentSession>
        </a-card>
        </div>
      </a-col>
      <!-- <a-col :span="5">
@@ -320,519 +324,542 @@
  </div>
</template>
<script setup lang="ts">
  import {
    IconClose,
    IconSearch,
    IconTiktokColor,
  } from '@arco-design/web-vue/es/icon';
  import { useAppStore, useUserStore } from '@/store';
  import { computed, nextTick, onMounted, watch, reactive, ref } from 'vue';
import {
  IconClose,
  IconSearch,
  IconTiktokColor
} from "@arco-design/web-vue/es/icon";
import { useAppStore, useUserStore } from "@/store";
import { computed, nextTick, onMounted, watch, reactive, ref } from "vue";
  import { Message } from '@arco-design/web-vue';
  import { EventSourceParserStream } from 'eventsource-parser/stream';
  import moment from 'moment';
  import AddSession from '@/views/sessionManager/components/addSession.vue';
  import agentSession from '@/views/sessionManager/components/agentSession.vue';
  import {
    chatApi,
    getDialogListApi,
    getSessionDetailsApi,
    sessionListApi,
  } from '@/api/session';
  import { getAuthorization } from '@/utils/auth';
  import { queryCanvasList } from '@/api/Agent';
  import { getAgentSessionDetailsApi } from '@/api/agentSession';
import { Message } from "@arco-design/web-vue";
import { EventSourceParserStream } from "eventsource-parser/stream";
import moment from "moment";
import chatMenu from "@/views/sessionManager/components/chatMenu.vue";
import AddSession from "@/views/sessionManager/components/addSession.vue";
import agentSession from "@/views/sessionManager/components/agentSession.vue";
import {
  chatApi,
  getDialogListApi,
  getSessionDetailsApi,
  sessionListApi
} from "@/api/session";
import { getAuthorization } from "@/utils/auth";
import { queryCanvasList } from "@/api/Agent";
import { getAgentSessionDetailsApi } from "@/api/agentSession";
  const sessionDetailList = ref([]); //根据会话id出来的会话详情
  const sessionList = ref([]); //会话列表
  const modalObj = reactive({ add: false });
  const dialogId = ref('');
  const chatDis = ref(false);
  const loading = ref(false);
  const agentType = ref('1');
const sessionDetailList = ref([]); //根据会话id出来的会话详情
const sessionList = ref([]); //会话列表
const modalObj = reactive({ add: false });
const dialogId = ref("");
const chatDis = ref(false);
const loading = ref(false);
const agentType = ref("1");
  const currIndex = ref(0);
  const displayedText = ref(''); // 正在显示的文字
  let timer: number | null = null;
  const streamStr = ref('');
  const inputMsg = ref('');
  const activeSessionId = ref('');
  const fieldNames = { value: 'id', label: 'name' };
  const dialogs = ref([]);
  const dialogObj = reactive({});
  const agentObj = reactive({});
  const agentList = ref([]);
  const selectValue = ref('');
  const sectionList = ref({});
  const DialogList = async () => {
    const { code, data } = await getDialogListApi();
    if (code === 200) {
      if (data) {
        selectValue.value = data[0].id;
        dialogs.value = data.map((item) => {
          return {
            ...item,
            type: 1, //智能体
          };
        });
        console.log(data, 'dialogs');
        queryCanvas();
        // querySessionList();
      }
    }
  };
  const queryCanvas = async (params = {}) => {
    try {
      const { data } = await queryCanvasList(params);
      console.log(data, 'agent');
      agentList.value = data.map((item) => {
const currIndex = ref(0);
const displayedText = ref(""); // 正在显示的文字
let timer: number | null = null;
const streamStr = ref("");
const inputMsg = ref("");
const activeSessionId = ref("");
const fieldNames = { value: "id", label: "name" };
const dialogs = ref([]);
const dialogObj = reactive({});
const agentObj = reactive({});
const agentList = ref([]);
const selectValue = ref("");
const sectionList = ref({});
const DialogList = async () => {
  const { code, data } = await getDialogListApi();
  if (code === 200) {
    if (data) {
      selectValue.value = data[0].id;
      dialogs.value = data.map((item) => {
        return {
          ...item,
          name: item.title,
          type: 2, //agent
          type: 1 //智能体
        };
      });
      // 合并数组
      dialogs.value = dialogs.value.concat(agentList.value);
      // 判断当前是智能体或agent
      // console.log(val, 'val');
      if (dialogs.value.length > 0) {
        dialogChange(dialogs.value[0].id);
      }
    } catch (err) {
      // you can report use errorHandler or other
    } finally {
      console.log(data, "dialogs");
      queryCanvas();
      // querySessionList();
    }
  };
  }
};
  const handleShiftEnter = (event) => {
    event.preventDefault();
    inputMsg.value += '\n';
  };
  const dialogChange = (val) => {
const queryCanvas = async (params = {}) => {
  try {
    const { data } = await queryCanvasList(params);
    console.log(data, "agent");
    agentList.value = data.map((item) => {
      return {
        ...item,
        name: item.title,
        type: 2 //agent
      };
    });
    // 合并数组
    dialogs.value = dialogs.value.concat(agentList.value);
    // 判断当前是智能体或agent
    // console.log(val, 'val');
    dialogId.value = val;
    dialogs.value.forEach((item) => {
      if (item.id === val) {
        Object.assign(dialogObj, item);
      }
    });
    console.log(dialogObj.type, 'dialogObj');
    if (dialogObj.type == 1) {
      agentType.value = 1;
      querySessionList();
    } else {
      agentType.value = 2;
      queryAgentSessionList();
    if (dialogs.value.length > 0) {
      dialogChange(dialogs.value[0].id);
    }
  } catch (err) {
    // you can report use errorHandler or other
  } finally {
  }
};
    // querySessionList();
  };
  const sentClick = () => {
    sendMessage('click');
  };
  const sendMessage = async (event) => {
    if (event.keyCode == 13 || event === 'click') {
      if (!event.shiftKey) {
        //只有enter没有shift,或进行你的其他逻辑
        if (event !== 'click') {
          event.preventDefault(); // 阻止默认行为,即不换行
        }
const handleShiftEnter = (event) => {
  event.preventDefault();
  inputMsg.value += "\n";
};
const dialogChange = (val) => {
  // 判断当前是智能体或agent
  // console.log(val, 'val');
  dialogId.value = val;
  dialogs.value.forEach((item) => {
    if (item.id === val) {
      Object.assign(dialogObj, item);
    }
  });
  console.log(dialogObj.type, "dialogObj");
  if (dialogObj.type == 1) {
    agentType.value = 1;
    querySessionList();
  } else {
    agentType.value = 2;
    queryAgentSessionList();
  }
        chatDis.value = true;
        loading.value = true;
        if (!activeSessionId.value) {
          Message.warning('请选择会话');
          chatDis.value = false;
          loading.value = false;
          return;
        }
  // querySessionList();
};
const sentClick = () => {
  sendMessage("click");
};
const sendMessage = async (event) => {
  if (event.keyCode == 13 || event === "click") {
    if (!event.shiftKey) {
      //只有enter没有shift,或进行你的其他逻辑
      if (event !== "click") {
        event.preventDefault(); // 阻止默认行为,即不换行
      }
        // if (displayedText.value) {
        //   querySessionList();
        // }
      chatDis.value = true;
      loading.value = true;
      if (!activeSessionId.value) {
        Message.warning("请选择会话");
        chatDis.value = false;
        loading.value = false;
        return;
      }
        if (inputMsg.value) {
          sessionDetailList.value.push({
            content: inputMsg.value,
            role: 'user',
          });
          sessionDetailList.value.push({ role: 'last' });
          refreshScroll();
          const response = await fetch(
            '/api/tech/cloudminds/query?modeltype=localragflow',
            {
              method: 'POST',
              headers: {
                'Authorization': getAuthorization(),
                'Content-Type': 'application/json',
              },
              body: JSON.stringify({
                conversation_id: activeSessionId.value,
                messages: inputMsg.value,
              }),
      // if (displayedText.value) {
      //   querySessionList();
      // }
      if (inputMsg.value) {
        sessionDetailList.value.push({
          content: inputMsg.value,
          role: "user"
        });
        sessionDetailList.value.push({ role: "last" });
        refreshScroll();
        const response = await fetch(
          "/api/tech/cloudminds/query?modeltype=localragflow",
          {
            method: "POST",
            headers: {
              "Authorization": getAuthorization(),
              "Content-Type": "application/json"
            },
            body: JSON.stringify({
              conversation_id: activeSessionId.value,
              messages: inputMsg.value
            })
          }
        );
        const reader = response?.body
          ?.pipeThrough(new TextDecoderStream())
          .pipeThrough(new EventSourceParserStream())
          .getReader();
        currIndex.value = 0;
        while (true) {
          const x = await reader?.read();
          if (x) {
            const { done, value } = x;
            console.log(x, 999);
            try {
              const val = JSON.parse(value?.data || "");
              const d = val?.data;
              if (typeof d !== "boolean") {
                console.info("data:", d);
                streamStr.value = d.content;
                startDisplayStr();
              }
            } catch (e) {
              console.warn(e);
            }
          );
          const reader = response?.body
            ?.pipeThrough(new TextDecoderStream())
            .pipeThrough(new EventSourceParserStream())
            .getReader();
          currIndex.value = 0;
          while (true) {
            const x = await reader?.read();
            if (x) {
              const { done, value } = x;
              console.log(x, 999);
              try {
                const val = JSON.parse(value?.data || '');
                const d = val?.data;
                if (typeof d !== 'boolean') {
                  console.info('data:', d);
                  streamStr.value = d.content;
                  startDisplayStr();
                }
              } catch (e) {
                console.warn(e);
              }
              if (done) {
                console.info('done');
                displayedText.value = '';
                querySessionDetail(sectionList.value);
                break;
              }
            if (done) {
              console.info("done");
              displayedText.value = "";
              querySessionDetail(sectionList.value);
              break;
            }
          }
          querySessionList();
          chatDis.value = false;
          loading.value = false;
          inputMsg.value = '';
        } else {
          Message.warning('消息不能为空');
          chatDis.value = false;
          loading.value = false;
        }
        querySessionList();
        chatDis.value = false;
        loading.value = false;
        inputMsg.value = "";
      } else {
        Message.warning("消息不能为空");
        chatDis.value = false;
        loading.value = false;
      }
    }
  };
  const querySessionDetail = async (session) => {
    sectionList.value = session;
    activeSessionId.value = session.id;
    const { code, data } = await getSessionDetailsApi(session.id);
    if (code === 200) {
      sessionDetailList.value = data.message;
      refreshScroll(); //刷新滚动条位置
    }
  };
  const queryAgentSessionDetail = async (id) => {
    const { code, data } = await getAgentSessionDetailsApi(id);
    if (code == 0) {
      Object.assign(agentObj, data);
      // sessionDetailList.value = data.message;
      // refreshScroll(); //刷新滚动条位置
    }
  };
  const scrollbar = ref(null);
  const refreshScroll = () => {
    nextTick(() => {
      const container = document.getElementById('home');
      scrollbar.value.scrollTop(container.scrollHeight);
    });
  };
  // 查询会话列表
  const querySessionList = async () => {
    const { code, data } = await sessionListApi(selectValue.value);
    if (code === 200) {
      sessionList.value = data;
      activeSessionId.value = data[0].id; //默认选择第一个
      querySessionDetail(data[0]);
    } else {
      Message.warning('查询失败');
    }
  };
  // 查询会话列表
  const queryAgentSessionList = async () => {
    // const { code, data } = await sessionListApi(selectValue.value);
    // if (code === 200) {
    //
    // } else {
    //   Message.warning('查询失败');
    // }
    queryAgentSessionDetail(selectValue.value);
  };
  //新增会话之后刷新会话列表
  const addSession = () => {
    querySessionList();
  };
  onMounted(() => {
    DialogList();
  }
};
const querySessionDetail = async (session) => {
  sectionList.value = session;
  activeSessionId.value = session.id;
  const { code, data } = await getSessionDetailsApi(session.id);
  if (code === 200) {
    sessionDetailList.value = data.message;
    refreshScroll(); //刷新滚动条位置
  }
};
const queryAgentSessionDetail = async (id) => {
  const { code, data } = await getAgentSessionDetailsApi(id);
  if (code == 0) {
    Object.assign(agentObj, data);
    // sessionDetailList.value = data.message;
    // refreshScroll(); //刷新滚动条位置
  }
};
const scrollbar = ref(null);
const refreshScroll = () => {
  nextTick(() => {
    const container = document.getElementById("home");
    scrollbar.value.scrollTop(container.scrollHeight);
  });
};
// 查询会话列表
const querySessionList = async () => {
  const { code, data } = await sessionListApi(selectValue.value);
  if (code === 200) {
    sessionList.value = data;
    activeSessionId.value = data[0].id; //默认选择第一个
    querySessionDetail(data[0]);
  } else {
    Message.warning("查询失败");
  }
};
  const appStore = useAppStore();
  const theme = computed(() => {
    return appStore.theme;
  });
// 查询会话列表
const queryAgentSessionList = async () => {
  // const { code, data } = await sessionListApi(selectValue.value);
  // if (code === 200) {
  //
  // } else {
  //   Message.warning('查询失败');
  // }
  queryAgentSessionDetail(selectValue.value);
};
  //文字动态输出
  const startDisplayStr = () => {
    if (timer) {
      clearTimeout(timer!);
    }
    const res = streamStr.value;
    // 将数组中的字符串拼接起来
    if (currIndex.value < res.length) {
      displayedText.value += res[currIndex.value];
      currIndex.value++;
      setTimeout(startDisplayStr, 100);
      refreshScroll();
    } else {
      clearTimeout(timer!);
      timer = null;
    }
  };
//新增会话之后刷新会话列表
const addSession = () => {
  querySessionList();
};
onMounted(() => {
  DialogList();
});
const appStore = useAppStore();
const theme = computed(() => {
  return appStore.theme;
});
//文字动态输出
const startDisplayStr = () => {
  if (timer) {
    clearTimeout(timer!);
  }
  const res = streamStr.value;
  // 将数组中的字符串拼接起来
  if (currIndex.value < res.length) {
    displayedText.value += res[currIndex.value];
    currIndex.value++;
    setTimeout(startDisplayStr, 100);
    refreshScroll();
  } else {
    clearTimeout(timer!);
    timer = null;
  }
};
</script>
<style scoped lang="scss">
  .isLeftActive {
    background-color: #ededf5;
  }
  .left-list-item {
    margin-bottom: 2px;
  }
  .left-list-item:hover {
    background-color: #ededf5;
.isLeftActive {
  background-color: #ededf5;
}
.left-list-item {
  margin-bottom: 2px;
}
.left-list-item:hover {
  background-color: #ededf5;
}
.dark {
  color: gray !important;
}
.container {
  .top-title {
    line-height: 32px;
    font-size: 16px;
    color: #333;
  }
  .dark {
    color: gray !important;
  }
  .container {
    .top-title {
      line-height: 32px;
      font-size: 16px;
      color: #333;
  .left-select {
    :deep(.arco-select-view-single) {
      border-radius: 5px;
    }
    .left-select {
      :deep(.arco-select-view-single) {
        border-radius: 5px;
      }
    }
  }
    .center,
    .right {
      box-sizing: border-box;
      height: calc(100vh - 200px);
    }
  .center,
  .right {
    box-sizing: border-box;
    height: calc(100vh - 200px);
  }
    .left {
      /* height: calc(100vh - 160px);
      overflow-y: auto;
      overflow-x: hidden;*/
      border: 0px;
  .left {
    /* height: calc(100vh - 160px);
    overflow-y: auto;
    overflow-x: hidden;*/
    border: 0px;
      .left-list {
        .item {
          cursor: pointer;
    .left-list {
      .item {
        cursor: pointer;
          .text,
          .time {
            line-height: 30px;
          }
        .text,
        .time {
          line-height: 30px;
        }
          .text {
            color: black;
            padding-left: 10px;
          }
        .text {
          color: black;
          padding-left: 10px;
        }
          .time {
            color: gray;
            font-size: 12px;
            padding-left: 10px;
          }
        .time {
          color: gray;
          font-size: 12px;
          padding-left: 10px;
        }
      }
    }
    .card-btn-1 {
      margin: 8px 15px;
      width: 100%;
      border-radius: 5px;
    }
  }
    .card-btn-2 {
      margin: 10px 10px;
    }
    .chatItemAnswer {
  .card-btn-1 {
    margin: 8px 15px;
    width: 100%;
    border-radius: 5px;
  }
  .card-btn-2 {
    margin: 10px 10px;
  }
  .chatItemAnswer {
    box-sizing: border-box;
    background: #f1f1f1;
    border-radius: 14px;
    .light {
      box-sizing: border-box;
      background: #f1f1f1;
      border-radius: 14px;
      .light {
        box-sizing: border-box;
        background: #f1f1f1;
        border-radius: 14px;
      }
    }
    .textItemAnswer {
      background-color: #373739;
  }
  .textItemAnswer {
    background-color: #373739;
  }
  .center {
    position: relative;
    .center-title {
      line-height: 60px;
      font-size: 25px;
      font-family: 黑体;
      color: deepskyblue;
    }
    .center {
      position: relative;
    .center-content {
      font-size: 14px;
      color: gray;
    }
      .center-title {
        line-height: 60px;
        font-size: 25px;
        font-family: 黑体;
        color: deepskyblue;
    .center-question {
      margin-top: 20px;
      display: flex;
      justify-content: space-between;
      .center-question-left {
        margin-top: 5px;
        margin-left: 20px;
      }
      .center-content {
        font-size: 14px;
        color: gray;
      .center-question-right {
        margin-right: 20px;
      }
    }
      .center-question {
        margin-top: 20px;
        display: flex;
        justify-content: space-between;
    .center-list {
      margin-top: 10px;
        .center-question-left {
          margin-top: 5px;
          margin-left: 20px;
        }
        .center-question-right {
          margin-right: 20px;
        }
      }
      .center-list {
      .item {
        border-radius: 10px;
        margin-top: 10px;
        padding: 10px;
        min-height: 120px;
        background-color: #e9f3ff;
        .item {
          border-radius: 10px;
          margin-top: 10px;
          padding: 10px;
          min-height: 120px;
          background-color: #e9f3ff;
          .item-content {
            color: #666;
          }
          .item-title {
            text-align: center;
            line-height: 40px;
            font-size: 20px;
            font-family: 黑体;
            color: #333;
          }
        .item-content {
          color: #666;
        }
        .item-title {
          text-align: center;
          line-height: 40px;
          font-size: 20px;
          font-family: 黑体;
          color: #333;
        }
      }
      .chartStart {
        color: #4955f5;
        cursor: pointer;
        font-family: PingFangSC-Medium;
        font-size: 12px;
        font-weight: 500;
      }
      .chat_bottom {
    }
    .chartStart {
      color: #4955f5;
      cursor: pointer;
      font-family: PingFangSC-Medium;
      font-size: 12px;
      font-weight: 500;
    }
    .chat_bottom {
      display: flex;
      align-items: center;
      .center-bottom {
        // position: absolute;
        // width: 90%;
        // bottom: 20px;
        // left: 5%;
        background: #fff;
        border: 1px solid #00000014;
        border-radius: 24px;
        display: flex;
        align-items: center;
        .center-bottom {
          // position: absolute;
          // width: 90%;
          // bottom: 20px;
          // left: 5%;
          background: #fff;
          border: 1px solid #00000014;
          border-radius: 24px;
          display: flex;
          flex: 1 1;
          flex-direction: column;
          overflow: hidden;
          position: relative;
          // padding-top:10px;
          :deep(.arco-textarea-wrapper) {
            border-radius: 24px;
          }
          .btn-send {
            position: absolute !important;
            right: 10px;
            bottom: 10px;
            z-index: 10;
          }
          :deep(.arco-btn-size-large) {
            height: 28px;
            width: 60px;
          }
        }
        flex: 1 1;
        flex-direction: column;
        overflow: hidden;
        position: relative;
        // padding-top:10px;
        :deep(.arco-textarea-wrapper) {
          padding-top: 5px;
          border-radius: 24px;
        }
        .btn-send {
          position: absolute !important;
          right: 10px;
          bottom: 10px;
          z-index: 10;
        }
        :deep(.arco-btn-size-large) {
          height: 28px;
          width: 60px;
        }
      }
      :deep(.arco-textarea-wrapper) {
        padding-top: 5px;
      }
    }
    .chat-item {
      padding: 10px 0;
      .chartUserText {
        font-weight: 600;
        font-size: 14px;
        color: #333;
        margin-top: 4px;
  }
  .chat-item {
    padding: 10px 0;
    .chartUserText {
      font-weight: 600;
      font-size: 14px;
      color: #333;
      margin-top: 4px;
    }
    .icon-user-jpg {
      border: 1px solid #d9d9d9;
    }
  }
  .right {
    .right-top {
      display: flex;
      justify-content: space-between;
      .right-title {
        font-size: 25px;
        color: black;
      }
      .icon-user-jpg {
        border: 1px solid #d9d9d9;
      .right-btn {
        position: relative;
        left: 20px;
        top: 0px;
      }
    }
    .right {
      .right-top {
        display: flex;
        justify-content: space-between;
        .right-title {
          font-size: 25px;
          color: black;
        }
    .right-tag {
      margin-top: 20px;
      display: flex;
      justify-content: space-between;
      flex-wrap: wrap;
        .right-btn {
          position: relative;
          left: 20px;
          top: 0px;
        }
      }
      .right-tag {
        margin-top: 20px;
        display: flex;
        justify-content: space-between;
        flex-wrap: wrap;
        :deep(.arco-btn-primary) {
          margin-bottom: 10px !important;
          &:hover {
            background-color: #e9f3ff;
            color: rgb(22, 93, 255);
          }
        }
      }
      :deep(.arco-btn-primary) {
        margin-bottom: 10px !important;
      .right-list {
        .right-item {
          border-radius: 10px;
          margin-top: 10px;
          padding: 10px;
          min-height: 120px;
        &:hover {
          background-color: #e9f3ff;
          color: rgb(22, 93, 255);
        }
      }
    }
          .item-title {
            text-align: center;
            line-height: 40px;
            font-size: 20px;
            font-family: 黑体;
            color: #333;
          }
    .right-list {
      .right-item {
        border-radius: 10px;
        margin-top: 10px;
        padding: 10px;
        min-height: 120px;
        background-color: #e9f3ff;
        .item-title {
          text-align: center;
          line-height: 40px;
          font-size: 20px;
          font-family: 黑体;
          color: #333;
        }
      }
    }
  }
}
</style>
src/views/sessionManager/index2.vue
New file
@@ -0,0 +1,838 @@
<template>
  <div class="container">
    <AddSession
      :modalObj="modalObj"
      @addSession="addSession"
      :dialogId="dialogId"
    ></AddSession>
    <a-card class="top-title">AI会话记录</a-card>
    <a-row :gutter="[5, 5]" style="margin-top: 3px">
      <a-col :span="6">
        <a-card class="left-select">
          <a-select
            v-model="selectValue"
            :options="dialogs"
            :field-names="fieldNames"
            @change="dialogChange"
          >
          </a-select>
        </a-card>
        <a-card style="height: 50px">
          <template #cover>
            <div style="display: flex; justify-content: space-between">
              <a-button
                type="primary"
                shape="round"
                class="card-btn-1"
                @click="modalObj.add = true"
              >
                +新建会话
              </a-button>
              <!-- <a-button type="text" shape="circle" class="card-btn-2">
                <icon-search />
              </a-button> -->
            </div>
          </template>
        </a-card>
        <a-card class="left">
          <a-scrollbar
            class="left-list"
            style="
              height: calc(100vh - 350px);
              overflow-y: auto;
              overflow-x: hidden;
            "
          >
            <div
              class="item left-list-item"
              v-for="session in sessionList"
              @click="querySessionDetail(session)"
              :class="{ isLeftActive: activeSessionId === session.id }"
            >
              <div class="text" :class="{ time: theme === 'dark' }"
                >{{ session.name }}
              </div>
              <div class="time"
                >{{
                  moment(new Date(session.create_time)).format(
                    'YYYY-MM-DD HH:mm:ss'
                  )
                }}
              </div>
            </div>
          </a-scrollbar>
        </a-card>
      </a-col>
      <!--      智能体会话-->
      <a-col :span="18" v-show="agentType == '1'">
        <a-card class="center">
          <!-- <div
            v-if="sessionDetailList.length === 0"
            style="
              width: 90%;
              overflow: auto;
              height: 65vh;
              margin: 0px auto 20px;
            "
          >
            <div class="center-title">智能问答</div>
            <div class="center-content">
              我可以理解和学习人类的语言,具备多轮对话的能力,现在和我开始交流吧~
            </div>
            <div class="center-question">
              <div class="center-question-left">试一试这样问我</div>
              <div class="center-question-right">
                <a-button type="primary">换一换</a-button>
              </div>
            </div>
            <a-row justify="space-around" class="center-list">
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
              <a-col :span="7" class="item">
                <div class="item-title">
                  <IconTiktokColor></IconTiktokColor>
                  抖音带货脚本
                </div>
                <div class="item-content" :class="{ dark: theme === 'dark' }">
                  编写引人注目且具有说服力的、适用于产品的...
                </div>
              </a-col>
            </a-row>
          </div> -->
          <a-scrollbar
            ref="scrollbar"
            id="home"
            class="chat-list"
            style="
              width: 90%;
              overflow: auto;
              height: calc(100vh - 380px);
              margin: 0px auto 20px;
            "
          >
            <div class="chat-item" v-for="sessionDetail in sessionDetailList">
              <a-comment v-if="sessionDetail.role === 'user'">
                <template #avatar>
                  <img
                    class="icon-user-jpg"
                    src="../../assets/images/icon-user.jpg"
                    alt="本地图片"
                  />
                </template>
                <template #content>
                  <div :class="{ chartUserText: theme === 'light' }"
                    >{{ sessionDetail.content }}
                  </div>
                </template>
              </a-comment>
              <a-comment v-else-if="sessionDetail.role === 'assistant'">
                <template #avatar>
                  <img
                    class="icon-user-jpg"
                    src="../../assets/images/icon-chart.png"
                    alt="本地图片"
                  />
                </template>
                <template #content>
                  <a-card :class="{ chatItemAnswer: theme === 'light' }">
                    <div :class="{ light: theme === 'light' }"
                      >{{ sessionDetail.content }}
                    </div>
                  </a-card>
                </template>
              </a-comment>
              <a-comment v-else-if="sessionDetail.role === 'last'">
                <template #avatar>
                  <img
                    class="icon-user-jpg"
                    src="../../assets/images/icon-chart.png"
                    alt="本地图片"
                  />
                </template>
                <template #content>
                  <a-textarea
                    readonly
                    auto-size
                    v-model="displayedText"
                    :class="{ chatItemAnswer: theme === 'light' }"
                  >
                  </a-textarea>
                </template>
              </a-comment>
            </div>
            <!-- <div class="chartStart" v-if="isStart" @click="startChat"
              >停止生成</div
            >
            <div class="chartStart v-else" @click="stopChat">重新生成</div> -->
          </a-scrollbar>
          <div class="chat_bottom">
            <div class="center-bottom">
              <!-- <a-textarea
              v-model="inputMsg"
              @keydown.shift.enter="sendMessage"
              style="height: 180px"
              placeholder="输入您想了解的内容,Shift+Enter发送"
              :max-length="500"
              allow-clear
              show-word-limit
            >
            </a-textarea> -->
              <a-textarea
                v-model="inputMsg"
                @keydown.shift.enter="handleShiftEnter"
                @keydown.enter="sendMessage"
                placeholder="输入您想了解的内容,Shift+Enter换行,Enter发送"
                allow-clear
                show-word-limit
                :disabled="chatDis"
                :class="{ textItemAnswer: theme === 'dark' }"
                :auto-size="{
                  minRows: 12,
                  maxRows: 5,
                }"
              />
              <div class="btn-send">
                <!-- <icon-send size="32" /> -->
                <a-button
                  :disabled="chatDis"
                  @click="sentClick"
                  type="primary"
                  style="border-radius: 24px"
                  :loading="loading"
                  size="large"
                  >发送</a-button
                >
              </div>
            </div>
          </div>
        </a-card>
      </a-col>
      <a-col :span="18" v-show="agentType == '2'">
        <a-card class="center">
          <agentSession :modalObj="agentObj"></agentSession>
        </a-card>
      </a-col>
      <!-- <a-col :span="5">
        <a-card class="right">
          <div class="right-top">
            <div class="right-title">数智库</div>
            <div class="right-btn">
              <a-button type="outline" shape="circle" style="border: none">
                <icon-search />
              </a-button>
              <a-button
                type="outline"
                shape="circle"
                style="border: none; margin-left: -10px"
              >
                <icon-close />
              </a-button>
            </div>
          </div>
          <div class="right-tag">
            <a-button type="primary" size="mini" class="btn">全部 </a-button>
            <a-button type="outline" size="mini" class="btn"
              >文档创作
            </a-button>
            <a-button type="outline" size="mini" class="btn"
              >知识学习
            </a-button>
            <a-button type="outline" size="mini" class="btn"
              >效率提升
            </a-button>
          </div>
          <div class="right-list">
            <div class="right-item">
              <div class="item-title">
                <IconTiktokColor></IconTiktokColor>
                抖音带货脚本
              </div>
              <div class="item-content" :class="{ dark: theme === 'dark' }">
                编写引人注目且具有说服力的、适用于产品的...
              </div>
            </div>
            <div class="right-item">
              <div class="item-title">
                <IconTiktokColor></IconTiktokColor>
                抖音带货脚本
              </div>
              <div class="item-content" :class="{ dark: theme === 'dark' }">
                编写引人注目且具有说服力的、适用于产品的...
              </div>
            </div>
            <div class="right-item">
              <div class="item-title">
                <IconTiktokColor></IconTiktokColor>
                抖音带货脚本
              </div>
              <div class="item-content" :class="{ dark: theme === 'dark' }">
                编写引人注目且具有说服力的、适用于产品的...
              </div>
            </div>
          </div>
        </a-card>
      </a-col> -->
    </a-row>
  </div>
</template>
<script setup lang="ts">
  import {
    IconClose,
    IconSearch,
    IconTiktokColor,
  } from '@arco-design/web-vue/es/icon';
  import { useAppStore, useUserStore } from '@/store';
  import { computed, nextTick, onMounted, watch, reactive, ref } from 'vue';
  import { Message } from '@arco-design/web-vue';
  import { EventSourceParserStream } from 'eventsource-parser/stream';
  import moment from 'moment';
  import AddSession from '@/views/sessionManager/components/addSession.vue';
  import agentSession from '@/views/sessionManager/components/agentSession.vue';
  import {
    chatApi,
    getDialogListApi,
    getSessionDetailsApi,
    sessionListApi,
  } from '@/api/session';
  import { getAuthorization } from '@/utils/auth';
  import { queryCanvasList } from '@/api/Agent';
  import { getAgentSessionDetailsApi } from '@/api/agentSession';
  const sessionDetailList = ref([]); //根据会话id出来的会话详情
  const sessionList = ref([]); //会话列表
  const modalObj = reactive({ add: false });
  const dialogId = ref('');
  const chatDis = ref(false);
  const loading = ref(false);
  const agentType = ref('1');
  const currIndex = ref(0);
  const displayedText = ref(''); // 正在显示的文字
  let timer: number | null = null;
  const streamStr = ref('');
  const inputMsg = ref('');
  const activeSessionId = ref('');
  const fieldNames = { value: 'id', label: 'name' };
  const dialogs = ref([]);
  const dialogObj = reactive({});
  const agentObj = reactive({});
  const agentList = ref([]);
  const selectValue = ref('');
  const sectionList = ref({});
  const DialogList = async () => {
    const { code, data } = await getDialogListApi();
    if (code === 200) {
      if (data) {
        selectValue.value = data[0].id;
        dialogs.value = data.map((item) => {
          return {
            ...item,
            type: 1, //智能体
          };
        });
        console.log(data, 'dialogs');
        queryCanvas();
        // querySessionList();
      }
    }
  };
  const queryCanvas = async (params = {}) => {
    try {
      const { data } = await queryCanvasList(params);
      console.log(data, 'agent');
      agentList.value = data.map((item) => {
        return {
          ...item,
          name: item.title,
          type: 2, //agent
        };
      });
      // 合并数组
      dialogs.value = dialogs.value.concat(agentList.value);
      // 判断当前是智能体或agent
      // console.log(val, 'val');
      if (dialogs.value.length > 0) {
        dialogChange(dialogs.value[0].id);
      }
    } catch (err) {
      // you can report use errorHandler or other
    } finally {
    }
  };
  const handleShiftEnter = (event) => {
    event.preventDefault();
    inputMsg.value += '\n';
  };
  const dialogChange = (val) => {
    // 判断当前是智能体或agent
    // console.log(val, 'val');
    dialogId.value = val;
    dialogs.value.forEach((item) => {
      if (item.id === val) {
        Object.assign(dialogObj, item);
      }
    });
    console.log(dialogObj.type, 'dialogObj');
    if (dialogObj.type == 1) {
      agentType.value = 1;
      querySessionList();
    } else {
      agentType.value = 2;
      queryAgentSessionList();
    }
    // querySessionList();
  };
  const sentClick = () => {
    sendMessage('click');
  };
  const sendMessage = async (event) => {
    if (event.keyCode == 13 || event === 'click') {
      if (!event.shiftKey) {
        //只有enter没有shift,或进行你的其他逻辑
        if (event !== 'click') {
          event.preventDefault(); // 阻止默认行为,即不换行
        }
        chatDis.value = true;
        loading.value = true;
        if (!activeSessionId.value) {
          Message.warning('请选择会话');
          chatDis.value = false;
          loading.value = false;
          return;
        }
        // if (displayedText.value) {
        //   querySessionList();
        // }
        if (inputMsg.value) {
          sessionDetailList.value.push({
            content: inputMsg.value,
            role: 'user',
          });
          sessionDetailList.value.push({ role: 'last' });
          refreshScroll();
          const response = await fetch(
            '/api/tech/cloudminds/query?modeltype=localragflow',
            {
              method: 'POST',
              headers: {
                'Authorization': getAuthorization(),
                'Content-Type': 'application/json',
              },
              body: JSON.stringify({
                conversation_id: activeSessionId.value,
                messages: inputMsg.value,
              }),
            }
          );
          const reader = response?.body
            ?.pipeThrough(new TextDecoderStream())
            .pipeThrough(new EventSourceParserStream())
            .getReader();
          currIndex.value = 0;
          while (true) {
            const x = await reader?.read();
            if (x) {
              const { done, value } = x;
              console.log(x, 999);
              try {
                const val = JSON.parse(value?.data || '');
                const d = val?.data;
                if (typeof d !== 'boolean') {
                  console.info('data:', d);
                  streamStr.value = d.content;
                  startDisplayStr();
                }
              } catch (e) {
                console.warn(e);
              }
              if (done) {
                console.info('done');
                displayedText.value = '';
                querySessionDetail(sectionList.value);
                break;
              }
            }
          }
          querySessionList();
          chatDis.value = false;
          loading.value = false;
          inputMsg.value = '';
        } else {
          Message.warning('消息不能为空');
          chatDis.value = false;
          loading.value = false;
        }
      }
    }
  };
  const querySessionDetail = async (session) => {
    sectionList.value = session;
    activeSessionId.value = session.id;
    const { code, data } = await getSessionDetailsApi(session.id);
    if (code === 200) {
      sessionDetailList.value = data.message;
      refreshScroll(); //刷新滚动条位置
    }
  };
  const queryAgentSessionDetail = async (id) => {
    const { code, data } = await getAgentSessionDetailsApi(id);
    if (code == 0) {
      Object.assign(agentObj, data);
      // sessionDetailList.value = data.message;
      // refreshScroll(); //刷新滚动条位置
    }
  };
  const scrollbar = ref(null);
  const refreshScroll = () => {
    nextTick(() => {
      const container = document.getElementById('home');
      scrollbar.value.scrollTop(container.scrollHeight);
    });
  };
  // 查询会话列表
  const querySessionList = async () => {
    const { code, data } = await sessionListApi(selectValue.value);
    if (code === 200) {
      sessionList.value = data;
      activeSessionId.value = data[0].id; //默认选择第一个
      querySessionDetail(data[0]);
    } else {
      Message.warning('查询失败');
    }
  };
  // 查询会话列表
  const queryAgentSessionList = async () => {
    // const { code, data } = await sessionListApi(selectValue.value);
    // if (code === 200) {
    //
    // } else {
    //   Message.warning('查询失败');
    // }
    queryAgentSessionDetail(selectValue.value);
  };
  //新增会话之后刷新会话列表
  const addSession = () => {
    querySessionList();
  };
  onMounted(() => {
    DialogList();
  });
  const appStore = useAppStore();
  const theme = computed(() => {
    return appStore.theme;
  });
  //文字动态输出
  const startDisplayStr = () => {
    if (timer) {
      clearTimeout(timer!);
    }
    const res = streamStr.value;
    // 将数组中的字符串拼接起来
    if (currIndex.value < res.length) {
      displayedText.value += res[currIndex.value];
      currIndex.value++;
      setTimeout(startDisplayStr, 100);
      refreshScroll();
    } else {
      clearTimeout(timer!);
      timer = null;
    }
  };
</script>
<style scoped lang="scss">
  .isLeftActive {
    background-color: #ededf5;
  }
  .left-list-item {
    margin-bottom: 2px;
  }
  .left-list-item:hover {
    background-color: #ededf5;
  }
  .dark {
    color: gray !important;
  }
  .container {
    .top-title {
      line-height: 32px;
      font-size: 16px;
      color: #333;
    }
    .left-select {
      :deep(.arco-select-view-single) {
        border-radius: 5px;
      }
    }
    .center,
    .right {
      box-sizing: border-box;
      height: calc(100vh - 200px);
    }
    .left {
      /* height: calc(100vh - 160px);
      overflow-y: auto;
      overflow-x: hidden;*/
      border: 0px;
      .left-list {
        .item {
          cursor: pointer;
          .text,
          .time {
            line-height: 30px;
          }
          .text {
            color: black;
            padding-left: 10px;
          }
          .time {
            color: gray;
            font-size: 12px;
            padding-left: 10px;
          }
        }
      }
    }
    .card-btn-1 {
      margin: 8px 15px;
      width: 100%;
      border-radius: 5px;
    }
    .card-btn-2 {
      margin: 10px 10px;
    }
    .chatItemAnswer {
      box-sizing: border-box;
      background: #f1f1f1;
      border-radius: 14px;
      .light {
        box-sizing: border-box;
        background: #f1f1f1;
        border-radius: 14px;
      }
    }
    .textItemAnswer {
      background-color: #373739;
    }
    .center {
      position: relative;
      .center-title {
        line-height: 60px;
        font-size: 25px;
        font-family: 黑体;
        color: deepskyblue;
      }
      .center-content {
        font-size: 14px;
        color: gray;
      }
      .center-question {
        margin-top: 20px;
        display: flex;
        justify-content: space-between;
        .center-question-left {
          margin-top: 5px;
          margin-left: 20px;
        }
        .center-question-right {
          margin-right: 20px;
        }
      }
      .center-list {
        margin-top: 10px;
        .item {
          border-radius: 10px;
          margin-top: 10px;
          padding: 10px;
          min-height: 120px;
          background-color: #e9f3ff;
          .item-content {
            color: #666;
          }
          .item-title {
            text-align: center;
            line-height: 40px;
            font-size: 20px;
            font-family: 黑体;
            color: #333;
          }
        }
      }
      .chartStart {
        color: #4955f5;
        cursor: pointer;
        font-family: PingFangSC-Medium;
        font-size: 12px;
        font-weight: 500;
      }
      .chat_bottom {
        display: flex;
        align-items: center;
        .center-bottom {
          // position: absolute;
          // width: 90%;
          // bottom: 20px;
          // left: 5%;
          background: #fff;
          border: 1px solid #00000014;
          border-radius: 24px;
          display: flex;
          flex: 1 1;
          flex-direction: column;
          overflow: hidden;
          position: relative;
          // padding-top:10px;
          :deep(.arco-textarea-wrapper) {
            border-radius: 24px;
          }
          .btn-send {
            position: absolute !important;
            right: 10px;
            bottom: 10px;
            z-index: 10;
          }
          :deep(.arco-btn-size-large) {
            height: 28px;
            width: 60px;
          }
        }
        :deep(.arco-textarea-wrapper) {
          padding-top: 5px;
        }
      }
    }
    .chat-item {
      padding: 10px 0;
      .chartUserText {
        font-weight: 600;
        font-size: 14px;
        color: #333;
        margin-top: 4px;
      }
      .icon-user-jpg {
        border: 1px solid #d9d9d9;
      }
    }
    .right {
      .right-top {
        display: flex;
        justify-content: space-between;
        .right-title {
          font-size: 25px;
          color: black;
        }
        .right-btn {
          position: relative;
          left: 20px;
          top: 0px;
        }
      }
      .right-tag {
        margin-top: 20px;
        display: flex;
        justify-content: space-between;
        flex-wrap: wrap;
        :deep(.arco-btn-primary) {
          margin-bottom: 10px !important;
          &:hover {
            background-color: #e9f3ff;
            color: rgb(22, 93, 255);
          }
        }
      }
      .right-list {
        .right-item {
          border-radius: 10px;
          margin-top: 10px;
          padding: 10px;
          min-height: 120px;
          background-color: #e9f3ff;
          .item-title {
            text-align: center;
            line-height: 40px;
            font-size: 20px;
            font-family: 黑体;
            color: #333;
          }
        }
      }
    }
  }
</style>
src/views/sessionManager/style/layout.css
New file
@@ -0,0 +1,2074 @@
.content___r3DRA {
    flex: 1 1;
    overflow: auto;
    padding: var(--gap-max);
    color: var(--color-text);
    width: 100%;
    height: 100%
}
.content___r3DRA img {
    width: 100%;
    height: 100%;
    max-height: 60vh;
    object-fit: contain
}
.content___ZxNf8 {
    flex: 1 1;
    overflow: auto;
    padding: var(--gap-max);
    color: var(--color-text)
}
.content___ZxNf8 p {
    white-space: pre-wrap
}
.itemPaper___ECUkb {
    border-radius: calc(var(--border-radius) * 1.5);
    padding: calc(var(--msh-spacing-unit) * 2);
    text-decoration: none
}
.itemPaper___ECUkb .fileIcon___UQWEV {
    padding: calc(var(--msh-spacing-unit) * 1)
}
.itemPaper___ECUkb .content___NYWHF {
    overflow: hidden
}
.itemPaper___ECUkb .content___NYWHF .caption___GjLgR {
    min-height: 20px
}
.itemImage___qpHjD {
    border-radius: calc(var(--border-radius) * 1.5);
    text-decoration: none;
    aspect-ratio: 1.13;
    width: 100%;
    position: relative;
    overflow: hidden
}
.itemImage___qpHjD .loading___VcXVp {
    height: 100%;
    padding-bottom: 34px
}
.itemImage___qpHjD .loading___VcXVp img {
    width: 28px;
    height: 28px
}
.itemImage___qpHjD img {
    width: 100%;
    height: 100%;
    object-fit: cover
}
.itemImage___qpHjD .errorMask___clwsW {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1;
    background: var(--msh-chat-input-image-error-bg);
    opacity: .2
}
.itemImage___qpHjD .desc___V50od {
    position: absolute;
    bottom: 0;
    z-index: 2;
    background: var(--msh-chat-input-image-bg);
    color: var(--text-secondary);
    width: 100%;
    padding: calc(var(--msh-spacing-unit) * 1) calc(var(--msh-spacing-unit) * 2);
    border-top: 1px solid var(--border-1)
}
.historyItem___PJP2b {
    padding: 0 calc(var(--msh-spacing-unit) * 4);
    width: 100%
}
.historyItem___PJP2b .groupTitle___irePU {
    font-weight: 700;
    padding: calc(var(--msh-spacing-unit) * 2);
    font-size: 18px;
    line-height: 24px;
    margin-bottom: 8px
}
.historyItem___PJP2b .contentBox___OrRSj {
    padding: calc(var(--msh-spacing-unit) * 3);
    cursor: pointer;
    margin-bottom: calc(var(--msh-spacing-unit) * 2);
    transition: all var(--animation-duration) var(--animation-transition);
    border-color: transparent
}
.historyItem___PJP2b .contentBox___OrRSj em {
    color: var(--main-1);
    font-style: normal
}
.historyItem___PJP2b .contentBox___OrRSj br {
    display: none
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 {
    width: 100%;
    gap: 8px;
    display: flex;
    flex-direction: column
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt {
    justify-content: space-between
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .name___OEWak {
    padding-left: calc(var(--msh-spacing-unit) * .5);
    display: flex;
    align-items: center
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .name___OEWak img {
    width: 20px;
    height: 20px;
    border-radius: 100%
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .name___OEWak .defaultIcon___JnlfO {
    padding-left: 4px;
    font-size: 14px
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .name___OEWak .nameStr___X0eP7 {
    margin-left: 4px
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .name___OEWak .tag___BNlec {
    height: 22px;
    margin-right: calc(var(--msh-spacing-unit) * 2)
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .searched___jC0Xk {
    font-weight: 600
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .time___BiTnc {
    display: block;
    flex-shrink: 0;
    padding-left: calc(var(--msh-spacing-unit) * 1)
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .actions___oPOPx {
    display: none;
    padding-left: calc(var(--msh-spacing-unit) * 1)
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .actions___oPOPx .actionBtn___OpJST {
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .actions___oPOPx .actionBtn___OpJST .icon___S650t {
    font-size: 14px
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .actions___oPOPx .actionBtn___OpJST.delBtn___fCUyT {
    margin-left: calc(var(--msh-spacing-unit) * 2)
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .titleLine___dwqZt .actions___oPOPx .actionBtn___OpJST.delBtn___fCUyT .icon___S650t {
    color: var(--error-main)
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .content___ig5dI {
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .content___ig5dI br {
    display: none
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .refsWrap___rhysy .refItem___UGGzS {
    min-width: 140px;
    max-width: calc(50% - var(--msh-spacing-unit));
    flex: 1 1;
    background-color: transparent;
    transition: all .3s;
    border-color: var(--msh-chat-history-item-border)
}
.historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .refsWrap___rhysy .imageItem___G_CuZ {
    background-color: transparent;
    transition: all .3s;
    border-color: var(--msh-chat-history-item-border);
    width: calc((100% - 16px) / 3)
}
.historyItem___PJP2b .contentBox___OrRSj:hover {
    background-color: var(--msh-chat-history-itme-bg);
    border-color: var(--msh-chat-history-itme-bg);
    box-shadow: var(--msh-chat-list-file-shadow)
}
.historyItem___PJP2b .contentBox___OrRSj:hover .contentContainer___hGhn8 .refsWrap___rhysy .refItem___UGGzS,.historyItem___PJP2b .contentBox___OrRSj:hover .contentContainer___hGhn8 .refsWrap___rhysy .imageItem___G_CuZ {
    border-color: var(--msh-chat-history-item-border)
}
.historyItem___PJP2b .contentBox___OrRSj:hover .contentContainer___hGhn8 .refsWrap___rhysy .refItem___UGGzS:not(.no-preview):hover,.historyItem___PJP2b .contentBox___OrRSj:hover .contentContainer___hGhn8 .refsWrap___rhysy .imageItem___G_CuZ:not(.no-preview):hover {
    border-color: var(--msh-chat-history-item-border-hover)
}
.historyItem___PJP2b .contentBox___OrRSj:hover .contentContainer___hGhn8 .titleLine___dwqZt .time___BiTnc {
    display: none
}
.historyItem___PJP2b .contentBox___OrRSj:hover .contentContainer___hGhn8 .titleLine___dwqZt .actions___oPOPx {
    display: flex
}
@media (min-width: 600px) {
    .historyItem___PJP2b .groupTitle___irePU {
        font-size:24px;
        line-height: 34px
    }
    .historyItem___PJP2b .contentBox___OrRSj .contentContainer___hGhn8 .refsWrap___rhysy .imageItem___G_CuZ {
        width: calc((100% - 32px)/5);
        max-width: calc((100% - 32px)/5);
        min-width: calc((100% - 32px)/5)
    }
}
.historyModal___qTQKs {
    display: none
}
.historyModal___qTQKs.show___WthR7 {
    display: block
}
.historyModal___qTQKs .mark___l6N_v {
    min-width: 375px;
    overflow-x: auto;
    position: fixed;
    top: 0;
    width: 100%;
    height: 100%;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1000;
    background: var(--msh-chat-history-bg);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px)
}
.historyModal___qTQKs .closeBtn___oHhJS {
    position: fixed;
    top: calc(var(--msh-spacing-unit) * 2);
    left: calc(var(--msh-spacing-unit) * 5);
    background: var(--msh-chat-history-close-bg);
    z-index: 1050
}
.historyModal___qTQKs .closeBtn___oHhJS:hover {
    background: var(--msh-chat-history-close-bg-hover)
}
.historyModal___qTQKs .closeBtn___oHhJS .icon___AKlK1 {
    font-size: 24px;
    color: var(--msh-chat-history-btn-color)
}
.historyContainer___SeB_t {
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    min-width: 375px;
    overflow-x: auto;
    z-index: 1010
}
.historyContainer___SeB_t .chatHistory___EbmZH {
    overflow: auto
}
.historyContainer___SeB_t .chatHistory___EbmZH .deleteArea___o72HN {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 9999
}
.historyContainer___SeB_t .chatHistory___EbmZH .historyTitle___F_iam {
    font-weight: 700;
    text-align: center;
    padding: calc(var(--msh-spacing-unit) * 4) 0;
    font-size: 24px;
    line-height: 24px
}
.historyContainer___SeB_t .chatHistory___EbmZH .itemContainer___V43GG {
    margin: 0 auto;
    max-width: 792px
}
.historyContainer___SeB_t .chatHistory___EbmZH .itemContainer___V43GG .checkbox___LhI_V {
    padding-bottom: 20px;
    margin-top: auto
}
.historyContainer___SeB_t .chatHistory___EbmZH .itemContainer___V43GG .deleteMode___F_6zf {
    pointer-events: none
}
.historyContainer___SeB_t .chatHistory___EbmZH .deleteContainer___jizy_ {
    cursor: pointer
}
.historyContainer___SeB_t .chatHistory___EbmZH .placeholder___DAy06 {
    height: 76px
}
.historyContainer___SeB_t .chatHistory___EbmZH .outContainer___TvUCY {
    display: flex;
    justify-content: center;
    width: 100%;
    margin: 0 auto 24px;
    padding: 12px calc(var(--msh-spacing-unit)*4) 0
}
.historyContainer___SeB_t .chatHistory___EbmZH .sticky___gC2M6 {
    position: absolute;
    top: 0;
    right: 2px;
    z-index: 20;
    background: var(--msh-chat-history-bg);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px)
}
.historyContainer___SeB_t .chatHistory___EbmZH .sticky___gC2M6 .inputContainer___EVl6c {
    padding: 8px 16px
}
.historyContainer___SeB_t .chatHistory___EbmZH .sticky___gC2M6 .inputContainer___EVl6c .closeArea___rNugK {
    height: 40px
}
.historyContainer___SeB_t .chatHistory___EbmZH .inputContainer___EVl6c {
    position: relative;
    display: flex;
    max-width: 760px;
    width: 100%;
    background: var(--msh-chat-input-inner);
    border: 1px solid var(--msh-chat-input-border);
    padding: 16px;
    border-radius: 12px;
    font-size: 14px;
    line-height: 20px;
    color: var(--text-primary)
}
.historyContainer___SeB_t .chatHistory___EbmZH .inputContainer___EVl6c .closeArea___rNugK {
    position: absolute;
    width: 40px;
    height: 56px;
    right: 0;
    top: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer
}
.historyContainer___SeB_t .chatHistory___EbmZH .inputContainer___EVl6c .icon___AKlK1 {
    font-size: 16px;
    margin-right: 8px
}
.historyContainer___SeB_t .chatHistory___EbmZH .inputContainer___EVl6c input {
    border: none;
    background: var(--msh-chat-input-inner);
    width: 100%;
    font-size: 14px;
    line-height: 20px;
    color: var(--text-primary)
}
.historyContainer___SeB_t .chatHistory___EbmZH .inputContainer___EVl6c input:focus {
    outline: none
}
.historyContainer___SeB_t .chatHistory___EbmZH .historyMain___ZQw_i {
    height: calc(100% - 160px)
}
.historyContainer___SeB_t .chatHistory___EbmZH .empty___mksck {
    display: flex;
    height: 100%;
    flex-direction: column;
    align-items: center;
    justify-content: center
}
.historyContainer___SeB_t .chatHistory___EbmZH .empty___mksck .button___cKTA9 {
    margin: 24px 0 48px;
    width: 200px
}
@media (min-width: 600px) {
    .historyContainer___SeB_t .chatHistory___EbmZH .historyTitle___F_iam {
        font-size:36px;
        line-height: 50px
    }
}
.helperText___Fa_zw {
    position: absolute;
    bottom: -20px;
    left: var(--msh-spacing-unit);
    margin: 0
}
.TargetBox___wtHL5 {
    padding: 0;
    margin: 0;
    text-align: center;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    min-width: 375px;
    min-height: 460px;
    display: none
}
.TargetBox___wtHL5.DropBox____hfLi {
    z-index: 999;
    display: block;
    backdrop-filter: blur(25px);
    -webkit-backdrop-filter: blur(25px);
    padding: 40px 30px
}
.TargetBox___wtHL5 .inner___lep5B {
    height: 100%;
    width: 100%;
    padding: 16px;
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 30px;
    border: 3px dashed var(--border-2)
}
.TargetBox___wtHL5 .drop_area___MA23Y {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    gap: 30px;
    max-width: 635px
}
.TargetBox___wtHL5 .drop_area___MA23Y img {
    width: 126px
}
.TargetBox___wtHL5 .drop_area___MA23Y .title___qtFnk {
    font-size: 32px;
    line-height: 40px;
    font-weight: 700;
    color: var(--text-primary)
}
.TargetBox___wtHL5 .drop_area___MA23Y .desc___XjcGo {
    font-size: 20px;
    line-height: 28px;
    color: var(--text-secondary)
}
.login-pop-layout {
    height: 140px;
    padding-top: 28px
}
.login-pop-layout_writer {
    margin: 0;
    height: 42px;
    line-height: 42px
}
.login-pop-layout_writer span {
    font-size: 30px
}
@media (max-width: 600px) {
    .login-pop-layout {
        height:84px;
        padding-top: 13px
    }
    .login-pop-layout_writer {
        height: 29px;
        line-height: 29px
    }
    .login-pop-layout_writer span {
        font-size: 24px
    }
}
.authContainer___sdOFY {
    min-width: 375px
}
.authContainer___sdOFY .header___zjsk2 {
    height: 68px
}
.authContainer___sdOFY .container___pA0Wc {
    padding: 0 calc(var(--msh-spacing-unit) * 4);
    flex: 1 1
}
.authContainer___sdOFY .container___pA0Wc .content___XV6w1 {
    max-width: 636px;
    width: 100%;
    overflow: hidden;
    border-radius: calc(var(--border-radius) * 2.5);
    border: 1px solid var(--border-1)
}
.authContainer___sdOFY .container___pA0Wc .content___XV6w1 .top___N9wca {
    height: 84px;
    background: var(--msh-chat-login-content-top-bg)
}
.authContainer___sdOFY .container___pA0Wc .content___XV6w1 .top___N9wca .textBox___L34Ov {
    position: relative;
    top: 4px;
    font-size: 24px;
    line-height: 28px;
    font-weight: 700
}
.authContainer___sdOFY .footer___LOQIe {
    height: 56px
}
@media (min-width: 600px) {
    .authContainer___sdOFY .container___pA0Wc .content___XV6w1 .top___N9wca {
        height:128px
    }
    .authContainer___sdOFY .container___pA0Wc .content___XV6w1 .top___N9wca .textBox___L34Ov {
        font-size: 32px;
        line-height: 48px
    }
}
.phoneLogin___SacG7 {
    min-height: 230px
}
.phoneLogin___SacG7 .loginLayout___K4i5U {
    display: flex;
    flex-direction: row
}
.phoneLogin___SacG7 .loginLayout___K4i5U .loginLayoutLeft___fUj6Z {
    flex: 1 1
}
.phoneLogin___SacG7 .loginLayout___K4i5U .loginLayoutRight___crLwH {
    width: 174px;
    height: 260px;
    border-left: 1px solid var(--border-main);
    margin-left: 24px;
    padding-left: 24px
}
.phoneLogin___SacG7 .loginLayout___K4i5U .loginLayoutRight___crLwH .loginLayoutRightTitle___DdOwK {
    font-size: 16px;
    font-weight: bolder;
    margin: 0;
    padding: 0;
    line-height: 25px
}
.phoneLogin___SacG7 .loginLayout___K4i5U .loginLayoutRight___crLwH .loginLayoutRightQR___NfrMC {
    margin-top: 23px
}
.phoneLogin___SacG7 .controlLayout___dgRlA {
    display: flex;
    justify-content: center;
    margin-top: 24px
}
.phoneLogin___SacG7 .controlLayout___dgRlA a {
    font-weight: 700
}
.phoneLogin___SacG7 .lable___VHyw6 {
    margin-bottom: 24px
}
.phoneLogin___SacG7 .lable___VHyw6 span {
    font-size: var(--font-size-md);
    font-weight: 700
}
.phoneLogin___SacG7 .item___rJfSj {
    position: relative
}
.phoneLogin___SacG7 .itemHelper___DbmPN {
    height: 20px;
    margin-bottom: 4px
}
.phoneLogin___SacG7 .verify___P7vR9 {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    width: 102px;
    height: 25px
}
.phoneLogin___SacG7 .verify___P7vR9 .divider___iCjot {
    height: 12px
}
.phoneLogin___SacG7 .agreeText___EUMp4 {
    font-size: 12px;
    color: var(--text-secondary)
}
.phoneLogin___SacG7 .checkbox___K3VQG {
    padding: calc(var(--msh-spacing-unit) * .5);
    margin-right: var(--msh-spacing-unit)
}
.phoneLogin___SacG7 .checkbox___K3VQG:not(.checked___Vjy9T) {
    color: var(--text-secondary)
}
.phoneLogin___SacG7 .checkbox___K3VQG .MuiSvgIcon-root {
    font-size: 20px
}
@media (min-width: 600px) {
    .phoneLogin___SacG7 {
        min-height:335px
    }
    .phoneLogin___SacG7 .verify___P7vR9 {
        width: 112px;
        height: 25px
    }
    .phoneLogin___SacG7 .verify___P7vR9 .divider___iCjot {
        height: 20px
    }
    .phoneLogin___SacG7 .agreeText___EUMp4 {
        font-size: 14px
    }
}
.geetest_captcha .geetest_box,.geetest_captcha .geetest_header,.geetest_captcha .geetest_container,.geetest_captcha .geetest_footer {
    background: var(--msh-paper-bg)
}
.geetest_captcha .geetest_backimg>div {
    transition: all .3s!important
}
.geetest_captcha .geetest_header .geetest_title {
    color: var(--text-primary)!important
}
.geetest_captcha .geetest_header .geetest_status_bar {
    background-color: var(--primary-main)!important
}
.geetest_captcha .geetest_btn {
    background-color: var(--primary-main)!important;
    background-image: none!important
}
.geetest_captcha .geetest_footer_right {
    display: none
}
.geetest_captcha .geetest_feedback {
    display: none!important
}
.qrcodeLogin___SyLo_ .agreementLink___edm8P {
    font-family: PingFang SC;
    font-weight: 600;
    line-height: 20px;
    letter-spacing: 0em;
    color: #333a4b
}
.qrcodeLogin___SyLo_ a {
    text-decoration: underline
}
.qrcodeLogin___SyLo_ iframe {
    height: 280px
}
.qrcodeLogin___SyLo_ .loginContainer___IFXUE {
    height: 260px;
    text-align: center
}
@media (min-width: 600px) {
    .qrcodeLogin___SyLo_ {
        position:relative
    }
    .qrcodeLogin___SyLo_ iframe {
        height: 230px;
        transform: scale(.75);
        left: -74px;
        top: -17px;
        position: absolute
    }
}
.qrcodeLayout___EPXGC {
    border: 1px solid #e2e2e2;
    width: 150px;
    height: 150px;
    background-color: #fff;
    margin: 0;
    display: flex;
    justify-content: center;
    align-items: center
}
.qrcodeLayout___EPXGC svg,.qrcodeLayout___EPXGC img {
    padding: 0
}
.miniprogram___Tq8lH {
    min-height: 276px
}
.miniprogram___Tq8lH .qrcode___COQ_n {
    padding: 4px;
    border-radius: var(--lg, 16px);
    background: #FFF
}
.miniprogram___Tq8lH .text___PTnsz {
    color: var(--text-secondary)
}
.miniprogram___Tq8lH .button___UpYHJ {
    padding: 8px;
    margin: 9px auto 0;
    width: 100%;
    text-transform: none
}
.loginContainer___SoCmh .title___n_X10 {
    font-size: var(--font-size-md);
    font-weight: var(--font-bold);
    margin-bottom: 24px
}
.authModal___AXYNS {
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1050;
    background: rgba(255,0,0,.034);
    min-width: 375px;
    background: var(--msh-modal-bg);
    backdrop-filter: blur(15px);
    -webkit-backdrop-filter: blur(15px)
}
.authModal___AXYNS .header___LrmZG {
    height: 68px
}
.authModal___AXYNS .container___HvNfq {
    padding: 0 calc(var(--msh-spacing-unit) * 4);
    flex: 1 1
}
.authModal___AXYNS .container___HvNfq .content___axoSN {
    max-width: 636px;
    width: 100%;
    overflow: hidden;
    border-radius: calc(var(--border-radius) * 2.5);
    border: 1px solid var(--border-1)
}
.authModal___AXYNS .container___HvNfq .content___axoSN .top___IIjeE {
    height: 84px;
    background: var(--msh-chat-login-content-top-bg);
    padding: 0 0 0 16px
}
.authModal___AXYNS .container___HvNfq .content___axoSN .top___IIjeE.dark___u9VpT {
    background: var(--msh-chat-login-content-top-bg) url(./static/top_bg_dark.b4029bd6.png) no-repeat right center / 107% auto
}
.authModal___AXYNS .container___HvNfq .content___axoSN .top___IIjeE.light___MyIl_ {
    background: var(--msh-chat-login-content-top-bg) url(./static/top_bg_light.ba34373a.png) no-repeat right center / 107% auto
}
.authModal___AXYNS .container___HvNfq .content___axoSN .top___IIjeE .textBox___QemLf {
    position: relative;
    font-size: 24px;
    line-height: 28px;
    font-weight: 700
}
.authModal___AXYNS .container___HvNfq .content___axoSN .loginContent___Oy5xD {
    padding: calc(var(--msh-spacing-unit) * 4) calc(var(--msh-spacing-unit) * 4) calc(var(--msh-spacing-unit) * 8)
}
.authModal___AXYNS .footer___Quejz {
    height: 56px
}
@media (min-width: 600px) {
    .authModal___AXYNS .container___HvNfq .content___axoSN .top___IIjeE {
        height:140px;
        padding: 0 0 0 32px
    }
    .authModal___AXYNS .container___HvNfq .content___axoSN .top___IIjeE .textBox___QemLf {
        font-size: 32px;
        line-height: 48px
    }
    .authModal___AXYNS .container___HvNfq .content___axoSN .loginContent___Oy5xD {
        padding: calc(var(--msh-spacing-unit) * 6 - 1px) calc(var(--msh-spacing-unit) * 10) calc(var(--msh-spacing-unit) * 8)
    }
}
.concurrentTip___tAc_q {
    width: 100vw;
    height: 56px;
    padding: calc(var(--msh-spacing-unit) * 2);
    color: var(--text-primary);
    background: var(--msh-chat-hard-tip-bg);
    display: flex;
    justify-content: space-between;
    align-items: center;
    line-height: 1.2;
    text-align: center;
    position: relative;
    z-index: 1000
}
.concurrentTip___tAc_q .placehokder___eTr1A {
    width: 24px
}
.concurrentTip___tAc_q .icon___q_Mc6 {
    font-size: 24px;
    cursor: pointer
}
@media (min-width: 600px) {
    .concurrentTip___tAc_q {
        height:36px
    }
}
.back___uyBkH {
    position: absolute;
    z-index: 3
}
.back-button___X1mhz {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ffffff;
    box-shadow: 0 0 16px 1px #0000001f;
    cursor: pointer
}
.svg____hjRy {
    user-select: none;
    display: inline-block;
    fill: currentColor;
    vertical-align: middle;
    flex-shrink: 0;
    transition: fill .2s cubic-bezier(.4,0,.2,1) 0ms;
    font-size: 24px;
    color: #000
}
.isDone___a6OpJ {
    top: 10px;
    left: 20px
}
.notDone___sLy_H {
    top: 40px;
    left: 60px
}
.noteCover___fbx0j {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #00000073;
    z-index: 1
}
.noteContainer___zTufb {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 2;
    transform: translate(-50%,-50%);
    width: 360px;
    padding: 24px;
    font-size: 14px;
    line-height: 1.5715;
    word-wrap: break-word;
    background-color: #fff;
    border-radius: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    color: #141414;
    box-shadow: 0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d
}
.title___uwQTm {
    font-weight: 600;
    font-size: 16px
}
.titleContainer___NXjcT {
    display: flex;
    gap: 12px;
    align-items: center;
    margin-bottom: 12px;
    flex-wrap: nowrap
}
.note___xqq01 {
    font-size: 20px;
    color: inherit;
    user-select: none;
    width: 1em;
    height: 1em;
    display: inline-block;
    fill: currentColor;
    vertical-align: middle;
    flex-shrink: 0;
    transition: fill .2s cubic-bezier(.4,0,.2,1) 0ms;
    outline: none
}
.content___PkM0Z {
    padding-left: 34px;
    margin-bottom: 28px
}
.buttonContainer___V7PpB {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px
}
.wait___lKMrO {
    height: 30px;
    width: 86px;
    padding: 4px 15px;
    border-radius: 4px;
    border-color: #9c5eff;
    background: #9c5eff
}
.wait___lKMrO:hover {
    color: #fff!important;
    border-color: #9c5eff!important;
    background: #9c5eff!important
}
.escape___eBuxJ {
    height: 30px;
    width: 86px;
    padding: 4px 15px;
    border-radius: 4px;
    border-color: #8c8c8c;
    color: #8c8c8c;
    background-color: #fff
}
.escape___eBuxJ:hover {
    border-color: #8c8c8c!important;
    color: #8c8c8c!important;
    background: #fff!important
}
.AiPPTContainer____jYnI {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 10
}
.previewImg___dv1wT {
    width: 100%;
    object-fit: contain;
    border-radius: 15px;
    overflow: hidden;
    aspect-ratio: 16/9
}
.selectTemplateBtn___I5qZU {
    background: linear-gradient(277.33deg,#8948EB 8.02%,#9D5EFB 87.79%);
    border: 1px solid #B182F7CC;
    height: 38px;
    padding: 8px 15px;
    gap: 4px;
    border-radius: 10px;
    font-family: PingFang SC;
    font-size: 14px;
    font-weight: 400;
    line-height: 20px;
    letter-spacing: .25px;
    text-align: left;
    color: #f5f9fff2;
    transition: all var(--animation-duration) var(--animation-timing-function)
}
.selectTemplateBtn___I5qZU:hover {
    opacity: .6
}
.AiPPT___LEp5b {
    width: 100%;
    height: 100%
}
.contentContainer___Ip8di {
    display: flex;
    flex-direction: column;
    gap: 8px
}
.buttonContainer___njQSq {
    display: flex;
    gap: 8px
}
.downloadButton___i0R3X {
    min-width: 88px;
    padding: 10px 15px;
    font-family: PingFang SC;
    font-size: 14px;
    font-weight: 400;
    line-height: 20px;
    letter-spacing: .25px;
    text-align: center;
    box-sizing: border-box
}
.selectTemplateIcon___ySbP9 {
    font-size: 20px
}
.canPreviewPPT___HMyMX {
    cursor: pointer
}
.idn___ei_6X {
    width: 144px;
    height: 60px;
    background-color: #fff;
    position: fixed;
    top: 0;
    left: 0
}
.globalCoverContainer___xppUn {
    position: fixed;
    z-index: 1200
}
.myAgentAnim .myAgentBoxHide {
    height: 0;
    opacity: 0;
    animation: hides .2s ease 1;
    margin-bottom: 0
}
@keyframes hides {
    0% {
        height: 40px;
        margin-bottom: 12px;
        opacity: 1
    }
    50% {
        opacity: 0
    }
    to {
        height: 0;
        opacity: 0;
        margin-bottom: 0
    }
}
.login____RTRY {
    width: 40px;
    height: 40px;
    font-size: 16px;
    font-weight: 700;
    border-radius: 50%;
    background-color: var(--msh-chat-avatar-me-bg);
    color: var(--common-white)
}
.img____tAMC {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    overflow: hidden
}
.rightLogin___zH_dI {
    position: absolute;
    top: calc(var(--msh-spacing-unit) * 2);
    right: calc(var(--msh-spacing-unit) * 5);
    cursor: pointer
}
.user___ias7U {
    font-size: 16px;
    font-weight: 700;
    border-radius: 50%;
    background-color: var(--msh-chat-avatar-me-bg);
    color: var(--common-white)
}
.container___vDmoU .title___OAgk1 {
    display: flex;
    justify-content: space-between;
    align-items: center
}
.container___vDmoU .input___OqEA0 {
    margin-top: 16px
}
.container___vDmoU .input___OqEA0 .MuiInputBase-input {
    font-size: 14px
}
.container___vDmoU .rates___ZMsXL .rate___CJOsg {
    padding: calc(2 * var(--msh-spacing-unit));
    border-radius: 8px;
    background: var(--msh-chat-fb-rate-bg);
    cursor: pointer;
    transition: all .3s
}
.container___vDmoU .rates___ZMsXL .rate___CJOsg.select___jH0fx {
    background: var(--primary-main)
}
.container___vDmoU .rates___ZMsXL .rate___CJOsg .icon___bgc06 {
    width: 28px;
    height: 28px;
    background-size: 100% 100%;
    margin: 0 auto
}
.container___vDmoU .footer___pcgJU {
    display: flex;
    justify-content: flex-end;
    gap: 8px
}
.avatarWidget___es3ap {
    color: var(--msh-chat-history-btn-color)
}
.avatarMenu___AvTWm {
    position: absolute;
    left: 52px
}
.avatarMenu___AvTWm .MuiMenuItem-root {
    height: 44px;
    padding: 16px 8px;
    gap: 16px
}
.avatarMenu___AvTWm .MuiMenu-list {
    width: 138px;
    padding-top: 0!important;
    padding-bottom: 0!important;
    border-radius: 8px
}
.modalContainer___r5ELB {
    position: absolute;
    bottom: -78px;
    left: 64px;
    width: 324px;
    padding: 20px;
    border: 1px solid var(--msh-chat-user-guide-border);
    border-radius: 12px;
    background: var(--msh-chat-user-guide-background);
    display: flex;
    gap: 8px;
    flex-direction: column;
    box-shadow: 0 8px 25px #0000000d;
    z-index: 1;
    transition: all var(--animation-duration) var(--animation-transition)
}
.title___JHNgc {
    font-size: 16px;
    font-weight: 600;
    line-height: 28px;
    text-align: left
}
.contentContainer___upoSi {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    height: 100%;
    gap: 8px;
    cursor: pointer
}
.img___w6qsW {
    cursor: default;
    width: 40px!important;
    height: 40px!important
}
.content___fRrYf {
    width: 129px;
    height: 40px;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 4px
}
.content___fRrYf>div {
    font-size: 14px;
    font-weight: 600;
    line-height: 20px;
    letter-spacing: .25px;
    text-align: left
}
.visible___E55gr {
    opacity: 1
}
.hide___uahw2 {
    opacity: 0;
    pointer-events: none
}
.loginButton___3vHl4 {
    font-size: 16px;
    margin-top: 6px;
    padding: 6px 24px
}
.myAgent___djnd_ {
    width: 60px;
    display: flex;
    background-color: var(--color-bg-1);
    flex-direction: column;
    align-items: center;
    padding: 14px 0 1px;
    border-radius: 12px;
    transition: all .3s ease;
    box-shadow: 0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d;
    transform: all ease .3s
}
.myAgent___djnd_.en___Q96DA .myAgentHome___PG6IZ:after {
    content: "Go Back"
}
.myAgent___djnd_.en___Q96DA .myAgentTool___Y1_mC .myAgentToolIconNew___DBZrW:after {
    content: "New Chat"
}
.myAgent___djnd_.en___Q96DA .myAgentTool___Y1_mC .myAgentToolIconHistory___GTLWk:after {
    content: "History"
}
.myAgent___djnd_.en___Q96DA .myAgentTool___Y1_mC .myAgentToolIconSquare___Rj1o_:after {
    content: "Kimi+"
}
.myAgent___djnd_ .myAgenetPreload___BWFdc {
    width: 0;
    height: 0;
    overflow: hidden
}
.myAgent___djnd_ .myAgentHome___PG6IZ:after {
    width: 73px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    content: "\56de\5230\9996\9875";
    position: absolute;
    left: 64px;
    display: none;
    font-size: 14px;
    letter-spacing: .25px;
    background: #010101;
    border-radius: 8px;
    animation: show___PuZhP .3s ease 1;
    color: #f5f9fff2;
    margin-top: 2px
}
.myAgent___djnd_ .myAgentHome___PG6IZ {
    width: 32px;
    height: 32px;
    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABhCAYAAAApxKSdAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAUUSURBVHgB7Z29bhtHFIWPHQN2J7lKqnhYpYvpIukCbJEAKQJEegLReYFIT0DrCSI9QEDqCSIDaQIEIOukiJwyza5SJWlId3FFz+HuGmuSSw6p+dlZ3g84luhdUeI9M3fmziyXgBCUe/DHYY0Wj/tgWmjV42zFcWe4MIBBPNJ6qqW0uvAbXFvQgKzQK62bQhkaCIPc10q1Zi3XH1o/IG9cwUm0RogrgDY1KmLgHYX9DvyiBvDYI77XmiD+oLlQHw7hIDoCMBOt1U9w0BsU9mOAtaUUFk3oQoIfzAQFCf5dNMEdTFCQ4NtQih1NSIGgf3ibxOJt5UrAB1gNK72vIdjiI61HWr+YnNxDXK0rJiULsV65GJeiIescLSTTeobKSutiCuojX8kU3MBx4I3WeNVBBRl4fWiCyoB8v2JAAkk9PmDwT8sH1TEghRjgC27scCx41wO43KAg+ILxTvhNaUACwTc04Z0B30LwzTzm5Rjw3sgseIG1wGMawMBPIOQcqvzrNIMHOg9Q5KK953O90/rFC+BhJRH8PQZ+fu7SjC7HAIV95yu99vjlxfvBJx8nwHd6IfNJAkccOjHg6OgIs9lsra6vr2GTNE03/k7q8HAhyJ/2gM9O65/4kT7/mwEcoZwYsPQiV3BwcABb9Ho9KKU2njccDjGdLlxx+InBBPBAAR86ydRPaIC9SASi3+8bnXd+fr78nw8NJ39uDJjXAVFPP7dp/VmWLR9g6w6Huo/IOTk5MTpvZesn/93AiP/dXCwd9SyILT9Jko3n1bZ+8s8rGPGvoVHbEXcPMM39V1dX9Qd/19PPNxta959D4HUGF0RrAFs/8/8mxuPxXLUwtfx2WX+cxdivZ3DFA0SKldZPuPTAKrikbOlMOX+9zFu/Q2iAQoSY5H7mfeb/tXCT8MdneU9wNNCuQUXZA0ynnrUznyqOcrspUY4BJunHqPU3gOgMsNr6G0B0BpgUXrG0fhKVAaaF1/HxMWIhKgNMcj9Tz82Nk6rVGdav/tJ5eraJ0Wi01XPq1r/xOS8uLkJc6XYnRTMNXdf62eIvLy+jyftVghnQ7Xahe8FW59fBTRYOzosDNI1hJdz0lBQkBflkMBjMU5iL13pXRb8fYAJrB/a2db0oFHthAOEUliaYFHE+aaUBdZsvvFhApyM0idYZwOCvW4JmIWdSzPmidQaYrAGZ7iX4oFUGnJ2dGdUCTRqMozeANQCLsE6nA10JG/0Mx4KmDMbBCjEWR2yxu8LAM98vXelmCA2ovVLCI8EMYODWbpbvCXtTBzQVMSAwYkBgxIDAtNKAXWdGIRADAiMpKDA0IIMQikx6QGDEgMCIAYGRMSAsMgaEhgbcQgjFa+kBYZnIGBCWWzEgLPNBOJ6Fk/aR8Y5ZCvktKwX/PJZ7xoVjfs+4chYU11tK2sE85qUBLyH4Zh5z6QHhGPOf6r2j+TEbcgdFP2RaHX5TrYQlDflj5RXE5Q1cG/lWnhYpReUGKdUewGnRmhvnCJbgmxey8sHiZ8iwF3AsUBBckKHI/SWLq6HsBc8huML4DiK80D6WnBqLzN68UFCmopheYJOVYgcU5FOVbAVfYUcUZGoaLPglCtITdg2+tZUFBTFh2+ArWEYh/7z0WIIQSiM43lt5AWAmWhLHylN4QmkNEXfAbGqEQKsHSfHLYwiSq8AnaAAKeaW3D8VbijwNW5nh3IN9FPI/jnpaPKZi2/SfFuJu4W3x9RqWL+N5C+7ruKpBAgLkAAAAAElFTkSuQmCC) no-repeat;
    background-size: 100% 100%;
    cursor: pointer;
    margin-bottom: 16px
}
.myAgent___djnd_ .myAgentHome___PG6IZ:hover:after {
    display: block
}
.myAgent___djnd_ .myAgentHome___PG6IZ img {
    width: 100%
}
.myAgentLine___Isl6E {
    width: 24px;
    height: 1px;
    background-color: #ece7e7;
    border-radius: 12px;
    margin-bottom: 16px;
    cursor: pointer
}
.myAgent___djnd_ .myAgentLine0___AeBRd {
    margin-top: 8px
}
.myAgent___djnd_ .myAgentTool___Y1_mC {
    width: 40px;
    height: 40px;
    border-radius: 12px;
    margin-bottom: 10px;
    cursor: pointer
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIcon___gaAKI {
    width: 40px;
    height: 40px;
    background-position: 0px 0px;
    background-repeat: no-repeat;
    cursor: pointer;
    position: relative
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIcon___gaAKI img {
    position: absolute;
    top: 8px;
    left: 8px;
    opacity: 0
}
.myAgentToolIcon___gaAKI:hover{
    background-color: #f0f0f0;
    border-radius: 12px;
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconNew___DBZrW:after {
    width: 87px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    content: "\5f00\542f\65b0\4f1a\8bdd";
    position: absolute;
    left: 54px;
    display: none;
    font-size: 14px;
    letter-spacing: .25px;
    background: #010101;
    border-radius: 8px;
    animation: show___PuZhP .3s ease 1;
    color: #f5f9fff2;
    margin-top: 6px
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconNew___DBZrW {
    background-size: 24px;
    background-image: url(./../../../assets/images/talk.svg);
    background-position: 8px 8px;
    color: var(--color-text-1)
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconNew___DBZrW:hover {
    background-image: none
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconNew___DBZrW:hover:after {
    display: block
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconNew___DBZrW:hover img {
    opacity: 1
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconHistory___GTLWk:after {
    width: 73px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    content: "\5386\53f2\4f1a\8bdd";
    position: absolute;
    left: 54px;
    display: none;
    font-size: 14px;
    letter-spacing: .25px;
    background: #010101;
    border-radius: 8px;
    animation: show___PuZhP .3s ease 1;
    color: #f5f9fff2;
    margin-top: 6px
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconHistory___GTLWk {
    background-size: 24px;
    background-image: url(./../../../assets/images/historybg.svg);
    background-position: 8px 8px;
    color: var(--color-text-1)
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconHistory___GTLWk:hover {
    background-image: none;
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconHistory___GTLWk:hover:after {
    display: block
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconHistory___GTLWk:hover img {
    opacity: 1;
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconSquare___Rj1o_:after {
    width: 58px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    content: "Kimi+";
    position: absolute;
    left: 54px;
    display: none;
    font-size: 14px;
    letter-spacing: .25px;
    background: #010101;
    border-radius: 8px;
    animation: show___PuZhP .3s ease 1;
    color: #f5f9fff2;
    margin-top: 6px;
    z-index: 1
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconSquare___Rj1o_ {
    background-size: 24px;
    background-image: url(./../../../assets/images/agent.svg);
    background-position: 8px 8px;
    color: var(--color-text-1)
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconSquare___Rj1o_:hover {
    background-image: none;
    color: var(--msh-chat-icon-color)
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconSquare___Rj1o_:hover:after {
    display: block
}
.myAgent___djnd_ .myAgentTool___Y1_mC .myAgentToolIconSquare___Rj1o_:hover img {
    opacity: 1
}
.myAgent___djnd_ .myAgentToolSquare___dbLm1 {
    margin-bottom: 16px
}
.myAgent___djnd_ .myAgentTool___Y1_mC:hover {
    background-color: var(--nav-bg)
}
.myAgent___djnd_ .myAgentBox___zrCit {
    width: 32px;
    height: 32px;
    margin-bottom: 12px;
    cursor: pointer;
    display: flex;
    justify-content: center;
    align-items: center;
    animation: show___PuZhP .35s cubic-bezier(.4,0,.2,1) 1,apper___Fwe2E .15s cubic-bezier(.4,0,.2,1) 1;
    transform: all cubic-bezier(.4,0,.2,1) .3s;
    position: relative
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e {
    width: 100%;
    height: 100%;
    transition: all .15s;
    position: relative
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e .myAgentBoxImgLayout___u69B_ {
    position: relative
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e .myAgentBoxImgLayout___u69B_ div {
    width: 100%;
    height: 100%
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e .myAgentBoxImgLayout___u69B_ .myAgentBoxImgLayoutTip___xHV4m {
    border-radius: 8px;
    border: .5px solid #13131A;
    height: 28px;
    line-height: 28px;
    background: #010101;
    font-size: 14px;
    color: #fff;
    transform: scale(.8)!important;
    transform-origin: 0 50%;
    padding: 0 8px;
    position: absolute;
    left: 44px;
    top: 2px;
    white-space: nowrap;
    display: none;
    animation: show___PuZhP .25s ease 1
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e .myAgentBoxImgLayout___u69B_ img {
    width: 100%;
    height: 100%;
    border-radius: 32px;
    transition: all .15s
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e .myAgentBoxImgLayout___u69B_:hover .myAgentBoxImgLayoutTip___xHV4m {
    display: block
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e .myAgentBoxImgDelete___qXZuq {
    width: 9.6px;
    height: 9.6px;
    background-color: #ed4245;
    border-radius: 100%;
    position: absolute;
    right: -2px;
    bottom: -2px;
    border: 2px solid var(--fill-9);
    box-sizing: content-box;
    transition: opacity .15s;
    opacity: 0
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e .myAgentBoxImgDelete___qXZuq .myAgentBoxImgDeleteInner____Hawc {
    border-radius: 8px;
    border: .5px solid #13131A;
    width: 102px;
    height: 28px;
    text-align: center;
    line-height: 28px;
    background: #010101;
    font-size: 14px;
    color: #fff;
    transform: scale(.8)!important;
    position: absolute;
    left: 11px;
    top: -21px;
    display: none;
    animation: show___PuZhP .35s ease 1
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e .myAgentBoxImgDelete___qXZuq:after {
    display: block;
    content: "";
    width: 6.4px;
    height: 1.6px;
    background: #fff;
    border-radius: 2px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%)
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e .myAgentBoxImgDelete___qXZuq:hover .myAgentBoxImgDeleteInner____Hawc {
    display: block
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e:hover {
    transform: scale(1.25)
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e:hover img {
    border-radius: 10px!important
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e:hover+.myAgentBoxName___mZ6v6 {
    display: block
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxImg___Mgu9e:hover .myAgentBoxImgDelete___qXZuq {
    opacity: 1
}
.myAgent___djnd_ .myAgentBox___zrCit .myAgentBoxName___mZ6v6 {
    position: absolute;
    width: auto;
    white-space: nowrap;
    left: 50px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 14px;
    letter-spacing: .25px;
    background: #010101;
    border-radius: 8px;
    animation: show___PuZhP .3s ease 1;
    color: #f5f9fff2;
    padding: 4px 8px;
    z-index: 100;
    display: none
}
.myAgent___djnd_ .myAgentHead___WYY8b {
    width: 40px;
    height: 40px;
    position: relative;
    transform: scale(.8)
}
.myAgent___djnd_ .myAgentHead___WYY8b div:nth-child(1) {
    left: 0;
    top: 0
}
.myAgent___djnd_ .downloads___VOhKO {
    margin-top: 11px
}
.myAgent___djnd_ .myAgentDownload___FAlpz {
    cursor: pointer;
    background-color: var(--nav-download);
    width: 56px;
    height: 46px;
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative
}
.myAgent___djnd_ .myAgentDownload___FAlpz:last-of-type {
    border-bottom-left-radius: 12px;
    border-bottom-right-radius: 12px
}
.myAgent___djnd_ .myAgentDownload___FAlpz .myAgentDownloadLayout___pEYRP {
    width: 158px;
    height: 206px;
    border-radius: 12px;
    position: absolute;
    background-color: var(--nav-download);
    box-shadow: var(--nav-shadow);
    left: 64px;
    bottom: 0;
    display: none;
    animation: show___PuZhP .3s ease 1
}
.myAgent___djnd_ .myAgentDownload___FAlpz .myAgentDownloadLayout___pEYRP img {
    width: 126px;
    height: 126px;
    margin: 16px 16px 2px
}
.myAgent___djnd_ .myAgentDownload___FAlpz .myAgentDownloadLayout___pEYRP p {
    color: var(--text-2);
    text-align: center;
    line-height: 20px;
    margin: 0;
    padding: 0
}
.myAgent___djnd_ .myAgentDownload___FAlpz:hover .myAgentDownloadLayout___pEYRP {
    display: block
}
.myAgentlight___yK7Gk .myAgentTool___Y1_mC .myAgentToolIconNew___DBZrW:hover {
    background-image: none
}
.myAgentlight___yK7Gk .myAgentTool___Y1_mC .myAgentToolIconNew___DBZrW:hover img {
    opacity: 1
}
.myAgentlight___yK7Gk .myAgentTool___Y1_mC .myAgentToolIconHistory___GTLWk {
    /*background-image: url(./static/history_light.5dbe9ec9.svg)*/
}
.myAgentlight___yK7Gk .myAgentTool___Y1_mC .myAgentToolIconHistory___GTLWk:hover {
    background-image: none
}
.myAgentlight___yK7Gk .myAgentTool___Y1_mC .myAgentToolIconHistory___GTLWk:hover img {
    opacity: 1
}
.myAgentlight___yK7Gk .myAgentTool___Y1_mC .myAgentToolIconSquare___Rj1o_ {
    /*background-image: url(./static/square_light.e46b6e7c.svg)*/
}
.myAgentlight___yK7Gk .myAgentTool___Y1_mC .myAgentToolIconSquare___Rj1o_:hover {
    background-image: none
}
.myAgentlight___yK7Gk .myAgentTool___Y1_mC .myAgentToolIconSquare___Rj1o_:hover img {
    opacity: 1
}
@keyframes show___PuZhP {
    0% {
        opacity: 0
    }
    to {
        opacity: 1
    }
}
@keyframes apper___Fwe2E {
    0% {
        height: 0
    }
    to {
        height: 32px
    }
}
.tooltip___GZ1MZ .msh-tooltip-inner {
    padding: 2px 8px;
    margin-left: 2px;
    line-height: 28px;
    font-size: 14px;
    letter-spacing: .25px;
    background: #010101;
    border-radius: 8px;
    color: #f5f9fff2
}
.myAgentHeadLayout___mhwZk {
    cursor: pointer
}
.layoutNav___jOCfX {
    height: 100%;
    position: relative;
    transition: width .2s ease;
    background-color: transparent
}
.layoutNav___jOCfX .layoutNavMove___j5ets {
    position: absolute;
    top: 50%;
    right: -8px;
    transform: translateY(-50%);
    z-index: 101
}
.layoutNav___jOCfX .layoutNavHot___Gmi0A {
    width: 96px;
    height: 100%
}
.layoutNav___jOCfX .layoutNavLine___qEtli {
    width: 12px;
    height: 26px;
    position: absolute;
    right: -26px;
    top: 50%;
    transform: translateY(-50%);
    cursor: pointer;
    transition: all .2s ease
}
.layoutNav___jOCfX .layoutNavLine___qEtli .layoutNavLine0___fDuov {
    width: 4px;
    height: 13px;
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    background-color: var(--fill-11);
    left: 4px;
    top: 0;
    position: absolute;
    transition: all .2s ease;
    transform-origin: 50% 0
}
.layoutNav___jOCfX .layoutNavLine___qEtli .layoutNavLine1___hkrSK {
    width: 4px;
    height: 13px;
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
    background-color: var(--fill-11);
    left: 4px;
    bottom: 0;
    position: absolute;
    transition: all .2s ease;
    transform-origin: 50% 100%
}
.layoutNav___jOCfX .layoutNavLine___qEtli:after {
    opacity: 0;
    width: 45px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    position: absolute;
    border-radius: 8px;
    border: .5px solid #13131A;
    background: #010101;
    box-shadow: 0 0 2px #00000040,0 0 1px 1px #fff3 inset;
    color: #f5f9fff2;
    left: 18px;
    animation: show___TmKCq .3s ease 1
}
.logo___VUcPA {
    width: 32px;
    height: 32px;
    left: 16px;
    top: 12px;
    position: absolute;
    z-index: 500
}
.logo___VUcPA .logoIcon___eee_3 {
    width: 100%;
    height: 100%;
    cursor: pointer
}
.logo___VUcPA .navBox___ntiEy {
    width: 100vh;
    height: 100vh;
    position: fixed;
    left: 0;
    top: 0;
    z-index: 1000
}
.logo___VUcPA .navContent___JDGQF {
    position: absolute;
    z-index: 1000
}
.en___d3BPh.layoutNavShow___NrDNn .layoutNavLine___qEtli:hover:after {
    content: "Collapse"
}
.en___d3BPh.layoutNavHide___cXSjg .layoutNavLine___qEtli:hover:after {
    content: "Expand"
}
.layoutNavShow___NrDNn {
    width: 68px;
    z-index: 1030
}
.layoutNavShow___NrDNn .layoutNavLine___qEtli {
    opacity: 0
}
.layoutNavShow___NrDNn:hover .layoutNavLine___qEtli,.layoutNavShow___NrDNn .layoutNavHot___Gmi0A:hover .layoutNavLine___qEtli {
    opacity: 1
}
.layoutNavShow___NrDNn .layoutNavLine___qEtli:hover:after {
    content: "\6536\8d77";
    opacity: 1
}
.layoutNavShow___NrDNn .layoutNavLine___qEtli:hover .layoutNavLine0___fDuov {
    background-color: var(--fill-12);
    transform-origin: 50% 0%;
    transform: rotate(17deg) translateY(1px);
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    border-bottom-left-radius: 10px;
    height: 16px
}
.layoutNavShow___NrDNn .layoutNavLine___qEtli:hover .layoutNavLine1___hkrSK {
    background-color: var(--fill-12);
    transform-origin: 50% 100%;
    transform: rotate(-17deg) translateY(-1px);
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
    border-top-left-radius: 10px;
    height: 16px
}
.layoutNavHide___cXSjg {
    width: 0px;
    z-index: 1030
}
.layoutNavHide___cXSjg .layoutNavMove___j5ets {
    right: 0
}
.layoutNavHide___cXSjg .layoutNavLine___qEtli {
    right: -25px
}
.layoutNavHide___cXSjg .layoutNavLine___qEtli .layoutNavLine0___fDuov {
    transform-origin: 50% 0%;
    transform: rotate(-17deg) translateY(1px);
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    border-bottom-right-radius: 10px;
    height: 16px
}
.layoutNavHide___cXSjg .layoutNavLine___qEtli .layoutNavLine1___hkrSK {
    transform-origin: 50% 100%;
    transform: rotate(17deg) translateY(-1px);
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
    border-top-right-radius: 10px;
    height: 16px
}
.layoutNavHide___cXSjg .layoutNavHot___Gmi0A {
    width: 20px
}
.layoutNavHide___cXSjg .layoutNavLine___qEtli:hover:after {
    content: "\5c55\5f00";
    opacity: 1
}
.layoutNavHide___cXSjg .layoutNavLine___qEtli:hover .layoutNavLine0___fDuov {
    background-color: var(--fill-12);
    transform-origin: 50% 0%;
    transform: rotate(-17deg) translateY(1px);
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    border-bottom-right-radius: 10px;
    height: 16px
}
.layoutNavHide___cXSjg .layoutNavLine___qEtli:hover .layoutNavLine1___hkrSK {
    background-color: var(--fill-12);
    transform-origin: 50% 100%;
    transform: rotate(17deg) translateY(-1px);
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
    border-top-right-radius: 10px;
    height: 16px
}
.mainContent___vvQdb {
    height: 100%;
    display: flex;
    background-color: var(--nav-layout)
}
.mainContent___vvQdb.busy___Gqbrv {
    height: calc(100% - 56px)
}
.mainContent___vvQdb .layoutContent___NvxZ_ {
    flex: 1 1;
    height: 100%;
    width: 100%;
    position: relative;
    background-color: var(--nav-layout)
}
@media (min-width: 600px) {
    .mainContent___vvQdb.busy___Gqbrv {
        height:calc(100% - 36px)
    }
    .layoutContent___NvxZ_ {
        width: auto
    }
}
@keyframes show___BReeN {
    0% {
        opacity: 0
    }
    to {
        opacity: 1
    }
}