Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/seec' into seec

# Conflicts:
#	src/views/CoursePage/CourseDetail.vue
mjh 4 anni fa
parent
commit
a271864198
1 ha cambiato i file con 87 aggiunte e 6 eliminazioni
  1. 87 6
      src/views/CoursePage/CourseDetail.vue

+ 87 - 6
src/views/CoursePage/CourseDetail.vue

@@ -118,6 +118,15 @@
               新建项目
             </el-button>
           </div>
+          <!--组队-->
+          <div v-if="isCourseSelected">
+            <div v-if="tabName==='group'">
+              <el-button v-if="tabName==='group'&&isRuleExisted!==null"
+                         plain type="primary" :disabled="isGroupExisted" @click="CreateTeam">
+                {{ isGroupExisted ? '队伍已创建' : '创建队伍' }}
+              </el-button>
+            </div>
+          </div>
         </div>
         <!--tab内容-->
         <div v-if="isCreator || isCourseSelected" class="course-tab-content">
@@ -302,13 +311,13 @@
       </div>
     </el-dialog>
     <!--小组规则-->
-    <el-dialog v-model="ruleFormDialog" :before-close="beforeFormClose" :title="ruleForm.dialogTitle">
+    <el-dialog v-model="ruleFormDialog" :before-close="beforeRuleFormClose" :title="ruleForm.dialogTitle">
       <el-form ref="ruleFormRef" :model="ruleForm" :rules="ruleFormRule" label-position="right" label-width="150px">
         <el-form-item label="小组最大人数" prop="maxSize">
-          <el-input v-model="ruleForm.maxSize"></el-input>
+          <el-input v-model="ruleForm.maxSize" type="number" min="1" max="5" placeholder="输入小组最大人数(1~5)" maxlength="1" onkeypress='return( /[1-5]/.test(String.fromCharCode(event.keyCode)))'></el-input>
         </el-form-item>
         <el-form-item label="组名最大长度" prop="maxNameLen">
-          <el-input v-model="ruleForm.maxNameLen"></el-input>
+          <el-input v-model="ruleForm.maxNameLen" type="number" min="1" max="9" placeholder="输入组名最大长度(1~9)" maxlength="1" onkeypress='return( /[1-9]/.test(String.fromCharCode(event.keyCode)))'></el-input>
         </el-form-item>
       </el-form>
       <div style="margin: auto;width: fit-content">
@@ -339,6 +348,18 @@
         </el-button>
       </template>
     </el-dialog>
+    <!--组队信息-->
+    <el-dialog v-model="createGroupDialog" :before-close="beforeGroupFormClose" :title="createTeamForm.dialogTitle">
+    <el-form ref="createGroupFormRef" :model="createTeamForm" label-position="right" label-width="150px">
+      <el-form-item label="组名" prop="name">
+        <el-input v-model="createTeamForm.name" placeholder="输入组名" maxlength="5"></el-input>
+      </el-form-item>
+    </el-form>
+      <div style="margin: auto;width: fit-content">
+        <el-button plain type="primary" @click="createTeam">确认</el-button>
+        <el-button plain type="danger" @click="beforeGroupFormClose">我再想想</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -391,7 +412,11 @@ export default {
       announcementList: [],
       // group
       isRuleExisted: null,
+      isGroupExisted: null,
       ruleFormDialog: false,
+      createGroupDialog: false,
+      maxSize: null,
+      maxNameLen: null,
       ruleForm: {
         dialogTitle: "制定组队规则",
         courseVO: null,
@@ -401,12 +426,17 @@ export default {
       },
       ruleFormRule: {
         maxSize: {
-          required: true, message: "请输入小组最大成员人数", trigger: "blur",
+          required: true, message: "请选择小组最大成员人数", trigger: "change",
         },
         maxNameLen: {
-          required: true, message: "请输入组名最大长度", trigger: "blur",
+          required: true, message: "请选择组名最大长度", trigger: "change",
         }
       },
+      createTeamForm: {
+        dialogTitle: "队伍信息",
+        courseId: null,
+        name: null,
+      },
       //
       commentContent: "",
       commentTree: [],
@@ -501,7 +531,7 @@ export default {
       return function (senderId) {
         return senderId === Number(_this.$store.state.user.id);
       };
-    }
+    },
   },
   mounted() {
     switch (this.$route.params.jump_from_message) {
@@ -626,6 +656,13 @@ export default {
       this.ruleFormDialog = true;
     },
 
+    createTeam() {
+      this.createGroupDialog = true;
+      this.getRule();
+    },
+
+
+
     beforeFormClose() {
       ElMessageBox.confirm("是否确认退出?退出后将不保存表格信息。", "提示", {
         confirmButtonText: "确认退出",
@@ -675,6 +712,50 @@ export default {
         }
       });
     },
+    getRule() {
+      this.$apis.findGroupRule(this.courseInfo.id)
+          .then(res =>{
+            this.maxSize=res.data.data.maxSize;
+            console.log(this.maxSize);
+            this.maxNameLen=res.data.data.maxNameLen;
+            console.log(this.maxNameLen);
+          });
+    },
+
+    beforeGroupFormClose() {
+      ElMessageBox.confirm("是否确认退出?退出后将不保存队伍信息。", "提示", {
+        confirmButtonText: "确认退出",
+        cancelButtonText: "我再想想",
+        type: "warning",
+        center: true,
+      })
+          .then(() => {
+            this.createGroupDialog = false;
+            this.$refs.createGroupFormRef.resetFields();
+          });
+    },
+    createTeam() {
+      this.$refs.createGroupFormRef.validate((valid) => {
+        if (valid) {
+          let GroupVO = {
+            courseId: this.courseInfo.id,
+            name: this.createTeamForm.name,
+          };
+          console.log(GroupVO);
+          this.$apis.createGroup(GroupVO)
+              .then(res => {
+                if (res.data.code) {
+                  ElMessage.error(res.data.message);
+                } else {
+                  this.isGroupExisted = true;
+                  this.createGroupDialog = false;
+                  this.$refs.createGroupFormRef.resetFields();
+                  ElMessage.success("创建队伍成功");
+                }
+              });
+        }
+      });
+    },
     // announcement
     handlePublishAnnouncement() {
       const _this = this;