Pārlūkot izejas kodu

Merge branch 'dev4.5.8.9' of http://192.168.3.207:8080/qmx/jy into dev4.5.8.9

yangfeng 3 gadi atpakaļ
vecāks
revīzija
75b1a359e6
29 mainītis faili ar 2069 papildinājumiem un 22 dzēšanām
  1. 317 0
      src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_partner.html
  2. 157 0
      src/jfw/modules/app/src/web/templates/frontRouter/partner/sess/index.html
  3. 12 12
      src/jfw/modules/bigmember/src/entity/portrait.go
  4. 2 2
      src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go
  5. 5 5
      src/jfw/modules/bigmember/src/entity/portraitWinnerSearch.go
  6. 1 1
      src/web/staticres/common-module/order-list/js/order-list-config.js
  7. 218 0
      src/web/staticres/common-module/partner/css/partner.css
  8. BIN
      src/web/staticres/common-module/partner/image/A_01.jpg
  9. BIN
      src/web/staticres/common-module/partner/image/A_02.jpg
  10. BIN
      src/web/staticres/common-module/partner/image/A_03.jpg
  11. BIN
      src/web/staticres/common-module/partner/image/A_04.jpg
  12. BIN
      src/web/staticres/common-module/partner/image/A_05.jpg
  13. BIN
      src/web/staticres/common-module/partner/image/B_01.jpg
  14. BIN
      src/web/staticres/common-module/partner/image/B_02.jpg
  15. BIN
      src/web/staticres/common-module/partner/image/B_03.jpg
  16. BIN
      src/web/staticres/common-module/partner/image/B_04.jpg
  17. BIN
      src/web/staticres/common-module/partner/image/B_05.jpg
  18. 399 0
      src/web/staticres/common-module/pc-dialog/css/leave-partner-dialog.css
  19. BIN
      src/web/staticres/frontRouter/pc/partner/image/part1.png
  20. BIN
      src/web/staticres/frontRouter/pc/partner/image/part2.png
  21. BIN
      src/web/staticres/frontRouter/pc/partner/image/part3.png
  22. BIN
      src/web/staticres/frontRouter/pc/partner/image/part4.png
  23. 393 0
      src/web/staticres/js/pc-collect-partner-info.js
  24. 1 0
      src/web/templates/common/pcbottom.html
  25. 5 1
      src/web/templates/common/pchead.html
  26. 147 0
      src/web/templates/frontRouter/pc/partner/free/index.html
  27. 333 0
      src/web/templates/frontRouter/wx/bigmember/free/perfect_info_partner.html
  28. 78 0
      src/web/templates/frontRouter/wx/partner/sess/index.html
  29. 1 1
      src/web/templates/pc/myOrder.html

+ 317 - 0
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_partner.html

@@ -0,0 +1,317 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+
+<head>
+    <title>完善信息</title>
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+
+    <!--S-当前页必定需要预加载的资源-->
+    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
+    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css'/>
+    <link rel="preload" as="style"
+          href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_info_collect.css?v={{Msg "seo" "version"}}'/>
+    <!--E-当前页必定需要预加载的资源-->
+
+
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
+    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css'/>
+    <link rel="stylesheet"
+          href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/perfect-info/index.css?v={{Msg "seo" "version"}}'/>
+    <!--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" id="perfect-info-page" v-cloak>
+        <div class="j-container">
+            <div class="j-main info-collect">
+                <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 v-model.trim="infoMap.phone" label="手机号" @focus="infoCheckMap.phone = ''"
+                                   @blur="getCheckMap('phone')" :error-message="infoCheckMap.phone" required
+                                   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="entOnChange('blur')" @focus="infoCheckMap.company = ''"
+                                   :error-message="infoCheckMap.company" v-model.trim="infoMap.company" label="公司名称" placeholder="请输入公司名称"></van-field>
+                    </div>
+                </div>
+            </div>
+            <div class="j-footer">
+                <div class="j-button-group">
+                    <button class="j-button-cancel" @click="cancelForm">暂不提供</button>
+                    <button class="j-button-confirm" :disabled="isSubmitDisabled" @click="submitForm">提交</button>
+                </div>
+            </div>
+        </div>
+        <van-popup v-model="commitshow" class="commitdialog" :close-on-click-overlay="overlayShow" style="height: 5.6rem;">
+          <div class="j-container">
+            <div class="j-main com-main" style="padding: .48rem .56rem;">
+              <div class="img-duihao">
+                <img src="/jyapp/images/choose.png" alt="">
+              </div>
+              <div class="commit_success">提交成功</div>
+              <div class="commit_tip" style="text-align: left;">我们的客户经理会在24小时内尽快与您联系。</div>
+              <div class="commit_know">
+                <button class="commit_btn" @click="history.back()">我知道了</button>
+              </div>
+            </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>
+{{include "/big-member/commonjs.html"}}
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+
+<script>
+  var vNode = {
+    delimiters: ['@@', '@@'],
+    el: '#perfect-info-page',
+    data: {
+      sendShow: true, // 倒计时切换
+      vercodecor: false, // 验证码是否正确
+      commitshow: false, // 提交成功显示弹窗
+      overlayShow: false,
+      searchList: [],
+      isAssociateShow: false,
+      isAssociateUpTime: -1,
+      infoMap: {
+        name: '',
+        phone: '',
+        company: ''
+      },
+      infoCheckMap: {
+        name: '',
+        phone: '',
+        company: ''
+      },
+      isEchoInfoLoading: true,
+      ajaxParams: {
+        "name": "",
+        "phone": "",
+        "source": utils.getParam('source'), // 推送消息点进来的 
+        "company": ""
+      }
+    },
+    mounted() {
+      // source=message_bigmember app消息大会员留资地
+      // source=message_structeddata app消息结构化数据留资地
+      this.ajaxGetEchoInfo()
+    },
+    computed: {
+      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|7|8]\d{9}$|^19[8-9]\d{8}$|^166\d{8}|^15[0-3|5-9]\d{8}|^14[5|7]\d{8}$/.test(this.infoMap.phone)
+      },
+      checkEntName () {
+        if (this.infoMap.company.trim().length > 50 || this.infoMap.company.trim().length < 2) {
+          return false
+        }
+        return true
+      },
+      isSubmitDisabled () {
+        return !this.checkName || !this.checkPhone
+      },
+    },
+    methods: {
+      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()
+        })
+      },
+      ajaxGetEchoInfo() {
+        this.isEchoInfoLoading = true
+        let _this = this
+        this.ajaxFn('/salesLeads/echoInfo', {}, function (r) {
+          this.isEchoInfoLoading = false
+          if (r && r.error_msg === '' && r.data) {
+            if(r.data.phone != '') {
+              _this.vercodecor = true
+              _this.setcodeShow = false
+              sessionStorage.setItem('strud_phone', r.data.phone)
+            } else {
+              _this.setcodeShow = true
+            }
+            this.setEchoInfo(r.data)
+          }
+        })
+      },
+      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 }, function (r) {
+          if (r && r.error_msg === '' && r.data) {
+            this.isAssociateShow = true
+            this.searchList = r.data
+          }
+        }, true)
+      },
+      setEchoInfo (data) {
+        if (data.name) {
+          this.setCheckForData('name', 'name', data.name)
+        }
+        if (data.phone) {
+          this.setCheckForData('phone', 'phone', data.phone)
+        }
+        if (data.company) {
+          this.setCheckForData('company', 'company', data.company)
+        }
+  
+      },
+      setCheckForData (aKey, iKey, cKey, label) {
+        this.ajaxParams[aKey] = cKey
+        this.infoMap[iKey] = cKey
+        if (label) {
+          var checkDatas = [cKey]
+        }
+      },
+      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 '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
+            }
+        }
+      },
+      cancelForm () {
+        history.back()
+      },
+      submitForm () {
+        this.ajaxParams.name = this.infoMap.name
+        this.ajaxParams.phone = this.infoMap.phone
+        this.ajaxParams.company = this.infoMap.company
+        this.ajaxParams.platform  = 'app'
+        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) {
+              _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>

+ 157 - 0
src/jfw/modules/app/src/web/templates/frontRouter/partner/sess/index.html

@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+<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 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">
+	<title>产品销售合作</title>
+	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css" />
+  <link href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+  <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/base.css?v={{Msg "seo" "version"}}">
+  <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/weui.min.css?v={{Msg "seo" "version"}}">
+	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/partner/css/partner.css?v={{Msg "seo" "version"}}">
+  <style>
+    .app-layout-header{
+      border-bottom: 0px!important;
+    }
+    .header-transparent>.app-back{
+      color:#fff !important;
+    }
+    .jy-app-header .subreport_title{
+      font-size: .36rem;
+    }
+  </style>
+</head>
+
+<body>
+<div class="app-layout-header jy-app-header header-transparent">
+	<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+  <span class="subreport_title">产品销售合作</span>
+</div>
+<div class="app-layout-content-b">
+	<div id="app">
+		<div class="j-main partner-main">
+			<div class="structured_top">
+				<div class="str_title">
+					<img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/partner/image/A_02.jpg' alt="">
+				</div>
+			</div>
+			<div class="str_what question" style="width:100%">
+				<img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/partner/image/A_03.jpg' alt="">
+			</div>
+
+			<div class="advantage" style="margin-top: -1px;">
+				<img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/partner/image/A_04.jpg' alt="">
+				<img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/partner/image/A_05.jpg' onclick="location.href = '/jyapp/frontPage/bigmember/free/perfect_info_partner?source=partner_recruit_page'" alt="">
+			</div>
+			<div class="dowhat">
+				<img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/partner/image/B_01.jpg' alt="">
+			</div>
+			<div class="module buy-discount">
+				<img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/partner/image/B_02.jpg' alt="">
+			</div>
+			<div>
+        <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/partner/image/B_03.jpg' alt="">
+        <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/partner/image/B_04.jpg' alt="">
+        <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/partner/image/B_05.jpg' alt="">
+			</div>
+		</div>
+		<div class="j-button-group">
+			<button onclick="location.href = '/jyapp/frontPage/bigmember/free/perfect_info_partner?source=partner_recruit_page'"  class="j-button-confirm" id="j_confirm">申请加入</button>
+		</div>
+	</div>
+</div>
+</body>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/js/jquery.min.js'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/js/weui.min.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/js/imageViewer.min.js'></script>
+{{include "/common/js.html"}}
+<script>
+	// 监听页面滚动
+	var addEvent = (function(){
+		if(window.addEventListener){
+			return function(elm, type, handle){
+			elm.addEventListener(type, handle, false);
+		}
+		}
+		if(window.attachEvent){
+			return function(elm, type, handle){
+				elm.attachEvent('on' + type, handle);
+			}
+		}
+	})();
+
+	var div = document.querySelector('.j-main');
+	addEvent(div,'scroll', function(){
+		var scrollHeight = div.scrollHeight;
+		var scrollTop    = div.scrollTop;
+		var height       = div.offsetHeight;
+		if(scrollTop>=80) {
+			$('.jy-app-header').removeClass('header-transparent')
+		}else {
+			$('.jy-app-header').addClass('header-transparent')
+		}
+	});
+
+	// 图片预览,支持缩放
+	var imageViewer = '';
+	function initImageViewer(images) {
+		function getElement(index) {
+			return document.getElementById('img' + (index + 1));
+		}
+		imageViewer = new ImageViewer(images, {
+			container: 'body',
+			enableScale: true,
+			enableTapClose: true,
+			duration: 0,
+			startIndex: 0,
+			fadeInFn: getElement,
+			fadeOutFn: getElement,
+		});
+	}
+	var images = [
+		{
+			url: '/jyapp/structuredata/image/jiegouhuahou.png',
+		},
+	];
+	initImageViewer(images)
+	// 点击图片预览
+	$('.sketch_map').on('click', function() {
+		imageViewer.open(0)
+		var ball = '<div class="ball-clip-rotate"><div class="ball"></div></div>';
+		$('.image-viewer .image-body').append(ball);
+			// 在页面上创建dom后对图片是否加载完成进行监听
+			$(imageViewer.itemList[1]).find('img').on('load', function () {
+			$('.image-viewer .image-body > .ball-clip-rotate').remove();
+			console.log('image loaded');
+		})
+	})
+
+	$('.fanhui').on('click', function() {
+		history.go(-1)
+	})
+	function click_view(){
+		var loading = weui.loading('loading', {
+			className: 'custom-classname'
+		});
+		setTimeout(function () {
+			loading.hide(function() {
+				window.location.href="/jyapp/structed/getpreview"
+			});
+		});
+	}
+  //拨打电话
+  function tel(phone){
+    JyObj.callPhone(phone);
+  }
+</script>
+<!--百度统计end-->
+{{include "/common/baiducc.html"}}
+</html>

+ 12 - 12
src/jfw/modules/bigmember/src/entity/portrait.go

@@ -151,9 +151,9 @@ func (this *Portrait) GetWinnerNewMsg(entId string, start, limit int) ([]map[str
 	if entId == "" {
 		return nil, errors.New("企业名称异常")
 	}
-	if start > PortraitNewMegsLimit || start+limit > PortraitNewMegsLimit {
-		return nil, errors.New("超出检索限制")
-	}
+	//if start > PortraitNewMegsLimit || start+limit > PortraitNewMegsLimit {
+	//	return nil, errors.New("超出检索限制")
+	//}
 	return GetWinnerNewProject(entId, start, limit), nil
 }
 
@@ -163,9 +163,9 @@ func (this *Portrait) GetWinnerNewCount(entId string) int64 {
 		return -1
 	}
 	count := GetWinnerNewProjectCount(entId)
-	if count > PortraitNewMegsLimit {
-		count = PortraitNewMegsLimit
-	}
+	//if count > PortraitNewMegsLimit {
+	//	count = PortraitNewMegsLimit
+	//}
 	return count
 }
 
@@ -206,9 +206,9 @@ func (this *Portrait) GetBuyerNewMsg(buyer string, start, limit int, hasPower bo
 	if buyer == "" {
 		return nil, errors.New("企业名称异常")
 	}
-	if start > PortraitNewMegsLimit || start+limit > PortraitNewMegsLimit {
-		return nil, errors.New("超出检索限制")
-	}
+	//if start > PortraitNewMegsLimit || start+limit > PortraitNewMegsLimit {
+	//	return nil, errors.New("超出检索限制")
+	//}
 	return GetBuyerNewProject(buyer, start, limit, hasPower), nil
 }
 
@@ -226,9 +226,9 @@ func (this *Portrait) GetBuyerNewCount(buyer string) int64 {
 		return -1
 	}
 	count := GetBuyerNewProjectCount(buyer)
-	if count > PortraitNewMegsLimit {
-		count = PortraitNewMegsLimit
-	}
+	//if count > PortraitNewMegsLimit {
+	//	count = PortraitNewMegsLimit
+	//}
 	return count
 }
 

+ 2 - 2
src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go

@@ -27,7 +27,7 @@ const (
 //采购单位最新中标动态查询
 func GetBuyerNewProject(buyer string, start, size int, hasPower bool) []map[string]interface{} {
 	defer qutil.Catch()
-	res := elastic.GetPage("projectset", "projectset", `{"TERM_buyer":"`+buyer+`"}`, `{"firsttime":-1}`, buyerNewProjectSearchFields, start, size)
+	res := elastic.GetPage("projectset", "projectset", fmt.Sprintf(`{"TERM_buyer":"%s","$and":[{"firsttime":{"$gte":%d}}]}`, buyer, time.Now().AddDate(-5, 0, 0).Unix()), `{"firsttime":-1}`, buyerNewProjectSearchFields, start, size)
 	if res == nil || len(*res) == 0 {
 		return []map[string]interface{}{}
 	}
@@ -57,7 +57,7 @@ func GetBuyerNewProject(buyer string, start, size int, hasPower bool) []map[stri
 //采购单位最新中标动态数量查询
 func GetBuyerNewProjectCount(buyer string) int64 {
 	defer qutil.Catch()
-	return elastic.Count("projectset", "projectset", `{"query":{"bool":{"must":[{"term": {"buyer": "`+buyer+`"}}]}}}`)
+	return elastic.Count("projectset", "projectset", fmt.Sprintf(`{"query":{"bool":{"must":[{"term": {"buyer": "%s"}},{"range":{"firsttime":{"gte":%d}}}]}}}`, buyer, time.Now().AddDate(-5, 0, 0).Unix()))
 }
 
 //获取采购单位基本信息

+ 5 - 5
src/jfw/modules/bigmember/src/entity/portraitWinnerSearch.go

@@ -31,13 +31,13 @@ func GetWinnerIdByName(entName string) (entId string) {
 	return
 }
 
-//中标企业最新中标动态查询【若id不存在,则用名字查询】
+//GetWinnerNewProject 中标企业最新中标动态查询【若id不存在,则用名字查询】(近五年)
 func GetWinnerNewProject(entId string, start, size int) []map[string]interface{} {
 	defer qutil.Catch()
 	if entId == "" {
 		return []map[string]interface{}{}
 	}
-	newData := elastic.GetPage("bidding", "bidding", `{"TERM_entidlist":"`+entId+`"}`, `{"publishtime":-1}`, newProject_fields, start, size)
+	newData := elastic.GetPage("bidding", "bidding", fmt.Sprintf(`{"TERM_entidlist":"%s","$and":[{"publishtime":{"$gte":%d}}]}`, entId, time.Now().AddDate(-5, 0, 0).Unix()), `{"publishtime":-1}`, newProject_fields, start, size)
 	if newData == nil || len(*newData) == 0 {
 		return []map[string]interface{}{}
 	}
@@ -70,10 +70,10 @@ func GetWinnerNewProject(entId string, start, size int) []map[string]interface{}
 	return *newData
 }
 
-//企业中标-中标动态数量
+//GetWinnerNewProjectCount 企业中标-中标动态数量(近五年)
 func GetWinnerNewProjectCount(entId string) int64 {
 	defer qutil.Catch()
-	return elastic.Count("bidding", "bidding", `{"query":{"bool":{"must":[{"term": {"entidlist": "`+entId+`"}}]}}}`)
+	return elastic.Count("bidding", "bidding", fmt.Sprintf(`{"query":{"bool":{"must":[{"term": {"entidlist": "%s"}},{"range":{"publishtime":{"gte":%d}}}]}}}`, entId, time.Now().AddDate(-5, 0, 0).Unix()))
 }
 
 //项目联系方式 查询最新200条记录 筛选获取联系方式
@@ -91,7 +91,7 @@ func GetProjectContactsMsg(buyerName, entId string) (list []map[string]interface
 		return list
 	}
 	searchSql := fmt.Sprintf(`{"query":{"bool":{"must":[%s]}},"_source":["_id","zbtime","projectname","list"],"sort":[{"zbtime":"desc"}],"size":200}`, strings.Join(musts, ","))
-	fmt.Println("searchSql", searchSql)
+	//fmt.Println("searchSql", searchSql)
 	projectList := elastic.Get("projectset", "projectset", searchSql)
 	if projectList == nil || len(*projectList) == 0 {
 		return list

+ 1 - 1
src/web/staticres/common-module/order-list/js/order-list-config.js

@@ -101,7 +101,7 @@ var assetsConf = {
     },
     cantInvoke: {  // 开发票超时(不能开发票)
       wx: '/front/invoice/cantInvoice',
-      app: '/jyapp/front/invoice/cantInvoice'
+      app: '/jyapp/front/cantInvoice'
     },
     lookInvoice: {
       wx: '/front/invoice/check_invoice.html',

+ 218 - 0
src/web/staticres/common-module/partner/css/partner.css

@@ -0,0 +1,218 @@
+body,
+html {
+  width: 100%;
+  height: 100%;
+}
+
+
+#app {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  position: relative;
+  background: #fff;
+}
+
+#app .j-main.partner-main {
+  width: 100%;
+  height: 100%;
+  flex: 1;
+  overflow: auto;
+  margin-top: -80px;
+}
+
+#app .j-main.partner-main .structured_top {
+  width: 100%;
+  /* height: 8rem; */
+  overflow: hidden;
+}
+
+#app .j-main.partner-main .structured_top .str_title {
+  width: 100%;
+  margin-top: 1.44rem;
+}
+
+#app .j-main.partner-main .structured_top .str_title img {
+  width: 100%;
+  height: 100%;
+}
+
+
+
+#app .j-main.partner-main .str_what {
+  /* padding: 0 0.24rem; */
+  margin-top: -1px;
+}
+
+
+#app .j-button-group {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  width: 100%;
+  height: 1.34rem;
+  padding: 0.16rem 0.32rem 0.24rem;
+  background-color: #fff;
+}
+
+#app .j-button-group .j-button-cancel {
+  height: .8rem;
+  background: #EDEFF2;
+  color: #171826;
+}
+
+#app .j-button-group .j-button-cancel .phone_num {
+  font-size: .28rem;
+  color: #5f5e64;
+}
+
+#app .j-button-group .j-button-cancel .phone_icon {
+  margin-right: .16rem;
+  display: flex;
+  width: .32rem;
+  height: .32rem;
+  background: url("../image/phone.png");
+  background-size: .32rem .32rem;
+}
+
+#app .j-button-group .j-button-confirm {
+  height: .8rem;
+  background: #2abed1;
+  color: #fff;
+}
+
+.jy-app-header.header-transparent {
+  position: absolute;
+  width: 100%;
+  background: url('/common-module/partner/image/A_01.jpg') no-repeat;
+  background-size: 100% 100%;
+  z-index: 999;
+}
+
+.jy-app-header.header-transparent .subreport_title {
+  font-size: .36rem;
+  color: #ffffff;
+}
+
+.jy-app-header.header-transparent .fanhui {
+  width: 0.96rem;
+  height: 0.96rem;
+/*  font-size: 0.36rem;*/
+  color: #fff;
+font-size:19.5px;
+}
+
+#app .j-button-group .j-button-confirm,
+#app .j-button-group .j-button-cancel {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 100%;
+  font-size: 0.32rem;
+  text-align: center;
+  border-radius: 0.16rem;
+}
+
+@keyframes ballRotate {
+  0% {
+    transform: rotate(0);
+  }
+  50% {
+    transform: rotate(180deg);
+  }
+  100% {
+    transform: rotate(360deg);
+  }
+}
+
+.ball-clip-rotate {
+  position: absolute;
+  left: 50%;
+  top: 50%;
+  z-index: 2;
+  transform: translate(-50%, -50%);
+}
+
+.ball-clip-rotate .ball {
+  display: inline-block;
+  width: 26px;
+  height: 26px;
+  border-radius: 50%;
+  border: 2px solid #fff;
+  border-bottom-color: transparent;
+  background: 0 0;
+  -webkit-animation: ballRotate 0.75s 0s linear infinite;
+  animation: ballRotate 0.75s 0s linear infinite;
+}
+
+.image-viewer .viewer-wrapper {
+  position: relative;
+  z-index: 6;
+}
+
+.image-viewer .viewer {
+  transform: translate3d(0px, 4rem, 0px) !important;
+}
+
+.image-viewer .image-body .ball-clip-rotate {
+  z-index: 3;
+}
+
+.module {
+  /* margin-top: .32rem;
+  width: 100%;
+  padding: 0 .24rem; */
+}
+
+.module-content {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  width: 100%;
+  height: 100%;
+  background: #fff;
+  border-radius: .24rem;
+}
+
+.buy-discount .module-content {
+  padding: .6rem 0;
+}
+.buy-discount .s-img {
+  display: block;
+  width: 100%;
+}
+.buy-discount .how-to-buy {
+  margin: 0 .8rem;
+}
+.buy-discount .discount {
+  margin: .72rem auto .8rem;
+  width: 3.9rem;
+}
+.buy-discount .c-list-item {
+  display: flex;
+  align-items: center;
+}
+.buy-discount .c-list-item:not(:last-of-type) {
+  margin-bottom: .32rem;
+}
+.buy-discount .c-list-item .c-l-item-text {
+  margin-left: .16rem;
+  line-height: .4rem;
+}
+.buy-discount .call-phone {
+  margin-top: .8rem;
+  display: flex;
+  padding: .16rem .48rem;
+  align-items: center;
+  border-radius: 37px;
+  color: #fff;
+  background: linear-gradient(180deg,#ffa51f, #f9781b 100%);
+}
+.buy-discount .icon-phone {
+  margin-right: .12rem;
+}
+.color-red {
+  color: #FB493E;
+}

BIN
src/web/staticres/common-module/partner/image/A_01.jpg


BIN
src/web/staticres/common-module/partner/image/A_02.jpg


BIN
src/web/staticres/common-module/partner/image/A_03.jpg


BIN
src/web/staticres/common-module/partner/image/A_04.jpg


BIN
src/web/staticres/common-module/partner/image/A_05.jpg


BIN
src/web/staticres/common-module/partner/image/B_01.jpg


BIN
src/web/staticres/common-module/partner/image/B_02.jpg


BIN
src/web/staticres/common-module/partner/image/B_03.jpg


BIN
src/web/staticres/common-module/partner/image/B_04.jpg


BIN
src/web/staticres/common-module/partner/image/B_05.jpg


+ 399 - 0
src/web/staticres/common-module/pc-dialog/css/leave-partner-dialog.css

@@ -0,0 +1,399 @@
+.fl{
+  float: left;
+}
+.fr{
+  float: right;
+}
+/* 滚动条样式 */
+.partner-dialog ::-webkit-scrollbar {
+  /*滚动条整体样式*/
+  width: 6px;
+  height: 1px;
+}
+.partner-dialog ::-webkit-scrollbar-thumb {
+  /*滚动条里面小方块*/
+  border-radius: 10px;
+  background: #e0e0e0;
+}
+.partner-dialog ::-webkit-scrollbar-track {
+  /*滚动条里面轨道*/
+  box-shadow: inset 0 0 5px #fff;
+  border-radius: 10px;
+  background: transparent;
+}
+#collectUserInfoDialog.partner-dialog .mask{
+  position: fixed;
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: #000000;
+  opacity: 0.6;
+  z-index: 999;
+}
+#collectUserInfoDialog.partner-dialog .dialog-container{
+  position: fixed;
+  left: 50%;
+  top: 50%;
+  padding-top: 32px;
+  width: 532px;
+  background: #fff;
+  border-radius: 8px;
+  transform: translate(-50%,-50%);
+  z-index: 1000;
+  box-sizing: border-box;
+  /* overflow-y: auto; */
+}
+#collectUserInfoDialog.partner-dialog .dialog-header{
+  color: #1D1D1D;
+  font-size: 18px;
+  line-height: 28px;
+  text-align: center;
+}
+#collectUserInfoDialog.partner-dialog .dialog-content{
+  margin-top: 20px;
+  padding: 0 32px 32px;
+}
+#collectUserInfoDialog.partner-dialog .form-title{
+  font-size: 14px;
+  line-height: 22px;
+  color: #2CB7CA;
+}
+#collectUserInfoDialog.partner-dialog .form-main{
+  margin: 10px 0 10px;
+}
+#collectUserInfoDialog.partner-dialog .short-control{
+  width: calc(50% - 16px);
+}
+#collectUserInfoDialog.partner-dialog .long-control{
+  width: 100%;
+}
+
+#collectUserInfoDialog.partner-dialog .item-input{
+  width: calc(100% - 90px);
+}
+.code-input .el-input-group__append{
+  border: 0;
+  background-color: transparent;
+  padding: 0 0 0 14px;
+  cursor: pointer;
+  color: #2CB7CA;
+  text-align: center;
+}
+.code-input .el-button.is-disabled, 
+.code-input .el-button.is-disabled:focus, 
+.code-input .el-button.is-disabled:hover{
+  border: 0;
+  color: #C0C4CC;
+  background-color: transparent;
+}
+.code-input .el-input-group--append .el-input__inner{
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+#collectUserInfoDialog.partner-dialog .company-result{
+  position: absolute;
+  width: calc(100% - 90px);
+  top: 38px;
+  left: 88px;
+  height: auto;
+  background-color: #fff;
+  border: 1px solid #2CB7CA;
+  z-index: 100;
+  border-radius: 4px;
+}
+#collectUserInfoDialog.partner-dialog .company-list{
+  padding: 0 16px;
+  height: 30px;
+  line-height: 30px;
+  font-size: 14px;
+  color: #1D1D1D;
+  cursor: pointer;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
+}
+#collectUserInfoDialog.partner-dialog .company-list:hover{
+  background: #ECECEC;
+}
+#collectUserInfoDialog.partner-dialog .short-input{
+  width: calc(50% - 90px);
+}
+#collectUserInfoDialog.partner-dialog [data-short-input]{
+  /* width: calc(240px - 16px); */
+  /* height: 36px; */
+  /* box-sizing: border-box; */
+  /* border-radius: 4px; */
+}
+#collectUserInfoDialog.partner-dialog [data-long-input]{
+  /* width: calc(600px - 16px); */
+  height: 36px;
+  border: 1px solid #E0E0E0;
+  box-sizing: border-box;
+  border-radius: 4px;
+}
+#collectUserInfoDialog.partner-dialog .agree-service{
+  text-align: center;
+}
+#collectUserInfoDialog.partner-dialog .agree-service .el-checkbox__label, 
+#collectUserInfoDialog.partner-dialog .agree-service .el-checkbox__input.is-checked+.el-checkbox__label{
+  color: #686868;
+}
+#collectUserInfoDialog.partner-dialog .dialog-footer{
+  text-align: center;
+}
+#collectUserInfoDialog.partner-dialog .cancel-btn{
+  width: 132px;
+  height: 36px;
+  line-height: 36px;
+  padding: 0;
+  border-radius: 6px;
+}
+#collectUserInfoDialog.partner-dialog .submit-btn{
+  width: 132px;
+  height: 36px;
+  padding: 0;
+  color: #fff;
+  line-height: 36px;
+  background: #2CB7CA;
+  border-radius: 6px;
+  border: 1px solid #2CB7CA;
+}
+#collectUserInfoDialog.partner-dialog .submit-btn:hover{
+  color: #fff;
+  border-color: #2CB7CA;
+  background: #2CB7CA;
+}
+/* element-ui reset */
+#collectUserInfoDialog.partner-dialog .company-type > .el-form-item__label,
+#collectUserInfoDialog.partner-dialog .company-type > .el-form-item__content{
+  line-height: 22px;
+}
+.el-form-item{
+  margin-bottom: 14px;
+}
+.el-form-item__error{
+  top: 90%;
+}
+.el-form-item__label{
+  width: 80px;
+  padding: 0;
+  margin-right: 8px;
+  color: #686868;
+  margin-bottom: 0!important;
+  font-weight: normal!important;
+}
+.el-cascader-panel{
+  min-width: 240px;
+}
+.el-cascader{
+  line-height: 36px;
+  border: 0;
+}
+#collectUserInfoDialog.partner-dialog .el-input__inner{
+  height: 36px;
+  line-height: 36px;
+  border-radius: 4px;
+}
+.el-cascader-menu{
+  min-width: 0;
+}
+.el-cascader-node{
+  padding: 0 28px 0 6px;
+}
+.el-cascader-node__prefix{
+  display: none;
+}
+.el-cascader-menu:last-child{
+  flex: 1;
+}
+.el-cascader__dropdown{
+  border-color: #2CB7CA;
+}
+.el-select-dropdown{
+  border-color: #2CB7CA;
+}
+.el-popper[x-placement^=bottom]{
+  margin-top: 0;
+}
+.el-popper[x-placement^=bottom] .popper__arrow{
+  display: none;
+}
+.el-input.is-active .el-input__inner, 
+.el-input__inner:focus{
+  border-color: #2CB7CA;
+}
+.el-select .el-input.is-focus .el-input__inner,
+.el-select .el-input__inner:focus{
+  border-color: #2CB7CA;
+}
+.el-cascader .el-input .el-input__inner:focus, 
+.el-cascader .el-input.is-focus .el-input__inner {
+  border-color: #2CB7CA;
+}
+.el-checkbox__input.is-focus{
+  border-color: #2CB7CA;
+}
+.el-checkbox{
+  margin-right: 12px;
+}
+.el-checkbox__label{
+  padding-left: 3px;
+  color: #1D1D1D;
+}
+.el-checkbox__input.is-checked+.el-checkbox__label{
+  color: #1D1D1D;
+}
+.el-checkbox__input.is-checked .el-checkbox__inner, 
+.el-checkbox__input.is-indeterminate .el-checkbox__inner{
+  background-color: #2CB7CA;
+  border-color: #2CB7CA;
+}
+.el-checkbox__inner:hover{
+  border-color: #DCDFE6;
+}
+.el-cascader-node.in-active-path, .el-cascader-node.is-active, .el-cascader-node.is-selectable.in-checked-path,
+.el-select-dropdown__item.selected{
+  color: #2CB7CA;
+}
+.el-button:focus, .el-button:hover{
+  background: #FFF;
+  border: 1px solid #DCDFE6;
+  color: #606266;
+}
+.el-textarea__inner{
+  /* height: 36px; */
+  min-height: 36px!important;
+}
+.el-select-dropdown__wrap{
+  max-height:124px;
+}
+
+
+#success-dialog .success-dialog-container{
+  position: fixed;
+  width: 380px;
+  top: 50%;
+  left: 50%;
+  padding: 32px;
+  transform: translateX(-50%) translateY(-50%);
+  background: #ffffff;
+  border-radius: 8px;
+  transition: all 2s linear;
+  z-index: 1038;
+}
+#success-dialog .success-title{
+  padding: 0 0 20px;
+  color: #1d1d1d;
+  line-height: 28px;
+  font-size: 18px;
+  text-align: center;
+}
+#success-dialog .success-content{
+  text-align: center;
+  color: #686868;
+  line-height: 22px;
+  font-size: 14px;
+}
+#success-dialog .success-footer{
+  padding: 32px 0 0;
+  text-align: center;
+}
+.mask {
+  position: fixed;
+  width: 100%;
+  height: 100%;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, .5);
+  z-index: 1031;
+}
+
+#success-dialog .custom-btn{
+  display: inline-block;
+  width: 132px;
+  height: 36px;
+  line-height: 36px;
+  background: #2cb7ca;
+  border-radius: 6px;
+  text-align: center;
+  color: #fff;
+  font-size: 16px;
+  cursor: pointer;
+  border: 0;
+}
+#success-dialog .dialog-adv{
+  margin-top: 32px;
+  width: 100%;
+  height: 64px;
+  background: #010302;
+  border-radius: 4px;
+  cursor: pointer;
+}
+#success-dialog .dialog-adv > img{
+  width: 100%;
+  height: 100%;
+}
+
+#collect-dialog .custom-btn:disabled{
+  opacity: 0.5;
+  cursor:not-allowed;
+}
+.el-popper ul li{
+  float: none!important;
+}
+
+#export-dialog .export-dialog-container{
+  position: fixed;
+  width: 380px;
+  top: 50%;
+  left: 50%;
+  padding: 32px;
+  transform: translateX(-50%) translateY(-50%);
+  background: #ffffff;
+  border-radius: 8px;
+  transition: all 2s linear;
+  z-index: 1038;
+}
+#export-dialog .export-content{
+  text-align: justify;
+  color: #686868;
+  line-height: 22px;
+  font-size: 14px;
+}
+#export-dialog .export-footer{
+  padding: 32px 0 0;
+  text-align: center;
+}
+#export-dialog .custom-btn{
+  display: inline-block;
+  width: 132px;
+  height: 36px;
+  line-height: 36px;
+  background: #2cb7ca;
+  border-radius: 6px;
+  text-align: center;
+  color: #fff;
+  font-size: 16px;
+  cursor: pointer;
+  border: 0;
+}
+#export-dialog .custom-btn:disabled{
+  opacity: 0.5;
+  cursor:not-allowed;
+}
+#export-dialog  .export-close{
+  position: absolute;
+  top: 8px;
+  right: 8px;
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGgSURBVHgB7djNbYMwFAdwA0cuGaEjpCNkBA4IIQ4Nk9QZIROgHhACDoyQEdoNwgjcEaJ+EUQqjT+fq1aq/1KUL/z8Cw4YQ4iLi8s/SFVVT8RyiqLYqWznyzZommYfBMF727avxFKgVhiG17Is97JtPSLBsacLe9x+red5NI7jE0Hi5nmmy9thHMdDlmUfRBfYdd2ONb6uuHsDBHKDWzNM0/Scpmn/qA13iKMoGlix8/Zz6MBkuDk4qHfm4SDCIYbUdU3ZXvsG0tmTAtwpSRIqaisFYpEYnDLQFInFaQF1kTZw2kBVpC2cEVCGXCCUWMDdahLD8JCPYoqDGAMhKkgMDoICQkRILA4ivViQFvD92eQ71aD2IO9o/dIB8gLDGKiCu3eCQBoBRee5BYSau1FAlZOwjQsMI6DODGELqQw0mb5sIJWAmLkVi5QCbUz8GKT30zgskjuTwKKJQY7EAg4CbdbT0KbeUbRGFi6a2GrrwF72WJwA2UMfeZ4PvDbS/yDcVWAL9wsr/Iad+Ncsw/0CONGKTjmqtyl+u6aLi8tfzCdfoXwUD1ES1QAAAABJRU5ErkJggg==) no-repeat center center;
+  background-size: contain;
+  cursor: pointer;
+}

BIN
src/web/staticres/frontRouter/pc/partner/image/part1.png


BIN
src/web/staticres/frontRouter/pc/partner/image/part2.png


BIN
src/web/staticres/frontRouter/pc/partner/image/part3.png


BIN
src/web/staticres/frontRouter/pc/partner/image/part4.png


+ 393 - 0
src/web/staticres/js/pc-collect-partner-info.js

@@ -0,0 +1,393 @@
+var temp = `
+  <div>
+    <div class="bid-dialog partner-dialog" id="collectUserInfoDialog" v-if="showForm">
+      <div class="mask"></div>
+      <div class="dialog-container">
+      <div style="width:100%;position:relative">
+        <span @click="closeForm" class="bid_icon-close" style="position:absolute;right: 16px;
+        top: -20px;
+        display: flex;
+        width: 20px;
+        height: 20px;
+        background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAYAAABXuSs3AAADvklEQVRogdWZz2scVRzAPzM9ZLvZhEpWS8smhFoPVRCbGBJI2wUPglFP9ib9A7z6b+hBL4UK4qFXvRStWlrIUgq7l7Ik/SFJSNtlbWtprG7WsCttvh7ejJlM5sebmTcb+oE57Mx+v+8zj3kz3/eeJSJk5BBwxjneBiaA14Bh5/o/wBOgBSwB14Ea8FemVkUkzTEkIp+KyM8i8lyS81xEfnFyDKVxSBpwUEQ+F5F2CtkwfndyHsxL/AMRWTMo7GfNacOYeEFEzuco7Oe802aklyXRg/Mw8CPwbqaBlJybwALwR9gfosSPAb8Cx817abEGvA/cC7oYJl5BvbYmc9PS4z5wGmj7L9gBfy4Cl9h/aVAOl1BOuwgS/wo4mbNQEk4CX/tP+h+VBeCnQRkl5EPgsvvDK14AbgGv74OUDuvAW0APdj8qnxEjLSIsLS1Rr9fp9XqZTfr9Po1Gg+XlZba3t+P+fsxxBHZ6fAh1R0ejIlutFo1GA4DR0VGq1SqFQiG19OLiIp1OB4CZmRkmJyfjwh45N9Bze/xsnDRAsVjEsiwAOp0OtVotVc/7pS3LolQq6YQeAT6BnUflnE5UuVxmbm4uk3yQ9OzsLOVyWTfFOVCPyiHgKXBAN7LdblOv13EHtu5jEyY9Pj6u2zTAC6BsA9Uk0gCVSiVxzxuSxnGt2sCppJFJ5Q1Ku5y2gRNpo3Xkc5AGOGEDb2TJECWfkzTAcUtE/gZGs2byD9iRkREANjc3AaPSAH9aEjOTSIJf3sWwNMC/QdVhaiqVCtPT03vOT01NmZQG1AeoYypZv99nZWVlz/nV1VUjtY2Hrg08NpEpaCCaKA9CeGoDq1mzhL09spYHEazZwG9ZMkS98tJ8YTW5a6MmxcalXXKSv56qyNKV9pK2MAvgBfCqjVo1vZqnNBjt+WvAM/c9fjFPacPyF2FnIvEDaloUS7PZzFR7BMk3m03d8EfA917xHvCFTuTw8HBqaRe/vJtTgy8d1z3LE7dRk9FQRIRWq0WpVGJsbCyxtJeNjQ263S4TExP/30QEu5YnXqYFoY/wuPmLrMvAtwPV0eM7fB0atFpbBG4A7wxIKo4mMA9seU8GlbVbwMfAgwFIxfEA5bLlvxBWj7eB91ADYr9Ydxz2rI1DuLgbOI/a1hg0N522Qzsubgb02EnwjUGpOC44bUbPE+J2tzzHgrxk24VBG7QPDQo/lJw3aL2HuyV+RdJviV+RDFvicfucOryCWn+cB95ElQyHAXfduIvar1wH7qC+ETXgWZZG/wOg1zl9PXpnVwAAAABJRU5ErkJggg==) no-repeat;
+        background-size: contain;
+        cursor: pointer;
+        "></span>
+      </div>
+        <div class="dialog-header fs18" v-if="dialogTitleTop" v-text="dialogTitleTop"></div>
+        <div class="dialog-header mt-4" v-if="dialogTitle" v-html="dialogTitle"></div>
+        <div class="dialog-content">
+          <div class="bid_icon-close"></div>
+          <el-form class="user-form" :model="form" :rules="rules" ref="ruleForm">
+            <!-- 基本信息 -->
+            <div class="basic clearfix">
+              <div class="form-main clearfix">
+                <div class="short-control fl">
+                  <el-form-item label="姓名 :" prop="name">
+                    <el-input v-model.trim="form.name" data-short-input placeholder="请输入姓名" @focus="nameFocus" required>
+                    </el-input>
+                  </el-form-item>
+                </div>
+                <div class="short-control fr">
+                  <el-form-item label="手机号 :" prop="phone">
+                    <el-input v-model.trim="form.phone" maxlength="11" @input="inputPhone" data-short-input  placeholder="请输入手机号" @focus="phoneFocus"></el-input>
+                  </el-form-item>
+                </div>
+                <div class="long-control" style="position: relative;">
+                  <el-form-item label="公司名称 :">
+                    <el-input 
+                    v-model.trim="form.companyName"
+                    data-long-input
+                    class=" company-name" 
+                    @focus="companyFocus"
+                    @input="searchCompany"
+                    placeholder="请输入公司名称">
+                    </el-input>
+                  </el-form-item>
+                  <div class="company-result" v-if="showSearchResult">
+                    <div class="company-list" v-for="item in companyList" :key="item" @click="selectCompany(item)" v-html="item"></div>
+                  </div>
+                </div>
+              </div>
+            </div>
+            <div class="dialog-footer">
+              <el-button class="submit-btn" @click="submitForm('ruleForm')">立即提交</el-button>
+            </div>
+          </el-form>
+        </div>
+      </div>
+    </div>
+    <div id="success-dialog" style="display: none;" v-show="showSuccess">
+      <div class="mask"></div>
+      <div class="success-dialog-container">
+        <div class="success-title">提交成功</div>
+        <div class="success-content">我们的客户经理会在24小时内尽快与您联系。</div>
+        <div class="success-footer">
+          <button type="button" class="custom-btn go-know" @click="showSuccess = false">我知道了</button>
+        </div>
+      </div>
+    </div>
+  </div>
+  `
+// 防抖
+function debounce(fn, delay) {
+  var timer
+  return function () {
+    var context = this
+    var args = arguments
+    clearTimeout(timer)
+    timer = setTimeout(function () {
+      fn.apply(context, args)
+    }, delay)
+  }
+}
+var vmPartner = new Vue({
+  el: '#vue-collect-partner-info',
+  delimiters: ['@@', '@@'],
+  template: temp,
+  data: function () {
+    var validName = function(rule,value,callback) {
+      if(value === '') {
+        return callback(new Error('姓名为必填项'));
+      } else {
+        if (value.length < 2) {
+          return callback(new Error('姓名填写不正确'));
+        }
+        callback();
+      }
+    }
+    var validPhone = function(rule,value,callback) {
+      var status = /^1[3456789]\d{9}$/.test(value)
+      if(value === '') {
+        return callback(new Error('手机号为必填项'));
+      } else if (!status) {
+        return callback(new Error('手机号填写不正确'));
+      } else {
+        callback();
+      }
+    }
+    var validCompany = function(rule,value,callback) {
+      if (value === '') {
+        return callback(new Error('公司名称为必填项'));
+      } else {
+        if (value.length < 2) {
+          return callback(new Error('公司名称至少输入2个字'));
+        } else {
+          callback();
+        }
+      }
+    }
+    return {
+      dialogTitleTop: '请留下您的信息,我们会尽快和您联系',
+      dialogTitle: '',
+      moldData: [{ // 公司类型数据
+        label: '公司',
+        value: '公司'
+      }, {
+        label: '个体经营者',
+        value: '个体经营者'
+      },{
+        label: '其他',
+        value: '其他'
+      }],
+      form: {
+        name: '', // 姓名
+        phone: '', // 手机号
+        companyName: '', // 公司名称
+      },
+      rules: {
+        name: [
+          {
+            required: true,
+            validator: validName,
+            trigger: 'blur'
+          }
+        ],
+        phone: [
+          {
+            required: true,
+            validator: validPhone,
+            trigger: 'blur'
+          }
+        ],
+        companyName: [
+          {
+            required: true,
+            validator: 'validCompany',
+            trigger: 'blur'
+          }
+        ],
+      },
+      showSearchResult: false,
+      companyList: [],
+      showForm: false,  // 显示表单填写弹框
+      showSuccess: false, // 显示提交成功弹框
+      isForce: false, // 是否强制
+      source: '', // 来源模块
+      curDom: null,
+      // 默认为隐藏,需要展示则需判断
+      moduleShow: {
+        mold: false,
+        scale: false,
+        business: true,
+        need: true,
+        agree: true,
+      },
+      sourceTitleMap: {
+        ent_portrait_: '请完善个人信息,免费试用企业画像分析,透视企业!',
+        buyer_portrait_: '请完善个人信息,免费试用采购单位画像分析,挖掘客户!',
+        member_attach: '请完善个人信息,免费下载附件,发现商机!',
+        member_freeuse: '请完善个人信息,免费体验大会员全部功能!',
+        pc_index_bottom_adv: '请留下联系方式,我们会尽快联系您并预约演示时间。您将免费体验:市场分析周报/月报、竞对实时监控和分析、业主采购趋势/客户分析等',
+        pc_analysis_detail_free: '请完善个人信息,辅助你做投标决策及报价参考!',
+        partner_recruit_page: ''
+      }
+    }
+  },
+  computed: {
+    showOtherJob: function() {
+      return this.form.job == '其他'
+    },
+    showCompany: function() {
+      return this.form.mold === '公司'
+    }
+  },
+  mounted() {
+    let that = this;
+    $(document).on('click', function (e) {
+        let dom = $('.company-name')[0];
+        if (dom) {
+            // 如果点击的区域不在自定义dom范围
+            if (!dom.contains((e.target))) {
+              that.showSearchResult = false
+            }
+        } 
+    })
+  },
+  beforeDestroy() {
+    $(document).off('click')
+  },
+  methods: {
+    closeForm: function() {
+      this.showForm = false
+    },
+    calcTitleText: function (source) {
+      if (!source) return
+      var text = ''
+      for (var key in this.sourceTitleMap) {
+        if (source.indexOf(key) !== -1) {
+          text = this.sourceTitleMap[key]
+          break
+        }
+      }
+      if (text) {
+        this.dialogTitle = text
+        this.dialogTitleTop = '欢迎体验剑鱼大会员'
+        for (var k in this.moduleShow) {
+          this.moduleShow[k] = false
+        }
+      }
+    },
+    nameFocus:function(){
+      this.$refs['ruleForm'].clearValidate(['name']);
+    },
+    phoneFocus:function(){
+      this.$refs['ruleForm'].clearValidate(['phone']);
+    },
+    mailFocus:function(){
+      this.$refs['ruleForm'].clearValidate(['mail']);
+    },
+    // 公司名称获取焦点时
+    companyFocus: function() {
+      this.$refs['ruleForm'].clearValidate(['companyName']);
+      this.getResult(this.form.companyName)
+    },
+    otherFocus:function() {
+      this.$refs['ruleForm'].clearValidate(['job','otherJob']);
+    },
+    // 是否留资
+    isNeedSubmit: function(source, callback, dom) {
+      /*
+        三级页-阅读原文	article_original
+        三级页-收藏	article_collection
+        大会员落地页-免费体验	member_freeuse
+      */
+      this.calcTitleText(source)
+      this.source = source
+      var _this = this
+      $.ajax({
+        type:'POST',
+        url:'/salesLeads/retainedCapital',
+        data: {
+          source: source
+        },
+        success:function (res) {
+          if (res.data) {
+            window.isRetained = res.data.retainedCapital
+            if (res.data.retainedCapital) {
+              _this.showForm = true
+              _this.getOldInfo()
+              _this.curDom = dom
+            } else {
+              callback && callback()
+            }
+            _this.isForce = res.data.fource
+          }
+        }
+      })
+    },
+    // 表单提交事件
+    submitForm: function(formName) {
+      var _this = this
+      this.$refs[formName].validate(function (valid) {
+        if (valid) {
+          _this.formAjax(_this.source)
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    // 表单提交请求
+    formAjax: function(source) {
+      var params = {
+        source: source,
+        name: this.form.name,
+        phone: this.form.phone,
+        company: this.form.companyName, // 公司名称
+        platform: "pc",
+      }
+      var _this = this
+      $.ajax({
+        type:'POST',
+        url:'/salesLeads/collectInfo',
+        contentType: "application/json;charset=utf-8",
+        data: JSON.stringify(params),
+        success:function (res) {
+          if (res.data) {
+            _this.showForm = false
+            if(source == 'partner_recruit_page') {
+              _this.showSuccess = true
+            }
+          }
+        }
+      })
+    },
+    // 手机号输入框input事件
+    inputPhone: function(val) {
+      this.form.phone = val.replace(/[^\d]/g,'')
+    },
+    // 查询表单回显信息
+    getOldInfo: function() {
+      var _this = this
+      $.ajax({
+        type:'POST',
+        url:'/salesLeads/echoInfo?t=' + Date.now(),
+        success:function (res) {
+          if (res.data) {
+            _this.form.name = res.data.name ? res.data.name : ''
+            _this.form.phone = res.data.phone ? res.data.phone : '' 
+            _this.form.companyName = res.data.company ? res.data.company : ''
+            if (res.data.position) {
+              if (jobJson.indexOf(res.data.position) == -1) {
+                _this.form.job = '其他'
+                _this.form.otherJob = res.data.position.replace('其他/', '')
+              } else {
+                _this.form.job = res.data.position
+              }
+            } else {
+              _this.form.job = ''
+            }
+          }
+        }
+      })
+    },
+    // 企业名称联想
+    getResult:function(name) {
+      // 名称为空或长度小于2不发请求
+      if (!name || name.length < 2) return
+      var _this = this
+      $.ajax({
+        type:'POST',
+        url:'/jypay/user/company/association',
+        data: {
+          name: name
+        },
+        heads : {
+          'content-type': 'application/x-www-form-urlencoded'
+        },
+        success:function (res) {
+          console.log(res)
+          if (res.data && res.data.length > 0) {
+            var result = []
+            res.data.map(function(item){
+              item = _this.brightKeyword(item)
+              result.push(item)
+              return result
+            })
+            _this.companyList = result
+            _this.showSearchResult = true
+          }
+        }
+      })
+    },
+    searchCompany: debounce(function(val){
+      if(val === '') { this.showSearchResult = false}
+      this.getResult(val)
+    }, 600),
+    // 选择联想出来的公司名称
+    selectCompany: function(item) {
+      this.form.companyName = item.replace(/<.*?>/ig, '')
+      this.showSearchResult = false
+    },
+    // 关键词高亮
+    brightKeyword: function (val) {
+      var name = this.form.companyName
+      if (val.indexOf(name) !== -1) {
+        return val.replace(name, `<font style='color:#2ABED1;'>${name}</font>`)
+      } else {
+        return val
+      }
+    }
+  }
+})

+ 1 - 0
src/web/templates/common/pcbottom.html

@@ -53,6 +53,7 @@
                                 <p>扫码关注</p>
                             </div>
                         </dd>
+                        <dd><a href="/swordfish/frontPage/partner/free/index">产品销售合作</a></dd>
                     </dl>
                 </div>
                 <div class="jy_classify_r">

+ 5 - 1
src/web/templates/common/pchead.html

@@ -409,6 +409,10 @@
       text-align: center;
       line-height: 18px;
     }
+    .recruit {
+        margin-left: -14px;
+        word-break: keep-all;
+    }
 </style>
 
 <section class="public-nav" id="public-nav">
@@ -478,6 +482,7 @@
                         <span name="商务合作"><a href="/front/busicooperation.html">商务合作</a></span>
                         <span name="广告服务"><a href="/front/advservices.html">广告服务</a></span>
                         <span name="关于我们"><a href="/front/aboutus.html">关于我们</a></span>
+                         <span name="产品销售合作" class="recruit"><a href="/swordfish/frontPage/partner/free/index">产品销售合作</a></span>
                     </div>
 				</li>
 				<li class="slider"></li>
@@ -621,7 +626,6 @@
                 })
 
                 if (isLightTheme || isEnableCheck.getAttribute('theme') === 'light') {
-                    console.log(1234)
                     setNavTheme('light')
                 } else {
                     setNavTheme('dark')

+ 147 - 0
src/web/templates/frontRouter/pc/partner/free/index.html

@@ -0,0 +1,147 @@
+<html>
+<head>
+  <meta charset="UTF-8">
+  <title>产品销售合作_剑鱼标讯,专业招标大数据服务平台</title>
+  <meta name="Keywords" content="招标数据,中标数据,采购数据,结构化数据"/>
+  <meta name="Description" content="剑鱼标讯提供完整的结构化数据导出和定制化合作,提供招标信息相关的项目名称、项目编号、项目范围等多达30个字段,帮助企业通过数据分析市场、获取商机、辅助企业战略决策。。"/>
+  <meta content="产品销售合作" theme="dark" name="enable-header"/>
+  {{include "/common/pnc.html"}}
+  <link href="{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+	<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/reset_pc.css?v={{Msg "seo" "version"}}" />
+	<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" />
+	<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/adCss.css?v={{Msg "seo" "version"}}" />
+	<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/TweenMax.min.js?v={{Msg "seo" "version"}}"></script>
+	<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}2"></script>
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/structuredata/pc/css/reset_pc.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/structuredata/pc/css/stucturedPc.css?v={{Msg "seo" "version"}}1">
+    <link href="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/theme-chalk/index.css" rel="stylesheet" />
+    <link href='{{Msg "seo" "cdn"}}/common-module/pc-dialog/css/leave-partner-dialog.css?v={{Msg "seo" "version"}}' rel="stylesheet">
+</head>
+<style>
+    .section-partner-container{
+        width: 100%;
+    }
+    .section-part{
+        width: 100%;
+    }
+    .section-part.part-1 {
+        position: relative;
+        width: 100%;
+        /* background: url('{{Msg "seo" "cdn"}}/frontRouter/pc/partner/image/part1.png') no-repeat;
+        background-size: 100% 100%; */
+    }
+    .section-part.part-1 .joinIn{
+        position: absolute;
+        bottom: 16%;
+        margin-left: 19%;
+        width: 12.5%;
+        height: 8.5%;
+        font-size: 100%;
+        cursor: pointer;
+    }
+    .section-part.part-1 .joinIn .joinbtn {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        width: 100%;
+        height: 100%;
+        opacity: 1;
+        background: linear-gradient(180deg,#ffffff, #f9dcba 100%);
+        border: 1px solid #ffffff;
+        border-radius: 27px;
+        box-shadow: 0px 6px 8px 0px rgba(178,2,2,0.25);
+        font-family: Microsoft YaHei, Microsoft YaHei-Bold;
+        font-weight: 700;
+        color: #e31b0f;
+    }
+    .section-part.part-2 {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        padding: 80px 0;
+        width: 100%;
+        background: linear-gradient(180deg,#fffbf6, #fff9f0 100%);
+    }
+    .section-part.part-3 {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        padding: 80px 0;
+        width: 100%;
+        background: #ffecde;
+    }
+    .section-part.part-4 {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        padding: 80px 0;
+        width: 100%;
+        background: #FFFFFF;
+    }
+    .section-part .come-partner{
+        margin-top: 76px;
+        width: 240px;
+        height: 52px;
+        opacity: 1;
+        background: linear-gradient(180deg,#e94b0c, #e1320a 100%);
+        border-radius: 26px;
+        box-shadow: 0px 6px 8px 0px rgba(178,2,2,0.16);
+        font-size: 20px;
+        font-weight: 700;
+        text-align: center;
+        line-height: 52px;
+        color: #ffffff;
+        cursor: pointer;
+    }
+</style>
+<body class="indexpage">
+{{include "/common/pchead.html"}}
+<!-- 用户留资 -->
+<div id="vue-collect-partner-info"></div>
+<div class="section-partner-container">
+    <div class="section-part part-1">
+        <img src='{{Msg "seo" "cdn"}}/frontRouter/pc/partner/image/part1.png' style="width: 100%" alt="">
+        <div class="joinIn">
+            <div class="joinbtn">申请加入</div>
+        </div>
+    </div>
+    <div class="section-part part-2">
+        <img src='{{Msg "seo" "cdn"}}/frontRouter/pc/partner/image/part2.png' style="width: 1200px" alt="">
+        <div class="come-partner">立即成为合作商</div>
+    </div>
+    <div class="section-part part-3">
+        <img src='{{Msg "seo" "cdn"}}/frontRouter/pc/partner/image/part3.png' style="width: 1200px" alt="">
+        <div class="come-partner">申请加入</div>
+    </div>
+    <div class="section-part part-4">
+        <img src='{{Msg "seo" "cdn"}}/frontRouter/pc/partner/image/part4.png' style="width: 1200px" alt="">
+        <div class="come-partner">申请加入</div>
+    </div>
+</div>
+{{include "/common/pcbottom.html"}}
+<script src="//cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.min.js"></script>
+<script src="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/index.js"></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/pc-dialog/js/leave-info-dialog.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/js/pc-collect-partner-info.js?v={{Msg "seo" "version"}}'></script>
+<script>
+    $(function () {
+        haslogin({{.T.logid}});
+        $('.come-partner, .joinIn').on('click', function() {
+            checkLogin()
+            vmPartner.isNeedSubmit('partner_recruit_page')
+        })
+
+        function checkLogin () {
+            var moduleOpen = $('body').hasClass('modal-open')
+            if (moduleOpen) return
+            if (!loginflag) {
+                $("#bidLogin").modal("show");
+            }
+        }
+
+    })
+    
+</script>
+{{include "/common/baiducc.html"}}
+</body>
+</html>

+ 333 - 0
src/web/templates/frontRouter/wx/bigmember/free/perfect_info_partner.html

@@ -0,0 +1,333 @@
+<!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.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
+    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/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.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
+    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/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"}}'/>
+    <!--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" id="perfect-info-page" v-cloak>
+      <div class="j-container">
+          <div class="j-main info-collect">
+              <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 v-model.trim="infoMap.phone" label="手机号" @focus="infoCheckMap.phone = ''"
+                                 @blur="getCheckMap('phone')" :error-message="infoCheckMap.phone" required
+                                 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="entOnChange('blur')" @focus="infoCheckMap.company = ''"
+                                 :error-message="infoCheckMap.company" v-model.trim="infoMap.company" label="公司名称" placeholder="请输入公司名称"></van-field>
+                  </div>
+              </div>
+          </div>
+          <div class="j-footer">
+              <div class="j-button-group">
+                  <button class="j-button-cancel" @click="cancelForm">暂不提供</button>
+                  <button class="j-button-confirm" :disabled="isSubmitDisabled" @click="submitForm">提交</button>
+              </div>
+          </div>
+      </div>
+      <van-popup v-model="commitshow" class="commitdialog" :close-on-click-overlay="overlayShow" style="height: 5.6rem;">
+        <div class="j-container">
+          <div class="j-main com-main" style="padding: .48rem .56rem;">
+            <div class="img-duihao">
+              <img src="/structuredata/mobile/image/choose.png" alt="">
+            </div>
+            <div class="commit_success">提交成功</div>
+            <div class="commit_tip" style="text-align: left;">我们的客户经理会在24小时内尽快与您联系。</div>
+            <div class="commit_know">
+              <button class="commit_btn" @click="history.back()">我知道了</button>
+            </div>
+          </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/mainSearch/js/utils.js'></script>
+{{include "/big-member/commonjs.html"}}
+
+<script>
+  var vNode = {
+    delimiters: ['@@', '@@'],
+    el: '#perfect-info-page',
+    data: {
+      commitshow: false, // 提交成功显示弹窗
+      overlayShow: false,
+      searchList: [],
+      isAssociateShow: false,
+      isAssociateUpTime: -1,
+      infoMap: {
+        name: '',
+        phone: '',
+        company: '',
+      },
+      infoCheckMap: {
+        name: '',
+        phone: '',
+        company: '',
+      },
+      isEchoInfoLoading: true,
+      ajaxParams: {
+        "name": "",
+        "phone": "",
+        "source": utils.getParam('source'), // 推送消息点进来的 
+        "company": ""
+      }
+    },
+    mounted() {
+      // source=message_bigmember app消息大会员留资地
+      // source=message_structeddata app消息结构化数据留资地
+      this.ajaxGetEchoInfo()
+    },
+    computed: {
+      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|7|8]\d{9}$|^19[8-9]\d{8}$|^166\d{8}|^15[0-3|5-9]\d{8}|^14[5|7]\d{8}$/.test(this.infoMap.phone)
+      },
+      checkEntName () {
+        if (this.infoMap.company.trim().length > 50 || this.infoMap.company.trim().length < 2) {
+          return false
+        }
+        return true
+      },
+      isSubmitDisabled () {
+        return !this.checkName || !this.checkPhone
+      },
+    },
+    methods: {
+      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()
+        })
+      },
+      ajaxGetEchoInfo() {
+        this.isEchoInfoLoading = true
+        let _this = this
+        this.ajaxFn('/salesLeads/echoInfo', {}, function (r) {
+          this.isEchoInfoLoading = false
+          if (r && r.error_msg === '' && r.data) {
+            if(r.data.phone != '') {
+              _this.vercodecor = true
+              _this.setcodeShow = false
+              sessionStorage.setItem('strud_phone', r.data.phone)
+            } else {
+              _this.setcodeShow = true
+            }
+            this.setEchoInfo(r.data)
+          }
+        })
+      },
+      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 }, function (r) {
+          if (r && r.error_msg === '' && r.data) {
+            this.isAssociateShow = true
+            this.searchList = r.data
+          }
+        }, true)
+      },
+      setEchoInfo (data) {
+        if (data.name) {
+          this.setCheckForData('name', 'name', data.name)
+        }
+        if (data.phone) {
+          this.setCheckForData('phone', 'phone', data.phone)
+        }
+        if (data.company) {
+          this.setCheckForData('company', 'company', data.company)
+        }
+  
+      },
+      setCheckForData (aKey, iKey, cKey, label) {
+        this.ajaxParams[aKey] = cKey
+        this.infoMap[iKey] = cKey
+        if (label) {
+          var checkDatas = [cKey]
+        }
+      },
+      onSelectItem (item, index) {
+        if (this.isMoreSelect) {
+          item.checked = !item.checked
+        } else {
+          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 '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
+            }
+        }
+      },
+      cancelForm () {
+        history.back()
+      },
+      submitForm () {
+        this.ajaxParams.name = this.infoMap.name
+        this.ajaxParams.phone = this.infoMap.phone
+        this.ajaxParams.company = this.infoMap.company
+        this.ajaxParams.platform  = "wx"
+        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) {
+              _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>

+ 78 - 0
src/web/templates/frontRouter/wx/partner/sess/index.html

@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <meta name="keywords" content="剑鱼标讯">
+  <meta name="description" content="剑鱼标讯">
+  <meta name="author" content="剑鱼标讯">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+  <meta name="browsermode" content="application">
+  <meta name="x5-orientation" content="portrait">
+  <meta name="screen-orientation" content="portrait">
+  <meta name="x5-page-mode" content="app">
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black">
+  <meta name="format-detection" content="telephone=no">
+  <title>产品销售合作</title>
+  <script src="/big-member/js/rem.js"></script>
+  <!--S-当前页面的css资源-->
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/bidedoc/css/public.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/bidedoc/css/index.css?v={{Msg "seo" "version"}}' />
+  </head>
+<body>
+  <div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main partner" id="partner" v-cloak>
+      <div class="j-container">
+        <div class="j-main">
+          <img src='{{Msg "seo" "cdn"}}/common-module/partner/image/A_02.jpg?v={{Msg "seo" "version"}}' alt="">
+          <img src='{{Msg "seo" "cdn"}}/common-module/partner/image/A_03.jpg?v={{Msg "seo" "version"}}' alt="">
+          <img src='{{Msg "seo" "cdn"}}/common-module/partner/image/A_04.jpg?v={{Msg "seo" "version"}}' alt="">
+          <img src='{{Msg "seo" "cdn"}}/common-module/partner/image/A_05.jpg?v={{Msg "seo" "version"}}' @touchstart="getMsg" alt="">
+          <img src='{{Msg "seo" "cdn"}}/common-module/partner/image/B_01.jpg?v={{Msg "seo" "version"}}' alt="">
+          <img src='{{Msg "seo" "cdn"}}/common-module/partner/image/B_02.jpg?v={{Msg "seo" "version"}}' alt="">
+          <img src='{{Msg "seo" "cdn"}}/common-module/partner/image/B_03.jpg?v={{Msg "seo" "version"}}' alt="">
+          <img src='{{Msg "seo" "cdn"}}/common-module/partner/image/B_04.jpg?v={{Msg "seo" "version"}}' alt="">
+          <img src='{{Msg "seo" "cdn"}}/common-module/partner/image/B_05.jpg?v={{Msg "seo" "version"}}' alt="">
+          <div class="btns-tips">
+            <div class="btns">
+                <van-button type="primary" size="large" @touchstart="getMsg">申请加入</van-button>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <!--S-当前页面的资源-->
+  <script src='https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js'></script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+  <!--E-当前页面的资源-->
+  {{include "/big-member/commonjs.html"}}
+  <script>
+    var vm = new Vue({
+      el: '#partner',
+      delimiters: ['{', '}'],
+      data: function () {
+        return {
+          
+        }
+      },
+      created() {
+        
+      },
+      methods: {
+        getMsg() {
+          location.href = '/weixin/frontPage/bigmember/free/perfect_info_partner?source=partner_recruit_page'
+        }
+      }
+    })
+  </script>
+  {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 1 - 1
src/web/templates/pc/myOrder.html

@@ -1344,7 +1344,7 @@
             if (item.product_type === '中标必听课') {
               var href = ''
               if (item.filter.i_drawer === 1) {
-                href = '/front/order/invoice/=' + item.order_code
+                href = '/front/order/invoice/' + item.order_code
               } else {
                 href = '/jyxspc/invoice?ids=' + item.id + '&code=' + item.order_code
               }