瀏覽代碼

Merge branch 'master' into feature/v4.8.40

lianbingjie 2 年之前
父節點
當前提交
dfc6adbbc6

+ 2 - 1
src/jfw/filter/phonefilter.go

@@ -57,6 +57,7 @@ func (l *phoneFilter) Do() bool {
 		if flag, _ := config.Sysconfig["phoneFilterFlag"].(bool); !flag {
 			return true
 		}
+		//会展活动 未绑定手机号 不用到绑定手机号页面
 		for _, v := range bindurl {
 			if v.MatchString(l.R.URL.Path) && !strings.Contains(l.R.URL.Path, "bidedoc") && !strings.Contains(l.R.URL.Path, "squeeze") && !strings.Contains(l.R.URL.Path, "partner") {
 				return true
@@ -147,7 +148,7 @@ func (l *phoneFilter) Do() bool {
 //	return int(t.Unix() - t2.Unix())
 //}
 
-//文章三级页跳转设置cookie
+// 文章三级页跳转设置cookie
 func SetCookie(value string, timeout int, w http.ResponseWriter) {
 	c := &http.Cookie{
 		Name:     "article",

+ 37 - 0
src/jfw/modules/app/src/web/templates/big-member/page_report_analysis.html

@@ -92,6 +92,7 @@
                         </div>
                         <van-cell-group class="filters-list">
                             <van-cell center title="分析内容" is-link value-class="ellipsis" :value="resolveSelected('keys')" @click="clickCell('keys')"></van-cell>
+                            <van-cell center title="匹配方式" is-link value-class="ellipsis" :value="resolveSelected('matchway')" @click="clickCell('matchway')"></van-cell>
                             <van-cell center title="区域" is-link value-class="ellipsis" :value="resolveSelected('area')" @click="clickCell('area')"></van-cell>
                             <van-cell center title="行业" is-link value-class="ellipsis" :value="resolveSelected('industry')" @click="clickCell('industry')"></van-cell>
                             <van-cell center title="采购单位类型" value-class="ellipsis" is-link :value="resolveSelected('buyerclass')" @click="clickCell('buyerclass')"></van-cell>
@@ -551,6 +552,42 @@
                 </div>
             </div>
         </van-popup>
+        <van-popup
+            v-model="filterDialogShow.matchway"
+            closeable
+            round
+            position="bottom"
+            close-icon="clear"
+            class="j-popup collection"
+            overlay-class="j-overlay"
+            :lazy-render="false"
+            :style="{ height: '36%' }"
+            get-container="body">
+            <div class="j-container matchway-popup">
+                <div class="popup-header header-title">请选择匹配方式</div>
+                <div class="j-main">
+                    <van-radio-group v-model="filtersCache.matchway">
+                        <van-cell-group>
+                          <van-cell
+                            v-for="item in matchWayList"
+                            :key="item.label"
+                            :title="item.name"
+                            clickable
+                            @click="filtersCache.matchway = item.label">
+                            <template #right-icon>
+                              <van-radio checked-color="#2ABED1" :name="item.label" />
+                            </template>
+                          </van-cell>
+                    </van-radio-group>
+                </div>
+                <div class="j-footer">
+                    <div class="j-button-group">
+                        <button class="j-button-cancel" @click="filtersCache.matchway = 'title'">重置</button>
+                        <button class="j-button-confirm" @click="filters.matchway = filtersCache.matchway;filterDialogShow.matchway = false">确认</button>
+                      </div>
+                </div>
+            </div>
+        </van-popup>
         <van-popup
             v-model="filterDialogShow.area"
             closeable

+ 10 - 4
src/jfw/modules/bigmember/src/entity/marketAnalysis/commonSearch.go

@@ -7,7 +7,6 @@ import (
 )
 
 const (
-	localMultiMatch     = `{"multi_match": {"query": %s,"type": "phrase", "fields": ["purchasing","projectname.pname"]}}`
 	query_bool_must_and = `{"bool": {"must": [%s]%s}}`
 	PSearch_DecMust     = `"bidstatus": ["中标","成交","合同","单一"]`
 	query_bool_must     = `{"terms": {%s}}`
@@ -41,7 +40,7 @@ func (mae *MarketAnalysisEntity) GetCommonQuerySql() string {
 	musts = append(musts, fmt.Sprintf(query_bool_must, PSearch_DecMust))
 	//订阅词
 	for _, v := range getAllKeywordArr(mae.FormatParam.KeysItems) {
-		if sql := getKeyWordSql(v); sql != "" {
+		if sql := getKeyWordSql(v, mae.BaseParam.MatchingMode); sql != "" {
 			bools = append(bools, sql)
 		}
 	}
@@ -92,8 +91,15 @@ func getAllKeywordArr(res []keyWordGroup) (rData []viewKeyWord) {
 	return
 }
 
-func getKeyWordSql(v viewKeyWord) string {
-	var shoulds, must_not []string
+func getKeyWordSql(v viewKeyWord, matchingMode string) string {
+	var (
+		shoulds, must_not []string
+		//默认查询项目名称与标的物
+		localMultiMatch = `{"multi_match": {"query": %s,"type": "phrase", "fields": ["purchasing","projectname.pname"]}}`
+	)
+	if matchingMode == "title" { //只匹配项目名称
+		localMultiMatch = `{"multi_match": {"query": %s,"type": "phrase", "fields": ["projectname.pname"]}}`
+	}
 	//附加词
 	for _, vv := range v.Keyword {
 		vv = strings.TrimSpace(vv)

+ 5 - 0
src/jfw/modules/bigmember/src/entity/marketAnalysis/marketAnalysisEntity.go

@@ -53,6 +53,7 @@ type AnalysisRequestParam struct {
 	PageSize       int    //默认每页10条
 	PageNum        int    //默认当前第一页
 	IsDetail       bool   //是否是项目明细请求
+	MatchingMode   string //匹配方式 title:标题 content:项目名称/标的物
 }
 
 type viewKeyWord struct {
@@ -239,6 +240,7 @@ func (mae *MarketAnalysisEntity) SaveAnalysisRecord() error {
 		"s_area":           mae.BaseParam.Area,
 		"s_industry":       mae.BaseParam.Industry,
 		"s_buyerClass":     mae.BaseParam.BuyerClass,
+		"s_matchingMode":   mae.BaseParam.MatchingMode,
 		"s_userId":         mae.UId,
 		"s_parentId":       mae.Pid,
 		"l_createTime":     time.Now().Unix(),
@@ -273,6 +275,7 @@ func (mae *MarketAnalysisEntity) GetAnalysisFromMgoDb() error {
 	mae.BaseParam.Area, _ = (*res)["s_area"].(string)
 	mae.BaseParam.Industry, _ = (*res)["s_industry"].(string)
 	mae.BaseParam.BuyerClass, _ = (*res)["s_buyerClass"].(string)
+	mae.BaseParam.MatchingMode, _ = (*res)["s_matchingMode"].(string)
 	return nil
 }
 
@@ -324,6 +327,7 @@ func (mae *MarketAnalysisEntity) GetRecordList(pageNum, PageSize int) (total int
 			"rangeTime":        qutil.ObjToString(row["s_rangeTime"]),
 			"s_rangeTimeExtra": qutil.ObjToString(row["s_rangeTimeExtra"]),
 			"createTime":       qutil.Int64All(row["l_createTime"]),
+			"matchingMode":     qutil.ObjToString(row["s_matchingMode"]), //项目匹配方式
 		})
 	}
 	return
@@ -338,6 +342,7 @@ func (mae *MarketAnalysisEntity) getQueryItem() (map[string]interface{}, error)
 		"buyerclass":       mae.BaseParam.BuyerClass,
 		"rangeTime":        mae.BaseParam.RangeTime,
 		"s_rangeTimeExtra": mae.BaseParam.RangeTimeExtra,
+		"matchingMode":     mae.BaseParam.MatchingMode,
 	}, nil
 }
 

+ 1 - 1
src/jfw/modules/bigmember/src/entity/marketAnalysis/scaleRefineQuery.go

@@ -89,7 +89,7 @@ func (mae *MarketAnalysisEntity) marketScaleRefineQuery() (rMap map[string]inter
 	for _, group := range mae.FormatParam.KeysItems {
 		var bools []string
 		for _, v := range getGroupKeywordArr(group.A_Key) {
-			if sql := getKeyWordSql(v); sql != "" {
+			if sql := getKeyWordSql(v, mae.BaseParam.MatchingMode); sql != "" {
 				bools = append(bools, sql)
 			}
 		}

+ 2 - 0
src/jfw/modules/bigmember/src/service/report/marketAnalysis.go

@@ -53,6 +53,7 @@ func (this *MarketAnalysis) ProjectInfo() {
 			BuyerClass:     this.GetString("buyerclass"),     //采购单位类型【字符串】多个采购单位类型用逗号拼接
 			Buyer:          this.GetString("buyer"),          //采购单位
 			Winner:         this.GetString("winner"),         //中标单位
+			MatchingMode:   this.GetString("matchingMode"),   //匹配方式
 			Sort:           sort,                             //排序
 			PageSize:       pageSize,                         //每页数据量
 			PageNum:        pageNum,                          //当前页码
@@ -123,6 +124,7 @@ func (this *MarketAnalysis) DoAnalysis() {
 			Area:           this.GetString("area"),           //省份【字符串】多个省份用逗号拼接
 			Industry:       this.GetString("industry"),       //行业【字符串】多个行业用逗号拼接
 			BuyerClass:     this.GetString("buyerclass"),     //采购单位类型【字符串】多个采购单位类型用逗号拼接
+			MatchingMode:   this.GetString("matchingMode"),   //匹配方式
 		}
 		mae := &marketAnalysis.MarketAnalysisEntity{BaseParam: bParam, UId: userId, Pid: pid}
 		if err := mae.ForMatData(); err != nil {

+ 4 - 1
src/phoneFilter.json

@@ -19,7 +19,10 @@
 		"^/orgstructure/invpage",
 		"^/orgpc/(.*)",
     "^/weixin/pay/checkout_*",
-    "^/weixin/(\\w+)/paySuccess"
+    "^/weixin/(\\w+)/paySuccess",
+    "^/stl/exhibitionActive",
+    "^/swordfish/SingleLogin",
+    "^/weixin/frontPage/bigmember/free/perfect_info_exhibition"
 	],
 	"sessUrl":{
 		"/jyTreasureBox/treasureBox":"",

+ 8 - 0
src/web/staticres/common-module/collection/js/keyword-mobile.js

@@ -349,12 +349,20 @@ var keywordComponent = {
             _this.setInitList(_this.tablist)
           }
           _this.checkNoKey()
+          _this.emitRequestRes(res)
         },
         error: function(err){
           console.log(err)
         }
       })
     },
+    emitRequestRes: function (res) {
+      try {
+        if (res && res.data) {
+          subscribeRequestSuccess && subscribeRequestSuccess(res.data)
+        }
+      } catch (error) {}
+    },
     setInitList: function(arr) {
       arr.forEach((v) => {
         const ownKey = {

+ 15 - 0
src/web/staticres/common-module/diy-report/js/report-list.js

@@ -31,6 +31,13 @@ var reportListTemplate = `
                             v-html="formatKeys(item.keysItems, item.open)">
                         </div>
                     </div>
+                    <div class="info-flex-r-box filters">
+                        <span class="info-content-label">匹配方式:</span>
+                        <div class="info-content-box"
+                            :class="{'van-ellipsis': !item.open}"
+                            v-html="formatMatchWay(item.matchingMode, item.open)">
+                        </div>
+                    </div>
                     <div class="info-flex-r-box filters">
                         <span class="info-content-label">时间:</span>
                         <div class="info-content-box" :class="{'van-ellipsis': !item.open}">
@@ -187,6 +194,14 @@ var reportListMobileComponent = {
                 }.bind(this)
             })
         },
+        formatMatchWay: function (m, open) {
+            var map = {
+                title: '按标题匹配',
+                content: '按全文匹配'
+            }
+            const text = map[m] || map.content
+            return text
+        },
         formatKeys: function (keys, open) {
             var tempStr = '-'
             if (!keys) return tempStr

+ 51 - 1
src/web/staticres/common-module/report-analysis/js/report_analysis.js

@@ -1,6 +1,10 @@
 function dateFormatter (date, pattern) {
   return new Date(date).pattern(pattern)
 }
+function subscribeRequestSuccess (res) {
+  vm.subscribeInfo = res
+}
+
 var vm = new Vue({
   delimiters: ['${', '}'],
   el: '#analysis',
@@ -25,6 +29,7 @@ var vm = new Vue({
   data: {
     sessStorageKey: '$data-report_analysis',
     tabActiveName: 'analysis', // analysis/history
+    subscribeInfo: {},
     tabList: [
       {
         label: '市场分析报告',
@@ -35,6 +40,16 @@ var vm = new Vue({
         name: 'history'
       }
     ],
+    matchWayList: [
+      {
+        name: '按标题匹配',
+        label: 'title'
+      },
+      {
+        name: '按全文匹配',
+        label: 'content'
+      }
+    ],
     tabConf: {
       titleActiveColor: '#2ABED1',
       titleInactiveColor: '#5F5E64',
@@ -70,8 +85,12 @@ var vm = new Vue({
     ],
     scrollTop: 0,
     filtersPageShow: true,
+    filtersCache: {
+      matchway: 'title'
+    },
     filters: {
       selectKeysArr: [], // 关键词简单数组,用于恢复选择状态
+      matchway: 'title',
       keys: [], // 关键词详细数组,用于提交数据
       area: {},
       industry: [],
@@ -85,6 +104,7 @@ var vm = new Vue({
     },
     filterDialogShow: {
       keys: false,
+      matchway: false,
       area: false,
       industry: false,
       buyerclass: false,
@@ -343,7 +363,12 @@ var vm = new Vue({
           this.calcStickyOffset()
         }
       }
-    }
+    },
+    subscribeInfo (n) {
+      if (!this.rid && n && n.member_jy && n.member_jy.i_matchway) {
+        this.setDefaultMatchWay(n.member_jy.i_matchway)
+      }
+    },
   },
   created () {
     this.calcLastTimeText()
@@ -373,6 +398,17 @@ var vm = new Vue({
     utils.iosBackRefresh()
   },
   methods: {
+    setDefaultMatchWay: function (matchWay) {
+      // matchWay 1按标题匹配title 2按全文匹配content
+      var map = {
+        1: 'title',
+        2: 'content'
+      }
+      var defaultMatchWay = map[matchWay]
+      if (defaultMatchWay) {
+        this.filters.matchway = defaultMatchWay
+      }
+    },
     // 设置排序方式
     setsortType (data) {
       this.sections.areaScatter.sortType = data
@@ -622,9 +658,18 @@ var vm = new Vue({
         text = this.resolveSelectIndustryText(filters.industryDetail)
       } else if (type === 'buyerclass') {
         text = this.resolveSelectBuyerclassText(filters.buyerclass)
+      } else if (type === 'matchway') {
+        text = this.resolveSelectMatchWayText(filters.matchway)
       }
       return prefix + text
     },
+    resolveSelectMatchWayText: function (m) {
+      var map = {
+        title: '按标题匹配',
+        content: '按全文匹配'
+      }
+      return map[m]
+    },
     resolveSelectKeysText: function (keys) {
       if (Array.isArray(keys)) {
         if (keys.length === 0) {
@@ -748,6 +793,8 @@ var vm = new Vue({
         setTimeout(function () {
           _this.$refs.industrySelector.setState()
         }, 0)
+      } else if (key = 'matchway') {
+        this.filtersCache[key] = this.filters[key]
       }
       dialog[key] = true
     },
@@ -800,6 +847,7 @@ var vm = new Vue({
 
       const query = {
         keysItems: this.getSelectedKeys(),
+        matchingMode: this.filters.matchway,
         rangeTime: `${parseInt(this.filters.rangeTime.start / 1000)}-${parseInt(this.filters.rangeTime.end / 1000)}`,
         rangeTimeExtra: this.filters.rangeTime.exact,
         area: JSON.stringify(this.filters.area),
@@ -1067,6 +1115,8 @@ var vm = new Vue({
         this.reportFilters.buyerclass = data.buyerclass.split(',')
         this.filters.buyerclass = this.reportFilters.buyerclass
       }
+      console.log(data)
+      this.filters.matchway = data.matchingMode || 'content'
     },
     // 市场概况
     sortMarketOverview (profile) {

+ 37 - 0
src/web/templates/big-member/wx/page_report_analysis.html

@@ -100,6 +100,7 @@
                       </div>
                       <van-cell-group class="filters-list">
                           <van-cell center title="分析内容" is-link value-class="ellipsis" :value="resolveSelected('keys')" @click="clickCell('keys')"></van-cell>
+                          <van-cell center title="匹配方式" is-link value-class="ellipsis" :value="resolveSelected('matchway')" @click="clickCell('matchway')"></van-cell>
                           <van-cell center title="区域" is-link value-class="ellipsis" :value="resolveSelected('area')" @click="clickCell('area')"></van-cell>
                           <van-cell center title="行业" is-link value-class="ellipsis" :value="resolveSelected('industry')" @click="clickCell('industry')"></van-cell>
                           <van-cell center title="采购单位类型" value-class="ellipsis" is-link :value="resolveSelected('buyerclass')" @click="clickCell('buyerclass')"></van-cell>
@@ -559,6 +560,42 @@
               </div>
           </div>
       </van-popup>
+      <van-popup
+            v-model="filterDialogShow.matchway"
+            closeable
+            round
+            position="bottom"
+            close-icon="clear"
+            class="j-popup collection"
+            overlay-class="j-overlay"
+            :lazy-render="false"
+            :style="{ height: '36%' }"
+            get-container="body">
+            <div class="j-container matchway-popup">
+                <div class="popup-header header-title">请选择匹配方式</div>
+                <div class="j-main">
+                    <van-radio-group v-model="filtersCache.matchway">
+                        <van-cell-group>
+                          <van-cell
+                            v-for="item in matchWayList"
+                            :key="item.label"
+                            :title="item.name"
+                            clickable
+                            @click="filtersCache.matchway = item.label">
+                            <template #right-icon>
+                              <van-radio checked-color="#2ABED1" :name="item.label" />
+                            </template>
+                          </van-cell>
+                    </van-radio-group>
+                </div>
+                <div class="j-footer">
+                    <div class="j-button-group">
+                        <button class="j-button-cancel" @click="filtersCache.matchway = 'title'">重置</button>
+                        <button class="j-button-confirm" @click="filters.matchway = filtersCache.matchway;filterDialogShow.matchway = false">确认</button>
+                      </div>
+                </div>
+            </div>
+      </van-popup>
       <van-popup
           v-model="filterDialogShow.area"
           closeable

+ 216 - 0
src/web/templates/frontRouter/wx/bigmember/free/exhibition_info.html

@@ -0,0 +1,216 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+
+<head>
+    <title>剑鱼标讯介绍</title>
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="format-detection" content="telephone=yes"/>
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <meta name="referrer" content="always">
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+    <script src="{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/big-member/js/rem.js"></script>
+    {{include "/common/weixin.html"}}
+
+    <!--S-当前页必定需要预加载的资源-->
+   <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/css/swiper.min.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    <!--E-当前页必定需要预加载的资源-->
+
+    <!--S-当前页面的css资源-->
+    <!--E-当前页面的css资源-->
+  <style>
+    html,
+    body {
+      position: relative;
+      height: 100%;
+    }
+
+    body {
+      background: #eee;
+      font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+      font-size: 14px;
+      color: #000;
+      margin: 0;
+      padding: 0;
+    }
+
+    .swiper {
+      width: 100%;
+      height: 100%;
+    }
+
+    .swiper-slide {
+      text-align: center;
+      font-size: 18px;
+      background: #fff;
+
+      /* Center slide text vertically */
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: -webkit-flex;
+      display: flex;
+      -webkit-box-pack: center;
+      -ms-flex-pack: center;
+      -webkit-justify-content: center;
+      justify-content: center;
+      -webkit-box-align: center;
+      -ms-flex-align: center;
+      -webkit-align-items: center;
+      align-items: center;
+    }
+
+    .swiper-slide img {
+      display: block;
+      width: 100%;
+      height: 100%;
+      object-fit: cover;
+    }
+    #skip-button {
+      position: fixed;
+      z-index: 2;
+      top: 0.32rem;
+      right: 0.32rem;
+      color: rgba(255, 255, 255, 0.90);
+      font-size: 12px;
+      font-weight: 400;
+      line-height: 18px;
+      display: inline-flex;
+      padding: 4px 12px;
+      justify-content: center;
+      align-items: center;
+      border-radius: 4px;
+      background: transparent;
+      border: 1px solid rgba(255, 255, 255, 0.50);
+    }
+    #go-button {
+      position: fixed;
+      z-index: 2;
+      bottom: 0.84rem;
+      left: 50%;
+      transform: translateX(-50%);
+      width: 5.82rem;
+      height: 0.92rem;
+      color: #2ABED1;
+      text-align: center;
+      font-size: 0.36rem;
+      font-style: normal;
+      font-weight: 500;
+      line-height: 0.52rem;
+      border-radius: 0.46rem;
+      background: #FFF;
+    }
+
+    @keyframes LoopPlayback {
+      0% {
+        opacity: 0;
+        transform: translateY(30%);
+      }
+
+      80% {
+        transform: translateY(0);
+        opacity: 1;
+      }
+
+      100% {
+        opacity: 0.2;
+        transform: translateY(-30%);
+      }
+    }
+    .next-page-arrow {
+      position: fixed;
+      z-index: 2;
+      bottom: 0.72rem;
+      left: 50%;
+      margin-left: -0.24rem;
+      width: 0.48rem;
+      height: 0.48rem;
+      background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAlCAYAAAAqXEs9AAAACXBIWXMAABCcAAAQnAEmzTo0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACtSURBVHgB7dZBCkMhDATQHDU38d982sKHlmLLRMfoIgOuxPjAxWhWqRwQAP5adkKekIZ3mu3MF2Yv6gdmD6qDue6Vj+phPvZyUf8w6SgGk4aKYJajRjDLUDMYOUqBkaGiGBBdNoy6h0cwjb2kg3ILgi7jMSMoNybkE/QwLEr7XUF12QAmHQVUl+kwy1AzGDlKgZGhlJhpFIJdNoly5hDdZQKUs4e0XZM8v1I5Kg9VMuHOIxrkSAAAAABJRU5ErkJggg==) no-repeat center center;
+      background-size: 0.48rem 0.48rem;
+      animation: LoopPlayback 2s infinite ease-in;
+    }
+  </style>
+</head>
+
+<body>
+<div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main">
+      <!-- Swiper -->
+      <div class="swiper mySwiper">
+        <div class="swiper-wrapper" id="imgs-box"></div>
+      </div>
+      <button class="action-button" id="skip-button">跳过</button>
+      <button style="display: none" class="action-button" id="go-button">立即使用剑鱼</button>
+      <div class="next-page-arrow"></div>
+    </div>
+</div>
+
+<script src='{{Msg "seo" "cdn"}}/js/swiper.min.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/public/js/utils.js'></script>
+{{include "/big-member/commonjs.html"}}
+<script>
+
+  function renderSwiper (adInfo) {
+    var appendHTML = ''
+    adInfo.forEach(function (ad) {
+      appendHTML += '<div class="swiper-slide"><img src="'+ad.s_pic+'"></div>'
+    })
+    $('#imgs-box').append(appendHTML)
+
+    var goLink = adInfo[0].s_link
+    $('button.action-button').attr('data-href', goLink)
+
+    var goButton = $('#go-button')
+    var nextIcon = $('.next-page-arrow')
+
+
+    var swiper = new Swiper(".mySwiper", {
+      direction: "vertical",
+      on: {
+        slideChangeTransitionStart: function () {
+          var isEndPage = this.slides.length - this.activeIndex === 1
+          if (isEndPage) {
+            nextIcon.hide()
+            goButton.fadeIn(1200)
+          } else {
+            goButton.hide()
+            nextIcon.show()
+          }
+        }
+      }
+    });
+
+    $('button.action-button').on('click', function () {
+      location.href = $(this).attr('data-href')
+    })
+  }
+
+  var sourceCode = utils.getParam('ad')
+  $.ajax({
+    url: '/publicapply/free/getJyAdList',
+    type: 'POST',
+    headers: {
+      'Content-Type': 'application/json'
+    },
+    data: JSON.stringify({codes: [sourceCode]}),
+    success: function (res) {
+      if (res && res.data) {
+        const adInfo = res.data[sourceCode]
+        renderSwiper(adInfo)
+      }
+    }
+  })
+
+</script>
+
+{{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 846 - 0
src/web/templates/frontRouter/wx/bigmember/free/perfect_info_exhibition.html

@@ -0,0 +1,846 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+
+<head>
+    <title>完善信息</title>
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="format-detection" content="telephone=yes"/>
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <meta name="referrer" content="always">
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+    <script src="{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/big-member/js/rem.js"></script>
+    {{include "/common/weixin.html"}}
+
+    <!--S-当前页必定需要预加载的资源-->
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    <!--E-当前页必定需要预加载的资源-->
+
+
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
+    <link rel="stylesheet"
+          href='{{Msg "seo" "cdn"}}/common-module/perfect-info/index.css?v={{Msg "seo" "version"}}'/>
+    <style>
+      .exhibition-page .van-field__control,
+      .exhibition-page .sendbtn {
+        font-size: 0.32rem;
+        font-style: normal;
+        font-weight: 500;
+        line-height: 0.48rem;
+        color: #5F5E64;
+      }
+      .exhibition-page .van-field__control::placeholder {
+        color: #C0C4CC;
+      }
+
+      .exhibition-page .sendbtn.canNextSend {
+        color: #2ABED1;
+      }
+      .exhibition-page .top-banner-group img {
+        width: 100%;
+        height: 100%;
+      }
+      .exhibition-page .van-cell {
+        font-size: 0.3rem;
+        font-style: normal;
+        font-weight: 500;
+        line-height: 0.44rem;
+        color: #5F5E64;
+        padding: 0.3rem 0.32rem;
+      }
+      .exhibition-page .top-banner-group {
+        max-height: 1.6rem;
+      }
+    </style>
+    <!--E-当前页面的css资源-->
+    <script>
+      try {
+        window.JyObj.hiddenBottom('0')
+      } catch (e) {
+        console.log('error: app not function')
+      }
+    </script>
+</head>
+
+<body>
+<div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main perfect-info-group exhibition-page" id="perfect-info-page" v-cloak>
+      <div class="j-container">
+          <div class="j-main info-collect">
+              <div class="top-banner-group" @click="openTopBanner" v-if="topBannerInfo.s_pic">
+                  <img :src="topBannerInfo.s_pic" :alt="topBannerInfo.s_picalt || '完善信息-顶部广告展示'">
+              </div>
+              <div class="form-card-group">
+                  <div class="form-title">基本信息</div>
+                  <div class="form-content-card">
+                      <van-field v-model.trim="infoMap.name" label="姓名" @focus="infoCheckMap.name = ''" @blur="getCheckMap('name')"
+                                 :error-message="infoCheckMap.name" required placeholder="请输入姓名"></van-field>
+                      <van-field @input="getInputPhone" v-model.trim="infoMap.phone" label="手机号" @focus="infoCheckMap.phone = ''"
+                                 @blur="getCheckMap('phone')" :error-message="infoCheckMap.phone" required
+                                 placeholder="请输入准确的手机号"></van-field>
+                      <van-field v-if="setcodeShow" v-model.trim="infoMap.vercode" label="验证码" @focus="infoCheckMap.vercode = ''"
+                                 @blur="getCheckMap('vercode')" :error-message="infoCheckMap.vercode" required
+                                 @input="getCheckCode"
+                                 placeholder="请输入短信验证码">
+                        <template #button>
+                          <span v-show="sendShow" style="font-size: .28rem;" class="sendbtn" :class="{'canNextSend': canNextSend}" @click="sendMsg">发送验证码</span>
+                          <span class="timedown" v-show="!sendShow"></span>
+                        </template>
+                      </van-field>
+                      <van-field v-model.trim="infoMap.email" label="邮箱" @focus="infoCheckMap.email = ''" @blur="getCheckMap('email')"
+                                 :error-message="infoCheckMap.email" placeholder="请输入邮箱"></van-field>
+                  </div>
+              </div>
+              <div class="form-card-group">
+                  <div class="form-title">公司信息</div>
+                  <div class="form-content-card">
+                      <div class="associate-ent-group" v-show="isAssociateShow">
+                          <div class="associate-ent-item" @click="selectEnt(item)" v-for="(item, i) in searchList" v-bind:key="i" v-html="highlightText(item, infoMap.company)"></div>
+                      </div>
+                      <van-field @input="entOnChange('input')" @blur="getCheckMap('company')" @focus="infoCheckMap.company = ''"
+                                 :error-message="infoCheckMap.company" required v-model.trim="infoMap.company" label="公司名称" placeholder="请输入准确的公司名称"></van-field>
+                      <van-field v-model="infoMap.companyType" label="公司类型"
+                                 @click="openPop('公司类型')" readonly is-link placeholder="请选择公司类型"></van-field>
+                      <van-field :class="{'hide-border': infoMap.position === '其他'}"  @blur="getCheckMap('position')"  v-model="infoMap.position" label="职位" @click="openPop('职位')" readonly is-link
+                                 placeholder="请选择职位"></van-field>
+                      <van-field class="other-input-group" @focus="infoCheckMap.position_other = ''"
+                                 :error-message="infoCheckMap.position_other" v-model.trim="infoMap.position_other" v-show="infoMap.position === '其他'" required label="职位" placeholder="请输入职位"></van-field>
+                      <van-field v-if="showBranch" :error-message="infoCheckMap.branch" v-model="infoMap.branch"  @blur="getCheckMap('branch')" label="部门" @click="openPop('部门')" readonly is-link placeholder="请选择部门"></van-field>
+                  </div>
+              </div>
+              <div class="warm-prompt">
+                <span class="icon-warning"></span>
+                <span class="warm-text">温馨提示:请提供准确的信息,我们将为您推荐更准确、更个性化的商机和服务</span>
+              </div>
+          </div>
+          <div class="j-footer">
+              <div class="j-button-group">
+                  <button class="j-button-confirm" :data-cl-event="submitElEvent" :disabled="isSubmitDisabled" @click="submitForm">提交</button>
+              </div>
+          </div>
+          <van-popup class="prefect-pop-group" v-model="popInfo.show" round position="bottom"
+                     :style="{ height: getPopHeight }">
+              <div class="j-container">
+                  <div class="j-header">
+                      <div class="pop-title-group">
+                          <span>@@popInfo.title@@</span>
+                          <div class="close-padding-box" @click="popInfo.show = false">
+                              <i class="j-icon base-icon icon-delete-gray"></i>
+                          </div>
+                      </div>
+                  </div>
+                  <div class="j-main" v-show="conditionMap[popInfo.label]">
+                      <div class="condition-select-group" :class="{more: isMoreSelect}">
+                          <div class="condition-select-item" @click="onSelectItem(item, popInfo.label)" v-for="(item,i) in conditionMap[popInfo.label]" :class="{checked: item.checked}">
+                              <div>@@item.title@@</div>
+                              <i v-if="!isMoreSelect" class="j-icon base-icon icon-tick"></i>
+                              <div class="more-icon-box" v-else>
+                                  <i  class="j-icon base-icon icon-tick-circle"></i>
+                                  <i  class="j-icon base-icon icon-tick-circle-fill"></i>
+                              </div>
+                          </div>
+                      </div>
+                  </div>
+                  <div class="j-footer">
+                      <div class="j-button-group">
+                          <button class="j-button-confirm" :disabled="isNextDisabled" @click="submitPop">确认</button>
+                      </div>
+                  </div>
+              </div>
+          </van-popup>
+      </div>
+      <van-popup v-model="commitshow" class="commitdialog" :close-on-click-overlay="overlayShow">
+        <div class="j-container">
+          <div class="j-header com-header">
+            <span class="infor-icon-close"></span>
+          </div>
+          <div class="j-main com-main">
+            <div class="img-duihao">
+              <img src="/structuredata/mobile/image/choose.png" alt="">
+            </div>
+            <div class="commit_success">提交成功</div>
+            <div class="commit_tip">我们稍后将以邮件的形式发送数据样例</div>
+            <div class="commit_know">
+              <button class="commit_btn" @click="history.back()">我知道了</button>
+            </div>
+            <div class="data_exportclick">
+              <img @click="location.href = '/front/wx_dataExport/toSieve'" src='{{Msg "seo" "cdn"}}/common-module/perfect-info/image/dataimg.png' alt="">
+            </div>
+          </div>
+          <div class="j-footer com-footer"></div>
+        </div>
+      </van-popup>
+  </div>
+</div>
+
+<script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/public/js/utils.js'></script>
+{{include "/big-member/commonjs.html"}}
+
+<script>
+  var vNode = {
+    delimiters: ['@@', '@@'],
+    el: '#perfect-info-page',
+    data: {
+      sendShow: true, // 倒计时切换
+      vercodecor: false, // 验证码是否正确
+      setcodeShow: true, // 验证码输入框是否显示
+      commitshow: false, // 提交成功显示弹窗
+      overlayShow: false,
+      searchList: [],
+      isAssociateShow: false,
+      isAssociateUpTime: -1,
+      infoMap: {
+        name: '',
+        phone: '',
+        vercode: '',
+        email: '',
+        company: '',
+        companyType: '',
+        position: '',
+        position_other: '',
+        branch: ''
+      },
+      infoCheckMap: {
+        name: '',
+        phone: '',
+        vercode: '',
+        email: '',
+        company: '',
+        position: '',
+        position_other: '',
+        branch: ''
+      },
+      isEchoInfoLoading: true,
+      popInfo: {
+        show: false,
+        label: '',
+        title: ''
+      },
+      conditionMap: {
+        '公司类型': [{
+            title: '投标企业',
+            checked: false
+          },
+          {
+            title: '招标采购单位',
+            checked: false
+          },
+          {
+            title: '厂商',
+            checked: false
+          },
+          {
+            title: '招标代理机构',
+            checked: false
+          },
+          {
+            title: '经销商',
+            checked: false
+          },
+          {
+            title: '服务提供商',
+            checked: false
+          },
+          {
+            title: '其他',
+            checked: false
+          }
+        ],
+        '职位': [
+          {
+            title: '总裁',
+            checked: false
+          },
+          {
+            title: '总经理',
+            checked: false
+          },
+          {
+            title: '总监',
+            checked: false
+          },
+          {
+            title: '经理',
+            checked: false
+          },
+          {
+            title: '主管',
+            checked: false
+          },
+          {
+            title: '职员',
+            checked: false
+          }
+        ],
+        '部门': [
+          {
+            title: '市场',
+            checked: false
+          },
+          {
+            title: '产品',
+            checked: false
+          },
+          {
+            title: '销售',
+            checked: false
+          },
+          {
+            title: '渠道',
+            checked: false
+          },
+          {
+            title: '其他',
+            checked: false
+          }
+        ]
+      },
+      ajaxParams: {
+        "name": "",
+        "phone": "",
+        "source": utils.getParam('source'), // 推送消息点进来的
+        "mail": "",
+        "company": "",
+        "companyType": "",
+        "position": "",
+        "branch": '',
+        origin: location.origin
+      },
+      jobJson: [
+        '总裁',
+        '总经理',
+        '总监',
+        '经理',
+        '主管',
+        '职员'
+      ],
+      topBannerInfo: {
+        s_pic: ""
+      }
+    },
+    mounted() {
+      // source=message_bigmember app消息大会员留资地
+      // source=message_structeddata app消息结构化数据留资地
+      this.ajaxGetEchoInfo()
+    },
+    computed: {
+      canNextSend: function () {
+        return this.checkPhone
+      },
+      submitElEvent: function () {
+        var type = 'structeddata'
+        return 'c_wx_' + type + '_submit_buttonclick'
+      },
+      getPopHeight () {
+        return this.popInfo.label === '受雇类型' ?  '5.42rem' : '8.36rem'
+      },
+      checkName () {
+        if (this.infoMap.name.length > 10) {
+          return false
+        }
+        var namereg = /^[\u4E00-\u9FA5A-Za-z\s]+(·[\u4E00-\u9FA5A-Za-z]+)*$/;//中英文或加.的少数民族名字
+        return namereg.test(this.infoMap.name)
+      },
+      checkPhone () {
+        return /^1[3-9]\d{9}$/.test(this.infoMap.phone)
+      },
+      checkEmail () {
+        if (this.infoMap.email === '') return true
+        if (this.infoMap.email.length > 50) {
+          return false
+        }
+        return /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(this.infoMap.email)
+      },
+      checkEntName () {
+        if (this.infoMap.company.trim().length > 50 || this.infoMap.company.trim().length < 2) {
+          return false
+        }
+        return true
+      },
+      checkEntType() {
+        if (this.infoMap.companyType === '') {
+          return false
+        }
+        return true
+      },
+      isMoreSelect () {
+        return this.popInfo.label === '公司类型'
+      },
+      checkPosition () {
+        if (this.infoMap.position !== "" && this.infoMap.position !== '其他') {
+          return true
+        }
+        if (this.infoMap.position_other.length > 50) {
+          return false
+        }
+        var namereg = /^[\u4E00-\u9FA5A-Za-z\s]+(·[\u4E00-\u9FA5A-Za-z]+)*$/;
+        return namereg.test(this.infoMap.position_other)
+      },
+      checkBranch(){
+        if(this.infoMap.position.indexOf('总裁') > -1 || this.infoMap.position.indexOf('总经理') > -1){
+          return false
+        } else if(this.infoMap.branch !== ""){
+          return false
+        }else{
+          return true
+        }
+      },
+      isSubmitDisabled () {
+        return !this.checkName || !this.checkPhone || !this.checkEmail || !this.checkEntName || !this.vercodecor
+      },
+      isNextDisabled () {
+        var type = this.popInfo.label
+        var result = false
+        switch (type) {
+          case '职位': {
+            result = this.conditionMap[type].filter(v => v.checked).length
+            break
+          }
+          case '部门': {
+            result = this.conditionMap[type].filter(v => v.checked).length
+            break
+          }
+          case '公司类型': {
+            result = this.conditionMap[type].filter(v => v.checked).length
+            break
+          }
+        }
+        return !result
+      },
+      showBranch () {
+        // 切换到总裁或总经理之后 把之前选择的部门清空
+        if (this.infoMap.position.indexOf('总裁') > -1 || this.infoMap.position.indexOf('总经理') > -1) {
+          this.infoMap.branch = ''
+          this.conditionMap['部门'].forEach(v => {
+            v.checked = false
+          })
+        }
+        var zc = this.infoMap.position.indexOf('总裁') > -1
+        var zjl = this.infoMap.position.indexOf('总经理') > -1
+        return !(zc || zjl) && this.infoMap.position
+      }
+    },
+    methods: {
+      // 顶部广告
+      openTopBanner: function () {
+        location.href = this.topBannerInfo.s_link
+      },
+      // 手机号输入事件
+      getInputPhone: function(value) {
+        let exhibition_phone = sessionStorage.getItem('exhibition_phone')
+        if(value === exhibition_phone) {
+          // this.setcodeShow = false
+        } else {
+          // this.setcodeShow = true
+        }
+      },
+      // 点击发送验证码
+      sendMsg: function () {
+        let _this = this
+        if(!this.checkPhone) return
+        $.ajax({
+          type: 'POST',
+          url: '/salesLeads/sendMsg',
+          data: {
+            phoneNum: _this.infoMap.phone,
+            source: this.ajaxParams.source
+          },
+          success:function(res) {
+            console.log(res)
+            if(res.data.success) {
+              _this.countdown()
+            }else{
+              if (res.data.msg.indexOf("phoneErr")>-1){
+                _this.showToast("手机号错误")
+              }else if (res.data.msg.indexOf("sended")>-1){
+                _this.showToast("验证码已发送")
+              }else{
+                _this.showToast(res.data.msg)
+              }
+            }
+          }
+        })
+      },
+      // 验证码输入事件
+      getCheckCode: function() {
+        let _this = this
+        if(this.infoMap.vercode.length == 6){
+          $.ajax({
+              url:'/salesLeads/checkCode',
+              type:'POST',
+              data:{
+                  phoneNum:_this.infoMap.phone,
+                  code:_this.infoMap.vercode
+              },
+              success:function(res) {
+                if(res.error_code == 0) {
+                  _this.vercodecor = res.data.flag
+                  if(res.data.flag) {
+                    _this.$toast('验证码正确')
+                  }else{
+                    _this.$toast('验证码错误')
+                  }
+                  _this.getCheckMap('vercode')
+                }
+              },
+              error:function(err) {
+                  console.log(err)
+              }
+          })
+        } else {
+          _this.getCheckMap('vercode')
+        }
+      },
+      ajaxFn: function (url, data, callback, type) {
+        return $.ajax({
+          type: 'post',
+          url: url,
+          contentType: type ? 'application/x-www-form-urlencoded' : "application/json;charset=utf-8",
+          data: type ? data : JSON.stringify(data),
+          dataType: "json",
+          success: typeof callback === 'function' ? callback.bind(this) : new Function()
+        })
+      },
+      // 倒计时
+      countdown() {
+        let _this = this
+        this.sendShow = false
+        var time=60;
+        setTime=setInterval(function(){
+            if(time<=0){
+              _this.sendShow = true
+              time=59
+              clearInterval(setTime);
+              return;
+            }
+            time--;
+            $(".timedown").text(time+'s');
+        },1000);
+      },
+      ajaxGetEchoInfo() {
+        this.isEchoInfoLoading = true
+        this.ajaxFn('/salesLeads/retainedCapital' + '?source=' + this.ajaxParams.source, {source: this.ajaxParams.source}, function (r) {
+          this.isEchoInfoLoading = false
+          if (r && r.info) {
+            r.data = r.info
+          }
+          // 广告及手机号是否绑定相关业务逻辑
+          var needVerifyBindPhone = false
+          if (r && r.active) {
+            this.topBannerInfo = r.active.adList[0] || {}
+            needVerifyBindPhone = r.active.bindOrNot
+          }
+          // 原留资业务
+          if (r && r.error_msg === '' && r.data) {
+            if(r.data.phone != '' && !needVerifyBindPhone) {
+              this.vercodecor = true
+              this.setcodeShow = false
+              sessionStorage.setItem('exhibition_phone', r.data.phone)
+            } else {
+              this.setcodeShow = true
+            }
+            this.setEchoInfo(r.data)
+            // var result = checkRequiredKeys(['name', 'phone', 'company', 'companyType', 'mail', 'position', 'branch'], r.data)
+            // if (result) {
+            //   var skipAuto = ['jyarticle_see3', 'article_collection', 'article_original', 'jypush_see10']
+            //   var _this = this
+            //   var canAuto = !skipAuto.some(function (v) {
+            //     return _this.ajaxParams.source.indexOf(v) > -1
+            //   })
+            //   this.submitForm(canAuto)
+            // }
+          }
+        })
+      },
+      highlightText (value, keyStr) {
+        return utils.replaceKeyword(value, keyStr, '<span class="highlight-text">' + keyStr + '</span>')
+      },
+      entOnChange (type) {
+        if (type === 'blur') {
+          this.getCheckMap('company')
+          setTimeout(() => {
+            this.isAssociateShow = false
+            this.searchList = []
+          }, 300)
+        } else {
+          clearTimeout(this.isAssociateUpTime)
+          this.isAssociateUpTime = setTimeout(() => {
+            this.ajaxEntList(this.infoMap.company)
+          }, 200)
+        }
+      },
+      selectEnt (item) {
+        console.log('item', item)
+        this.infoMap.company = item
+        this.isAssociateShow = false
+        this.searchList = []
+      },
+      ajaxEntList (str) {
+        if (str.length <= 2) {
+          return
+        }
+        this.ajaxFn('/jypay/user/company/association', { name: str,companyCount:10 }, function (r) {
+          if (r && r.error_msg === '' && r.data) {
+            this.isAssociateShow = true
+            this.searchList = r.data
+          }
+        }, true)
+      },
+      setEchoInfo (data) {
+        if (data.companyType) {
+          this.setCheckForData('companyType', 'companyType', data.companyType, '公司类型')
+        }
+        if (data.position) {
+          this.setCheckForData('position', 'position', data.position, '职位')
+        }
+        if (data.name) {
+          this.setCheckForData('name', 'name', data.name)
+        }
+        if (data.phone) {
+          this.setCheckForData('phone', 'phone', data.phone)
+        }
+        if (data.mail) {
+          this.setCheckForData('mail', 'email', data.mail)
+        }
+        if (data.company) {
+          this.setCheckForData('company', 'company', data.company)
+        }
+        if (data.branch) {
+          this.setCheckForData('branch', 'branch', data.branch, '部门')
+        }
+      },
+      setCheckForData (aKey, iKey, cKey, label) {
+        this.ajaxParams[aKey] = cKey
+        this.infoMap[iKey] = cKey
+        if (label === '职位' && this.jobJson.indexOf(cKey) === -1) {
+            // this.infoMap[iKey] = '其他'
+            // this.infoMap.position_other = cKey.split('/')[1]
+            this.infoMap[iKey] = ''
+            this.infoMap.position_other = ''
+        }
+        if (label) {
+          var checkDatas = [cKey]
+          if (label === '公司类型') {
+            checkDatas = cKey.split(',')
+          }
+          this.conditionMap[label].forEach(v => {
+            if (checkDatas.indexOf(v.title) !== -1) {
+              v.checked = true
+            }
+          })
+        }
+      },
+      submitPop() {
+        var type = this.popInfo.label
+        switch (type) {
+          case '职位': {
+            var tempData = this.conditionMap[type].filter(v => v.checked)
+            this.setCheckForData('position', 'position', tempData[0].title)
+            break
+          }
+          case '部门': {
+            var tempData = this.conditionMap[type].filter(v => v.checked)
+            this.setCheckForData('branch', 'branch', tempData[0].title)
+            break
+          }
+          case '公司类型': {
+            var tempData = this.conditionMap[type].filter(v => v.checked).map(v => v.title)
+            this.setCheckForData('companyType', 'companyType', tempData.join(','))
+            break
+          }
+        }
+        this.popInfo.show = false
+      },
+      openPop(type) {
+        switch (type) {
+          case '职位': {
+            this.popInfo.title = '职位'
+            break
+          }
+          case '部门': {
+            this.popInfo.title = '部门'
+            break
+          }
+          case '公司类型': {
+            this.popInfo.title = '公司类型'
+            break
+          }
+        }
+        this.popInfo.label = type
+        this.popInfo.show = true
+      },
+      onSelectItem (item, index) {
+        if (this.isMoreSelect) {
+          item.checked = !item.checked
+        } else {
+          this.conditionMap[index].forEach(function (v) {
+            v.checked = false
+          })
+          item.checked = true
+        }
+      },
+      getCheckMap (type) {
+        switch (type) {
+            case 'name': {
+              this.infoCheckMap.name = this.infoMap.name === '' ? '姓名为必填项' : ''
+              if (this.infoCheckMap.name === '' && !this.checkName) {
+                this.infoCheckMap.name = '请输入正确格式的姓名'
+              }
+              break
+            }
+            case 'phone': {
+              this.infoCheckMap.phone = this.infoMap.phone === '' ? '手机号码为必填项' : ''
+              if (this.infoCheckMap.phone === '' && !this.checkPhone) {
+                this.infoCheckMap.phone = '请输入正确格式的手机号码'
+              }
+              break
+            }
+            case 'vercode': {
+              this.infoCheckMap.vercode = this.infoMap.vercode === '' ? '验证码为必填项' : ''
+              if (this.infoMap.vercode.length != 6 || !this.vercodecor) {
+                this.infoCheckMap.vercode = '请输入正确的验证码'
+              } else {
+                this.infoCheckMap.vercode = ''
+              }
+              break
+            }
+            case 'email': {
+              if (this.infoMap.email !== '') {
+                if (!this.checkEmail) {
+                  this.infoCheckMap.email = '请输入正确格式的邮箱'
+                }
+              } else {
+                this.infoCheckMap.email = ''
+              }
+              break
+            }
+            case 'company': {
+              this.infoCheckMap.company = this.infoMap.company === '' ? '公司名称为必填项' : ''
+              if (this.infoCheckMap.company === '' && !this.checkEntName) {
+                this.infoCheckMap.company = '请输入正确格式的公司名称'
+                if (this.infoMap.company.length < 2) {
+                  this.infoCheckMap.company = '公司名称至少输入2个字'
+                }
+                if (this.infoMap.company.length > 50) {
+                  this.infoCheckMap.company = '公司名称最多输入50个字'
+                }
+              }
+              break
+            }
+            case 'position': {
+              var isOther = this.infoMap.position === '其他' && this.infoMap.position_other === ''
+              this.infoCheckMap.position_other =  isOther ? '职位为必填项' : ''
+              if (this.infoCheckMap.position_other === '' && !this.checkPosition) {
+                this.infoCheckMap.position_other = '请输入正确格式的职位'
+              }
+              break
+            }
+        }
+      },
+      cancelForm () {
+        setTimeout(() => {
+          this.$dialog.confirm({
+            title: ' ',
+            message: '您可以通过剑鱼标讯提供的全国招投标数据自助导出功能,指定关键词、发布时间、地区或行业等筛选条件,以Excel表格的形式打包下载,精准获取所需数据。',
+            className: 'ent-search-dialog no-infor',
+            overlayClass: 'z-2030',
+            showCancelButton: false,
+            getContainer: '.perfect-info-group',
+            confirmButtonText: '数据自助导出',
+          }).then(function () {
+            location.href = '/front/wx_dataExport/toSieve'
+          }).catch(function () {
+            history.back()
+          });
+        },300)
+        setTimeout(() => {
+          const htmlclose = `<span class="infor-icon-close"></span>`
+          $('.no-infor .van-dialog__header').html(htmlclose)
+        },400)
+      },
+      submitForm () {
+        this.ajaxParams.name = this.infoMap.name
+        this.ajaxParams.phone = this.infoMap.phone
+        this.ajaxParams.mail = this.infoMap.email
+        this.ajaxParams.company = this.infoMap.company
+        this.ajaxParams.companyType = this.infoMap.companyType
+        this.ajaxParams.position = this.infoMap.position
+        if(this.setcodeShow) {
+          this.ajaxParams.code = this.infoMap.vercode
+        }
+        if (this.infoMap.position === '其他') {
+          this.ajaxParams.position = '其他/' + this.infoMap.position_other
+        }
+        this.ajaxParams.branch = this.infoMap.branch.indexOf('总裁') > -1 || this.infoMap.branch.indexOf('总经理') > -1 ?  '' : this.infoMap.branch
+        var _this = this
+        var loading = _this.showLoading()
+        $.ajax({
+          type: 'POST',
+          url: '/salesLeads/collectInfo',
+          contentType: "application/json;charset=utf-8",
+          data: JSON.stringify(_this.ajaxParams),
+          success: function(r) {
+            loading.clear()
+            if (r.error_msg === '' || r.data) {
+              if (r.activeHref!==""){
+                location.href = r.activeHref
+              }else{
+                location.href = "/"
+              }
+              // _this.commitshow = true
+            } else {
+              _this.showToast(r.error_msg || '提交失败')
+            }
+          },
+          error: function(err) {
+            loading.clear()
+            _this.showToast('提交失败')
+          }
+        })
+      },
+      showLoading: function () {
+        var loading = this.$toast.loading({
+          duration: 0,
+          forbidClick: true,
+          message: '提交中...',
+        })
+        return loading
+      },
+      showToast: function (message) {
+        this.$toast({
+          duration: 1500,
+          forbidClick: true,
+          message: message,
+        })
+      }
+    }
+  }
+  var vPerfect = new Vue(vNode)
+</script>
+<script>
+    $(function () {
+        $("#perfect-info-page").on('click tap', '.infor-icon-close', function(e) {
+            e.stopPropagation()
+            history.back()
+        })
+    })
+</script>
+{{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 12 - 5
src/web/templates/frontRouter/wx/userMerge/free/confirm.html

@@ -247,11 +247,18 @@
                     this.confirmRequest(this.successCallback)
                 },
                 successCallback: function () {
-                    if(history && history.length<=2){
-                      location.replace("/jy_mobile/tabbar/me")
-                    }else{
-                      history.go(-2)
-                    }
+                  // 展会留资业务支持
+                  var goLink = utils.getParam('toDirect')
+                  if (goLink) {
+                    location.replace(goLink)
+                    return
+                  }
+                  // 原合并后业务逻辑
+                  if(history && history.length<=2){
+                    location.replace("/jy_mobile/tabbar/me")
+                  }else{
+                    history.go(-2)
+                  }
                 },
                 noticeHandle: function(){
                     var html = '<p>合并须知:</p><p>1.账号合并为手机号和微信号进行合并绑定,两个账号内功能、剑鱼币、优惠券等均可合并。</p><p>2.账号信息将根据您选择的账号进行保留,未被选择的账号信息将被舍弃,请慎重选择。</p><p>3.账号合并后,您使用微信或手机号进行登录,将看到并使用相同的功能设置,共同使用账号内的功能、剑鱼币、优惠券等。</p><p>4.如您选择确认合并,则默认为您已阅读并同意此须知。</p>'

+ 2 - 2
src/web/templates/frontRouter/wx/userMerge/free/index.html

@@ -185,9 +185,9 @@
                     }
                 },
                 nextStep: function () {
-                    var url = './confirm'
+                    var url = './confirm' + '?toDirect=' + utils.getParam('toDirect')
                     if (this.token) {
-                        url = './confirm?token=' + this.token
+                        url = './confirm?token=' + this.token + '&toDirect=' + utils.getParam('toDirect')
                     }
                     location.href = url
                 },