瀏覽代碼

线上课程后台

weixianghui 5 年之前
父節點
當前提交
28c09cffd6
共有 100 個文件被更改,包括 502 次插入14 次删除
  1. 50 14
      core/src/qfw/manage/course.go
  2. 129 0
      core/src/web/staticres/css/base.css
  3. 197 0
      core/src/web/staticres/css/issue.css
  4. 1 0
      core/src/web/staticres/css/layui.css
  5. 3 0
      core/src/web/staticres/img/checked.svg
  6. 二進制
      core/src/web/staticres/img/date.png
  7. 3 0
      core/src/web/staticres/img/select.svg
  8. 82 0
      core/src/web/staticres/js/issue.js
  9. 1 0
      core/src/web/staticres/js/layui.js
  10. 1 0
      core/src/web/staticres/layui/css/layui.css
  11. 1 0
      core/src/web/staticres/layui/css/layui.mobile.css
  12. 2 0
      core/src/web/staticres/layui/css/modules/code.css
  13. 1 0
      core/src/web/staticres/layui/css/modules/laydate/default/laydate.css
  14. 二進制
      core/src/web/staticres/layui/css/modules/layer/default/icon-ext.png
  15. 二進制
      core/src/web/staticres/layui/css/modules/layer/default/icon.png
  16. 1 0
      core/src/web/staticres/layui/css/modules/layer/default/layer.css
  17. 二進制
      core/src/web/staticres/layui/css/modules/layer/default/loading-0.gif
  18. 二進制
      core/src/web/staticres/layui/css/modules/layer/default/loading-1.gif
  19. 二進制
      core/src/web/staticres/layui/css/modules/layer/default/loading-2.gif
  20. 二進制
      core/src/web/staticres/layui/font/iconfont.eot
  21. 25 0
      core/src/web/staticres/layui/font/iconfont.svg
  22. 二進制
      core/src/web/staticres/layui/font/iconfont.ttf
  23. 二進制
      core/src/web/staticres/layui/font/iconfont.woff
  24. 二進制
      core/src/web/staticres/layui/font/iconfont.woff2
  25. 二進制
      core/src/web/staticres/layui/images/face/0.gif
  26. 二進制
      core/src/web/staticres/layui/images/face/1.gif
  27. 二進制
      core/src/web/staticres/layui/images/face/10.gif
  28. 二進制
      core/src/web/staticres/layui/images/face/11.gif
  29. 二進制
      core/src/web/staticres/layui/images/face/12.gif
  30. 二進制
      core/src/web/staticres/layui/images/face/13.gif
  31. 二進制
      core/src/web/staticres/layui/images/face/14.gif
  32. 二進制
      core/src/web/staticres/layui/images/face/15.gif
  33. 二進制
      core/src/web/staticres/layui/images/face/16.gif
  34. 二進制
      core/src/web/staticres/layui/images/face/17.gif
  35. 二進制
      core/src/web/staticres/layui/images/face/18.gif
  36. 二進制
      core/src/web/staticres/layui/images/face/19.gif
  37. 二進制
      core/src/web/staticres/layui/images/face/2.gif
  38. 二進制
      core/src/web/staticres/layui/images/face/20.gif
  39. 二進制
      core/src/web/staticres/layui/images/face/21.gif
  40. 二進制
      core/src/web/staticres/layui/images/face/22.gif
  41. 二進制
      core/src/web/staticres/layui/images/face/23.gif
  42. 二進制
      core/src/web/staticres/layui/images/face/24.gif
  43. 二進制
      core/src/web/staticres/layui/images/face/25.gif
  44. 二進制
      core/src/web/staticres/layui/images/face/26.gif
  45. 二進制
      core/src/web/staticres/layui/images/face/27.gif
  46. 二進制
      core/src/web/staticres/layui/images/face/28.gif
  47. 二進制
      core/src/web/staticres/layui/images/face/29.gif
  48. 二進制
      core/src/web/staticres/layui/images/face/3.gif
  49. 二進制
      core/src/web/staticres/layui/images/face/30.gif
  50. 二進制
      core/src/web/staticres/layui/images/face/31.gif
  51. 二進制
      core/src/web/staticres/layui/images/face/32.gif
  52. 二進制
      core/src/web/staticres/layui/images/face/33.gif
  53. 二進制
      core/src/web/staticres/layui/images/face/34.gif
  54. 二進制
      core/src/web/staticres/layui/images/face/35.gif
  55. 二進制
      core/src/web/staticres/layui/images/face/36.gif
  56. 二進制
      core/src/web/staticres/layui/images/face/37.gif
  57. 二進制
      core/src/web/staticres/layui/images/face/38.gif
  58. 二進制
      core/src/web/staticres/layui/images/face/39.gif
  59. 二進制
      core/src/web/staticres/layui/images/face/4.gif
  60. 二進制
      core/src/web/staticres/layui/images/face/40.gif
  61. 二進制
      core/src/web/staticres/layui/images/face/41.gif
  62. 二進制
      core/src/web/staticres/layui/images/face/42.gif
  63. 二進制
      core/src/web/staticres/layui/images/face/43.gif
  64. 二進制
      core/src/web/staticres/layui/images/face/44.gif
  65. 二進制
      core/src/web/staticres/layui/images/face/45.gif
  66. 二進制
      core/src/web/staticres/layui/images/face/46.gif
  67. 二進制
      core/src/web/staticres/layui/images/face/47.gif
  68. 二進制
      core/src/web/staticres/layui/images/face/48.gif
  69. 二進制
      core/src/web/staticres/layui/images/face/49.gif
  70. 二進制
      core/src/web/staticres/layui/images/face/5.gif
  71. 二進制
      core/src/web/staticres/layui/images/face/50.gif
  72. 二進制
      core/src/web/staticres/layui/images/face/51.gif
  73. 二進制
      core/src/web/staticres/layui/images/face/52.gif
  74. 二進制
      core/src/web/staticres/layui/images/face/53.gif
  75. 二進制
      core/src/web/staticres/layui/images/face/54.gif
  76. 二進制
      core/src/web/staticres/layui/images/face/55.gif
  77. 二進制
      core/src/web/staticres/layui/images/face/56.gif
  78. 二進制
      core/src/web/staticres/layui/images/face/57.gif
  79. 二進制
      core/src/web/staticres/layui/images/face/58.gif
  80. 二進制
      core/src/web/staticres/layui/images/face/59.gif
  81. 二進制
      core/src/web/staticres/layui/images/face/6.gif
  82. 二進制
      core/src/web/staticres/layui/images/face/60.gif
  83. 二進制
      core/src/web/staticres/layui/images/face/61.gif
  84. 二進制
      core/src/web/staticres/layui/images/face/62.gif
  85. 二進制
      core/src/web/staticres/layui/images/face/63.gif
  86. 二進制
      core/src/web/staticres/layui/images/face/64.gif
  87. 二進制
      core/src/web/staticres/layui/images/face/65.gif
  88. 二進制
      core/src/web/staticres/layui/images/face/66.gif
  89. 二進制
      core/src/web/staticres/layui/images/face/67.gif
  90. 二進制
      core/src/web/staticres/layui/images/face/68.gif
  91. 二進制
      core/src/web/staticres/layui/images/face/69.gif
  92. 二進制
      core/src/web/staticres/layui/images/face/7.gif
  93. 二進制
      core/src/web/staticres/layui/images/face/70.gif
  94. 二進制
      core/src/web/staticres/layui/images/face/71.gif
  95. 二進制
      core/src/web/staticres/layui/images/face/8.gif
  96. 二進制
      core/src/web/staticres/layui/images/face/9.gif
  97. 1 0
      core/src/web/staticres/layui/lay/modules/carousel.js
  98. 2 0
      core/src/web/staticres/layui/lay/modules/code.js
  99. 1 0
      core/src/web/staticres/layui/lay/modules/colorpicker.js
  100. 1 0
      core/src/web/staticres/layui/lay/modules/element.js

+ 50 - 14
core/src/qfw/manage/course.go

@@ -35,11 +35,12 @@ type CourseManage struct {
 	getDetail   xweb.Mapper `xweb:"/manage/courseOrder/getDetail"`     //请求课程订单详情
 
 	//线上课程
+	onLineIndex 	xweb.Mapper `xweb:"/manage/course/onLineIndex"`             //线上课程首页
 	createOnLineApi      xweb.Mapper `xweb:"/manage/course/OnLineRequest"`             //线上课程新增、修改
 	onLineClickTradeRate      xweb.Mapper `xweb:"/manage/course/OnLineClickTradeRate"`             //线上课程点击量、购买量
 	onLineList           xweb.Mapper `xweb:"/manage/course/OnLineList"`                  //线上课程列表
 	onLineChangeStatus   xweb.Mapper `xweb:"/manage/course/OnLineChangeStatus"`          //上线or下线
-	onLineDetail xweb.Mapper `xweb:"/manage/course/OnLineDetail"`        //课程详情
+	onLineDetail xweb.Mapper `xweb:"/manage/course/OnLineDetail/(\\w+)/(\\w+)"`        //课程详情
 }
 
 type FuncResult struct {
@@ -264,6 +265,10 @@ func (this *CourseManage) List() {
 	if queryStr != "" {
 		query["s_name"] = bson.M{"$regex": queryStr}
 	}
+	//课程类型不等于3
+	query1 := map[string]int32{}
+	query1["$ne"] = 3
+	query["i_type"] = query1
 	rData := mongodb.Find("jy_course", query, `{"l_publishtime":-1}`, `{"_id":1,"i_type":1,"s_address":1,"i_status":1,"s_name":1,"l_publishtime":1}`, false, (currentPage-1)*perPage, perPage)
 	count := mongodb.Count("jy_course", query)
 	this.ServeJson(map[string]interface{}{
@@ -490,7 +495,7 @@ func (this *CourseManage) CreateOnLineApi() {
 	if price == "" {
 		price = "0"
 	}
-	price2, err1 := strconv.ParseFloat(price, 64)
+	price2 := fmt.Sprintf("%.2f", qutil.Float64All(price))
 	videoUrl := this.GetString("videoUrl")//课程视频
 	fileUrl := this.GetString("fileUrl")//课件
 	s_publishtime := this.GetString("publishtime")//发布时间/上线时间
@@ -528,12 +533,9 @@ func (this *CourseManage) CreateOnLineApi() {
 		if err != nil {
 			return &FuncResult{false, errors.New("课程内容解析异常"), nil}
 		}
-		if err1 != nil {
+		/*if err1 != nil {
 			return &FuncResult{false, errors.New("课程金额异常"), nil}
-		}
-		//if !(price2 > 0 && price != "") {
-		//	return &FuncResult{false, errors.New("课程金额异常"), nil}
-		//}
+		}*/
 		//数据校验
 		mData := map[string]interface{}{
 			"s_name":         name,
@@ -708,7 +710,7 @@ func (this *CourseManage) OnLineChangeStatus() {
 			if time.Unix(qutil.Int64All((*rData)["l_endtime"]), 0).Before(time.Now()) {
 				return &FuncResult{false, errors.New("课程截止时间已到,禁止上线"), nil}
 			}
-			if (*rData)["i_status"] == 0 {
+			if (*rData)["i_status"] == 0 || (*rData)["i_status"] == -1{
 				ok := mongodb.Update("jy_course", &map[string]interface{}{
 					"_id": qutil.StringTOBsonId(_id),
 				}, &map[string]interface{}{
@@ -728,8 +730,40 @@ func (this *CourseManage) OnLineChangeStatus() {
 	this.ServeJson(r.Format())
 }
 
-func (this *CourseManage) OnLineDetail() {
-	_id := this.GetString("_id")             //课程id
+func (this *CourseManage) OnLineDetail(flag, id string) error{
+	if flag == "edit" {
+		//获取文章详情
+		if id == "" {
+			return errors.New("请求参数有误")
+		}
+		rData := mongodb.FindById("jy_course", id, `{"_id":1,"i_status":1,"s_content":1,"s_name":1,"s_picUrl":1,"i_price":1,"l_publishtime":1,"l_endtime":1,"s_associatedCourses":1,"i_clickRate":1,"s_videoUrl":1,"s_fileUrl":1,"s_courseDate":1,"i_tradeRate":1}`)
+		this.T["picUrl"] = (*rData)["s_picUrl"]
+		this.T["name"] = (*rData)["s_name"]
+		this.T["videoUrl"] = (*rData)["s_videoUrl"]
+		this.T["fileUrl"] = (*rData)["s_fileUrl"]
+		this.T["price"] = (*rData)["i_price"]
+		this.T["endTime"] = time.Unix(qutil.Int64All((*rData)["l_endtime"]), 0).Format(qutil.Date_Full_Layout)
+		this.T["courseDate"] = (*rData)["s_courseDate"]
+		this.T["content"] = (*rData)["s_content"]
+		this.T["status"] = (*rData)["i_status"]
+		ids := (*rData)["s_associatedCourses"]
+		arr := strings.Split(ids.(string), ",")
+		var idSlice []bson.ObjectId
+		for _, as := range arr{
+			idSlice = append(idSlice, bson.ObjectIdHex(as))
+		}
+		now := time.Now().Unix()
+		queryAbout := bson.M{"i_type": 3, "i_status": 1, "_id": bson.M{"$in":idSlice}, "l_publishtime": bson.M{"$lt":now}, "l_endtime": bson.M{"$gt":now}}
+		aboutList := mongodb.Find("jy_course", queryAbout, `{"l_publishtime":-1}`,
+			`{"_id":1,"s_name":1}`, false, 0, 0)
+		this.T["associatedCourses"] = aboutList
+		this.T["publishtime"] = time.Unix(qutil.Int64All((*rData)["l_publishtime"]), 0).Format(qutil.Date_Full_Layout)
+		this.T["id"] = id
+	}
+	this.T["doType"] = flag
+	this.Render("/manage/course/onLineContent.html")
+	return nil
+	/*_id := this.GetString("_id")             //课程id
 	r := func() *FuncResult {
 		if _id == "" {
 			return &FuncResult{false, errors.New("信息id为空"), nil}
@@ -756,9 +790,6 @@ func (this *CourseManage) OnLineDetail() {
 			queryAbout := bson.M{"i_type": 3, "i_status": 1, "_id": bson.M{"$in":idSlice}, "l_publishtime": bson.M{"$lt":now}, "l_endtime": bson.M{"$gt":now}}
 			aboutList := mongodb.Find("jy_course", queryAbout, `{"l_publishtime":-1}`,
 				`{"_id":1,"s_name":1}`, false, 0, 0)
-			/*for _, v := range *aboutList {
-				v["_id"] = qutil.EncodeArticleId2ByCheck(qutil.BsonIdToSId(v["_id"]))
-			}*/
 			resultMap["aboutList"] = aboutList
 		}
 		return &FuncResult{true, nil, resultMap}
@@ -766,5 +797,10 @@ func (this *CourseManage) OnLineDetail() {
 	if r.Err != nil {
 		log.Printf(" CourseContent err:%v\n", r.Err.Error())
 	}
-	this.ServeJson(r.Format())
+	this.ServeJson(r.Format())*/
+}
+
+//线上课程首页
+func (this *CourseManage) OnLineIndex() error {
+	return this.Render("/manage/course/onLineIndex.html")
 }

+ 129 - 0
core/src/web/staticres/css/base.css

@@ -0,0 +1,129 @@
+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: 14px; 
+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: 14px;
+-webkit-font-smoothing: antialiased;
+color: #4E5051;
+} 
+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;
+}*/
+
+/* 版心宽度 */
+.wrapper {
+  margin: 0 auto;
+  width: 1200px;
+}
+
+/* 按钮样式 */
+button {
+  cursor: pointer;
+}
+.btn {
+  width: 48px;
+  height: 22px;
+  border: 1px solid #999;
+  border-radius: 4px;
+  font-size: 12px;
+  color: #4E5051;
+  background-color: #fff;
+}
+.btn.change {
+  color: #EAB62F;
+  border-color: #EAB62F;
+}
+.btn.out {
+  color: #F5585C;
+  border-color: #F5585C;
+}
+.btn.clone {
+  color: #4DB443;
+  border-color: #4DB443;
+}
+/* input样式 */
+input[type='text'] {
+  box-sizing: border-box;
+  border-style: none;
+  border: 1px solid #ccc;
+  height: 36px;
+  padding: 0 16px;
+  background-color: #fff;
+}
+input::placeholder {
+  color: #AEAEAE;
+}
+
+
+

+ 197 - 0
core/src/web/staticres/css/issue.css

@@ -0,0 +1,197 @@
+.issue {
+  flex: 1;
+  background-color: #F9F9F9;
+  padding: 0 116px 0 66px;
+}
+.issue .title {
+  padding: 10px 44px;
+  border-bottom: 1px solid #9FD6DD;
+}
+.issue .items {
+  padding: 16px 44px 0 44px;
+  display: flex;
+}
+.issue .items .items-left {
+  width: 70px;
+  line-height: 38px;
+}
+.issue .items .items-right {
+  margin-left: 16px;
+}
+.issue .items .items-right input {
+  width: 900px;
+  background-color: #fff;
+}
+.issue .items .items-right input.price {
+  width: 200px;
+}
+.issue .items .items-right input.time {
+  width: 330px;
+  background: url(../img/date.png) no-repeat 300px center;
+  background-color: #fff;
+  cursor: pointer;
+}
+.issue .items .items-right button {
+  box-sizing: border-box;
+  width: 110px;
+  height: 38px;
+  background: #FFFFFF;
+  border: 1px solid #CCCCCC;
+  border-radius: 4px;
+}
+.issue .items .items-right button.now-issue {
+  border: none;
+  color: #fff;
+  background-color: #4DB443;
+}
+.issue .items .items-right button.save {
+  margin-left: 12px;
+  border-color: #4DB443;
+  color: #4DB443;
+}
+.issue .items .items-right .courser {
+  display: flex;
+  flex-direction: column;
+}
+.issue .items .items-right .courser li {
+  margin-top: 12px;
+  line-height: 24px;
+}
+.issue .issue-courser,
+.issue .relevance {
+  display: none;
+}
+.issue .mork {
+  position: fixed;
+  top: 120px;
+  bottom: 0;
+  left: 247px;
+  right: 0;
+}
+.issue .mork .hint {
+  position: absolute;
+  left: 50%;
+  top: 50%;
+  transform: translate(-50%, -50%);
+  padding: 24px;
+  box-sizing: border-box;
+  width: 360px;
+  background: #FFFFFF;
+  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.2);
+  border-radius: 8px;
+}
+.issue .mork .hint h2 {
+  text-align: center;
+  font-size: 18px;
+  line-height: 24px;
+}
+.issue .mork .hint p {
+  margin-top: 16px;
+  text-align: center;
+  line-height: 24px;
+}
+.issue .mork .hint span {
+  margin-top: 4px;
+  font-size: 12px;
+  line-height: 20px;
+  color: #F7585C;
+}
+.issue .mork .hint .btns {
+  margin-top: 24px;
+  display: flex;
+  justify-content: space-between;
+}
+.issue .mork .hint .btns button {
+  width: 110px;
+  height: 38px;
+  border-radius: 4px;
+  color: #fff;
+}
+.issue .mork .hint .btns button.cancel {
+  background-color: #C2C2C2;
+}
+.issue .mork .hint .btns button.now-out {
+  background-color: #F5585C;
+}
+.issue .mork .hint .btns button.ensure {
+  background-color: #4DB443;
+}
+.issue .mork .choose-course {
+  position: absolute;
+  left: 50%;
+  top: 50%;
+  transform: translate(-50%, -50%);
+  box-sizing: border-box;
+  width: 800px;
+  max-height: 600px;
+  padding: 24px 30px;
+  background: #FFFFFF;
+  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.2);
+  border-radius: 8px;
+}
+.issue .mork .choose-course h3 {
+  line-height: 24px;
+  font-size: 18px;
+  text-align: center;
+}
+.issue .mork .choose-course ul {
+  display: flex;
+  flex-direction: column;
+  margin-top: 24px;
+  max-height: 440px;
+  overflow-y: auto;
+  /*滚动条样式*/
+}
+.issue .mork .choose-course ul::-webkit-scrollbar {
+  width: 4px;
+}
+.issue .mork .choose-course ul::-webkit-scrollbar-thumb {
+  border-radius: 10px;
+  box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+  background: #ECECEC;
+}
+.issue .mork .choose-course ul li {
+  height: 40px;
+  display: flex;
+  align-items: center;
+}
+.issue .mork .choose-course ul li input[type='checkbox'] {
+  box-sizing: border-box;
+  width: 16px;
+  height: 16px;
+  border: 1px solid #CCCCCC;
+  border-radius: 50%;
+  cursor: pointer;
+}
+.issue .mork .choose-course ul li input[type='checkbox']:checked {
+  border: none;
+  background: url(../img/checked.svg) no-repeat center center;
+}
+.issue .mork .choose-course ul li label {
+  flex: 1;
+  margin-left: 10px;
+  padding-right: 36px;
+  line-height: 40px;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  cursor: pointer;
+}
+.issue .mork .choose-course .btns {
+  display: flex;
+  justify-content: center;
+  margin-top: 26px;
+}
+.issue .mork .choose-course .btns button {
+  margin: 0 45px;
+  width: 110px;
+  height: 38px;
+  border-radius: 4px;
+  color: #fff;
+}
+.issue .mork .choose-course .btns button.choose-cencal {
+  background-color: #C2C2C2;
+}
+.issue .mork .choose-course .btns button.choose-ensure {
+  background-color: #4DB443;
+}

文件差異過大導致無法顯示
+ 1 - 0
core/src/web/staticres/css/layui.css


+ 3 - 0
core/src/web/staticres/img/checked.svg

@@ -0,0 +1,3 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M10.0002 18C8.14936 18 6.35568 17.3584 4.92492 16.1843C3.49416 15.0102 2.51493 13.3761 2.1538 11.5609C1.79266 9.74561 2.07202 7.86135 2.94446 6.22903C3.81689 4.59671 5.2283 3.31734 6.93824 2.60901C8.64817 1.90067 10.5509 1.80722 12.3221 2.34445C14.0933 2.88167 15.6233 4.01631 16.6516 5.5552C17.68 7.0941 18.1429 8.94196 17.9615 10.7839C17.7801 12.6258 16.9657 14.348 15.657 15.6568C14.9158 16.4019 14.0342 16.9926 13.0632 17.3949C12.0923 17.7971 11.0512 18.0028 10.0002 18ZM6.14562 8.95275C6.00195 8.95292 5.86163 8.99556 5.74221 9.07544C5.6228 9.15532 5.52964 9.26889 5.47464 9.40161C5.41963 9.53434 5.40518 9.68025 5.43309 9.82118C5.46099 9.96211 5.52999 10.0918 5.63142 10.1935L8.71735 13.2793C8.85374 13.4156 9.03871 13.4922 9.23156 13.4922C9.4244 13.4922 9.6092 13.4156 9.74558 13.2793L14.374 8.65161C14.4415 8.58404 14.4952 8.50375 14.5318 8.41546C14.5684 8.32718 14.5872 8.23261 14.5872 8.13705C14.5872 8.04149 14.5684 7.94693 14.5318 7.85865C14.4952 7.77036 14.4415 7.69007 14.374 7.6225C14.3064 7.55492 14.2263 7.50139 14.138 7.46483C14.0497 7.42826 13.955 7.40943 13.8594 7.40943C13.7638 7.40943 13.6693 7.42826 13.581 7.46483C13.4927 7.50139 13.4126 7.55492 13.345 7.6225L9.23156 11.736L6.65983 9.16511C6.59244 9.09744 6.5123 9.04371 6.42403 9.00726C6.33577 8.97081 6.24112 8.95236 6.14562 8.95275Z" fill="#4DB443"/>
+</svg>

二進制
core/src/web/staticres/img/date.png


+ 3 - 0
core/src/web/staticres/img/select.svg

@@ -0,0 +1,3 @@
+<svg width="6" height="6" viewBox="0 0 6 6" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M6 0H0L3 6L6 0Z" fill="#333333"/>
+</svg>

+ 82 - 0
core/src/web/staticres/js/issue.js

@@ -0,0 +1,82 @@
+$(function() {
+  layui.use('laydate', function () {
+    var laydate = layui.laydate;
+    //执行一个laydate实例
+    laydate.render({
+      elem: '#publishtime', //指定元素
+       trigger: 'click',
+      type: 'datetime'
+    });
+    //执行一个laydate实例
+    laydate.render({
+      elem: '#endTime', //指定元素
+      trigger: 'click',
+      type: 'datetime'
+    });
+  });
+  // layui.use('laydate', function () {
+  //   var laydate = layui.laydate;
+  //   //执行一个laydate实例
+  //   laydate.render({
+  //     elem: '#endTime', //指定元素
+  //     type: 'datetime'
+  //   });
+  // });
+  // 立即发布
+  $('.now-issue').click(function() {
+    $('.issue-courser').show()
+  })
+  // 立即发布-取消
+  $('.cancel').click(function() {
+    $('.issue-courser').hide()
+  })
+  // 立即发布-发布
+  $('.ensure').click(function() {
+    $('.issue-courser').hide()
+  })
+  glkc()
+  // 选择关联课程
+  $('.choose-btn').click(function (){
+    glkc()
+    $('.relevance').show()
+  })
+  // 选择关联课程-取消
+  $('.choose-cencal').click(function (){
+    $('.relevance').hide();
+
+  })
+  // 选择关联课程-确认
+  $('.choose-ensure').click(function (){
+    $('.relevance').hide();
+    $(".courser").empty();
+    var li = ""
+    $('.relevance input:checked').parent().find('label').each(function(){
+      li = li + '<li id="'+$(this).attr("for")+'">'+ $(this).text() +'</li>'
+    })
+    $('.courser').html(li);
+    if($('.relevance input:checked').length) {
+      $('.choose-btn').text('重新选择')
+    }
+  })
+})
+function glkc() {
+  //关联课程
+  var lis = $(".courser li")
+  var arr = new Array()
+  lis.each(function () {
+    arr.push($(this).attr('id'))
+  })
+  $.post("/manage/course/OnLineList", {flag: 'gl'}, function (r) {
+    var li = ''
+    if (r.data.length != 0) {
+      for (var i = 0; i < r.data.length; i++){
+        if (arr.indexOf(r.data[i]._id) != -1){
+          li = li + '<li><input type="checkbox" checked name="courser" id="'+ r.data[i]._id +'"><label for="'+ r.data[i]._id +'">'+ r.data[i].s_name +'</label></li>'
+        }else {
+          li = li + '<li><input type="checkbox" name="courser" id="'+ r.data[i]._id +'"><label for="'+ r.data[i]._id +'">'+ r.data[i].s_name +'</label></li>'
+        }
+      }
+    }
+    $('#glkc').html(li)
+  })
+}

文件差異過大導致無法顯示
+ 1 - 0
core/src/web/staticres/js/layui.js


文件差異過大導致無法顯示
+ 1 - 0
core/src/web/staticres/layui/css/layui.css


文件差異過大導致無法顯示
+ 1 - 0
core/src/web/staticres/layui/css/layui.mobile.css


+ 2 - 0
core/src/web/staticres/layui/css/modules/code.css

@@ -0,0 +1,2 @@
+/** layui-v2.5.6 MIT License By https://www.layui.com */
+ html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}

文件差異過大導致無法顯示
+ 1 - 0
core/src/web/staticres/layui/css/modules/laydate/default/laydate.css


二進制
core/src/web/staticres/layui/css/modules/layer/default/icon-ext.png


二進制
core/src/web/staticres/layui/css/modules/layer/default/icon.png


文件差異過大導致無法顯示
+ 1 - 0
core/src/web/staticres/layui/css/modules/layer/default/layer.css


二進制
core/src/web/staticres/layui/css/modules/layer/default/loading-0.gif


二進制
core/src/web/staticres/layui/css/modules/layer/default/loading-1.gif


二進制
core/src/web/staticres/layui/css/modules/layer/default/loading-2.gif


二進制
core/src/web/staticres/layui/font/iconfont.eot


文件差異過大導致無法顯示
+ 25 - 0
core/src/web/staticres/layui/font/iconfont.svg


二進制
core/src/web/staticres/layui/font/iconfont.ttf


二進制
core/src/web/staticres/layui/font/iconfont.woff


二進制
core/src/web/staticres/layui/font/iconfont.woff2


二進制
core/src/web/staticres/layui/images/face/0.gif


二進制
core/src/web/staticres/layui/images/face/1.gif


二進制
core/src/web/staticres/layui/images/face/10.gif


二進制
core/src/web/staticres/layui/images/face/11.gif


二進制
core/src/web/staticres/layui/images/face/12.gif


二進制
core/src/web/staticres/layui/images/face/13.gif


二進制
core/src/web/staticres/layui/images/face/14.gif


二進制
core/src/web/staticres/layui/images/face/15.gif


二進制
core/src/web/staticres/layui/images/face/16.gif


二進制
core/src/web/staticres/layui/images/face/17.gif


二進制
core/src/web/staticres/layui/images/face/18.gif


二進制
core/src/web/staticres/layui/images/face/19.gif


二進制
core/src/web/staticres/layui/images/face/2.gif


二進制
core/src/web/staticres/layui/images/face/20.gif


二進制
core/src/web/staticres/layui/images/face/21.gif


二進制
core/src/web/staticres/layui/images/face/22.gif


二進制
core/src/web/staticres/layui/images/face/23.gif


二進制
core/src/web/staticres/layui/images/face/24.gif


二進制
core/src/web/staticres/layui/images/face/25.gif


二進制
core/src/web/staticres/layui/images/face/26.gif


二進制
core/src/web/staticres/layui/images/face/27.gif


二進制
core/src/web/staticres/layui/images/face/28.gif


二進制
core/src/web/staticres/layui/images/face/29.gif


二進制
core/src/web/staticres/layui/images/face/3.gif


二進制
core/src/web/staticres/layui/images/face/30.gif


二進制
core/src/web/staticres/layui/images/face/31.gif


二進制
core/src/web/staticres/layui/images/face/32.gif


二進制
core/src/web/staticres/layui/images/face/33.gif


二進制
core/src/web/staticres/layui/images/face/34.gif


二進制
core/src/web/staticres/layui/images/face/35.gif


二進制
core/src/web/staticres/layui/images/face/36.gif


二進制
core/src/web/staticres/layui/images/face/37.gif


二進制
core/src/web/staticres/layui/images/face/38.gif


二進制
core/src/web/staticres/layui/images/face/39.gif


二進制
core/src/web/staticres/layui/images/face/4.gif


二進制
core/src/web/staticres/layui/images/face/40.gif


二進制
core/src/web/staticres/layui/images/face/41.gif


二進制
core/src/web/staticres/layui/images/face/42.gif


二進制
core/src/web/staticres/layui/images/face/43.gif


二進制
core/src/web/staticres/layui/images/face/44.gif


二進制
core/src/web/staticres/layui/images/face/45.gif


二進制
core/src/web/staticres/layui/images/face/46.gif


二進制
core/src/web/staticres/layui/images/face/47.gif


二進制
core/src/web/staticres/layui/images/face/48.gif


二進制
core/src/web/staticres/layui/images/face/49.gif


二進制
core/src/web/staticres/layui/images/face/5.gif


二進制
core/src/web/staticres/layui/images/face/50.gif


二進制
core/src/web/staticres/layui/images/face/51.gif


二進制
core/src/web/staticres/layui/images/face/52.gif


二進制
core/src/web/staticres/layui/images/face/53.gif


二進制
core/src/web/staticres/layui/images/face/54.gif


二進制
core/src/web/staticres/layui/images/face/55.gif


二進制
core/src/web/staticres/layui/images/face/56.gif


二進制
core/src/web/staticres/layui/images/face/57.gif


二進制
core/src/web/staticres/layui/images/face/58.gif


二進制
core/src/web/staticres/layui/images/face/59.gif


二進制
core/src/web/staticres/layui/images/face/6.gif


二進制
core/src/web/staticres/layui/images/face/60.gif


二進制
core/src/web/staticres/layui/images/face/61.gif


二進制
core/src/web/staticres/layui/images/face/62.gif


二進制
core/src/web/staticres/layui/images/face/63.gif


二進制
core/src/web/staticres/layui/images/face/64.gif


二進制
core/src/web/staticres/layui/images/face/65.gif


二進制
core/src/web/staticres/layui/images/face/66.gif


二進制
core/src/web/staticres/layui/images/face/67.gif


二進制
core/src/web/staticres/layui/images/face/68.gif


二進制
core/src/web/staticres/layui/images/face/69.gif


二進制
core/src/web/staticres/layui/images/face/7.gif


二進制
core/src/web/staticres/layui/images/face/70.gif


二進制
core/src/web/staticres/layui/images/face/71.gif


二進制
core/src/web/staticres/layui/images/face/8.gif


二進制
core/src/web/staticres/layui/images/face/9.gif


文件差異過大導致無法顯示
+ 1 - 0
core/src/web/staticres/layui/lay/modules/carousel.js


+ 2 - 0
core/src/web/staticres/layui/lay/modules/code.js

@@ -0,0 +1,2 @@
+/** layui-v2.5.6 MIT License By https://www.layui.com */
+ ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;")),c.html('<ol class="layui-code-ol"><li>'+o.replace(/[\r\t\n]+/g,"</li><li>")+"</li></ol>"),c.find(">.layui-code-h3")[0]||c.prepend('<h3 class="layui-code-h3">'+(c.attr("lay-title")||e.title||"code")+(e.about?'<a href="'+l+'" target="_blank">layui.code</a>':"")+"</h3>");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss");

文件差異過大導致無法顯示
+ 1 - 0
core/src/web/staticres/layui/lay/modules/colorpicker.js


文件差異過大導致無法顯示
+ 1 - 0
core/src/web/staticres/layui/lay/modules/element.js


部分文件因文件數量過多而無法顯示