瀏覽代碼

分支合并

yuanyuan 1 年之前
父節點
當前提交
930f9fa18d
共有 48 個文件被更改,包括 2232 次插入1048 次删除
  1. 1 4
      src/config.json
  2. 8 0
      src/export.json
  3. 1 1
      src/go.mod
  4. 2 2
      src/go.sum
  5. 2 0
      src/jfw/config/config.go
  6. 4 5
      src/jfw/filter/anonymousUser.go
  7. 60 7
      src/jfw/front/dataExport.go
  8. 48 7
      src/jfw/front/wx_dataExport.go
  9. 48 7
      src/jfw/modules/app/src/app/front/dataExport.go
  10. 12 0
      src/jfw/modules/app/src/app/front/ws_dataExport.go
  11. 5 0
      src/jfw/modules/app/src/app/tag/msg.go
  12. 1 4
      src/jfw/modules/app/src/config.json
  13. 8 0
      src/jfw/modules/app/src/export.json
  14. 1 1
      src/jfw/modules/app/src/go.mod
  15. 2 2
      src/jfw/modules/app/src/go.sum
  16. 2 0
      src/jfw/modules/app/src/jfw/config/config.go
  17. 1 1
      src/jfw/modules/app/src/main.go
  18. 2 1
      src/jfw/modules/app/src/web/staticres/jyapp/dataExport/css/keyWord.css
  19. 10 2
      src/jfw/modules/app/src/web/staticres/jyapp/dataExport/js/additionWord.js
  20. 22 3
      src/jfw/modules/app/src/web/staticres/jyapp/dataExport/js/keyWord.js
  21. 53 2
      src/jfw/modules/app/src/web/templates/dataExport/dataExport_appended.html
  22. 43 5
      src/jfw/modules/app/src/web/templates/dataExport/dataExport_buyerEdit.html
  23. 53 3
      src/jfw/modules/app/src/web/templates/dataExport/dataExport_exclude.html
  24. 404 313
      src/jfw/modules/app/src/web/templates/dataExport/dataExport_keyWord.html
  25. 110 7
      src/jfw/modules/app/src/web/templates/dataExport/dataExport_keyWordInput.html
  26. 304 239
      src/jfw/modules/app/src/web/templates/dataExport/dataExport_winnerEdit.html
  27. 3 3
      src/jfw/modules/bigmember/src/go.mod
  28. 6 6
      src/jfw/modules/bigmember/src/go.sum
  29. 1 1
      src/jfw/modules/publicapply/src/dataexport/service/action.go
  30. 1 1
      src/jfw/modules/publicapply/src/go.mod
  31. 2 2
      src/jfw/modules/publicapply/src/go.sum
  32. 2 2
      src/jfw/modules/subscribepay/src/go.mod
  33. 2 2
      src/jfw/modules/subscribepay/src/go.sum
  34. 1 0
      src/jfw/tag/a_init.go
  35. 6 3
      src/jfw/tag/msg.go
  36. 13 2
      src/jfw/timetask/timetask.go
  37. 26 2
      src/web/staticres/common-module/pc-dialog/js/leave-info-dialog.js
  38. 61 4
      src/web/staticres/common-module/perfect-info/js/perfect-info.js
  39. 20 10
      src/web/staticres/dataExport/js/conditions_order.js
  40. 13 3
      src/web/staticres/wx_dataExport/js/additionWord.js
  41. 22 3
      src/web/staticres/wx_dataExport/js/keyWord.js
  42. 117 8
      src/web/templates/pc/dataExport_sieve.html
  43. 54 3
      src/web/templates/weixin/dataExport/dataExport_appended.html
  44. 61 24
      src/web/templates/weixin/dataExport/dataExport_buyerEdit.html
  45. 46 3
      src/web/templates/weixin/dataExport/dataExport_exclude.html
  46. 400 325
      src/web/templates/weixin/dataExport/dataExport_keyWord.html
  47. 101 3
      src/web/templates/weixin/dataExport/dataExport_keyWordInput.html
  48. 67 22
      src/web/templates/weixin/dataExport/dataExport_winnerEdit.html

+ 1 - 4
src/config.json

@@ -448,8 +448,5 @@
   "hotSubjectMatter": "A4纸,安全标志,安全挡板,安全隔离网,安全网,办公耗材,办公家具,办公设备,办公椅,办公用房,办公用品,办公桌,保护装置,保密柜,笔记本,笔记本电脑,变压器,仓库,插线板,充电桩,触控一体机,传感器,打印机,打印机耗材,打印设备,档案袋,档案盒,道路工程,地铁,电池,电缆,电流互感器,电梯,电线,订书机,订书针,对讲机,多功能一体机,多媒体设备,发电机,防冻液,防护栏杆,防护门,防护棚,防雷设施,防水工程,服务器,服装,复印机,复印纸,钢板,钢结构,钢筋,工作服,工作站,公路,公用工程,固体胶,光伏,光盘,航标灯,回形针,机房空调,机柜,机油,鸡蛋,计算机,记号笔,记事本,继电器,家具,监测仪,监视器,检测报告,检测仪器,剪刀,建筑工程,交换机,交通设施,胶带,胶水,脚手架,井架,警示灯,救护车,救生设施,刻录机,空调,空气调节器,垃圾袋,垃圾桶,冷却塔,冷水机组,楼层呼唤器,路灯,绿化工程,毛巾,美工刀,门禁,密集架,灭火器,抹布,墨盒,逆变器,牛皮纸,配电箱,喷壶,起重机,汽油,桥梁,热泵机组,热水器,弱电系统,扫描仪,摄像头,生活用房,食堂,市政工程,双面胶,水电站,水桶,宿舍,碎纸机,台式机,太阳能,碳粉,天然气,投影仪,图书,土石方,拖把,挖掘机,网线,文件袋,文件柜,无人机,无线电,硒鼓,洗洁精,洗手液,洗衣粉,显示屏,橡皮,消防立管,消防器材,消防水泵,消防箱,新能源,蓄电池,液晶显示器,医疗器械,医疗设备,移动工作站,移动硬盘,预埋钢板,园林工程,纸杯,中性笔,桩基,装修工程",
   "biddingRelatesLevel": 0,
   "ipInitAuthentication": "qwertyuiopzxcvbnm1234567890asdfghjkl",
-  "node": 1,
-  "keywordRestrict": 100,
-  "buyerRestrict": 100,
-  "winnerRestrict": 100
+  "node": 1
 }

+ 8 - 0
src/export.json

@@ -0,0 +1,8 @@
+{
+  "exportLimit": {
+    "wordsLimit": 100,
+    "countLimit": 300,
+    "buyerLimit": 100,
+    "winnerLimit": 100
+  }
+}

+ 1 - 1
src/go.mod

@@ -6,7 +6,7 @@ require (
 	app.yhyue.com/moapp/jyMarketing v0.0.2-0.20230308011651-df591d32df88
 	app.yhyue.com/moapp/jybase v0.0.0-20231116061739-cd852201a8f4
 	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
-	app.yhyue.com/moapp/jypkg v1.0.7-0.20231114075116-499de5b076d3
+	app.yhyue.com/moapp/jypkg v1.0.8
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.15-0.20230925060020-8e4db0f1e13e
 	github.com/ClickHouse/clickhouse-go v1.5.4
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67

+ 2 - 2
src/go.sum

@@ -9,8 +9,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20231116061739-cd852201a8f4 h1:qfqQL2GJV3N31DF
 app.yhyue.com/moapp/jybase v0.0.0-20231116061739-cd852201a8f4/go.mod h1:Hv9U/7oHRucqH315Tr1+d03NCvS9mOKPfk8pwwlOIwQ=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
-app.yhyue.com/moapp/jypkg v1.0.7-0.20231114075116-499de5b076d3 h1:6Jv5DcoGYCsHVMwUjvlZubuTgY/vu4fWP5+rcXIKNj0=
-app.yhyue.com/moapp/jypkg v1.0.7-0.20231114075116-499de5b076d3/go.mod h1:LuxdVd+j3uwm7N5j2hivmpPU0LJytEV7iwAIljdoc4Q=
+app.yhyue.com/moapp/jypkg v1.0.8 h1:cUBs7C/DiGZ+a7xGlYpqWMc+yzOe3cArYxw3+0dc78E=
+app.yhyue.com/moapp/jypkg v1.0.8/go.mod h1:LuxdVd+j3uwm7N5j2hivmpPU0LJytEV7iwAIljdoc4Q=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
 bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e h1:h+VEI3o1qC0jeCzkFGTrLI4f27cfa/W/y+0sXokWMgE=

+ 2 - 0
src/jfw/config/config.go

@@ -21,6 +21,7 @@ var (
 	//seo.josn 配置文件中的版本号,可以动态更新
 	Seoconfig_Version    string
 	Sysconfig            map[string]interface{}
+	ExportConfig         map[string]interface{}
 	Seoconfig            map[string]interface{}
 	WeixinConfig         map[string]interface{}
 	PhoneFilterConfig    map[string]interface{}
@@ -49,6 +50,7 @@ type entnichePcConf struct {
 func init() {
 	g.Cfg().GetAdapter().(*gcfg.AdapterFile).SetFileName("config.yaml")
 	util.ReadConfig(&Sysconfig)
+	util.ReadConfig("./export.json", &ExportConfig)
 	IpInit()
 	//ClickhouseInit()
 	//log.Println("sysconfig:", Sysconfig)

+ 4 - 5
src/jfw/filter/anonymousUser.go

@@ -15,7 +15,6 @@ import (
 	"fmt"
 	"github.com/bwmarrin/snowflake"
 	"io/ioutil"
-	"jy/src/jfw/config"
 	"log"
 	"net/http"
 	"strings"
@@ -112,8 +111,8 @@ func (sk *AnonymousAuth) Do() {
 				Value:    util.InterfaceToStr(guestUID),
 				Path:     "/",
 				HttpOnly: true,
-				Domain:   util.ObjToString(config.Sysconfig["cookiedomain"]),
-				Expires:  time.Now().AddDate(10, 0, 0),
+				//Domain:   util.ObjToString(config.Sysconfig["cookiedomain"]),
+				Expires: time.Now().AddDate(10, 0, 0),
 			}
 			http.SetCookie(sk.W, cookie)
 			//未登录用户增加匿名身份信息
@@ -168,8 +167,8 @@ func (sk *AnonymousAuth) Do() {
 				Value:    trustedId,
 				Path:     "/",
 				HttpOnly: true,
-				Domain:   util.ObjToString(config.Sysconfig["cookiedomain"]),
-				Expires:  time.Now().AddDate(10, 0, 0),
+				//Domain:   util.ObjToString(config.Sysconfig["cookiedomain"]),
+				Expires: time.Now().AddDate(10, 0, 0),
 			}
 			http.SetCookie(sk.W, cookie)
 			public.BaseMysql.Update("anonymous_identity", map[string]interface{}{"guestUID": jyGuestUID.Value},

+ 60 - 7
src/jfw/front/dataExport.go

@@ -145,7 +145,6 @@ func (d *DataExport) SieveData() {
 		subTypeArr = strings.Split(subType, ",")
 		log.Println("subTypeArr", subTypeArr)
 	}
-	log.Println("keywordParam", keyword)
 	if keyword != "" {
 		err := json.Unmarshal([]byte(keyword), &keywordList)
 		if err != nil {
@@ -190,14 +189,55 @@ func (d *DataExport) SieveData() {
 			selectType = strings.Replace(strings.Join(detail, ","), "detail", "title,detail", -1)
 		}
 	}
-	if len(keywordList) > util.IntAllDef(config.Sysconfig["keywordRestrict"], 100) {
-		keywordList = keywordList[:util.IntAllDef(config.Sysconfig["keywordRestrict"], 100)]
+
+	exportLimit := util.StructToMapMore(config.ExportConfig["exportLimit"])
+	wordsLimit := util.IntAllDef(exportLimit["wordsLimit"], 100)
+	countLimit := util.IntAllDef(exportLimit["countLimit"], 300)
+	buyerLimit := util.IntAllDef(exportLimit["buyerLimit"], 100)
+	winnerLimit := util.IntAllDef(exportLimit["winnerLimit"], 100)
+
+	var count int
+	for k, kw := range keywordList {
+		if kw.Keyword != "" {
+			count++
+		}
+		count += len(kw.Appended)
+		count += len(kw.Exclude)
+		if len([]rune(kw.Keyword)) > wordsLimit {
+			keywordList[k].Keyword = util.SubString(kw.Keyword, 0, wordsLimit)
+		}
+
+		for k1, ad := range kw.Appended {
+			if len([]rune(ad)) > wordsLimit {
+				keywordList[k].Appended[k1] = util.SubString(ad, 0, wordsLimit)
+			}
+		}
+		for k1, el := range kw.Exclude {
+			if len([]rune(el)) > wordsLimit {
+				keywordList[k].Exclude[k1] = util.SubString(el, 0, wordsLimit)
+			}
+		}
 	}
-	if len(buyerArr) > util.IntAllDef(config.Sysconfig["buyerRestrict"], 100) {
-		buyerArr = buyerArr[:util.IntAllDef(config.Sysconfig["buyerRestrict"], 100)]
+	if count > countLimit {
+		d.ServeJson(map[string]interface{}{
+			"error_code": -1,
+			"error_msg":  fmt.Sprintf("关键词信息超过上限%d", countLimit),
+		})
+		return
 	}
-	if len(winnerArr) > util.IntAllDef(config.Sysconfig["winnerRestrict"], 100) {
-		winnerArr = winnerArr[:util.IntAllDef(config.Sysconfig["winnerRestrict"], 100)]
+	if len(buyerArr) > buyerLimit {
+		d.ServeJson(map[string]interface{}{
+			"error_code": -1,
+			"error_msg":  fmt.Sprintf("采购单位超过上限%d", buyerLimit),
+		})
+		return
+	}
+	if len(winnerArr) > winnerLimit {
+		d.ServeJson(map[string]interface{}{
+			"error_code": -1,
+			"error_msg":  fmt.Sprintf("中标单位超过上限%d", winnerLimit),
+		})
+		return
 	}
 	sieveCondition := map[string]interface{}{
 		"publishtime": publishtime,
@@ -250,6 +290,7 @@ func (d *DataExport) SieveData() {
 				}
 			}
 		}
+
 		list := dataexport.FormatExportData(public.Mgo_Ent, &res_screen, config.Sysconfig["webdomain"].(string), dataType, true)
 		/*if msgCount > 20000 {
 			msgCount = 20000
@@ -632,6 +673,18 @@ func subUrl(list *[]map[string]interface{}, dataType string) *[]map[string]inter
 		if len(url) > 40 { //截取剑鱼标讯地址
 			v["url"] = url[:40] + "*****" + url[len(url)-10:]
 		}
+
+		re := regexp.MustCompile(`\/\/([^\/]+)`)
+		// 使用正则表达式查找匹配的结果
+		match := re.FindStringSubmatch(href)
+		if len(match) > 1 {
+			data := match[1]
+			ds := strings.Split(data, ".")
+			if len(ds) > 2 {
+				href = strings.Replace(href, ds[1], "****", 1)
+			}
+		}
+
 		if len(href) > 40 { //截取原文地址
 			v["href"] = href[:40] + "*****" + href[len(href)-10:]
 		} else if len(href) > 0 {

+ 48 - 7
src/jfw/front/wx_dataExport.go

@@ -3,6 +3,7 @@ package front
 import (
 	"encoding/json"
 	"errors"
+	"fmt"
 	"jy/src/jfw/config"
 	"jy/src/jfw/wx"
 	"log"
@@ -171,15 +172,46 @@ func (w *WxDataExport) SaveData() error {
 	if winner != "" {
 		winnerArr = strings.Split(winner, ",")
 	}
+	exportLimit := util.StructToMapMore(config.ExportConfig["exportLimit"])
 	if keyWord != "" {
+		countLimit := util.IntAllDef(exportLimit["countLimit"], 300)
+		var count int
+		wordsLimit := util.IntAllDef(exportLimit["wordsLimit"], 100)
 		if json.Unmarshal([]byte(keyWord), &keyWordArr) == nil {
 			for k, v := range keyWordArr {
+				if v.Keyword != "" {
+					count++
+				}
+				if len([]rune(v.Keyword)) > wordsLimit {
+					keyWordArr[k].Keyword = util.SubString(v.Keyword, 0, wordsLimit)
+				}
 				if v.Appended == nil {
 					keyWordArr[k].Appended = []string{}
+				} else {
+					for k1, ad := range v.Appended {
+						if len([]rune(ad)) > wordsLimit {
+							keyWordArr[k].Appended[k1] = util.SubString(ad, 0, wordsLimit)
+						}
+					}
 				}
 				if v.Exclude == nil {
 					keyWordArr[k].Exclude = []string{}
+				} else {
+					for k1, el := range v.Exclude {
+						if len([]rune(el)) > wordsLimit {
+							keyWordArr[k].Exclude[k1] = util.SubString(el, 0, wordsLimit)
+						}
+					}
 				}
+				count += len(v.Appended)
+				count += len(v.Exclude)
+			}
+			if count > countLimit {
+				w.ServeJson(map[string]interface{}{
+					"error_code": -1,
+					"error_msg":  fmt.Sprintf("关键词信息超过上限%d", countLimit),
+				})
+				return nil
 			}
 		} else {
 			log.Println("keyWord param 反序列化异常,查看前后台字段是否对应")
@@ -207,14 +239,23 @@ func (w *WxDataExport) SaveData() error {
 			selectType = strings.Replace(strings.Join(detail, ","), "detail", "title,detail", -1)
 		}
 	}
-	if len(keyWordArr) > util.IntAllDef(config.Sysconfig["keywordRestrict"], 100) {
-		keyWordArr = keyWordArr[:util.IntAllDef(config.Sysconfig["keywordRestrict"], 100)]
-	}
-	if len(buyerArr) > util.IntAllDef(config.Sysconfig["buyerRestrict"], 100) {
-		buyerArr = buyerArr[:util.IntAllDef(config.Sysconfig["buyerRestrict"], 100)]
+
+	buyerLimit := util.IntAllDef(exportLimit["buyerLimit"], 100)
+	winnerLimit := util.IntAllDef(exportLimit["winnerLimit"], 100)
+
+	if len(buyerArr) > buyerLimit {
+		w.ServeJson(map[string]interface{}{
+			"error_code": -1,
+			"error_msg":  fmt.Sprintf("采购单位超过上限%d", buyerLimit),
+		})
+		return nil
 	}
-	if len(winnerArr) > util.IntAllDef(config.Sysconfig["winnerRestrict"], 100) {
-		winnerArr = winnerArr[:util.IntAllDef(config.Sysconfig["winnerRestrict"], 100)]
+	if len(winnerArr) > winnerLimit {
+		w.ServeJson(map[string]interface{}{
+			"error_code": -1,
+			"error_msg":  fmt.Sprintf("中标单位超过上限%d", winnerLimit),
+		})
+		return nil
 	}
 	saveData := map[string]interface{}{
 		"publishtime": publishtime,

+ 48 - 7
src/jfw/modules/app/src/app/front/dataExport.go

@@ -3,6 +3,7 @@ package front
 import (
 	"encoding/json"
 	"errors"
+	"fmt"
 	"jy/src/jfw/modules/app/src/jfw/config"
 	"log"
 	"strings"
@@ -174,19 +175,50 @@ func (w *WxDataExport) SaveData() error {
 	if winner != "" {
 		winnerArr = strings.Split(winner, ",")
 	}
+	exportLimit := util.StructToMapMore(config.ExportConfig["exportLimit"])
 	if keyWord != "" {
+		countLimit := util.IntAllDef(exportLimit["countLimit"], 300)
+		var count int
+		wordsLimit := util.IntAllDef(exportLimit["wordsLimit"], 100)
 		err := json.Unmarshal([]byte(keyWord), &keyWordArr)
 		if err != nil {
 			log.Println("keyWord param 反序列化异常,查看前后台字段是否对应")
 		} else {
 			log.Println("keyWordArr", len(keyWordArr), keyWordArr)
 			for k, v := range keyWordArr {
+				if v.Keyword != "" {
+					count++
+				}
+				if len([]rune(v.Keyword)) > wordsLimit {
+					keyWordArr[k].Keyword = util.SubString(v.Keyword, 0, wordsLimit)
+				}
 				if v.Appended == nil {
 					keyWordArr[k].Appended = []string{}
+				} else {
+					for k1, ad := range v.Appended {
+						if len([]rune(ad)) > wordsLimit {
+							keyWordArr[k].Appended[k1] = util.SubString(ad, 0, wordsLimit)
+						}
+					}
 				}
 				if v.Exclude == nil {
 					keyWordArr[k].Exclude = []string{}
+				} else {
+					for k1, el := range v.Exclude {
+						if len([]rune(el)) > wordsLimit {
+							keyWordArr[k].Exclude[k1] = util.SubString(el, 0, wordsLimit)
+						}
+					}
 				}
+				count += len(v.Appended)
+				count += len(v.Exclude)
+			}
+			if count > countLimit {
+				w.ServeJson(map[string]interface{}{
+					"error_code": -1,
+					"error_msg":  fmt.Sprintf("关键词信息超过上限%d", countLimit),
+				})
+				return nil
 			}
 		}
 	}
@@ -212,14 +244,23 @@ func (w *WxDataExport) SaveData() error {
 			selectType = strings.Replace(strings.Join(detail, ","), "detail", "title,detail", -1)
 		}
 	}
-	if len(keyWordArr) > util.IntAllDef(config.Seoconfig["keywordRestrict"], 100) {
-		keyWordArr = keyWordArr[:util.IntAllDef(config.Sysconfig["keywordRestrict"], 100)]
-	}
-	if len(buyerArr) > util.IntAllDef(config.Sysconfig["buyerRestrict"], 100) {
-		buyerArr = buyerArr[:util.IntAllDef(config.Sysconfig["buyerRestrict"], 100)]
+
+	buyerLimit := util.IntAllDef(exportLimit["buyerLimit"], 100)
+	winnerLimit := util.IntAllDef(exportLimit["winnerLimit"], 100)
+
+	if len(buyerArr) > buyerLimit {
+		w.ServeJson(map[string]interface{}{
+			"error_code": -1,
+			"error_msg":  fmt.Sprintf("采购单位超过上限%d", buyerLimit),
+		})
+		return nil
 	}
-	if len(winnerArr) > util.IntAllDef(config.Sysconfig["winnerRestrict"], 100) {
-		winnerArr = winnerArr[:util.IntAllDef(config.Sysconfig["winnerRestrict"], 100)]
+	if len(winnerArr) > winnerLimit {
+		w.ServeJson(map[string]interface{}{
+			"error_code": -1,
+			"error_msg":  fmt.Sprintf("中标单位超过上限%d", winnerLimit),
+		})
+		return nil
 	}
 	saveData := map[string]interface{}{
 		"publishtime": publishtime,

+ 12 - 0
src/jfw/modules/app/src/app/front/ws_dataExport.go

@@ -213,6 +213,18 @@ func subUrl(list *[]map[string]interface{}, dataType string) *[]map[string]inter
 		if len(url) > 40 { //截取剑鱼标讯地址
 			v["url"] = url[:40] + "*****" + url[len(url)-10:]
 		}
+
+		re := regexp.MustCompile(`\/\/([^\/]+)`)
+		// 使用正则表达式查找匹配的结果
+		match := re.FindStringSubmatch(href)
+		if len(match) > 1 {
+			data := match[1]
+			ds := strings.Split(data, ".")
+			if len(ds) > 2 {
+				href = strings.Replace(href, ds[1], "****", 1)
+			}
+		}
+
 		if len(href) > 40 { //截取原文地址
 			v["href"] = href[:40] + "*****" + href[len(href)-10:]
 		} else if len(href) > 0 {

+ 5 - 0
src/jfw/modules/app/src/app/tag/msg.go

@@ -15,6 +15,11 @@ func Msg(mtype, key string) string {
 	return readproperty(mtype, key)
 }
 
+// 从json配置文件中读取值
+func Export() map[string]interface{} {
+	return config.ExportConfig
+}
+
 func Cdns(host, mtype, key string) string {
 	if host == "" {
 		return readproperty(mtype, key)

+ 1 - 4
src/jfw/modules/app/src/config.json

@@ -252,8 +252,5 @@
     "projecttype": true,
     "approvecity": true
   },
-  "ipInitAuthentication": "qwertyuiopzxcvbnm1234567890asdfghjkl",
-  "keywordRestrict": 100,
-  "buyerRestrict": 100,
-  "winnerRestrict": 100
+  "ipInitAuthentication": "qwertyuiopzxcvbnm1234567890asdfghjkl"
 }

+ 8 - 0
src/jfw/modules/app/src/export.json

@@ -0,0 +1,8 @@
+{
+  "exportLimit": {
+    "wordsLimit": 100,
+    "countLimit": 300,
+    "buyerLimit": 100,
+    "winnerLimit": 100
+  }
+}

+ 1 - 1
src/jfw/modules/app/src/go.mod

@@ -5,7 +5,7 @@ go 1.18
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230901064756-2fc66b18db40
 	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
-	app.yhyue.com/moapp/jypkg v1.0.7-0.20231114075116-499de5b076d3
+	app.yhyue.com/moapp/jypkg v1.0.8
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.15-0.20230925060020-8e4db0f1e13e
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67
 	github.com/gogf/gf/v2 v2.3.1

+ 2 - 2
src/jfw/modules/app/src/go.sum

@@ -9,8 +9,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20230901064756-2fc66b18db40 h1:/FcBvpf/KW8g6GB
 app.yhyue.com/moapp/jybase v0.0.0-20230901064756-2fc66b18db40/go.mod h1:Hv9U/7oHRucqH315Tr1+d03NCvS9mOKPfk8pwwlOIwQ=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
-app.yhyue.com/moapp/jypkg v1.0.7-0.20231114075116-499de5b076d3 h1:6Jv5DcoGYCsHVMwUjvlZubuTgY/vu4fWP5+rcXIKNj0=
-app.yhyue.com/moapp/jypkg v1.0.7-0.20231114075116-499de5b076d3/go.mod h1:LuxdVd+j3uwm7N5j2hivmpPU0LJytEV7iwAIljdoc4Q=
+app.yhyue.com/moapp/jypkg v1.0.8 h1:cUBs7C/DiGZ+a7xGlYpqWMc+yzOe3cArYxw3+0dc78E=
+app.yhyue.com/moapp/jypkg v1.0.8/go.mod h1:LuxdVd+j3uwm7N5j2hivmpPU0LJytEV7iwAIljdoc4Q=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
 bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e h1:h+VEI3o1qC0jeCzkFGTrLI4f27cfa/W/y+0sXokWMgE=

+ 2 - 0
src/jfw/modules/app/src/jfw/config/config.go

@@ -15,6 +15,7 @@ import (
 var (
 	// Seoconfig_Version seo.josn 配置文件中的版本号,可以动态更新
 	Seoconfig_Version string
+	ExportConfig      map[string]interface{}
 	// Seoconfig_Mod_Version Seoconfig_Version 作为固定版本号 除非大版本更新需要改动,其他都更改Seoconfig_Mod_Version  王山  2020/06/11
 	Seoconfig_Mod_Version string
 	Seoconfig_Cdns        map[string]interface{}
@@ -30,6 +31,7 @@ var (
 func init() {
 	g.Cfg().GetAdapter().(*gcfg.AdapterFile).SetFileName("config.yaml")
 	util.ReadConfig(&Sysconfig)
+	util.ReadConfig("./export.json", &ExportConfig)
 	IpInit()
 	mails, _ := Sysconfig["mail"].([]interface{})
 	mailConfigArrMap := util.ObjArrToMapArr(mails)

+ 1 - 1
src/jfw/modules/app/src/main.go

@@ -68,7 +68,7 @@ func initXweb() {
 	xweb.RootApp().AppConfig.CacheTemplates = Sysconfig["cacheflag"].(bool)
 	xweb.RootApp().AddTmplVar("Msg", tag.Msg)
 	xweb.RootApp().AddTmplVar("Cdns", tag.Cdns)
-
+	xweb.RootApp().AddTmplVar("Export", tag.Export)
 	xweb.RootApp().AddTmplVar("Ad", tag.Ad)
 	xweb.RootApp().AddTmplVar("SafeUrl", tag.SafeUrl)
 	xweb.RootApp().Logger.SetOutputLevel(1) //输出日志,改为4则不输出任何日志

+ 2 - 1
src/jfw/modules/app/src/web/staticres/jyapp/dataExport/css/keyWord.css

@@ -243,8 +243,9 @@
 .text-overflow100 .weui-toast {
   margin-left: 0;
   width: 4.4rem;
+  padding: .16rem 0;
   min-height: .42rem;
-  font-size: 20px;
+  font-size: .28rem;
   -webkit-transform: translateX(-50%);
           transform: translateX(-50%);
 }

+ 10 - 2
src/jfw/modules/app/src/web/staticres/jyapp/dataExport/js/additionWord.js

@@ -13,16 +13,24 @@ $(function(){
             $(".enter.addkeyWord").show();
             $(".addKeyWord").hide();
             $(".showKeyWord").hide();
+            $('#add-buyer-word').hide()
         } else {
             $(".enter.addkeyWord").hide();
             $(".showKeyWord").show();
             $(".addKeyWord").show();
+            if (showKeyWordLength >= buyerLimit) {
+              $('#add-buyer-word').hide()
+              $('.buyer-more-tips').show()
+            } else {
+              $('#add-buyer-word').show()
+              $('.buyer-more-tips').hide()
+            }
         }
     }
     hasWords();
     
     // 添加按钮
-    $(".addKeyWord i").on('click',function(){
+    $(".addKeyBtn i").on('click',function(){
         window.location.href="/jyapp/front/dataExport/buyerInput";
     });
 
@@ -98,7 +106,7 @@ $(function(){
         var buttonDOM = $('.enter.addkeyWord .btn button')[0]
         buttonDOM.style.opacity = .5
         buttonDOM.setAttribute("disabled", true)
-
+        hasWords()
     })
 
     // 编辑

+ 22 - 3
src/jfw/modules/app/src/web/staticres/jyapp/dataExport/js/keyWord.js

@@ -27,7 +27,18 @@ $(function(){
         } else {
             $(".enter.addkeyWord").hide();
             $(".showKeyWord").show();
-            $(".addKeyWord").show();
+            // $(".addKeyWord").show();
+        }
+        if (getTotal() >= wordsLimit) {
+          $('.addKeyWord').hide()
+          $('.keyword-more-tips').show()
+          $('.addAdjunctWord.add-append-btn').attr('disabled', true)
+          $('.addExclusion.add-exclude-btn').attr('disabled', true)
+        } else {
+          $('.addKeyWord').show()
+          $('.keyword-more-tips').hide()
+          $('.addAdjunctWord.add-append-btn').removeAttr('disabled')
+          $('.addExclusion.add-exclude-btn').removeAttr('disabled')
         }
     }
     hasWords();
@@ -253,7 +264,7 @@ $(function(){
         var buttonDOM = $('.enter.addkeyWord .btn button')[0];
         buttonDOM.style.opacity = .5;
         buttonDOM.setAttribute("disabled", true);
-
+        hasWords();
     });
 
     // 编辑
@@ -270,22 +281,28 @@ $(function(){
                     var appended = keyWordArr[i].appended.length;
                     if(appended < 1){
                         str =  "添加 附加词";
+                        $(".addAdjunctWord").addClass('add-append-btn')
                     }else{
                         str = "编辑 附加词 ("+appended+")";
+                        $(".addAdjunctWord").removeAttr('disabled').removeClass('add-append-btn')
                     }
                 }else{
                     str =  "添加 附加词";
+                    $(".addAdjunctWord").addClass('add-append-btn')
                 }
                 $(this).parent().next().find(".addAdjunctWord").text(str);
                 if(keyWordArr[i].exclude!=null&&keyWordArr[i].exclude !== undefined){
                     var exclude = keyWordArr[i].exclude.length;
                     if(exclude < 1){
                         strs = "添加 排除词";
+                        $(".addExclusion").addClass('add-exclude-btn')
                     }else{
                         strs = "编辑 排除词 ("+exclude+")";
+                        $(".addExclusion").removeAttr('disabled').removeClass('add-exclude-btn')
                     }
                 }else{
                     strs = "添加 排除词";
+                    $(".addExclusion").addClass('add-exclude-btn')
                 }
                 $(this).parent().next().find(".addExclusion").text(strs);
             }
@@ -293,6 +310,7 @@ $(function(){
         $(this).parent().hide();
         $(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one').show()
         $(oSpan).val('').focus().val(val);
+        hasWords()
         $(".addKeyWord").hide();
     });
 
@@ -377,7 +395,8 @@ $(function(){
             $this.parent().siblings().find('.key').text(keyWord)
             $this.parent().hide().siblings().show()
         }
-        $(".addKeyWord").show();
+        // $(".addKeyWord").show();
+        hasWords()
     })
 
     //去空格方法

+ 53 - 2
src/jfw/modules/app/src/web/templates/dataExport/dataExport_appended.html

@@ -103,6 +103,11 @@
         <i class="iconfont icon-tianjia"></i>
     </div>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
+    <script>
+      var limit = {{Export.exportLimit}};
+      var wordsLimit = limit.countLimit || 100
+      console.log(limit);
+    </script>
     <script>
         $(function () {
             var isPageHide = false;
@@ -198,6 +203,44 @@
                 $(".showKeyWord").show();
             }
         }
+        function sumArr(arr){
+          var sum = 0
+          arr.forEach(function(val){
+            sum += val
+          })
+          return sum
+        }
+        // 计算关键词、附加词、排除词总和
+        function getTotal () {
+          var data = []
+          /**
+           * 之前逻辑:
+           * 1.全量保存后取的是localStorage里的值(不包含当前输入的关键词、附加次、排除词);
+           * 2.sessionStorage存的值包含当前输入的词(首次添加的时候仅包含当前输入的关键词、编辑及其它时候包含已存的和当前输入的)
+           * 不改原有逻辑的情况下实时计算关键词、附加词、排除词总和可对比sessionStorage和localStorage的长度,有sessionStorage且长度大于已存的localStorage的长度,
+           * 则取sessionStorage
+          */
+          var sessionStorageKey = sessionStorage.keyWord ? JSON.parse(sessionStorage.keyWord) : null
+          if (sessionStorageKey && sessionStorageKey.length > keyWordArr.length) {
+            data = sessionStorageKey
+          } else {
+            data = keyWordArr
+          }
+          var keyLen = data.length
+          var arr = []
+          data.forEach(function(item) {
+            if (item.appended) {
+              arr.push(item.appended.length)
+            }
+            if (item.exclude) {
+              arr.push(item.exclude.length)
+            }
+          })
+          arr.push(keyLen)
+          var total = sumArr(arr)
+          console.log(total);
+          return total
+        }
         $(function(){
 
             $('.knowBtn').on('click',function(){
@@ -224,7 +267,12 @@
                 } else {
                     $(".enter.addkeyWord").hide();
                     $(".showKeyWord").show();
-                    $(".addKeyWord").show();
+                    // $(".addKeyWord").show();
+                }
+                if (getTotal() >= wordsLimit) {
+                  $(".addKeyWord").hide();
+                } else {
+                  $(".addKeyWord").show();
                 }
             }
             hasWords();
@@ -333,6 +381,7 @@
                 var buttonDOM = $('.enter.addkeyWord .btn button')[0];
                 buttonDOM.style.opacity = .5;
                 buttonDOM.setAttribute("disabled", true)
+                hasWords()
             });
 
             // 编辑
@@ -343,6 +392,7 @@
                 $(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one').show()
                 $(oSpan).val('').focus().val(val);
                 $(".addKeyWord").hide();
+                hasWords()
             });
 
             // 编辑 删除
@@ -428,7 +478,8 @@
                     $(this).parent().hide().siblings().show()
                 }
                 //
-                $(".addKeyWord").show();
+                // $(".addKeyWord").show();
+                hasWords()
             });
 
             //去空格方法

+ 43 - 5
src/jfw/modules/app/src/web/templates/dataExport/dataExport_buyerEdit.html

@@ -28,17 +28,30 @@
 	.keyWord .enter .btn .save-btn {
 		float: right;
 	}
-	.addKeyWord i {
+	.addKeyBtn i {
 		font-size: 1rem;
 		color: #2cb7ca;
 	}
-	.addKeyWord {
+	.addKeyBtn {
 		left: 44%;
 		position: fixed;
 		text-align: center;
 		bottom: 10%;
 	}
-
+  .buyer-more-tips{
+    display: none;
+    width: 100%;
+    padding: .14rem .32rem;
+    background: rgba(249, 242, 234, 1);
+    color:  #FF9F40;
+    font-size: .26rem;
+    line-height: .4rem;
+    text-align: center;
+  }
+  .buyer-more-tips > a{
+    color:#FF3A20;
+    text-decoration: underline;
+  }
 </style>
 
 <body>
@@ -70,13 +83,21 @@
 					</ul>
 				</div>
 					</section>
+          <div class="buyer-more-tips">
+            最多可添加{{Export.exportLimit.buyerLimit}}个采购单位,目前已达上限,如需添加更多您可<a href="javascript:;" onclick="goPerfect()">申请数据定制导出></a>
+          </div>
 			</div>
 		</div>
 	</div>
-	<div class="addKeyWord">
+	<div class="addKeyBtn" id="add-buyer-word">
 		<i class="iconfont icon-tianjia"></i>
 	</div>
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
+<script>
+  var limit = {{Export.exportLimit}}
+  var buyerLimit = limit.buyerLimit || 100
+  console.log(limit);
+</script>
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/js/additionWord.js?v={{Msg "seo" "version"}}"></script>
 <script>
 	$(window).bind("pageshow", function(event){
@@ -88,7 +109,7 @@
 	if(localStorage.buyer !== "" && localStorage.buyer !== undefined){
 		var buyer = localStorage.buyer.split(",");
 		buyerArr = buyer;
-		console.log(buyerArr);
+		// console.log(buyerArr);
 		var html = "";
 		for(var i in buyer){
 			html +=
@@ -109,7 +130,24 @@
                     </li>`
 		}
 		$('.showKeyWord > ul').prepend(html);
+    console.log(buyerArr, buyerLimit);
+    if (buyerArr.length >= buyerLimit) {
+      $('#add-buyer-word').hide()
+      $('.buyer-more-tips').show()
+    } else {
+      $('#add-buyer-word').show()
+      $('.buyer-more-tips').hide()
+    }
 	}
+  function goPerfect() {
+    var source = ''
+    if(utils.$env.platform === 'h5') {
+      source = 'h5_Dataself_buyermore_customization'
+    } else {
+      source = 'app_Dataself_buyermore_customization'
+    }
+    location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=' + source
+  }
 </script>
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/dataExport/js/association.js?v={{Msg "seo" "version"}}"></script>
 

+ 53 - 3
src/jfw/modules/app/src/web/templates/dataExport/dataExport_exclude.html

@@ -103,6 +103,11 @@
         <i class="iconfont icon-tianjia"></i>
     </div>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
+    <script>
+      var limit = {{Export.exportLimit}};
+      var wordsLimit = limit.countLimit || 100
+      console.log(limit);
+    </script>
     <script>
         $(function () {
             var isPageHide = false;
@@ -198,7 +203,44 @@
                 $(".showKeyWord").show();
             }
         }
-
+        function sumArr(arr){
+          var sum = 0
+          arr.forEach(function(val){
+            sum += val
+          })
+          return sum
+        }
+        // 计算关键词、附加词、排除词总和
+        function getTotal () {
+          var data = []
+          /**
+           * 之前逻辑:
+           * 1.全量保存后取的是localStorage里的值(不包含当前输入的关键词、附加次、排除词);
+           * 2.sessionStorage存的值包含当前输入的词(首次添加的时候仅包含当前输入的关键词、编辑及其它时候包含已存的和当前输入的)
+           * 不改原有逻辑的情况下实时计算关键词、附加词、排除词总和可对比sessionStorage和localStorage的长度,有sessionStorage且长度大于已存的localStorage的长度,
+           * 则取sessionStorage
+          */
+          var sessionStorageKey = sessionStorage.keyWord ? JSON.parse(sessionStorage.keyWord) : null
+          if (sessionStorageKey && sessionStorageKey.length > keyWordArr.length) {
+            data = sessionStorageKey
+          } else {
+            data = keyWordArr
+          }
+          var keyLen = data.length
+          var arr = []
+          data.forEach(function(item) {
+            if (item.appended) {
+              arr.push(item.appended.length)
+            }
+            if (item.exclude) {
+              arr.push(item.exclude.length)
+            }
+          })
+          arr.push(keyLen)
+          var total = sumArr(arr)
+          console.log(total);
+          return total
+        }
         $(function(){
 
             $('.knowBtn').on('click',function(){
@@ -225,7 +267,12 @@
                 } else {
                     $(".enter.addkeyWord").hide();
                     $(".showKeyWord").show();
-                    $(".addKeyWord").show();
+                    // $(".addKeyWord").show();
+                }
+                if (getTotal() >= wordsLimit) {
+                  $(".addKeyWord").hide();
+                } else {
+                  $(".addKeyWord").show();
                 }
             }
             hasWords();
@@ -342,6 +389,7 @@
                 var buttonDOM = $('.enter.addkeyWord .btn button')[0];
                 buttonDOM.style.opacity = .5;
                 buttonDOM.setAttribute("disabled", true)
+                hasWords();
             });
 
             // 编辑
@@ -352,6 +400,7 @@
                 $(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one').show()
                 $(oSpan).val('').focus().val(val);
                 $(".addKeyWord").hide();
+                hasWords();
             });
 
             // 编辑 删除
@@ -436,7 +485,8 @@
                     $(this).parent().siblings().find('.key').text(exclude);
                     $(this).parent().hide().siblings().show()
                 }
-                $(".addKeyWord").show();
+                // $(".addKeyWord").show();
+                hasWords();
             });
 
             //去空格方法

+ 404 - 313
src/jfw/modules/app/src/web/templates/dataExport/dataExport_keyWord.html

@@ -2,76 +2,106 @@
 <html lang="en">
 
 <head>
-    {{include "/common/meta.html"}}
-    <title>关键词</title>
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/css/base.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css">
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/css/keyWord.css?v={{Msg "seo" "version"}}">
-	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css" />
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}" />
-    <script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
-	{{include "/common/js.html"}}
+  {{include "/common/meta.html"}}
+  <title>关键词</title>
+  <link rel="stylesheet" type="text/css"
+    href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/css/base.css?v={{Msg "seo" "version"}}">
+  <link rel="stylesheet" type="text/css"
+    href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+  <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css">
+  <link rel="stylesheet" type="text/css"
+    href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/css/keyWord.css?v={{Msg "seo" "version"}}">
+  <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css" />
+  <link rel="stylesheet" type="text/css"
+    href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}" />
+  <script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
+  {{include "/common/js.html"}}
 </head>
 <style>
-	.page{
-		display: flex;
-		flex-direction: column;
-		height: 100%;
-		justify-content: space-between;
-	}
-    body{
-        background: rgba(245,244,249,1)!important;
-        line-height: unset;
-    }
-    .keyWord .enter .btn .save {
-        float: right;
-    }
-    .addAdjunctWord{
-        margin-top: 0!important;
-        border-top: 1px solid #e0e0e0;
-    }
-    .addExclusion{
-        margin-top: 0!important;
-        border-top: 1px solid #e0e0e0;
-    }
-    .addKeyWord i {
-		font-size: 1rem;
-		color: #2cb7ca;
-	}
-	.addKeyWord {
-		left: 44%;
-		position: fixed;
-		text-align: center;
-		bottom: 10%;
-	}
+  .page {
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+    justify-content: space-between;
+  }
+
+  body {
+    background: rgba(245, 244, 249, 1) !important;
+    line-height: unset;
+  }
+
+  .keyWord {
+    height: 100%;
+  }
+
+  .keyWord .enter .btn .save {
+    float: right;
+  }
+
+  .addAdjunctWord {
+    margin-top: 0 !important;
+    border-top: 1px solid #e0e0e0;
+  }
+
+  .addExclusion {
+    margin-top: 0 !important;
+    border-top: 1px solid #e0e0e0;
+  }
+
+  .addKeyWord i {
+    font-size: 1rem;
+    color: #2cb7ca;
+  }
+
+  .addKeyWord {
+    left: 44%;
+    position: fixed;
+    text-align: center;
+    bottom: 10%;
+  }
+
+  .keyword-more-tips {
+    display: none;
+    width: 100%;
+    padding: .24rem .32rem;
+    background: rgba(249, 242, 234, 1);
+    color: #FF9F40;
+    font-size: .26rem;
+    line-height: .4rem;
+    text-align: center;
+  }
 
+  .keyword-more-tips>a {
+    color: #FF3A20;
+    text-decoration: underline;
+  }
 </style>
+
 <body>
-	<div class="page">
-	    <div class="app-layout-header jy-app-header">
-	        <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
-	        关键词
-	    <span></span></div>
-		<div class="app-layout-content-b">
-	    	<div class="keyWord">
-	        <section class="content">
-	        <p class="title">示例:软件系统(关键词);  开发(附加词);  运维(排除词)</p>
-	        <!-- 添加关键词 -->
-	        <div class="enter addkeyWord">
-	            <input type="text" class="enterOne" placeholder="请输入关键词" />
-	            <div class="btnChoose" style="display:none;">
-	                <button class="addAdjunctWord appended" disabled>添加 附加词</button>
-	                <button class="addExclusion exclude" disabled>添加 排除词</button>
-	            </div>
-	            <div class="btn">
-	                <button class="save" disabled>确认</button>
-	                <button class="close">取消</button>
-	            </div>
-	        </div>
+  <div class="page">
+    <div class="app-layout-header jy-app-header">
+      <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+      关键词
+      <span></span></div>
+    <div class="app-layout-content-b">
+      <div class="keyWord">
+        <section class="content">
+          <p class="title">示例:软件系统(关键词); 开发(附加词); 运维(排除词)</p>
+          <!-- 添加关键词 -->
+          <div class="enter addkeyWord">
+            <input type="text" class="enterOne" placeholder="请输入关键词" />
+            <div class="btnChoose" style="display:none;">
+              <button class="addAdjunctWord appended" disabled>添加 附加词</button>
+              <button class="addExclusion exclude" disabled>添加 排除词</button>
+            </div>
+            <div class="btn">
+              <button class="save" disabled>确认</button>
+              <button class="close">取消</button>
+            </div>
+          </div>
 
-	        <!-- 添加排除词 -->
-	        <!-- <div class="enter exclusion" style="display:none;">
+          <!-- 添加排除词 -->
+          <!-- <div class="enter exclusion" style="display:none;">
 	            <input type="text" placeholder="请输入排除词" class="enterOne">
 	            <div class="btn">
 	                <button disabled>确认</button>
@@ -79,86 +109,125 @@
 	        </div> -->
 
 
-	        <!-- 添加关键词显示列表 -->
-	        <div class="showKeyWord">
-	            <ul>
+          <!-- 添加关键词显示列表 -->
+          <div class="showKeyWord">
+            <ul>
 
-	            </ul>
+            </ul>
 
-	        </div>
+          </div>
 
-	        <div class="problem">
-	            疑问解答 <i class="iconfont icon-wenhao"></i>
-	        </div>
-	        </section>
-	    </div>
+          <div class="problem">
+            疑问解答 <i class="iconfont icon-wenhao"></i>
+          </div>
+        </section>
+        <div class="keyword-more-tips">关键词已达上限,如需添加更多您可<a href="javascript:;" onclick="goPerfect()">申请数据定制导出></a></div>
+      </div>
 
-	        <!-- 疑难问题弹窗 -->
-	        <div class="problemPop">
-	            <div class="problemPopContent">
-	                <h3>疑问解答</h3>
-	                <ul>
-	                    <li>
-	                        <p>例:某公司主营业务为软件系统开发</p>
-	                    </li>
-	                    <li>
-	                        <h4>关键词:</h4>
-	                        <p>目标信息中的关键性词语,如“软件系统”</p>
-	                    </li>
-	                    <li>
-	                        <h4>附加词:</h4>
-	                        <p>与关键词形成一体/组合,便于查找准确信息,如“开发”</p>
-	                    </li>
-	                    <li>
-	                        <h4>排除词:</h4>
-	                        <p>与关键词互斥,可排除一部分非目标信息,如“运维”</p>
-	                    </li>
-	                </ul>
-	                <button class="knowBtn">我知道了</button>
-	            </div>
+      <!-- 疑难问题弹窗 -->
+      <div class="problemPop">
+        <div class="problemPopContent">
+          <h3>疑问解答</h3>
+          <ul>
+            <li>
+              <p>例:某公司主营业务为软件系统开发</p>
+            </li>
+            <li>
+              <h4>关键词:</h4>
+              <p>目标信息中的关键性词语,如“软件系统”</p>
+            </li>
+            <li>
+              <h4>附加词:</h4>
+              <p>与关键词形成一体/组合,便于查找准确信息,如“开发”</p>
+            </li>
+            <li>
+              <h4>排除词:</h4>
+              <p>与关键词互斥,可排除一部分非目标信息,如“运维”</p>
+            </li>
+          </ul>
+          <button class="knowBtn">我知道了</button>
+        </div>
 
-	        </div>
-	    </div>
-	</div>
-	<div class="addKeyWord">
-        <i class="iconfont icon-tianjia"></i>
+      </div>
     </div>
-    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js"></script>
-    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
-    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/js/keyWord.js?v={{Msg "seo" "version"}}2"></script>
-    <script>
-        $(window).bind("pageshow", function(event){
-            if(event.originalEvent.persisted){
-                window.location.reload();
-            }
-        });
+  </div>
+  <div class="addKeyWord">
+    <i class="iconfont icon-tianjia"></i>
+  </div>
+  <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js"></script>
+  <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
+  <script>
+    var limit = {{Export.exportLimit}};
+    var wordsLimit = limit.countLimit || 100
+    console.log(limit);
+  </script>
+  <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/js/keyWord.js?v={{Msg "seo" "version"}}2"></script>
+  <script>
+    $(window).bind("pageshow", function (event) {
+      if (event.originalEvent.persisted) {
+        window.location.reload();
+      }
+    });
 
 
-//		(/iphone|ipod|ipad/i.test(navigator.appVersion)) && document.addEventListener('focus', (e) => {
-//		    // 这里加了个类型判断,因为a等元素也会触发blur事件
-//		    alert("666")
-//		    $(".app-layout-header").css("position","static");
-//		}, true)
+    //		(/iphone|ipod|ipad/i.test(navigator.appVersion)) && document.addEventListener('focus', (e) => {
+    //		    // 这里加了个类型判断,因为a等元素也会触发blur事件
+    //		    alert("666")
+    //		    $(".app-layout-header").css("position","static");
+    //		}, true)
 
+    function goPerfect() {
+      var source = ''
+      if (utils.$env.platform === 'h5') {
+        source = 'h5_Dataself_keywordmore_customization'
+      } else {
+        source = 'app_Dataself_keywordmore_customization'
+      }
+      location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=' + source
+    }
 
+    function sumArr(arr){
+      var sum = 0
+      arr.forEach(function(val){
+        sum += val
+      })
+      return sum
+    }
 
+    // 计算关键词、附加词、排除词总和
+    function getTotal () {
+      var keyLen = keyWordArr.length
+      var arr = []
+      keyWordArr.forEach(function(item) {
+        if (item.appended) {
+          arr.push(item.appended.length)
+        }
+        if (item.exclude) {
+          arr.push(item.exclude.length)
+        }
+      })
+      arr.push(keyLen)
+      var total = sumArr(arr)
+      console.log(total);
+      return total
+    }
 
-        var keyWordArr = [];
-        if(localStorage.keyWord !== "" && localStorage.keyWord !== undefined){
-            var keyWord = localStorage.keyWord;
-            keyWordArr = JSON.parse(keyWord);
-            var keyWordHtml = "";
-            for(var i in keyWordArr){
-                var append= keyWordArr[i].appended;
-                if (append===null||append===undefined){
-                  append=new Array();
-                }
-                var  exclude = keyWordArr[i].exclude;
-                if (exclude===null||exclude===undefined){
-                  exclude=new Array();
-                }
-                if(append !== undefined && exclude === undefined){
-                    keyWordHtml += `
+    var keyWordArr = [];
+    if (localStorage.keyWord !== "" && localStorage.keyWord !== undefined) {
+      var keyWord = localStorage.keyWord;
+      keyWordArr = JSON.parse(keyWord);
+      var keyWordHtml = "";
+      for (var i in keyWordArr) {
+        var append = keyWordArr[i].appended;
+        if (append === null || append === undefined) {
+          append = new Array();
+        }
+        var exclude = keyWordArr[i].exclude;
+        if (exclude === null || exclude === undefined) {
+          exclude = new Array();
+        }
+        if (append !== undefined && exclude === undefined) {
+          keyWordHtml += `
                         <li>
                             <div class="one">
                                 <div>
@@ -181,8 +250,8 @@
                                 <button class="ascertainKey">确定</button>
                             </div>
                         </li>`;
-                }else if(append === undefined && exclude !== undefined){
-                    keyWordHtml += `
+        } else if (append === undefined && exclude !== undefined) {
+          keyWordHtml += `
                         <li>
                             <div class="one">
                                 <div>
@@ -205,8 +274,8 @@
                                 <button class="ascertainKey">确定</button>
                             </div>
                         </li>`;
-                }else if(append !== undefined && exclude !== undefined){
-                    keyWordHtml += `
+        } else if (append !== undefined && exclude !== undefined) {
+          keyWordHtml += `
                         <li>
                             <div class="one">
                                 <div>
@@ -233,8 +302,8 @@
                                 <button class="ascertainKey">确定</button>
                             </div>
                         </li>`;
-                }else if(append === undefined && exclude === undefined){
-                    keyWordHtml += `
+        } else if (append === undefined && exclude === undefined) {
+          keyWordHtml += `
                         <li>
                             <div class="one">
                                 <div>
@@ -253,195 +322,217 @@
                                 <button class="ascertainKey">确定</button>
                             </div>
                         </li>`;
-                }
-                keyWordHtml = keyWordHtml.replace(/,/g, " ");
-            }
-            $('.showKeyWord > ul').prepend(keyWordHtml);
-            //
-
         }
-        //
-        if(sessionStorage.keyWord!==""&&sessionStorage.keyWord!==undefined){
-            turn = $('.addkeyWord input.enterOne').val();
-            var keys = JSON.parse(sessionStorage.keyWord);
-            if (turn == '' && keys.length === 1) {
-                turn = keys[0].keyWord
-                $('.addkeyWord input.enterOne').val(turn)
+        keyWordHtml = keyWordHtml.replace(/,/g, " ");
+      }
+      $('.showKeyWord > ul').prepend(keyWordHtml);
+      //
+      console.log(keyWordArr);
+      
+      if (getTotal() >= wordsLimit) {
+        $('.addKeyWord').hide()
+        $('.keywords-more-tips').show()
+        $('.addAdjunctWord.add-append-btn').attr('disabled', true)
+        $('.addExclusion.add-exclude-btn').attr('disabled', true)
+      } else {
+        $('.addKeyWord').show()
+        $('.keywords-more-tips').hide()
+        $('.addAdjunctWord').removeAttr('disabled')
+        $('.addExclusion.add-exclude-btn').removeAttr('disabled')
+      }
+    }
+    //
+    if (sessionStorage.keyWord !== "" && sessionStorage.keyWord !== undefined) {
+      turn = $('.addkeyWord input.enterOne').val();
+      var keys = JSON.parse(sessionStorage.keyWord);
+      if (turn == '' && keys.length === 1) {
+        turn = keys[0].keyWord
+        $('.addkeyWord input.enterOne').val(turn)
+      }
+      for (var a in keys) {
+        if (keys[a].keyWord === turn) {
+          $(".btnChoose").show();
+          //数量
+          var str = "";
+          var strs = "";
+          if (keys[a].appended != null && keys[a].appended !== undefined) {
+            var appended = keys[a].appended.length;
+            if (appended < 1) {
+              str = "添加 附加词";
+              $(".addAdjunctWord").addClass('add-append-btn')
+            } else {
+              str = "编辑 附加词 (" + appended + ")";
+              $(".addAdjunctWord").removeClass('add-append-btn')
             }
-            for(var a in keys){
-                if (keys[a].keyWord === turn){
-                    $(".btnChoose").show();
-                    //数量
-                    var str = "";
-                    var strs = "";
-                    if(keys[a].appended!=null&&keys[a].appended !== undefined){
-                        var appended = keys[a].appended.length;
-                        if(appended < 1){
-                            str =  "添加 附加词";
-                        }else{
-                            str = "编辑 附加词 ("+appended+")";
-                        }
-                    }else{
-                        str =  "添加 附加词";
-                    }
-                    $(".addAdjunctWord").text(str);
-                    if(keys[a].exclude!=null&&keys[a].exclude !== undefined){
-                        var exclude =keys[a].exclude.length;
-                        if(exclude < 1){
-                            strs = "添加 排除词";
-                        }else{
-                            strs = "编辑 排除词 ("+exclude+")";
-                        }
-                    }else{
-                        strs = "添加 排除词";
-                    }
-                    $(".addExclusion").text(strs);
-                }
+          } else {
+            str = "添加 附加词";
+            $(".addAdjunctWord").addClass('add-append-btn')
+          }
+          $(".addAdjunctWord").text(str);
+          if (keys[a].exclude != null && keys[a].exclude !== undefined) {
+            var exclude = keys[a].exclude.length;
+            if (exclude < 1) {
+              strs = "添加 排除词";
+              $(".addExclusion").addClass('add-exclude-btn')
+            } else {
+              strs = "编辑 排除词 (" + exclude + ")";
+              $(".addExclusion").removeClass('add-exclude-btn')
             }
+          } else {
+            strs = "添加 排除词";
+            $(".addExclusion").addClass('add-exclude-btn')
+          }
+          $(".addExclusion").text(strs);
         }
-        //
-        if($(".enterOne").val()!==""){
-            $('.enter.addkeyWord .btnChoose .appended').prop("disabled", false);
-            $('.enter.addkeyWord .btnChoose .exclude').prop("disabled", false);
-            $('.enter.addkeyWord .btn > button').prop("disabled", false);
-            $('.enter.addkeyWord .btn > button').css("opacity", 1);
-        }
-        $(".appended").on('click', function () {
-            var keyWord = $(this).parent().prev().val();
-            if (keyWord.length > 20) {
-                // var s = keyWord.slice(0,19);
-                // $('.addkeyWord input.enterOne').val(s)
-
-                weui.toast('关键词不能超过20字', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
-            }
-            var buttonDOM = $('.enter.addkeyWord .btnChoose .appended');
-            buttonDOM.prop("disabled", true);
-            //
-            if(sessionStorage.keyWord!==""&&sessionStorage.keyWord!==undefined){
-                var keys = JSON.parse(sessionStorage.keyWord);
-                for(var i in keys){
-                    if(keys[i].keyWord===turn){
-	                	if(keyWord!==turn){
-	                		keys[i].keyWord = keyWord;
-	                	}
-	                	sessionStorage.keyWord = JSON.stringify(keys);
-	                    window.location.href = "/jyapp/front/dataExport/appended?keyWord="+keyWord;
-	                    return
-	                }
-                }
-            }
-            //
-            var obj = [{"keyWord":keyWord}];
-            sessionStorage.keyWord = JSON.stringify(obj);
-            window.location.href = "/jyapp/front/dataExport/appended?keyWord="+keyWord;
-        });
-        $(".exclude").on('click', function () {
-            var keyWord = $(this).parent().prev().val();
-            if (keyWord.length > 20) {
-                // var s = keyWord.slice(0,19);
-                // $('.addkeyWord input.enterOne').val(s)
+      }
+    }
+    //
+    if ($(".enterOne").val() !== "") {
+      $('.enter.addkeyWord .btnChoose .appended').prop("disabled", false);
+      $('.enter.addkeyWord .btnChoose .exclude').prop("disabled", false);
+      $('.enter.addkeyWord .btn > button').prop("disabled", false);
+      $('.enter.addkeyWord .btn > button').css("opacity", 1);
+    }
+    $(".appended").on('click', function () {
+      var keyWord = $(this).parent().prev().val();
+      if (keyWord.length > 20) {
+        // var s = keyWord.slice(0,19);
+        // $('.addkeyWord input.enterOne').val(s)
 
-                weui.toast('关键词不能超过20字', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
-            }
-            var buttonDOM = $('.enter.addkeyWord .btnChoose .exclude');
-            buttonDOM.prop("disabled", true);
-            //
-            if(sessionStorage.keyWord!==""&&sessionStorage.keyWord!==undefined){
-                var keys = JSON.parse(sessionStorage.keyWord);
-                for(var i in keys){
-                    if(keys[i].keyWord===turn){
-	                	if(keyWord!==turn){
-	                		keys[i].keyWord = keyWord;
-	                	}
-	                	sessionStorage.keyWord = JSON.stringify(keys);
-	                    window.location.href = "/jyapp/front/dataExport/exclude?keyWord="+keyWord;
-	                    return
-	                }
-                }
-            }
-            //
-            var obj = [{"keyWord":keyWord}];
-            sessionStorage.keyWord = JSON.stringify(obj);
-            window.location.href = "/jyapp/front/dataExport/exclude?keyWord="+keyWord;
+        weui.toast('关键词不能超过20字', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
         });
-        //
-        $(".showKeyWord").on('click', '.addAdjunctWord',function(e){
-            var keyWord = $(this).parent().prev().find('.key').text();
-			if($(this).prev().val().replace(/\s+/g,"").length < 1){
-            	weui.toast('关键词不能为空', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
+        return
+      }
+      var buttonDOM = $('.enter.addkeyWord .btnChoose .appended');
+      buttonDOM.prop("disabled", true);
+      //
+      if (sessionStorage.keyWord !== "" && sessionStorage.keyWord !== undefined) {
+        var keys = JSON.parse(sessionStorage.keyWord);
+        for (var i in keys) {
+          if (keys[i].keyWord === turn) {
+            if (keyWord !== turn) {
+              keys[i].keyWord = keyWord;
             }
-            if (keyWord.length > 20) {
-                // var s = keyWord.slice(0,19);
-                // $('.addkeyWord input.enterOne').val(s)
+            sessionStorage.keyWord = JSON.stringify(keys);
+            window.location.href = "/jyapp/front/dataExport/appended?keyWord=" + keyWord;
+            return
+          }
+        }
+      }
+      //
+      var obj = [{
+        "keyWord": keyWord
+      }];
+      sessionStorage.keyWord = JSON.stringify(obj);
+      window.location.href = "/jyapp/front/dataExport/appended?keyWord=" + keyWord;
+    });
+    $(".exclude").on('click', function () {
+      var keyWord = $(this).parent().prev().val();
+      if (keyWord.length > 20) {
+        // var s = keyWord.slice(0,19);
+        // $('.addkeyWord input.enterOne').val(s)
 
-                weui.toast('关键词不能超过20字', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
-            }
-            sessionStorage.removeItem("keyWord");
-            window.location.href = "/jyapp/front/dataExport/appended?keyWord="+keyWord;
+        weui.toast('关键词不能超过20字', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
         });
-        $(".showKeyWord").on('click', '.addExclusion',function(e){
-            var keyWord = $(this).parent().prev().find('.key').text();
-            if($(this).parent().find("textarea").val().replace(/\s+/g,"").length < 1){
-            	weui.toast('关键词不能为空', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
-            }
-            if (keyWord.length > 20) {
-                // var s = keyWord.slice(0,19);
-                // $('.addkeyWord input.enterOne').val(s)
-
-                weui.toast('关键词不能超过20字', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
+        return
+      }
+      var buttonDOM = $('.enter.addkeyWord .btnChoose .exclude');
+      buttonDOM.prop("disabled", true);
+      //
+      if (sessionStorage.keyWord !== "" && sessionStorage.keyWord !== undefined) {
+        var keys = JSON.parse(sessionStorage.keyWord);
+        for (var i in keys) {
+          if (keys[i].keyWord === turn) {
+            if (keyWord !== turn) {
+              keys[i].keyWord = keyWord;
             }
-            sessionStorage.removeItem("keyWord");
-            window.location.href = "/jyapp/front/dataExport/exclude?keyWord="+keyWord;
+            sessionStorage.keyWord = JSON.stringify(keys);
+            window.location.href = "/jyapp/front/dataExport/exclude?keyWord=" + keyWord;
+            return
+          }
+        }
+      }
+      //
+      var obj = [{
+        "keyWord": keyWord
+      }];
+      sessionStorage.keyWord = JSON.stringify(obj);
+      window.location.href = "/jyapp/front/dataExport/exclude?keyWord=" + keyWord;
+    });
+    //
+    $(".showKeyWord").on('click', '.addAdjunctWord', function (e) {
+      var keyWord = $(this).parent().prev().find('.key').text();
+      if ($(this).prev().val().replace(/\s+/g, "").length < 1) {
+        weui.toast('关键词不能为空', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
         });
+        return
+      }
+      if (keyWord.length > 20) {
+        // var s = keyWord.slice(0,19);
+        // $('.addkeyWord input.enterOne').val(s)
 
-        $('.addkeyWord .btn .close').on('click', function () {
-            sessionStorage.removeItem("keyWord");
-            window.history.back();
+        weui.toast('关键词不能超过20字', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
         });
-        //
-        $(".showKeyWord ul li .one").each(function () {
-            var dom = $(this).children().find("p.addition").html();
-            if(dom === ""){
-                $(this).children().find("p.addition").parent().remove();
-            }
-            var doms = $(this).children().find("p.exclusion").html();
-            if(doms === ""){
-                $(this).children().find("p.exclusion").parent().remove();
-            }
+        return
+      }
+      sessionStorage.removeItem("keyWord");
+      window.location.href = "/jyapp/front/dataExport/appended?keyWord=" + keyWord;
+    });
+    $(".showKeyWord").on('click', '.addExclusion', function (e) {
+      var keyWord = $(this).parent().prev().find('.key').text();
+      if ($(this).parent().find("textarea").val().replace(/\s+/g, "").length < 1) {
+        weui.toast('关键词不能为空', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
         });
-    </script>
-<!--百度统计end-->
-{{include "/common/baiducc.html"}}
+        return
+      }
+      if (keyWord.length > 20) {
+        // var s = keyWord.slice(0,19);
+        // $('.addkeyWord input.enterOne').val(s)
+
+        weui.toast('关键词不能超过20字', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
+        });
+        return
+      }
+      sessionStorage.removeItem("keyWord");
+      window.location.href = "/jyapp/front/dataExport/exclude?keyWord=" + keyWord;
+    });
+
+    $('.addkeyWord .btn .close').on('click', function () {
+      sessionStorage.removeItem("keyWord");
+      window.history.back();
+    });
+    //
+    $(".showKeyWord ul li .one").each(function () {
+      var dom = $(this).children().find("p.addition").html();
+      if (dom === "") {
+        $(this).children().find("p.addition").parent().remove();
+      }
+      var doms = $(this).children().find("p.exclusion").html();
+      if (doms === "") {
+        $(this).children().find("p.exclusion").parent().remove();
+      }
+    });
+  </script>
+  <!--百度统计end-->
+  {{include "/common/baiducc.html"}}
 </body>
 
 </html>

+ 110 - 7
src/jfw/modules/app/src/web/templates/dataExport/dataExport_keyWordInput.html

@@ -23,9 +23,31 @@
     body{
         background: rgba(245,244,249,1)!important;
     }
+    .keyWord{
+      height: 100%;
+    }
     .keyWord .enter .btn .save {
         float: right;
     }
+    .keyword-more-tips {
+      display: none;
+      width: 100%;
+      padding: .24rem .32rem;
+      background: rgba(249, 242, 234, 1);
+      color: #FF9F40;
+      font-size: .26rem;
+      line-height: .4rem;
+      text-align: center;
+    }
+
+    .keyword-more-tips>a {
+      color: #FF3A20;
+      text-decoration: underline;
+    }
+    button:disabled,
+    button[disabled]{
+      opacity: 0.6!important;
+    }
 </style>
 <body>
 	<div class="page">
@@ -41,8 +63,8 @@
     <div class="enter addkeyWord">
         <input type="text" class="enterOne" placeholder="请输入关键词" />
         <div class="btnChoose" style="display:none;">
-            <button class="addAdjunctWord appended" disabled>添加 附加词</button>
-            <button class="addExclusion exclude" disabled>添加 排除词</button>
+            <button class="addAdjunctWord appended" disabled data-attr="add">添加 附加词</button>
+            <button class="addExclusion exclude" disabled data-attr="add">添加 排除词</button>
         </div>
         <div class="btn">
             <button class="save" disabled>确认</button>
@@ -54,7 +76,7 @@
         疑问解答 <i class="iconfont icon-wenhao"></i>
     </div>
    </section>
-
+   <!-- <div class="keyword-more-tips">关键词已达上限,如需添加更多您可<a href="javascript:;" onclick="goPerfect()">申请数据定制导出></a></div> -->
 </div>
 <!-- 疑难问题弹窗 -->
     <div class="problemPop">
@@ -84,6 +106,11 @@
 		</div>
 	</div>
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
+<script>
+  var limit = {{Export.exportLimit}};
+  var wordsLimit = limit.countLimit || 100
+  console.log(limit);
+</script>
 <script>
     $(function () {
         var isPageHide = false;
@@ -103,10 +130,78 @@
         keyWordArr = JSON.parse(keyWord);
     }
     //
-    //
+    function goPerfect() {
+      var source = ''
+      if (utils.$env.platform === 'h5') {
+        source = 'h5_Dataself_keywordmore_customization'
+      } else {
+        source = 'app_Dataself_keywordmore_customization'
+      }
+      location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=' + source
+    }
+    function sumArr(arr){
+      var sum = 0
+      arr.forEach(function(val){
+        sum += val
+      })
+      return sum
+    }
+
+    // 计算关键词、附加词、排除词总和
+    function getTotal () {
+      var keyWordArr = JSON.parse(localStorage.getItem("keyWord")) || []
+      var keyLen = keyWordArr.length
+      var arr = []
+      keyWordArr.forEach(function(item) {
+        if (item.appended) {
+          arr.push(item.appended.length)
+        }
+        if (item.exclude) {
+          arr.push(item.exclude.length)
+        }
+      })
+      arr.push(keyLen)
+      /**
+       * 此处取计算当前页关键词、附加词、排除词(当前页未保存前不存入localStorage)
+       * 关键词:输入框有值即+1
+       * 附加词、关键词取文案中的数字
+       * 原来的逻辑当前页的关键词、附加词、排除词是取sessionStorage取值,但没有及时清除(编辑、添加来回跳转的时候在其它页面会继续取sessionStorage),刷新页面仍会有值导致计算不准确
+       * */
+      if ($('.enterOne').val().trim()) {
+        arr.push(1)
+      }
+      var appendText= $('.addAdjunctWord.appended').text();
+      var excludeText = $('.addExclusion.exclude').text();
+      var appendCount = appendText.match(/\d/g) ? appendText.match(/\d/g)[0] : 0;
+      var excludeCount = excludeText.match(/\d/g) ? excludeText.match(/\d/g)[0] : 0;
+      arr.push(Number(appendCount))
+      arr.push(Number(excludeCount))
+      var total = sumArr(arr)
+      console.log(total);
+      return total
+    }
+    function hasWords () {
+        if (getTotal() >= wordsLimit) {
+          if (getTotal() === wordsLimit) {
+            $('[data-attr="add"]').attr('disabled', true)
+          } else {
+            // $('.keyword-more-tips').show()
+            $('.save').attr('disabled', true)
+            $('[data-attr="add"]').attr('disabled', true)
+          }
+        } else {
+          // $('.keyword-more-tips').hide()
+          $('.save').removeAttr('disabled')
+          if ($('.enterOne').val().trim()) {
+            $('.appended').removeAttr('disabled')
+            $('.exclude').removeAttr('disabled')
+          }
+        }
+    }
     $(function() {
+        hasWords()
         $(".enterOne").focus(function () {
-            $(".btnChoose").show();
+          $(".btnChoose").show();
         });
         $('.knowBtn').on('click', function () {
             $(".problemPop").hide()
@@ -131,6 +226,7 @@
                 $(this).next().find(".appended").prop("disabled", true);
                 $(this).next().find(".exclude").prop("disabled", true);
             }
+            hasWords()
         });
 
         // 添加 按钮的点击事件
@@ -225,24 +321,31 @@
                     var appended = keys[a].appended.length;
                     if(appended < 1){
                         str =  "添加 附加词";
+                        $(".addAdjunctWord").attr('data-attr', 'add');
                     }else{
                         str = "编辑 附加词 ("+appended+")";
+                        $(".addAdjunctWord").removeAttr('data-attr');
+
                     }
                 }else{
                     str =  "添加 附加词";
+                    $(".addAdjunctWord").attr('data-attr', 'add');
                 }
-                $(".addAdjunctWord").text(str);
+                $(".addAdjunctWord").text(str)
                 if(keys[a].exclude !== undefined){
                     var exclude =keys[a].exclude.length;
                     if(exclude < 1){
                         strs = "添加 排除词";
+                        $(".addExclusion").attr('data-attr', 'add');
                     }else{
                         strs = "编辑 排除词 ("+exclude+")";
+                        $(".addExclusion").removeAttr('data-attr');
                     }
                 }else{
                     strs = "添加 排除词";
+                    $(".addExclusion").attr('data-attr', 'add');
                 }
-                $(".addExclusion").text(strs);
+                $(".addExclusion").text(strs)
             }
         }
     }

+ 304 - 239
src/jfw/modules/app/src/web/templates/dataExport/dataExport_winnerEdit.html

@@ -2,94 +2,132 @@
 <html lang="en">
 
 <head>
-	{{include "/common/meta.html"}}
-	<title>中标单位</title>
-	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/css/base.css?v={{Msg "seo" "version"}}">
-	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css">
-	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/css/keyWord.css?v={{Msg "seo" "version"}}">
-	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css" />
-	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}" />
-	<link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/dataExport/css/association.css?v={{Msg "seo" "version"}}'/>
-	<script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
-	<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js?v={{Msg "seo" "version"}}"></script>
-	{{include "/common/js.html"}}
-	</head>
-	<style>
-		.page{
-			display: flex;
-			flex-direction: column;
-			height: 100%;
-			justify-content: space-between;
-		}
-		body{
-			background: rgba(245,244,249,1)!important;
-		}
-		.keyWord .enter .btn .save-btn {
-			float: right;
-		}
-		.addKeyWord i {
-			font-size: 1rem;
-			color: #2cb7ca;
-		}
-		.addKeyWord {
-			left: 44%;
-			position: fixed;
-			text-align: center;
-			bottom: 10%;
-		}
-	</style>
-	<body>
-		<div class="page">
-			<div class="app-layout-header jy-app-header">
-				<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
-				中标单位
-			<span></span></div>
-			<div class="app-layout-content-b">
-				<div class="keyWord">
-						<div class="enter addkeyWord">
-						<input type="text" class="enterOne" placeholder="中标单位名称" />
-						<div class="btn fixed-bottom">
-						<button class="save-btn" disabled>确认</button>
-						<button class="close">取消</button>
-				</div>
-				</div>
+  {{include "/common/meta.html"}}
+  <title>中标单位</title>
+  <link rel="stylesheet" type="text/css"
+    href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/css/base.css?v={{Msg "seo" "version"}}">
+  <link rel="stylesheet" type="text/css"
+    href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+  <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css">
+  <link rel="stylesheet" type="text/css"
+    href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/dataExport/css/keyWord.css?v={{Msg "seo" "version"}}">
+  <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css" />
+  <link rel="stylesheet" type="text/css"
+    href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}" />
+  <link rel="stylesheet"
+    href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/dataExport/css/association.css?v={{Msg "seo" "version"}}' />
+  <script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
+  <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js?v={{Msg "seo" "version"}}"></script>
+  {{include "/common/js.html"}}
+</head>
+<style>
+  .page {
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+    justify-content: space-between;
+  }
 
-				<!-- 添加附加词显示列表 -->
-				<div class="showKeyWord">
-						<ul>
+  body {
+    background: rgba(245, 244, 249, 1) !important;
+  }
 
-						</ul>
+  .keyWord .enter .btn .save-btn {
+    float: right;
+  }
 
-						</div>
-						<div class="association-list-box" style="display: none;">
-							<ul class="association-list">
-							</ul>
-						</div>
+  .content {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    overflow-y: scroll;
+  }
 
-						</div>
+  .addKeyBtn i {
+    font-size: 1rem;
+    color: #2cb7ca;
+  }
 
-			</div>
-		</div>
-		<div class="addKeyWord">
-			<i class="iconfont icon-tianjia"></i>
-		</div>
+  .addKeyBtn {
+    left: 44%;
+    position: fixed;
+    text-align: center;
+    bottom: 10%;
+  }
+
+  .ent-more-tips {
+    display: none;
+    width: 100%;
+    padding: .14rem .32rem;
+    background: rgba(249, 242, 234, 1);
+    color: #FF9F40;
+    font-size: .26rem;
+    line-height: .4rem;
+    text-align: center;
+  }
+
+  .ent-more-tips>a {
+    color: #FF3A20;
+    text-decoration: underline;
+  }
+</style>
+
+<body>
+  <div class="page">
+    <div class="app-layout-header jy-app-header">
+      <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+      中标单位
+      <span></span></div>
+    <div class="app-layout-content-b">
+      <div class="keyWord">
+        <section class="content">
+          <div class="enter addkeyWord">
+            <input type="text" class="enterOne" placeholder="中标单位名称" />
+            <div class="btn fixed-bottom">
+              <button class="save-btn" disabled>确认</button>
+              <button class="close">取消</button>
+            </div>
+          </div>
+
+          <!-- 添加附加词显示列表 -->
+          <div class="showKeyWord">
+            <ul>
+
+            </ul>
+
+          </div>
+          <div class="association-list-box" style="display: none;">
+            <ul class="association-list">
+            </ul>
+          </div>
+        </section>
+        <div class="ent-more-tips">最多可添加{{Export.exportLimit.winnerLimit}}个中标单位,目前已达上限,如需添加更多您可<a href="javascript:;" onclick="goPerfect()">申请数据定制导出></a></div>
+      </div>
+    </div>
+    <div class="addKeyBtn" id="add-ent-word">
+      <i class="iconfont icon-tianjia"></i>
+    </div>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js"></script>
-	<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
-	<script>
-		$(window).bind("pageshow", function(event){
-			if(event.originalEvent.persisted){
-				window.location.reload();
-			}
-		});
-		var winnerArr = [];
-		if(localStorage.winner !== "" && localStorage.winner !== undefined){
-			var winner = localStorage.winner.split(",");
-			winnerArr = winner;
-			var html = "";
-			for(var i in winner){
-				html +=
-						`<li>
+    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
+    <script>
+      var limit = {{Export.exportLimit}};
+      var winnerLimit = limit.winnerLimit || 100
+      console.log(limit);
+    </script>
+    <script>
+      $(window).bind("pageshow", function (event) {
+        if (event.originalEvent.persisted) {
+          window.location.reload();
+        }
+      });
+      var winnerArr = [];
+      if (localStorage.winner !== "" && localStorage.winner !== undefined) {
+        var winner = localStorage.winner.split(",");
+        winnerArr = winner;
+        var html = "";
+        for (var i in winner) {
+          html +=
+            `<li>
 							<div class="one">
 								<div>
 									<span>
@@ -104,85 +142,98 @@
 								<button class="ascertainKey">确定</button>
 							</div>
 						</li>`
-			}
-			$('.showKeyWord > ul').prepend(html);
-		}
-		$(function(){
+        }
+        $('.showKeyWord > ul').prepend(html);
+        console.log(winner);
+        if (winner.length >= winnerLimit) {
+          $('.addKeyBtn').hide()
+          $('.ent-more-tips').show()
+        }
+      }
+      $(function () {
 
-			$('.knowBtn').on('click',function(){
-				$(".problemPop").hide()
-			})
-			$(".problem").on('click',function(){
-				$(".problemPop").css("display",'flex');
-			})
+        $('.knowBtn').on('click', function () {
+          $(".problemPop").hide()
+        })
+        $(".problem").on('click', function () {
+          $(".problemPop").css("display", 'flex');
+        })
 
-			function hasWords () {
-				var showKeyWordLength = $(".showKeyWord ul").find('li').length;
-				if(showKeyWordLength === 0){
-					$(".enter.addkeyWord").show();
-					$(".addKeyWord").hide();
-					$(".showKeyWord").hide();
-				} else {
-					$(".enter.addkeyWord").hide();
-					$(".showKeyWord").show();
-					$(".addKeyWord").show();
-				}
-			}
-			hasWords();
+        function hasWords() {
+          var showKeyWordLength = $(".showKeyWord ul").find('li').length;
+          if (showKeyWordLength === 0) {
+            $(".enter.addkeyWord").show();
+            $(".addKeyWord").hide();
+            $(".showKeyWord").hide();
+            $('.addKeyBtn').hide()
+          } else {
+            $(".enter.addkeyWord").hide();
+            $(".showKeyWord").show();
+            $(".addKeyWord").show();
+            if (showKeyWordLength >= winnerLimit) {
+              $('.addKeyBtn').hide()
+              $('.ent-more-tips').show()
+            } else {
+              $('.addKeyBtn').show()
+              $('.ent-more-tips').hide()
+            }
+          }
+        }
+        hasWords();
 
-			// 添加按钮
-			$(".addKeyWord i").on('click',function(){
-				window.location.href="/jyapp/front/dataExport/winnerInput";
-			});
+        // 添加按钮
+        $(".addKeyBtn i").on('click', function () {
+          window.location.href = "/jyapp/front/dataExport/winnerInput";
+        });
 
-			$('textarea').each(function(i,dom){
-				// console.log(i,dom)
-				dom.style.height = dom.scrollHeight +'px';
-			});
-			$("textarea").on("input", function() {
-				this.style.height = 'auto';
-				this.style.height = this.scrollHeight + "px";
-			});
+        $('textarea').each(function (i, dom) {
+          // console.log(i,dom)
+          dom.style.height = dom.scrollHeight + 'px';
+        });
+        $("textarea").on("input", function () {
+          this.style.height = 'auto';
+          this.style.height = this.scrollHeight + "px";
+        });
 
-			//防止键盘把当前输入框给挡住
-			$('input[type="text"],textarea').focus(function () {
-				var target = this;
-				setTimeout(function(){
-					target.scrollIntoViewIfNeeded();
-				},400);
-			});
+        //防止键盘把当前输入框给挡住
+        $('input[type="text"],textarea').focus(function () {
+          var target = this;
+          setTimeout(function () {
+            target.scrollIntoViewIfNeeded();
+          }, 400);
+        });
 
-			// 添加keyWords检查输入框内是否有文字,如果有才能点击添加按钮
-			$('.addkeyWord input.enterOne').on('input', function() {
+        // 添加keyWords检查输入框内是否有文字,如果有才能点击添加按钮
+        $('.addkeyWord input.enterOne').on('input', function () {
 
-				var buttonDOM = $(this).siblings().find('button')[0];
-				if ($(this).val().replace(/\s+/g,"").length >= 1) {
-					buttonDOM.style.opacity = 1;
-					buttonDOM.removeAttribute("disabled")
-				} else {
-					buttonDOM.style.opacity = .5;
-					buttonDOM.setAttribute("disabled", true)
-				}
-			});
+          var buttonDOM = $(this).siblings().find('button')[0];
+          if ($(this).val().replace(/\s+/g, "").length >= 1) {
+            buttonDOM.style.opacity = 1;
+            buttonDOM.removeAttribute("disabled")
+          } else {
+            buttonDOM.style.opacity = .5;
+            buttonDOM.setAttribute("disabled", true)
+          }
+        });
 
-			// 添加 按钮的点击事件
-			$('.addkeyWord .btn .save-btn').on('click', function(){
-				var keyWord = $('.addkeyWord input.enterOne').val();
-				keyWord = keyWord.replace(/(^\s*)|(\s*$)/g, "");
-				if (keyWord.length > 50) {
-					// var s = keyWord.slice(0,49);
-					// $('.addkeyWord input.enterOne').val(s);
+        // 添加 按钮的点击事件
+        $('.addkeyWord .btn .save-btn').on('click', function () {
+          var keyWord = $('.addkeyWord input.enterOne').val();
+          keyWord = keyWord.replace(/(^\s*)|(\s*$)/g, "");
+          if (keyWord.length > 50) {
+            // var s = keyWord.slice(0,49);
+            // $('.addkeyWord input.enterOne').val(s);
 
-					weui.toast('中标单位不能超过50字', {
-						duration: 2000,
-						className: 'text-overflow100',
-						callback: function(){}
-					});
-					return
-				}
-				winnerArr.push(keyWord);
-				localStorage.setItem("winner", winnerArr);
-				var html = `<li>
+            weui.toast('中标单位不能超过50字', {
+              duration: 2000,
+              className: 'text-overflow100',
+              callback: function () {}
+            });
+            return
+          }
+          winnerArr.push(keyWord);
+          localStorage.setItem("winner", winnerArr);
+          var html = `<li>
 								<div class="one">
 									<div>
 										<span>
@@ -197,100 +248,114 @@
 									<button class="ascertainKey">确定</button>
 								</div>
 							</li>`;
-				$('.showKeyWord > ul').prepend(html);
-
-				// 隐藏
-				$(".enter.addkeyWord").hide();
-				$(".showKeyWord").show();
-				$(".addKeyWord").show();
-				$('.enter.addkeyWord > input').val('');
-				var buttonDOM = $('.enter.addkeyWord .btn button')[0];
-				buttonDOM.style.opacity = .5;
-				buttonDOM.setAttribute("disabled", true)
+          $('.showKeyWord > ul').prepend(html);
 
-			});
+          // 隐藏
+          $(".enter.addkeyWord").hide();
+          $(".showKeyWord").show();
+          $(".addKeyWord").show();
+          $('.enter.addkeyWord > input').val('');
+          var buttonDOM = $('.enter.addkeyWord .btn button')[0];
+          buttonDOM.style.opacity = .5;
+          buttonDOM.setAttribute("disabled", true)
+          hasWords();
+        });
 
-			// 编辑
-			$(".showKeyWord").on('click', '.editKeyWord',function(e){
-				let oSpan = $(this).parent().siblings().children('textarea');
-				let val = $(oSpan).val();
-				$(this).parent().hide();
-				$(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one').show()
-				$(oSpan).val('').focus().val(val);
-				$(".addKeyWord").hide();
-			});
+        // 编辑
+        $(".showKeyWord").on('click', '.editKeyWord', function (e) {
+          let oSpan = $(this).parent().siblings().children('textarea');
+          let val = $(oSpan).val();
+          $(this).parent().hide();
+          $(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one')
+            .show()
+          $(oSpan).val('').focus().val(val);
+          $(".addKeyWord").hide();
+          hasWords();
+        });
 
-			// 编辑 删除
-			$('.showKeyWord').on('click', '.deleteKey', function(e) {
-				var winner = $(this).parent().prev().find('.key').text();
-				winnerArr.splice($.inArray(winner, winnerArr),1);
-				localStorage.winner = winnerArr.toString();
-				$(this).parents('li').remove();
-				$(".addKeyWord").show();
-				hasWords()
-				// console.log('删除附加词:',$(this).parent().find('span').text())
-			});
-			// 编辑 确定
-			$('.showKeyWord').on('click', '.ascertainKey', function(e) {
-				var keyWord = $(this).siblings('textarea').val();
-				var winner = $(this).parent().prev().find('.key').text();
-				keyWord = keyWord.replace(/(^\s*)|(\s*$)/g, "");
-				if (keyWord.replace(/\s+/g,"").length < 1) {
+        // 编辑 删除
+        $('.showKeyWord').on('click', '.deleteKey', function (e) {
+          var winner = $(this).parent().prev().find('.key').text();
+          winnerArr.splice($.inArray(winner, winnerArr), 1);
+          localStorage.winner = winnerArr.toString();
+          $(this).parents('li').remove();
+          $(".addKeyWord").show();
+          hasWords()
+          // console.log('删除附加词:',$(this).parent().find('span').text())
+        });
+        // 编辑 确定
+        $('.showKeyWord').on('click', '.ascertainKey', function (e) {
+          var keyWord = $(this).siblings('textarea').val();
+          var winner = $(this).parent().prev().find('.key').text();
+          keyWord = keyWord.replace(/(^\s*)|(\s*$)/g, "");
+          if (keyWord.replace(/\s+/g, "").length < 1) {
 
-					weui.toast('中标单位不能为空', {
-						duration: 2000,
-						className: 'text-overflow100',
-						callback: function(){
+            weui.toast('中标单位不能为空', {
+              duration: 2000,
+              className: 'text-overflow100',
+              callback: function () {
 
-						}
-					});
-					return
-				}else if($(this).parent().find("textarea").val().length > 50){
-					// var s = $(this).parent().find("span").text().slice(0,49);
-					// $(this).parent().find("span").text(s);
-					weui.toast('中标单位不能超过50字', {
-						duration: 2000,
-						className: 'text-overflow100',
-						callback: function(){}
-					});
-					return
-				}else{
-					for(var i in winnerArr){
-						if(keyWord !== winner){
-							if(winnerArr[i] === keyWord){
-								weui.toast('中标单位重复了', {
-									duration: 2000,
-									className: 'text-overflow100',
-									callback: function(){}
-								});
-								return
-							}
-						}
-						if(winnerArr[i] === winner){
-							winnerArr[i] = keyWord;
-						}
-					}
-					localStorage.winner = winnerArr.toString();
-					$(this).parent().siblings().find('.key').text(keyWord);
-					$(this).parent().hide().siblings().show()
-				}
-				$(".addKeyWord").show();
-			});
+              }
+            });
+            return
+          } else if ($(this).parent().find("textarea").val().length > 50) {
+            // var s = $(this).parent().find("span").text().slice(0,49);
+            // $(this).parent().find("span").text(s);
+            weui.toast('中标单位不能超过50字', {
+              duration: 2000,
+              className: 'text-overflow100',
+              callback: function () {}
+            });
+            return
+          } else {
+            for (var i in winnerArr) {
+              if (keyWord !== winner) {
+                if (winnerArr[i] === keyWord) {
+                  weui.toast('中标单位重复了', {
+                    duration: 2000,
+                    className: 'text-overflow100',
+                    callback: function () {}
+                  });
+                  return
+                }
+              }
+              if (winnerArr[i] === winner) {
+                winnerArr[i] = keyWord;
+              }
+            }
+            localStorage.winner = winnerArr.toString();
+            $(this).parent().siblings().find('.key').text(keyWord);
+            $(this).parent().hide().siblings().show()
+          }
+          // $(".addKeyWord").show();
+          hasWords();
+        });
 
-			//去空格方法
-			String.prototype.trim = function(){
-				return this.replace(/(^\s*)|(\s*$)/g, ' ');
-			};
+        //去空格方法
+        String.prototype.trim = function () {
+          return this.replace(/(^\s*)|(\s*$)/g, ' ');
+        };
 
-			$(".close").on('click', function () {
-				history.back();
-			});
-		})
+        $(".close").on('click', function () {
+          history.back();
+        });
+      })
 
-	</script>
-	<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/dataExport/js/association.js?v={{Msg "seo" "version"}}"></script>
-<!--百度统计end-->
-{{include "/common/baiducc.html"}}
-	</body>
+      function goPerfect() {
+        var source = ''
+        if (utils.$env.platform === 'h5') {
+          source = 'h5_Dataself_entmore_customization'
+        } else {
+          source = 'app_Dataself_entmore_customization'
+        }
+        location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=' + source
+      }
+    </script>
+    <script
+      src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/dataExport/js/association.js?v={{Msg "seo" "version"}}">
+    </script>
+    <!--百度统计end-->
+    {{include "/common/baiducc.html"}}
+</body>
 
 </html>

+ 3 - 3
src/jfw/modules/bigmember/src/go.mod

@@ -5,8 +5,8 @@ go 1.19
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230727083622-4dfc804ea6cf
 	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
-	app.yhyue.com/moapp/jypkg v0.0.0-20231024062045-5c364be1561d
-	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.14
+	app.yhyue.com/moapp/jypkg v1.0.7
+	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.15-0.20230925060020-8e4db0f1e13e
 	github.com/donnie4w/go-logger v0.0.0-20230316073421-36a48f87a69a
 	github.com/gogf/gf/v2 v2.4.2
 	github.com/olivere/elastic/v7 v7.0.32
@@ -19,7 +19,7 @@ require (
 	app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae // indirect
 	bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e // indirect
 	bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20230225125145-431a4f70093a // indirect
-	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.7 // indirect
+	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.8 // indirect
 	github.com/BurntSushi/toml v1.1.0 // indirect
 	github.com/beorn7/perks v1.0.1 // indirect
 	github.com/cenkalti/backoff/v4 v4.2.1 // indirect

+ 6 - 6
src/jfw/modules/bigmember/src/go.sum

@@ -9,18 +9,18 @@ app.yhyue.com/moapp/jybase v0.0.0-20230727083622-4dfc804ea6cf h1:/Tk5haITmGc5c3/
 app.yhyue.com/moapp/jybase v0.0.0-20230727083622-4dfc804ea6cf/go.mod h1:D40Ae0rQilH8Hc5o2Vtt04Tjh/DNEFpcS3/WkJMPJb8=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
-app.yhyue.com/moapp/jypkg v0.0.0-20231024062045-5c364be1561d h1:h8SnO8ONZlmtx8ZSYtpw36TdBhYPy8WgLeWHyMGZj0Q=
-app.yhyue.com/moapp/jypkg v0.0.0-20231024062045-5c364be1561d/go.mod h1:76Kz6+MuxcRJRyFad9W8R4AByiQlVGzuGFzklY+2m38=
+app.yhyue.com/moapp/jypkg v1.0.7 h1:BXwqRJWTYAw+V7mpQnnZn4EDCqSxVbH6YxiQKUH2xfw=
+app.yhyue.com/moapp/jypkg v1.0.7/go.mod h1:LuxdVd+j3uwm7N5j2hivmpPU0LJytEV7iwAIljdoc4Q=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
 bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e h1:h+VEI3o1qC0jeCzkFGTrLI4f27cfa/W/y+0sXokWMgE=
 bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e/go.mod h1:7Xhygw0KBuL4h0G76FnFg4otQcA9bmOO0c8M0FCjAyQ=
 bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20230225125145-431a4f70093a h1:JX2jEMrbdLzXfVC/nTUvdFOkqNj5DUxkJFjl3XE1gyg=
 bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20230225125145-431a4f70093a/go.mod h1:5nimT8GJh46AyfeeDeyRlDQygMlO7TRM8Pwm41Gxemc=
-bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.7 h1:G6PHMWAHfYEuY6kbl7OM/KnCQf1Xa54mdhuP7JzK8/I=
-bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.7/go.mod h1:rRiGzKG4F/fmkNxXQCxrkxNWc8yf1SmW8qWCKfGIQSM=
-bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.14 h1:L/0RrgU+l8nMS7YO2JizszaX3lAo0gqzg2Bqmu0So0s=
-bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.14/go.mod h1:03M9BWIGHy7BbGxLvjt8V9zZzEZDWhN6BuHVfVcDFbQ=
+bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.8 h1:14Yxzutsej7LQe3jnN61wuRX9qjAZ4FtdWMA27ewQ3w=
+bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.8/go.mod h1:rRiGzKG4F/fmkNxXQCxrkxNWc8yf1SmW8qWCKfGIQSM=
+bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.15-0.20230925060020-8e4db0f1e13e h1:bncHHkJLqiDW1ZN6MVe+3bj3i0LxWgFkfqge6Gk7lB4=
+bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.15-0.20230925060020-8e4db0f1e13e/go.mod h1:+6ZjaqpCr+ih1GYOh6ZhoDri9ZjiuxxSHvR7ovvhLx0=
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw=

+ 1 - 1
src/jfw/modules/publicapply/src/dataexport/service/action.go

@@ -64,7 +64,7 @@ func (des *DataExportStruct) PayPageParams() {
 		if resEmail == "" || resPhone == "" {
 			lastEmail, lastPhone := "", ""
 			if lastPhone, lastEmail = dataexport.GetLastExportPhoneAndMail(db.Mysql, userId, util.ObjToString(des.GetSession("entUserId"))); lastPhone == "" || lastEmail == "" {
-				userData := config.Compatible.Select( userId, `{"s_myemail":1,"s_phone":1,"s_m_phone":1}`)
+				userData := config.Compatible.Select(userId, `{"s_myemail":1,"s_phone":1,"s_m_phone":1}`)
 				if userData != nil && len(*userData) > 0 {
 					if lastEmail == "" {
 						lastEmail, _ = (*userData)["s_myemail"].(string)

+ 1 - 1
src/jfw/modules/publicapply/src/go.mod

@@ -5,7 +5,7 @@ go 1.18
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20231116061739-cd852201a8f4
 	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
-	app.yhyue.com/moapp/jypkg v1.0.7-0.20231115093146-8cc6eaee8df2
+	app.yhyue.com/moapp/jypkg v1.0.8
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.15
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67
 	github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.4

+ 2 - 2
src/jfw/modules/publicapply/src/go.sum

@@ -9,8 +9,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20231116061739-cd852201a8f4 h1:qfqQL2GJV3N31DF
 app.yhyue.com/moapp/jybase v0.0.0-20231116061739-cd852201a8f4/go.mod h1:Hv9U/7oHRucqH315Tr1+d03NCvS9mOKPfk8pwwlOIwQ=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
-app.yhyue.com/moapp/jypkg v1.0.7-0.20231115093146-8cc6eaee8df2 h1:r49ErNEAuGETZ9Ru5LqDafZO6tFF8NYj9Hm5aXwWDeI=
-app.yhyue.com/moapp/jypkg v1.0.7-0.20231115093146-8cc6eaee8df2/go.mod h1:sMZxJOsD3STWGY04aDhUtRD+1u5nqhQpdDdpSW3JC1Y=
+app.yhyue.com/moapp/jypkg v1.0.8 h1:cUBs7C/DiGZ+a7xGlYpqWMc+yzOe3cArYxw3+0dc78E=
+app.yhyue.com/moapp/jypkg v1.0.8/go.mod h1:LuxdVd+j3uwm7N5j2hivmpPU0LJytEV7iwAIljdoc4Q=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
 bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e h1:h+VEI3o1qC0jeCzkFGTrLI4f27cfa/W/y+0sXokWMgE=

+ 2 - 2
src/jfw/modules/subscribepay/src/go.mod

@@ -1,11 +1,11 @@
 module jy/src/jfw/modules/subscribepay/src
 
-go 1.20
+go 1.19
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230718012114-37013054344b
 	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
-	app.yhyue.com/moapp/jypkg v1.0.7-0.20231114075116-499de5b076d3
+	app.yhyue.com/moapp/jypkg v1.0.8
 	bp.jydev.jianyu360.cn/BaseService/pushpkg v0.0.0-20230225061813-384daf716c9d
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.15-0.20230925060020-8e4db0f1e13e
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67

+ 2 - 2
src/jfw/modules/subscribepay/src/go.sum

@@ -9,8 +9,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20230718012114-37013054344b h1:Wtytm2QqQWtBV+s
 app.yhyue.com/moapp/jybase v0.0.0-20230718012114-37013054344b/go.mod h1:D40Ae0rQilH8Hc5o2Vtt04Tjh/DNEFpcS3/WkJMPJb8=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
-app.yhyue.com/moapp/jypkg v1.0.7-0.20231114075116-499de5b076d3 h1:6Jv5DcoGYCsHVMwUjvlZubuTgY/vu4fWP5+rcXIKNj0=
-app.yhyue.com/moapp/jypkg v1.0.7-0.20231114075116-499de5b076d3/go.mod h1:LuxdVd+j3uwm7N5j2hivmpPU0LJytEV7iwAIljdoc4Q=
+app.yhyue.com/moapp/jypkg v1.0.8 h1:cUBs7C/DiGZ+a7xGlYpqWMc+yzOe3cArYxw3+0dc78E=
+app.yhyue.com/moapp/jypkg v1.0.8/go.mod h1:LuxdVd+j3uwm7N5j2hivmpPU0LJytEV7iwAIljdoc4Q=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
 bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e h1:h+VEI3o1qC0jeCzkFGTrLI4f27cfa/W/y+0sXokWMgE=

+ 1 - 0
src/jfw/tag/a_init.go

@@ -15,4 +15,5 @@ func init() {
 	xweb.RootApp().AddTmplVar("ParseHtml", ParseHtml)
 	xweb.RootApp().AddTmplVar("ParseHtmlCss", ParseHtmlCss)
 	xweb.RootApp().AddTmplVar("ParseHtmlAttr", ParseHtmlAttr)
+	xweb.RootApp().AddTmplVar("Export", Export)
 }

+ 6 - 3
src/jfw/tag/msg.go

@@ -10,12 +10,16 @@ import (
 	util "app.yhyue.com/moapp/jybase/common"
 )
 
-//从json配置文件中读取值
+// 从json配置文件中读取值
+func Export() map[string]interface{} {
+	return config.ExportConfig
+}
+
+// 从json配置文件中读取值
 func Msg(mtype, key string) string {
 	return readproperty(mtype, key)
 }
 
-//
 func DateTip(date2 int64) (timedate string) {
 	timedate = "30秒前"
 	date1 := time.Now().Unix()
@@ -50,7 +54,6 @@ func DateTip(date2 int64) (timedate string) {
 	return
 }
 
-//
 func readproperty(mtype, key string) string {
 	switch mtype {
 	case "seo":

+ 13 - 2
src/jfw/timetask/timetask.go

@@ -1,9 +1,13 @@
 package timetask
 
 import (
-	"jy/src/jfw/nodemgr"
+	qutil "app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jypkg/public"
+	"fmt"
+	"jy/src/jfw/config"
+	"jy/src/jfw/nodemgr"
 	"log"
+	"math"
 	"time"
 
 	"app.yhyue.com/moapp/jybase/redis"
@@ -35,7 +39,7 @@ func task() {
 	}
 }
 
-//每周六晚上十一点更新redis订阅词
+// 每周六晚上十一点更新redis订阅词
 func updateHotKeys() {
 	c := cron.New()
 	c.AddFunc("0 0 23 * * 6", func() {
@@ -46,6 +50,13 @@ func updateHotKeys() {
 			}
 		}
 	})
+	c.AddFunc("0 0 1 * * 1", func() { //每周1清理匿名用户日志表 保留最近30天
+		tm := time.Now().AddDate(0, 0, -qutil.IntAllDef(config.Sysconfig["anonymousTime"], 30)).Unix()
+		count := public.BaseMysql.CountBySql(fmt.Sprintf(`SELECT count(*) FROM anonymous_identity WHERE  creation_time < %d and refer = ''  and   fid is null`, tm))
+		for i := 0; i < int(math.Ceil(float64(count)/float64(2000))); i++ {
+			public.BaseMysql.SelectBySql(fmt.Sprintf(`DELETE FROM anonymous_identity WHERE creation_time < %d and refer = '' AND fid IS NULL LIMIT 2000;`, tm))
+		}
+	})
 	c.Start()
 	defer c.Stop()
 	chan bool(nil) <- true

+ 26 - 2
src/web/staticres/common-module/pc-dialog/js/leave-info-dialog.js

@@ -475,6 +475,24 @@ var vm = new Vue({
           height: '277px',
           desc: '数据超市搜索无结果-申请数据定制',
           oneRow: true
+        },
+        'pc_Dataself_keywordmore_customization': {
+          headerUrl: '/common-module/pc-dialog/image/leave-title-custom.png',
+          height: '277px',
+          desc: '数据自助导出-关键词个数达上限-申请数据定制',
+          oneRow: true
+        },
+        'pc_Dataself_buyermore_customization': {
+          headerUrl: '/common-module/pc-dialog/image/leave-title-custom.png',
+          height: '277px',
+          desc: '数据自助导出-采购单位个数达上限-申请数据定制',
+          oneRow: true
+        },
+        'pc_Dataself_entrmore_customization': {
+          headerUrl: '/common-module/pc-dialog/image/leave-title-custom.png',
+          height: '277px',
+          desc: '数据自助导出-中标单位个数达上限-申请数据定制',
+          oneRow: true
         }
       }
     }
@@ -511,7 +529,10 @@ var vm = new Vue({
         case 'pc_supermarket_details_IndustryFields':
         case 'pc_data_custom_data':
         case 'pc_supermarket_Noresults_customization':
-        case 'pc_supermarket_details_customization': {
+        case 'pc_supermarket_details_customization': 
+        case 'pc_Dataself_keywordmore_customization': 
+        case 'pc_Dataself_buyermore_customization': 
+        case 'pc_Dataself_entrmore_customization': {
           return '已收到您提交的数据定制申请,我们的数据经理会尽快联系您~'
         }
         case 'pc_supermarket_details_AnalysisCase':
@@ -571,7 +592,10 @@ var vm = new Vue({
         }
         case 'pc_data_custom_data':
         case 'pc_supermarket_Noresults_customization':
-        case 'pc_supermarket_details_customization': {
+        case 'pc_supermarket_details_customization': 
+        case 'pc_Dataself_keywordmore_customization': 
+        case 'pc_Dataself_buyermore_customization': 
+        case 'pc_Dataself_entrmore_customization': {
           this.hideModule(['mail', 'companyType', 'job'])
           break
         }

+ 61 - 4
src/web/staticres/common-module/perfect-info/js/perfect-info.js

@@ -93,6 +93,17 @@ var titleMap = {
   app_article_original_more_membership:article_original_more_title,
   h5_article_original_more_membership:article_original_more_title,
   wx_article_original_more_membership:article_original_more_title,
+  app_Dataself_keywordmore_customization: '量身定制专属的数据解决方案',
+  wx_Dataself_keywordmore_customization: '量身定制专属的数据解决方案',
+  h5_Dataself_keywordmore_customization: '量身定制专属的数据解决方案',
+  app_Dataself_buyermore_customization: '量身定制专属的数据解决方案',
+  wx_Dataself_buyermore_customization: '量身定制专属的数据解决方案',
+  h5_Dataself_buyermore_customization: '量身定制专属的数据解决方案',
+  app_Dataself_entmore_customization: '量身定制专属的数据解决方案',
+  wx_Dataself_entmore_customization: '量身定制专属的数据解决方案',
+  h5_Dataself_entmore_customization: '量身定制专属的数据解决方案'
+
+
 }
 
 // tip
@@ -234,6 +245,15 @@ var tipMap = {
   app_article_original_more_membership:article_original_more_membership_tip,
   h5_article_original_more_membership:article_original_more_membership_tip,
   wx_article_original_more_membership:article_original_more_membership_tip,
+  app_Dataself_keywordmore_customization: '请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  wx_Dataself_keywordmore_customization: '请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  h5_Dataself_keywordmore_customization: '请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  app_Dataself_buyermore_customization: '请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  wx_Dataself_buyermore_customization: '请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  h5_Dataself_buyermore_customization: '请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  app_Dataself_entmore_customization: '请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  wx_Dataself_entmore_customization: '请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!',
+  h5_Dataself_entmore_customization: '请留下您的联系方式及定制数据字段需求,我们将安排专业的数据经理与您对接,为您打造专属的数据服务方案,可快速交付!'
 }
 
 // 留资来源(数据库新增字段,记录留资对应的来源,之前未记录的不考虑,新增的source要记录)
@@ -269,6 +289,15 @@ var sourceDescMap = {
   app_article_original_more_membership:article_original_more_sourceDesc,
   h5_article_original_more_membership:article_original_more_sourceDesc,
   wx_article_original_more_membership:article_original_more_sourceDesc,
+  app_Dataself_keywordmore_customization: '数据自助导出-关键词个数达上限-申请数据定制',
+  wx_Dataself_keywordmore_customization: '数据自助导出-关键词个数达上限-申请数据定制',
+  h5_Dataself_keywordmore_customization: '数据自助导出-关键词个数达上限-申请数据定制',
+  app_Dataself_buyermore_customization: '数据自助导出-采购单位个数达上限-申请数据定制',
+  wx_Dataself_buyermore_customization: '数据自助导出-采购单位个数达上限-申请数据定制',
+  h5_Dataself_buyermore_customization: '数据自助导出-采购单位个数达上限-申请数据定制',
+  app_Dataself_entmore_customization: '数据自助导出-中标单位个数达上限-申请数据定制',
+  wx_Dataself_entmore_customization: '数据自助导出-中标单位个数达上限-申请数据定制',
+  h5_Dataself_entmore_customization: '数据自助导出-中标单位个数达上限-申请数据定制'
 }
 
 var vNode = {
@@ -444,7 +473,7 @@ var vNode = {
             this.moduleShow[k] = false
           }
           this.moduleShow.position = true
-          if(source?.toLowerCase().indexOf('supermarket') > -1){
+          if(source?.toLowerCase().indexOf('supermarket') > -1 || source?.toLowerCase().indexOf('dataself') > -1){
             this.moduleShow.data_requirement = true
             this.moduleShow.email = true
           }
@@ -532,7 +561,17 @@ var vNode = {
         case 'h5_supermarket_details_IndustryFields':
         case 'app_supermarket_details_AnalysisCase':
         case 'wx_supermarket_details_AnalysisCase':
-        case 'h5_supermarket_details_AnalysisCase':{
+        case 'h5_supermarket_details_AnalysisCase':
+        case 'app_Dataself_keywordmore_customization':
+        case 'wx_Dataself_keywordmore_customization':
+        case 'h5_Dataself_keywordmore_customization':
+        case 'app_Dataself_buyermore_customization':
+        case 'wx_Dataself_buyermore_customization':
+        case 'h5_Dataself_buyermore_customization':
+        case 'app_Dataself_entmore_customization':
+        case 'wx_Dataself_entmore_customization':
+        case 'h5_Dataself_entmore_customization':
+        {
             hideLabel(['email'])
           break
         }
@@ -1237,7 +1276,16 @@ var vNode = {
                 case 'wx_DataSupermarket_IndustryFields':
                 case 'app_supermarket_details_IndustryFields':
                 case 'wx_supermarket_details_IndustryFields':
-                case 'h5_supermarket_details_IndustryFields':{
+                case 'h5_supermarket_details_IndustryFields':
+                case 'app_Dataself_keywordmore_customization':
+                case 'wx_Dataself_keywordmore_customization':
+                case 'h5_Dataself_keywordmore_customization':
+                case 'app_Dataself_buyermore_customization':
+                case 'wx_Dataself_buyermore_customization':
+                case 'h5_Dataself_buyermore_customization':
+                case 'app_Dataself_entmore_customization':
+                case 'wx_Dataself_entmore_customization':
+                case 'h5_Dataself_entmore_customization':{
                   _this.showMessage('已收到您提交的数据定制申请,我们的数据经理会尽快联系您~', '我知道了', function () {
                     history.back()
                   },'提交成功')
@@ -1427,7 +1475,16 @@ var vNode = {
       'h5_supermarket_details_IndustryFields',
       'app_supermarket_details_AnalysisCase',
       'wx_supermarket_details_AnalysisCase',
-      'h5_supermarket_details_AnalysisCase'
+      'h5_supermarket_details_AnalysisCase',
+      'app_Dataself_keywordmore_customization',
+      'wx_Dataself_keywordmore_customization',
+      'h5_Dataself_keywordmore_customization',
+      'app_Dataself_buyermore_customization',
+      'wx_Dataself_buyermore_customization',
+      'h5_Dataself_buyermore_customization',
+      'app_Dataself_entmore_customization',
+      'wx_Dataself_entmore_customization',
+      'h5_Dataself_entmore_customization'
       ]
       if(notit_group_list.includes(source)){
 

+ 20 - 10
src/web/staticres/dataExport/js/conditions_order.js

@@ -270,20 +270,20 @@ function fixLeft(){
     if(one.children('div').length === 0) {
         two.css('margin-left','0')
     }else {
-        two.css('margin-left','8px')
+        // two.css('margin-left','8px')
     }
     if(two.children('div').length === 0) {
-        two.css('margin-left','8px')
+        // two.css('margin-left','8px')
         if(one.children('div').length === 0){
             three.css('margin-left','0')
         }else {
-            three.css('margin-left','8px')
+            // three.css('margin-left','8px')
         }
     }else {
-        three.css('margin-left','8px')
+        // three.css('margin-left','8px')
     }
     if(three.children('div').length === 0) {
-        three.css('margin-left','8px')
+        // three.css('margin-left','8px')
     }
 }
 
@@ -297,7 +297,7 @@ $("#inputDel_0 .column").on('DOMNodeRemoved','div',function(){
 function addDelInput(t,type) {
   var d = document.createElement('div')
   var text = $(t).prev().val()
-  if(!text){
+  if(!text.trim()){
       return;
   }
   $(d).html(text)
@@ -309,6 +309,19 @@ function addDelInput(t,type) {
   var arr = box
   switch (type) {
     case 0: {
+      // 计算当前输入的关键词、附加词、排除词总数
+      var inputVal = []
+      var inputs = $('.add-input-w').find('.sm')
+      inputs.each(function(){
+        if ($(this).val()) {
+          inputVal.push($(this).val())
+        }
+      })
+      // console.log(inputVal);
+      if (getTotal() + inputVal.length  >=  wordsLimit) {
+        $('.keywords-more-tips').show()
+        return
+      }
       template = createKeyBox(text)
       var LArr =  [$("#inputDel_0 .column:eq(0)>div").length,$("#inputDel_0 .column:eq(1)>div").length,$("#inputDel_0 .column:eq(2)>div").length]
       var tempI = LArr.indexOf(Math.min(LArr[0],LArr[1],LArr[2]))
@@ -352,7 +365,7 @@ function addDelInputB(t,type) {
     $('.winner-search-list').hide()
     var d = document.createElement('div');
     var text = $(t).val();
-    if(!text){
+    if(!text.trim()){
         return;
     }
     $(d).html(text);
@@ -489,6 +502,3 @@ function editKeywordBox() {
 function resetAreaLT() {
     $("#area-del").parent().prev().css("padding-top","8px");
 }
-
-
-

+ 13 - 3
src/web/staticres/wx_dataExport/js/additionWord.js

@@ -13,16 +13,24 @@ $(function(){
             $(".enter.addkeyWord").show();
             $(".addKeyWord").hide();
             $(".showKeyWord").hide();
+            $('#add-buyer-word').hide()
         } else {
             $(".enter.addkeyWord").hide();
             $(".showKeyWord").show();
             $(".addKeyWord").show();
+            if (showKeyWordLength >= buyerLimit) {
+              $('#add-buyer-word').hide()
+              $('.buyer-more-tips').show()
+            } else {
+              $('#add-buyer-word').show()
+              $('.buyer-more-tips').hide()
+            }
         }
     }
     hasWords();
     
     // 添加按钮
-    $(".addKeyWord i").on('click',function(){
+    $(".addKeyBtn i").on('click',function(){
         window.location.href="/front/wx_dataExport/buyerInput";
     });
 
@@ -103,7 +111,7 @@ $(function(){
         var buttonDOM = $('.enter.addkeyWord .btn button')[0]
         buttonDOM.style.opacity = .5
         buttonDOM.setAttribute("disabled", true)
-
+        hasWords()
     })
 
     // 编辑
@@ -114,6 +122,7 @@ $(function(){
         $(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one').show()
         $(oSpan).val('').focus().val(val);
         $(".addKeyWord").hide();
+        hasWords()
     })
 
     // 编辑 删除
@@ -170,7 +179,8 @@ $(function(){
             $(this).parent().siblings().find('.key').text(keyWord)
             $(this).parent().hide().siblings().show()
         }
-        $(".addKeyWord").show();
+        // $(".addKeyWord").show();
+        hasWords()
     })
 
     //去空格方法

+ 22 - 3
src/web/staticres/wx_dataExport/js/keyWord.js

@@ -26,9 +26,20 @@ $(function(){
         } else {
             $(".enter.addkeyWord").hide();
             $(".showKeyWord").show();
-            $(".addKeyWord").show();
+            // $(".addKeyWord").show();
             sessionStorage.IOSsession = "ios";
         }
+        if (getTotal() >= wordsLimit) {
+          $('.addKeyWord').hide()
+          $('.keyword-more-tips').show()
+          $('.addAdjunctWord.add-append-btn').attr('disabled', true)
+          $('.addExclusion.add-exclude-btn').attr('disabled', true)
+        } else {
+          $('.addKeyWord').show()
+          $('.keyword-more-tips').hide()
+          $('.addAdjunctWord.add-append-btn').removeAttr('disabled')
+          $('.addExclusion.add-exclude-btn').removeAttr('disabled')
+        }
     }
     hasWords();
 
@@ -243,7 +254,7 @@ $(function(){
         buttonDOM.style.opacity = .5;
         buttonDOM.setAttribute("disabled", true);
         sessionStorage.IOSsession = "ios";
-
+        hasWords();
     });
 
     // 编辑
@@ -261,22 +272,28 @@ $(function(){
                     var appended = keyWordArr[i].appended.length;
                     if(appended < 1){
                         str =  "添加 附加词";
+                        $(".addAdjunctWord").addClass('add-append-btn')
                     }else{
                         str = "编辑 附加词 ("+appended+")";
+                        $(".addAdjunctWord").removeAttr('disabled').removeClass('add-append-btn')
                     }
                 }else{
                     str =  "添加 附加词";
+                    $(".addAdjunctWord").addClass('add-append-btn')
                 }
                 $(this).parent().next().find(".addAdjunctWord").text(str);
                 if(keyWordArr[i].exclude !== null&&keyWordArr[i].exclude !== undefined){
                     var exclude = keyWordArr[i].exclude.length;
                     if(exclude < 1){
                         strs = "添加 排除词";
+                        $(".addExclusion").addClass('add-exclude-btn')
                     }else{
                         strs = "编辑 排除词 ("+exclude+")";
+                        $(".addExclusion").removeAttr('disabled').removeClass('add-exclude-btn')
                     }
                 }else{
                     strs = "添加 排除词";
+                    $(".addExclusion").addClass('add-exclude-btn')
                 }
                 $(this).parent().next().find(".addExclusion").text(strs);
             }
@@ -284,6 +301,7 @@ $(function(){
         $(this).parent().hide();
         $(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one').show()
         $(oSpan).val('').focus().val(val);
+        hasWords()
         $(".addKeyWord").hide();
     });
     var u = navigator.userAgent;
@@ -379,7 +397,8 @@ $(function(){
             $this.parent().siblings().find('.key').text(keyWord)
             $this.parent().hide().siblings().show()
         }
-        $(".addKeyWord").show();
+        // $(".addKeyWord").show();
+        hasWords()
     })
 
     //去空格方法

+ 117 - 8
src/web/templates/pc/dataExport_sieve.html

@@ -22,11 +22,13 @@
     <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
     <link href="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/theme-chalk/index.css" rel="stylesheet" />
     <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/dataExport/css/previewData.css?v={{Msg "seo" "version"}}">
+    <link href='{{Msg "seo" "cdn"}}/common-module/pc-dialog/css/leave-info-dialog.css?v={{Msg "seo" "version"}}' rel="stylesheet">
     <script src="https://cdn-common.jianyu360.com/cdn/lib/html2canvas/1.4.0/dist/html2canvas.js"></script>
     <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
     <!-- <script src="{{Msg "seo" "cdn"}}/swiper/swiper.min.js?v={{Msg "seo" "version"}}"></script> -->
     <script src="https://cdn.bootcdn.net/ajax/libs/fontfaceobserver/2.1.0/fontfaceobserver.js"></script>
     <script src="https://cdn-common.jianyu360.com/cdn/lib/vue-dragscroll/3.0.1/dist/vue-dragscroll.min.js"></script>
+    
     <title>数据导出_拟建项目导出_招标采购数据导出_中标数据导出-剑鱼标讯</title>
     <meta content="自助导出" theme="light" name="enable-header"/>
     <meta name="Keywords" content="拟建项目导出,招标采购数据导出,中标数据导出,剑鱼标讯"/>
@@ -349,12 +351,12 @@
         }
 
         #inputDel_0 .column {
-            margin-left: 0;
+            margin-left: 0!important;
         }
 
-        #inputDel_0 .column + .column {
+        /* #inputDel_0 .column + .column {
             margin-left: 8px;
-        }
+        } */
 
         .add-w.ss::before {
             left: 142px;
@@ -426,7 +428,8 @@
 
         .tro {
             position: relative;
-            width: calc(100% - 130px);
+            /* width: calc(100% - 130px); */
+            width: 100%;
             height: 110px;
             background: rgba(254, 254, 254, 1);
             border: 1px dashed rgba(224, 224, 224, 1);
@@ -618,6 +621,22 @@
           font-size: 14px;
           color: #686868;
         }
+        .data-more-tips{
+          display: none;
+          width: 100%;
+          padding: 9px 16px;
+          margin-top: 12px;
+          background: rgba(249, 242, 234, 1);
+          color: #F56500;
+          border-radius: 4px;
+          font-size: 14px;
+          line-height: 22px;
+          text-align: justify;
+        }
+        .data-more-tips > a{
+          color:#FF3A20;
+          text-decoration: underline;
+        }
     </style>
 </head>
 <body>
@@ -893,6 +912,7 @@
                             style="background-color: #BFBFBF;color: white;margin-right: 0px !important;">删除
                     </button>
                 </div>
+                <div class="data-more-tips keywords-more-tips">关键词已达上限,如需添加更多您可<a href="javascript:;" onclick="needSubmitHandle('pc_Dataself_keywordmore_customization')">申请数据定制导出></a></div>
                 <div class="tro">
                     <img src="/dataExport/image/help.png">
                     <p>例:某公司主营业务为软件系统开发</p>
@@ -998,6 +1018,7 @@
                         <div class="add-w ss" onclick="addInput(this,1)" data-text="添加"></div>
                     </div>
                 </div>
+                <div class="data-more-tips buyer-more-tips">最多可添加{{Export.exportLimit.buyerLimit}}个采购单位,目前已达上限,如需添加更多您可<a href="javascript:;" onclick="needSubmitHandle('pc_Dataself_buyermore_customization')">申请数据定制导出></a></div>
             </div>
         </div>
         <div class="heng"></div>
@@ -1019,6 +1040,7 @@
                         <div class="add-w ss" onclick="addInput(this,2)" data-text="添加"></div>
                     </div>
                 </div>
+                <div class="data-more-tips winner-more-tips">最多可添加{{Export.exportLimit.winnerLimit}}个中标单位,目前已达上限,如需添加更多您可<a href="javascript:;" onclick="needSubmitHandle('pc_Dataself_entrmore_customization')">申请数据定制导出></a></div>
             </div>
         </div>
         <div class="heng"></div>
@@ -1416,12 +1438,19 @@
     <div class="data-now-export dataBtnCom">立即导出</div>
   </div>
 </div>
+<div id="vue-collect-user-info"></div>
 {{include "/common/pcbottom.html"}}
 {{include "/common/baiducc.html"}}
 <script src=//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/index.js></script>
 <script src="{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}"></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/selector/js/industryMap.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/pc-dialog/js/leave-info-dialog.js?v={{Msg "seo" "version"}}'></script>
 <script>
+  var limit = {{Export.exportLimit}};
+  var buyerLimit = limit.buyerLimit || 100
+  var winnerLimit = limit.winnerLimit || 100
+  var wordsLimit =  limit.countLimit
+  console.log(limit);
   var dataNode = new Vue({
     delimiters: ['${', '}'],
     el: '#conditions-box',
@@ -2067,7 +2096,6 @@
       getStyle () {
         // 嵌套到工作桌面的时候 底部悬浮元素样式单独修改
         // parent.location.pathname.indexOf('/page_workDesktop') > -1
-        console.log(goTemplateData.inIframe, '111');
         if (goTemplateData.inIframe) {
           $('.conditions-box .progress_ div.pro').css({
             'min-width': '250px'
@@ -2427,7 +2455,7 @@
             // console.log(window["inputDel_0"]);
             // console.log($(".edit-user-input").css("display"));
             window["inputDel_0"] = [];
-            var ad = $(this).val();
+            var ad = $(this).val().trim();
             if (ad !== "") {
                 $(".edit-user-input > button.sussecc").attr("disabled", false);
             }
@@ -2619,7 +2647,7 @@
                 }
             }.bind(this)
           })
-        }, 1000)
+        }, 500)
     }
 
     //重置开始时间 结束时间
@@ -3091,7 +3119,7 @@
     });
 
     $("#keyInput").on('input', function () {
-        if($(this).val()) {
+        if($(this).val().trim()) {
           $(this).next().show()
         } else {
           $(this).next().hide()
@@ -3280,6 +3308,8 @@
         window['inputDel_2'] = [];
         $("#addWinner").hide();
         $("#winnerInput").show();
+        // 隐藏超出限制
+        $('.data-more-tips').hide()
     });
 
     function GetQueryString(name) {
@@ -3771,5 +3801,84 @@
       return v.join(",");
     }
   }
+  function needSubmitHandle(source) {
+    // 调用组件是否留资方法
+    vm.isNeedSubmit(source, function () {
+      // vm.showSuccess = true
+    })
+  }
+  function sumArr(arr){
+    var sum = 0
+    arr.forEach(function(val){
+      sum += val
+    })
+    return sum
+  }
+  function getTotal () {
+    // 关键词
+    var keywords = getKeywords()
+    var arr = []
+    keywords.forEach(function(item) {
+      if (item.appended) {
+        arr.push(item.appended.length)
+      }
+      if (item.exclude) {
+        arr.push(item.exclude.length)
+      }
+    })
+    arr.push(keywords.length)
+    var count = sumArr(arr)
+    return count
+  }
+  // 监听dom变化 用于显示隐藏逻辑
+  var observer = new MutationObserver(function(mutations) {
+    mutations.forEach(function(mutation) {
+      // console.log('页面dom发生改变');
+      
+      // 关键词
+      if (getTotal() >= wordsLimit) {
+        $('#addKeyword').hide()
+        $('.add-input-w').hide()
+        $('.keywords-more-tips').show()
+      } else {
+        if (getTotal() === 0) {
+          $('#addKeyword').hide()
+        }
+        $('#addKeyword').show()
+        $('.keywords-more-tips').hide()
+      }
+      // 采购单位
+      var buyer = getBuyers()
+      if (buyer.length >= buyerLimit) {
+        $('#addBuyer').hide()
+        $('.buyer-more-tips').show()
+      } else {
+        if (buyer.length === 0) {
+          $('#addBuyer').hide()
+        } else {
+          $('#addBuyer').show()
+        }
+        $('.buyer-more-tips').hide()
+      }
+      // 中标单位
+      var winner = getWinners()
+      if (winner.length >= winnerLimit) {
+        $('#addWinner').hide()
+        $('.winner-more-tips').show()
+      } else {
+        if (winner.length === 0) {
+          $('#addWinner').hide()
+        } else {
+          $('#addWinner').show()
+        }
+        $('.winner-more-tips').hide()
+      }
+    })
+  });
+
+  // 配置MutationObserver要观察的目标
+  var target = document.querySelector('.inner');
+  // 开始观察DOM的变化
+  observer.observe(target, { childList: true, subtree: true });
 </script>
 </html>

+ 54 - 3
src/web/templates/weixin/dataExport/dataExport_appended.html

@@ -92,6 +92,11 @@
     </div>
     <script src="https://cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js"></script>
     <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script>
+      var limit = {{Export.exportLimit}};
+      var wordsLimit = limit.countLimit || 100
+      console.log(limit);
+    </script>
     <script>
         initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
         window.addEventListener('pageshow', function(e) {
@@ -187,6 +192,44 @@
                 $(".showKeyWord").show();
             }
         }
+        function sumArr(arr){
+          var sum = 0
+          arr.forEach(function(val){
+            sum += val
+          })
+          return sum
+        }
+        // 计算关键词、附加词、排除词总和
+        function getTotal () {
+          var data = []
+          /**
+           * 之前逻辑:
+           * 1.全量保存后取的是localStorage里的值(不包含当前输入的关键词、附加次、排除词);
+           * 2.sessionStorage存的值包含当前输入的词(首次添加的时候仅包含当前输入的关键词、编辑及其它时候包含已存的和当前输入的)
+           * 不改原有逻辑的情况下实时计算关键词、附加词、排除词总和可对比sessionStorage和localStorage的长度,有sessionStorage且长度大于已存的localStorage的长度,
+           * 则取sessionStorage
+          */
+          var sessionStorageKey = sessionStorage.keyWord ? JSON.parse(sessionStorage.keyWord) : null
+          if (sessionStorageKey && sessionStorageKey.length > keyWordArr.length) {
+            data = sessionStorageKey
+          } else {
+            data = keyWordArr
+          }
+          var keyLen = data.length
+          var arr = []
+          data.forEach(function(item) {
+            if (item.appended) {
+              arr.push(item.appended.length)
+            }
+            if (item.exclude) {
+              arr.push(item.exclude.length)
+            }
+          })
+          arr.push(keyLen)
+          var total = sumArr(arr)
+          console.log(total);
+          return total
+        }
         $(function(){
 
             $('.knowBtn').on('click',function(){
@@ -208,12 +251,17 @@
                 var showKeyWordLength = $(".showKeyWord ul").find('li').length;
                 if(showKeyWordLength === 0){
                     $(".enter.addkeyWord").show();
-                    $(".addKeyWord").hide();
+                    // $(".addKeyWord").hide();
                     $(".showKeyWord").hide();
                 } else {
                     $(".enter.addkeyWord").hide();
                     $(".showKeyWord").show();
-                    $(".addKeyWord").show();
+                    // $(".addKeyWord").show();
+                }
+                if (getTotal() >= wordsLimit) {
+                  $(".addKeyWord").hide();
+                } else {
+                  $(".addKeyWord").show();
                 }
             }
             hasWords();
@@ -335,6 +383,7 @@
                 var buttonDOM = $('.enter.addkeyWord .btn button')[0];
                 buttonDOM.style.opacity = .5;
                 buttonDOM.setAttribute("disabled", true)
+                hasWords()
             });
 
             // 编辑
@@ -345,6 +394,7 @@
                 $(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one').show()
                 $(oSpan).val('').focus().val(val);
                 $(".addKeyWord").hide();
+                hasWords()
             });
 
             // 编辑 删除
@@ -431,7 +481,8 @@
                     $(this).parent().hide().siblings().show()
                 }
                 //
-                $(".addKeyWord").show();
+                // $(".addKeyWord").show();
+                hasWords()
             });
 
             //去空格方法

+ 61 - 24
src/web/templates/weixin/dataExport/dataExport_buyerEdit.html

@@ -16,11 +16,11 @@
 	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
 </head>
 <style>
-	.addKeyWord i {
+	.addKeyBtn i {
 		font-size: 1rem;
 		color: #2cb7ca;
 	}
-	.addKeyWord {
+	.addKeyBtn {
 		/*width: 100%;*/
 		position: fixed;
 		text-align: center;
@@ -33,38 +33,68 @@
 	body{
 		background: rgba(245,244,249,1);
 	}
-
+  .content{
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    overflow-y: scroll;
+  }
+  .buyer-more-tips{
+    display: none;
+    width: 100%;
+    padding: .14rem .32rem;
+    background: rgba(249, 242, 234, 1);
+    color:  #FF9F40;
+    font-size: .26rem;
+    line-height: .4rem;
+    text-align: center;
+  }
+  .buyer-more-tips > a{
+    color:#FF3A20;
+    text-decoration: underline;
+  }
 </style>
 
 <body>
 
 <div class="keyWord">
-	<div class="enter addkeyWord">
-		<input type="text" class="enterOne" placeholder="采购单位名称" />
-		<div class="btn fixed-bottom">
-			<button disabled class="save-btn">确认</button>
-			<button class="close">取消</button>
-		</div>
-	</div>
-
-	<!-- 添加附加词显示列表 -->
-	<div class="showKeyWord">
-		<ul>
-
-
-		</ul>
-
-	</div>
-	<div class="association-list-box" style="display: none;">
-		<ul class="association-list">
-		</ul>
-	</div>
+	<div class="content">
+    <div class="enter addkeyWord">
+      <input type="text" class="enterOne" placeholder="采购单位名称" />
+      <div class="btn fixed-bottom">
+        <button disabled class="save-btn">确认</button>
+        <button class="close">取消</button>
+      </div>
+    </div>
+  
+    <!-- 添加附加词显示列表 -->
+    <div class="showKeyWord">
+      <ul>
+  
+  
+      </ul>
+  
+    </div>
+    <div class="association-list-box" style="display: none;">
+      <ul class="association-list">
+      </ul>
+    </div>
+  </div>
+  <div class="buyer-more-tips">
+    最多可添加{{Export.exportLimit.buyerLimit}}个采购单位,目前已达上限,如需添加更多您可<a href="/weixin/frontPage/bigmember/free/perfect_info?source=wx_Dataself_buyermore_customization">申请数据定制导出></a>
+  </div>
 </div>
-<div class="addKeyWord">
+<div class="addKeyBtn" id="add-buyer-word">
 	<i class="iconfont icon-tianjia"></i>
 </div>
+
 <script src="https://cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js"></script>
 <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/weui.min.js"></script>
+<script>
+  var limit = {{Export.exportLimit}}
+  var buyerLimit = limit.buyerLimit || 100
+  console.log(limit);
+</script>
 <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/additionWord.js?v={{Msg "seo" "version"}}38"></script>
 <script>
 	initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
@@ -102,6 +132,13 @@
                     </li>`
 		}
 		$('.showKeyWord > ul').prepend(html);
+    if (buyerArr.length >= buyerLimit) {
+      $('#add-buyer-word').hide()
+      $('.buyer-more-tips').show()
+    } else  {
+      $('#add-buyer-word').show()
+      $('.buyer-more-tips').hide()
+    }
 	}
 
 </script>

+ 46 - 3
src/web/templates/weixin/dataExport/dataExport_exclude.html

@@ -92,6 +92,11 @@
     </div>
     <script src="https://cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js"></script>
     <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script>
+      var limit = {{Export.exportLimit}};
+      var wordsLimit = limit.countLimit || 100
+      console.log(limit);
+    </script>
     <script>
         initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
         window.addEventListener('pageshow', function(e) {
@@ -185,7 +190,37 @@
                 $('.showKeyWord > ul').prepend(html);
             }
         }
-
+        function sumArr(arr){
+          var sum = 0
+          arr.forEach(function(val){
+            sum += val
+          })
+          return sum
+        }
+        // 计算关键词、附加词、排除词总和
+        function getTotal () {
+          var data = []
+          var sessionStorageKey = sessionStorage.keyWord ? JSON.parse(sessionStorage.keyWord) : null
+          if (sessionStorageKey && sessionStorageKey.length > keyWordArr.length) {
+            data = sessionStorageKey
+          } else {
+            data = keyWordArr
+          }
+          var keyLen = data.length
+          var arr = []
+          data.forEach(function(item) {
+            if (item.appended) {
+              arr.push(item.appended.length)
+            }
+            if (item.exclude) {
+              arr.push(item.exclude.length)
+            }
+          })
+          arr.push(keyLen)
+          var total = sumArr(arr)
+          console.log(total);
+          return total
+        }
         $(function(){
 
             $('.knowBtn').on('click',function(){
@@ -212,7 +247,12 @@
                 } else {
                     $(".enter.addkeyWord").hide();
                     $(".showKeyWord").show();
-                    $(".addKeyWord").show();
+                    // $(".addKeyWord").show();
+                }
+                if (getTotal() >= wordsLimit) {
+                  $(".addKeyWord").hide();
+                } else {
+                  $(".addKeyWord").show();
                 }
             }
             hasWords();
@@ -335,6 +375,7 @@
                 var buttonDOM = $('.enter.addkeyWord .btn button')[0];
                 buttonDOM.style.opacity = .5;
                 buttonDOM.setAttribute("disabled", true)
+                hasWords();
             });
 
             // 编辑
@@ -345,6 +386,7 @@
                 $(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one').show()
                 $(oSpan).val('').focus().val(val);
                 $(".addKeyWord").hide();
+                hasWords();
             });
 
             // 编辑 删除
@@ -429,7 +471,8 @@
                     $(this).parent().siblings().find('.key').text(exclude);
                     $(this).parent().hide().siblings().show()
                 }
-                $(".addKeyWord").show();
+                // $(".addKeyWord").show();
+                hasWords();
             });
 
             //去空格方法

+ 400 - 325
src/web/templates/weixin/dataExport/dataExport_keyWord.html

@@ -2,163 +2,220 @@
 <html lang="en">
 
 <head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-    <meta http-equiv="X-UA-Compatible" content="ie=edge">
-    <title>关键词</title>
-    <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/rem.js?v={{Msg "seo" "version"}}"></script>
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wx_dataExport/css/base.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wx_dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wx_dataExport/css/weui.min.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wx_dataExport/css/keyWord.css?v={{Msg "seo" "version"}}125">
-    <script src="/js/jquery.js"></script>
-    {{include "/common/weixin.html"}}
-    <script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+  <meta http-equiv="X-UA-Compatible" content="ie=edge">
+  <title>关键词</title>
+  <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/rem.js?v={{Msg "seo" "version"}}"></script>
+  <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wx_dataExport/css/base.css?v={{Msg "seo" "version"}}">
+  <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wx_dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+  <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wx_dataExport/css/weui.min.css?v={{Msg "seo" "version"}}">
+  <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wx_dataExport/css/keyWord.css?v={{Msg "seo" "version"}}125">
+  <script src="/js/jquery.js"></script>
+  {{include "/common/weixin.html"}}
+  <script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
 </head>
 <style>
-    .keyWord .enter .btn .save {
-        float: right;
-    }
-    body{
-        background: rgba(245,244,249,1)!important;
-        line-height: unset;
-    }
-    .addAdjunctWord{
-        margin-top: 0!important;
-        border-top: 1px solid #e0e0e0;
-    }
-    .addExclusion{
-        margin-top: 0!important;
-        border-top: 1px solid #e0e0e0;
-    }
-    .addKeyWord i {
-		font-size: 1rem;
-		color: #2cb7ca;
-	}
-	.addKeyWord {
-		/*width: 100%;*/
-		position: fixed;
-		text-align: center;
-		bottom: 10%;
-		left: 45%;
-	}
+  .keyWord{
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    height: 100%;
+  }
+  .keyWord .enter .btn .save {
+    float: right;
+  }
+
+  body {
+    background: rgba(245, 244, 249, 1) !important;
+    line-height: unset;
+  }
+
+  .addAdjunctWord {
+    margin-top: 0 !important;
+    border-top: 1px solid #e0e0e0;
+  }
 
+  .addExclusion {
+    margin-top: 0 !important;
+    border-top: 1px solid #e0e0e0;
+  }
+
+  .addKeyWord i {
+    font-size: 1rem;
+    color: #2cb7ca;
+  }
+
+  .addKeyWord {
+    /*width: 100%;*/
+    position: fixed;
+    text-align: center;
+    bottom: 10%;
+    left: 45%;
+  }
+  .keyword-more-tips {
+    display: none;
+    width: 100%;
+    padding: .24rem .32rem;
+    background: rgba(249, 242, 234, 1);
+    color: #FF9F40;
+    font-size: .26rem;
+    line-height: .4rem;
+    text-align: center;
+  }
+
+  .keyword-more-tips>a {
+    color: #FF3A20;
+    text-decoration: underline;
+  }
 </style>
+
 <body>
 
-    <div class="keyWord">
-        <p class="title">示例:软件系统(关键词);  开发(附加词);  运维(排除词)</p>
-        <!-- 添加关键词 -->
-        <div class="enter addkeyWord">
-            <input type="text" class="enterOne" placeholder="请输入关键词" />
-            <div class="btnChoose" style="display:none;">
-                <button class="addAdjunctWord appended" disabled>添加 附加词</button>
-                <button class="addExclusion exclude" disabled>添加 排除词</button>
-            </div>
-            <div class="btn">
-                <button class="save" disabled>确认</button>
-                <button class="close">取消</button>
-            </div>
+  <div class="keyWord">
+    <section class="content">
+      <p class="title">示例:软件系统(关键词); 开发(附加词); 运维(排除词)</p>
+      <!-- 添加关键词 -->
+      <div class="enter addkeyWord">
+        <input type="text" class="enterOne" placeholder="请输入关键词" />
+        <div class="btnChoose" style="display:none;">
+          <button class="addAdjunctWord appended" disabled>添加 附加词</button>
+          <button class="addExclusion exclude" disabled>添加 排除词</button>
+        </div>
+        <div class="btn">
+          <button class="save" disabled>确认</button>
+          <button class="close">取消</button>
         </div>
+      </div>
 
-        <!-- 添加排除词 -->
-        <!-- <div class="enter exclusion" style="display:none;">
-            <input type="text" placeholder="请输入排除词" class="enterOne">
-            <div class="btn">
-                <button disabled>确认</button>
-            </div>
-        </div> -->
+      <!-- 添加排除词 -->
+      <!-- <div class="enter exclusion" style="display:none;">
+              <input type="text" placeholder="请输入排除词" class="enterOne">
+              <div class="btn">
+                  <button disabled>确认</button>
+              </div>
+          </div> -->
 
 
-        <!-- 添加关键词显示列表 -->
-        <div class="showKeyWord">
-            <ul>
+      <!-- 添加关键词显示列表 -->
+      <div class="showKeyWord">
+        <ul>
 
-            </ul>
+        </ul>
 
-        </div>
+      </div>
 
-        <div class="problem">
-            疑问解答 <i class="iconfont icon-wenhao"></i>
+      <div class="problem">
+        疑问解答 <i class="iconfont icon-wenhao"></i>
+      </div>
+      <!-- 疑难问题弹窗 -->
+      <div class="problemPop">
+        <div class="problemPopContent">
+          <h3>疑问解答</h3>
+          <ul>
+            <li>
+              <p>例:某公司主营业务为软件系统开发</p>
+            </li>
+            <li>
+              <h4>关键词:</h4>
+              <p>目标信息中的关键性词语,如“软件系统”</p>
+            </li>
+            <li>
+              <h4>附加词:</h4>
+              <p>与关键词形成一体/组合,便于查找准确信息,如“开发”</p>
+            </li>
+            <li>
+              <h4>排除词:</h4>
+              <p>与关键词互斥,可排除一部分非目标信息,如“运维”</p>
+            </li>
+          </ul>
+          <button class="knowBtn">我知道了</button>
         </div>
 
+      </div>
+    </section>
+    <div class="keyword-more-tips">关键词已达上限,如需添加更多您可<a href="/weixin/frontPage/bigmember/free/perfect_info?source=wx_Dataself_keywordmore_customization">申请数据定制导出></a></div>
+  </div>
+  <div class="addKeyWord">
+    <i class="iconfont icon-tianjia"></i>
+  </div>
+  <script src="https://cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js"></script>
+  <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+  <script>
+    var limit = {{Export.exportLimit}};
+    var wordsLimit = limit.countLimit || 100
+    console.log(limit);
+  </script>
+  <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/keyWord.js?v={{Msg "seo" "version"}}108"></script>
+  <script>
+    initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
+    $(function () {
+      var isPageHide = false;
+      window.addEventListener('pageshow', function () {
+        if (isPageHide) {
+          IOSsession();
+          var buttonDOM = $('.enter.addkeyWord .btnChoose .appended');
+          buttonDOM.prop("disabled", false);
+          var buttonDOMM = $('.enter.addkeyWord .btnChoose .exclude');
+          buttonDOMM.prop("disabled", false);
+          if (sessionStorage.IOSsession !== "" && sessionStorage.IOSsession !== undefined) {
+            //监听到了history.back
+            location.reload();
+          }
+        }
+      });
+      window.addEventListener('pagehide', function () {
+        isPageHide = true;
+      });
+    });
+    (/iphone|ipod|ipad/i.test(navigator.appVersion)) && document.addEventListener('blur', (e) => {
+      // 这里加了个类型判断,因为a等元素也会触发blur事件
+      ['input', 'textarea'].includes(e.target.localName) && document.body.scrollIntoView(false)
+    }, true)
 
-        <!-- 疑难问题弹窗 -->
-    <div class="problemPop">
-    <div class="problemPopContent">
-    <h3>疑问解答</h3>
-    <ul>
-    <li>
-    <p>例:某公司主营业务为软件系统开发</p>
-</li>
-<li>
-<h4>关键词:</h4>
-<p>目标信息中的关键性词语,如“软件系统”</p>
-</li>
-<li>
-<h4>附加词:</h4>
-<p>与关键词形成一体/组合,便于查找准确信息,如“开发”</p>
-</li>
-<li>
-<h4>排除词:</h4>
-<p>与关键词互斥,可排除一部分非目标信息,如“运维”</p>
-</li>
-</ul>
-<button class="knowBtn">我知道了</button>
-    </div>
-
-    </div>
+    function sumArr(arr){
+      var sum = 0
+      arr.forEach(function(val){
+        sum += val
+      })
+      return sum
+    }
 
-    </div>
-    <div class="addKeyWord">
-    	<i class="iconfont icon-tianjia"></i>
-    </div>
-    <script src="https://cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js"></script>
-    <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
-    <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/keyWord.js?v={{Msg "seo" "version"}}108"></script>
-    <script>
-        initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
-        $(function () {
-			var isPageHide = false;
-			window.addEventListener('pageshow', function () {
-			    if (isPageHide) {
-	            	IOSsession();
-	                var buttonDOM = $('.enter.addkeyWord .btnChoose .appended');
-	        		buttonDOM.prop("disabled", false);
-	        		var buttonDOMM = $('.enter.addkeyWord .btnChoose .exclude');
-	        		buttonDOMM.prop("disabled", false);
-	                if (sessionStorage.IOSsession!==""&&sessionStorage.IOSsession!==undefined){
-	                    //监听到了history.back
-	                    location.reload();
-	                }
-			    }
-			});
-			window.addEventListener('pagehide', function () {
-			    isPageHide = true;
-			});
-		});
-		(/iphone|ipod|ipad/i.test(navigator.appVersion)) && document.addEventListener('blur', (e) => {
-		    // 这里加了个类型判断,因为a等元素也会触发blur事件
-		    ['input', 'textarea'].includes(e.target.localName) && document.body.scrollIntoView(false)
-		}, true)
+    // 计算关键词、附加词、排除词总和
+    function getTotal () {
+      var keyLen = keyWordArr.length
+      var arr = []
+      keyWordArr.forEach(function(item) {
+        if (item.appended) {
+          arr.push(item.appended.length)
+        }
+        if (item.exclude) {
+          arr.push(item.exclude.length)
+        }
+      })
+      arr.push(keyLen)
+      var total = sumArr(arr)
+      console.log(total);
+      return total
+    }
 
-        var keyWordArr = [];
-        var turn = '';
-        if(localStorage.keyWord !== "" && localStorage.keyWord !== undefined){
-            var keyWord = localStorage.keyWord;
-            keyWordArr = JSON.parse(keyWord);
-            var keyWordHtml = "";
-            for(var i in keyWordArr){
-                var append = keyWordArr[i].appended;
-                if (append===null||append===undefined){
-                  append=new Array();
-                }
-                var exclude = keyWordArr[i].exclude;
-                if (exclude===null||exclude===undefined){
-                  exclude=new Array();
-                }
-                if(append !== undefined && exclude === undefined){
-                    keyWordHtml += `
+    var keyWordArr = [];
+    var turn = '';
+    if (localStorage.keyWord !== "" && localStorage.keyWord !== undefined) {
+      var keyWord = localStorage.keyWord;
+      keyWordArr = JSON.parse(keyWord);
+      var keyWordHtml = "";
+      for (var i in keyWordArr) {
+        var append = keyWordArr[i].appended;
+        if (append === null || append === undefined) {
+          append = new Array();
+        }
+        var exclude = keyWordArr[i].exclude;
+        if (exclude === null || exclude === undefined) {
+          exclude = new Array();
+        }
+        if (append !== undefined && exclude === undefined) {
+          keyWordHtml += `
                     <li>
                         <div class="one">
                             <div>
@@ -181,8 +238,8 @@
                             <button class="ascertainKey">确定</button>
                         </div>
                     </li>`;
-                }else if(append === undefined && exclude !== undefined){
-                    keyWordHtml += `
+        } else if (append === undefined && exclude !== undefined) {
+          keyWordHtml += `
                     <li>
                         <div class="one">
                             <div>
@@ -205,8 +262,8 @@
                             <button class="ascertainKey">确定</button>
                         </div>
                     </li>`;
-                }else if(append !== undefined && exclude !== undefined){
-                    keyWordHtml += `
+        } else if (append !== undefined && exclude !== undefined) {
+          keyWordHtml += `
                     <li>
                         <div class="one">
                             <div>
@@ -233,8 +290,8 @@
                             <button class="ascertainKey">确定</button>
                         </div>
                     </li>`;
-                }else if(append === undefined && exclude === undefined){
-                    keyWordHtml += `
+        } else if (append === undefined && exclude === undefined) {
+          keyWordHtml += `
                     <li>
                         <div class="one">
                             <div>
@@ -253,201 +310,219 @@
                             <button class="ascertainKey">确定</button>
                         </div>
                     </li>`;
-                }
-                keyWordHtml = keyWordHtml.replace(/,/g, " ");
-            }
-            $('.showKeyWord > ul').prepend(keyWordHtml);
-            //
-
         }
-        //
-        function IOSsession() {
-            if(sessionStorage.keyWord!==""&&sessionStorage.keyWord!==undefined){
-//             	window["turn"] = $('.addkeyWord input.enterOne').val();
-                var keys = JSON.parse(sessionStorage.keyWord);
-//              if(window["turn"]===""&&window["turn"]===undefined){
-//              	for(var a in keys){
-//              		alert(keys[a].keyWord)
-//              		$('.addkeyWord input.enterOne').val(keys[a].keyWord);
-//              	}
-//              }
-                for(var a in keys){
-//              	alert("565")
-                	$('.addkeyWord input.enterOne').val(keys[a].keyWord);
-                	turn = keys[a].keyWord
-//                  if (keys[a].keyWord === turn){
-                    $(".btnChoose").show();
-                    //数量
-                    var str = "";
-                    var strs = "";
-                    if(keys[a].appended !== undefined){
-                        var appended = keys[a].appended.length;
-                        if(appended < 1){
-                            str =  "添加 附加词";
-                        }else{
-                            str = "编辑 附加词 ("+appended+")";
-                        }
-                    }else{
-                        str = "添加 附加词";
-                    }
-                    $(".addAdjunctWord").text(str);
-                    if(keys[a].exclude !== undefined){
-                        var exclude =keys[a].exclude.length;
-                        if(exclude < 1){
-                            strs = "添加 排除词";
-                        }else{
-                            strs = "编辑 排除词 ("+exclude+")";
-                        }
-                    }else{
-                        strs = "添加 排除词";
-                    }
-                    $(".addExclusion").text(strs);
-//                  }
-                }
+        keyWordHtml = keyWordHtml.replace(/,/g, " ");
+      }
+      $('.showKeyWord > ul').prepend(keyWordHtml);
+      //
+      if (getTotal() >= wordsLimit) {
+        $('.addKeyWord').hide()
+        $('.keywords-more-tips').show()
+        $('.addAdjunctWord.add-append-btn').attr('disabled', true)
+        $('.addExclusion.add-exclude-btn').attr('disabled', true)
+      } else {
+        $('.addKeyWord').show()
+        $('.keywords-more-tips').hide()
+        $('.addAdjunctWord').removeAttr('disabled')
+        $('.addExclusion.add-exclude-btn').removeAttr('disabled')
+      }
+    }
+    //
+    function IOSsession() {
+      if (sessionStorage.keyWord !== "" && sessionStorage.keyWord !== undefined) {
+        //             	window["turn"] = $('.addkeyWord input.enterOne').val();
+        var keys = JSON.parse(sessionStorage.keyWord);
+        //              if(window["turn"]===""&&window["turn"]===undefined){
+        //              	for(var a in keys){
+        //              		alert(keys[a].keyWord)
+        //              		$('.addkeyWord input.enterOne').val(keys[a].keyWord);
+        //              	}
+        //              }
+        for (var a in keys) {
+          //              	alert("565")
+          $('.addkeyWord input.enterOne').val(keys[a].keyWord);
+          turn = keys[a].keyWord
+          //                  if (keys[a].keyWord === turn){
+          $(".btnChoose").show();
+          //数量
+          var str = "";
+          var strs = "";
+          if (keys[a].appended !== undefined) {
+            var appended = keys[a].appended.length;
+            if (appended < 1) {
+              str = "添加 附加词";
+              $(".addAdjunctWord").addClass('add-append-btn')
+            } else {
+              str = "编辑 附加词 (" + appended + ")";
+              $(".addAdjunctWord").removeClass('add-append-btn')
+            }
+          } else {
+            str = "添加 附加词";
+            $(".addAdjunctWord").addClass('add-append-btn')
+          }
+          $(".addAdjunctWord").text(str);
+          if (keys[a].exclude !== undefined) {
+            var exclude = keys[a].exclude.length;
+            if (exclude < 1) {
+              strs = "添加 排除词";
+              $(".addExclusion").addClass('add-exclude-btn')
+            } else {
+              strs = "编辑 排除词 (" + exclude + ")";
+              $(".addExclusion").removeClass('add-exclude-btn')
             }
+          } else {
+            strs = "添加 排除词";
+            $(".addExclusion").addClass('add-exclude-btn')
+          }
+          $(".addExclusion").text(strs);
         }
-        IOSsession();
+      }
+    }
+    IOSsession();
 
-        //
-        if($(".enterOne").val()!==""){
-            $('.enter.addkeyWord .btnChoose .appended').prop("disabled", false);
-            $('.enter.addkeyWord .btnChoose .exclude').prop("disabled", false);
-            $('.enter.addkeyWord .btn > button').prop("disabled", false);
-            $('.enter.addkeyWord .btn > button').css("opacity", 1);
-        }
-        $(".appended").on('click', function () {
-            var keyWord = $(this).parent().prev().val();
-            if (keyWord.length > 20) {
-                // var s = keyWord.slice(0,19);
-                // $('.addkeyWord input.enterOne').val(s)
+    //
+    if ($(".enterOne").val() !== "") {
+      $('.enter.addkeyWord .btnChoose .appended').prop("disabled", false);
+      $('.enter.addkeyWord .btnChoose .exclude').prop("disabled", false);
+      $('.enter.addkeyWord .btn > button').prop("disabled", false);
+      $('.enter.addkeyWord .btn > button').css("opacity", 1);
+    }
+    $(".appended").on('click', function () {
+      var keyWord = $(this).parent().prev().val();
+      if (keyWord.length > 20) {
+        // var s = keyWord.slice(0,19);
+        // $('.addkeyWord input.enterOne').val(s)
 
-                weui.toast('关键词不能超过20字', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
-            }
-            var buttonDOM = $('.enter.addkeyWord .btnChoose .appended');
-            buttonDOM.prop("disabled", true);
-            //
-            if(sessionStorage.keyWord!==""&&sessionStorage.keyWord!==undefined){
-                var keys = JSON.parse(sessionStorage.keyWord);
-                for(var i in keys){
-                    if(keys[i].keyWord===turn){
-                    	if(keyWord!==turn){
-                    		keys[i].keyWord = keyWord;
-                    	}
-                    	sessionStorage.keyWord = JSON.stringify(keys);
-                        window.location.href = "/front/wx_dataExport/appended?keyWord="+keyWord;
-                        return
-                    }
-                }
-            }
-            //
-            var obj = [{"keyWord":keyWord}];
-            sessionStorage.keyWord = JSON.stringify(obj);
-            window.location.href = "/front/wx_dataExport/appended?keyWord="+keyWord;
+        weui.toast('关键词不能超过20字', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
         });
-        $(".exclude").on('click', function () {
-            var keyWord = $(this).parent().prev().val();
-            if (keyWord.length > 20) {
-                // var s = keyWord.slice(0,19);
-                // $('.addkeyWord input.enterOne').val(s)
-
-                weui.toast('关键词不能超过20字', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
+        return
+      }
+      var buttonDOM = $('.enter.addkeyWord .btnChoose .appended');
+      buttonDOM.prop("disabled", true);
+      //
+      if (sessionStorage.keyWord !== "" && sessionStorage.keyWord !== undefined) {
+        var keys = JSON.parse(sessionStorage.keyWord);
+        for (var i in keys) {
+          if (keys[i].keyWord === turn) {
+            if (keyWord !== turn) {
+              keys[i].keyWord = keyWord;
             }
-            var buttonDOM = $('.enter.addkeyWord .btnChoose .exclude');
-            buttonDOM.prop("disabled", true);
-            //
-            if(sessionStorage.keyWord!==""&&sessionStorage.keyWord!==undefined){
-                var keys = JSON.parse(sessionStorage.keyWord);
-                for(var i in keys){
-                    if(keys[i].keyWord===turn){
-                    	if(keyWord!==turn){
-                    		keys[i].keyWord = keyWord;
-                    	}
-                    	sessionStorage.keyWord = JSON.stringify(keys);
-                        window.location.href = "/front/wx_dataExport/exclude?keyWord="+keyWord;
-                        return
-                    }
-                }
-            }
-            //
-            var obj = [{"keyWord":keyWord}];
-            sessionStorage.keyWord = JSON.stringify(obj);
-            window.location.href = "/front/wx_dataExport/exclude?keyWord="+keyWord;
-        });
-        //
-        $(".showKeyWord").on('click', '.addAdjunctWord',function(e){
-            var keyWord = $(this).parent().prev().find('.key').text();
-            if($(this).prev().val().replace(/\s+/g,"").length < 1){
-            	weui.toast('关键词不能为空', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
-            }
-            if (keyWord.length > 20) {
+            sessionStorage.keyWord = JSON.stringify(keys);
+            window.location.href = "/front/wx_dataExport/appended?keyWord=" + keyWord;
+            return
+          }
+        }
+      }
+      //
+      var obj = [{
+        "keyWord": keyWord
+      }];
+      sessionStorage.keyWord = JSON.stringify(obj);
+      window.location.href = "/front/wx_dataExport/appended?keyWord=" + keyWord;
+    });
+    $(".exclude").on('click', function () {
+      var keyWord = $(this).parent().prev().val();
+      if (keyWord.length > 20) {
+        // var s = keyWord.slice(0,19);
+        // $('.addkeyWord input.enterOne').val(s)
 
-                weui.toast('关键词不能超过20字', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
-            }
-            sessionStorage.removeItem("keyWord");
-            window.location.href = "/front/wx_dataExport/appended?keyWord="+keyWord;
+        weui.toast('关键词不能超过20字', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
         });
-        $(".showKeyWord").on('click', '.addExclusion',function(e){
-            var keyWord = $(this).parent().prev().find('.key').text();
-            if($(this).parent().find("textarea").val().replace(/\s+/g,"").length < 1){
-            	weui.toast('关键词不能为空', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
-            }
-            if (keyWord.length > 20) {
-
-                weui.toast('关键词不能超过20字', {
-                    duration: 2000,
-                    className: 'text-overflow100',
-                    callback: function(){}
-                });
-                return
+        return
+      }
+      var buttonDOM = $('.enter.addkeyWord .btnChoose .exclude');
+      buttonDOM.prop("disabled", true);
+      //
+      if (sessionStorage.keyWord !== "" && sessionStorage.keyWord !== undefined) {
+        var keys = JSON.parse(sessionStorage.keyWord);
+        for (var i in keys) {
+          if (keys[i].keyWord === turn) {
+            if (keyWord !== turn) {
+              keys[i].keyWord = keyWord;
             }
-            sessionStorage.removeItem("keyWord");
-            window.location.href = "/front/wx_dataExport/exclude?keyWord="+keyWord;
+            sessionStorage.keyWord = JSON.stringify(keys);
+            window.location.href = "/front/wx_dataExport/exclude?keyWord=" + keyWord;
+            return
+          }
+        }
+      }
+      //
+      var obj = [{
+        "keyWord": keyWord
+      }];
+      sessionStorage.keyWord = JSON.stringify(obj);
+      window.location.href = "/front/wx_dataExport/exclude?keyWord=" + keyWord;
+    });
+    //
+    $(".showKeyWord").on('click', '.addAdjunctWord', function (e) {
+      var keyWord = $(this).parent().prev().find('.key').text();
+      if ($(this).prev().val().replace(/\s+/g, "").length < 1) {
+        weui.toast('关键词不能为空', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
         });
+        return
+      }
+      if (keyWord.length > 20) {
 
-        $('.addkeyWord .btn .close').on('click', function () {
-            sessionStorage.removeItem("keyWord");
-            window.history.back();
+        weui.toast('关键词不能超过20字', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
         });
-        //
-        $(".showKeyWord ul li .one").each(function () {
-            var dom = $(this).children().find("p.addition").html();
-            if(dom === ""){
-                $(this).children().find("p.addition").parent().remove();
-            }
-            var doms = $(this).children().find("p.exclusion").html();
-            if(doms === ""){
-                $(this).children().find("p.exclusion").parent().remove();
-            }
+        return
+      }
+      sessionStorage.removeItem("keyWord");
+      window.location.href = "/front/wx_dataExport/appended?keyWord=" + keyWord;
+    });
+    $(".showKeyWord").on('click', '.addExclusion', function (e) {
+      var keyWord = $(this).parent().prev().find('.key').text();
+      if ($(this).parent().find("textarea").val().replace(/\s+/g, "").length < 1) {
+        weui.toast('关键词不能为空', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
+        });
+        return
+      }
+      if (keyWord.length > 20) {
+
+        weui.toast('关键词不能超过20字', {
+          duration: 2000,
+          className: 'text-overflow100',
+          callback: function () {}
         });
-        //
+        return
+      }
+      sessionStorage.removeItem("keyWord");
+      window.location.href = "/front/wx_dataExport/exclude?keyWord=" + keyWord;
+    });
 
-    </script>
-	{{include "/common/baiducc.html"}}
+    $('.addkeyWord .btn .close').on('click', function () {
+      sessionStorage.removeItem("keyWord");
+      window.history.back();
+    });
+    //
+    $(".showKeyWord ul li .one").each(function () {
+      var dom = $(this).children().find("p.addition").html();
+      if (dom === "") {
+        $(this).children().find("p.addition").parent().remove();
+      }
+      var doms = $(this).children().find("p.exclusion").html();
+      if (doms === "") {
+        $(this).children().find("p.exclusion").parent().remove();
+      }
+    });
+    //
+  </script>
+  {{include "/common/baiducc.html"}}
 </body>
 
 </html>

+ 101 - 3
src/web/templates/weixin/dataExport/dataExport_keyWordInput.html

@@ -16,23 +16,49 @@
     <script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
 </head>
 <style>
+    .keyWord{
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+      height: 100%;
+    } 
     .keyWord .enter .btn .save {
         float: right;
     }
     body{
         background: rgba(245,244,249,1);
     }
+    .keyword-more-tips {
+      display: none;
+      width: 100%;
+      padding: .24rem .32rem;
+      background: rgba(249, 242, 234, 1);
+      color: #FF9F40;
+      font-size: .26rem;
+      line-height: .4rem;
+      text-align: center;
+    }
+
+    .keyword-more-tips>a {
+      color: #FF3A20;
+      text-decoration: underline;
+    }
+    button:disabled,
+    button[disabled]{
+      opacity: 0.6!important;
+    }
 </style>
 <body>
 
 <div class="keyWord">
+  <section class="content">
     <p class="title">示例:软件系统(关键词);  开发(附加词);  运维(排除词)</p>
     <!-- 添加关键词 -->
     <div class="enter addkeyWord">
         <input type="text" class="enterOne" placeholder="请输入关键词" />
         <div class="btnChoose" style="display:none;">
-            <button class="addAdjunctWord appended" disabled>添加 附加词</button>
-            <button class="addExclusion exclude" disabled>添加 排除词</button>
+            <button class="addAdjunctWord appended" disabled data-attr="add">添加 附加词</button>
+            <button class="addExclusion exclude" disabled data-attr="add">添加 排除词</button>
         </div>
         <div class="btn">
             <button class="save" disabled>确认</button>
@@ -43,7 +69,8 @@
     <div class="problem">
         疑问解答 <i class="iconfont icon-wenhao"></i>
     </div>
-
+  </section>
+    <!-- <div class="keyword-more-tips">关键词已达上限,如需添加更多您可<a href="/weixin/frontPage/bigmember/free/perfect_info?source=wx_Dataself_keywordmore_customization">申请数据定制导出></a></div> -->
     <!-- 疑难问题弹窗 -->
     <div class="problemPop">
     <div class="problemPopContent">
@@ -73,9 +100,73 @@
 </div>
 <script src="https://cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js"></script>
 <script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+<script>
+  var limit = {{Export.exportLimit}};
+  var wordsLimit = limit.countLimit || 100
+  console.log(limit);
+</script>
 <script>
     initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
+    function sumArr(arr){
+      var sum = 0
+      arr.forEach(function(val){
+        sum += val
+      })
+      return sum
+    }
+    // 计算关键词、附加词、排除词总和
+    function getTotal () {
+      var keyWordArr = JSON.parse(localStorage.getItem("keyWord")) || []
+      var keyLen = keyWordArr.length
+      var arr = []
+      keyWordArr.forEach(function(item) {
+        if (item.appended) {
+          arr.push(item.appended.length)
+        }
+        if (item.exclude) {
+          arr.push(item.exclude.length)
+        }
+      })
+      arr.push(keyLen)
+      /**
+       * 此处取计算当前页关键词、附加词、排除词(当前页未保存前不存入localStorage)
+       * 关键词:输入框有值即+1
+       * 附加词、关键词取文案中的数字
+       * 原来的逻辑当前页的关键词、附加词、排除词是取sessionStorage取值,但没有及时清除(编辑、添加来回跳转的时候在其它页面会继续取sessionStorage),刷新页面仍会有值导致计算不准确
+       * */
+      if ($('.enterOne').val().trim()) {
+        arr.push(1)
+      }
+      var appendText= $('.addAdjunctWord.appended').text();
+      var excludeText = $('.addExclusion.exclude').text();
+      var appendCount = appendText.match(/\d/g) ? appendText.match(/\d/g)[0] : 0;
+      var excludeCount = excludeText.match(/\d/g) ? excludeText.match(/\d/g)[0] : 0;
+      arr.push(Number(appendCount))
+      arr.push(Number(excludeCount))
+      var total = sumArr(arr)
+      console.log(total);
+      return total
+    }
+    function hasWords () {
+        if (getTotal() >= wordsLimit) {
+          if (getTotal() === wordsLimit) {
+            $('[data-attr="add"]').attr('disabled', true)
+          } else {
+            // $('.keyword-more-tips').show()
+            $('.save').attr('disabled', true)
+            $('[data-attr="add"]').attr('disabled', true)
+          }
+        } else {
+          // $('.keyword-more-tips').hide()
+          $('.save').removeAttr('disabled')
+          if ($('.enterOne').val().trim()) {
+            $('.appended').removeAttr('disabled')
+            $('.exclude').removeAttr('disabled')
+          }
+        }
+    }
     $(function(){
+        hasWords()
         var isinitpage = false;
         $(window).bind("pageshow", function(event){
             if(event.originalEvent.persisted){
@@ -126,6 +217,7 @@
                 $(this).next().find(".appended").prop("disabled", true);
                 $(this).next().find(".exclude").prop("disabled", true);
             }
+            hasWords()
         });
 
         // 添加 按钮的点击事件
@@ -216,22 +308,28 @@
                     var appended = keys[a].appended.length;
                     if(appended < 1){
                         str =  "添加 附加词";
+                        $(".addAdjunctWord").attr('data-attr', 'add');
                     }else{
                         str = "编辑 附加词 ("+appended+")";
+                        $(".addAdjunctWord").removeAttr('data-attr');
                     }
                 }else{
                     str = "添加 附加词";
+                    $(".addAdjunctWord").attr('data-attr', 'add');
                 }
                 $(".addAdjunctWord").text(str);
                 if(keys[a].exclude !== undefined){
                     var exclude =keys[a].exclude.length;
                     if(exclude < 1){
                         strs = "添加 排除词";
+                        $(".addExclusion").attr('data-attr', 'add');
                     }else{
                         strs = "编辑 排除词 ("+exclude+")";
+                        $(".addExclusion").removeAttr('data-attr');
                     }
                 }else{
                     strs = "添加 排除词";
+                    $(".addExclusion").attr('data-attr', 'add');
                 }
                 $(".addExclusion").text(strs);
 //              }

+ 67 - 22
src/web/templates/weixin/dataExport/dataExport_winnerEdit.html

@@ -18,11 +18,11 @@
 	<script src="{{Msg "seo" "cdn"}}/common-module/public/js/utils.js?v={{Msg "seo" "version"}}"></script>
 	</head>
 	<style>
-		.addKeyWord i {
+		.addKeyBtn i {
 			font-size: 1rem;
 			color: #2cb7ca;
 		}
-		.addKeyWord {
+		.addKeyBtn {
 			/*width: 100%;*/
 			position: fixed;
 			text-align: center;
@@ -35,34 +35,63 @@
 		body{
 			background: rgba(245,244,249,1);
 		}
+    .content{
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+      overflow-y: scroll;
+    }
+    .ent-more-tips {
+      display: none;
+      width: 100%;
+      padding: .14rem .32rem;
+      background: rgba(249, 242, 234, 1);
+      color: #FF9F40;
+      font-size: .26rem;
+      line-height: .4rem;
+      text-align: center;
+    }
+
+    .ent-more-tips>a {
+      color: #FF3A20;
+      text-decoration: underline;
+    }
 
 	</style>
 	<body>
 	<div class="keyWord">
-		<div class="enter addkeyWord">
-			<input type="text" class="enterOne" placeholder="中标单位名称" />
-			<div class="btn fixed-bottom">
-				<button class="save-btn" disabled>确认</button>
-				<button class="close">取消</button>
-			</div>
-		</div>
-		<!-- 添加附加词显示列表 -->
-		<div class="showKeyWord">
-			<ul>
+    <section class="content">
+      <div class="enter addkeyWord">
+        <input type="text" class="enterOne" placeholder="中标单位名称" />
+        <div class="btn fixed-bottom">
+          <button class="save-btn" disabled>确认</button>
+          <button class="close">取消</button>
+        </div>
+      </div>
+      <!-- 添加附加词显示列表 -->
+      <div class="showKeyWord">
+        <ul>
 
-			</ul>
+        </ul>
 
-		</div>
-		<div class="association-list-box" style="display: none;">
-			<ul class="association-list">
-			</ul>
-		</div>
+      </div>
+      <div class="association-list-box" style="display: none;">
+        <ul class="association-list">
+        </ul>
+      </div>
+    </section>
+    <div class="ent-more-tips">最多可添加{{Export.exportLimit.winnerLimit}}个中标单位,目前已达上限,如需添加更多您可<a href="/weixin/frontPage/bigmember/free/perfect_info?source=wx_Dataself_entmore_customization" onclick="goPerfect()">申请数据定制导出></a></div>
 	</div>
-	<div class="addKeyWord">
+	<div class="addKeyBtn">
 		<i class="iconfont icon-tianjia"></i>
 	</div>
 	<script src="https://cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js"></script>
 	<script src="{{Msg "seo" "cdn"}}/wx_dataExport/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+  <script>
+    var limit = {{Export.exportLimit}};
+    var winnerLimit = limit.winnerLimit || 100
+    console.log(limit);
+  </script>
 	<script>
 		initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
 		window.addEventListener('pageshow', function(e) {
@@ -100,6 +129,13 @@
                     </li>`
 			}
 			$('.showKeyWord > ul').prepend(html);
+      if (winner.length >= winnerLimit) {
+        $('.addKeyBtn').hide()
+        $('.ent-more-tips').show()
+      } else {
+        $('.addKeyBtn').show()
+        $('.ent-more-tips').hide()
+      }
 		}
 		$(function(){
 
@@ -116,16 +152,24 @@
 					$(".enter.addkeyWord").show();
 					$(".addKeyWord").hide();
 					$(".showKeyWord").hide();
+          $('.addKeyBtn').hide()
 				} else {
 					$(".enter.addkeyWord").hide();
 					$(".showKeyWord").show();
 					$(".addKeyWord").show();
+          if (showKeyWordLength >= winnerLimit) {
+            $('.addKeyBtn').hide()
+            $('.ent-more-tips').show()
+          } else {
+            $('.addKeyBtn').show()
+            $('.ent-more-tips').hide()
+          }
 				}
 			}
 			hasWords();
 
 			// 添加按钮
-			$(".addKeyWord i").on('click',function(){
+			$(".addKeyBtn i").on('click',function(){
 				window.location.href="/front/wx_dataExport/winnerInput";
 			});
 
@@ -206,7 +250,7 @@
 				var buttonDOM = $('.enter.addkeyWord .btn button')[0];
 				buttonDOM.style.opacity = .5;
 				buttonDOM.setAttribute("disabled", true)
-
+        hasWords();
 			});
 
 			// 编辑
@@ -273,7 +317,8 @@
 					$(this).parent().siblings().find('.key').text(keyWord);
 					$(this).parent().hide().siblings().show()
 				}
-				$(".addKeyWord").show();
+				// $(".addKeyWord").show();
+        hasWords()
 			});
 
 			//去空格方法