Browse Source

Merge branch 'release/v4.8.28' into dev/v4.8.28_rjj

renjiaojiao 2 years ago
parent
commit
579f0e83bb

+ 20 - 5
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/analysis_result.js

@@ -523,6 +523,7 @@ var vNode = {
         },
         // 开始分析
         setAjaxFilters (data) {
+          // 清除老数据,初始化页面
           this.setModuleState()
           this.filterData = data
           this.filterData.searchItem = 1
@@ -531,6 +532,7 @@ var vNode = {
           sessionStorage.removeItem('$data-analysis-result_1')
           sessionStorage.removeItem('$data-analysis-result_2')
           sessionStorage.removeItem('$data-analysis-result_3')
+          // 请求新数据
           this.setYearData()
           this.getChartData()
           this.getProjectWinnerEnt()
@@ -617,6 +619,15 @@ var vNode = {
                             }
                             that.setProjectDetail()
                             that.initChartData()
+                        } else {
+                          delete that.cacheImgData.all_counts
+                          delete that.cacheImgData.all_money
+                          delete that.cacheImgData.all_review_experts
+                          delete that.cacheImgData.all_winners
+                          delete that.cacheImgData.group_area
+                          delete that.cacheImgData.bidcycle_ranges
+                          delete that.cacheImgData.budgetAnalysis
+                          delete that.cacheImgData.bidcycle_ranges
                         }
                     }
                     loading.clear();
@@ -721,6 +732,8 @@ var vNode = {
                   }
                   that.isShow.showProjectList = true
                 } else {
+                  that.projectListDetail = []
+                  that.defaultProjectDetail = []
                   that.isShow.showProjectList = false
                 }
               }
@@ -760,12 +773,13 @@ var vNode = {
                       }
                       // 同类项目分析
                       if (res.data.PAnalysis && Object.keys(res.data.PAnalysis).length > 0) {
-                          for (var key in res.data.PAnalysis) {
-                              that.cacheImgData[key] = res.data.PAnalysis[key]
-                          }
-                          that.disWinnerAmount(that.cacheImgData.winnerAmount);
+                        for (var key in res.data.PAnalysis) {
+                            that.cacheImgData[key] = res.data.PAnalysis[key]
+                        }
+                        that.disWinnerAmount(that.cacheImgData.winnerAmount);
+                      } else {
+                        delete that.cacheImgData.winnerAmount
                       }
-                  }else{
                   }
                   if(that.loading) {
                     that.loading.clear()
@@ -814,6 +828,7 @@ var vNode = {
                           }
                           that.disReviewExperts(that.cacheImgData.reviewExperts);
                       } else {
+                        delete that.cacheImgData.reviewExperts
                         that.isShow.showExperts = false
                       }
                   }

+ 9 - 9
src/jfw/modules/bigmember/src/entity/analysis.go

@@ -297,15 +297,15 @@ func Sequence(seqData []map[string]interface{}) []map[string]interface{} {
 			} else {
 				delete(v, "entidlist") //中标单位id有误 删除id处理
 			}
-			var s_length = 0
-			for _, v1 := range winnerList {
-				if RegWinner.MatchString(v1) {
-					s_length += 1
-				}
-			}
-			if s_length == 0 {
-				continue
-			}
+			//var s_length = 0
+			//for _, v1 := range winnerList {
+			//	if RegWinner.MatchString(v1) {
+			//		s_length += 1
+			//	}
+			//}
+			//if s_length == 0 {
+			//	continue
+			//}
 		}
 		//评审专家
 		review_experts := []string{}

+ 9 - 3
src/jfw/modules/bigmember/src/service/analysis/decision.go

@@ -764,6 +764,9 @@ func getDecInfo(decQuery, buyer_buyerClass string, dec *DecParam, buyerSty int)
 			if len(bs) > 0 {
 				json.Unmarshal(bs, &aggsMap)
 				if len(aggsMap) > 0 {
+					if len(aggsMap) > 10 {
+						aggsMap = aggsMap[:10]
+					}
 					var _aggsMap = []map[string]interface{}{}
 					for k, v := range aggsMap {
 						if !entity.RegExperts.MatchString(qutil.ObjToString(v["key"])) {
@@ -814,11 +817,14 @@ func getDecInfo(decQuery, buyer_buyerClass string, dec *DecParam, buyerSty int)
 				var winners = []string{}
 				json.Unmarshal(bs, &aggsMap)
 				if len(aggsMap) > 0 {
+					if len(aggsMap) > 10 {
+						aggsMap = aggsMap[:10]
+					}
 					var buckets = []*DecWinnerInfo{}
 					for _, v := range aggsMap {
-						if !entity.RegWinner.MatchString(qutil.ObjToString(v["key"])) {
-							continue
-						}
+						//if !entity.RegWinner.MatchString(qutil.ObjToString(v["key"])) {
+						//	continue
+						//}
 						//类似项目金额
 						var total_map = *qutil.ObjToMap(v["total"].(map[string]interface{}))
 						var total_project = 0

+ 5 - 5
src/jfw/modules/bigmember/src/service/analysis/esquery.go

@@ -59,7 +59,7 @@ func DecQuery(area map[string]interface{}, business_scope []ViewKeyWord, buyer,
 	//var query_aggs_winners_aggs_buyer = `"group_projectname":{"terms":{"field":"buyer","size":3}},"this_buyer":{"filter":{"query_string": {"default_field": "buyer","query": "*%s*"}},"aggs":{"total":{"sum":{"field":"sortprice"}},"my_top_hits":{"top_hits":{"size":20,"sort":{"jgtime":"desc"},"_source":["id","jgtime"]}}}}`
 	//var query_aggs_winners = `"group_winner":{"terms":{"field":"s_winner","size":10,"order": [{"total": "desc"}]},"aggs":{"recent_project": {"top_hits": {"size": 1,"sort": {"jgtime": "desc"},"_source": ["id","projectname","jgtime","bidamount"]}},"total":{"sum":{"field":"sortprice"}},"max_jytime": {"max": {"field": "jgtime"}},"group_entidlist":{"terms":{"field":"entidlist","size":1}}%s}}`
 
-	var query = `{"query":{"bool":{"must":[{"bool":{"must":[%s]}},{"bool":{"should":[%s],"minimum_should_match":%d}}]}}, "aggs":{%s}}`
+	var query = `{"query":{"bool":{"must":[{"bool":{"must":[%s]}},{"bool":{"should":[%s],"minimum_should_match":%d}}]}}, "aggs":{%s},"size":0}`
 
 	//标书周期
 	var query_aggs_bidcycle = `"bidcycle_ranges": {"range": {"field": "bidcycle","ranges": [%s]}}`
@@ -214,7 +214,7 @@ func AnalyzeNumber(area map[string]interface{}, business_scope []ViewKeyWord, bu
                 "buyer_count": {"filter": {"bool": {"must": [{"query_string": {"default_field": "buyer","query": "*%s*"}}]}},"aggs": {"all_counts": {"cardinality": {"field": "id"}}}},
                 "area_count": {"filter": {"bool": {"must": [%s]}},"aggs": {"all_counts": {"cardinality": {"field": "id"}}}}`, buyer, strings.Join(areaCity, ","))
 
-	var query = `{"query":{"bool":{"must":[{"bool":{"must":[%s]}},{"bool":{"should":[%s],"minimum_should_match":%d}}]}}, "aggs":{%s}}`
+	var query = `{"query":{"bool":{"must":[{"bool":{"must":[%s]}},{"bool":{"should":[%s],"minimum_should_match":%d}}]}}, "aggs":{%s},"size":0}`
 	//检索日期
 	if limitTime != "" {
 		var (
@@ -296,9 +296,9 @@ func AnalyzeNumber(area map[string]interface{}, business_scope []ViewKeyWord, bu
 func DecWinnerQuery(area map[string]interface{}, business_scope []ViewKeyWord, buyer, limitTime string, searchItem, hotWinnerType int) string {
 	//类似项目热点中标企业
 	//var query_aggs_winners_aggs_buyer = `"group_projectname":{"terms":{"field":"buyer","size":3}},"this_buyer":{"filter":{"query_string": {"default_field": "buyer","query": "*%s*"}},"aggs":{"total":{"sum":{"field":"sortprice"}},"my_top_hits":{"top_hits":{"size":20,"sort":{"jgtime":"desc"},"_source":["id","jgtime"]}}}}`
-	var query_aggs_winners = `"group_winner":{"terms":{"field":"s_winner","size":10%s},"aggs":{"recent_project": {"top_hits": {"size": 1,"sort": {"jgtime": "desc"},"_source": ["id","projectname","jgtime","bidamount"]}},"total":{"sum":{"field":"sortprice"}},"max_jytime": {"max": {"field": "jgtime"}},"group_entidlist":{"terms":{"field":"entidlist","size":1}}}}`
+	var query_aggs_winners = `"group_winner":{"terms":{"field":"s_winner","exclude":["-",""],"size":50 %s},"aggs":{"recent_project": {"top_hits": {"size": 1,"sort": {"jgtime": "desc"},"_source": ["id","projectname","jgtime","bidamount"]}},"total":{"sum":{"field":"sortprice"}},"max_jytime": {"max": {"field": "jgtime"}},"group_entidlist":{"terms":{"field":"entidlist","exclude":["-",""],"size":1}}}}`
 
-	var query = `{"query":{"bool":{"must":[{"bool":{"should":[%s],"must":[%s]}},{"bool":{"should":[%s],"minimum_should_match":%d}}]}},"aggs":{%s}}`
+	var query = `{"query":{"bool":{"must":[{"bool":{"should":[%s],"must":[%s]}},{"bool":{"should":[%s],"minimum_should_match":%d}}]}},"aggs":{%s},"size":0}`
 
 	//标书周期
 	//var query_aggs_bidcycle = `"bidcycle_ranges": {"range": {"field": "bidcycle","ranges": [%s]}}`
@@ -427,7 +427,7 @@ func DecReviewExpertsQuery(area map[string]interface{}, business_scope []ViewKey
 	musts := []string{}
 	shoulds := []string{}
 	//聚合查询
-	query_aggs := `"group_review_experts":{"terms":{"field":"review_experts","size":10},"aggs":{"recent_project": {"top_hits": {"size": 1,"sort": {"jgtime": "desc"},"_source": ["jgtime"]}}}}`
+	query_aggs := `"group_review_experts":{"terms":{"field":"review_experts","size":50},"aggs":{"recent_project": {"top_hits": {"size": 1,"sort": {"jgtime": "desc"},"_source": ["jgtime"]}}}}`
 
 	if searchItem == 1 { //采购单位同类型检索
 		//项目采购单位 模糊匹配

+ 21 - 1
src/web/staticres/common-module/analysis-filter/css/analysis-filter.css

@@ -3,6 +3,13 @@
   left: .32rem;
   right: .32rem;
 }
+/* .analysis-filter .time-cell.van-cell::after {
+  content: '';
+  border: 0.5px solid rgba(0, 0, 0, 0.05);
+  left: .32rem;
+  right: .32rem;
+} */
+
 .analysis-filter .van-cell{
   padding: .24rem .32rem;
   flex-direction: column;
@@ -88,7 +95,10 @@
 
 .select_time .van-cell{
   padding: 0 .32rem;
-  height: .88rem;
+  height: 1.08rem;
+}
+.select_time .van-cell::after{
+  border-bottom: 0.5px solid rgba(0, 0, 0, 0.05);
 }
 .select_time .van-cell.van-dropdown-item__option{
   font-size: .28rem;
@@ -101,6 +111,9 @@
   width: .48rem;
   height: .48rem;
 }
+.select_time .van-icon::before {
+  font-size: .4rem;
+}
 
 .project-analysis-main{
   min-height: .64rem;
@@ -137,6 +150,10 @@
   background-size: contain;
 }
 
+.analysis-filter .j-button-group{
+  padding: .26rem .32rem;
+}
+
 
 .icon-search{
   width: .4rem;
@@ -173,4 +190,7 @@
 
 .van-popover__arrow {
   display: none;
+}
+.van-hairline--top-bottom::after, .van-hairline-unset--top-bottom::after {
+  border-width: 0px 0px 1px;
 }

+ 25 - 15
src/web/staticres/common-module/analysis-filter/js/analysis-filter.js

@@ -5,7 +5,7 @@ var analysisTemp = `
       <van-popover :show-arrow="false" :close-on-click-action="true" :close-on-click-outside="true" v-model="showPopover">
         <template #reference>
           <van-field
-            v-model="filters.pname"
+            :value="filters.pname"
             @input="setProName"
             name="projectName"
             label="项目名称"
@@ -102,6 +102,7 @@ var analysisTemp = `
       ></van-field>
       <van-field
         is-link
+        class='time-cell'
         readonly
         @click="setOpenPopup('time')"
         v-model="filters.limitTime"
@@ -266,26 +267,34 @@ var analysisComponent = {
       if(this.buyerContent.length !== 0) {
         return true
       } else {
-        return false
+        if(this.filters.keys !== '') {
+          return true
+        } else {
+          return false
+        }
       }
     },
     startValidate (data) {
       console.log(data)
     },
     onSubmit: function () {
-      const {pname, buyer, area} = this.filters
-      this.ajaxFilters.pname = pname
-      this.ajaxFilters.buyer = buyer
-      this.ajaxFilters.area = area
-      this.ajaxFilters.keys = this.buyerContent
-      const params = {
-        filters: this.filters,
-        buyerContent: this.buyerContent
-      }
-      sessionStorage.setItem('analysis-filter-data', JSON.stringify(params))
-      this.$emit('click', this.ajaxFilters)
+      this.addKeys()
+      this.$nextTick(() => {
+        const {pname, buyer, area} = this.filters
+        this.ajaxFilters.pname = pname
+        this.ajaxFilters.buyer = buyer
+        this.ajaxFilters.area = area
+        this.ajaxFilters.keys = this.buyerContent
+        const params = {
+          filters: this.filters,
+          buyerContent: this.buyerContent
+        }
+        sessionStorage.setItem('analysis-filter-data', JSON.stringify(params))
+        this.$emit('click', this.ajaxFilters)
+      })
     },
     setProName (data) {
+      this.filters.pname = data
       this.entering = 'project'
       this.getProjectList(data)
     },
@@ -427,7 +436,8 @@ var analysisComponent = {
     addKeys () {
       if(this.filters.keys !== '') {
         const keys = {
-          key: [this.filters.keys]
+          key: [this.filters.keys],
+          matchway: 1
         }
         this.buyerContent.push(keys)
         this.filters.keys = ''
@@ -458,7 +468,7 @@ var analysisComponent = {
     onAreaConfirm: function () {
       const picker = this.$refs.picker;
       const selectedValue = picker.getValues()
-      this.filters.area = selectedValue[0].text
+      this.filters.area = selectedValue[0].value
       this.filtersPopup.area = false
     },
     // 打开弹出框

+ 27 - 27
src/web/staticres/common-module/public/js/china-province-data.js

@@ -1,99 +1,99 @@
 var ChinaProvinceJson = [{
   "text": "北京市",
-  "value": "北京"
+  "value": "北京"
 }, {
   "text": "天津市",
-  "value": "天津"
+  "value": "天津"
 }, {
   "text": "河北省",
-  "value": "河北"
+  "value": "河北"
 }, {
   "text": "山西省",
-  "value": "山西"
+  "value": "山西"
 }, {
   "text": "内蒙古自治区",
   "value": "内蒙古自治区"
 }, {
   "text": "辽宁省",
-  "value": "辽宁"
+  "value": "辽宁"
 }, {
   "text": "吉林省",
-  "value": "吉林"
+  "value": "吉林"
 }, {
   "text": "黑龙江省",
-  "value": "黑龙江"
+  "value": "黑龙江"
 }, {
   "text": "上海市",
-  "value": "上海"
+  "value": "上海"
 }, {
   "text": "江苏省",
-  "value": "江苏"
+  "value": "江苏"
 }, {
   "text": "浙江省",
-  "value": "浙江"
+  "value": "浙江"
 }, {
   "text": "安徽省",
-  "value": "安徽"
+  "value": "安徽"
 }, {
   "text": "福建省",
-  "value": "福建"
+  "value": "福建"
 }, {
   "text": "江西省",
-  "value": "江西"
+  "value": "江西"
 }, {
   "text": "山东省",
-  "value": "山东"
+  "value": "山东"
 }, {
   "text": "河南省",
-  "value": "河南"
+  "value": "河南"
 }, {
   "text": "湖北省",
-  "value": "湖北"
+  "value": "湖北"
 }, {
   "text": "湖南省",
-  "value": "湖南"
+  "value": "湖南"
 }, {
   "text": "广东省",
-  "value": "广东"
+  "value": "广东"
 }, {
   "text": "海南省",
-  "value": "海南"
+  "value": "海南"
 }, {
   "text": "广西壮族自治区",
   "value": "广西壮族自治区"
 }, {
   "text": "甘肃省",
-  "value": "甘肃"
+  "value": "甘肃"
 }, {
   "text": "陕西省",
-  "value": "陕西"
+  "value": "陕西"
 }, {
   "text": "新疆维吾尔自治区",
   "value": "新疆维吾尔自治区"
 }, {
   "text": "青海省",
-  "value": "青海"
+  "value": "青海"
 }, {
   "text": "宁夏回族自治区",
   "value": "宁夏回族自治区"
 }, {
   "text": "重庆市",
-  "value": "重庆"
+  "value": "重庆"
 }, {
   "text": "四川省",
-  "value": "四川"
+  "value": "四川"
 }, {
   "text": "贵州省",
-  "value": "贵州"
+  "value": "贵州"
 }, {
   "text": "云南省",
-  "value": "云南"
+  "value": "云南"
 }, {
   "text": "西藏自治区",
   "value": "西藏自治区"
 }, {
   "text": "台湾省",
-  "value": "台湾"
+  "value": "台湾"
 }, {
   "text": "澳门特别行政区",
   "value": "澳门特别行政区"

+ 3 - 1
src/web/staticres/public-pc/js/article-content.js

@@ -185,7 +185,9 @@ var bidNode = {
       if(bidPower) {
         bidPower = JSON.parse(bidPower)
         if(bidPower.indexOf(6) != -1) {
-          location.href = '/swordfish/page_big_pc/analysis_result?sid=' + goTemplateData.params.obj._id
+          // location.href = '/swordfish/page_big_pc/analysis_result?sid=' + goTemplateData.params.obj._id
+          var link = '/page_workDesktop/work-bench/app/big/analysis_result?sid=' + goTemplateData.params.obj._id
+          window.open(link)
         }
       }
     },

+ 1 - 1
src/web/templates/frontRouter/pc/serviceSystem/free/index.html

@@ -1807,7 +1807,7 @@
                                             分析同类项目,帮助企业决策投标策略
                                         </p>
                                         <p class="text">
-                                            通过大数据分析统计,提供同类项目评标专家的频次排名、同类项目的热点中标企业、项目区域分布、采购单位类型分布、项目标书编制周期、类型项目折扣率分析、同类项目明细等,帮助投标人员编制标书,判断是否参与投标。
+                                            通过大数据分析统计,提供同类项目评标专家的频次排名、同类项目的热点中标企业、项目区域分布、采购单位类型分布、项目标书编制周期分布、同类项目明细等,帮助投标人员编制标书,判断是否参与投标。
                                         </p>
                                     </div>
                                     <div class="table_content_sortcell"><i class="free"></i></div>