|
|
@@ -1227,6 +1227,7 @@
|
|
|
<div class="left-box">
|
|
|
<div class="left-box__body">
|
|
|
<div
|
|
|
+ class="buy-note"
|
|
|
v-html="
|
|
|
goodsData.buyNote &&
|
|
|
goodsData.buyNote.replace(/\n|\r\n/g, '<br>')
|
|
|
@@ -1249,7 +1250,8 @@
|
|
|
)"
|
|
|
:key="index"
|
|
|
>
|
|
|
- <div
|
|
|
+ <GoodsItem :item="itemy"></GoodsItem>
|
|
|
+ <!-- <div
|
|
|
class="course-item__img"
|
|
|
:style="`background-image:url(${$tools.splitImgHost(
|
|
|
itemy.coverUrl,
|
|
|
@@ -1273,7 +1275,7 @@
|
|
|
@click.stop="addCart(true, itemy.goodsId)"
|
|
|
>加购物车</a
|
|
|
>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
@@ -2161,7 +2163,7 @@
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
<div id="printTable"></div>
|
|
|
- <ToolBar></ToolBar>
|
|
|
+ <!-- <ToolBar></ToolBar> -->
|
|
|
<Footer></Footer>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -2170,6 +2172,8 @@
|
|
|
import Footer from "@/components/footer/index";
|
|
|
import Header from "@/components/header/index";
|
|
|
import ToolBar from "@/components/toolbar/index";
|
|
|
+import GoodsItem from "@/components/goodsItem/index";
|
|
|
+
|
|
|
import { mapGetters, mapMutations } from "vuex";
|
|
|
import * as baseUrls from "@/axios.js";
|
|
|
import pdf from "vue-pdf";
|
|
|
@@ -2181,6 +2185,7 @@ export default {
|
|
|
Header,
|
|
|
ToolBar,
|
|
|
pdf,
|
|
|
+ GoodsItem,
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
@@ -2504,7 +2509,7 @@ export default {
|
|
|
let ary = [];
|
|
|
if (array) {
|
|
|
for (let i = 0; i < array.length; i++) {
|
|
|
- if (i >= 4) {
|
|
|
+ if (i >= 5) {
|
|
|
break;
|
|
|
} else {
|
|
|
ary.push(array[i]);
|
|
|
@@ -2527,46 +2532,65 @@ export default {
|
|
|
this.courseTabIndex = "2";
|
|
|
}
|
|
|
|
|
|
- if (this.sectionItem.recordingUrl) {
|
|
|
- let noteSecond = this.$route.query.noteSecond;
|
|
|
- if (noteSecond > 0) {
|
|
|
- let item = {
|
|
|
- sectionId: this.$route.query.sectionId,
|
|
|
- recordingUrl: this.$route.query.recordingUrl,
|
|
|
- noteSecond: noteSecond,
|
|
|
- studyDuration: noteSecond,
|
|
|
- moduleId: this.$route.query.moduleId,
|
|
|
- chapterId: this.$route.query.chapterId,
|
|
|
- };
|
|
|
-
|
|
|
- this.playSectionId = this.$route.query.sectionId;
|
|
|
- setTimeout(() => {
|
|
|
- this.noteClick(item);
|
|
|
- }, 1000);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- this.courseCourseList();
|
|
|
this.dictList();
|
|
|
|
|
|
- this.getbaseprofiletplists().then((res) => {
|
|
|
- let noteSecond = this.$route.query.noteSecond;
|
|
|
- if (noteSecond > 0) {
|
|
|
- let item = {
|
|
|
- sectionId: this.$route.query.sectionId,
|
|
|
- recordingUrl: this.$route.query.recordingUrl,
|
|
|
- noteSecond: noteSecond,
|
|
|
- studyDuration: noteSecond,
|
|
|
- moduleId: this.$route.query.moduleId,
|
|
|
- chapterId: this.$route.query.chapterId,
|
|
|
- };
|
|
|
+ this.getbaseprofiletplists().then(async (res) => {
|
|
|
+ // let allMenuList = await this.studyRecordMenuAllList();
|
|
|
+ // let nowTime = Number(new Date().getTime() / 1000).toFixed(0);
|
|
|
+ // let liveMenu = allMenuList.filter((item) => {
|
|
|
+ // //获取直播中的视频
|
|
|
+ // if (
|
|
|
+ // item.type == 3 &&
|
|
|
+ // item.liveStartTime <= nowTime &&
|
|
|
+ // item.liveEndTime > nowTime
|
|
|
+ // ) {
|
|
|
+ // return true;
|
|
|
+ // } else {
|
|
|
+ // return false;
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // let earlyTime = 0;
|
|
|
+
|
|
|
+ // if (liveMenu && liveMenu.length) {
|
|
|
+ // earlyTime = liveMenu[0].liveStartTime;
|
|
|
+ // }
|
|
|
|
|
|
- this.sectionItem = item;
|
|
|
- this.playSectionId = this.$route.query.sectionId;
|
|
|
- setTimeout(() => {
|
|
|
- this.noteClick(item);
|
|
|
- }, 1000);
|
|
|
+ this.courseCourseList();
|
|
|
+ if (this.sectionItem.recordingUrl) {
|
|
|
+ let noteSecond = this.$route.query.noteSecond;
|
|
|
+ if (noteSecond > 0) {
|
|
|
+ let item = {
|
|
|
+ sectionId: this.$route.query.sectionId,
|
|
|
+ recordingUrl: this.$route.query.recordingUrl,
|
|
|
+ noteSecond: noteSecond,
|
|
|
+ studyDuration: noteSecond,
|
|
|
+ moduleId: this.$route.query.moduleId,
|
|
|
+ chapterId: this.$route.query.chapterId,
|
|
|
+ };
|
|
|
+
|
|
|
+ this.playSectionId = this.$route.query.sectionId;
|
|
|
+ setTimeout(() => {
|
|
|
+ this.noteClick(item);
|
|
|
+ }, 1000);
|
|
|
+ }
|
|
|
}
|
|
|
+ // let noteSecond = this.$route.query.noteSecond;
|
|
|
+ // if (noteSecond > 0) {
|
|
|
+ // let item = {
|
|
|
+ // sectionId: this.$route.query.sectionId,
|
|
|
+ // recordingUrl: this.$route.query.recordingUrl,
|
|
|
+ // noteSecond: noteSecond,
|
|
|
+ // studyDuration: noteSecond,
|
|
|
+ // moduleId: this.$route.query.moduleId,
|
|
|
+ // chapterId: this.$route.query.chapterId,
|
|
|
+ // };
|
|
|
+
|
|
|
+ // this.sectionItem = item;
|
|
|
+ // this.playSectionId = this.$route.query.sectionId;
|
|
|
+ // setTimeout(() => {
|
|
|
+ // this.noteClick(item);
|
|
|
+ // }, 1000);
|
|
|
+ // }
|
|
|
});
|
|
|
},
|
|
|
beforeDestroy() {
|
|
|
@@ -2782,28 +2806,38 @@ export default {
|
|
|
|
|
|
let res = await this.faceCertificationIDCardOCR(1, file);
|
|
|
|
|
|
+ console.log(res.data.IdImgPath, "res.data.IdImgPath");
|
|
|
+
|
|
|
if (res.code == 500) {
|
|
|
this.$message.warning("请上传正确清晰的身份证人像面照片");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
this.$refs.idcard_face_photo[0].clearFiles();
|
|
|
- this.$upload
|
|
|
- .upload(file, 0)
|
|
|
- .then((res) => {
|
|
|
- this.$set(this.infoForm, "idcard_face_photo", res);
|
|
|
- this.fileList2 = [
|
|
|
- {
|
|
|
- name: res,
|
|
|
- url: res,
|
|
|
- },
|
|
|
- ];
|
|
|
- this.$refs.idcard_face_photo[0].clearFiles();
|
|
|
- console.log(res);
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- this.$refs.idcard_face_photo[0].clearFiles();
|
|
|
- });
|
|
|
+ this.$set(this.infoForm, "idcard_face_photo", res.data.IdImgPath);
|
|
|
+ this.fileList2 = [
|
|
|
+ {
|
|
|
+ name: res.data.IdImgPath,
|
|
|
+ url: res.data.IdImgPath,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ // this.$upload
|
|
|
+ // .upload(file, 0)
|
|
|
+ // .then((res) => {
|
|
|
+ // console.log(res, "res");
|
|
|
+ // this.$set(this.infoForm, "idcard_face_photo", res);
|
|
|
+ // this.fileList2 = [
|
|
|
+ // {
|
|
|
+ // name: res,
|
|
|
+ // url: res,
|
|
|
+ // },
|
|
|
+ // ];
|
|
|
+ // this.$refs.idcard_face_photo[0].clearFiles();
|
|
|
+ // console.log(res);
|
|
|
+ // })
|
|
|
+ // .catch((err) => {
|
|
|
+ // this.$refs.idcard_face_photo[0].clearFiles();
|
|
|
+ // });
|
|
|
},
|
|
|
|
|
|
async changePhotoListHeader3(params, fileList) {
|
|
|
@@ -2831,22 +2865,29 @@ export default {
|
|
|
return;
|
|
|
}
|
|
|
this.$refs.idcard_national_photo[0].clearFiles();
|
|
|
- this.$upload
|
|
|
- .upload(file, 0)
|
|
|
- .then((res) => {
|
|
|
- this.$set(this.infoForm, "idcard_national_photo", res);
|
|
|
- this.fileList3 = [
|
|
|
- {
|
|
|
- name: res,
|
|
|
- url: res,
|
|
|
- },
|
|
|
- ];
|
|
|
- this.$refs.idcard_national_photo[0].clearFiles();
|
|
|
- console.log(res);
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- this.$refs.idcard_national_photo[0].clearFiles();
|
|
|
- });
|
|
|
+ this.$set(this.infoForm, "idcard_national_photo", res.data.IdImgPath);
|
|
|
+ this.fileList3 = [
|
|
|
+ {
|
|
|
+ name: res.data.IdImgPath,
|
|
|
+ url: res.data.IdImgPath,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ // this.$upload
|
|
|
+ // .upload(file, 0)
|
|
|
+ // .then((res) => {
|
|
|
+ // this.$set(this.infoForm, "idcard_national_photo", res);
|
|
|
+ // this.fileList3 = [
|
|
|
+ // {
|
|
|
+ // name: res,
|
|
|
+ // url: res,
|
|
|
+ // },
|
|
|
+ // ];
|
|
|
+ // this.$refs.idcard_national_photo[0].clearFiles();
|
|
|
+ // console.log(res);
|
|
|
+ // })
|
|
|
+ // .catch((err) => {
|
|
|
+ // this.$refs.idcard_national_photo[0].clearFiles();
|
|
|
+ // });
|
|
|
},
|
|
|
|
|
|
faceCertificationIDCardOCR(cardSide, file) {
|
|
|
@@ -3108,105 +3149,112 @@ export default {
|
|
|
);
|
|
|
|
|
|
let newData = {
|
|
|
- idNum: this.veryIdCard,
|
|
|
- idName: this.veryIdName,
|
|
|
+ urlA: this.infoForm.idcard_face_photo,
|
|
|
oneInchPhotos: base64,
|
|
|
};
|
|
|
|
|
|
- this.$request.facCertificationImageRecognition(newData).then((res1) => {
|
|
|
- if (res1.data.sim >= 70) {
|
|
|
- var self = this;
|
|
|
- if (self.remarkStatus) {
|
|
|
- var arsty = {};
|
|
|
- for (let k in data) {
|
|
|
- for (let j in self.copyData) {
|
|
|
- if (k === j) {
|
|
|
- if (self.copyData[j].value === data[k]) {
|
|
|
- arsty[k] = {
|
|
|
- fieldKey: k,
|
|
|
- value: data[k],
|
|
|
- fieldName: (function () {
|
|
|
- for (let i = 0; i < self.listData.length; i++) {
|
|
|
- if (self.listData[i].fieldKey == k) {
|
|
|
- return self.listData[i].fieldName;
|
|
|
+ this.$request
|
|
|
+ .faceCertificationIdCardCompareFace(newData)
|
|
|
+ .then((res1) => {
|
|
|
+ if (res1.data >= 70) {
|
|
|
+ var self = this;
|
|
|
+ if (self.remarkStatus) {
|
|
|
+ var arsty = {};
|
|
|
+ for (let k in data) {
|
|
|
+ for (let j in self.copyData) {
|
|
|
+ if (k === j) {
|
|
|
+ if (self.copyData[j].value === data[k]) {
|
|
|
+ arsty[k] = {
|
|
|
+ fieldKey: k,
|
|
|
+ value: data[k],
|
|
|
+ fieldName: (function () {
|
|
|
+ for (let i = 0; i < self.listData.length; i++) {
|
|
|
+ if (self.listData[i].fieldKey == k) {
|
|
|
+ return self.listData[i].fieldName;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- })(),
|
|
|
- status: 0,
|
|
|
- };
|
|
|
- } else {
|
|
|
- arsty[k] = {
|
|
|
- fieldKey: k,
|
|
|
- value: data[k],
|
|
|
- fieldName: (function () {
|
|
|
- for (let i = 0; i < self.listData.length; i++) {
|
|
|
- if (self.listData[i].fieldKey == k) {
|
|
|
- return self.listData[i].fieldName;
|
|
|
+ })(),
|
|
|
+ status: 0,
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ arsty[k] = {
|
|
|
+ fieldKey: k,
|
|
|
+ value: data[k],
|
|
|
+ fieldName: (function () {
|
|
|
+ for (let i = 0; i < self.listData.length; i++) {
|
|
|
+ if (self.listData[i].fieldKey == k) {
|
|
|
+ return self.listData[i].fieldName;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- })(),
|
|
|
- status: 1,
|
|
|
- };
|
|
|
+ })(),
|
|
|
+ status: 1,
|
|
|
+ };
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- var datas = {
|
|
|
- id: this.id,
|
|
|
- goodsId: this.goodsId,
|
|
|
- orderGoodsId: this.orderGoodsId,
|
|
|
- keyValue: JSON.stringify(arsty),
|
|
|
- };
|
|
|
- this.$request
|
|
|
- .editbaseprofiletp(datas)
|
|
|
- .then((res) => {
|
|
|
- this.uploading = false;
|
|
|
- this.$message.success("提交成功");
|
|
|
- this.showInfoDetailModal = false;
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- this.$message.warning(err.msg);
|
|
|
- this.uploading = false;
|
|
|
- });
|
|
|
- } else {
|
|
|
- var objs = {};
|
|
|
- for (let k in data) {
|
|
|
- objs[k] = {
|
|
|
- fieldKey: k,
|
|
|
- value: data[k],
|
|
|
- fieldName: (function () {
|
|
|
- for (let i = 0; i < self.listData.length; i++) {
|
|
|
- if (self.listData[i].fieldKey == k) {
|
|
|
- return self.listData[i].fieldName;
|
|
|
+ var datas = {
|
|
|
+ id: this.id,
|
|
|
+ goodsId: this.goodsId,
|
|
|
+ orderGoodsId: this.orderGoodsId,
|
|
|
+ keyValue: JSON.stringify(arsty),
|
|
|
+ };
|
|
|
+ this.$request
|
|
|
+ .editbaseprofiletp(datas)
|
|
|
+ .then((res) => {
|
|
|
+ this.uploading = false;
|
|
|
+ this.courseCourseList();
|
|
|
+ this.$message.success("提交成功");
|
|
|
+ this.showInfoDetailModal = false;
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.$message.warning(err.msg);
|
|
|
+ this.uploading = false;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ var objs = {};
|
|
|
+ for (let k in data) {
|
|
|
+ objs[k] = {
|
|
|
+ fieldKey: k,
|
|
|
+ value: data[k],
|
|
|
+ fieldName: (function () {
|
|
|
+ for (let i = 0; i < self.listData.length; i++) {
|
|
|
+ if (self.listData[i].fieldKey == k) {
|
|
|
+ return self.listData[i].fieldName;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- })(),
|
|
|
- status: 0,
|
|
|
+ })(),
|
|
|
+ status: 0,
|
|
|
+ };
|
|
|
+ }
|
|
|
+ var datas = {
|
|
|
+ goodsId: this.goodsId,
|
|
|
+ profileTpId: this.goodsId,
|
|
|
+ orderGoodsId: this.orderGoodsId,
|
|
|
+ keyValue: JSON.stringify(objs),
|
|
|
};
|
|
|
+ this.$request
|
|
|
+ .addbaseprofiletp(datas)
|
|
|
+ .then((res) => {
|
|
|
+ this.uploading = false;
|
|
|
+ this.courseCourseList();
|
|
|
+ this.$message.success("提交成功");
|
|
|
+ this.showInfoDetailModal = false;
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.$message.warning(err.msg);
|
|
|
+ this.uploading = false;
|
|
|
+ });
|
|
|
}
|
|
|
- var datas = {
|
|
|
- goodsId: this.goodsId,
|
|
|
- profileTpId: this.goodsId,
|
|
|
- orderGoodsId: this.orderGoodsId,
|
|
|
- keyValue: JSON.stringify(objs),
|
|
|
- };
|
|
|
- this.$request
|
|
|
- .addbaseprofiletp(datas)
|
|
|
- .then((res) => {
|
|
|
- this.uploading = false;
|
|
|
- this.$message.success("提交成功");
|
|
|
- this.showInfoDetailModal = false;
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- this.$message.warning(err.msg);
|
|
|
- this.uploading = false;
|
|
|
- });
|
|
|
+ } else {
|
|
|
+ this.uploading = false;
|
|
|
+ this.$message.warning("个人近照和身份证人像面照片不匹配");
|
|
|
}
|
|
|
- } else {
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
this.uploading = false;
|
|
|
- this.$message.warning("个人近照和身份证人像面照片不匹配");
|
|
|
- }
|
|
|
- });
|
|
|
+ this.$message.warning(err.msg);
|
|
|
+ });
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
@@ -3257,6 +3305,7 @@ export default {
|
|
|
.editbaseprofiletp(datas)
|
|
|
.then((res) => {
|
|
|
this.uploading = false;
|
|
|
+ this.courseCourseList();
|
|
|
this.$message.success("提交成功");
|
|
|
this.showInfoDetailModal = false;
|
|
|
})
|
|
|
@@ -3290,6 +3339,7 @@ export default {
|
|
|
.addbaseprofiletp(datas)
|
|
|
.then((res) => {
|
|
|
this.uploading = false;
|
|
|
+ this.courseCourseList();
|
|
|
this.$message.success("提交成功");
|
|
|
this.showInfoDetailModal = false;
|
|
|
})
|
|
|
@@ -3377,7 +3427,6 @@ export default {
|
|
|
orderGoodsId: this.orderGoodsId || "",
|
|
|
})
|
|
|
.then((res) => {
|
|
|
- console.log(res, "res");
|
|
|
if (res.code === 200 && res.rows.length) {
|
|
|
if (res.rows[0].keyValue) {
|
|
|
self.$request
|
|
|
@@ -3511,6 +3560,8 @@ export default {
|
|
|
} else {
|
|
|
resolve();
|
|
|
}
|
|
|
+ } else {
|
|
|
+ resolve();
|
|
|
}
|
|
|
});
|
|
|
if (this.gradeId > 0) {
|
|
|
@@ -4098,7 +4149,7 @@ export default {
|
|
|
menuItem.list = res.data;
|
|
|
|
|
|
if (this.needOpen) {
|
|
|
- this.needOpen = false;
|
|
|
+ // this.needOpen = false;
|
|
|
this.openChapter(menuItem.list[0]);
|
|
|
}
|
|
|
});
|
|
|
@@ -4176,6 +4227,13 @@ export default {
|
|
|
section.parent = chapter;
|
|
|
});
|
|
|
chapter.list = res.data;
|
|
|
+
|
|
|
+ if (this.needOpen) {
|
|
|
+ this.needOpen = false;
|
|
|
+ if (chapter.list && !this.sectionItem.recordingUrl) {
|
|
|
+ this.getResource(chapter.list[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
});
|
|
|
},
|
|
|
getGoodsDetail() {
|
|
|
@@ -4729,6 +4787,7 @@ export default {
|
|
|
wrap: "#playerzb",
|
|
|
width: 810,
|
|
|
height: 455,
|
|
|
+ showLine: false,
|
|
|
uid: this.uidzb,
|
|
|
vid: this.vidzb,
|
|
|
});
|
|
|
@@ -4759,6 +4818,7 @@ export default {
|
|
|
self.player = polyvPlayer({
|
|
|
wrap: "#player",
|
|
|
width: 810,
|
|
|
+ showLine: false,
|
|
|
height: 455,
|
|
|
ban_history_time: "on",
|
|
|
vid: self.vid,
|
|
|
@@ -4854,7 +4914,6 @@ export default {
|
|
|
let self = this;
|
|
|
var polyvPlayerContext = this.player;
|
|
|
if (polyvPlayerContext) {
|
|
|
- console.log(polyvPlayerContext, "polyvPlayerContext");
|
|
|
this.playTime = polyvPlayerContext.j2s_getCurrentTime(); //播放时刻
|
|
|
// console.log(this.playTime,789,this.photoHistoryList)
|
|
|
//判断是否需要拍照
|
|
|
@@ -5611,7 +5670,7 @@ export default {
|
|
|
item.parent = this.menuList;
|
|
|
}
|
|
|
self.menuList = res.rows;
|
|
|
-
|
|
|
+ //展开第一个
|
|
|
if (this.needOpen) {
|
|
|
for (let i = 0; i < res.rows.length; i++) {
|
|
|
if (res.rows[i].type == 1) {
|
|
|
@@ -5620,11 +5679,21 @@ export default {
|
|
|
break;
|
|
|
} else if (res.rows[i].type == 2) {
|
|
|
this.menuIndex = [i];
|
|
|
- this.needOpen = false;
|
|
|
+ // this.needOpen = false;
|
|
|
this.openChapter(this.menuList[i]);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //第一个是节,直接播放
|
|
|
+ if (self.menuList.length) {
|
|
|
+ if (
|
|
|
+ self.menuList[0].type == 3 &&
|
|
|
+ !this.sectionItem.recordingUrl
|
|
|
+ ) {
|
|
|
+ this.getResource(self.menuList[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
@@ -6274,6 +6343,9 @@ export default {
|
|
|
}
|
|
|
|
|
|
&__body {
|
|
|
+ .buy-note {
|
|
|
+ margin-right: 50px;
|
|
|
+ }
|
|
|
.item {
|
|
|
margin-top: 24px;
|
|
|
padding: 16px;
|
|
|
@@ -6308,7 +6380,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
.right-box {
|
|
|
- width: 323px;
|
|
|
+ width: 255px;
|
|
|
float: right;
|
|
|
.title {
|
|
|
font-size: 16px;
|
|
|
@@ -6325,91 +6397,11 @@ export default {
|
|
|
color: #999999;
|
|
|
position: absolute;
|
|
|
right: 0;
|
|
|
- top: 10px;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.list {
|
|
|
.course-item {
|
|
|
- margin: 110px 9px 0;
|
|
|
- width: 300px;
|
|
|
- height: 178px;
|
|
|
- background: #ffffff;
|
|
|
- box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
|
|
|
- border-radius: 10px;
|
|
|
- position: relative;
|
|
|
- background: #fff;
|
|
|
- padding-top: 100px;
|
|
|
-
|
|
|
- &__img {
|
|
|
- width: 280px;
|
|
|
- height: 178px;
|
|
|
- background: #ffffff;
|
|
|
- box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
|
|
|
- border-radius: 10px;
|
|
|
- position: absolute;
|
|
|
- left: 10px;
|
|
|
- top: -78px;
|
|
|
- background: rgba(122, 136, 246, 1);
|
|
|
- overflow: hidden;
|
|
|
- background: no-repeat center center;
|
|
|
- background-size: 280px 178px;
|
|
|
- .note {
|
|
|
- width: 80px;
|
|
|
- height: 24px;
|
|
|
- background: #d94404;
|
|
|
- box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
|
|
|
- border-radius: 10px 0px 20px 0px;
|
|
|
- text-align: center;
|
|
|
- line-height: 24px;
|
|
|
- color: #fff;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- &__title {
|
|
|
- margin: 0 8px;
|
|
|
- font-size: 14px;
|
|
|
- font-family: Microsoft YaHei;
|
|
|
- font-weight: 400;
|
|
|
- color: #333333;
|
|
|
- line-height: 24px;
|
|
|
- }
|
|
|
-
|
|
|
- &__desc {
|
|
|
- height: 32px;
|
|
|
- position: absolute;
|
|
|
- left: 0;
|
|
|
- right: 0;
|
|
|
- bottom: 0;
|
|
|
- margin-left: 8px;
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
-
|
|
|
- .price {
|
|
|
- font-size: 18px;
|
|
|
- font-family: Microsoft YaHei;
|
|
|
- font-weight: bold;
|
|
|
- color: #ff2d55;
|
|
|
- line-height: 32px;
|
|
|
- }
|
|
|
-
|
|
|
- .add {
|
|
|
- display: block;
|
|
|
- width: 118px;
|
|
|
- height: 32px;
|
|
|
- line-height: 30px;
|
|
|
- background: #f2f4f7;
|
|
|
- border-radius: 10px 0px 10px 0px;
|
|
|
- font-size: 16px;
|
|
|
- color: #3f8dfd;
|
|
|
- text-align: center;
|
|
|
-
|
|
|
- &:hover {
|
|
|
- background: #3f8dfd;
|
|
|
- color: #f2f4f7;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
}
|