SanHQin преди 5 дни
родител
ревизия
1c5cf73d48

+ 1 - 1
dist/index.html

@@ -27,7 +27,7 @@
     html,
     body{
       font-family: '黑体';
-    }</style><link href=./static/css/app.caf5aed2241c347b7ecb5bde4a14f397.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.b2299056e030e9dd4cb8.js></script><script type=text/javascript src=./static/js/app.bfd13562cfbe19c2115c.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.cc0a57bc0696ddc23a160af2c1aa79bf.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.b2299056e030e9dd4cb8.js></script><script type=text/javascript src=./static/js/app.1813d63ea328b98b2f96.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/css/app.caf5aed2241c347b7ecb5bde4a14f397.css


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/css/app.caf5aed2241c347b7ecb5bde4a14f397.css.map


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/css/app.cc0a57bc0696ddc23a160af2c1aa79bf.css


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/css/app.cc0a57bc0696ddc23a160af2c1aa79bf.css.map


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/app.1813d63ea328b98b2f96.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/app.1813d63ea328b98b2f96.js.map


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


+ 54 - 36
src/components/courseDetail.vue

@@ -1100,7 +1100,7 @@
       </div>
       <div class="cancelDiy" @click="dialogVisibleSk = false">取消</div>
     </el-dialog>
-    <!-- <selectTeachingClass ref="selectTeachingClassRef"/> -->
+    <selectTeachingClassDialog ref="selectTeachingClassDialogRef" @success="selectClassSuccess" @changeClassList="changeClassList"/>
   </div>
 </template>
 
@@ -1126,7 +1126,7 @@ let converter = OpenCC.Converter({
 		to:'cn'
 })
 
-// import selectTeachingClass from "./dialog/selectTeachingClass.vue";
+import selectTeachingClassDialog from "./dialog/selectTeachingClassDialog.vue";
 
 const getFile = (url) => {
   return new Promise((resolve, reject) => {
@@ -1185,7 +1185,7 @@ export default {
     Heatmap,
     Group,
     scoreZong,
-    // selectTeachingClass
+    selectTeachingClassDialog
   },
   data() {
     return {
@@ -1515,47 +1515,49 @@ export default {
 
     },
     goToStudyOrDia(l) {
-      if (l.length > 0) {
-        this.dialogVisibleSk = true;
-        // this.$refs.selectTeachingClassRef.open()
+      //if (l.length > 0) {
+        // this.dialogVisibleSk = true;
+        this.$refs.selectTeachingClassDialogRef.open({classList:this.classList})
 				this.insertMemorandum("点击<span class='btn'>以班级授课</span>")
-      } else {
-				this.getCourseDetail1().then(_=>{
-					if(this.classList.length<=0){
-						this.$confirm("该课程尚未指定授课班级,请返回首页,使用修改功能添加授课班级。","提示",{
-							confirmButtonText: '去修改',
-        		  cancelButtonText: '取消',
-							type:"error",
-						}).then(() => {
-							if(this.courseDetail.state == 1 || this.courseDetail.state == 2){
-								window.topU.postMessage({ tools: "openNewCourseUpdate",cid:this.id }, "*");
-							}else if(this.courseDetail.state == 3){
-								window.topU.postMessage({ tools: "openCourseEUpdate",cid:this.id }, "*");
-							}else if(this.courseDetail.state == 4 || this.courseDetail.state == 5){
-								window.topU.postMessage({ tools: "openCourseAiUpdate",cid:this.id }, "*");
-              }else if(this.courseDetail.state == 6){
-								window.topU.postMessage({ tools: "openCourseAiUpdate2",cid:this.id }, "*");
-              }else if(this.courseDetail.state == 7){
-                window.topU.postMessage({ tools: "openCoursePptUpdate",cid:this.id }, "*");
-              }
-						})
-					}else{
-						this.dialogVisibleSk = true;
-					}
-        })
+      // } else {
+			// 	this.getCourseDetail1().then(_=>{
+			// 		if(this.classList.length<=0){
+			// 			this.$confirm("该课程尚未指定授课班级,请返回首页,使用修改功能添加授课班级。","提示",{
+			// 				confirmButtonText: '去修改',
+      //   		  cancelButtonText: '取消',
+			// 				type:"error",
+			// 			}).then(() => {
+			// 				if(this.courseDetail.state == 1 || this.courseDetail.state == 2){
+			// 					window.topU.postMessage({ tools: "openNewCourseUpdate",cid:this.id }, "*");
+			// 				}else if(this.courseDetail.state == 3){
+			// 					window.topU.postMessage({ tools: "openCourseEUpdate",cid:this.id }, "*");
+			// 				}else if(this.courseDetail.state == 4 || this.courseDetail.state == 5){
+			// 					window.topU.postMessage({ tools: "openCourseAiUpdate",cid:this.id }, "*");
+      //         }else if(this.courseDetail.state == 6){
+			// 					window.topU.postMessage({ tools: "openCourseAiUpdate2",cid:this.id }, "*");
+      //         }else if(this.courseDetail.state == 7){
+      //           window.topU.postMessage({ tools: "openCoursePptUpdate",cid:this.id }, "*");
+      //         }
+			// 			})
+			// 		}else{
+			// 			this.dialogVisibleSk = true;
+			// 		}
+      //   })
         // this.addUserRate(0);
-      }
+      //}
     },
     goToStudyRate(i) {
       this.checkStage = i;
       if (this.tType == 2) {
         this.addUserRate(i);
       } else {
-        if (this.classList.length > 0) {
-          this.dialogVisibleSk = true;
-        } else {
-          this.addUserRate(i);
-        }
+        this.$refs.selectTeachingClassDialogRef.open({classList:this.classList})
+        // if (this.classList.length > 0) {
+        //   // this.dialogVisibleSk = true;
+        //   this.$refs.selectTeachingClassDialogRef.open({classList:this.classList})
+        // } else {
+        //   this.addUserRate(i);
+        // }
       }
     },
     addUserRate(i) {
@@ -2523,6 +2525,22 @@ export default {
         }
       };
     },
+    selectClassSuccess(classId){
+      this.gotoCourse(classId);
+      this.$refs.selectTeachingClassDialogRef.close();
+    },
+    changeClassList(data){
+      this.classList = JSON.parse(JSON.stringify(data))
+      let params = [{
+        cid:this.id,
+        juri:this.classList.map(i=>i.id).join(',')
+      }]
+      this.ajax.post(this.$store.state.api+"update_CourseJuriById",params).then(res=>{
+        if(res.data==1){
+          console.log("修改成功")
+        }
+      })
+    }
   },
   created() {
     // if(this.tType == 1 || this.tType == 4){

+ 417 - 0
src/components/dialog/addClassDialog.vue

@@ -0,0 +1,417 @@
+<template>
+  <div>
+    <el-dialog
+      title="选择班级"
+      :visible.sync="show"
+      :append-to-body="true"
+      width="800px"
+      height="80%"
+      class="addNewPP2"
+    >
+      <div class="check_classBox" v-loading="isLoading">
+        <div class="check_class_right">
+          <span>年级</span>
+          <div
+            class="check_class"
+            :class="{ activeX: gradeId == '' }"
+            @click="(gradeId = ''), getClass()"
+          >
+            全部年级
+          </div>
+          <el-tooltip
+            placement="top"
+            :content="item.name"
+            v-for="(item, index) in gradeList"
+            :key="index"
+          >
+            <div
+              class="check_class"
+              :class="{ activeX: gradeId == item.id }"
+              @click="(gradeId = item.id), getClass()"
+            >
+              {{ item.name }}
+            </div>
+          </el-tooltip>
+        </div>
+        <div class="check_class_left">
+          <div class="check_class_all_box">
+            <div class="check_class_left_title">班级</div>
+            <!-- <div style="display:flex;align-items:center;margin-left:auto;">
+              <el-checkbox
+                v-model="checkAll"
+                @change="handleCheckAllChange"
+                class="all_check"
+                >全选</el-checkbox
+              >
+            </div> -->
+          </div>
+          <!-- <div class="class_item" style="position:absolute; margin:0" v-if="grade2.length">
+            <el-checkbox v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
+          </div> -->
+          <!-- <el-checkbox-group
+            v-model="checkboxList2"
+            class="check_class_item"
+            @change="InviteChange"
+            v-if="grade2.length"
+          >
+            <div v-for="item in grade2" :key="item.id" class="class_item">
+              <el-checkbox :label="item.id">
+                {{ item.name }}
+              </el-checkbox>
+            </div>
+          </el-checkbox-group> -->
+          <div class="classItem" @click="classItemClick(item)" :class="{classActiveItem:checkboxList2.map(i=>i.id).includes(item.id)}" v-for="item in grade2" :key="item.id">
+            <div class="ci_left">
+              <div>{{ item.name }}</div>
+              <span v-if="item.studentNum>=0">{{ item.studentNum }}名学生</span>
+            </div>
+            <div class="ci_right">
+
+              <svg v-show="checkboxList2.map(i=>i.id).includes(item.id)" t="1756864121172" class="icon" viewBox="0 0 1098 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4441" width="200" height="200"><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="4442" fill="#4CAF51"></path></svg>
+            </div>
+          </div>
+          <div v-if="!grade2.length">暂无数据</div>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="b_bottom">
+					<div @click="close()">取消</div>
+          <div class="b_b_submit" @click="submit()">确定</div>
+				</div>
+        <!-- <el-button @click="close()">取 消</el-button>
+        <el-button type="primary" @click="submit()">确定</el-button> -->
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  export default {
+    data(){
+      return {
+        show:false,
+        gradeId:"",
+        gradeList:[],
+        checkAll:false,
+        checkboxList2:[],
+        grade2:[],
+        grade:[],
+        oid:this.$route.query.oid,
+        classJuri:[],
+        classSearch:"",
+        isLoading:false,
+      }
+    },
+    methods:{
+      open(data){
+        let _classList = data.classList?JSON.parse(JSON.stringify(data.classList)):[];
+        this.checkboxList2 = _classList;
+        this.getClass();
+        this.selectGrage();
+        this.show = true;
+
+      },
+      close(){
+        this.show = false;
+      },
+      init(){
+        this.gradeId = "";
+        this.classSearch = "";
+      },
+      getClass(){
+        let params = {
+          oid: this.oid,
+          gid: this.gradeId,
+          cn: this.classSearch
+        };
+        this.isLoading = true;
+        this.ajax
+        .get(this.$store.state.api + "selectClassBySchoolSearch2", params)
+        .then(res => {
+          this.isLoading = false;
+          if (!this.grade.length) {
+            this.grade = res.data[0];
+          }
+          this.grade2 = res.data[0];
+          this.classJuri = res.data[0];
+          let _check = [];
+          let _check2 = [];
+          for (var i = 0; i < this.grade2.length; i++) {
+            var gid = this.grade2[i].id;
+            _check.push(gid);
+          }
+          for (var i = 0; i < this.checkboxList2.length; i++) {
+            var _id = this.checkboxList2[i];
+            if (_check.indexOf(_id) !== -1) {
+              _check2.push(_id);
+            }
+          }
+          this.checkAll = _check2.length === _check.length;
+        })
+        .catch(err => {
+          this.isLoading = false;
+          console.error(err);
+        });
+      },
+      selectGrage() {
+      let params = {
+        oid: this.oid
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectGrageBySchool", params)
+        .then(res => {
+          this.gradeList = res.data[0];
+        })
+        .catch(err => {
+          this.isLoading = false;
+          console.error(err);
+        });
+    },
+      submit(){
+        let data = JSON.parse(JSON.stringify(this.checkboxList2));
+        this.$emit("success",data)
+      },
+      classItemClick(item){
+        if(this.checkboxList2.map(i=>i.id).includes(item.id)){
+          this.checkboxList2 = this.checkboxList2.filter(i => i.id != item.id);
+        }else{
+          this.checkboxList2.push(item)
+        }
+      }
+    }
+
+  }
+</script>
+
+<style  scoped>
+.addNewPP2 >>> .el-dialog__body {
+  padding: 5px 0;
+}
+
+.addNewPP2 >>> .el-dialog {
+  margin-top: 5vh !important;
+  border-radius: 10px !important;
+}
+
+.check_classBox {
+  height: 400px;
+  display: flex;
+  border-top: 1.5px solid #e7ebf1;
+  border-bottom: 1.5px solid #e7ebf1;
+}
+
+.check_class_right {
+  width: 200px;
+  border-right: 1px solid #e7ebf1;
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  height: 100%;
+  overflow: auto;
+  padding: 15px 0;
+  box-sizing: border-box;
+  padding-top: 40px;
+  position: relative;
+}
+
+.check_class_right>span{
+  font-size: 14px;
+  text-align: left;
+  position: absolute;
+  left: 10px;
+  top: 10px;
+  font-weight: 700;
+}
+
+.check_class {
+  width: 85%;
+  border-radius: 5px;
+  height: 50px;
+  min-height: 30px;
+  padding: 0 20px;
+  box-sizing: border-box;
+  cursor: pointer;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  background: #fff;
+  border: solid 1px #E2E9EE;
+}
+
+.check_class.activeX {
+  background: #E8F5E8;
+  color: #4CAF51;
+  font-weight: 700;
+  border-color: #4CAF51;
+}
+
+.check_class + .check_class {
+  margin-top: 15px;
+}
+
+.check_class_left {
+  background: #fafafa;
+  width: calc(100% - 130px);
+  padding: 15px;
+  box-sizing: border-box;
+  overflow: auto;
+}
+
+.check_class_all_box {
+  display: flex;
+  margin-bottom: 10px;
+}
+
+.all_check {
+  display: flex;
+  align-items: center;
+  padding: 2px 0 0;
+  margin-left: 10px;
+}
+
+.all_check >>> .el-checkbox__label {
+  line-height: 18px;
+}
+
+.check_class_left_title {
+  font-size: 14px;
+  font-weight: 700;
+}
+
+.check_class_item {
+  display: flex;
+  flex-wrap: wrap;
+  height: calc(100% - 45px);
+  overflow: auto;
+  justify-content: flex-start;
+  align-items: flex-start;
+  align-content: flex-start;
+}
+
+.class_item:first-child {
+  /* margin: 0 15px 15px 67px; */
+}
+.class_item {
+  margin: 0 15px 15px 0;
+}
+
+.class_item:hover >>> .el-checkbox__label {
+  color: #409eff;
+}
+
+.class_item >>> .el-checkbox__label {
+  color: #0e1e33;
+}
+
+.class_item:hover >>> .el-checkbox__inner {
+  border-color: #409eff;
+}
+
+.class_item >>> .el-checkbox,
+.class_item >>> .el-checkbox__input {
+  display: flex;
+  align-items: center;
+}
+
+.classItem{
+  width: 100%;
+  height: 70px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  background: #fff;
+  box-sizing: border-box;
+  border: solid 1px #E1E8ED;
+  border-radius: 10px;
+  margin-bottom: 15px;
+  padding-left: 30px;
+  position: relative;
+}
+
+.classItem::after{
+  content: "";
+  height: 100%;
+  width: 8px;
+  background: #E1E8ED;
+  position: absolute;
+  left: 0;
+  top: 0;
+  border-radius: 10px 0 0 10px;
+  cursor: pointer;
+}
+
+.ci_left{
+  width: calc(100% - 70px);
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+}
+
+.ci_left>div{
+  color: #000;
+  font-size: 16px;
+  margin-bottom: 4px;
+  font-weight: 700;
+}
+
+.ci_left>span{
+  font-size: 14px;
+  color: #8F8F8F;
+}
+
+.ci_right{
+  width: 70px;
+  height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+
+}
+
+.ci_right>svg{
+  width: 20px;
+  height: 20px;
+}
+
+.classActiveItem{
+  border: solid 1px #4CAF51;
+}
+
+.classActiveItem::after{
+  background: #4CAF51;
+}
+
+.b_bottom {
+	width: 100%;
+	height: 40px;
+	display: flex;
+	align-items: center;
+	justify-content: flex-end;
+	box-sizing: border-box;
+	padding: 0 20px;
+}
+
+.b_bottom>div{
+  padding: 10px 25px;
+  background: #fff;
+  color: #000;
+  border-radius: 4px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  border: solid 1px #EEEEEE;
+  margin-left: 15px;
+  cursor: pointer;
+}
+
+.b_bottom>.b_b_submit{
+  background: #1A1A1A;
+  color: #D4D4D4;
+  border-color: #1A1A1A;
+}
+
+</style>

+ 0 - 165
src/components/dialog/selectTeachingClass.vue

@@ -1,165 +0,0 @@
-<template>
-	<div>
-		<el-dialog
-			:center="true"
-			:visible.sync="show"
-			:close-on-click-modal="false"
-			:modal="true"
-			width="auto"
-			top="2vh"
-			height="auto"
-			:append-to-body="true"
-			class="dialog"
-		>
-			<div class="box">
-				<div class="b_head">
-					<span>选择授课班级</span>
-					<svg
-						@click="close()"
-						t="1748587270371"
-						class="icon"
-						viewBox="0 0 1024 1024"
-						version="1.1"
-						xmlns="http://www.w3.org/2000/svg"
-						p-id="5023"
-						width="200"
-						height="200"
-					>
-						<path
-							d="M0 0h1024v1024H0z"
-							fill="#FF0033"
-							fill-opacity="0"
-							p-id="5024"
-						></path>
-						<path
-							d="M240.448 168l2.346667 2.154667 289.92 289.941333 279.253333-279.253333a42.666667 42.666667 0 0 1 62.506667 58.026666l-2.133334 2.346667-279.296 279.210667 279.274667 279.253333a42.666667 42.666667 0 0 1-58.005333 62.528l-2.346667-2.176-279.253333-279.253333-289.92 289.962666a42.666667 42.666667 0 0 1-62.506667-58.005333l2.154667-2.346667 289.941333-289.962666-289.92-289.92a42.666667 42.666667 0 0 1 57.984-62.506667z"
-							fill="#111111"
-							p-id="5025"
-						></path>
-					</svg>
-				</div>
-				<div class="b_main" v-loading="loading">
-
-				</div>
-				<div class="b_bottom">
-          <el-button size="small" @click="close()">取消</el-button>
-					<el-button size="small" type="primary" @click="submit()">确定</el-button>
-				</div>
-			</div>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-export default {
-	data() {
-		return {
-			loading: false,
-			show: false,
-			data: null,
-			value: "",
-		};
-	},
-	computed: {},
-	methods: {
-		open(data) {
-			this.data = data;
-			this.loading = false;
-			this.show = true;
-		},
-		close() {
-			this.show = false;
-			this.init();
-		},
-		init() {
-			this.data = null;
-			this.loading = false;
-		},
-	},
-};
-</script>
-
-<style scoped>
-.dialog >>> .el-dialog {
-	width: 800px;
-	border-radius: 8px;
-	padding: 0;
-	background-color: #fff;
-	overflow: hidden;
-}
-
-.dialog >>> .el-dialog__body {
-	width: 800px !important;
-	height: auto;
-	flex-shrink: 0;
-	padding: 0;
-	box-sizing: border-box;
-	overflow: auto;
-}
-
-.dialog >>> .el-dialog__header {
-	display: none !important;
-}
-
-.box {
-	width: 100%;
-	height: 500px;
-	background: #fafafa;
-	border-radius: 15px;
-	box-shadow: 0px 6px 30px 5px rgba(0, 0, 0, 0.05),
-		0px 16px 24px 2px rgba(0, 0, 0, 0.04), 0px 8px 10px -5px rgba(0, 0, 0, 0.08);
-}
-
-.b_head {
-	width: 100%;
-	height: 50px;
-	border-radius: 15px 15px 0 0;
-	background: #fff;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	box-sizing: border-box;
-	padding: 0 20px;
-}
-
-.b_head > span {
-	font-size: 18px;
-	font-weight: bold;
-	color: #000;
-}
-
-.b_head > img {
-	width: 20px;
-	height: 20px;
-	cursor: pointer;
-}
-
-.b_head > svg {
-	width: 20px;
-	height: 20px;
-	cursor: pointer;
-}
-
-.b_main {
-	width: 100%;
-	height: calc(100% - 70px - 50px);
-	background: #fafafa;
-	padding: 20px 20px 0 20px;
-	box-sizing: border-box;
-	display: flex;
-	flex-direction: column;
-	align-items: center;
-	justify-content: center;
-}
-
-.b_bottom {
-	width: 100%;
-	height: 70px;
-	display: flex;
-	align-items: center;
-	justify-content: flex-end;
-	box-sizing: border-box;
-	padding: 0 20px;
-}
-
-</style>

+ 269 - 0
src/components/dialog/selectTeachingClassDialog.vue

@@ -0,0 +1,269 @@
+<template>
+	<div>
+		<el-dialog
+			:center="true"
+			:visible.sync="show"
+			:close-on-click-modal="true"
+			:modal="true"
+			width="auto"
+			height="auto"
+			:append-to-body="true"
+			class="dialog"
+		>
+			<div class="box">
+				<div class="b_head">
+					<span>选择授课班级</span>
+					<svg
+						@click="close()"
+						t="1748587270371"
+						class="icon"
+						viewBox="0 0 1024 1024"
+						version="1.1"
+						xmlns="http://www.w3.org/2000/svg"
+						p-id="5023"
+						width="200"
+						height="200"
+					>
+						<path
+							d="M0 0h1024v1024H0z"
+							fill="#FF0033"
+							fill-opacity="0"
+							p-id="5024"
+						></path>
+						<path
+							d="M240.448 168l2.346667 2.154667 289.92 289.941333 279.253333-279.253333a42.666667 42.666667 0 0 1 62.506667 58.026666l-2.133334 2.346667-279.296 279.210667 279.274667 279.253333a42.666667 42.666667 0 0 1-58.005333 62.528l-2.346667-2.176-279.253333-279.253333-289.92 289.962666a42.666667 42.666667 0 0 1-62.506667-58.005333l2.154667-2.346667 289.941333-289.962666-289.92-289.92a42.666667 42.666667 0 0 1 57.984-62.506667z"
+							fill="#fff"
+							p-id="5025"
+						></path>
+					</svg>
+				</div>
+				<div class="b_main" v-loading="loading">
+          <div class="b_m_classItem" :class="{'b_m_classItem_active':selectId == item.id}" v-for="item in classList" :key="item.id" @click="selectId = item.id">
+            <div>{{ item.name }}</div>
+            <span v-if="item.studentNum>=0">{{ item.studentNum }}名学生</span>
+          </div>
+
+          <div class="b_m_classItem" @click="editClass">
+              <div>
+                <span>+</span>
+                <svg t="1756867649445" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10274" width="200" height="200"><path d="M417.664 921.6l317.184-824.32h-63.616L353.152 921.6z" fill="#999999" p-id="10275"></path></svg>
+                <span>-</span>
+              </div>
+            <div>添加/修改班级</div>
+          </div>
+				</div>
+				<div class="b_bottom">
+					<div @click="close()">取消</div>
+          <div class="b_b_submit" @click="submit()">确定</div>
+				</div>
+			</div>
+		</el-dialog>
+    <addClassDialog ref="addClassDialogRef" @success="addClassSuccess"/>
+	</div>
+</template>
+
+<script>
+import addClassDialog from './addClassDialog.vue';
+export default {
+  components:{
+    addClassDialog
+  },
+	data() {
+		return {
+			loading: false,
+			show: false,
+			data: null,
+      classList:[],
+      selectId:"",
+		};
+	},
+	computed: {},
+	methods: {
+		open(data) {
+			this.data = JSON.parse(JSON.stringify(data));
+      this.classList = this.data.classList;
+			this.loading = false;
+			this.show = true;
+		},
+		close() {
+			this.show = false;
+			this.init();
+		},
+		init() {
+			this.data = null;
+      this.classList = [];
+      this.selectId = "";
+			this.loading = false;
+		},
+    submit(){
+      // console.log(this.selectId)
+      this.$emit("success",this.selectId)
+    },
+    editClass(){
+      this.$refs.addClassDialogRef.open({classList:this.classList});
+    },
+    addClassSuccess(data){
+      this.classList = data;
+      this.$emit("changeClassList",this.classList);
+      this.$refs.addClassDialogRef.close();
+
+    },
+	},
+};
+</script>
+
+<style scoped>
+.dialog >>> .el-dialog {
+	width: 900px !important;
+	border-radius: 8px;
+	padding: 0;
+	background-color: #fff;
+	overflow: hidden;
+}
+
+.dialog >>> .el-dialog__body {
+	width: 900px !important;
+	height: auto;
+	flex-shrink: 0;
+	padding: 0;
+	box-sizing: border-box;
+	overflow: auto;
+}
+
+.dialog >>> .el-dialog__header {
+	display: none !important;
+}
+
+.box {
+	width: 900px;
+	height: auto;
+	background: #fafafa;
+	border-radius: 15px;
+	box-shadow: 0px 6px 30px 5px rgba(0, 0, 0, 0.05),
+		0px 16px 24px 2px rgba(0, 0, 0, 0.04), 0px 8px 10px -5px rgba(0, 0, 0, 0.08);
+}
+
+.b_head {
+	width: 100%;
+	height: 50px;
+	/* border-radius: 15px 15px 0 0; */
+	background: #1A1A1A;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	box-sizing: border-box;
+	padding: 0 20px;
+  color: #fff;
+}
+
+.b_head > span {
+	font-size: 18px;
+	font-weight: bold;
+	color: #fff;
+}
+
+.b_head > img {
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+}
+
+.b_head > svg {
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+}
+
+.b_main {
+	width: 100%;
+	height: 400px;
+	background: #fafafa;
+	padding: 20px 20px 20px 20px;
+	box-sizing: border-box;
+  overflow: auto;
+}
+
+.b_bottom {
+	width: 100%;
+	height: 70px;
+	display: flex;
+	align-items: center;
+	justify-content: flex-end;
+	box-sizing: border-box;
+	padding: 0 20px;
+}
+
+.b_bottom>div{
+  padding: 10px 25px;
+  background: #fff;
+  color: #000;
+  border-radius: 4px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  border: solid 1px #EEEEEE;
+  margin-left: 15px;
+  cursor: pointer;
+}
+
+.b_bottom>.b_b_submit{
+  background: #1A1A1A;
+  color: #D4D4D4;
+  border-color: #1A1A1A;
+}
+
+.b_m_classItem{
+  width: 32%;
+  height: 85px;
+  float: left;
+  margin-bottom: 20px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+  background: #fff;
+  box-shadow: 0px 6px 30px 5px rgba(0, 0, 0, 0.05),
+		0px 16px 24px 2px rgba(0, 0, 0, 0.04), 0px 8px 10px -5px rgba(0, 0, 0, 0.08);
+  border-radius: 12px;
+  cursor: pointer;
+  transition: .2s;
+}
+
+.b_m_classItem>div{
+  color: #5F5F5F;
+  font-size: 16px;
+  margin-bottom: 8px;
+  display: flex;
+  flex-wrap: wrap;
+  align-content: center;
+}
+
+.b_m_classItem>div>span{
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 25px;
+  height: 25px;
+  border-radius: 4px;
+  border: solid 1px #B0B0B0;
+}
+
+.b_m_classItem>div>svg{
+  width: 20px;
+  height: 25px;
+  margin: 0 5px;
+}
+
+.b_m_classItem>span{
+  color: #A3A3A3;
+  font-size: 14px;
+}
+
+.b_main > div:nth-child(3n-1) {
+  margin: 0 2%;
+}
+
+.b_m_classItem_active{
+  box-shadow: 4px 4px 4px 0px rgba(138, 238, 138, 0.555);
+}
+</style>

Някои файлове не бяха показани, защото твърде много файлове са промени