소스 검색

课程预览

wangkaiyue 5 년 전
부모
커밋
92a61631d7

+ 55 - 6
core/src/qfw/manage/course.go

@@ -20,11 +20,13 @@ import (
 //招投标课程相关接口
 type CourseManage struct {
 	*xweb.Action
-	index        xweb.Mapper `xweb:"/manage/course/index"`              //课程首页
-	list         xweb.Mapper `xweb:"/manage/course/list"`               //请求课程列表
-	createPage   xweb.Mapper `xweb:"/manage/course/page/(\\w+)/(\\w+)"` //课程三级页
-	createApi    xweb.Mapper `xweb:"/manage/course/doRequest"`          //课程三级页接口
-	changeStatus xweb.Mapper `xweb:"/manage/course/changeStatus"`       //上线or下线
+	index          xweb.Mapper `xweb:"/manage/course/index"`                 //课程首页
+	list           xweb.Mapper `xweb:"/manage/course/list"`                  //请求课程列表
+	createPage     xweb.Mapper `xweb:"/manage/course/page/(\\w+)/(\\w+)"`    //课程三级页
+	createApi      xweb.Mapper `xweb:"/manage/course/doRequest"`             //课程三级页接口
+	changeStatus   xweb.Mapper `xweb:"/manage/course/changeStatus"`          //上线or下线
+	preview        xweb.Mapper `xweb:"/manage/course/preview/(\\w+)/(\\w+)"` //课程预览
+	previewGetDate xweb.Mapper `xweb:"/manage/course/previewGetDate"`        //课程预览
 	//课程订单
 	orderIndex  xweb.Mapper `xweb:"/manage/courseOrder/index"`         //课程订单列表
 	orderDetail xweb.Mapper `xweb:"/manage/courseOrder/detail/(\\w+)"` //课程订单详情
@@ -49,11 +51,58 @@ func (f *FuncResult) Format() *map[string]interface{} {
 		"data":    f.Data,
 	}
 }
-
 func init() {
 	xweb.AddAction(&CourseManage{})
 }
 
+func (this *CourseManage) Preview(flag string, id string) {
+	this.T["id"] = id
+	if flag == "mobile" {
+		this.Render("/manage/course/preview/course_detail_mobile.html")
+	} else {
+		this.Render("/manage/course/preview/course_detail_pc.html")
+	}
+}
+func (this *CourseManage) PreviewGetDate() {
+	_id := this.GetString("_id")             //课程id
+	showAbout := this.GetString("aboutFlag") //是否需要相关课程
+	r := func() *FuncResult {
+		if _id == "" {
+			return &FuncResult{false, errors.New("信息id为空"), nil}
+		}
+		//课程基本信息
+		rData := mongodb.FindById("jy_course", _id, `{"i_type":1,"s_address":1,"i_status":1,"s_name":1,"i_price":1,"l_starttime":1,"l_endtime":1,"s_content":1,"s_discountPlan":1,"_id":1}`)
+		if rData == nil || len(*rData) == 0 {
+			return &FuncResult{false, errors.New("未找到此课程的信息"), nil}
+		}
+		resultMap := map[string]interface{}{}
+		(*rData)["l_starttime"] = time.Unix(qutil.Int64All((*rData)["l_starttime"]), 0).Format("2006-01-02 15:04")
+		(*rData)["l_endtime"] = time.Unix(qutil.Int64All((*rData)["l_endtime"]), 0).Format(qutil.Date_Short_Layout)
+		resultMap["detail"] = rData
+		i_type := qutil.IntAll((*rData)["i_type"])
+
+		if showAbout != "" {
+			//相关课程信息
+			s_name := (*rData)["s_name"]
+			queryAbout := bson.M{"i_type": i_type, "s_name": s_name, "i_status": bson.M{"$in": []int{1, -1}}, "_id": bson.M{"$ne": bson.ObjectIdHex(_id)}} //查询已发布or已结束的课程
+			aboutList := mongodb.Find("jy_course", queryAbout, `{"l_publishtime":-1}`,
+				`{"_id":1,"i_type":1,"s_address":1,"i_status":1,"s_name":1,"i_price":1,"l_starttime":1}`, false, 0, 3)
+			for _, v := range *aboutList {
+				v["l_starttime"] = time.Unix(qutil.Int64All(v["l_starttime"]), 0).Format(qutil.Date_Short_Layout)
+				v["l_endtime"] = time.Unix(qutil.Int64All(v["l_endtime"]), 0).Format(qutil.Date_Short_Layout)
+				v["l_publishtime"] = time.Unix(qutil.Int64All(v["l_publishtime"]), 0).Format(qutil.Date_Short_Layout)
+				v["_id"] = qutil.EncodeArticleId2ByCheck(qutil.BsonIdToSId(v["_id"]))
+			}
+			resultMap["aboutList"] = aboutList
+		}
+		return &FuncResult{true, nil, resultMap}
+	}()
+	if r.Err != nil {
+		log.Printf(" CourseContent err:%v\n", r.Err.Error())
+	}
+	this.ServeJson(r.Format())
+}
+
 //
 func (this *CourseManage) GetDetail() error {
 	orderCode := this.GetString("orderCode")

+ 407 - 0
core/src/web/staticres/course/css/course_detail.css

@@ -0,0 +1,407 @@
+.buyBthHandle, #course_detail .c_top .handle .buy_btn, #course_detail .c_middle .tabbar .handle .buy_btn {
+  display: inline-block;
+  width: 180px;
+  height: 46px;
+  line-height: 46px;
+  text-align: center;
+  background-color: #2CB7CA;
+  color: #fff;
+  text-decoration: none;
+  border-radius: 6px;
+  margin-right: 16px;
+  border: 1px solid #2CB7CA;
+  font-size: 16px;
+}
+
+.helpBtnHandle, #course_detail .c_top .handle .help_btn, #course_detail .c_middle .tabbar .handle .help_btn {
+  display: inline-block;
+  width: 132px;
+  height: 46px;
+  line-height: 46px;
+  text-align: center;
+  color: #2CB7CA;
+  background-color: #F5FEFF;
+  border: 1px solid #2CB7CA;
+  text-decoration: none;
+  border-radius: 6px;
+  font-size: 16px;
+}
+
+.helpBtnHandle i, #course_detail .c_top .handle .help_btn i, #course_detail .c_middle .tabbar .handle .help_btn i {
+  display: inline-block;
+  margin-right: 4px;
+  font-size: 22px;
+  color: #2CB7CA;
+  vertical-align: middle;
+}
+
+#course_detail {
+/*  line-height: 1;
+  padding-top: 76px;*/
+  padding-bottom: 60px;
+  background-color: #F6F5FB;
+border-top: 1px solid #e0e0e0;
+    margin-top: 1px;
+	padding-top: 32px;
+}
+
+#course_detail .w {
+  position: relative;
+}
+
+#course_detail .c_wrap {
+  width: 980px;
+}
+
+#course_detail .over_btn {
+  display: inline-block;
+  width: 180px;
+  height: 46px;
+  line-height: 46px;
+  margin-right: 16px;
+  text-align: center;
+  color: #888888;
+  background-color: #ebebeb;
+  border-radius: 6px;
+  font-size: 16px;
+}
+
+#course_detail .advertising {
+  position: absolute;
+  right: 0;
+  top: 0;
+  width: 200px;
+  height: 200px;
+}
+
+#course_detail .advertising img {
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+
+#course_detail .c_top {
+  padding: 36px 40px;
+  border-radius: 8px;
+  background-color: #fff;
+}
+
+#course_detail .c_top .t_name {
+  float: left;
+  color: #252627;
+  font-size: 24px;
+line-height: 32px;
+}
+
+#course_detail .c_top .t_status {
+  float: right;
+  display: inline-block;
+  width: 64px;
+  height: 22px;
+  line-height: 22px;
+  font-size: 14px;
+  color: #fff;
+  text-align: center;
+  border-radius: 0 11px 11px 0;
+  background-color: #2CB7CA;
+}
+
+#course_detail .c_top .price_info {
+  margin-top: 20px;
+  padding: 19px 10px 16px;
+  background: #F7F7F7;
+}
+
+#course_detail .c_top .price_info .p_label {
+  display: inline-block;
+  width: 54px;
+  margin-right: 23px;
+  color: #999999;
+  font-size: 14px;
+}
+
+#course_detail .c_top .price_info .p_price {
+  margin-bottom: 16px;
+}
+
+#course_detail .c_top .price_info .p_price .p_value {
+  color: #FF3A20;
+  font-size: 14px;
+}
+
+#course_detail .c_top .price_info .p_price .p_value strong {
+  font-size: 18px;
+}
+
+#course_detail .c_top .price_info .p_sale .p_item {
+  margin-bottom: 8px;
+}
+
+#course_detail .c_top .price_info .p_sale .sale {
+  display: inline-block;
+  width: 68px;
+  height: 20px;
+  text-align: center;
+  line-height: 20px;
+  border-radius: 4px;
+  color: #FF3A20;
+  border: 1px solid #FF3A20;
+  margin-right: 8px;
+  font-size: 13px;
+}
+
+#course_detail .c_top .price_info .p_sale .sale_info {
+  color: #686868;
+  font-size: 13px;
+}
+
+#course_detail .c_top .price_info .p_sale .arrow {
+  display: inline-block;
+  width: 10px;
+  height: 6px;
+  cursor: pointer;
+}
+
+#course_detail .c_top .price_info .p_sale .arrow_down {
+  background: url(../image/more.png) no-repeat center center;
+  background-size: 100% 100%;
+  vertical-align: middle;
+}
+
+#course_detail .c_top .price_info .p_sale .arrow_up {
+  background: url(../image/moreup.png) no-repeat center center;
+  background-size: 100% 100%;
+  vertical-align: middle;
+}
+
+#course_detail .c_top .price_info .p_sale .more {
+  display: none;
+  font-size: 13px;
+  line-height: 20px;
+  padding: 8px 0 0 86px;
+}
+
+#course_detail .c_top .type_info {
+  margin-top: 12px;
+  padding-left: 10px;
+  font-size: 14px;
+}
+
+#course_detail .c_top .type_info .type {
+  float: left;
+  margin-right: 336px;
+}
+
+#course_detail .c_top .type_info .area {
+  float: left;
+}
+
+#course_detail .c_top .type_info .type_label, #course_detail .c_top .type_info .area_label {
+  color: #999999;
+  margin-right: 20px;
+}
+
+#course_detail .c_top .type_info .type_value, #course_detail .c_top .type_info .area_value {
+  color: #686868;
+}
+
+#course_detail .c_top .time_info {
+  margin-top: 12px;
+  font-size: 14px;
+  padding-left: 10px;
+}
+
+#course_detail .c_top .time_info .time_label {
+  color: #999999;
+  margin-right: 20px;
+}
+
+#course_detail .c_top .time_info .time_value {
+  color: #686868;
+}
+
+#course_detail .c_top .handle {
+  margin-top: 18px;
+}
+
+#course_detail .c_middle {
+  margin-top: 10px;
+  border-radius: 8px;
+  background-color: #fff;
+}
+
+#course_detail .c_middle .tabbar {
+  height: 50px;
+  line-height: 50px;
+  border-bottom: 1px solid #EBEBEB;
+}
+
+#course_detail .c_middle .tabbar .tabbar_item {
+  display: inline-block;
+  width: 64px;
+  height: 100%;
+  margin: 0 20px;
+  cursor: pointer;
+  text-align: center;
+  text-decoration: none;
+  color: #686868;
+  font-size: 16px;
+}
+
+#course_detail .c_middle .tabbar:hover {
+  color: #686868;
+}
+
+#course_detail .c_middle .tabbar .active {
+  color: #2CB7CA;
+  border-bottom: 2px solid #2CB7CA;
+}
+
+#course_detail .c_middle .tabbar .handle {
+  display: none;
+  float: right;
+}
+
+#course_detail .c_middle .box {
+  padding: 10px 30px 0;
+  background-color: #fff;
+}
+
+#course_detail .c_middle .box h2.c-title {
+  height: 48px;
+  line-height: 48px;
+  background-color: #F6F6F6;
+  font-size: 16px;
+  padding-left: 20px;
+  margin: 20px 0;
+  color: #686868;
+  position: relative;
+}
+
+#course_detail .c_middle .box h2.c-title:after {
+  content: '';
+  position: absolute;
+  top: 50%;
+  left: 0;
+  height: 20px;
+  width: 2px;
+  margin-top: -10px;
+  background-color: #2CB7CA;
+}
+
+#course_detail .c_middle .box p {
+  line-height: 24px;
+  text-align: justify;
+  font-size: 14px;
+}
+
+#course_detail .c_middle .tips {
+  padding: 30px 40px 36px;
+  color: #1D1D1D;
+  font-size: 14px;
+}
+
+#course_detail .c_middle .tips em {
+  color: #2CB7CA;
+}
+
+#course_detail .c_bottom {
+  margin-top: 19px;
+  margin-bottom: 60px;
+  background-color: #fff;
+}
+
+#course_detail .c_bottom .recommend_header {
+  padding-left: 30px;
+  height: 50px;
+  line-height: 50px;
+  border-bottom: 1px solid #EBEBEB;
+  font-size: 16px;
+  color: #2CB7CA;
+}
+
+#course_detail .c_bottom .recommend_con {
+  padding: 0 30px;
+}
+
+#course_detail .c_bottom .recommend_con .c_body {
+  display: block;
+  width: 100%;
+  height: 60px;
+  line-height: 60px;
+  border-bottom: 1px solid #EBEBEB;
+  box-sizing: border-box;
+}
+
+#course_detail .c_bottom .recommend_con a:hover {
+  background: none;
+}
+
+#course_detail .c_bottom .recommend_con .list_left {
+  float: left;
+  width: 550px;
+  height: 100%;
+}
+
+#course_detail .c_bottom .recommend_con .list_left .c_status {
+  display: inline-block;
+  width: 54px;
+  height: 22px;
+  line-height: 22px;
+  font-size: 14px;
+  color: #fff;
+  text-align: center;
+  border-radius: 0 11px 11px 0;
+  background-color: #CFCFCF;
+}
+
+#course_detail .c_bottom .recommend_con .list_left .status_past {
+  background-color: #CFCFCF;
+}
+
+#course_detail .c_bottom .recommend_con .list_left .status_go {
+  background-color: #2CB7CA;
+}
+
+#course_detail .c_bottom .recommend_con .list_left .c_title {
+  padding-left: 8px;
+  color: #2F2F2F;
+  font-size: 16px;
+}
+
+#course_detail .c_bottom .recommend_con .list_right {
+  float: right;
+  height: 100%;
+}
+
+#course_detail .c_bottom .recommend_con .list_right .c_area, #course_detail .c_bottom .recommend_con .list_right .c_time {
+  display: inline-block;
+  height: 22px;
+  line-height: 22px;
+  margin-right: 4px;
+  padding: 0 8px;
+  background: #F7F9FA;
+  border: 1px solid #EBEDED;
+  box-sizing: border-box;
+  border-radius: 4px;
+  font-size: 13px;
+  text-align: center;
+  color: #686868;
+}
+
+#course_detail .c_bottom .recommend_con .list_right .c_price {
+  margin-left: 12px;
+  font-size: 13px;
+}
+
+#course_detail .c_bottom .recommend_con .list_right .c_price strong {
+  font-size: 18px;
+}
+
+#course_detail .c_bottom .recommend_con .list_right .c_price_go {
+  color: #FF3A20;
+}
+
+#course_detail .c_bottom .recommend_con .list_right .c_price_past {
+  color: #686868;
+}

+ 81 - 0
core/src/web/staticres/course/css/reset_pc.css

@@ -0,0 +1,81 @@
+html, body, div, span, applet, object, iframe, 
+h1, h2, h3, h4, h5, h6, p, blockquote, pre, 
+a, abbr, acronym, address, big, cite, code, 
+del, dfn, em, font, img, ins, kbd, q, s, samp, 
+small, strike, strong, sub, sup, tt, var, 
+dl, dt, dd, ol, ul, li, 
+fieldset, form, label, legend, 
+table, caption, tbody, tfoot, thead, tr, th, td { 
+margin: 0; 
+padding: 0; 
+border: 0; 
+outline: 0; 
+font-weight: inherit; 
+font-style: inherit; 
+font-size: 100%; 
+font-family: inherit; 
+vertical-align: baseline; 
+-webkit-tap-highlight-color: transparent;
+} 
+:focus { 
+outline: 0; 
+} 
+body { 
+/*line-height: 1; */
+/*color: black; 
+background: white; */
+font-family: "Microsoft YaHei",sans-serif;
+font-size: 16px;
+-webkit-font-smoothing: antialiased;
+} 
+input{
+	font-family: "Microsoft YaHei",sans-serif;
+	-webkit-appearance: none;
+}
+ol, ul { 
+list-style: none; 
+} 
+button{ 
+	outline: none;border: none;
+	}
+table { 
+border-collapse: separate; 
+border-spacing: 0; 
+} 
+caption, th, td { 
+text-align: left; 
+font-weight: normal; 
+} 
+textarea { resize:none;-webkit-appearance: none; }
+img{border:0;}
+a{
+	text-decoration:none;
+	color: #000;
+	font-size: 14px;
+}
+/*selet 下拉三角改变*/
+/*select {border: none;border-radius: 0;appearance:none;-moz-appearance:none;-webkit-appearance:none;background:#ffffff url(../images/public-img/pub-Xsj.png) no-repeat 95% center;}*/
+/*清除ie的默认选择框样式清除,隐藏下拉箭头*/
+/*select::-ms-expand { display: none;}
+html{-webkit-text-size-adjust: none;}	*/	
+	
+/*a:link {color:#606060;} 
+a:visited {color:#606060;} 
+a:hover{color:#8cb91e;	text-decoration: underline;}
+a:active {color:#606060;}*/
+address,caption,cite,code,dfn,em,th,b,i {font-weight: normal;font-style: normal;}
+
+.clearfix:after {visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; }
+.clearfix {*zoom:1; }
+.fl {float:left; }
+.fr {float: right; }
+.w {width: 1200px; margin: 0 auto;}
+.ellipsis {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+/*去除下拉框*/
+/*input[type="search"]::-webkit-search-cancel-button{
+  display: none;
+}*/

+ 125 - 0
core/src/web/staticres/course/css/wx_base.css

@@ -0,0 +1,125 @@
+* {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    -webkit-overflow-scrolling: touch;
+    -webkit-tap-highlight-color:rgba(0,0,0,0);
+    -webkit-tap-highlight-color:transparent;
+}
+body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td, hr, button, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, sumary {
+    margin: 0;
+    padding: 0;
+}
+html,body {
+    /* max-width: 750px; */
+    -webkit-text-size-adjust: 100%;
+    margin: 0 auto;
+    height: 100%;
+    overflow-x: hidden;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    font-size: .24rem;
+    background:rgba(245,244,249,1);;
+    color: #3d3d3d;
+    font-family:  "Microsoft YaHei","Helvetica Neue", "Roboto", "Segoe UI", "PingFang SC", "Hiragino Sans GB", sans-serif;
+}
+
+ul,ol {
+    list-style: none;
+}
+/*清除输入框内阴影*/
+input,textarea,select,button{
+    outline: none;
+    border: 0;
+    -webkit-appearance: none;
+    appearance:none;
+}
+button,span,div{
+    -webkit-tap-highlight-color:rgba(0,0,0,0);
+	/* -webkit-user-modify:read-only; */
+}
+img {
+    border: 0;
+    vertical-align: middle;
+    max-width: 100%;
+    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+a {
+    text-decoration: none;
+    color: #3d3d3d;
+	-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
+	-webkit-user-select: none;
+	-moz-user-focus: none;
+	-moz-user-select: none;
+}
+/*禁用长按页面时的弹出菜单(iOS下有效) ,img和a标签都要加*/
+img,a{
+    -webkit-touch-callout:none;
+}
+em,i{
+	font-style: normal;
+}
+/*兼容ios调取h5页面的头部*/
+.ios-head {
+    display: none;
+    position: fixed;
+    top: 0;
+    padding-top: 15px;
+    background: #18974b;
+    width: 100%;
+    z-index: 100;
+}
+/*base*/
+.clearfix{
+    zoom: 1;
+}
+.clearfix:after{
+    clear: both;
+    height: 0;
+    overflow: hidden;
+    display: block;
+    visibility: hidden;
+    content: "";
+}
+
+.left {
+    float: left;
+}
+
+.right {
+    float: right;
+}
+
+.ellipsis {
+    overflow:hidden;
+    text-overflow:ellipsis;
+    white-space:nowrap;
+    text-align: justify
+}
+/* 超过2行省略号显示 */
+.ellipsis-2 {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 2;
+    -webkit-box-orient: vertical;
+    text-align: justify
+}
+
+/* 超过3行省略号显示 */
+.ellipsis-3 {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 3;
+    -webkit-box-orient: vertical;
+}
+
+/* 超过一行换行显示 */
+.text-wrap {
+    white-space: pre-wrap;
+}
+
+input, textarea {
+    caret-color: #2ABED1;
+}

+ 503 - 0
core/src/web/staticres/course/css/wx_course_detail.css

@@ -0,0 +1,503 @@
+.course-detail {
+  display: flex;
+  flex-direction: column;
+  height: 100%;
+}
+
+.course-detail .sticky {
+  position: -webkit-sticky;
+  position: sticky;
+  left: 0;
+  top: -1px;
+  background-color: #fff;
+  z-index: 9;
+}
+
+.course-detail .absolute {
+  position: absolute;
+  width: 100%;
+  left: 0;
+  top: -1px;
+  background-color: #fff;
+  z-index: 9;
+}
+
+.course-detail .wp {
+  padding: 0 0.32rem;
+  background-color: #fff;
+}
+
+.course-detail .detail-content {
+  flex: 1;
+  overflow-y: scroll;
+  height: 100%;
+}
+
+.course-detail .course-info-detail .header-container {
+  padding: 0.4rem 0.32rem;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+}
+
+.course-detail .course-info-detail .header-container .header-title {
+  margin-bottom: 0.32rem;
+  font-size: 0.4rem;
+  line-height: 0.6rem;
+  color: #171826;
+}
+
+.course-detail .course-info-detail .header-container .header-info {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 0.24rem;
+  color: #5F5E64;
+}
+
+.course-detail .course-info-detail .header-container .header-info .info-l {
+  display: flex;
+}
+
+.course-detail .course-info-detail .header-container .header-info .course-state,
+.course-detail .course-info-detail .header-container .header-info .course-city,
+.course-detail .course-info-detail .header-container .header-info .course-date {
+  display: flex;
+  align-items: center;
+  margin-right: 0.1rem;
+  padding: 0 0.1rem;
+  background-color: #F7F9FA;
+  border: 1px solid rgba(0, 0, 0, 0.05);
+  border-radius: 0.08rem;
+}
+
+.course-detail .course-info-detail .header-container .header-info .in-progress {
+  color: #fff;
+  background-color: #FF9F40;
+  border: 1px solid #FF9F40;
+}
+
+.course-detail .course-info-detail .header-container .header-info.ended .item-title {
+  color: #9B9CA3;
+}
+
+.course-detail .course-info-detail .header-container .header-info.ended .course-state,
+.course-detail .course-info-detail .header-container .header-info.ended .course-city,
+.course-detail .course-info-detail .header-container .header-info.ended .course-date {
+  color: #9B9CA3;
+}
+
+.course-detail .course-info-detail .header-container .header-info.ended .course-price {
+  color: #9B9CA3;
+}
+
+.course-detail .course-info-detail .header-container .header-info.ended .in-progress {
+  color: #9B9CA3;
+  background-color: #F7F9FA;
+  border: 1px solid rgba(0, 0, 0, 0.05);
+}
+
+.course-detail .course-info-detail .course-time-quantum {
+  display: flex;
+  margin-bottom: 0.2rem;
+  align-items: center;
+  height: 0.88rem;
+}
+
+.course-detail .course-info-detail .course-time-quantum .time-label {
+  margin-right: 0.32rem;
+  font-size: 0.28rem;
+  color: #5F5E64;
+}
+
+.course-detail .course-info-detail .course-time-quantum .time-content {
+  font-size: 0.26rem;
+  color: #171826;
+}
+
+.course-detail .course-info-detail .course-discount {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-bottom: 0.2rem;
+  padding-top: 0.32rem;
+  padding-bottom: 0.32rem;
+  font-size: 0.28rem;
+  color: #5F5E64;
+}
+
+.course-detail .course-info-detail .course-discount .icon-arrow {
+  color: #C0C4CC;
+}
+
+.course-detail .course-info-detail .course-discount .discount-content {
+  display: flex;
+  flex-direction: column;
+  min-width: 4.2rem;
+  max-width: 5.2rem;
+}
+
+.course-detail .course-info-detail .course-discount .discount-content .discount-item {
+  display: flex;
+  align-items: center;
+  margin-top: 0.08rem;
+}
+
+.course-detail .course-info-detail .course-discount .discount-content .discount-item:first-of-type {
+  margin-top: 0;
+}
+
+.course-detail .course-info-detail .course-discount .discount-content .item-l {
+  margin-right: 0.12rem;
+  padding: 0.02rem 0.12rem;
+  color: #FB483D;
+  font-size: 0.2rem;
+  white-space: nowrap;
+  border: 1px solid rgba(251, 72, 61, 0.5);
+  border-radius: 0.08rem;
+}
+
+.course-detail .course-info-detail .course-discount .discount-content .item-r {
+  font-size: 0.28rem;
+}
+
+.course-detail .course-info-detail .info-detail-content .tabs-wrap {
+  display: flex;
+  height: 0.96rem;
+  font-size: 0.28rem;
+  color: #5F5E64;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+  box-shadow: 0px 2px 8px rgba(54, 147, 179, 0.051);
+}
+
+.course-detail .course-info-detail .info-detail-content .tabs-wrap .tab {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  position: relative;
+  flex: 1;
+  height: 100%;
+}
+
+.course-detail .course-info-detail .info-detail-content .tabs-wrap .tab.active {
+  color: #2ABED1;
+}
+
+.course-detail .course-info-detail .info-detail-content .tabs-wrap .tab.active:after {
+  content: '';
+  position: absolute;
+  left: 50%;
+  bottom: 0;
+  width: 0.48rem;
+  height: 0.04rem;
+  background-color: #2ABED1;
+  transform: translateX(-50%);
+}
+
+.course-detail .course-info-detail .info-detail-content .box {
+  padding-top: 0.2rem;
+  padding-bottom: 0.32rem;
+  border: 1px solid transparent;
+}
+
+.course-detail .course-info-detail .info-detail-content .box h2.c-title {
+  position: relative;
+  display: flex;
+  align-items: center;
+  margin-top: 0.32rem;
+  margin-bottom: 0.12rem;
+  padding-left: 0.22rem;
+  font-size: 0.36rem;
+  color: #171826;
+}
+
+.course-detail .course-info-detail .info-detail-content .box h2.c-title:before {
+  content: '';
+  position: absolute;
+  left: 0;
+  top: 50%;
+  transform: translateY(-45%);
+  width: 0.06rem;
+  height: 0.32rem;
+  background-color: #2ABED1;
+}
+
+.course-detail .course-info-detail .info-detail-content .box p {
+  line-height: 0.52rem;
+  font-size: 0.3rem;
+}
+
+.course-detail .course-info-detail .copyright-container {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 0.32rem 0.32rem;
+  height: 1rem;
+  color: #9B9CA3;
+}
+
+.course-detail .course-info-detail .copyright-container .line {
+  width: 0.48rem;
+  height: 1px;
+  background-color: #9B9CA3;
+}
+
+.course-detail .course-info-detail .copyright-container .copyright-info {
+  margin: 0 0.1rem;
+  text-align: center;
+}
+
+.course-detail .bottom-container {
+  padding: 0 0.32rem;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  height: 1.12rem;
+  background-color: #fff;
+}
+
+.course-detail .bottom-container .course-price {
+  font-size: 0.4rem;
+  white-space: nowrap;
+  color: #FB483D;
+}
+
+.course-detail .bottom-container .course-price .yen,
+.course-detail .bottom-container .course-price .unit {
+  font-size: 0.32rem;
+}
+
+.course-detail .bottom-container .button-container {
+  display: flex;
+  justify-content: space-between;
+  flex: 1;
+  margin-left: 0.2rem;
+}
+
+.course-detail .bottom-container .button-container .icon-box {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: space-around;
+  height: 0.76rem;
+  color: #9B9CA3;
+}
+
+.course-detail .bottom-container .button-container .icon-box .iconfont {
+  font-size: 0.4rem;
+}
+
+.course-detail .bottom-container .button-container .reserve-now {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex: 1;
+  margin-left: 0.2rem;
+  height: 0.8rem;
+  font-size: 0.32rem;
+  color: #fff;
+  background-color: #2ABED1;
+  border-radius: 0.4rem;
+  white-space: nowrap;
+}
+
+.course-detail .bottom-container.ended {
+  color: #9B9CA3;
+}
+
+.course-detail .bottom-container.ended .course-price {
+  color: #9B9CA3;
+}
+
+.course-detail .bottom-container.ended button[disabled] {
+  color: #C0C4CC;
+  background-color: #EDEFF2;
+}
+
+.weui-mask {
+  position: fixed;
+  z-index: 99;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.6);
+}
+
+.weui-dialog {
+  position: fixed;
+  z-index: 5000;
+  top: 50%;
+  left: 16px;
+  right: 16px;
+  -webkit-transform: translateY(-50%);
+  transform: translateY(-50%);
+  background-color: #fff;
+  text-align: center;
+  border-radius: 3px;
+  overflow: hidden;
+}
+
+.weui-dialog__bd:first-child {
+  color: rgba(0, 0, 0, 0.9);
+}
+
+.weui-dialog__bd {
+  min-height: 40px;
+  font-size: 17px;
+  word-wrap: break-word;
+  word-break: break-all;
+  color: rgba(0, 0, 0, 0.5);
+}
+
+.weui-dialog__ft {
+  position: relative;
+  font-size: 17px;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+}
+
+.weui-dialog__ft:after {
+  content: " ";
+  position: absolute;
+  left: 0;
+  top: 0;
+  right: 0;
+  height: 1px;
+  border-top: 1px solid rgba(0, 0, 0, 0.1);
+  color: rgba(0, 0, 0, 0.1);
+  -webkit-transform-origin: 0 0;
+  transform-origin: 0 0;
+  -webkit-transform: scaleY(0.5);
+  transform: scaleY(0.5);
+}
+
+.weui-dialog__btn {
+  display: block;
+  -webkit-box-flex: 1;
+  -webkit-flex: 1;
+  flex: 1;
+  color: #576b95;
+  font-weight: 700;
+  text-decoration: none;
+  -webkit-tap-highlight-color: transparent;
+  position: relative;
+}
+
+.discount-picker {
+  display: none;
+}
+
+.discount-picker .weui-mask {
+  bottom: 1.12rem;
+}
+
+.discount-picker .weui-picker {
+  box-sizing: border-box;
+  padding: 0 0.32rem;
+  position: fixed;
+  width: 100%;
+  left: 0;
+  right: 0;
+  max-height: 75%;
+  bottom: 1.12rem;
+  z-index: 100;
+  border-top-left-radius: 12px;
+  border-top-right-radius: 12px;
+  overflow: hidden;
+  background-color: #fff;
+  transition: transform .3s;
+}
+
+.discount-picker .weui-dialog__hd {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  height: 1.1rem;
+}
+
+.discount-picker .weui-dialog__hd .weui-dialog__hd__left {
+  font-weight: 700;
+  font-size: 0.36rem;
+}
+
+.discount-picker .weui-dialog__hd .weui-dialog__hd__right {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+  height: 100%;
+  width: 0.4rem;
+}
+
+.discount-picker .weui-dialog__hd .weui-picker__btn {
+  background-color: #fff;
+}
+
+.discount-picker .weui-dialog__hd .weui-picker__btn.icon-close {
+  color: #C0C4CC;
+}
+
+.discount-picker .weui-dialog__bd {
+  margin-bottom: 0.5rem;
+  word-wrap: break-word;
+  overflow-y: auto;
+}
+
+.discount-picker .weui-dialog__bd .discount-item {
+  margin-bottom: 0.32rem;
+}
+
+.discount-picker .weui-dialog__bd .discount-item .item-tip {
+  display: flex;
+  align-items: center;
+  height: 0.64rem;
+}
+
+.discount-picker .weui-dialog__bd .discount-item .item-tip .tip-l {
+  margin-right: 0.12rem;
+  padding: 0.02rem 0.12rem;
+  color: #FB483D;
+  font-size: 0.2rem;
+  white-space: nowrap;
+  border: 1px solid rgba(251, 72, 61, 0.5);
+  border-radius: 0.08rem;
+}
+
+.discount-picker .weui-dialog__bd .discount-item .item-tip .tip-r {
+  font-size: 0.24rem;
+}
+
+.discount-picker .weui-dialog__bd .discount-item .item-content {
+  font-size: 0.28rem;
+  color: #171826;
+  line-height: 0.44rem;
+}
+
+.jy-alert .weui-dialog {
+  margin-left: -2.8rem;
+  width: 5.6rem;
+  height: 2.49rem;
+  left: 50%;
+  border-radius: .08rem;
+}
+
+.jy-alert .weui-dialog__bd {
+  padding: 0;
+  height: 1.49rem;
+  line-height: 1.49rem;
+}
+
+.jy-alert .weui-dialog__ft {
+  height: 1rem;
+  line-height: 1rem;
+}
+
+.jy-alert .weui-dialog__ft .weui-dialog__btn {
+  color: #2CB7CA;
+  font-weight: 400;
+}
+
+.c_state {
+    color: #fff !important;
+    background-color: #C0C4CC !important;
+    border: 1px solid rgba(0, 0, 0, 0.05) !important;
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 3 - 0
core/src/web/staticres/course/iconfont/iconfont.css


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 3 - 0
core/src/web/staticres/course/iconfont/wx_iconfont.css


BIN
core/src/web/staticres/course/image/more.png


+ 417 - 0
core/src/web/staticres/course/js/common.js

@@ -0,0 +1,417 @@
+var priceshow = false;
+var timeshow = false;
+function priceTime(){
+	$(".pricefat").mouseover(function(){
+		if(!$(".pricefat").hasClass("active")){
+			$("#minprice").css({"border-color":"#2cb7ca"});
+			$("#maxprice").css({"border-color":"#2cb7ca"});
+			$(".pricebut").show();
+			$(".pricefat").addClass("customtime-active");
+		}
+	}).mouseout(function(){
+		if(!$(".pricefat").hasClass("active")){
+			if(!priceshow){
+				$("#minprice").css({"border-color":""});
+				$("#maxprice").css({"border-color":""});
+				$(".pricebut").hide();
+				$(".pricefat").removeClass("customtime-active");
+			}
+		}
+	})
+	$("#minprice,#maxprice").blur(function(){
+		if(!priceshow&&!$(".pricefat").hasClass("active")){
+			$("#minprice").css({"border-color":""});
+			$("#maxprice").css({"border-color":""});
+			$(".pricebut").hide();
+			$(".pricefat").removeClass("customtime-active");
+		}
+	})
+	$("#minprice").click(function(){
+		priceshow=true;
+		$(".pricebut").show();
+		$(".pricefat").addClass("customtime-active");
+	})
+	$("#maxprice").click(function(){
+		priceshow=true;
+		$(".pricebut").show();
+		$(".pricefat").addClass("customtime-active");
+	})
+	//
+	$(".timerInput").mouseover(function(){
+		if(!$(".timerInput").hasClass("active")){
+			$("#starttime").css({"border-color":"#2cb7ca"});
+			$("#endtime").css({"border-color":"#2cb7ca"});
+			$("#timebut").show();
+			$(".timerInput").addClass("customtime-active");
+		}
+	}).mouseout(function(){
+		if(!$(".timerInput").hasClass("active")){
+			if(!timeshow){
+				$("#starttime").css({"border-color":""});
+				$("#endtime").css({"border-color":""});
+				$("#timebut").hide();
+				$(".timerInput").removeClass("customtime-active");
+			}
+		}
+	})
+	//
+	$("#starttime").click(function(){
+		timeshow = true;
+		$("#timebut").show();
+		$(".timerInput").addClass("customtime-active");
+	})
+	$("#endtime").click(function(){
+		timeshow = true;
+		$("#timebut").show();
+		$(".timerInput").addClass("customtime-active");
+	})
+}
+//
+var EasyAlert = {
+	timeout: null,
+	waitTime: 1000,
+	show: function(text,css,waitTime){
+		if(this.timeout != null){
+			clearTimeout(this.timeout);
+			this.hide();
+			this.timeout = null;
+		}
+		var thisClass = this;
+		this.timeout = setTimeout(function(){
+			thisClass.hide();
+			thisClass.timeout = null;
+		},waitTime?waitTime:this.waitTime);
+		$("body").append('<div class="easyalert" id="easyAlert">'+text+'</div>');
+		if(typeof(css) != "undefined"&&css!=""){
+			$("#easyAlert").css(css);
+		}
+		$("#easyAlert").css({"left":"50%","margin-top":-($("#easyAlert").outerHeight()/2),"margin-left":-($("#easyAlert").outerWidth()/2)}).show();
+	},
+	hide: function(){
+		$("#easyAlert").remove();
+	}
+}
+var EasyPopup = function(id){
+	this.id = id;
+	var thisClass = this;
+	document.getElementById(id).ontap = function(e){
+		if(e.target.id == id){
+			thisClass.hide();
+		}
+	}
+	this.show = function(){
+		$("#"+this.id).fadeIn();
+		var mainObj = $("#"+id+">div:first");
+		mainObj.css({"margin-top":-(mainObj.outerHeight()/2 + 35)});
+	},
+	this.hide = function(){
+		$("#"+this.id).fadeOut();
+	}
+}
+//计算时差
+function timeDiff(date){
+	var date1 = date;//开始时间
+	var date2 = new Date();//结束时间
+	var date3 = date2.getTime()-date1.getTime();//时间差的毫秒数
+	//计算出相差天数
+	var days = Math.floor(date3/(24*3600*1000));
+	//计算出小时数
+	var leave1 = date3%(24*3600*1000);//计算天数后剩余的毫秒数
+	var hours = Math.floor(leave1/(3600*1000));
+	//计算相差分钟数
+	var leave2 = leave1%(3600*1000);//计算小时数后剩余的毫秒数
+	var minutes = Math.floor(leave2/(60*1000));
+	//计算相差秒数
+	var td = "30秒前";
+	if(days > 0){
+		if (days > 10) {
+			var date1year = date1.getFullYear();
+			var date2year = date2.getFullYear();
+			var date1month = date1.getMonth()+1;
+			var date1day = date1.getDate();
+			if(date1month < 10){
+				date1month ="0"+date1month;
+			}
+			if(date1day < 10){
+				date1day ="0"+date1day;
+			}
+			if (date1year<date2year){
+				td = date1.getFullYear()+"-"+date1month+"-"+date1day;
+			}else{
+				td = date1month+"-"+date1day;
+			}
+		} else {
+			td = days+"天前"
+		}
+	}else if(hours > 0){
+		td = hours+"小时前";
+	}else if(minutes > 0){
+		td = minutes+"分钟前";
+	}
+	return td;
+}
+function redirect(zbadd,link,sid,sds){
+	if(link != null && typeof(link) != "undefined"){
+		link = link.replace(/\n/g,"");
+		if(!/^http/.test(link)){
+			link="http://"+link
+		}
+	}
+	if(sds){
+		window.location.href=zbadd+"/article/content/"+sid+".html?keywords="+encodeURIComponent(sds);
+	}else{
+		window.location.href=zbadd+"/article/content/"+sid+".html";
+	}
+}
+function newredirect(zbadd,link,sid,sds,index){
+	if(link != null && typeof(link) != "undefined"){
+		link = link.replace(/\n/g,"");
+		if(!/^http/.test(link)){
+			link="http://"+link
+		}
+	}
+	var pt = ""
+	if (index==1){
+		pt="projectMatch=项目匹配"
+	}
+	if(sds){
+		pt = "&"+pt
+		window.location.href=zbadd+"/article/content/"+sid+".html?keywords="+encodeURIComponent(sds)+pt;
+	}else{
+		window.location.href=zbadd+"/article/content/"+sid+".html"+pt;
+	}
+}
+function pcredirect(link,sid){
+	window.open("/pcdetail/"+sid+".html");
+}
+function keyWordHighlight(value,oldChars,newChar){
+	if(typeof(oldChars) == "undefined" || oldChars == null || typeof(newChar) == "undefined" || newChar == null || newChar == ""){
+		return value;
+	}
+	var array = [];
+	if(oldChars instanceof Array){
+		array = oldChars.concat();
+	}else{
+		array.push(oldChars);
+	}
+	try{
+		var map = {};
+		for(var i=0;i<array.length;i++){
+			var oldChar = array[i];
+			if(oldChar.replace(/\s+/g,"") == "" || map[oldChar]){
+				continue;
+			}
+			map[oldChar] = true;
+			oldChar = oldChar.replace(/\$/g,"\\$");
+			oldChar = oldChar.replace(/\(/g,"\\(");
+			oldChar = oldChar.replace(/\)/g,"\\)");
+			oldChar = oldChar.replace(/\*/g,"\\*");
+			oldChar = oldChar.replace(/\+/g,"\\+");
+			oldChar = oldChar.replace(/\./g,"\\.");
+			oldChar = oldChar.replace(/\[/g,"\\[");
+			oldChar = oldChar.replace(/\]/g,"\\]");
+			oldChar = oldChar.replace(/\?/g,"\\?");
+			oldChar = oldChar.replace(/\\/g,"\\");
+			oldChar = oldChar.replace(/\//g,"\\/");
+			oldChar = oldChar.replace(/\^/g,"\\^");
+			oldChar = oldChar.replace(/\{/g,"\\{");
+			oldChar = oldChar.replace(/\}/g,"\\}");
+			oldChar = oldChar.replace(/\|/g,"\\|");
+			value = value.replace(new RegExp("("+oldChar+")",'gmi'),newChar);
+		}
+	}catch(e){}
+	return value;
+}
+function getWxVersion(){
+	var wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i);
+	if(!wechatInfo) {
+	  	return null;
+	}
+	return wechatInfo[1];
+}
+/**
+ * 设置光标在短连接输入框中的位置
+ * @param inpObj 输入框
+ * @param pos
+ */
+function setCursorPos(inpObj, pos){
+    if(navigator.userAgent.indexOf("MSIE") > -1){
+        var range = document.selection.createRange();
+        var textRange = inpObj.createTextRange();
+        textRange.moveStart('character',pos);
+        textRange.collapse();
+        textRange.select();
+    }else{
+        inpObj.setSelectionRange(pos,pos);
+    }
+}
+/**
+ * 获取光标在短连接输入框中的位置
+ * @param inpObj 输入框
+ */
+function getCursorPos(inpObj){
+     if(navigator.userAgent.indexOf("MSIE") > -1) { // IE
+        var range = document.selection.createRange();
+        range.text = '';
+        range.setEndPoint('StartToStart',inpObj.createTextRange());
+        return range.text.length;
+    } else {
+        return inpObj.selectionStart;
+    }
+}
+//获取url中参数
+function getUrlParam(name){
+    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
+    var r = window.location.search.substr(1).match(reg);
+    if(r != null)
+		return unescape(r[2]); 
+	return null;
+}
+
+/******* 获取url参数(正则)********/
+function getParam(name) {
+    var search = document.location.search;
+    // alert(search);
+    var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g");
+    var matcher = pattern.exec(search);
+    var items = null;
+    if (null != matcher) {
+        try {
+            items = decodeURIComponent(decodeURIComponent(matcher[1]));
+        } catch (e) {
+            try {
+                items = decodeURIComponent(matcher[1]);
+            } catch (e) {
+                items = matcher[1];
+            }
+        }
+    }
+    return items;
+};
+//获取滚动条宽度
+function getScrollWidth() {
+	var noScroll, scroll, oDiv = document.createElement("DIV");
+    oDiv.style.cssText = "position:absolute; top:-1000px; width:100px; height:100px; overflow:hidden;";
+  	noScroll = document.body.appendChild(oDiv).clientWidth;
+  	oDiv.style.overflowY = "scroll";
+  	scroll = oDiv.clientWidth;
+  	document.body.removeChild(oDiv);
+  	return noScroll-scroll;
+}
+//表头固定
+var TableHeadFixed = function(className,isminus,flag,pageName){
+	if(typeof(className) == "undefined"){
+		className = "tabContainer-2";
+	}
+	if(typeof(isminus) == "undefined"){
+		isminus = true;
+	}
+	if(typeof(flag) == "undefined"){
+		flag = true;
+	}
+	var cHeight = document.body.clientHeight;
+	if(cHeight <= 0){
+		cHeight = 500;
+	}
+	var thisFlag = false;
+	var prevSelectType = null;
+	$(window).scroll(function(event){
+		if(!$("#right-table").hasClass("active") && flag){
+			return;
+		}
+		//超级搜索页面增加处理逻辑
+		if(pageName == "supsearch"){
+			if(prevSelectType != selectType){
+				thisFlag = false;
+			}
+			prevSelectType = selectType;
+			if(selectType == "all"){
+				className = "tabContainer"
+			}else{
+				className = "tabContainer-2";
+			}
+		}
+		var tableHeight = $("."+className).outerHeight();
+		if(tableHeight <= cHeight){
+				$("."+className+" .lucene-table").removeClass("tabfixed tababsolute");
+				$("."+className+" .lucene-table>table:first").css("top",0);
+				thisFlag = false;
+			return;
+		}
+		var offsetTop = $("."+className).offset().top;
+		var scrollTop = $(this).scrollTop();
+		var oTop = offsetTop;
+		var ooTop = offsetTop;
+		if(isminus){
+			oTop+=20;
+			ooTop-=20;
+		}
+		if(scrollTop >= oTop){
+			if(ooTop + tableHeight - scrollTop -20 <= cHeight){
+				if(!thisFlag){
+					$("."+className+" .lucene-table").addClass("tababsolute");
+					$("."+className+" .lucene-table>table:first").css("top",scrollTop);
+				}
+				thisFlag = true;
+			}else{
+				if(thisFlag){
+					$("."+className+" .lucene-table").removeClass("tababsolute");
+					$("."+className+" .lucene-table>table:first").css("top",0);
+				}
+				thisFlag = false;
+			}
+			$("."+className+" .lucene-table").addClass("tabfixed");
+		}else{
+			$("."+className+" .lucene-table").removeClass("tabfixed tababsolute");
+			$("."+className+" .lucene-table>table:first").css("top",0);
+			thisFlag = false;
+		}
+	});
+}
+//页面跳转输入框光标位置
+function moveEnd(obj) {
+	obj.focus();
+	var len = obj.value.length;
+	if (document.selection) {
+		var sel = obj.createTextRange();
+		sel.moveStart('character', len);
+		sel.collapse();
+		sel.select();
+	} else if (typeof obj.selectionStart == 'number'
+			&& typeof obj.selectionEnd == 'number') {
+		obj.selectionStart = obj.selectionEnd = len;
+	}
+}
+function mySysIsIos(){
+	return !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
+}
+$(function(){
+	//自定义tap
+	if("ontouchend" in document){
+		$(document).on("touchstart", function(e) {
+	        var $target = $(e.target);
+	        $target.data("isMoved", 0);
+			$target.data("startTime", Date.now());
+	    });
+	    $(document).on("touchmove", function(e) {
+	        var $target = $(e.target);
+	        $target.data("isMoved", 1);
+	    });
+	    $(document).on("touchend", function(e) {
+	        var $target = $(e.target);
+			var startTime = $target.data("startTime");
+			if(Date.now()-startTime>200){
+				return;
+			}
+	        if($target.data("isMoved") == 1){
+				return;
+			}
+			$target.trigger("tap");
+	    });
+	}else{
+		$(document).on("click", function(e) {
+			var $target = $(e.target);
+			$target.trigger("tap");
+	    });
+	}
+});

+ 216 - 0
core/src/web/staticres/course/js/course_detail.js

@@ -0,0 +1,216 @@
+$(function () {
+    var boxTop = $(".tabbar").offset().top;
+    var scrollTop = 0;
+    //页面滚动
+    $(window).scroll(function () {
+        scrollTop = $(window).scrollTop();
+        if (scrollTop >= boxTop) {
+            $(".tabbar").css({
+                "position": "fixed",
+                "top": 0,
+                "background-color": "#fff",
+                "width": "980px",
+                "height": "72px",
+                "line-height": "72px",
+                "z-index": "999"
+            });
+            $('.tabbar .handle').show();
+        } else {
+            $(".tabbar").css({
+                "position": "static",
+                "width": "980px",
+                "height": "50px",
+                "line-height": "50px",
+            });
+            $('.tabbar .handle').hide();
+        }
+    });
+
+    function bSort(arr) {
+        var len = arr.length;
+        for (var i = 0; i < len - 1; i++) {
+            for (var j = 0; j < len - 1 - i; j++) {
+                // 相邻元素两两对比,元素交换,大的元素交换到后面
+                if (arr[j].oTop > arr[j + 1].oTop) {
+                    var temp = arr[j];
+                    arr[j] = arr[j + 1];
+                    arr[j + 1] = temp;
+                }
+            }
+        }
+        return arr;
+    }
+
+    // 滚动距离
+    initTabChange();
+
+    function initTabChange() {
+        var h2Ids = [];
+        // 获取所有带有id属性的h2标签的位置
+        $('.box h2[id]').each(function (i, dom) {
+            // var y = dom.getBoundingClientRect().top + scrollTop;
+            var y = dom.offsetTop;
+            h2Ids.push({
+                id: dom.id,
+                oTop: y - 48
+            });
+        });
+        if (h2Ids.length > 0) {
+            h2Ids = bSort(h2Ids);
+        }
+        // 监听滚动,控制tab高亮
+        var cannotTriggerScroll = false;
+        $(window).on('scroll', function () {
+            if (cannotTriggerScroll) return;
+            cannotTriggerScroll = true;
+            var current = null;
+            scrollTop = parseInt($(window).scrollTop());
+            h2Ids.some(function (item, i) {
+                if (scrollTop < h2Ids[0].oTop) {
+                    current = h2Ids[0];
+                    return true;
+                }
+
+                if (scrollTop > h2Ids[h2Ids.length - 1].oTop) {
+                    current = h2Ids[h2Ids.length - 1];
+                    return true;
+                }
+
+                if (scrollTop > item.oTop && scrollTop < h2Ids[i + 1].oTop) {
+                    current = item;
+                    return true;
+                }
+            });
+            if (current) {
+                $('.tabbar .tabbar_item[data-id=' + current.id + ']').addClass('active').siblings().removeClass('active');
+            }
+            cannotTriggerScroll = false;
+        });
+
+        // tab点击事件
+        $('.course_detail').on('click', '.tabbar_item', function () {
+            cannotTriggerScroll = true
+            var $this = $(this);
+            var id = $this.attr('data-id');
+            scrollTop = $(window).scrollTop();
+            // // 控制active样式
+            $this.addClass('active').siblings().removeClass('active');
+            // // 计算滚动距离并滚动
+            // // e距离文档顶部的距离 = e相对的与视口的距离 + 滚动距离
+            $(window).stop()
+            var y = $('#' + id)[0].getBoundingClientRect().top + scrollTop;
+            $('html').animate({
+                "scrollTop": y - 55 - 72 + 'px'
+            }, 300, function () {
+                setTimeout(function () {
+                    cannotTriggerScroll = false
+                }, 100)
+            });
+        });
+    }
+    getCourseContent(msgId);
+    // 展开收起
+    $(".arrow").click(function () {
+        if ($(this).hasClass('arrow_down')) {
+            $(this).removeClass('arrow_down').addClass('arrow_up');
+        } else {
+            $(this).removeClass('arrow_up').addClass('arrow_down');
+        }
+        $(this).next('.more').slideToggle(500);
+    })
+})
+
+function getCourseContent(id) {
+    $.ajax({
+        type: "GET",
+        async: false,
+        url: "/manage/course/previewGetDate",
+        data: {"_id": id, "aboutFlag": "true"},
+        datatype: "json",
+        success: function (d) {
+            var r = d.data;
+            var html = "";
+            if (typeof (r) != "undefined" && r["detail"] !== undefined) {
+                $(".t_name").text(r["detail"].s_name);
+                $(".p_value strong").text(parseInt(r["detail"].i_price) / 100);
+                s_discountPlan = r["detail"].s_discountPlan
+                var t = ""
+                var yh = "优&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;惠"
+                try {
+                    if (typeof (s_discountPlan) != "undefined" && s_discountPlan.length > 0) {
+                        for (var m = 0; m < s_discountPlan.length; m++) {
+                            if (m > 0) {
+                                yh = ""
+                            }
+                            try {
+                                t += '<div class="p_item">\n' +
+                                    '                            <span class="p_label">' + yh + '</span>\n' +
+                                    '                            <span class="sale">' + s_discountPlan[m].title + '</span>\n' +
+                                    '                            <span class="sale_info">' + s_discountPlan[m].remarks + '</span>\n' +
+                                    '                            <i class="arrow arrow_down"></i>\n' +
+                                    '                            <div class="more">' + s_discountPlan[m].content + '</div>\n' +
+                                    '                        </div>\n' +
+                                    '                    </div>';
+                            } catch (e) {
+                            }
+                        }
+                        $(".p_sale").html(t)
+                    }
+                } catch (e) {
+                    console.log(e)
+                }
+                if (r["detail"].i_type != 1) {
+                    $(".type_value").text("投标实务课程")
+                } else {
+                    $(".type_value").text("招标管理课程")
+                }
+                $(".area_value").text(r["detail"].s_address);
+                $(".time_value").text(formatTime(r["detail"].l_starttime.split(" ")[0]) + "-" + formatTime(r["detail"].l_endtime));
+                $(".box").html(r["detail"].s_content);
+                //
+                var nowTime = new Date().getTime();
+                // var startTimes = new Date(r["detail"].l_starttime.split(" ")[0] + " 23:59:59").getTime() - 86400000;
+                var startTimes = new Date(r["detail"].l_starttime).getTime();
+                if (nowTime >= startTimes) {
+                    var status = "已结束";
+                    $(".t_status").css("background-color", "#E0E0E0");
+                    $(".buy_btn").css("background-color", "#E0E0E0");
+                    $(".buy_btn").attr("disabled", true)
+                    $(".t_status").text(status);
+                } else {
+                    var status = "报名中";
+                    if (r["detail"].i_status !== 1) {
+                        status = "已结束";
+                        $(".t_status").css("background-color", "#E0E0E0");
+                        $(".buy_btn").css("background-color", "#E0E0E0");
+                        $(".buy_btn").attr("disabled", true)
+                    }
+                    $(".t_status").text(status);
+                }
+                if (typeof (r["aboutList"]) != "undefined" && r["aboutList"].length > 0) {
+                    tj = '<div class="recommend_header">相关课程推荐</div>';
+                    for (var i = 0; i < r["aboutList"].length; i++) {
+                        var t = ""
+                        t = '<div class="recommend_con"><ul><li><a href="/front/course/detail?aboutFlag=true&_id=' + r["aboutList"][i]._id + '" class="clearfix c_body"><div class="ellipsis list_left"><span class="c_status status_go">'
+                        if (r["aboutList"][i].i_status === 1) {
+                            t += "报名中"
+                        } else {
+                            t += "已结束"
+                        }
+                        t += '</span><span class="c_title">' + r["aboutList"][i].s_name + '</span></div><div class="list_right"><span class="c_area">' + r["aboutList"][i].s_address + '</span><span class="c_time">' + r["aboutList"][i].l_starttime + '</span><span class="c_price c_price_go">¥<strong>' + r["aboutList"][i].i_price / 100 + '</strong>元/人</span></div></a></li></ul></div>'
+                        html += t;
+                    }
+                    $(".c_bottom").html(tj + html)
+                }
+
+            }
+
+        }
+    })
+}
+
+//时间格式化
+function formatTime(t) {
+    var formattime = t.split("-", 3);
+    return formattime[0] + "/" + formattime[1] + "/" + formattime[2]
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 3 - 0
core/src/web/staticres/course/js/jquery.js


+ 18 - 0
core/src/web/staticres/course/js/rem.js

@@ -0,0 +1,18 @@
+(function(){
+    function w() {
+        var r = document.documentElement;
+        var a = r.getBoundingClientRect().width;
+        if (a > 750 ){
+            a = 750;
+        } 
+        //750/w = 100/font-size
+        rem = a / 7.5;
+        r.style.fontSize = rem + "px"
+    }
+    var t;
+    w();
+    window.addEventListener("resize", function() {
+        clearTimeout(t);
+        t = setTimeout(w, 300);
+    }, false);
+})();

+ 20 - 1
core/src/web/templates/manage/course/content.html

@@ -208,7 +208,7 @@
 
                     <div class="form-group" style="margin: 10px 0px 60px 0px">
                         <label class="col-sm-2 control-label" for="name"></label>
-                        <div class="col-sm-6" id="submit">
+                        <div class="col-sm-10" id="submit">
                             {{ if  ne .T.doType "edit"}}
                                 <button class="btn btn-success" onclick="submit(this, 'publish')" type="button">立即发布
                                 </button>
@@ -217,6 +217,15 @@
                                     style="margin-left: 60px;color: #4DB443;border-color: #4DB443;background-color: #fff">
                                 保存
                             </button>
+                            {{ if  eq .T.doType "edit"}}
+                                <button class="btn btn-info" type="button" onclick="preview(0)"
+                                        style="margin-left: 30px;">
+                                    pc预览
+                                </button>
+                                <button class="btn btn-info" type="button" onclick="preview(1)">
+                                    微信预览
+                                </button>
+                            {{end}}
                         </div>
                     </div>
 
@@ -356,6 +365,16 @@
         $($Obj).removeAttr("disabled");
     }
 
+    //预览
+    function preview(flag) {
+        if (flag === 0) {
+            window.open("/manage/course/preview/pc/" + id)
+        } else (flag === 1)
+        {
+            window.open("/manage/course/preview/mobile/" + id)
+        }
+    }
+
     var dateFormat = function (timestamp, formats) {
         // formats格式包括
         // 1. Y-m-d

+ 371 - 0
core/src/web/templates/manage/course/preview/course_detail_mobile.html

@@ -0,0 +1,371 @@
+<!DOCTYPE html>
+<html style="width: 414px;height: 736px">
+
+<head>
+    <meta charset="utf-8">
+    <title>招标管理课程</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+    <link rel="stylesheet" type="text/css" href="/course/css/wx_base.css"/>
+    <link rel="stylesheet" type="text/css" href="/course/iconfont/wx_iconfont.css"/>
+    <link rel="stylesheet" type="text/css" href="/course/css/wx_course_detail.css"/>
+    <script src="/course/js/jquery.js"></script>
+    <script src="/course/js/common.js"></script>
+    <script src="/course/js/rem.js"></script>
+</head>
+
+<body>
+<div class="course-detail">
+    <div class="detail-content">
+        <div class="course-info-detail">
+            <div class="header-container wp">
+                <div class="header-title ellipsis-3">
+                </div>
+                <div class="header-info">
+                        <span class="info-l">
+                            <span class="course-state in-progress"></span>
+                            <span class="course-city"></span>
+                            <span class="course-date"></span>
+                        </span>
+                    <span class="info-r"></span>
+                </div>
+            </div>
+            <div class="course-time-quantum wp">
+                <span class="time-label">课程时间</span>
+                <div class="time-content"></div>
+            </div>
+            <div class="course-discount wp">
+                <span class="discount-label">优惠</span>
+                <div class="discount-content">
+
+                </div>
+                <div class="iconfont icon-arrow"></div>
+            </div>
+            <div class="info-detail-content">
+                <!-- <ul class="tabs-wrap sticky"> -->
+                <ul class="tabs-wrap sticky wp">
+                    <li class="tab active" data-id="a1">课程介绍</li>
+                    <li class="tab" data-id="a2">课程大纲</li>
+                    <li class="tab" data-id="a3">购买须知</li>
+                    <li class="tab" data-id="a4">客户服务</li>
+                </ul>
+                <div class="box wp">
+
+                </div>
+            </div>
+            <div class="copyright-container">
+                <span class="line"></span>
+                <span class="copyright-info">课程由中国招投标采购培训网提供</span>
+                <span class="line"></span>
+            </div>
+        </div>
+    </div>
+    <div class="bottom-container">
+            <span class="course-price">
+                <span class="yen">&yen;</span>
+                <span class="count">-</span>
+                <span class="unit">元/人</span>
+            </span>
+        <span class="button-container">
+                <span onclick="location.href='/front/staticPage/course_help_center.html'" class="icon-box">
+                    <span class="iconfont icon-help"></span>
+                    <span class="icon-text"><a href="/front/staticPage/course_help_center.html">帮助</a></span>
+                </span>
+                <button class="reserve-now">立即预订</button>
+            </span>
+    </div>
+</div>
+<!-- 优惠弹框 -->
+<div class="discount-picker">
+    <div class="weui-mask"></div>
+    <div class="weui-picker">
+        <div class="weui-dialog__hd">
+            <div class="weui-dialog__hd__left">优惠</div>
+            <div class="weui-dialog__hd__right">
+                <button class="weui-picker__btn iconfont icon-close"></button>
+            </div>
+        </div>
+        <div class="weui-dialog__bd" id="discount_c">
+
+        </div>
+    </div>
+</div>
+<script>
+    $(function () {
+        reloadData();
+
+        // 数组冒泡排序
+        function bSort(arr) {
+            var len = arr.length;
+            for (var i = 0; i < len - 1; i++) {
+                for (var j = 0; j < len - 1 - i; j++) {
+                    // 相邻元素两两对比,元素交换,大的元素交换到后面
+                    if (arr[j].oTop > arr[j + 1].oTop) {
+                        var temp = arr[j];
+                        arr[j] = arr[j + 1];
+                        arr[j + 1] = temp;
+                    }
+                }
+            }
+            return arr;
+        }
+
+        // 滚动距离
+        var scrollTop = 0;
+        initTabChange();
+
+        function initTabChange() {
+            var h2Ids = [];
+            // 获取所有带有id属性的h2标签的位置
+            $('.box h2[id]').each(function (i, dom) {
+                var y = dom.getBoundingClientRect().top + scrollTop;
+                h2Ids.push({
+                    id: dom.id,
+                    oTop: y - 60
+                });
+            });
+            if (h2Ids.length) h2Ids = bSort(h2Ids)
+
+            // 监听滚动,控制tab高亮
+            var cannotTriggerScroll = false;
+            $('.detail-content').on('scroll', function () {
+                if (cannotTriggerScroll) return;
+                cannotTriggerScroll = true;
+                var current = null;
+                scrollTop = $(this).scrollTop();
+                h2Ids.some(function (item, i) {
+                    if (scrollTop < h2Ids[0].oTop) {
+                        current = h2Ids[0];
+                        return true;
+                    }
+
+                    if (scrollTop > h2Ids[h2Ids.length - 1].oTop) {
+                        current = h2Ids[h2Ids.length - 1];
+                        return true;
+                    }
+
+                    if (scrollTop > item.oTop && scrollTop < h2Ids[i + 1].oTop) {
+                        current = item;
+                        return true;
+                    }
+                });
+
+                if (current) {
+                    $('.tabs-wrap .tab[data-id=' + current.id + ']').addClass('active').siblings().removeClass('active');
+                }
+                cannotTriggerScroll = false;
+            });
+
+            // tab点击事件
+            $('.info-detail-content').on('click', '.tab', function () {
+                cannotTriggerScroll = true
+                $this = $(this);
+                var id = $this.attr('data-id');
+                scrollTop = $('.detail-content').scrollTop();
+                // 控制active样式
+                $this.addClass('active').siblings().removeClass('active');
+
+                // 计算滚动距离并滚动
+                // e距离文档顶部的距离 = e相对的与视口的距离 + 滚动距离
+                $('.detail-content').stop()
+                var y = $('#' + id)[0].getBoundingClientRect().top + scrollTop;
+                $('.detail-content').animate({
+                    scrollTop: y - 55 + 'px'
+                }, 300, function () {
+                    cannotTriggerScroll = false
+                });
+            });
+        }
+
+        // picker的显示隐藏
+        function pickerShow(className, f) {
+            if (f) {
+                $(className).show();
+            } else {
+                $(className).hide();
+            }
+        }
+
+        $('.weui-mask').on('click', function () {
+            pickerShow('.discount-picker', false);
+        });
+
+        // 绑定点击事件
+        // 优惠点击显示隐藏
+        $('.course-discount').on('click', function () {
+            pickerShow('.discount-picker', true);
+        });
+        $('.weui-dialog__hd__right').on('click', function () {
+            pickerShow('.discount-picker', false);
+        });
+
+        // 点击帮助显示隐藏
+        $('.jy-alert .weui-dialog__ft').on('click', function () {
+            pickerShow('.jy-alert', false);
+        });
+        $('.bottom-container .icon-box').on('click', function () {
+            pickerShow('.discount-picker', false);
+            pickerShow('.jy-alert', true);
+        });
+
+        // $('.reserve-now').on('click', function() {
+        //     console.log('reserve-now');
+        //     location.href = '../reserve/reserve-index.html'
+        // });
+
+        //$('.course-price .count').text(formatMoney(453433235))
+        $(".reserve-now").on('click', function () {
+            window.location.href = "/weixin/pay/reseverCourse?id=" + encodeURIComponent({{.T.id}})
+        })
+    })
+
+    // 格式化金钱的函数
+    // s: 金额(number) 必传
+    // n: 保留小数的位数(int:0-100)
+    function formatMoney(s, n) {
+        if (n === undefined) {
+            n = -1
+        } else {
+            n = n > 0 && n <= 20 ? n : 2;
+        }
+        var intS = parseInt(s)
+        var point = '.'
+        var left;
+        var right;
+        s = parseFloat((s + '').replace(/[^\d\.-]/g, ''))
+        // 没传n,默认(如果为整数,则不保留小数。如果为浮点数,则保留两位小数)
+        if (n === -1) {
+            if (s === intS) {
+                n = 0
+                right = ''
+                point = ''
+            } else {
+                n = 2
+                s = s.toFixed(n);
+                right = s.split('.')[1];
+            }
+            s = s + ''
+            left = s.split('.')[0].split("").reverse();
+        } else {
+            s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';
+            left = s.split('.')[0].split('').reverse();
+            right = s.split('.')[1];
+        }
+
+        t = "";
+        for (i = 0; i < left.length; i++) {
+            t += left[i] + ((i + 1) % 3 == 0 && (i + 1) != left.length ? ',' : '');
+        }
+
+        var money = t.split('').reverse().join('') + point + right;
+        return money;
+    }
+
+    function reloadData() {
+        $.ajax({
+            type: "POST",
+            url: "/manage/course/previewGetDate",
+            data: {_id:{{.T.id}}},
+            async: false,
+            dataType: "json",
+            success: function (r) {
+                if (r.success) {
+                    reloadHmtl(r.data)
+                }
+            },
+            error: function () {
+                console.log("数据查询出错!")
+            }
+        });
+    }
+
+    //
+    function reloadHmtl(r) {
+        var rs = r["detail"]
+        //
+        if (rs.i_type === 2) {
+            $("title").text("投标实务课程");
+        }
+        //
+        if (rs["s_name"] != undefined && rs["s_name"] != "") {
+            $(".header-title").text(rs["s_name"])
+        }
+        //
+        var nowTime = new Date().getTime();
+        // var startTimes = new Date(rs.l_starttime.split(" ")[0] + " 23:59:59").getTime() - 86400000;
+        var startTimes = new Date(rs.l_starttime).getTime();
+        if (nowTime >= startTimes) {
+            var status = "已结束";
+            $(".reserve-now").text("已结束").attr('disabled', true);
+            $(".bottom-container").addClass("ended");
+            $(".course-state").addClass("c_state");
+            $(".course-state").text(status);
+        } else {
+            var status = "报名中";
+            if (parseInt(rs["i_status"]) !== 1) {
+                status = "已结束";
+                $(".reserve-now").text("已结束").attr('disabled', true);
+                $(".bottom-container").addClass("ended");
+                $(".course-state").addClass("c_state");
+            }
+            $(".course-state").text(status);
+        }
+        //
+        // if(rs["i_status"]!=undefined&&rs["i_status"]!=""){
+        // 	var status = "已结束"
+        // 	if(parseInt(rs["i_status"])==1){
+        // 		status = "报名中"
+        // 	}else{
+        // 		$(".reserve-now").text("已结束").attr('disabled',true);
+        // 		$(".bottom-container").addClass("ended");
+        // 		$(".course-state").addClass("c_state");
+        // 	}
+        // 	$(".course-state").text(status)
+        // }
+        if (rs["s_address"] != undefined && rs["s_address"] != "") {
+            $(".course-city").text(rs["s_address"])
+        }
+        if (rs["l_starttime"] != undefined && rs["l_starttime"] != "") {
+            var c_date = rs["l_starttime"].split(" ")[0].substring(5).replace("-", "月") + "日"
+            $(".course-date").text(c_date)
+        }
+        if (rs["l_starttime"] != undefined && rs["l_starttime"] != "" && rs["l_endtime"] != undefined && rs["l_endtime"] != "") {
+            var starttime = datefunc(rs["l_starttime"].split(" ")[0])
+            var endtime = datefunc(rs["l_endtime"])
+            $(".time-content").text(starttime + " - " + endtime)
+        }
+        if (rs["s_discountPlan"] != undefined && rs["s_discountPlan"] != "") {
+            var disc = rs["s_discountPlan"]
+            var discHtml = ''
+            var discCHtml = ''
+            for (var i = 0; i < disc.length; i++) {
+                discHtml += '<div class="discount-item">'
+                    + '<span class="item-l s_title">' + disc[i]["title"] + '</span>'
+                    + '<span class="item-r ellipsis s_remarks">' + disc[i]["remarks"] + '</span>'
+                    + '</div>'
+                discCHtml += '<div class="discount-item">'
+                    + '<div class="item-tip">'
+                    + '<span class="tip-l">' + disc[i]["title"] + '</span>'
+                    + '<span class="tip-r">' + disc[i]["remarks"] + '</span>'
+                    + '</div>'
+                    + '<div class="item-content">' + disc[i]["content"].replace(";", "</br>") + '</div>'
+                    + '</div>'
+            }
+            $(".discount-content").html(discHtml);
+            $("#discount_c").html(discCHtml);
+        }
+        if (rs["s_content"] != undefined && rs["s_content"] != "") {
+            $(".box").html(rs["s_content"])
+        }
+        if (rs["i_price"] != undefined && rs["i_price"] != "") {
+            $(".count").html(formatMoney(parseInt(rs["i_price"]) / 100))
+        }
+    }
+
+    function datefunc(d) {
+        return d.replace("-", "年").replace("-", "月") + "日";
+    }
+</script>
+{{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 215 - 0
core/src/web/templates/manage/course/preview/course_detail_pc.html

@@ -0,0 +1,215 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>招投标课程详情</title>
+    <link rel="stylesheet" href="/course/css/reset_pc.css">
+    <link rel="stylesheet" href="/course/iconfont/iconfont.css">
+    <link rel="stylesheet" href="/course/css/course_detail.css">
+	<script src="/course/js/jquery.js"></script>
+    <!--[if lt IE 9]>
+    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.3/html5shiv.js"></script>
+    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
+    <![endif]-->
+</head>
+<style type="text/css">
+    .j-wx-code{
+        width: 335px;
+        height: 355px;
+        background-color: #fff;
+        -webkit-border-radius: 6px;
+        -moz-border-radius: 6px;
+        border-radius: 6px;
+        position: relative;
+
+    }
+    .j-wx-code>.code-close{
+        width: 40px;
+        height: 40px;
+        position: absolute;
+        right: -20px;
+        top: -20px;
+        cursor: pointer;
+        -webkit-transition: all 1s;
+        -o-transition: all 1s;
+        -moz-transition: all 1s;
+        transition: all 1s;
+    }
+    .j-wx-code>.code-close:hover{
+        -webkit-transform: scale(1.2);
+        -moz-transform: scale(1.2);
+        -ms-transform: scale(1.2);
+        -o-transform: scale(1.2);
+        transform: scale(1.2);
+    }
+    .j-wx-code>.code-title{
+        height: 82px;
+        background:url(/images/j-wx-code-title.png) center center no-repeat;
+        -webkit-animation: moveYun 15s infinite linear both;
+        -moz-animation: moveYun 15s infinite linear both;
+        -o-animation: moveYun 15s infinite linear both;
+        animation: moveYun 15s infinite linear both;
+    }
+    .j-wx-code>.code-wxm{
+        text-align: center;
+        margin-bottom: -6px;
+        margin-top: -16px;
+
+    }
+    .j-wx-code>.code-wxm>img{
+        width: 200px;
+        height: 200px;
+        margin-top: -5px;
+    }
+    .j-wx-code>.code-text{
+        font: 16px "microsoft yahei";
+        text-align: center;
+        color: #252627;
+    }
+    .j-wx-code>.code-bottom{
+        width: 470px;
+        height: 211px;
+        position: absolute;
+        bottom: -113px;
+        left: -73px;
+        background: url(/images/j-wx-code-bottom.png) 0 0 no-repeat;
+    }
+    .j-wx-code>.code-bottom>img{
+        position: absolute;
+        left: 280px;
+        top: 88px;
+        -webkit-animation: codeWxMove 10s linear both;
+        -moz-animation: codeWxMove 10s linear both;
+        -o-animation: codeWxMove 10s linear both;
+        animation: codeWxMove 10s linear both;
+        -webkit-animation-fill-mode:forwards;
+        -moz-animation-fill-mode:forwards;
+        -o-animation-fill-mode:forwards;
+        animation-fill-mode:forwards;
+    }
+    .recommend_con ul li{
+        float: none;
+    }
+
+    .course_detail .box h1,
+    .course_detail .box h2,
+    .course_detail .box h3,
+    .course_detail .box h4,
+    .course_detail .box h5,
+    .course_detail .box b,
+    .course_detail .box strong {
+      font-weight: 700;
+    }
+    .course_detail .c_middle .box em,
+    .course_detail .c_middle .box i {
+      font-weight: inherit;
+    }
+</style>
+<body>
+{{include "/common/pchead.html"}}
+<!-- header -->
+<section style="line-height: 1;padding-top: 76px;">
+	<!-- main  start -->
+	<div class="course_detail" id="course_detail">
+	    <div class="w" style="min-height: auto">
+	        <div class="advertising">
+				<!--广告-->
+				<div  onclick="adv_statistics(this)" adv_name="PC搜索列表页-底部" class="adv-pcsearch-bottom" id="A1" style="cursor:default;">
+					<script>
+						{{$s:=(Ad "jy-pccourse-detail-right" -1)}}
+						var ADList={{$s}};
+						if(ADList){
+							var random=Math.floor(Math.random()*ADList.length);
+							var AD=ADList[random];
+							var ADHtml = "";
+							if(AD.s_pic){
+								if(AD.s_link){
+									ADHtml += "<a dataHref='"+AD.s_link+"' target='_blank'>";
+								}
+								ADHtml += "<img src='"+AD.s_pic+"'>";
+								if(AD.s_link){
+									ADHtml += "</a>";
+								}
+							}else {
+								ADHtml += AD.s_script;
+							}
+							$("#A1").html(ADHtml);
+						}
+					</script>
+				</div>
+	        </div>
+	        <div class="c_wrap">
+	            <div class="c_top">
+	                <div class="clearfix title">
+	                    <span class="t_name"></span>
+	                    <span class="t_status"></span>
+	                </div>
+	                <div class="price_info">
+	                    <div class="p_price">
+	                        <span class="p_label">价&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;格</span>
+	                        <span class="p_value">¥<strong></strong> 元/人</span>
+	                    </div>
+	                    <div class="p_sale">
+	
+	                    </div>
+	                </div>
+	                <div class="clearfix type_info">
+	                    <div class="type">
+	                        <span class="type_label">课程类型</span>
+	                        <span class="type_value"></span>
+	                    </div>
+	                    <div class="area">
+	                        <span class="area_label">上课地点</span>
+	                        <span class="area_value"></span>
+	                    </div>
+	                </div>
+	                <div class="time_info">
+	                    <span class="time_label">课程时间</span>
+	                    <span class="time_value"></span>
+	                </div>
+	                <div class="handle">
+	                    <a class="buy_btn">立即购买</a>
+	                    <a href="/front/course/helpPage" class="help_btn"><i class="iconfont icon-bangzhu"></i><span>帮助中心</span></a>
+	                </div>
+	            </div>
+	            <div class="c_middle">
+	                <div class="clearfix tabbar">
+	                    <a href="javascript:;" class="tabbar_item active" data-id="a1">课程介绍</a>
+	                    <a href="javascript:;" class="tabbar_item" data-id="a2">课程大纲</a>
+	                    <a href="javascript:;" class="tabbar_item" data-id="a3">购买须知</a>
+	                    <a href="javascript:;" class="tabbar_item" data-id="a4">客户服务</a>
+	                    <div class="handle">
+	                        <a  class="buy_btn">立即购买</a>
+	                        <a href="/front/course/helpPage" class="help_btn"><i class="iconfont icon-bangzhu"></i><span>帮助中心</span></a>
+	                    </div>
+	                </div>
+	                <div class="box">
+						<h2 id="a1">课程介绍</h2>
+						<h2 id="a2">课程大纲</h2>
+						<h2 id="a3">购买须知</h2>
+						<h2 id="a4">客户服务</h2>
+
+	                </div>
+	                <p class="tips"><em>*</em>课程由中国招投标采购培训网提供。</p>
+	            </div>
+	            <div class="c_bottom">
+	                <div class="recommend_con">
+	                    <ul>
+	                    </ul>
+	                </div>
+	            </div>
+	        </div>
+	    </div>
+	</div>
+	<!-- main end -->
+</section>
+<!-- footer -->
+<script>
+    var msgId = {{.T.id}}
+</script>
+<script src="/course/js/course_detail.js"></script>
+</body>
+</html>

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.