فهرست منبع

Merge branch 'master' into feature/v3.3.4

lianbingjie 2 سال پیش
والد
کامیت
885f0c02b9

+ 5 - 4
core/src/config.json

@@ -1,8 +1,8 @@
 {
     "webServerPort": "501",
-    "redisServers": "enterprise=192.168.3.128:1712,service=192.168.3.128:1712,other=192.168.3.128:1712,sso=192.168.3.128:1712,credit=192.168.3.128:1712,session=192.168.3.128:1712",
+    "redisServers": "enterprise=192.168.3.206:1712,service=192.168.3.206:1712,other=192.168.3.206:1712,sso=192.168.3.206:1712,credit=192.168.3.206:1712,session=192.168.3.206:1712",
     "useRedis": false,
-    "mongodbServers": "192.168.3.128:27080",
+    "mongodbServers": "192.168.3.206:27080",
     "elasticsearch": "http://192.168.3.128:9800",
     "jyescsearch": "http://192.168.3.128:9800",
     "elasticPoolSize": 30,
@@ -86,8 +86,9 @@
 	"pushSubscribeRpc":"127.0.0.1:1122",
 	"jyRpc":"127.0.0.1:8084",
   	"invoice_interface_address": "http://192.168.3.14:7080/Invoice/Add",
-  	"accessKeyId": "AKIDQjndIjNzpOilH0jpMI1ars51f7PbBEUv",
-  	"accessKeySecret": "Q0JiuwXtSq53mVwMngIejXT8dqmW1Zsx",
+  	"accessKeyId": "AKIDuc6OQUaWTIvLhwwhDVbT8TYYTDnBJBm7",
+  	"accessKeySecret": "93FH3bWGk9MQGtIWcSK0Reu2zngR9hBV",
+    "subAppId": "1500019048",
   	"refundPrivilege": ["o_kKF0lDzFtJJPWyW5b5sb8LTehh"],
   	"courseExcelExcludeTesterId": "",
   	"msgPushPool":50,

+ 2 - 1
core/src/qfw/coreconfig/SysConfig.go

@@ -52,6 +52,7 @@ type config struct {
 	Invoice_interface_address string                 `json:"invoice_interface_address"`
 	AccessKeyId               string                 `json:"accessKeyId"`
 	AccessKeySecret           string                 `json:"accessKeySecret"`
+	SubAppId                  string                 `json:"subAppId"`
 	TesterId                  string                 `json:"courseExcelExcludeTesterId"`
 	RefundPrivilege           []string               `json:"refundPrivilege"`
 	MsgPushPool               int                    `json:"msgPushPool"`
@@ -59,7 +60,7 @@ type config struct {
 	DelJyCacheIndex           string                 `json:"delJyCacheIndex"`
 	DelJyCacheDetail          string                 `json:"delJyCacheDetail"`
 	PcindexCacheKey           string                 `json:"pcindexCacheKey"`
-	Feedbacknotifytplid		  string 				 `json:"feedbacknotifytplid"`
+	Feedbacknotifytplid       string                 `json:"feedbacknotifytplid"`
 }
 type smtp struct {
 	Addr     string `json:"addr"`

+ 5 - 4
core/src/qfw/coreutil/videoUtil.go

@@ -153,7 +153,8 @@ func GetTxUrl(videoId string) (bool, string) {
 	var buffer bytes.Buffer
 	buffer.WriteString("{\"FileIds\":[\"")
 	buffer.WriteString(videoId)
-	buffer.WriteString("\"]}")
+	buffer.WriteString("\"],\"SubAppId\":")
+	buffer.WriteString(coreconfig.SysConfig.SubAppId + "}")
 	params := buffer.String()
 	err := request.FromJsonString(params)
 	if err != nil {
@@ -164,10 +165,10 @@ func GetTxUrl(videoId string) (bool, string) {
 		return false, "视频id不对"
 	}
 	if len(response.Response.MediaInfoSet) > 0 {
-		if len(response.Response.MediaInfoSet[0].TranscodeInfo.TranscodeSet)>1 {
+		if len(response.Response.MediaInfoSet[0].TranscodeInfo.TranscodeSet) > 1 {
 			MediaUrlL := response.Response.MediaInfoSet[0].TranscodeInfo.TranscodeSet[1].Url
 			return true, *MediaUrlL
-		}else{
+		} else {
 			MediaUrlL := response.Response.MediaInfoSet[0].TranscodeInfo.TranscodeSet[0].Url
 			return true, *MediaUrlL
 		}
@@ -192,4 +193,4 @@ func SetTxVideoRedis(id string) (bool, string) {
 	}
 	return fool, url
 
-}
+}

+ 28 - 2
core/src/qfw/manage/article.go

@@ -7,6 +7,7 @@ package manage
 import (
 	"fmt"
 	"log"
+	"math/rand"
 	"qfw/coreconfig"
 	"qfw/jyelastic"
 	"qfw/util"
@@ -52,6 +53,22 @@ func (a *Article) Addarticle() error {
 		var userid = a.GetSession("userId").(string)
 		u := FindOne("user", "{'_id':'"+userid+"'}")
 		u_type := (*u)["i_type"]
+		//查询栏目
+		column := Find("column", map[string]interface{}{}, `{"i_order": 1}`, "", false, -1, -1)
+		//log.Println(column)
+		var parentColumn []map[string]interface{}
+		childColumn := map[string][]interface{}{}
+		if column != nil && len(*column) > 0 {
+			for _, v := range *column {
+				if util.ObjToString(v["pid"]) == "" {
+					parentColumn = append(parentColumn, map[string]interface{}{"columnName": v["s_columnname"], "columnCode": v["s_columncode"]})
+				} else {
+					childColumn[util.ObjToString(v["pid"])] = append(childColumn[util.ObjToString(v["pid"])], map[string]interface{}{"columnName": v["s_columnname"], "columnCode": v["s_columncode"], "columnLevel": v["s_columnlevel"]})
+				}
+			}
+		}
+		a.T["parentColumn"] = parentColumn
+		a.T["childColumn"] = childColumn
 		if u_type == 0 {
 			return a.Render("/manage/addarticle.html")
 		} else {
@@ -76,7 +93,6 @@ func (a *Article) Savearticle() error {
 		data["s_url"] = a.GetString("s_url")
 		data["s_content"] = a.GetStringComm("s_content")
 		data["s_column"] = a.GetString("s_column")
-		data["s_contenttype"] = a.GetString("s_contenttype")
 		data["s_keywords"] = a.GetString("s_keywords")
 		data["s_description"] = a.GetString("s_description")
 		data["s_pic"] = a.GetString("s_pic")
@@ -87,6 +103,11 @@ func (a *Article) Savearticle() error {
 		data["s_author"] = a.GetString("s_author")
 		data["s_editorname"] = a.GetSession("loginName")
 		data["s_editorid"] = a.GetSession("userId")
+		log.Println(a.GetString("secondClassify"))
+		data["s_contenttype"] = a.GetString("s_contenttype")
+		data["s_secondclassifytype"] = a.GetString("secondClassify")
+		data["s_threeclassifytype"] = a.GetString("threeClassify")
+		data["i_viewnum"] = rand.Intn(2000-1000) + 1000
 		rel := a.GetString("releasetime")
 		tim, _ := time.ParseInLocation("2006-01-02 15:04:05", rel, time.Local)
 		tim1 := tim.Unix()
@@ -148,7 +169,12 @@ func (a *Article) Updatearticle() error {
 		//tim1 = tim1 - 28798
 		data["releasetime"] = tim1
 		data["l_createdate"] = time.Now().Unix()
-		if Update("content", "{'_id':'"+_id+"'}", data, false, false) {
+		data["s_secondclassifytype"] = a.GetString("secondClassify")
+		data["s_threeclassifytype"] = a.GetString("threeClassify")
+		updateData := map[string]interface{}{
+			"$set": data,
+		}
+		if Update("content", "{'_id':'"+_id+"'}", updateData, false, false) {
 			flag = "true"
 			msg = "修改成功!"
 			if a.GetString("s_contenttype") == "jybk" || a.GetString("s_contenttype") == "appxxtz" {

+ 15 - 0
core/src/qfw/manage/articlecontent.go

@@ -39,6 +39,21 @@ func (n *Article) Newscontent(_id string) error {
 				(*r)["s_content"] = template.HTML((*r)["s_content"].(string))
 				(*r)["s_preurl"] = SysConfig.Jyadd + se.EncodeString((*r)["_id"].(string)) + ".html"
 				n.T = *r
+				//查询栏目
+				column := Find("column", map[string]interface{}{}, `{"i_order": 1}`, "", false, -1, -1)
+				var parentColumn []map[string]interface{}
+				childColumn := map[string][]interface{}{}
+				if column != nil && len(*column) > 0 {
+					for _, v := range *column {
+						if util.ObjToString(v["pid"]) == "" {
+							parentColumn = append(parentColumn, map[string]interface{}{"columnName": v["s_columnname"], "columnCode": v["s_columncode"]})
+						} else {
+							childColumn[util.ObjToString(v["pid"])] = append(childColumn[util.ObjToString(v["pid"])], map[string]interface{}{"columnName": v["s_columnname"], "columnCode": v["s_columncode"], "columnLevel": v["s_columnlevel"]})
+						}
+					}
+				}
+				n.T["parentColumn"] = parentColumn
+				n.T["childColumn"] = childColumn
 				return n.Render("/manage/newscontent.html")
 			} else {
 				return n.Render("/manage/errcontent.html")

+ 60 - 3
core/src/qfw/manage/articlelist.go

@@ -15,6 +15,23 @@ func (e *Article) ManageContentList(list string) error {
 	var userid = e.GetSession("userId").(string)
 	u := FindOne("user", "{'_id':'"+userid+"'}")
 	u_type := (*u)["i_type"]
+	//查询栏目
+	column := Find("column", map[string]interface{}{}, `{"i_order": 1}`, "", false, -1, -1)
+	var parentColumn, secondColumn, threeColumn []map[string]interface{}
+	if column != nil && len(*column) > 0 {
+		for _, v := range *column {
+			if v["s_columnlevel"] == "s_contenttype" {
+				parentColumn = append(parentColumn, map[string]interface{}{"columnName": v["s_columnname"], "columnCode": v["s_columncode"]})
+			} else if v["s_columnlevel"] == "s_secondclassifytype" {
+				secondColumn = append(secondColumn, map[string]interface{}{"columnName": v["s_columnname"], "columnCode": v["s_columncode"]})
+			} else if v["s_columnlevel"] == "s_threeclassifytype" {
+				threeColumn = append(threeColumn, map[string]interface{}{"columnName": v["s_columnname"], "columnCode": v["s_columncode"]})
+			}
+		}
+		parentColumn = append(parentColumn, secondColumn...)
+		parentColumn = append(parentColumn, threeColumn...)
+	}
+	e.T["parentColumn"] = parentColumn
 	if u_type == 0 {
 		return e.Render("/manage/" + list + "list.html")
 	} else {
@@ -31,21 +48,40 @@ func (e *Article) GetJsonList(list string) error {
 				"msg": "sorry,size too many!",
 			})
 		} else {
+			//查询栏目
+			column := Find("column", map[string]interface{}{}, `{"i_order": 1}`, "", false, -1, -1)
+			var parentColumn, secondColumn, threeColumn []string
+			if column != nil && len(*column) > 0 {
+				for _, v := range *column {
+					if v["s_columnlevel"] == "s_contenttype" {
+						parentColumn = append(parentColumn, util.ObjToString(v["s_columncode"]))
+					} else if v["s_columnlevel"] == "s_secondclassifytype" {
+						secondColumn = append(secondColumn, util.ObjToString(v["s_columncode"]))
+					} else if v["s_columnlevel"] == "s_threeclassifytype" {
+						threeColumn = append(threeColumn, util.ObjToString(v["s_columncode"]))
+					}
+				}
+			}
 			currentPage, _ := e.GetInteger("currentPage")
 			contenttype := e.GetString("contenttype")
 			search := e.GetString("query")
 			res := map[string]interface{}{}
 			query := `{`
 			if len(contenttype) > 0 {
-				query = query + `"TERM_s_contenttype":"` + contenttype + `"`
+				class := classify(contenttype, parentColumn, secondColumn, threeColumn)
+				query = query + `"TERM_` + class + `":"` + contenttype + `"`
 			}
 			if len(search) > 0 {
-				query = query + `,"s_title":"` + search + `"`
+				if len(contenttype) > 0 {
+					query = query + `,"s_title":"` + search + `"`
+				} else {
+					query = query + `"s_title":"` + search + `"`
+				}
 			}
 			query = query + `}`
 			res["totalRows"] = elastic.Count("content", "content", elastic.MakeQuery(query, "", "", -1, -1))
 			//log.Println(query, "==", elastic.MakeQuery(query, "", "", -1, -1))
-			data := *elastic.GetPage("content", "content", query, `{"releasetime":-1}`, `"s_title","l_createdate","s_contenttype","s_source","releasetime","s_editorname","s_type","_id"`, (currentPage-1)*size, size)
+			data := *elastic.GetPage("content", "content", query, `{"releasetime":-1}`, `"s_title","l_createdate","s_contenttype","s_source","releasetime","s_editorname","s_type","_id","s_secondclassifytype","s_threeclassifytype"`, (currentPage-1)*size, size)
 			for _, v := range data {
 				release := v["releasetime"]
 				v["releasetime"] = util.FormatDateWithObj(&release, util.Date_Short_Layout)
@@ -60,3 +96,24 @@ func (e *Article) GetJsonList(list string) error {
 	}
 	return nil
 }
+
+//判断栏目级别
+func classify(contentType string, parentColumn, secondColumn, threeColumn []string) string {
+	types := ""
+	for _, v := range parentColumn {
+		if contentType == v {
+			types = "s_contenttype"
+		}
+	}
+	for _, v := range secondColumn {
+		if contentType == v {
+			types = "s_secondclassifytype"
+		}
+	}
+	for _, v := range threeColumn {
+		if contentType == v {
+			types = "s_threeclassifytype"
+		}
+	}
+	return types
+}

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

@@ -386,7 +386,7 @@ func (this *CourseManage) ExportOrder() {
 		sort.Ints(keyS)
 		clumnNum := 0
 		for _, vv := range keyS {
-			clumnNum++;
+			clumnNum++
 			sheetPosition := Div(clumnNum) + strconv.Itoa(lineNum+2)
 			f.SetCellValue("Sheet1", sheetPosition, v[vv])
 		}
@@ -600,7 +600,7 @@ func (this *CourseManage) CreateApi() {
 	r := func() *FuncResult {
 		//数据校验
 		if name == "" || address == "" || d_content == "" || Dotype == "" || c_type == 0 ||
-			price == 0 || s_publishtime == "" || s_starttime == "" || s_endtime == "" {
+			s_publishtime == "" || s_starttime == "" || s_endtime == "" {
 			return &FuncResult{false, errors.New("参数不完整"), nil}
 		}
 		publishtime, err := time.ParseInLocation(qutil.Date_Full_Layout, s_publishtime, time.Local)
@@ -759,7 +759,7 @@ func (this *CourseManage) CreateOnLineApi() {
 	json.Unmarshal([]byte(string(str)), &data)
 	log.Println(data)
 
-	c_type := qutil.IntAll(data["type"])          //课程类型:线下课程(1招标管理课程、2投标实物课程)、3线上课程
+	c_type := qutil.IntAll(data["type"])          //课程类型:线下课程(1招标管理课程、2投标实物课程)、3线上课程 4 帮助中心视频
 	name := qutil.ObjToString(data["name"])       //课程名称
 	picUrl := qutil.ObjToString(data["picUrl"])   //头图
 	picUrl2 := qutil.ObjToString(data["picUrl2"]) //头图
@@ -789,10 +789,11 @@ func (this *CourseManage) CreateOnLineApi() {
 	courseNum := qutil.IntAll(data["courseNum"]) //课程数量
 	isLook := qutil.IntAll(data["isLook"])       //是否可以试看 0  不可试看   1  可试看5分钟
 	introForm := qutil.IntAll(data["introForm"]) //介绍形式  0  图文编辑   1 单一图片
+	//classify := qutil.IntAll(data["classify"])   //栏目  0  中标比听课   1 帮助中心
 
 	r := func() *FuncResult {
 		//数据校验
-		if name == "" || picUrl == "" || picUrl2 == "" || c_type != 3 || endTime == "" {
+		if name == "" || picUrl == "" || picUrl2 == "" || endTime == "" {
 			return &FuncResult{false, errors.New("参数不完整"), nil}
 		}
 		/*if picUrl != "" {
@@ -996,6 +997,11 @@ func (this *CourseManage) OnLineList() {
 	queryStr := this.GetString("query")
 	flag := this.GetString("flag")
 	infoId := this.GetString("infoId")
+	i_type, _ := this.GetInt("i_type")
+	if i_type == 0 {
+		i_type = 3
+	}
+	//log.Println(i_type)
 	query := map[string]interface{}{}
 	if queryStr != "" {
 		query["s_name"] = bson.M{"$regex": queryStr}
@@ -1009,7 +1015,7 @@ func (this *CourseManage) OnLineList() {
 			query["_id"] = bson.M{"$ne": bson.ObjectIdHex(infoId)}
 		}
 	}
-	query["i_type"] = 3
+	query["i_type"] = i_type
 	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{}{
@@ -1081,7 +1087,7 @@ func (this *CourseManage) OnLineDetail(flag, id string) error {
 		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,"s_picUrl2":1,"i_price":1,"l_publishtime":1,"l_endtime":1,"s_associatedCourses":1,"i_clickRate":1,"s_videoID":1,"s_fileUrl":1,"s_courseDate":1,"i_tradeRate":1,"i_look":1,"i_form":1,"i_num":1,"i_exist":1,"s_coursedata":1,"i_drawer":1}`)
+		rData := mongodb.FindById("jy_course", id, `{"_id":1,"i_status":1,"s_content":1,"s_name":1,"s_picUrl":1,"s_picUrl2":1,"i_price":1,"l_publishtime":1,"l_endtime":1,"s_associatedCourses":1,"i_clickRate":1,"s_videoID":1,"s_fileUrl":1,"s_courseDate":1,"i_tradeRate":1,"i_look":1,"i_form":1,"i_num":1,"i_exist":1,"s_coursedata":1,"i_drawer":1,"i_type":1}`)
 		this.T["picUrl"] = (*rData)["s_picUrl"]
 		this.T["picUrl2"] = (*rData)["s_picUrl2"]
 		this.T["name"] = (*rData)["s_name"]
@@ -1103,6 +1109,7 @@ func (this *CourseManage) OnLineDetail(flag, id string) error {
 		this.T["courseNum"] = qutil.IntAll((*rData)["i_num"])
 		this.T["isLook"] = qutil.IntAll((*rData)["i_look"])
 		this.T["introForm"] = qutil.IntAll((*rData)["i_form"])
+		this.T["i_type"] = qutil.IntAll((*rData)["i_type"])
 		log.Println(this.T["isDrawer"], isExist, this.T["courseNum"], this.T["isLook"], this.T["introForm"])
 
 		ids := (*rData)["s_associatedCourses"]
@@ -1187,7 +1194,7 @@ func Div(Num int) string {
 				temp = append(temp, k)
 			}
 			Num = (Num - k) / 26 //减去Num最后一位数的值,因为已经记录在temp中
-			if Num <= 26 { //小于等于26直接进行匹配,不需要进行数据拆分
+			if Num <= 26 {       //小于等于26直接进行匹配,不需要进行数据拆分
 				temp = append(temp, Num)
 				break
 			}

+ 1 - 0
core/src/qfw/manage/manage.go

@@ -16,4 +16,5 @@ func init() {
 	xweb.AddAction(&Message{})
 	xweb.AddAction(&Data{})
 	xweb.AddAction(&PushManage{})
+	xweb.AddAction(&menu{})
 }

+ 126 - 0
core/src/qfw/manage/menu.go

@@ -0,0 +1,126 @@
+package manage
+
+import (
+	"encoding/json"
+	"log"
+	"qfw/util"
+	"qfw/util/mongodb"
+	"qfw/util/redis"
+	"time"
+
+	"github.com/go-xweb/xweb"
+)
+
+type menu struct {
+	*xweb.Action
+	menu        xweb.Mapper `xweb:"/manage/menu"`
+	menuList    xweb.Mapper `xweb:"/manage/menuList"`
+	menuAdd     xweb.Mapper `xweb:"/manage/menuAdd"`
+	menuSave    xweb.Mapper `xweb:"/manage/menuSave"`
+	menuDelete  xweb.Mapper `xweb:"/manage/menuDelete"`
+	deleteCache xweb.Mapper `xweb:"/manage/delMenuCache"` //清除缓存
+}
+
+const menuCahceKey = "jyTopMenuCache"
+
+func (m *menu) Menu() error {
+	return m.Render("/manage/menu/list.html")
+}
+
+func (m *menu) DeleteCache() {
+	m.ServeJson(map[string]interface{}{
+		"status": redis.Del("other", menuCahceKey),
+	})
+}
+
+func (m *menu) MenuAdd() error {
+	id := m.GetString("id")
+	if id != "" {
+		mobj := *mongodb.FindById("jy_topMenu", id, nil)
+		m.T = mobj
+	}
+	return m.Render("/manage/menu/add.html", &m.T)
+}
+
+func (m *menu) MenuDelete() error {
+	_id := m.GetString("id")
+	res := map[string]interface{}{}
+	res["success"] = false
+	if _id != "" {
+		res["success"] = mongodb.DelById("jy_topMenu", _id)
+	}
+	//清首页缓存
+	redis.Del("other", menuCahceKey)
+	m.ServeJson(&res)
+	return nil
+}
+
+func (m *menu) MenuSave() error {
+	_id := m.GetString("_id")
+	sort, _ := m.GetInteger("i_sort")
+	show, _ := m.GetInteger("s_show")
+	date := time.Now().Unix()
+	doc := map[string]interface{}{
+		"title":        m.GetString("s_title"),
+		"link":         m.GetString("link"),
+		"tag":          m.GetString("tag"),
+		"attr":         m.GetString("attr"),
+		"style":        m.GetString("style"),
+		"flex":         m.GetString("flex"),
+		"i_sort":       sort,
+		"i_status":     show,
+		"l_modifydate": date,
+	}
+	var ok bool
+	res := map[string]interface{}{}
+	a_son := m.GetStringComm("a_son")
+	if a_son != "" {
+		mson := []map[string]interface{}{}
+		err := json.Unmarshal([]byte(a_son), &mson)
+		if err != nil {
+			log.Println("MenuSave err:", err)
+			res["flag"] = ok
+			res["msg"] = "保存失败"
+			m.ServeJson(&res)
+		}
+		doc["child"] = mson
+	}
+	if _id != "" {
+		ok = mongodb.Update("jy_topMenu", `{"_id":"`+_id+`"}`, &map[string]interface{}{"$set": doc}, false, false)
+	} else {
+		doc["l_createdate"] = date
+		ok = mongodb.Save("jy_topMenu", doc) != ""
+	}
+	//清除菜单缓存
+	redis.Del("other", menuCahceKey)
+	res["flag"] = ok
+	res["msg"] = "保存成功"
+	m.ServeJson(&res)
+	return nil
+}
+
+func (m *menu) MenuList() error {
+	if m.Method() == "POST" {
+		size, _ := m.GetInteger("perPage")
+		if size > 100 {
+			m.ServeJson(&map[string]interface{}{
+				"msg": "soory,size too many!",
+			})
+		} else {
+			currentPage, _ := m.GetInteger("currentPage")
+			res := map[string]interface{}{}
+			res["totalRows"] = mongodb.Count("jy_topMenu", nil)
+			data := *mongodb.Find("jy_topMenu", nil, `{"i_sort":1,"l_createdate":1}`, `{"title":1,"i_status":1,"i_sort":1,"l_createdate":1,"l_modifydate":1}`, false, (currentPage-1)*size, size)
+			for _, v := range data {
+				data_c := v["l_createdate"]
+				v["l_createdate"] = util.FormatDateWithObj(&data_c, util.Date_Full_Layout)
+				data_m := v["l_modifydate"]
+				v["l_modifydate"] = util.FormatDateWithObj(&data_m, util.Date_Full_Layout)
+			}
+			res["data"] = data
+			res["currentPage"] = currentPage
+			m.ServeJson(&res)
+		}
+	}
+	return nil
+}

+ 96 - 25
core/src/web/templates/manage/addarticle.html

@@ -197,7 +197,7 @@ margin-top:-8px;
 		</div>
 		</div>-->
 
-		<div class="form-group" >
+		<!--<div class="form-group" >
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">头图:</label>
 	    <div class="col-sm-6">
 				<div id="pic">
@@ -208,7 +208,7 @@ margin-top:-8px;
 		</div>
 		<div class="col-sm-4">
 		</div>
-		</div>
+		</div>-->
 
 		<div class="form-group" >
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">示例图片:</label>
@@ -234,24 +234,93 @@ margin-top:-8px;
 
         <div class="form-group">
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">选择栏目:</label>
-		<div class="col-sm-2">
-        <select name="s_contenttype" class="form-control">
-		<option value="qykb" selected="selected"> 企业网快报 </option>
-		<!--<option value="hyzx"> 行业资讯 </option>
-		<option value="mtpj"> 媒体评价 </option>-->
-		<option value="zcfg"> 政策法规 </option>
-		<option value="zthd"> 专题活动 </option>
-		<option value="zh"> 展会 </option>
-		<option value="qtlm"> 其他栏目 </option>
-		<option value="wxlm"> 微信栏目 </option>
-		<option value="zhsk"> 知识库 </option>
-		<option value="jybk"> 剑鱼博客 </option>
-		<option value="appxxtz"> APP消息通知 </option>
-		<option value="gsdt"> 公司动态 </option>
-		<option value="hyzc"> 行业政策 </option>
-		</select>
-		</div>
-		</div>
+			<div class="col-sm-2">
+				<select name="s_contenttype" class="form-control" onchange="
+					if(this.value != '')
+						setCity(this.options[this.selectedIndex].value);">
+					{{range .T.parentColumn }}
+					<option value="{{.columnCode}}"> {{.columnName}} </option>
+					{{end}}
+				</select>
+			</div>
+			<div  class="col-sm-2">
+				<select name="secondClassify" id="classify" class="form-control" style="display: none;" hidden
+						onchange="
+			if(this.value != '')
+				setColumn(this.options[this.selectedIndex].value);">
+					<option value="0">-请选择-</option>
+				</select>
+			</div>
+			<div  class="col-sm-2">
+				<select name="threeClassify" id="threeClassify" class="form-control" style="display: none;" hidden>
+					<option value="0">-请选择-</option>
+				</select>
+			</div>
+		</div>
+			<script>
+				var classifyArr = {{.T.childColumn}};
+				function setCity(province) {
+					// console.log(province);
+					var city = document.getElementById('classify');
+					var city_len = city.options.length;
+					for (var i = 0; i < city_len; i++) {
+						if (city_len > 0) {
+							city.options.remove(0);
+						}
+					}
+
+					if (province == "0") {
+						var opt = new Option('-请选择-', 0);
+						city.options.add(opt);
+					} else {
+						// console.log("子栏目", classifyArr[province])
+						$('#threeClassify').css('display','none')
+						if (classifyArr[province] === undefined){
+							$('#classify').css('display','none')
+							return
+						}
+						var province_len = classifyArr[province].length;
+						var text_1 = document.getElementById("classify");
+
+						$('#classify').css('display','block')
+						text_1. hidden =false; //显示元素
+						for (i = 0; i < province_len; i++) {
+							var opt = new Option(classifyArr[province][i].columnName, classifyArr[province][i].columnCode);
+							city.options.add(opt);
+						}
+					}
+				}
+
+				function setColumn(province) {
+					var city = document.getElementById('threeClassify');
+					var city_len = city.options.length;
+					for (var i = 0; i < city_len; i++) {
+						if (city_len > 0) {
+							city.options.remove(0);
+						}
+					}
+
+					if (province == "0") {
+						var opt = new Option('-请选择-', 0);
+						city.options.add(opt);
+					} else {
+						// console.log("子栏目", classifyArr[province])
+						if (classifyArr[province] === undefined){
+							$('#threeClassify').css('display','none')
+							return
+						}
+						var province_len = classifyArr[province].length;
+						var text_1 = document.getElementById("threeClassify");
+
+						$('#threeClassify').css('display','block')
+						text_1. hidden =false; //显示元素
+						for (i = 0; i < province_len; i++) {
+							var opt = new Option(classifyArr[province][i].columnName, classifyArr[province][i].columnCode);
+							city.options.add(opt);
+						}
+					}
+				}
+			</script>
 
 
 		<div style="margin-top:80px;" class="form-group">
@@ -278,6 +347,8 @@ var urls1 = "";
 var x = 0;
 var y = 0;
 var str='str';
+console.log("栏目1", {{.T.parentColumn}})
+console.log("栏目2", {{.T.childColumn}})
 $(function(){
 	var option={
 		btnname:"图片上传",//按钮名
@@ -290,10 +361,10 @@ $(function(){
 	           alert("图片上传失败")
 			},
 		afterUpload:function(data){ //此处可以重写,上传后的处理
-		      if(x>0){
+		      /*if(x>0){
 				alert("只能上传一张图片!");
 				return;
-			}
+			}*/
 			//$("#pic").css("margin-top","10px")
 			  var table = document.getElementById("table1");
 			  var tr = document.getElementById("tr1");
@@ -341,10 +412,10 @@ $(function(){
 	           alert("图片上传失败")
 			},
 		afterUpload:function(data){ //此处可以重写,上传后的处理
-		      if(y>0){
+		      /*if(y>0){
 				alert("只能上传一张图片!");
 				return;
-			}
+			}*/
 			//$("#pic").css("margin-top","10px")
 			  var table = document.getElementById("table11");
 			  var tr = document.getElementById("tr11");
@@ -437,7 +508,7 @@ function doadd(){
 	//var subcontent = $("<div/>").html($(".summernote").code()).text().substr(0,200);
 	//$("#s_subcontent").val(subcontent);
     var formParam = $("#savearticle").serialize();
-
+	console.log("保存数据", formParam)
     $.ajax({
         type:'post',
         url:'/manage/savearticle',

+ 143 - 9
core/src/web/templates/manage/articlelist.html

@@ -42,10 +42,11 @@ border-bottom:1px dashed #999999;
 <!-- 中间 -->
 <div class="row" style="width:96%; margin:0 auto; margin-top:10px;">
 <div>
-{{include "/manage/slider.html"}}	
-		
-		<div id="content">		
+{{include "/manage/slider.html"}}
+
+		<div id="content">
 <!-- 中间 -->
+			<div id="audit"></div>
 <script>
 $(function(){
 	$("#audit").datatable({
@@ -57,7 +58,15 @@ $(function(){
   ,classname:"table-hover"
   ,css:{"height":"430px"}
   //,post:{"contenttype":""}
-  ,buttons: ['<div style="margin:5px 20px 0px 30px;" class="controls pull-right"><span><a href="/manage/addarticle"><button class="btn btn-info" onclick="" type="button">添加文章</button></a></span></div><div style="width:50%;margin:5px" class="input-group pull-right" id="search"><input type="text" id="searchtext" value=""  data-original-title="Search" class="form-control" placeholder="请输入检索条件..."><span class="input-group-btn"><button class="btn btn-success" onclick="SearchContent()" data-original-title="Search" id="searchtip" type="button" style="height:38px;">检索</button></span></div><div style="margin:5px;" class="controls pull-right"><select class="form-control" id="select" ><option value=""> 请选择栏目 </option><option value="qykb"> 企业网快报 </option><option value="mtpj">媒体评价 </option><option value="hyzx">行业资讯 </option><option value="zcfg"> 政策法规 </option><option  value="zthd"> 专题活动 </option><option value="zh" > 展会 </option><option value="qtlm"> 其他栏目 </option><option value="wxlm"> 微信栏目 </option><option value="zhsk"> 知识库 </option><option value="jybk"> 剑鱼博客 </option><option value="appxxtz"> APP消息通知 </option><option value="gsdt"> 公司动态 </option><option value="hyzc"> 行业政策 </option></select></div>']
+  ,buttons: ['<div style="margin:5px 20px 0px 30px;" class="controls pull-right"><span><a href="/manage/addarticle"><button class="btn btn-info" onclick="" type="button">添加文章</button></a></span></div><div style="width:35%;margin:5px" class="input-group pull-right" id="search"><input type="text" id="searchtext" value=""  data-original-title="Search" class="form-control" placeholder="请输入检索条件..."><span class="input-group-btn"><button class="btn btn-success" onclick="SearchContent()" data-original-title="Search" id="searchtip" type="button" style="height:38px;">检索</button></span></div>' +
+		'<div style="margin:5px;" class="controls pull-right">' +
+		'<select name="s_contenttype" class="form-control" id="select"  onchange="if(this.value != \'\')' +
+		'                setCity(this.options[this.selectedIndex].value);">' +
+		'<option value=""> 请选择栏目 </option>' +
+		'{{range .T.parentColumn}} ' +
+		'<option value="{{.columnCode}}"> {{.columnName}} </option>' +
+		'{{end}}'+
+		'</select></div>']
   , url: '/manage/articlelist/list'
   , columns: [
         {
@@ -70,7 +79,7 @@ $(function(){
 			var id = ct["_id"]
 			if(v) v="<a href='/manage/content/"+id+"'>"+v+"</a>"
 			return v
-		}	
+		}
         },
 		{
             title: "作者"
@@ -82,11 +91,33 @@ $(function(){
 		  ,callback:function(ct,cd,val,k,m){
 			var v=ct["s_contenttype"];
 			if(v=="qykb") {
-			v="企业网快报" 
+			v="企业网快报"
 			} else if(v == "mtpj") {
-			v="媒体评价" 
+			v="媒体评价"
 			} else if(v == "hyzx"){
-			v = "行业资讯"
+			// v = "行业资讯"
+				var col = ct["s_secondclassifytype"]
+				if (col == 'xxjs'){
+					v="信息技术"
+				}else if (col == 'slsd'){
+					v="水利水电"
+				}else if (col == 'jzgc'){
+					v="建筑工程"
+				}else if (col == 'rdaf'){
+					v="弱电安防"
+				}else if (col == 'nyhg'){
+					v="能源化工"
+				}else if (col == 'ylws'){
+					v="医疗卫生"
+				}else if (col == 'bgwj'){
+					v="办公文教"
+				}else if (col == 'jxsb'){
+					v="机械设备"
+				}else if (col == 'jtys'){
+					v="交通运输"
+				}else if (col == 'szjs'){
+					v="盛政建设"
+				}
 			} else if(v == "zthd"){
 			v = "专题活动"
 			} else if(v == "zh"){
@@ -107,6 +138,43 @@ $(function(){
 				v = "公司动态"
 			}else if(v == "hyzc") {
 				v = "行业政策"
+			}else if(v == "ztbgl"){
+				var col = ct["s_secondclassifytype"]
+				if (col == 'zbcg'){
+					v="招标采购"
+				}else if (col == 'tbzn'){
+					v="投标指南"
+				}else if (col == 'zbjq'){
+					v="中标技巧"
+				}else if (col == 'wdbk'){
+					v="问答百科"
+				}else if (col == 'zcfg'){
+					v="政策法规"
+				}else if (col == 'dzztb'){
+					v="电子招投标"
+				}
+			}else if (v == "帮助中心"){
+				var col = ct["s_secondclassifytype"]
+				if (col == 'ksrm'){
+					v="快速入门"
+				}else if (col == 'syzn'){
+					var threeCol = ct["s_threeclassifytype"]
+					if (threeCol == 'syssgn'){
+						v = "使用搜索功能"
+					}else if (threeCol == 'sydygn'){
+						v = "使用订阅功能"
+					}
+				}else if (col == 'zhgl'){
+					v="账户管理"
+				}else if (col == 'ddzf'){
+					v="订单支付"
+				}else if (col == 'shfw'){
+					v="售后服务"
+				}else if (col == 'kfzzn'){
+					v="开发者指南"
+				}else if (col == 'cjwt'){
+					v="常见问题"
+				}
 			}
 			return v
 		}
@@ -138,8 +206,72 @@ function SearchContent(){
 	find.options.currentPage=1
 	find.render();
 }
+
+var classifyArr = {{.T.childColumn}};
+function setCity(province) {
+
+	var city = document.getElementById('classify');
+	console.log(city);
+	var city_len = city.options.length;
+	for (var i = 0; i < city_len; i++) {
+		if (city_len > 0) {
+			city.options.remove(0);
+		}
+	}
+
+	if (province == "0") {
+		var opt = new Option('-请选择-', 0);
+		city.options.add(opt);
+	} else {
+		// console.log("子栏目", classifyArr[province])
+		if (classifyArr[province] === undefined){
+			$('#classify').css('display','none')
+			return
+		}
+		var province_len = classifyArr[province].length;
+		var text_1 = document.getElementById("classify");
+
+		$('#classify').css('display','block')
+		text_1. hidden =false; //显示元素
+		for (i = 0; i < province_len; i++) {
+			var opt = new Option(classifyArr[province][i].columnName, classifyArr[province][i].columnCode);
+			city.options.add(opt);
+		}
+	}
+}
+
+function setColumn(province) {
+	console.log(province);
+	var city = document.getElementById('threeClassify');
+	var city_len = city.options.length;
+	for (var i = 0; i < city_len; i++) {
+		if (city_len > 0) {
+			city.options.remove(0);
+		}
+	}
+
+	if (province == "0") {
+		var opt = new Option('-请选择-', 0);
+		city.options.add(opt);
+	} else {
+		// console.log("子栏目", classifyArr[province])
+		if (classifyArr[province] === undefined){
+			$('#threeClassify').css('display','none')
+			return
+		}
+		var province_len = classifyArr[province].length;
+		var text_1 = document.getElementById("threeClassify");
+
+		$('#threeClassify').css('display','block')
+		text_1. hidden =false; //显示元素
+		for (i = 0; i < province_len; i++) {
+			var opt = new Option(classifyArr[province][i].columnName, classifyArr[province][i].columnCode);
+			city.options.add(opt);
+		}
+	}
+}
 </script>
-<div id="audit"></div>
+
 </div>
 </div>
 
@@ -186,6 +318,8 @@ $(function (){
 	 find.render();
 	  })
   })
+
+
 </script>
 </body>
 </html>

+ 18 - 2
core/src/web/templates/manage/course/onLineContent.html

@@ -217,6 +217,7 @@
                                 <select class="select" id="drawer" {{.T.isDrawer}}>
                                     <option value="0">汇学网</option>
                                     <option value="1">王凯精品课程</option>
+                                    <option value="2">无</option>
                                 </select>
                             </div>
                         </div>
@@ -387,6 +388,17 @@
                                        value="{{.T.publishtime}}">
                             </div>
                         </div>
+                        <div class="items">
+                            <div class="items-left">
+                                选择栏目:
+                            </div>
+                            <div class="items-right">
+                                <select class="select" id="classifySelect">
+                                    <option value="3">中标必听课</option>
+                                    <option value="4">帮助中心</option>
+                                </select>
+                            </div>
+                        </div>
                         <div class="items">
                             <div class="items-left"></div>
                             <div class="items-right">
@@ -443,12 +455,15 @@
     var courseArr = {{.T.courseArr}};//课程数组
     var isLook = {{.T.isLook}}; //是否可以试看
     var introForm = {{.T.introForm}}//介绍形式
+    var column = {{.T.i_type}}
+    console.log(column)
     // console.log("课程信息", courseArr)
 
     $('#drawer option[value=' + isDrawer + ']').attr('selected', 'selected');
     $('#selectId option[value=' + isExist + ']').attr('selected', 'selected');
     $('.isLook option[value=' + isLook + ']').attr('selected', 'selected');
     $('#selectIntro option[value=' + introForm + ']').attr('selected', 'selected');
+    $('#classifySelect option[value=' + column + ']').attr('selected', 'selected');
     // console.log("introForm", introForm)
     if (introForm == 1) {
         $('.picEdit').css("display", "none")
@@ -569,6 +584,7 @@
 
         var isLook = $('.isLook option:selected').val(); //是否可以试看
         var introForm = $('#selectIntro option:selected').val();
+        var column = $('#classifySelect option:selected').val();// 0 中标比听课   1 帮助中心
         if (introForm == '1') {
             content = $('#picUrl3').val();
         } else {
@@ -648,7 +664,7 @@
             content: encodeURI(encodeURI(content)),
             associatedCourses: associatedCourses,
             publishtime: publishtime,
-            type: 3,
+            type: column,
             dotype: Dotype, //新增 or 修改
             flag: flag,//保存 or 立即发布
 
@@ -657,7 +673,7 @@
             courseNum: courseNum,
             isLook: isLook,
             introForm: introForm,
-            courseArr: videoArr
+            courseArr: videoArr,
 
         }
         console.log("param", param)

+ 18 - 6
core/src/web/templates/manage/course/onLineIndex.html

@@ -188,7 +188,9 @@
 </body>
 <script type="text/javascript" src="/js/bootbox.js"></script>
 <script>
+
     $(function () {
+
         $("#audit").datatable({
             perPage: 10
             ,
@@ -203,12 +205,13 @@
             classname: "table-hover"
             ,
             css: {"height": "550px"}
-            //,post:{"name":"ee"}
+            ,post:{"i_type":$('#select2 option:selected').val()}
             ,
-            buttons: ['<div class="addCourse">添加课程</div><div style="width:50%;margin:5px" class="input-group pull-right" id="search"><input type="text" id="searchtext" value=""  data-original-title="Search" class="form-control" placeholder="请输入检索条件"><span class="input-group-btn"><button class="btn btn-success" onclick="SearchContent()" data-original-title="Search" id="searchtip" type="button" style="height:38px;">检索</button></span></div><div style="margin:5px;" class="controls pull-right"><select class="form-control" id="select2" ><option value="">  选择课程类型  </option><option  value="1" onclick="xskc()" selected>  线上课程</option></select></div>']
+            buttons: ['<div class="addCourse">添加课程</div><div style="width:50%;margin:5px" class="input-group pull-right" id="search"><input type="text" id="searchtext" value=""  data-original-title="Search" class="form-control" placeholder="请输入检索条件"><span class="input-group-btn"><button class="btn btn-success" onclick="SearchContent()" data-original-title="Search" id="searchtip" type="button" style="height:38px;">检索</button></span></div><div style="margin:5px;" class="controls pull-right"><select class="form-control" id="select2" ><option  value="3" onclick="xskc()">  线上课程</option><option  value="4" >  帮助中心视频</option></select></div>']
             ,
             url: '/manage/course/OnLineList'
             ,
+            // i_type:$('#select2 option:selected').val(),
             columns: [
                 {
                     title: "课程名称", field: "s_name",
@@ -251,25 +254,34 @@
             ]
         });
 
+        console.log($('#select2').val())
+        $('#select2').val('3')
         $("select").change(function () {
             var selectId = $('#select2 option:selected');
-            if(selectId.val()==1){
+            /*if(selectId.val()==3){
                 window.location.href ="/manage/course/onLineIndex";
             }else if(selectId.val()==2){
                  window.location.href ="/manage/course/index";
-            }
+            }*/
             var find = $("#audit").data("datatable");
             if (!find.options.opost) find.options.opost = find.options.post || {};
             find.options.post = $.extend(find.options.opost, {
-                strSel2: $("#select2").val()
+                strSel2: $("#select2").val(),
+                i_type: selectId.val()
             });
             find.options.currentPage = 1;
             find.render();
         });
 
+        // $("#select2").trigger("change");
+
         $(".addCourse").on("click", function () {
             window.location.href = "/manage/course/OnLineDetail/add/new"
         })
+
+        setTimeout(function() {
+            $('#select2').val(3)
+        }, 100)
     });
 
     //点击跳转新页面
@@ -287,7 +299,7 @@
     function SearchContent() {
         var find = $("#audit").data("datatable");
         if (!find.options.opost) find.options.opost = find.options.post || {};
-        find.options.post = $.extend(find.options.opost, {query: $("#searchtext").val()});
+        find.options.post = $.extend(find.options.opost, {query: $("#searchtext").val(),i_type:$('#select2 option:selected').val()});
         find.options.currentPage = 1;
         find.render();
     }

+ 428 - 0
core/src/web/templates/manage/menu/add.html

@@ -0,0 +1,428 @@
+<html>
+<head>
+<title>菜单编辑</title>
+{{include "/common/inc.html"}}
+<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/zDialog.js"></script>
+<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/upload.js"></script>
+<style type="text/css">
+.widget-content {
+table-layout: fixed;
+border:0px;
+font-size:14px;
+}
+span{
+white-space: nowrap;
+text-overflow: ellipsis;
+overflow: hidden;
+}
+#_Container_0{
+background-color:#FFFFFF;
+}
+.buttonStyle{width:64px;height:22px;line-height:22px;color:#369;text-align:center;background:url(/images/buticon.gif) no-repeat left top;border:0;font-size:12px;}
+.buttonStyle:hover{background:url(/images/buticon.gif) no-repeat left -23px;}
+#sidebar { margin-left:0px;}
+</style>
+</head>
+<body>
+{{include "/manage/audithead.html"}}
+<!-- 中间 -->
+<div class="row" style="width:96%; margin:0 auto; margin-top:10px;">
+<div>
+{{include "/manage/slider.html"}}
+    <div id="content">
+        <div class="widget-box">
+            <div class="widget-content nopadding">
+                <div style="width:90%; margin:auto; margin-bottom:80px;">
+
+                    <form class="registerform form-horizontal" role="form" id="savead" method="post">
+                        <h4>
+                            <p style="font-weight:bold; border-bottom:2px solid #98D6DC; padding-bottom:10px; margin-top:30px;"
+                               class="text-left">剑鱼菜单配置信息</p></h4>
+                        <div class="form-group">
+                            <label  class="col-sm-2 control-label" for="name">菜单:</label>
+                            <div class="col-sm-4">
+                                <input type="text" name="s_code" class="form-control"
+                                       placeholder="请输菜单名称">
+                            </div>
+                            <div class="col-sm-4">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label  class="col-sm-2 control-label" for="name">位置:</label>
+                            <div class="col-sm-1">
+                                <input type="number" name="s_position" class="form-control"  placeholder="展示从小到大">
+                            </div>
+                            <div style="display: flex;align-items: center;">
+                                <label class="col-sm-2 control-label" for="name">展示:</label>
+                                <div class="col-sm-1">
+                                    <input type="checkbox" name="s_show" class="form-control2">
+                                </div>
+                            </div>
+                        </div>
+                        <div class="form-group" style="display: flex;align-items: center;">
+                            <label  class="col-sm-2 control-label" for="name">标签:</label>
+                            <div class="col-sm-2">
+                                <input type="radio" name="topTag" value="noTag"> 无
+                            </div>
+                            <div class="col-sm-2">
+                                <input type="radio" name="topTag" value="dotTag"> 红点
+                            </div>
+                            <div class="col-sm-2">
+                                <input type="radio" name="topTag" value="hotTag"> HOT
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label  class="col-sm-2 control-label" for="name">链接:</label>
+                            <div class="col-sm-4">
+                                <input type="text" name="link" class="form-control" placeholder="跳转链接">
+                            </div>
+                            <div class="col-sm-4">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label  class="col-sm-2 control-label" for="name">CSS Style:</label>
+                            <div class="col-sm-4">
+                                <input type="text" name="style" class="form-control" placeholder="请输入Css代码 多个用;分割">
+                            </div>
+                            <div class="col-sm-4">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label  class="col-sm-2 control-label" for="name">Document Attr:</label>
+                            <div class="col-sm-4">
+                                <textarea type="text" name="attr" class="form-control" placeholder="存入节点属性 如新打开Tab页面 多个空格分割"></textarea>
+                            </div>
+                            <div class="col-sm-4">
+                            </div>
+                        </div>
+                        <div class="form-group" style="display: flex;align-items: center;">
+                            <label  class="col-sm-2 control-label" for="name">展示风格:</label>
+                            <div class="col-sm-2">
+                                <input type="radio" name="flex" value="column"> 列子菜单
+                            </div>
+                            <div class="col-sm-2">
+                                <input type="radio" name="flex" value="row"> 行子菜单
+                            </div>
+                        </div>
+                        <div id="son">
+                            <h4>
+                                <p style="font-weight:bold; border-bottom:2px solid #98D6DC; padding-bottom:20px; margin-top:20px;height:40px;line-height:40px;"
+                                   class="text-left"><span class="pull-left">子菜单列表</span>
+                                    <input type="button" class="btn btn-success pull-right" onClick="addson()" value="添加子菜单">
+                                </p></h4>
+                        </div>
+
+                        <div class="form-group">
+                            <label id="col-sm-2" class="col-sm-2 control-label"></label>
+                            <div class="col-sm-6" style="margin-bottom:50px; margin-top:50px;">
+                                <input type="button" class="btn btn-success " onClick="savead()" value=" 提 交 ">
+                            </div>
+                            <div class="col-sm-4">
+                            </div>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+</div>
+<div id="upload" style="display: none;"></div>
+{{include "/common/bottom.html"}}
+<style>
+.sonad{
+	border:1px solid #DBCECE;
+	padding:10px;
+	margin:15px 0;
+}
+.tool button{
+	margin:0 10px 10px 0;
+}
+</style>
+<script type="text/javascript">
+var obj={{.T}},_id;
+$(function(){
+	if(obj["_id"]){
+		_id=obj["_id"];
+		$("[name='s_code']").val(obj["title"]);
+		$("[name='s_position']").val(obj["i_sort"]);
+        $("[name='link']").val(obj["link"]);
+        $("[name='style']").val(obj["style"]);
+        $("[name='attr']").val(obj["attr"]);
+        $("[name='s_show']").attr("checked",obj["i_status"]==1)
+        switch (obj["tag"]){
+            case "hotTag":
+                $("[value='hotTag']").attr("checked","checked");
+                break
+            case "dotTag":
+                $("[value='dotTag']").attr("checked","checked");
+                break
+            default :
+                $("[value='noTag']").attr("checked","checked");
+        }
+
+		$(obj["child"]).each(function(i,ad){
+			var temp=addson();
+			$(["title","link","tag","attr","style","icon"]).each(function(k,s){
+				if(ad[s]){
+					$("[name='"+s+"']",temp).val(ad[s]);
+					if(s=="icon"){
+						temp.find(".viewimg").attr("src",ad[s]);
+					}
+				}
+			})
+			if(ad["o_extend"]){
+				$("[name='o_extend']",$(temp)).val(sy.jsonToString(ad["o_extend"],1).replace(/^\{|\}$/g,""));
+			}
+		})
+	}
+    if (obj["flex"]=="row"){
+        $("[value='row']").attr("checked","checked");
+    }else {
+        $("[value='column']").attr("checked","checked");
+    }
+    $("[name='flex']").on("click",function (){
+        styleDisable()
+    })
+    styleDisable()
+})
+function styleDisable(){
+    $("[name='icon']").removeAttr("disabled")
+    $("[name='tag']").removeAttr("disabled")
+    $("#uploadBtn").removeAttr("disabled")
+    if($("[name='flex']:checked").val()=="row"){
+        $("[name='tag']").attr("disabled","disabled");
+    }else {
+        $("[name='icon']").attr("disabled","disabled");
+        $("#uploadBtn").attr("disabled","disabled");
+    }
+}
+//添加子广告的模板
+var template='<div class="sonad">'
+		+'<div class="tool"><button type="button" class="btn btn-primary num"></button>'
+		+'<button type="button" onClick="delson(this)" class="btn btn-primary del">删除</button><button onClick="upson(this)" type="button" class="btn btn-primary up">上移</button></div>'
+		+'<div class="form-group">'
+        +'<label id="col-sm-2" class="col-sm-2 control-label" for="name">标题:</label>'
+	    +'<div class="col-sm-4">'
+        +'<input  type="text" name="title"  class="form-control" placeholder="菜单标题">'
+		+'</div>'
+		+'<div class="col-sm-4">'
+		+'</div>'
+		+'</div>'
+
+		+'<div class="form-group">'
+        +'<label id="col-sm-2" class="col-sm-2 control-label" for="name">标签:</label>'
+	    +'<div class="col-sm-4">'
+        +'<input  type="text" name="tag"  class="form-control" placeholder="请输入菜单Tag">'
+		+'</div>'
+		+'<div class="col-sm-4">'
+		+'</div>'
+		+'</div>'
+
+		+'<div class="form-group">'
+        +'<label id="col-sm-2" class="col-sm-2 control-label" for="name">Icon:</label>'
+	    +'<div class="col-sm-4">'
+        +'<input  type="text" name="icon"  class="form-control pic"  placeholder="请上传图片">'
+		+'</div>'
+		+'<div class="col-sm-4"><button type="button" id="uploadBtn" class="btn btn-primary" onClick="uploadPic(this)">上传</button>'
+		+'<img class="viewimg" alt="预览" onClick="view(this)" style="margin-left:30px;width:35px;height:35px;" /></div>'
+		+'</div>'
+
+		+'<div class="form-group">'
+        +'<label id="col-sm-2" class="col-sm-2 control-label" for="name">菜单链接:</label>'
+	    +'<div class="col-sm-4">'
+        +'<input  type="text" name="link"  class="form-control" placeholder="请输入跳转链接">'
+		+'</div>'
+		+'<div class="col-sm-4">'
+		+'</div>'
+		+'</div>'
+
+		+'<div class="form-group">'
+        +'<label id="col-sm-2" class="col-sm-2 control-label" for="name">Document Attr:</label>'
+	    +'<div class="col-sm-10">'
+        +"<input  type='text' name='attr'  class='form-control' placeholder='存入节点属性 如新打开Tab页面 多个空格分割'>"
+		+'</div>'
+		+'</div>'
+
+		+'<div class="form-group">'
+        +'<label id="col-sm-2" class="col-sm-2 control-label" for="name">CSS Style:</label>'
+	    +'<div class="col-sm-10">'
+        +'<textarea name="style" style="height:150px;width: 100%" class="form-control" placeholder="请输入Css代码 多个用;分割"></textarea>'
+		+'</div>'
+		+'<div class="col-sm-4">'
+		+'</div>'
+		+'</div>'
++'</div>';
+
+//获取图片的真实宽高
+function getNaturalWH(src){
+	    var image = new Image();
+	    image.src = src;
+	    return [image.width+10,image.height+10];
+}
+//预览上传的图片
+function view(obj){
+	var src=obj.src
+	if(!src){
+		alert("请先上传图片");
+	}
+	if($("#tooltip1").size()>0){
+		$("#tooltip1").remove()
+	}else{
+		var nimg=getNaturalWH(src);
+		var mt=$(document).scrollTop();
+		var tw1=nimg[0],th1=nimg[1];
+		var tooltip = "<div id='tooltip1' style='border:1px solid gray;width:"+tw1+"px;height:"+th1+"px;padding:0;overflow:auto'><img src='" + src + "'/></div>";
+		$("body").append(tooltip);
+		var smargin=(mt-(parseInt(th1)/2))+"px 0px 0px -"+(parseInt(tw1)/2)+"px";
+		$("#tooltip1").css({
+			"position":"absolute",
+			"z-index":2000,
+			"margin":smargin,
+			"top":"50%",
+			"left":"50%"
+		}).show("fast").click(function(e){
+			$("#tooltip1").remove()
+		});
+	}
+}
+//上传按钮
+function initUpload(flag,obj){
+	var option={
+			btnname:"上传",
+			action:"/filemanage/upload",
+			btnClass:"",
+			afterError:function(data,e){
+				alert("上传失败,请重新上传。");
+			},
+			afterUpload:function(data){ //此处可以重写,上传后的处理
+				if(data.flag == true){
+					$(obj).closest(".form-group").find("input.pic").val(data.url);
+					$(obj).closest(".form-group").find(".viewimg").attr("src",data.url);
+				}else{
+					alert(data.msg)
+				}
+		 	}
+		};
+	try{
+		$("#upload").upload(option,"",flag);
+	}catch(e){}
+}
+//上传图片
+function uploadPic(obj){
+		$("#upload").upload("reset");
+		initUpload(1,obj);
+		$("#upload input[type='file']").attr("accept",".jpg,.png,.jpeg").trigger("click");
+}
+//重置序列号
+function resetNum(){
+	$("#son div.sonad .num").each(function(i){$(this).text("序号:"+(i+1));})
+}
+
+//添加子广告
+function addson(){
+	var t=$(template);
+	$("#son").append(t);
+	resetNum();
+    styleDisable()
+	return t;
+}
+
+//删除子广告
+function delson(obj){
+	$(obj).closest(".sonad").remove();
+	resetNum();
+}
+
+//上移子广告
+function upson(obj){
+	var _t=$(obj).closest(".sonad");
+	var _p=_t.prev(".sonad");
+	if(_p.size()==1){
+		_t.insertBefore(_p);
+	}else{
+		_t.appendTo("#son");
+	}
+	resetNum();
+}
+sy={}
+sy.jsonToString = function(o,f) {
+	var r = [];
+	if (typeof o == "string")
+		return "\"" + o.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\"";
+	if (typeof o == "object") {
+		if (!o.sort) {
+			for ( var i in o)
+				r.push((f?i:("\""+i + "\"")) +":"+ sy.jsonToString(o[i]));
+			if (!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)) {
+				r.push("toString:" + o.toString.toString());
+			}
+			r = "{" + r.join() + "}";
+		} else {
+			for (var i = 0; i < o.length; i++)
+				r.push(sy.jsonToString(o[i]));
+			r = "[" + r.join() + "]";
+		}
+		return r;
+	}
+	return o?o.toString():"";
+};
+
+//保存广告信息
+function savead(){
+	var sonad=[];
+	var con=true;
+	$(".sonad").each(function(i,ad){
+		var temp={};
+		$(["title","link","tag","attr","style","icon"]).each(function(k,s){
+			var t=$("[name='"+s+"']",$(ad)).val()
+			if(t) temp[s]=t;
+		})
+		// var o_extend=$("[name='o_extend']",$(ad)).val()
+		// if(o_extend){
+		// 	$(o_extend.split(",")).each(function(m,a1){
+		// 		if(!(/^[a-z0-9]+\:\"[a-z0-9\u4e00-\u9fa5\-./_,。,、]+\"$/i.test(a1))){
+		// 			con=false;
+		// 			alert("扩展属性格式不正确");
+		// 			return false;
+		// 		}
+		// 	})
+		// 	temp["o_extend"]=eval("({"+o_extend+"})")
+		// }
+		// if(!con){
+		// 	return false;
+		// }
+		sonad.push(temp);
+	})
+	if(!con){
+		return;
+	}
+	var param={}
+	param["s_title"]=$("[name='s_code']").val();
+	param["i_sort"]=$("[name='s_position']").val();
+    param["s_show"]=$("[name='s_show']").is(":checked")?1:0;
+    param["tag"]=$("[name='topTag']:checked").val();
+    param["link"]=$("[name='link']").val();
+    param["style"]=$("[name='style']").val();
+    param["attr"]=$("[name='attr']").val();
+    param["flex"]=$("[name='flex']:checked").val();
+	param["a_son"]=sy.jsonToString(sonad);
+	if(_id){
+		param["_id"]=_id;
+	}
+    $.ajax({
+        type:'post',
+        url:'/manage/menuSave',
+        data:param,
+        cache:false,
+        dataType:'json',
+        success:function(data){
+		    Dialog.alert(data.msg,function(){
+                location.href ="/manage/menu"
+            });
+        }
+    });
+}
+</script>
+</body>
+</html>

+ 141 - 0
core/src/web/templates/manage/menu/list.html

@@ -0,0 +1,141 @@
+<html>
+<head>
+<title>菜单管理</title>
+{{include "/common/inc.html"}}
+<style type="text/css">
+#content table{
+table-layout: fixed;
+border:0px;
+font-size:14px;
+}
+.table>thead>tr>th:nth-child(1){
+width:25%;
+}
+.table>thead>tr>th:nth-child(2){
+width:25%;
+}
+.table>thead>tr>th:nth-child(5){
+width:15%;
+}
+.table>thead>tr>th:nth-child(6){
+width:7%;
+}
+.table>thead>tr>th{
+border:0px;
+}
+.table>tbody>tr>td{
+white-space: nowrap;
+text-overflow: ellipsis;
+overflow: hidden;
+border:0px;
+border-bottom:1px dashed #999999;
+}
+#sidebar { margin-left:0px;}
+#ad{background-color: #f5f5f5;}
+</style>
+</head>
+<body>
+{{include "/manage/audithead.html"}}
+<div class="row" style="width:96%; margin:0 auto;">
+
+<div  style="margin-top:10px;" >
+{{include "/manage/slider.html"}}
+
+<div id="content">
+<!-- 中间 -->
+<script>
+    $(function () {
+        $("#audit").datatable({
+            perPage: 10 ,
+            showPagination: true ,
+            checkbox: "" ,
+            checkboxHeader: false ,
+            idField: "_id" ,
+            classname: "table-hover" ,
+            css: {"height": "450px"} ,
+            tipmsg: "没有菜单,请添加菜单。" ,
+            toolbarCss: {"text-align": "right"} ,
+            buttons: ['<div style="margin:5px 20px" ><span><a ><span id="delCache" onclick="delCache()" class="btn btn-info" >清除菜单缓存</span></a><a style="margin-left:10px" href="/manage/menuAdd"><button class="btn btn-info" type="button">添加剑鱼菜单</button></a></span></div>'],
+            url: '/manage/menuList' ,
+            columns: [
+                {
+                    title: "代码"
+                    , field: "title"
+                    , callback: function (ct, cd, val, k, m) {
+                        var v = ct["title"];
+                        var id = ct["_id"]
+                        v = "<a href='/manage/menuAdd?id=" + id + "'>" + v + "</a>"
+                        return v
+                    }
+                },{
+                    title: "是否展示"
+                    , field: "i_status",
+                    callback: function (ct, cd, val, k, m) {
+                        if (ct["i_status"]) {
+                            return "展示"
+                        }
+                        return "隐藏"
+                    }
+                },
+                {
+                    title: "排序"
+                    , field: "i_sort"
+                },
+                {
+                    title: "创建时间"
+                    , field: "l_createdate"
+                },
+                {
+                    title: "修改时间"
+                    , field: "l_modifydate"
+                },
+                {
+                    title: "删除"
+                    , field: "_status"
+                    , callback: function (ct) {
+                        return "<i onclick='delMenu(\"" + ct["_id"] + "\",\"" + ct["title"] + "\")' class='glyphicon glyphicon-minus text-primary' style='font-size:20px;cursor:pointer'></i>"
+                    }
+
+                }
+            ]
+        });
+})
+function delMenu(id,position){
+	if(confirm("确定要删除广告:"+position+"吗?")){
+		$.post('/manage/menuDelete',{id:id},function(data){
+			if(data){
+				if(data.success==true){
+					var find=$("#audit").data("datatable")
+					if(!find.options.opost) find.options.opost=find.options.post||{};
+					find.options.currentPage=1
+					find.render();
+					alert("删除成功")
+				}else{
+					alert("删除失败")
+				}
+			}
+		},'json')
+	}
+}
+
+//index detail
+function delCache(){
+  	$.post('/manage/delMenuCache',function(data){
+      if (data.status){
+        alert("清除成功");
+      }else{
+        alert("清除失败");
+      }
+	});
+}
+
+
+</script>
+<div id="audit"></div>
+</div>
+</div>
+</div>
+{{include "/common/bottom.html"}}
+<script src="/js/qfwtable.js"></script>
+</body>
+</html>

+ 159 - 98
core/src/web/templates/manage/newscontent.html

@@ -23,7 +23,7 @@
   <script src="{{Msg "seo" "cdn"}}/js/html5shiv.min.js"></script>
   <script src="{{Msg "seo" "cdn"}}/js/respond.min.js"></script>
 <![endif]-->
- 
+
 <style type="text/css">
 #_Container_0{
 background-color:#FFFFFF;
@@ -52,10 +52,10 @@ border:1px solid #999999;
 #tr11 td img{
 border:1px solid #999999;
 }
-.delbtn img{ 
-height:15px; 
-width:15px; 
-margin-right:-20px; 
+.delbtn img{
+height:15px;
+width:15px;
+margin-right:-20px;
 margin-top:-8px;
 }
 .delbtn{
@@ -65,10 +65,10 @@ margin-top:-8px;
 	background-color:#00ffff;
 	cursor:pointer;
 }
-.delbtn1 img{ 
-height:15px; 
-width:15px; 
-margin-right:-20px; 
+.delbtn1 img{
+height:15px;
+width:15px;
+margin-right:-20px;
 margin-top:-8px;
 }
 .delbtn1{
@@ -89,12 +89,12 @@ margin-top:-8px;
 <div class="row" style="width:96%; margin:0 auto; margin-top:10px;">
 <div>
 {{include "/manage/slider.html"}}
-	
+
 		<div id="content">
 			<!-- 文章内容 -->
 			<div id="first" class="container-fluid">
 				<div style="margin-top:0px;" class="row-fluid">
-					<div class="span12">		
+					<div class="span12">
 						<div class="widget-box">
 							<div class="widget-content nopadding">
 							<div style="width:90%; margin:auto; margin-bottom:80px;">
@@ -103,7 +103,7 @@ margin-top:-8px;
 							<span><button class="btn btn-info" onClick="window.open('{{.T.s_preurl}}')" type="button">预览</button></span>{{end}}
 							<span style="margin-left:15px;"><button class="btn btn-info" onClick="editarticle();" type="button">编辑</button></span>
 							<span style="margin-left:15px;"><button class="btn btn-info" onClick="delearticle();" type="button">删除</button></span></div>
-							
+
 							<h4><p style="font-weight:bold; border-bottom:1px dashed #98D6DC; padding-bottom:20px;" class="text-center">{{.T.s_title}}</p></h4>
 							<div>
 							<p style="font-size:12px; margin-bottom:30px;" class="text-center">{{if eq .T.s_author ""}}发布人:{{.T.s_editorname}}{{else}}作者:{{.T.s_author}}{{end}}    发布日期: {{if not .T.releasetime}}{{.T.l_createdate}} {{else}} {{.T.releasetime}}{{end}}   (文章来源:<a style="font-size:14px; color:#0000FF;" target="_blank"  href="{{.T.s_url}}">{{.T.s_source}}</a>)</p>                 </div>
@@ -118,7 +118,7 @@ margin-top:-8px;
 				</div>
 
 			</div>
-			
+
 		<!-- 修改文章 -->
 		<div id="second"  style="display: none;" class="widget-box">
 		<div class="widget-content nopadding">
@@ -133,7 +133,7 @@ margin-top:-8px;
 		<div class="col-sm-4">
 		</div>
 		</div>
-		
+
 		<div class="form-group">
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">文章来源:</label>
 	    <div class="col-sm-2">
@@ -143,7 +143,7 @@ margin-top:-8px;
 		<input  type="text" name="s_url" class="form-control " placeholder="URL" value="{{.T.s_url}}">
 		</div>
 		</div>
-	  
+
 		<div class="form-group">
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">文章作者:</label>
 	    <div class="col-sm-2">
@@ -152,7 +152,7 @@ margin-top:-8px;
 		<div class="col-sm-4 text-center">
 		</div>
 		</div>
-		
+
 	    <div class="form-group">
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">文章内容:</label>
 	    <div class="col-sm-10">
@@ -178,15 +178,15 @@ margin-top:-8px;
 			 afterBlur: function(){
 					this.sync()
 				}
-			 });		
+			 });
 			}
 			kindEditInit()
 		  })
-		  </script> 
+		  </script>
 		  <input type="text" hidden="none" name="praise"   value="{{.T.praise}}"/>
 		</div>
 	    </div>
-		
+
 	  <div class="form-group">
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">关键词:</label>
 	    <div class="col-sm-6">
@@ -195,7 +195,7 @@ margin-top:-8px;
 		<div class="col-sm-4">
 		</div>
 		</div>
-		
+
 		<div class="form-group">
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">简单描述:</label>
 	    <div class="col-sm-6">
@@ -205,7 +205,7 @@ margin-top:-8px;
 		<div class="col-sm-4">
 		</div>
 		</div>
-		
+
 		<!--<div class="form-group" style="display:none;">
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">文章摘要:</label>
 	    <div class="col-sm-6">
@@ -214,62 +214,123 @@ margin-top:-8px;
 		<div class="col-sm-4">
 		</div>
 		</div>-->
-		
-		<div class="form-group" >
-        <label id="col-sm-2" class="col-sm-2 control-label" for="name">头图:</label>
-	    <div class="col-sm-8">
-				<div id="pic">
-					 <table id="table1"><tr id="tr1"></tr></table>
-			    </div>
-					<input type="hidden" value='{{.T.s_pic}}' name="s_pic" id="imgurl"/> 
-				<div id="mm" style="position:relative;"><span style="color:#999999; display:inline-block; position:absolute; left:80px; top:5px;"> 图片尺寸750*420</span></div>
-		</div>
-		<div class="col-sm-2">
-		</div>
-		</div>
-		
+
 		<div class="form-group" >
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">示例图片:</label>
 	    <div class="col-sm-8">
 				<div id="pic1">
 					 <table id="table11"><tr id="tr11"></tr></table>
 			    </div>
-					<input type="hidden" value="{{if .T.s_pic1}}{{.T.s_pic1}}{{end}}" name="s_pic1" id="imgurl1"/> 
+					<input type="hidden" value="{{if .T.s_pic1}}{{.T.s_pic1}}{{end}}" name="s_pic1" id="imgurl1"/>
 				<div id="mm1" style="position:relative;"><span style="color:#999999; display:inline-block; position:absolute; left:80px; top:5px;"> 图片尺寸250*250</span></div>
 		</div>
 		<div class="col-sm-2">
 		</div>
 		</div>
-		
+
 		<div class="form-group">
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">发布时间:</label>
-	    <div class="col-sm-3">		
-        <input style="background:#fff url({{Msg "seo" "cdn"}}/images/datePicker.gif) no-repeat right;"  id="releasetime"  datatype="*" 
+	    <div class="col-sm-3">
+        <input style="background:#fff url({{Msg "seo" "cdn"}}/images/datePicker.gif) no-repeat right;"  id="releasetime"  datatype="*"
 		onFocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" type="text" name="releasetime" class="form-control" placeholder="请输入发布时间!" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" readonly="ture" value="{{.T.releasetime}}"/>
 		</div>
 		<div class="col-sm-4">
 		</div>
 		</div>
-		
+
         <div class="form-group">
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">选择栏目:</label>
 		<div class="col-sm-2">
-        <select name="s_contenttype" class="form-control">
-		<option value="qykb" {{if  eq .T.s_contenttype "qykb"}} selected="selected" {{end}}> 企业网快报 </option>
-		<!--<option value="hyzx" {{if  eq .T.s_contenttype "hyzx"}} selected="selected" {{end}}> 行业资讯 </option>
-		<option value="mtpj" {{if  eq .T.s_contenttype "mtpj"}} selected="selected" {{end}}> 媒体评价 </option>-->
-		<option value="zcfg" {{if  eq .T.s_contenttype "zcfg"}} selected="selected" {{end}}> 政策法规 </option>
-		<option value="zthd" {{if  eq .T.s_contenttype "zthd"}} selected="selected" {{end}}> 专题活动 </option>
-		<option value="zh" {{if  eq .T.s_contenttype "zh"}} selected="selected" {{end}}> 展会 </option>
-		<option value="qtlm" {{if  eq .T.s_contenttype "qtlm"}} selected="selected" {{end}}> 其他栏目 </option>
-		<option value="wxlm" {{if  eq .T.s_contenttype "wxlm"}} selected="selected" {{end}}> 微信栏目 </option>
-		<option value="zhsk" {{if  eq .T.s_contenttype "zhsk"}} selected="selected" {{end}}> 知识库 </option>
-		<option value="jybk" {{if  eq .T.s_contenttype "jybk"}} selected="selected" {{end}}> 剑鱼博客 </option>
-		<option value="appxxtz" {{if  eq .T.s_contenttype "appxxtz"}} selected="selected" {{end}}> APP消息通知 </option>
-		<option value="gsdt" {{if  eq .T.s_contenttype "gsdt"}} selected="selected" {{end}}> 公司动态 </option>
-		<option value="hyzc" {{if  eq .T.s_contenttype "hyzc"}} selected="selected" {{end}}> 行业政策 </option>
-		</select>
-		</div>
+			<select name="s_contenttype" id="selectlanmu" class="form-control" onchange="
+				if(this.value != '')
+					setCity(this.options[this.selectedIndex].value);">
+				{{range .T.parentColumn }}
+				<option value="{{.columnCode}}"> {{.columnName}} </option>
+				{{end}}
+			</select>
+		</div>
+		<div  class="col-sm-2">
+			<select name="secondClassify" id="classify" class="form-control" style="display: none;" hidden onchange="
+		if(this.value != '')
+			setColumn(this.options[this.selectedIndex].value);">
+				<option value="0">-请选择-</option>
+			</select>
+		</div>
+		<div  class="col-sm-2">
+			<select name="threeClassify" id="threeClassify" class="form-control" style="display: none;" hidden>
+				<option value="0">-请选择-</option>
+			</select>
+		</div>
+		<script>
+
+			var classifyArr = {{.T.childColumn}};
+			$("select[name='s_contenttype'] option[value='" + {{.T.s_contenttype}}+ "']").attr("selected", true);
+
+			function setCity(oneLevel) {
+				console.log("---------",oneLevel);
+				var classify = document.getElementById('classify');
+				var classify_len = classify.options.length;
+				for (var i = 0; i < classify_len; i++) {
+					if (classify_len > 0) {
+						classify.options.remove(0);
+					}
+				}
+
+				if (oneLevel == "0") {
+					var opt = new Option('-请选择-', 0);
+					classify.options.add(opt);
+				} else {
+					$('#threeClassify').css('display','none')
+					if (classifyArr[oneLevel] === undefined){
+						$('#classify').css('display','none')
+						return
+					}
+					var pro_len = classifyArr[oneLevel].length;
+					var text_1 = document.getElementById("classify");
+
+					$('#classify').css('display','block')
+					text_1. hidden =false; //显示元素
+					for (i = 0; i < pro_len; i++) {
+						var opt = new Option(classifyArr[oneLevel][i].columnName, classifyArr[oneLevel][i].columnCode);
+						classify.options.add(opt);
+					}
+				}
+				$("select[name='secondClassify'] option[value='" + {{.T.s_secondclassifytype}}+ "']").attr("selected", true);
+			}
+			setCity({{.T.s_contenttype}})
+			function setColumn(province) {
+				var city = document.getElementById('threeClassify');
+				var city_len = city.options.length;
+				for (var i = 0; i < city_len; i++) {
+					if (city_len > 0) {
+						city.options.remove(0);
+					}
+				}
+
+				if (province == "0") {
+					var opt = new Option('-请选择-', 0);
+					city.options.add(opt);
+				} else {
+					// console.log("子栏目", classifyArr[province])
+					if (classifyArr[province] === undefined){
+						$('#threeClassify').css('display','none')
+						return
+					}
+					var province_len = classifyArr[province].length;
+					var text_1 = document.getElementById("threeClassify");
+
+					$('#threeClassify').css('display','block')
+					text_1. hidden =false; //显示元素
+					for (i = 0; i < province_len; i++) {
+						var opt = new Option(classifyArr[province][i].columnName, classifyArr[province][i].columnCode);
+						city.options.add(opt);
+					}
+				}
+				console.log({{.T.s_threeclassifytype}},"00000")
+				$("select[name='threeClassify'] option[value='" + {{.T.s_threeclassifytype}}+ "']").attr("selected", true);
+			}
+			setColumn({{.T.s_secondclassifytype}})
+		</script>
 		</div>
 		<div class="form-group">
         <label id="col-sm-2" class="col-sm-2 control-label" for="name">修改记录:</label>
@@ -288,7 +349,7 @@ margin-top:-8px;
 		</div>
 		</div>
 		</div>
-	
+
 	</div>
 </div>
 </div>
@@ -296,10 +357,10 @@ margin-top:-8px;
 <script type="text/javascript">
 
 var img = document.createElement('img');
-var urls = ""; 
-var urls1 = ""; 
-var x = 0; 
-var y = 0; 
+var urls = "";
+var urls1 = "";
+var x = 0;
+var y = 0;
 var str='str';
 img.className="imgs";
 {{if .T.s_pic}}
@@ -335,7 +396,7 @@ img.className="imgs";
 {{end}}
 
 
-$(function(){	
+$(function(){
 	var option={
 		btnname:"图片上传",//按钮名
 		btnClass:"btn btn-info",
@@ -382,8 +443,8 @@ $(function(){
 			  }
 		 }
 	};
-	$("#mm").upload(option);	
-		
+	$("#mm").upload(option);
+
 })
 
 {{if .T.s_pic1}}
@@ -418,7 +479,7 @@ $(function(){
 	}
 {{end}}
 
-$(function(){	
+$(function(){
 	var option={
 		btnname:"图片上传",//按钮名
 		btnClass:"btn btn-info",
@@ -465,12 +526,12 @@ $(function(){
 			  }
 		 }
 	};
-	$("#mm1").upload(option);	
-		
+	$("#mm1").upload(option);
+
 })
 </script>
 <script type="text/javascript">
-//var subcontent = $("<div/>").html($(".summernote").text()).text().substr(0,200); 
+//var subcontent = $("<div/>").html($(".summernote").text()).text().substr(0,200);
 //$("#s_subcontent").val(subcontent);
   function editarticle(){
    $("#first").css("display","none");
@@ -481,7 +542,7 @@ $(function(){
    $("#first").css("display","block");
  }
  var clickCount = 0;
-function updatearticle(){ 
+function updatearticle(){
     if (clickCount > 0){
 		alert("您已经提交过了!!!");
 		return ;
@@ -505,7 +566,7 @@ function updatearticle(){
 	if (str4 == ''){
 	alert('文章描述不能为空!')
 	return
-	} 
+	}
 	var str5 = $("#releasetime").val();
 	if (str5 == ''){
 	alert('文章发布时间不能为空!')
@@ -514,42 +575,42 @@ function updatearticle(){
     //序列化表格内容为字符串
 	//$("#s_abstract").val($('#s_description').val());
 	//$("#s_content").val($('.summernote').code());
-	//var subcontent = $("<div/>").html($(".summernote").code()).text().substr(0,200); 
+	//var subcontent = $("<div/>").html($(".summernote").code()).text().substr(0,200);
 	//$("#s_subcontent").val(subcontent);
     var Param = $("#updatearticle").serialize();
-    $.ajax({    
-        type:'post',        
-        url:'/manage/updatearticle',    
-        data:Param,    
-        cache:false,    
-        dataType:'json', 
+    $.ajax({
+        type:'post',
+        url:'/manage/updatearticle',
+        data:Param,
+        cache:false,
+        dataType:'json',
         success:function(data){
-			Dialog.alert(data.msg,function(){location.href ="/manage/articlelist"}); 
-        }    
-        });   
-	clickCount++;  
-	} 
-	
- function delearticle(){    
+			Dialog.alert(data.msg,function(){location.href ="/manage/articlelist"});
+        }
+        });
+	clickCount++;
+	}
+
+ function delearticle(){
 	Dialog.confirm('警告:您确认要删除吗?',function(){
-    $.ajax({    
-        type:'post',        
-        url:'/manage/delearticle',    
-        data:{_id:'{{.T._id}}',s_contenttype:{{.T.s_contenttype}}},    
-        cache:false,    
-        dataType:'json', 
+    $.ajax({
+        type:'post',
+        url:'/manage/delearticle',
+        data:{_id:'{{.T._id}}',s_contenttype:{{.T.s_contenttype}}},
+        cache:false,
+        dataType:'json',
         success:function(data){
-			Dialog.alert(data.msg,function(){location.href ="/manage/articlelist"}); 
-        }    
-        });    
+			Dialog.alert(data.msg,function(){location.href ="/manage/articlelist"});
+        }
+        });
 	})
-	
+
 	}
-//禁止右键弹出菜单           
-//$(document).ready(function() { 
+//禁止右键弹出菜单
+//$(document).ready(function() {
 //$(document).bind("contextmenu",function(e) {
-//return false; 
-//}); 
+//return false;
+//});
 //});
 </script>
 </body>