Browse Source

1

Signed-off-by: lcw <1324309909@qq.com>
lcw 2 years ago
parent
commit
292f2d5b54
3 changed files with 1062 additions and 1031 deletions
  1. BIN
      src/assets/loading.gif
  2. BIN
      src/assets/uploadMp4.png
  3. 1062 1031
      src/components/study.vue

BIN
src/assets/loading.gif


BIN
src/assets/uploadMp4.png


+ 1062 - 1031
src/components/study.vue

@@ -1,122 +1,122 @@
 <template>
-  <div class="pb_content">
-    <div class="pb_content_body" style="display: flex; min-height: 800px">
-      <div
-        style="
-          width: 20%;
-          margin-right: 10px;
-          background: #fff;
-          padding-right: 10px;
-        "
-      >
-        <div class="courseTitle">
-          {{ courseDetail.title }}
-        </div>
-        <div class="ml">目录</div>
-        <div
-          class="blue_box_one"
-          v-for="(item, index) in chapInfoList"
-          :key="index"
-          @click="get(index)"
-        >
-          <div>第{{ index + 1 }}阶段</div>
-          <div>{{ item.dyName }}</div>
-        </div>
-      </div>
-      <div class="body_student">
-        <div class="study_top">
-          <div class="checkbox">
-            <div
-              class="check"
-              :class="{ checked: type == 1 }"
-              @click="type = 1"
-            >
-              <div v-if="type == 1">
-                <img src="../assets/icon/videoActive.png" alt="" />
-              </div>
-              <div v-else><img src="../assets/icon/video.png" alt="" /></div>
-              视频
-            </div>
-            <div
-              class="check"
-              :class="{ checked: type == 2 }"
-              @click="type = 2"
-            >
-              <div v-if="type == 2">
-                <img src="../assets/icon/navActive.png" alt="" />
-              </div>
-              <div v-else><img src="../assets/icon/nav.png" alt="" /></div>
-              文档资料
-            </div>
+	<div class="pb_content">
+		<div class="pb_content_body" style="display: flex; min-height: 800px">
+			<div
+				style="
+					width: 20%;
+					margin-right: 10px;
+					background: #fff;
+					padding-right: 10px;
+				"
+			>
+				<div class="courseTitle">
+					{{ courseDetail.title }}
+				</div>
+				<div class="ml">目录</div>
+				<div
+					class="blue_box_one"
+					v-for="(item, index) in chapInfoList"
+					:key="index"
+					@click="get(index)"
+				>
+					<div>第{{ index + 1 }}阶段</div>
+					<div>{{ item.dyName }}</div>
+				</div>
+			</div>
+			<div class="body_student">
+				<div class="study_top">
+					<div class="checkbox">
+						<div
+							class="check"
+							:class="{ checked: type == 1 }"
+							@click="type = 1"
+						>
+							<div v-if="type == 1">
+								<img src="../assets/icon/videoActive.png" alt="" />
+							</div>
+							<div v-else><img src="../assets/icon/video.png" alt="" /></div>
+							视频
+						</div>
+						<div
+							class="check"
+							:class="{ checked: type == 2 }"
+							@click="type = 2"
+						>
+							<div v-if="type == 2">
+								<img src="../assets/icon/navActive.png" alt="" />
+							</div>
+							<div v-else><img src="../assets/icon/nav.png" alt="" /></div>
+							文档资料
+						</div>
 
-            <div
-              class="check"
-              :class="{ checked: type == 3 }"
-              @click="type = 3"
-            >
-              <div v-if="type == 3">
-                <img src="../assets/icon/wordActive.png" alt="" />
-              </div>
-              <div v-else><img src="../assets/icon/word.png" alt="" /></div>
-              附件
-            </div>
-            <div
-              class="check"
-              :class="{ checked: type == 4 }"
-              @click="type = 4"
-            >
-              <div v-if="type == 4">
-                <img src="../assets/icon/workActive.png" alt="" />
-              </div>
-              <div v-else><img src="../assets/icon/work.png" alt="" /></div>
-              作业与测验
-            </div>
-            <div
-              class="check"
-              :class="{ checked: type == 5 }"
-              @click="type = 5"
-            >
-              <div v-if="type == 5">
-                <img src="../assets/icon/toolActive.png" alt="" />
-              </div>
-              <div v-else><img src="../assets/icon/tool.png" alt="" /></div>
-              工具
-            </div>
-          </div>
-          <div
-            class="returnBtn"
-            @click.stop="
-              goTo(
-                '/courseDetail?userid=' +
-                  userid +
-                  '&oid=' +
-                  oid +
-                  '&courseId=' +
-                  id
-              )
-            "
-          >
-            返回
-          </div>
-        </div>
-        <div class="student_head" v-if="type == 1">
-          <div class="box_course">
-            <div class="wheel" v-if="vedio.length > 0">
-              <div class="workd_media">
-                <!-- <el-image
+						<div
+							class="check"
+							:class="{ checked: type == 3 }"
+							@click="type = 3"
+						>
+							<div v-if="type == 3">
+								<img src="../assets/icon/wordActive.png" alt="" />
+							</div>
+							<div v-else><img src="../assets/icon/word.png" alt="" /></div>
+							附件
+						</div>
+						<div
+							class="check"
+							:class="{ checked: type == 4 }"
+							@click="type = 4"
+						>
+							<div v-if="type == 4">
+								<img src="../assets/icon/workActive.png" alt="" />
+							</div>
+							<div v-else><img src="../assets/icon/work.png" alt="" /></div>
+							作业与测验
+						</div>
+						<div
+							class="check"
+							:class="{ checked: type == 5 }"
+							@click="type = 5"
+						>
+							<div v-if="type == 5">
+								<img src="../assets/icon/toolActive.png" alt="" />
+							</div>
+							<div v-else><img src="../assets/icon/tool.png" alt="" /></div>
+							工具
+						</div>
+					</div>
+					<div
+						class="returnBtn"
+						@click.stop="
+							goTo(
+								'/courseDetail?userid=' +
+									userid +
+									'&oid=' +
+									oid +
+									'&courseId=' +
+									id
+							)
+						"
+					>
+						返回
+					</div>
+				</div>
+				<div class="student_head" v-if="type == 1">
+					<div class="box_course">
+						<div class="wheel" v-if="vedio.length > 0">
+							<div class="workd_media">
+								<!-- <el-image
                 style="width: 100%; height: 300px"
                 :src="require('../../assets/tu4.png')"
               ></el-image> -->
-                <video-player
-                  class="video-player vjs-custom-skin"
-                  ref="videoPlayer"
-                  :playsinline="true"
-                  :options="playerO"
-                  @play="onPlayerPlay($event)"
-                  style="width: 95%; height: 100%; margin: 20px auto"
-                ></video-player>
-              </div>
-              <!-- <div class="cd_content_steps">
+								<video-player
+									class="video-player vjs-custom-skin"
+									ref="videoPlayer"
+									:playsinline="true"
+									:options="playerO"
+									@play="onPlayerPlay($event)"
+									style="width: 95%; height: 100%; margin: 20px auto"
+								></video-player>
+							</div>
+							<!-- <div class="cd_content_steps">
 								<div
 									class="cd_steps_box"
 									v-for="(media, index) in vedio"
@@ -124,81 +124,81 @@
 									@click="switchVideo(media, index)"
 								>
 									 <i :class="{ active: index < 1 }"></i> -->
-              <!-- <i
+							<!-- <i
 										:class="{
 											active: playerOptions.sources[0].src == media,
 										}"
 									></i>
 									<span>视频{{ index + 1 }}</span> -->
-              <!-- </div>
+							<!-- </div>
 							</div> -->
-              <!-- <img src="../assets/sp2.png" alt="" /> -->
-            </div>
-            <div style="font-size: 18px; margin: 15px">
-              {{ chapInfo.dyName }}
-            </div>
-          </div>
-        </div>
-        <div class="student_body">
-          <div class="videoTop">
-            <div v-if="type == 1">视频列表</div>
-            <div v-if="type == 3">{{ chapInfo.dyName }}</div>
-            <div v-if="type == 5">工具</div>
-            <div v-else></div>
-            <div
-              @click="openAddWork"
-              class="upbtn"
-              v-if="type == 1 || type == 2"
-            >
-              提交实践作业
-            </div>
-          </div>
-          <div class="project_box" v-if="type == 2">
-            <div class="detail_content_top">
-              <div class="detail_title">{{ chapInfo.dyName }}</div>
-              <div class="detail_time">{{ courseDetail.time }}</div>
-            </div>
-            <div class="detail_content" v-html="courseDetail.template"></div>
-          </div>
-          <div class="project_box" v-if="type == 1 && vedio.length > 0">
-            <div class="filebox">
-              <div class="media" v-for="(media, index) in vedio" :key="index">
-                <img
-                  :src="
-                    media.cover != null && media.cover != ''
-                      ? JSON.parse(media.cover).length > 0
-                        ? JSON.parse(media.cover)[0].url
-                        : mr
-                      : mr
-                  "
-                  alt=""
-                />
-                <div class="title">{{ media.name }}</div>
-                <div class="btn" @click="lookVedio(media.url)">点击播放</div>
-              </div>
-            </div>
-          </div>
-          <div class="project_box" v-if="type == 1 && vedio.length == 0">
-            暂无视频
-          </div>
-          <div class="project_box" v-if="type == 3">
-            <div class="filebox">
-              <div
-                class="file"
-                v-for="(f, index) in file"
-                :key="index"
-                @click="downFile(index)"
-              >
-                <img :src="require('../assets/file.png')" alt="" />
-                <div>{{ f.name }}</div>
-              </div>
-            </div>
-            <div class="upFile" v-if="type == 3 || type == 4">提交</div>
-          </div>
-          <div class="project_box" v-if="type == 4">
-            <div class="filebox">
-              暂无数据
-              <!-- <div
+							<!-- <img src="../assets/sp2.png" alt="" /> -->
+						</div>
+						<div style="font-size: 18px; margin: 15px">
+							{{ chapInfo.dyName }}
+						</div>
+					</div>
+				</div>
+				<div class="student_body">
+					<div class="videoTop">
+						<div v-if="type == 1">视频列表</div>
+						<div v-if="type == 3">{{ chapInfo.dyName }}</div>
+						<div v-if="type == 5">工具</div>
+						<div v-else></div>
+						<div
+							@click="openAddWork"
+							class="upbtn"
+							v-if="type == 1 || type == 2"
+						>
+							提交实践作业
+						</div>
+					</div>
+					<div class="project_box" v-if="type == 2">
+						<div class="detail_content_top">
+							<div class="detail_title">{{ chapInfo.dyName }}</div>
+							<div class="detail_time">{{ courseDetail.time }}</div>
+						</div>
+						<div class="detail_content" v-html="courseDetail.template"></div>
+					</div>
+					<div class="project_box" v-if="type == 1 && vedio.length > 0">
+						<div class="filebox">
+							<div class="media" v-for="(media, index) in vedio" :key="index">
+								<img
+									:src="
+										media.cover != null && media.cover != ''
+											? JSON.parse(media.cover).length > 0
+												? JSON.parse(media.cover)[0].url
+												: mr
+											: mr
+									"
+									alt=""
+								/>
+								<div class="title">{{ media.name }}</div>
+								<div class="btn" @click="lookVedio(media.url)">点击播放</div>
+							</div>
+						</div>
+					</div>
+					<div class="project_box" v-if="type == 1 && vedio.length == 0">
+						暂无视频
+					</div>
+					<div class="project_box" v-if="type == 3">
+						<div class="filebox">
+							<div
+								class="file"
+								v-for="(f, index) in file"
+								:key="index"
+								@click="downFile(index)"
+							>
+								<img :src="require('../assets/file.png')" alt="" />
+								<div>{{ f.name }}</div>
+							</div>
+						</div>
+						<div class="upFile" v-if="type == 3 || type == 4">提交</div>
+					</div>
+					<div class="project_box" v-if="type == 4">
+						<div class="filebox">
+							暂无数据
+							<!-- <div
                 class="file"
                 v-for="(f, index) in file"
                 :key="index"
@@ -207,48 +207,54 @@
                 <img :src="require('../assets/file.png')" alt="" />
                 <div>{{ f.name }}</div>
               </div> -->
-            </div>
-            <div class="upFile" v-if="type == 3 || type == 4">提交</div>
-          </div>
-          <div class="project_box" v-if="type == 5">
-            <div class="filebox" v-if="chapInfo.chapterInfo[0].toolChoose.length == 0">暂无数据</div>
-            <div
-              class="filebox"
-              v-else
-            >
-              <div style="    display: flex;
-    width: 100%;
-    flex-direction: row;
-    flex-wrap: wrap;
-    margin: 20px auto;">
-                <div
-                  class="tool"
-                  v-for="(itemTool, indexTool) in chapInfo.chapterInfo[0]
-                    .toolChoose"
-                  :key="indexTool"
-                >
-                  <div class="whiteBIcon" v-if="itemTool == 1">
-                    <img src="../assets/icon/whiteBordIcon.png" alt="" />
-                  </div>
-                  <div class="whiteBIcon" v-if="itemTool == 2">
-                    <img src="../assets/icon/noteIcon.png" alt="" />
-                  </div>
-                  <div class="whiteBIcon" v-if="itemTool == 3">
-                    <img src="../assets/icon/mindIcon.png" alt="" />
-                  </div>
-                  <div class="whiteBIcon" v-if="itemTool == 4">
-                    <img src="../assets/icon/askIcon.png" alt="" />
-                  </div>
-                  <div class="whiteBIcon" v-if="itemTool == 5">
-                    <img src="../assets/icon/scoreIcon.png" alt="" />
-                  </div>
-                  <div class="whiteBIcon" v-if="itemTool == 6">
-                    <img src="../assets/icon/wordIcon.png" alt="" />
-                  </div>
-                </div>
-              </div>
+						</div>
+						<div class="upFile" v-if="type == 3 || type == 4">提交</div>
+					</div>
+					<div class="project_box" v-if="type == 5">
+						<div
+							class="filebox"
+							v-if="chapInfo.chapterInfo[0].toolChoose.length == 0"
+						>
+							暂无数据
+						</div>
+						<div class="filebox" v-else>
+							<div
+								style="
+									display: flex;
+									width: 100%;
+									flex-direction: row;
+									flex-wrap: wrap;
+									margin: 20px auto;
+								"
+							>
+								<div
+									class="tool"
+									v-for="(itemTool, indexTool) in chapInfo.chapterInfo[0]
+										.toolChoose"
+									:key="indexTool"
+								>
+									<div class="whiteBIcon" v-if="itemTool == 1">
+										<img src="../assets/icon/whiteBordIcon.png" alt="" />
+									</div>
+									<div class="whiteBIcon" v-if="itemTool == 2">
+										<img src="../assets/icon/noteIcon.png" alt="" />
+									</div>
+									<div class="whiteBIcon" v-if="itemTool == 3">
+										<img src="../assets/icon/mindIcon.png" alt="" />
+									</div>
+									<div class="whiteBIcon" v-if="itemTool == 4">
+										<img src="../assets/icon/askIcon.png" alt="" />
+									</div>
+									<div class="whiteBIcon" v-if="itemTool == 5">
+										<img src="../assets/icon/scoreIcon.png" alt="" />
+									</div>
+									<div class="whiteBIcon" v-if="itemTool == 6">
+										<img src="../assets/icon/wordIcon.png" alt="" />
+									</div>
+								</div>
+							</div>
 
-              <!-- <div
+							<!-- <div
                 class="file"
                 v-for="(f, index) in file"
                 :key="index"
@@ -257,89 +263,92 @@
                 <img :src="require('../assets/file.png')" alt="" />
                 <div>{{ f.name }}</div>
               </div> -->
-            </div>
-          </div>
-        </div>
-        <el-dialog
-          title="提交实践作业"
-          :visible.sync="dialogVisible"
-          :append-to-body="true"
-          width="500px"
-          :before-close="handleClose"
-          class="dialog_change"
-        >
-          <div class="first">
-            <div>作业名称:</div>
-            <div>{{ chapInfo.dyName }}</div>
-          </div>
-          <div style="font-size: 20px; margin-bottom: 10px">上传作业</div>
-          <el-input
-            type="textarea"
-            resize="none"
-            rows="7"
-            placeholder="输入文字描述..."
-            v-model="studyJuri[0].content"
-          >
-          </el-input>
-          <div class="marginT">
-            <div>上传图片</div>
-            <div
-              class="chapter_add"
-              v-if="studyJuri[0].cover.length == 0"
-              @click="addImg($event)"
-            >
-              <div class="up_photo">
-                <img src="../assets/photo.png" alt="" />
-              </div>
-              <input
-                type="file"
-                accept="image/png,image/gif,image/jpeg"
-                style="display: none"
-                @change="beforeUpload1($event, 1)"
-              />
-            </div>
-            <div class="chapter_add" v-else>
-              <img
-                :src="
-                  studyJuri[0].cover[0].url != null &&
-                  studyJuri[0].cover[0].url != ''
-                    ? studyJuri[0].cover[0].url
-                    : mr
-                "
-                alt=""
-              />
-              <span>{{ studyJuri[0].cover[0].name }}</span>
-              <div class="deleteWord" @click="clean(1)">
-                <img src="../assets/icon/delete.png" alt="" />
-              </div>
-            </div>
-          </div>
-          <div class="marginT">
-            <div>上传视频</div>
-            <div
-              class="chapter_add"
-              v-if="studyJuri[0].upVedio.length == 0"
-              @click="addImg($event)"
-            >
-              <div class="up_photo">
-                <img src="../assets/vidio.png" alt="" />
-              </div>
-              <input
-                type="file"
-                accept="video/mp4,video/quicktime,video/x-msvideo"
-                style="display: none"
-                @change="beforeUpload2($event, 2)"
-              />
-            </div>
-            <div class="chapter_add" v-else>
-              <img :src="mr" alt="" />
-              <span>{{ studyJuri[0].upVedio[0].name }}</span>
-              <div class="deleteWord" @click="clean(2)">
-                <img src="../assets/icon/delete.png" alt="" />
-              </div>
-            </div>
-          </div>
-          <!-- <div class="marginT">
+						</div>
+					</div>
+				</div>
+				<el-dialog
+					title="提交实践作业"
+					:visible.sync="dialogVisible"
+					:append-to-body="true"
+					width="500px"
+					:before-close="handleClose"
+					class="dialog_change"
+				>
+					<div class="first">
+						<div>作业名称:</div>
+						<div>{{ chapInfo.dyName }}</div>
+					</div>
+					<div style="font-size: 20px; margin-bottom: 10px">上传作业</div>
+					<el-input
+						type="textarea"
+						resize="none"
+						rows="7"
+						placeholder="输入文字描述..."
+						v-model="studyJuri[0].content"
+					>
+					</el-input>
+					<div class="marginT">
+						<div>上传图片</div>
+						<div
+							class="chapter_add"
+							v-if="studyJuri[0].cover.length == 0"
+							@click="addImg($event)"
+						>
+							<div class="up_photo">
+								<img src="../assets/photo.png" alt="" />
+							</div>
+							<input
+								type="file"
+								accept="image/png,image/gif,image/jpeg"
+								style="display: none"
+								@change="beforeUpload1($event, 1)"
+							/>
+						</div>
+						<div class="chapter_add" v-else>
+							<img
+								:src="
+									studyJuri[0].cover[0].url != null &&
+									studyJuri[0].cover[0].url != ''
+										? studyJuri[0].cover[0].url
+										: mr
+								"
+								alt=""
+							/>
+							<span>{{ studyJuri[0].cover[0].name }}</span>
+							<div class="deleteWord" @click="clean(1)">
+								<img src="../assets/icon/delete.png" alt="" />
+							</div>
+						</div>
+					</div>
+					<div class="marginT">
+						<div>上传视频</div>
+						<div
+							class="chapter_add"
+							v-if="studyJuri[0].upVedio.length == 0"
+							@click="addImg($event)"
+						>
+							<div class="up_photo">
+								<img src="../assets/vidio.png" alt="" />
+							</div>
+							<input
+								type="file"
+								accept="video/mp4,video/quicktime,video/x-msvideo"
+								style="display: none"
+								@change="beforeUpload2($event, 2)"
+							/>
+						</div>
+						<div class="chapter_add" v-else>
+							<div>
+								<img src="../assets/uploadMp4.png" alt="" />
+								<span>{{ studyJuri[0].upVedio[0].name }}</span>
+							</div>
+
+							<div class="deleteWord" @click="clean(2)">
+								<img src="../assets/icon/delete.png" alt="" />
+							</div>
+						</div>
+					</div>
+					<!-- <div class="marginT">
 						<div>附件上传</div>
 						<div
 							class="chapter_add"
@@ -368,743 +377,765 @@
 							</div>
 						</div>
 					</div> -->
-          <div class="upload_send" @click="addWork">提交</div>
-        </el-dialog>
-      </div>
-    </div>
-  </div>
+					<div class="upload_send" @click="addWork">提交</div>
+				</el-dialog>
+			</div>
+		</div>
+		<div v-if="proVisible" class="mask">
+			<div class="progressBox">
+				<div class="lbox">
+					<img :src="require('../../assets/loading.gif')" />上传中,请稍后
+				</div>
+				<el-progress
+					:text-inside="true"
+					:stroke-width="20"
+					:percentage="progress"
+					style="width: 80%"
+				></el-progress>
+			</div>
+		</div>
+	</div>
 </template>
 
 <script>
-import "../common/aws-sdk-2.235.1.min.js";
-export default {
-  data() {
-    return {
-      dialogVisible: false,
-      id: this.$route.query.courseId,
-      userid: this.$route.query.userid,
-      courseType: this.$route.query.type,
-      oid: this.$route.query.oid,
-      type: 1,
-      vedio: [],
-      file: [],
-      rateList: {
-        ca: 0,
-      },
-      rateParams: [],
-      colors: ["#000", "#000", "#000"],
-      studyJuri: [
-        {
-          content: "",
-          cover: [],
-          upVedio: [],
-          upFile: [],
-        },
-      ],
-      mr: require("../assets/tu4.png"),
-      courseDetail: {},
-      chapInfo: [],
-      chapInfoList: [],
-      playerOptions: {
-        playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
-        autoplay: false, //如果true,浏览器准备好时开始回放。
-        muted: false, // 默认情况下将会消除任何音频。
-        loop: false, // 导致视频一结束就重新开始。
-        preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
-        language: "zh-CN",
-        aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
-        fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
-        sources: [
-          {
-            type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目   || "video/ogg"|| "video/webm"
-            src: "", //url地址require("../../assets/media/aaa.mp4")
-          },
-        ],
-        // poster: require("../../assets/tu31.png"), //你的封面地址
-        // poster: dataRes.imgUrl, //你的封面地址
-        notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
-        controlBar: {
-          timeDivider: true, //当前时间和持续时间的分隔符
-          durationDisplay: true, //显示持续时间
-          remainingTimeDisplay: false, //是否显示剩余时间功能
-          fullscreenToggle: true, //全屏按钮
-        },
-      },
-      playerO: {},
-      noneBtnImg: false,
-    };
-  },
-  methods: {
-    goTo(path) {
-      this.$router.push(path);
-    },
-    clean(type) {
-      if (type == 1) {
-        this.studyJuri[0].cover.splice(0, 1);
-      } else if (type == 2) {
-        this.studyJuri[0].upVedio.splice(0, 1);
-      } else {
-        this.studyJuri[0].upFile.splice(0, 1);
-      }
-    },
-    handleClose(done) {
-      done();
-      // this.studyJuri[0].push([
-      // 	{
-      // 		content: "",
-      // 		cover: [],
-      // 		upVedio: [],
-      // 		upFile: [],
-      // 	},
-      // ]);
-    },
-    imgChange(file, fileList, type) {
-      if (type == 1) {
-        var _tmp = this.studyJuri[0].cover;
-      } else if (type == 2) {
-        var _tmp = this.studyJuri[0].upVedio;
-      } else {
-        var _tmp = this.studyJuri[0].upFile;
-      }
-      this.noneBtnImg = _tmp.length >= 1;
-    },
-    addImg(e) {
-      var el = e.currentTarget;
-      el.getElementsByTagName("input")[0].click();
-    },
-    beforeUpload1(event, type) {
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
+	import "../common/aws-sdk-2.235.1.min.js";
+	export default {
+		data() {
+			return {
+				dialogVisible: false,
+				id: this.$route.query.courseId,
+				userid: this.$route.query.userid,
+				courseType: this.$route.query.type,
+				oid: this.$route.query.oid,
+				type: 1,
+				vedio: [],
+				file: [],
+				rateList: {
+					ca: 0,
+				},
+				rateParams: [],
+				colors: ["#000", "#000", "#000"],
+				studyJuri: [
+					{
+						content: "",
+						cover: [],
+						upVedio: [],
+						upFile: [],
+					},
+				],
+				mr: require("../assets/tu4.png"),
+				courseDetail: {},
+				chapInfo: [],
+				chapInfoList: [],
+				playerOptions: {
+					playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
+					autoplay: false, //如果true,浏览器准备好时开始回放。
+					muted: false, // 默认情况下将会消除任何音频。
+					loop: false, // 导致视频一结束就重新开始。
+					preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
+					language: "zh-CN",
+					aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
+					fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
+					sources: [
+						{
+							type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目   || "video/ogg"|| "video/webm"
+							src: "", //url地址require("../../assets/media/aaa.mp4")
+						},
+					],
+					// poster: require("../../assets/tu31.png"), //你的封面地址
+					// poster: dataRes.imgUrl, //你的封面地址
+					notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
+					controlBar: {
+						timeDivider: true, //当前时间和持续时间的分隔符
+						durationDisplay: true, //显示持续时间
+						remainingTimeDisplay: false, //是否显示剩余时间功能
+						fullscreenToggle: true, //全屏按钮
+					},
+				},
+				playerO: {},
+				noneBtnImg: false,
+				proVisible: false,
+				progress: 0,
+			};
+		},
+		methods: {
+			goTo(path) {
+				this.$router.push(path);
+			},
+			clean(type) {
+				if (type == 1) {
+					this.studyJuri[0].cover.splice(0, 1);
+				} else if (type == 2) {
+					this.studyJuri[0].upVedio.splice(0, 1);
+				} else {
+					this.studyJuri[0].upFile.splice(0, 1);
+				}
+			},
+			handleClose(done) {
+				done();
+				// this.studyJuri[0].push([
+				// 	{
+				// 		content: "",
+				// 		cover: [],
+				// 		upVedio: [],
+				// 		upFile: [],
+				// 	},
+				// ]);
+			},
+			imgChange(file, fileList, type) {
+				if (type == 1) {
+					var _tmp = this.studyJuri[0].cover;
+				} else if (type == 2) {
+					var _tmp = this.studyJuri[0].upVedio;
+				} else {
+					var _tmp = this.studyJuri[0].upFile;
+				}
+				this.noneBtnImg = _tmp.length >= 1;
+			},
+			addImg(e) {
+				var el = e.currentTarget;
+				el.getElementsByTagName("input")[0].click();
+			},
+			beforeUpload1(event, type) {
+				var file = event.target.files[0];
+				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;
+				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) {
-            if (err) {
-              var a = _this.$refs.upload1.uploadFiles;
-              a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              _this.studyJuri[0].cover.push({
-                name: file.name,
-                url: data.Location,
-                uid: file.uid,
-              });
-              _this.imgChange(null, null, type);
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    beforeUpload2(event, type) {
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
+				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) {
+							if (err) {
+								var a = _this.$refs.upload1.uploadFiles;
+								a.splice(a.length - 1, a.length);
+								_this.$message.error("上传失败");
+							} else {
+								_this.studyJuri[0].cover.push({
+									name: file.name,
+									url: data.Location,
+									uid: file.uid,
+								});
+								_this.imgChange(null, null, type);
+								console.log(data.Location);
+							}
+						});
+				}
+			},
+			beforeUpload2(event, type) {
+				var file = event.target.files[0];
+				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;
+				var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
+				var _this = this;
+				_this.progress = 0;
+				_this.proVisible = true;
 
-      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) {
-            if (err) {
-              var a = _this.$refs.upload1.uploadFiles;
-              a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              if (type == 2) {
-                _this.studyJuri[0].upVedio.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                });
-                _this.imgChange(null, null, type);
-              } else if (type == 3) {
-                _this.studyJuri[0].upFile.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                });
-                _this.imgChange(null, null, type);
-              }
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    get(i) {
-      this.courseType = i;
-      this.getCourseDetail();
-    },
-    getCourseDetail() {
-      const loading = this.$loading.service({
-        background: "rgba(255, 255, 255, 0.7)",
-        target: document.querySelector(".student_table"),
-      });
-      var t = this.courseType;
-      let params = {
-        courseId: this.id,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectCourseDetail", params)
-        .then((res) => {
-          loading.close();
-          // element.imgUrl = JSON.parse(element.chapters).poster;
-          var a = JSON.parse(res.data[0][0].chapters)[t].chapterInfo[0]
-            .chapterData;
-          var b = [
-            "AVI",
-            "NAVI",
-            "MPEG",
-            "ASF",
-            "MOV",
-            "WMV",
-            "3GP",
-            "RM",
-            "RMVB",
-            "FLV",
-            "F4V",
-            "H.264",
-            "H.265",
-            "REAL VIDEO",
-            "MKV",
-            "WebM",
-            "HDDVD",
-            "MP4",
-            "MPG",
-            "M4V",
-            "MGV",
-            "OGV",
-            "QTM",
-            "STR",
-            "AMC",
-            "DVX",
-            "EVO",
-            "DAT",
-            "OGG",
-            "OGM",
-          ];
-          this.vedio = [];
-          this.file = [];
-          for (var i = 0; i < a.length; i++) {
-            if (
-              b.indexOf(
-                a[i].url
-                  .split(".")
-                  [a[i].url.split(".").length - 1].toLocaleUpperCase()
-              ) != -1
-            ) {
-              this.vedio.push(a[i]);
-            } else {
-              this.file.push(a[i]);
-            }
-          }
-          // element.mediaList = JSON.parse(element.chapters)[0].chapterInfo[t].chapterData;
-          console.log(this.vedio);
-          console.log(this.file);
-          // this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
-          this.courseDetail = res.data[0][0];
-          this.chapInfo = JSON.parse(this.courseDetail.chapters)[t];
-          console.log(this.chapInfo);
-          this.chapInfoList = JSON.parse(this.courseDetail.chapters);
-          // this.playerOptions.poster = this.course.imgUrl;
-          this.playerOptions.sources[0].src =
-            this.vedio.length > 0
-              ? this.vedio[0].url
-              : require("../assets/icon/wheel.png");
-          console.log(this.playerOptions.sources[0].src);
-          this.playerO = this.playerOptions;
-        })
-        .catch((err) => {
-          loading.close();
-          console.error(err);
-        });
-    },
-    switchVideo(media, index) {
-      this.playerO = {};
-      this.playerOptions.poster = "";
-      this.playerOptions.sources[0].src = media;
-      this.playerO = this.playerOptions;
-    },
-    onPlayerPlay() {},
-    lookVedio(u) {
-      this.playerOptions.sources[0].src = u;
-      this.playerO = this.playerOptions;
-    },
-    downFile(i) {
-      window.open(this.file[i].url);
-    },
-    openAddWork() {
-      this.dialogVisible = true;
-      this.studyJuri = [
-        {
-          content: "",
-          cover: [],
-          upVedio: [],
-          upFile: [],
-        },
-      ];
-    },
-    addWork() {
-      let params = [
-        {
-          uid: this.userid,
-          cid: this.id,
-          stage: this.courseType,
-          content: JSON.stringify(this.studyJuri),
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "addWorks", params)
-        .then((res) => {
-          this.$message({
-            message: "提交成功",
-            type: "success",
-          });
-          this.dialogVisible = false;
-          // this.studyJuri.push([
-          // 	{
-          // 		content: "",
-          // 		cover: [],
-          // 		upVedio: [],
-          // 		upFile: [],
-          // 	},
-          // ]);
-        })
-        .catch((err) => {
-          this.$message.error("提交失败");
-          console.error(err);
-        });
-    },
-  },
-  created() {
-    this.getCourseDetail();
-    document.scrollingElement.scrollTop = 0;
-  },
-};
+				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) + '%');
+							_this.progress = parseInt((evt.loaded * 80) / evt.total);
+						})
+						.send(function (err, data) {
+							_this.progress = 100;
+							setTimeout(() => {
+								_this.proVisible = false;
+							}, 1000);
+							if (err) {
+								var a = _this.$refs.upload1.uploadFiles;
+								a.splice(a.length - 1, a.length);
+								_this.$message.error("上传失败");
+							} else {
+								if (type == 2) {
+									_this.studyJuri[0].upVedio.push({
+										name: file.name,
+										url: data.Location,
+										uid: file.uid,
+									});
+									_this.imgChange(null, null, type);
+								} else if (type == 3) {
+									_this.studyJuri[0].upFile.push({
+										name: file.name,
+										url: data.Location,
+										uid: file.uid,
+									});
+									_this.imgChange(null, null, type);
+								}
+								console.log(data.Location);
+							}
+						});
+				}
+			},
+			get(i) {
+				this.courseType = i;
+				this.getCourseDetail();
+			},
+			getCourseDetail() {
+				const loading = this.$loading.service({
+					background: "rgba(255, 255, 255, 0.7)",
+					target: document.querySelector(".student_table"),
+				});
+				var t = this.courseType;
+				let params = {
+					courseId: this.id,
+				};
+				this.ajax
+					.get(this.$store.state.api + "selectCourseDetail", params)
+					.then((res) => {
+						loading.close();
+						// element.imgUrl = JSON.parse(element.chapters).poster;
+						var a = JSON.parse(res.data[0][0].chapters)[t].chapterInfo[0]
+							.chapterData;
+						var b = [
+							"AVI",
+							"NAVI",
+							"MPEG",
+							"ASF",
+							"MOV",
+							"WMV",
+							"3GP",
+							"RM",
+							"RMVB",
+							"FLV",
+							"F4V",
+							"H.264",
+							"H.265",
+							"REAL VIDEO",
+							"MKV",
+							"WebM",
+							"HDDVD",
+							"MP4",
+							"MPG",
+							"M4V",
+							"MGV",
+							"OGV",
+							"QTM",
+							"STR",
+							"AMC",
+							"DVX",
+							"EVO",
+							"DAT",
+							"OGG",
+							"OGM",
+						];
+						this.vedio = [];
+						this.file = [];
+						for (var i = 0; i < a.length; i++) {
+							if (
+								b.indexOf(
+									a[i].url
+										.split(".")
+										[a[i].url.split(".").length - 1].toLocaleUpperCase()
+								) != -1
+							) {
+								this.vedio.push(a[i]);
+							} else {
+								this.file.push(a[i]);
+							}
+						}
+						// element.mediaList = JSON.parse(element.chapters)[0].chapterInfo[t].chapterData;
+						console.log(this.vedio);
+						console.log(this.file);
+						// this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
+						this.courseDetail = res.data[0][0];
+						this.chapInfo = JSON.parse(this.courseDetail.chapters)[t];
+						console.log(this.chapInfo);
+						this.chapInfoList = JSON.parse(this.courseDetail.chapters);
+						// this.playerOptions.poster = this.course.imgUrl;
+						this.playerOptions.sources[0].src =
+							this.vedio.length > 0
+								? this.vedio[0].url
+								: require("../assets/icon/wheel.png");
+						console.log(this.playerOptions.sources[0].src);
+						this.playerO = this.playerOptions;
+					})
+					.catch((err) => {
+						loading.close();
+						console.error(err);
+					});
+			},
+			switchVideo(media, index) {
+				this.playerO = {};
+				this.playerOptions.poster = "";
+				this.playerOptions.sources[0].src = media;
+				this.playerO = this.playerOptions;
+			},
+			onPlayerPlay() {},
+			lookVedio(u) {
+				this.playerOptions.sources[0].src = u;
+				this.playerO = this.playerOptions;
+			},
+			downFile(i) {
+				window.open(this.file[i].url);
+			},
+			openAddWork() {
+				this.dialogVisible = true;
+				this.studyJuri = [
+					{
+						content: "",
+						cover: [],
+						upVedio: [],
+						upFile: [],
+					},
+				];
+			},
+			addWork() {
+				let params = [
+					{
+						uid: this.userid,
+						cid: this.id,
+						stage: this.courseType,
+						content: JSON.stringify(this.studyJuri),
+					},
+				];
+				this.ajax
+					.post(this.$store.state.api + "addWorks", params)
+					.then((res) => {
+						this.$message({
+							message: "提交成功",
+							type: "success",
+						});
+						this.dialogVisible = false;
+						// this.studyJuri.push([
+						// 	{
+						// 		content: "",
+						// 		cover: [],
+						// 		upVedio: [],
+						// 		upFile: [],
+						// 	},
+						// ]);
+					})
+					.catch((err) => {
+						this.$message.error("提交失败");
+						console.error(err);
+					});
+			},
+		},
+		created() {
+			this.getCourseDetail();
+			document.scrollingElement.scrollTop = 0;
+		},
+	};
 </script>
 
 <style scoped>
-.body_student {
-  margin: 0px auto;
-  width: 80%;
-  height: 100%;
-  min-height: 800px;
-}
-.student_head {
-  width: 100%;
-  margin: 0 auto;
-  background: #fff;
-}
-.wheel > img,
-.project > img,
-.star > img,
-.evaluate > img,
-.up_photo > img,
-.chapter_add > img,
-.deleteWord > img {
-  width: 100%;
-  height: 100%;
-}
-.chapter_add {
-  width: 120px;
-  margin-top: 20px;
-  position: relative;
-  text-align: center;
-}
-.deleteWord {
-  width: 22px;
-  height: 22px;
-  position: absolute;
-  right: -10px;
-  top: -10px;
-  cursor: pointer;
-}
-.box_course {
-  display: flex;
-  flex-direction: column;
-}
-.wheel {
-  width: 100%;
-}
-.right_box {
-  display: flex;
-  flex-direction: column;
-  margin-left: 30px;
-  justify-content: space-around;
-}
-.right_box_title {
-  font-size: 23px;
-}
-.people {
-  display: flex;
-}
-.student_body {
-  width: 100%;
-  margin: 0 auto;
-  background: #fff;
-  margin-top: 20px;
-  padding: 0 0 20px;
-}
-.study_top {
-  display: flex;
-  flex-direction: row;
-  justify-content: space-between;
-  background: #fff;
-  margin: 10px 0;
-  height: 60px;
-  align-items: center;
-}
-.study_top .checkbox {
-  display: flex;
-  align-items: center;
-  margin-left: 25px;
-}
-.study_top .check {
-  margin: 0 10px 0 0;
-  /* border-bottom: 4px solid #ccc; */
-  padding-bottom: 5px;
-  text-align: center;
-  color: rgb(170, 170, 170);
-  cursor: pointer;
-  height: 30px;
-  box-sizing: border-box;
-  display: flex;
-  padding: 0 10px;
-}
-.study_top .checked {
-  border-bottom: 4px solid #3fc6a0;
-  padding-bottom: 5px;
-  color: #3fc6a0;
-  display: flex;
-}
-.study_top .checked > div,
-.study_top .check > div {
-  margin-right: 5px;
-}
-.videoTop {
-  display: flex;
-  flex-direction: row;
-  justify-content: space-between;
-  background: #fff;
-  height: 60px;
-  align-items: center;
-  width: 95%;
-  margin: 10px auto;
-  border-bottom: 2px solid #ededed;
-}
-.upbtn {
-  margin: 25px;
-  background: #70afdb;
-  color: #fff;
-  width: 120px;
-  text-align: center;
-  height: 30px;
-  line-height: 30px;
-  font-size: 13px;
-  border-radius: 5px;
-  cursor: pointer;
-}
-.project_box {
-  padding: 0 30px 10px 21px;
-}
+	.body_student {
+		margin: 0px auto;
+		width: 80%;
+		height: 100%;
+		min-height: 800px;
+	}
+	.student_head {
+		width: 100%;
+		margin: 0 auto;
+		background: #fff;
+	}
+	.wheel > img,
+	.project > img,
+	.star > img,
+	.evaluate > img,
+	.up_photo > img,
+	.chapter_add > img,
+	.deleteWord > img {
+		width: 100%;
+		height: 100%;
+	}
+	.chapter_add {
+		width: 120px;
+		margin-top: 20px;
+		position: relative;
+		text-align: center;
+	}
+	.deleteWord {
+		width: 22px;
+		height: 22px;
+		position: absolute;
+		right: -10px;
+		top: -10px;
+		cursor: pointer;
+	}
+	.box_course {
+		display: flex;
+		flex-direction: column;
+	}
+	.wheel {
+		width: 100%;
+	}
+	.right_box {
+		display: flex;
+		flex-direction: column;
+		margin-left: 30px;
+		justify-content: space-around;
+	}
+	.right_box_title {
+		font-size: 23px;
+	}
+	.people {
+		display: flex;
+	}
+	.student_body {
+		width: 100%;
+		margin: 0 auto;
+		background: #fff;
+		margin-top: 20px;
+		padding: 0 0 20px;
+	}
+	.study_top {
+		display: flex;
+		flex-direction: row;
+		justify-content: space-between;
+		background: #fff;
+		margin: 10px 0;
+		height: 60px;
+		align-items: center;
+	}
+	.study_top .checkbox {
+		display: flex;
+		align-items: center;
+		margin-left: 25px;
+	}
+	.study_top .check {
+		margin: 0 10px 0 0;
+		/* border-bottom: 4px solid #ccc; */
+		padding-bottom: 5px;
+		text-align: center;
+		color: rgb(170, 170, 170);
+		cursor: pointer;
+		height: 30px;
+		box-sizing: border-box;
+		display: flex;
+		padding: 0 10px;
+	}
+	.study_top .checked {
+		border-bottom: 4px solid #3fc6a0;
+		padding-bottom: 5px;
+		color: #3fc6a0;
+		display: flex;
+	}
+	.study_top .checked > div,
+	.study_top .check > div {
+		margin-right: 5px;
+	}
+	.videoTop {
+		display: flex;
+		flex-direction: row;
+		justify-content: space-between;
+		background: #fff;
+		height: 60px;
+		align-items: center;
+		width: 95%;
+		margin: 10px auto;
+		border-bottom: 2px solid #ededed;
+	}
+	.upbtn {
+		margin: 25px;
+		background: #70afdb;
+		color: #fff;
+		width: 120px;
+		text-align: center;
+		height: 30px;
+		line-height: 30px;
+		font-size: 13px;
+		border-radius: 5px;
+		cursor: pointer;
+	}
+	.project_box {
+		padding: 0 30px 10px 21px;
+	}
 
-.filebox {
-  display: flex;
-  flex-wrap: wrap;
-}
+	.filebox {
+		display: flex;
+		flex-wrap: wrap;
+	}
 
-.file {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  margin: 0 20px 20px 0;
-  cursor: pointer;
-}
+	.file {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		margin: 0 20px 20px 0;
+		cursor: pointer;
+	}
 
-.file div {
-  margin-top: 10px;
-  width: 150px;
-  text-align: center;
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
+	.file div {
+		margin-top: 10px;
+		width: 150px;
+		text-align: center;
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
 
-.media {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  margin: 0 20px 20px 0;
-  cursor: pointer;
-  width: 250px;
-  overflow: hidden;
-  box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%),
-    0px 2px 1px -1px rgb(0 0 0 / 12%);
-  border-radius: 0 0 5px 5px;
-  /* border: 1px solid #cecece; */
-  box-sizing: border-box;
-}
-.media img {
-  width: 250px;
-  height: 150px;
-  object-fit: cover;
-}
-.media .title {
-  padding: 5px;
-  text-align: left;
-  width: 100%;
-  box-sizing: border-box;
-}
-.media .btn {
-  width: 100%;
-  height: 35px;
-  line-height: 35px;
-  color: #fff;
-  background: #606060;
-  text-align: center;
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
+	.media {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		margin: 0 20px 20px 0;
+		cursor: pointer;
+		width: 250px;
+		overflow: hidden;
+		box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%),
+			0px 2px 1px -1px rgb(0 0 0 / 12%);
+		border-radius: 0 0 5px 5px;
+		/* border: 1px solid #cecece; */
+		box-sizing: border-box;
+	}
+	.media img {
+		width: 250px;
+		height: 150px;
+		object-fit: cover;
+	}
+	.media .title {
+		padding: 5px;
+		text-align: left;
+		width: 100%;
+		box-sizing: border-box;
+	}
+	.media .btn {
+		width: 100%;
+		height: 35px;
+		line-height: 35px;
+		color: #fff;
+		background: #606060;
+		text-align: center;
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
 
-.detail_content_top {
-  width: 100%;
-  padding: 25px 0 25px 0;
-}
-.detail_title {
-  text-align: center;
-  font-size: 24px;
-}
-.detail_time {
-  font-size: 13px;
-  padding: 15px 0 0 40px;
-}
-.detail_content {
-  line-height: 2pc;
-  width: 90%;
-  margin: 0 auto;
-  padding-top: 30px;
-  text-indent: 30px;
-}
-.score_box >>> .el-rate {
-  margin-left: 10px;
-}
-.dialog_change >>> .el-dialog {
-  border-radius: 5px;
-}
-.dialog_change >>> .el-dialog__header {
-  background: #f2f2f2;
-  text-align: center;
-}
-.dialog_change >>> .el-dialog__title {
-  line-height: 5px;
-}
-.dialog_change >>> .el-dialog__body {
-  background: #fff;
-  padding: 10px 20px;
-}
-.score_box {
-  display: flex;
-  align-items: center;
-  margin-bottom: 18px;
-  margin-top: 20px;
-}
-.up_photo {
-  width: 60px;
-  cursor: pointer;
-  margin-top: 10px;
-}
-.upload_send {
-  margin: 20px auto;
-  width: 60%;
-  background: #169bd6;
-  text-align: center;
-  height: 35px;
-  line-height: 35px;
-  color: #fff;
-  border-radius: 5px;
-  cursor: pointer;
-}
-.marginT {
-  margin-top: 20px;
-}
-.workd_media {
-  width: 100%;
-}
-.cd_content_steps {
-  display: flex;
-  width: 90%;
-  justify-content: space-around;
-  border-top: 1px solid #eeeeee;
-}
-.cd_steps_box {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  flex-direction: column;
-  cursor: pointer;
-}
-.first {
-  display: flex;
-  align-items: center;
-  margin: 15px 0 20px 0;
-  font-size: 20px;
-}
-.first > div:nth-child(2) {
-  font-size: 16px !important;
-  padding-left: 10px;
-  line-height: 26px;
-  box-sizing: border-box;
-}
-.blue_box_one {
-  text-align: center;
-  color: #fff;
-  background-image: linear-gradient(to right, #30c499, #75ceba);
-  border-radius: 7px;
-  margin: 10px;
-  cursor: pointer;
-  width: 95%;
-  height: 45px;
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  align-items: center;
-}
-.blue_box_one > div:nth-child(1) {
-  line-height: 65px;
-  margin: 0 5px 0 10px;
-  width: 30%;
-  min-width: 70px;
-}
-.blue_box_one > div:nth-child(2) {
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  word-break: break-all;
-  width: 70%;
-  text-align: left;
-  max-width: calc(100% - 85px);
-}
-.blue_box_one > div:nth-child(2):hover {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  cursor: pointer;
-}
-.upFile {
-  margin: 0 auto;
-  width: 120px;
-  background: #70afdb;
-  color: #fff;
-  height: 30px;
-  text-align: center;
-  line-height: 30px;
-  border-radius: 5px;
-  font-size: 14px;
-  cursor: pointer;
-}
-.courseTitle {
-  background: #329c74;
-  width: 95%;
-  margin: 10px auto;
-  height: 40px;
-  color: #fff;
-  line-height: 40px;
-  text-indent: 15px;
-}
-.ml {
-  margin-left: 15px;
-  color: #d1d1d1;
-}
-.return {
-  width: 2rem;
-  height: 2rem;
-  cursor: pointer;
-}
-.return > img {
-  width: 100%;
-  height: 100%;
-}
-.returnBtn {
-  background: rgb(238, 238, 238);
-  width: 58px;
-  height: 30px;
-  color: rgb(22, 22, 22);
-  text-align: center;
-  line-height: 32px;
-  margin-right: 20px;
-  cursor: pointer;
-}
-.tool {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  width: 13%;
-  margin: 10px 20px;
-  align-items: center;
-}
-.whiteBIcon {
-  width: 150px;
-  cursor: pointer;
-}
-.whiteBIcon > img {
-  width: 100%;
-  height: 100%;
-}
+	.detail_content_top {
+		width: 100%;
+		padding: 25px 0 25px 0;
+	}
+	.detail_title {
+		text-align: center;
+		font-size: 24px;
+	}
+	.detail_time {
+		font-size: 13px;
+		padding: 15px 0 0 40px;
+	}
+	.detail_content {
+		line-height: 2pc;
+		width: 90%;
+		margin: 0 auto;
+		padding-top: 30px;
+		text-indent: 30px;
+	}
+	.score_box >>> .el-rate {
+		margin-left: 10px;
+	}
+	.dialog_change >>> .el-dialog {
+		border-radius: 5px;
+	}
+	.dialog_change >>> .el-dialog__header {
+		background: #f2f2f2;
+		text-align: center;
+	}
+	.dialog_change >>> .el-dialog__title {
+		line-height: 5px;
+	}
+	.dialog_change >>> .el-dialog__body {
+		background: #fff;
+		padding: 10px 20px;
+	}
+	.score_box {
+		display: flex;
+		align-items: center;
+		margin-bottom: 18px;
+		margin-top: 20px;
+	}
+	.up_photo {
+		width: 60px;
+		cursor: pointer;
+		margin-top: 10px;
+	}
+	.upload_send {
+		margin: 20px auto;
+		width: 60%;
+		background: #169bd6;
+		text-align: center;
+		height: 35px;
+		line-height: 35px;
+		color: #fff;
+		border-radius: 5px;
+		cursor: pointer;
+	}
+	.marginT {
+		margin-top: 20px;
+	}
+	.workd_media {
+		width: 100%;
+	}
+	.cd_content_steps {
+		display: flex;
+		width: 90%;
+		justify-content: space-around;
+		border-top: 1px solid #eeeeee;
+	}
+	.cd_steps_box {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		flex-direction: column;
+		cursor: pointer;
+	}
+	.first {
+		display: flex;
+		align-items: center;
+		margin: 15px 0 20px 0;
+		font-size: 20px;
+	}
+	.first > div:nth-child(2) {
+		font-size: 16px !important;
+		padding-left: 10px;
+		line-height: 26px;
+		box-sizing: border-box;
+	}
+	.blue_box_one {
+		text-align: center;
+		color: #fff;
+		background-image: linear-gradient(to right, #30c499, #75ceba);
+		border-radius: 7px;
+		margin: 10px;
+		cursor: pointer;
+		width: 95%;
+		height: 45px;
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+		align-items: center;
+	}
+	.blue_box_one > div:nth-child(1) {
+		line-height: 65px;
+		margin: 0 5px 0 10px;
+		width: 30%;
+		min-width: 70px;
+	}
+	.blue_box_one > div:nth-child(2) {
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		overflow: hidden;
+		word-break: break-all;
+		width: 70%;
+		text-align: left;
+		max-width: calc(100% - 85px);
+	}
+	.blue_box_one > div:nth-child(2):hover {
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		cursor: pointer;
+	}
+	.upFile {
+		margin: 0 auto;
+		width: 120px;
+		background: #70afdb;
+		color: #fff;
+		height: 30px;
+		text-align: center;
+		line-height: 30px;
+		border-radius: 5px;
+		font-size: 14px;
+		cursor: pointer;
+	}
+	.courseTitle {
+		background: #329c74;
+		width: 95%;
+		margin: 10px auto;
+		height: 40px;
+		color: #fff;
+		line-height: 40px;
+		text-indent: 15px;
+	}
+	.ml {
+		margin-left: 15px;
+		color: #d1d1d1;
+	}
+	.return {
+		width: 2rem;
+		height: 2rem;
+		cursor: pointer;
+	}
+	.return > img {
+		width: 100%;
+		height: 100%;
+	}
+	.returnBtn {
+		background: rgb(238, 238, 238);
+		width: 58px;
+		height: 30px;
+		color: rgb(22, 22, 22);
+		text-align: center;
+		line-height: 32px;
+		margin-right: 20px;
+		cursor: pointer;
+	}
+	.tool {
+		display: flex;
+		flex-direction: column;
+		flex-wrap: nowrap;
+		width: 13%;
+		margin: 10px 20px;
+		align-items: center;
+	}
+	.whiteBIcon {
+		width: 150px;
+		cursor: pointer;
+	}
+	.whiteBIcon > img {
+		width: 100%;
+		height: 100%;
+	}
 </style>