فهرست منبع

Merge remote-tracking branch 'origin/dev4.5.2' into dev4.5.2

wangkaiyue 4 سال پیش
والد
کامیت
1af54240fe
31فایلهای تغییر یافته به همراه4125 افزوده شده و 270 حذف شده
  1. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_landingPage.html
  2. 28 1
      src/jfw/modules/app/src/web/templates/common/baiducc.html
  3. 937 0
      src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info.html
  4. 0 16
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  5. 1 1
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  6. 2 1
      src/jfw/modules/common/src/qfw/util/jy/userPhoneUtil.go
  7. 9 17
      src/jfw/modules/followent/src/web/templates/weixin/list.html
  8. BIN
      src/jfw/modules/weixin/src/business/cooperation.png
  9. 1 1
      src/jfw/modules/weixin/src/github.com/wizjin/weixin/weixin.go
  10. 3 2
      src/jfw/modules/weixin/src/tools/createimage.go
  11. 7 1
      src/jfw/modules/weixin/src/wx/wx.go
  12. 19 0
      src/web/staticres/big-member/css/j-icons.css
  13. 102 0
      src/web/staticres/common-module/keep-tags/keep-tags-template.js
  14. 370 0
      src/web/staticres/common-module/perfect-info/index.css
  15. 7 0
      src/web/staticres/common-module/perfect-info/index.css.map
  16. 339 0
      src/web/staticres/common-module/perfect-info/index.scss
  17. 221 0
      src/web/staticres/common-module/selector/js/static-data.js
  18. 312 0
      src/web/staticres/css/collect-user-info.css
  19. 570 0
      src/web/staticres/js/pc-collect-user-info.js
  20. 61 45
      src/web/staticres/js/superSearch.js
  21. 23 83
      src/web/templates/big-member/pc/page_index.html
  22. 1 1
      src/web/templates/big-member/wx/page_landingPage.html
  23. 88 48
      src/web/templates/common/baiducc.html
  24. 953 0
      src/web/templates/frontRouter/wx/bigmember/free/perfect_info.html
  25. 35 9
      src/web/templates/pc/biddetail_rec.html
  26. 2 0
      src/web/templates/pc/myOrder.html
  27. 10 1
      src/web/templates/pc/supsearch.html
  28. 4 0
      src/web/templates/pc/vip_orderDetail.html
  29. 12 21
      src/web/templates/weixin/follow/list.html
  30. 0 15
      src/web/templates/weixin/search/mainSearch.html
  31. 7 6
      src/web/templates/weixin/wxinfocontent_rec.html

+ 1 - 1
src/jfw/modules/app/src/web/templates/big-member/page_landingPage.html

@@ -559,7 +559,7 @@
                 this.census('免费体验')
                 // 跳转到用户收集页面
                 // location.href = '/demo-member/demo_action.html'
-                location.href = '/jyapp/frontPage/bigmember/free/info_collect'
+                location.href = '/jyapp/frontPage/bigmember/free/perfect_info?origin=member_freeuse'
             },
             // 咨询客服
             consult:function(){

+ 28 - 1
src/jfw/modules/app/src/web/templates/common/baiducc.html

@@ -35,7 +35,34 @@ function adv_statistics(e){
        JyObj.openExternalLink($(e).find("a").attr("ad_link"),ad_title);
     }
     if ($(e).find("a").attr("openurl")!=undefined){//app三级页调用打开方法
-       JyObj.openExternalLink($(e).find("a").attr("openurl"),"查看原文");
+      $.post('/salesLeads/retainedCapital', { source: 'article_original' }).done(function (r) {
+        if (r && r.error_msg === '' && r.data) {
+          if (r.data.retainedCapital) {
+            vKeepComponent.$dialog.confirm({
+              message: '为给您匹配精准的推荐信息,请完善个人信息,免费查看原文',
+              className: 'ent-search-dialog max-54 add-close-after',
+              overlayClass: 'z-2030',
+              showCancelButton: false,
+              confirmButtonText: '立即前往',
+            }).then(function () {
+              sessionStorage.setItem('salesBackData', JSON.stringify({
+                type: 'article_original',
+                url: $(e).find("a").attr("openurl")
+              }))
+              location.href = '/jyapp/frontPage/bigmember/free/perfect_info?origin=article_original'
+            }).catch(function () {});
+            $("body").on('click', '.add-close-after .van-dialog__content', function (e) {
+              vKeepComponent.$dialog.close()
+            })
+          } else {
+            JyObj.openExternalLink($(e).find("a").attr("openurl"),"查看原文");
+          }
+        } else {
+          JyObj.openExternalLink($(e).find("a").attr("openurl"),"查看原文");
+        }
+      }).fail(function () {
+        JyObj.openExternalLink($(e).find("a").attr("openurl"),"查看原文");
+      })
     }
 }
 

+ 937 - 0
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info.html

@@ -0,0 +1,937 @@
+<!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="top-tip-group" v-if="getTipStr">
+                    <p class="top-tip-text">
+                        @@getTipStr@@
+                    </p>
+                </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 v-model.trim="infoMap.phone" label="手机号" @focus="infoCheckMap.phone = ''"
+                                   @blur="getCheckMap('phone')" :error-message="infoCheckMap.phone" required
+                                   placeholder="常用手机号码"></van-field>
+                        <van-field v-model.trim="infoMap.email" label="邮箱" @focus="infoCheckMap.email = ''" @blur="getCheckMap('email')"
+                                   :error-message="infoCheckMap.email" required placeholder="请输入邮箱"></van-field>
+                        <van-field v-if="false" v-model="infoMap.area" label="区域" @click="openPop('区域')" readonly is-link
+                                   placeholder="请选择所在区域"></van-field>
+                        <van-field v-model="infoMap.class" label="行业" @click="openPop('行业')" readonly is-link
+                                   placeholder="请选择所属行业"></van-field>
+                        <van-field v-if="false" v-model="infoMap.type" label="受雇类型" @click="openPop('受雇类型')" readonly is-link
+                                   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" 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 === '其他'}"  required v-model="infoMap.position" label="职位" @click="openPop('职位')" readonly is-link
+                                   placeholder="请选择职位"></van-field>
+                        <van-field class="other-input-group" @focus="infoCheckMap.position_other = ''" @blur="getCheckMap('position')"
+                                   :error-message="infoCheckMap.position_other" v-model.trim="infoMap.position_other" v-show="infoMap.position === '其他'" label="职位" placeholder="请输入职位"></van-field>
+                        <van-field v-if="false" v-model="infoMap.company_size" label="公司规模" @click="openPop('公司规模')" readonly is-link
+                                   placeholder="请选择公司规模"></van-field>
+                        <van-field maxlength="200" v-model="infoMap.workScope" label="业务范围" rows="2" type="textarea"
+                                   placeholder="请输入业务范围,让合作伙伴充分了解公司业务内容"></van-field>
+                    </div>
+                </div>
+                <div class="form-card-group">
+                    <div class="form-title">合作需求</div>
+                    <div class="form-content-card">
+                        <van-field maxlength="200" v-model="infoMap.partnerNeeds" rows="3" type="textarea"
+                                   placeholder="请输入合作需求,从而创造并匹配更多合作交流机会"></van-field>
+                    </div>
+                </div>
+                <div class="form-tick-group" @click="isRead = !isRead">
+                    <div class="more-icon-box">
+                        <i class="j-icon base-icon icon-tick-circle" v-show="!isRead"></i>
+                        <i class="j-icon base-icon icon-tick-circle-fill" v-show="isRead"></i>
+                    </div>
+                    <span>我同意剑鱼标讯将业务范围及合作需求提供给潜在合作伙伴搜索、查看</span>
+                </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>
+            <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="popInfo.label === '区域'">
+                        <van-tree-select
+                                height="100%"
+                                :items="areaDatas"
+                                :active-id.sync="areaId"
+                                :main-active-index.sync="areaIndex">
+
+                        </van-tree-select>
+                    </div>
+                    <div class="j-main" v-show="popInfo.label === '行业'">
+                        <van-tree-select
+                                height="100%"
+                                :items="classDatas"
+                                :active-id.sync="classId"
+                                :main-active-index.sync="classIndex">
+
+                        </van-tree-select>
+                    </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>
+    </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}}/common-module/selector/js/china_area.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+
+<script>
+  var filterData = chinaMapJSON.filter(function (item) {
+    return item.name !== ' 海外' && item.name !== '钓鱼岛'
+  })
+  filterData.forEach(function (item) {
+    if (item.name == '台湾省') { item.name = '台湾'}
+    item.name = item.name.replace(/自治区|特别行政区|壮族|回族|维吾尔/g, '')
+    item.label = item.name
+    item.value = item.name
+    var filterWord = ['北京市', '上海市', '天津市', '上海市', '重庆市', '香港', '澳门', '台湾']
+    if (filterWord.indexOf(item.name) == -1) {
+      item.children = item.city.map(function (v) {
+        return {
+          value: v.name,
+          label: v.name
+        }
+      })
+    }
+  })
+  var areaItem = filterData.map(v => {
+    var tempData = {
+      text: v.name
+    }
+    if (v.children) {
+      tempData.children = v.children.map(s => (
+        {
+          text: s.label,
+          id: v.name + '-' + s.label
+        }
+      ))
+    } else {
+      tempData.children = [{
+        text: v.name,
+        id: v.name + '-' + v.name
+      }]
+    }
+    return tempData
+  })
+  var classMap = [
+    {name: '互联网/IT/电子/通信', value: '电子商务'},
+    {name: '互联网/IT/电子/通信', value: '企业服务'},
+    {name: '互联网/IT/电子/通信', value: '人工智能'},
+    {name: '互联网/IT/电子/通信', value: '在线教育'},
+    {name: '互联网/IT/电子/通信', value: '在线医疗'},
+    {name: '互联网/IT/电子/通信', value: '新媒体'},
+    {name: '互联网/IT/电子/通信', value: '物联网'},
+    {name: '互联网/IT/电子/通信', value: '新零售'},
+    {name: '互联网/IT/电子/通信', value: '区跨链'},
+    {name: '互联网/IT/电子/通信', value: '互联网'},
+    {name: '互联网/IT/电子/通信', value: '游戏'},
+    {name: '互联网/IT/电子/通信', value: '云计算/大数据'},
+    {name: '互联网/IT/电子/通信', value: '网络/信息安全'},
+    {name: '互联网/IT/电子/通信', value: '在线生活服务(O2O)'},
+    {name: '互联网/IT/电子/通信', value: '在线音乐/视频/阅读'},
+    {name: '互联网/IT/电子/通信', value: 'IT服务'},
+    {name: '互联网/IT/电子/通信', value: '计算机软件'},
+    {name: '互联网/IT/电子/通信', value: '计算机硬件'},
+    {name: '互联网/IT/电子/通信', value: '通信/网络设备'},
+    {name: '互联网/IT/电子/通信', value: '运营商/增值服务'},
+    {name: '互联网/IT/电子/通信', value: '电子/半导体/集成电路'},
+    {name: '房地产/建筑', value: '房地产开发与经营'},
+    {name: '房地产/建筑', value: '土地与公共设施管理'},
+    {name: '房地产/建筑', value: '公共建筑装饰装修'},
+    {name: '房地产/建筑', value: '房地产中介'},
+    {name: '房地产/建筑', value: '物业服务'},
+    {name: '房地产/建筑', value: '建筑设计'},
+    {name: '房地产/建筑', value: '工程施工'},
+    {name: '房地产/建筑', value: '建筑设备安装'},
+    {name: '房地产/建筑', value: '装饰装修'},
+    {name: '房地产/建筑', value: '建材'},
+    {name: '房地产/建筑', value: '建筑工程检测'},
+    {name: '金融业', value: '银行'},
+    {name: '金融业', value: '保险业'},
+    {name: '金融业', value: '基金'},
+    {name: '金融业', value: '信托'},
+    {name: '金融业', value: '证券/期货'},
+    {name: '金融业', value: '投资/融资'},
+    {name: '金融业', value: '汽车金融服务'},
+    {name: '金融业', value: '互联网金融/小额贷款'},
+    {name: '金融业', value: '租赁/拍卖/典当/担保'},
+    {name: '教育培训/科研', value: '培训/课外教育/教育辅助'},
+    {name: '教育培训/科研', value: '学校教育'},
+    {name: '教育培训/科研', value: '学术/科研'},
+    {name: '教育培训/科研', value: '科学技术推广服务业'},
+    {name: '广告/传媒/文化/体育', value: '广告业'},
+    {name: '广告/传媒/文化/体育', value: '广播/电视/电影/录音制作'},
+    {name: '广告/传媒/文化/体育', value: '会议/展览服务'},
+    {name: '广告/传媒/文化/体育', value: '文化艺术/娱乐'},
+    {name: '广告/传媒/文化/体育', value: '体育'},
+    {name: '广告/传媒/文化/体育', value: '新闻/出版'},
+    {name: '制药/医疗', value: '医院'},
+    {name: '制药/医疗', value: '卫生服务'},
+    {name: '制药/医疗', value: '生物工程'},
+    {name: '制药/医疗', value: '医药制造'},
+    {name: '制药/医疗', value: '医疗设备/器械'},
+    {name: '批发/零售/贸易', value: '快速消费品'},
+    {name: '批发/零售/贸易', value: '耐用消费品'},
+    {name: '批发/零售/贸易', value: '零售/批发'},
+    {name: '批发/零售/贸易', value: '食品/饮料'},
+    {name: '批发/零售/贸易', value: '烟酒'},
+    {name: '批发/零售/贸易', value: '日化'},
+    {name: '批发/零售/贸易', value: '服装/纺织/皮革'},
+    {name: '批发/零售/贸易', value: '玩具/礼品'},
+    {name: '批发/零售/贸易', value: '珠宝/首饰'},
+    {name: '批发/零售/贸易', value: '办公用品设备'},
+    {name: '批发/零售/贸易', value: '工艺品/收藏品'},
+    {name: '批发/零售/贸易', value: '家具/家居/家电'},
+    {name: '批发/零售/贸易', value: '贸易/进出口代理'},
+    {name: '制造业', value: '船舶/航空/航天/火车制造'},
+    {name: '制造业', value: '电气机械/器材制造'},
+    {name: '制造业', value: '电子设备制造'},
+    {name: '制造业', value: '钢铁和有色金属冶炼及加工'},
+    {name: '制造业', value: '专用设备制造'},
+    {name: '制造业', value: '金属制品业'},
+    {name: '制造业', value: '通用设备制造'},
+    {name: '制造业', value: '仪器仪表制造'},
+    {name: '制造业', value: '非金属矿物制品业'},
+    {name: '制造业', value: '化学纤维制造业'},
+    {name: '制造业', value: '化学原料/化学制品'},
+    {name: '制造业', value: '日化产品制造'},
+    {name: '制造业', value: '纺织业/服饰产品加工制造'},
+    {name: '制造业', value: '农副产品加工制造'},
+    {name: '制造业', value: '燃料资源加工制造'},
+    {name: '制造业', value: '橡胶和塑料制品'},
+    {name: '制造业', value: '印刷/包装/造纸'},
+    {name: '制造业', value: '家具制造'},
+    {name: '制造业', value: '文体/办公设备制造'},
+    {name: '制造业', value: '工业自动化'},
+    {name: '汽车', value: '汽车销售与服务'},
+    {name: '汽车', value: '汽车制造'},
+    {name: '汽车', value: '汽车零部件'},
+    {name: '交通运输/仓储/物流', value: '火车站/港口/汽车站/路政'},
+    {name: '交通运输/仓储/物流', value: '民航/铁路/公路/水路客运'},
+    {name: '交通运输/仓储/物流', value: '货运/物流仓储'},
+    {name: '交通运输/仓储/物流', value: '邮政/快递'},
+    {name: '专业服务', value: '法律服务'},
+    {name: '专业服务', value: '咨询服务'},
+    {name: '专业服务', value: '翻译服务'},
+    {name: '专业服务', value: '人力资源服务'},
+    {name: '专业服务', value: '财务/审计/税务'},
+    {name: '专业服务', value: '工程技术与设计服务'},
+    {name: '专业服务', value: '检测/认证'},
+    {name: '专业服务', value: '景区/商业/市场等综合管理'},
+    {name: '专业服务', value: '商业代理服务'},
+    {name: '专业服务', value: '专利/商标/知识产权'},
+    {name: '专业服务', value: '租赁服务'},
+    {name: '专业服务', value: '专业技术服务'},
+    {name: '生活服务', value: '餐饮业'},
+    {name: '生活服务', value: '酒店/民宿'},
+    {name: '生活服务', value: '旅游业'},
+    {name: '生活服务', value: '婚庆/摄影'},
+    {name: '生活服务', value: '美容/保健/养生'},
+    {name: '生活服务', value: '居民服务'},
+    {name: '能源/环保/矿产', value: '石油/石化'},
+    {name: '能源/环保/矿产', value: '化工'},
+    {name: '能源/环保/矿产', value: '电力/水利/热力/燃气'},
+    {name: '能源/环保/矿产', value: '新能源'},
+    {name: '能源/环保/矿产', value: '环保'},
+    {name: '能源/环保/矿产', value: '矿产/采掘'},
+    {name: '政府/非盈利机构', value: '国家机构'},
+    {name: '政府/非盈利机构', value: '社团/组织/社会保障'},
+    {name: '政府/非盈利机构', value: '养老/孤儿/看护等社会服务'},
+    {name: '农/林/牧/渔', value: '农/林/牧/渔'}
+  ]
+  var classItem = {}
+  classMap.forEach(v => {
+    if (!classItem[v.name]) {
+      classItem[v.name] = []
+    }
+    if (classItem[v.name].indexOf(v.value) === -1) {
+      classItem[v.name].push(v.value)
+    }
+  })
+  var classList = []
+  for (var k in classItem) {
+    classList.push({
+      text: k,
+      children: classItem[k].map(s => ({
+        text: s,
+        id: k + '-' + s
+      }))
+    })
+  }
+  var vNode = {
+    delimiters: ['@@', '@@'],
+    el: '#perfect-info-page',
+    data: {
+      areaDatas: areaItem,
+      areaId: '',
+      areaIndex: '',
+      classDatas: classList,
+      classId: '',
+      classIndex: '',
+      isRead: true,
+      showPop: true,
+      searchList: [],
+      isAssociateShow: false,
+      isAssociateUpTime: -1,
+      infoMap: {
+        name: '',
+        phone: '',
+        email: '',
+        area: '',
+        class: '',
+        type: '',
+        company: '',
+        companyType: '',
+        position: '',
+        company_size: '',
+        workScope: '',
+        partnerNeeds: '',
+        position_other: ''
+      },
+      infoCheckMap: {
+        name: '',
+        phone: '',
+        email: '',
+        company: '',
+        position: '',
+        position_other: ''
+      },
+      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
+          },
+          {
+            title: '项目经理',
+            checked: false
+          },
+          {
+            title: '其他',
+            checked: false
+          }
+        ],
+        '公司规模': [
+          {
+            title: '0-19人',
+            checked: false
+          },
+          {
+            title: '20-99人',
+            checked: false
+          },
+          {
+            title: '100-499人',
+            checked: false
+          },
+          {
+            title: '500-999人',
+            checked: false
+          },
+          {
+            title: '1000-9999人',
+            checked: false
+          },
+          {
+            title: '100000人以上',
+            checked: false
+          }
+        ],
+      },
+      ajaxParams: {
+        "name": "",
+        "phone": "",
+        "source": utils.getParam('origin'),
+        "agree": false,
+        "mail": "",
+        "province": "",
+        "city": "",
+        "hireType": "",
+        "industry": "",
+        "company": "",
+        "companyType": "",
+        "position": "",
+        "company_size": "",
+        "workScope": "",
+        "partnerNeeds": ""
+      }
+    },
+    mounted() {
+      this.ajaxGetEchoInfo()
+    },
+    computed: {
+      getTipStr () {
+        var tipMap = {
+          'article_original': '为给您匹配精准的推荐信息,请完善个人信息,免费查看原文',
+          'article_collection': '重要项目一键创建标签收藏!请完善个人信息,为您匹配精准服务',
+          'member_freeuse': '请完善个人信息,立刻获得全部功能的产品试用',
+        }
+        return tipMap[utils.getParam('origin')] || ''
+      },
+      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|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)
+      },
+      checkEmail () {
+        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
+      },
+      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)
+      },
+      isSubmitDisabled () {
+        return !this.checkName || !this.checkPhone || !this.checkEmail || !this.checkEntName || !this.checkPosition
+      },
+      isMoreSelect () {
+        return this.popInfo.label === '公司类型'
+      },
+      isNextDisabled () {
+        var type = this.popInfo.label
+        var result = false
+        switch (type) {
+          case '区域': {
+            var tempData = this.areaId.split('-')
+            result = tempData.length === 2
+            break
+          }
+          case '行业': {
+            var tempData = this.classId.split('-')
+            result = tempData.length === 2
+            break
+          }
+          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
+          }
+          case '公司规模': {
+            result = this.conditionMap[type].filter(v => v.checked).length
+            break
+          }
+        }
+        return !result
+      }
+    },
+    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
+        this.ajaxFn('/salesLeads/echoInfo', {}, function (r) {
+          this.isEchoInfoLoading = false
+          if (r && r.error_msg === '' && r.data) {
+            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.province && data.city) {
+          var tempData = [data.province, data.city]
+          this.ajaxParams.province = tempData[0]
+          this.ajaxParams.city = tempData[1]
+          this.infoMap.area = tempData[0] + ' ' + tempData[1]
+          this.areaId = tempData[0] + '-' + tempData[1]
+          this.areaIndex = this.areaDatas.map(v => v.text).indexOf(tempData[0])
+        }
+        if (data.industry) {
+          var tempData = data.industry.split('_')
+          this.ajaxParams.industry = tempData[0] + '_' + tempData[1]
+          this.infoMap.class = tempData[0] + ' ' + tempData[1]
+          this.classId = tempData[0] + '-' + tempData[1]
+          this.classIndex = this.classDatas.map(v => v.text).indexOf(tempData[0])
+        }
+        if (data.hireType) {
+          this.setCheckForData('hireType', 'type', data.hireType, '受雇类型')
+        }
+        if (data.company_size) {
+          this.setCheckForData('company_size', 'company_size', data.company_size, '公司规模')
+        }
+        if (data.position) {
+          this.setCheckForData('position', 'position', data.position, '职位')
+        }
+        if (data.companyType) {
+          this.setCheckForData('companyType', 'companyType', data.companyType, '公司类型')
+        }
+        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.workScope) {
+          this.setCheckForData('workScope', 'workScope', data.workScope)
+        }
+        if (data.partnerNeeds) {
+          this.setCheckForData('partnerNeeds', 'partnerNeeds', data.partnerNeeds)
+        }
+        if (typeof data.agree !== 'undefined') {
+          this.ajaxParams.agree = data.agree
+          this.isRead = data.agree
+        }
+      },
+      setCheckForData (aKey, iKey, cKey, label) {
+        this.ajaxParams[aKey] = cKey
+        this.infoMap[iKey] = cKey
+        if (label === '职位' && cKey.indexOf('其他') !== -1) {
+            this.infoMap[iKey] = '其他'
+            this.infoMap.position_other = cKey.split('/')[1]
+        }
+        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.areaId.split('-')
+            if (tempData.length === 2) {
+              this.ajaxParams.province = tempData[0]
+              this.ajaxParams.city = tempData[1]
+              if (tempData[0] === tempData[1]) {
+                this.infoMap.area = tempData[0]
+              } else {
+                this.infoMap.area = tempData[0] + ' ' + tempData[1]
+              }
+            }
+            break
+          }
+          case '行业': {
+            var tempData = this.classId.split('-')
+            if (tempData.length === 2) {
+              this.ajaxParams.industry = tempData[0] + '_' + tempData[1]
+              this.infoMap.class = tempData[0] + ' ' + tempData[1]
+            }
+            break
+          }
+          case '受雇类型': {
+            var tempData = this.conditionMap[type].filter(v => v.checked)
+            this.setCheckForData('hireType', 'type', 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
+          }
+          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('company_size', 'company_size', tempData[0].title)
+            break
+          }
+        }
+        this.popInfo.show = false
+      },
+      openPop(type) {
+        switch (type) {
+          case '区域': {
+            this.popInfo.title = '请选择所在地域'
+            break
+          }
+          case '行业': {
+            this.popInfo.title = '请选择所在行业'
+            break
+          }
+          case '受雇类型': {
+            this.popInfo.title = '受雇类型'
+            break
+          }
+          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 'email': {
+              this.infoCheckMap.email = this.infoMap.email === '' ? '邮箱为必填项' : ''
+              if (this.infoCheckMap.email === '' && !this.checkEmail) {
+                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 () {
+        sessionStorage.removeItem('salesBackStatus')
+        history.back()
+      },
+      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.position = this.infoMap.position
+        if (this.infoMap.position === '其他') {
+          this.ajaxParams.position = '其他/' + this.infoMap.position_other
+        }
+        this.ajaxParams.workScope = this.infoMap.workScope
+        this.ajaxParams.partnerNeeds = this.infoMap.partnerNeeds
+        this.ajaxParams.agree = this.isRead
+        console.log(this.ajaxParams)
+
+        var _this = this
+        var loading = _this.showLoading()
+        this.ajaxFn('/salesLeads/collectInfo', this.ajaxParams, function (r) {
+          if (r) {
+            loading.clear()
+            if (r.error_msg === '') {
+              if (_this.ajaxParams.source === 'member_freeuse') {
+              _this.$dialog.close()
+              _this.$dialog.confirm({
+                message: '您的申请已提交,我们的客户经理会在24小时内尽快与您联系。',
+                className: 'ent-search-dialog max-54',
+                overlayClass: 'z-2030',
+                showCancelButton: false,
+                getContainer: '.perfect-info-group',
+                confirmButtonText: '我知道了',
+              }).then(function () {
+                sessionStorage.setItem('salesBackStatus', 'true')
+                history.back()
+              }).catch(function () {
+                sessionStorage.setItem('salesBackStatus', 'true')
+                history.back()
+              });
+              } else {
+                sessionStorage.setItem('salesBackStatus', 'true')
+                history.back()
+              }
+            } else {
+              _this.showToast(r.error_msg || '提交失败')
+            }
+          }
+        })
+      },
+      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>
+{{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 0 - 16
src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html

@@ -481,7 +481,6 @@
 <div class="hidden" id="advertscript"></div>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}'></script>
 <!-- 账号合并弹窗js -->
-<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/merge-wx.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/searchindex.js?v={{Msg "seo" "mod_version"}}'></script>
 <!--S-当前页面的资源-->
 <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
@@ -642,21 +641,6 @@
                 $("div[data-open='win']").hide()
             }
 
-            // 查询是否需要(微信)账号合并
-            mergeAccountForWx.init({
-                _className: 'app-main-search',
-                // 请求完成,判断是否需要显示ActiveTip
-                queryComplete: function (info) {
-                    ActiveTip = new Active_Tip()
-                    if (info.tipMerge == 1) {
-                        // 强制不显示其他弹框
-                        $('#myModal-tap').addClass('imp-hide')
-                        $('.modal-backdrop').addClass('imp-hide')
-                        // 弹出合并窗口后,如果还需要弹出ActiveTip,则解开下面的注释
-                        // localStorage.removeItem('Active_Vip_Invite')
-                    }
-                }
-            })
 
             $("#searchIndex .inp-search").unbind("click").on("click",function () {
                 SuperSearch.init(true,true,true);

+ 1 - 1
src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html

@@ -1940,7 +1940,7 @@
         var shoucang = $icon.hasClass('weishoucang')
         // 说明未收藏,点击收藏
         if (vKeepComponent) {
-            vKeepComponent.changeBid(id, shoucang)
+          vKeepComponent.changeBid(id, shoucang)
         }
     })
 </script>

+ 2 - 1
src/jfw/modules/common/src/qfw/util/jy/userPhoneUtil.go

@@ -77,7 +77,8 @@ func (this *PhoneUtil) unBindWeixin(phoneUserId, opera string) error {
 func (this *PhoneUtil) bindPhone(weixinUserId, phone, opera string) error {
 	if !this.UserMgoDB.UpdateById("user", weixinUserId, map[string]interface{}{
 		"$set": map[string]interface{}{
-			"s_m_phone": phone,
+			"s_m_phone":       phone,
+			"l_bindphonetime": time.Now().Unix(),
 		},
 	}) {
 		return fmt.Errorf("建立微信绑定异常")

+ 9 - 17
src/jfw/modules/followent/src/web/templates/weixin/list.html

@@ -43,13 +43,12 @@ if(sessionStorage){
 			</div>
 		</div>
   </div>
-  
+
 <script src="/jylab/followent/js/jquery.js"></script>
 <script src="/jylab/followent/js/fastclick.js"></script>
 <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
 <script src="/jylab/followent/js/common.js?v={{Msg "seo" "version"}}"></script>
 <script src="/jylab/followent/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
-<script src="/jylab/followent/js/merge-wx.js?v={{Msg "seo" "version"}}"></script>
 <script type="text/javascript">
 initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
     $(function () {
@@ -71,7 +70,7 @@ initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avat
         var lastarr = new Array();	//30天后
         data.sort(function(a,b){return a.l_lastpushtime<b.l_lastpushtime});
         var easyPopup = new EasyPopup("easypopup");
-        
+
         for (var i in data){
             var lastpushtime = data[i]["l_lastpushtime"];
             var rem = "";
@@ -116,7 +115,7 @@ initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avat
                 +tdf+"</li>";
             jyno = listno;
         }
-        
+
         //30天后
         for(var l in lastarr){
             var lastpushtime = lastarr[l]["l_lastpushtime"];
@@ -133,7 +132,7 @@ initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avat
             }else{
                 tdf=""
             }
-            
+
             var listno = parseInt(l)+parseInt(1)+jyno;
             lasthtml +="<li class='jyovertime' data-id='"+lastarr[l]["_id"]+"'>"
             +"<div class='jyfwlistno'>"+listno+".</div>"
@@ -142,7 +141,7 @@ initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avat
             +"<img src='/jylab/followent/images/wx/d.png' class='arrow-right'>"
             +"<div class='jytimest'>"
             +tdf+"</li>";
-        }	
+        }
             html = fronthtml + lasthtml;
         $(".listpage ul").append(html);
 
@@ -165,7 +164,7 @@ initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avat
             }
             window.location.href = "/jylab/followent/addEnt";
         });
-        
+
         $(".jylistbottom").click(function(){
             easyPopup.show("easypopup");
         });
@@ -178,7 +177,7 @@ initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avat
             $(".jyovertime").each(function(){
                 arrid +=","+$(this).attr("data-id");
             });
-            arrid = arrid.substring(1);	
+            arrid = arrid.substring(1);
             if (arrid.length>0){
                 $.ajax({
                     type:'post',
@@ -199,16 +198,9 @@ initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avat
                 EasyAlert.show("暂无30天无更新的数据<br>可删除!");
             }
         });
-        
+
     });
-</script>
-<script>
-// 查询是否需要(微信)账号合并
-mergeAccountForWx.init({
-    _className: 'wx-follow-ent',
-    beforeShow: function () {}
-})
 </script>
 	{{include "/common/baiducc.html"}}
 </body>
-</html>
+</html>

BIN
src/jfw/modules/weixin/src/business/cooperation.png


+ 1 - 1
src/jfw/modules/weixin/src/github.com/wizjin/weixin/weixin.go

@@ -79,7 +79,7 @@ const (
 	weixinShowQRScene        = "https://mp.weixin.qq.com/cgi-bin/showqrcode"
 	weixinShortURL           = "https://api.weixin.qq.com/cgi-bin/shorturl"
 	weixinUserInfo           = "https://api.weixin.qq.com/cgi-bin/user/info"
-	weixinFileURL            = "http://file.api.weixin.qq.com/cgi-bin/media"
+	weixinFileURL            = "https://file.api.weixin.qq.com/cgi-bin/media"
 	weixinTemplate           = "https://api.weixin.qq.com/cgi-bin/template"
 	weixinRedirectURL        = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=%s&state=%s#wechat_redirect"
 	weixinUserAccessTokenURL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code"

+ 3 - 2
src/jfw/modules/weixin/src/tools/createimage.go

@@ -27,8 +27,9 @@ const (
 	autoHeadImgFilePath = "active_shubohui/autoHeadImg.jpg"
 	fontFilePath        = "active_shubohui/Microsoft YaHei.ttf"
 	logFilePath         = "active_shubohui/log.txt"
-	bg_width            = 900 //宽
-	bg_height           = 900 //高
+	bg_width            = 900                        //宽
+	bg_height           = 900                        //高
+	BusinessCoop        = "business/cooperation.png" //商务合作二维码
 )
 
 type circle struct {

+ 7 - 1
src/jfw/modules/weixin/src/wx/wx.go

@@ -108,7 +108,13 @@ func MenuClickHandler(w ResponseWriter, r *Request) {
 	//获取点击按钮
 	clickButtonKey := r.EventKey
 	if replyText, ok := menuClickReplyTextMap[clickButtonKey]; ok {
-		w.ReplyText(replyText)
+		w.PostText(replyText)
+		//二维码
+		mediaId, err := w.UploadMediaFromFile("image", tools.BusinessCoop)
+		// log.Println(mediaId, "--", err, "--", tools.BusinessCoop)
+		if mediaId != "" && err == nil {
+			w.PostImage(mediaId)
+		}
 	}
 }
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 19 - 0
src/web/staticres/big-member/css/j-icons.css


+ 102 - 0
src/web/staticres/common-module/keep-tags/keep-tags-template.js

@@ -17,6 +17,28 @@ var tempStyleComponent = `<style>
     .icon-corner-mark {
         background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKUSURBVHgB7ZdPaxNBGIffmYS2aqBRKkWxur2lLWJy0HtbBY/6AfzTa3vQb6AeBA9CBbF4FLx4M54EQVZPCj3EeDF4MQepFkXXUqXYdqbzbrtlu53p7sxOsnvoc8lMZpY8eZN3frsA++yTXyovGw6BnIOStJe6uRYdfdWokiJ1OUCZQk6puM1rgSTOc1nREbd5g3B4EH4vdxUddZu3opJIriqKksDhtmwtN6Jj7sdZzvlN1Xrmos7zRvlguTALnF/fa1+mor5kP3XFsBq3NzPR4CAXQyfJ/kxEdSWRrouaSCJdFQ1HImjStQM/Gom6dKWiskjUpeMVVUWiLh2t6F6RqEvHROMiURfrokkjMUqldACW1tZhYeW/dL0AFglF4kWd62acQbg/dhKuDg3AspBtLv3btcdaM+FBLiQbkCC3ISI5PTy4PZ842i/dZ0XUNG2ikkj92y/p3tSiNiUftReh/v23dH+qZjKNRJXk3JdF5TXGzYSRSCl5hpLH+3rg4elTcHdkCIj46vPeX7ApaSyKkUg5PBbDPpxfOTEAl44d8dfOlktKWVNJgactuhWJ96LvB6Iq2RSSItzIey1RVSQurKz6r+cOl0Amm0Zyy/RF4mZKEonTQmgmIjTvLfvSxpICts7GY0V1I1Emm0ZSNGv708SZ4SLESWIkcp44bebamxIyWV1JX5SzO/iq/I/iQd5ziL7DIWgSNFH4P2skKarZmqxO4biokjRJmzBYWbwTwtPg9Y8/8PTrT9DE44SNBxPSCUkbrDF2+fP5Wj2Y78h6jMRCr38H5EB2eIyzqbAksi2a9inRBuKzPzDCaq3J2pPomv/T23hKTAM2DXa3TDCA2HwA08ATekKOv+UM6q0LtTdxF2wAr7U5snLQCTUAAAAASUVORK5CYII=);
     }
+    .van-dialog.ent-search-dialog.add-close-after .van-dialog__content {
+        position: relative;
+        pointer-events: none; 
+    }
+    .van-dialog.ent-search-dialog.add-close-after .van-dialog__content::after {
+        content: "";
+        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQzSURBVHgB7Zp/TtswFMefU9JJ+wtOsHACfiMhYCQn2G5AOUHHCQYnAE6wcoJ1J0g7YJW2AuUEy27Q/6Y1rb3nLNVQsZPYiftDykeqlNpJ7G/86/k9A5SUlJQsEAQM4nc6DoRV17JgjQFzMWkZGP4I/v4T8B8B0qNk9ASDUcvz9gIwROGCff9x2arSOmOshn8d0IN/gCYNB1dFiy9MsH/zwyWEfMRLFwqFNFg4OC9KeG7Bvt9xyJJ9gW96D0YpRnguwe1v3TobwdnEmDRJwAg99/Z3G6CJtuD27f0FTkQfYAbg+L48Otg6BQ2UBfNJidgjHy/XYbb0WFjxPG+jr/KQkuA5EjtGWbQFCsyZWM56XKfMZBbMxyzMl9gx63HdMpGpS/t39zXC2CeYY3ACPfUOdi7T7ksVHK2zts27jQPzTZ+F4UbaOp3apVEst54cmH+WSdVO7dqJLRy37k9YINCG97zDnZYsP7GF49ZVKAyuWCVc5eMJcoIW1Un0LnynynOxPS/Pl2XotK792nL2Nzd/Rc9//V4jlqU10XGxY/NRpx64Nq/I1mZ5Cy/Zymbj8A91x9fe290Go/QEFHkulmO9st+BKktDad2lggkB5YJwI9Fod7rH4/+qoifF8ncxCqlLzSTYs45leULBvBuB5sysK1ooFt8FOjDm3D08vBFliVu4WnUhB6qiCxUbM/g99ETpYsGU5TYhs4o2ITaCWkINQsE4ftegANJEGxMLkYYjUbps0nKgIGSiTYqNIETohRGuw63bLoOCIRWoHe1tX4vyChf7j757sL0ymai0H87DZEuPMSSWI2zhqQnmUEpf9CgaUqPBgElkgpX8RFmYHLNjdC0yXaYiWDRB5bHIMkFIIEo2Llg2G+c1Q9MLZoEo2RLfC20oosyUpcekaNTwJEq3JDXtQd4CM66zxkRbVKhBLHg0aEEOVI0KI6Ix7CpKli4JaHzwTbcDiuSxoCaNkxxOhACNjlVRhnQdRt/QNSgSuUpzmItFtTSO3y+yPLnhMVxS3nhXX1c+j691LagXFtlI3DUTGYbSuidaOdituT/ahYzwqB6tDK4ssI/ymouRI7AybFqjal0tSkka7sHWibyOCcRRfaXYzaxBZ/xqkjM+0ZaO/LsEmrAwkEbuyAMbhNzHXLhtbYCAH4lIuylVMP9iOIZSXzRroqMQGc5/ZNoe8qicagRgmvC6ZT33obQXxVn7EeYvRtxDI2Mj681KDgB+vIAXAPNDL65TZspDLVnxb7qX6AqtwwyIxuzhttaRKW2fFi+QEcItmgCmBcMoP7fXNcVyCjl6CJXKWVIAqxAYNNkwPJ3p0cPnGBTewp3beVJUXwUDx4dROMaW43CrA3oE0fYUd2yqk1IaZg+Ic/E8EonBuThe5cDzj4BjEmvABfUjPxp3LdmDlrdn7oB4SUlJyULxF7IOiI8q04KkAAAAAElFTkSuQmCC);
+        background-color: transparent;
+        background-repeat: no-repeat;
+        background-position: center;
+        background-size: contain;
+        display: inline-block;
+        width: 0.4rem;
+        height: 0.4rem;
+        position: absolute;
+        right: 0.16rem;
+        top: 0.16rem;
+        pointer-events: auto;
+    }
+    .van-dialog.ent-search-dialog.max-54 {
+        max-width: 5.4rem;
+    }
     .van-dialog.ent-search-dialog {
       border-radius: 0.16rem;
       font-family: PingFang SC;
@@ -377,6 +399,53 @@ Vue.component('keep-component', {
       })
     },
     ajaxAddKeep (id, type) {
+      var _this = this
+      var tempFn = function () {
+        _this.ajaxAddKeepFn(id, type)
+      }
+      if (type) {
+        $.post('/salesLeads/retainedCapital', { source: 'article_collection' }).done(function (r) {
+          if (r && r.error_msg === '' && r.data) {
+            if (r.data.retainedCapital) {
+              _this.$dialog.close()
+              _this.$dialog.confirm({
+                message: '重要项目一键创建标签收藏!请完善个人信息,为您匹配精准服务',
+                className: 'ent-search-dialog max-54 add-close-after',
+                overlayClass: 'z-2030',
+                showCancelButton: false,
+                confirmButtonText: '立即前往',
+              }).then(function () {
+                sessionStorage.setItem('salesBackData', JSON.stringify({
+                  type: 'article_collection',
+                  id: id,
+                  shoucang: type
+                }))
+                try {
+                  if (utils.isWeiXinBrowser && SuperSearch && typeof SuperSearch.setSessionStorage === 'function') {
+                    SuperSearch.setSessionStorage();
+                  }
+                } catch (e) {
+                  console.log('no list')
+                }
+                location.href = (utils.isWeiXinBrowser ? '/weixin' : '/jyapp') + '/frontPage/bigmember/free/perfect_info?origin=article_collection'
+              }).catch(function () {});
+              $("body").on('click', '.add-close-after .van-dialog__content', function (e) {
+                _this.$dialog.close()
+              })
+            } else {
+              tempFn()
+            }
+          } else {
+            tempFn()
+          }
+        }).fail(function () {
+          tempFn()
+        })
+      } else {
+        tempFn()
+      }
+    },
+    ajaxAddKeepFn (id, type) {
       try {
         var isContent = location.href.indexOf('/article/content') !== -1
         _hmt.push(['_trackEvent','超级订阅-' + (utils.isWeiXinBrowser ? 'wx' : 'app'), 'click', (isContent ? '详情页标讯收藏按钮' : '列表页标讯收藏-星标')]);
@@ -494,3 +563,36 @@ Vue.component('keep-component', {
     }
   }
 })
+// 检查返回是否需要继续下一步
+function checkBackSuccess () {
+  var isBackSuccess = sessionStorage.getItem('salesBackStatus') || false
+  if (isBackSuccess == 'true') {
+    var sessionData = JSON.parse(sessionStorage.getItem('salesBackData') || '{}')
+    if (sessionData.type === 'article_collection') {
+      if (vKeepComponent) {
+        vKeepComponent.changeBid(sessionData.id, sessionData.shoucang)
+      }
+    }
+    if (sessionData.type === 'article_original') {
+      if (!utils.isWeiXinBrowser) {
+        JyObj.openExternalLink(sessionData.url,"查看原文");
+      }
+    }
+  }
+  sessionStorage.removeItem('salesBackStatus')
+  sessionStorage.removeItem('salesBackData')
+}
+$(function () {
+    checkBackSuccess()
+    if (utils.isWeiXinBrowser) {
+      var aTime = new Date().getTime()
+      window.addEventListener('pageshow', function(event) {
+        if (event.persisted || window.performance && window.performance.navigation.type == 2) {
+          var cTime = new Date().getTime()
+          if (cTime - aTime > 500) {
+            checkBackSuccess()
+          }
+        }
+      }, false);
+    }
+})

+ 370 - 0
src/web/staticres/common-module/perfect-info/index.css

@@ -0,0 +1,370 @@
+.perfect-info-group {
+  font-family: PingFang SC;
+  font-style: normal;
+  font-weight: 500;
+  background-color: #f5f6f7;
+}
+
+.perfect-info-group .top-tip-text {
+  margin: 0 auto;
+  display: inline-block;
+  text-align: left;
+}
+
+.perfect-info-group .top-tip-group {
+  font-family: PingFang SC;
+  font-style: normal;
+  font-weight: 500;
+  font-size: 0.26rem;
+  line-height: 0.4rem;
+  color: #FF9F40;
+  background-color: #FFF4E8;
+  padding: 0.24rem 0.2rem;
+  text-align: center;
+}
+
+.perfect-info-group .form-card-group {
+  padding: 0 0.24rem;
+}
+
+.perfect-info-group .form-card-group .van-cell--required::before {
+  content: unset;
+}
+
+.perfect-info-group .form-card-group .van-cell--required .van-field__label span {
+  position: relative;
+}
+
+.perfect-info-group .form-card-group .van-cell--required .van-field__label span::after {
+  position: absolute;
+  right: -0.28rem;
+  color: #ee0a24;
+  font-size: 0.28rem;
+  content: '*';
+}
+
+.perfect-info-group .form-card-group .form-title {
+  font-family: PingFang SC;
+  font-style: normal;
+  font-weight: 500;
+  font-size: 0.24rem;
+  line-height: 0.36rem;
+  color: #9B9CA3;
+  margin-top: 0.32rem;
+  margin-bottom: 0.16rem;
+}
+
+.perfect-info-group .form-card-group .form-content-card {
+  border-radius: 0.16rem;
+  background-color: #fff;
+  position: relative;
+}
+
+.perfect-info-group .form-card-group .form-content-card .van-cell:first-child {
+  border-radius: 0.16rem 0.16rem  0 0;
+}
+
+.perfect-info-group .form-card-group .form-content-card .van-cell:last-child {
+  border-radius: 0 0  0.16rem 0.16rem;
+}
+
+.perfect-info-group .form-tick-group {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: flex-start;
+  margin-top: 0.4rem;
+  padding: 0 0.32rem;
+  font-family: PingFang SC;
+  font-style: normal;
+  font-weight: 500;
+  font-size: 0.24rem;
+  line-height: 0.36rem;
+  color: #5F5E64;
+}
+
+.perfect-info-group .form-tick-group .more-icon-box {
+  margin-right: 0.08rem;
+  width: 0.48rem;
+  height: 0.48rem;
+}
+
+.perfect-info-group .form-tick-group .more-icon-box .j-icon {
+  width: 0.48rem;
+  height: 0.48rem;
+}
+
+.perfect-info-group .pop-title-group {
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+  font-family: PingFang SC;
+  font-style: normal;
+  font-weight: 500;
+  font-size: 0.4rem;
+  line-height: 0.6rem;
+  padding: 0.12rem 0.32rem;
+  padding-right: 0;
+  color: #171826;
+}
+
+.perfect-info-group .pop-title-group .close-padding-box {
+  padding: 0.32rem;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: center;
+}
+
+.perfect-info-group .pop-title-group .j-icon {
+  width: 0.4rem;
+  height: 0.4rem;
+}
+
+.perfect-info-group > .j-container > .j-main {
+  padding-bottom: 1.2rem;
+}
+
+.perfect-info-group .prefect-pop-group .van-sidebar-item--select::before {
+  content: unset;
+}
+
+.perfect-info-group .prefect-pop-group .van-tree-select__nav {
+  flex: unset;
+  flex-shrink: 0;
+  width: auto;
+}
+
+.perfect-info-group .prefect-pop-group .van-tree-select__content {
+  flex: 1;
+}
+
+.perfect-info-group .prefect-pop-group .van-tree-select__nav-item.van-sidebar-item--select {
+  background-color: #fff;
+}
+
+.perfect-info-group .prefect-pop-group .van-tree-select__nav-item,
+.perfect-info-group .prefect-pop-group .van-tree-select__item {
+  background: #F5F6F7;
+  color: #5F5E64;
+  font-size: 0.28rem;
+  line-height: 0.4rem;
+  padding: 0.24rem 0.4rem;
+  box-shadow: inset 0px -0.5px 0px rgba(0, 0, 0, 0.05);
+  font-weight: 500;
+}
+
+.perfect-info-group .prefect-pop-group .van-tree-select__item.van-tree-select__item--active {
+  padding-right: 0.8rem;
+}
+
+.perfect-info-group .prefect-pop-group .van-tree-select__item {
+  background-color: #fff;
+  white-space: normal;
+}
+
+.perfect-info-group .prefect-pop-group .van-icon.van-icon-success.van-tree-select__selected::before {
+  content: unset;
+}
+
+.perfect-info-group .prefect-pop-group .van-icon.van-icon-success.van-tree-select__selected {
+  display: inline-block;
+  width: 0.48rem;
+  height: 0.48rem;
+  margin-top: -0.24rem;
+  transition: all 0.2s;
+  background-color: transparent;
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: contain;
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMpSURBVHgB7ZpNTttAFMffTKBV6YIcgU2lEKkivgEmUqWuWk5AOEHFCQg3oCcATpDuKrVF7g2cUClB6iZHyIqqbeLpvHxQPjzOjDMzAfN+mxiPLZGfPDPv/xwAgiAIgiAIgiAIgiAIgiAIXRg8ATZacflluXQIQjTwbyHYpys+OuiHwWDevSvwBHixXmoJIbavTzDRWEtKeLQ/714OBacaXZwwuCFnBhPvNW4vtqBq1LmeVncRAHOnF1JYQRM50FSNMwFnoEEhF+l5cuTYUbe+1QQNCidoM+p8kE/HsfICAzlIoQRVos4eF3CqGpfrzllvZ6sBBhRGUPVLXGMrPJISymnj8nxbygnAkEIs0pXP8cY8Ob9YEkIOHr0glMOfZ8rpC5bs6lTNaWhPscrXeJvx0js8Ho5GZz/fBG1YMjM58nAjbXwqJ7wMgz7kREtQ9TxuAOMnt+/kzW74+giWhA85iN4UY/zw3jmRNKvRj0NYAhg+pZwWKORIBjbkILprUOr8XpYkDJ/yo6a8wJIcREuQDHvq9cazJGX4nJKIZL8b2lsftQStMrErP7IlnV+cgGOywuf43xDJwWU9OAWLaAlqyy3y2aSOUEuSPRaXknTyVa8eHINljCvpzW+dU8ZhL+OS9pWUmbfuSMNm+DQlV9TwKcl2+DQldxaTtVEzdfv/Tz/5LXeTt/l3Exfh05SFwqpLSRg+YYXHqnEB4ntvp5YrX5mwUBbr1oOm3MGyqulxtYtVLxgwC5+q8Un4HO+szlk4rNqW5Dp8mmKtH2RjuvnKVyZYbZhVZKjld0PtbQZ/h0mY1gl4iHIQq/0grGKx1M+4pLwq15ZXuADfwGf4NMV6w2xc6g8TbG2q1giUFOMWPjuxtj5+clThcwBLkoM460lPt2n84mXVNQmDBge2nZWv8Im0na9McNq0r0RyuxY8YuqpkwmGTxf5ygSnPWmcFrh24AILpjgKn6Z4ee1j/CQ5zlcmeHsvpi3pAclBvL44nCfJR/g0xfub1VoUl/+I+9u6r/BpivcXh7PupIAEf36CtdJACPjoK3wSBEEQBEEQBEEQBEEQBEG44x/qVZ39mGkA4AAAAABJRU5ErkJggg==);
+}
+
+.perfect-info-group .hide-border::after {
+  content: unset !important;
+}
+
+.perfect-info-group .other-input-group .van-field__label {
+  color: transparent;
+}
+
+.perfect-info-group .associate-ent-group {
+  position: absolute;
+  top: 0.72rem;
+  left: 0.96rem;
+  width: 5.74rem;
+  z-index: 99;
+  background: #FFFFFF;
+  box-shadow: 0px 0.08rem 0.32rem rgba(8, 31, 38, 0.08);
+  border-radius: 0.08rem;
+  padding-left: 0.32rem;
+}
+
+.perfect-info-group .associate-ent-group .associate-ent-item {
+  font-family: PingFang SC;
+  font-style: normal;
+  font-weight: 500;
+  font-size: 0.28rem;
+  line-height: 0.4rem;
+  color: #171826;
+  padding: 0.28rem 0.32rem;
+  padding-left: 0;
+  border-bottom: 0.01rem solid rgba(0, 0, 0, 0.05);
+}
+
+.perfect-info-group .associate-ent-group .associate-ent-item:last-child {
+  border-bottom-color: transparent;
+}
+
+.perfect-info-group .van-dialog.ent-search-dialog.max-54 {
+  max-width: 5.4rem;
+}
+
+.perfect-info-group .van-dialog.ent-search-dialog {
+  border-radius: 0.16rem;
+  font-family: PingFang SC;
+  font-style: normal;
+  font-weight: 500;
+  font-size: 0.32rem;
+  line-height: 0.48rem;
+  color: #171826;
+  z-index: 2031 !important;
+}
+
+.perfect-info-group .z-2030 {
+  z-index: 2030 !important;
+}
+
+.perfect-info-group .van-dialog.ent-search-dialog .van-dialog__content .van-dialog__message {
+  text-align: left;
+}
+
+.perfect-info-group .van-dialog.ent-search-dialog .van-dialog__confirm,
+.perfect-info-group .van-dialog.ent-search-dialog .van-dialog__cancel {
+  font-size: 0.36rem;
+  line-height: 0.52rem;
+  color: #171826;
+}
+
+.perfect-info-group .van-dialog.ent-search-dialog .van-dialog__confirm {
+  color: #2ABED1;
+}
+
+.perfect-info-group .condition-select-group {
+  padding-left: 0.32rem;
+}
+
+.perfect-info-group .condition-select-group.more .condition-select-item .more-icon-box .j-icon {
+  width: 0.48rem !important;
+  height: 0.48rem !important;
+}
+
+.perfect-info-group .condition-select-group.more .condition-select-item .more-icon-box {
+  position: relative;
+  width: 0.48rem;
+  height: 0.48rem;
+}
+
+.perfect-info-group .condition-select-group.more .condition-select-item .more-icon-box .j-icon {
+  top: 0;
+  left: 0;
+  position: absolute;
+}
+
+.perfect-info-group .condition-select-group.more .condition-select-item .icon-tick-circle-fill {
+  opacity: 0;
+}
+
+.perfect-info-group .condition-select-group.more .condition-select-item .icon-tick-circle {
+  opacity: 1;
+}
+
+.perfect-info-group .condition-select-group.more .condition-select-item.checked .icon-tick-circle-fill {
+  opacity: 1;
+}
+
+.perfect-info-group .condition-select-group.more .condition-select-item.checked .icon-tick-circle {
+  opacity: 0;
+}
+
+.perfect-info-group .condition-select-group .condition-select-item {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: row;
+  flex-direction: row;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  -webkit-box-pack: justify;
+  -webkit-justify-content: space-between;
+  justify-content: space-between;
+  padding: 0.24rem 0.32rem;
+  padding-left: 0;
+  border-bottom: 0.5px solid rgba(0, 0, 0, 0.05);
+  font-family: PingFang SC;
+  font-style: normal;
+  font-weight: 500;
+  font-size: 0.28rem;
+  line-height: 0.4rem;
+  color: #5F5E64;
+}
+
+.perfect-info-group .condition-select-group .condition-select-item .j-icon {
+  opacity: 0;
+  width: 0.48rem;
+  height: 0.48rem;
+  -webkit-transition: all 0.2s;
+  transition: all 0.2s;
+}
+
+.perfect-info-group .condition-select-group .condition-select-item .tip-tag {
+  background: rgba(42, 190, 209, 0.1);
+  border-radius: 0.16rem;
+  padding: 0 0.12rem;
+  font-family: PingFang SC;
+  font-style: normal;
+  font-weight: 500;
+  font-size: 0.2rem;
+  line-height: 0.32rem;
+  color: #2ABED1;
+  margin-left: 0.08rem;
+}
+
+.perfect-info-group .condition-select-group .condition-select-item .row-item-group {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: row;
+  flex-direction: row;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  -webkit-box-pack: start;
+  -webkit-justify-content: flex-start;
+  justify-content: flex-start;
+}
+
+.perfect-info-group .condition-select-group .condition-select-item.checked {
+  color: #2ABED1;
+}
+
+.perfect-info-group .condition-select-group .condition-select-item.disabled {
+  color: #C0C4CC;
+}
+
+.perfect-info-group .condition-select-group .condition-select-item.disabled .disabled-tag {
+  display: inline-block;
+}
+
+.perfect-info-group .condition-select-group .condition-select-item.checked .j-icon {
+  opacity: 1;
+}
+
+/*# sourceMappingURL=index.css.map */

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 7 - 0
src/web/staticres/common-module/perfect-info/index.css.map


+ 339 - 0
src/web/staticres/common-module/perfect-info/index.scss

@@ -0,0 +1,339 @@
+.perfect-info-group {
+  font-family: PingFang SC;
+  font-style: normal;
+  font-weight: 500;
+  background-color: #f5f6f7;
+  .top-tip-text {
+    margin: 0 auto;
+    display: inline-block;
+    text-align: left;
+  }
+  .top-tip-group {
+    font-family: PingFang SC;
+    font-style: normal;
+    font-weight: 500;
+    font-size: 0.26rem;
+    line-height: 0.4rem;
+    color: #FF9F40;
+    background-color: #FFF4E8;
+    padding: 0.24rem 0.2rem;
+    text-align: center;
+  }
+  .form-card-group {
+    padding: 0 0.24rem;
+    .van-cell--required {
+      &::before {
+        content: unset;
+      }
+      .van-field__label span {
+        position: relative;
+        &::after {
+          position: absolute;
+          right: -0.28rem;
+          color: #ee0a24;
+          font-size: 0.28rem;
+          content: '*';
+        }
+      }
+    }
+    .form-title {
+      font-family: PingFang SC;
+      font-style: normal;
+      font-weight: 500;
+      font-size: 0.24rem;
+      line-height: 0.36rem;
+      color: #9B9CA3;
+      margin-top: 0.32rem;
+      margin-bottom: 0.16rem;
+    }
+    .form-content-card {
+      border-radius: 0.16rem;
+      background-color: #fff;
+      position: relative;
+      .van-cell {
+        &:first-child {
+          border-radius: 0.16rem 0.16rem  0 0;
+        }
+        &:last-child {
+          border-radius: 0 0  0.16rem 0.16rem;
+        }
+      }
+    }
+  }
+  .form-tick-group {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    justify-content: flex-start;
+    margin-top: 0.4rem;
+    padding: 0 0.32rem;
+    font-family: PingFang SC;
+    font-style: normal;
+    font-weight: 500;
+    font-size: 0.24rem;
+    line-height: 0.36rem;
+    color: #5F5E64;
+    .more-icon-box {
+      margin-right: 0.08rem;
+      width: 0.48rem;
+      height: 0.48rem;
+    }
+    .more-icon-box .j-icon {
+      width: 0.48rem;
+      height: 0.48rem;
+    }
+  }
+  .pop-title-group {
+    width: 100%;
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    justify-content: space-between;
+    font-family: PingFang SC;
+    font-style: normal;
+    font-weight: 500;
+    font-size: 0.4rem;
+    line-height: 0.6rem;
+    padding: 0.12rem 0.32rem;
+    padding-right: 0;
+    color: #171826;
+    .close-padding-box {
+      padding: 0.32rem;
+      display: flex;
+      flex-direction: row;
+      align-items: center;
+      justify-content: center;
+    }
+    .j-icon {
+      width: 0.4rem;
+      height: 0.4rem;
+    }
+  }
+  >.j-container > .j-main {
+    padding-bottom: 1.2rem;
+  }
+  .prefect-pop-group {
+    .van-sidebar-item--select::before {
+      content: unset;
+    }
+    .van-tree-select__nav {
+      flex: unset;
+      flex-shrink: 0;
+      width: auto;
+    }
+    .van-tree-select__content {
+      flex: 1;
+    }
+    .van-tree-select__nav-item.van-sidebar-item--select {
+      background-color: #fff;
+    }
+    .van-tree-select__nav-item,
+    .van-tree-select__item {
+      background: #F5F6F7;
+      color: #5F5E64;
+      font-size: 0.28rem;
+      line-height: 0.4rem;
+      padding: 0.24rem 0.4rem;
+      box-shadow: inset 0px -0.5px 0px rgba(0, 0, 0, 0.05);
+      font-weight: 500;
+    }
+    .van-tree-select__item.van-tree-select__item--active {
+      padding-right: 0.8rem;
+    }
+    .van-tree-select__item {
+      background-color: #fff;
+      white-space: normal;
+    }
+    .van-icon.van-icon-success.van-tree-select__selected::before {
+      content: unset;
+    }
+    .van-icon.van-icon-success.van-tree-select__selected {
+      display: inline-block;
+      width: 0.48rem;
+      height: 0.48rem;
+      margin-top: -0.24rem;
+      transition: all 0.2s;
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: contain;
+      background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMpSURBVHgB7ZpNTttAFMffTKBV6YIcgU2lEKkivgEmUqWuWk5AOEHFCQg3oCcATpDuKrVF7g2cUClB6iZHyIqqbeLpvHxQPjzOjDMzAfN+mxiPLZGfPDPv/xwAgiAIgiAIgiAIgiAIgiAIXRg8ATZacflluXQIQjTwbyHYpys+OuiHwWDevSvwBHixXmoJIbavTzDRWEtKeLQ/714OBacaXZwwuCFnBhPvNW4vtqBq1LmeVncRAHOnF1JYQRM50FSNMwFnoEEhF+l5cuTYUbe+1QQNCidoM+p8kE/HsfICAzlIoQRVos4eF3CqGpfrzllvZ6sBBhRGUPVLXGMrPJISymnj8nxbygnAkEIs0pXP8cY8Ob9YEkIOHr0glMOfZ8rpC5bs6lTNaWhPscrXeJvx0js8Ho5GZz/fBG1YMjM58nAjbXwqJ7wMgz7kREtQ9TxuAOMnt+/kzW74+giWhA85iN4UY/zw3jmRNKvRj0NYAhg+pZwWKORIBjbkILprUOr8XpYkDJ/yo6a8wJIcREuQDHvq9cazJGX4nJKIZL8b2lsftQStMrErP7IlnV+cgGOywuf43xDJwWU9OAWLaAlqyy3y2aSOUEuSPRaXknTyVa8eHINljCvpzW+dU8ZhL+OS9pWUmbfuSMNm+DQlV9TwKcl2+DQldxaTtVEzdfv/Tz/5LXeTt/l3Exfh05SFwqpLSRg+YYXHqnEB4ntvp5YrX5mwUBbr1oOm3MGyqulxtYtVLxgwC5+q8Un4HO+szlk4rNqW5Dp8mmKtH2RjuvnKVyZYbZhVZKjld0PtbQZ/h0mY1gl4iHIQq/0grGKx1M+4pLwq15ZXuADfwGf4NMV6w2xc6g8TbG2q1giUFOMWPjuxtj5+clThcwBLkoM460lPt2n84mXVNQmDBge2nZWv8Im0na9McNq0r0RyuxY8YuqpkwmGTxf5ygSnPWmcFrh24AILpjgKn6Z4ee1j/CQ5zlcmeHsvpi3pAclBvL44nCfJR/g0xfub1VoUl/+I+9u6r/BpivcXh7PupIAEf36CtdJACPjoK3wSBEEQBEEQBEEQBEEQBEG44x/qVZ39mGkA4AAAAABJRU5ErkJggg==);
+    }
+  }
+  .hide-border::after {
+    content: unset !important;
+  }
+  .other-input-group {
+    .van-field__label {
+      color: transparent;
+    }
+  }
+  .associate-ent-group {
+    position: absolute;
+    top: 0.72rem;
+    left: 0.96rem;
+    width: 5.74rem;
+    z-index: 99;
+    background: #FFFFFF;
+    box-shadow: 0px 0.08rem 0.32rem rgba(8, 31, 38, 0.08);
+    border-radius: 0.08rem;
+    padding-left: 0.32rem;
+    .associate-ent-item {
+      font-family: PingFang SC;
+      font-style: normal;
+      font-weight: 500;
+      font-size: 0.28rem;
+      line-height: 0.4rem;
+      color: #171826;
+      padding: 0.28rem 0.32rem;
+      padding-left: 0;
+      border-bottom: 0.01rem solid rgba(0, 0, 0, 0.05);
+      &:last-child {
+        border-bottom-color: transparent;
+      }
+    }
+  }
+  // 弹窗
+  .van-dialog.ent-search-dialog.max-54 {
+    max-width: 5.4rem;
+  }
+  .van-dialog.ent-search-dialog {
+    border-radius: 0.16rem;
+    font-family: PingFang SC;
+    font-style: normal;
+    font-weight: 500;
+    font-size: 0.32rem;
+    line-height: 0.48rem;
+    color: #171826;
+    z-index: 2031 !important;
+  }
+
+  .z-2030 {
+    z-index: 2030 !important;
+  }
+
+  .van-dialog.ent-search-dialog .van-dialog__content .van-dialog__message {
+    text-align: left;
+  }
+
+  .van-dialog.ent-search-dialog .van-dialog__confirm,
+  .van-dialog.ent-search-dialog .van-dialog__cancel {
+    font-size: 0.36rem;
+    line-height: 0.52rem;
+    color: #171826;
+  }
+
+  .van-dialog.ent-search-dialog .van-dialog__confirm {
+    color: #2ABED1;
+  }
+  // 复用多选框
+   .condition-select-group {
+    padding-left: 0.32rem;
+  }
+
+   .condition-select-group.more .condition-select-item .more-icon-box .j-icon {
+    width: 0.48rem !important;
+    height: 0.48rem !important;
+  }
+   .condition-select-group.more .condition-select-item .more-icon-box {
+    position: relative;
+    width: 0.48rem;
+    height: 0.48rem;
+  }
+
+   .condition-select-group.more .condition-select-item .more-icon-box .j-icon {
+    top: 0;
+    left: 0;
+    position: absolute;
+  }
+
+   .condition-select-group.more .condition-select-item .icon-tick-circle-fill {
+    opacity: 0;
+  }
+
+   .condition-select-group.more .condition-select-item .icon-tick-circle {
+    opacity: 1;
+  }
+
+   .condition-select-group.more .condition-select-item.checked .icon-tick-circle-fill {
+    opacity: 1;
+  }
+
+   .condition-select-group.more .condition-select-item.checked .icon-tick-circle {
+    opacity: 0;
+  }
+
+   .condition-select-group .condition-select-item {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: row;
+    flex-direction: row;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: justify;
+    -webkit-justify-content: space-between;
+    justify-content: space-between;
+    padding: 0.24rem 0.32rem;
+    padding-left: 0;
+    border-bottom: 0.5px solid rgba(0, 0, 0, 0.05);
+    font-family: PingFang SC;
+    font-style: normal;
+    font-weight: 500;
+    font-size: 0.28rem;
+    line-height: 0.4rem;
+    color: #5F5E64;
+  }
+
+   .condition-select-group .condition-select-item .j-icon {
+    opacity: 0;
+    width: 0.48rem;
+    height: 0.48rem;
+    -webkit-transition: all 0.2s;
+    transition: all 0.2s;
+  }
+
+   .condition-select-group .condition-select-item .tip-tag {
+    background: rgba(42, 190, 209, 0.1);
+    border-radius: 0.16rem;
+    padding: 0 0.12rem;
+    font-family: PingFang SC;
+    font-style: normal;
+    font-weight: 500;
+    font-size: 0.2rem;
+    line-height: 0.32rem;
+    color: #2ABED1;
+    margin-left: 0.08rem;
+  }
+   .condition-select-group .condition-select-item .row-item-group {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: row;
+    flex-direction: row;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: start;
+    -webkit-justify-content: flex-start;
+    justify-content: flex-start;
+  }
+   .condition-select-group .condition-select-item.checked {
+    color: #2ABED1;
+  }
+   .condition-select-group .condition-select-item.disabled {
+    color: #C0C4CC;
+  }
+   .condition-select-group .condition-select-item.disabled .disabled-tag {
+    display: inline-block;
+  }
+
+   .condition-select-group .condition-select-item.checked .j-icon {
+    opacity: 1;
+  }
+}

+ 221 - 0
src/web/staticres/common-module/selector/js/static-data.js

@@ -0,0 +1,221 @@
+var industryJson = [
+  {
+    name: '互联网/IT/电子/通信',
+    children: [
+      {name: '电子商务'},
+      {name: '企业服务'},
+      {name: '人工智能'},
+      {name: '在线教育'},
+      {name: '在线医疗'},
+      {name: '新媒体'},
+      {name: '物联网'},
+      {name: '新零售'},
+      {name: '区跨链'},
+      {name: '互联网'},
+      {name: '游戏'},
+      {name: '云计算/大数据'},
+      {name: '网络/信息安全'},
+      {name: '在线生活服务(O2O)'},
+      {name: '在线音乐/视频/阅读'},
+      {name: 'IT服务'},
+      {name: '计算机软件'},
+      {name: '计算机硬件'},
+      {name: '通信/网络设备'},
+      {name: '运营商/增值服务'},
+      {name: '电子/半导体/集成电路'}
+    ]
+  },
+  {
+    name: '房地产/建筑',
+    children: [
+      {name: '房地产开发与经营'},
+      {name: '土地与公共设施管理'},
+      {name: '公共建筑装饰装修'},
+      {name: '房地产中介'},
+      {name: '物业服务'},
+      {name: '建筑设计'},
+      {name: '工程施工'},
+      {name: '建筑设备安装'},
+      {name: '装饰装修'},
+      {name: '建材'},
+      {name: '建筑工程检测'}
+    ]
+  },
+  {
+    name: '金融业',
+    children: [
+      {name: '银行'},
+      {name: '保险业'},
+      {name: '基金'},
+      {name: '信托'},
+      {name: '证券/期货'},
+      {name: '投资/融资'},
+      {name: '汽车金融服务'},
+      {name: '互联网金融/小额贷款'},
+      {name: '租赁/拍卖/典当/担保'}
+    ]
+  },
+  {
+    name: '教育培训/科研',
+    children: [
+      {name: '培训/课外教育/教育辅助'},
+      {name: '学校教育'},
+      {name: '学术/科研'},
+      {name: '科学技术推广服务业'}
+    ]
+  },
+  {
+    name: '广告/传媒/文化/体育',
+    children: [
+      {name: '广告业'},
+      {name: '广播/电视/电影/录音制作'},
+      {name: '会议/展览服务'},
+      {name: '文化艺术/娱乐'},
+      {name: '体育'},
+      {name: '新闻/出版'}
+    ]
+  },
+  {
+    name: '制药/医疗',
+    children: [
+      {name: '医院'},
+      {name: '卫生服务'},
+      {name: '生物工程'},
+      {name: '医药制造'},
+      {name: '医疗设备/器械'}
+    ]
+  },
+  {
+    name: '批发/零售/贸易',
+    children: [
+      {name: '快速消费品'},
+      {name: '耐用消费品'},
+      {name: '零售/批发'},
+      {name: '食品/饮料'},
+      {name: '烟酒'},
+      {name: '日化'},
+      {name: '服装/纺织/皮革'},
+      {name: '玩具/礼品'},
+      {name: '珠宝/首饰'},
+      {name: '办公用品设备'},
+      {name: '工艺品/收藏品'},
+      {name: '家具/家居/家电'},
+      {name: '贸易/进出口代理'},
+    ]
+  },
+  {
+    name: '制造业',
+    children: [
+      {name: '船舶/航空/航天/火车制造'},
+      {name: '电气机械/器材制造'},
+      {name: '电子设备制造'},
+      {name: '钢铁和有色金属冶炼及加工'},
+      {name: '专用设备制造'},
+      {name: '金属制品业'},
+      {name: '通用设备制造'},
+      {name: '仪器仪表制造'},
+      {name: '非金属矿物制品业'},
+      {name: '化学纤维制造业'},
+      {name: '化学原料/化学制品'},
+      {name: '日化产品制造'},
+      {name: '纺织业/服饰产品加工制造'},
+      {name: '农副产品加工制造'},
+      {name: '燃料资源加工制造'},
+      {name: '橡胶和塑料制品'},
+      {name: '印刷/包装/造纸'},
+      {name: '家具制造'},
+      {name: '文体/办公设备制造'},
+      {name: '工业自动化'}
+    ]
+  },
+  {
+    name: '汽车',
+    children: [
+      {name: '汽车销售与服务'},
+      {name: '汽车制造'},
+      {name: '汽车零部件'}
+    ]
+  },
+  {
+    name: '交通运输/仓储/物流',
+    children: [
+      {name: '火车站/港口/汽车站/路政'},
+      {name: '民航/铁路/公路/水路客运'},
+      {name: '货运/物流仓储'},
+      {name: '邮政/快递'}
+    ]
+  },
+  {
+    name: '专业服务',
+    children: [
+      {name: '法律服务'},
+      {name: '咨询服务'},
+      {name: '翻译服务'},
+      {name: '人力资源服务'},
+      {name: '财务/审计/税务'},
+      {name: '工程技术与设计服务'},
+      {name: '检测/认证'},
+      {name: '景区/商业/市场等综合管理'},
+      {name: '商业代理服务'},
+      {name: '专利/商标/知识产权'},
+      {name: '租赁服务'},
+      {name: '专业技术服务'}
+    ]
+  },
+  {
+    name: '生活服务',
+    children: [
+      {name: '餐饮业'},
+      {name: '酒店/民宿'},
+      {name: '旅游业'},
+      {name: '婚庆/摄影'},
+      {name: '美容/保健/养生'},
+      {name: '居民服务'}
+    ]
+  },
+  {
+    name: '能源/环保/矿产',
+    children: [
+      {name: '石油/石化'},
+      {name: '化工'},
+      {name: '电力/水利/热力/燃气'},
+      {name: '新能源'},
+      {name: '环保'},
+      {name: '矿产/采掘'}
+    ]
+  },
+  {
+    name: '政府/非盈利机构',
+    children: [
+      {name: '国家机构'},
+      {name: '社团/组织/社会保障'},
+      {name: '养老/孤儿/看护等社会服务'}
+    ]
+  },
+  {
+    name: '农/林/牧/渔',
+    children: [
+      {name: '农/林/牧/渔'}
+    ]
+  }
+]
+var jobJson = [
+  '总裁/总经理/总监', 
+  '市场经理/主管',
+  '销售经理/主管',
+  '渠道经理/主管',
+  '投标经理/专员',
+  '采购经理/专员',
+  '数据分析师',
+  '招标师', 
+  '项目经理', 
+  '其他'
+]
+var companyScaleJson = [
+  '0-19人',
+  '20-99人',
+  '100-499人',
+  '500-999人',
+  '1000-9999人',
+  '100000人以上'
+]

+ 312 - 0
src/web/staticres/css/collect-user-info.css

@@ -0,0 +1,312 @@
+.fl{
+  float: left;
+}
+.fr{
+  float: right;
+}
+/* 滚动条样式 */
+.user-data-dialog ::-webkit-scrollbar {
+  /*滚动条整体样式*/
+  width: 6px;
+  height: 1px;
+}
+.user-data-dialog ::-webkit-scrollbar-thumb {
+  /*滚动条里面小方块*/
+  border-radius: 10px;
+  background: #e0e0e0;
+}
+.user-data-dialog ::-webkit-scrollbar-track {
+  /*滚动条里面轨道*/
+  box-shadow: inset 0 0 5px #fff;
+  border-radius: 10px;
+  background: transparent;
+}
+#collectUserInfoDialog .mask{
+  position: fixed;
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: #000000;
+  opacity: 0.6;
+  z-index: 999;
+}
+#collectUserInfoDialog .dialog-container{
+  position: fixed;
+  left: 50%;
+  top: 50%;
+  width: 752px;
+  max-height: 680px;
+  margin: 0 auto;
+  padding: 32px;
+  background: #fff;
+  border-radius: 8px;
+  transform: translate(-50%,-50%);
+  z-index: 1000;
+  box-sizing: border-box;
+  overflow-y: auto;
+}
+#collectUserInfoDialog .dialog-header{
+  color: #1D1D1D;
+  font-size: 18px;
+  line-height: 28px;
+  text-align: center;
+}
+#collectUserInfoDialog .dialog-content{
+  margin-top: 20px;
+}
+#collectUserInfoDialog .form-title{
+  font-size: 14px;
+  line-height: 22px;
+  color: #2CB7CA;
+}
+#collectUserInfoDialog .form-main{
+  margin: 10px 0 14px;
+}
+#collectUserInfoDialog .short-control{
+  width: calc(50% - 16px);
+}
+#collectUserInfoDialog .long-control{
+  width: 100%;
+}
+
+#collectUserInfoDialog .item-input{
+  width: auto;
+}
+#collectUserInfoDialog .company-result{
+  position: absolute;
+  width: calc(600px - 16px);
+  top: 38px;
+  left: 88px;
+  height: auto;
+  background-color: #fff;
+  border: 1px solid #2CB7CA;
+  z-index: 100;
+  border-radius: 4px;
+}
+#collectUserInfoDialog .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 .company-list:hover{
+  background: #ECECEC;
+}
+#collectUserInfoDialog [data-short-input]{
+  width: calc(240px - 16px);
+  height: 36px;
+  box-sizing: border-box;
+  border-radius: 4px;
+}
+#collectUserInfoDialog [data-long-input]{
+  width: calc(600px - 16px);
+  height: 36px;
+  border: 1px solid #E0E0E0;
+  box-sizing: border-box;
+  border-radius: 4px;
+}
+#collectUserInfoDialog .agree-service{
+  text-align: center;
+}
+#collectUserInfoDialog .agree-service .el-checkbox__label, 
+#collectUserInfoDialog .agree-service .el-checkbox__input.is-checked+.el-checkbox__label{
+  color: #686868;
+}
+#collectUserInfoDialog .dialog-footer{
+  padding-top: 20px;
+  text-align: center;
+}
+#collectUserInfoDialog .cancel-btn{
+  width: 132px;
+  height: 36px;
+  line-height: 36px;
+  padding: 0;
+  border-radius: 6px;
+}
+#collectUserInfoDialog .submit-btn{
+  width: 132px;
+  height: 36px;
+  padding: 0;
+  color: #fff;
+  line-height: 36px;
+  background: #2CB7CA;
+  border-radius: 6px;
+  border: 1px solid #2CB7CA;
+}
+#collectUserInfoDialog .submit-btn:hover{
+  color: #fff;
+  border-color: #2CB7CA;
+  background: #2CB7CA;
+}
+/* element-ui reset */
+#collectUserInfoDialog .company-type > .el-form-item__label,
+#collectUserInfoDialog .company-type > .el-form-item__content{
+  line-height: 22px;
+}
+.el-form-item{
+  margin-bottom: 12px;
+}
+.el-form-item__error{
+  padding: 0px 0 0 90px;
+  top: 99%;
+}
+.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 .el-input__inner{
+  height: 36px;
+  line-height: 36px;
+}
+.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;
+}
+
+
+#success-dialog .success-dialog-container{
+  position: fixed;
+  width: 380px;
+  top: 50%;
+  left: 50%;
+  padding: 20px;
+  transform: translateX(-50%) translateY(-50%);
+  background: #ffffff;
+  border-radius: 8px;
+  transition: all 2s linear;
+  z-index: 1038;
+}
+#success-dialog .success-title{
+  padding: 12px 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 12px;
+  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;
+}
+#collect-dialog .custom-btn:disabled{
+  opacity: 0.5;
+  cursor:not-allowed;
+}
+.el-popper ul li{
+  float: none!important;
+}

+ 570 - 0
src/web/staticres/js/pc-collect-user-info.js

@@ -0,0 +1,570 @@
+var temp = `
+  <div>
+    <div class="user-data-dialog" id="collectUserInfoDialog" v-if="showForm">
+      <div class="mask"></div>
+      <div class="dialog-container">
+        <div class="dialog-header">@@dialogTitle@@</div>
+        <div class="dialog-content">
+          <el-form class="user-form" :model="form" :rules="rules" ref="ruleForm">
+            <!-- 基本信息 -->
+            <div class="basic clearfix">
+              <div class="form-title">基本信息</div>
+              <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 class="item-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 class="item-input" placeholder="请输入手机号" @focus="phoneFocus"></el-input>
+                  </el-form-item>
+                </div>
+                <div class="short-control fl">
+                  <el-form-item label="邮箱 :" prop="mail">
+                    <el-input v-model.trim="form.mail" data-short-input class="item-input" placeholder="请输入邮箱" @focus="mailFocus"></el-input>
+                  </el-form-item>
+                </div>
+                <div class="short-control fr" style="display:none;">
+                  <el-form-item label="地区 :">
+                    <el-cascader data-short-input v-model="form.region" class="item-input" :options="regionData"
+                      placeholder="请选择省份城市" clearable></el-cascader>
+                  </el-form-item>
+                </div>
+                <div class="short-control fr">
+                  <el-form-item label="行业 :">
+                    <el-cascader data-short-input v-model="form.industry" class="item-input" :options="industryData"
+                      placeholder="请选择所属行业" :show-all-levels="false" clearable></el-cascader>
+                  </el-form-item>
+                </div>
+                <div class="short-control fr" style="display:none;">
+                  <el-form-item label="受雇类型 :">
+                    <el-select v-model="form.mold" data-short-input class="item-input">
+                      <el-option v-for="item in moldData" :key="item.value" :label="item.label" :value="item.value">
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </div>
+              </div>
+            </div>
+            <div class="company clearfix">
+              <div class="form-title">公司信息</div>
+              <div class="form-main">
+                <div class="long-control" style="position: relative;">
+                  <el-form-item label="公司名称 :" prop="companyName">
+                    <el-input 
+                    v-model.trim="form.companyName" 
+                    data-long-input
+                    class="item-input 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 class="long-control">
+                  <el-form-item label="公司类型 :" class="company-type">
+                    <el-checkbox-group v-model="form.companyType">
+                      <el-checkbox label="投标企业"></el-checkbox>
+                      <el-checkbox label="招标采购单位"></el-checkbox>
+                      <el-checkbox label="厂商"></el-checkbox>
+                      <el-checkbox label="招标代理机构"></el-checkbox>
+                      <el-checkbox label="经销商"></el-checkbox>
+                      <el-checkbox label="服务提供商"></el-checkbox>
+                      <el-checkbox label="其他"></el-checkbox>
+                    </el-checkbox-group>
+                  </el-form-item>
+                </div>
+                <div class="long-control">
+                  <el-form-item label="职位 :" prop="job">
+                    <el-select v-model="form.job" placeholder="请选择职位" data-short-input class="item-input" clearable>
+                      <el-option v-for="item in jobData" :key="item.value" :label="item.label" :value="item.value">
+                      </el-option>
+                    </el-select>
+                    <el-input 
+                    v-if="showOtherJob"
+                    v-model.trim="form.otherJob" 
+                    data-short-input
+                    class="item-input"
+                    @focus="otherFocus"
+                    placeholder="请输入职位名称">
+                    </el-input>
+                  </el-form-item>
+                </div>
+                <div class="long-control" style="display: none;">
+                  <el-form-item label="公司规模 :">
+                    <el-select v-model="form.scale" placeholder="请选择公司规模" data-short-input class="item-input" clearable>
+                      <el-option v-for="item in scaleData" :key="item.value" :label="item.label" :value="item.value">
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </div>
+                <div class="long-control">
+                  <el-form-item label="业务范围 :">
+                    <el-input type="textarea" autosize resize="none" v-model="form.business" data-long-input class="item-input"
+                      placeholder="请输入业务范围,让合作伙伴充分了解公司业务内容"></el-input>
+                  </el-form-item>
+                </div>
+                <div class="long-control">
+                  <el-form-item label="合作需求 :">
+                    <el-input type="textarea" autosize resize="none" v-model="form.need" data-long-input class="item-input"
+                      placeholder="请输入合作需求,从而创造并匹配更多合作交流机会"></el-input>
+                  </el-form-item>
+                </div>
+              </div>
+            </div>
+            <div class="agree-service">
+              <el-checkbox v-model="form.agreeChecked">&nbsp;我同意剑鱼标讯将业务范围及合作需求提供给潜在合作伙伴搜索、查看</el-checkbox>
+            </div>
+            <div class="dialog-footer">
+              <el-button class="cancel-btn" @click="cancelForm">暂不提供</el-button>
+              <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>
+  `
+var filterData = chinaMapJSON.filter(function (item) {
+  item.name = item.name.replace(/\s*/g,"")
+  return item.name !== '海外' && item.name !== '钓鱼岛'
+})
+filterData.forEach(function (item) {
+  if (item.name == '台湾省') { item.name = '台湾'}
+  item.name = item.name.replace(/自治区|特别行政区|壮族|回族|维吾尔/g, '')
+  item.label = item.name
+  item.value = item.name
+  var filterWord = ['北京市', '上海市', '天津市', '上海市', '重庆市', '香港', '澳门', '台湾']
+  if (filterWord.indexOf(item.name) == -1) {
+    item.children = item.city.map(function (v) {
+      return {
+        value: v.name,
+        label: v.name
+      }
+    })
+  }
+})
+industryJson.forEach(function (item) {
+  item.label = item.name
+  item.value = item.name
+  item.children = item.children.map(function (v) {
+    return {
+      value: v.name,
+      label: v.name
+    }
+  })
+})
+var jobData = jobJson.map(function (item) {
+  return {
+    value: item,
+    label: item
+  }
+})
+var companyScaleData = companyScaleJson.map(function (item) {
+  return {
+    value: item,
+    label: item
+  }
+})
+// 防抖
+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 vm = new Vue({
+  el: '#vue-collect-user-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 validEmail = function(rule,value,callback) {
+      var status = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-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();
+        }
+      }
+    }
+    var validJob = function(rule,value,callback) {
+      if(value === '') {
+        return callback(new Error('职位不能为空'));
+      } else {
+        if (value === '其他' && vm.form.otherJob === '') {
+          return callback(new Error('请输入职位'));
+        } else {
+          callback();
+        }
+      }
+    }
+    return {
+      dialogTitle: '为给您匹配精准的推荐信息,请完善个人信息',
+      // showCompany: true, // 是否显示公司信息
+      regionData: filterData, // 地区数据
+      industryData: industryJson, // 行业数据
+      jobData: jobData, // 职位数据
+      scaleData: companyScaleData, // 公司规模数据
+      moldData: [{ // 公司类型数据
+        label: '公司',
+        value: '公司'
+      }, {
+        label: '个体经营者',
+        value: '个体经营者'
+      },{
+        label: '其他',
+        value: '其他'
+      }],
+      form: {
+        name: '', // 姓名
+        phone: '', // 手机号
+        mail: '', // 邮箱
+        region: [], // 地区值
+        industry: [], // 行业值
+        mold: '公司', // 受雇类型值
+        companyName: '', // 公司名称
+        companyType: [], // 公司类型值
+        job: '', // 职位值
+        otherJob: '', //自定义职位
+        scale: '', // 公司规模
+        business: '', // 业务范围
+        need: '', // 合作需求
+        agreeChecked: true
+      },
+      rules: {
+        name: [
+          {
+            required: true,
+            validator: validName,
+            trigger: 'blur'
+          }
+        ],
+        phone: [
+          {
+            required: true,
+            validator: validPhone,
+            trigger: 'blur'
+          }
+        ],
+        mail: [
+          {
+            required: true,
+            validator: validEmail,
+            trigger: 'blur'
+          }
+        ],
+        companyName: [
+          {
+            required: true,
+            validator: validCompany,
+            trigger: 'blur'
+          }
+        ],
+        job: [
+          {
+            required: true,
+            validator: validJob
+          }
+        ]
+      },
+      showSearchResult: false,
+      companyList: [],
+      showForm: false,  // 显示表单填写弹框
+      showSuccess: false, // 显示提交成功弹框
+      isForce: false, // 是否强制
+      source: '', // 来源模块
+      curDom: null
+    }
+  },
+  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: {
+    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.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, 
+        mail: this.form.mail,
+        // province: this.form.region[0],
+        // city: this.form.region[1] ? this.form.region[1] : '',
+        industry: this.form.industry.join('_'),
+        // hireType: this.form.mold, // 受雇类型值
+        company: this.form.companyName, // 公司名称
+        companyType: this.form.companyType.join(','), 
+        position: this.form.job == '其他' ? this.form.otherJob : this.form.job, 
+        // company_size: this.form.scale,
+        workScope: this.form.business,
+        partnerNeeds: this.form.need, 
+        agree: this.form.agreeChecked
+      }
+      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 == 'member_freeuse') {
+              _this.showSuccess = true
+            } else if (source == 'article_original') {
+              // 如果是阅读原文点击的 留完用户资料执行原点击操作
+              $(".com-original").trigger('click')
+            } else if (source == 'article_collection'){
+              $('#bidCollect').trigger('click') // 三级页收藏事件
+              // 单个收藏事件传当前点击的dom
+              if(_this.curDom) {
+                _this.curDom.trigger('click') // 列表页单个收藏事件
+                _this.curDom = null
+              } else {
+                $('#bid-collect').trigger('click') // 列表页批量收藏事件
+              }
+            }
+          }
+        }
+      })
+    },
+    // 手机号输入框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.mail = res.data.mail ? res.data.mail : ''
+            if (res.data.province && res.data.city) {
+              _this.form.region = [res.data.province, res.data.city]
+            } else if (res.data.province && !res.data.city) {
+              _this.form.region = [res.data.province]
+            } else {
+              _this.form.region = []
+            }
+            _this.form.industry = res.data.industry ? res.data.industry.split('_') : []
+            _this.form.mold = res.data.hireType ? res.data.hireType : '公司'
+            _this.form.companyName = res.data.company ? res.data.company : ''
+            _this.form.companyType = res.data.companyType ? res.data.companyType.split(',') : []
+            if (res.data.position) {
+              if (jobJson.indexOf(res.data.position) == -1) {
+                _this.form.job = '其他'
+                _this.form.otherJob = res.data.position
+              } else {
+                _this.form.job = res.data.position
+              }
+            } else {
+              _this.form.job = ''
+            }
+            _this.form.scale = res.data.company_size ? res.data.company_size : ''
+            _this.form.business = res.data.workScope ? res.data.workScope : ''
+            _this.form.need = res.data.partnerNeeds ? res.data.partnerNeeds : ''
+            _this.form.agreeChecked = res.data.agree == undefined ?  true : res.data.agree
+          }
+        }
+      })
+    },
+    // 企业名称联想
+    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
+      }
+    },
+    // 暂不提供 
+    cancelForm: function() {
+      this.showForm = false
+      this.form.name = ''
+      this.form.phone = ''
+      this.form.mail = ''
+      this.form.industry = []
+      this.form.companyName = ''
+      this.form.companyType = []
+      this.form.job = ''
+      this.form.otherJob = ''
+      this.form.scale = ''
+      this.form.business = ''
+      this.form.need = ''
+    }
+  }
+})

+ 61 - 45
src/web/staticres/js/superSearch.js

@@ -1059,6 +1059,11 @@ function collectClick() {
   // console.log(vipState, '是否是超级订阅用户')
   // 单个收藏点击事件
   $('.icon-collect').on('click',function(e) {
+    // 登录判断
+    if (!loginflag) {
+      openLoginDig()
+      return
+    }
     baiduEvent('列表页标讯收藏-星标') // 百度统计代码
     e.stopPropagation()
     var $that = $(this)
@@ -1087,38 +1092,45 @@ function collectClick() {
       })
     } else {
       // 单个收藏行为
-      sessionStorage.setItem('$save-tags-binfo', JSON.stringify(binfo)) // 将本次收藏的标讯id缓存起来 用于绑定标签时使用
-      collBidAction('C', binfo, function(res) {
-        if (res.data) {
-          if (selectType == 'title') {
-            // $that.addClass('checked').parents().siblings('input[type="checkbox"]').prop("checked",true).attr('disabled', true)
-            $that.addClass('checked')
-          } else {
-            // $that.addClass('checked').parents('.luce-right').siblings().find('input[type="checkbox"]').prop("checked",true).attr('disabled', true)
-            $that.addClass('checked')
-          }
-          var top = (parseInt($that.position().top) + 50 ) + 'px';
-          $('.tags-box').show(function(){
-            activeTags = []
-            $('.tag-labels').empty()
-            $('.clear-input').val('')
-            $('.tags-list').find('.tags-item').removeClass('tags-active')
-            $('.tag-placeholder').show()
-          }).css('top', top)
-          getUserTags()
-        } else {
-          // 是超级订阅用户或者其他付费用户
-          if (vipState || res.error_msg.indexOf('付费') > -1) {
-            toastFn('您的标讯收藏上限为5000条,请联系客服人员。', 1500)
+      vm.dialogTitle = '重要项目一键创建标签收藏!请完善个人信息,为您匹配精准服务'
+      // 查询是否需要用户留资料 不需要 则执行下一步回调(收藏标讯行为)
+      vm.isNeedSubmit('article_collection',function() {
+        sessionStorage.setItem('$save-tags-binfo', JSON.stringify(binfo)) // 将本次收藏的标讯id缓存起来 用于绑定标签时使用
+        collBidAction('C', binfo, function(res) {
+          if (res.data) {
+            if (selectType == 'title') {
+              $that.addClass('checked')
+            } else {
+              $that.addClass('checked')
+            }
+            var top = (parseInt($that.position().top) + 50 ) + 'px';
+            $('.tags-box').show(function(){
+              activeTags = []
+              $('.tag-labels').empty()
+              $('.clear-input').val('')
+              $('.tags-list').find('.tags-item').removeClass('tags-active')
+              $('.tag-placeholder').show()
+            }).css('top', top)
+            getUserTags()
           } else {
-            updateVipDialog('标讯收藏满100条-去升级')
+            // 是超级订阅用户或者其他付费用户
+            if (vipState || res.error_msg.indexOf('付费') > -1) {
+              toastFn('您的标讯收藏上限为5000条,请联系客服人员。', 1500)
+            } else {
+              updateVipDialog('标讯收藏满100条-去升级')
+            }
           }
-        }
-      })
+        })
+      }, $(this))
     }
   })
   // 批量收藏
   $('#bid-collect').off('click').bind('click',function(e){
+    // 登录判断
+    if (!loginflag) {
+      openLoginDig()
+      return
+    }
     baiduEvent('列表页标讯收藏-星标') // 百度统计代码
     e.stopPropagation()
     var top = (parseInt($(this).position().top) + 60 ) + 'px';
@@ -1164,27 +1176,31 @@ function collectClick() {
           return
         }
       }
-      sessionStorage.setItem('$save-tags-binfo', JSON.stringify(checkedId)) // 将本次收藏的标讯id缓存起来 用于绑定标签时使用
-      collBidAction('C', checkedId, function(res) {
-        if (res.data) {
-          if (selectType == 'title') {
-            $('.custom-checkbox:not(".check-all"):checked').siblings().children('.icon-collect').addClass('checked')
-          } else {
-            $('.custom-checkbox:not(".check-all"):checked').parents('.liLuceneList').find('.icon-collect').addClass('checked')
-          }
-          // 收藏成功后再查一次收藏状态,为了区分达到收藏上限点时部分收藏成功,部分收藏失败
-          getBidIsColl()
-          // 弹出标签弹框时 清除上次选择的标签
-          $('.tags-box').show().css('top', top)
-          getUserTags()
-        } else {
-          // 是超级订阅用户或者其他付费用户
-          if (vipState || res.error_msg.indexOf('付费') > -1) {
-            toastFn('您的标讯收藏上限为5000条,请联系客服人员。', 1500)
+      vm.dialogTitle = '重要项目一键创建标签收藏!请完善个人信息,为您匹配精准服务'
+      // 查询是否需要用户留资料 不需要 则执行下一步回调(批量收藏标讯行为)
+      vm.isNeedSubmit('article_collection', function() {
+        sessionStorage.setItem('$save-tags-binfo', JSON.stringify(checkedId)) // 将本次收藏的标讯id缓存起来 用于绑定标签时使用
+        collBidAction('C', checkedId, function(res) {
+          if (res.data) {
+            if (selectType == 'title') {
+              $('.custom-checkbox:not(".check-all"):checked').siblings().children('.icon-collect').addClass('checked')
+            } else {
+              $('.custom-checkbox:not(".check-all"):checked').parents('.liLuceneList').find('.icon-collect').addClass('checked')
+            }
+            // 收藏成功后再查一次收藏状态,为了区分达到收藏上限点时部分收藏成功,部分收藏失败
+            getBidIsColl()
+            // 弹出标签弹框时 清除上次选择的标签
+            $('.tags-box').show().css('top', top)
+            getUserTags()
           } else {
-            updateVipDialog('标讯收藏满100条-去升级')
+            // 是超级订阅用户或者其他付费用户
+            if (vipState || res.error_msg.indexOf('付费') > -1) {
+              toastFn('您的标讯收藏上限为5000条,请联系客服人员。', 1500)
+            } else {
+              updateVipDialog('标讯收藏满100条-去升级')
+            }
           }
-        }
+        })
       })
     } else {
       toastFn('尚未选择标讯,请选择', 1000)

+ 23 - 83
src/web/templates/big-member/pc/page_index.html

@@ -16,6 +16,8 @@
     <link href='{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}' rel="stylesheet" type="text/css"/>
     <link href='{{Msg "seo" "cdn"}}/css/swiper.min.css?v={{Msg "seo" "version"}}' rel="stylesheet" type="text/css"/>
     <link href='{{Msg "seo" "cdn"}}/big-member/css/page_index.css?v={{Msg "seo" "version"}}2' rel="stylesheet" type="text/css"/>
+    <link href="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/theme-chalk/index.css" rel="stylesheet" />
+    <link href='{{Msg "seo" "cdn"}}/css/collect-user-info.css?v={{Msg "seo" "version"}}' rel="stylesheet">
     <style>
         body #public-nav[data-theme] .iner .jynav li:hover > a,
         body #public-nav[data-theme] .iner .jynav li.hover > a,
@@ -53,8 +55,10 @@
 </head>
 <body>
 {{include "/common/pchead.html"}}
-
+<!-- 用户留资 -->
+<div id="vue-collect-user-info"></div>
 <div class="page--big--index">
+    
     <div class="w-box top-barner">
         <div class="w1200">
             <div class="top-title">
@@ -930,7 +934,7 @@
       </div>
     </div>
     <!-- 提交成功弹框 -->
-    <div id="success-dialog" style="display: none;">
+    <!-- <div id="success-dialog" style="display: none;">
       <div class="mask"></div>
       <div class="success-dialog-container">
         <div class="success-title">提交成功</div>
@@ -939,12 +943,17 @@
           <button type="button" class="custom-btn go-know">我知道了</button>
         </div>
       </div>
-    </div>
+    </div> -->
 </div>
 <script src='{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}' type="text/javascript"></script>
 <script src='{{Msg "seo" "cdn"}}/js/jquery.cookie.js?v={{Msg "seo" "version"}}' type="text/javascript"></script>
 <script src="https://cdn.jsdelivr.net/npm/countup.js@1.9.3/dist/countUp.js"></script>
 <script src='{{Msg "seo" "cdn"}}/js/swiper.min.js'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/selector/js/china_area.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/selector/js/static-data.js?v={{Msg "seo" "version"}}'></script>
+<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"}}/js/pc-collect-user-info.js?v={{Msg "seo" "version"}}'></script>
 <script>
     $("img").on('dragstart',false)
     function computeSliderStyle () {
@@ -1063,7 +1072,7 @@
               }
               location.href = buy_ontrial_href;
             */
-            $(".click-button-box.free").trigger('click')
+            $(".click-button-box.free:eq(0)").trigger('click')
         })
         /* 功能演示 */
         $(".click-button-box.free").on('mouseenter', function () {
@@ -1072,7 +1081,12 @@
             //     $('#iphoneX-box').append('<iframe data-src="/demo-member/demo_action.html" src="/demo-member/demo_action.html" scrolling="no" frameborder="0"></iframe>')
             // }
         })
-        $(".click-button-box.free").on('click', function () {
+        $('.click-button-box.free').each(function(i) {
+          $(this).unbind('click').click(function(){
+            if (!loginflag) {
+              openLoginDig()
+              return
+            }
             $.get('/front/pc/sobot?t=' + new Date().getTime() + '&q=大会员-pc-免费体验');
             var member_pc = getMemberSource(source);
             try {
@@ -1080,85 +1094,11 @@
             } catch (e) {
               console.log('未初始化百度统计')
             }
-            /*
-              // 原功能演示代码
-              var scaleRote = document.documentElement.clientHeight / 700
-              $("#iphoneX-box").css('transform', 'scale('+(scaleRote > 1 ? 1 : scaleRote)+')')
-              var iphoneDom = $('#iphoneX-box')
-              iphoneDom.show()
-              $("#iphoneX-box iframe")[0].contentWindow.OtherExitExperience = function() {
-                  iphoneDom.hide()
-                  $("#iphoneX-box iframe").remove()
-                  iphoneDom.append('<iframe data-src="/demo-member/demo_action.html" src="/demo-member/demo_action.html" scrolling="no" frameborder="0"></iframe>')
-              }
-            */
-            // 采集信息弹框
-            $('#collect-dialog').show()
-            $('body').css('overflow', 'hidden')
-            // 校验
-            validateInput()
-            function validateInput() {
-              var regName = $('.name-val').val().trim().length >= 2
-              var regPhone = /^1[3456789]\d{9}$/.test($('.phone-val').val())
-              var regCompany = $('.company-val').val().trim().length >= 2
-              if (regName && regPhone && regCompany) {
-                $('#collect-dialog .go-confirm').removeAttr('disabled')
-              } else {
-                $('#collect-dialog .go-confirm').attr('disabled', true)
-              }
-            }
-            $('.name-val').on("input", function () {
-              validateInput()
-            })
-            $('.phone-val').on("input", function () {
-              var val = $(this).val().replace(/[^\d]/g,'')
-              $(this).val(val)
-              validateInput()
-            })
-            $('.company-val').on("input", function () {
-              validateInput()
-            })
-            // 信息提交事件
-            $('#collect-dialog .go-confirm').unbind('click').bind('click', function() {
-              $(this).attr('disabled', true)
-              var obj = {
-                name: $('.name-val').val(),
-                phone: $('.phone-val').val(),
-                company: $('.company-val').val(),
-                position: $('.job-val').val()
-              }
-              console.log(obj)
-              $.ajax({
-                type:'POST',
-                url:'/salesLeads/member/trialInfo',
-                data: obj,
-                success:function (res) {
-                  $('#collect-dialog .go-confirm').removeAttr('disabled')
-                  if (res) {
-                    if (res.status === 1) {
-                      $('#collect-dialog').hide()
-                      $('#success-dialog').show()
-                    } else {
-                      console.log('提交失败')
-                    }
-                  }
-                }
-              })
-            })
-            // 关闭按钮
-            $('#collect-dialog .dialog-close').on('click',function() {
-              $('#collect-dialog').fadeOut()
-              $('body').css('overflow', 'auto')
-            })
-            // I know
-            $('#success-dialog .go-know').on('click',function() {
-              $('#success-dialog').fadeOut()
-              $('body').css('overflow', 'auto')
-              $('.name-val').val('')
-              $('.phone-val').val('')
-              $('.company-val').val('')
-              $('.job-val').val('')
+            vm.dialogTitle = '请完善个人信息,立刻获得全部功能的产品试用'
+            vm.isNeedSubmit('member_freeuse',function(){
+              vm.showSuccess = true
             })
+          })
         })
         try {
             var injectLogic = logic

+ 1 - 1
src/web/templates/big-member/wx/page_landingPage.html

@@ -539,7 +539,7 @@
             exper_fun:function () {
                 this.setStatistics('免费体验')
                 // location.href = '/demo-member/demo_action.html'
-                location.href = '/weixin/frontPage/bigmember/free/info_collect'
+                location.href = '/weixin/frontPage/bigmember/free/perfect_info?origin=member_freeuse'
             },
             // 咨询客服
             consult:function(){

+ 88 - 48
src/web/templates/common/baiducc.html

@@ -1,83 +1,123 @@
 <script>
-var _hmt = _hmt || [];
-var advUrl = window.location.href;
-if(is_weixin()){
+  var _hmt = _hmt || [];
+  var advUrl = window.location.href;
+  if(is_weixin()){
     if(window.location.pathname.indexOf("/article/content/")>-1){
-        _hmt.push(['_setAutoPageview', false]);
-        _hmt.push(['_trackPageview', '/wx'+window.location.pathname]);
+      _hmt.push(['_setAutoPageview', false]);
+      _hmt.push(['_trackPageview', '/wx'+window.location.pathname]);
     }
-}
-(function() {
+  }
+  (function() {
     var host = location.host
     var hm = document.createElement("script");
     var patterns = {
-        ip: /((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}/g,
-        // testServer: /(^web-|jytest|jydev)/g,  // 以web-开头的、包含jytest或者jydev的域名
-        testServer: /jianyu360\.cn$/g
+      ip: /((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}/g,
+      // testServer: /(^web-|jytest|jydev)/g,  // 以web-开头的、包含jytest或者jydev的域名
+      testServer: /jianyu360\.cn$/g
     }
     // ip或者以jianyu360.cn结尾的使用测试环境百度统计
     if (patterns.ip.test(host) || patterns.testServer.test(host)) {
-        // 测试环境
-        hm.src = "https://hm.baidu.com/hm.js?52c42de35032567eb9d7a24a43c84bda";
+      // 测试环境
+      hm.src = "https://hm.baidu.com/hm.js?52c42de35032567eb9d7a24a43c84bda";
     } else {
-        // 正式环境
-        hm.src = "https://hm.baidu.com/hm.js?72331746d85dcac3dac65202d103e5d9";
+      // 正式环境
+      hm.src = "https://hm.baidu.com/hm.js?72331746d85dcac3dac65202d103e5d9";
     }
     var s = document.getElementsByTagName("script")[0];
     s.parentNode.insertBefore(hm, s);
-})();
+  })();
 
-function is_weixin() {
+  function is_weixin() {
     var ua = window.navigator.userAgent.toLowerCase();
     if (ua.match(/MicroMessenger/i) == 'micromessenger') {
-        return true;
+      return true;
     } else {
-        return false;
+      return false;
     }
-}
+  }
 
-function adv_statistics(e){
+  function adv_statistics(e){
     var advName = $(e).attr("adv_name");
     var ad ="广告"
 
     _hmt.push(['_trackEvent',ad, 'click', advName]);
     grafana_statistics(advName);
     // console.log(advName)
-    if($(e).find("a").attr("dataHref")!=undefined){
-        window.open($(e).find("a").attr("dataHref"));
+    var dataHref = $(e).find("a").attr("dataHref") || $(e).find("a").attr("datahref")
+    var isOriginal = $(e).find("a").text().indexOf('阅读原文') !== -1
+    if(typeof dataHref != 'undefined' && dataHref){
+      var isWeiXinBrowser = navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1
+      if (isWeiXinBrowser && isOriginal) {
+        $.ajax({
+          url: '/salesLeads/retainedCapital?t=' + new Date().getTime(),
+          type: 'POST',
+          data: { source: 'article_original' },
+          success: function (r) {
+            if (r && r.error_msg === '' && r.data) {
+              if (r.data.retainedCapital) {
+                vKeepComponent.$dialog.confirm({
+                  message: '为给您匹配精准的推荐信息,请完善个人信息,免费查看原文',
+                  className: 'ent-search-dialog max-54 add-close-after',
+                  overlayClass: 'z-2030',
+                  showCancelButton: false,
+                  confirmButtonText: '立即前往',
+                }).then(function () {
+                  sessionStorage.setItem('salesBackData', JSON.stringify({
+                    type: 'article_original',
+                    url: dataHref
+                  }))
+                  location.href = '/weixin/frontPage/bigmember/free/perfect_info?origin=article_original'
+                }).catch(function () {});
+                $("body").on('click', '.add-close-after .van-dialog__content', function (e) {
+                  vKeepComponent.$dialog.close()
+                })
+              } else {
+                location.href = dataHref
+              }
+            } else {
+              location.href = dataHref
+            }
+          },
+          error: function () {
+            location.href = dataHref
+          }
+        })
+      } else {
+        window.open(dataHref);
+      }
     }
-}
+  }
 
-function grafana_statistics(advName){
+  function grafana_statistics(advName){
     var obj = {
-        "pccontent_bottom":  "PC快照页-底部",
-        "pccontent_right":   "PC快照页-右部",
-        "pcsearch_bottom":   "PC搜索列表页-底部",
-        "wxcontent_bottom":  "微信快照页-底部",
-        "wxpush_middle":     "微信推送历史页-中部",
-        "wxsearch_middle":   "微信搜索列表页-中部",
-        "appcontent_bottom": "APP快照页-底部",
-        "apppush_middle":    "APP推送历史页-中部",
-        "appsearch_middle":  "APP搜索列表页-中部",
-        "wxswiper_one":      "微信搜索页轮播图1",
-        "wxswiper_two":      "微信搜索页轮播图2",
-        "wxswiper_three":    "微信搜索页轮播图3",
-        "wxswiper_four":     "微信搜索页轮播图4",
-        "appswiper_one":     "APP搜索页轮播图1",
-        "appswiper_two":     "APP搜索页轮播图2",
-        "appswiper_three":   "APP搜索页轮播图3"
+      "pccontent_bottom":  "PC快照页-底部",
+      "pccontent_right":   "PC快照页-右部",
+      "pcsearch_bottom":   "PC搜索列表页-底部",
+      "wxcontent_bottom":  "微信快照页-底部",
+      "wxpush_middle":     "微信推送历史页-中部",
+      "wxsearch_middle":   "微信搜索列表页-中部",
+      "appcontent_bottom": "APP快照页-底部",
+      "apppush_middle":    "APP推送历史页-中部",
+      "appsearch_middle":  "APP搜索列表页-中部",
+      "wxswiper_one":      "微信搜索页轮播图1",
+      "wxswiper_two":      "微信搜索页轮播图2",
+      "wxswiper_three":    "微信搜索页轮播图3",
+      "wxswiper_four":     "微信搜索页轮播图4",
+      "appswiper_one":     "APP搜索页轮播图1",
+      "appswiper_two":     "APP搜索页轮播图2",
+      "appswiper_three":   "APP搜索页轮播图3"
     }
     if(advName !== ""){
-        for(var i in obj){
-            if(advName === obj[i]){
-                $.ajax({
-                    type: "get",
-                    url: "/front/grafanaStatistics?advName=" + i
-                })
-            }
+      for(var i in obj){
+        if(advName === obj[i]){
+          $.ajax({
+            type: "get",
+            url: "/front/grafanaStatistics?advName=" + i
+          })
         }
+      }
     }
-}
+  }
 </script>
 <script>
   // 将版本号存至本地缓存,供vue单页面程序获取

+ 953 - 0
src/web/templates/frontRouter/wx/bigmember/free/perfect_info.html

@@ -0,0 +1,953 @@
+<!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">
+    <!--引入公共资源头部-->
+    {{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="top-tip-group" v-if="getTipStr">
+                    <p class="top-tip-text">
+                        @@getTipStr@@
+                    </p>
+                </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 v-model.trim="infoMap.phone" label="手机号" @focus="infoCheckMap.phone = ''"
+                                   @blur="getCheckMap('phone')" :error-message="infoCheckMap.phone" required
+                                   placeholder="常用手机号码"></van-field>
+                        <van-field v-model.trim="infoMap.email" label="邮箱" @focus="infoCheckMap.email = ''" @blur="getCheckMap('email')"
+                                   :error-message="infoCheckMap.email" required placeholder="请输入邮箱"></van-field>
+                        <van-field v-if="false" v-model="infoMap.area" label="区域" @click="openPop('区域')" readonly is-link
+                                   placeholder="请选择所在区域"></van-field>
+                        <van-field v-model="infoMap.class" label="行业" @click="openPop('行业')" readonly is-link
+                                   placeholder="请选择所属行业"></van-field>
+                        <van-field v-if="false" v-model="infoMap.type" label="受雇类型" @click="openPop('受雇类型')" readonly is-link
+                                   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" 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 === '其他'}"  required v-model="infoMap.position" label="职位" @click="openPop('职位')" readonly is-link
+                                   placeholder="请选择职位"></van-field>
+                        <van-field class="other-input-group" @focus="infoCheckMap.position_other = ''" @blur="getCheckMap('position')"
+                                   :error-message="infoCheckMap.position_other" v-model.trim="infoMap.position_other" v-show="infoMap.position === '其他'" label="职位" placeholder="请输入职位"></van-field>
+                        <van-field v-if="false" v-model="infoMap.company_size" label="公司规模" @click="openPop('公司规模')" readonly is-link
+                                   placeholder="请选择公司规模"></van-field>
+                        <van-field maxlength="200" v-model="infoMap.workScope" label="业务范围" rows="2" type="textarea"
+                                   placeholder="请输入业务范围,让合作伙伴充分了解公司业务内容"></van-field>
+                    </div>
+                </div>
+                <div class="form-card-group">
+                    <div class="form-title">合作需求</div>
+                    <div class="form-content-card">
+                        <van-field maxlength="200" v-model="infoMap.partnerNeeds" rows="3" type="textarea"
+                                   placeholder="请输入合作需求,从而创造并匹配更多合作交流机会"></van-field>
+                    </div>
+                </div>
+                <div class="form-tick-group" @click="isRead = !isRead">
+                    <div class="more-icon-box">
+                        <i class="j-icon base-icon icon-tick-circle" v-show="!isRead"></i>
+                        <i class="j-icon base-icon icon-tick-circle-fill" v-show="isRead"></i>
+                    </div>
+                    <span>我同意剑鱼标讯将业务范围及合作需求提供给潜在合作伙伴搜索、查看</span>
+                </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>
+            <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="popInfo.label === '区域'">
+                        <van-tree-select
+                                height="100%"
+                                :items="areaDatas"
+                                :active-id.sync="areaId"
+                                :main-active-index.sync="areaIndex">
+
+                        </van-tree-select>
+                    </div>
+                    <div class="j-main" v-show="popInfo.label === '行业'">
+                        <van-tree-select
+                                height="100%"
+                                :items="classDatas"
+                                :active-id.sync="classId"
+                                :main-active-index.sync="classIndex">
+
+                        </van-tree-select>
+                    </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>
+    </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 src='{{Msg "seo" "cdn"}}/common-module/selector/js/china_area.js?v={{Msg "seo" "version"}}'></script>
+
+<script>
+  var filterData = chinaMapJSON.filter(function (item) {
+    return item.name !== ' 海外' && item.name !== '钓鱼岛'
+  })
+  filterData.forEach(function (item) {
+    if (item.name == '台湾省') { item.name = '台湾'}
+    item.name = item.name.replace(/自治区|特别行政区|壮族|回族|维吾尔/g, '')
+    item.label = item.name
+    item.value = item.name
+    var filterWord = ['北京市', '上海市', '天津市', '上海市', '重庆市', '香港', '澳门', '台湾']
+    if (filterWord.indexOf(item.name) == -1) {
+      item.children = item.city.map(function (v) {
+        return {
+          value: v.name,
+          label: v.name
+        }
+      })
+    }
+  })
+  var areaItem = filterData.map(v => {
+    var tempData = {
+      text: v.name
+    }
+    if (v.children) {
+      tempData.children = v.children.map(s => (
+        {
+          text: s.label,
+          id: v.name + '-' + s.label
+        }
+      ))
+    } else {
+      tempData.children = [{
+        text: v.name,
+        id: v.name + '-' + v.name
+      }]
+    }
+    return tempData
+  })
+  var classMap = [
+    {name: '互联网/IT/电子/通信', value: '电子商务'},
+    {name: '互联网/IT/电子/通信', value: '企业服务'},
+    {name: '互联网/IT/电子/通信', value: '人工智能'},
+    {name: '互联网/IT/电子/通信', value: '在线教育'},
+    {name: '互联网/IT/电子/通信', value: '在线医疗'},
+    {name: '互联网/IT/电子/通信', value: '新媒体'},
+    {name: '互联网/IT/电子/通信', value: '物联网'},
+    {name: '互联网/IT/电子/通信', value: '新零售'},
+    {name: '互联网/IT/电子/通信', value: '区跨链'},
+    {name: '互联网/IT/电子/通信', value: '互联网'},
+    {name: '互联网/IT/电子/通信', value: '游戏'},
+    {name: '互联网/IT/电子/通信', value: '云计算/大数据'},
+    {name: '互联网/IT/电子/通信', value: '网络/信息安全'},
+    {name: '互联网/IT/电子/通信', value: '在线生活服务(O2O)'},
+    {name: '互联网/IT/电子/通信', value: '在线音乐/视频/阅读'},
+    {name: '互联网/IT/电子/通信', value: 'IT服务'},
+    {name: '互联网/IT/电子/通信', value: '计算机软件'},
+    {name: '互联网/IT/电子/通信', value: '计算机硬件'},
+    {name: '互联网/IT/电子/通信', value: '通信/网络设备'},
+    {name: '互联网/IT/电子/通信', value: '运营商/增值服务'},
+    {name: '互联网/IT/电子/通信', value: '电子/半导体/集成电路'},
+    {name: '房地产/建筑', value: '房地产开发与经营'},
+    {name: '房地产/建筑', value: '土地与公共设施管理'},
+    {name: '房地产/建筑', value: '公共建筑装饰装修'},
+    {name: '房地产/建筑', value: '房地产中介'},
+    {name: '房地产/建筑', value: '物业服务'},
+    {name: '房地产/建筑', value: '建筑设计'},
+    {name: '房地产/建筑', value: '工程施工'},
+    {name: '房地产/建筑', value: '建筑设备安装'},
+    {name: '房地产/建筑', value: '装饰装修'},
+    {name: '房地产/建筑', value: '建材'},
+    {name: '房地产/建筑', value: '建筑工程检测'},
+    {name: '金融业', value: '银行'},
+    {name: '金融业', value: '保险业'},
+    {name: '金融业', value: '基金'},
+    {name: '金融业', value: '信托'},
+    {name: '金融业', value: '证券/期货'},
+    {name: '金融业', value: '投资/融资'},
+    {name: '金融业', value: '汽车金融服务'},
+    {name: '金融业', value: '互联网金融/小额贷款'},
+    {name: '金融业', value: '租赁/拍卖/典当/担保'},
+    {name: '教育培训/科研', value: '培训/课外教育/教育辅助'},
+    {name: '教育培训/科研', value: '学校教育'},
+    {name: '教育培训/科研', value: '学术/科研'},
+    {name: '教育培训/科研', value: '科学技术推广服务业'},
+    {name: '广告/传媒/文化/体育', value: '广告业'},
+    {name: '广告/传媒/文化/体育', value: '广播/电视/电影/录音制作'},
+    {name: '广告/传媒/文化/体育', value: '会议/展览服务'},
+    {name: '广告/传媒/文化/体育', value: '文化艺术/娱乐'},
+    {name: '广告/传媒/文化/体育', value: '体育'},
+    {name: '广告/传媒/文化/体育', value: '新闻/出版'},
+    {name: '制药/医疗', value: '医院'},
+    {name: '制药/医疗', value: '卫生服务'},
+    {name: '制药/医疗', value: '生物工程'},
+    {name: '制药/医疗', value: '医药制造'},
+    {name: '制药/医疗', value: '医疗设备/器械'},
+    {name: '批发/零售/贸易', value: '快速消费品'},
+    {name: '批发/零售/贸易', value: '耐用消费品'},
+    {name: '批发/零售/贸易', value: '零售/批发'},
+    {name: '批发/零售/贸易', value: '食品/饮料'},
+    {name: '批发/零售/贸易', value: '烟酒'},
+    {name: '批发/零售/贸易', value: '日化'},
+    {name: '批发/零售/贸易', value: '服装/纺织/皮革'},
+    {name: '批发/零售/贸易', value: '玩具/礼品'},
+    {name: '批发/零售/贸易', value: '珠宝/首饰'},
+    {name: '批发/零售/贸易', value: '办公用品设备'},
+    {name: '批发/零售/贸易', value: '工艺品/收藏品'},
+    {name: '批发/零售/贸易', value: '家具/家居/家电'},
+    {name: '批发/零售/贸易', value: '贸易/进出口代理'},
+    {name: '制造业', value: '船舶/航空/航天/火车制造'},
+    {name: '制造业', value: '电气机械/器材制造'},
+    {name: '制造业', value: '电子设备制造'},
+    {name: '制造业', value: '钢铁和有色金属冶炼及加工'},
+    {name: '制造业', value: '专用设备制造'},
+    {name: '制造业', value: '金属制品业'},
+    {name: '制造业', value: '通用设备制造'},
+    {name: '制造业', value: '仪器仪表制造'},
+    {name: '制造业', value: '非金属矿物制品业'},
+    {name: '制造业', value: '化学纤维制造业'},
+    {name: '制造业', value: '化学原料/化学制品'},
+    {name: '制造业', value: '日化产品制造'},
+    {name: '制造业', value: '纺织业/服饰产品加工制造'},
+    {name: '制造业', value: '农副产品加工制造'},
+    {name: '制造业', value: '燃料资源加工制造'},
+    {name: '制造业', value: '橡胶和塑料制品'},
+    {name: '制造业', value: '印刷/包装/造纸'},
+    {name: '制造业', value: '家具制造'},
+    {name: '制造业', value: '文体/办公设备制造'},
+    {name: '制造业', value: '工业自动化'},
+    {name: '汽车', value: '汽车销售与服务'},
+    {name: '汽车', value: '汽车制造'},
+    {name: '汽车', value: '汽车零部件'},
+    {name: '交通运输/仓储/物流', value: '火车站/港口/汽车站/路政'},
+    {name: '交通运输/仓储/物流', value: '民航/铁路/公路/水路客运'},
+    {name: '交通运输/仓储/物流', value: '货运/物流仓储'},
+    {name: '交通运输/仓储/物流', value: '邮政/快递'},
+    {name: '专业服务', value: '法律服务'},
+    {name: '专业服务', value: '咨询服务'},
+    {name: '专业服务', value: '翻译服务'},
+    {name: '专业服务', value: '人力资源服务'},
+    {name: '专业服务', value: '财务/审计/税务'},
+    {name: '专业服务', value: '工程技术与设计服务'},
+    {name: '专业服务', value: '检测/认证'},
+    {name: '专业服务', value: '景区/商业/市场等综合管理'},
+    {name: '专业服务', value: '商业代理服务'},
+    {name: '专业服务', value: '专利/商标/知识产权'},
+    {name: '专业服务', value: '租赁服务'},
+    {name: '专业服务', value: '专业技术服务'},
+    {name: '生活服务', value: '餐饮业'},
+    {name: '生活服务', value: '酒店/民宿'},
+    {name: '生活服务', value: '旅游业'},
+    {name: '生活服务', value: '婚庆/摄影'},
+    {name: '生活服务', value: '美容/保健/养生'},
+    {name: '生活服务', value: '居民服务'},
+    {name: '能源/环保/矿产', value: '石油/石化'},
+    {name: '能源/环保/矿产', value: '化工'},
+    {name: '能源/环保/矿产', value: '电力/水利/热力/燃气'},
+    {name: '能源/环保/矿产', value: '新能源'},
+    {name: '能源/环保/矿产', value: '环保'},
+    {name: '能源/环保/矿产', value: '矿产/采掘'},
+    {name: '政府/非盈利机构', value: '国家机构'},
+    {name: '政府/非盈利机构', value: '社团/组织/社会保障'},
+    {name: '政府/非盈利机构', value: '养老/孤儿/看护等社会服务'},
+    {name: '农/林/牧/渔', value: '农/林/牧/渔'}
+  ]
+  var classItem = {}
+  classMap.forEach(v => {
+    if (!classItem[v.name]) {
+      classItem[v.name] = []
+    }
+    if (classItem[v.name].indexOf(v.value) === -1) {
+      classItem[v.name].push(v.value)
+    }
+  })
+  var classList = []
+  for (var k in classItem) {
+    classList.push({
+      text: k,
+      children: classItem[k].map(s => ({
+        text: s,
+        id: k + '-' + s
+      }))
+    })
+  }
+  var vNode = {
+    delimiters: ['@@', '@@'],
+    el: '#perfect-info-page',
+    data: {
+      areaDatas: areaItem,
+      areaId: '',
+      areaIndex: '',
+      classDatas: classList,
+      classId: '',
+      classIndex: '',
+      isRead: true,
+      showPop: true,
+      searchList: [],
+      isAssociateShow: false,
+      isAssociateUpTime: -1,
+      infoMap: {
+        name: '',
+        phone: '',
+        email: '',
+        area: '',
+        class: '',
+        type: '',
+        company: '',
+        companyType: '',
+        position: '',
+        company_size: '',
+        workScope: '',
+        partnerNeeds: '',
+        position_other: ''
+      },
+      infoCheckMap: {
+        name: '',
+        phone: '',
+        email: '',
+        company: '',
+        position: '',
+        position_other: ''
+      },
+      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
+          },
+          {
+            title: '项目经理',
+            checked: false
+          },
+          {
+            title: '其他',
+            checked: false
+          }
+        ],
+        '公司规模': [
+          {
+            title: '0-19人',
+            checked: false
+          },
+          {
+            title: '20-99人',
+            checked: false
+          },
+          {
+            title: '100-499人',
+            checked: false
+          },
+          {
+            title: '500-999人',
+            checked: false
+          },
+          {
+            title: '1000-9999人',
+            checked: false
+          },
+          {
+            title: '100000人以上',
+            checked: false
+          }
+        ],
+      },
+      ajaxParams: {
+        "name": "",
+        "phone": "",
+        "source": utils.getParam('origin'),
+        "agree": false,
+        "mail": "",
+        "province": "",
+        "city": "",
+        "hireType": "",
+        "industry": "",
+        "company": "",
+        "companyType": "",
+        "position": "",
+        "company_size": "",
+        "workScope": "",
+        "partnerNeeds": ""
+      }
+    },
+    mounted() {
+      this.ajaxGetEchoInfo()
+    },
+    computed: {
+      getTipStr () {
+        var tipMap = {
+          'article_original': '为给您匹配精准的推荐信息,请完善个人信息,免费查看原文',
+          'article_collection': '重要项目一键创建标签收藏!请完善个人信息,为您匹配精准服务',
+          'member_freeuse': '请完善个人信息,立刻获得全部功能的产品试用',
+        }
+        return tipMap[utils.getParam('origin')] || ''
+      },
+      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|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)
+      },
+      checkEmail () {
+        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
+      },
+      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)
+      },
+      isSubmitDisabled () {
+        return !this.checkName || !this.checkPhone || !this.checkEmail || !this.checkEntName || !this.checkPosition
+      },
+      isMoreSelect () {
+        return this.popInfo.label === '公司类型'
+      },
+      isNextDisabled () {
+        var type = this.popInfo.label
+        var result = false
+        switch (type) {
+          case '区域': {
+            var tempData = this.areaId.split('-')
+            result = tempData.length === 2
+            break
+          }
+          case '行业': {
+            var tempData = this.classId.split('-')
+            result = tempData.length === 2
+            break
+          }
+          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
+          }
+          case '公司规模': {
+            result = this.conditionMap[type].filter(v => v.checked).length
+            break
+          }
+        }
+        return !result
+      }
+    },
+    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
+        this.ajaxFn('/salesLeads/echoInfo', {}, function (r) {
+          this.isEchoInfoLoading = false
+          if (r && r.error_msg === '' && r.data) {
+            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.province && data.city) {
+          var tempData = [data.province, data.city]
+          this.ajaxParams.province = tempData[0]
+          this.ajaxParams.city = tempData[1]
+          this.infoMap.area = tempData[0] + ' ' + tempData[1]
+          this.areaId = tempData[0] + '-' + tempData[1]
+          this.areaIndex = this.areaDatas.map(v => v.text).indexOf(tempData[0])
+        }
+        if (data.industry) {
+          var tempData = data.industry.split('_')
+          this.ajaxParams.industry = tempData[0] + '_' + tempData[1]
+          this.infoMap.class = tempData[0] + ' ' + tempData[1]
+          this.classId = tempData[0] + '-' + tempData[1]
+          this.classIndex = this.classDatas.map(v => v.text).indexOf(tempData[0])
+        }
+        if (data.hireType) {
+          this.setCheckForData('hireType', 'type', data.hireType, '受雇类型')
+        }
+        if (data.company_size) {
+          this.setCheckForData('company_size', 'company_size', data.company_size, '公司规模')
+        }
+        if (data.position) {
+          this.setCheckForData('position', 'position', data.position, '职位')
+        }
+        if (data.companyType) {
+          this.setCheckForData('companyType', 'companyType', data.companyType, '公司类型')
+        }
+        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.workScope) {
+          this.setCheckForData('workScope', 'workScope', data.workScope)
+        }
+        if (data.partnerNeeds) {
+          this.setCheckForData('partnerNeeds', 'partnerNeeds', data.partnerNeeds)
+        }
+        if (typeof data.agree !== 'undefined') {
+        this.ajaxParams.agree = data.agree
+        this.isRead = data.agree
+        }
+      },
+      setCheckForData (aKey, iKey, cKey, label) {
+        this.ajaxParams[aKey] = cKey
+        this.infoMap[iKey] = cKey
+        if (label === '职位' && cKey.indexOf('其他') !== -1) {
+            this.infoMap[iKey] = '其他'
+            this.infoMap.position_other = cKey.split('/')[1]
+        }
+        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.areaId.split('-')
+            if (tempData.length === 2) {
+              this.ajaxParams.province = tempData[0]
+              this.ajaxParams.city = tempData[1]
+              if (tempData[0] === tempData[1]) {
+                this.infoMap.area = tempData[0]
+              } else {
+                this.infoMap.area = tempData[0] + ' ' + tempData[1]
+              }
+            }
+            break
+          }
+          case '行业': {
+            var tempData = this.classId.split('-')
+            if (tempData.length === 2) {
+              this.ajaxParams.industry = tempData[0] + '_' + tempData[1]
+              this.infoMap.class = tempData[0] + ' ' + tempData[1]
+            }
+            break
+          }
+          case '受雇类型': {
+            var tempData = this.conditionMap[type].filter(v => v.checked)
+            this.setCheckForData('hireType', 'type', 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
+          }
+          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('company_size', 'company_size', tempData[0].title)
+            break
+          }
+        }
+        this.popInfo.show = false
+      },
+      openPop(type) {
+        switch (type) {
+          case '区域': {
+            this.popInfo.title = '请选择所在地域'
+            break
+          }
+          case '行业': {
+            this.popInfo.title = '请选择所在行业'
+            break
+          }
+          case '受雇类型': {
+            this.popInfo.title = '受雇类型'
+            break
+          }
+          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 'email': {
+              this.infoCheckMap.email = this.infoMap.email === '' ? '邮箱为必填项' : ''
+              if (this.infoCheckMap.email === '' && !this.checkEmail) {
+                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 () {
+        sessionStorage.removeItem('salesBackStatus')
+        history.back()
+      },
+      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.position = this.infoMap.position
+        if (this.infoMap.position === '其他') {
+          this.ajaxParams.position = '其他/' + this.infoMap.position_other
+        }
+        this.ajaxParams.workScope = this.infoMap.workScope
+        this.ajaxParams.partnerNeeds = this.infoMap.partnerNeeds
+        this.ajaxParams.agree = this.isRead
+        console.log(this.ajaxParams)
+
+        var _this = this
+        var loading = _this.showLoading()
+        this.ajaxFn('/salesLeads/collectInfo', this.ajaxParams, function (r) {
+          if (r) {
+            loading.clear()
+            if (r.error_msg === '') {
+              if (_this.ajaxParams.source === 'member_freeuse') {
+                _this.$dialog.close()
+                _this.$dialog.confirm({
+                  message: '您的申请已提交,我们的客户经理会在24小时内尽快与您联系。',
+                  className: 'ent-search-dialog max-54',
+                  overlayClass: 'z-2030',
+                  showCancelButton: false,
+                  getContainer: '.perfect-info-group',
+                  confirmButtonText: '我知道了',
+                }).then(function () {
+                  sessionStorage.setItem('salesBackStatus', 'true')
+                  history.back()
+                }).catch(function () {
+                  sessionStorage.setItem('salesBackStatus', 'true')
+                  history.back()
+                });
+              } else {
+                var sessionData = JSON.parse(sessionStorage.getItem('salesBackData') || '{}')
+                if (sessionData.type === 'article_original') {
+                  sessionStorage.removeItem('salesBackStatus')
+                  location.replace(sessionData.url)
+                } else {
+                  sessionStorage.setItem('salesBackStatus', 'true')
+                  history.back()
+                }
+              }
+            } else {
+              _this.showToast(r.error_msg || '提交失败')
+            }
+          }
+        })
+      },
+      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>
+{{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 35 - 9
src/web/templates/pc/biddetail_rec.html

@@ -14,6 +14,8 @@
 <script src="{{Msg "seo" "cdn"}}/js/jquery.cookie.js"></script>
 <script src="{{Msg "seo" "cdn"}}/js/pdfobject.min.js"></script>
 <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" />
+<link href="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/theme-chalk/index.css" rel="stylesheet" />
+<link href='{{Msg "seo" "cdn"}}/css/collect-user-info.css?v={{Msg "seo" "version"}}' rel="stylesheet">
 <link href="{{Msg "seo" "cdn"}}/css/dev2/newBidSearch.css?v={{Msg "seo" "version"}}" rel="stylesheet">
 <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
 <script>
@@ -42,6 +44,8 @@ function isWechat() {
 }
 </script>
 <div class="j-content" style="padding-top: 26px;">
+  <!-- 用户留资 -->
+<div id="vue-collect-user-info"></div>
 <div class="main-content" style="width: 1200px; position: relative; margin: 0 auto">
 	<div class="biddetail-content" style="width:980px; margin-left:0px;">
 		<div class="com-title" id="com-title">
@@ -111,14 +115,19 @@ function isWechat() {
           collectBaiduEvent()
           var top = (parseInt($(this).position().top) + 30 ) + 'px';
           var bids = [{bid: {{.T.obj._id}}}]
-          collBidAction('C',bids,function(r) {
-            if (r.data) {
-              $('#bidCollected').show()
-              $('#bidCollect').hide()
-              $('.tags-box').show().css('top', top)
-              toastFn('收藏成功', 1000)
-              getUserTags()
-            }
+          vm.dialogTitle = '重要项目一键创建标签收藏!请完善个人信息,为您匹配精准服务'
+          // 查询是否需要用户留资料 不需要 则执行下一步回调(收藏标讯行为)
+          vm.isNeedSubmit('article_collection', function() {
+            collBidAction('C',bids,function(r) {
+              if (r.data) {
+                $('#bidCollected').show()
+                $('#bidCollect').hide()
+                $('.tags-box').show().css('top', top)
+                getUserTags()
+              } else {
+                toastFn(r.error_msg)
+              }
+            })
           })
         })
         // 取消收藏事件
@@ -821,7 +830,12 @@ function isWechat() {
 var ucbs_source="pc_rec",ucbsId="{{.T.obj.ucbsId}}";
 </script>
 <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/ucbs.js?v={{Msg "seo" "version"}}"></script>-->
+<script src='{{Msg "seo" "cdn"}}/common-module/selector/js/china_area.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/selector/js/static-data.js?v={{Msg "seo" "version"}}' type="text/javascript"></script>
 <script src="{{Msg "seo" "cdn"}}/js/zxx.drag.1.0-min.js"></script>
+<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"}}/js/pc-collect-user-info.js?v={{Msg "seo" "version"}}"></script>
 <script type="text/javascript">
 var oBox = document.getElementById("popup");
 var oBar = document.getElementById("pop-head");
@@ -1611,7 +1625,19 @@ $(function(){
 		//window.open('javascript:window.name', '<script>location.replace("'+url+'")<\/script>');
 	  originalhref=url
   }
-  $(".com-original").attr("dataHref",originalhref);
+  // $(".com-original").attr("dataHref",originalhref);
+  // 点击阅读原文 用户留资
+  $(".com-original").on('click',function() {
+    if (!loginflag) {
+      openLoginDig()
+      return
+    }
+    console.log('三级页-阅读原文:article_original')
+    vm.dialogTitle = '为给您匹配精准的推荐信息,请完善个人信息,免费查看原文'
+    vm.isNeedSubmit('article_original', function() {
+      window.open(originalhref)
+    })
+  })
 
 	//var sds = {{.T.keywords}};
 	var sds = getQueryString("kds");

+ 2 - 0
src/web/templates/pc/myOrder.html

@@ -1132,6 +1132,8 @@
                     vipInfo.cycle = v.filter.cyclecount + "年"
                   } else if (parseInt(v.filter.cycleunit) === 2) {
                     vipInfo.cycle = v.filter.cyclecount + "个月"
+                  } else if (parseInt(v.filter.cycleunit) === 4) {
+                    vipInfo.cycle = v.filter.cyclecount + "季"
                   } else {
                     vipInfo.cycle = "7天"
                   }

+ 10 - 1
src/web/templates/pc/supsearch.html

@@ -18,6 +18,8 @@
 <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
 <script src="{{Msg "seo" "cdn"}}/js/jquery.cookie.js"></script>
 <script language="javascript" type="text/javascript" src="{{Msg "seo" "cdn"}}/My97DatePicker/WdatePicker.js"></script>
+<link href="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/theme-chalk/index.css" rel="stylesheet" />
+<link href='{{Msg "seo" "cdn"}}/css/collect-user-info.css?v={{Msg "seo" "version"}}' rel="stylesheet">
 <style type="text/css">
 /*j-wx-code Start*/
 .j-wx-code{
@@ -1243,12 +1245,19 @@ $(function(){
                 }
 			</script>
     </div>
-	</div>
+  </div>
+  <!-- 用户留资 -->
+  <div id="vue-collect-user-info"></div>
 	<!--招标搜索页面 END-->
 
 </section>
 {{include "/common/pcbottom.html"}}
 {{include "/common/baiducc.html"}}
+<script src='{{Msg "seo" "cdn"}}/common-module/selector/js/china_area.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/selector/js/static-data.js?v={{Msg "seo" "version"}}'></script>
+<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"}}/js/pc-collect-user-info.js?v={{Msg "seo" "version"}}'></script>
 <script type="text/javascript">
 $(function(){
   $(".shade_table .more").on('click', toPaydataExport)

+ 4 - 0
src/web/templates/pc/vip_orderDetail.html

@@ -327,6 +327,8 @@
                             $(".dyzq").text(filterObj.cyclecount + "个月")
                         } else if (filterObj.cycleunit == 3) {
                             $(".dyzq").text(filterObj.cyclecount + "天")
+                        } else if (filterObj.cycleunit == 4) {
+                            $(".dyzq").text(filterObj.cyclecount + "季")
                         }
                     } else {
                         //未支付
@@ -336,6 +338,8 @@
                             $(".dyzq").text(filterObj.cyclecount + "个月")
                         } else if (filterObj.cycleunit == 3) {
                             $(".dyzq").text(filterObj.cyclecount + "天")
+                        } else if (filterObj.cycleunit == 4) {
+                            $(".dyzq").text(filterObj.cyclecount + "季")
                         }
                     }
                     if (r.data.order.order_status == 1) {

+ 12 - 21
src/web/templates/weixin/follow/list.html

@@ -23,7 +23,6 @@ if(sessionStorage){
 <script src="{{Msg "seo" "cdn"}}/js/common.js?v={{Msg "seo" "version"}}"></script>
 {{include "/common/weixin.html"}}
 <script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
-<script src="{{Msg "seo" "cdn"}}/js/merge-wx.js?v={{Msg "seo" "version"}}"></script>
 <script type="text/javascript">
 ;(function(w){
     if(/msie|applewebkit.+safari/i.test(w.navigator.userAgent)||window.__wxjs_is_wkwebview
@@ -52,9 +51,9 @@ if(sessionStorage){
     }
 })(window);
 $(function(){
-	sessionStorage.removeItem("remind"); 
+	sessionStorage.removeItem("remind");
     $(window).bind("pageshow", function(event){
-		sessionStorage.removeItem("remind"); 
+		sessionStorage.removeItem("remind");
 		if(event.originalEvent.persisted && sessionStorage.version == "1"){
 			hasReload = true;
 			sessionStorage.version="-1";
@@ -76,7 +75,7 @@ $(function(){
 		}
 		window.location.href = "/follow/add";
 	});
-	
+
 	{{if .T.datas}}
 	var data = {{.T.datas}};
 	var html = "";
@@ -133,7 +132,7 @@ $(function(){
 				addr ="<span class='addr'>"+frontarr[f]["s_area"]+"</span>";
 			}
 		}
-		
+
 		var listno = parseInt(f)+parseInt(1);
 		fronthtml +="<li data-id='"+frontarr[f]["_id"]+"' Sort='"+lastpushtime+"'>"
 		+"<div class='jyfwlistno'>"+listno+".</div>"
@@ -177,8 +176,8 @@ $(function(){
 				addr ="<span class='addr'>"+lastarr[l]["s_area"]+"</span>";
 			}
 		}
-		
-		
+
+
 		var listno = parseInt(l)+parseInt(1)+jyno;
 		lasthtml +="<li  class='jyovertime' data-id='"+lastarr[l]["_id"]+"'>"
 		+"<div class='jyfwlistno'>"+listno+".</div>"
@@ -189,9 +188,9 @@ $(function(){
 	}
 	html = fronthtml + lasthtml;
 	$(".listpage ul").append(html);
-	
+
 	{{end}}
-	
+
 	$(".listpage li").click(function(){
 		if(sessionStorage){
 			sessionStorage.version="0";
@@ -202,13 +201,13 @@ $(function(){
 	$(".jylistbottom").click(function(){
 		easyPopup.show("easypopup");
 	});
-	
+
 	$("#cancel").click(function(){
 		easyPopup.hide("easypopup");
 	});
 	$("#sure").click(function(){
 		easyPopup.hide("easypopup");
-		
+
 		var arrid = "";
 		$(".jyovertime").each(function(){
 			arrid +=","+$(this).attr("data-id");
@@ -234,7 +233,7 @@ $(function(){
 			EasyAlert.show("暂无30天无更新的数据<br>可删除!");
 		}
 	});
-	
+
 });
 
 </script>
@@ -264,12 +263,4 @@ $(function(){
 	</div>
 {{include "/common/baiducc.html"}}
 </body>
-
-<script>
-// 查询是否需要(微信)账号合并
-mergeAccountForWx.init({
-    _className: 'wx-follow-project',
-    beforeShow: function () {}
-})
-</script>
-</html>
+</html>

+ 0 - 15
src/web/templates/weixin/search/mainSearch.html

@@ -148,20 +148,6 @@
     }
 
 	$(function(){
-        // 查询是否需要(微信)账号合并
-        mergeAccountForWx.init({
-            _className: 'wx-main-search',
-            // 请求完成,判断是否需要显示ActiveTip
-            queryComplete: function (info) {
-                if (info.tipMerge == 1) {
-                    // 不显示弹窗
-                } else {
-                    // 如果不显示合并弹窗,则尝试显示活动Tip
-                    showActiveTip()
-                }
-            }
-        })
-
         // 搜索选择的显示隐藏
         $('.selected-export .options').on('tap', 'span',function(e){
             var index = $(this).attr('index')  // index可以表示当前点击的是哪个按钮
@@ -874,7 +860,6 @@
 <div id="advertscript" class="hidden">
 {{$s:=(Ad "jy-wxsearch-middle" -1)}}
 
-<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/merge-wx.js?v={{Msg "seo" "version"}}"></script>
 <script>
 	var ADList={{$s}}
 	var random=Math.floor(Math.random()*ADList.length);

+ 7 - 6
src/web/templates/weixin/wxinfocontent_rec.html

@@ -2322,12 +2322,13 @@ function getCollectionState () {
     })
 }
 $('.collec_star').on('click', function () {
-    var $this = $(this)
-    var $icon = $this.children('.icon')
-    var shoucang = $icon.hasClass('weishoucang')
-    if (vKeepComponent) {
-        vKeepComponent.changeBid(id, shoucang)
-    }
+  var $this = $(this)
+  var $icon = $this.children('.icon')
+  var shoucang = $icon.hasClass('weishoucang')
+  // 说明未收藏,点击收藏
+  if (vKeepComponent) {
+    vKeepComponent.changeBid(id, shoucang)
+  }
 })
 </script>
 {{include "/common/baiducc.html"}}

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است