瀏覽代碼

站点列表更新

maxiaoshan 1 年之前
父節點
當前提交
51b6021804

+ 5 - 2
src/front/front.go

@@ -83,7 +83,7 @@ type Front struct {
 	getCity xweb.Mapper `xweb:"/center/getCity"` //获取城市
 }
 
-const Sp_state_0, Sp_state_1, Sp_state_2, Sp_state_3, Sp_state_4, Sp_state_5, Sp_state_6, Sp_state_7 = 0, 1, 2, 3, 4, 5, 6, 7 //0待完成,1待审核,2打回,3发布,4作废,5已上架,6已下架,7其他
+const Sp_state_0, Sp_state_1, Sp_state_2, Sp_state_3, Sp_state_4, Sp_state_5, Sp_state_6, Sp_state_7, Sp_state_8, Sp_state_9, Sp_state_10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 //0待完成,1待审核,2打回,3发布,4作废,5已上架,6已下架,7无发布,8需登录,9转python,10已删除
 
 var LuaReg = regexp.MustCompile(`(:(find|match)|string\.|com\.getPureContent)`)
 var spinfos sync.Map = sync.Map{}
@@ -489,7 +489,10 @@ func (f *Front) Spidernew() error {
 	}
 	f.T["isflow"] = 1 //新建爬虫时,初始化isflow的值
 	f.T["actiontext"] = "新建"
-	f.T["restate"] = 4 //此处设置restate=4无意义,只为了页面不报错
+	f.T["restate"] = 4            //此处设置restate=4无意义,只为了页面不报错
+	f.T["areas"] = u.Area         //
+	f.T["citys"] = u.City         //
+	f.T["provinces"] = u.Province //
 	return f.Render("spideredit.html", &f.T)
 }
 

+ 36 - 12
src/front/site.go

@@ -18,13 +18,13 @@ import (
 
 type Site struct {
 	*xweb.Action
-	siteList        xweb.Mapper `xweb:"/center/site/sitelist"`        //控制中心
-	saveSite        xweb.Mapper `xweb:"/center/site/savesite"`        //新增站点
-	importSite      xweb.Mapper `xweb:"/center/site/importsite"`      //导入站点
-	deleteSite      xweb.Mapper `xweb:"/center/site/delete"`          //删除站点
-	getLuas         xweb.Mapper `xweb:"/center/site/getluas/(.*)"`    //
-	getLuasBySite   xweb.Mapper `xweb:"/center/site/getluasbysite"`   //
-	updateImportant xweb.Mapper `xweb:"/center/site/updateimportant"` //更新是否为重点网站
+	siteList      xweb.Mapper `xweb:"/center/site/sitelist"`      //控制中心
+	saveSite      xweb.Mapper `xweb:"/center/site/savesite"`      //新增站点
+	importSite    xweb.Mapper `xweb:"/center/site/importsite"`    //导入站点
+	deleteSite    xweb.Mapper `xweb:"/center/site/delete"`        //删除站点
+	getLuas       xweb.Mapper `xweb:"/center/site/getluas/(.*)"`  //
+	getLuasBySite xweb.Mapper `xweb:"/center/site/getluasbysite"` //
+	updateSite    xweb.Mapper `xweb:"/center/site/updatesite"`    //更新是否为重点网站
 }
 
 func (s *Site) SiteList() {
@@ -100,6 +100,8 @@ func (s *Site) SiteList() {
 		s.T["events"] = events
 		s.T["sitetypes"] = sp.Config.SiteType
 		s.T["areas"] = util.Area
+		s.T["provinces"] = util.Province
+		s.T["citys"] = util.City
 		s.Render("sitelist.html", &s.T)
 	}
 }
@@ -136,7 +138,7 @@ func (s *Site) SaveSite() {
 	f_city := s.GetString("f_city")         //发布城市
 	f_district := s.GetString("f_district") //发布区县
 
-	tmpdomain, status, event, platform, infotype, remarktime := util.GetLuasInfoBySite(site, area, city, district)
+	tmpdomain, status, event, platform, infotype, _, remarktime := util.GetLuasInfoBySite(site, area, city, district)
 	if domain == "" {
 		domain = tmpdomain
 	}
@@ -220,7 +222,7 @@ func (s *Site) ImportSite() {
 				site_type := r.Cells[7].Value
 				p_site := r.Cells[8].Value
 				s_site := r.Cells[9].Value
-				tmpdomain, status, event, platform, infotype, remarktime := util.GetLuasInfoBySite(site, area, city, district)
+				tmpdomain, status, event, platform, infotype, specialtype, remarktime := util.GetLuasInfoBySite(site, area, city, district)
 				if domain == "" {
 					domain = tmpdomain
 				}
@@ -248,6 +250,9 @@ func (s *Site) ImportSite() {
 					"delete":        false,
 					"comeintime":    time.Now().Unix(),
 				}
+				if specialtype != "" {
+					save["special_type"] = specialtype
+				}
 				if id := util.MgoEB.Save(sp.Config.SiteColl, save); id == "" {
 					msg = "导入失败"
 				}
@@ -300,11 +305,30 @@ func (s *Site) GetLuasBySite() {
 	s.ServeJson(map[string]interface{}{"data": luas})
 }
 
-func (s *Site) UpdateImportant() {
+func (s *Site) UpdateSite() {
 	defer qu.Catch()
 	id := s.GetString("id")
-	important, _ := s.GetInteger("val")
-	if util.MgoEB.UpdateById("site", id, map[string]interface{}{"$set": map[string]interface{}{"important": important}}) {
+	val := s.GetString("val")
+	updatetype := s.GetString("updatetype")
+	update := map[string]interface{}{}
+	if updatetype == "important" { //重点
+		update["important"] = qu.IntAll(val)
+	} else if updatetype == "classone" { //一级类型
+		update["site_type"] = val
+		update["second_type"] = "" //更新一级类型,二级类型置空
+	} else if updatetype == "classtwo" { //二级类型
+		update["second_type"] = val
+	} else if updatetype == "area" { //发布省份
+		update["f_area"] = val
+		update["f_city"] = ""
+		update["f_district"] = ""
+	} else if updatetype == "city" { //发布城市
+		update["f_city"] = val
+		update["f_district"] = ""
+	} else if updatetype == "district" { //发布县区
+		update["f_district"] = val
+	}
+	if util.MgoEB.UpdateById("site", id, map[string]interface{}{"$set": update}) {
 		s.Write("y")
 		return
 	}

+ 29 - 14
src/front/spider.go

@@ -182,6 +182,9 @@ func (f *Front) LoadSpider(codeTaskIdReState string) error {
 				if (*lua)["oldlua"] != nil {
 					return f.Render("oldedit.html", &f.T)
 				}
+				f.T["areas"] = u.Area         //
+				f.T["citys"] = u.City         //
+				f.T["provinces"] = u.Province //
 				return f.Render("spideredit.html", &f.T)
 			}
 		} else {
@@ -229,6 +232,9 @@ func (f *Front) ViewSpider(id string) error {
 				if (*lua)["oldlua"] != nil {
 					return f.Render("oldedit.html", &f.T)
 				}
+				f.T["areas"] = u.Area         //
+				f.T["citys"] = u.City         //
+				f.T["provinces"] = u.Province //
 				return f.Render("spiderview.html", &f.T)
 			} else {
 				f.Write("没有对应记录!")
@@ -1221,26 +1227,34 @@ func (f *Front) Checktime() {
 //批量作废
 func (f *Front) Disables() error {
 	auth := qu.IntAll(f.GetSession("auth"))
-	names := strings.Split(f.GetString("names"), ",")
-	ids := strings.Split(f.GetString("ids"), ",")
+	events := strings.Split(f.GetString("events"), ",")
 	codes := strings.Split(f.GetString("codes"), ",")
 	disablereason := f.GetString("disablereason")
+	state, _ := f.GetInteger("state")
 	res := ""
-	if IsHasUpState(auth, Sp_state_4) {
-		for k, id := range ids {
-			b, err := UpStateAndUpSpider("", id, disablereason, "", Sp_state_4)
-			if b { //作废成功
+	if auth == u.Role_Admin {
+		for k, code := range codes {
+			//更新爬虫状态时爬虫下架
+			upresult, err := spider.UpdateSpiderByCodeState(code, "6", qu.IntAll(events[k])) //下架
+			qu.Debug("下架:", code, upresult)
+			if upresult && err == nil { //下架成功
+				//更新爬虫
+				u.MgoEB.Update("luaconfig", map[string]interface{}{"code": code}, map[string]interface{}{"$set": map[string]interface{}{"state": state, "disablereason": disablereason}}, false, false)
 				//修改任务状态
-				UpTaskState(codes, 4, "", int64(0))
-				//删除download表数据
-				//go disableDelDownloadData(codes)
+				u.MgoEB.Update("task", map[string]interface{}{
+					"s_code": code,
+					"i_state": map[string]interface{}{
+						"$nin": []int{4, 6}, //更新除审核通过和已关闭的任务
+					},
+				},
+					map[string]interface{}{"$set": map[string]interface{}{"i_state": 6, "l_updatetime": time.Now().Unix()}}, false, true)
 				if err != nil {
-					res = res + names[k] + ",ok" + qu.ObjToString(err.Error()) + ";"
+					res = res + code + ", OK" + qu.ObjToString(err.Error()) + ";"
 				} else {
-					res = res + names[k] + ",ok" + ";"
+					res = res + code + ", OK" + ";"
 				}
 			} else {
-				res = res + names[k] + "," + qu.ObjToString(err.Error()) + ";"
+				res = res + code + ", 更新失败;"
 			}
 		}
 	} else {
@@ -1446,16 +1460,17 @@ func UpStateAndUpSpider(code, id, reason, username string, state int) (bool, err
 		case Sp_state_5: //上架(爬虫端在更新上架的时候为了更新内存中字段,采用先下架上架)
 			if downevent := qu.IntAll((*one)["downevent"]); downevent != 0 { //爬虫开发修改爬虫节点,审核人员上架爬虫时,原来爬虫所在节点下架
 				upresult, err = spider.UpdateSpiderByCodeState(code, "6", downevent)
+				qu.Debug(code, "下架历史节点:", downevent)
 				if upresult && err == nil {
 					unset = map[string]interface{}{"downevent": ""}
 				}
 			} else {
 				upresult, err = spider.UpdateSpiderByCodeState(code, "6", event)
 			}
-			qu.Debug("下架:", upresult, code)
+			qu.Debug("下架:", upresult, code, event)
 			if upresult && err == nil {
 				upresult, err = spider.UpdateSpiderByCodeState(code, fmt.Sprint(state), event)
-				qu.Debug("上架:", upresult, code)
+				qu.Debug("上架:", upresult, code, event)
 			}
 		case Sp_state_3: //审核通过
 			//校验爬虫三级页是否有附件下载方法

+ 2 - 2
src/main.go

@@ -46,10 +46,10 @@ func init() {
 	smtp := util.Config.Smtp
 	front.Mails = util.New(smtp["addr"], qu.IntAll(smtp["port"]), smtp["user"], smtp["pwd"])
 	lua.Disablelib(util.Config.Luadisablelib)
-	//初始化区域信息
-	u.InitAreaCity()
 	//初始化mgo
 	u.InitMgo()
+	//初始化区域信息
+	u.InitAreaCity()
 	//xweb框架配置
 	xweb.Config.RecoverPanic = true
 	xweb.Config.Profiler = true

+ 1 - 1
src/spider/service.go

@@ -331,7 +331,7 @@ func UpdateSpiderByCodeState(code, state string, event int) (bool, error) {
 	rep := map[string]interface{}{}
 	var bs []byte
 	var err error
-	if util.Config.Uploadevents[fmt.Sprint(event)] == "bid" { //?
+	if util.Config.Uploadevents[fmt.Sprint(event)] == "bid" {
 		bs, err = MsclientBid.Call("", msgid, event, mu.SENDTO_TYPE_ALL_RECIVER, data, 60)
 	} else {
 		bs, err = Msclient.Call("", msgid, event, mu.SENDTO_TYPE_ALL_RECIVER, data, 60)

+ 4 - 2
src/timetask/timetask.go

@@ -73,7 +73,7 @@ func UpdateSiteInfo() {
 	sites, _ := util.MgoEB.Find(sp.Config.SiteColl, ``, ``, `{"site":1}`, false, -1, -1)
 	for _, s := range *sites {
 		site := qu.ObjToString(s["site"])
-		domain, status, event, platform, infotype, _ := util.GetLuasInfoBySite(site, "", "", "")
+		domain, status, event, platform, infotype, specialtype, _ := util.GetLuasInfoBySite(site, "", "", "")
 		set := map[string]interface{}{
 			"$set": map[string]interface{}{
 				"platform":      platform,
@@ -84,7 +84,8 @@ func UpdateSiteInfo() {
 				//"area":          area,
 				//"city":          city,
 				//"district":      district,
-				"updatetime": time.Now().Unix(),
+				"updatetime":   time.Now().Unix(),
+				"special_type": specialtype,
 			},
 		}
 		util.MgoEB.UpdateById(sp.Config.SiteColl, s["_id"], set)
@@ -213,6 +214,7 @@ func SpiderMoveEvent() {
 				}
 				if downevent := qu.IntAll((*lua)["downevent"]); downevent != 0 {
 					spider.UpdateSpiderByCodeState(code, "6", downevent)
+					qu.Debug(code, "下架历史节点:", downevent)
 					upset["$unset"] = map[string]interface{}{"downevent": ""}
 				}
 				upOk := util.MgoEB.Update("luaconfig", map[string]interface{}{"code": code}, upset, false, false)

+ 40 - 17
src/util/util.go

@@ -19,6 +19,7 @@ var (
 	MgoEB           *mgo.MongodbSim //编辑器163
 	MgoS            *mgo.MongodbSim
 	Province        map[string][]string
+	City            map[string][]string
 	DomainNameReg   = regexp.MustCompile(`(http|https)[::]+`)
 	DownLoadReg     = regexp.MustCompile(`download\(.*?\)`)
 	CodeTypeReg     = regexp.MustCompile(`(utf8|utf-8|gbk)`)
@@ -113,13 +114,33 @@ func InitMgo() {
 
 //初始化省市行政区划信息
 func InitAreaCity() {
-	qu.ReadConfig("areacity.json", &Province)
+	//qu.ReadConfig("areacity.json", &Province)
+	//Area = append(Area, "全国")
+	//for area, _ := range Province {
+	//	if area == "全国" {
+	//		continue
+	//	}
+	//	Area = append(Area, area)
+	//}
+	Province = map[string][]string{}
+	City = map[string][]string{}
 	Area = append(Area, "全国")
-	for area, _ := range Province {
-		if area == "全国" {
-			continue
+	list, _ := MgoEB.Find("address", nil, nil, nil, false, -1, -1)
+	for _, tmp := range *list {
+		province := qu.ObjToString(tmp["province"])
+		city := qu.ObjToString(tmp["city"])
+		district := qu.ObjToString(tmp["district"])
+		if province != "" && city == "" && district == "" { //area
+			Area = append(Area, province)
+		} else if province != "" && city != "" && district == "" { //city
+			cityArr := Province[province]
+			cityArr = append(cityArr, city)
+			Province[province] = cityArr
+		} else if province != "" && city != "" && district != "" { //district
+			districtArr := City[city]
+			districtArr = append(districtArr, district)
+			City[city] = districtArr
 		}
-		Area = append(Area, area)
 	}
 }
 
@@ -304,7 +325,7 @@ func SpiderPassCheckListAndDetail_back(list []map[string]interface{}, data map[s
 	return
 }
 
-func GetLuasInfoBySite(site, area, city, district string) (domain, status, event, platform, infotype string, remarktime int64) {
+func GetLuasInfoBySite(site, area, city, district string) (domain, status, event, platform, infotype, specialtype string, remarktime int64) {
 	shelveUp := 0
 	eventMap, platformMap := map[int]interface{}{}, map[string]interface{}{}
 	infoformatMap := map[int]bool{}
@@ -312,14 +333,18 @@ func GetLuasInfoBySite(site, area, city, district string) (domain, status, event
 	//areaMap := map[string]int{}
 	//areaCityMap := map[string]map[string]int{}
 	//cityDistrictMap := map[string]map[string]int{}
-	domainMap := map[string]int{}
+	domainMap := map[string]bool{}
+	domainArr := []string{}
 	remarktime = time.Now().Unix()
 	//luas, _ := MgoE.Find("luaconfig", `{"param_common.1":"`+site+`"}`, ``, `{"model":1,"event":1,"state":1,"platform":1,"param_common":1,"comeintime":1}`, false, -1, -1)
-	luas, _ := MgoEB.Find("luaconfig", `{"site":"`+site+`"}`, ``, `{"model":1,"event":1,"state":1,"platform":1,"param_common":1,"comeintime":1,"infoformat":1}`, false, -1, -1)
+	luas, _ := MgoEB.Find("luaconfig", `{"site":"`+site+`"}`, ``, `{"projecthref":1,"model":1,"event":1,"state":1,"platform":1,"param_common":1,"comeintime":1,"infoformat":1}`, false, -1, -1)
 	arr := [][]map[string]interface{}{}
 	for _, l := range *luas {
 		update := []map[string]interface{}{}
 		set := map[string]interface{}{}
+		if b, ok := l["projecthref"].(bool); ok && b { //爬虫采集的数据是流程性信息
+			specialtype = "含流程数据"
+		}
 		//更新爬虫area、city、district
 		if area != "" {
 			set["model.area"] = area
@@ -351,7 +376,10 @@ func GetLuasInfoBySite(site, area, city, district string) (domain, status, event
 			domain := DomainReg.FindString(href)
 			if domain != "" {
 				domain = ReplaceReg.ReplaceAllString(domain, "")
-				domainMap[domain] = domainMap[domain] + 1
+				if !domainMap[domain] {
+					domainArr = append(domainArr, domain)
+					domainMap[domain] = true
+				}
 			}
 		}
 		//state、event、platform
@@ -391,7 +419,9 @@ func GetLuasInfoBySite(site, area, city, district string) (domain, status, event
 		//	}
 		//}
 	}
-	//
+	//domain
+	domain = strings.Join(domainArr, ";")
+
 	for e, _ := range eventMap {
 		eventArr = append(eventArr, fmt.Sprint(e))
 	}
@@ -416,13 +446,6 @@ func GetLuasInfoBySite(site, area, city, district string) (domain, status, event
 	sort.Strings(infoformatArr)
 	infotype = strings.Join(infoformatArr, ",")
 	//
-	n := 0
-	for tmpDomain, num := range domainMap {
-		if num > n {
-			n = num
-			domain = tmpDomain
-		}
-	}
 	status = fmt.Sprintf("%d%s%d", shelveUp, "/", len(*luas))
 	//批量更新
 	if len(arr) > 0 {

+ 51 - 21
src/web/staticres/js/common.js

@@ -440,17 +440,25 @@ common.spider.setModel=function(name,p){
 				select.attr("name",k);
 				select.attr("id",k);
 				for(var i in common.spider.json){
-					var field=common.spider.json[i];
-					for(name in field){
-						var option=$("<option value='"+name+"'>"+name+"</option>")
-						select.append(option);
-					}
+					// var field=common.spider.json[i];
+					// for(name in field){
+					// 	var option=$("<option value='"+name+"'>"+name+"</option>")
+					// 	select.append(option);
+					// }
+					var name=common.spider.json[i];
+					var option=$("<option value='"+name+"'>"+name+"</option>")
+					select.append(option);
 				}
 				modelbody.append(div.append(label).append(c_div.append(select)));
-			}else if(model[k]=="城市"){
-				var select=$("<select class='form-control' onchange='cleardistrict()'></select>")
-				select.attr("name",k);
-				select.attr("id",k);
+			}else if(model[k]=="城市") {
+				var select = $("<select class='form-control' onchange='getdistrict($(this).val())'></select>")
+				select.attr("name", k);
+				select.attr("id", k);
+				modelbody.append(div.append(label).append(c_div.append(select)));
+			}else if (model[k]=="区/县"){
+				var select = $("<select class='form-control' ></select>")
+				select.attr("name", k);
+				select.attr("id", k);
 				modelbody.append(div.append(label).append(c_div.append(select)));
 			}else{
 				var input=$("<input type='text'  class='form-control'/>");
@@ -475,6 +483,11 @@ common.spider.setModel=function(name,p){
 					if(models[k]!=""){
 						$("#"+k).prepend('<option selected value="'+models[k]+'">'+models[k]+'</option>')
 					}
+				}else if(k=="district"){
+					getdistrict(models["district"],models[k])
+					if(models[k]!=""){
+						$("#"+k).prepend('<option selected value="'+models[k]+'">'+models[k]+'</option>')
+					}
 				}else{
 					$("#"+k).val(models[k]);
 				}
@@ -486,25 +499,42 @@ common.spider.setModel=function(name,p){
 }
 
 function getcity(area,city){
+	cleardistrict();
 	$("#city").find("option").remove();
 	$("#city").append('<option value="">--请选择--</option>')
-	$.ajax({
-		url:"/center/getCity",
-		method:"post",
-		data:{"area":area},
-		success:function(r){
-			for(var i in r){
-				if(r[i]!=city){
-					$("#city").append('<option value="'+r[i]+'">'+r[i]+'</option>')
-				}
-			}
+	for(var i in areas[area]){
+		if (areas[area][i] != city){
+			$("#city").append('<option value="'+areas[area][i]+'">'+areas[area][i]+'</option>')
+		}
+	}
+	// $.ajax({
+	// 	url:"/center/getCity",
+	// 	method:"post",
+	// 	data:{"area":area},
+	// 	success:function(r){
+	// 		for(var i in r){
+	// 			if(r[i]!=city){
+	// 				$("#city").append('<option value="'+r[i]+'">'+r[i]+'</option>')
+	// 			}
+	// 		}
+	//
+	// 	}
+	// })
+}
 
+function getdistrict(city,district){
+	cleardistrict();
+	for(var i in citys[city]){
+		if (citys[city][i] != district){
+			$("#district").append('<option value="'+citys[city][i]+'">'+citys[city][i]+'</option>')
 		}
-	})
+	}
 }
 
+
 function cleardistrict(){
-	$("#district").val("");
+	$("#district").find("option").remove();
+	$("#district").append('<option value="">--请选择--</option>')
 }
 
 common.spider.upstate=function(code){

+ 50 - 96
src/web/templates/index.html

@@ -1,11 +1,12 @@
 {{include "head.html"}}
-<!-- 模态框(Modal) -->
+<!-- 爬虫分配模态框(Modal) -->
 <div class="modal fade" id="modal-assign" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
     <div class="modal-dialog">
         <div class="modal-content">
 			<div class="modal-header">
 				<div class="modal-header">
-	                <button type="button" id="assign-close" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+					<button type="button" class="close" data-dismiss="modal" aria-hidden="true" style="margin-top: -19px">&times;</button>
+<!--	                <button type="button" id="assign-close" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>-->
 					<!--<div class="edit-form">-->
 						<div class="edit-info">
 							<span class="glyphicon glyphicon-share-alt" id="code-assign" aria-hidden="true"></span>
@@ -30,7 +31,7 @@
 							<div class="form-group" id="assign-style">
 							    <div class="col-sm-offset-2 col-sm-10">
 							      	<input type="button" onclick="assign_save()" class="btn btn-primary" value="分配">
-									<input type="button" onclick="assign_cancel()" class="btn btn-default" value="取消">
+									<input type="button" data-dismiss="modal" class="btn btn-default" value="取消">
 							    </div>
 							</div>
 						</form>
@@ -41,21 +42,34 @@
     </div><!-- /.modal -->
 </div>
 
-<!-- 模态框(Modal) -->
+<!-- 爬虫作废模态框(Modal) -->
 <div class="modal fade" id="modal-disables" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
     <div class="modal-dialog">
         <div class="modal-content">
 			<div class="modal-header">
 				<div class="modal-header">
-	                <button type="button" id="assign-close" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+					<button type="button" class="close" data-dismiss="modal" aria-hidden="true" style="margin-top: -19px">&times;</button>
+<!--	                <button type="button" id="assign-close" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>-->
 					<!--<div class="edit-form">-->
 						<div class="edit-info">
 							<span class="glyphicon glyphicon-remove" id="code-assign" aria-hidden="true"></span>
-							<span class="info">爬虫作废<span>
+							<span class="info">状态修改<span>
 						</div>
 						<form class="form-horizontal" role="form">
 							<div class="form-group">
-							    <label for="modify" class="col-sm-2 control-label">作废原因:</label>
+								<label class="col-sm-2 control-label">状态:</label>
+								<div class="col-sm-10">
+									<select class="form-control" id="code-state">
+										<option value="-1">--请选择--</option>
+										<option value="4">已作废</option>
+										<option value="7">无发布</option>
+										<option value="10">已删除</option>
+									</select>
+								</div>
+								<span class="modifyCheck hide">请选择维护人员</span>
+							</div>
+							<div class="form-group">
+							    <label class="col-sm-2 control-label">原因:</label>
 							    <div class="col-sm-10">
 									<textarea class="form-control" id="disablereason"></textarea>
 							    </div>
@@ -63,7 +77,7 @@
 							<div class="form-group" id="assign-style">
 							    <div class="col-sm-offset-2 col-sm-10">
 							      	<input type="button" onclick="comfirm_disables()" class="btn btn-primary" value="确定">
-									<input type="button" onclick="disables_cancel()" class="btn btn-default" value="取消">
+									<input type="button" data-dismiss="modal" class="btn btn-default" value="取消">
 							    </div>
 							</div>
 						</form>
@@ -73,13 +87,13 @@
         </div><!-- /.modal-content -->
     </div><!-- /.modal -->
 </div>
-<!-- 模态框(Modal) -->
+<!-- 复制爬虫模态框(Modal) -->
 <div class="modal fade" id="modal-spidercopy" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
     <div class="modal-dialog">
         <div class="modal-content">
 			<div class="modal-header">
 				<div class="modal-header">
-	                <button type="button" id="assign-close" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+					<button type="button" class="close" data-dismiss="modal" aria-hidden="true" style="margin-top: -19px">&times;</button>
 					<!--<div class="edit-form">-->
 						<div class="edit-info">
 							<span class="fa fa-copy" id="code-assign" aria-hidden="true"></span>
@@ -95,7 +109,7 @@
 							<div class="form-group" id="assign-style">
 							    <div class="col-sm-offset-2 col-sm-10">
 							      	<input type="button" onclick="comfirm_spidercopy()" class="btn btn-primary" value="确定">
-									<input type="button" onclick="spidercopy_cancel()" class="btn btn-default" value="取消">
+									<input type="button" data-dismiss="modal" class="btn btn-default" value="取消">
 							    </div>
 							</div>
 						</form>
@@ -105,38 +119,6 @@
         </div><!-- /.modal-content -->
     </div><!-- /.modal -->
 </div>
-<!-- 模态框(Modal) -->
-<div class="modal fade" id="modal-nopublish" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
-	<div class="modal-dialog">
-		<div class="modal-content">
-			<div class="modal-header">
-				<div class="modal-header">
-					<button type="button" id="assign-close" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-					<!--<div class="edit-form">-->
-					<div class="edit-info">
-						<span class="fa fa-scissors" id="code-assign" aria-hidden="true"></span>
-						<span class="info">爬虫无发布<span>
-					</div>
-					<form class="form-horizontal" role="form">
-						<div class="form-group">
-							<label for="modify" class="col-sm-2 control-label">爬虫:</label>
-							<div class="col-sm-10">
-								<input class="form-control" id="nopublish"></input>
-							</div>
-						</div>
-						<div class="form-group" id="assign-style">
-							<div class="col-sm-offset-2 col-sm-10">
-								<input type="button" onclick="comfirm_nopublish()" class="btn btn-primary" value="确定">
-								<input type="button" onclick="nopublish_cancel()" class="btn btn-default" value="取消">
-							</div>
-						</div>
-					</form>
-					<!--</div>	-->
-				</div>
-			</div>
-		</div><!-- /.modal-content -->
-	</div><!-- /.modal -->
-</div>
 
 <div class="content-wrapper">
 <section class="content-header">
@@ -146,9 +128,8 @@
       <a class="btn btn-default btn-sm" onclick="spidercopy()">复制爬虫</a>
 			{{if gt (session "auth") 2}}
 			<!--<a class="btn btn-default btn-sm" href="/center/spider">新建爬虫</a>-->
-			<a class="btn btn-default btn-sm" id="assign" onclick="assign()">分配</a>
-			<a class="btn btn-default btn-sm" id="disables" onclick="disables()">作废</a>
-		 <a class="btn btn-default btn-sm" onclick="nopublish()">无发布</a>
+			<a class="btn btn-default btn-sm" id="assign" onclick="assign()">分配爬虫</a>
+			<a class="btn btn-default btn-sm" id="disables" onclick="disables()">状态修改</a>
 			{{end}}
 	 </small>
    </h1>
@@ -198,7 +179,7 @@ $(function(){
               "url": "/js/dataTables.chinese.lang"
           },
 		"columnDefs": [
-			{ "orderable": false, "targets": [0,10,12{{if eq (session "platform") "python"}},13{{end}}] },
+			{ "orderable": false, "targets": [0,2,4,5,6,7,8,9,10,11,12] },
 			//爬虫类型
 			{"targets":[4], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
 				{{if gt (session "auth") 2}}
@@ -378,7 +359,7 @@ $(function(){
 		 },
 		"columns": [
 			{ "data": "_id",render:function(val,a,row){
-				return "<input type='checkbox' platform='"+row.platform+"' scope='"+row.i_scope+"' value='"+val+"' name='"+row.param_common[1]+"_"+row.param_common[2]+"' code='"+row.param_common[0]+"'/>"
+				return "<input type='checkbox' platform='"+row.platform+"' event='"+row.event+"' scope='"+row.i_scope+"' value='"+val+"' name='"+row.param_common[1]+"_"+row.param_common[2]+"' code='"+row.param_common[0]+"'/>"
 			}},
 			{ "data": "param_common","width":"200px",render:function(val,a,row){
 				vals=val[1];
@@ -665,31 +646,6 @@ $(function(){
 	function spidercopy(){
 		$("#modal-spidercopy").modal("show");
 	}
-	function nopublish(){
-		$("#modal-nopublish").modal("show");
-	}
-	//爬虫无发布
-	function comfirm_nopublish() {
-		var code = $("#nopublish").val();
-		if(code != ""){
-			$.ajax({
-				url:"/center/spider/assort",
-				type:"post",
-				data:{"code": code,"state":7},
-				success: function(r){
-					if(r&&r.success){
-						showTip("修改成功",1000);
-						$("#modal-nopublish").modal("hide");
-						ttable.ajax.reload();
-					}else{
-						alert("修改失败爬虫:"+r.msg)
-					}
-				}
-			})
-		}else{
-			alert("爬虫不能为空!")
-		}
-	}
     //复制爬虫
 	function comfirm_spidercopy(){
     	var code = $("#spidercopy").val();
@@ -738,15 +694,15 @@ $(function(){
 			}
 		})
 	}
-function createComboxPlatform(code,id){
-	return "<select onchange='updateesp(this.value,\"platform\",\"\",\""+code+"\",\""+id+"\")' class='form-control input-sm'>"+
-			"<option value='golua平台'>golua平台</option>"+
-			"<option value='chrome'>chrome</option>"+
-			"<option value='python'>python</option>"+
-			"<option value='通用爬虫'>通用爬虫</option>"+
-			"</select>"
-};
-function updateesp(val,w,s,c,id){
+	function createComboxPlatform(code,id){
+		return "<select onchange='updateesp(this.value,\"platform\",\"\",\""+code+"\",\""+id+"\")' class='form-control input-sm'>"+
+				"<option value='golua平台'>golua平台</option>"+
+				"<option value='chrome'>chrome</option>"+
+				"<option value='python'>python</option>"+
+				"<option value='通用爬虫'>通用爬虫</option>"+
+				"</select>"
+	};
+	function updateesp(val,w,s,c,id){
 	$.ajax({
 		url:"/center/spider/updateesp",
 		type:"post",
@@ -765,7 +721,8 @@ function updateesp(val,w,s,c,id){
 		}
 	})
 }
-{{if gt (session "auth") 1}}
+
+	{{if gt (session "auth") 1}}
 	function refuse(me){
 		var $r=window.prompt("确定打回?请输入打回原因")
 		if($r){
@@ -839,25 +796,28 @@ function updateesp(val,w,s,c,id){
 	}
 	//确认作废
 	function comfirm_disables(){
+		var state = $("#code-state").val();
+		if (state == -1){
+			alert("请选择爬虫状态!")
+			return
+		}
 		$("#modal-disables").modal("hide");
-		var names=[];
-		var ids=[];
+		var events=[];
 		var codes=[];
 		var disablereason = $("#disablereason").val();
 		$("#spider td input[type=checkbox]").each(function(){
 			if($(this).prop("checked")){
-				names.push($(this).attr("name"));
-				ids.push($(this).val());
+				events.push($(this).attr("event"));
 				codes.push($(this).attr("code"));
 			}
 		});
-		if(ids.length>0){
-			showConfirm("确定作废?", function() {
+		if(codes.length>0){
+			showConfirm("确定修改?", function() {
 				common.maskShow("正在处理...");
 				$.ajax({
 					url:"/center/spider/disable",
 					type:"post",
-					data:{"ids":ids.join(","),"names":names.join(","),"codes":codes.join(","),"disablereason":disablereason},
+					data:{"events":events.join(","),"codes":codes.join(","),"disablereason":disablereason,"state":state},
 					success:function(r){
 						common.maskHide();
 						$("#selrow").prop('checked',false);
@@ -890,9 +850,6 @@ function updateesp(val,w,s,c,id){
 	function disables_cancel(){
 		$("#modal-disables").modal("hide");
 	}
-	function nopublish_cancel(){
-		$("#modal-nopublish").modal("hide");
-	}
 	//分配爬虫
 	function assign_save(){
 		$("#modal-assign").modal("hide");
@@ -984,9 +941,6 @@ function updateesp(val,w,s,c,id){
           +"</select>"
   };
 {{end}}
-function spidercopy_cancel(){
-	$("#modal-spidercopy").modal("hide");
-}
 </script>
 </div>
 {{include "bottom.html"}}

+ 214 - 37
src/web/templates/sitelist.html

@@ -154,7 +154,7 @@
                             </div>
                             <div class="form-group">
                                 <div class="col-sm-offset-2 col-sm-10 operateStyle">
-                                    <input type="button" id="saveSiteId" onclick="updateSite()" class="btn btn-primary" value="保存">
+                                    <input type="button" id="saveSiteId" onclick="editSiteSave()" class="btn btn-primary" value="保存">
                                     <input type="button" data-dismiss="modal" class="btn btn-default" value="取消">
                                 </div>
                             </div>
@@ -364,10 +364,13 @@
                     <th>一级类型</th>
                     <th>二级类型</th>
 <!--                    <th>行业</th>-->
-                    <th>父站</th>
-                    <th>子站</th>
-                    <th>状态</th>
-                    <th>节点</th>
+<!--                    <th>父站</th>-->
+<!--                    <th>子站</th>-->
+<!--                    <th>状态</th>-->
+<!--                    <th>节点</th>-->
+                    <th>发布省份</th>
+                    <th>发布城市</th>
+                    <th>发布县区</th>
                     <th>信息类型</th>
                     <th>平台</th>
                     <th>时间</th>
@@ -382,6 +385,9 @@
 
 <script>
 var siteTypesMap = {};
+var areas = {{.T.areas}};
+var provinces = {{.T.provinces}};
+var citys = {{.T.citys}};
 $(function(){
     siteTypesMap = {{.T.sitetypes}};
     // $("#edit-site_type").append("<option value=''>--请选择网站一级类型--</option>");
@@ -395,8 +401,9 @@ $(function(){
               "url": "/js/dataTables.chinese.lang"
           },
 		"columnDefs": [
-		     { "orderable": false, "targets": [0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18] },
-             {"targets":[5], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
+		    { "orderable": false, "targets": [0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17] },
+            //重点
+            {"targets":[5], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
                 var aInput;
                 $(cell).click(function () {
                     $(this).html(selectImportant(rowData._id));
@@ -419,7 +426,113 @@ $(function(){
                     ttable.cell(cell).data(text);
                     cellData = text;
                 });
-            }}
+            }},
+            //一级类型
+            {"targets":[9], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
+                var aInput;
+                $(cell).click(function () {
+                    $(this).html(selectClassOneSiteTypes(rowData._id));
+                    var aInput = $(this).find(":input");
+                    aInput.focus().val(cellData);
+                });
+                $(cell).on("click", ":input", function (e) {
+                    e.stopPropagation();
+                });
+                $(cell).on("change", ":input", function () {
+                    $(this).blur();
+                });
+                $(cell).on("blur", ":input", function () {
+                    var text = $(this).find("option:selected").text();
+                    ttable.cell(cell).data(text);
+                    cellData = text;
+                });
+            }},
+            //二级类型
+            {"targets":[10], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
+                var aInput;
+                $(cell).click(function () {
+                    $(this).html(selectClassTwoSiteTypes(rowData._id,rowData.site_type));
+                    var aInput = $(this).find(":input");
+                    aInput.focus().val(cellData);
+                });
+                $(cell).on("click", ":input", function (e) {
+                    e.stopPropagation();
+                });
+                $(cell).on("change", ":input", function () {
+                    $(this).blur();
+                });
+                $(cell).on("blur", ":input", function () {
+                    var text = $(this).find("option:selected").text();
+                    ttable.cell(cell).data(text);
+                    cellData = text;
+                });
+            }},
+            //发布省份
+            {"targets":[11], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
+                    var aInput;
+                    $(cell).click(function () {
+                        $(this).html(selectArea(rowData._id));
+                        var aInput = $(this).find(":input");
+                        aInput.focus().val(cellData);
+                    });
+                    $(cell).on("click", ":input", function (e) {
+                        e.stopPropagation();
+                    });
+                    $(cell).on("change", ":input", function () {
+                        $(this).blur();
+                    });
+                    $(cell).on("blur", ":input", function () {
+                        var text = $(this).find("option:selected").text();
+                        ttable.cell(cell).data(text);
+                        cellData = text;
+                    });
+                }},
+            //发布城市
+            {"targets":[12], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
+                    var aInput;
+                    $(cell).click(function () {
+                        $(this).html(selectCity(rowData._id,rowData.f_area));
+                        var aInput = $(this).find(":input");
+                        aInput.focus().val(cellData);
+                    });
+                    $(cell).on("click", ":input", function (e) {
+                        e.stopPropagation();
+                    });
+                    $(cell).on("change", ":input", function () {
+                        $(this).blur();
+                    });
+                    $(cell).on("blur", ":input", function () {
+                        var text = $(this).find("option:selected").text();
+                        if(text == "--请选择--"){
+                            text = "";
+                        }
+                        ttable.cell(cell).data(text);
+                        cellData = text;
+                    });
+                }},
+            //发布县区
+            {"targets":[13], createdCell: function (cell, cellData, rowData, rowIndex, colIndex) {
+                    var aInput;
+                    $(cell).click(function () {
+                        $(this).html(selectDistrict(rowData._id,rowData.f_area,rowData.f_city));
+                        var aInput = $(this).find(":input");
+                        aInput.focus().val(cellData);
+                    });
+                    $(cell).on("click", ":input", function (e) {
+                        e.stopPropagation();
+                    });
+                    $(cell).on("change", ":input", function () {
+                        $(this).blur();
+                    });
+                    $(cell).on("blur", ":input", function () {
+                        var text = $(this).find("option:selected").text();
+                        if(text == "--请选择--"){
+                            text = "";
+                        }
+                        ttable.cell(cell).data(text);
+                        cellData = text;
+                    });
+                }},
 		],
 		"order": [[3,"desc"]],
         "lengthChange":false,
@@ -449,7 +562,8 @@ $(function(){
           { "data": "site"},
           // { "data": "another_name"},
           { "data": "domain",render:function(val,a,row){
-              return "<a href='http://"+val+"' target='_blank' style='color: #333'>"+val+"</a>"
+              return val;
+              // return "<a href='http://"+val+"' target='_blank' style='color: #333'>"+val+"</a>"
           }},
             { "data": "important",render:function(val,a,row){
                     if(val == 1){
@@ -464,19 +578,22 @@ $(function(){
           // { "data": "industry"},
           { "data": "site_type"},
           { "data": "second_type"},
-          { "data": "p_site"},
-          { "data": "s_site"},
-          { "data": "spider_status",width:"28px",render:function (val,a,row) {
-                return  "<a href='/center/site/getluas/"+row.site+"' style='color: #333 !important;' target='_blank'>"+val+"</a>"
-                //return  '<a onclick="goToCenter(\''+row.site+'\')" style="color: #333 !important;" target="_blank">'+val+'</a>'
-              }},
-          { "data": "event",render:function (val,a,row){
-                 var tmpval =val
-                 if(val.length >9){
-                     val = val.substring(0,9)+"..."
-                 }
-                 return "<span title='"+tmpval+"'>"+val+"</span>"
-              }},
+          { "data": "f_area"},
+          { "data": "f_city"},
+          { "data": "f_district"},
+          // { "data": "p_site"},
+          // { "data": "s_site"},
+          // { "data": "spider_status",width:"28px",render:function (val,a,row) {
+          //       return  "<a href='/center/site/getluas/"+row.site+"' style='color: #333 !important;' target='_blank'>"+val+"</a>"
+          //       //return  '<a onclick="goToCenter(\''+row.site+'\')" style="color: #333 !important;" target="_blank">'+val+'</a>'
+          //     }},
+          // { "data": "event",render:function (val,a,row){
+          //        var tmpval =val
+          //        if(val.length >9){
+          //            val = val.substring(0,9)+"..."
+          //        }
+          //        return "<span title='"+tmpval+"'>"+val+"</span>"
+          //     }},
             { "data": "infotype",render:function (val,a,row) {
                     if(val){
                         return val;
@@ -574,7 +691,7 @@ $(function(){
         $("#sitelist_filter").prepend(selectEvent);
         //省份
         var area ="<option value='-1'>全部</option>";
-        var areas={{.T.areas}};
+        // var areas={{.T.areas}};
         for(k in areas){
             area+="<option value='"+areas[k]+"'>"+areas[k]+"</option>";
         }
@@ -664,9 +781,13 @@ function format_X(d) {
         '<table id="nestable" style="border-spacing: 9px;border-collapse: separate;background: aliceblue;">' +
         '<tr>' +
             '<th>网站情况</th>' +
-            '<th>发布省份</th>' +
-            '<th>发布城市</th>' +
-            '<th>发布县区</th>' +
+            // '<th>发布省份</th>' +
+            // '<th>发布城市</th>' +
+            // '<th>发布县区</th>' +
+            '<th>父站</th>' +
+            '<th>子站</th>' +
+            '<th>状态</th>' +
+            '<th>节点</th>' +
             '<th>主办方</th>' +
             '<th>数据量</th>' +
             // '<th>平均发布周期</th>' +
@@ -683,15 +804,19 @@ function format_X(d) {
             '</td>' +
 
             '<td>' +
-            data.f_area +
+            data.p_site +
             '</td>' +
 
             '<td>' +
-            data.f_city +
+            data.s_site +
             '</td>' +
 
             '<td>' +
-            data.f_district +
+            "<a href='/center/site/getluas/"+data.site+"' style='color: #333 !important;' target='_blank'>"+data.spider_status+"</a>" +
+            '</td>' +
+
+            '<td>' +
+            data.event +
             '</td>' +
 
             '<td>' +
@@ -740,7 +865,7 @@ function addSite() {
     }
     $("#addsite").modal("show");
 }
-function updateSite(){
+function editSiteSave(){
     var formdataMap = common.form.serializeArray("edit-form");
     if(formdataMap.site=="" || formdataMap.isneedregister == "-1" || formdataMap.isregistered == "-1"){
         alert("表单填写不完整!");
@@ -755,9 +880,10 @@ function updateSite(){
             if(r&&r.ok){
                 showTip("保存成功", 1000);
                 $("#editsite").modal("hide");
-                setTimeout(function (){
-                    window.location.reload();
-                }, 1000);
+                ttable.draw(false)//只刷新信息,不重置页面(返回第一页)
+                // setTimeout(function (){
+                //     window.location.reload();
+                // }, 1000);
             }else{
                 showTip("保存失败", 1000);
             }
@@ -955,17 +1081,68 @@ function selectrow(me){
 		}
 	}
 
-//
+//重点网站筛选
 function selectImportant(id){
     var siteImportant="<option value=1>是</option><option value=0>否</option>";
-    return "<select onchange='updateImportant(this.value,\""+id+"\")' class='form-control input-sm'>"+siteImportant+"</select>"
+    return "<select onchange='updateSite(\"important\",this.value,\""+id+"\")' class='form-control input-sm'>"+siteImportant+"</select>"
+};
+//一级类型网站筛选
+function selectClassOneSiteTypes(id){
+    var classOneSiteTypes = "";
+    for(var k in siteTypesMap){
+        classOneSiteTypes += "<option value="+k+">"+k+"</option>"
+    }
+    return "<select onchange='updateSite(\"classone\",this.value,\""+id+"\")' class='form-control input-sm'>"+classOneSiteTypes+"</select>"
+};
+//二级类型网站筛选
+function selectClassTwoSiteTypes(id,siteType){
+    var classTwoSiteTypes = "";
+    for(var k in siteTypesMap[siteType]){
+        classTwoSiteTypes += "<option value="+siteTypesMap[siteType][k]+">"+siteTypesMap[siteType][k]+"</option>"
+    }
+    return "<select onchange='updateSite(\"classtwo\",this.value,\""+id+"\")' class='form-control input-sm'>"+classTwoSiteTypes+"</select>"
+};
+
+//发布省份选择
+function selectArea(id){
+    console.log(id)
+    var areasOptions = "";
+    for(k in areas){
+        areasOptions+="<option value='"+areas[k]+"'>"+areas[k]+"</option>";
+    }
+    return "<select onchange='updateSite(\"area\",this.value,\""+id+"\")' class='form-control input-sm'>"+areasOptions+"</select>"
+};
+
+//发布城市选择
+function selectCity(id,area){
+    console.log(id)
+    var cityOptions ="<option value=''>--请选择--</option>";
+    if(area != "全国" && area != ""){
+        for(k in provinces[area]){
+            cityOptions+="<option value='"+provinces[area][k]+"'>"+provinces[area][k]+"</option>";
+        }
+        return "<select onchange='updateSite(\"city\",this.value,\""+id+"\")' class='form-control input-sm'>"+cityOptions+"</select>"
+    }
+};
+
+//发布县区选择
+function selectDistrict(id,area,city){
+    console.log(id)
+    var districtOptions ="<option value=''>--请选择--</option>";
+    if(area != "全国" && area != "" && city != ""){
+        for(k in citys[city]){
+            districtOptions+="<option value='"+citys[city][k]+"'>"+citys[city][k]+"</option>";
+        }
+        return "<select onchange='updateSite(\"district\",this.value,\""+id+"\")' class='form-control input-sm'>"+districtOptions+"</select>"
+    }
 };
 
-function updateImportant(val,id) {
+function updateSite(updatetype,val,id) {
     $.ajax({
-        url:"/center/site/updateimportant",
+        url:"/center/site/updatesite",
         type:"post",
         data:{
+            "updatetype":updatetype,
             "val":val,
             "id":id
         },

+ 10 - 5
src/web/templates/spideredit.html

@@ -262,6 +262,8 @@
 	var actionsHtml = ""
 	var parentNode
 	var luaIsChrome = {{.T.lua.platform}} == "chrome";
+	var areas = {{.T.provinces}};
+	var citys = {{.T.citys}};
 	$(function(){
 		editor2_js = CodeMirror.fromTextArea($("#Step2_js")[0], {
 			theme:"solarized light",
@@ -356,11 +358,14 @@
 			}
 		})
 
-		$.getJSON("/province.json",function(json){
-			common.spider.json=json;
-			common.spider.getModel(common.spider.setModel);
-
-		})
+		// $.getJSON("/province.json",function(json){
+		// 	console.log(json)
+		// 	common.spider.json=json;
+		// 	common.spider.getModel(common.spider.setModel);
+		//
+		// })
+		common.spider.json = {{.T.areas}};
+		common.spider.getModel(common.spider.setModel);
 		//爬虫测试
 		$("legend a").click(function(event,editor){
       		var node = $(this).parent().find("input[type='radio']:checked").val()//测试线路

+ 9 - 5
src/web/templates/spiderview.html

@@ -66,6 +66,8 @@
 	var actionsHtml = ""
 	var parentNode
 	var luaIsChrome = {{.T.lua.platform}} == "chrome";
+	var areas = {{.T.provinces}};
+	var citys = {{.T.citys}};
 	$(function(){
 		editor2_js = CodeMirror.fromTextArea($("#Step2_js")[0], {
 			theme:"solarized light",
@@ -152,11 +154,13 @@
 				}
 			})
 			
-			$.getJSON("/province.json",function(json){
-				common.spider.json=json;
-				common.spider.getModel(common.spider.setModel);
-				
-			})
+			// $.getJSON("/province.json",function(json){
+			// 	common.spider.json=json;
+			// 	common.spider.getModel(common.spider.setModel);
+			//
+			// })
+			common.spider.json = {{.T.areas}};
+			common.spider.getModel(common.spider.setModel);
 			
 			$("legend a").click(function(event,editor){
          			var node = $(this).parent().find("input[type='radio']:checked").val()