Просмотр исходного кода

Merge branch 'beta' of https://git.cocorobo.cn/CocoRoboLabs/pbl-teacher-table into beta

lsc 13 часов назад
Родитель
Сommit
fde983e892

+ 1 - 1
dist/index.html

@@ -37,7 +37,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.0b94dfeecd9453ee1f4a02b7d9e64606.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.23ea04dc469b57e2b4f8.js></script><script type=text/javascript src=./static/js/vendor.dfc8a8e3392292c7b8e5.js></script><script type=text/javascript src=./static/js/app.5e8c0fcb5384de4e1f5d.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.db41ec2293d2a736a9794be8173a14c3.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.23ea04dc469b57e2b4f8.js></script><script type=text/javascript src=./static/js/vendor.dfc8a8e3392292c7b8e5.js></script><script type=text/javascript src=./static/js/app.5d40b46a1109bb9640fe.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.db41ec2293d2a736a9794be8173a14c3.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.db41ec2293d2a736a9794be8173a14c3.css.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.5d40b46a1109bb9640fe.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.5d40b46a1109bb9640fe.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/manifest.23ea04dc469b57e2b4f8.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/workPage-manifest.2ece51fa34be51c8610a.js.map


+ 1 - 0
src/assets/stuImg/copy1.svg

@@ -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="1770773701784" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5393" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M725.333333 341.333333h128v512H341.333333v-128H213.333333V213.333333h512v128z m0 42.666667v341.333333H384v85.333334h426.666667V384h-85.333334zM256 256v426.666667h426.666667V256H256z" fill="#B2B2B2" p-id="5394"></path></svg>

+ 1 - 0
src/assets/stuImg/copy2.svg

@@ -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="1770774181168" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5654" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M682.666667 341.333333h128v469.333334H341.333333v-128H213.333333V213.333333h469.333334v128z m0 85.333334v256h-256v42.666666h298.666666v-298.666666h-42.666666zM298.666667 298.666667v298.666666h298.666666V298.666667H298.666667z" fill="#B2B2B2" p-id="5655"></path></svg>

+ 1 - 0
src/assets/stuImg/copymsg.svg

@@ -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="1771844990277" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4823" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M731.68184 676.057473 731.68184 183.323259c0-30.233582-24.512277-54.745858-54.747905-54.745858L184.216093 128.577401c-30.233582 0-54.746882 24.512277-54.746882 54.745858l0 492.734214c0 30.207999 24.5133 54.746882 54.746882 54.746882l492.717841 0C707.16854 730.804355 731.68184 706.265472 731.68184 676.057473zM622.1891 676.057473 238.962975 676.057473c-30.233582 0-54.746882-24.538883-54.746882-54.745858L184.216093 238.07014c0-30.233582 24.5133-54.746882 54.746882-54.746882l383.226125 0c30.233582 0 54.744835 24.512277 54.744835 54.746882l0 383.242498C676.933935 651.51859 652.421658 676.057473 622.1891 676.057473zM841.17458 292.817022l-54.745858 0 0 54.746882c30.232558 0 54.745858 24.5133 54.745858 54.759161l0 383.228171c0 30.206976-24.5133 54.745858-54.745858 54.745858L403.201573 840.297095c-30.233582 0-54.746882-24.538883-54.746882-54.745858l-54.746882 0 0 54.745858c0 30.207999 24.5133 54.747905 54.746882 54.747905l492.719888 0c30.234605 0 54.747905-24.539906 54.747905-54.747905L895.922485 347.563904C895.922485 317.329299 871.408161 292.817022 841.17458 292.817022z" fill="#B2B2B2" p-id="4824"></path></svg>

+ 1 - 0
src/assets/stuImg/copymsg1.svg

@@ -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="1771844990277" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4823" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M731.68184 676.057473 731.68184 183.323259c0-30.233582-24.512277-54.745858-54.747905-54.745858L184.216093 128.577401c-30.233582 0-54.746882 24.512277-54.746882 54.745858l0 492.734214c0 30.207999 24.5133 54.746882 54.746882 54.746882l492.717841 0C707.16854 730.804355 731.68184 706.265472 731.68184 676.057473zM622.1891 676.057473 238.962975 676.057473c-30.233582 0-54.746882-24.538883-54.746882-54.745858L184.216093 238.07014c0-30.233582 24.5133-54.746882 54.746882-54.746882l383.226125 0c30.233582 0 54.744835 24.512277 54.744835 54.746882l0 383.242498C676.933935 651.51859 652.421658 676.057473 622.1891 676.057473zM841.17458 292.817022l-54.745858 0 0 54.746882c30.232558 0 54.745858 24.5133 54.745858 54.759161l0 383.228171c0 30.206976-24.5133 54.745858-54.745858 54.745858L403.201573 840.297095c-30.233582 0-54.746882-24.538883-54.746882-54.745858l-54.746882 0 0 54.745858c0 30.207999 24.5133 54.747905 54.746882 54.747905l492.719888 0c30.234605 0 54.747905-24.539906 54.747905-54.747905L895.922485 347.563904C895.922485 317.329299 871.408161 292.817022 841.17458 292.817022z" fill="#3681FC" p-id="4824"></path></svg>

+ 1 - 0
src/assets/stuImg/delh.svg

@@ -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="1770624263130" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6592" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M739.328 915.968 284.672 915.968c-40.448 0-73.216-32.768-73.216-73.216L211.456 276.48c0-16.384 13.312-29.184 29.184-29.184s29.184 13.312 29.184 29.184l0 566.272c0 8.192 6.656 14.848 14.848 14.848l454.144 0c8.192 0 14.848-6.656 14.848-14.848L753.664 276.48c0-16.384 13.312-29.184 29.184-29.184s29.184 13.312 29.184 29.184l0 566.272C812.544 883.2 779.264 915.968 739.328 915.968z" p-id="6593" fill="#FF3E00"></path><path d="M871.936 283.648 152.064 283.648c-16.384 0-29.184-13.312-29.184-29.184 0-16.384 13.312-29.184 29.184-29.184l720.384 0c16.384 0 29.184 13.312 29.184 29.184C901.632 270.336 888.32 283.648 871.936 283.648z" p-id="6594" fill="#FF3E00"></path><path d="M434.688 784.384c-16.384 0-29.184-13.312-29.184-29.184L405.504 374.272c0-16.384 13.312-29.184 29.184-29.184s29.184 13.312 29.184 29.184l0 380.928C463.872 771.072 450.56 784.384 434.688 784.384z" p-id="6595" fill="#FF3E00"></path><path d="M607.744 784.384c-16.384 0-29.184-13.312-29.184-29.184L578.56 374.272c0-16.384 13.312-29.184 29.184-29.184s29.184 13.312 29.184 29.184l0 380.928C637.44 771.072 624.128 784.384 607.744 784.384z" p-id="6596" fill="#FF3E00"></path><path d="M570.368 166.4 453.632 166.4c-16.384 0-29.184-13.312-29.184-29.184s13.312-29.184 29.184-29.184l117.248 0c16.384 0 29.184 13.312 29.184 29.184S586.752 166.4 570.368 166.4z" p-id="6597" fill="#FF3E00"></path></svg>

+ 1 - 0
src/assets/stuImg/dell.svg

@@ -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="1770624263130" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6592" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M739.328 915.968 284.672 915.968c-40.448 0-73.216-32.768-73.216-73.216L211.456 276.48c0-16.384 13.312-29.184 29.184-29.184s29.184 13.312 29.184 29.184l0 566.272c0 8.192 6.656 14.848 14.848 14.848l454.144 0c8.192 0 14.848-6.656 14.848-14.848L753.664 276.48c0-16.384 13.312-29.184 29.184-29.184s29.184 13.312 29.184 29.184l0 566.272C812.544 883.2 779.264 915.968 739.328 915.968z" p-id="6593" fill="#000000"></path><path d="M871.936 283.648 152.064 283.648c-16.384 0-29.184-13.312-29.184-29.184 0-16.384 13.312-29.184 29.184-29.184l720.384 0c16.384 0 29.184 13.312 29.184 29.184C901.632 270.336 888.32 283.648 871.936 283.648z" p-id="6594" fill="#000000"></path><path d="M434.688 784.384c-16.384 0-29.184-13.312-29.184-29.184L405.504 374.272c0-16.384 13.312-29.184 29.184-29.184s29.184 13.312 29.184 29.184l0 380.928C463.872 771.072 450.56 784.384 434.688 784.384z" p-id="6595" fill="#000000"></path><path d="M607.744 784.384c-16.384 0-29.184-13.312-29.184-29.184L578.56 374.272c0-16.384 13.312-29.184 29.184-29.184s29.184 13.312 29.184 29.184l0 380.928C637.44 771.072 624.128 784.384 607.744 784.384z" p-id="6596" fill="#000000"></path><path d="M570.368 166.4 453.632 166.4c-16.384 0-29.184-13.312-29.184-29.184s13.312-29.184 29.184-29.184l117.248 0c16.384 0 29.184 13.312 29.184 29.184S586.752 166.4 570.368 166.4z" p-id="6597" fill="#000000"></path></svg>

+ 1 - 0
src/assets/stuImg/duil.svg

@@ -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="1770690670101" class="icon" viewBox="0 0 1098 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9168" xmlns:xlink="http://www.w3.org/1999/xlink" width="68.625" height="64"><path d="M476.808045 0.000043C213.401753 0.106685-0.031993 213.68973 0 477.074693S213.551052 953.98938 476.94668 954.021373s476.957344-213.412417 477.085315-476.808045A477.010665 477.010665 0 0 0 476.808045 0.000043z m273.761252 353.369671L441.861388 661.853674a43.1901 43.1901 0 0 1-62.023117 0L202.214984 484.251715a43.864079 43.864079 0 1 1 62.033781-62.033782l147.21959 147.21959 277.89897-276.86454a43.861946 43.861946 0 1 1 62.023117 62.033781z m0 0" p-id="9169" fill="#35CD35"></path></svg>

+ 1 - 0
src/assets/stuImg/eidh.svg

@@ -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="1770624659286" class="icon" viewBox="0 0 1088 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7895" xmlns:xlink="http://www.w3.org/1999/xlink" width="68" height="64"><path d="M289.728 752a40.32 40.32 0 0 0 5.952-0.512l168.192-29.44a9.792 9.792 0 0 0 5.312-2.816l423.936-423.936c3.84-3.84 3.84-10.24 0-14.08l-166.208-166.336a9.92 9.92 0 0 0-7.104-2.88 9.92 9.92 0 0 0-7.104 2.88L288.832 538.88a10.176 10.176 0 0 0-2.816 5.312l-29.504 168.192a33.92 33.92 0 0 0 33.216 39.68zM357.12 577.6l362.688-362.624 73.28 73.344-362.688 362.56-88.96 15.744 15.68-89.024z m554.88 258.368H176a32 32 0 0 0-32 32v36.032c0 4.416 3.584 8 8 8h784a8 8 0 0 0 8-8v-36.032a32 32 0 0 0-32-32z" p-id="7896" fill="#000000"></path></svg>

+ 1 - 0
src/assets/stuImg/eidl.svg

@@ -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="1770624659286" class="icon" viewBox="0 0 1088 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7895" xmlns:xlink="http://www.w3.org/1999/xlink" width="68" height="64"><path d="M289.728 752a40.32 40.32 0 0 0 5.952-0.512l168.192-29.44a9.792 9.792 0 0 0 5.312-2.816l423.936-423.936c3.84-3.84 3.84-10.24 0-14.08l-166.208-166.336a9.92 9.92 0 0 0-7.104-2.88 9.92 9.92 0 0 0-7.104 2.88L288.832 538.88a10.176 10.176 0 0 0-2.816 5.312l-29.504 168.192a33.92 33.92 0 0 0 33.216 39.68zM357.12 577.6l362.688-362.624 73.28 73.344-362.688 362.56-88.96 15.744 15.68-89.024z m554.88 258.368H176a32 32 0 0 0-32 32v36.032c0 4.416 3.584 8 8 8h784a8 8 0 0 0 8-8v-36.032a32 32 0 0 0-32-32z" p-id="7896" fill="#0052D9"></path></svg>

+ 1 - 0
src/assets/stuImg/jiang.svg

@@ -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="1770946049830" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10719" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M549.624242 214.626263H113.648485c-18.10101 0-32.840404-14.739394-32.840404-32.840404 0-18.10101 14.739394-32.840404 32.840404-32.840404h436.10505c18.10101 0 32.840404 14.739394 32.840404 32.840404-0.129293 18.10101-14.868687 32.840404-32.969697 32.840404z m0 0M549.624242 545.616162H113.648485c-18.10101 0-32.840404-14.739394-32.840404-32.840404 0-18.10101 14.739394-32.840404 32.840404-32.840404h436.10505c18.10101 0 32.840404 14.739394 32.840404 32.840404-0.129293 18.10101-14.868687 32.840404-32.969697 32.840404z m0 0M549.624242 876.088889H113.648485c-18.10101 0-32.840404-14.739394-32.840404-32.840404s14.739394-32.840404 32.840404-32.840404h436.10505c18.10101 0 32.840404 14.739394 32.840404 32.840404s-14.868687 32.840404-32.969697 32.840404z m0 0M932.589899 659.006061c-12.8-12.8-33.616162-12.8-46.416162 0l-104.727272 104.727272V182.044444c0-18.10101-14.739394-32.840404-32.840404-32.840404-18.10101 0-32.840404 14.739394-32.840404 32.840404v661.462627c0 18.10101 14.739394 32.840404 32.840404 32.840404 8.016162 0 15.385859-2.844444 21.074747-7.628283 0.905051-0.775758 162.779798-163.167677 162.779798-163.167677 12.929293-12.8 12.929293-33.745455 0.129293-46.545454z m0 0" fill="#383838" p-id="10720"></path></svg>

+ 1 - 0
src/assets/stuImg/sheng.svg

@@ -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="1770946087392" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10932" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M543.107825 255.51394l-421.592885 0c-17.498151 0-31.721795-14.223643-31.721795-31.721795s14.223643-31.721795 31.721795-31.721795l421.592885 0c17.498151 0 31.721795 14.223643 31.721795 31.721795S560.605976 255.51394 543.107825 255.51394z" p-id="10933" fill="#383838"></path><path d="M543.107825 575.494754l-421.592885 0c-17.498151 0-31.721795-14.223643-31.721795-31.721795s14.223643-31.721795 31.721795-31.721795l421.592885 0c17.498151 0 31.721795 14.223643 31.721795 31.721795S560.605976 575.494754 543.107825 575.494754z" p-id="10934" fill="#383838"></path><path d="M543.107825 895.066254l-421.592885 0c-17.498151 0-31.721795-14.223643-31.721795-31.721795s14.223643-31.721795 31.721795-31.721795l421.592885 0c17.498151 0 31.721795 14.223643 31.721795 31.721795S560.605976 895.066254 543.107825 895.066254z" p-id="10935" fill="#383838"></path><path d="M913.331868 402.252823c-12.381733 12.381733-32.438093 12.381733-44.819826 0L767.309284 301.152393l0 562.396722c0 17.498151-14.223643 31.721795-31.721795 31.721795s-31.721795-14.223643-31.721795-31.721795l0-639.552313c0-17.498151 14.223643-31.721795 31.721795-31.721795 7.776956 0 14.837614 2.762866 20.363346 7.367643 0.818627 0.716299 157.381033 157.790347 157.381033 157.790347C925.7136 369.81473 925.7136 389.87109 913.331868 402.252823z" p-id="10936" fill="#383838"></path></svg>

+ 1 - 0
src/assets/stuImg/tishi.svg

@@ -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="1770794222150" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8721" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M512 65.983389c-245.952318 0-446.016611 200.064292-446.016611 446.016611S266.047682 958.016611 512 958.016611 958.016611 757.952318 958.016611 512 757.952318 65.983389 512 65.983389zM544.00086 736.00086c0 17.695686-14.303454 32.00086-32.00086 32.00086s-32.00086-14.303454-32.00086-32.00086L479.99914 448c0-17.695686 14.303454-32.00086 32.00086-32.00086 17.695686 0 32.00086 14.303454 32.00086 32.00086L544.00086 736.00086zM512 352.00086c-26.496224 0-48.00043-21.53689-48.00043-48.00043 0-26.527187 21.504206-48.00043 48.00043-48.00043s48.00043 21.471523 48.00043 48.00043C560.00043 330.46397 538.496224 352.00086 512 352.00086z" fill="#0052D9" p-id="8722" data-spm-anchor-id="a313x.search_index.0.i6.4a633a814iZnMb" class="selected"></path></svg>

+ 1 - 0
src/assets/stuImg/zankai.svg

@@ -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="1770967587164" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12854" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M475.648 728.064L236.032 473.6c-14.848-15.872-18.944-38.912-11.264-59.392 8.192-20.48 26.624-33.792 47.616-33.792h479.744c20.992 0 39.424 13.312 47.616 33.792 2.56 6.656 4.096 13.824 4.096 20.992 0 14.336-5.12 28.16-15.36 38.4l-239.616 254.464c-9.728 10.24-23.04 15.872-36.352 15.872-14.336 0-27.136-5.632-36.864-15.872z" p-id="12855" fill="#333333"></path></svg>

+ 224 - 19
src/components/pages/studentManageNew/component/addstu.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-dialog :visible.sync="addStuVisible" width="700px">
+    <el-dialog class="addstudia" :visible.sync="addStuVisible" width="800px">
       <template #title>
         <div class="title_box">
           <div class="title_box_item">
@@ -25,7 +25,7 @@
         <!-- 手动添加学生 -->
         <div class="addcla_box" v-if="addStuType == 1">
           <div class="addcla_box_item" v-if="boxType != 2">
-            <span class="addcla_box_item_span">所属班级:</span>
+            <span class="addcla_box_item_span">所属班级</span>
             <el-input
               v-model.trim="classInfo.name"
               disabled
@@ -33,7 +33,7 @@
             ></el-input>
           </div>
           <div class="addcla_box_item" v-if="boxType == 2">
-            <span class="addcla_box_item_span">所属年级:</span>
+            <span class="addcla_box_item_span">所属班级:</span>
             <el-cascader
           :options="cascaderData"
           v-model="cascaderDataPath"
@@ -59,7 +59,7 @@
           </div>
 
           <div class="addcla_box_item" style="position: relative">
-            <span class="addcla_box_item_span">学生姓名:</span>
+            <span class="addcla_box_item_span">学生姓名</span>
             <el-input
               v-model.trim="searchStuName"
               placeholder="请输入学生姓名,多个姓名请用中文逗号(,)分隔"
@@ -69,7 +69,8 @@
             ></el-input>
             <div class="search_stu_box" v-if="popoverVisible">
               <div class="search_stu_box_content">
-                <el-tag
+              
+                <!-- <el-tag
                   v-for="(item, index) in searchStuData"
                   :key="index"
                   closable
@@ -77,7 +78,23 @@
                   @close="handleClose(index)"
                 >
                   <span>{{ item }}</span>
-                </el-tag>
+                </el-tag> -->
+                <div class="tagL" v-for="(item, index) in searchStuData" :key="index">
+                  <div class="tagtit" v-if="stuname2(item) == 'danger'">
+                    <div class="poptag">
+                      <img src="../../../../assets/stuImg/tishi.svg" alt=""/>
+                      <div>您添加的学生“{{ item }}”存在重复姓名。 是否继续添加?</div>
+                    </div>
+                    <div style="display: flex;justify-content: flex-end;gap: 10px;">
+                      <!-- <span>添加</span> -->
+                      <span style="cursor: pointer;" @click="addpopStu(item)">添加</span>
+
+                      <span style="cursor: pointer;color: #0052D9;" @click="delSeaStu(index)">删除</span>
+                    </div>
+                  </div>
+                  <div class="tagitem" :class="stuname2(item) == 'danger' ? 'tagitem2' :''">{{ item }}</div>
+                </div>
+
               </div>
               <div class="search_stu_box_footer">
                 <div>输入学生共{{ searchStuData.length }}人</div>
@@ -93,9 +110,9 @@
             </div>
           </div>
           <div class="addcla_box_item">
-            <span class="addcla_box_item_span">已选择学生:</span>
+            <span class="addcla_box_item_span">已输入:</span>
             <div class="selected_stu_box">
-              <el-tag
+              <!-- <el-tag
                 v-for="(item, index) in selectedStuData"
                 :key="index"
                 closable
@@ -103,7 +120,21 @@
                 @close="handleSelectedStuClose(index)"
               >
                 <span>{{ item }}</span>
-              </el-tag>
+              </el-tag> -->
+                <div class="tagL" v-for="(item, index) in selectedStuData" :key="index">
+                  <div class="tagtit" v-if="stuname(item) == 'danger'">
+                    <div class="poptag">
+                      <img src="../../../../assets/stuImg/tishi.svg" alt=""/>
+                      <div>您添加的学生“{{ item }}”存在重复姓名。 是否继续添加?</div>
+                    </div>
+                    <div style="display: flex;justify-content: flex-end;gap: 10px;">
+                      <!-- <span>添加</span> -->
+                      <span style="cursor: pointer;" @click="addpopStu(item)">添加</span>
+                      <span style="cursor: pointer;color: #0052D9;" @click="handleSelectedStuClose(index)">删除</span>
+                    </div>
+                  </div>
+                  <div class="tagitem" :class="stuname(item) == 'danger' ? 'tagitem2' :''">{{ item }}</div>
+                </div>
             </div>
           </div>
         </div>
@@ -117,20 +148,24 @@
               action="#"
               :show-file-list="false"
               accept=".xlsx,.xls"
+              v-loading="uploadfileLoading"
             >
               <img src="@/assets/stuImg/uploadfile.svg" alt="upload" />
               <div style="color: #000">点击或拖拽文件到此处上传</div>
               <div class="upload-demo-tip">支持格式:xlsx、xls,最多添加70人</div>
             </el-upload>
             <div style="margin-top: 10px">
-              上传模板:
+              上传模板
               <span class="download-template" @click="downloadTemplate"
                 >下载模板</span
               >
             </div>
             <div style="margin-top: 10px">
-              注意:请按照模板格式填写学生信息,避免导入失败
+              注意请按照模板格式填写学生信息,避免导入失败
             </div>
+            <!-- <div style="margin-top: 10px">
+              学生列表批量上传需表格需添加“班级”列
+            </div> -->
           </div>
         </div>
         <!-- 从已有学生中添加 -->
@@ -152,6 +187,25 @@
         </template>
       </div>
     </el-dialog>
+    <div class="pop-upBox">
+      <el-dialog
+        :visible.sync="popBoxdia"
+        width="480px"
+        :show-close="false"
+      >
+        <div class="msgCon">
+            <img style="width: 20px;" src="../../../../assets/stuImg/duil.svg" alt="">
+            <div class="msgContxt">
+              <div>{{impbox.length ? impbox[0].name : ''}}等{{impbox.length}} 名同学已添加成功</div>
+            </div>
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="confirmDelStu"
+            >确 认</el-button
+          >
+        </span>
+      </el-dialog>
+    </div>
   </div>
 </template>
 <script>
@@ -199,6 +253,10 @@ export default {
       role: this.$route.query.role,
       cascaderDataPath: [],
 
+      impbox:[],
+      addpopStuList:[],
+      popBoxdia:false,
+      uploadfileLoading:false,
       addStuType: 1,
       schoolChar: "",
       userSuffix: "",
@@ -233,19 +291,20 @@ export default {
       searchStuData: [],
       selectedStuData: [],
       popoverVisible: false,
+      
     };
   },
   computed: {
     stuname() {
       return (item) => {
-        let box = this.selectedStuData.filter((e) => e === item);
+        let box = this.selectedStuData.filter((e) => (e === item && this.addpopStuList.indexOf(item) == -1));
         // console.log(box);
         return box.length > 1 ? "danger" : "";
       };
     },
     stuname2() {
       return (item) => {
-        let box = this.searchStuData.filter((e) => e === item);
+        let box = this.searchStuData.filter((e) => (e === item && this.addpopStuList.indexOf(item) == -1));
         // console.log(box);
         return box.length > 1 ? "danger" : "";
       };
@@ -256,6 +315,34 @@ export default {
     this.getSchoolName();
   },
   methods: {
+    stardop(){
+      this.addStuVisible = true;
+      this.searchStuName= "";
+      console.log('666');
+      // this.addStuType=1
+      if (this.boxType == 1) {
+        this.stuListTypeList = [];
+        this.addStuType = 3;
+      } else if (this.boxType == 0) {
+        this.stuListTypeList = this.tab1;
+        this.addStuType = 1;
+      } else if (this.boxType == 2) {
+        this.stuListTypeList = this.tab2;
+        this.addStuType = 1;
+      }
+      this.searchStuData= [];
+      this.selectedStuData= [];
+      this.cascaderDataPath=[];
+      this.impbox=[];
+      this.addpopStuList=[];
+
+    },
+    addpopStu(val){
+      this.addpopStuList.push(val)
+    },
+    delSeaStu(ind){
+      this.searchStuData.splice(ind,1)
+    },
     handleChangecascader(val) {
       console.log(val);
       // 更新级联选择器的选中数据路径
@@ -298,6 +385,7 @@ export default {
         );
       });
     },
+
     // 上传Excel添加学生
     handleChange(file) {
       let _this = this;
@@ -381,8 +469,10 @@ export default {
             cancelButtonText: '取消',
             type: 'warning',
           }).then(() => {
+            _this.uploadfileLoading = true;
             _this.accUpdate(arr);
           }).catch(() => {
+            _this.uploadfileLoading = false;
             _this.$message.info('已取消');
           });
         };
@@ -442,7 +532,7 @@ export default {
     },
     accUpdate(box) {
       console.log(box, "box");
-
+      this.impbox = box;
       let z = 2;
       let newArr = JSON.stringify(box);
       let params = [
@@ -476,16 +566,25 @@ export default {
               message: "添加成功",
               type: "success",
             });
-            this.addStuVisible = false;
-            this.selectedStuData = [];
+            this.popBoxdia= true;
+            // this.addStuVisible = false;
+            console.log('this.selectedStuData',this.selectedStuData);
+            
+            // this.selectedStuData = [];
             this.$emit("getCascaderData");
           }
+          this.uploadfileLoading = false;
         })
         .catch((err) => {
           console.error(err);
         });
     },
-
+    confirmDelStu(){
+          // this.addStuVisible = false;
+          this.popBoxdia= false;
+          this.impbox = []
+          this.selectedStuData = [];
+    },
     // 修改账号
     updateAccount(arr) {
       let params = {
@@ -588,6 +687,26 @@ export default {
   .el-checkbox {
   display: none !important;
 }
+.seaStutxt {
+  width: 360px !important;
+  min-width: 60px !important;
+  padding: 16px !important;
+}
+.seaStuBtn{
+  margin-top: 10px;
+  display: flex;
+  justify-content: flex-end;
+}
+/* .seaStutxt .action_box > div {
+  padding: 8px 15px;
+  cursor: pointer;
+  font-size: 14px;
+  text-align: center;
+}
+.seaStutxt .action_box > div:hover {
+  background: #e8f3ff;
+  color: #0052d9;
+} */
 </style>
 <style scoped>
 .bar_box {
@@ -633,7 +752,7 @@ export default {
   text-align: right;
 }
 .search_stu_box {
-  width: 570px;
+  width: 670px;
   position: absolute;
   display: flex;
   flex-direction: column;
@@ -644,12 +763,16 @@ export default {
   background: #fff;
   border: 1px solid #e8f3ff;
   box-sizing: border-box;
-  padding: 10px;
+  border-radius: 2px;
+  box-shadow: 0px 5px 5px -3px rgba(0,0,0,0.1), 0px 8px 10px 1px rgba(0,0,0,0.06), 0px 3px 14px 2px rgba(0,0,0,0.05);
 }
 .search_stu_box_content {
   display: flex;
   gap: 10px;
   flex: 1;
+  padding: 10px;
+  flex-wrap: wrap;
+  box-sizing: border-box;
 }
 .selected_stu_box_item {
   background: #e8f3ff;
@@ -662,9 +785,12 @@ export default {
 .search_stu_box_footer {
   display: flex;
   height: 40px;
+  padding: 0 10px;
+  box-sizing: border-box;
   justify-content: space-between;
   align-items: center;
   box-sizing: border-box;
+  border-top: 1px #e7e7e7 solid;
 }
 .selected_stu_box {
   display: flex;
@@ -714,4 +840,83 @@ export default {
   cursor: pointer;
   border-bottom: 1px solid #0052d9;
 }
+.msgCon{
+  display: flex;
+  gap: 10px;
+  align-items: flex-start;
+  box-sizing: border-box;
+}
+.msgContxt{
+  display: flex;
+  flex-direction: column;
+  gap: 10px;
+  font-size: 16px;
+  color: #000000;
+}
+.tagL{
+  height: 30px;
+  line-height: 30px;
+  border-radius: 3px;
+  box-sizing: border-box;
+  background: #E7F3FF;
+  border: 1px #DDE4E5 solid;
+  position: relative;
+}
+.tagitem{
+  height: 100%;
+  padding: 0 8px;
+  box-sizing: border-box;
+}
+
+.tagtit{
+  position: absolute;
+  top: -116px;
+  right: 0;
+  background: #999;
+  display: none;
+  width: 304px;
+  height: 116px;
+  background: #FFFFFF;
+  border-radius: 8px 8px 8px 8px;
+  padding: 10px;
+  float: left;
+  box-sizing: border-box;
+}
+.poptag{
+  display: flex !important;
+  gap: 10px;
+  align-items: flex-start;
+}
+.tagtit img{
+  width: 20px;
+  margin-top: 5px;
+}
+/* tagtit 与 tagitem 是兄弟关系,需通过父元素 tagL 来联动 */
+.tagL:hover .tagtit{
+  display: block !important;
+}
+.tagitem2{
+  background: #FEF0F0;
+  border: 1px #FEF0F0 solid;
+}
+.pop-upBox >>> .el-dialog{
+  border-radius: 8px !important;
+  margin-top: 30vh !important;
+}
+.pop-upBox >>> .el-dialog__body{
+  padding: 12px 23px; 
+}
+.msgCon{
+  display: flex;
+  gap: 10px;
+  align-items: flex-start;
+  box-sizing: border-box;
+}
+.msgContxt{
+  display: flex;
+  flex-direction: column;
+  gap: 10px;
+  font-size: 16px;
+  color: #000000;
+}
 </style>

+ 96 - 13
src/components/pages/studentManageNew/component/allClaAddStu.vue

@@ -156,6 +156,31 @@
         >确定</el-button
       >
     </div>
+
+    <div class="pop-upBox">
+      <el-dialog
+        :visible.sync="popBoxdia"
+        width="480px"
+        append-to-body
+        class="upBox"
+        :show-close="false"
+      >
+        <div class="msgCon">
+            <img style="width: 20px;" src="../../../../assets/stuImg/duil.svg" alt="">
+            <div class="msgContxt" v-if="selectedStuData.length">
+                {{selectedStuData[0].username}}等{{selectedStuData.length}}名同学已添加成功
+            </div>
+        </div>
+        <span slot="footer" class="dialog-footer">
+        
+          <el-button type="primary"
+            class="btnpop"
+          @click="confirmDelStu"
+            >确 认</el-button
+          >
+        </span>
+      </el-dialog>
+    </div>
   </div>
 </template>
 <script>
@@ -184,6 +209,7 @@ export default {
       popoverVisible: false,
       allClaAllStuData: [],
       page: 1,
+      popBoxdia:false,
       total: 0,
       pageSize: 10,
       allClaColumns: [
@@ -203,6 +229,21 @@ export default {
     };
   },
   methods: {
+    clearData(){
+      this.cascaderDataPath = [];
+      this.searchStuName="";
+      this.searchStuData= [];
+      this.selectedStuData= [];
+      this.allClaAllStuData=[];
+      this.page= 1;
+      this.total=0;
+      this.pageSize= 10;
+    },
+    confirmDelStu(){
+      this.$refs.tableData.clearSelection();
+      this.selectedStuData = [];
+      this.popBoxdia = false;
+    },
     // 删除已选择学生
     handleSelectedStuClose(item) {
       // 从已选择数据中移除
@@ -240,11 +281,7 @@ export default {
       });
       Promise.all(promises2)
         .then(() => {
-          this.$message({
-            message: "移动成功",
-            type: "success",
-          });
-          this.selectedStuData = [];
+          this.popBoxdia = true
           this.$emit("getStudent");
           if (this.cascaderDataPath.length > 0) {
             this.getdata(this.cascaderDataPath[1]);
@@ -303,16 +340,18 @@ export default {
       this.editTabloading = true;
       // 处理输入:去除多余空格,确保逗号分隔格式正确
       let inpValue = this.searchStuName
-        .split(",")
+        .split("")
         .map((name) => name.trim())
         .filter((name) => name)
         .join(",");
-      let params = {
+        console.log('inpValue',inpValue);
+
+      let params = [{
         oid: this.oid,
         inp: inpValue,
-      };
+      }];
       this.ajax
-        .get(this.$store.state.api + "selectchStu", params)
+        .post(this.$store.state.api + "selectchStu", params)
         .then((res) => {
           console.log(res.data[0], "res");
           let box = res.data[0].filter(
@@ -358,7 +397,7 @@ export default {
     },
     handlePageChange(val) {
       this.page = val;
-      this.getdata();
+      this.getdata(this.cascaderDataPath[1]);
     },
     //获取年级列表
     getGrade() {
@@ -429,6 +468,7 @@ export default {
 </script>
 
 <style>
+
 .myCascader
   .el-cascader-panel
   .el-cascader-menu:first-child
@@ -445,8 +485,22 @@ export default {
   .el-checkbox {
   display: none !important;
 }
+.myCascader .el-cascader-panel{
+  width: 670px !important;
+}
+.myCascader .el-cascader-menu__list{
+  width: 335px;
+}
+
 </style>
 <style scoped>
+.upBox >>> .el-dialog{
+  border-radius: 8px !important;
+  margin-top: 30vh !important;
+}
+.upBox >>> .el-dialog__body{
+  padding: 10px 23px; 
+}
 .dia_box_item {
   display: flex;
   align-items: center;
@@ -493,23 +547,27 @@ export default {
   box-sizing: border-box;
 }
 .search_stu_box {
-  width: 570px;
+  width: 670px;
   position: absolute;
   display: flex;
   flex-direction: column;
   top: 100%;
   left: 90px;
   z-index: 1000;
-  min-height: 160px;
+  min-height: 110px;
   background: #fff;
   border: 1px solid #e8f3ff;
   box-sizing: border-box;
-  padding: 10px;
+  border-radius: 2px;
+  box-shadow: 0px 5px 5px -3px rgba(0,0,0,0.1), 0px 8px 10px 1px rgba(0,0,0,0.06), 0px 3px 14px 2px rgba(0,0,0,0.05);
 }
 .search_stu_box_content {
   display: flex;
   gap: 10px;
   flex: 1;
+  padding: 10px;
+  flex-wrap: wrap;
+  box-sizing: border-box;
 }
 .selected_stu_box_item {
   background: #e8f3ff;
@@ -522,9 +580,12 @@ export default {
 .search_stu_box_footer {
   display: flex;
   height: 40px;
+  padding: 0 10px;
+  box-sizing: border-box;
   justify-content: space-between;
   align-items: center;
   box-sizing: border-box;
+  border-top: 1px #e7e7e7 solid;
 }
 .selected_stu_box {
   display: flex;
@@ -547,4 +608,26 @@ export default {
   justify-content: flex-end;
   gap: 10px;
 }
+
+.msgCon{
+  display: flex;
+  gap: 10px;
+  align-items: flex-start;
+  box-sizing: border-box;
+}
+.msgContxt{
+  display: flex;
+  flex-direction: column;
+  gap: 10px;
+  font-size: 16px;
+  color: #000000;
+}
+.btnpop{
+  width: 60px !important;
+  height: 32px !important;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  background: #3681FC;
+}
 </style>

+ 16 - 13
src/components/pages/studentManageNew/component/editInterstcla.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="edit_interest_cla_box">
     <!-- 编辑兴趣班弹框 -->
-    <el-dialog :visible.sync="InterestClaEditvisible" width="800px">
+    <el-dialog :visible.sync="InterestClaEditvisible" width="442px">
       <template slot="title">
         <div class="dia_title_box">
           <span>编辑兴趣班</span>
@@ -16,7 +16,7 @@
             placeholder="请输入兴趣班名称"
           ></el-input>
         </div>
-        <div class="addcla_box_item" style="position: relative">
+        <!-- <div class="addcla_box_item" style="position: relative">
           <span class="addcla_box_item_span">搜索学生:</span>
           <el-input
             v-model.trim="searchStuName"
@@ -124,7 +124,7 @@
             :total="total"
           >
           </el-pagination>
-        </div>
+        </div> -->
       </div>
       <div slot="footer" class="dialog-footer">
         <el-button @click="cancelAllSelection">取消</el-button>
@@ -241,10 +241,12 @@ export default {
       this.editTabloading = true;
       // 处理输入:去除多余空格,确保逗号分隔格式正确
       let inpValue = this.searchStuName
-        .split(",")
+        .split("")
         .map((name) => name.trim())
         .filter((name) => name)
         .join(",");
+        console.log('inpValue',inpValue);
+        
       let params = {
         oid: this.oid,
         inp: inpValue,
@@ -283,11 +285,11 @@ export default {
       this.getdata();
     },
     cancelAllSelection() {
-      this.$refs.tableData.clearSelection();
-      this.selectedStuData = [];
-      this.searchStuData = [];
-      this.searchStuName = "";
-      this.clainfo = {};
+      // this.$refs.tableData.clearSelection();
+      // this.selectedStuData = [];
+      // this.searchStuData = [];
+      // this.searchStuName = "";
+      // this.clainfo = {};
       this.InterestClaEditvisible = false;
     },
     handleSizeChange(val) {
@@ -319,12 +321,12 @@ export default {
               message: "修改成功",
               type: "success",
             });
-            if (this.selectedStuData.length > 0) {
-              this.moveInterestClaStudent();
-            } else {
+            // if (this.selectedStuData.length > 0) {
+            //   this.moveInterestClaStudent();
+            // } else {
               this.cancelAllSelection();
               this.$emit("getCascaderData");
-            }
+            // }
           }
         })
         .catch((err) => {
@@ -515,6 +517,7 @@ export default {
 .search_stu_box_content {
   display: flex;
   gap: 10px;
+  flex-wrap: wrap;
   flex: 1;
 }
 .selected_stu_box_item {

+ 92 - 0
src/components/pages/studentManageNew/component/msgbox.vue

@@ -0,0 +1,92 @@
+<template>
+  <div class="msgdia">
+    <el-dialog
+      :visible.sync="dialogVisible"
+      width="480px"
+      :show-close="false"
+      :before-close="handleClose"
+    >
+      <div class="msgCon">
+          <img style="width: 20px;" src="../../../../assets/stuImg/duil.svg" alt="">
+          <div class="msgContxt">
+            <div>对8个账户重置密码成功! </div>
+            <div>
+              <span>默认密码为:Coco1234</span>
+              <img @click="copyText" style="width: 20px;cursor: pointer;scale: 1.2;" src="../../../../assets/stuImg/copy2.svg" alt="">
+            </div>
+          </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="dialogVisible = false"
+          >确 认</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      dialogVisible: false,
+    };
+  },
+  methods: {
+    handleClose(done) {
+      done();
+    },
+    copyText(){
+      const text = 'Coco1234';
+      if (navigator.clipboard && navigator.clipboard.writeText) {
+        navigator.clipboard.writeText(text).then(() => {
+          this.$message.success('已复制到剪贴板');
+        }).catch(() => {
+          this.fallbackCopy(text);
+        });
+      } else {
+        this.fallbackCopy(text);
+      }
+    },
+    fallbackCopy(text) {
+      const textarea = document.createElement('textarea');
+      textarea.value = text;
+      textarea.style.position = 'fixed';
+      textarea.style.opacity = '0';
+      document.body.appendChild(textarea);
+      textarea.select();
+      try {
+        document.execCommand('copy');
+        this.$message.success('已复制到剪贴板');
+      } catch (err) {
+        this.$message.error('复制失败');
+      }
+      document.body.removeChild(textarea);
+    }
+  },
+};
+</script>
+
+<style scoped>
+.msgdia >>> .el-dialog{
+  border-radius: 8px !important;
+  /* margin: auto !important; */
+  margin-top: 30vh !important;
+}
+.msgdia >>> .el-dialog__body{
+  padding: 12px 23px; 
+}
+.msgCon{
+  display: flex;
+  gap: 10px;
+  align-items: flex-start;
+  /* padding: 0 3px; */
+  box-sizing: border-box;
+}
+.msgContxt{
+  display: flex;
+  flex-direction: column;
+  gap: 10px;
+  font-size: 16px;
+  color: #000000;
+}
+</style>

Разница между файлами не показана из-за своего большого размера
+ 647 - 237
src/components/pages/studentManageNew/component/table.vue


+ 172 - 46
src/components/pages/studentManageNew/index.vue

@@ -5,36 +5,49 @@
         <img src="../../../assets/stuImg/riqi.svg" alt="" />
         <span style="color: #86909c; font-size: 12px">年级管理</span>
       </div>
-      <div class="Clabtn" @click="openaddClass">
-        <img src="../../../assets/stuImg/jia.svg" alt="" />
-        <span>新班级</span>
-      </div>
+      <!-- v-if="orglist.includes(org)" -->
+
+      <template v-loading="boxLoading">
+        <div v-if="orglist.includes(org)" class="Clabtn" @click="openaddClass(1)">
+          <img src="../../../assets/stuImg/jia.svg" alt="" />
+          <span>新年级</span>
+        </div>
+        <div class="Clabtn" @click="openaddClass(0)">
+          <img src="../../../assets/stuImg/jia.svg" alt="" />
+          <span>新班级</span>
+        </div>
+
+        <el-menu
+          :default-active="activeId"
+          class="el-menu-vertical-demo"
+        >
+          <el-submenu v-for="item in tableData" :index="item.id" :key="item.id">
+            <template slot="title">
+              <span>{{ item.name }}</span>
+              <img
+                class="grade-submenu-arrow"
+                src="../../../assets/stuImg/zankai.svg"
+                alt=""
+              />
+            </template>
+            <el-menu-item-group
+              v-for="k in item.children"
+              :key="k.id"
+              :title="k.name"
+            >
+              <el-menu-item :index="k.id" @click="handleClick(k.id, 0,k)">
+                <span>{{ k.name }}</span>
+                <span>({{ k.pnum }}人)</span>
+              </el-menu-item>
+            </el-menu-item-group>
+          </el-submenu>
+        </el-menu>
+      </template>
 
-      <el-menu
-        :default-active="activeId"
-        class="el-menu-vertical-demo"
-        v-loading="boxLoading"
-      >
-        <el-submenu v-for="item in tableData" :index="item.id" :key="item.id">
-          <template slot="title">
-            <span>{{ item.name }}</span>
-          </template>
-          <el-menu-item-group
-            v-for="k in item.children"
-            :key="k.id"
-            :title="k.name"
-          >
-            <el-menu-item :index="k.id" @click="handleClick(k.id, 0,k)">
-              <span>{{ k.name }}</span>
-              <span>({{ k.pnum }}人)</span>
-            </el-menu-item>
-          </el-menu-item-group>
-        </el-submenu>
-      </el-menu>
       <div class="line"></div>
       <div class="centerCss">
         <img src="../../../assets/stuImg/inf.svg" alt="" />
-        <span style="color: #86909c; font-size: 12px">年级管理</span>
+        <span style="color: #86909c; font-size: 12px">兴趣班管理</span>
       </div>
       <div
         class="por"
@@ -56,6 +69,8 @@
         学生列表
       </div>
     </div>
+
+    <!-- 右侧table区域 -->
     <div class="leftbox">
       <tableL
         :activeIdL="activeId"
@@ -70,13 +85,14 @@
     <el-dialog
       title="添加班级"
       :visible.sync="addClassVisible"
-      width="500px"
+      width="427px"
+      :show-close="false"
       class="addClassDialog"
     >
       <div class="addcla_box">
         <div class="addcla_box_item">
-          <span>所属级:</span>
-          <el-select v-model="addclaGrade" placeholder="请选择级">
+          <span>所属级:</span>
+          <el-select v-model="addclaGrade" placeholder="请选择级">
             <el-option
               v-for="item in tableData"
               :key="item.id"
@@ -94,8 +110,27 @@
         </div>
       </div>
       <div slot="footer" class="dialog-footer">
-        <el-button @click="addClassVisible = false">取 消</el-button>
-        <el-button type="primary" @click="addClass">确 定</el-button>
+        <div @click="addClassVisible = false">取消</div>
+        <div @click="addClass" style="background: #3681FC; color: #fff;height: 32px;">确认</div>
+      </div>
+    </el-dialog>
+
+    <el-dialog
+      title="添加年级"
+      :visible.sync="addgraVisible"
+      width="500px"
+      :show-close="false"
+      class="addClassDialog"
+    >
+      <div class="addcla_box">
+        <div class="addcla_box_item">
+          <span>年级:</span>
+          <el-input v-model.trim="addgraName" placeholder="请输入年级"></el-input>
+        </div>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <div @click="addgraVisible = false">取消</div>
+        <div @click="addgra" style="background: #3681FC; color: #fff;">确认</div>
       </div>
     </el-dialog>
   </div>
@@ -113,14 +148,23 @@ export default {
       org: this.$route.query.org,
       oid: this.$route.query.oid,
       role: this.$route.query.role,
-      boxLoading: false,
-      addClassVisible: false,
 
+      boxLoading: false, //年级区域loading
+      addClassVisible: false,
+      addgraVisible:false,
       addclaName: "", // 新增班级名称
       addclaGrade: "", // 新增班级所属年级
 
-      tableData: [],
-      cascaderData: [],
+      addgraName:'',
+
+      orglist:[
+        "1973f6c7-1561-11ee-91d8-005056b86db5",
+        "16ace517-b5c7-4168-a9bb-a9e0035df840"
+      ],
+
+
+      tableData: [], //年级列表
+      cascaderData: [], //年级列表加兴趣班列表
 
       activeId: "", // 当前选中的班级id
       activeinfo: {}, // 当前选中的班级信息
@@ -129,8 +173,49 @@ export default {
     };
   },
   methods: {
+    // 添加年级
+    addgra(){
+      if (!this.addgraName) {
+        this.$message.error('请输入年级名称')
+      }
+      this.boxLoading = true;
+      let params = {
+        name: this.addgraName,
+        oid: this.oid,
+        uid: this.userid,
+      };
+      this.ajax
+        .get(this.$store.state.api + "insertGrade", params)
+        .then((res) => {
+          if (res.data[0] && res.data[0][0].classname == 1) {
+            this.$message({
+              message: this.lang.Cannotsameother,
+              type: "error",
+            });
+            this.boxLoading = false;
+
+          } else {
+            this.$message({
+              message: this.lang.AddSuccessful,
+              type: "success",
+            });
+            this.addgraVisible = false;
+            this.addgraName = "";
+            this.getGrade()
+          }
+        })
+        .catch((err) => {
+          this.$message({
+            message: this.lang.Additionfailed,
+            type: "error",
+          });
+          this.boxLoading = false;
+
+          console.error(err);
+        });
+    },
     //获取年级列表
-    getGrade() {
+    getGrade(val = 0) {
       this.boxLoading = true;
       let params = {
         oid: this.oid,
@@ -149,15 +234,15 @@ export default {
             e.children = box2.filter((item) => item.pid == e.id);
           });
           if (box2.length) {
-            // console.log('this.activeId',this.activeId);
-            // console.log('box2',box2);
-            // console.log('box2.indexOf(this.activeId)',box2.indexOf(this.activeId));
-            // || (this.activeId && this.boxType == 1 && box2.filter(item => item.id == this.activeId).length == 0)
-            if(this.activeId == ''){
+            if(this.activeId == '' || val ==1){
               console.log('111');
-              
               this.activeId = box2[0].id;
               this.activeinfo = box2[0];
+            } else {
+              const activeItem = box2.find((item) => item.id === this.activeId);
+              if (activeItem) {
+                this.activeinfo = activeItem;
+              }
             }
           }
 
@@ -181,8 +266,12 @@ export default {
         });
     },
 
-    openaddClass() {
-      this.addClassVisible = true;
+    openaddClass(val) {
+      if (val) {
+        this.addgraVisible = true;
+      }else{
+        this.addClassVisible = true;
+      }
     },
     // 新增班级
     addClass() {
@@ -299,6 +388,9 @@ export default {
 }
 .rigbox >>> .el-menu li {
   padding: 0 !important;
+  font-weight: 600;
+  font-family: PingFang SC, PingFang SC !important;
+  /* color: rgba(0,0,0,0.9) !important; */
 }
 .rigbox >>> .el-submenu .el-menu-item {
   min-width: 146px !important;
@@ -317,6 +409,19 @@ export default {
   height: 35px;
   display: flex;
   align-items: center;
+  justify-content: space-between;
+}
+.rigbox >>> .grade-submenu-arrow {
+  width: 12px;
+  height: 12px;
+  flex-shrink: 0;
+  transition: transform 0.2s;
+}
+.rigbox >>> .el-submenu.is-opened > .el-submenu__title .grade-submenu-arrow {
+  transform: rotate(180deg);
+}
+.rigbox >>> .el-submenu__icon-arrow {
+  display: none;
 }
 .el-menu-item:focus,
 .el-menu-item:hover {
@@ -329,7 +434,7 @@ export default {
 }
 .por {
   cursor: pointer;
-  padding: 5px;
+  padding: 8px 5px;
   box-sizing: border-box;
 }
 .active {
@@ -351,11 +456,32 @@ export default {
   width: 100%;
 }
 .addcla_box_item span {
-  width: 80px;
+  /* width: 80px; */
   flex-shrink: 0;
   text-align: right;
 }
 .addClassDialog >>> .el-dialog {
   border-radius: 10px !important;
+  height: 427px !important;
+  display: flex;
+  flex-direction: column;
+}
+.addClassDialog >>> .el-dialog__body {
+  flex: 1;
 }
+.dialog-footer {
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+}
+.dialog-footer div{
+  width: 100px;
+  text-align: center;
+  padding: 8px 14px;
+  cursor: pointer;
+  border-radius: 5px;
+  box-sizing: border-box;
+  font-size: 14px;
+}
+
 </style>

Некоторые файлы не были показаны из-за большого количества измененных файлов