lsc 2 éve
szülő
commit
f4f6216682

+ 1 - 1
src/App.vue

@@ -7,7 +7,7 @@
         $route.path == '/note' ||
         $route.path == '/works',
       appNoHeight: $route.path == '/liveRoom',
-      GMBg:this.$route.query.org=='eb2af5e9-ac3d-46b6-9fe3-3c1c364f0217' && ( $route.path != '/courseGM' &&  $route.path != '/course/addCourseGM'&&  $route.path != '/dataGM')
+      GMBg:this.$route.query.org=='eb2af5e9-ac3d-46b6-9fe3-3c1c364f0217' && ( $route.path != '/courseGM' &&  $route.path != '/course/addCourseGM'&&  $route.path != '/dataGM'&&  $route.path != '/typeGM')
     }"
   >
     <!-- <div class="app_head" :class="{stuWidth:$route.path == '/student'}"> -->

+ 156 - 337
src/components/pages/Ttype.vue

@@ -1,16 +1,12 @@
 <template>
-  <div
-    class="pb_content"
-    style="
+  <div class="pb_content" style="
       background: unset;
       overflow: auto;
       padding: 20px;
       margin: 0;
       box-sizing: border-box;
-    "
-  >
-    <div
-      style="
+    ">
+    <div style="
         position: absolute;
         width: 95%;
         top: 0;
@@ -18,52 +14,26 @@
         overflow: auto;
         left: 50%;
         transform: translateX(-50%);
-      "
-    >
-      <div
-        class="pb_content_body"
-        style="
+      ">
+      <div class="pb_content_body" style="
           background: #fff;
-          padding: 0px 25px;
+          padding: 10px 25px;
           box-sizing: border-box;
           border-radius: 5px;
-        "
-      >
+        ">
         <div class="pb_head">
           <span>分组管理</span>
           <!-- <span>备注:教师可以根据课程、班级条件筛选学生并查看该学生信息</span> -->
         </div>
-        <!-- <div class="student_head">
-          <div class="student_search">
-            <el-button
-              size="small"
-              type="primary"
-              @click="dialogVisible = true"
-              v-if="step == 0"
-              >添加学校</el-button
-            >-->
+
         <div v-if="step == 1" class="student_search1">
           <div></div>
           <div>
-            <el-button
-              size="small"
-              type="primary"
-              @click="dialogVisible6 = true"
-              >添加图片</el-button
-            >
-            <el-button
-              size="small"
-              type="primary"
-              @click="dialogVisible2 = true"
-              >添加分类</el-button
-            >
+            <el-button size="small" type="primary" @click="dialogVisible6 = true">修改Banner</el-button>
           </div>
         </div>
         <div v-if="step == 2" class="student_search1">
-          <el-breadcrumb
-            separator-class="el-icon-arrow-right"
-            style="margin-top: 15px"
-          >
+          <el-breadcrumb separator-class="el-icon-arrow-right" style="margin-top: 15px">
             <el-breadcrumb-item>
               <span @click="step = 1" style="cursor: pointer">分类列表</span>
             </el-breadcrumb-item>
@@ -71,311 +41,128 @@
               <span style="color: rgb(15, 126, 255)">子分类列表</span>
             </el-breadcrumb-item>
           </el-breadcrumb>
-          <el-button size="small" type="primary" @click="dialogVisible4 = true"
-            >添加子分类</el-button
-          >
+          <el-button size="small" type="primary" @click="dialogVisible4 = true">添加子分类</el-button>
         </div>
-        <!-- </div>
-        </div>
-        <el-table
-          ref="table"
-          :data="tableData"
-          stripe
-          border
+        <el-table ref="table" :data="tableData1" stripe border
           :header-cell-style="{ background: '#f1f1f1', 'text-align': 'center' }"
-          :cell-style="{ 'text-align': 'center' }"
-          style="width: 100%"
-          :height="tableHeight"
-          v-loading="isLoading"
-          v-if="step == 0"
-        >
-          <el-table-column prop="name" label="学校名称" min-width="70">
-          </el-table-column>
-          <el-table-column prop="date" label="操作" min-width="30">
-            <template slot-scope="scope">
-              <div class="pb_buttonBox">
-                <el-button
-                  size="mini"
-                  type="primary"
-                  @click="selectType(scope.row.id)"
-                >
-                  查看分类
-                </el-button>
-                <el-button
-                  size="mini"
-                  type="primary"
-                  @click="updateS(scope.row.id, scope.row.name)"
-                  >修改</el-button
-                >
-                <el-button
-                  size="mini"
-                  type="primary"
-                  @click="deleteSchool(scope.row.id)"
-                  >删除</el-button
-                >
-              </div>
-            </template>
-          </el-table-column>
-        </el-table> -->
-        <el-table
-          ref="table"
-          :data="tableData1"
-          stripe
-          border
-          :header-cell-style="{ background: '#f1f1f1', 'text-align': 'center' }"
-          :cell-style="{ 'text-align': 'center' }"
-          style="width: 100%"
-          :height="tableHeight"
-          v-loading="isLoading"
-          v-if="step == 1"
-        >
+          :cell-style="{ 'text-align': 'center' }" style="width: 100%" :height="tableHeight" v-loading="isLoading"
+          v-if="step == 1">
           <el-table-column prop="name" label="分类名称" min-width="70">
           </el-table-column>
           <el-table-column prop="date" label="操作" min-width="30">
             <template slot-scope="scope">
               <div class="pb_buttonBox">
-                <el-button
-                  size="mini"
-                  type="primary"
-                  @click="selectSType(scope.row.id)"
-                >
+                <el-button size="mini" type="primary" @click="selectSType(scope.row.id)">
                   查看子分类
                 </el-button>
-                <el-button
-                  size="mini"
-                  type="primary"
-                  @click="updateP(scope.row.id, scope.row.name)"
-                  >修改</el-button
-                >
-                <el-button
-                  size="mini"
-                  type="primary"
-                  @click="deletePtype(scope.row.id)"
-                  >删除</el-button
-                >
               </div>
             </template>
           </el-table-column>
         </el-table>
-        <el-table
-          ref="table"
-          :data="tableData2"
-          stripe
-          border
+        <el-table ref="table" :data="tableData2" stripe border
           :header-cell-style="{ background: '#f1f1f1', 'text-align': 'center' }"
-          :cell-style="{ 'text-align': 'center' }"
-          style="width: 100%"
-          :height="tableHeight"
-          v-loading="isLoading"
-          v-if="step == 2"
-        >
+          :cell-style="{ 'text-align': 'center' }" style="width: 100%" :height="tableHeight" v-loading="isLoading"
+          v-if="step == 2">
           <el-table-column prop="name" label="子分类名称" min-width="70">
           </el-table-column>
           <el-table-column prop="date" label="操作" min-width="30">
             <template slot-scope="scope">
               <div class="pb_buttonBox">
-                <!-- <el-button size="mini" type="primary" @click="selectType">
-                  查看子分类
-                </el-button> -->
-                <el-button
-                  size="mini"
-                  type="primary"
-                  @click="updateSPType(scope.row.id, scope.row.name)"
-                  >修改</el-button
-                >
-                <el-button
-                  size="mini"
-                  type="primary"
-                  @click="deleteStype(scope.row.id)"
-                  >删除</el-button
-                >
+                <el-button size="mini" type="primary" @click="updateSPType(scope.row.id, scope.row.name)">修改</el-button>
+                <el-button size="mini" type="primary" @click="deleteStype(scope.row.id)">删除</el-button>
               </div>
             </template>
           </el-table-column>
         </el-table>
       </div>
       <div class="student_page" v-if="step == 0">
-        <el-pagination
-          background
-          layout="prev, pager, next"
-          :page-size="10"
-          :total="total"
-          v-if="page"
-          @current-change="handleCurrentChange"
-        ></el-pagination>
+        <el-pagination background layout="prev, pager, next" :page-size="10" :total="total" v-if="page"
+          @current-change="handleCurrentChange"></el-pagination>
       </div>
       <div class="student_page" v-if="step == 1">
-        <el-pagination
-          background
-          layout="prev, pager, next"
-          :page-size="10"
-          :total="total1"
-          v-if="page1"
-          @current-change="handleCurrentChange1"
-        ></el-pagination>
+        <el-pagination background layout="prev, pager, next" :page-size="10" :total="total1" v-if="page1"
+          @current-change="handleCurrentChange1"></el-pagination>
       </div>
       <div class="student_page" v-if="step == 2">
-        <el-pagination
-          background
-          layout="prev, pager, next"
-          :page-size="10"
-          :total="total2"
-          v-if="page2"
-          @current-change="handleCurrentChange2"
-        ></el-pagination>
+        <el-pagination background layout="prev, pager, next" :page-size="10" :total="total2" v-if="page2"
+          @current-change="handleCurrentChange2"></el-pagination>
       </div>
     </div>
-    <el-dialog
-      title="添加学校"
-      :visible.sync="dialogVisible"
-      width="500px"
-      :before-close="handleClose"
-      class="dialog_diy"
-      center
-    >
+    <el-dialog title="添加学校" :visible.sync="dialogVisible" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
       <div class="addBox">
         <span class="tian1">学校名称</span>
-        <el-input
-          v-model="schoolName"
-          style="width: 250px; margin: 15px 0px"
-          placeholder="请输入学校名称"
-        ></el-input>
+        <el-input v-model="schoolName" style="width: 250px; margin: 15px 0px" placeholder="请输入学校名称"></el-input>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible = false">取 消</el-button>
         <el-button type="primary" @click="addSchool">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog
-      title="修改学校"
-      :visible.sync="dialogVisible1"
-      width="500px"
-      :before-close="handleClose"
-      class="dialog_diy"
-      center
-    >
+    <el-dialog title="修改学校" :visible.sync="dialogVisible1" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
       <div class="addBox">
         <span class="tian1">学校名称</span>
-        <el-input
-          v-model="schoolName"
-          style="width: 250px; margin: 15px 0px"
-          placeholder="请输入学校名称"
-        ></el-input>
+        <el-input v-model="schoolName" style="width: 250px; margin: 15px 0px" placeholder="请输入学校名称"></el-input>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible1 = false">取 消</el-button>
         <el-button type="primary" @click="updateSchool">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog
-      title="添加分类"
-      :visible.sync="dialogVisible2"
-      width="500px"
-      :before-close="handleClose"
-      class="dialog_diy"
-      center
-    >
+    <el-dialog title="添加分类" :visible.sync="dialogVisible2" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
       <div class="addBox">
         <span class="tian1">分类名称</span>
-        <el-input
-          v-model="typeName"
-          style="width: 250px; margin: 15px 0px"
-          placeholder="请输入分类名称"
-        ></el-input>
+        <el-input v-model="typeName" style="width: 250px; margin: 15px 0px" placeholder="请输入分类名称"></el-input>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible2 = false">取 消</el-button>
         <el-button type="primary" @click="addType">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog
-      title="修改分类"
-      :visible.sync="dialogVisible3"
-      width="500px"
-      :before-close="handleClose"
-      class="dialog_diy"
-      center
-    >
+    <el-dialog title="修改分类" :visible.sync="dialogVisible3" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
       <div class="addBox">
         <span class="tian1">分类名称</span>
-        <el-input
-          v-model="typeName"
-          style="width: 250px; margin: 15px 0px"
-          placeholder="请输入分类名称"
-        ></el-input>
+        <el-input v-model="typeName" style="width: 250px; margin: 15px 0px" placeholder="请输入分类名称"></el-input>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible3 = false">取 消</el-button>
         <el-button type="primary" @click="updatePtype">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog
-      title="添加子分类"
-      :visible.sync="dialogVisible4"
-      width="500px"
-      :before-close="handleClose"
-      class="dialog_diy"
-      center
-    >
+    <el-dialog title="添加子分类" :visible.sync="dialogVisible4" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
       <div class="addBox">
         <span class="tian1">子分类名称</span>
-        <el-input
-          v-model="sTypeName"
-          style="width: 250px; margin: 15px 0px"
-          placeholder="请输入子分类名称"
-        ></el-input>
+        <el-input v-model="sTypeName" style="width: 250px; margin: 15px 0px" placeholder="请输入子分类名称"></el-input>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible4 = false">取 消</el-button>
         <el-button type="primary" @click="addStype">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog
-      title="修改子分类"
-      :visible.sync="dialogVisible5"
-      width="500px"
-      :before-close="handleClose"
-      class="dialog_diy"
-      center
-    >
+    <el-dialog title="修改子分类" :visible.sync="dialogVisible5" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
       <div class="addBox">
         <span class="tian1">子分类名称</span>
-        <el-input
-          v-model="sTypeName"
-          style="width: 250px; margin: 15px 0px"
-          placeholder="请输入子分类名称"
-        ></el-input>
+        <el-input v-model="sTypeName" style="width: 250px; margin: 15px 0px" placeholder="请输入子分类名称"></el-input>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible5 = false">取 消</el-button>
         <el-button type="primary" @click="updateStype">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog
-      title="添加图片"
-      :visible.sync="dialogVisible6"
-      width="500px"
-      :before-close="handleClose"
-      class="dialog_diy"
-      center
-    >
+    <el-dialog title="添加图片" :visible.sync="dialogVisible6" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
       <div>
         <div class="dialogBox">
           <span>添加图片</span>
 
-          <el-upload
-            :class="{ disUoloadSty: noneBtnImg }"
-            action="#"
-            list-type="picture-card"
-            :on-preview="handlePictureCardPreview"
-            :on-remove="handleRemove"
-            v-loading="uploadLoading"
-            :http-request="beforeUpload"
-            ref="upload"
-            :show-file-list="true"
-            :limit="1"
-            accept="image/*"
-          >
+          <el-upload :class="{ disUoloadSty: noneBtnImg }" action="#" list-type="picture-card"
+            :on-preview="handlePictureCardPreview" :on-remove="handleRemove" v-loading="uploadLoading"
+            :http-request="beforeUpload" ref="upload" :show-file-list="true" :limit="1" accept="image/*">
             <i class="el-icon-plus"></i>
           </el-upload>
         </div>
@@ -398,39 +185,22 @@
     <el-dialog :visible.sync="imgVisible">
       <img width="100%" :src="dialogImageUrl" alt="" />
     </el-dialog>
-    <el-dialog
-      title="添加链接"
-      :visible.sync="dialogVisible7"
-      width="500px"
-      :before-close="handleClose"
-      class="dialog_diy"
-      style="text-align: center"
-      center
-    >
+    <el-dialog title="添加链接" :visible.sync="dialogVisible7" width="500px" :before-close="handleClose" class="dialog_diy"
+      style="text-align: center" center>
       <div>
         <el-card class="box-card">
           <div slot="header" class="cardHead">
-            <el-input
-              v-model="searchClassName"
-              placeholder="请输入需要添加的课程"
-              @keypress.native.enter="Search"
-            ></el-input>
-            <el-button type="text" style="margin: 0 0 0 20px" @click="Search"
-              >搜索</el-button
-            >
+            <el-input v-model="searchClassName" placeholder="请输入需要添加的课程" @keypress.native.enter="Search"></el-input>
+            <el-button type="text" style="margin: 0 0 0 20px" @click="Search">搜索</el-button>
           </div>
           <div class="cardList">
             <div v-for="item in courseList" :key="item.courseId">
               <el-popover placement="top-start" trigger="hover">
                 <p style="max-width: 380px">课程名称: {{ item.title }}</p>
                 <p style="max-width: 380px">简介: {{ item.brief }}</p>
-                <el-radio
-                  :label="item"
-                  slot="reference"
-                  v-model="checkBannerCourse"
-                  ><span>课程名称:</span
-                  ><span>{{ item.title }}</span></el-radio
-                >
+                <el-radio :label="item" slot="reference" v-model="checkBannerCourse"><span>课程名称:</span><span>{{
+                    item.title
+                }}</span></el-radio>
               </el-popover>
             </div>
             <!-- </el-checkbox-group> -->
@@ -666,7 +436,7 @@ export default {
                 });
             }
           })
-          .catch(() => {});
+          .catch(() => { });
       } else {
         var list = this.fileList;
         if (list.length == 0) {
@@ -904,31 +674,44 @@ export default {
         });
     },
     deletePtype(id) {
-      let params = {
-        tid: id,
-      };
-      this.ajax
-        .get(this.$store.state.api + "deletePtype", params)
-        .then((res) => {
-          this.$message({
-            message: "删除成功",
-            type: "success",
-          });
-          this.updateId = "";
-          this.typeName = "";
-          this.selectType();
+      this.$confirm(
+        "确定删除此分类吗?",
+        "提示",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }
+      )
+        .then(() => {
+          let params = {
+            tid: id,
+          };
+          this.ajax
+            .get(this.$store.state.api + "deletePtype", params)
+            .then((res) => {
+              this.$message({
+                message: "删除成功",
+                type: "success",
+              });
+              this.updateId = "";
+              this.typeName = "";
+              this.selectType();
+            })
+            .catch((err) => {
+              this.$message.error("删除失败");
+              console.error(err);
+            });
         })
-        .catch((err) => {
-          this.$message.error("删除失败");
-          console.error(err);
-        });
+        .catch(() => { });
+
     },
     addStype() {
       let params = {
         n: this.sTypeName,
         pid: this.pid,
         uid: this.userid,
-        oid: this.updateOid,
+        oid: this.oid,
       };
       this.ajax
         .get(this.$store.state.api + "addStype", params)
@@ -998,24 +781,37 @@ export default {
         });
     },
     deleteStype(id) {
-      let params = {
-        tid: id,
-      };
-      this.ajax
-        .get(this.$store.state.api + "deletePtype", params)
-        .then((res) => {
-          this.$message({
-            message: "删除成功",
-            type: "success",
-          });
-          this.updateId = "";
-          this.sTypeName = "";
-          this.selectSType();
+      this.$confirm(
+        "确定删除此分类吗?",
+        "提示",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }
+      )
+        .then(() => {
+          let params = {
+            tid: id,
+          };
+          this.ajax
+            .get(this.$store.state.api + "deletePtype", params)
+            .then((res) => {
+              this.$message({
+                message: "删除成功",
+                type: "success",
+              });
+              this.updateId = "";
+              this.sTypeName = "";
+              this.selectSType();
+            })
+            .catch((err) => {
+              this.$message.error("删除失败");
+              console.error(err);
+            });
         })
-        .catch((err) => {
-          this.$message.error("删除失败");
-          console.error(err);
-        });
+        .catch(() => { });
+
     },
   },
   created() {
@@ -1027,44 +823,54 @@ export default {
 </script>
 
 <style scoped>
-.pb_head > span:nth-child(2) {
+.pb_head>span:nth-child(2) {
   font-size: 16px;
   margin-left: 80px;
   color: #ab582f;
 }
+
 .addBox {
   display: flex;
   align-items: center;
   justify-content: center;
 }
+
 .tian1 {
   /* font-size: 16px; */
   margin-right: 10px;
 }
+
 .pb_head {
   margin: 0 !important;
   width: 100% !important;
 }
+
 .student_page {
   margin: 10px 0 0 45px;
 }
-.disUoloadSty >>> .el-upload--picture-card {
-  display: none; /* 上传按钮隐藏 */
+
+.disUoloadSty>>>.el-upload--picture-card {
+  display: none;
+  /* 上传按钮隐藏 */
 }
+
 .dialogBox {
   display: flex;
   align-items: center;
   justify-content: center;
 }
+
 .dialogBox span {
   margin: 0 20px;
 }
+
 .student_head {
   margin-top: 10px;
   padding-bottom: 15px;
   display: flex;
   justify-content: space-between;
 }
+
 .student_search,
 .student_search1 {
   display: flex;
@@ -1078,45 +884,53 @@ export default {
 
 .student_search1 {
   justify-content: space-between;
+  margin: 10px 0;
 }
 
-.student_table >>> .el-table--border td {
+.student_table>>>.el-table--border td {
   border-right: 0px !important;
 }
 
-.student_table >>> .el-table,
-.student_table >>> .el-table__body-wrapper {
+.student_table>>>.el-table,
+.student_table>>>.el-table__body-wrapper {
   height: auto !important;
 }
 
-.el-table >>> .even_row {
+.el-table>>>.even_row {
   background-color: #f1f1f1 !important;
 }
 
-.dialog_diy >>> .el-dialog__header {
+.dialog_diy>>>.el-dialog__header {
   padding: 9px 20px 10px;
   background: #32455b !important;
 }
-.dialog_diy >>> .el-dialog__title {
+
+.dialog_diy>>>.el-dialog__title {
   color: #fff;
   font-size: 15px;
 }
-.dialog_diy >>> .el-dialog__headerbtn {
+
+.dialog_diy>>>.el-dialog__headerbtn {
   top: 14px;
 }
-.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close {
+
+.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
   color: #fff;
 }
-.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover {
+
+.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
   color: #fff;
 }
-.dialog_diy >>> .el-dialog__body,
-.dialog_diy >>> .el-dialog__footer {
+
+.dialog_diy>>>.el-dialog__body,
+.dialog_diy>>>.el-dialog__footer {
   background: #fafafa;
 }
-.r_diy >>> .el-dialog__footer {
+
+.r_diy>>>.el-dialog__footer {
   padding: 0;
 }
+
 .a_addBox {
   height: 570px;
   overflow: auto;
@@ -1135,6 +949,7 @@ export default {
   padding: 20px;
   box-sizing: border-box;
 }
+
 .cancelbox {
   position: absolute;
   z-index: 2;
@@ -1146,17 +961,21 @@ export default {
   padding: 0 90px 0px 0px;
   box-sizing: border-box;
 }
+
 .cardList {
   font-size: 14px;
   height: 360px;
   overflow: auto;
 }
+
 .cardList div {
   margin-bottom: 18px;
 }
+
 .cardList div:last-child {
   margin-bottom: 0;
 }
+
 .cardHead {
   display: flex;
 }

+ 12 - 12
src/components/pages/Ttype copy.vue → src/components/pages/Ttype2.vue

@@ -24,7 +24,7 @@
         class="pb_content_body"
         style="
           background: #fff;
-          padding: 0px 25px;
+          padding: 10px 25px;
           box-sizing: border-box;
           border-radius: 5px;
         "
@@ -48,7 +48,7 @@
                 style="margin-top: 15px"
               >
                 <el-breadcrumb-item>
-                  <span @click="step = 0" style="cursor: pointer"
+                  <span @click="step = 0;" style="cursor: pointer"
                     >学校列表</span
                   ></el-breadcrumb-item
                 >
@@ -61,14 +61,14 @@
                   size="small"
                   type="primary"
                   @click="dialogVisible6 = true"
-                  >添加图片</el-button
+                  >修改Banner</el-button
                 >
-                <el-button
+                <!-- <el-button
                   size="small"
                   type="primary"
                   @click="dialogVisible2 = true"
                   >添加分类</el-button
-                >
+                > -->
               </div>
             </div>
             <div v-if="step == 2" class="student_search1">
@@ -163,7 +163,7 @@
                 >
                   查看子分类
                 </el-button>
-                <el-button
+                <!-- <el-button
                   size="mini"
                   type="primary"
                   @click="updateP(scope.row.id, scope.row.name)"
@@ -174,7 +174,7 @@
                   type="primary"
                   @click="deletePtype(scope.row.id)"
                   >删除</el-button
-                >
+                > -->
               </div>
             </template>
           </el-table-column>
@@ -216,7 +216,7 @@
           </el-table-column>
         </el-table>
       </div>
-      <div class="student_page" v-if="step == 0">
+      <div class="student_page" v-show="step == 0">
         <el-pagination
           background
           layout="prev, pager, next"
@@ -226,7 +226,7 @@
           @current-change="handleCurrentChange"
         ></el-pagination>
       </div>
-      <div class="student_page" v-if="step == 1">
+      <div class="student_page" v-show="step == 1">
         <el-pagination
           background
           layout="prev, pager, next"
@@ -236,7 +236,7 @@
           @current-change="handleCurrentChange1"
         ></el-pagination>
       </div>
-      <div class="student_page" v-if="step == 2">
+      <div class="student_page" v-show="step == 2">
         <el-pagination
           background
           layout="prev, pager, next"
@@ -404,13 +404,13 @@
         <div class="dialogBox" style="color: #bebebe; margin: 10px 0 0 0">
           注:适宜上传banner尺寸为1218×300
         </div>
-        <div class="dialogBox" style="margin: 10px 0 0 0">
+        <!-- <div class="dialogBox" style="margin: 10px 0 0 0">
           <span>Banner课程链接</span>
           <span style="max-width: 160px">{{ bannerCourse.title }}</span>
           <el-button type="primary" size="medium" @click="addBannerUrlPop"
             >选择课程</el-button
           >
-        </div>
+        </div> -->
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible6 = false">取 消</el-button>

+ 982 - 0
src/components/pages/TtypeGM.vue

@@ -0,0 +1,982 @@
+<template>
+  <div class="pb_content" style="
+      background: unset;
+      overflow: auto;
+      padding: 20px;
+      margin: 0;
+      box-sizing: border-box;
+    ">
+    <div style="
+        position: absolute;
+        width: 95%;
+        top: 0;
+        height: 100%;
+        overflow: auto;
+        left: 50%;
+        transform: translateX(-50%);
+      ">
+      <div class="pb_content_body" style="
+          background: #fff;
+          padding: 10px 25px;
+          box-sizing: border-box;
+          border-radius: 5px;
+        ">
+        <div class="pb_head">
+          <span>分组管理</span>
+          <!-- <span>备注:教师可以根据课程、班级条件筛选学生并查看该学生信息</span> -->
+        </div>
+
+        <div v-if="step == 1" class="student_search1">
+          <div></div>
+          <div>
+            <el-button size="small" type="primary" @click="dialogVisible6 = true">修改Banner</el-button>
+          </div>
+        </div>
+        <div v-if="step == 2" class="student_search1">
+          <el-breadcrumb separator-class="el-icon-arrow-right" style="margin-top: 15px">
+            <el-breadcrumb-item>
+              <span @click="step = 1" style="cursor: pointer">分类列表</span>
+            </el-breadcrumb-item>
+            <el-breadcrumb-item>
+              <span style="color: rgb(15, 126, 255)">子分类列表</span>
+            </el-breadcrumb-item>
+          </el-breadcrumb>
+          <el-button size="small" type="primary" @click="dialogVisible4 = true">添加子分类</el-button>
+        </div>
+        <el-table ref="table" :data="tableData1" stripe border
+          :header-cell-style="{ background: '#f1f1f1', 'text-align': 'center' }"
+          :cell-style="{ 'text-align': 'center' }" style="width: 100%" :height="tableHeight" v-loading="isLoading"
+          v-if="step == 1">
+          <el-table-column prop="name" label="分类名称" min-width="70">
+          </el-table-column>
+          <el-table-column prop="date" label="操作" min-width="30">
+            <template slot-scope="scope">
+              <div class="pb_buttonBox">
+                <el-button size="mini" type="primary" @click="selectSType(scope.row.id)">
+                  查看子分类
+                </el-button>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-table ref="table" :data="tableData2" stripe border
+          :header-cell-style="{ background: '#f1f1f1', 'text-align': 'center' }"
+          :cell-style="{ 'text-align': 'center' }" style="width: 100%" :height="tableHeight" v-loading="isLoading"
+          v-if="step == 2">
+          <el-table-column prop="name" label="子分类名称" min-width="70">
+          </el-table-column>
+          <el-table-column prop="date" label="操作" min-width="30">
+            <template slot-scope="scope">
+              <div class="pb_buttonBox">
+                <el-button size="mini" type="primary" @click="updateSPType(scope.row.id, scope.row.name)">修改</el-button>
+                <el-button size="mini" type="primary" @click="deleteStype(scope.row.id)">删除</el-button>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div class="student_page" v-if="step == 0">
+        <el-pagination background layout="prev, pager, next" :page-size="10" :total="total" v-if="page"
+          @current-change="handleCurrentChange"></el-pagination>
+      </div>
+      <div class="student_page" v-if="step == 1">
+        <el-pagination background layout="prev, pager, next" :page-size="10" :total="total1" v-if="page1"
+          @current-change="handleCurrentChange1"></el-pagination>
+      </div>
+      <div class="student_page" v-if="step == 2">
+        <el-pagination background layout="prev, pager, next" :page-size="10" :total="total2" v-if="page2"
+          @current-change="handleCurrentChange2"></el-pagination>
+      </div>
+    </div>
+    <el-dialog title="添加学校" :visible.sync="dialogVisible" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
+      <div class="addBox">
+        <span class="tian1">学校名称</span>
+        <el-input v-model="schoolName" style="width: 250px; margin: 15px 0px" placeholder="请输入学校名称"></el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="addSchool">确 定</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog title="修改学校" :visible.sync="dialogVisible1" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
+      <div class="addBox">
+        <span class="tian1">学校名称</span>
+        <el-input v-model="schoolName" style="width: 250px; margin: 15px 0px" placeholder="请输入学校名称"></el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible1 = false">取 消</el-button>
+        <el-button type="primary" @click="updateSchool">确 定</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog title="添加分类" :visible.sync="dialogVisible2" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
+      <div class="addBox">
+        <span class="tian1">分类名称</span>
+        <el-input v-model="typeName" style="width: 250px; margin: 15px 0px" placeholder="请输入分类名称"></el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible2 = false">取 消</el-button>
+        <el-button type="primary" @click="addType">确 定</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog title="修改分类" :visible.sync="dialogVisible3" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
+      <div class="addBox">
+        <span class="tian1">分类名称</span>
+        <el-input v-model="typeName" style="width: 250px; margin: 15px 0px" placeholder="请输入分类名称"></el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible3 = false">取 消</el-button>
+        <el-button type="primary" @click="updatePtype">确 定</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog title="添加子分类" :visible.sync="dialogVisible4" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
+      <div class="addBox">
+        <span class="tian1">子分类名称</span>
+        <el-input v-model="sTypeName" style="width: 250px; margin: 15px 0px" placeholder="请输入子分类名称"></el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible4 = false">取 消</el-button>
+        <el-button type="primary" @click="addStype">确 定</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog title="修改子分类" :visible.sync="dialogVisible5" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
+      <div class="addBox">
+        <span class="tian1">子分类名称</span>
+        <el-input v-model="sTypeName" style="width: 250px; margin: 15px 0px" placeholder="请输入子分类名称"></el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible5 = false">取 消</el-button>
+        <el-button type="primary" @click="updateStype">确 定</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog title="添加图片" :visible.sync="dialogVisible6" width="500px" :before-close="handleClose" class="dialog_diy"
+      center>
+      <div>
+        <div class="dialogBox">
+          <span>添加图片</span>
+
+          <el-upload :class="{ disUoloadSty: noneBtnImg }" action="#" list-type="picture-card"
+            :on-preview="handlePictureCardPreview" :on-remove="handleRemove" v-loading="uploadLoading"
+            :http-request="beforeUpload" ref="upload" :show-file-list="true" :limit="1" accept="image/*">
+            <i class="el-icon-plus"></i>
+          </el-upload>
+        </div>
+        <div class="dialogBox" style="color: #bebebe; margin: 10px 0 0 0">
+          注:适宜上传banner尺寸为1218×300
+        </div>
+        <!-- <div class="dialogBox" style="margin: 10px 0 0 0">
+          <span>Banner课程链接</span>
+          <span style="max-width: 160px">{{ bannerCourse.title }}</span>
+          <el-button type="primary" size="medium" @click="addBannerUrlPop"
+            >选择课程</el-button
+          >
+        </div> -->
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible6 = false">取 消</el-button>
+        <el-button type="primary" @click="addBanner">确 定</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog :visible.sync="imgVisible">
+      <img width="100%" :src="dialogImageUrl" alt="" />
+    </el-dialog>
+    <el-dialog title="添加链接" :visible.sync="dialogVisible7" width="500px" :before-close="handleClose" class="dialog_diy"
+      style="text-align: center" center>
+      <div>
+        <el-card class="box-card">
+          <div slot="header" class="cardHead">
+            <el-input v-model="searchClassName" placeholder="请输入需要添加的课程" @keypress.native.enter="Search"></el-input>
+            <el-button type="text" style="margin: 0 0 0 20px" @click="Search">搜索</el-button>
+          </div>
+          <div class="cardList">
+            <div v-for="item in courseList" :key="item.courseId">
+              <el-popover placement="top-start" trigger="hover">
+                <p style="max-width: 380px">课程名称: {{ item.title }}</p>
+                <p style="max-width: 380px">简介: {{ item.brief }}</p>
+                <el-radio :label="item" slot="reference" v-model="checkBannerCourse"><span>课程名称:</span><span>{{
+                    item.title
+                }}</span></el-radio>
+              </el-popover>
+            </div>
+            <!-- </el-checkbox-group> -->
+            <div v-if="courseList.length == 0">暂无数据</div>
+          </div>
+        </el-card>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible7 = false">取 消</el-button>
+        <el-button type="primary" @click="setBannerUrl">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      tableHeight: "500px",
+      isLoading: false,
+      formLabelWidth: "100px",
+      tableData: [],
+      tableData1: [],
+      tableData2: [],
+      fileList: [],
+      schoolName: "",
+      typeName: "",
+      bannerCourse: "",
+      sTypeName: "",
+      searchClassName: "",
+      checkBannerCourse: "",
+      noneBtnImg: false,
+      isBanner: false,
+      page: 1,
+      total: 0,
+      page1: 1,
+      total1: 0,
+      page2: 1,
+      total2: 0,
+      userid: this.$route.query.userid,
+      oid: this.$route.query.oid,
+      dialogVisible: false,
+      dialogVisible1: false,
+      dialogVisible2: false,
+      dialogVisible3: false,
+      dialogVisible4: false,
+      updateOid: "",
+      dialogVisible5: false,
+      dialogVisible6: false,
+      dialogVisible7: false,
+      step: 1,
+      pid: "",
+      imgVisible: false,
+      dialogImageUrl: "",
+      uploadLoading: false,
+      checkList: [],
+      courseList: [],
+    };
+  },
+  mounted() {
+    this.$nextTick(function () {
+      this.tableHeight =
+        window.innerHeight - this.$refs.table.$el.offsetTop - 200;
+      if (this.tableHeight <= 530) {
+        this.tableHeight = 530;
+      }
+      // 监听窗口大小变化
+      let self = this;
+      window.onresize = function () {
+        self.tableHeight =
+          window.innerHeight - self.$refs.table.$el.offsetTop - 200;
+        if (self.tableHeight <= 530) {
+          self.tableHeight = 530;
+        }
+      };
+    });
+  },
+  methods: {
+    goTo(path) {
+      this.$router.push(path);
+    },
+    time() {
+      if (!this.now) {
+        this.now = new Date().getTime();
+        return true;
+      } else {
+        let time = new Date().getTime();
+        if (time - this.now > 3000) {
+          this.now = time;
+          return true;
+        } else {
+          return false;
+        }
+      }
+    },
+    tableRowClassName({ row, rowIndex }) {
+      if ((rowIndex + 1) % 2 === 0) {
+        return "even_row";
+      } else {
+        return "";
+      }
+    },
+    handleClose(done) {
+      done();
+    },
+    imgChange(file, fileList) {
+      var _tmp = this.fileList;
+      this.noneBtnImg = _tmp.length >= 1;
+    },
+    handleRemove(file) {
+      var _tmp = this.fileList;
+      for (var i = 0, len = _tmp.length; i < len; i++) {
+        if (_tmp[i].uid == file.uid) {
+          _tmp.splice(i, 1);
+          break;
+        }
+        this.fileList = _tmp;
+      }
+      this.noneBtnImg = _tmp.length >= 1;
+    },
+    handlePictureCardPreview(file) {
+      this.dialogImageUrl = this.fileList[0].url;
+      this.imgVisible = true;
+    },
+    handleCurrentChange(val) {
+      this.page = val;
+      this.selectSchool();
+    },
+    handleCurrentChange1(val) {
+      this.page1 = val;
+      this.selectType();
+    },
+    handleCurrentChange2(val) {
+      this.page2 = val;
+      this.selectSType();
+    },
+    beforeUpload(data) {
+      this.$refs.upload.uploadFiles;
+      this.uploadLoading = true;
+      var file = data.file;
+      var credentials = {
+        accessKeyId: "AKIATLPEDU37QV5CHLMH",
+        secretAccessKey: "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",
+      }; //秘钥形式的登录上传
+      window.AWS.config.update(credentials);
+      window.AWS.config.region = "cn-northwest-1"; //设置区域
+
+      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
+      var _this = this;
+
+      if (file) {
+        var params = {
+          Key:
+            file.name.split(".")[0] +
+            new Date().getTime() +
+            "." +
+            file.name.split(".")[1],
+          ContentType: file.type,
+          Body: file,
+          "Access-Control-Allow-Credentials": "*",
+          ACL: "public-read",
+        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
+        var options = {
+          partSize: 2048 * 1024 * 1024,
+          queueSize: 2,
+          leavePartsOnError: true,
+        };
+        bucket
+          .upload(params, options)
+          .on("httpUploadProgress", function (evt) {
+            //这里可以写进度条
+            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
+          })
+          .send(function (err, data) {
+            _this.uploadLoading = false;
+            if (err) {
+              var a = _this.$refs.upload.uploadFiles;
+              a.splice(a.length - 1, a.length);
+              _this.$message.error("上传失败");
+            } else {
+              //上传成功处理
+              _this.fileList.push({
+                name: file.name,
+                url: data.Location,
+                uid: file.uid,
+              });
+              console.log(data.Location);
+              _this.imgChange();
+            }
+          });
+      }
+    },
+    addBanner() {
+      if (this.isBanner == true) {
+        this.$confirm(
+          "您已经添加过Banner了,如果您再提交将覆盖上次提交的Banner!",
+          "提示",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }
+        )
+          .then(() => {
+            var list = this.fileList;
+            if (list.length == 0) {
+              this.$message.error("请上传需要添加的banner");
+              return;
+            }
+            if (this.time()) {
+              let params = [
+                {
+                  p: list[0].url,
+                  url: "",
+                  uid: this.userid,
+                  oid: this.updateOid,
+                },
+              ];
+              this.ajax
+                .post(this.$store.state.api + "addBanner", params)
+                .then((res) => {
+                  this.$message({
+                    message: "添加成功",
+                    type: "success",
+                  });
+                  this.dialogVisible6 = false;
+                  this.init();
+                })
+                .catch((err) => {
+                  this.$message.error("添加失败");
+                  console.error(err);
+                });
+            }
+          })
+          .catch(() => { });
+      } else {
+        var list = this.fileList;
+        if (list.length == 0) {
+          this.$message.error("请上传需要添加的banner");
+          return;
+        }
+        if (this.time()) {
+          let params = [
+            {
+              p: list[0].url,
+              url: "",
+              uid: this.userid,
+              oid: this.updateOid,
+            },
+          ];
+          this.ajax
+            .post(this.$store.state.api + "addBanner", params)
+            .then((res) => {
+              this.$message({
+                message: "添加成功",
+                type: "success",
+              });
+              this.dialogVisible6 = false;
+              this.init();
+            })
+            .catch((err) => {
+              this.$message.error("添加失败");
+              console.error(err);
+            });
+        }
+      }
+    },
+    setBannerUrl() {
+      if (this.checkBannerCourse == "") {
+        this.$message.error("请选择作为banner链接的课程");
+        return;
+      }
+      this.bannerCourse = this.checkBannerCourse;
+      this.dialogVisible7 = false;
+    },
+    selectSchool() {
+      this.isLoading = true;
+      let params = {
+        page: this.page,
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectSchoolName", params)
+        .then((res) => {
+          this.isLoading = false;
+          this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
+          this.tableData = res.data[0];
+        })
+        .catch((err) => {
+          this.isLoading = false;
+          console.error(err);
+        });
+    },
+    addSchool() {
+      let params = [
+        {
+          n: this.schoolName,
+          cuid: this.userid,
+        },
+      ];
+      this.ajax
+        .post(this.$store.state.api + "addSchoolAdmin", params)
+        .then((res) => {
+          this.$message({
+            message: "添加成功",
+            type: "success",
+          });
+          this.dialogVisible = false;
+          this.schoolName = "";
+          this.selectSchool();
+        })
+        .catch((err) => {
+          this.$message.error("添加失败");
+          console.error(err);
+        });
+    },
+    updateS(id, name) {
+      this.dialogVisible1 = true;
+      this.schoolName = name;
+      this.updateId = id;
+    },
+    updateP(id, name) {
+      this.dialogVisible3 = true;
+      this.typeName = name;
+      this.updateId = id;
+    },
+    updateSPType(id, name) {
+      this.dialogVisible5 = true;
+      this.sTypeName = name;
+      this.updateId = id;
+    },
+    updateSchool() {
+      let params = {
+        oid: this.updateId,
+        n: this.schoolName,
+      };
+      this.ajax
+        .get(this.$store.state.api + "updateSN", params)
+        .then((res) => {
+          this.$message({
+            message: "修改成功",
+            type: "success",
+          });
+          this.dialogVisible1 = false;
+          this.updateId = "";
+          this.schoolName = "";
+          this.selectSchool();
+        })
+        .catch((err) => {
+          this.$message.error("修改失败");
+          console.error(err);
+        });
+    },
+    deleteSchool(id) {
+      let params = [
+        {
+          id: id,
+        },
+      ];
+      this.ajax
+        .post(this.$store.state.api + "deleteSchoolAdmin", params)
+        .then((res) => {
+          this.$message({
+            message: "删除成功",
+            type: "success",
+          });
+          this.updateId = "";
+          this.schoolName = "";
+          this.selectSchool();
+        })
+        .catch((err) => {
+          this.$message.error("删除成功");
+          console.error(err);
+        });
+    },
+    selectType() {
+      let params = {
+        oid: this.oid,
+        page: this.page1,
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectPtype1", params)
+        .then((res) => {
+          this.total1 = res.data[0].length > 0 ? res.data[0][0].num : 0;
+          this.tableData1 = res.data[0];
+          this.selectBanner();
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    selectBanner() {
+      let params = {
+        oid: this.updateOid,
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectBannerByOid", params)
+        .then((res) => {
+          if (res.data[0].length > 0) {
+            this.isBanner = true;
+          } else {
+            this.isBanner = false;
+          }
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    selectSType(pid) {
+      this.step = 2;
+      if (pid != undefined) {
+        this.pid = pid;
+      }
+      let params = {
+        pid: pid != undefined ? pid : this.pid,
+        oid: this.oid,
+        page: this.page2,
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectStype", params)
+        .then((res) => {
+          this.total2 = res.data[0].length > 0 ? res.data[0][0].num : 0;
+          this.tableData2 = res.data[0];
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    addType() {
+      let params = {
+        n: this.typeName,
+        uid: this.userid,
+        oid: this.oid,
+      };
+      this.ajax
+        .get(this.$store.state.api + "addPtype", params)
+        .then((res) => {
+          this.$message({
+            message: "添加成功",
+            type: "success",
+          });
+          this.dialogVisible2 = false;
+          this.typeName = "";
+          this.selectType();
+        })
+        .catch((err) => {
+          this.$message.error("添加失败");
+          console.error(err);
+        });
+    },
+    updatePtype() {
+      let params = {
+        n: this.typeName,
+        tid: this.updateId,
+      };
+      this.ajax
+        .get(this.$store.state.api + "updatePtype", params)
+        .then((res) => {
+          this.$message({
+            message: "修改成功",
+            type: "success",
+          });
+          this.dialogVisible3 = false;
+          this.updateId = "";
+          this.typeName = "";
+          this.selectType();
+        })
+        .catch((err) => {
+          this.$message.error("修改失败");
+          console.error(err);
+        });
+    },
+    deletePtype(id) {
+      this.$confirm(
+        "确定删除此分类吗?",
+        "提示",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }
+      )
+        .then(() => {
+          let params = {
+            tid: id,
+          };
+          this.ajax
+            .get(this.$store.state.api + "deletePtype", params)
+            .then((res) => {
+              this.$message({
+                message: "删除成功",
+                type: "success",
+              });
+              this.updateId = "";
+              this.typeName = "";
+              this.selectType();
+            })
+            .catch((err) => {
+              this.$message.error("删除失败");
+              console.error(err);
+            });
+        })
+        .catch(() => { });
+
+    },
+    addStype() {
+      let params = {
+        n: this.sTypeName,
+        pid: this.pid,
+        uid: this.userid,
+        oid: this.oid,
+      };
+      this.ajax
+        .get(this.$store.state.api + "addStype", params)
+        .then((res) => {
+          this.$message({
+            message: "添加成功",
+            type: "success",
+          });
+          this.dialogVisible4 = false;
+          this.sTypeName = "";
+          this.selectSType();
+        })
+        .catch((err) => {
+          this.$message.error("添加成功");
+          console.error(err);
+        });
+    },
+    updateStype() {
+      let params = {
+        n: this.sTypeName,
+        tid: this.updateId,
+      };
+      this.ajax
+        .get(this.$store.state.api + "updatePtype", params)
+        .then((res) => {
+          this.$message({
+            message: "修改成功",
+            type: "success",
+          });
+          this.dialogVisible5 = false;
+          this.updateId = "";
+          this.sTypeName = "";
+          this.selectSType();
+        })
+        .catch((err) => {
+          this.$message.error("修改失败");
+          console.error(err);
+        });
+    },
+    //打开添加弹窗
+    addBannerUrlPop() {
+      this.dialogVisible7 = true;
+      this.searchClassName = "";
+      this.Search();
+    },
+    init() {
+      this.searchClassName = "";
+      this.checkList = [];
+      this.courseList = [];
+      this.fileList = [];
+      this.$refs.upload ? (this.$refs.upload.uploadFiles.length = 0) : "";
+      this.noneBtnImg = false;
+      this.dialogImageUrl = "";
+      this.bannerCourse = "";
+      this.checkBannerCourse = "";
+    },
+    Search() {
+      this.checkList = [];
+      let params = { t: this.searchClassName, oid: this.updateOid };
+      this.ajax
+        .get(this.$store.state.api + "getSearchCourseByoid", params)
+        .then((res) => {
+          this.courseList = res.data[0];
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    deleteStype(id) {
+      this.$confirm(
+        "确定删除此分类吗?",
+        "提示",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }
+      )
+        .then(() => {
+          let params = {
+            tid: id,
+          };
+          this.ajax
+            .get(this.$store.state.api + "deletePtype", params)
+            .then((res) => {
+              this.$message({
+                message: "删除成功",
+                type: "success",
+              });
+              this.updateId = "";
+              this.sTypeName = "";
+              this.selectSType();
+            })
+            .catch((err) => {
+              this.$message.error("删除失败");
+              console.error(err);
+            });
+        })
+        .catch(() => { });
+
+    },
+  },
+  created() {
+    this.page = 1;
+    // this.selectSchool();
+    this.selectType();
+  },
+};
+</script>
+
+<style scoped>
+.pb_head>span:nth-child(2) {
+  font-size: 16px;
+  margin-left: 80px;
+  color: #ab582f;
+}
+
+.addBox {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.tian1 {
+  /* font-size: 16px; */
+  margin-right: 10px;
+}
+
+.pb_head {
+  margin: 0 !important;
+  width: 100% !important;
+}
+
+.student_page {
+  margin: 10px 0 0 45px;
+}
+
+.disUoloadSty>>>.el-upload--picture-card {
+  display: none;
+  /* 上传按钮隐藏 */
+}
+
+.dialogBox {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.dialogBox span {
+  margin: 0 20px;
+}
+
+.student_head {
+  margin-top: 10px;
+  padding-bottom: 15px;
+  display: flex;
+  justify-content: space-between;
+}
+
+.student_search,
+.student_search1 {
+  display: flex;
+  width: 100%;
+  position: relative;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+  justify-content: flex-end;
+}
+
+.student_search1 {
+  justify-content: space-between;
+  margin: 10px 0;
+}
+
+.student_table>>>.el-table--border td {
+  border-right: 0px !important;
+}
+
+.student_table>>>.el-table,
+.student_table>>>.el-table__body-wrapper {
+  height: auto !important;
+}
+
+.el-table>>>.even_row {
+  background-color: #f1f1f1 !important;
+}
+
+.dialog_diy>>>.el-dialog__header {
+  padding: 9px 20px 10px;
+  background: #32455b !important;
+}
+
+.dialog_diy>>>.el-dialog__title {
+  color: #fff;
+  font-size: 15px;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn {
+  top: 14px;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
+  color: #fff;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
+  color: #fff;
+}
+
+.dialog_diy>>>.el-dialog__body,
+.dialog_diy>>>.el-dialog__footer {
+  background: #fafafa;
+}
+
+.r_diy>>>.el-dialog__footer {
+  padding: 0;
+}
+
+.a_addBox {
+  height: 570px;
+  overflow: auto;
+}
+
+.workdates {
+  height: 100%;
+  position: absolute;
+  top: 0;
+  background: #fff;
+  overflow: auto;
+  z-index: 1;
+  width: 95%;
+  left: 50%;
+  transform: translateX(-50%);
+  padding: 20px;
+  box-sizing: border-box;
+}
+
+.cancelbox {
+  position: absolute;
+  z-index: 2;
+  left: 50%;
+  width: 95%;
+  transform: translateX(-50%);
+  display: flex;
+  justify-content: flex-end;
+  padding: 0 90px 0px 0px;
+  box-sizing: border-box;
+}
+
+.cardList {
+  font-size: 14px;
+  height: 360px;
+  overflow: auto;
+}
+
+.cardList div {
+  margin-bottom: 18px;
+}
+
+.cardList div:last-child {
+  margin-bottom: 0;
+}
+
+.cardHead {
+  display: flex;
+}
+</style>

+ 1 - 1
src/components/pages/addCourse.vue

@@ -4905,7 +4905,7 @@ export default {
                 if (!this.CourseTypeJson[res.data[0][i].id]) {
                   this.CourseTypeJson[res.data[0][i].id] = [];
                 }
-                // this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
+                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
               }
             }
           }

+ 1 - 1
src/components/pages/addCourseGM.vue

@@ -4704,7 +4704,7 @@ export default {
                 if (!this.CourseTypeJson[res.data[0][i].id]) {
                   this.CourseTypeJson[res.data[0][i].id] = [];
                 }
-                // this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
+                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
               }
             }
           }

+ 1 - 1
src/components/pages/course.vue

@@ -504,7 +504,7 @@ export default {
                 if (!this.CourseTypeJson[res.data[0][i].id]) {
                   this.CourseTypeJson[res.data[0][i].id] = [];
                 }
-                // this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
+                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); //去除公共分类
               }
             }
           }

+ 1 - 1
src/components/pages/courseGM.vue

@@ -569,7 +569,7 @@ export default {
                 if (!this.CourseTypeJson[res.data[0][i].id]) {
                   this.CourseTypeJson[res.data[0][i].id] = [];
                 }
-                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
+                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);//去除公共分类
               }
             }
           }

+ 16 - 0
src/router/index.js

@@ -36,6 +36,8 @@ import demoPdf from '@/components/pages/demoPdf'
 import demoPdf2 from '@/components/pages/demoPdf2'
 import audioDemo from '@/components/pages/audioDemo'
 import Ttype from '@/components/pages/Ttype'
+import TtypeGM from '@/components/pages/TtypeGM'
+import Ttype2 from '@/components/pages/Ttype2'
 import banner from '@/components/pages/banner'
 import CaseDesign from '@/components/pages/CaseDesign'
 import CaseDesignGM from '@/components/pages/CaseDesignGM'
@@ -318,6 +320,20 @@ export default new Router({
             meta: {
                 requireAuth: '' // 不需要鉴权
             }
+        }, {
+            path: '/TtypeGM',
+            name: 'TtypeGM',
+            component: TtypeGM,
+            meta: {
+                requireAuth: '' // 不需要鉴权
+            }
+        },{
+            path: '/Ttype2',
+            name: 'Ttype2',
+            component: Ttype2,
+            meta: {
+                requireAuth: '' // 不需要鉴权
+            }
         }, {
             path: '/banner',
             name: 'banner',