浏览代码

feat:合并

wangchuanjin 2 年之前
父节点
当前提交
a97dd6533a
共有 60 个文件被更改,包括 1343 次插入307 次删除
  1. 2 2
      src/go.mod
  2. 4 4
      src/go.sum
  3. 2 2
      src/jfw/modules/app/src/go.mod
  4. 4 4
      src/jfw/modules/app/src/go.sum
  5. 7 1
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/ent_portrait.css
  6. 7 3
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/page_pro_follow_detail.css
  7. 7 1
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/unit_portrayal.css
  8. 12 3
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js
  9. 13 1
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js
  10. 17 1
      src/jfw/modules/app/src/web/staticres/jyapp/css/wxinfocontent.css
  11. 212 173
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  12. 4 2
      src/jfw/modules/app/src/web/templates/big-member/page_client_follow_detail.html
  13. 18 15
      src/jfw/modules/app/src/web/templates/big-member/page_client_portrayal.html
  14. 4 1
      src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait.html
  15. 23 3
      src/jfw/modules/app/src/web/templates/big-member/page_pro_follow_detail.html
  16. 3 0
      src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html
  17. 14 1
      src/jfw/modules/app/src/web/templates/dataExport/dataExport.html
  18. 55 18
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  19. 2 2
      src/jfw/modules/bidfileinter/src/go.mod
  20. 4 4
      src/jfw/modules/bidfileinter/src/go.sum
  21. 3 3
      src/jfw/modules/bigmember/src/entity/claimCommon.go
  22. 5 2
      src/jfw/modules/bigmember/src/go.mod
  23. 10 4
      src/jfw/modules/bigmember/src/go.sum
  24. 334 0
      src/jfw/modules/bigmember/src/service/chatShare/obtainDetails.go
  25. 38 0
      src/jfw/modules/bigmember/src/service/chatShare/service.go
  26. 2 0
      src/jfw/modules/bigmember/src/service/init.go
  27. 2 2
      src/jfw/modules/publicapply/src/go.mod
  28. 4 4
      src/jfw/modules/publicapply/src/go.sum
  29. 2 2
      src/jfw/modules/subscribepay/src/go.mod
  30. 4 4
      src/jfw/modules/subscribepay/src/go.sum
  31. 2 2
      src/jfw/modules/weixin/src/go.mod
  32. 4 4
      src/jfw/modules/weixin/src/go.sum
  33. 9 3
      src/web/staticres/big-member/css/page_pro_follow_detail.css
  34. 6 0
      src/web/staticres/big-member/css/unit_portrayal.css
  35. 12 1
      src/web/staticres/big-member/js/unit_portrayal.js
  36. 7 1
      src/web/staticres/big-member/weixin/css/ent_portrait.css
  37. 9 0
      src/web/staticres/common-module/big-member/css/client_portrayal.css
  38. 12 1
      src/web/staticres/common-module/big-member/js/client_portrayal.js
  39. 19 0
      src/web/staticres/common-module/big-member/js/page_client_follow_detail.js
  40. 12 3
      src/web/staticres/common-module/collection/js/ent_portrait.js
  41. 22 0
      src/web/staticres/common-module/forward-share/css/forward.css
  42. 二进制
      src/web/staticres/common-module/forward-share/image/icon-forward.png
  43. 50 0
      src/web/staticres/common-module/forward-share/js/forward.js
  44. 4 3
      src/web/staticres/css/pc.css
  45. 2 1
      src/web/staticres/frontRouter/pc/mesgCenter/js/index-pc.js
  46. 二进制
      src/web/staticres/images/share-colleague.png
  47. 5 0
      src/web/staticres/js/login.js
  48. 22 15
      src/web/staticres/js/message.js
  49. 2 2
      src/web/staticres/pccss/pc-detail.css
  50. 9 0
      src/web/staticres/public-pc/js/header-nav.js
  51. 3 0
      src/web/templates/big-member/wx/page_client_follow_detail.html
  52. 3 0
      src/web/templates/big-member/wx/page_client_portrayal.html
  53. 1 1
      src/web/templates/big-member/wx/page_customer.html
  54. 22 0
      src/web/templates/big-member/wx/page_pro_follow_detail.html
  55. 3 0
      src/web/templates/big-member/wx/page_unit_portrayal.html
  56. 64 0
      src/web/templates/common/shareboxDialog.html
  57. 4 0
      src/web/templates/frontRouter/wx/collection/sess/ent_portrait.html
  58. 162 0
      src/web/templates/pc/biddetail_rec.html
  59. 14 1
      src/web/templates/weixin/dataExport/dataExport.html
  60. 41 7
      src/web/templates/weixin/wxinfocontent_rec.html

+ 2 - 2
src/go.mod

@@ -5,7 +5,7 @@ go 1.18
 require (
 	app.yhyue.com/moapp/jyMarketing v0.0.2-0.20230307011807-2ef7ef8e0c09
 	app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8
-	app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd
+	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
 	app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.13
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67
@@ -80,7 +80,7 @@ require (
 	github.com/prometheus/common v0.37.0 // indirect
 	github.com/prometheus/procfs v0.8.0 // indirect
 	github.com/rivo/uniseg v0.2.0 // indirect
-	github.com/sirupsen/logrus v1.9.0 // indirect
+	github.com/sirupsen/logrus v1.8.3 // indirect
 	github.com/spaolacci/murmur3 v1.1.0 // indirect
 	github.com/spf13/afero v1.9.3 // indirect
 	github.com/spf13/cast v1.5.0 // indirect

+ 4 - 4
src/go.sum

@@ -7,8 +7,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHu
 app.yhyue.com/moapp/jybase v0.0.0-20230117032034-ad7c00ffe11a/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
 app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8 h1:0ukFbYC7yRkFvRsr0bFCgV2SHsc1TvE+kW5MlttQEzE=
 app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd h1:jBP9rucnTd0KHm/slWsoEoUxnlfMjVSiAKhLfzh9Dvc=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd/go.mod h1:hlsdPMebg8N90L57xkxJdVVFuvtlT8SuZLM6hY+jB44=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
 app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628 h1:JrlY3EGZv+sNffZSRXNFSCYtudPXKD3Dks3970vqJ40=
 app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628/go.mod h1:zpXgWwV+/gwZBV24bffc4OhptUMT5zEVxwq1ENf0OYQ=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
@@ -1088,8 +1088,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
 github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
-github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.8.3 h1:DBBfY8eMYazKEJHb3JKpSPfpgd2mBCoNFlQx6C5fftU=
+github.com/sirupsen/logrus v1.8.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
 github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
 github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak=

+ 2 - 2
src/jfw/modules/app/src/go.mod

@@ -4,7 +4,7 @@ go 1.18
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8
-	app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd
+	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
 	app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.13
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67
@@ -79,7 +79,7 @@ require (
 	github.com/prometheus/common v0.37.0 // indirect
 	github.com/prometheus/procfs v0.8.0 // indirect
 	github.com/rivo/uniseg v0.2.0 // indirect
-	github.com/sirupsen/logrus v1.9.0 // indirect
+	github.com/sirupsen/logrus v1.8.3 // indirect
 	github.com/spaolacci/murmur3 v1.1.0 // indirect
 	github.com/spf13/afero v1.9.3 // indirect
 	github.com/spf13/cast v1.5.0 // indirect

+ 4 - 4
src/jfw/modules/app/src/go.sum

@@ -7,8 +7,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHu
 app.yhyue.com/moapp/jybase v0.0.0-20230117032034-ad7c00ffe11a/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
 app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8 h1:0ukFbYC7yRkFvRsr0bFCgV2SHsc1TvE+kW5MlttQEzE=
 app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd h1:jBP9rucnTd0KHm/slWsoEoUxnlfMjVSiAKhLfzh9Dvc=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd/go.mod h1:hlsdPMebg8N90L57xkxJdVVFuvtlT8SuZLM6hY+jB44=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
 app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628 h1:JrlY3EGZv+sNffZSRXNFSCYtudPXKD3Dks3970vqJ40=
 app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628/go.mod h1:zpXgWwV+/gwZBV24bffc4OhptUMT5zEVxwq1ENf0OYQ=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
@@ -1088,8 +1088,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
 github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
-github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.8.3 h1:DBBfY8eMYazKEJHb3JKpSPfpgd2mBCoNFlQx6C5fftU=
+github.com/sirupsen/logrus v1.8.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
 github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
 github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak=

+ 7 - 1
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/ent_portrait.css

@@ -38,7 +38,7 @@
 
 /* 企业情报详情 */
 .ent-header {
-    min-height: 1.08rem;
+    /* min-height: 1.08rem; */
     margin-bottom: .2rem;
     padding: .28rem .36rem;
     background-color: #fff;
@@ -52,6 +52,12 @@
     color: #171826;
     word-break: break-all;
 }
+#ent-portrait .forward-com{
+  width: 24px;
+  height: 24px;
+  background-size: 24px 24px;
+  background-position-y: 0;
+}
 
 .ent-tabs-container {
     flex: 1;

+ 7 - 3
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/page_pro_follow_detail.css

@@ -29,17 +29,21 @@
 
 .prodetail .prodetailTop .tocare {
   position: relative;
-  margin: 0.32rem 0;
+  margin: 0.32rem 0 .24rem 0;
   padding-left: 0.32rem;
   width: 100%;
-  height: 0.4rem;
+  height: .96rem;
   max-height: 1rem;
 }
 
+.prodetail .prodetailTop .tocare .forward-share {
+  margin-top: 8px;
+}
+
 .prodetail .prodetailTop .tocare .nocare, .prodetail .prodetailTop .tocare .care {
   display: flex;
   align-items: center;
-  height: 100%;
+  margin-bottom: 0.16rem;
 }
 
 .prodetail .prodetailTop .tocare .icon-favorite, .prodetail .prodetailTop .tocare .icon-no-favorite {

+ 7 - 1
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/unit_portrayal.css

@@ -68,11 +68,17 @@
 }
 .buyer-type{
     margin-top: 0.04rem;
-    padding: 0 .32rem .24rem;
+    padding: 0 .32rem;
     color: #5F5E64;
     font-size: .24rem;
     line-height: .36rem;
 }
+.u-header .forward-com{
+  padding: 0 .72rem .24rem;
+  font-size: .24rem;
+  color: #5F5E64;
+  background-position: .32rem 0.02rem ;
+}
 .buyer-info{
     position: relative;
     display: flex;

+ 12 - 3
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js

@@ -3,7 +3,8 @@ var vNode = {
   el: '#ent-portrait',
   components: {
     vipComponent: vipComponent,
-    hisproComponent: hisproComponent
+    hisproComponent: hisproComponent,
+    forwardshare: vmForward
   },
   data () {
     // 修改柱状条颜色为渐变色
@@ -139,7 +140,8 @@ var vNode = {
       colList: [],
       isSC: 0, //0未收藏 1收藏
       idx: [],
-      list: []
+      list: [],
+      entParams: {}
     }
   },
   created: function () {
@@ -179,7 +181,7 @@ var vNode = {
         $('#ent-portrait').scrollTop(_this.scrollTop)
       }, 0)
     }
-
+    this.getShareParams()
     window.addEventListener('resize', function () {
       _this.getStickyTop()
     })
@@ -269,6 +271,13 @@ var vNode = {
     }
   },
   methods: {
+    getShareParams () {
+      this.entParams = {
+        type: '4',
+        entId: this.entInfo.id,
+        referer: location.href
+      }
+    },
     // 监听画像页面滚动
     onEntScroll: utils.debounce(function () {
       if (!this.freeWinnerOpen) return // 没有开通超级订阅广告位banner return

+ 13 - 1
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js

@@ -6,6 +6,7 @@ var vNode = {
   components: {
     hisproComponent: hisproComponent,
     buyerExample: buyerExample,
+    forwardshare: vmForward
   },
   data () {
     // 修改柱状条颜色为渐变色
@@ -141,7 +142,8 @@ var vNode = {
       colList: [],
       isSC: 0, //0未收藏 1收藏
       idx: [],
-      list: []
+      list: [],
+      unitParams: {}
     }
   },
   computed: {
@@ -263,6 +265,8 @@ var vNode = {
       sessionStorage.removeItem('buyer_high_set')
       sessionStorage.removeItem('buyer_high_name')
     }
+    // 获取站内社交分享参数
+    this.getShareParams()
   },
   beforeDestroy () {
     window.removeEventListener("resize", this.init, 20);
@@ -278,6 +282,14 @@ var vNode = {
         })
       }
     }, 300),
+    getShareParams () {
+      this.unitParams = {
+        type: '5',
+        buyer: decodeURIComponent(utils.getParam('entName')),
+        area: this.buyer.area,
+        referer: location.href
+      }
+    },
     goOpenVip: function () {
       // location.href = "/jyapp/vipsubscribe/vipsubscribe_new"
       location.href = '/jy_mobile/common/order/create/svip?type=buy'

+ 17 - 1
src/jfw/modules/app/src/web/staticres/jyapp/css/wxinfocontent.css

@@ -361,7 +361,7 @@ body .loading_ p span {
     float: right;
     color: #9B9CA3;
     position: relative;
-    margin-left: 16px;
+    margin: 0 16px;
 }
 
 .toolbar .follow i {
@@ -881,6 +881,22 @@ pre {
     align-items: center;
     justify-content: space-between;
 }
+.time_label.new_layout {
+  justify-content:flex-start;
+  flex-direction: column-reverse;
+  align-items: flex-start;
+  margin-top: .32rem;
+}
+.time_label.new_layout .collec_star{
+  margin-left: 0;
+}
+
+.time_label.new_layout .timebefore_vip{
+  margin-top: .24rem;
+}
+.time_label .forward-com {
+  background-size: .32rem .32rem;
+}
 
 .fatNav {
     height: .96rem;

+ 212 - 173
src/jfw/modules/app/src/web/staticres/jyapp/js/common.js

@@ -793,17 +793,17 @@ $(function () {
       checkLocationPermission: function () {
         return JyObj.IosCall("checkLocationPermission")
       },
-     	//ios附件下载
-    	//filename 文件名称不带后缀 【文件名称中不能带“/”否则会解析为多个目录】
-    	//filetype 文件类型:doc word excel 等等
-    	//fileurl 文件链接
-		//filesize 文件大小 字符串
-		//doc 、docx、excel 、xls 、 xlsxppt 、 pptx、 pdf、 txt、png 、PNG、jpg 、JPG 暂定这些为常见类型~支持在线预览+下载+转存
-		//其他类型仅支持下载+转存
+      //ios附件下载
+      //filename 文件名称不带后缀 【文件名称中不能带“/”否则会解析为多个目录】
+      //filetype 文件类型:doc word excel 等等
+      //fileurl 文件链接
+      //filesize 文件大小 字符串
+      //doc 、docx、excel 、xls 、 xlsxppt 、 pptx、 pdf、 txt、png 、PNG、jpg 、JPG 暂定这些为常见类型~支持在线预览+下载+转存
+      //其他类型仅支持下载+转存
       downLoadFile: function (filename,filetype,fileurl,filesize) {
-    	if ( filename != "" ) {
-			filename = filename.replace(/\//g,"")
-		}
+        if ( filename != "" ) {
+          filename = filename.replace(/\//g,"")
+        }
         JyObjMessage["filename"] = filename;
         JyObjMessage["filetype"] = filetype;
         JyObjMessage["fileurl"] = fileurl;
@@ -926,23 +926,23 @@ $(function () {
       window.location.reload();
     }
   }, 1000);
-	//
-	externalLinks();
+  //
+  externalLinks();
 });
 
 
 function externalLinks() {
-	//是否有外部链接需要访问(一般是广告位登录后跳转外部链接)
-  	var externalLinks = localStorage.getItem("noLoginExternalLinks");
-	if(externalLinks!=""&&externalLinks!=undefined&&externalLinks!="null"){
-		if (window.location.pathname.indexOf("jylab/mainSearch")>0){
-			setTimeout(function () {
-  				localStorage.removeItem('noLoginExternalLinks');
-				window.location.href=externalLinks;
-				//JyObj.openExternalLink(externalLinks,"剑鱼");
-			}, 1000);
-		}
-	}
+  //是否有外部链接需要访问(一般是广告位登录后跳转外部链接)
+  var externalLinks = localStorage.getItem("noLoginExternalLinks");
+  if(externalLinks!=""&&externalLinks!=undefined&&externalLinks!="null"){
+    if (window.location.pathname.indexOf("jylab/mainSearch")>0){
+      setTimeout(function () {
+        localStorage.removeItem('noLoginExternalLinks');
+        window.location.href=externalLinks;
+        //JyObj.openExternalLink(externalLinks,"剑鱼");
+      }, 1000);
+    }
+  }
 }
 var EasyAlert = {
   timeout: null,
@@ -1042,7 +1042,7 @@ Date.prototype.pattern = function (fmt) {
   for (var k in o) {
     if (new RegExp('(' + k + ')').test(fmt)) {
       fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k])
-          .length)));
+        .length)));
     }
   }
   return fmt;
@@ -1588,53 +1588,53 @@ function afterLoginSuccess (type, canBack) {
 
 //ios JyObj对象加载完成回调
 function afterPageInit () {
-  	setInterval(function () {
-    	redSpotOnMenu();
-  	}, 600000);
-  	try {
-    	afterJyObjInit();
-    	latlongitude();//记录用户经纬度
-  	} catch (e) {}
-  	$.post("/jyapp/free/afterPageLoadToCheck?t=" + new Date().getTime(), {
-    	sign: JyObj.getUserToken(),
-    	rid: JyObj.getPushRid(),
-    	oid: getOtherPushId(),
-    	phoneType: getPhoneType(),
-    	version: JyObj.getVersion(),
-		isIos: mySysIsIos()
-  	}, function (r) {
-	    if (mySysIsIos() && r.isNeedUpdate > 0) {
-	        //if(r.webdomain.indexOf("https")>-1){
-	        //ios客户端 因为证书问题加载https域名 需要验证证书等一系列操作
-	        //	r.webdomain = r.webdomain.replace("https","http")
-	        //}
-            //以后版本
-           if (r.isNeedUpdate == 2) {
-            	//JyObj.openExternalLink(r.webdomain + "/jyapp/free/staticPage/update.html", "-1");
-            	JyObj.openExternalLink(window.location.protocol+"//"+window.location.host+"/jyapp/free/goToUpdate?mustupdate=1", "-1");
-            }else if(localStorage.onceTipUpdate != "1"){
-              	sessionStorage.onceTipUpdate = "1";
-              	localStorage.onceTipUpdate = "1";
-              	//JyObj.openExternalLink(r.webdomain + "/jyapp/free/staticPage/update.html", "去更新");
-              	JyObj.openExternalLink(window.location.protocol+"//"+window.location.host+"/jyapp/free/goToUpdate?mustupdate=1", "去更新");
-            }
-          	return;
-	    }
-	    if (r.status == -3) {
-	      	if (mySysIsIos()) {
-	        	window.location.href = "/jyapp/free/login?flag=kicked&back=index";
-	      	} else {
-	        	localStorage.setItem("isKicked", "1");
-	        	JyObj.backUrl("H");
-	      	}
-	    } else if (r.status == 1) {
-	      	if (r.sign != "") {
-	        	JyObj.saveUserToken(r.sign);
-	      	}
-	    }
-  	});
-  	//记录推送id
-  	savePushIdMsg();
+  setInterval(function () {
+    redSpotOnMenu();
+  }, 600000);
+  try {
+    afterJyObjInit();
+    latlongitude();//记录用户经纬度
+  } catch (e) {}
+  $.post("/jyapp/free/afterPageLoadToCheck?t=" + new Date().getTime(), {
+    sign: JyObj.getUserToken(),
+    rid: JyObj.getPushRid(),
+    oid: getOtherPushId(),
+    phoneType: getPhoneType(),
+    version: JyObj.getVersion(),
+    isIos: mySysIsIos()
+  }, function (r) {
+    if (mySysIsIos() && r.isNeedUpdate > 0) {
+      //if(r.webdomain.indexOf("https")>-1){
+      //ios客户端 因为证书问题加载https域名 需要验证证书等一系列操作
+      //	r.webdomain = r.webdomain.replace("https","http")
+      //}
+      //以后版本
+      if (r.isNeedUpdate == 2) {
+        //JyObj.openExternalLink(r.webdomain + "/jyapp/free/staticPage/update.html", "-1");
+        JyObj.openExternalLink(window.location.protocol+"//"+window.location.host+"/jyapp/free/goToUpdate?mustupdate=1", "-1");
+      }else if(localStorage.onceTipUpdate != "1"){
+        sessionStorage.onceTipUpdate = "1";
+        localStorage.onceTipUpdate = "1";
+        //JyObj.openExternalLink(r.webdomain + "/jyapp/free/staticPage/update.html", "去更新");
+        JyObj.openExternalLink(window.location.protocol+"//"+window.location.host+"/jyapp/free/goToUpdate?mustupdate=1", "去更新");
+      }
+      return;
+    }
+    if (r.status == -3) {
+      if (mySysIsIos()) {
+        window.location.href = "/jyapp/free/login?flag=kicked&back=index";
+      } else {
+        localStorage.setItem("isKicked", "1");
+        JyObj.backUrl("H");
+      }
+    } else if (r.status == 1) {
+      if (r.sign != "") {
+        JyObj.saveUserToken(r.sign);
+      }
+    }
+  });
+  //记录推送id
+  savePushIdMsg();
 }
 
 function compareVersion (curVersion, upVersion) {
@@ -1980,18 +1980,18 @@ function formatDate (date, hms) {
 //客户端收到推送消息,调用此js方法
 function afterReceivePushMessage (type, url) {
   try {
-	if(type == "bid" || (type == "bid" && url.indexOf("__member__") > -1)){
-		$.post("/publicapply/subscribe/vipSwitch",null,function(res){
-			if(res.error_code == 0) {
-				if(res.data.vt == 'm' && url.indexOf("__member__") > -1) {
-					JyObj.showRedSpotOnMenu("subscribe");
-				}else if(res.data.vt != 'm' && url.indexOf("__member__") == -1){
-					JyObj.showRedSpotOnMenu("subscribe");
-				}
-			}
-		});
-	}else if (type == "entnichepush" || type == "member" || type == "projectforecast" || type == "entchange" || type == "memberreport") {
-      	JyObj.hideRedSpotOnMenu("my");
+    if(type == "bid" || (type == "bid" && url.indexOf("__member__") > -1)){
+      $.post("/publicapply/subscribe/vipSwitch",null,function(res){
+        if(res.error_code == 0) {
+          if(res.data.vt == 'm' && url.indexOf("__member__") > -1) {
+            JyObj.showRedSpotOnMenu("subscribe");
+          }else if(res.data.vt != 'm' && url.indexOf("__member__") == -1){
+            JyObj.showRedSpotOnMenu("subscribe");
+          }
+        }
+      });
+    }else if (type == "entnichepush" || type == "member" || type == "projectforecast" || type == "entchange" || type == "memberreport") {
+      JyObj.hideRedSpotOnMenu("my");
     }
     receivePushMessageHandle(type, url);
   } catch (e) {
@@ -2001,108 +2001,108 @@ function afterReceivePushMessage (type, url) {
 
 //获取用户经纬度 每天记录一次
 function latlongitude(){
-	//首页
-	if(window.location.href.indexOf("jylab/mainSearch")==-1){
-		return false;
-	}
-	var llitude = "";
-	var lsllitude = localStorage.LLitude;
-	var nowDate = new Date().getDate();
-	var oldDate = new Date().getDate()-1;
-	if (lsllitude!=null&&lsllitude.split("_").length>2){
-		oldDate =  Number(lsllitude.split("_")[2]);
-	}
-	//每天记录一次
-	//alert(nowDate+"--"+oldDate+"--"+parseInt(distance))
-	if (nowDate==oldDate){
-		return false;
-	}
-	try{
-		llitude = JyObj.getLLitude();
-	}catch(e){}
-    if(llitude==""){
-      var ai = 0;
-      var llInterval = setInterval(function(){
-        ai=ai+1;
-        try{
-          llitude = JyObj.getLLitude();
-        }catch(e){}
-        //五次获取不到客户端经纬度 就不再获取,获取位置存localStorage 一天
-        //alert(llitude+"---:"+ai)
-        if((llitude!=""&&llitude!=undefined&&llitude.indexOf("null")<0)||ai>4){
-          clearInterval(llInterval);
-          llrequest(llitude)
-        }
-      },500)
-    }else{
-    	//alert("经纬度:"+llitude)
-    	llrequest(llitude)
-    }
+  //首页
+  if(window.location.href.indexOf("jylab/mainSearch")==-1){
+    return false;
+  }
+  var llitude = "";
+  var lsllitude = localStorage.LLitude;
+  var nowDate = new Date().getDate();
+  var oldDate = new Date().getDate()-1;
+  if (lsllitude!=null&&lsllitude.split("_").length>2){
+    oldDate =  Number(lsllitude.split("_")[2]);
+  }
+  //每天记录一次
+  //alert(nowDate+"--"+oldDate+"--"+parseInt(distance))
+  if (nowDate==oldDate){
+    return false;
+  }
+  try{
+    llitude = JyObj.getLLitude();
+  }catch(e){}
+  if(llitude==""){
+    var ai = 0;
+    var llInterval = setInterval(function(){
+      ai=ai+1;
+      try{
+        llitude = JyObj.getLLitude();
+      }catch(e){}
+      //五次获取不到客户端经纬度 就不再获取,获取位置存localStorage 一天
+      //alert(llitude+"---:"+ai)
+      if((llitude!=""&&llitude!=undefined&&llitude.indexOf("null")<0)||ai>4){
+        clearInterval(llInterval);
+        llrequest(llitude)
+      }
+    },500)
+  }else{
+    //alert("经纬度:"+llitude)
+    llrequest(llitude)
+  }
 }
 //判断经纬度是否够收录条件
 function llrequest(ll){
-	//获取不到定位信息
-	if(ll==null||ll.indexOf("_")==-1){
-		return false
-	}
-	//localStorage.removeItem("LLitude");
-	var latitude = parseFloat(ll.split("_")[1]);//纬度
-	var longitude =  parseFloat(ll.split("_")[0]);//经度
-	var _lat = 0.0;
-	var _long = 0.0;
-	var llitude = localStorage.LLitude;
-	if (llitude!=null&&llitude.split("_").length>2){
-		_long =  parseFloat(llitude.split("_")[0]);//经度
-		_lat =  parseFloat(llitude.split("_")[1]);//纬度
-	}
-	//alert(latitude+":::"+longitude+"----"+_lat+":::"+_long)
-	var calculate = calculateLL(latitude,longitude,_lat,_long);
-	if (calculate>parseInt(distance)){
-    	$.post("/publicapply/appLoc/action", {
-	        "longitude": longitude,
-	        "latitude": latitude,
-	        "calculate": calculate
-	    }, function (r) {
-	        if (r.data) {
-				localStorage.LLitude = ll+"_"+new Date().getDate();
-	        }
-      	})
-    }
+  //获取不到定位信息
+  if(ll==null||ll.indexOf("_")==-1){
+    return false
+  }
+  //localStorage.removeItem("LLitude");
+  var latitude = parseFloat(ll.split("_")[1]);//纬度
+  var longitude =  parseFloat(ll.split("_")[0]);//经度
+  var _lat = 0.0;
+  var _long = 0.0;
+  var llitude = localStorage.LLitude;
+  if (llitude!=null&&llitude.split("_").length>2){
+    _long =  parseFloat(llitude.split("_")[0]);//经度
+    _lat =  parseFloat(llitude.split("_")[1]);//纬度
+  }
+  //alert(latitude+":::"+longitude+"----"+_lat+":::"+_long)
+  var calculate = calculateLL(latitude,longitude,_lat,_long);
+  if (calculate>parseInt(distance)){
+    $.post("/publicapply/appLoc/action", {
+      "longitude": longitude,
+      "latitude": latitude,
+      "calculate": calculate
+    }, function (r) {
+      if (r.data) {
+        localStorage.LLitude = ll+"_"+new Date().getDate();
+      }
+    })
+  }
 }
 /*计算两经纬度点之间的距离(单位:米)*/
 function calculateLL(lat1, lng1, lat2, lng2) {
-	var radLat1 = lat1 * Math.PI / 180.0;
-	var radLat2 = lat2 * Math.PI / 180.0;
-	var a = radLat1 - radLat2;
-	var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
-	var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
-	s = s * 6378.137;
-	s = Math.round(s * 10000) / 10;
-	//alert("距离上个位置:"+s+" 米")
-	return s
+  var radLat1 = lat1 * Math.PI / 180.0;
+  var radLat2 = lat2 * Math.PI / 180.0;
+  var a = radLat1 - radLat2;
+  var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
+  var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
+  s = s * 6378.137;
+  s = Math.round(s * 10000) / 10;
+  //alert("距离上个位置:"+s+" 米")
+  return s
 }
 //
 function androidVersion(){
-	if(mySysIsIos()){
-		return "";
-	}
-	var m = navigator.userAgent.match(/Android \d+/);
-	if(m == null){
-		return "";
-	}
-	return m[0].split(" ")[1];
+  if(mySysIsIos()){
+    return "";
+  }
+  var m = navigator.userAgent.match(/Android \d+/);
+  if(m == null){
+    return "";
+  }
+  return m[0].split(" ")[1];
 }
 //app更新日志
 function newVersionUpdateLog(event,new_version){
-	$.post("/jyapp/free/newVersionUpdateLog",{
-		token: JyObj.getUserToken(),//用户token
-	    event: event,//事件类型
-	    current_version: JyObj.getVersion(),//当前版本号
-	    new_version: new_version,//新版本号
-	    channel: getChannel(),//渠道
-	    phonetype: getPhoneType(),//手机型号
-		system: androidVersion()
-	})
+  $.post("/jyapp/free/newVersionUpdateLog",{
+    token: JyObj.getUserToken(),//用户token
+    event: event,//事件类型
+    current_version: JyObj.getVersion(),//当前版本号
+    new_version: new_version,//新版本号
+    channel: getChannel(),//渠道
+    phonetype: getPhoneType(),//手机型号
+    system: androidVersion()
+  })
 
 }
 
@@ -2163,3 +2163,42 @@ function echoRequiredValues (target, now, keys) {
     return {}
   }
 }
+
+function addPageCommonStorageEvent () {
+  var listenerKey = 'commonEvent'
+  var currentData = localStorage.getItem(listenerKey)
+
+  window._doTryCallCommonEvent = function (type, data) {
+    localStorage.setItem(listenerKey, JSON.stringify({
+      type: type,
+      data: data,
+      _key: Date.now(),
+      origin: location.href
+    }))
+  }
+
+  var inIframe = window.top !== window
+  if (inIframe) return
+
+  window.addEventListener('storage', function (event) {
+    if (event.key === listenerKey) {
+      var newData = event.newValue
+      if (newData === currentData) return
+      if (typeof window._doTryRespondCommonEvent === 'function') {
+        window._doTryRespondCommonEvent(newData, currentData)
+      } else {
+        try {
+          var nowData = JSON.parse(newData)
+          var canReloadEvent = nowData.type === 'reload' && nowData.origin !== location.href
+          if (canReloadEvent) {
+            location.reload()
+          }
+        } catch (e) {
+          console.warn(e)
+        }
+      }
+    }
+  })
+}
+
+addPageCommonStorageEvent()

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

@@ -18,8 +18,8 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="stylesheet"
-          href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
+    <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页面的css资源-->
 </head>
 <body>
@@ -50,6 +50,7 @@
                     <span class="down-report active" @click="downReport('app')">下载项目报告</span>
                     <span class="toVip" @click="openVip()" v-if="!this.$data.isPayedUser">开通</span>
                 </div>
+                <forwardshare :params="proParams"></forwardshare>
                 <div class="forecast" @click="goAiAdd()"
                      v-if="this.$data.prodetail.bidtype=='招标'||this.$data.prodetail.bidtype=='询价'">
                     <span class="j-icon icon-face"></span>
@@ -387,6 +388,7 @@
     // 此变量在此页面啊没有用到
     var localEmail =  {{.T.email}} || sessionStorage.getItem('reportEmail') || ''
 </script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/big-member/js/page_client_follow_detail.js?v={{Msg "seo" "version"}}'></script>
 
 </body>

+ 18 - 15
src/jfw/modules/app/src/web/templates/big-member/page_client_portrayal.html

@@ -22,6 +22,7 @@
   <!--E-当前页面的css资源-->
   <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/css/index_for_tmp_client.css?v={{Msg "seo" "version"}}' />
   <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/big-member/css/client_portrayal.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
   <style>
     .skeleton{
       height: 100%;
@@ -198,22 +199,23 @@
           <p class="buyer-type">采购单位类型:${statistics.buyerClass || '--'}</p>
         </div>
         <div class="cor-item-right">
-                  <span class="more-action" @click.stop.prevent="changeFollowState('g')">
-                    <span
-                      class="j-icon"
-                      :class="follow ? 'icon-favorite' : 'icon-no-favorite'"
-                    ></span>
-                    <span>${follow?'已关注':'关注'}</span>
-                  </span>
+          <span class="more-action" @click.stop.prevent="changeFollowState('g')">
+            <span
+              class="j-icon"
+              :class="follow ? 'icon-favorite' : 'icon-no-favorite'"
+            ></span>
+            <span>${follow?'已关注':'关注'}</span>
+          </span>
           <span class="more-action tooltip" @click.stop.prevent="changeClaimState" v-if="claimShow">
-                    <span
-                      class="j-icon"
-                      :class="claim ? 'icon-add-claim' : 'icon-claim'"
-                    ></span>
-                      <div class="tooltip-container">
-                          <div class="tooltip-item">${claim?'已认领':'认领'}</div>
-                      </div>
-                  </span>
+            <span
+              class="j-icon"
+              :class="claim ? 'icon-add-claim' : 'icon-claim'"
+            ></span>
+              <div class="tooltip-container">
+                  <div class="tooltip-item">${claim?'已认领':'认领'}</div>
+              </div>
+          </span>
+          <forwardshare :params="clientParams"></forwardshare>
         </div>
       </div>
       <!-- 免费用户采购单位全景分析提示 -->
@@ -626,6 +628,7 @@
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/keep-tags/keep-tags-template.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/keep-tags/keep-ent-tags-template.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/big-member/js/client_portrayal.js?v={{Msg "seo" "version"}}11'></script>
 <script>
   // 收藏组件

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

@@ -19,6 +19,7 @@
   <link rel="stylesheet"
         href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/ent_portrait.css?v={{Msg "seo" "version"}}'/>
   <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/mainSearch/css/j-icons.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
   <!--E-当前页面的css资源-->
 </head>
 <style>
@@ -233,9 +234,10 @@
     <div class="j-header ent-header">
       <span class="j-icon icon-company"></span>
       <span class="ent-title">${ entInfo.name }</span>
-      <span class="j-icon" :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
+      <span style="margin-right: .32rem;" class="j-icon" :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
             @click="changeFollowState" v-if="entInfo.followSearchFinish && entInfo.entExist"></span>
       <van-loading v-if="!entInfo.followSearchFinish" size="24px"></van-loading>
+      <forwardshare :params="entParams" :show-text="false"></forwardshare>
     </div>
     <van-tabs
             class="ent-tabs-container"
@@ -683,6 +685,7 @@
 </script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/chart_options.js?v={{Msg "seo" "version"}}'>
 </script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/ent_portrait.js?v={{Msg "seo" "version"}}'>
 </script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>

+ 23 - 3
src/jfw/modules/app/src/web/templates/big-member/page_pro_follow_detail.html

@@ -18,8 +18,8 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="stylesheet"
-          href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
+    <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页面的css资源-->
 </head>
 <body>
@@ -50,6 +50,7 @@
                     <span class="down-report active" @click="downReport('app')">下载项目报告</span>
                     <span class="toVip" @click="openVip()" v-if="!this.$data.isPayedUser">开通</span>
                 </div>
+                <forwardshare :params="proParams"></forwardshare>
                 <div class="forecast" @click="goAiAdd()"
                      v-if="this.$data.prodetail.bidtype=='招标'||this.$data.prodetail.bidtype=='询价'">
                     <span class="j-icon icon-face"></span>
@@ -379,9 +380,10 @@
 <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.12.24/lib/vant.min.js></script>
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
-<script src='/common-module/keep-tags/keep-ent-tags-template.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/keep-tags/keep-ent-tags-template.js?v={{Msg "seo" "version"}}'></script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 
 <script>
     var MoneyUnit = {
@@ -462,6 +464,9 @@
     var vNode = {
         delimiters: ['${', '}'],
         el: '#v-pro',
+        components: {
+          forwardshare: vmForward
+        },
         data: {
             powerInfo: {
                 viper: false,
@@ -495,6 +500,7 @@
             isRequestIng:false,
             isExportDialogShow: false,
             cid: '', // 取消认领id
+<<<<<<< HEAD
             cbInfo: {
               isShowRefer: false,
               canBiaoInfo: {
@@ -546,6 +552,9 @@
               status: 0
             },
             rownum: 1
+=======
+            proParams: {}
+>>>>>>> feature/v4.8.17
         },
         created() {
             this.isOpening()
@@ -572,6 +581,9 @@
             this.getBidContent()
             this.getHaveActionHistory()
         },
+        mounted () {
+          this.getShareParams()
+        },
         computed: {
             showRenLing: function () {
                 return !this.bmdetail
@@ -598,6 +610,7 @@
             }
         },
         methods: {
+<<<<<<< HEAD
           doClosePopover () {
             this.showAccEntList = false
           },
@@ -1032,6 +1045,13 @@
               } else if (this.editBtnStatus.status == 2) {
                 this.editBtnStatus.status = 1
                 this.getBidContent()
+=======
+            getShareParams () {
+              this.proParams = {
+                type: '2',
+                id: this.sid,
+                referer: location.href
+>>>>>>> feature/v4.8.17
               }
             },
             goAnalysis: function () {

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

@@ -26,6 +26,7 @@
     href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
   <link rel="stylesheet"
     href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/unit_portrayal.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
   <style>
     .skeleton {
       height: 100%;
@@ -249,6 +250,7 @@
           </div>
           <p class="region">所在地:${statistics.province || '--'} ${statistics.city}</p>
           <p class="buyer-type">采购单位类型:${statistics.buyerClass || '--'}</p>
+          <forwardshare :params="unitParams"></forwardshare>
         </div>
         <!-- 留完资的免费用户 已体验和未体验的展示去开通 -->
         <div v-if="getfreeBuyerOpen">
@@ -743,6 +745,7 @@
   <script
     src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/history-project.js?v={{Msg "seo" "version"}}'>
   </script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'>
   </script>

+ 14 - 1
src/jfw/modules/app/src/web/templates/dataExport/dataExport.html

@@ -708,7 +708,20 @@
                 localStorage.removeItem("index");
             }
             if (filter["selectType"] != null && filter["selectType"] != "") {
-                localStorage.export_selectType = filter["selectType"];
+                var selectTypes = [];
+                var selectTypeList = filter["selectType"].split(",");
+                for(i in selectTypeList){
+                  if(selectTypeList[i]=="title"){
+                    selectTypes.push("标题");
+                  }else if(selectTypeList[i]=="detail"){
+                    selectTypes.push("正文");
+                  }else if(selectTypeList[i]=="filetext"){
+                    selectTypes.push("附件");
+                  }else if(selectTypeList[i]=="purchasing"){
+                    selectTypes.push("项目名称/标的物");
+                  }
+                }
+                localStorage.export_selectType = selectTypes.join(",");
             } else {
                 localStorage.export_selectType = "";
             }

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

@@ -1,6 +1,7 @@
 <html>
 <head>
     {{include "/common/meta.html"}}
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
     <meta name="keywords" content="">
     <meta name="description" content="{{.T.obj.description}}">
     <title>公告信息</title>
@@ -13,6 +14,7 @@
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/share.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/wxinfocontent.css?v={{Msg "seo" "version"}}1"/>
     <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/nps-common/css/nps.css?v={{Msg "seo" "version"}}'/>
+    <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
     <link rel="stylesheet" href="//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css">
     <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/mainSearch/css/third-party-verify-mobile.css?v={{Msg "seo" "version"}}'/>
     <script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
@@ -462,23 +464,26 @@
                     <!-- 标签列表 -->
                     <div class="collec_list"></div>
                     <div class="time_label">
-                        <script>
-                            var l_publishtime = {{.T.obj.l_publishtime}};
-                            if(l_publishtime != ""){
-                                var tdf = utils.dateFromNow(Number(l_publishtime+"000"))
-                                if(tdf != null){
-                                    // document.write("<div class='timebefore_vip'><i class='glyphicon bofangjilu'></i>"+tdf+"</div>");
-                                    document.write("<div class='timebefore_vip'>"+tdf+"</div>");
-                                }
-                            }
-                        </script>
-                        <div class="right-container">
-                            <div class="collec_star">
-                                <span class="icon weishoucang"></span>
-                                <span class="icon-text">收藏</span>
-                            </div>
-                            {{if or .T.obj.projectname .T.obj.projectcode}}<div class="follow" style="top:1px !important;display: none">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</div><!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
-                        </div>
+                      <script>
+                          var l_publishtime = {{.T.obj.l_publishtime}};
+                          if(l_publishtime != ""){
+                              var tdf = utils.dateFromNow(Number(l_publishtime+"000"))
+                              if(tdf != null){
+                                  // document.write("<div class='timebefore_vip'><i class='glyphicon bofangjilu'></i>"+tdf+"</div>");
+                                  document.write("<div class='timebefore_vip'>"+tdf+"</div>");
+                              }
+                          }
+                      </script>
+                      <div class="right-container">
+                          <div class="collec_star">
+                              <span class="icon weishoucang"></span>
+                              <span class="icon-text">收藏</span>
+                          </div>
+                          {{if or .T.obj.projectname .T.obj.projectcode}}<div class="follow" style="top:1px !important;display: none">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</div><!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
+                          <div class="forward-share">
+                            <forwardshare :params="params"></forwardshare>
+                          </div>
+                      </div>
                     </div>
                     <div class="refer_stand">
                       <div class="r-s-left">
@@ -563,6 +568,9 @@
                                 <span class="icon-text">收藏</span>
                             </div>
                             {{if or .T.obj.projectname .T.obj.projectcode}}<span class="follow" style="display: none">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</span><!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
+                            <div class="forward-share">
+                              <forwardShare :params="params"></forwardShare>
+                            </div>
                         </div>
                         <script>
                             var l_publishtime = {{.T.obj.l_publishtime}};
@@ -975,6 +983,7 @@
 <script src='/common-module/mainSearch/js/third-party-verify-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='/common-module/mainSearch/js/advanced-project-table-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='/common-module/nps-common/js/nps.js?v={{Msg "seo" "version"}}'></script>
+<script src='/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <!-- <script src="https://cdn.bootcss.com/vConsole/3.3.4/vconsole.min.js"></script>
 <script> new VConsole(); </script> -->
 <script>
@@ -1043,6 +1052,7 @@
       $('.abs').hide()
       $('.adv').hide()
       $('.login-guide').show()
+      $('.forward-share').hide()
     } else {
       $('.login-guide').hide()
     }
@@ -1600,6 +1610,7 @@
       }
     }
 
+<<<<<<< HEAD
     // 查询项目是否可以参标
     // function getCanCanBiao () {
     //   const params = {
@@ -1732,6 +1743,32 @@
     }
 
     getCanBiaoInfo()
+=======
+    var vShareCom = new Vue({
+      el: '.forward-share',
+      components: {
+        forwardshare: vmForward
+      },
+      data: {
+        params: {}
+      },
+      mounted () {
+        this.params = {
+          type: '1',
+          id: id,
+          stype: this.extractString(location.href),
+          referer: location.href,
+        }
+      },
+      methods: {
+        extractString(str) {
+          const regex = /\/article\/(.*?)\//;
+          const match = str.match(regex);
+          return match ? match[1] : null;
+        }
+      }
+    })
+>>>>>>> feature/v4.8.17
 
     // 商机管理-认领客户
     var vKeepEntComponent = new Vue({
@@ -2222,7 +2259,7 @@
     function initShowForecast() {
         if((subtype==='询价' || subtype==="招标") && userId){
             if(title !==''){
-                $('.time_label').css({'justify-content':'flex-start'})
+                $('.time_label').addClass('new_layout')
                 $('.tool_bottom').css({'justify-content':'flex-start'})
                 $('.forecast').css('display','flex')
             }else{

+ 2 - 2
src/jfw/modules/bidfileinter/src/go.mod

@@ -4,7 +4,7 @@ go 1.18
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230420060106-a9c3f4187463
-	app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd
+	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
 	app.yhyue.com/moapp/jypkg v0.0.0-20230420060744-ff53e7ca6f47
 	github.com/gogf/gf/v2 v2.3.1
 	github.com/robfig/cron v1.2.0
@@ -77,7 +77,7 @@ require (
 	github.com/prometheus/common v0.37.0 // indirect
 	github.com/prometheus/procfs v0.8.0 // indirect
 	github.com/rivo/uniseg v0.2.0 // indirect
-	github.com/sirupsen/logrus v1.9.0 // indirect
+	github.com/sirupsen/logrus v1.8.3 // indirect
 	github.com/spaolacci/murmur3 v1.1.0 // indirect
 	github.com/spf13/afero v1.9.3 // indirect
 	github.com/spf13/cast v1.5.0 // indirect

+ 4 - 4
src/jfw/modules/bidfileinter/src/go.sum

@@ -5,8 +5,8 @@ app.yhyue.com/moapp/jyMarketing v0.0.2-0.20230304035551-21bb1eedf547/go.mod h1:J
 app.yhyue.com/moapp/jybase v0.0.0-20230117032034-ad7c00ffe11a/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
 app.yhyue.com/moapp/jybase v0.0.0-20230420060106-a9c3f4187463 h1:HhRvi41wOfoneH+lFMagIFfG2W20cxFzg24Iv827vi8=
 app.yhyue.com/moapp/jybase v0.0.0-20230420060106-a9c3f4187463/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd h1:jBP9rucnTd0KHm/slWsoEoUxnlfMjVSiAKhLfzh9Dvc=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd/go.mod h1:hlsdPMebg8N90L57xkxJdVVFuvtlT8SuZLM6hY+jB44=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
 app.yhyue.com/moapp/jypkg v0.0.0-20230420060744-ff53e7ca6f47 h1:/9tfAY6V1954eEKMVzHy+foZdP5HtTnUK8JvImmvmbI=
 app.yhyue.com/moapp/jypkg v0.0.0-20230420060744-ff53e7ca6f47/go.mod h1:1QozRpU+mHTRhIYwrXemUt3sXSBWQRWZerqBwoHsBVM=
 bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e h1:h+VEI3o1qC0jeCzkFGTrLI4f27cfa/W/y+0sXokWMgE=
@@ -984,8 +984,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
 github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
-github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.8.3 h1:DBBfY8eMYazKEJHb3JKpSPfpgd2mBCoNFlQx6C5fftU=
+github.com/sirupsen/logrus v1.8.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
 github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
 github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak=

+ 3 - 3
src/jfw/modules/bigmember/src/entity/claimCommon.go

@@ -19,13 +19,13 @@ type ProjectClaim struct {
 func ClaimPermissions(session *httpsession.Session) (*ProjectClaim, error) {
 	userid := util.ObjToString(session.Get("userId"))
 	if userid == "" {
-		return nil, errors.New("未登录")
+		return &ProjectClaim{false, userid, 0}, errors.New("未登录")
 	}
+	baseUserId := util.Int64All(session.Get("positionId"))
 	bigMsg := jy.GetBigVipUserBaseMsg(session, *config.Middleground)
 	if bigMsg.Status <= 0 {
-		return nil, errors.New("无权益")
+		return &ProjectClaim{false, userid, util.IntAll(baseUserId)}, errors.New("无权益")
 	} else {
-		baseUserId := util.Int64All(session.Get("positionId"))
 		return &ProjectClaim{true, userid, util.IntAll(baseUserId)}, nil
 	}
 

+ 5 - 2
src/jfw/modules/bigmember/src/go.mod

@@ -4,7 +4,7 @@ go 1.20
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230511020847-9b0fbc33ff1c
-	app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd
+	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
 	app.yhyue.com/moapp/jypkg v0.0.0-20230506115817-6f55523ae3f1
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.13
 	github.com/donnie4w/go-logger v0.0.0-20170827050443-4740c51383f4
@@ -79,7 +79,7 @@ require (
 	github.com/prometheus/common v0.37.0 // indirect
 	github.com/prometheus/procfs v0.8.0 // indirect
 	github.com/rivo/uniseg v0.2.0 // indirect
-	github.com/sirupsen/logrus v1.9.0 // indirect
+	github.com/sirupsen/logrus v1.8.3 // indirect
 	github.com/spaolacci/murmur3 v1.1.0 // indirect
 	github.com/spf13/afero v1.9.3 // indirect
 	github.com/spf13/cast v1.5.0 // indirect
@@ -87,11 +87,14 @@ require (
 	github.com/spf13/pflag v1.0.5 // indirect
 	github.com/spf13/viper v1.15.0 // indirect
 	github.com/subosito/gotenv v1.4.2 // indirect
+	github.com/tealeg/xlsx v1.0.5 // indirect
+	github.com/thinxer/go-word2vec v0.0.0-20150917053916-5c19ec7379ed // indirect
 	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
 	github.com/xdg-go/scram v1.1.1 // indirect
 	github.com/xdg-go/stringprep v1.0.3 // indirect
 	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
 	github.com/zeromicro/go-zero v1.4.4 // indirect
+	github.com/ziutek/blas v0.0.0-20190227122918-da4ca23e90bb // indirect
 	go.etcd.io/etcd/api/v3 v3.5.6 // indirect
 	go.etcd.io/etcd/client/pkg/v3 v3.5.6 // indirect
 	go.etcd.io/etcd/client/v3 v3.5.6 // indirect

+ 10 - 4
src/jfw/modules/bigmember/src/go.sum

@@ -7,8 +7,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHu
 app.yhyue.com/moapp/jybase v0.0.0-20230117032034-ad7c00ffe11a/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
 app.yhyue.com/moapp/jybase v0.0.0-20230511020847-9b0fbc33ff1c h1:bYfxHP2uLcQlnsLuJSFHsvDpPTcEVqBgNOZ6E1B+Fl8=
 app.yhyue.com/moapp/jybase v0.0.0-20230511020847-9b0fbc33ff1c/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd h1:jBP9rucnTd0KHm/slWsoEoUxnlfMjVSiAKhLfzh9Dvc=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd/go.mod h1:hlsdPMebg8N90L57xkxJdVVFuvtlT8SuZLM6hY+jB44=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
 app.yhyue.com/moapp/jypkg v0.0.0-20230506115817-6f55523ae3f1 h1:d5VcH9qiJbFPypLNj42/d+bQ0webGqODZ1ALlBCWSso=
 app.yhyue.com/moapp/jypkg v0.0.0-20230506115817-6f55523ae3f1/go.mod h1:1QozRpU+mHTRhIYwrXemUt3sXSBWQRWZerqBwoHsBVM=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
@@ -1083,8 +1083,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
 github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
-github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.8.3 h1:DBBfY8eMYazKEJHb3JKpSPfpgd2mBCoNFlQx6C5fftU=
+github.com/sirupsen/logrus v1.8.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
 github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
 github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak=
@@ -1129,6 +1129,10 @@ github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ
 github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8=
 github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
 github.com/tal-tech/go-zero v1.1.5/go.mod h1:LbN0C7/rbl2+LUWTSUYx5leXmgedeMWjt1jc3/8/zFA=
+github.com/tealeg/xlsx v1.0.5 h1:+f8oFmvY8Gw1iUXzPk+kz+4GpbDZPK1FhPiQRd+ypgE=
+github.com/tealeg/xlsx v1.0.5/go.mod h1:btRS8dz54TDnvKNosuAqxrM1QgN1udgk9O34bDCnORM=
+github.com/thinxer/go-word2vec v0.0.0-20150917053916-5c19ec7379ed h1:1+oKuPuDQ4AbN1WRMFxl9WQClH80GuZ81X/4FsOshjI=
+github.com/thinxer/go-word2vec v0.0.0-20150917053916-5c19ec7379ed/go.mod h1:WE5pZgSp3RwicfhHQmOJOexA0n4AKTzBqmnSu7R8Nbk=
 github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
 github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
 github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
@@ -1171,6 +1175,8 @@ github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxt
 github.com/zeromicro/go-zero v1.3.5/go.mod h1:wh4o794b7Ul3W0k35Pw9nc3iB4O0OpaQTMQz/PJc1bc=
 github.com/zeromicro/go-zero v1.4.4 h1:J8M768EVFNtIQJ/GCEsoIQPanxbx2HHT0it7r69U76Y=
 github.com/zeromicro/go-zero v1.4.4/go.mod h1:5WSUwtJm0bYdDZ69GlckigcT6D0EyAPbDaX3unbSY/4=
+github.com/ziutek/blas v0.0.0-20190227122918-da4ca23e90bb h1:uWiILQloLUVdtPYr1ZZo2zqtlpzo4G8vUpglo/Fs2H8=
+github.com/ziutek/blas v0.0.0-20190227122918-da4ca23e90bb/go.mod h1:J3xKssoVdrwZ2E29fIox/EKxOZWimS7AZ4fOTCFkOLo=
 github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
 go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
 go.etcd.io/etcd v0.0.0-20200402134248-51bdeb39e698/go.mod h1:YoUyTScD3Vcv2RBm3eGVOq7i1ULiz3OuXoQFWOirmAM=

+ 334 - 0
src/jfw/modules/bigmember/src/service/chatShare/obtainDetails.go

@@ -0,0 +1,334 @@
+package chatShare
+
+import (
+	qutil "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/encrypt"
+	elastic "app.yhyue.com/moapp/jybase/esv1"
+	. "app.yhyue.com/moapp/jybase/mongodb"
+	"app.yhyue.com/moapp/jybase/redis"
+	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
+	"app.yhyue.com/moapp/jypkg/public"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"go.mongodb.org/mongo-driver/bson"
+	"jy/src/jfw/modules/bigmember/src/config"
+	"jy/src/jfw/modules/bigmember/src/db"
+	"jy/src/jfw/modules/bigmember/src/entity"
+	"jy/src/jfw/modules/bigmember/src/util"
+	"log"
+	"reflect"
+	"strconv"
+	"strings"
+	"time"
+)
+
+var (
+	mongodb = public.MQFW
+)
+
+type UserPower struct {
+	Buy       bool   //是否是付费版
+	UserId    string //用户id
+	MaxNum    int    //最大关注数量
+	SaveTable string //关注项目表
+}
+type ForwardData struct {
+	Label string `json:"label"`
+	Value string `json:"value"`
+}
+
+var (
+	// 标讯信息
+	signalKey = []string{"title", "area", "city", "agency", "projectname", "buyer", "buyerperson", "buyertel"}
+	// 项目详情页
+	projectKey = []string{"projectname", "area", "agency", "buyer"}
+	//拟在建
+	constructionKey = []string{"projectname", "lasttime", "firsttime", "project_stage_name", "category_name", "total_investment"}
+	// 企业画像
+	entKey = []string{"entName", "legal", "capital", "operStart", "phone", "address"}
+	// 采购单位画像
+	buyerKey = []string{"buyer", "city"}
+
+	// 标讯信息
+	signalKeys = map[string]string{"title": "标讯标题", "area": "省份", "city": "城市", "agency": "招标代理机构", "projectname": "项目名称", "buyer": "采购单位", "buyerperson": "采购联系人", "buyertel": "采购电话", "referer": "标讯网址"}
+	// 项目详情页
+	projectKeys = map[string]string{"projectname": "项目标题", "area": "地区", "agency": "招标代理机构", "buyer": "采购单位", "referer": "链接"}
+	//拟在建
+	constructionKeys = map[string]string{"projectname": "项目标题", "lasttime": "更新时间", "firsttime": "发布时间", "project_stage_name": "项目阶段", "category_name": "项目类型", "total_investment": "项目投资(万元)", "referer": "链接"}
+	// 企业画像
+	entKeys = map[string]string{"entName": "企业名称", "legal": "法定代表人", "capital": "注册资本", "operStart": "成立日期", "phone": "联系方式", "address": "地址", "referer": "企业画像网址"}
+	// 采购单位画像
+	buyerKeys = map[string]string{"buyer": "采购单位名称", "city": "所在地", "referer": "画像网址"}
+)
+
+// 标讯信息
+func (this *ChatShareProject) BeaconDetails() ([]ForwardData, error) {
+	userId := qutil.ObjToString(this.Session().Get("userId"))
+	ssOpenid := this.Session().Get("s_m_openid")
+	var (
+		res *map[string]interface{}
+		ok  bool
+	)
+	if userId == "" && ssOpenid != nil {
+		res, ok = mongodb.FindOneByField("user", bson.M{"s_m_openid": ssOpenid, "s_unionid": bson.M{"$ne": ssOpenid}}, `{"i_vip_status":1,"i_member_status":1,"s_m_phone":1,"s_phone":1,"l_vip_starttime":1}`)
+		if ok {
+			userId = BsonIdToSId((*res)["_id"])
+		}
+	} else if userId != "" {
+		//判断用户是否是vip
+		res = config.Compatible.Select(userId, `{"i_vip_status":1,"i_member_status":1,"s_m_phone":1,"s_phone":1,"l_vip_starttime":1}`)
+	}
+	if userId == "" {
+		return nil, errors.New("获取用户信息失败")
+	}
+	entId := qutil.IntAll(this.GetSession("entId"))
+	userPower := jy.GetBigVipUserBaseMsg(this.Session(), *config.Middleground)
+	var (
+		//isEntnicheNew bool = userPower.EntIsNew                   w                                        //新版超级订阅
+		isOldVip     bool = false                                                                        //新购超级订阅不能查看拟建项目详情页
+		isVip        bool = userPower.VipStatus > 0                                                      //超级订阅
+		isMember     bool = userPower.Status > 0                                                         //大会员
+		isEntniche   bool = userPower.EntnicheStatus > 0                                                 //商机管理
+		privatedata  bool = userPower.PrivateGD                                                          //广东移动DICT 用户
+		isEntService bool = userPower.Data.Ent.PowerSource > 0 && userPower.Data.Entniche.IsEntPower > 0 //商机管理服务
+	)
+	//bigMsg := jy.GetBigVipUserBaseMsg(this.Session(), *config.Middleground)
+	if res != nil && len(*res) > 0 {
+		if isVip && qutil.Int64All((*res)["l_vip_starttime"]) < config.Config.ContextOldVipLimit {
+			isOldVip = true
+		}
+	}
+	if entId > 0 && userPower.EntInfo[entId] != nil {
+		isEntniche = userPower.EntInfo[entId].Status == 1 && userPower.EntInfo[entId].IsPower
+		if isEntService = userPower.EntInfo[entId].IsService && userPower.EntInfo[entId].IsPower; isEntService {
+			isEntniche = false
+		}
+	}
+	if !isEntniche && privatedata {
+		isEntniche = true
+	}
+
+	return append(SignalSharing(this.GetString("id"), this.GetString("stype"), (isVip && isOldVip) || isMember || isEntniche), ForwardData{Label: signalKeys["referer"], Value: this.GetString("referer")}), nil
+}
+
+// BuyerPortrait 采购单位画像
+func (this *ChatShareProject) BuyerPortrait() ([]ForwardData, error) {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	if userId == "" {
+		return nil, errors.New("用户未登录")
+	}
+	buyerName := this.GetString("buyer")
+	rData, errMsg := func() ([]ForwardData, error) {
+		cepm, power, err, _ := entity.CreateSubVipPortraitManager(userId, "buyerPortrait", buyerName, false, this.Session())
+		cepm.Session = this.Session()
+		if err != nil {
+			return nil, err
+		}
+		rData, err := cepm.BuyerPortraitData(&entity.PortraitScreen{
+			Ent:        buyerName,
+			Match:      this.GetString("match"),
+			ExactMatch: this.GetString("exactMatch") == "1",
+			MatchRange: this.GetString("matchRange"),
+			Area:       this.GetString("area"),
+			ScopeClass: this.GetString("scopeClass"),
+			TimeRange:  this.GetString("timeRange"),
+			HasPower:   power > 1,
+		}, "")
+		if err != nil {
+			return nil, err
+		}
+		rData["buyer"] = buyerName
+		if power == 3 {
+			rData["onTrial"] = true
+		}
+		var res []ForwardData
+		for _, v := range buyerKey {
+			res = append(res, ForwardData{Label: buyerKeys[v], Value: qutil.InterfaceToStr(qutil.If(qutil.InterfaceToStr(rData[v]) == "", "--", rData[v]))})
+		}
+		return append(res, ForwardData{Label: buyerKeys["referer"], Value: this.GetString("referer")}), nil
+	}()
+	return rData, errMsg
+}
+
+// EntDetail 企业画像
+func (this *ChatShareProject) EntDetail() ([]ForwardData, error) {
+	rData, errMsg := func() ([]ForwardData, error) {
+		cepm, _, err, _ := entity.CreatePortraitManager(this.Session(), "entDetail")
+		if err != nil {
+			return nil, err
+		}
+		entId := this.GetString("entId")
+		entInfo, err := cepm.GetEntInfo(util.DecodeId(entId))
+		if err != nil {
+			return nil, err
+		}
+		var res []ForwardData
+		for _, v := range entKey {
+			if v == "capital" {
+				if qutil.Int64All(entInfo[v]) > 10000 {
+					amount := fmt.Sprintf("%.3f", qutil.Float64All(entInfo[v])/10000)
+					amount = amount[:len(amount)-1]
+					if strings.Contains(amount, ".00") {
+						amount = strings.ReplaceAll(amount, ".00", "")
+					} else if strings.HasSuffix(amount, "0") {
+						amount = amount[:len(amount)-1]
+					}
+					entInfo[v] = fmt.Sprintf("%s亿元", amount)
+				} else {
+					switch st := reflect.ValueOf(entInfo[v]); st.Kind() {
+					case reflect.Float32, reflect.Float64:
+						entInfo[v] = strings.ReplaceAll(fmt.Sprintf("%s万元", strconv.FormatFloat(qutil.Float64All(entInfo[v]), 'f', -1, 64)), ".00", "")
+					}
+				}
+			}
+			if v == "operStart" {
+				switch st := reflect.ValueOf(entInfo[v]); st.Kind() {
+				case reflect.Int64, reflect.Int, reflect.Float64:
+					entInfo[v] = time.Unix(qutil.Int64All(entInfo[v]), 0).Format("2006-01-02")
+				}
+			}
+			res = append(res, ForwardData{Label: entKeys[v], Value: qutil.InterfaceToStr(qutil.If(qutil.InterfaceToStr(entInfo[v]) == "", "--", entInfo[v]))})
+		}
+		return append(res, ForwardData{Label: entKeys["referer"], Value: this.GetString("referer")}), nil
+	}()
+	return rData, errMsg
+}
+
+func ObjData(sid, content string, isPayUser bool) (obj map[string]interface{}) {
+	brobj, ok := mongodb.Find("bidding_rec", bson.M{"s_id": sid}, `{"l_recoverydate":-1}`, public.MgoBiddingFields, false, 0, 1)
+	if ok && (*brobj) != nil && len(*brobj) == 1 && (*brobj)[0] != nil {
+		obj = (*brobj)[0]
+	} else {
+		aobj, ok := public.Mgo_Bidding.FindById(public.DbConf.Mongodb.Bidding.Collection, sid, public.MgoBiddingFields)
+		if ok && (aobj == nil || *aobj == nil || len(*aobj) == 0) {
+			aobj, ok = public.Mgo_Bidding.FindById(public.DbConf.Mongodb.Bidding.Collection_back, sid, public.MgoBiddingFields)
+		}
+		obj = *aobj
+	}
+	if ok && obj != nil && len(obj) > 0 {
+		if !isPayUser && (content != "indexcontent") && (qutil.ObjToString(obj["subtype"]) == "拟建" || qutil.ObjToString(obj["subtype"]) == "采购意向") {
+			for k, _ := range obj {
+				if k != "title" && k != "area" && k != "subtype" && k != "toptype" && k != "publishtime" && k != "budget" && k != "bidamount" && k != "site" && k != "spidercode" && k != "recommended_service" &&
+					k != "owner" && k != "total_investment" && k != "projectaddr" && k != "projectperiod" && k != "approvedept" && k != "approvecontent" && k != "approvecode" && k != "approvenumber" && k != "approvetime" && k != "approvestatus" && k != "project_scale" && k != "projectname" {
+					delete(obj, k)
+				}
+			}
+		}
+		obj["_id"] = encrypt.EncodeArticleId2ByCheck(sid)
+		infoformat := qutil.IntAllDef(obj["infoformat"], 1)
+		obj["infoformat"] = infoformat
+		//精准字段(竞争对手的地址) 或  拟建项目
+		if obj["competehref"] != nil || infoformat == 2 {
+			delete(obj, "href")
+		}
+	}
+	return
+}
+
+func SignalSharing(id, content string, isPayUser bool) []ForwardData {
+	log.Printf("id:%s,content:%s,isPayUser:%v", id, content, isPayUser)
+	sid := encrypt.CommonDecodeArticle(content, id)[0]
+	defer qutil.Catch()
+	var objdata []ForwardData
+	obj := ObjData(sid, content, isPayUser)
+	if obj != nil {
+		var purchasing = obj["purchasing"]
+		if purchasing != nil && purchasing != "" {
+			obj["purchasing"] = qutil.ObjToString(purchasing)
+		}
+		titleStr := qutil.ObjToString(obj["title"])
+		if len([]rune(titleStr)) > 100 {
+			titleStr = string([]rune(titleStr)[:100]) + "..."
+		}
+		obj["title"] = public.ClearHtml.ReplaceAllString(titleStr, "")
+		finalType, _ := obj["subtype"].(string)
+		if finalType == "" {
+			finalType = qutil.ObjToString(obj["toptype"])
+		}
+		if finalType == "" {
+			finalType = qutil.ObjToString(obj["type"])
+			if finalType == "bid" {
+				finalType = "中标"
+			} else if finalType == "tender" {
+				finalType = "招标"
+			} else {
+				finalType = ""
+			}
+		}
+	}
+	//"title","area","city","agency","projectname","buyer","buyertel","buyerperson"
+	for _, v := range signalKey {
+		var data ForwardData
+		data.Label = signalKeys[v]
+		data.Value = qutil.InterfaceToStr(qutil.If(qutil.InterfaceToStr(obj[v]) == "", "--", obj[v]))
+		objdata = append(objdata, data)
+	}
+	return objdata
+}
+
+// 项目详情页
+func (this *ChatShareProject) GetProjectDetail() (res []ForwardData, err error) {
+	userId := qutil.ObjToString(this.Session().Get("userId"))
+	if userId == "" {
+		return nil, errors.New("未登录")
+	}
+	id := this.GetString("id")
+	sid := util.DecodeId(id)
+	redisKey := fmt.Sprintf("project_%s", sid)
+	// log.Println("redisKey:", redisKey)
+	if reidsCatche, redisErr := redis.GetBytes("other", redisKey); redisErr == nil && reidsCatche != nil {
+		req := make(map[string]interface{})
+		err = json.Unmarshal(*reidsCatche, &req)
+		if err == nil {
+			for _, v := range projectKey {
+				res = append(res, ForwardData{Label: projectKeys[v], Value: qutil.InterfaceToStr(qutil.If(qutil.InterfaceToStr(req[v]) == "", "--", req[v]))})
+			}
+			res = append(res, ForwardData{Label: projectKeys["referer"], Value: this.GetString("referer")})
+			return
+		}
+	}
+	finalDate := make(map[string]interface{})
+	list := elastic.Get("projectset", "projectset", `{"query": {"bool": {"must": [{"match": {"list.infoid": "`+sid+`"}}]}},"_source":["projectname","area","agency","buyer"],"from": 0,"size": 1}`)
+	if list != nil && len(*list) > 0 {
+		finalDate = (*list)[0]
+	}
+
+	for _, v := range projectKey {
+		res = append(res, ForwardData{Label: projectKeys[v], Value: qutil.InterfaceToStr(qutil.If(finalDate[v] == nil, "--", finalDate[v]))})
+	}
+	res = append(res, ForwardData{Label: projectKeys["referer"], Value: this.GetString("referer")})
+	return
+}
+
+func (this *ChatShareProject) ProposedConstruction() (res []ForwardData, err error) {
+	pid := this.GetString("id")
+	if pid == "" {
+		return nil, errors.New("pid获取失败")
+	}
+	data := db.MysqlSubject.SelectBySql(fmt.Sprintf(`SELECT a.projectname,a.lasttime,a.firsttime,b.name as project_stage_name,c.name as category_name,a.total_investment
+		FROM dwd_f_nzj_baseinfo a
+		LEFT JOIN d_nzj_project_stage_code b ON a.project_stage_code = b.code
+		LEFT JOIN d_nzj_category_code c ON a.category_code = c.code
+		 WHERE a.proposed_id ="%s"`, pid))
+	if data == nil || len(*data) < 1 {
+		return nil, errors.New("获取信息失败")
+	}
+	for _, v := range constructionKey {
+		if v == "total_investment" {
+			switch st := reflect.ValueOf((*data)[0][v]); st.Kind() {
+			case reflect.Float32, reflect.Float64:
+				(*data)[0][v] = strconv.FormatFloat(qutil.Float64All((*data)[0][v]), 'f', -1, 64)
+			}
+		}
+		if v == "firsttime" || v == "lasttime" {
+			switch st := reflect.ValueOf((*data)[0][v]); st.Kind() {
+			case reflect.Int64, reflect.Int, reflect.Float64:
+				(*data)[0][v] = time.Unix(qutil.Int64All((*data)[0][v]), 0).Format("2006-01-02")
+			}
+		}
+		res = append(res, ForwardData{Label: constructionKeys[v], Value: qutil.InterfaceToStr(qutil.If(qutil.InterfaceToStr((*data)[0][v]) == "", "--", (*data)[0][v]))})
+	}
+	res = append(res, ForwardData{Label: constructionKeys["referer"], Value: fmt.Sprintf("%s/succbi/nzj/app/nzj.app/nzj_detail_1.spg?pid=%s", this.Host(), pid)})
+	return
+}

+ 38 - 0
src/jfw/modules/bigmember/src/service/chatShare/service.go

@@ -0,0 +1,38 @@
+package chatShare
+
+import (
+	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
+)
+
+// ChatShareProject 详情页转给同事(站内信)
+type ChatShareProject struct {
+	*xweb.Action
+	chatShare xweb.Mapper `xweb:"/details/chatShare"` //详情页转给同事(站内信)
+}
+
+func (this *ChatShareProject) ChatShare() {
+	var (
+		err     error
+		code    int
+		codeMsg string
+	)
+	var data []ForwardData
+	stype := this.GetString("type") //项目类型
+	switch stype {
+	case "1": //标讯详情
+		data, err = this.BeaconDetails()
+	case "2": //项目详情
+		data, err = this.GetProjectDetail()
+	case "3":
+		data, err = this.ProposedConstruction()
+	case "4": //企业画像
+		data, err = this.EntDetail()
+	case "5": //采购单位画像
+		data, err = this.BuyerPortrait()
+	}
+	if err != nil {
+		code, codeMsg = -1, err.Error()
+	}
+
+	this.ServeJson(map[string]interface{}{"data": data, "error_code": code, "error_msg": codeMsg})
+}

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

@@ -3,6 +3,7 @@ package service
 import (
 	"jy/src/jfw/modules/bigmember/src/service/analysis"
 	"jy/src/jfw/modules/bigmember/src/service/bidfile"
+	"jy/src/jfw/modules/bigmember/src/service/chatShare"
 	"jy/src/jfw/modules/bigmember/src/service/claim"
 	"jy/src/jfw/modules/bigmember/src/service/follow"
 	"jy/src/jfw/modules/bigmember/src/service/portrait"
@@ -31,4 +32,5 @@ func init() {
 	xweb.AddAction(&trial.Trial{})
 	xweb.AddAction(&bidfile.Bidfile{})
 	xweb.AddAction(&report.MarketAnalysis{})
+	xweb.AddAction(&chatShare.ChatShareProject{})
 }

+ 2 - 2
src/jfw/modules/publicapply/src/go.mod

@@ -4,7 +4,7 @@ go 1.18
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8
-	app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd
+	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
 	app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.13
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67
@@ -80,7 +80,7 @@ require (
 	github.com/prometheus/common v0.37.0 // indirect
 	github.com/prometheus/procfs v0.8.0 // indirect
 	github.com/rivo/uniseg v0.2.0 // indirect
-	github.com/sirupsen/logrus v1.9.0 // indirect
+	github.com/sirupsen/logrus v1.8.3 // indirect
 	github.com/spaolacci/murmur3 v1.1.0 // indirect
 	github.com/spf13/afero v1.9.3 // indirect
 	github.com/spf13/cast v1.5.0 // indirect

+ 4 - 4
src/jfw/modules/publicapply/src/go.sum

@@ -7,8 +7,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHu
 app.yhyue.com/moapp/jybase v0.0.0-20230117032034-ad7c00ffe11a/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
 app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8 h1:0ukFbYC7yRkFvRsr0bFCgV2SHsc1TvE+kW5MlttQEzE=
 app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd h1:jBP9rucnTd0KHm/slWsoEoUxnlfMjVSiAKhLfzh9Dvc=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd/go.mod h1:hlsdPMebg8N90L57xkxJdVVFuvtlT8SuZLM6hY+jB44=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
 app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628 h1:JrlY3EGZv+sNffZSRXNFSCYtudPXKD3Dks3970vqJ40=
 app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628/go.mod h1:zpXgWwV+/gwZBV24bffc4OhptUMT5zEVxwq1ENf0OYQ=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
@@ -1084,8 +1084,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
 github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
-github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.8.3 h1:DBBfY8eMYazKEJHb3JKpSPfpgd2mBCoNFlQx6C5fftU=
+github.com/sirupsen/logrus v1.8.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
 github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
 github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak=

+ 2 - 2
src/jfw/modules/subscribepay/src/go.mod

@@ -4,7 +4,7 @@ go 1.18
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8
-	app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd
+	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
 	app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628
 	bp.jydev.jianyu360.cn/BaseService/pushpkg v0.0.0-20230225061813-384daf716c9d
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.13
@@ -84,7 +84,7 @@ require (
 	github.com/prometheus/common v0.37.0 // indirect
 	github.com/prometheus/procfs v0.8.0 // indirect
 	github.com/rivo/uniseg v0.2.0 // indirect
-	github.com/sirupsen/logrus v1.9.0 // indirect
+	github.com/sirupsen/logrus v1.8.3 // indirect
 	github.com/spaolacci/murmur3 v1.1.0 // indirect
 	github.com/spf13/afero v1.9.3 // indirect
 	github.com/spf13/cast v1.5.0 // indirect

+ 4 - 4
src/jfw/modules/subscribepay/src/go.sum

@@ -7,8 +7,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHu
 app.yhyue.com/moapp/jybase v0.0.0-20230117032034-ad7c00ffe11a/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
 app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8 h1:0ukFbYC7yRkFvRsr0bFCgV2SHsc1TvE+kW5MlttQEzE=
 app.yhyue.com/moapp/jybase v0.0.0-20230517064222-e0bdfc8ee0e8/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd h1:jBP9rucnTd0KHm/slWsoEoUxnlfMjVSiAKhLfzh9Dvc=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd/go.mod h1:hlsdPMebg8N90L57xkxJdVVFuvtlT8SuZLM6hY+jB44=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
 app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628 h1:JrlY3EGZv+sNffZSRXNFSCYtudPXKD3Dks3970vqJ40=
 app.yhyue.com/moapp/jypkg v0.0.0-20230517064346-54ec66481628/go.mod h1:zpXgWwV+/gwZBV24bffc4OhptUMT5zEVxwq1ENf0OYQ=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
@@ -1092,8 +1092,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
 github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
-github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.8.3 h1:DBBfY8eMYazKEJHb3JKpSPfpgd2mBCoNFlQx6C5fftU=
+github.com/sirupsen/logrus v1.8.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
 github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
 github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak=

+ 2 - 2
src/jfw/modules/weixin/src/go.mod

@@ -4,7 +4,7 @@ go 1.18
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230117032034-ad7c00ffe11a
-	app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd
+	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
 	app.yhyue.com/moapp/jypkg v0.0.0-20230225014640-5541595140d1
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.13
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67
@@ -74,7 +74,7 @@ require (
 	github.com/prometheus/common v0.37.0 // indirect
 	github.com/prometheus/procfs v0.8.0 // indirect
 	github.com/rivo/uniseg v0.2.0 // indirect
-	github.com/sirupsen/logrus v1.9.0 // indirect
+	github.com/sirupsen/logrus v1.8.3 // indirect
 	github.com/spaolacci/murmur3 v1.1.0 // indirect
 	github.com/spf13/afero v1.9.3 // indirect
 	github.com/spf13/cast v1.5.0 // indirect

+ 4 - 4
src/jfw/modules/weixin/src/go.sum

@@ -4,8 +4,8 @@ app.yhyue.com/moapp/jyPoints v1.1.1/go.mod h1:SvP8p5L3jGrejHiH2LXfgCg/NPlFiKBC5Y
 app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
 app.yhyue.com/moapp/jybase v0.0.0-20230117032034-ad7c00ffe11a h1:wD4aWPSYdiX1cIP4lzzPD2s7fYhKa3muIf97l9tonJE=
 app.yhyue.com/moapp/jybase v0.0.0-20230117032034-ad7c00ffe11a/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd h1:jBP9rucnTd0KHm/slWsoEoUxnlfMjVSiAKhLfzh9Dvc=
-app.yhyue.com/moapp/jylog v0.0.0-20230511065424-895d5b2cedfd/go.mod h1:hlsdPMebg8N90L57xkxJdVVFuvtlT8SuZLM6hY+jB44=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
+app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
 app.yhyue.com/moapp/jypkg v0.0.0-20230225014640-5541595140d1 h1:cgne543CaL9ScgSPkqH1jCTp9jkeaoBKTy8AhB+64lU=
 app.yhyue.com/moapp/jypkg v0.0.0-20230225014640-5541595140d1/go.mod h1:pwpzRNZO3wo7EX7e9KiP2Xa8sLof1FeWweRjRH15C0o=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
@@ -999,8 +999,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
 github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
-github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.8.3 h1:DBBfY8eMYazKEJHb3JKpSPfpgd2mBCoNFlQx6C5fftU=
+github.com/sirupsen/logrus v1.8.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
 github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
 github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak=

+ 9 - 3
src/web/staticres/big-member/css/page_pro_follow_detail.css

@@ -29,17 +29,23 @@
 
 .prodetail .prodetailTop .tocare {
   position: relative;
-  margin: 0.32rem 0;
+  margin: 0.32rem 0 .24rem 0;
   padding-left: 0.32rem;
   width: 100%;
-  height: 0.4rem;
+  height: 0.96rem;
   max-height: 1rem;
 }
 
+.prodetail .prodetailTop .tocare .forward-share {
+  margin-top: 8px;
+}
+
+
 .prodetail .prodetailTop .tocare .nocare, .prodetail .prodetailTop .tocare .care {
   display: flex;
   align-items: center;
-  height: 100%;
+  /* height: 100%; */
+  margin-bottom: 0.16rem;
 }
 
 .prodetail .prodetailTop .tocare .icon-favorite, .prodetail .prodetailTop .tocare .icon-no-favorite {

+ 6 - 0
src/web/staticres/big-member/css/unit_portrayal.css

@@ -72,6 +72,12 @@
     font-size: .24rem;
     line-height: .36rem;
 }
+.u-header .forward-com{
+  padding: 0 .72rem .24rem;
+  font-size: .24rem;
+  color: #5F5E64;
+  background-position: .32rem 0.02rem ;
+}
 .buyer-info{
     position: relative;
     display: flex;

+ 12 - 1
src/web/staticres/big-member/js/unit_portrayal.js

@@ -4,6 +4,7 @@ var vNode = {
     components: {
       hisproComponent: hisproComponent,
       buyerExample: buyerExample,
+      forwardshare: vmForward
     },
     data() {
         // 修改柱状条颜色为渐变色
@@ -141,7 +142,8 @@ var vNode = {
             idx:[],
             list:[],
             seclects:[],
-            isShowMoreBtn:false
+            isShowMoreBtn:false,
+            unitParams: {}
         }
     },
     computed: {
@@ -255,11 +257,20 @@ var vNode = {
           sessionStorage.removeItem('buyer_high_set')
           sessionStorage.removeItem('buyer_high_name')
         }
+        this.getShareParams()
     },
     beforeDestroy() {
       window.removeEventListener("resize", this.init,20);
     },
     methods: {
+      getShareParams () {
+        this.unitParams = {
+          type: '5',
+          buyer: decodeURIComponent(utils.getParam('entName')),
+          area: this.buyer.area,
+          referer: location.href
+        }
+      },
         onUnitScroll: utils.debounce(function() {
           if (!this.getfreeBuyerOpen) return
           var scrollTop = this.$refs.container.scrollTop

+ 7 - 1
src/web/staticres/big-member/weixin/css/ent_portrait.css

@@ -33,7 +33,7 @@
 
 /* 企业情报详情 */
 .ent-header {
-    min-height: 1.08rem;
+    /* min-height: 1.08rem; */
     margin-bottom: .2rem;
     padding: .28rem .36rem;
     background-color: #fff;
@@ -46,6 +46,12 @@
     color: #171826;
     word-break: break-all;
 }
+#ent-portrait .forward-com{
+  width: 24px;
+  height: 24px;
+  background-size: 24px 24px;
+  background-position-y: 0px;
+}
 .ent-tabs-container {
     flex: 1;
 }

+ 9 - 0
src/web/staticres/common-module/big-member/css/client_portrayal.css

@@ -17,6 +17,15 @@
 .more-action .j-icon{
   margin-right: .08rem;
 }
+.cor-item-right .forward-com{
+  display: flex;
+  align-items: center;
+  padding-left: .6rem;
+  margin: .24rem .32rem .24rem 0;
+  height: .48rem;
+  font-size: .26rem;
+  background-size: .48rem .48rem;
+}
 .company{
     display: flex;
     align-items: center;

+ 12 - 1
src/web/staticres/common-module/big-member/js/client_portrayal.js

@@ -6,6 +6,7 @@ var vNode = {
   components: {
     hisproComponent: hisproComponent,
     buyerExample: buyerExample,
+    forwardshare: vmForward
   },
   data() {
       // 修改柱状条颜色为渐变色
@@ -149,7 +150,8 @@ var vNode = {
           powerInfo: {
             isEntService: false
           },
-          list:[]
+          list:[],
+          clientParams: {}
       }
   },
   computed: {
@@ -267,11 +269,20 @@ var vNode = {
         sessionStorage.removeItem('buyer_high_set')
         sessionStorage.removeItem('buyer_high_name')
       }
+      this.getShareParams()
   },
   beforeDestroy() {
     window.removeEventListener("resize", this.init,20);
   },
   methods: {
+      getShareParams () {
+        this.clientParams = {
+          type: '5',
+          buyer: decodeURIComponent(utils.getParam('entName')),
+          area: this.buyer.area,
+          referer: location.href
+        }
+      },
       getPowerInfo: function () {
         var _this = this
         $.ajax({

+ 19 - 0
src/web/staticres/common-module/big-member/js/page_client_follow_detail.js

@@ -77,6 +77,9 @@ var vKeepEntComponent = new Vue({
 var vNode = {
     delimiters: ['${', '}'],
     el: '#v-pro',
+    components: {
+      forwardshare: vmForward
+    },
     data: {
         from: '',
         powerInfo: {
@@ -110,6 +113,7 @@ var vNode = {
         isRequestIng:false,
         isExportDialogShow: false,
         cid: '', // 取消认领id
+<<<<<<< HEAD
         cbInfo: {
           isShowRefer: false,
           canBiaoInfo: {
@@ -162,6 +166,9 @@ var vNode = {
           status: 0
         },
         rownum: 1
+=======
+        proParams: {}
+>>>>>>> feature/v4.8.17
     },
     computed: {
         bmdetail: function () {
@@ -211,7 +218,11 @@ var vNode = {
         this.getBidContent()
         this.getHaveActionHistory()
     },
+    mounted () {
+      this.getShareParams()
+    },
     methods: {
+<<<<<<< HEAD
           doClosePopover () {
             this.showAccEntList = false
           },
@@ -664,6 +675,14 @@ var vNode = {
         // 关闭投标项目阶段弹窗
         BidProjectPopupClose: function () {
           this.bidProject = false
+=======
+        getShareParams () {
+          this.proParams = {
+            type: '2',
+            id: this.sid,
+            referer: location.href
+          }
+>>>>>>> feature/v4.8.17
         },
         goAnalysis: function () {
             sessionStorage.removeItem('big-analysis_filter')

+ 12 - 3
src/web/staticres/common-module/collection/js/ent_portrait.js

@@ -3,7 +3,8 @@ var vNode = {
   el: '#ent-portrait',
   components: {
     vipComponent: vipComponent,
-    hisproComponent: hisproComponent
+    hisproComponent: hisproComponent,
+    forwardshare: vmForward
   },
   data () {
     // 修改柱状条颜色为渐变色
@@ -137,7 +138,8 @@ var vNode = {
       colList:[],
       isSC:0, //0未收藏 1收藏
       idx:[],
-      list:[]
+      list:[],
+      entParams: {}
     }
   },
   created: function () {
@@ -176,7 +178,7 @@ var vNode = {
         $('#ent-portrait').scrollTop(_this.scrollTop)
       }, 0)
     }
-
+    this.getShareParams()
     window.addEventListener('resize', function () {
       _this.getStickyTop()
     })
@@ -277,6 +279,13 @@ var vNode = {
     }
   },
   methods: {
+    getShareParams () {
+      this.entParams = {
+        type: '4',
+        entId: this.entInfo.id,
+        referer: location.href
+      }
+    },
     // 监听画像页面滚动
     onEntScroll: utils.debounce(function(){
       if (!this.freeWinnerOpen) return // 没有开通超级订阅广告位banner return

+ 22 - 0
src/web/staticres/common-module/forward-share/css/forward.css

@@ -0,0 +1,22 @@
+.forward-com{
+  padding-left: 20px;
+  background: url('../image/icon-forward.png') no-repeat;
+  background-size: 16px 16px;
+  background-position-y: 2px;
+  font-size: 13px;
+  line-height: 20px;
+  color: #9B9CA3;
+}
+.forward-com iframe {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border: none;
+  z-index: 10;
+}
+
+.forward-com iframe .van-overflow-hidden {
+  background: transparent!important;
+}

二进制
src/web/staticres/common-module/forward-share/image/icon-forward.png


+ 50 - 0
src/web/staticres/common-module/forward-share/js/forward.js

@@ -0,0 +1,50 @@
+var temp = `
+  <div @click='setShareEvent' class="forward-com">
+    <span>
+      <span v-if="showText">转给同事</span>
+    </span>
+    <iframe v-if='showIframe' id='shareIframe' target="_top" :src="url" frameborder="0"></iframe>
+  </div>
+`
+var vmForward = {
+  name: 'forward-share',
+  template: temp,
+  props: {
+    params: {
+      type: Object,
+      default: function (){
+        return {}
+      }
+    },
+    showText: {
+      type: Boolean,
+      default: true
+    }
+  },
+  data: function () {
+    return {
+      url: location.origin + '/page_social_mobile/switch/entlist',
+      // url: 'http://127.0.0.1:8080/switch/entlist',
+      showIframe: false
+    }
+  },
+  created () {
+    window.__shareWork = this.onCallback.bind(this)
+  },
+  methods: {
+    onCallback (data) {
+      if (data.type === 'close') {
+        this.showIframe = false
+      }
+    },
+    setShareEvent () {
+      console.info('xxx')
+      let params = this.params
+      sessionStorage.setItem('share-query--login-clear', JSON.stringify(params))
+      this.showIframe = false
+      this.$nextTick(() => {
+        this.showIframe = true
+      })
+    }
+  }
+}

+ 4 - 3
src/web/staticres/css/pc.css

@@ -1478,14 +1478,15 @@ form{
 	margin-left: 5px;
 	font-size: 14px;
 }
-.j-content .com-wxshare,.j-content .com-guanzhu{
+.j-content .com-wxshare,.j-content .com-guanzhu,.j-content .com-icon{
 	float: right;
 	font-size: 14px;
 	margin-left: 25px;
 	position: relative;
+  cursor: pointer;
 }
-.j-content .com-wxshare>img,.j-content .com-guanzhu>img{
-	vertical-align: middle;
+.j-content .com-wxshare>img,.j-content .com-guanzhu>img,.j-content .com-icon>img{
+	vertical-align: sub;
 	margin-right: 5px;
 }
 .j-content .com-wxshare>.scanqr{

+ 2 - 1
src/web/staticres/frontRouter/pc/mesgCenter/js/index-pc.js

@@ -61,7 +61,8 @@ var vm = new Vue({
       })
     },
     kfHref() {
-      location.href = this.shuntData.url + '&mini=1'
+      // 跳转到会话列表(不传userId右侧展示为缺省页)
+      location.href = '/page_pc_social/customer?mini=1'
     },
     kfClick() {
       $('.help-slide-zx.open-customer').trigger('click')

二进制
src/web/staticres/images/share-colleague.png


+ 5 - 0
src/web/staticres/js/login.js

@@ -151,6 +151,11 @@ function updateUserInfo (data) {
   $('#public-nav *[data-user-name]').text(data.name || '')
   $('#public-nav *[data-user-phone]').text(data.phone || '')
   $('#public-nav img[data-user-avatar]').attr('src', data.avatar || '/common-module/public/image/auto.png')
+  $('#public-nav img[data-user-avatar]').on('error', function () {
+    if ($(this).attr('src').indexOf('/common-module/public/image/auto.png') === -1) {
+      $(this).attr('src', '/common-module/public/image/auto.png')
+    }
+  })
 }
 // 切换登录/未登录展示元素
 function toggleLoginDom (type) {

+ 22 - 15
src/web/staticres/js/message.js

@@ -83,21 +83,28 @@ function Message() {
             success: function (r) {
                 if (r && r.status === 1) {
                     // 头部导航消息中心显示/隐藏
-                    $.ajax({
-                        type: 'POST',
-                        url: '/jyapi/message/messageCount',
-                        data: JSON.stringify({userType: 2}),
-                        contentType: 'application/json',
-                        success: function (s) {
-                            if (r.data.count + s.count > 0) {
-                                $('#tips').show()
-                                $('#tips').html(r.data.count + s.count > 99 ? '99+' : r.data.count + s.count)
-                                $('#noNum').html(r.data.count + s.count)
-                            } else {
-                                $('#tips').hide()
-                            }
-                        }
-                    })
+                    // $.ajax({
+                    //     type: 'POST',
+                    //     url: '/jyapi/message/messageCount',
+                    //     data: JSON.stringify({userType: 2}),
+                    //     contentType: 'application/json',
+                    //     success: function (s) {
+                    //         if (r.data.count + s.count > 0) {
+                    //             $('#tips').show()
+                    //             $('#tips').html(r.data.count + s.count > 99 ? '99+' : r.data.count + s.count)
+                    //             $('#noNum').html(r.data.count + s.count)
+                    //         } else {
+                    //             $('#tips').hide()
+                    //         }
+                    //     }
+                    // })
+                    if (r.data && r.data.count) {
+                        $('#tips').show()
+                        $('#tips').html(r.data.count > 99 ? '99+' : r.data.count)
+                        $('#noNum').html(r.data.count)
+                    } else {
+                        $('#tips').hide()
+                    }
                     _this.isOpened = r.data.open
                     _this.openedChange()
                 } else {

+ 2 - 2
src/web/staticres/pccss/pc-detail.css

@@ -240,7 +240,7 @@ a {
   margin-right: 4px;
 }
 .j-content .com-wxshare,
-.j-content .com-guanzhu {
+.j-content .com-guanzhu,.j-content .com-icon {
   margin-left: 18px !important;
 }
 
@@ -557,7 +557,7 @@ a{
   height: 20px;
   margin-right: 4px;
 }
-.j-content .com-wxshare, .j-content .com-guanzhu{
+.j-content .com-wxshare, .j-content .com-guanzhu,.j-content .com-icon{
   margin-left: 18px!important;
 }
 /* 自定义标签弹框 */

+ 9 - 0
src/web/staticres/public-pc/js/header-nav.js

@@ -344,3 +344,12 @@ function infoListCss(){
     'z-index': '99'
   })
 }
+
+// 修复顶部导航因为放大而不显示登录按钮的问题
+fixScaleScroll()
+function fixScaleScroll () {
+  $(window).on('scroll', function () {
+    var scrollLeft = $('html').scrollLeft()
+    $('#public-nav .iner').css({ transform: 'translateX(-' + scrollLeft + 'px)' })
+  })
+}

+ 3 - 0
src/web/templates/big-member/wx/page_client_follow_detail.html

@@ -10,6 +10,7 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+    <link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
 </head>
 <body>
@@ -39,6 +40,7 @@
                     <span class="down-report active" @click="downReport('app')">下载项目报告</span>
                     <span class="toVip" @click="openVip()" v-if="!this.$data.isPayedUser">开通</span>
                 </div>
+                <forwardshare :params="proParams"></forwardshare>
                 <!-- 微信端没有中标预测 -->
                 <div class="forecast" @click="goAiAdd()"
                     v-show="false"
@@ -369,6 +371,7 @@
 <script>
     var localEmail =  {{.T.email}} || sessionStorage.getItem('reportEmail') || ''
 </script>
+<script src='{{Msg "seo" "cdn"}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/big-member/js/page_client_follow_detail.js?v={{Msg "seo" "version"}}'></script>
 </body>
 </html>

+ 3 - 0
src/web/templates/big-member/wx/page_client_portrayal.html

@@ -13,6 +13,7 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css />
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/mainSearch/css/j-icons.css?v={{Msg "seo" "version"}}'/>
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/collection/css/index_for_tmp_client.css?v={{Msg "seo" "version"}}'/>
+    <link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/big-member/css/client_portrayal.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页面的css资源-->
     <style>
@@ -207,6 +208,7 @@
                     <div class="tooltip-item">${claim?'已认领':'认领'}</div>
                 </div>
             </span>
+            <forwardshare :params="clientParams"></forwardshare>
           </div>
         </div>
         <!-- 免费用户采购单位全景分析提示 -->
@@ -609,6 +611,7 @@
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/history-project-client.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/keep-tags/keep-tags-template.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/keep-tags/keep-ent-tags-template.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/big-member/js/client_portrayal.js?v={{Msg "seo" "version"}}'></script>
 <script>
   // 收藏组件

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

@@ -71,7 +71,7 @@
               var hasQueryParams = goHref.lastIndexOf('?') !== -1
               goHref += ((hasQueryParams ? '&' : '?') + 'auto=1')
             }
-            location.href = goHref
+            location.replace(goHref)
             return
           }
         }

+ 22 - 0
src/web/templates/big-member/wx/page_pro_follow_detail.html

@@ -16,6 +16,7 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+    <link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
     <link rel="stylesheet"
           href='{{Msg "seo" "cdn"}}/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页面的css资源-->
@@ -48,6 +49,7 @@
                     <span class="down-report active" @click="downReport('app')">下载项目报告</span>
                     <span class="toVip" @click="openVip()" v-if="!this.$data.isPayedUser">开通</span>
                 </div>
+                <forwardshare :params="proParams"></forwardshare>
                 <div class="forecast" @click="goAiAdd()" v-if="aiFloatShow">
                     <span class="j-icon icon-face"></span>
                     <span class="for_text">中标预测</span>
@@ -377,6 +379,7 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
 {{include "/big-member/wx/commonjs.html"}}
+<script src='{{Msg "seo" "cdn"}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <script src='/common-module/keep-tags/keep-ent-tags-template.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/js/common.js?v={{Msg "seo" "version"}}'></script>
 
@@ -459,6 +462,9 @@
     var vNode = {
         delimiters: ['${', '}'],
         el: '#v-pro',
+        components: {
+          forwardshare: vmForward
+        },
         data: {
             powerInfo: {
                 entIsNew: false,
@@ -491,6 +497,7 @@
             isRequestIng:false,
             isExportDialogShow: false,
             cid: '', // 取消认领id
+<<<<<<< HEAD
             cbInfo: {
               isShowRefer: false,
               canBiaoInfo: {
@@ -543,6 +550,9 @@
               status: 0
             },
             rownum: 1
+=======
+            proParams: {}
+>>>>>>> feature/v4.8.17
         },
         created() {
             this.isOpening()
@@ -569,6 +579,9 @@
             this.getOptionsInfo()
             this.getHaveActionHistory()
         },
+        mounted () {
+          this.getShareParams()
+        },
         computed: {
             showRenLing: function () {
                 return !this.bmdetail
@@ -609,6 +622,7 @@
             }
         },
         methods: {
+<<<<<<< HEAD
           doClosePopover () {
             this.showAccEntList = false
           },
@@ -1063,6 +1077,14 @@
             // 关闭投标项目阶段弹窗
             BidProjectPopupClose: function () {
               this.bidProject = false
+=======
+            getShareParams () {
+              this.proParams = {
+                type: '2',
+                id: this.sid,
+                referer: location.href
+              }
+>>>>>>> feature/v4.8.17
             },
             goAnalysis: function () {
                 sessionStorage.removeItem('big-analysis_filter')

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

@@ -35,6 +35,7 @@
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/unit_portrayal.css?v={{Msg "seo" "version"}}' />
   <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/mainSearch/css/j-icons.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
   <style>
         .skeleton{
             height: 100%;
@@ -402,6 +403,7 @@
               </div>
               <p class="region">所在地:${statistics.province || '--'} ${statistics.city}</p>
               <p class="buyer-type">采购单位类型:${statistics.buyerClass || '--'}</p>
+              <forwardshare :params="unitParams"></forwardshare>
           </div>
           <!-- 留完资的免费用户 已体验和未体验的展示去开通 -->
           <div v-if="getfreeBuyerOpen">
@@ -810,6 +812,7 @@
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/buyer-example.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/history-project.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/big-member/js/unit_portrayal.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/keep-tags/keep-tags-template.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/keep-tags/keep-ent-tags-template.js?v={{Msg "seo" "version"}}'></script>

+ 64 - 0
src/web/templates/common/shareboxDialog.html

@@ -0,0 +1,64 @@
+<div id="shareboxDialog" v-if="showNewuserDialog">
+  <iframe :src="url" marginwidth="0" marginheight="0" frameborder="0" allowtransparency="allowtransparency"
+    class="iframe"></iframe>
+</div>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.7.14/vue.min.js></script>
+<script>
+  var sharebox_Dialog = new Vue({
+    el: "#shareboxDialog",
+    delimiters: ["@@", "@@"],
+    // template: temp,
+    data: function () {
+      return {
+        url: location.origin + '/page_pc_social/shareBox?iframe=shareBox',
+        // url:'http://localhost:8080/shareBox?iframe=shareBox',
+        showNewuserDialog: false
+
+      };
+    },
+    computed: {
+    },
+    watch: {
+    },
+    created: function () {
+      this.init()
+    },
+    mounted: function () {
+    },
+    beforeDestroy: function () {
+
+    },
+    methods: {
+      sendData (val) {
+      window.$shareBox.shareData = val
+      },
+      init () {
+        const this_ = this;
+        window.$shareBox = {};
+        window.$shareBox.open = function () {
+          this_.showNewuserDialog = true
+        }
+        window.$shareBox.close = function () {
+          this_.showNewuserDialog = false
+        }
+      }
+    }
+  });
+</script>
+<style>
+  #shareboxDialog {
+    position: fixed;
+    left: 0;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 9999;
+    background-color: transparent;
+  }
+
+  #shareboxDialog .iframe {
+    width: 100%;
+    height: 100%;
+    background-color: transparent;
+  }
+</style>

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

@@ -21,6 +21,7 @@
         <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
         <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/buy_commit.css?v={{Msg "seo" "version"}}'>
         <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/vant-reset.css?v={{Msg "seo" "version"}}' />
+        <link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
         <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/ent_portrait.css?v={{Msg "seo" "version"}}' />
         <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/mainSearch/css/j-icons.css?v={{Msg "seo" "version"}}' />
 </head>
@@ -226,9 +227,11 @@
                 class="j-icon"
                 :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
                 @click="changeFollowState"
+                style="margin-right: .32rem;"
                 v-if="entInfo.followSearchFinish && entInfo.entExist"
             ></span>
             <van-loading v-if="!entInfo.followSearchFinish" size="24px"></van-loading>
+            <forwardshare :params="entParams" :show-text="false"></forwardshare>
         </div>
         <van-tabs
             class="ent-tabs-container"
@@ -656,6 +659,7 @@
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/echarts_option.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/chart_options.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/ent_portrait.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/keep-tags/keep-tags-template.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/keep-tags/keep-ent-tags-template.js?v={{Msg "seo" "version"}}'></script>

+ 162 - 0
src/web/templates/pc/biddetail_rec.html

@@ -135,6 +135,8 @@
 </head>
 <body style="height: 100%">
 {{include "/common/pchead.html"}}
+<!-- 分享弹框 -->
+{{include "/common/shareboxDialog.html"}}
 <script type="text/javascript">
   var _loop = false;
   var refer = document.referrer;
@@ -371,6 +373,7 @@
                     var followProjectId = ""
                     var doReq = false
 
+<<<<<<< HEAD
                     $.post("/bigmember/follow/project/check",{sid:{{.T.obj._id}}},function(res){
                       if(res.data&&res.data.showFollow){
                         if( res.data.flag ){
@@ -531,6 +534,144 @@
                       }
                     }
                   }
+=======
+						$.post("/bigmember/follow/project/check",{sid:{{.T.obj._id}}},function(res){
+							if(res.data&&res.data.showFollow){
+								if( res.data.flag ){
+									//已关注
+									$("#followedProject").css("display","")
+								}else {
+									//未关注
+									$("#unfollowedProject").css("display","")
+								}
+								followProjectId= res.data.fig
+								//取消关注
+								$("#followedProject").on("click",cancelFollow)
+								//关注
+								$("#unfollowedProject").on("click",addFollow)
+							} else {
+								$('.bid_dev').hide()
+							}
+						});
+						function cancelFollow() {
+							if (followProjectId ===""||doReq){
+								return
+							}
+							doReq = true
+							$.post("/bigmember/follow/project/cancel",{fid:followProjectId},function(r){
+								if (r.data === "success"){
+									followProjectId= ""
+									$("#followedProject").css("display","none")
+									$("#unfollowedProject").css("display","")
+								}
+								doReq =	false
+							});
+						}
+						function addFollow() {
+							if (doReq){
+								return
+							}
+							doReq = true
+							$.post("/bigmember/follow/project/add",{sid:{{.T.obj._id}}},function(r){
+								if(r.error_code===0&&r.data!==""){
+									followProjectId = r.data
+									$("#unfollowedProject").css("display","none")
+									$("#followedProject").css("display","")
+								} else {
+									EasyAlert.show(r.error_msg, { 'max-width': 'unset' }, 1500);
+								}
+								doReq =	false
+							});
+						}
+					})
+				</script>
+				<span class="com-wxshare">
+				<img class="icon-title-img" src="{{Msg "seo" "cdn"}}/images/new-weixin.png">微信分享
+				<div class="scanqr">
+					<span>微信扫一扫</span>
+					<img class="img" src="/biddetail/normal/qr/{{.T.obj._id}}" alt="微信分享">
+				</div>
+      </span>
+      <span class="com-icon" id="share-colleague">
+        <img class="icon-title-img" src="{{Msg "seo" "cdn"}}/images/share-colleague.png">转给同事
+      </span>
+			</div>
+			<div class="sub-info-container">
+				<div class="personal-tags" style="display: none;">
+					<div class="p-l-label">个人标签:</div>
+					<div class="p-l-content"></div>
+				</div>
+			</div>
+			<div class="cutline"></div>
+<!--			<div class="com-prebuilt mask-zz hidden" style="position:relative;filter: blur(4px)">-->
+			<div class="com-prebuilt hidden" style="position:relative;">
+				<div class="mask-zz hidden" style="position:absolute; top:0;width: 900px;padding:0;height: 408px;background-color:white;z-index: 1;">
+					<img style="width: 100%;height: 100%" src="/images/pc/pc_mh.png">
+					<div class="mask-zz" style="position:absolute; left: 50%; top: 50%; margin-top: -110px;margin-left: -250px;width: 500px;height: 220px;background-color: white;z-index: 100;border-radius: 10px">
+						<div style="position: relative">
+							<img style="width: 100%;height: 100px;" src='{{Msg "seo" "cdn"}}/images/pc/pc_zzt.png?v={{Msg "seo" "version"}}'>
+							<div id="tip-title" style="position: absolute;top: 50%;left: 50%; margin-top: -13px;transform: translateX(-50%);height: 26px;color: antiquewhite;font-size: 18px;">拟建项目抢先获知</div>
+						</div>
+						<div class="tip-box">
+							<div class="tip-text" style="margin-top: 12px">提前获取正在审批中的新项目,比招标信息更超前!</div>
+							<div class="tip-text">助您提前了解项目信息,把握重要商机!</div>
+							<button class="detail-nj-btn" style="background: #2CB7CA;color: white;border:none;width: 132px;height: 36px;border-radius: 6px;margin-bottom: 20px;margin-top: 24px">免费体验</button>
+						</div>
+					</div>
+				</div>
+				<div class="mask-zzz hidden" style="position:absolute; top:0;width: 900px;padding:0;height: 408px;background-color:white;z-index: 1;">
+					<img style="width: 100%;height: 100%" src="/images/pc/pc_mh.png">
+					<div class="mask-zzz" style="position:absolute; left: 50%; top: 50%; transform: translate3d(-50%, -50%, 0);width: 500px;background-color: white;z-index: 100;border-radius: 10px">
+						<div style="position: relative">
+							<img style="width: 100%;height: 35%" src='{{Msg "seo" "cdn"}}/images/pc/pc_zzt.png?v={{Msg "seo" "version"}}'>
+							<div style="position: absolute;top: 50%;left: 50%; margin-top: -13px;margin-left: -90px;width: 180px;height: 26px;color: antiquewhite;font-size: 16px;">想中标?提前介入很关键!</div>
+						</div>
+						<div class="tip-box">
+							<div class="tip-text">采购意向项目全公开,抢先获知采购项目需求,</div>
+							<div class="tip-text">提前主动介入,中标几率更高!</div>
+							<button class="detail-nj-btn" style="background: #2CB7CA;color: white;border:none;width: 132px;height: 36px;border-radius: 6px;margin-bottom: 12px;margin-top: 10px">免费体验</button>
+						</div>
+					</div>
+				</div>
+				<div class="mask-zzz hidden" style="position:absolute; top:0;width: 900px;padding:0;height: 408px;background-color:white;z-index: 1;">
+					<img style="width: 100%;height: 100%" src="/images/pc/pc_mh.png">
+					<div class="mask-zzz" style="position:absolute; left: 50%; top: 50%; transform: translate3d(-50%, -50%, 0);width: 500px;background-color: white;z-index: 100;border-radius: 10px">
+						<div style="position: relative">
+							<img style="width: 100%;height: 35%" src='{{Msg "seo" "cdn"}}/images/pc/pc_zzt.png?v={{Msg "seo" "version"}}'>
+							<div style="position: absolute;top: 50%;left: 50%; margin-top: -13px;margin-left: -90px;width: 180px;height: 26px;color: antiquewhite;font-size: 16px;">免费查看更多公告</div>
+						</div>
+						<div class="tip-box">
+							<div class="tip-text">请完善个人信息,获取更多免费查看公告权限</div>
+							<button class="detail-nj-btn  jyarticle_see3" style="background: #2CB7CA;color: white;border:none;width: 132px;height: 36px;border-radius: 6px;margin-bottom: 12px;margin-top: 10px">立即解锁</button>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="lead-btn-nj" style="color:#2cb7ca;margin:15px 0;display:none;"><div class="adv_tosieve"></div><div class="join" onclick="adv_statistics(this)"><a style="color:#fff;text-decoration:none" class="adv_tosieve-btn"></a></div></div>
+			{{if .T.obj.detail}}
+			<div class="recoveryfat" style="display:none;">
+				<div class="recoveryhead">
+					<div class="tab2 active" onclick="jumpTab('2')">公告摘要</div>
+					<div class="tab1" onclick="jumpTab('1')">公告正文</div>
+					<div class="tab3">
+            {{if .T.obj.site}}
+            {{if eq .T.obj.site "剑鱼信息发布平台"}}
+            {{if .T.obj.recommended_service}}
+            {{if eq .T.obj.recommended_service 1}}
+            <div class="pubinfo">
+              <span>该信息由用户发布,急寻供应商</span>
+              <span class="btnn">点击报名</span>
+              <script>
+                $(".btnn").click(function(){
+                  //点击报名事件处理
+                  // vm.showForm = true
+                  var infoid = window.location.pathname.split("/")[3].split(".html")[0]
+                  vm.isNeedSubmit('peugeot_supplier_regist', function () {
+                    vm.showSuccess = true
+                  },"",infoid)
+                  vm.dialogTitleTop='供应商报名'
+                  vm.dialogTitle = '请完善您的个人信息,抢先对接采购单位'
+>>>>>>> feature/v4.8.17
                 })
               }
               // 初始化参标的一些操作显示项
@@ -1737,6 +1878,7 @@ var ucbs_source="pc_rec",ucbsId="{{.T.obj.ucbsId}}";
           }
         })
       }
+<<<<<<< HEAD
     </script>
     <!-- 多条广告如下脚本只需引入一次 -->
     <script type="text/javascript" src="//cpro.baidustatic.com/cpro/ui/cm.js" async="async" defer="defer" >
@@ -1779,6 +1921,26 @@ var ucbs_source="pc_rec",ucbsId="{{.T.obj.ucbsId}}";
     <!--百度统计start-->
     {{include "/common/baiducc.html"}}
     <!--百度统计end-->
+=======
+      initChat()
+      $('#share-colleague').on('click', function(){
+        sharebox_Dialog.showNewuserDialog = true
+      })
+      // 分享弹框 数据注入
+      const pagedata = {{.T.obj}} ;
+      const stype = extractString(pagedata.urlpath)
+      sharebox_Dialog.sendData({pageData:pagedata, title:pagedata.title, desc:'标讯信息', link:window.location.href, type:'biddetail_rec',code:1,id:pagedata._id,stype:stype});
+      function extractString(str) {
+        const regex = /\/article\/(.*?)\//;
+        const match = str.match(regex);
+        return match ? match[1] : null;
+      }
+    })
+  </script>
+  <!--百度统计start-->
+{{include "/common/baiducc.html"}}
+<!--百度统计end-->
+>>>>>>> feature/v4.8.17
 </body>
 </html>
 

+ 14 - 1
src/web/templates/weixin/dataExport/dataExport.html

@@ -735,7 +735,20 @@
 				localStorage.removeItem("index");
 			}
 	        if(filter["selectType"]!=null&&filter["selectType"]!=""){
-				localStorage.export_selectType = filter["selectType"];
+			        	var selectTypes = [];
+                var selectTypeList = filter["selectType"].split(",");
+                for(i in selectTypeList){
+                  if(selectTypeList[i]=="title"){
+                    selectTypes.push("标题");
+                  }else if(selectTypeList[i]=="detail"){
+                    selectTypes.push("正文");
+                  }else if(selectTypeList[i]=="filetext"){
+                    selectTypes.push("附件");
+                  }else if(selectTypeList[i]=="purchasing"){
+                    selectTypes.push("项目名称/标的物");
+                  }
+                }
+                localStorage.export_selectType = selectTypes.join(",");
 	        }else{
 				localStorage.export_selectType = "";
 			}

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

@@ -7,6 +7,7 @@
 <link href="{{Msg "seo" "cdn"}}/css/bootstrap.min.css" rel="stylesheet">
 <link href="{{Msg "seo" "cdn"}}/wxswordfish/style.css?v={{Msg "seo" "version"}}" rel="stylesheet">
 <link rel="stylesheet" href="//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css">
+<link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
 <link href='{{Msg "seo" "cdn"}}/common-module/nps-common/css/nps.css?v={{Msg "seo" "version"}}' rel="stylesheet">
 <link href='{{Msg "seo" "cdn"}}/common-module/mainSearch/css/third-party-verify-mobile.css?v={{Msg "seo" "version"}}' rel="stylesheet">
 <script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
@@ -17,6 +18,7 @@
 <script src="{{Msg "seo" "cdn"}}/js/bootstrap.min.js"></script>
 <script src="{{Msg "seo" "cdn"}}/js/common.js?v={{Msg "seo" "version"}}"></script>
 <script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <style type="text/css">
 body{
 	margin:0;
@@ -96,6 +98,7 @@ pre {
 	color: #ffba00;
 	position: relative;
 	top: 2px;
+  margin-right: .32rem;
 }
 .toolbar .follow i{
 	top: 2px;
@@ -1017,13 +1020,16 @@ body .loading_ p span {
 						}
 					}
 			</script>
-            <div class="right-container">
-                <div class="collec_star" data-cl-event="c_wx_collect_buttonclick">
-                    <span class="icon weishoucang"></span>
-                    <span class="icon-text">收藏</span>
-                </div>
-		        {{if .T.obj.hasSession}}{{if or .T.obj.projectname .T.obj.projectcode}}<div data-cl-event="c_wx_project_follow_buttonclick" class="follow" style="top:0px !important;display: none">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</div>{{end}}{{else}}<!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
-            </div>
+      <div class="right-container">
+          <div class="collec_star" data-cl-event="c_wx_collect_buttonclick">
+              <span class="icon weishoucang"></span>
+              <span class="icon-text">收藏</span>
+          </div>
+      {{if .T.obj.hasSession}}{{if or .T.obj.projectname .T.obj.projectcode}}<div data-cl-event="c_wx_project_follow_buttonclick" class="follow" style="top:0px !important;display: none">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</div>{{end}}{{else}}<!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
+      <div class="forward-share">
+        <forwardshare :params="params"></forwardshare>
+      </div>
+    </div>
 		</div>
     <div class="refer_stand">
       <div class="r-s-left">
@@ -3368,6 +3374,34 @@ function fromwhere(text){
   }
   return ad
 }
+
+// 转给同事逻辑
+var vShareCom = new Vue({
+  el: '.forward-share',
+  components: {
+    forwardshare: vmForward
+  },
+  data: {
+    params: {}
+  },
+  mounted () {
+    this.params = {
+      type: '1',
+      id: id,
+      stype: this.extractString(location.href),
+      referer: location.href,
+    }
+  },
+  methods: {
+    extractString(str) {
+      const regex = /\/article\/(.*?)\//;
+      const match = str.match(regex);
+      return match ? match[1] : null;
+    }
+  }
+})
+
+
 var vKeepComponent = new Vue({
     delimiters: ['${', '}'],
     el: '#jyKeepComponent',