Browse Source

Merge branch 'master' into feature/v4.7.62

lianbingjie 2 years ago
parent
commit
86ffdea789

+ 3 - 0
src/jfw/filter/filter.go

@@ -59,5 +59,8 @@ func (f *Filter) Do(w http.ResponseWriter, r *http.Request) bool {
 	if !(&salesFilter{w, r, session, getSession}).Do() {
 		return false
 	}
+	if !(&pcSalesFilter{w, r, session, getSession}).Do() {
+		return false
+	}
 	return true
 }

+ 53 - 0
src/jfw/filter/pcUserSalesFilter.go

@@ -0,0 +1,53 @@
+package filter
+
+import (
+	"github.com/go-xweb/httpsession"
+	"jfw/config"
+	"jfw/public"
+	"net/http"
+	qu "qfw/util"
+	"strings"
+	"time"
+)
+
+type pcSalesFilter struct {
+	W          http.ResponseWriter
+	R          *http.Request
+	Session    *httpsession.Session
+	GetSession map[string]interface{}
+}
+
+// pc新用户判断是否需要留资
+func (l *pcSalesFilter) Do() bool {
+	if !initflag {
+		return true
+	}
+	if flag, _ := config.Sysconfig["phoneFilterFlag"].(bool); !flag {
+		return true
+	}
+	if l.R.Method == "POST" {
+		return true
+	}
+	for _, v := range bindurl {
+		if v.MatchString(l.R.URL.Path) && !strings.Contains(l.R.URL.Path, "bidedoc") && !strings.Contains(l.R.URL.Path, "squeeze") && !strings.Contains(l.R.URL.Path, "partner") {
+			return true
+		}
+	}
+	if userAgent := l.R.UserAgent(); mobileReg.MatchString(userAgent) || public.CheckWxBrowser(l.R) {
+		return true // 移动端 返回
+	}
+	//pc判断是否需要留资
+	href := "/swordfish/frontPage/user/sess/set_favorite" // pc端留资页面地址
+	if uid := l.GetSession["userId"]; uid != nil && uid != "" {
+		data, ok := public.MQFW.FindById("user", qu.InterfaceToStr(uid), `{"l_registedate":1,"app_first_login":1}`)
+		if ok && data != nil && len(*data) > 0 {
+			if qu.Int64All((*data)["l_registedate"]) >= qu.Int64All(config.Seoconfig["appNewUserTime"]) && qu.IntAll((*data)["app_first_login"]) == 0 {
+				//设置cookie 前端跳转
+				SetCookie(l.R.URL.String(), int(time.Hour*24/time.Second), l.W)
+				http.Redirect(l.W, l.R, href, 302)
+				return false
+			}
+		}
+	}
+	return true
+}

+ 3 - 0
src/web/staticres/frontRouter/pc/collection/css/index-pc.css

@@ -363,6 +363,9 @@
   background: #fff;
   cursor: pointer;
 }
+.el-loading-mask {
+    z-index: 3;
+}
 
 .bi-report-inject-button {
   display: inline-block;

+ 224 - 0
src/web/staticres/frontRouter/pc/user/css/set_favorite.css

@@ -0,0 +1,224 @@
+.page-container {
+    background: linear-gradient(167.96deg, #FFFFFF 0%, #EDFEFF 45.31%, rgba(237, 254, 255, 0) 100%);
+}
+.page-container-content {
+    position: relative;
+    width: 680px;
+    min-height: 600px;
+    padding: 80px 0;
+    margin: 0 auto;
+    background: url(/frontRouter/pc/user/img/logo-transparent.png) no-repeat;
+    background-position: 460px 40px;
+    background-size: 104px 132px;
+}
+.page-content-header {
+    letter-spacing: 0.05em;
+}
+.page-content-header .page-title {
+    font-size: 22px;
+    line-height: 32px;
+    color: #171826;
+}
+.page-content-header .tip-text {
+    margin-top: 10px;
+    font-size: 14px;
+    line-height: 24px;
+    color: #5F5E64;
+}
+
+.skip-button {
+    padding: 4px 12px;
+    font-size: 14px;
+    line-height: 18px;
+    color: #171826;
+    background: linear-gradient(180deg, #9EF9FF 0%, rgba(96, 179, 255, 0) 100%);
+    border: 1px solid rgba(0, 0, 0, 0.1);
+    border-radius: 16px;
+}
+.fixed-button {
+    position: absolute;
+    top: 70px;
+    right: 20px;
+}
+
+.question-list-container {
+    padding: 40px 0;
+}
+.question-list-item:not(:first-of-type) {
+    margin-top: 40px;
+}
+.question-list-item .tags {
+    display: inline-block;
+    padding: 8px 12px;
+    font-size: 14px;
+    line-height: 20px;
+    color: #171826;
+    text-align: center;
+    background: linear-gradient(180deg, #E1FDFF 0%, rgba(222, 239, 255, 0) 100%);
+    border: 1px solid rgba(0,0,0,0.1);
+    border-radius: 2px;
+    margin-right: 10px;
+    margin-bottom: 12px;
+    cursor: pointer;
+}
+.question-list-item .tags.active {
+    color: #fff;
+    background: #2abed1!important;
+}
+.question-list-item .tags.colorful {
+    color: #fff;
+    background: #2abed1!important;
+}
+
+.key_title_ct {
+    display: flex;
+}
+.key_tipnums {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 20px;
+    height: 20px;
+    border-radius: 50%;
+    color: #fff;
+    font-size: 14px;
+    line-height: 20px;
+    background: linear-gradient(7.32deg, #1DB5E6 5.69%, #2ABED1 94.31%);
+}
+.key_title {
+    margin-left: 8px;
+    font-weight: bold;
+}
+.key_condition {
+    padding: 20px 0 8px 28px;
+}
+.key_condition.has-more-color .tags:nth-child(3),
+.key_condition.has-more-color .tags:nth-child(4),
+.key_condition.has-more-color .tags:nth-child(5) {
+    background: linear-gradient(180deg, #E1FFE4 0%, rgba(222, 255, 225, 0) 100%);
+}
+.key_condition.has-more-color .tags:nth-child(6),
+.key_condition.has-more-color .tags:nth-child(7),
+.key_condition.has-more-color .tags:nth-child(8) {
+    background: linear-gradient(180deg, #E1E8FF 0%, rgba(222, 241, 255, 0) 100%);
+}
+.key_condition.has-more-color .tags:nth-child(9),
+.key_condition.has-more-color .tags:nth-child(10),
+.key_condition.has-more-color .tags:nth-child(11),
+.key_condition.has-more-color .tags:nth-child(12),
+.key_condition.has-more-color .tags:nth-child(13),
+.key_condition.has-more-color .tags:nth-child(14),
+.key_condition.has-more-color .tags:nth-child(15) {
+    background: linear-gradient(180deg, #FFE8E1 0%, rgba(255, 244, 222, 0) 100%);
+}
+.key_title_substxt {
+    font-size: 11px;
+    line-height: 24px;
+    margin-top: 3px;
+    padding-left: 28px;
+    font-weight: 500;
+    color: #9B9CA3;
+}
+.key_titlenums{
+    width: 45px;
+    height: 22px;
+    display: inline-block;
+    background: #cbf7f7;
+    text-align: center;
+    line-height: 22px;
+    font-size: 14px;
+    border-radius: 10px;
+    color: #2ABED1;
+}
+.question-form-footer {
+    margin-top: 40px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.footer-button {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 340px;
+    height: 46px;
+    background: #2ABED1;
+    border-radius: 30px;
+    font-size: 16px;
+    line-height: 24px;
+    color: #fff;
+}
+.key_condition .selection-container {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    width: 388px;
+    height: 36px;
+    padding: 0 8px;
+}
+.selection-container .el-select {
+    width: 50%;
+}
+.selection-container .el-input {
+    display: flex;
+    align-items: center;
+}
+.selection-container .el-input__inner {
+    padding: 8px 12px;
+    height: 36px;
+    line-height: 36px;
+    color: #2ABED1;
+    background-color: transparent;
+    text-align: right;
+    border: none;
+}
+.selection-container .el-input__inner::placeholder {
+    color: #2ABED1;
+}
+.selection-container .el-input__suffix {
+    position: relative;
+    color: #C0C4CC;
+    transform: rotateZ(90deg);
+}
+.selection-container .el-input__suffix .el-select__caret {
+    transform: none;
+}
+.selection-container .el-input__suffix .el-select__caret.is-reverse {
+    transform: none;
+}
+.add-input-group .input-container {
+    display: flex;
+    align-items: center;
+}
+.add-input-group .input-container .el-input {
+    width: 310px;
+}
+.add-input-group .input-container .el-input__inner {
+    height: 36px;
+    line-height: 36px;
+}
+.add-input-group .add-input--button {
+    margin-left: 18px;
+    color: #2ABED1;
+}
+.add-input-group .add-input--button[disabled] {
+    opacity: 0.6;
+}
+.add-input-group .add-input--button:hover {
+    color: #2ABED1;
+}
+.add-input-group .add-input--tags {
+    height: unset;
+    color: #5F5E64;
+}
+.add-input-group .el-tag__close {
+    color: #fff;
+    background-color: #2ABED1;
+}
+.add-input-group .el-tag__close:hover {
+    background-color: #2abed1;
+}
+.key_error_txt {
+    margin-top: 8px;
+    color: #FF9F40;
+}

BIN
src/web/staticres/frontRouter/pc/user/img/logo-transparent.png


+ 222 - 0
src/web/staticres/frontRouter/pc/user/js/set_favorite.js

@@ -0,0 +1,222 @@
+const postUserSaleDataExample = {
+    demand: '销售管理,数据导出分析',
+    flatType: '代理商,服务商,工程施工企业',
+    scale: '20-99人',
+    position: '总经理',
+    department: '产品',
+    keyword: '自行车,手机,摩托,工程,医疗,app'
+}
+var favorite = new Vue({
+    el: '#main-app',
+    delimiters: ['${', '}'],
+    data: function () {
+        return {
+            codesArr: {
+                demand: '',
+                flatType: '',
+                scale: '',
+                position: '',
+                department: '',
+                keyword: ''
+            },
+            newUserSaleData: [],
+            // 关键词示范
+            inputKewArr: [],
+            // 关键词输入框
+            kewmodeldata: '',
+            // 用户选中信息
+            selectInfo: {},
+            selectPopInfo: {}
+        }
+    },
+    computed: {
+        inputKewLength: function () {
+            return this.inputKewArr.length >= 10
+        }
+    },
+    created: function () {
+        this.getNewUerSales()
+    },
+    methods: {
+        showToast: function (text) {
+            EasyAlert.show(text, '', 2000)
+        },
+        inputformatter () {
+            this.kewmodeldata = this.kewmodeldata.replace(/\s+/g, '')
+        },
+        positionShow: function (item, index, data) {
+            if (index === 0) return true
+            if (index === 1) {
+                // 如果职位是总裁或者总经理,不显示部门
+                try {
+                    var prevKey = data[index - 1].key
+                    if (this.selectPopInfo && this.selectPopInfo[prevKey]) {
+                        var select = this.selectPopInfo[prevKey].select
+                        if (select === '' || select === '总裁' || select === '总经理') {
+                            return false
+                        } else {
+                            return true
+                        }
+                    } else {
+                        return false
+                    }
+                } catch (error) {
+                    console.error(error)
+                    return false
+                }
+            } else {
+                return false
+            }
+            
+        },
+        // 添加关键词
+        kewsureBtn: function (index) {
+            this.setPageTrack(`添加-${this.kewmodeldata}`, index)
+            var item = this.kewmodeldata
+            // 验证关键词 重复否
+            var isinputKew = this.inputKewArr.some(function (v) {
+                return v === item
+            })
+      
+            if (isinputKew) {
+                this.showToast('关键词重复')
+                return false
+            }
+            if (this.kewmodeldata.length > 15) {
+                this.showToast('关键词超15个字')
+                return false
+            }
+            if (this.kewmodeldata === '') {
+              return false
+            }
+      
+            this.inputKewArr.push(this.kewmodeldata)
+            this.kewmodeldata = ''
+        },
+        // 取消关键字
+        canlekewBtn (item) {
+            this.inputKewArr = this.inputKewArr.filter(function (v) {
+                return v !== item
+            })
+        },
+        /**
+         * 标签选中事件
+         * @param selectItem - 选择的标签
+         * @param key - 问题 key
+         * @param choose - 问题选择类型
+         * @param choose - 问题 顶级index
+         */
+        chooseclickBtn (selectItem, { key, choose }, index) {
+            this.setPageTrack(`点击-${selectItem}`, index)
+            // 默认值初始化
+            if (!$.isArray(this.selectInfo[key])) {
+                this.$set(this.selectInfo, key, [])
+            }
+            // 多选逻辑处理
+            const isMultiple = choose === 2
+            if (isMultiple) {
+                if (this.selectInfo[key].includes(selectItem)) {
+                    const filterList = this.selectInfo[key].filter(function (v) {
+                        return v !== selectItem
+                    })
+                    this.$set(this.selectInfo, key, filterList)
+                } else {
+                    this.selectInfo[key].push(selectItem)
+                }
+            } else {
+                // 单选逻辑处理
+                this.$set(this.selectInfo, key, [])
+                this.selectInfo[key].push(selectItem)
+            }
+        },
+        /**
+         * 获取新用户数据
+         */
+        getNewUerSales: function () {
+            var _this = this
+            $.ajax({
+                url: '/salesLeads/appIsNewUerSales',
+                type: 'POST',
+                success: function(res) {
+                    if (res && res.error_code === 0 && $.isArray(res.data)) {
+                        const result = res.data
+                        result.forEach(function (v) {
+                            if (v.type === 3 && $.isArray(v.data)) {
+                                v.data.forEach(function (popInfo) {
+                                    popInfo.selectIndex = -1
+                                    popInfo.select = -1
+                                    _this.$set(_this.selectPopInfo, popInfo.key, {
+                                        show: false,
+                                        select: ''
+                                    })
+                                })
+                            }
+                        })
+                        _this.$set(_this, 'newUserSaleData', result)
+                    }
+                }
+            })
+        },
+        // 跳过
+        skip: function () {
+            this.postNewUerData(false)
+        },
+        // 提交跳过
+        postNewUerData (type, callback) {
+            var _this = this
+            this.setPageTrack(`点击-${type ? '开启剑鱼之旅' : '跳过'}`)
+            const codesArr = {
+                keyword: _this.inputKewArr.join(',') || ''
+            }
+            // 设置单选、多选选择参数
+            Object.keys(_this.selectInfo).forEach(function (v) {
+                codesArr[v] = _this.selectInfo[v].join(',')
+            })
+            // 设置 popup 参数
+            Object.keys(_this.selectPopInfo).forEach(function (v) {
+                codesArr[v] = _this.selectPopInfo[v].select
+            })
+            const params = codesArr
+            var platform = 'pc'
+            $.ajax({
+                url: '/salesLeads/appNewUerSales',
+                type: 'POST',
+                contentType: 'application/json',
+                data: JSON.stringify(params),
+                success: function(res) {
+                    if(res && res.error_code === 0) {
+                        if (res.error_msg === '保存成功') {}
+                        if (typeof callback === 'function') {
+                            callback && callback()
+                        } else {
+                            _this.goHomePage()
+                        }
+                    }
+                }
+            })
+        },
+        // 上报埋点数据
+        setPageTrack (desc = '', index = -1) {
+            var data = {
+                c_desc: desc,
+                c_index: index
+            }
+            try {
+                clab_tracker.track('c_newuser_interest', Object.assign({}, {
+                  c_platform: 'pc',
+                  date: new Date()
+                }, data))
+            } catch (e) {
+                console.warn(e)
+            }
+        },
+        goHomePage: function () {
+            // 是否window.open打开
+            if (window.opener && window.opener !== window) {
+                window.close()
+            } else {
+                location.href = '/?from=set_favorite'
+            }
+        }
+    }
+})

+ 63 - 0
src/web/staticres/js/guide-intro-dialog.js

@@ -0,0 +1,63 @@
+function GuideIntroDialog () {
+    this.iframeUrl = '/swordfish/frontPage/pure/sess/guide-intro-dialog-content'
+    this.storageKey = 'READ_GUIDE-login-clear'
+    this.needRecord = true
+    this.$dialog = $('#guide-intro-dialog-mask')
+
+    this.showDialog = function (f) {
+        if (f) {
+            this.$dialog.find('.content-iframe').attr('src', this.iframeUrl)
+            this.$dialog.modal('show')
+        } else {
+            this.$dialog.modal('hide')
+            this.onDialogClose()
+        }
+    }
+
+    this.initEvents = function () {
+        var _this = this
+        $('.guide-intro-dialog')
+            .on('click', '.skip-button', function () {
+                _this.showDialog(false)
+            })
+            .on('click', '.close-icon', function () {
+                _this.showDialog(false)
+            })
+    }
+
+    // 判断是否存在访问记录
+    this.checkHasStorage = function () {
+        var hasRecord = this.checkHasGuideRecord()
+        if (hasRecord) {
+            this.showDialog(false)
+        } else {
+            this.showDialog(true)
+        }
+    }
+
+    /**
+     * 保存引导页访问记录,是否需要持久化存储
+     * @param long
+     */
+    this.saveStorage = function (long) {
+        var GUIDE_CACHE_KEY = this.storageKey
+        var now = Date.now()
+        if (long) {
+            localStorage.setItem(GUIDE_CACHE_KEY, now)
+        } else {
+            sessionStorage.setItem(GUIDE_CACHE_KEY, now)
+        }
+    }
+
+    this.checkHasGuideRecord = function () {
+        var GUIDE_CACHE_KEY = this.storageKey
+        return sessionStorage.getItem(GUIDE_CACHE_KEY) || localStorage.getItem(GUIDE_CACHE_KEY) || false
+    }
+
+    this.onDialogClose = function () {
+        this.saveStorage(this.needRecord)
+    }
+
+    this.checkHasStorage()
+    this.initEvents()
+}

+ 49 - 15
src/web/staticres/js/login.js

@@ -493,13 +493,16 @@ var logic = function(data,num){
       phone: '',
       avatar: data.s_headimage || ''
     })
-		try{
+    try{
       checkBigStatus()
-			infoListCss();
-            message.init()
-            checkCounts()
-            initIndexMsgList()
-		}catch(e){ console.log(e) }
+      infoListCss();
+      message.init()
+      checkCounts()
+      initIndexMsgList()
+      window.guideIntroDialog = new GuideIntroDialog()
+		} catch (e) {
+      console.error(e)
+    }
 	}
 }
 
@@ -667,6 +670,30 @@ var processpage = function(shareid,num){
 	}
 }
 
+/**
+ * 检查是否需要前往新用户兴趣设置
+ * @returns {boolean}
+ */
+function checkNeedGoNewUserSettingPage () {
+  // 同步请求判断是否新用户,需要跳转兴趣设置页面
+  var goPage
+  $.ajax({
+    type: 'post',
+    async: false,
+    url: '/salesLeads/appIsNewUerSales',
+    success: function (res) {
+      if (res && res.data) {
+        goPage = '/swordfish/frontPage/user/sess/set_favorite'
+      }
+    }
+  })
+  if (goPage) {
+    window.open(goPage)
+    return true
+  }
+  return false
+}
+
 function clearObjKeyForRegFn (obj, reg) {
   if (obj) {
     for(var k in obj) {
@@ -756,13 +783,15 @@ var haslogin = function(num,kyorpn,url){
         phone: '',
         avatar: data.s_headimage || ''
       })
-			try{
-				checkBigStatus()
-				infoListCss();
-                message.init()
-                checkCounts()
-                initIndexMsgList()
-			}catch(e){}
+      try{
+        checkBigStatus()
+        infoListCss();
+        message.init()
+        checkCounts()
+        initIndexMsgList()
+			} catch (e) {
+        console.error(e)
+      }
 		}
 		else{
       toggleLoginDom(false)
@@ -1800,8 +1829,13 @@ function openLoginDig(type) {
     try {
       var injectLogic = logic
       logic = function (data, num) {
-        if (data.result === 'ok' && needToWork) {
-          return location.href = '/page_workDesktop/'
+        if (data.result === 'ok') {
+          // 检查是否需要新窗口打开<新用户兴趣偏好设置页面>
+          checkNeedGoNewUserSettingPage()
+          if (needToWork) {
+            location.href = '/page_workDesktop/'
+            return
+          }
         }
         injectLogic(data, num)
       }

+ 60 - 0
src/web/templates/common/guide-intro-dialog.html

@@ -0,0 +1,60 @@
+<!-- 产品介绍-弹窗-依赖与bootstrap -->
+<!-- 引入此模板前,保证引入/common/pnc.html模板 -->
+<style>
+.pointer {
+  cursor: pointer;
+}
+.guide-intro-dialog {
+  position: relative;
+  margin-top: 120px;
+  display: flex;
+  width: 440px;
+  height: 520px;
+  border-radius: 8px;
+  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.08);
+  z-index: 3000;
+}
+.guide-intro-dialog .skip-button {
+  position: absolute;
+  top: 10px;
+  right: 10px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 50px;
+  height: 24px;
+  font-size: 15px;
+  color: #fff;
+  background-color: rgba(0, 0, 0, 0.4);
+  border-radius: 4px;
+  z-index: 2;
+}
+.guide-intro-dialog .close-icon {
+  position: absolute;
+  left: 50%;
+  bottom: -54px;
+  font-size: 36px;
+  width: 28px;
+  height: 28px;
+  transform: translate(-50%, 0);
+  z-index: 2;
+}
+.guide-intro-dialog .close-icon img {
+  width: 100%;
+  height: 100%;
+}
+.guide-intro-dialog .content-iframe {
+  width: 100%;
+  height: 100%;
+}
+</style>
+<div class="modal fade guide-intro-dialog-mask" id="guide-intro-dialog-mask" data-backdrop="static">
+  <div class="modal-dialog guide-intro-dialog is-show">
+    <iframe class="content-iframe" src="" frameborder="0"></iframe>
+    <button class="skip-button">跳过</button>
+    <div class="close-icon pointer">
+      <img src="/images/pc/closeIcon2x.png" alt="关闭" />
+    </div>
+  </div>
+</div>
+<script src="/js/guide-intro-dialog.js"></script>

+ 4 - 0
src/web/templates/common/pchead.html

@@ -299,6 +299,10 @@
 <script src='{{Msg "seo" "cdn"}}/js/message.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/public-pc/js/header-nav.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/ad/js/index.js?v={{Msg "seo" "version"}}'></script>
+
+<!-- 产品介绍弹窗 -->
+{{include "/common/guide-intro-dialog.html"}}
+
 <!-- 浮漂消息公共js方法 -->
 <!-- defer表示最后执行 -->
 <script defer src='{{Msg "seo" "cdn"}}/common-module/ad/js/msgbuoy.js?v={{Msg "seo" "version"}}'></script>

+ 139 - 0
src/web/templates/frontRouter/pc/pure/sess/guide-intro-dialog-content.html

@@ -0,0 +1,139 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>产品介绍</title>
+    <link href="//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css" rel="stylesheet" />
+    <link href="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.13-rc/lib/theme-chalk/index.css" rel="stylesheet" />
+    <style>
+        div,span {
+            box-sizing: border-box;
+        }
+        .guide-intro-dialog-container {
+            width: 440px;
+            height: 520px;
+            background: linear-gradient(167.96deg, #fff 0%, #E2FDFF 48.02%, #EFFEFF 100%);
+            border-radius: 8px;
+        }
+        .carousel-list,
+        .carousel-item {
+            width: 100%;
+            height: 100%;
+        }
+        .guide-intro-dialog-content {
+            height: 100%;
+            background: url(/frontRouter/pc/user/img/logo-transparent.png) no-repeat;
+            background-position: 90% 20px;
+            background-size: 102px 132px;
+        }
+        .guide-intro-dialog-content .el-carousel__item {
+            padding: 50px 60px;
+        }
+        .guide-intro-dialog-content .el-carousel__arrow {
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            width: 26px;
+            height: 38px;
+            font-size: 18px;
+            background-color: rgba(0, 0, 0, 0.3);
+        }
+        .guide-intro-dialog-content .el-carousel__arrow--left {
+            left: 0;
+            border-radius: 0 20px 20px 0;
+        }
+        .guide-intro-dialog-content .el-carousel__arrow--right {
+            right: 0;
+            border-radius: 20px 0 0 20px;
+        }
+
+        .guide-intro-dialog-content .el-carousel__indicators--horizontal {
+            bottom: 164px;
+        }
+        .guide-intro-dialog-content .el-carousel__indicator--horizontal {
+            padding: 0;
+        }
+        .guide-intro-dialog-content .el-carousel__indicator {
+            margin-right: 12px;
+            width: 10px;
+            height: 10px;
+        }
+        .guide-intro-dialog-content .el-carousel__indicator .el-carousel__button {
+            width: 100%;
+            height: 100%;
+            border-radius: 5px;
+            background: rgba(42, 190, 209, 0.3);
+        }
+        .guide-intro-dialog-content .el-carousel__indicator.is-active {
+            width: 20px;
+        }
+        .guide-intro-dialog-content .el-carousel__indicator.is-active .el-carousel__button {
+            background: #2ABED1;
+        }
+        .guide-intro-dialog-content img {
+            display: block;
+            width: 100%;
+        }
+    </style>
+</head>
+<body>
+    <div class="guide-intro-dialog-container" id="app">
+        <div class="guide-intro-dialog-content">
+            <el-carousel class="carousel-list" height="100%" arrow="always" :interval="2000">
+                <el-carousel-item v-for="(item, index) in imageList" :key="index">
+                    <img :src="item.s_pic" alt="" />
+                </el-carousel-item>
+            </el-carousel>
+        </div>
+    </div>
+    <script src="//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js"></script>
+    <script src="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.13-rc/lib/index.js"></script>
+    <script src="//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/public/js/utils.js?v={{Msg "seo" "version"}}'></script>
+    <script>
+        var guideContent = new Vue({
+            el: '#app',
+            delimiters: ['${', '}'],
+            data: function () {
+                return {
+                    conf: {
+                        ad: 'pc-guide'
+                    },
+                    imageList: []
+                }
+            },
+            computed: {
+                ad: function () {
+                    return this.conf.ad
+                }
+            },
+            created: function () {
+                this.getActivityInfo()
+            },
+            methods: {
+                getActivityInfo: function () {
+                    var _this = this
+                    var codes = [this.ad]
+                    var params = {
+                        codes: codes
+                    }
+                    $.ajax({
+                        type: 'post',
+                        url: '/publicapply/free/getJyAdList',
+                        contentType: 'application/json',
+                        data: JSON.stringify(params),
+                        success: function (r) {
+                            if (r.error_code === 0 && r.data && $.isArray(r.data[_this.ad])) {
+                                var adList = r.data[_this.ad]
+                                _this.imageList = adList
+                            }
+                        }
+                    })
+                }
+            }
+        })
+    </script>
+</body>
+</html>

+ 134 - 0
src/web/templates/frontRouter/pc/user/sess/set_favorite.html

@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>设置兴趣偏好</title>
+    <meta content="IE=edge,Chrome=1" http-equiv="X-UA-Compatible"/>
+    <meta content="招标订阅,招标项目,中标项目,招标信息,剑鱼标讯,设置兴趣偏好" name="keywords"/>
+    <meta content="使用剑鱼标讯,可以精准匹配招标信息,只需要微信关注剑鱼标讯公众号,然后自行设定所关注的招标关键词和地区,满足订阅需求的招标信息就会在两个小时内自动推送。" name="description"/>
+    <meta content="webkit" name="renderer">
+    <meta content="telephone=no" name="format-detection"/>
+    <meta content="" theme="light" name="enable-header">
+    {{include "/common/pnc.html"}}
+    <link href='{{Msg "seo" "cdn"}}/css/reset.css?v={{Msg "seo" "version"}}' rel="stylesheet" type="text/css"/>
+    <link href='{{Msg "seo" "cdn"}}/pccss/reset_pc.css' rel="stylesheet" type="text/css"/>
+    <link href='{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}' rel="stylesheet"/>
+    <link href='{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}' rel="stylesheet" type="text/css"/>
+    <link href="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/theme-chalk/index.css" rel="stylesheet" />
+    <link href='{{Msg "seo" "cdn"}}/css/ele-reset.css?v={{Msg "seo" "version"}}' rel="stylesheet">
+    <link href='{{Msg "seo" "cdn"}}/frontRouter/pc/user/css/set_favorite.css?v={{Msg "seo" "version"}}' rel="stylesheet" />
+    <style>
+        .page--web--index .page-container {
+            padding-top: 64px;
+            min-height: calc(100vh - 364px);
+            box-sizing: border-box;
+        }
+    </style>
+</head>
+<body class="page--web--index">
+{{include "/common/pchead.html"}}
+<div class="w-box page-container" id="main-app" v-cloak>
+    <section class="page-container-content">
+        <button class="fixed-button skip-button" @click="skip">跳过</button>
+        <header class="page-content-header">
+            <h1 class="page-title">选择您的业务标签</h1>
+            <div class="tip-text">剑鱼将为您提供精准的商机服务</div>
+        </header>
+        <main class="page-content-main">
+            <div class="question-list-container" v-if="newUserSaleData">
+                <div v-for="(item, index) in newUserSaleData" :key="index" class="question-form-list question-list-item">
+                    <!-- 角标 -->
+                    <div class="key_title_ct" v-if="item.title">
+                      <span class="key_tipnums" v-text="index + 1"></span>
+                      <!-- title标题 + 是否多选 -->
+                      <span class="key_title">
+                        ${item.title}
+                        <!-- 你想从剑鱼标讯得到?[多选] -->
+                        ${item.choose ? (item.choose === 2 ? '[多选]' : '[单选]') : ''}
+                      </span>
+                      <!-- 输入框类型角标 -->
+                      <span class="key_titlenums" v-if="item.type === 4">
+                        ${inputKewArr.length}/${item.maximum}
+                      </span>
+                    </div>
+                    <!-- 单选、多选选项 -->
+                    <div class="key_condition" :class="{'has-more-color': item.type === 2}" v-if="item.choose">
+                      <span
+                        v-for="(itemspan, selectIndex) in item.condition"
+                        :key="selectIndex"
+                        class="tags"
+                        :class="{ active: (selectInfo[item.key] && selectInfo[item.key].includes(itemspan)) }"
+                        @click="chooseclickBtn(itemspan, item, index)"
+                      >${itemspan}</span>
+                    </div>
+                    <!-- 弹窗选择popup -->
+                    <div class="key_condition" v-if="item.type === 3">
+                      <div v-for="(popItem, popIndex) in item.data" :key="popIndex" class="selection-container tags"
+                        v-show="positionShow(popItem, popIndex, item.data)"
+                      >
+                        <span class="section-label" v-text="popItem.name"></span>
+                        <el-select v-model="selectPopInfo[popItem.key].select" placeholder="请选择">
+                            <el-option
+                                v-for="item in popItem.condition"
+                                :key="item"
+                                :label="item"
+                                :value="item">
+                            </el-option>
+                        </el-select>
+                      </div>
+                    </div>
+                    <!-- 输入框 -->
+                    <div class="key_title_substxt" v-if="item.type === 4">
+                      ${ item.describe }
+                    </div>
+                    <!-- 选 项 -->
+                    <div class="key_condition add-input-group" v-if="item.type === 4">
+                        <div class="tags-list" v-if="inputKewArr.length">
+                            <el-tag
+                                v-for="(kew, index) in inputKewArr"
+                                :key="index"
+                                class="tags add-input--tags"
+                                @close="canlekewBtn(kew)"
+                                disable-transitions
+                                closable>
+                                ${kew}
+                            </el-tag>
+                        </div>
+                        <div class="input-container">
+                            <el-input
+                                v-model="kewmodeldata"
+                                :disabled="inputKewLength"
+                                :class="!inputKewLength || 'kewmodel_disabled'"
+                                @blur="inputformatter"
+                                placeholder="输入关键词"></el-input>
+                            <el-button type="text" class="add-input--button" :disabled="inputKewLength" @click.stop="kewsureBtn(index)">确认添加</el-button>
+                        </div>
+                        <div class="key_error_txt" v-if="inputKewLength">
+                            业务关键词填满了,请删除后再继续添加
+                        </div>
+                    </div>
+                </div>
+                <div class="question-form-footer">
+                    <button class="footer-button" @click.stop="postNewUerData(true)">开启剑鱼之旅</button>
+                </div>
+            </div>
+        </main>
+    </section>
+</div>
+<script src='{{Msg "seo" "cdn"}}/js/jquery.cookie.js?v={{Msg "seo" "version"}}' type="text/javascript"></script>
+<script src='{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}' type="text/javascript"></script>
+<script>
+  $(function () {
+    haslogin({{.T.logid}});
+  })
+</script>
+<script src="//cdn-common.jianyu360.com/cdn/lib/vue/2.6.14/vue.min.js"></script>
+<script src="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/index.js"></script>
+<script src="//cdn-common.jianyu360.com/cdn/lib/moment/2.29.1/min/moment.min.js"></script>
+<script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/frontRouter/pc/user/js/set_favorite.js?v={{Msg "seo" "version"}}'></script>
+<!--S-百度统计-->
+{{include "/common/pcbottom.html"}}
+{{include "/common/baiducc.html"}}
+<!--E-百度统计-->
+</body>
+</html>

+ 19 - 19
src/web/templates/pc/index.html

@@ -833,28 +833,28 @@
   }
   {{end}}
 
-  var showDay = localStorage.tc;
-  if(adv_img!=""){
-    if(localStorage.tc === undefined){
-      $("#index_tc").css("display","block");
-      $("#close2x").css("display","block");
-      $(".tans").css("display","block");
-    }else{
-      if(showDay != day){
-        $("#index_tc").css("display","block");
-        $("#close2x").css("display","block");
-        $(".tans").css("display","block");
-      }else{
-        $("#index_tc").css("display","none");
-        $("#close2x").css("display","none");
-        $(".tans").css("display","none");
-      }
-    }
-  }
+  // 首页活动弹窗迁移至工作桌面首页,此处活动弹窗不再展示
+  // var showDay = localStorage.tc;
+  // if(adv_img!=""){
+  //   if(localStorage.tc === undefined){
+  //     $("#index_tc").css("display","block");
+  //     $("#close2x").css("display","block");
+  //     $(".tans").css("display","block");
+  //   }else{
+  //     if(showDay != day){
+  //       $("#index_tc").css("display","block");
+  //       $("#close2x").css("display","block");
+  //       $(".tans").css("display","block");
+  //     }else{
+  //       $("#index_tc").css("display","none");
+  //       $("#close2x").css("display","none");
+  //       $(".tans").css("display","none");
+  //     }
+  //   }
+  // }
 
   // 首页底部广告位
   {{$bottom:=(Ad "jy_pc_index_bottom" -1 .Host)}}
-  // console.log({{$bottom}})
   var bottom_img = ({{$bottom}})
 
   // 首页底部样式调整,适配广告位