Ver Fonte

Merge branch 'dev4.5.5' of http://127.0.0.1:8080/qmx/jy into dev4.5.5

TANGSHIZHE há 4 anos atrás
pai
commit
18eedbbba0

+ 6 - 4
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js

@@ -241,7 +241,7 @@ var vNode = {
             }
           })
         },
-        // 点击去开通埋点方法
+        // 点击去开通埋点方法(免费体验埋点)
         goBuyBuried: function(text) {
           var _this = this
           var params = {
@@ -257,12 +257,14 @@ var vNode = {
             success: function (res) {
               console.log(res)
               setTimeout(function() {
-                location.href = '/jyapp/big/page/buy_commit?bid=' + _this.encryptId
+                // location.href = '/jyapp/big/page/buy_commit?bid=' + _this.encryptId
+                location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=buyer_portrait_getNewMsg'
               }, 200)
             },
             error: function (error) {
               console.log(error)
-              location.href = '/jyapp/big/page/buy_commit?bid=' + _this.encryptId
+              // location.href = '/jyapp/big/page/buy_commit?bid=' + _this.encryptId
+              location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=buyer_portrait_getNewMsg'
             }
           })
         },
@@ -1199,7 +1201,7 @@ var vNode = {
             title: '您暂无使用权限',
             message: '开通大会员,采购单位项目动态全面获取,帮助企业洞察采购需求,开发新客户!',
             messageAlign:'left',
-            confirmButtonText: _this.power.indexOf(5) < 0 && _this.bigStatus > 0 ? '联系客服' : '去开通',
+            confirmButtonText: _this.power.indexOf(5) < 0 && _this.bigStatus > 0 ? '联系客服' : '免费体验',
             confirmButtonColor: '#2ABED1',
             showCancelButton: true,
             cancelButtonText: '取消'

+ 4 - 4
src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait.html

@@ -257,12 +257,12 @@
                 <div class="vip_component" v-if="getStatus && !conf._13" style="height:9.16rem;background:url('/common-module/collection/image/bg/vip_bg_1.png') no-repeat;background-size:100% 100%">
                     <vip-component @tabactive="tabActive" type="item_1" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_1.png'></vip-component>
                 </div>
-                <div class="bg-white tab-card cell-list history-list" v-if="conf._4 && tabActiveName == '2' && !getStatus">
-                    <hispro-component :type="portrait" :id="entInfo.id"></hispro-component>
+                <div class="bg-white tab-card cell-list history-list">
+                    <hispro-component type="winner" :id="entInfo.id"></hispro-component>
                 </div>
-                <div class="vip_component" v-if="isMember" style="height:11.36rem;background:url('/common-module/collection/image/bg/vip_bg_9.png') no-repeat;background-size:100% 100%">
+                <!-- <div class="vip_component" v-if="isMember" style="height:11.36rem;background:url('/common-module/collection/image/bg/vip_bg_9.png') no-repeat;background-size:100% 100%">
                     <vip-component @tabactive="tabActive" type="item_9" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_9.png'></vip-component>
-                </div>
+                </div> -->
                 <div class="bg-white tab-card charts" v-if="conf._4 && tabActiveName == '2' && annualData.rows.length !== 0 && !getStatus">
                     <div class="tab-card-title">年度项目统计</div>
                     <!-- e-charts和sticky同时使用时候,需要手动降低css层级(z-index: 1),确保tooltip不遮挡固定定位头部 -->

+ 4 - 4
src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html

@@ -129,13 +129,13 @@
                 </div>
             </div>
             <!-- 历史项目联系人 -->
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png') no-repeat;background-size:100% 100%">
+            <!-- <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png') no-repeat;background-size:100% 100%">
               <p class="example-title">历史项目联系方式</p>
               <buyer-example :status="bigStatus" :power="power" type="item_1" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/01.png'></buyer-example>
-            </div>
-            <div v-else>
+            </div> -->
+            <!-- <div v-else> -->
               <hispro-component class="history-list" type="buyer" :buyer="buyer.name"></hispro-component>
-            </div>
+            <!-- </div> -->
             <!-- 年度项目统计 -->
             <div class="years" v-if="isShow.showYearData">
                 <div class="chart_title">年度项目统计</div>

+ 12 - 2
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info.html

@@ -503,7 +503,7 @@
       ajaxParams: {
         "name": "",
         "phone": "",
-        "source": utils.getParam('origin'),
+        "source": '',
         "agree": false,
         "mail": "",
         "province": "",
@@ -518,6 +518,16 @@
         "partnerNeeds": ""
       }
     },
+    created() {
+      // 大会员落地页免费体验
+      if (utils.getParam('origin')) {
+        this.ajaxParams.source = utils.getParam('origin')
+      }
+      // 采购单位画像、企业画像页面传来的
+      if (utils.getParam('source')) {
+        this.ajaxParams.source = utils.getParam('source')
+      }
+    },
     mounted() {
       this.ajaxGetEchoInfo()
       this.bigDocAjax('ICRP') // 进入留资页面埋点
@@ -907,7 +917,7 @@
           if (r) {
             loading.clear()
             if (r.error_msg === '') {
-              if (_this.ajaxParams.source === 'member_freeuse') {
+              if (_this.ajaxParams.source === 'member_freeuse' || utils.getParam('source')) {
               _this.$dialog.close()
               _this.$dialog.confirm({
                 message: '您的申请已提交,我们的客户经理会在24小时内尽快与您联系。',

+ 483 - 0
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_push.html

@@ -0,0 +1,483 @@
+<!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">
+                    <p class="top-tip-text">请留下您的联系方式,客户经理将在24小时内为您服务!
+                    </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>
+                    </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 :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>
+                    </div>
+                </div>
+            </div>
+            <div class="j-footer">
+                <div class="j-button-group">
+                    <button class="j-button-cancel" @click="cancelForm">暂不提供</button>
+                    <button class="j-button-confirm" :disabled="isSubmitDisabled" @click="submitForm">提交</button>
+                </div>
+            </div>
+            <van-popup class="prefect-pop-group" v-model="popInfo.show" round position="bottom"
+                       :style="{ height: getPopHeight }">
+                <div class="j-container">
+                    <div class="j-header">
+                        <div class="pop-title-group">
+                            <span>@@popInfo.title@@</span>
+                            <div class="close-padding-box" @click="popInfo.show = false">
+                                <i class="j-icon base-icon icon-delete-gray"></i>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="j-main" v-show="conditionMap[popInfo.label]">
+                        <div class="condition-select-group" :class="{more: isMoreSelect}">
+                            <div class="condition-select-item" @click="onSelectItem(item, popInfo.label)" v-for="(item,i) in conditionMap[popInfo.label]" :class="{checked: item.checked}">
+                                <div>@@item.title@@</div>
+                                <i v-if="!isMoreSelect" class="j-icon base-icon icon-tick"></i>
+                                <div class="more-icon-box" v-else>
+                                    <i  class="j-icon base-icon icon-tick-circle"></i>
+                                    <i  class="j-icon base-icon icon-tick-circle-fill"></i>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="j-footer">
+                        <div class="j-button-group">
+                            <button class="j-button-confirm" :disabled="isNextDisabled" @click="submitPop">确认</button>
+                        </div>
+                    </div>
+                </div>
+            </van-popup>
+        </div>
+    </div>
+</div>
+
+<script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js></script>
+{{include "/big-member/commonjs.html"}}
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+
+<script>
+  var vNode = {
+    delimiters: ['@@', '@@'],
+    el: '#perfect-info-page',
+    data: {
+      searchList: [],
+      isAssociateShow: false,
+      isAssociateUpTime: -1,
+      infoMap: {
+        name: '',
+        phone: '',
+        email: '',
+        company: '',
+        position: '',
+        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
+          }
+        ]
+      },
+      ajaxParams: {
+        "name": "",
+        "phone": "",
+        "source": utils.getParam('source'), // 推送消息点进来的 
+        "mail": "",
+        "company": "",
+        "position": "",
+      }
+    },
+    mounted() {
+      // source=message_bigmember app消息大会员留资地
+      // source=message_structeddata app消息结构化数据留资地
+      this.ajaxGetEchoInfo()
+    },
+    computed: {
+      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
+      },
+      isMoreSelect () {
+        return this.popInfo.label === '公司类型'
+      },
+      checkPosition () {
+        if (this.infoMap.position !== "" && this.infoMap.position !== '其他') {
+          return true
+        }
+        if (this.infoMap.position_other.length > 50) {
+          return false
+        }
+        var namereg = /^[\u4E00-\u9FA5A-Za-z\s]+(·[\u4E00-\u9FA5A-Za-z]+)*$/;
+        return namereg.test(this.infoMap.position_other)
+      },
+      isSubmitDisabled () {
+        return !this.checkName || !this.checkPhone || !this.checkEmail || !this.checkEntName || !this.checkPosition
+      },
+      isNextDisabled () {
+        var type = this.popInfo.label
+        var result = false
+        switch (type) {
+          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.position) {
+          this.setCheckForData('position', 'position', data.position, '职位')
+        }
+        if (data.name) {
+          this.setCheckForData('name', 'name', data.name)
+        }
+        if (data.phone) {
+          this.setCheckForData('phone', 'phone', data.phone)
+        }
+        if (data.mail) {
+          this.setCheckForData('mail', 'email', data.mail)
+        }
+        if (data.company) {
+          this.setCheckForData('company', 'company', data.company)
+        }
+  
+      },
+      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]
+          this.conditionMap[label].forEach(v => {
+            if (checkDatas.indexOf(v.title) !== -1) {
+              v.checked = true
+            }
+          })
+        }
+      },
+      submitPop() {
+        var type = this.popInfo.label
+        switch (type) {
+          case '职位': {
+            var tempData = this.conditionMap[type].filter(v => v.checked)
+            this.setCheckForData('position', 'position', tempData[0].title)
+            break
+          }
+        }
+        this.popInfo.show = false
+      },
+      openPop(type) {
+        switch (type) {
+          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 () {
+        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
+        }
+        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 === '') {
+              _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 () {
+                history.back()
+              }).catch(function () {
+                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>

+ 4 - 3
src/jfw/modules/bigmember/src/service/portrait/memberPortraitAction.go

@@ -4,10 +4,11 @@ import (
 	. "api"
 	"entity"
 	"fmt"
-	"github.com/go-xweb/xweb"
 	"log"
 	qutil "qfw/util"
 	"util"
+
+	"github.com/go-xweb/xweb"
 )
 
 //大会员画像接口
@@ -52,7 +53,7 @@ func (this *EntPortrait) WinnerContacts() {
 		if err != nil {
 			return nil, err
 		}
-		if !hasPower {
+		if false && !hasPower {
 			return nil, fmt.Errorf("非法请求")
 		}
 		entId := util.DecodeId(this.GetString("entId"))
@@ -204,7 +205,7 @@ func (this *EntPortrait) BuyerContacts() {
 		if err != nil {
 			return nil, err
 		}
-		if !hasPower {
+		if false && !hasPower {
 			return nil, fmt.Errorf("非法请求")
 		}
 		buyerName := this.GetString("buyer")

+ 2 - 2
src/web/staticres/big-member/js/ent_portrait.js

@@ -881,7 +881,7 @@ var vNode = {
         toProjectDetail: function (item) {
             this.savePageState()
             if (item.id) {
-                var href = '/jyapp/article/content/' + item.id + '.html'
+                var href = '/article/content/' + item.id + '.html'
                 location.href = href
             }
         },
@@ -889,7 +889,7 @@ var vNode = {
         toUnitPortrayal: function (item) {
             this.savePageState()
             if (item.name) {
-                location.href = 'unit_portrayal?entName=' + item.name
+                location.href = '/big/wx/page/unit_portrayal?entName=' + item.name
             }
         },
         savePageState: function () {

+ 6 - 4
src/web/staticres/big-member/js/unit_portrayal.js

@@ -241,7 +241,7 @@ var vNode = {
             }
           })
         },
-        // 点击去开通埋点方法
+        // 点击去开通埋点方法(免费体验)
         goBuyBuried: function(text) {
           var _this = this
           var params = {
@@ -257,12 +257,14 @@ var vNode = {
             success: function (res) {
               console.log(res)
               setTimeout(function() {
-                location.href = '/big/wx/page/buy_commit?bid=' + _this.encryptId
+                // location.href = '/big/wx/page/buy_commit?bid=' + _this.encryptId
+                location.href = '/weixin/frontPage/bigmember/free/perfect_info?source=buyer_portrait_getNewMsg'
               }, 200)
             },
             error: function (error) {
               console.log(error)
-              location.href = '/big/wx/page/buy_commit?bid=' + _this.encryptId
+              // location.href = '/big/wx/page/buy_commit?bid=' + _this.encryptId
+              location.href = '/weixin/frontPage/bigmember/free/perfect_info?source=buyer_portrait_getNewMsg'
             }
           })
         },
@@ -1198,7 +1200,7 @@ var vNode = {
             title: '您暂无使用权限',
             message: '开通大会员,采购单位项目动态全面获取,帮助企业洞察采购需求,开发新客户!',
             messageAlign:'left',
-            confirmButtonText: _this.power.indexOf(5) < 0 && _this.bigStatus > 0 ? '联系客服' : '去开通',
+            confirmButtonText: _this.power.indexOf(5) < 0 && _this.bigStatus > 0 ? '联系客服' : '免费体验',
             confirmButtonColor: '#2ABED1',
             showCancelButton: true,
             cancelButtonText: '取消'

+ 29 - 20
src/web/staticres/common-module/collection/js/buyer-example.js

@@ -11,7 +11,7 @@ var vipDialog = `
     </div>
   </div>
   <div class="openBtn">
-      <button class="goBtn" @click="goOpen(getTextMap.headText.top,getTextMap.headText.bot)">{{getTextMap.btnText}}</button>
+      <button class="goBtn" @click="goOpen(getTextMap.headText.top,getTextMap.headText.bot, getTextMap.source)">{{getTextMap.btnText}}</button>
   </div>
 </div>
 `
@@ -48,7 +48,7 @@ var buyerExample = {
   data: function() {
     return {
       titleText: '开通大会员',
-      btnText: '去开通',
+      btnText: '免费体验',
       headText: {
         top: '通过实时监控项目的招标、中标、合同等',
         bot: '信息,全面挖掘更多潜在商机!'
@@ -59,11 +59,12 @@ var buyerExample = {
     getTextMap () {
       var textMap = {
         titleText: '开通大会员',
-        btnText: '去开通',
+        btnText: '免费体验',
         headText: {
           top: '通过实时监控项目的招标、中标、合同等',
           bot: '信息,全面挖掘更多潜在商机!'
-        }
+        },
+        source: ''
       }
       if (this.power.indexOf(5) < 0 && this.status > 0) {
         textMap.btnText = '联系客服'
@@ -72,78 +73,85 @@ var buyerExample = {
           // 历史项目联系方式
         case 'item_1': {
           textMap.headText.top = ' 获取采购单位类似项目联系人、'
-          textMap.headText.bot = '联系方式等,一键拨打!'
+          textMap.headText.bot = '联系方式等,一键拨打!',
+          textMap.source = ''
           break
         }
           // 年度项目统计
         case 'item_2': {
           textMap.headText.top = '采购单位年度项目规模、增长趋势'
           textMap.headText.bot = '一目了然,快速分析市场!'
+          textMap.source = 'buyer_portrait_yearData'
           break
         }
           // 月度采购规模统计
         case 'item_3': {
           textMap.headText.top = '通过纵向对比近3年月度中标金额,'
           textMap.headText.bot = '快速分析行业月度采购趋势!'
+          textMap.source = 'buyer_portrait_monthData'
           break
         }
           // 采购规模分布
         case 'item_4': {
           textMap.headText.top = '全面了解采购单位的年度采购规划、'
           textMap.headText.bot = '项目预算,帮助投标人制定投标策略!'
+          textMap.source = 'buyer_portrait_moneyRange'
           break
         }
           // 各类招标方式占比
         case 'item_5': {
           textMap.headText.top = '洞察采购单位招标方式、数量、金额占比,'
           textMap.headText.bot = '综合了解采购单位,帮企业决策是否投标!'
+          textMap.source = 'buyer_portrait_bidtypeData'
           break
         }
           // 各行业项目平均节支率
         case 'item_6': {
           textMap.headText.top = '分析行业项目的预算、中标价格差额比率,'
           textMap.headText.bot = '帮助企业核算采购项目的利润率!'
+          textMap.source = 'buyer_portrait_rate'
           break
         }
           // 各行业项目规模占比
         case 'item_7': {
           textMap.headText.top = '通过行业采购项目的规模、数量、利润率,'
           textMap.headText.bot = '洞悉采购单位的采购状况!'
+          textMap.source = 'buyer_portrait_top12'
           break
         }
           // 重点合作企业
         case 'item_8': {
           textMap.headText.top = '通过挖掘重点合作企业,直观了解采购单位'
           textMap.headText.bot = '与企业关系远近,辅助投标决策!'
+          textMap.source = 'buyer_portrait_topShow'
           break
         }
           // 合作企业注册资本分布
         case 'item_9': {
           textMap.headText.top = '通过分析合作企业注册资本、采购项目规模、'
           textMap.headText.bot = '利润率,全面洞察采购单位合作企业!'
+          textMap.source = 'buyer_portrait_withCapitalData'
           break
         }
          // 合作企业年龄分布
         case 'item_10': {
           textMap.headText.top = '通过分析合作企业年龄、数量、规模分布情况,'
           textMap.headText.bot = '全面洞察采购单位合作企业!'
+          textMap.source = 'buyer_portrait_withEstablishData'
           break
         }
         // 合作企业注册地分布
         case 'item_11': {
           textMap.headText.top = '通过分析合作企业的地址、数量、采购规模,'
           textMap.headText.bot = '了解采购单位营商环境,辅助投标决策!'
+          textMap.source = 'buyer_portrait_withAreaData'
           break
         }
         // 重点合作代理机构
         case 'item_12': {
           textMap.headText.top = '通过提供合作代理机构的名录、数量,全面洞察'
           textMap.headText.bot = '采购单位合作环境,辅助投标决策!'
-          break
-        }
-        default: {
-          textMap.headText.top = '采购单位项目动态全面获取,帮助企业'
-          textMap.headText.bot = '洞察采购需求,开发新客户!'
+          textMap.source = 'buyer_portrait_topAgencyData'
           break
         }
       }
@@ -151,12 +159,13 @@ var buyerExample = {
     },
   },
   methods: {
-    linkFn: function(id) {
+    linkFn: function(id, source) {
       var isWeixin = utils.isWeiXinBrowser
       if(!isWeixin) {
-        if (this.getTextMap.btnText == '去开通') {
+        if (this.getTextMap.btnText == '免费体验') {
           // 跳转到大会员
-          location.href = '/jyapp/big/page/buy_commit?bid=' + id
+          // location.href = '/jyapp/big/page/buy_commit?bid=' + id
+          location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=' + source
         } else if (this.getTextMap.btnText == '联系客服') {
           try {
             JyObj.callPhone('400-108-6670');
@@ -165,15 +174,16 @@ var buyerExample = {
           }
         }
       } else {
-        if (this.getTextMap.btnText == '去开通') {
+        if (this.getTextMap.btnText == '免费体验') {
           // 跳转到大会员
-          location.href = '/big/wx/page/buy_commit?bid=' + id
+          // location.href = '/big/wx/page/buy_commit?bid=' + id
+          location.href = '/weixin/frontPage/bigmember/free/perfect_info?source=' + source
         } else if (this.getTextMap.btnText == '联系客服') {
           location.href = 'tel:400-108-6670'
         }
       }
     },
-    goOpen: function(top, bot) {
+    goOpen: function(top, bot, source) {
       console.log(this.$parent.encryptId)
       var params = {
         mold: 'isCBBT',
@@ -182,7 +192,7 @@ var buyerExample = {
       }
       var _this = this
       console.log(_this.getTextMap.btnText)
-      if (_this.getTextMap.btnText == '去开通') {
+      if (_this.getTextMap.btnText == '免费体验') {
         $.ajax({
           type: 'POST',
           url: '/publicapply/drainage/buyerunit',
@@ -190,17 +200,16 @@ var buyerExample = {
           data: JSON.stringify(params),
           success: function (res) {
             console.log(res)
-            _this.linkFn(_this.$parent.encryptId)
+            _this.linkFn(_this.$parent.encryptId, source)
           },
           error: function (error) {
             console.log(error)
-            _this.linkFn(_this.$parent.encryptId)
+            _this.linkFn(_this.$parent.encryptId, source)
           }
         })
       } else if (_this.getTextMap.btnText == '联系客服') {
         _this.linkFn(_this.$parent.encryptId)
       }
-      
     }
   }
 }

+ 7 - 2
src/web/staticres/common-module/collection/js/vip-dialog.js

@@ -126,7 +126,7 @@ var vipComponent = {
           // 企业情报历史记录
         case 'item_8': {
           textMap.titleText = '开通大会员'
-          textMap.btnText = '去开通'
+          textMap.btnText = '免费体验'
           textMap.headText.top = '快速查询全国企业工商信息、法人信息、'
           textMap.headText.bot = '联系方式,全面掌控企业动态!'
           break
@@ -134,7 +134,7 @@ var vipComponent = {
           // 历史项目联系方式
         case 'item_9': {
           textMap.titleText = '开通大会员'
-          textMap.btnText = '去开通'
+          textMap.btnText = '免费体验'
           textMap.headText.top = '获取企业历史项目联系人信息,'
           textMap.headText.bot = '直接与甲方或渠道商项目负责人对接!'
           break
@@ -158,10 +158,13 @@ var vipComponent = {
           if(this.type == 'item_9' || this.type == 'item_8') {
             // 跳转到大会员
             location.href = '/jyapp/big/page/buy_commit'
+            // location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=ent_portrait'
           } else {
             // 跳转到超级订阅
             location.href = '/jyapp/vipsubscribe/vipsubscribe_new'
           }
+        } else if (this.getTextMap.btnText == '免费体验') {
+          location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=ent_portrait'
         } else if (this.getTextMap.btnText == '去升级') {
           location.href = '/jyapp/vipsubscribe/upgradePage'
         } else if(this.getTextMap.btnText == '联系客服') {
@@ -178,6 +181,8 @@ var vipComponent = {
             // 跳转到超级订阅
             location.href = '/front/vipsubscribe/vipsubscribe_new'
           }
+        } else if (this.getTextMap.btnText == '免费体验') {
+          location.href = '/weixin/frontPage/bigmember/free/perfect_info?source=ent_portrait'
         } else if (this.getTextMap.btnText == '去升级') {
           location.href = '/front/vipsubscribe/upgradePage'
         } else if(this.getTextMap.btnText == '联系客服') {

+ 4 - 4
src/web/templates/big-member/wx/page_unit_portrayal.html

@@ -135,13 +135,13 @@
               </div>
           </div>
           <!-- 历史项目联系人 -->
-          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png?v=1') no-repeat;background-size:100% 100%;">
+          <!-- <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png?v=1') no-repeat;background-size:100% 100%;">
             <p class="example-title">历史项目联系方式</p>
             <buyer-example :status="bigStatus" :power="power" type="item_1" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/01.png'></buyer-example>
-          </div>
-          <div v-else>
+          </div> -->
+          <!-- <div v-else> -->
             <hispro-component class="history-list" type="buyer" :buyer="buyer.name"></hispro-component>
-          </div>
+          <!-- </div> -->
           <!-- 年度项目统计 -->
           <div class="years" v-if="isShow.showYearData">
               <div class="chart_title">年度项目统计</div>

+ 11 - 10
src/web/templates/common/pcbottom.html

@@ -508,9 +508,8 @@ if (location.href.indexOf('jyblog') === -1) {
     .help-slide{
       position: absolute;
       left: -210px;
-      top: -20px;
+      top: -29px;
       width: 200px;
-      height: 86px;
       background: #ffffff;
       border-radius: 8px;
       box-shadow: 0px 0px 28px 0px rgb(0 0 0 / 16%);
@@ -518,21 +517,22 @@ if (location.href.indexOf('jyblog') === -1) {
     }
     .help-slide-top{
       text-align: center;
-      line-height: 46px;
+      line-height: 54px;
       color: #1d1d1d;
       font-size: 14px;
       border-bottom: 1px solid #ececec;
     }
     .help-slide-bottom{
       position: relative;
-      padding: 8px 12px;
+      padding: 0 12px;
+      height: 38px;
     }
     .help-slide-kf,.help-slide-zx{
       display: inline-block;
       font-size: 14px;
       color: #2cb7ca;
       padding-left: 20px;
-      line-height: 22px;
+      line-height: 38px;
       cursor: pointer;
     }
     .help-slide-kf{
@@ -557,18 +557,19 @@ if (location.href.indexOf('jyblog') === -1) {
     }
     .help-close{
       position: absolute;
-      top: -12px;
-      left: -12px;
-      width: 24px;
-      height: 24px;
+      top: 4px;
+      right: 4px;
+      width: 18px;
+      height: 18px;
       box-shadow: 0px 0px 28px 0px rgba(0,0,0,0.08);
       cursor: pointer;
+      opacity: 0.5;
     }
     .kf-phone{
       display: none;
       position: absolute;
       left: 10px;
-      top: 92px;
+      top: 101px;
       width: 189px;
       height: 48px;
       background: #2cb7ca;

+ 8 - 1
src/web/templates/frontRouter/wx/bigmember/free/perfect_info.html

@@ -530,17 +530,24 @@
       }
     },
     created() {
+      // 大会员落地页免费体验
       if (utils.getParam('origin')) {
         this.ajaxParams.source = utils.getParam('origin')
       }
+      // 微信公众号推文传来的
       if (utils.getParam('target')) {
         this.ajaxParams.source = utils.getParam('target')
       }
+      // 采购单位画像、企业画像传来的
+      if (utils.getParam('source')) {
+        this.ajaxParams.source = utils.getParam('source')
+      }
     },
     mounted() {
       this.ajaxGetEchoInfo()
       this.wxTweetAjax('isICRP') // 公众号推文进入的埋点
       this.bigDocAjax('ICRP') // 进入留资页面埋点
+      this.fromBuyerAjax('isICRP') // 采购单位画像、企业画像进来埋点
     },
     computed: {
       isShowCancel () {
@@ -952,7 +959,7 @@
           if (r) {
             loading.clear()
             if (r.error_msg === '') {
-              if (_this.ajaxParams.source === 'member_freeuse' ||  utils.getParam('target')) {
+              if (_this.ajaxParams.source === 'member_freeuse' ||  utils.getParam('target') || utils.getParam('source')) {
                 _this.$dialog.close()
                 _this.$dialog.confirm({
                   message: '您的申请已提交,我们的客户经理会在24小时内尽快与您联系。',

+ 4 - 4
src/web/templates/frontRouter/wx/collection/sess/ent_portrait.html

@@ -262,12 +262,12 @@
                 <div class="vip_component" v-if="getStatus && !conf._13" style="height:9.16rem;background:url('/common-module/collection/image/bg/vip_bg_1.png') no-repeat;background-size:100% 100%">
                     <vip-component @tabactive="tabActive" type="item_1" :entvisit="entvisit" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_1.png'></vip-component>
                 </div>
-                <div class="bg-white tab-card cell-list history-list" v-if="conf._4 && tabActiveName == '2' && !getStatus">
-                    <hispro-component :type="portrait" :id="entInfo.id"></hispro-component>
+                <div class="bg-white tab-card cell-list history-list">
+                    <hispro-component type="winner" :id="entInfo.id"></hispro-component>
                 </div>
-                <div class="vip_component" v-if="isMember" style="height:11.36rem;background:url('/common-module/collection/image/bg/vip_bg_9.png') no-repeat;background-size:100% 100%">
+                <!-- <div class="vip_component" v-if="isMember" style="height:11.36rem;background:url('/common-module/collection/image/bg/vip_bg_9.png') no-repeat;background-size:100% 100%">
                     <vip-component @tabactive="tabActive" type="item_9" :entvisit="entvisit" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_9.png'></vip-component>
-                </div>
+                </div> -->
                 <div class="bg-white tab-card charts" v-if="conf._4 && tabActiveName == '2' && annualData.rows.length !== 0  && !getStatus">
                     <div class="tab-card-title">年度项目统计</div>
                     <!-- e-charts和sticky同时使用时候,需要手动降低css层级(z-index: 1),确保tooltip不遮挡固定定位头部 -->