Browse Source

修改关注模块以及工单模块

zhuliu 1 year ago
parent
commit
21edebf6e5
83 changed files with 2144 additions and 333 deletions
  1. 4 0
      api/product.js
  2. 9 0
      api/search.js
  3. 9 0
      api/work.js
  4. 13 7
      app.json
  5. 7 0
      app.wxss
  6. 0 1
      myComponents/card/card.js
  7. 2 2
      myComponents/formItem/formItem.wxml
  8. 0 1
      myComponents/formItem/formItem.wxss
  9. 31 1
      myComponents/myInput/myInput.js
  10. 61 16
      myComponents/product/product.js
  11. 30 40
      myComponents/product/product.wxml
  12. 6 6
      myComponents/scrollView/scrollView.wxml
  13. 1 1
      pages/about/about.js
  14. 1 1
      pages/about/about.wxml
  15. 1 1
      pages/about/connection.wxml
  16. 1 1
      pages/about/introduce.wxml
  17. 86 8
      pages/collectPatent/collectPatent.js
  18. 1 1
      pages/collectPatent/collectPatent.wxml
  19. 62 0
      pages/component/followPopup/followPopup.js
  20. 8 0
      pages/component/followPopup/followPopup.json
  21. 44 0
      pages/component/followPopup/followPopup.wxml
  22. 26 0
      pages/component/followPopup/followPopup.wxss
  23. 14 9
      pages/form/addProduct/addProduct.js
  24. 1 1
      pages/form/addProduct/addProduct.wxml
  25. 44 13
      pages/form/appeal/appeal.js
  26. 3 4
      pages/form/appeal/appeal.wxml
  27. 2 2
      pages/form/application/application.js
  28. 4 4
      pages/form/application/application.wxml
  29. 66 19
      pages/form/rightsProtection/rightsProtection.js
  30. 28 7
      pages/form/rightsProtection/rightsProtection.wxml
  31. 11 3
      pages/form/riskAssessment/riskAssessment.js
  32. 1 1
      pages/form/riskAssessment/riskAssessment.wxml
  33. 45 0
      pages/hotProduct/hotProduct.js
  34. 2 1
      pages/hotProduct/hotProduct.json
  35. 11 10
      pages/hotProduct/hotProduct.wxml
  36. 13 0
      pages/hotProduct/hotProduct.wxss
  37. 3 3
      pages/index/index.wxml
  38. 45 14
      pages/mine/mine.js
  39. 6 6
      pages/mine/mine.wxml
  40. 6 1
      pages/mine/mine.wxss
  41. 44 1
      pages/monitor/monitor.js
  42. 2 1
      pages/monitor/monitor.json
  43. 2 2
      pages/monitor/monitor.wxml
  44. 4 0
      pages/monitor/monitoringRecord.js
  45. 78 13
      pages/myFollow/myFollow.js
  46. 4 1
      pages/myFollow/myFollow.json
  47. 7 4
      pages/myFollow/myFollow.wxml
  48. 66 11
      pages/myWork/myWork.js
  49. 3 1
      pages/myWork/myWork.json
  50. 55 18
      pages/myWork/myWork.wxml
  51. 50 0
      pages/myWork/myWork.wxss
  52. 233 0
      pages/myWork/workDetail.js
  53. 7 0
      pages/myWork/workDetail.json
  54. 169 0
      pages/myWork/workDetail.wxml
  55. 64 0
      pages/myWork/workDetail.wxss
  56. 69 2
      pages/patentDetails/patentDetails.js
  57. 2 1
      pages/patentDetails/patentDetails.json
  58. 16 15
      pages/patentDetails/patentDetails.wxml
  59. 10 0
      pages/patentDetails/patentDetails.wxss
  60. 2 2
      pages/personalInformation/personalInformation.wxss
  61. 101 0
      pages/productDetail/productDetail.js
  62. 5 0
      pages/productDetail/productDetail.json
  63. 30 0
      pages/productDetail/productDetail.wxml
  64. 22 0
      pages/productDetail/productDetail.wxss
  65. 44 0
      pages/riskAssessment/riskAssessment.js
  66. 2 1
      pages/riskAssessment/riskAssessment.json
  67. 6 6
      pages/riskAssessment/riskAssessment.wxml
  68. 2 2
      pages/searchRecords/searchRecords.wxml
  69. 130 41
      pages/searchResults/searchResults.js
  70. 4 3
      pages/searchResults/searchResults.json
  71. 25 14
      pages/searchResults/searchResults.wxml
  72. 17 0
      pages/searchResults/searchResults.wxss
  73. 15 1
      pages/selectedPatents/selectedPatents.js
  74. 1 1
      pages/selectedPatents/selectedPatents.wxml
  75. 72 0
      pages/webView/webView.js
  76. 3 0
      pages/webView/webView.json
  77. 6 0
      pages/webView/webView.wxml
  78. 5 0
      pages/webView/webView.wxss
  79. 34 2
      static/iconfont/iconfont.wxss
  80. 2 2
      utils/downLoad.js
  81. 21 1
      utils/pay.js
  82. 1 1
      utils/request.js
  83. 1 1
      utils/upload.js

+ 4 - 0
api/product.js

@@ -5,6 +5,10 @@ module.exports={
   queryHotProduct:(data)=>{
 		return request.post('/xiaoshi-weixinback/product/queryHotProduct',data)
   },
+  //查询爆款产品详情
+  queryHotProductDetail:(data)=>{
+		return request.get('/xiaoshi-weixinback/product/queryHotProductDetail',data)
+  },
   //添加或更新产品
   addOrUpdateProduct:(data)=>{
 		return request.post('/xiaoshi-weixinback/product/addOrUpdateProduct',data)

+ 9 - 0
api/search.js

@@ -1,6 +1,10 @@
 const request = require('../utils/request')
 
 module.exports={ 
+  //获取检索专利的范围
+	getDataRangeRecord:(data)=>{
+		return request.get('/xiaoshi-weixinback/patent/getDataRangeRecord',data)
+	},
   //根据关键词获取列表(图片用于排序)接口(有图)
 	getPatentVectorsByImage:(data,file)=>{
     return request.upload(file,data,'/xiaoshi-weixinback/patent/getPatentVectors')
@@ -16,5 +20,10 @@ module.exports={
   //根据专利号获取专利详情
 	selectPatentInfoByPatentNo:(data)=>{
 		return request.post('/xiaoshi-weixinback/patent/selectPatentInfoByPatentNo',data)
+  },
+  
+  //查询监控记录的相关专利
+	getPatentByRecord:(data)=>{
+		return request.post('/xiaoshi-weixinback/patent/getPatentByRecord',data)
 	},
  }

+ 9 - 0
api/work.js

@@ -5,6 +5,10 @@ module.exports={
 	queryTicket:(data)=>{
 		return request.post('/xiaoshi-weixinback/ticket/queryTicket',data)
   },
+   //查询工单详情
+   getTicketDetail:(data)=>{
+		return request.get('/xiaoshi-weixinback/ticket/getTicketDetail',data)
+  },
   //更新工单进度
   updateTicketProcess:(data)=>{
 		return request.post('/xiaoshi-weixinback/ticket/updateTicketProcess',data)
@@ -13,4 +17,9 @@ module.exports={
   addTicket:(data)=>{
 		return request.post('/xiaoshi-weixinback/ticket/addTicket',data)
   },
+
+  //查询工单进程
+  queryTicketFlows:(data)=>{
+    return request.get('/xiaoshi-weixinback/ticket/queryTicketFlows',data)
+  },
  }

+ 13 - 7
app.json

@@ -26,7 +26,10 @@
     "pages/monitor/monitoringRecord",
     "pages/about/about",
     "pages/about/introduce",
-    "pages/about/connection"
+    "pages/about/connection",
+    "pages/webView/webView",
+    "pages/productDetail/productDetail",
+    "pages/myWork/workDetail"
   ],
   "tabBar": {
     "list": [
@@ -56,7 +59,7 @@
     "navigationBarBackgroundColor": "#ffffff"
   },
   "usingComponents": {
-    "i-button": "/miniprogram_npm/@vant/weapp/button",
+    "van-button": "/miniprogram_npm/@vant/weapp/button",
     "myInput": "/myComponents/myInput/myInput",
     "van-notify": "/miniprogram_npm/@vant/weapp/notify/index",
     "wux-refresher": "/miniprogram_npm/wux-weapp/refresher/index",
@@ -87,9 +90,12 @@
       "apiUrl": "https://prod-api.yourdomain.com"
     }
   },
-  "permission": {  
-    "scope.userLocation": {  
-      "desc": "你的位置信息将用于小程序地图定位功能"  
-    }  
-  } 
+  "permission": {
+    "scope.userLocation": {
+      "desc": "你的位置信息将用于小程序地图定位功能"
+    },
+    "scope.copy": {
+      "desc": "用于复制文字"
+    }
+  }
 }

+ 7 - 0
app.wxss

@@ -65,4 +65,11 @@ button[type=primary]{
 }
 .link{
   color: #4695e5;
+}
+
+.ellipsis .wux-ellipsis__expanded{
+  color: red !important;
+}
+.ellipsis .wux-ellipsis__collapsed{
+  color: red !important;
 }

+ 0 - 1
myComponents/card/card.js

@@ -87,7 +87,6 @@ Component({
         }
       )  
       // this.data.popover = this.selectComponent('#popover')
-      console.log(this.data.popover)
       // ...  
     },  
     // 在组件实例被移除出页面节点树时执行  

+ 2 - 2
myComponents/formItem/formItem.wxml

@@ -1,13 +1,13 @@
 <!--myComponents/formItem/formItem.wxml-->
 <view class="{{customClass}} myFormItem" style="{{customStyle}}">
-	<view class="left" id="label" style="width: {{labelWidth?labelWidth:200}}rpx;text-align: {{labelPosition}};{{border?'':'border:none'}}">
+	<view class="left" id="label" style="min-width: {{labelWidth?labelWidth:200}}rpx;text-align: {{labelPosition}};{{border?'':'border:none'}}">
 		<view class="left_label">
       <view wx:if="{{required}}" class="required"></view>
       <slot name="label"></slot>
     </view>
     <text class="left_text {{required?'required':''}}">{{label}}</text>
 	</view>
-	<view class="right" style="{{border?'':'border:none'}}">
+	<view class="right" style="width:calc(100% - {{labelWidth?labelWidth:200}}rpx);{{border?'':'border:none'}}">
 		<slot></slot>
 	</view>
 </view>

+ 0 - 1
myComponents/formItem/formItem.wxss

@@ -17,7 +17,6 @@ page{
 	border: 1rpx solid var(--themeColor);
 	border-radius: 5rpx 0 0 5rpx;
 	padding: var(--padding);
-	width: 200rpx;
 	height:initial;
 	font-size: 25rpx;
 	/* display: flex;

+ 31 - 1
myComponents/myInput/myInput.js

@@ -26,6 +26,13 @@ Component({
     ownner:{
       type:Boolean,
       value:true
+    },
+    filePath:{
+      type:String,
+      value:'',
+      observer:function(val){
+        this.changePath(val)
+      }
     }
   },
   // 监听传入的变量,当传入的值发生变化时,触发方法
@@ -42,7 +49,7 @@ Component({
       {
         label:'按产品查',
         value:'key',
-        placeholder:'请输入产品相关关键词'
+        placeholder:'请输入产品相关关键词,多个可以用空格或者逗号隔开'
       },
       {
         label:'按公司查',
@@ -94,6 +101,20 @@ methods:{
       }
     )
   },
+  changePath(value){
+    if(!value){
+      return
+    }
+    this.setData(
+      {
+        fileList:[
+          {
+            url:value
+          }
+        ]
+      }
+    )
+  },
   clickInnerIcon(e){
     if(this.properties.showEdit){
       // this.data.show = !this.data.show
@@ -107,6 +128,13 @@ methods:{
     this.triggerEvent('clickInnerIcon',1)
   },
   buttonClick(e){
+    if(this.data.content.trim() == ''){
+      wx.showToast({
+        title: '检索内容不能为空',
+        icon:'none'
+      })
+      return false
+    }
     if(this.properties.ownner){
       var isLogin = api.isLogin()
       if(!isLogin){
@@ -133,6 +161,8 @@ methods:{
     }
     if(this.data.fileList && this.data.fileList.length>0){
       data.filePath = this.data.fileList[0].url
+    }else{
+      data.filePath = ''
     }
     this.triggerEvent('search',data)
   },

+ 61 - 16
myComponents/product/product.js

@@ -26,6 +26,10 @@ Component({
       type:Boolean,
       value:false
     },
+    isMonitor:{
+      type:Boolean,
+      value:false
+    },
     menu:{
       type:Array,
       value:[]
@@ -38,19 +42,21 @@ Component({
   data: {
     imgHttp:app.globalData.imghttp,
     concernType:{
-      '0':'myIconicon-test',//黑
+      '0':'myIcongroup43',//黑
       '1':'myIconanquanbangzhu',//白
-      '2':'myIcongroup43'//灰
+      '2':'myIconicon-test',//灰
+      '-1':'myIconguanzhu-yiguanzhu'//已关注
     },
-
     show:false,
     clickType:null,//1是关注,2是监控
+    index:null,
   },
 
   /**
    * 组件的方法列表
    */
   methods: {
+
     moreMenu: function (e) {
       
       var {index} = e.currentTarget.dataset
@@ -105,21 +111,33 @@ Component({
       }
       var index = e.currentTarget.dataset.index
       this.setData({
-        ['tableData['+ index + '].show'] : true,
+        // ['tableData['+ index + '].show'] : true,
+        index:index,
         clickType:1
       })
+      this.triggerEvent('showPopup')
     },
-    //关闭关注类型
-    cancel(e){
-      var index = e.currentTarget.dataset.index
+    closeDialog(){
       this.setData({
-        ['tableData['+ index + '].show'] : false,
+        index:null,
         clickType:null
       })
+
+      this.triggerEvent('hiddenPopup')
     },
+    //关闭关注类型
+    // cancel(e){
+    //   var index = e.currentTarget.dataset.index
+    //   this.setData({
+    //     ['tableData['+ index + '].show'] : false,
+    //     clickType:null
+    //   })
+    // },
     //关注或监控
     attention(e){
-      var {type,index} = e.currentTarget.dataset
+      // var {type,index} = e.currentTarget.dataset
+      var {type} = e.detail
+      var index = this.data.index
       var product = this.data.tableData[index]
       var params = {
         productId:product.id,
@@ -143,10 +161,30 @@ Component({
           }
           api.notify(obj)
           this.setData({
-            ['tableData['+ index + '].show'] : false,
+            // ['tableData['+ index + '].show'] : false,
             ['tableData['+ index + '].concernType'] : type,
           })
+          this.closeDialog()
+        }
+      })
+    },
+
+    //打开弹窗
+    cancel(e){
+      var key = api.isLogin()
+      if(!key){
+        return false
+      }
+      var index = e.currentTarget.dataset.index
+      this.setData(
+        {
+          index:index,
+          clickType:1
         }
+      )
+      this.triggerEvent('showPopup',
+      {
+        changeFollow:true
       })
     },
     //取消关注
@@ -157,15 +195,18 @@ Component({
       }
       wx.showModal({
         title: '提示',
-        content: '确认取消关注?',
+        content: '取消关注后会取消该产品的监控,确认取消关注?',
         complete: (res) => {
           if (res.cancel) {}
           if (res.confirm) {
-            var index = e.currentTarget.dataset.index
+            // var index = e.currentTarget.dataset.index
+            var index =this.data.index
+            console.log(index)
             var product = this.data.tableData[index]
             var params = {
               productId:product.id
             }
+            this.closeDialog()
             api.unFollow(params).then(res=>{
               if(res.code == 200){
                 var obj = {
@@ -178,7 +219,8 @@ Component({
                 }
                 api.notify(obj)
                 this.setData({
-                  ['tableData['+ index + '].concernType'] : null
+                  ['tableData['+ index + '].concernType'] : null,
+                  ['tableData['+ index + '].ifMonitor'] : false
                 })
               }
             })
@@ -209,12 +251,14 @@ Component({
             }
           }
         })
-        retrun 
+        return
       }
       this.setData({
-        ['tableData['+ index + '].show'] : true,
+        // ['tableData['+ index + '].show'] : true,
+        index:index,
         clickType:2
       })
+      this.triggerEvent('showPopup')
     },
     //监控产品接口
     addMonitoring(product,index,type){
@@ -231,7 +275,7 @@ Component({
         }
         api.notify(obj)
         this.setData({
-          ['tableData['+ index + '].show'] : false,
+          // ['tableData['+ index + '].show'] : false,
           ['tableData['+ index + '].ifMonitor'] : true,
         })
         if(type == 0 || type){
@@ -239,6 +283,7 @@ Component({
             ['tableData['+ index + '].concernType'] : type,
           })
         }
+        this.closeDialog()
       })
     },
     //取消监控产品接口

+ 30 - 40
myComponents/product/product.wxml

@@ -1,4 +1,5 @@
 <!--myComponents/product/product.wxml-->
+
 <view class="product_content">
   <view class="product_item" wx:for="{{tableData}}" wx:for-index="index" wx:key="index" data-item="{{item}}" bind:tap="checkMessage">
     <swiper class="swiper" autoplay="{{false}}" interval="{{3000}}"  duration="{{500}}" indicator-dots="{{false}}">  
@@ -21,11 +22,16 @@
       </view>
 
       <view class="icon">
-        <view wx:if="{{!isFollow && !item.ifMonitor}}" class="iconfont myIconmonitor" data-index="{{index}}" catch:tap="control"></view>
-        <view wx:elif="{{item.ifMonitor && !isFollow}}" class="iconfont myIcona-yijiankong2x" data-index="{{index}}" catch:tap="cancelControl"></view>
-
-        <view wx:if="{{item.concernType == 0 || item.concernType}}" class="icon1 iconfont {{concernType[item.concernType]}}" data-index="{{index}}" catch:tap="cancelFollow" ></view>
-        <view wx:else class="iconfont myIconguanzhu" data-index="{{index}}" catch:tap="open"></view>
+        <block wx:if="{{!isFollow}}">
+          <view wx:if="{{!item.ifMonitor}}" class="iconfont myIconmonitor" data-index="{{index}}" catch:tap="control"></view>
+          <view wx:elif="{{item.ifMonitor}}" class="iconfont myIcona-yijiankong2x" data-index="{{index}}" catch:tap="cancelControl"></view>
+        </block>
+        
+        <block wx:if="{{!isMonitor}}">
+          <view wx:if="{{item.concernType == 0 || item.concernType}}" class="icon1 iconfont {{concernType[item.concernType]}}" data-index="{{index}}" catch:tap="cancel" ></view>
+          <view wx:else class="iconfont myIconguanzhu" data-index="{{index}}" catch:tap="open"></view>
+        </block>
+        
 
         <myPopover2 wx:if="{{isFollow || menu.length>0}}" id="myPopover{{index}}" position="top" show="{{item.showMenu}}">
           <view slot="menu" class="menu">
@@ -34,44 +40,28 @@
           <view  class="iconfont myIconsangedian-type-1" data-index="{{index}}" catch:tap="moreMenu"></view>
         </myPopover2>
       </view>
-
-      <!-- <view wx:if="{{item.concernType == 0 || item.concernType}}" class="icon">
-        <view wx:if="{{!isFollow}}" class="iconfont myIconmonitor" data-index="{{index}}" catch:tap="control"></view>
-        <view  class="icon1 iconfont {{concernType[item.concernType]}}" data-index="{{index}}" catch:tap="cancelFollow"></view>
-        
-        <myPopover2 wx:if="{{isFollow}}" id="myPopover{{index}}" position="top" show="{{item.showMenu}}">
-          <view slot="menu" class="menu">
-            <view class="menu_item" wx:for="{{menu}}" wx:for-item="menu" wx:for-index="ind" data-item="{{menu}}" data-index="{{index}}" catch:tap="onClickA">{{menu.label}}</view>
-          </view>
-          <view  class="iconfont myIconsangedian-type-1" data-index="{{index}}" catch:tap="moreMenu"></view>
-        </myPopover2>
-      </view>
-      <view wx:else class="icon">
-        <view class="iconfont myIconmonitor" data-index="{{index}}" catch:tap="control"></view>
-        <view class="iconfont myIconguanzhu" data-index="{{index}}" catch:tap="open"></view>
-      </view> -->
     </view>
-    <block wx:if="{{item.show == true}}">
-    <view  class="product_operate" >
-      <view class="cancel" data-index="{{index}}" catch:tap="cancel">×</view>
-      <view class="grids"  bordered="{{ false }}">
-        <view class="grid" data-type="1" data-index="{{index}}" catch:tap="attention">
-          <view class="iconfont myIconanquanbangzhu operate_icon"></view>
-          <view class="operate_text">白名单</view>
-        </view>
-        <view class="line"></view>
-        <view class="grid" data-type="2" data-index="{{index}}" catch:tap="attention">
-          <view class="iconfont myIcongroup43 operate_icon"></view>
-          <view class="operate_text">灰名单</view>
-        </view>
-        <view class="line"></view>
-        <view class="grid" data-type="0" data-index="{{index}}" catch:tap="attention">
-          <view class="iconfont myIconicon-test operate_icon"></view>
-          <view class="operate_text">黑名单</view>
+    <!-- <block wx:if="{{item.show == true}}">
+      <view  class="product_operate" >
+        <view class="cancel" data-index="{{index}}" catch:tap="cancel">×</view>
+        <view class="grids"  bordered="{{ false }}">
+          <view class="grid" data-type="1" data-index="{{index}}" catch:tap="attention">
+            <view class="iconfont myIconanquanbangzhu operate_icon"></view>
+            <view class="operate_text">白名单</view>
+          </view>
+          <view class="line"></view>
+          <view class="grid" data-type="2" data-index="{{index}}" catch:tap="attention">
+            <view class="iconfont  myIconicon-test operate_icon"></view>
+            <view class="operate_text">灰名单</view>
+          </view>
+          <view class="line"></view>
+          <view class="grid" data-type="0" data-index="{{index}}" catch:tap="attention">
+            <view class="iconfont myIcongroup43 operate_icon"></view>
+            <view class="operate_text">黑名单</view>
+          </view>
         </view>
       </view>
-    </view>
-  </block>
+    </block> -->
   </view>
   <!-- <view class="foot" wx:if="{{total && tableData.length>0}}">
     <view wx:if="{{total>tableData.length}}" bind:tap="loadMore">加载更多</view>

+ 6 - 6
myComponents/scrollView/scrollView.wxml

@@ -10,10 +10,10 @@
       bindscrolltolower="loadMore"
      style="{{customStyle}}">
     <slot></slot>
-    
+    <view class="text" wx:if="{{hasMore && load}}">
+      <image class="img" src="/static/image/loading.gif" mode="aspectFit"/>
+      加载中...
+    </view>
+    <view class="text" wx:elif="{{(!hasMore && load) || show}}">没有更多了</view>
   </scroll-view>
-  <view class="text" wx:if="{{hasMore && load}}">
-    <image class="img" src="/static/image/loading.gif" mode="aspectFit"/>
-    加载中...
-  </view>
-  <view class="text" wx:elif="{{(!hasMore && load) || show}}">没有更多了</view>
+ 

+ 1 - 1
pages/about/about.js

@@ -6,7 +6,7 @@ Page({
    * 页面的初始数据
    */
   data: {
-    version:app.globalData.version,
+    version:app.globalData.version || '1.0.0',
     menu:[
       {
         type:1,

+ 1 - 1
pages/about/about.wxml

@@ -5,7 +5,7 @@
       <image class="img" src="/static/image/logo-3.png" mode="aspectFit"/>
     </view>
     <view class="title">跨境电商专利助手</view>
-    <view class="version">{{version}}</view>
+    <view class="version">版本号:{{version}}</view>
   </view>
   <view class="menu_list">
       <van-cell custom-class='vanCell' wx:for="{{menu}}" wx:key="index" title="{{item.label}}" is-link data-page="{{item.page}}" bind:click="clickMenu">

+ 1 - 1
pages/about/connection.wxml

@@ -9,7 +9,7 @@
       <view class="contact_information_item_icon">
         <image class="img_item" src="/static/image/email.png" alt="aspectFit"/>
       </view>
-      <view class="contact_information_item_text">xiaoshi@mail.com</view>
+      <view class="contact_information_item_text">xiaoshi@xsip.cn</view>
     </view>
     <view class="contact_information_item">
       <view class="contact_information_item_icon">

+ 1 - 1
pages/about/introduce.wxml

@@ -6,7 +6,7 @@
   <view class="title">跨境电商专利助手</view>
   <view class="content">
     <view class="content_item">小世电商专利助手小程序旨在为跨境电商提供一站式的知识产权专业服务。</view>
-    <view class="content_item">主要提供爆款产品专利、上架产品的专利侵权风险排查、产品下架意见分析、专利侵权行为投诉、协助维权、专利申请的相关服务。</view>
+    <view class="content_item">主要提供爆款产品专利风险、上架产品的专利侵权风险排查、产品下架意见分析、专利侵权行为投诉、协助维权、专利申请的相关服务。</view>
     <view class="content_item">以协助跨境电商的商家打好知识产权这把出海“保护伞”,避开知产雷区,为自己的品牌保驾护航,提高企业竞争力。</view>
   </view>
 </view>

+ 86 - 8
pages/collectPatent/collectPatent.js

@@ -18,18 +18,43 @@ Page({
     id:null,
     triggered:false,
     load:false,
-    hasMore:true
+    hasMore:true,
+    title:'我的收藏专利',
+    type:1,
   },
 
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
-    this.setData(
-      {
-        id:options.productId
-      }
-    )
+    if(options.type){
+      this.setData(
+        {
+          type:options.type
+        }
+      )
+    }
+    if(options.title){
+      this.setData(
+        {
+          title:options.title
+        }
+      )
+    }
+    if(options.id){
+      this.setData(
+        {
+          id:options.id
+        }
+      )
+    }
+    if(options.productId){
+      this.setData(
+        {
+          id:options.productId
+        }
+      )
+    }
     this.init()
   },
 
@@ -65,7 +90,60 @@ Page({
         hasMore:true
       }
     )
-    this.selectCollectPatent()
+      this.chooseMethod()
+  },
+  //调用方法
+  chooseMethod(){
+    var methods = {
+      "1":'selectCollectPatent',//收藏的专利
+      "2":'getPatentByRecord',//监控记录相关专利
+    }
+    if(methods[this.data.type]){
+      this[methods[this.data.type]]()
+    }
+  },
+  //监控记录相关专利
+  getPatentByRecord(){
+    if(!this.data.id){
+      return false
+    }
+    var params = {
+      pageNum:this.data.queryParams.current,
+      pageSize:this.data.queryParams.size,
+      recordId:this.data.id
+    }
+    wx.showLoading({
+      title: '加载中',
+    })
+    api.getPatentByRecord(params).then(res=>{
+      if(res.code == 200){
+        var len1 = this.data.tableData.length
+        var len = len1>0?len1: 0
+        var data = this.data.tableData.concat(res.data.data)
+        this.setData(
+          {
+            tableData:data,
+            total:res.data.total,
+            triggered: false,
+            load:false
+          }
+        )
+        if(this.data.total<=data.length){
+          this.setData({
+            hasMore:false
+          })
+        }
+        for(let i = 0;i<res.data.data.length;i++){
+          this.getPictureByNo(res.data.data[i],len)
+          len += 1 
+        }
+      }
+    }).catch(error=>{
+      this.setData({
+        triggered: false,
+        load:false
+      })
+    })
   },
 
   //下拉刷新
@@ -173,7 +251,7 @@ Page({
         load :true
       }
     )
-    this.selectCollectPatent()
+    this.chooseMethod()
   },
 
   /**

+ 1 - 1
pages/collectPatent/collectPatent.wxml

@@ -4,7 +4,7 @@
 
 <view class="collectPatent">
   <view class="head">
-    <text>我的收藏专利</text>
+    <text>{{title}}</text>
   </view>
   <view class="main">
     <my-scroll-view triggered="{{triggered}}" load="{{load}}" hasMore="{{hasMore}}" bindonRefresh="onRefresh" bindloadMore="loadMore" customStyle="height: calc(100vh - 300rpx)">

+ 62 - 0
pages/component/followPopup/followPopup.js

@@ -0,0 +1,62 @@
+// pages/component/followPopup/followPopup.js
+Component({
+
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    show:{
+      type:Boolean,
+      value:false
+    },
+    closeable:{
+      type:Boolean,
+      value:false
+    },
+    showCollect:{
+      type:Boolean,
+      value:false
+    },
+    changeFollow:{
+      type:Boolean,
+      value:false
+    }
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+    isAdd:false
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+    onClose(){
+      this.triggerEvent('onClose')
+    },
+     //是否收藏
+    changeIsAdd(e){
+      this.setData(
+        {
+          isAdd:e.detail
+        }
+      )
+    },
+    attention(e){
+      var {type} = e.currentTarget.dataset
+      var data = {
+        type:type
+      }
+      if(this.properties.showCollect){
+        data.isAdd = this.data.isAdd
+      }
+      this.triggerEvent('attention',data)
+    },
+    cancelFollow(){
+      this.triggerEvent('cancelFollow')
+    }
+  }
+})

+ 8 - 0
pages/component/followPopup/followPopup.json

@@ -0,0 +1,8 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-popup": "/miniprogram_npm/@vant/weapp/popup/index",
+    "van-checkbox": "/miniprogram_npm/@vant/weapp/checkbox/index",
+    "wux-divider": "/miniprogram_npm/wux-weapp/divider/index"
+  }
+}

+ 44 - 0
pages/component/followPopup/followPopup.wxml

@@ -0,0 +1,44 @@
+<!--pages/component/followPopup/followPopup.wxml-->
+<van-popup
+  show="{{ show }}"
+  closeable="{{closeable}}"
+  position="bottom"
+  round
+  custom-style="height: auto;"
+  bind:close="onClose"
+>
+  <view class="popup">
+    <view class="grid" data-type="1" catch:tap="attention">
+      <view class="iconfont myIconanquanbangzhu operate_icon"></view>
+      <view class="operate_text">白名单</view>
+    </view>
+    <wux-divider wux-class="line" show-text="{{ false }}"/>
+    <view class="grid" data-type="2"  catch:tap="attention">
+      <view class="iconfont myIconicon-test  operate_icon"></view>
+      <view class="operate_text">灰名单</view>
+    </view>
+    <wux-divider  wux-class="line" show-text="{{ false }}"/>
+    <view class="grid" data-type="0" catch:tap="attention">
+      <view class="iconfont myIcongroup43 operate_icon"></view>
+      <view class="operate_text">黑名单</view>
+    </view>
+    <wux-divider  wux-class="line" show-text="{{ false }}"/>
+    <view class="grid" data-type="-1" catch:tap="attention">
+      <view class="iconfont myIconguanzhu-yiguanzhu operate_icon"></view>
+      <view class="operate_text">仅关注</view>
+    </view>
+    <block wx:if="{{changeFollow}}">
+      <wux-divider  wux-class="line" show-text="{{ false }}"/>
+      <view class="grid" catch:tap="cancelFollow">
+        <view class="operate_text">取消关注</view>
+      </view>
+    </block>
+    <block wx:if="{{showCollect && !changeFollow}}">
+      <wux-divider   wux-class="line" show-text="{{ false }}"/>
+      <view class="grid">
+        <van-checkbox value="{{ isAdd }}" bind:change="changeIsAdd">选择的专利是否收藏到对应产品当中</van-checkbox>
+      </view>
+    </block>
+   
+  </view>
+</van-popup>

+ 26 - 0
pages/component/followPopup/followPopup.wxss

@@ -0,0 +1,26 @@
+/* pages/component/followPopup/followPopup.wxss */
+@import "/static/iconfont/iconfont.wxss";
+.popup{
+  padding: 20rpx 0;
+}
+.grid{
+  display: flex;
+  padding: 10px;
+  align-items: center;
+  justify-content: center;
+}
+.line{
+  margin:0 !important;
+}
+.myIconanquanbangzhu{
+  font-size: 60rpx;
+}
+.myIconicon-test{
+  font-size: 50rpx;
+}
+.myIcongroup43{
+  font-size: 40rpx;
+}
+.operate_icon{
+  margin-right: 10px;
+}

+ 14 - 9
pages/form/addProduct/addProduct.js

@@ -27,12 +27,17 @@ Page({
       {
         type:2,
         label:'灰名单',
-        icon:'myIcongroup43'
+        icon:'myIconicon-test'
       },
       {
         type:0,
         label:'黑名单',
-        icon:'myIconicon-test'
+        icon:'myIcongroup43'
+      },
+      {
+        type:-1,
+        label:'仅关注',
+        icon:'myIconguanzhu-yiguanzhu'//已关注
       },
     ]
   },
@@ -46,7 +51,7 @@ Page({
     eventChannel.on('acceptDataFromOpenerPage', function(data) {
       var form = {
         searchCondition:data.key,
-        concernType:data.concernType,
+        // concernType:data.concernType,
       }
       var file = []
       if(data.filePath){
@@ -189,8 +194,7 @@ Page({
     validateFields((err, values) => {
       console.log(err)
       if (!err) {
-        if(this.data.funType == '监控'){
-          if(this.data.concernType!=0 && !this.data.concernType){
+        if(this.data.concernType!=0 && !this.data.concernType){
             wx.showModal({
               title: '提示',
               content: '请选择关注类型',
@@ -200,13 +204,13 @@ Page({
               }
             })
             return
-          }
         }
         var fileGuids = this.data.fileList.map(item=>{
           return item.guid
         })
         var params = {
           ...this.data.form,
+          concernType:this.data.form.concernType==-1?null:this.data.form.concernType,
           fileGuids:fileGuids
         }
         if(this.data.funType == '监控'){
@@ -226,7 +230,7 @@ Page({
                 icon: 'success',
                 duration: 2000
               })
-             that.updateMessage(params,res.data[0])
+             that.updateMessage(params,res.data.data)
             }
           })
         )
@@ -256,8 +260,9 @@ Page({
     var pages = getCurrentPages()
     var prepage = pages[pages.length-2]
     var product = prepage.data.product
-    product.concernType = params.concernType
+    product.concernType = this.data.form.concernType
     product.id = id
+    product.name=params.name
     product.key = params.searchCondition
     product.filePath = this.data.fileList[0]?.url
     if(this.data.funType == '监控'){
@@ -282,7 +287,7 @@ Page({
         icon: 'success',
         duration: 2000
       })
-      this.updateMessage(params,res.data[0])
+      this.updateMessage(params,res.data.data)
     })
   },
 

+ 1 - 1
pages/form/addProduct/addProduct.wxml

@@ -20,7 +20,7 @@
           <wux-input  placeholder="请输入产品名称" />
         </my-form-item>
       </wux-field>
-      <block wx:if="{{funType == '监控'}}">
+      <block>
         <wux-field name="concernType" initialValue="{{''}}">
           <my-form-item labelWidth="{{labelWidth}}" required custom-class="form_label">
             <view slot="label" >

+ 44 - 13
pages/form/appeal/appeal.js

@@ -18,8 +18,9 @@ Page({
       complainedType:'商标',
       ifTalked:true
     },
-    labelWidth:350,
+    labelWidth:200,
     imageUrl:'',
+    fileList:[],
     //站点
     countrys:[
       { text: '美国站', value: '美国站' },
@@ -91,20 +92,49 @@ Page({
       //   url: e.detail.tempFiles[0].tempFilePath,
       // }]
       var that = this
-      this.setData({ imageUrl:e.detail.tempFiles[0].tempFilePath })
-      upload.upload(tempFilePaths).then(res=>{
-        if(res.code == 200){
-          var arr = []
-          arr.push(res.data[0])
-          that.setData(
-            {
-              ["form.fileGuids"]:arr
-            }
-          )
-        }
+      var tempFilePaths = e.detail.tempFiles
+      tempFilePaths.forEach(item=>{
+        let tempFilePath = item.tempFilePath
+        // this.setData({ imageUrl:e.detail.tempFiles[0].tempFilePath })
+        upload.upload(tempFilePath).then(res=>{
+          if(res.code == 200){
+            // var arr = []
+            // arr.push(res.data[0])
+            var guid = res.data[0]
+            var arr = that.data.fileList
+            arr.push(
+              {
+                url:tempFilePath,
+                guid:guid,
+                status:"done"
+              }
+            )
+            that.setData(
+              {
+                // ["form.fileGuids"]:arr
+                fileList:arr
+              }
+            )
+          }
+        })
       })
+      
     }
   },
+  //移除
+  onRemove(e){
+    const { file, fileList } = e.detail
+    wx.showModal({
+      content: '确定删除?',
+      success: (res) => {
+        if (res.confirm) {
+          this.setData({
+            fileList: this.data.fileList.filter((n) => n.guid !== file.guid),
+          })
+        }
+      },
+    })
+  },
   //输入备注
   changRemark(e){
     this.setData(
@@ -164,7 +194,8 @@ Page({
           contactPerson:this.data.form.contactPerson,
           contactPhone:this.data.form.contactPhone,
           contactMail:this.data.form.contactMail,
-          fileGuids:this.data.form.fileGuids,
+          // fileGuids:this.data.form.fileGuids,
+          fileGuids:this.data.fileList.map(item=>item.guid),
           respondingAddDTO:this.data.form
         }
         wx.showLoading({

+ 3 - 4
pages/form/appeal/appeal.wxml

@@ -72,20 +72,19 @@
             被投诉截图
           </view>
           <wux-upload
-            max='1'
             listType="picture-card"
+            fileList="{{ fileList }}"
             controlled
             uploaded="false"
             bind:before="beforeUpload"
-            bind:change="onChange"
             bind:success="onSuccess"
             bind:fail="onFail"
             bind:complete="onComplete"
             bind:preview="onPreview"
             bind:remove="onRemove"
           >
-            <image src="{{ imageUrl }}" wx:if="{{ imageUrl }}" />
-            <text wx:else>Upload</text>
+            <!-- <image src="{{ imageUrl }}" wx:if="{{ imageUrl }}" /> -->
+            <text>Upload</text>
           </wux-upload>
         </my-form-item>
       </wux-field>

+ 2 - 2
pages/form/application/application.js

@@ -14,9 +14,9 @@ Page({
     form:{
       appType:'发明专利',
       appAbroad:true,
-      appApostille:true,
+      // appApostille:true,
     },
-    labelWidth:350,
+    labelWidth:200,
     typeOptions:[
       { text: '发明专利', value: '发明专利' },
       { text: '外观设计', value: '外观设计' },

+ 4 - 4
pages/form/application/application.wxml

@@ -3,7 +3,7 @@
 <van-notify id="van-notify" />
 <view class="application">
   <view class="headTitle">
-    我要申请专利
+    我要申请
   </view>
   <scroll-view scroll-y class="form">
     <wux-form
@@ -59,7 +59,7 @@
           </van-radio-group>
         </my-form-item>
       </wux-field>
-      <wux-field name="appApostille" initialValue="{{''}}">
+      <!-- <wux-field name="appApostille" initialValue="{{''}}">
         <my-form-item labelWidth="{{labelWidth}}" custom-class="form_label">
           <view slot="label" >
             一同申请海牙认证
@@ -71,7 +71,7 @@
             </view>
           </van-radio-group>
         </my-form-item>
-      </wux-field>
+      </wux-field> -->
       <wux-field name="contactPhone" initialValue="{{''}}" rules="{{ [{ required: true },{validator:'checkPhone'} ] }}">
         <my-form-item labelWidth="{{labelWidth}}" required custom-class="form_label">
           <view slot="label" >
@@ -97,7 +97,7 @@
     </view>
     <view>
       <view class="file" wx:for="{{fileList}}" wx:key="index">
-        <wux-ellipsis class="head_left_title" direction="end" content="{{ item.name }}"/>
+        <wux-ellipsis defaultExpanded="{{false}}" expandText="展开" collapseText="收起" wux-class="ellipsis" class="head_left_title" direction="end" content="{{ item.name }}"/>
         <view>
           <van-icon name="close" data-index="index" bind:tap="delFile"/>
         </view>

+ 66 - 19
pages/form/rightsProtection/rightsProtection.js

@@ -15,10 +15,10 @@ Page({
       tortStoreAdinSite:'美国站',
       tortType:'发明专利',
       tortClassify:'产品侵权',
-      ifHavePatent:true,
+      ifHaveRightProof:true,
       problemDescription:'商品详细页上使用了未经授权的图片'
     },
-    labelWidth:350,
+    labelWidth:200,
     //站点
     countrys:[
       { text: '美国站', value: '美国站' },
@@ -43,11 +43,12 @@ Page({
     ],
     //问题描述
     problemDescriptions:[
-      { text: '商品详细页上使用了未经授权的图片', value: '商品详细页上使用了未经授权的图片' },
+      { text: '商品详情页上使用了未经授权的图片', value: '商品详情页上使用了未经授权的图片' },
       { text: '实际商品或其包装包含非盗版的未授权的内容', value: '实际商品或其包装包含非盗版的未授权的内容' },
       { text: '商品详情页面上使用了未经授权的文本', value: '商品详情页面上使用了未经授权的文本' },
       { text: '商品或其包装为盗版(全盘复制受版权保护的商品)', value: '商品或其包装为盗版(全盘复制受版权保护的商品)' },
-    ]
+    ],
+    proofGuids:[],
   },
 
   /**
@@ -61,7 +62,18 @@ Page({
    * 生命周期函数--监听页面初次渲染完成
    */
   onReady() {
-
+    this.setData(
+      {
+        proofGuids:[],
+        form:{
+          tortStoreAdinSite:'美国站',
+          tortType:'发明专利',
+          tortClassify:'产品侵权',
+          ifHaveRightProof:true,
+          problemDescription:'商品详情页上使用了未经授权的图片'
+        },
+      }
+    )
   },
 
   /**
@@ -96,20 +108,52 @@ Page({
     }
     return Promise.resolve()
   },
-  //上传文件
-  uploadFile(){
-    const that = this;  
-    wx.chooseMessageFile({  
-      count: 1, // 默认9,表示一次最多可以选择的文件个数  
-      type: 'file', // 可以指定是文件  
-      success(res) {  
-        // 返回选定文件的本地文件路径列表,tempFilePath可以作为文件上传的标识  
-        const tempFilePaths = res.tempFilePaths[0];  
-        upload(tempFilePaths).then(res=>{
-          console.log(res)
+   //上传文件
+   beforeUpload(e){
+    if(e.detail.errMsg=="chooseMedia:ok"){
+      var that = this
+      var tempFilePaths = e.detail.tempFiles
+      tempFilePaths.forEach(item=>{
+        let tempFilePath = item.tempFilePath
+        // this.setData({ imageUrl:e.detail.tempFiles[0].tempFilePath })
+        upload.upload(tempFilePath).then(res=>{
+          if(res.code == 200){
+            // var arr = []
+            // arr.push(res.data[0])
+            var guid = res.data[0]
+            var arr = that.data.proofGuids
+            arr.push(
+              {
+                url:tempFilePath,
+                guid:guid,
+                status:"done"
+              }
+            )
+            that.setData(
+              {
+                // ["form.fileGuids"]:arr
+                proofGuids:arr
+              }
+            )
+          }
         })
-      }  
-    }); 
+      })
+      
+    }
+  },
+  //移除
+  onRemove(e){
+    const { file, fileList } = e.detail
+    wx.showModal({
+      content: '确定删除?',
+      success: (res) => {
+        if (res.confirm) {
+          this.setData({
+            proofGuids: this.data.proofGuids.filter((n) => n.guid !== file.guid),
+          })
+        }
+      },
+    })
   },
   //输入备注
   changRemark(e){
@@ -123,7 +167,7 @@ Page({
   onChange(e){
     this.setData(
       {
-        ["form.ifHavePatent"]:e.detail
+        ["form.ifHaveRightProof"]:e.detail
       }
     )
   },
@@ -158,6 +202,9 @@ Page({
     validateFields((err, values) => {
       console.log(err)
         if (!err) {
+          if(this.data.proofGuids && this.data.proofGuids.length>0){
+            this.data.form.proofGuids = this.data.proofGuids.map(item=>item.guid)
+          }
           var params = {
             ticketType:2,
             contactPerson:this.data.form.contactPerson,

+ 28 - 7
pages/form/rightsProtection/rightsProtection.wxml

@@ -42,12 +42,12 @@
           </van-dropdown-menu>
         </my-form-item>
       </wux-field>
-      <wux-field name="ifHavePatent" initialValue="{{''}}">
+      <wux-field name="ifHaveRightProof" initialValue="{{''}}">
         <my-form-item labelWidth="{{labelWidth}}" custom-class="form_label">
           <view slot="label" >
-            是否拥有专利号
+            是否拥有权利
           </view>
-          <van-radio-group value="{{ form.ifHavePatent }}" bind:change="onChange" >
+          <van-radio-group value="{{ form.ifHaveRightProof }}" bind:change="onChange" >
             <view class="form_radio">
               <van-radio name="{{true}}">是</van-radio>
               <van-radio name="{{false}}">否</van-radio>
@@ -58,12 +58,33 @@
       <wux-field name="patentNo" initialValue="{{''}}" >
         <my-form-item labelWidth="{{labelWidth}}" custom-class="form_label">
           <view slot="label" >
-            专利号
+            权利证明(号码)
           </view>
-          <wux-input maxlength="11" placeholder="请输入您的专利号" />
+          <wux-input maxlength="11" placeholder="请输入您的号码" />
+        </my-form-item>
+      </wux-field>
+      <wux-field name="proofGuids" initialValue="{{''}}" >
+        <my-form-item labelWidth="{{labelWidth}}" custom-class="form_label">
+          <view slot="label" >
+            权利证明(图)
+          </view>
+          <wux-upload
+            listType="picture-card"
+            fileList="{{ proofGuids }}"
+            controlled
+            uploaded="false"
+            bind:before="beforeUpload"
+            bind:success="onSuccess"
+            bind:fail="onFail"
+            bind:complete="onComplete"
+            bind:preview="onPreview"
+            bind:remove="onRemove"
+          >
+            <!-- <image src="{{ imageUrl }}" wx:if="{{ imageUrl }}" /> -->
+            <text>Upload</text>
+          </wux-upload>
         </my-form-item>
       </wux-field>
-
 
       <wux-field name="problemDescription" initialValue="{{''}}">
         <view class="label">
@@ -91,7 +112,7 @@
           <view slot="label" >
             侵权店铺的链接
           </view>
-          <wux-input maxlength="11" placeholder="请输入侵权店铺的链接" />
+          <wux-input placeholder="请输入侵权店铺的链接" />
         </my-form-item>
       </wux-field>
 

+ 11 - 3
pages/form/riskAssessment/riskAssessment.js

@@ -12,9 +12,9 @@ Page({
       required: '%s 字段为必填',
     },
     form:{
-      unableExport:true
+      patentNos:[]
     },
-    labelWidth:350,
+    labelWidth:200,
     fileList:[],
   },
 
@@ -22,7 +22,15 @@ Page({
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
-
+    const eventChannel = this.getOpenerEventChannel()
+    var that = this
+    eventChannel.on('acceptDataFromOpenerPage', function(data) {
+      that.setData(
+        {
+          ["form.patentNos"]:data.patentNoList
+        }
+      )
+    })
   },
 
   /**

+ 1 - 1
pages/form/riskAssessment/riskAssessment.wxml

@@ -66,7 +66,7 @@
     </view>
     <view>
       <view class="file" wx:for="{{fileList}}" wx:key="index">
-        <wux-ellipsis class="head_left_title" direction="end" content="{{ item.name }}"/>
+        <wux-ellipsis defaultExpanded="{{false}}" expandText="展开" collapseText="收起" wux-class="ellipsis" class="head_left_title" direction="end" content="{{ item.name }}"/>
         <view>
           <van-icon name="close" data-index="index" bind:tap="delFile"/>
         </view>

+ 45 - 0
pages/hotProduct/hotProduct.js

@@ -17,6 +17,8 @@ Page({
     load:false,
     hasMore:true,
     showDialog:false,
+    showPopup:false, 
+    changeFollow:false,
   },
 
   /**
@@ -44,6 +46,49 @@ Page({
 /**
    * 页面功能实现的区域
    */
+
+   //关注和监控
+   closePopup(e){
+    this.setData(
+      {
+        showPopup:false
+      }
+    )
+    wx.nextTick(() => {
+      this.setData({ changeFollow: false }) // 在当前同步流程结束后,下一个时间片执行
+    })
+   },
+   openPopup(e){
+    console.log(e)
+    this.setData(
+      {
+        showPopup:true
+      }
+    )
+    if(e.detail && e.detail.changeFollow){
+      this.setData(
+        {
+          changeFollow:true
+        }
+      )
+    }
+   },
+   attention(e){
+    const childComponent = this.selectComponent('#myProduct');
+    // var {type} = e.detail
+    if (childComponent) {  
+      childComponent.attention(e); // 调用子组件的方法  
+    }
+   },
+   cancelFollow(e){
+    const childComponent = this.selectComponent('#myProduct');
+    // var {type} = e.detail
+    if (childComponent) {  
+      childComponent.cancelFollow(e); // 调用子组件的方法  
+    }
+   },
+
+
   //初始化加载
   init(){
     var params = {

+ 2 - 1
pages/hotProduct/hotProduct.json

@@ -1,6 +1,7 @@
 {
   "usingComponents": {
     "myProduct":"/myComponents/product/product",
-    "myDialog":"/myComponents/dialog/dialog"
+    "myDialog":"/myComponents/dialog/dialog",
+    "followPopup":"/pages/component/followPopup/followPopup"
   }
 }

+ 11 - 10
pages/hotProduct/hotProduct.wxml

@@ -1,14 +1,14 @@
 <!--pages/hotProduct/hotProduct.wxml-->
 <van-notify id="van-notify" />
+<followPopup show="{{showPopup}}" showCollect="{{false}}" changeFollow="{{changeFollow}}" bindonClose="closePopup" bindattention="attention" bindcancelFollow="cancelFollow"></followPopup>
 <myDialog isShown="{{showDialog}}" title="爆款风险" showFoot="{{false}}" bindcancel="closeDialog">
   <view class="dialog_content">
     <view class="dialog_content_text">
-     <span class="dialog_content_point">爆款产品</span>是指在商品销售中,供不应求,销售量很高的商品,通常所说的卖的很多,人气很高的商品,广泛应用于网店、实物店铺(此款小程序只针对亚马逊)。另一种说法是牛品,爆款商品,爆款宝贝,人气宝贝,热卖商品
+     <span class="dialog_content_point">爆款产品</span>来源于美国亚马逊平台的Top50爆款产品,每周三更新产品清单
     </view>
-    
-    <view class="dialog_content_text" style="margin-top:10px">
+    <!-- <view class="dialog_content_text" style="margin-top:10px">
       而此页面的<span class="dialog_content_point">爆款风险</span>是指:在亚马逊各个店铺中热卖、销量高的商品,您想去卖,是否会出现相应的侵权风险等一系列问题。
-    </view>
+    </view> -->
     
   </view>
 </myDialog>
@@ -18,7 +18,8 @@
   </view>
 
   <view class="tishi">
-    爆款产品<van-icon custom-class="vanIcon" name="info" bind:tap="showTishi"/>
+    爆款产品 <span style="font-size: 14px;color: black;">(直接点击图片查看该产品专利风险)</span>
+    <van-icon custom-class="vanIcon" name="info" bind:tap="showTishi"/>
   </view>
 
   <view class="menuList">
@@ -26,17 +27,17 @@
       <text class="iconfont myIconanquanbangzhu"></text>
       <text>白名单</text>
     </view>
-    <view class="menu_item yellow">
-      <text class="iconfont myIconicon-test"></text>
-      <text>灰名单</text>
-    </view>
     <view class="menu_item red">
       <text class="iconfont myIcongroup43"></text>
       <text>黑名单</text>
     </view>
+    <view class="menu_item yellow ">
+      <text class="iconfont myIconicon-test"></text>
+      <text>灰名单</text>
+    </view>
   </view>
   <my-scroll-view  triggered="{{triggered}}" load="{{load}}" hasMore="{{hasMore}}" bindonRefresh="onRefresh" bindloadMore="loadMore" customStyle="height: calc(100vh - 260rpx)">
-    <myProduct wx:if="{{tableData.length>0}}" tableData="{{tableData}}"></myProduct>
+    <myProduct wx:if="{{tableData.length>0}}"  tableData="{{tableData}}" id="myProduct" bindshowPopup="openPopup" bindhiddenPopup="closePopup"></myProduct>
     <van-empty wx:else description="暂无数据" />
   </my-scroll-view>
  

+ 13 - 0
pages/hotProduct/hotProduct.wxss

@@ -13,6 +13,8 @@
   margin-right: 15rpx;
   font-weight: bold;
   font-size: 35rpx !important;
+  display: flex;
+  align-items: center;
 }
 .iconfont{
   font-weight: normal;
@@ -50,4 +52,15 @@
 }
 .dialog_content_point{
   color: var(--themeColor);
+}
+.myIconanquanbangzhu{
+  font-size: 50rpx !important;
+}
+.myIconicon-test{
+  font-size: 45rpx !important ;
+  margin-right: 5px;
+}
+.myIcongroup43{
+  font-size: 35rpx !important;
+  margin-right: 5px;
 }

+ 3 - 3
pages/index/index.wxml

@@ -7,7 +7,7 @@
       <view class="landscape_content_body_item">小世电商专利助手小程序旨在为跨境电商提供一站式的知识产权专业服务</view>
       <view class="landscape_content_body_item2">  
         <view>主要提供:</view>
-        <view>1.爆款产品专利</view>
+        <view>1.爆款产品专利风险</view>
         <view>2.上架产品的专利侵权风险排查</view>
         <view>3.产品下架意见分析</view>
         <view>4.专利侵权行为投诉</view>
@@ -22,7 +22,7 @@
   left-icon="volume-o"
   mode="link"
   custom-class="notice-bar"
-  text="小世电商专利助手小程序旨在为跨境电商提供一站式的知识产权专业服务,主要提供爆款产品专利、上架产品的专利侵权风险排查、产品下架意见分析、专利侵权行为投诉、协助维权、专利申请的相关服务,以协助跨境电商的商家打好知识产权这把出海“保护伞”,避开知产雷区,为自己的品牌保驾护航,提高企业竞争力。"
+  text="小世电商专利助手小程序旨在为跨境电商提供一站式的知识产权专业服务,主要提供爆款产品专利风险、上架产品的专利侵权风险排查、产品下架意见分析、专利侵权行为投诉、协助维权、专利申请的相关服务,以协助跨境电商的商家打好知识产权这把出海“保护伞”,避开知产雷区,为自己的品牌保驾护航,提高企业竞争力。"
 />
 <view class="scrollarea" scroll-y type="list">
   <view class="">
@@ -37,7 +37,7 @@
     </view>
     <view class="btns">
       <block wx:for="{{btnList}}" wx:for-item="item" wx:for-index="index" wx:key="index">
-        <i-button custom-class="btn" color="{{item.color}}" data-page='{{item.page}}' bind:click='btnClick'>{{item.label}}</i-button>
+        <van-button custom-class="btn" color="{{item.color}}" data-page='{{item.page}}' bind:click='btnClick'>{{item.label}}</van-button>
       </block>
     </view>
   </view>

+ 45 - 14
pages/mine/mine.js

@@ -7,25 +7,41 @@ Page({
    * 页面的初始数据
    */
   data: {
-    // menu1:[
-    //   {
-    //     label:'关注微信公众号',
-    //     type:'1'
-    //   },
-    //   {
-    //     label:'帮助与反馈',
-    //     type:'2'
-    //   },
-    // ],
-    menu2:[
+    menu1:[
+      {
+        type:-1,
+        label:'全部关注',
+        icon:'myIconguanzhu-yiguanzhu',
+        page:'/pages/myFollow/myFollow',
+      },
       {
         type:1,
-        label:'我的关注',
-        icon:'myIconguanzhu',
-        page:'/pages/myFollow/myFollow'
+        label:'白名单',
+        icon:'myIconanquanbangzhu',
+        page:'/pages/myFollow/myFollow',
       },
       {
         type:2,
+        label:'灰名单',
+        icon:'myIconicon-test',
+        page:'/pages/myFollow/myFollow',
+      },
+      {
+        type:0,
+        label:'黑名单',
+        icon:'myIcongroup43',
+        page:'/pages/myFollow/myFollow',
+      },
+    ],
+    menu2:[
+      // {
+      //   type:1,
+      //   label:'我的关注',
+      //   icon:'myIconguanzhu',
+      //   page:'/pages/myFollow/myFollow'
+      // },
+      {
+        type:2,
         label:'检索记录',
         icon:'myIconguanzhu',
         page:'/pages/searchRecords/searchRecords'
@@ -199,6 +215,21 @@ Page({
     }
     
   },
+  clickMenu2(e){
+    var token = wx.getStorageSync('token')
+      if(token){
+        var {page,type} = e.currentTarget.dataset
+        wx.navigateTo({
+          url: page + '?type='+ type,
+        })
+      }else{
+        wx.showToast({
+            title: '请先登录',
+            icon: 'error',
+            duration: 2000
+          })
+      }
+  },
   //开通会员
   openVIP(){
     wx.navigateTo({

+ 6 - 6
pages/mine/mine.wxml

@@ -34,13 +34,13 @@
     </view>
   </view>
   <wux-divider wux-class="line" show-text="{{ false }}" />
-  <!-- <view class="menu_icon">
-    <view class="menu_icon_item" wx:for="{{menu2}}" data-page="{{item.page}}" bind:tap="clickMenu">
-      <view class="iconfont {{item.icon}} menu_icon_size"></view>
-      <view>{{item.label}}</view>
+  <view class="menu_icon">
+    <view class="menu_icon_item" wx:for="{{menu1}}" data-page="{{item.page}}" data-type="{{item.type}}" bind:tap="clickMenu2">
+      <view class="iconfont {{item.icon}} menu_icon_size" style="font-size: 40rpx;"></view>
+      <view style="font-size: 20rpx;">{{item.label}}</view>
     </view>
-  </view> -->
-  <!-- <wux-divider wux-class="line" show-text="{{ false }}" /> -->
+  </view>
+  <wux-divider wux-class="line" show-text="{{ false }}" />
   <view class="menu_list">
       <van-cell custom-class='vanCell' wx:for="{{menu2}}" wx:key="index" title="{{item.label}}" is-link data-page="{{item.page}}" data-login="{{item.noLogin}}" bind:click="clickMenu">
         <van-icon slot="right-icon" name="arrow" color="green" />

+ 6 - 1
pages/mine/mine.wxss

@@ -54,7 +54,7 @@
 }
 
 .menu_icon{
-  padding: 0 20rpx;
+  padding: 20px 20rpx 0 20rpx;
   display: flex;
   justify-content: space-between;
   color: var(--themeColor);
@@ -85,10 +85,15 @@
 
 .line{
   border-top: 2rpx solid var(--themeColor) !important;
+  margin-bottom: 0px !important;
 }
 .vanCell{
   padding:30rpx 15rpx !important;
   color: var(--themeColor) !important;
   border-bottom: 1px solid var(--themeColor);
   font-weight: bolder;
+}
+
+.myIcongroup43{
+  font-size: 35rpx !important;
 }

+ 44 - 1
pages/monitor/monitor.js

@@ -20,7 +20,9 @@ Page({
     ],
     triggered:false,
     load:false,
-    hasMore:true
+    hasMore:true,
+    showPopup:false, 
+    changeFollow:false,
   },
 
   /**
@@ -47,6 +49,47 @@ Page({
   /**
    * 页面功能
    */
+
+   //关注和监控
+   closePopup(e){
+    this.setData(
+      {
+        showPopup:false
+      }
+    )
+    wx.nextTick(() => {
+      this.setData({ changeFollow: false }) // 在当前同步流程结束后,下一个时间片执行
+    })
+   },
+   openPopup(e){
+    console.log(e)
+    this.setData(
+      {
+        showPopup:true
+      }
+    )
+    if(e.detail && e.detail.changeFollow){
+      this.setData(
+        {
+          changeFollow:true
+        }
+      )
+    }
+   },
+   attention(e){
+    const childComponent = this.selectComponent('#myProduct');
+    if (childComponent) {  
+      childComponent.attention(e); // 调用子组件的方法  
+    }
+   },
+   cancelFollow(e){
+    const childComponent = this.selectComponent('#myProduct');
+    // var {type} = e.detail
+    if (childComponent) {  
+      childComponent.cancelFollow(e); // 调用子组件的方法  
+    }
+   },
+
   //初始化加载
   init(){
     var params = {

+ 2 - 1
pages/monitor/monitor.json

@@ -2,6 +2,7 @@
   "navigationStyle": "custom",
   "usingComponents": {
     "navBar": "/myComponents/navBar/navBar",
-    "myProduct":"/myComponents/product/product"
+    "myProduct":"/myComponents/product/product",
+    "followPopup":"/pages/component/followPopup/followPopup"
   }
 }

+ 2 - 2
pages/monitor/monitor.wxml

@@ -1,14 +1,14 @@
 <!--pages/monitor/monitor.wxml 监控-->
 <navBar></navBar>
 <van-notify id="van-notify" />
-
+<followPopup show="{{showPopup}}" showCollect="{{false}}" changeFollow="{{changeFollow}}" bindonClose="closePopup" bindattention="attention" bindcancelFollow="cancelFollow"></followPopup>
 <view class="monitor">
   <view class="head">
     <text>我的监控</text>
   </view>
   <view class="main">
     <my-scroll-view  triggered="{{triggered}}" load="{{load}}" hasMore="{{hasMore}}" bindonRefresh="onRefresh" bindloadMore="loadMore" customStyle="height: calc(100vh - 300rpx)">
-      <myProduct wx:if="{{tableData.length>0}}" tableData="{{tableData}}" menu="{{menu}}" bindcancelMonitoring="cancelMonitoring" bindclick="click"></myProduct>
+      <myProduct wx:if="{{tableData.length>0}}" isMonitor="{{true}}" tableData="{{tableData}}" menu="{{menu}}" bindcancelMonitoring="cancelMonitoring" bindclick="click" id="myProduct" bindshowPopup="openPopup" bindhiddenPopup="closePopup"></myProduct>
       <van-empty wx:else description="暂无数据" />
     </my-scroll-view>
     

+ 4 - 0
pages/monitor/monitoringRecord.js

@@ -138,6 +138,10 @@ Page({
   //查看专利详情
   checkPatent(e){
     var {item} = e.currentTarget.dataset
+    var id = item.id
+    wx.navigateTo({
+      url: '/pages/collectPatent/collectPatent?id='+id+"&title=监控记录相关专利&type=2",
+    })
   },
 
 

+ 78 - 13
pages/myFollow/myFollow.js

@@ -20,41 +20,58 @@ Page({
     total:0,
     tableData:[],
     checkList:[
-      // {
-      //   type:0,
-      //   label:'全部',
-      //   icon:'',
-      //   checked:true
-      // },
       {
-        type:1,
+        type:"-1",
+        label:'全部',
+        icon:'',
+        checked:true
+      },
+      {
+        type:"1",
         label:'白名单',
         icon:'myIconanquanbangzhu',
         checked:false
       },
       {
-        type:2,
+        type:"2",
         label:'灰名单',
-        icon:'myIcongroup43',
+        icon:'myIconicon-test',
         checked:false
       },
       {
-        type:0,
+        type:"0",
         label:'黑名单',
-        icon:'myIconicon-test',
+        icon:'myIcongroup43',
         checked:false
       },
     ],
     checked:[],
+    active:null,
     triggered:false,
     load:false,
-    hasMore:true
+    hasMore:true,
+    showPopup:false, 
+    changeFollow:false,
   },
 
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
+    if(options.type == 0 || options.type){
+      if(options.type != -1){
+        this.setData(
+          {
+            checked:[options.type]
+          }
+        )
+      }
+      this.setData(
+        {
+          active:options.type
+        }
+      )
+    }
     this.init()
   },
 
@@ -76,6 +93,48 @@ Page({
   /**
    * 页面功能
    */
+  //关注和监控
+  closePopup(e){
+    this.setData(
+      {
+        showPopup:false
+      }
+    )
+    wx.nextTick(() => {
+      this.setData({ changeFollow: false }) // 在当前同步流程结束后,下一个时间片执行
+    })
+   },
+   openPopup(e){
+    console.log(e)
+    this.setData(
+      {
+        showPopup:true
+      }
+    )
+    if(e.detail && e.detail.changeFollow){
+      this.setData(
+        {
+          changeFollow:true
+        }
+      )
+    }
+   },
+   attention(e){
+    const childComponent = this.selectComponent('#myProduct');
+    // var {type} = e.detail
+    if (childComponent) {  
+      childComponent.attention(e); // 调用子组件的方法  
+    }
+   },
+   cancelFollow2(e){
+    const childComponent = this.selectComponent('#myProduct');
+    // var {type} = e.detail
+    if (childComponent) {  
+      childComponent.cancelFollow(e); // 调用子组件的方法  
+    }
+   },
+
+
   //初始化加载
   init(){
     var params = {
@@ -178,7 +237,13 @@ Page({
   },
   //获取筛选值
   onChange(e){
-    var data = e.detail
+    // var data = e.detail
+    var {name,title} = e.detail
+    var data = []
+    if(name != -1){
+      data = [name]
+    }
+    
     this.setData({
       checked: data,
     });

+ 4 - 1
pages/myFollow/myFollow.json

@@ -4,6 +4,9 @@
     "navBar": "/myComponents/navBar/navBar",
     "myProduct":"/myComponents/product/product",
     "van-checkbox": "/miniprogram_npm/@vant/weapp/checkbox/index",
-    "van-checkbox-group": "/miniprogram_npm/@vant/weapp/checkbox-group/index"
+    "van-checkbox-group": "/miniprogram_npm/@vant/weapp/checkbox-group/index",
+    "van-tab": "/miniprogram_npm/@vant/weapp/tab/index",
+    "van-tabs": "/miniprogram_npm/@vant/weapp/tabs/index",
+    "followPopup":"/pages/component/followPopup/followPopup"
   }
 }

+ 7 - 4
pages/myFollow/myFollow.wxml

@@ -1,24 +1,27 @@
 <!--pages/myFollow/myFollow.wxml 我关注的-->
 <navBar></navBar>
 <van-notify id="van-notify" />
-
+<followPopup show="{{showPopup}}" showCollect="{{false}}" changeFollow="{{changeFollow}}" bindonClose="closePopup" bindattention="attention" bindcancelFollow="cancelFollow2"></followPopup>
 <view class="myFollow">
   <view class="head">
     <text>我的关注</text>
   </view>
   <view class="filter">
-    <van-checkbox-group custom-class="checkbox" direction="horizontal" value="{{ checked }}" bind:change="onChange">
+    <!-- <van-checkbox-group custom-class="checkbox" direction="horizontal" value="{{ checked }}" bind:change="onChange">
       <van-checkbox custom-class="checkbox_item" wx:for="{{checkList}}" wx:key="index" name="{{item.type}}">
         <text class="iconfont {{item.icon}} checkbox_icon"></text>
         <text class="checkbox_label">{{item.label}}</text>
       </van-checkbox>
-    </van-checkbox-group>
+    </van-checkbox-group> -->
+    <van-tabs type="line" bind:change="onChange" active="{{active}}" ellipsis="{{false}}">
+      <van-tab wx:for="{{checkList}}" wx:key="index" name="{{item.type}}" title="{{item.label}}"></van-tab>
+    </van-tabs>
   </view>
   </view>
   <view class="main myFollow">
 
     <my-scroll-view  triggered="{{triggered}}" load="{{load}}" hasMore="{{hasMore}}" bindonRefresh="onRefresh" bindloadMore="loadMore" customStyle="height: calc(100vh - 320rpx)">
-      <myProduct wx:if="{{tableData.length>0}}" tableData="{{tableData}}" isFollow="{{true}}" bindcancelFollow="cancelFollow"></myProduct>
+      <myProduct wx:if="{{tableData.length>0}}" tableData="{{tableData}}" menu="{{menu}}" isFollow="{{true}}" bindcancelFollow="cancelFollow" id="myProduct" bindshowPopup="openPopup" bindhiddenPopup="closePopup"></myProduct>
       <van-empty wx:else description="暂无数据" />
     </my-scroll-view>
     

+ 66 - 11
pages/myWork/myWork.js

@@ -2,6 +2,7 @@
 const api = require('../../api/index')
 const app = getApp()
 const pay = require('../../utils/pay')
+const showImage = require('../../utils/showImage')
 Page({
 
   /**
@@ -23,11 +24,34 @@ Page({
       '4':'ticketPatentApplyVO'
     },
     ticketTypes:{
-      '1':'我要查风险',
+      '1':'专利解读',
       '2':'我要维权',
       '3':'我要申诉',
       '4':'我要申请'
     },
+    ticketTypesMenu:[
+      {
+        key:0,
+        value:'全部'
+      },
+      {
+        key:1,
+        value:'专利解读'
+      },
+      {
+        key:2,
+        value:'我要维权'
+      },
+      {
+        key:3,
+        value:'我要申诉'
+      },
+      {
+        key:4,
+        value:'我要申请'
+      },
+    ],
+    ticketType:null,
     ticketProgress:{
       '1':'等待受理',
       '2':'已受理,待支付',
@@ -110,26 +134,52 @@ Page({
     })
     this.init()
   },
-
-  //查看图片
-  previewImage(e) {
-    const { current,imglist } = e.currentTarget.dataset
+  changeData(e){
+    var {name,title} = e.detail
+    this.setData(
+      {
+        ticketType:name==0?null:name
+      }
+    )
+    this.init()
+  },
+  checkDetail(e){
+    var {item} = e.currentTarget.dataset
+    wx.navigateTo({
+      url: '/pages/myWork/workDetail?id='+item.id,
+    })
+  },
+   //查看图片
+   previewImage(e) {
+    var { current,imglist } = e.currentTarget.dataset
     var imgs = []
     for(var i =0;i<imglist.length;i++){
-      imgs.push(this.data.imgHttp + imglist[i].guid)
+      imgs.push(this.data.imgHttp + imglist[i])
     }
     current = this.data.imgHttp + current
-    wx.previewImage({
-      current,
-      urls:imgs,
-    })
+    showImage.showImageList(
+      {
+        current,
+        urls: imgs.map((n) => ({ image: n, remark: n })),
+        indicatorDots: true,
+        indicatorColor: '#fff',
+        indicatorActiveColor: '#04BE02',
+        showDelete:false
+      }
+    )
   },
   //获取工单记录
   getMyWork(){
     wx.showLoading({
       title: '加载中',
     })
-    api.queryTicket(this.data.queryParams).then(res=>{
+    var params = {
+      ...this.data.queryParams
+    }
+    if(this.data.ticketType){
+      params.ticketType = this.data.ticketType
+    }
+    api.queryTicket(params).then(res=>{
       if(res.code == 200){
         var data = this.data.tableData
         data = data.concat(res.data.data)
@@ -165,6 +215,11 @@ Page({
     )
     this.getMyWork()
   },
+  //按钮点击
+  clickBtn(e){
+    var {method,item,index} = e.currentTarget.dataset
+    this[method](item,index)
+  },
   //菜单点击
   clickMenu(e){
     console.log(e)

+ 3 - 1
pages/myWork/myWork.json

@@ -2,6 +2,8 @@
   "navigationStyle": "custom",
   "usingComponents": {
     "navBar": "/myComponents/navBar/navBar",
-    "myCard":"/myComponents/card/card"
+    "myCard":"/myComponents/card/card",
+    "van-tab": "/miniprogram_npm/@vant/weapp/tab/index",
+    "van-tabs": "/miniprogram_npm/@vant/weapp/tabs/index"
   }
 }

+ 55 - 18
pages/myWork/myWork.wxml

@@ -8,9 +8,47 @@
     <text>提交工单记录</text>
   </view>
 </view>
+<view style="margin-bottom: 10rpx;">
+  <van-tabs type="line" bind:change="changeData" ellipsis="{{false}}">
+    <van-tab wx:for="{{ticketTypesMenu}}" wx:key="index" name="{{item.key}}" title="{{item.value}}"></van-tab>
+  </van-tabs>
+</view>
 
-  <my-scroll-view  triggered="{{triggered}}" load="{{load}}" hasMore="{{hasMore}}" bindonRefresh="onRefresh" bindloadMore="loadMore" customStyle="height: calc(100vh - 280rpx)">
+  <my-scroll-view  triggered="{{triggered}}" load="{{load}}" hasMore="{{hasMore}}" bindonRefresh="onRefresh" bindloadMore="loadMore" customStyle="height: calc(100vh - 370rpx)">
+   
     <view wx:if="{{tableData.length>0}}" class="main myWork">
+      <view wx:for="{{tableData}}" wx:for-item="item" wx:key="index" class="workData">
+        <view class="workData_head" data-item="{{item}}" bind:tap="checkDetail">
+          <view class="workData_head_left"> 
+            <wux-ellipsis  direction="end" content="{{index + 1}}. {{ticketTypes[item.ticketType]}}-工单 "/>
+            <view><van-icon name="arrow" /></view>
+           </view>
+          <view class="workData_head_right">{{ticketProgress[item.ticketProgress]}}</view>
+        </view>
+        <view class="workData_content" data-item="{{item}}" bind:tap="checkDetail">
+          <view>
+            <view><wux-ellipsis  direction="end" content="工单号:{{item.num}}"/></view>
+            <view><wux-ellipsis  direction="end" content="下单:{{item.createTime}}"/></view>
+          </view>
+          <view style="color: red;" wx:if="{{item.price || item.price==0}}">¥{{item.price}}</view>
+        </view>
+        <view class="workData_foot">
+          <view class="btns">
+            <view class="btn_item" wx:if="{{item.ticketProgress == 2}}"> 
+              <van-button round size="mini" data-method="payMoney" data-item="{{item}}" data-index="{{index}}" bind:click="clickBtn">支付</van-button>
+            </view>
+            <view class="btn_item" wx:if="{{item.ticketProgress != 5 && item.ticketProgress != 4}}">
+              <van-button round size="mini" data-method="confirm" data-item="{{item}}" data-index="{{index}}" bind:click="clickBtn">确认</van-button>
+            </view>
+            <view class="btn_item" wx:if="{{item.ticketProgress != 5 && item.ticketProgress != 4}}">
+              <van-button round size="mini" plain type="danger" data-method="cancel" data-item="{{item}}" data-index="{{index}}" bind:click="clickBtn">取消</van-button>
+            </view>
+          </view>
+        </view>
+      </view>
+    </view>
+    
+  <!-- <view wx:if="{{tableData.length>0 && false}} " class="main myWork">
     <block wx:for="{{tableData}}" wx:for-item="item" wx:key="index">
       <myCard menu="{{menu}}" data="{{item}}" index="{{index}}" edit="{{(item.ticketProgress == 4 || item.ticketProgress == 5)?false:true}}" bindvalue='clickMenu'>
         <view slot="head_left" class="head_left">
@@ -38,12 +76,6 @@
               是否海外申请:{{item[ticketTypeFiled[item.ticketType]].appAbroad?'是':'否'}}
             </view>
             <view class="content_item">
-              一同申请海牙认证:{{item[ticketTypeFiled[item.ticketType]].appApostille?'是':'否'}}
-            </view>
-            <view class="content_item">
-              <!-- 附图:{{item[ticketTypeFiled[item.ticketType]].appType}} -->
-            </view>
-            <view class="content_item">
               备注:{{item[ticketTypeFiled[item.ticketType]].description}}
             </view>
           </view>
@@ -63,9 +95,7 @@
             <view class="content_item" wx:if="{{item[ticketTypeFiled[item.ticketType]].patentNo}}">
               专利号:{{item[ticketTypeFiled[item.ticketType]].patentNo}}
             </view>
-            <view class="content_item">
-              <!-- 附图:{{item[ticketTypeFiled[item.ticketType]].appType}} -->
-            </view>
+ 
             <view class="content_item">
               是否协商过:{{item[ticketTypeFiled[item.ticketType]].ifTalked?'是':'否'}}
             </view>
@@ -84,10 +114,16 @@
               侵权分类:{{item[ticketTypeFiled[item.ticketType]].tortClassify}}
             </view>
             <view class="content_item">
-              是否拥有专利号:{{item[ticketTypeFiled[item.ticketType]].ifHavePatent?'是':'否'}}
+              是否拥有权利:{{item[ticketTypeFiled[item.ticketType]].ifHaveRightProof?'是':'否'}}
             </view>
             <view class="content_item" wx:if="{{item[ticketTypeFiled[item.ticketType]].patentNo}}">
-              专利号:{{item[ticketTypeFiled[item.ticketType]].patentNo}}
+              权利证明(号码):{{item[ticketTypeFiled[item.ticketType]].patentNo}}
+            </view>
+            <view class="content_item" wx:if="{{item[ticketTypeFiled[item.ticketType]].proofGuids && item[ticketTypeFiled[item.ticketType]].proofGuids.length>0}}">
+              权利证明(图):
+              <view>
+                <image wx:for="{{item[ticketTypeFiled[item.ticketType]].proofGuids}}" wx:for-item="img" class="img_item" src="{{imgHttp + img}}" show-menu-by-longpress data-current="{{img}}" data-imgList="{{item[ticketTypeFiled[item.ticketType]].proofGuids}}" bindtap="previewImage" mode="aspectFit"/>
+              </view>
             </view>
             <view class="content_item">
               描述:{{item[ticketTypeFiled[item.ticketType]].problemDescription}}
@@ -103,12 +139,13 @@
             <view class="content_item" wx:if="{{item[ticketTypeFiled[item.ticketType]].companyName}}">
               公司名称:{{item[ticketTypeFiled[item.ticketType]].companyName}}
             </view>
+            <view class="content_item" wx:if="{{item[ticketTypeFiled[item.ticketType]].patentNos}}">
+              
+              <wux-ellipsis defaultExpanded="{{false}}" expandText="展开" collapseText="收起" wux-class="ellipsis" class="head_left_title" direction="end" content="选择的专利:{{ item[ticketTypeFiled[item.ticketType]].patentNos }}"/>
+            </view>
             <view class="content_item">
               专利无法导出?:{{item[ticketTypeFiled[item.ticketType]].patentExport?'是':'否'}}
             </view>
-            <!-- <view class="content_item">
-              附图:{{item[ticketTypeFiled[item.ticketType]].ifHavePatent?'是':'否'}}
-            </view> -->
             <view class="content_item">
               具体问题:{{item[ticketTypeFiled[item.ticketType]].description}}
             </view>
@@ -119,7 +156,7 @@
         </view>
       </myCard>
     </block>
-  </view>
-  <van-empty wx:else description="暂无数据" />
+    </view>
+     -->
+    <van-empty wx:else description="暂无数据" />
   </my-scroll-view>
-

+ 50 - 0
pages/myWork/myWork.wxss

@@ -36,4 +36,54 @@
   bottom: 0px;
   right: 10px;
   color: red;
+}
+.img_item{
+  width: 100px;
+  height: 100px;
+}
+
+
+.workData{
+  border-radius: 10px;
+  border: 1px solid var(--themeColor);
+  padding: 0 10px;
+  margin: 5px 0;
+  color: var(--themeColor);
+}
+
+.workData_head{
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: 10px 0;
+}
+.workData_head_left{
+  display: flex;
+  align-items: center;
+  font-weight: bold;
+  font-size: 16px;
+}
+.workData_head_right{
+  font-size: 14px;
+  color: #767676;
+}
+.workData_content{
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: 0 0 10px 0;
+  font-size: 14px;
+}
+
+.workData_foot{
+  display: flex;
+  flex-direction: row-reverse;
+  padding: 0 0 10px 0;
+}
+.btns{
+  display: flex;
+  align-items: center;
+}
+.btn_item{
+  margin-left: 10px;
 }

+ 233 - 0
pages/myWork/workDetail.js

@@ -0,0 +1,233 @@
+// pages/myWork/workDetail.js
+const api = require('../../api/index')
+const app = getApp()
+const pay = require('../../utils/pay')
+const showImage = require('../../utils/showImage')
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    imgHttp:app.globalData.imghttp,
+    ticketTypeFiled:{
+      '1':'ticketFillInVO',
+      '2':'ticketRightsProtectionVO',
+      '3':'ticketLitigationRespondingVO',
+      '4':'ticketPatentApplyVO'
+    },
+    ticketTypes:{
+      '1':'专利解读',
+      '2':'我要维权',
+      '3':'我要申诉',
+      '4':'我要申请'
+    },
+    ticketProgress:{
+      '1':'等待受理',
+      '2':'已受理,待支付',
+      '3':'正在处理中',
+      '4':'已完成',
+      '5':'已取消',
+      '6':'已上传结果',
+    },
+    id:null,
+    work:{},
+    show:false,
+    ticketFlows:[]
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad(options) {
+    this.setData(
+      {
+        id:options.id
+      }
+    )
+    this.getTicketDetail()
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow() {
+
+  },
+
+  showProgress(){
+    var params = {
+      ticketId:this.data.id
+    }
+    api.queryTicketFlows(params).then(res=>{
+      if(res.code == 200){
+        this.setData(
+          {
+            ticketFlows:res.data.data.reverse()
+          }
+        )
+      }
+    })
+    this.setData(
+      {
+        show:true
+      }
+    )
+  },
+  onClose(){
+    this.setData(
+      {
+        show:false
+      }
+    )
+  },
+
+  getTicketDetail(){
+    var params = {
+      ticketId:this.data.id
+    }
+    api.getTicketDetail(params).then(res=>{
+      if(res.code == 200){
+        this.setData(
+          {
+            work:res.data.data
+          }
+        )
+      }
+    })
+  },
+  clickBtn(e){
+    var {method} =e.currentTarget.dataset
+    this[method](this.data.work)
+  },
+   //支付3
+   payMoney(data){
+    var params = {
+      goodType:2,
+      goodUuid:data.num
+    }
+    wx.showLoading({
+      title: '加载中',
+    })
+    pay.payMoney(params).then(res=>{
+      console.log(res)
+      if(res.errMsg == 'requestPayment:ok'){
+        api.notify(
+          {
+            type:'success',
+            message:'支付成功',
+            top:wx.getStorageSync('height')
+          }
+        )
+        this.setData(
+          {
+            ["work.ticketProgress"]:3
+          }
+        )
+      }
+    }).catch(error=>{
+
+    })
+  },
+  //取消5
+  cancel(data){
+    var params = {
+      id:data.id,
+      process:5
+    }
+    api.updateTicketProcess(params).then(res=>{
+      if(res.code == 200){
+        this.setData(
+          {
+            ["work.ticketProgress"]:5
+          }
+        )
+      }
+    })
+   
+  },
+  //确认4
+  confirm(data){
+    var params = {
+      id:data.id,
+      process:4
+    }
+    api.updateTicketProcess(params).then(res=>{
+      if(res.code == 200){
+        this.setData(
+          {
+            ["work.ticketProgress"]:4
+          }
+        )
+      }
+    })
+  },
+ //查看图片
+ previewImage(e) {
+  console.log(e)
+  var { current,imglist,type } = e.currentTarget.dataset
+  var imgs = []
+  for(var i =0;i<imglist.length;i++){
+    if(type == 1){
+      imgs.push(this.data.imgHttp + imglist[i].guid)
+    }else{
+      imgs.push(this.data.imgHttp + imglist[i])
+    }
+    
+  }
+  current = this.data.imgHttp + current
+  showImage.showImageList(
+    {
+      current,
+      urls: imgs.map((n) => ({ image: n, remark: n })),
+      indicatorDots: true,
+      indicatorColor: '#fff',
+      indicatorActiveColor: '#04BE02',
+      showDelete:false
+    }
+  )
+},
+
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage() {
+
+  }
+})

+ 7 - 0
pages/myWork/workDetail.json

@@ -0,0 +1,7 @@
+{
+  "usingComponents": {
+    "van-popup": "/miniprogram_npm/@vant/weapp/popup/index",
+    "wux-timeline": "/miniprogram_npm/wux-weapp/timeline/index",
+    "wux-timeline-item": "/miniprogram_npm/wux-weapp/timeline-item/index"
+  }
+}

+ 169 - 0
pages/myWork/workDetail.wxml

@@ -0,0 +1,169 @@
+<!--pages/myWork/workDetail.wxml-->
+
+<van-popup
+  show="{{ show }}"
+  closeable="{{true}}"
+  position="bottom"
+  round
+  custom-style="height: auto;"
+  bind:close="onClose"
+>
+  <view class="popup">
+    <view class="popup_title">工单跟踪</view>
+    <view class="popup_content">
+      <wux-timeline wx:if="{{ticketFlows.length>0}}">
+        <wux-timeline-item dotStyle="border-color: #969799; color: #969799;" wx:for="{{ticketFlows}}">
+          <view class="popup_content_item">
+            <view>{{item.remark}}</view>
+            <view>{{item.createTime}}</view>
+          </view>
+        </wux-timeline-item>
+      </wux-timeline>
+      <van-empty wx:else description="暂无数据" /> 
+    </view>
+    
+  </view>
+</van-popup>
+
+<view class="workDetail">
+
+<view class="state" bind:tap="showProgress">
+  工单{{ticketProgress[work.ticketProgress]}}<van-icon name="arrow" />
+</view>
+<!--工单基本信息 -->
+<view class="workData_foot">
+          <view class="btns">
+            <view class="btn_item" wx:if="{{work.ticketProgress == 2}}"> 
+              <van-button round size="mini" data-method="payMoney" bind:click="clickBtn">支付</van-button>
+            </view>
+            <view class="btn_item" wx:if="{{work.ticketProgress != 5 && work.ticketProgress != 4}}">
+              <van-button round size="mini" data-method="confirm" bind:click="clickBtn">确认</van-button>
+            </view>
+            <view class="btn_item" wx:if="{{work.ticketProgress != 5 && work.ticketProgress != 4}}">
+              <van-button round size="mini" plain type="danger" data-method="cancel" bind:click="clickBtn">取消</van-button>
+            </view>
+          </view>
+    </view>
+<view class="basic">
+  <view class="text">工单类型:{{ticketTypes[work.ticketType]}}</view>
+  <view class="text">工单号:{{work.num}}</view>
+  <view class="text">下单时间:{{work.createTime}}</view>
+  <view class="text" wx:if="{{work.contactPerson}}">联系人:{{work.contactPerson}}</view>
+  <view class="text" wx:if="{{work.contactPhone}}">联系电话:{{work.contactPhone}}</view>
+  <view wx:if="{{work.price || work.price==0}}" class="text price">价格:¥{{work.price}}</view>
+</view>
+
+<!-- 工单详细信息 -->
+  <view class="card_body">
+          <!-- 申请 -->
+          <view class="content" wx:if="{{work.ticketType == 4}}">
+            <view class="content_item">
+              申请类型:{{work[ticketTypeFiled[work.ticketType]].appType}}
+            </view>
+            <view class="content_item">
+              申请国家:{{work[ticketTypeFiled[work.ticketType]].appCountry}}
+            </view>
+            <view class="content_item" wx:if="{{work[ticketTypeFiled[work.ticketType]].industry}}">
+              所属行业:{{work[ticketTypeFiled[work.ticketType]].industry}}
+            </view>
+            <view class="content_item" wx:if="{{work[ticketTypeFiled[work.ticketType]].techType}}">
+              技术类型:{{work[ticketTypeFiled[work.ticketType]].techType}}
+            </view>
+            <view class="content_item">
+              是否海外申请:{{work[ticketTypeFiled[work.ticketType]].appAbroad?'是':'否'}}
+            </view>
+            <view class="content_item">
+              附件:
+              <view>
+                <view wx:for="{{work.systemFiles}}" wx:key="{{item.guid}}">
+                  <view class="file_item">
+                    <view>{{item.originalName}}</view>
+                  </view>
+                </view>
+              </view>
+            </view>
+            <view class="content_item">
+              备注:{{work[ticketTypeFiled[work.ticketType]].description}}
+            </view>
+          </view>
+          <!-- 申诉 -->
+          <view class="content" wx:if="{{work.ticketType == 3}}">
+            <view class="content_item">
+              投诉方:{{work[ticketTypeFiled[work.ticketType]].complainAdinSite}}-{{work[ticketTypeFiled[work.ticketType]].complainAdin}}
+            </view>
+            <view class="content_item">
+              被投诉方:{{work[ticketTypeFiled[work.ticketType]].complainedAdinSite}}-{{work[ticketTypeFiled[work.ticketType]].complainedAdin}}
+            </view>
+            <view class="content_item">
+              商品是否原创:{{work[ticketTypeFiled[work.ticketType]].ifOriginal?'是':'否'}}
+            </view>
+            <view class="content_item">
+              被投诉类型:{{work[ticketTypeFiled[work.ticketType]].complainedType}}
+            </view>
+            <view class="content_item" wx:if="{{work[ticketTypeFiled[work.ticketType]].patentNo}}">
+              专利号:{{work[ticketTypeFiled[work.ticketType]].patentNo}}
+            </view>
+            <view class="content_item">
+              截图:
+              <view>
+                <image wx:for="{{work.systemFiles}}" wx:for-item="img" class="img_item" data-type="1" src="{{imgHttp + img.guid}}" show-menu-by-longpress data-current="{{img.guid}}" data-imgList="{{work.systemFiles}}" bindtap="previewImage" mode="aspectFit"/>
+              </view>
+            </view>
+            <view class="content_item">
+              是否协商过:{{work[ticketTypeFiled[work.ticketType]].ifTalked?'是':'否'}}
+            </view>
+            <view class="content_item">
+              详细说明:{{work[ticketTypeFiled[work.ticketType]].description}}
+            </view>
+          </view>
+          <!-- 维权 -->
+          <view class="content" wx:if="{{work.ticketType == 2}}">
+            <view class="content_item">
+              侵权店铺:{{work[ticketTypeFiled[work.ticketType]].tortStoreAdinSite}}-{{work[ticketTypeFiled[work.ticketType]].tortStoreAdin}}
+            </view>
+            <view class="content_item">
+              侵权类型:{{work[ticketTypeFiled[work.ticketType]].tortType}}
+            </view>
+            <view class="content_item">
+              侵权分类:{{work[ticketTypeFiled[work.ticketType]].tortClassify}}
+            </view>
+            <view class="content_item">
+              是否拥有权利:{{work[ticketTypeFiled[work.ticketType]].ifHaveRightProof?'是':'否'}}
+            </view>
+            <view class="content_item" wx:if="{{work[ticketTypeFiled[work.ticketType]].patentNo}}">
+              权利证明(号码):{{work[ticketTypeFiled[work.ticketType]].patentNo}}
+            </view>
+            <view class="content_item" wx:if="{{work[ticketTypeFiled[work.ticketType]].proofGuids && work[ticketTypeFiled[work.ticketType]].proofGuids.length>0}}">
+              权利证明(图):
+              <view>
+                <image wx:for="{{work[ticketTypeFiled[work.ticketType]].proofGuids}}" wx:for-item="img" class="img_item" src="{{imgHttp + img}}" show-menu-by-longpress data-current="{{img}}" data-imgList="{{work[ticketTypeFiled[work.ticketType]].proofGuids}}" bindtap="previewImage" mode="aspectFit"/>
+              </view>
+            </view>
+            <view class="content_item">
+              描述:{{work[ticketTypeFiled[work.ticketType]].problemDescription}}
+            </view>
+            <view class="content_item">
+              店铺链接:{{work[ticketTypeFiled[work.ticketType]].tortStoreLink}}
+            </view>
+            <view class="content_item" >
+              其他信息:{{work[ticketTypeFiled[work.ticketType]].description}}
+            </view>
+          </view>
+          <!-- 专利解读 -->
+          <view class="content" wx:if="{{work.ticketType == 1}}">
+            <view class="content_item" wx:if="{{work[ticketTypeFiled[work.ticketType]].companyName}}">
+              公司名称:{{work[ticketTypeFiled[work.ticketType]].companyName}}
+            </view>
+            <view class="content_item" wx:if="{{work[ticketTypeFiled[work.ticketType]].patentNos}}">
+              
+              <wux-ellipsis defaultExpanded="{{false}}" expandText="展开" collapseText="收起" wux-class="ellipsis" class="head_left_title" direction="end" content="选择的专利:{{ work[ticketTypeFiled[work.ticketType]].patentNos }}"/>
+            </view>
+            <view class="content_item">
+              专利无法导出?:{{work[ticketTypeFiled[work.ticketType]].patentExport?'是':'否'}}
+            </view>
+            <view class="content_item">
+              具体问题:{{work[ticketTypeFiled[work.ticketType]].description}}
+            </view>
+          </view>
+  </view>
+</view>

+ 64 - 0
pages/myWork/workDetail.wxss

@@ -0,0 +1,64 @@
+/* pages/myWork/workDetail.wxss */
+.workDetail{
+  padding: 10px 20rpx;
+}
+.state{
+  width: fit-content;
+  color: black;
+  font-weight: bold;
+  font-family:"微软雅黑";
+  font-size: 18px;
+}
+.basic{
+  margin: 10px 0;
+  border: 1px solid var(--themeColor);
+  border-radius: 10px;
+  padding: 10px;
+}
+.text{
+  margin: 5px 0;
+}
+.price{
+  color: red;
+}
+
+.card_body{}
+
+.content_item{
+  margin: 5px 0;
+}
+
+.workData_foot{
+  display: flex;
+  flex-direction: row-reverse;
+}
+.btns{
+  display: flex;
+  align-items: center;
+}
+.btn_item{
+  margin-left: 10px;
+}
+.img_item{
+  width: 100px;
+  height: 100px;
+}
+
+.popup{
+  padding: 16px;
+}
+.popup_title{
+  text-align: center;
+}
+.popup_content{
+  margin-top: 20px;
+  padding: 5px;
+  height: 200px;
+  overflow-y: auto;
+}
+.popup_content_item{
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  font-size: 14px;
+}

+ 69 - 2
pages/patentDetails/patentDetails.js

@@ -10,11 +10,17 @@ Page({
   data: {
     imgHttp:app.globalData.imghttp,
     labelPosition:'left',
-    labelWidth:250,
+    labelWidth:180,
     customStyle:" --padding:5rpx;font-weight:bold",
     patentNo:'',
     patent:{},
-    isSame:false
+    isSame:false,
+    istranslate:false,
+    translateField:{
+      title:'',
+      abstractStr:'',
+      publicFullText:''
+    }
   },
 
   /**
@@ -46,6 +52,67 @@ Page({
   /**
    * 页面功能
    */
+  //翻译
+  translate(){
+    this.setData(
+      {
+        istranslate:!this.data.istranslate
+      }
+    )
+    if(this.data.translateField.title){
+      return
+    }
+    var arr = Object.keys(this.data.translateField)
+    var that = this
+    arr.forEach(item=>{
+      if(!that.data.patent[item] || that.data.patent[item].length==0){
+        return
+      }
+      var text = that.data.patent[item][0].text_content
+      that.getTranslateContent(text).then(res=>{
+        if(res.message && res.message.content){
+          console.log(res.message.content)
+          that.setData(
+            {
+              ["translateField."+item]:res.message.content
+            }
+          )
+        }
+      })
+    })
+  },
+  //获取译文
+  getTranslateContent(content){
+    return new Promise((resolve, reject) => { 
+      var myobj = {
+        'model': 'qwen',
+        'messages': 
+        [
+            {
+                'role': 'system',
+                'content': '你是一个翻译智能助理'
+            },
+            {
+                'role': 'user',
+                'content': '请将如下语句翻译成中文:'+ content
+            }
+        ],
+        'stream': false
+    }
+      wx.request({
+        url: 'http://192.168.2.24:11434/api/chat',
+        method:'post',
+        data:myobj,
+        headers:{'Content-Type': 'application/json'},
+        success:function(res){
+          resolve(res.data)
+        },
+        fail:function(error){
+          reject(error)
+        }
+      })
+    })
+  },
    //查看图片
    previewImage(e) {
     console.log(e)

+ 2 - 1
pages/patentDetails/patentDetails.json

@@ -3,5 +3,6 @@
   "usingComponents": {
     "wux-divider": "/miniprogram_npm/wux-weapp/divider/index",
     "my-form-item": "/myComponents/formItem/formItem"
-  }
+  },
+  "copy":true
 }

+ 16 - 15
pages/patentDetails/patentDetails.wxml

@@ -2,20 +2,21 @@
 <navBar></navBar>
 <van-notify id="van-notify" />
 <view class="patentDetail">
+<!-- <view class="translate" bind:tap="translate">{{istranslate?'原文':'译文'}}</view> -->
   <view class="patentNo">
-    <view>{{patent.patentNo}}</view>
+    <text user-select="false">{{patent.patentNo}}</text>
   </view>
   <view class="title">
-    标题:{{patent.title[0].text_content}}
+    <text user-select="false">标题:{{istranslate?translateField.title:patent.title[0].text_content}}</text> 
   </view>
   <block wx:if="{{patent.appDate || patent.grantDate || patent.publicDate}}">
     <wux-divider wux-class="line" position="left" text="日期" />
     <view class="form">
       <my-form-item wx:if="{{patent.appDate}}" label="申请日:" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
-        <view class="form_item">{{patent.appDate}}</view>
+        <view class="form_item"><text user-select="false">{{patent.appDate}}</text></view>
       </my-form-item>
       <my-form-item wx:if="{{patent.grantDate || patent.publicDate}}" label="公开/授权日:" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
-        <view class="form_item">{{patent.grantDate || patent.publicDate}}</view>
+        <view class="form_item"><text user-select="false">{{patent.grantDate || patent.publicDate}}</text></view>
       </my-form-item>
     </view>
   </block>
@@ -23,23 +24,23 @@
   <wux-divider wux-class="line" position="left" text="号码" />
   <view class="form">
     <my-form-item wx:if="{{patent.appNo}}" label="申请号:" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
-        <view class="form_item">{{patent.appNo}}</view>
+        <view class="form_item"><text user-select="false">{{patent.appNo}}</text></view>
       </my-form-item>
       <my-form-item wx:if="{{patent.grantNo || patent.publicNo}}" label="公开/授权号:" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
-        <view class="form_item">{{patent.grantNo || patent.publicNo}}</view>
+        <view class="form_item"><text user-select="false">{{patent.grantNo || patent.publicNo}}</text></view>
       </my-form-item>
       <my-form-item wx:if="{{patent.classification}}" label="分类号:" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
-        <view class="form_item">{{patent.classification}}</view>
+        <view class="form_item"><text user-select="false">{{patent.classification}}</text></view>
       </my-form-item>
   </view>
  
   <wux-divider wux-class="line" position="left" text="申请(权利)人/设计人" />
   <view class="form">
     <view >
-      <my-form-item label="申请(权利)人:" border="{{false}}" customStyle="{{customStyle}}" labelWidth="350" labelPosition="{{labelPosition}}">
-        <view class="form_item" wx:if="{{isSame}}">{{patent.rightHolder}}</view>
-        <view class="form_item" wx:elif="{{patent.rightHolder&&patent.rightHolder.length>0}}">{{patent.rightHolder}}</view>
-        <view class="form_item" wx:else>{{patent.applicant}}</view>
+      <my-form-item label="申请(权利)人:" border="{{false}}" customStyle="{{customStyle}}" labelWidth="200" labelPosition="{{labelPosition}}">
+        <view class="form_item" wx:if="{{isSame}}"><text user-select="false">{{patent.rightHolder}}</text></view>
+        <view class="form_item" wx:elif="{{patent.rightHolder&&patent.rightHolder.length>0}}"><text user-select="false">{{patent.rightHolder}}</text></view>
+        <view class="form_item" wx:else><text user-select="false">{{patent.applicant}}</text></view>
       </my-form-item>
     </view>
     <!-- <view wx:else>
@@ -51,7 +52,7 @@
       </my-form-item>
     </view> -->
     <my-form-item wx:if="{{patent.inventor && patent.inventor.length>0}}" label="设计人:" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{isSame?350:labelWidth}}" labelPosition="{{labelPosition}}">
-        <view class="form_item">{{patent.inventor}}</view>
+        <view class="form_item"><text user-select="false">{{patent.inventor}}</text></view>
       </my-form-item>
   </view>
   
@@ -59,10 +60,10 @@
      <wux-divider wux-class="line" position="left" text="代理人" />
       <view class="form">
         <my-form-item wx:if="{{patent.agency && patent.agency.length>0}}" label="代理机构:" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
-          <view class="form_item">{{patent.agency}}</view>
+          <view class="form_item"><text user-select="false">{{patent.agency}}</text></view>
         </my-form-item>
         <my-form-item wx:if="{{patent.agent && patent.agent.length>0}}" label="代理人:" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
-          <view class="form_item">{{patent.agent}}</view>
+          <view class="form_item"><text user-select="false">{{patent.agent}}</text></view>
         </my-form-item>
       </view>
   </block>
@@ -70,7 +71,7 @@
     <block wx:if="{{patent.abstractStr && patent.abstractStr.length>0}}">
       <wux-divider wux-class="line" position="left" text="简要说明" />
       <view class="form_item form">
-        <rich-text nodes="{{patent.abstractStr[0].text_content}}"></rich-text>
+        <rich-text user-select="false" nodes="{{istranslate?translateField.abstractStr:patent.abstractStr[0].text_content}}"></rich-text>
       </view>
     </block>
     

+ 10 - 0
pages/patentDetails/patentDetails.wxss

@@ -45,7 +45,17 @@
   font-size: 14px;
   font-weight: normal;
   color: var(--themeColor);
+  word-wrap: break-word;      /* 旧版本浏览器支持 */
+  overflow-wrap: break-word; 
+  white-space: normal;
   /* width: fit-content;
   border-radius: 10rpx;
   border: 1px solid var(--themeColor); */
+}
+
+.translate{
+  width: fit-content;
+  float: right;
+  margin-top: 10px;
+  color: rgb(20, 134, 45);
 }

+ 2 - 2
pages/personalInformation/personalInformation.wxss

@@ -32,14 +32,14 @@
 }
 .popup{
   height: 100%;
-  padding: 0 25rpx;
+  padding: 20rpx 25rpx;
 }
 .popup_head{
   text-align: center;
   padding: 12px 0;
 }
 .popup_content{
-  background-color: rgb(207, 202, 202);
+  background-color: #e8e8e9;
   padding: 10px;
   border-radius: 10rpx;
   margin-top: 20rpx;

+ 101 - 0
pages/productDetail/productDetail.js

@@ -0,0 +1,101 @@
+// pages/productDetail/productDetail.js
+const app = getApp()
+const api = require('../../api/index')
+const showImage = require('../../utils/showImage')
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    product:{},
+    productId:null,
+    imgHttp:app.globalData.imghttp,
+    labelPosition:'left',
+    labelWidth:180,
+    customStyle:" --padding:5rpx;font-weight:bold",
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad(options) {
+    this.setData(
+      {
+        productId:options.productId
+      }
+    )
+    this.getProductDetail()
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 页面功能
+   */
+  //获取产品信息
+  getProductDetail(){
+    var params = {
+      id:this.data.productId
+    }
+    api.queryHotProductDetail(params).then(res=>{
+      if(res.code == 200){
+        this.setData(
+          {
+            product:res.data.data
+          }
+        )
+      }
+    })
+  },
+
+
+
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage() {
+
+  }
+})

+ 5 - 0
pages/productDetail/productDetail.json

@@ -0,0 +1,5 @@
+{
+  "usingComponents": {
+    "my-form-item": "/myComponents/formItem/formItem"
+  }
+}

+ 30 - 0
pages/productDetail/productDetail.wxml

@@ -0,0 +1,30 @@
+<!--pages/productDetail/productDetail.wxml-->
+<view class="productDetail">
+  <view>
+    <my-form-item wx:if="{{product.name}}" label="产品名称" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
+        <view class="form_item"><text user-select="false">{{product.name}}</text></view>
+    </my-form-item>
+  </view>
+  <view>
+    <swiper class="swiper" autoplay="{{false}}" interval="{{3000}}"  duration="{{500}}" indicator-dots="{{false}}">  
+        <block wx:if="{{product.systemFileList && product.systemFileList.length>0}}">  
+          <swiper-item wx:for="{{product.systemFileList}}" wx:for-item="img" wx:key="*this">  
+            <image src="{{imgHttp+img.guid}}" class="slide-image" mode="aspectFit"/>  
+          </swiper-item>  
+        </block> 
+      </swiper>
+  </view>
+  <view>
+    <view>
+      <my-form-item wx:if="{{product.price}}" label="价格" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
+        <view class="form_item"><text user-select="false">${{product.price}}</text></view>
+      </my-form-item>
+      <my-form-item wx:if="{{product.bestSellingBrand}}" label="销冠品牌" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
+        <view class="form_item"><text user-select="false">{{product.bestSellingBrand}}</text></view>
+      </my-form-item>
+      <my-form-item wx:if="{{product.sellPlatform}}" label="售卖平台" border="{{false}}" customStyle="{{customStyle}}" labelWidth="{{labelWidth}}" labelPosition="{{labelPosition}}">
+        <view class="form_item"><text user-select="false">{{product.sellPlatform}}</text></view>
+      </my-form-item>
+    </view>
+  </view>
+</view>

+ 22 - 0
pages/productDetail/productDetail.wxss

@@ -0,0 +1,22 @@
+/* pages/productDetail/productDetail.wxss */
+.form_item{
+  padding:0 10rpx;
+  font-size: 14px;
+  font-weight: normal;
+  word-wrap: break-word;      /* 旧版本浏览器支持 */
+  overflow-wrap: break-word; 
+  white-space: normal;
+}
+.swiper{
+  height: 200rpx;
+}
+.slide-image {  
+  width: 100%;  
+  height: 100%;  
+  background-size:contain; /* 图片覆盖整个容器,可能部分图片不可见 */  
+  background-position: center; /* 图片居中显示 */  
+  background-repeat: no-repeat; /* 图片不重复 */  
+}
+.productDetail{
+  padding: 20px 20rpx;
+}

+ 44 - 0
pages/riskAssessment/riskAssessment.js

@@ -11,6 +11,8 @@ Page({
     keyword:'',
     scrolltop: 20,
     showDialog:false,
+    showPopup:false, 
+    changeFollow:false,
   },
 
   /**
@@ -37,6 +39,48 @@ Page({
   /**
    * 页面功能实现的区域
    */
+  //关注和监控
+  closePopup(e){
+    this.setData(
+      {
+        showPopup:false
+      }
+    )
+    wx.nextTick(() => {
+      this.setData({ changeFollow: false }) // 在当前同步流程结束后,下一个时间片执行
+    })
+   },
+   openPopup(e){
+    console.log(e)
+    this.setData(
+      {
+        showPopup:true
+      }
+    )
+    if(e.detail && e.detail.changeFollow){
+      this.setData(
+        {
+          changeFollow:true
+        }
+      )
+    }
+   },
+   attention(e){
+    const childComponent = this.selectComponent('#myProduct');
+    // var {type} = e.detail
+    if (childComponent) {  
+      childComponent.attention(e); // 调用子组件的方法  
+    }
+   },
+   cancelFollow(e){
+    const childComponent = this.selectComponent('#myProduct');
+    // var {type} = e.detail
+    if (childComponent) {  
+      childComponent.cancelFollow(e); // 调用子组件的方法  
+    }
+   },
+
+
   //初始化加载
   init(){
     var params = {

+ 2 - 1
pages/riskAssessment/riskAssessment.json

@@ -3,6 +3,7 @@
   "usingComponents": {
     "navBar": "/myComponents/navBar/navBar",
     "myProduct":"/myComponents/product/product",
-    "myDialog":"/myComponents/dialog/dialog"
+    "myDialog":"/myComponents/dialog/dialog",
+    "followPopup":"/pages/component/followPopup/followPopup"
   }
 }

+ 6 - 6
pages/riskAssessment/riskAssessment.wxml

@@ -1,15 +1,15 @@
 <!--pages/riskAssessment/riskAssessment.wxml-->
 <navBar backType="editLaw"></navBar>
 <van-notify id="van-notify" />
+<followPopup show="{{showPopup}}" showCollect="{{false}}" changeFollow="{{changeFollow}}" bindonClose="closePopup" bindattention="attention" bindcancelFollow="cancelFollow"></followPopup>
 <myDialog isShown="{{showDialog}}" title="爆款风险" showFoot="{{false}}" bindcancel="closeDialog">
   <view class="dialog_content">
     <view class="dialog_content_text">
-     <span class="dialog_content_point">爆款产品</span>是指在商品销售中,供不应求,销售量很高的商品,通常所说的卖的很多,人气很高的商品,广泛应用于网店、实物店铺(此款小程序只针对亚马逊)。另一种说法是牛品,爆款商品,爆款宝贝,人气宝贝,热卖商品
+     <span class="dialog_content_point">爆款产品</span>来源于美国亚马逊平台的Top50爆款产品,每周三更新产品清单
     </view>
-    
-    <view class="dialog_content_text" style="margin-top:10px">
+<!--  <view class="dialog_content_text" style="margin-top:10px">
       而此页面的<span class="dialog_content_point">爆款风险</span>是指:在亚马逊各个店铺中热卖、销量高的商品,您想去卖,是否会出现相应的侵权风险等一系列问题。
-    </view>
+    </view> -->
     
   </view>
 </myDialog>
@@ -18,9 +18,9 @@
     <myInput value="{{keyword}}" placeholder="请输入产品相关关键词" bindchange="changeKeyword" bindsearch="search" bindclickInnerIcon="clickInnerIcon"></myInput>
   </view>
   <view class="tishi">
-    爆款产品<van-icon custom-class="vanIcon" name="info" bind:tap="showTishi"/>
+    爆款产品<span style="font-size: 14px;color: black;">(直接点击图片查看该产品专利风险)</span><van-icon custom-class="vanIcon" name="info" bind:tap="showTishi"/>
   </view>
   <view class="main">
-    <myProduct tableData="{{tableData}}"></myProduct>
+    <myProduct tableData="{{tableData}}" id="myProduct" bindshowPopup="openPopup" bindhiddenPopup="closePopup"></myProduct>
   </view>
 </view>

+ 2 - 2
pages/searchRecords/searchRecords.wxml

@@ -13,7 +13,7 @@
       <myCard edit="{{false}}" menu="{{menu}}" data="{{item}}" index="{{index}}" bindvalue='clickMenu'>
         <view slot="head_left" class="head_left">
           <van-tag round color="#3f395c">{{index+ 1}}</van-tag>  
-          <wux-ellipsis class="head_left_title" wx:if="{{item.productId}}" direction="end" content="{{ item.productName }}"/>
+          <wux-ellipsis defaultExpanded="{{false}}" expandText="展开" collapseText="收起" wux-class="ellipsis" class="head_left_title" wx:if="{{item.productId}}" direction="end" content="{{ item.productName }}"/>
         </view>
         <view slot="head_right">
           {{item.searchTime}}
@@ -32,7 +32,7 @@
         </swiper>
         </view>
         <view wx:if="{{ item.searchCondition }}">
-          <wux-ellipsis direction="end" content="检索内容:{{ item.searchCondition }}"/>
+          <wux-ellipsis defaultExpanded="{{false}}" expandText="展开" collapseText="收起" wux-class="ellipsis" direction="end" content="检索内容:{{ item.searchCondition }}"/>
         </view>
       </myCard>
     </block>

+ 130 - 41
pages/searchResults/searchResults.js

@@ -26,7 +26,7 @@ Page({
     patentList:[],
     buttons:[
       {
-        label: '人工服务',
+        label: '付费解读',
         method:'check',
         icon:'/static/image/工单.png'
       },
@@ -42,17 +42,21 @@ Page({
       }
     ],
     concernType:{
-      '0':'myIconicon-test',//黑
+      '0':'myIcongroup43 ',//黑
       '1':'myIconanquanbangzhu',//白
-      '2':'myIcongroup43'//灰
+      '2':'myIconicon-test',//灰
+      '-1':'myIconguanzhu-yiguanzhu'//已关注
     },
     showDialog:false,
+    showDialog2:false,
     followType:null,
     isAdd:false,
     triggered:false,
     load:false,
     hasMore:true,
     clickType:null,//1是关注,2是监控
+    changeFollow:false,
+    dataRangeRecord:[]
   },
 
   /**
@@ -69,12 +73,19 @@ Page({
     )
     console.log(this.data.product)
     this.init()
+    
   },
 
   /**
    * 生命周期函数--监听页面初次渲染完成
    */
   onReady() {
+    this.setData(
+      {
+        patentNoList:[],
+        patentList:[],
+      }
+    )
   },
 
   /**
@@ -87,6 +98,21 @@ Page({
   /**
    * 页面功能
    */
+  //获取检索专利的范围
+  getDataRangeRecord(){
+    if(this.data.dataRangeRecord  && this.data.dataRangeRecord.length>0){
+      return false
+    }
+    api.getDataRangeRecord().then(res=>{
+      if(res.code == 200){
+        this.setData(
+          {
+            dataRangeRecord:res.data.data
+          }
+        )
+      }
+    })
+  },
   //初始化加载
   init(){
     var params = {
@@ -98,8 +124,6 @@ Page({
         queryParams:params,
         total:0,
         tableData:[],
-        patentNoList:[],
-        patentList:[],
         hasMore:true
       }
     )
@@ -114,7 +138,39 @@ Page({
     })
     this.init()
   },
- 
+  toURL(){
+    console.log(2)
+    // if(this.data.searchType == 1 && this.data.product.id){
+    //   wx.navigateTo({
+    //     url: '/pages/productDetail/productDetail?productId='+this.data.product.id,
+    //   })
+    // }
+    if(this.data.product.amazonLink){
+      wx.navigateTo({
+        url: '/pages/webView/webView?src='+this.data.product.amazonLink,
+      })
+    }
+    
+  
+  },
+
+  openDialog2(){
+    this.getDataRangeRecord()
+    this.setData(
+      {
+        showDialog2:true
+      }
+    )
+  },
+  closeDialog2(){
+    this.setData(
+      {
+        showDialog2:false
+      }
+    )
+  },
+
+
   //查看图片
   previewImage(e) {
     console.log(e)
@@ -171,7 +227,8 @@ Page({
         ["product."+field]:value,
         ["product.filePath"]:filePath,
         ifAddSearchRecord:true,
-        concernType:null
+        concernType:null,
+        searchType:0
       }
     )
     this.init()
@@ -321,6 +378,11 @@ Page({
 
   //关注产品
   open(clickType=1){
+
+    if(this.data.searchType == 0 && !this.data.product.id){
+      this.toImproveInformation('关注')
+      return false
+    }
     this.setData(
       {
         showDialog:true,
@@ -333,9 +395,12 @@ Page({
     this.setData(
       {
         showDialog:false,
-        followType:null,
+        followType:null
       }
     )
+    wx.nextTick(() => {
+      this.setData({ changeFollow: false }) // 在当前同步流程结束后,下一个时间片执行
+    })
   },
   //关注类型
   attention(e){
@@ -348,39 +413,27 @@ Page({
   },
   //是否收藏
   changeIsAdd(e){
-    
     this.setData(
       {
         isAdd:e.detail
       }
     )
-    console.log(e)
   },
   //确认关注
-  confirm(){
-    console.log(this.data.followType)
-    if(this.data.followType != 0 && !this.data.followType){
-      api.notify(
-        {
-          type:'warning',
-          message:'请选择关注类型',
-          top:wx.getStorageSync('height')
-        }
-      )
-      return false
-    }
+  confirm(e){
+    var {type,isAdd} = e.detail
+    this.setData(
+      {
+        isAdd:isAdd
+      }
+    )
     var that = this
-    if(this.data.searchType == 0){
-      console.log(1)
-      this.toImproveInformation('关注')
-      return false
-    }
     var params = {
       productId:this.data.product.id,
-      concernType:this.data.followType
+      concernType:type==-1?null:type
     }
     if(this.data.clickType == 2){
-      this.addMonitoring(params,this.data.followType)
+      this.addMonitoring(params,type)
       return
     }
     wx.showLoading({
@@ -396,7 +449,7 @@ Page({
         }
         api.notify(obj)
         that.setData({
-          ['product.concernType'] : that.data.followType,
+          ['product.concernType'] : type,
         })
         that.closeDialog()
         this.collectPatent()
@@ -412,7 +465,7 @@ Page({
         // 通过eventChannel向被打开页面传送数据
         var data = {
           ...that.data.product,
-          concernType:that.data.followType,
+          // concernType:that.data.followType,
           method:method
         }
         res.eventChannel.emit('acceptDataFromOpenerPage', data)
@@ -440,14 +493,26 @@ collectPatent(){
     }
   }
 },
+
+//打开弹窗
+cancel(){
+  this.setData(
+    {
+      changeFollow:true,
+      showDialog:true,
+      clickType:1
+    }
+  )
+},
   //取消关注
   cancelFollow(e){
     if(!this.data.product.id){
       return false
     }
+    // this.closeDialog()
     wx.showModal({
       title: '提示',
-      content: '确认取消关注?',
+      content: '取消关注后会取消该产品的监控,确认取消关注?',
       complete: (res) => {
         if (res.cancel) {}
         if (res.confirm) {
@@ -455,6 +520,7 @@ collectPatent(){
           var params = {
             productId:product.id
           }
+          this.closeDialog()
           wx.showLoading({
             title: '取消中',
           })
@@ -469,13 +535,14 @@ collectPatent(){
               }
               api.notify(obj)
               this.setData({
-                ['product.concernType'] : null
+                ['product.concernType'] : null,
+                ["product.ifMonitor"]:false
               })
-              if(this.data.searchType == 0){
-                this.setData({
-                  ['product.id'] : null
-                })
-              }
+              // if(this.data.searchType == 0){
+              //   this.setData({
+              //     ['product.id'] : null
+              //   })
+              // }
             }
           })
         }
@@ -484,7 +551,7 @@ collectPatent(){
   },
  //监控
  control(e){
-  if(this.data.searchType == 0 ){
+  if(this.data.searchType == 0 && !this.data.product.id){
     this.toImproveInformation('监控')
     return
   }
@@ -502,7 +569,7 @@ collectPatent(){
         }
       }
     })
-    retrun 
+    return false;
   }
   this.open(2)
 },
@@ -522,7 +589,6 @@ addMonitoring(product,type){
     api.notify(obj)
     this.setData(
       {
-        showDialog:false,
         ['product.ifMonitor'] : true,
       }
     )
@@ -531,6 +597,7 @@ addMonitoring(product,type){
         ['product.concernType'] : type,
       })
     }
+    this.closeDialog()
   })
 },
 
@@ -564,6 +631,7 @@ addMonitoring(product,type){
     }
   })
 },
+
 cancelControl(){
   var product = this.data.product
   var params = {
@@ -640,8 +708,29 @@ export(){
 },
 //我要查风险
 check(){
+  if(!this.data.patentNoList || this.data.patentNoList.length == 0){
+    wx.showToast({
+      title: '请先选择专利',
+      icon:'none'
+    })
+    return false
+  }
+  var that = this
   wx.navigateTo({
     url: '/pages/form/riskAssessment/riskAssessment',
+    events: {
+      // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
+      acceptDataFromOpenedPage: function(data) {
+        console.log(data)
+      },
+      someEvent: function(data) {
+        console.log(data)
+      }
+    },
+    success: function(res) {
+      // 通过eventChannel向被打开页面传送数据
+      res.eventChannel.emit('acceptDataFromOpenerPage', { patentNoList:that.data.patentNoList })
+    }
   })
 },
 makePhoneCall(){

+ 4 - 3
pages/searchResults/searchResults.json

@@ -6,8 +6,9 @@
     "van-divider": "/miniprogram_npm/@vant/weapp/divider/index",
     "myFloatButton":"/myComponents/floatButton/floatButton",
     "van-checkbox": "/miniprogram_npm/@vant/weapp/checkbox/index",
-  "van-checkbox-group": "/miniprogram_npm/@vant/weapp/checkbox-group/index",
-  "wux-gallery": "/miniprogram_npm/wux-weapp/gallery/index",
-  "myDialog":"/myComponents/dialog/dialog"
+    "van-checkbox-group": "/miniprogram_npm/@vant/weapp/checkbox-group/index",
+    "wux-gallery": "/miniprogram_npm/wux-weapp/gallery/index",
+    "myDialog":"/myComponents/dialog/dialog",
+    "followPopup":"/pages/component/followPopup/followPopup"
   }
 }

+ 25 - 14
pages/searchResults/searchResults.wxml

@@ -2,7 +2,7 @@
 <navBar></navBar>
 <van-notify id="van-notify" />
 <myFloatButton count="{{patentNoList.length}}" bind:click="clickButton"></myFloatButton>
-<myDialog isShown="{{showDialog}}" title="选择关注的类型" bindcancel="closeDialog" bindconfirm="confirm">
+<!-- <myDialog isShown="{{showDialog}}" title="选择关注的类型" bindcancel="closeDialog" bindconfirm="confirm">
   <view>
     <view class="grids"  bordered="{{ false }}">
         <view class="grid {{followType == 1?'checked':''}}" data-type="1" catch:tap="attention">
@@ -11,12 +11,12 @@
         </view>
         <view class="line"></view>
         <view class="grid {{followType == 2?'checked':''}}" data-type="2"  catch:tap="attention">
-          <view class="iconfont myIcongroup43 operate_icon"></view>
+          <view class="iconfont myIconicon-test  operate_icon"></view>
           <view class="operate_text">灰名单</view>
         </view>
         <view class="line"></view>
         <view class="grid {{followType == 0?'checked':''}}" data-type="0" catch:tap="attention">
-          <view class="iconfont myIconicon-test operate_icon"></view>
+          <view class="iconfont myIcongroup43 operate_icon"></view>
           <view class="operate_text">黑名单</view>
         </view>
       </view>
@@ -24,7 +24,17 @@
         <van-checkbox value="{{ isAdd }}" bind:change="changeIsAdd">选择的专利是否收藏到对应产品当中</van-checkbox>
       </view>
   </view>
+</myDialog> -->
+
+<followPopup show="{{showDialog}}" showCollect="{{true}}" changeFollow="{{changeFollow}}" bindonClose="closeDialog" bindattention="confirm" bindcancelFollow="cancelFollow"></followPopup>
+
+<myDialog isShown="{{showDialog2}}" title="数据的检索范围" showFoot="{{false}}" bindcancel="closeDialog2">
+  <view class="dialog2" wx:for="{{dataRangeRecord}}">
+    <view class="dialog2_title">{{item.name}}</view>
+    <view class="dialog2_value">({{item.startTime}}到{{item.endTime}})</view>
+  </view>
 </myDialog>
+
 <wux-fab-button
   position="bottomRight"
   theme="balanced"
@@ -46,25 +56,25 @@
       <image class="img" src="/static/image/logo-3.png" mode=""/>
     </view> -->
     <view>
-      <myInput value="{{keyword}}" ownner="{{false}}" placeholder="请输入产品相关关键词" bindinput="changeKeyword" bindchangeSearchType="changeSearchType" bindsearch="search"></myInput>
+      <myInput value="{{keyword}}" filePath="{{product.filePath}}" ownner="{{false}}" placeholder="请输入产品相关关键词" bindinput="changeKeyword" bindchangeSearchType="changeSearchType" bindsearch="search"></myInput>
     </view>
   </view>
   <view class="product">
     <view class="product_head">
-      <view class="product_text"> 
-        <wux-ellipsis class="head_left_title" wx:if="{{product.name}}" direction="end" content="产品名称:{{ product.name }}"/>
+      <view class="product_text" bind:tap="toURL"> 
+        <wux-ellipsis wx:if="{{product.name}}" defaultExpanded="{{false}}" expandText="展开" collapseText="收起" wux-class="ellipsis" class="head_left_title"  direction="end" content="产品名称:{{ product.name }}"/>
       <!-- <text wx:if="{{product.name}}">产品名称:{{product.name}}</text> -->
       </view>
 
       <view class="product_icon">
-        <view wx:if="{{product.concernType == 0 || product.concernType}}" class="iconfont {{concernType[product.concernType]}}"  catch:tap="cancelFollow"></view>
+        <view wx:if="{{product.concernType == 0 || product.concernType}}" class="iconfont {{concernType[product.concernType]}}"  catch:tap="cancel"></view>
         <view wx:else class="iconfont myIconguanzhu" bind:tap="open"></view>
 
         <view wx:if="{{!product.ifMonitor}}" class="iconfont myIconmonitor" catch:tap="control"></view>
         <view wx:else class="iconfont myIcona-yijiankong2x" catch:tap="cancelControl"></view>
       </view>
     </view>
-    <view>
+    <view wx:if="{{(searchType == 1 && product.systemFileList && product.systemFileList.length>0)||(searchType == 0 && product.filePath)}}">
       <swiper class="swiper" autoplay="{{false}}" interval="{{3000}}"  duration="{{500}}" indicator-dots="{{false}}">  
         <block wx:if="{{searchType == 1 && product.systemFileList && product.systemFileList.length>0}}">  
           <swiper-item wx:for="{{product.systemFileList}}" wx:for-item="img" wx:key="*this">  
@@ -77,11 +87,9 @@
           <image  class="slide-image" src="{{product.filePath}}" mode="aspectFit"/>
           <!-- <view class="slide-image" style="background-image: url('{{product.filePath}}')"></view> -->
         </swiper-item>
-        <swiper-item wx:else>
-        
+        <!-- <swiper-item wx:else>
           <image  class="slide-image" src="/static/image/empty.gif" mode="aspectFit"/>
-          <!-- <view class="slide-image" style="background-image: url('/static/image/empty.gif')"></view> -->
-        </swiper-item>
+        </swiper-item> -->
       </swiper>
     </view>
     <view class="product_text" wx:if="{{product.key || product.companyName}}">
@@ -93,7 +101,10 @@
     <view class="content_head">
       <view class="content_head_description">注:非会员可选择100条</view>
       <view class="content_head_result">
-        <view class="content_head_result_description">以下是您的检索结果:</view>
+        <view class="content_head_result_description">
+          以下是您的检索结果
+          <van-icon name="question" bind:tap="openDialog2"/>
+        </view>
         <!-- <view class="content_head_result_btn" bind:tap="export">
           一键导出
         </view> -->
@@ -121,7 +132,7 @@
             </block>
           </swiper>
           <view wx:if="{{item.title && item.title.length>0}}" class="text">
-            <wux-ellipsis direction="end" content="标题:{{item.title[0].text_content}}"/>
+            <wux-ellipsis defaultExpanded="{{false}}" expandText="展开" collapseText="收起" wux-class="ellipsis" direction="end" content="标题:{{item.title[0].text_content}}"/>
           </view>
           <view wx:if="{{item.rightHolder && item.rightHolder.length>0}}"  class="text">
             专利权人:

+ 17 - 0
pages/searchResults/searchResults.wxss

@@ -117,4 +117,21 @@
 }
 .myIcongroup43{
   font-size: 50rpx;
+}
+
+.dialog2{
+  text-align: left;
+  margin-bottom: 10px;
+  display: flex;
+}
+.dialog2_title{
+  color: black;
+  font-weight: bold;
+  margin-bottom: 10px;
+  margin-right: 10px;
+  font-size: 16px;
+}
+.dialog2_value{
+  color: black;
+  font-size: 14px;
 }

+ 15 - 1
pages/selectedPatents/selectedPatents.js

@@ -77,10 +77,24 @@ Page({
     )
 
   },
-  //人工服务
+  //付费解读
   humanServices(){
+    var that = this
     wx.navigateTo({
       url: '/pages/form/riskAssessment/riskAssessment',
+      events: {
+        // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
+        acceptDataFromOpenedPage: function(data) {
+          console.log(data)
+        },
+        someEvent: function(data) {
+          console.log(data)
+        }
+      },
+      success: function(res) {
+        // 通过eventChannel向被打开页面传送数据
+        res.eventChannel.emit('acceptDataFromOpenerPage', { patentNoList:that.data.patentNoList })
+      }
     })
   },
   //导出

+ 1 - 1
pages/selectedPatents/selectedPatents.wxml

@@ -45,7 +45,7 @@
       </block>
   </scroll-view>
   <view class="foot">
-    <view class="foot_btn" bind:tap="humanServices">人工服务</view>
+    <view class="foot_btn" bind:tap="humanServices">付费解读</view>
     <view class="foot_btn" bind:tap="export">导出专利</view>
   </view>
 </view>

+ 72 - 0
pages/webView/webView.js

@@ -0,0 +1,72 @@
+// pages/webView/webView.js
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    src:''
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad(options) {
+    if(options.src){
+      this.setData(
+        {
+          src:options.src
+        }
+      )
+    }
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage() {
+
+  }
+})

+ 3 - 0
pages/webView/webView.json

@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}

+ 6 - 0
pages/webView/webView.wxml

@@ -0,0 +1,6 @@
+<!--pages/webView/webView.wxml-->
+<view class="page-body">
+  <view class="page-section page-section-gap">
+    <web-view src="{{src}}"></web-view>
+  </view>
+</view>

+ 5 - 0
pages/webView/webView.wxss

@@ -0,0 +1,5 @@
+/* pages/webView/webView.wxss */
+.page-section-gap{
+  box-sizing: border-box;
+  padding: 0 30rpx;
+}

File diff suppressed because it is too large
+ 34 - 2
static/iconfont/iconfont.wxss


+ 2 - 2
utils/downLoad.js

@@ -1,7 +1,7 @@
 import Notify from '../miniprogram_npm/@vant/weapp/notify/notify';
 const config = {  
-  baseURL: 'http://192.168.2.111:8802', // 基础URL 
-  // baseURL: 'https://www.xsip.cn', // 基础URL   
+  // baseURL: 'http://192.168.2.111:8802', // 基础URL 
+  baseURL: 'https://www.xsip.cn', // 基础URL   
   timeout: 30000, // 超时时间(单位ms)  
   header: {  
     'content-type': 'application/xls', // 默认请求头  

+ 21 - 1
utils/pay.js

@@ -1,4 +1,19 @@
+import Notify from '../miniprogram_npm/@vant/weapp/notify/notify';
 const api = require('../api/index')
+const config = {  
+  tabbar:["pages/index/index","pages/hotProduct/hotProduct","pages/mine/mine"]
+};
+function getPages(){
+  var obj = {
+    type: 'danger'
+  }
+  var pages = getCurrentPages()
+  var route = pages[pages.length - 1]?.route
+  if(route && config.tabbar.indexOf(route)==-1){
+    obj.top = wx.getStorageSync('height')
+  }
+  return obj
+}
 function payMoney(data){
   return new Promise((resolve, reject) => { 
     api.weixinpay(data).then(res=>{
@@ -19,8 +34,13 @@ function payMoney(data){
                   // resolve(res); 
                 },
                 "fail":function(res){
+                  var obj = getPages()
+                  obj.message = '支付失败'
+                  if(obj.message){
+                    Notify(obj)
+                  }
                   // console.log(res)
-                  resolve(res); 
+                  // resolve(res); 
                 },
                 "complete":function(res){
                   console.log(res)

+ 1 - 1
utils/request.js

@@ -15,7 +15,7 @@ const config = {
   tabbar:["pages/index/index","pages/hotProduct/hotProduct","pages/mine/mine"]
 };  
 const apiUrl = {  
-  develop: 'http://192.168.2.111:8902', // 开发环境地址  
+  develop: 'https://www.xsip.cn/test', // 开发环境地址  
   trial: 'https://www.xsip.cn/test', // 测试环境地址  
   release: 'https://www.xsip.cn' // 生产环境地址  
 };

+ 1 - 1
utils/upload.js

@@ -14,7 +14,7 @@ const config = {
   tabbar:["pages/index/index","pages/hotProduct/hotProduct","pages/mine/mine"] 
 };  
 const apiUrl = {  
-  develop: 'http://192.168.1.18:8802', // 开发环境地址  
+  develop: 'https://www.xsip.cn', // 开发环境地址  
   trial: 'https://www.xsip.cn', // 测试环境地址  
   release: 'https://www.xsip.cn' // 生产环境地址  
 };