Pārlūkot izejas kodu

Merge branch 'dev2.9.1' of http://192.168.3.207:10080/qmx/qfw into dev2.9.1

lianbingjie 5 gadi atpakaļ
vecāks
revīzija
c7e7e98257
100 mainītis faili ar 829 papildinājumiem un 6 dzēšanām
  1. 0 4
      common/src/qfw/util/rpc/follow.go
  2. 43 0
      common/src/qfw/util/rpc/order.go
  3. 336 2
      core/src/qfw/manage/course.go
  4. 129 0
      core/src/web/staticres/css/base.css
  5. 197 0
      core/src/web/staticres/css/issue.css
  6. 1 0
      core/src/web/staticres/css/layui.css
  7. 3 0
      core/src/web/staticres/img/checked.svg
  8. BIN
      core/src/web/staticres/img/date.png
  9. 3 0
      core/src/web/staticres/img/select.svg
  10. 82 0
      core/src/web/staticres/js/issue.js
  11. 1 0
      core/src/web/staticres/js/layui.js
  12. 1 0
      core/src/web/staticres/layui/css/layui.css
  13. 1 0
      core/src/web/staticres/layui/css/layui.mobile.css
  14. 2 0
      core/src/web/staticres/layui/css/modules/code.css
  15. 1 0
      core/src/web/staticres/layui/css/modules/laydate/default/laydate.css
  16. BIN
      core/src/web/staticres/layui/css/modules/layer/default/icon-ext.png
  17. BIN
      core/src/web/staticres/layui/css/modules/layer/default/icon.png
  18. 1 0
      core/src/web/staticres/layui/css/modules/layer/default/layer.css
  19. BIN
      core/src/web/staticres/layui/css/modules/layer/default/loading-0.gif
  20. BIN
      core/src/web/staticres/layui/css/modules/layer/default/loading-1.gif
  21. BIN
      core/src/web/staticres/layui/css/modules/layer/default/loading-2.gif
  22. BIN
      core/src/web/staticres/layui/font/iconfont.eot
  23. 25 0
      core/src/web/staticres/layui/font/iconfont.svg
  24. BIN
      core/src/web/staticres/layui/font/iconfont.ttf
  25. BIN
      core/src/web/staticres/layui/font/iconfont.woff
  26. BIN
      core/src/web/staticres/layui/font/iconfont.woff2
  27. BIN
      core/src/web/staticres/layui/images/face/0.gif
  28. BIN
      core/src/web/staticres/layui/images/face/1.gif
  29. BIN
      core/src/web/staticres/layui/images/face/10.gif
  30. BIN
      core/src/web/staticres/layui/images/face/11.gif
  31. BIN
      core/src/web/staticres/layui/images/face/12.gif
  32. BIN
      core/src/web/staticres/layui/images/face/13.gif
  33. BIN
      core/src/web/staticres/layui/images/face/14.gif
  34. BIN
      core/src/web/staticres/layui/images/face/15.gif
  35. BIN
      core/src/web/staticres/layui/images/face/16.gif
  36. BIN
      core/src/web/staticres/layui/images/face/17.gif
  37. BIN
      core/src/web/staticres/layui/images/face/18.gif
  38. BIN
      core/src/web/staticres/layui/images/face/19.gif
  39. BIN
      core/src/web/staticres/layui/images/face/2.gif
  40. BIN
      core/src/web/staticres/layui/images/face/20.gif
  41. BIN
      core/src/web/staticres/layui/images/face/21.gif
  42. BIN
      core/src/web/staticres/layui/images/face/22.gif
  43. BIN
      core/src/web/staticres/layui/images/face/23.gif
  44. BIN
      core/src/web/staticres/layui/images/face/24.gif
  45. BIN
      core/src/web/staticres/layui/images/face/25.gif
  46. BIN
      core/src/web/staticres/layui/images/face/26.gif
  47. BIN
      core/src/web/staticres/layui/images/face/27.gif
  48. BIN
      core/src/web/staticres/layui/images/face/28.gif
  49. BIN
      core/src/web/staticres/layui/images/face/29.gif
  50. BIN
      core/src/web/staticres/layui/images/face/3.gif
  51. BIN
      core/src/web/staticres/layui/images/face/30.gif
  52. BIN
      core/src/web/staticres/layui/images/face/31.gif
  53. BIN
      core/src/web/staticres/layui/images/face/32.gif
  54. BIN
      core/src/web/staticres/layui/images/face/33.gif
  55. BIN
      core/src/web/staticres/layui/images/face/34.gif
  56. BIN
      core/src/web/staticres/layui/images/face/35.gif
  57. BIN
      core/src/web/staticres/layui/images/face/36.gif
  58. BIN
      core/src/web/staticres/layui/images/face/37.gif
  59. BIN
      core/src/web/staticres/layui/images/face/38.gif
  60. BIN
      core/src/web/staticres/layui/images/face/39.gif
  61. BIN
      core/src/web/staticres/layui/images/face/4.gif
  62. BIN
      core/src/web/staticres/layui/images/face/40.gif
  63. BIN
      core/src/web/staticres/layui/images/face/41.gif
  64. BIN
      core/src/web/staticres/layui/images/face/42.gif
  65. BIN
      core/src/web/staticres/layui/images/face/43.gif
  66. BIN
      core/src/web/staticres/layui/images/face/44.gif
  67. BIN
      core/src/web/staticres/layui/images/face/45.gif
  68. BIN
      core/src/web/staticres/layui/images/face/46.gif
  69. BIN
      core/src/web/staticres/layui/images/face/47.gif
  70. BIN
      core/src/web/staticres/layui/images/face/48.gif
  71. BIN
      core/src/web/staticres/layui/images/face/49.gif
  72. BIN
      core/src/web/staticres/layui/images/face/5.gif
  73. BIN
      core/src/web/staticres/layui/images/face/50.gif
  74. BIN
      core/src/web/staticres/layui/images/face/51.gif
  75. BIN
      core/src/web/staticres/layui/images/face/52.gif
  76. BIN
      core/src/web/staticres/layui/images/face/53.gif
  77. BIN
      core/src/web/staticres/layui/images/face/54.gif
  78. BIN
      core/src/web/staticres/layui/images/face/55.gif
  79. BIN
      core/src/web/staticres/layui/images/face/56.gif
  80. BIN
      core/src/web/staticres/layui/images/face/57.gif
  81. BIN
      core/src/web/staticres/layui/images/face/58.gif
  82. BIN
      core/src/web/staticres/layui/images/face/59.gif
  83. BIN
      core/src/web/staticres/layui/images/face/6.gif
  84. BIN
      core/src/web/staticres/layui/images/face/60.gif
  85. BIN
      core/src/web/staticres/layui/images/face/61.gif
  86. BIN
      core/src/web/staticres/layui/images/face/62.gif
  87. BIN
      core/src/web/staticres/layui/images/face/63.gif
  88. BIN
      core/src/web/staticres/layui/images/face/64.gif
  89. BIN
      core/src/web/staticres/layui/images/face/65.gif
  90. BIN
      core/src/web/staticres/layui/images/face/66.gif
  91. BIN
      core/src/web/staticres/layui/images/face/67.gif
  92. BIN
      core/src/web/staticres/layui/images/face/68.gif
  93. BIN
      core/src/web/staticres/layui/images/face/69.gif
  94. BIN
      core/src/web/staticres/layui/images/face/7.gif
  95. BIN
      core/src/web/staticres/layui/images/face/70.gif
  96. BIN
      core/src/web/staticres/layui/images/face/71.gif
  97. BIN
      core/src/web/staticres/layui/images/face/8.gif
  98. BIN
      core/src/web/staticres/layui/images/face/9.gif
  99. 1 0
      core/src/web/staticres/layui/lay/modules/carousel.js
  100. 2 0
      core/src/web/staticres/layui/lay/modules/code.js

+ 0 - 4
common/src/qfw/util/rpc/follow.go

@@ -6,7 +6,3 @@ type FollowData struct {
 	Server      string `json:"server"`
 	Projectname string `json:"projectname"`
 }
-type DateExportData struct {
-	ImgSrc    string `json:"imgSrc"`
-	OrderCode string `json:"orderCode"`
-}

+ 43 - 0
common/src/qfw/util/rpc/order.go

@@ -0,0 +1,43 @@
+package rpc
+
+//数据导出线下支付
+type DateExportData struct {
+	ImgSrc    string `json:"imgSrc"`
+	OrderCode string `json:"orderCode"`
+}
+
+//创建订单
+type JyPayOrderParam struct {
+	Price       int                    `json:"price"`
+	ProductType string                 `json:"productType"`
+	Ip          string                 `json:"ip"`
+	Openid      string                 `json:"openid"`
+	PayWay      string                 `json:"payWay"`
+	Userid      string                 `json:"userid"`
+	Detail      map[string]interface{} `json:"detail"`
+}
+
+//修改订单
+type JyPayOrderChangeParam struct {
+	ProductType string `json:"productType"`
+	OrderCode   string `json:"orderCode"`
+	PayWay      string `json:"payWay"`
+	Openid      string `json:"openid"`
+	Ip          string `json:"ip"`
+}
+
+//关闭订单
+type JyPayOrderCloseParam struct {
+	ProductType string `json:"productType"`
+	OrderCode   string `json:"orderCode"`
+}
+
+/*
+code -1:失败
+err  错误信息
+*/
+type JyPayOrderResult struct {
+	Status    int    `json:"status"`
+	Err       string `json:"err"`
+	OrderCode string `json:"orderCode"`
+}

+ 336 - 2
core/src/qfw/manage/course.go

@@ -33,6 +33,14 @@ type CourseManage struct {
 	orderDetail xweb.Mapper `xweb:"/manage/courseOrder/detail/(\\w+)"` //课程订单详情
 	orderList   xweb.Mapper `xweb:"/manage/courseOrder/list"`          //请求课程订单列表
 	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/(\\w+)/(\\w+)"`        //课程详情
 }
 
 type FuncResult struct {
@@ -190,8 +198,8 @@ func (this *CourseManage) OrderList() {
 	c_type := this.GetString("strSel2")   //请求类型 0:订单编号 1:课程名称 2:联系人(订单表中 user_nickname 暂存联系人信息) 3:联系人手机号
 	c_content := this.GetString("strCont")
 	var sql = ``
-	var c_sql = `SELECT order_status,order_code,pay_time,filter,applybill_status,pay_money,order_money,course_status,pay_way FROM dataexport_order  WHERE  product_type = '招投标课程' and `
-	var c_sql_c = `SELECT count(*) FROM dataexport_order  WHERE product_type = '招投标课程' and `
+	var c_sql = `SELECT order_status,order_code,pay_time,filter,applybill_status,pay_money,order_money,course_status,pay_way FROM dataexport_order  WHERE  product_type in ('招投标课程','线上课程') and `
+	var c_sql_c = `SELECT count(*) FROM dataexport_order  WHERE product_type in ('招投标课程','线上课程') and `
 	if c_status != "" {
 		sql += `order_status =` + fmt.Sprint(c_status)
 	} else {
@@ -257,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{}{
@@ -474,3 +486,325 @@ func (this *CourseManage) ChangeStatus() {
 	}
 	this.ServeJson(r.Format())
 }
+
+func (this *CourseManage) CreateOnLineApi() {
+	c_type, _ := this.GetInteger("type") //课程类型:线下课程(1招标管理课程、2投标实物课程)、3线上课程
+	name := this.GetString("name")//课程名称
+	picUrl := this.GetString("picUrl")//头图
+	price := this.GetString("price")//课程金额
+	if price == "" {
+		price = "0"
+	}
+	price2 := fmt.Sprintf("%.2f", qutil.Float64All(price))
+	pos := strings.Index(price2, ".")
+	price3 := qutil.Int64All(price2[:pos] + price2[pos+1:])
+	videoUrl := this.GetString("videoUrl")//课程视频
+	fileUrl := this.GetString("fileUrl")//课件
+	s_publishtime := this.GetString("publishtime")//发布时间/上线时间
+	d_content := this.GetString("content")//课程详情
+	Dotype := this.GetString("dotype") //新增add or 修改edit
+	//status := this.GetString("status") //1上线、0草稿、-1未发布
+	courseDate :=  this.GetString("courseDate")//课程时长
+	endTime :=  this.GetString("endTime")//课程有效截止时间
+	associatedCourses := this.GetString("associatedCourses")//关联课程
+	//updateTime :=  this.GetString("updateTime")//课程内容更新时间
+	//createTime := time.Now().Unix()
+	//clickRate := 0//点击量默认0次
+	//tradeRate := 0//购买量默认0次
+
+	r := func() *FuncResult {
+		//数据校验
+		if name == "" || picUrl == "" || videoUrl == "" || c_type != 3 ||
+			courseDate == "" || endTime == "" {
+			return &FuncResult{false, errors.New("参数不完整"), nil}
+		}
+		publishtime, err := time.ParseInLocation(qutil.Date_Full_Layout, s_publishtime, time.Local)
+		if err != nil {
+			return &FuncResult{false, errors.New("发布时间异常"), nil}
+		}
+		l_endTime, err := time.ParseInLocation(qutil.Date_Full_Layout, endTime, time.Local)
+		if err != nil {
+			return &FuncResult{false, errors.New("课程截止时间异常"), nil}
+		}
+		//
+		d1_content, err := url.QueryUnescape(d_content)
+		if err != nil {
+			return &FuncResult{false, errors.New("课程内容解析异常"), nil}
+		}
+		content, err := url.QueryUnescape(d1_content)
+		if err != nil {
+			return &FuncResult{false, errors.New("课程内容解析异常"), nil}
+		}
+		/*if err1 != nil {
+			return &FuncResult{false, errors.New("课程金额异常"), nil}
+		}*/
+		//数据校验
+		mData := map[string]interface{}{
+			"s_name":         name,
+			"i_type":         c_type,
+			"s_picUrl":      picUrl,
+			"s_videoUrl":      videoUrl,
+			"s_fileUrl":      fileUrl,
+			"i_price":        price3,
+			"l_publishtime":  publishtime.Unix(),
+			//"l_createtime":    createTime,
+			"l_endtime":      l_endTime.Unix(),
+			"s_content":      content,
+			"s_courseDate":      courseDate,
+			"s_associatedCourses":      associatedCourses,
+			//"i_clickRate":      clickRate,
+			//"i_tradeRate":      tradeRate,
+		}
+		if Dotype == "add" || Dotype == "copy" {
+			mData["i_clickRate"] = 0
+			mData["i_tradeRate"] = 0
+			flag := this.GetString("flag") //保存 or 立即发布
+			if flag == "publish" {
+				mData["i_status"] = 1 //立即发布
+				if time.Now().After(l_endTime) {
+					return &FuncResult{false, errors.New("课程截止时间已到,禁止发布"), nil}
+				}
+			} else {
+				mData["i_status"] = 0 //暂时保存
+			}
+			mData["l_createTime"] = time.Now().Unix()
+			if mongodb.Save("jy_course", mData) == "" {
+				return &FuncResult{false, errors.New("增加课程失败"), nil}
+			} else {
+				return &FuncResult{true, nil, nil}
+			}
+		} else if Dotype == "edit" {
+			id := this.GetString("_id")
+			if id == "" {
+				return &FuncResult{false, errors.New("操作课程信息id为空"), nil}
+			}
+			flag := this.GetString("flag") //保存 or 立即发布
+			if flag == "publish" {
+				mData["i_status"] = 1 //立即发布
+				if time.Now().After(l_endTime) {
+					return &FuncResult{false, errors.New("课程截止时间已到,禁止发布"), nil}
+				}
+			} else {
+				mData["i_status"] = 0 //暂时保存
+			}
+			mData["l_updateTime"] = time.Now().Unix()
+			updateFlag := mongodb.Update("jy_course", &map[string]interface{}{
+				"_id": qutil.StringTOBsonId(id),
+			}, &map[string]interface{}{
+				"$set": mData,
+			}, false, false)
+			if !updateFlag {
+				return &FuncResult{false, errors.New("修改课程失败"), nil}
+			} else {
+				return &FuncResult{true, nil, nil}
+			}
+		}
+		return &FuncResult{false, errors.New("未知操作"), nil}
+	}()
+	if r.Err != nil {
+		log.Printf("CreateApi err:%v\n", r.Err.Error())
+	}
+	this.ServeJson(r.Format())
+}
+func (this *CourseManage) OnLineClickTradeRate()  {
+	_id := this.GetString("_id")//课程id
+	s_type := this.GetString("type")//类型click:点击量、trade:购买量
+	r := func() *FuncResult {
+		if _id != "" {
+			rData := mongodb.FindById("jy_course", _id, `"i_status":1,"l_starttime":1`)
+			if rData == nil || len(*rData) == 0 {
+				return &FuncResult{false, errors.New("未知信息_id"), nil}
+			}
+			if (*rData)["i_status"] == -1 {
+				return &FuncResult{false, errors.New("当状态下的信息不能增加购买量或点击量"), nil}
+			}
+			if s_type == "click" {
+				ok := mongodb.Update("jy_course", &map[string]interface{}{
+					"_id": qutil.StringTOBsonId(_id),
+				}, &map[string]interface{}{
+					"$inc": bson.M{"i_clickRate": 1},
+				}, false, false)
+
+				if ok {
+					return &FuncResult{true, nil, nil}
+				}
+			}
+			if s_type == "trade" {
+				ok := mongodb.Update("jy_course", &map[string]interface{}{
+					"_id": qutil.StringTOBsonId(_id),
+				}, &map[string]interface{}{
+					"$inc": bson.M{"i_tradeRate": 1},
+				}, false, false)
+
+				if ok {
+					return &FuncResult{true, nil, nil}
+				}
+			}
+		}else {
+			return &FuncResult{false, errors.New("课程id不能为空"), nil}
+		}
+		return &FuncResult{false, errors.New("未知操作"), nil}
+	}()
+	if r.Err != nil {
+		log.Printf("CreateApi err:%v\n", r.Err.Error())
+	}
+	this.ServeJson(r.Format())
+}
+
+func (this *CourseManage) OnLineList() {
+	currentPage, _ := this.GetInteger("currentPage")
+	perPage, _ := this.GetInteger("perPage")
+	queryStr := this.GetString("query")
+	flag :=  this.GetString("flag")
+	query := map[string]interface{}{}
+	if queryStr != "" {
+		query["s_name"] = bson.M{"$regex": queryStr}
+	}
+	if flag == "gl" {
+		now := time.Now().Unix()
+		query["i_status"] = 1
+		query["l_publishtime"] = bson.M{"$lt":now}
+		query["l_endtime"] = bson.M{"$gt":now}
+	}
+	query["i_type"] = 3
+	rData := mongodb.Find("jy_course", query, `{"l_publishtime":-1}`, `{"_id":1,"s_courseDate":1,"i_price":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{}{
+		"currentPage": currentPage,
+		"data":        rData,
+		"totalRows":   count,
+	})
+}
+
+func (this *CourseManage) OnLineChangeStatus() {
+	flag := this.GetString("flag")
+	_id := this.GetString("id")
+	r := func() *FuncResult {
+		if !(flag == "off" || flag == "on") {
+			return &FuncResult{false, errors.New("未知操作"), nil}
+		}
+		if _id == "" {
+			return &FuncResult{false, errors.New("未获取到信息_id"), nil}
+		}
+		rData := mongodb.FindById("jy_course", _id, `"i_status":1,"l_endtime":1`)
+		if rData == nil || len(*rData) == 0 {
+			return &FuncResult{false, errors.New("未知信息_id"), nil}
+		}
+		if (*rData)["i_status"] == -2 {
+			return &FuncResult{false, errors.New("当前信息状态不能更改"), nil}
+		}
+		if flag == "off" { //下线
+			if (*rData)["i_status"] == 1 {
+				ok := mongodb.Update("jy_course", &map[string]interface{}{
+					"_id": qutil.StringTOBsonId(_id),
+				}, &map[string]interface{}{
+					"$set": bson.M{"i_status": -1},
+				}, false, false)
+				//通过课程id查询该课程相关的订单
+				var updateSql = `UPDATE dataexport_order  SET order_status = -2 WHERE order_status = 0 AND product_type = '招投标课程' AND filter_id = '` + _id + `'`
+				go cutil.Mysql.UpdateOrDeleteBySql(updateSql)
+				if ok {
+					return &FuncResult{true, nil, nil}
+				}
+			}
+		} else if flag == "on" { //发布
+			//校验开课时间是否已到
+			if time.Unix(qutil.Int64All((*rData)["l_endtime"]), 0).Before(time.Now()) {
+				return &FuncResult{false, errors.New("课程截止时间已到,禁止上线"), nil}
+			}
+			if (*rData)["i_status"] == 0 || (*rData)["i_status"] == -1{
+				ok := mongodb.Update("jy_course", &map[string]interface{}{
+					"_id": qutil.StringTOBsonId(_id),
+				}, &map[string]interface{}{
+					"$set": bson.M{"i_status": 1},
+				}, false, false)
+
+				if ok {
+					return &FuncResult{true, nil, nil}
+				}
+			}
+		}
+		return &FuncResult{false, errors.New("信息状态修改非法"), nil}
+	}()
+	if r.Err != nil {
+		log.Printf("CreateApi err:%v\n", r.Err.Error())
+	}
+	this.ServeJson(r.Format())
+}
+
+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"] = fmt.Sprintf("%.2f", qutil.Float64All((*rData)["i_price"])/100)
+		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"]
+		var idSlice []bson.ObjectId
+		if ids != "" {
+			arr := strings.Split(ids.(string), ",")
+			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}
+		}
+		//课程基本信息
+		rData := mongodb.FindById("jy_course", _id, `{"_id":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}`)
+		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_publishtime"]), 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
+
+		if (*rData)["s_associatedCourses"] != "" {
+			//相关课程信息
+			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)
+			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) 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;
+}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 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>

BIN
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)
+  })
+}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 0
core/src/web/staticres/js/layui.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 0
core/src/web/staticres/layui/css/layui.css


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 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}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 0
core/src/web/staticres/layui/css/modules/laydate/default/laydate.css


BIN
core/src/web/staticres/layui/css/modules/layer/default/icon-ext.png


BIN
core/src/web/staticres/layui/css/modules/layer/default/icon.png


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 0
core/src/web/staticres/layui/css/modules/layer/default/layer.css


BIN
core/src/web/staticres/layui/css/modules/layer/default/loading-0.gif


BIN
core/src/web/staticres/layui/css/modules/layer/default/loading-1.gif


BIN
core/src/web/staticres/layui/css/modules/layer/default/loading-2.gif


BIN
core/src/web/staticres/layui/font/iconfont.eot


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 25 - 0
core/src/web/staticres/layui/font/iconfont.svg


BIN
core/src/web/staticres/layui/font/iconfont.ttf


BIN
core/src/web/staticres/layui/font/iconfont.woff


BIN
core/src/web/staticres/layui/font/iconfont.woff2


BIN
core/src/web/staticres/layui/images/face/0.gif


BIN
core/src/web/staticres/layui/images/face/1.gif


BIN
core/src/web/staticres/layui/images/face/10.gif


BIN
core/src/web/staticres/layui/images/face/11.gif


BIN
core/src/web/staticres/layui/images/face/12.gif


BIN
core/src/web/staticres/layui/images/face/13.gif


BIN
core/src/web/staticres/layui/images/face/14.gif


BIN
core/src/web/staticres/layui/images/face/15.gif


BIN
core/src/web/staticres/layui/images/face/16.gif


BIN
core/src/web/staticres/layui/images/face/17.gif


BIN
core/src/web/staticres/layui/images/face/18.gif


BIN
core/src/web/staticres/layui/images/face/19.gif


BIN
core/src/web/staticres/layui/images/face/2.gif


BIN
core/src/web/staticres/layui/images/face/20.gif


BIN
core/src/web/staticres/layui/images/face/21.gif


BIN
core/src/web/staticres/layui/images/face/22.gif


BIN
core/src/web/staticres/layui/images/face/23.gif


BIN
core/src/web/staticres/layui/images/face/24.gif


BIN
core/src/web/staticres/layui/images/face/25.gif


BIN
core/src/web/staticres/layui/images/face/26.gif


BIN
core/src/web/staticres/layui/images/face/27.gif


BIN
core/src/web/staticres/layui/images/face/28.gif


BIN
core/src/web/staticres/layui/images/face/29.gif


BIN
core/src/web/staticres/layui/images/face/3.gif


BIN
core/src/web/staticres/layui/images/face/30.gif


BIN
core/src/web/staticres/layui/images/face/31.gif


BIN
core/src/web/staticres/layui/images/face/32.gif


BIN
core/src/web/staticres/layui/images/face/33.gif


BIN
core/src/web/staticres/layui/images/face/34.gif


BIN
core/src/web/staticres/layui/images/face/35.gif


BIN
core/src/web/staticres/layui/images/face/36.gif


BIN
core/src/web/staticres/layui/images/face/37.gif


BIN
core/src/web/staticres/layui/images/face/38.gif


BIN
core/src/web/staticres/layui/images/face/39.gif


BIN
core/src/web/staticres/layui/images/face/4.gif


BIN
core/src/web/staticres/layui/images/face/40.gif


BIN
core/src/web/staticres/layui/images/face/41.gif


BIN
core/src/web/staticres/layui/images/face/42.gif


BIN
core/src/web/staticres/layui/images/face/43.gif


BIN
core/src/web/staticres/layui/images/face/44.gif


BIN
core/src/web/staticres/layui/images/face/45.gif


BIN
core/src/web/staticres/layui/images/face/46.gif


BIN
core/src/web/staticres/layui/images/face/47.gif


BIN
core/src/web/staticres/layui/images/face/48.gif


BIN
core/src/web/staticres/layui/images/face/49.gif


BIN
core/src/web/staticres/layui/images/face/5.gif


BIN
core/src/web/staticres/layui/images/face/50.gif


BIN
core/src/web/staticres/layui/images/face/51.gif


BIN
core/src/web/staticres/layui/images/face/52.gif


BIN
core/src/web/staticres/layui/images/face/53.gif


BIN
core/src/web/staticres/layui/images/face/54.gif


BIN
core/src/web/staticres/layui/images/face/55.gif


BIN
core/src/web/staticres/layui/images/face/56.gif


BIN
core/src/web/staticres/layui/images/face/57.gif


BIN
core/src/web/staticres/layui/images/face/58.gif


BIN
core/src/web/staticres/layui/images/face/59.gif


BIN
core/src/web/staticres/layui/images/face/6.gif


BIN
core/src/web/staticres/layui/images/face/60.gif


BIN
core/src/web/staticres/layui/images/face/61.gif


BIN
core/src/web/staticres/layui/images/face/62.gif


BIN
core/src/web/staticres/layui/images/face/63.gif


BIN
core/src/web/staticres/layui/images/face/64.gif


BIN
core/src/web/staticres/layui/images/face/65.gif


BIN
core/src/web/staticres/layui/images/face/66.gif


BIN
core/src/web/staticres/layui/images/face/67.gif


BIN
core/src/web/staticres/layui/images/face/68.gif


BIN
core/src/web/staticres/layui/images/face/69.gif


BIN
core/src/web/staticres/layui/images/face/7.gif


BIN
core/src/web/staticres/layui/images/face/70.gif


BIN
core/src/web/staticres/layui/images/face/71.gif


BIN
core/src/web/staticres/layui/images/face/8.gif


BIN
core/src/web/staticres/layui/images/face/9.gif


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 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");

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels