2
0

12 Commity f824804bec ... 2e072824ba

Autor SHA1 Správa Dátum
  panyong 2e072824ba Merge branch 'H5-tuotuo' into dev 2 rokov pred
  panyong 2853485034 驼驼:H5 2 rokov pred
  panyong 9d6b5e1c2d Merge branch 'shining-project' 2 rokov pred
  panyong bf8e38ca88 Merge branch 'shining-project' 2 rokov pred
  panyong 71962bdfe4 Merge branch 'H5-tuotuo' 2 rokov pred
  panyong 6cac877abc 妥妥:合伙人协议修改 2 rokov pred
  panyong 901cb9c4ef 妥妥:合伙人协议修改 2 rokov pred
  panyong de5ee0f295 妥妥:海报生成样式 2 rokov pred
  panyong d3afb0b033 妥妥推手:迭代 2 rokov pred
  panyong 1f2d64b656 妥妥推手:迭代 2 rokov pred
  panyong c72559893e 妥妥推手:迭代 2 rokov pred
  panyong d4e5ad76db update gitignore 2 rokov pred

+ 1 - 0
.gitignore

@@ -19,3 +19,4 @@ yarn-error.log*
 *.njsproj
 *.sln
 *.sw?
+*.run

+ 2 - 2
htmldev/loan/src/api/request.js

@@ -19,7 +19,7 @@ request.interceptors.request.use(request => {
   request.url = requestUrl + (requestUrl.indexOf('?') > -1 ? '&' : '?') + 'next=' + encodeURIComponent(location.href)
   // 因为微信开发者工具重复授权,本地开发时写死
   if (/^(0|192|10|localhost)|(test$)/.test(domain)) {
-    request.url += '&owner_open_id=o0wUBtDVDAvu3z1GRu58kv4_9DnI'
+    request.url += '&pro=tuotuo'
   }
   return request
 }, error => {
@@ -33,7 +33,7 @@ request.interceptors.response.use(response => {
   const { code, authorizeUrl } = response.data
   if (code === 301 && authorizeUrl) {
     location.replace(authorizeUrl)
-  } else if (code === 403) {
+  } else if (code === 403 && router.currentRoute.name !== 'partnerLogin') {
     router.push('/partner/login')
   }
   return response.data

+ 31 - 31
htmldev/loan/src/views/loan/apply/index.vue

@@ -11,7 +11,7 @@
           <div class="value-name">
             <input type="text" placeholder="请输入姓名" v-myBlur v-model.trim="postData.orderUserName">
           </div>
-          <div class="value-gender">
+          <div class="value-gender" v-if="false">
             <p v-for="str in ['男', '女']" :key="str" @click="postData.orderUserSex = str">
               <img src="./image/btn_xingbie_sel@2x.png" alt="" v-show="postData.orderUserSex === str">
               <img src="./image/btn_xingbie_nor@2x.png" alt="" v-show="postData.orderUserSex !== str">
@@ -45,9 +45,12 @@
         <div class="value-wrap">
           <input type="tel" placeholder="请输入验证码" v-myBlur v-model.trim="postData.code" @input="funLimitLength">
         </div>
-        <button class="get-code" @click="funGetCode">{{ [0, 60].includes(numCount) ? '获取' : numCount + '秒' }}</button>
+        <button class="get-code" @click="funGetCode">{{
+            [0, 60].includes(numCount) ? '获取' : numCount + '秒'
+          }}
+        </button>
       </li>
-      <li>
+      <li v-if="false">
         <label>
           <span v-for="(str, index) in '所在城市:'" :key="index">{{ str }}</span>
         </label>
@@ -60,7 +63,7 @@
           <img src="./image/btn_next@2x.png" alt="">
         </div>
       </li>
-      <li>
+      <li v-if="false">
         <label>
           <span v-for="(str, index) in '小区名称:'" :key="index">{{ str }}</span>
         </label>
@@ -104,6 +107,7 @@ import { Popup, Picker, Toast } from 'vant'
 import { createOrder } from './api'
 import { getChinaArea, sendSMS, getProductDetail } from '../../../api/common'
 import { funWxShare } from '../../../utils/wxShareConfig'
+import { isMobile, isSmscode } from '../../../utils/validate'
 
 const STRCAPTURE = process.env.API_DOMAIN + '/api/captcha'
 export default {
@@ -132,15 +136,15 @@ export default {
     return {
       postData: {
         orderUserName: '', // 用户名称
-        orderUserSex: '男',
+        // orderUserSex: '男',
         orderUserPhone: '', // 手机号码
         code: '', // 验证码
-        capture: '',
-        orderPrice: '', // 申请金额
-        orderProvince: '', // 省份
-        orderCity: '', // 城市
-        orderDistrict: '', // 区域
-        orderAddress: '' // 详细地址
+        // capture: '',
+        orderPrice: '' // 申请金额
+        // orderProvince: '', // 省份
+        // orderCity: '', // 城市
+        // orderDistrict: '', // 区域
+        // orderAddress: '' // 详细地址
       },
       numCount: 60,
       arrErrorList: [],
@@ -178,15 +182,15 @@ export default {
     if (!this.$route.meta.isUseCache) {
       this.postData = {
         orderUserName: '',
-        orderUserSex: '男',
+        // orderUserSex: '男',
         orderUserPhone: '',
         code: '',
-        capture: '',
-        orderPrice: '',
-        orderProvince: '',
-        orderCity: '',
-        orderDistrict: '',
-        orderAddress: ''
+        // capture: '',
+        orderPrice: ''
+        // orderProvince: '',
+        // orderCity: '',
+        // orderDistrict: '',
+        // orderAddress: ''
       }
       this.numCount = 60
       this.arrErrorList = []
@@ -260,7 +264,7 @@ export default {
         return
       }
       this.numCount = 60
-      if (!(/^1[2|3|4|5|6|7|8|9]\d{9}$/.test(orderUserPhone))) {
+      if (!isMobile(orderUserPhone)) {
         Toast('请输入手机号码')
         return
       }
@@ -287,26 +291,22 @@ export default {
       })
     },
     verifyData () {
-      const { orderUserName, orderUserSex, orderUserPhone, code, orderProvince, orderCity, orderDistrict, orderAddress, orderPrice } = this.postData
+      const {
+        orderUserName,
+        orderUserPhone,
+        code,
+        orderPrice
+      } = this.postData
       this.arrErrorList = []
       if (!orderUserName) {
         this.arrErrorList.push('请输入姓名')
       }
-      if (!orderUserSex) {
-        this.arrErrorList.push('请选择性别')
-      }
-      if (!/^1[2|3|4|5|6|7|8|9]\d{9}$/.test(orderUserPhone)) {
+      if (!isMobile(orderUserPhone)) {
         this.arrErrorList.push('请输入手机号码')
       }
-      if (!(/^\d{4}$/.test(code))) {
+      if (!isSmscode(code)) {
         this.arrErrorList.push('请输入验证码')
       }
-      if (!orderProvince || !orderCity || !orderDistrict) {
-        this.arrErrorList.push('请选择所在城市')
-      }
-      if (!orderAddress) {
-        this.arrErrorList.push('请输入小区名称')
-      }
       if (orderPrice * 1 <= 0) {
         this.arrErrorList.push('请输入需求金额')
       }

+ 11 - 4
htmldev/loan/src/views/loan/explain/index.vue

@@ -121,12 +121,19 @@ export default {
       }
     }
   },
-  created () {
-    this.fetchUserShare()
-  },
   async mounted () {
     await this.$nextTick()
-    this.funGetProductDetail()
+    if (!this.partnerId) {
+      this.fetchUserShare()
+      this.funGetProductDetail()
+    } else {
+      this.$router.replace({
+        path: '/loan/apply/' + this.orderProductId,
+        query: {
+          partnerId: this.partnerId
+        }
+      })
+    }
   },
   methods: {
     // 获取用户分享权限

+ 34 - 114
htmldev/loan/src/views/partner/compact/index.vue

@@ -1,21 +1,25 @@
 <template>
   <div class="wrapper">
     <h4>合伙人协议</h4>
-    <p class="mt-10">合伙人必须仔细阅读并完全同意本《合伙人协议》全部条款,自行完成申请。合伙人确认申请或使用本业务的行为将视为合伙人对本协议全部内容和条款的接受。</p>
+    <p>
+      合伙人必须仔细阅读并完全同意本《合伙人协议》全部条款,自行完成申请。合伙人确认申请或使用本业务的行为将视为合伙人对本协议全部内容和条款的接受。</p>
     <div class="mt-20">
       <p>第一条 保证与陈述</p>
-      <p>1. 合伙人保证,合伙人具有从事本协议项下交易所需具备的一切资质,其有资格从事本协议项下的交易;且其从事本协议交易的行为不违反中华人民共和国的法律法规等有约束力的规范性法律文件的规定。</p>
+      <p>1.
+        合伙人保证,合伙人具有从事本协议项下交易所需具备的一切资质,其有资格从事本协议项下的交易;且其从事本协议交易的行为不违反中华人民共和国的法律法规等有约束力的规范性法律文件的规定。</p>
       <p>2.
         合伙人知悉并确认,“妥妥推手”推广平台仅授权合伙人在区域内非独家地宣传推广产品及其他“妥妥推手”引入的推广产品(以下简称“‘妥妥推手’产品”),且该授权不可转授权,“妥妥推手”保留与“妥妥推手”产品或服务相关的全部知识产权的所有权及其他权利。</p>
     </div>
     <div class="mt-20">
       <p>第二条 合作内容</p>
-      <p>1. 合伙人在合伙人首页申请成为“妥妥推手”合伙人,获得“妥妥推手”专属邀请链接或二维码;合伙人将邀请链接或二维码发送至“妥妥推手”目标客群用户,用户通过合伙人分享的链接或二维码注册并进行后续操作。</p>
+      <p>1.
+        合伙人在合伙人首页申请成为“妥妥推手”合伙人,获得“妥妥推手”专属邀请链接或二维码;合伙人将邀请链接或二维码发送至“妥妥推手”目标客群用户,用户通过合伙人分享的链接或二维码注册并进行后续操作。</p>
       <p>2. “妥妥推手”根据《合伙规则》对合伙人推广效果数据进行核查,并根据《合伙规则》进行奖励结算。</p>
     </div>
     <div class="mt-20">
       <p>第三条 “妥妥推手”的权利和义务</p>
-      <p>1. “妥妥推手”负责“妥妥推手”产品的开发,有责任确保其在移动终端的有效运行和不断优化,更新完善,以避免技术性投诉(属移动终端故障、移动网络的技术原因除外)。</p>
+      <p>1.
+        “妥妥推手”负责“妥妥推手”产品的开发,有责任确保其在移动终端的有效运行和不断优化,更新完善,以避免技术性投诉(属移动终端故障、移动网络的技术原因除外)。</p>
       <p>2.
         如合伙人拥有信息服务平台类渠道,“妥妥推手”有权要求合伙人提供的信息服务行为符合国家法律法规规定,如“妥妥推手”发现合伙人存在非正常状态下的推广情况,属于合伙人严重违约,“妥妥推手”可立即要求合伙人停止推广,并有权随时终止本协议,按照本协议第七条约定追究合伙人违约责任。</p>
       <p>3.
@@ -26,12 +30,14 @@
         “妥妥推手”有权对合伙人推广合作效果进行评价和数据表现考核,数据表现以“妥妥推手”提供数据为准,如果“妥妥推手”发现合伙人业务数据存在异常(包括但不限于用信率过低等),合伙人有义务配合“妥妥推手”进行核查,并对数据异常进行解释。如果合伙人不能给予合理解释或未经“妥妥推手”书面认可,“妥妥推手”有权不予以结算合伙人推广费用。如“妥妥推手”确认该笔业务数据异常为合伙人违规操作或作弊造成,合伙人属于严重违约,“妥妥推手”有权按照本协议第七条约定追究合伙人违约责任。</p>
       <p>6.
         如“妥妥推手”发现合伙人存在违规、作弊情况,包括但不限于刷单行为(如以完成任务领取红包为目的,非贷款用户等)、欺骗用户行为、冒用客户信息操作行为、通过地推、短信、微信群、QQ群等不符合“妥妥推手”要求的方式推广、使用利率或额度等与“妥妥推手”产品信息不符的文案推广、使用页面嵌套模式、篡改渠道号,篡改“妥妥推手”产品信息、“妥妥推手”或“妥妥推手”产品提供方的官方签名等行为,或者“妥妥推手”收到客户投诉,则“妥妥推手”有权要求合伙人立即停止推广及停止相关违规、作弊行为,对于上述违规作弊行为的数据不予结算,“妥妥推手”亦有权随时终止本协议并按照本协议第七条约定追究合伙人违约责任。</p>
-      <p>7. “妥妥推手”有权根据自身业务发展需要对本协议及“妥妥推手”产品做出调整,包括但不限于提前终止本协议、终止结算、变更合作模式、变更“妥妥推手”产品名称、功能或内容等。</p>
+      <p>7.
+        “妥妥推手”有权根据自身业务发展需要对本协议及“妥妥推手”产品做出调整,包括但不限于提前终止本协议、终止结算、变更合作模式、变更“妥妥推手”产品名称、功能或内容等。</p>
       <p>8. “妥妥推手”应保证对“妥妥推手”产品享有合法的知识产权。</p>
     </div>
     <div class="mt-20">
       <p>第四条 合伙人的权利和义务</p>
-      <p>1. 合伙人负责并自负费用处理因合伙人原因导致的最终用户针对合伙人推广行为提出的投诉、举报、诉讼、仲裁及任何其他程序。</p>
+      <p>1.
+        合伙人负责并自负费用处理因合伙人原因导致的最终用户针对合伙人推广行为提出的投诉、举报、诉讼、仲裁及任何其他程序。</p>
       <p>2.
         合伙人保证其推广行为不违反任何法律法规、主管行政机关的有关规定以及基础电信运营商的相关管理规范等,也不侵犯任何第三方的合法权益,包括但不限于知识产权等,若因合伙人推广行为导致任何纠纷或致使“妥妥推手”或“妥妥推手”产品提供方受到有关处罚或承担责任的,上述行为属于合伙人严重违约行为,“妥妥推手”有权立即解除协议,并要求合伙人负责解决争议事项,同时,
         “妥妥推手”有权按照本协议第七条约定追究合伙人违约责任。 “妥妥推手”有权按照本协议第七条约定追究合伙人违约责任。</p>
@@ -41,7 +47,8 @@
         合伙人在其负责推广的所有渠道中所使用的本协议约定产品仅限由“妥妥推手”提供,“妥妥推手”为唯一提供者,合伙人不得使用除“妥妥推手”之外任何第三方提供的“妥妥推手”产品。“妥妥推手”仅对自己授权的“妥妥推手”产品和业务提供相应服务。</p>
       <p>5.
         合伙人在推广过程中,应严格按照国家法律法规及运营商的要求进行推广,合伙人不得擅自修改“妥妥推手”产品的logo、产品包签名、产品名称、产品类别、产品介绍、推广语、产品截图、下载机型分类等信息,不得用无关内容误导用户下载,不得在色情,赌博等非法网站、频道页面或移动终端上推广。如果因为合伙人的原因导致客户或第三方投诉,合伙人将承担由此造成的一切责任及后果,且“妥妥推手”有权按照本协议第七条约定追究合伙人违约责任。</p>
-      <p> 6. 未经“妥妥推手”事先书面许可,合伙人不得自行或允许或协助、或以任何其他方式使第三方对“妥妥推手”产品的任何部分进行修改、改编、更改、拆分、分解、反向工程或二次开发。</p>
+      <p>6.
+        未经“妥妥推手”事先书面许可,合伙人不得自行或允许或协助、或以任何其他方式使第三方对“妥妥推手”产品的任何部分进行修改、改编、更改、拆分、分解、反向工程或二次开发。</p>
       <p>7.
         如果由于合伙人违反本协议约定使用“妥妥推手”产品,包括但不限于使用任何方式侵害第三方知识产权,或包含任何淫秽、诽谤、中伤、谣言、种族主义或任何侵害他人名称权、名誉权或隐私权的材料或信息,属于合伙人严重违约行为,“妥妥推手”有权按照本协议第七条约定内容追究合伙人违约责任。</p>
       <p>8.
@@ -67,9 +74,12 @@
     </div>
     <div class="mt-20">
       <p>第六条 知识产权</p>
-      <p>1. 有关“妥妥推手”产品的版权标识以及“妥妥推手”相关信息的使用,合伙人应完全遵守相关法律法规及双方约定;合伙人不得随意变更、删除“妥妥推手”产品的版权标识。</p>
-      <p>2. 如任何一方发现有第三人侵犯“妥妥推手”产品的知识产权或其他合法权益,应及时通知对方,并采取措施,追究侵权者的法律责任。</p>
-      <p>3. 如产品涉及开源技术的使用,则“妥妥推手”将按照采用的开源技术对应的开源协议对产品做出知识产权承诺。任何因产品使用的开源技术所引发的第三方针对产品的知识产权纠纷,“妥妥推手”免责。</p>
+      <p>1.
+        有关“妥妥推手”产品的版权标识以及“妥妥推手”相关信息的使用,合伙人应完全遵守相关法律法规及双方约定;合伙人不得随意变更、删除“妥妥推手”产品的版权标识。</p>
+      <p>2.
+        如任何一方发现有第三人侵犯“妥妥推手”产品的知识产权或其他合法权益,应及时通知对方,并采取措施,追究侵权者的法律责任。</p>
+      <p>3.
+        如产品涉及开源技术的使用,则“妥妥推手”将按照采用的开源技术对应的开源协议对产品做出知识产权承诺。任何因产品使用的开源技术所引发的第三方针对产品的知识产权纠纷,“妥妥推手”免责。</p>
     </div>
     <div class="mt-20">
       <p>第七条 违约责任</p>
@@ -87,7 +97,8 @@
     </div>
     <div class="mt-20">
       <p>第九条 协议争议的解决方式</p>
-      <p>1. 本协议适用中华人民共和国法律,本协议的订立,效力,解释,履行、解除、终止均受中华人民共和国法律管辖,双方发生争议时,均同意先沟通协商解决。如协商未果,任何一方均可向协议签订地北京市海淀区人民法院提起诉讼。</p>
+      <p>1.
+        本协议适用中华人民共和国法律,本协议的订立,效力,解释,履行、解除、终止均受中华人民共和国法律管辖,双方发生争议时,均同意先沟通协商解决。如协商未果,任何一方均可向协议签订地北京市海淀区人民法院提起诉讼。</p>
     </div>
     <div class="mt-20">
       <p>第十条 协议生效和有效期</p>
@@ -102,13 +113,16 @@
     </div>
     <div class="mt-20">
       <p>第十二条 保密条款</p>
-      <p>1.本协议项下的保密信息为现在和将来归属于一方的能为该方带来利益或影响的未公开资料,包括但不限于业务数据、客户名单、技术资料、软件程序、推广计划、财务数据和其他资料。</p>
-      <p>2. 未经对方书面许可,任何一方(“接受方”)不得向第三方(有关法律、法规或政府部门要求除外)泄露本协议的条款的任何内容、本协议的签订履行情况以及通过签订和履行本协议而获知的对方(“披露方”)的保密信息。</p>
+      <p>
+        1.本协议项下的保密信息为现在和将来归属于一方的能为该方带来利益或影响的未公开资料,包括但不限于业务数据、客户名单、技术资料、软件程序、推广计划、财务数据和其他资料。</p>
+      <p>2.
+        未经对方书面许可,任何一方(“接受方”)不得向第三方(有关法律、法规或政府部门要求除外)泄露本协议的条款的任何内容、本协议的签订履行情况以及通过签订和履行本协议而获知的对方(“披露方”)的保密信息。</p>
       <p>3. 以下信息不适用上述保密义务:</p>
       <p>(1). 接受方有在披露方向其披露前存在的书面记录证明其已经掌握;</p>
       <p>(2). 并非由于接受方违反本协议而已经或者在将来进入公共领域;</p>
       <p>(3). 接受方从对该信息无保密义务的第三方获得。</p>
-      <p>4. 双方在合作中发生分歧或需要有相关的重大信息披露时,应首先积极争取双方沟通协商一致,相关重大信息的披露、采用、表述应获得双方的许可,双方在各个领域自觉维护对方的品牌价值和利益。</p>
+      <p>4.
+        双方在合作中发生分歧或需要有相关的重大信息披露时,应首先积极争取双方沟通协商一致,相关重大信息的披露、采用、表述应获得双方的许可,双方在各个领域自觉维护对方的品牌价值和利益。</p>
       <p>5. 保密条款不因本协议的无效、解除、提前终止或不具操作性而失效。本协议期满后,各方的保密义务并不随之终止。</p>
     </div>
     <div class="mt-20">
@@ -131,106 +145,8 @@
       <p>第十五条 其他</p>
       <p>1. 本协议附件包括《合伙规则》。附件是本协议不可分割的组成部分,与协议正文具有同等的法律效力。</p>
       <p>2. 本协议未尽事宜,由“妥妥推手”另行通知。</p>
-      <p>3. 为“妥妥推手”业务风险控制需要,“妥妥推手”通知合伙人签署书面协议时,合伙人应当配合“妥妥推手”完成纸质协议的签署,否则“妥妥推手”有权追究合伙人的违约责任。</p>
-    </div>
-    <h4 class="mt-100">妥妥推手合伙人规则</h4>
-    <div class="mt-20">
-      <p><b>一、参与方式</b></p>
-      <p>1. 成为合伙人:通过他人邀请,在“妥妥推手”合伙人平台登录注册,申请成为“妥妥推手”合伙人。</p>
-      <p>2. 邀请用户:合伙人将专属信贷推广链接或二维码,发送至用户,用户通过其分享的链接或二维码注册,获得额度并成功用款,该合伙人将获得相应奖励。</p>
-      <p>3. 招募合伙人:合伙人将“妥妥推手”专属合伙人招募链接或二维码,发送至用户,用户通过其分享的链接或二维码注册申请成为“妥妥推手”合伙人,该用户即成为该合伙人的下级合伙人。</p>
-    </div>
-    <div class="mt-20">
-      <p><b>二、合伙人奖励</b></p>
-      <p>1. 建设银行装修分期奖励方式:如下表(一级合伙人可同时获取下线二级合伙人佣金的10% 为提成)</p>
-      <table border="1" cellpadding="0" cellspacing="0">
-        <tr>
-          <td class="border-right-none border-bottom-none" width="5%"></td>
-          <td class="border-right-none border-bottom-none" width="40%"> 使用额度标准(万元)</td>
-          <td class="border-right-none border-bottom-none" width="20%">奖励(元)</td>
-          <td width="35%" rowspan="4">
-            举例:小王为一级合伙人12月份成功放款30万元,小王发展的二级合伙人小李、小张、小红12月份成功放款并使用合计100万元(3000元佣金)<b>小王本月可获取=1000元+300元(10%佣金提成)共1300元</b>
-          </td>
-        </tr>
-        <tr>
-          <td class="border-right-none" rowspan="3">一级合伙人</td>
-          <td class="border-right-none border-bottom-none">5万—16万(含16万)</td>
-          <td class="border-right-none border-bottom-none">500</td>
-        </tr>
-        <tr>
-          <td class="border-right-none border-bottom-none">16万—25万(含25万)</td>
-          <td class="border-right-none border-bottom-none">800</td>
-        </tr>
-        <tr>
-          <td class="border-right-none">25万—30万及以上</td>
-          <td class="border-right-none">1000</td>
-        </tr>
-      </table>
-      <p class="mt-10"><b>重要说明:</b>奖励有效期:合伙人发展的有效放款用户自放款成功之日起60日内使用额度的,合伙人将获得该有效用户相应奖励,超60天未使用额度为失效用户,无法获取奖励。</p>
-      <p class="mt-10">2. 中国银行装修分期奖励方式:如下表(一级合伙人可同时获取下线二级合伙人佣金的10% 为提成)</p>
-      <table border="1" cellpadding="0" cellspacing="0">
-        <tr>
-          <td class="border-right-none border-bottom-none" width="5%"></td>
-          <td class="border-right-none border-bottom-none" width="40%">放款额度标准(万元)</td>
-          <td class="border-right-none border-bottom-none" width="20%">奖励(元)</td>
-          <td width="35%" rowspan="4">举例:小王为一级合伙人12月份成功放款30万元,小王发展的二级合伙人小李12月份成功放款30万元(1000元佣金)<br><b>小王本月可获取=1000元+100元(10%佣金提成)共1100元</b></td>
-        </tr>
-        <tr>
-          <td class="border-right-none" rowspan="3">一级合伙人</td>
-          <td class="border-right-none border-bottom-none">5万—16万(含16万)</td>
-          <td class="border-right-none border-bottom-none">500</td>
-        </tr>
-        <tr>
-          <td class="border-right-none border-bottom-none">16万—25万(含25万)</td>
-          <td class="border-right-none border-bottom-none">800</td>
-        </tr>
-        <tr>
-          <td class="border-right-none">25万—30万及以上</td>
-          <td class="border-right-none">1000</td>
-        </tr>
-      </table>
-      <p class="mt-10">3. 工商银行家家乐抵押贷奖励方式:如下表</p>
-      <table border="1" cellpadding="0" cellspacing="0">
-        <tr>
-          <td class="border-right-none border-bottom-none" width="5%"></td>
-          <td class="border-right-none border-bottom-none" width="40%"> 使用额度标准(万元)</td>
-          <td class="border-right-none border-bottom-none" width="20%">奖励(元)</td>
-          <td width="35%" rowspan="4">举例:小王为一级合伙人,12月份成功推荐工行抵押贷并放款51万元<br><b>小王本月可获取2000元的奖励</b></td>
-        </tr>
-        <tr>
-          <td class="border-right-none" rowspan="3">一级合伙人</td>
-          <td class="border-right-none">51万—200万</td>
-          <td class="border-right-none">2000</td>
-        </tr>
-      </table>
-    </div>
-    <div class="mt-20">
-      <p><b>三、关于奖励周期</b></p>
-      <p>1.以一个自然月为业务统计周期;次月10日前平台与银行核对上月数据,并进行平台数据导入。</p>
-      <p>2.每月15日起结算上月奖励,发放至合伙人的“妥妥推手”平台账户中(如遇法定节假日则往后顺延至第一个工作日)。</p>
-      <p>3.发放后每周五为提现开放日,提现时间为:上午10:00-下午16:30</p>
-      <p>备注:相关放款数据会存在3-5个工作日的延后(平台需与银行核对数据),结算标准最终以银行提供的使用额度数据为准。</p>
-    </div>
-    <div class="mt-20">
-      <p><b>四、关于奖励限制</b></p>
-      <p>1. 限制说明:邀请的合伙人需从未在妥妥推手注册成为合伙人,邀请已在妥妥推手注册的合伙人用户无奖励;邀请已参与其他活动或已被邀请的用户无奖励;</p>
-      <p>2. 时间限制:合伙人发展的业务放款后,需在60日内完成借款操作,否则无奖励;</p>
-      <p>3. 渠道限制:合伙人发展的用户必须通过妥妥推手申请额度,通过其他渠道申请额度的用户,无奖励;</p>
-      <p>4. 同一合伙人仅有一个账号可以提现,支付宝账户、微信账户、手机号、身份证号、银行卡号、设备号等与用户身份相关的信息,其中任意一项或多项存在相同的情况,均被认定为同一用户。</p>
-    </div>
-    <div class="mt-20">
-      <p><b>五、推广限制</b></p>
-      <p>合伙人在推广妥妥推手过程中,应严格遵守国家法律法规,不得有违规行为:</p>
-      <p>
-        1.“妥妥推手”将对合伙人的推广效果及推广用户的数据表现进行评估,如发现数据存在异常(包括但不限于用信率过低、逾期率过高等),合伙人需配合“妥妥推手”进行核查,并对数据异常进行解释。如果合伙人不能给予合理解释或未经“妥妥推手”书面认可,“妥妥推手”将不予结算异常部分的推广费用,已结算的部分,“妥妥推手”有权要求合伙人退回。</p>
-      <p>
-        2.如发现合伙人存在违规、作弊情况,包括但不限于刷单(如以完成任务领取红包为目的吸引非贷款用户申请等)、欺骗用户、冒用客户信息操作、使用利率或额度等与妥妥推手产品不符的文案推广、篡改产品信息、官方签名、用无关内容误导用户使用妥妥推手产品在非法网站等页面上进行推广等行为,或者“妥妥推手”收到客户投诉,则“妥妥推手”有权要求合伙人立即停止推广并对于上述违规作弊行为所产生的数据不予结算,已结算的部分有权要求退回,亦有权追究合伙人相关责任。</p>
-    </div>
-    <div class="mt-20">
-      <p><b>六、其他限制</b></p>
-      <p> 1. 如出现不可抗力或情势变更的情况(包括但不限于重大灾害事件、受政府机关指令需要停止举办或调整的、遭受严重网络攻击或因系统故障需要暂停举办的),“妥妥推手”有权随时暂停或取消本次活动,并有权主张免责。</p>
-      <p>2. “妥妥推手”可以根据活动的实际举办情况对规则进行变动或调整,相关改动或调整将公布在活动页面上,并于公布时即时生效。</p>
-      <p>3.妥妥推手对本活动在法律规定的范围内具有解释权。</p>
+      <p>3.
+        为“妥妥推手”业务风险控制需要,“妥妥推手”通知合伙人签署书面协议时,合伙人应当配合“妥妥推手”完成纸质协议的签署,否则“妥妥推手”有权追究合伙人的违约责任。</p>
     </div>
     <div class="footer">
       <a class="btn-apply" href="javascript:;" @click="funSubmitAgreement"
@@ -330,6 +246,10 @@ export default {
 
 .mt-20 {
   margin-top: 20px;
+
+  p {
+    margin-top: 6px;
+  }
 }
 
 .mt-100 {

BIN
htmldev/loan/src/views/partner/explain/image/cover2@2x.png


+ 0 - 1
htmldev/loan/src/views/partner/explain/index.vue

@@ -75,7 +75,6 @@ export default {
 .cover-2 {
   display: block;
   width: 336px;
-  min-height: 360px;
   margin: 43px auto 0;
 }
 

+ 1 - 0
htmldev/loan/src/views/partner/goods/index.vue

@@ -161,6 +161,7 @@ export default {
       this.posterBg = productShareUrl
       this.$set(this.codeParams, 'link', `${location.origin}/loan/explain/${id}?partnerId=${this.partnerId}`)
       this.$nextTick(() => {
+        console.log(this.codeParams)
         this.$refs.myPoster.createQRCode()
       })
     }

BIN
htmldev/loan/src/views/partner/marketing/image/bg_hehuoren_zhaomu@2x.png


BIN
htmldev/loan/src/views/partner/marketing/image/bg_xindai_tuiguang@2x.png


BIN
htmldev/loan/src/views/partner/marketing/image/poster_partner_20221104.png


+ 10 - 6
htmldev/loan/src/views/partner/marketing/index.vue

@@ -19,7 +19,7 @@
           <a href="javascript:;" :class="{'active': $route.name === 'partnerCustomer'}"
              @click="funJump('/partner')">客户</a>
           <a href="javascript:;" :class="{'active': $route.name === 'partnerAll'}"
-             @click="funJump('/partner/business')">合伙人</a>
+             @click="funJump('/partner/business')">门店业务</a>
         </p>
       </div>
       <van-search
@@ -56,15 +56,19 @@ export default {
   },
   data () {
     return {
-      posterBg: require('./image/poster_partner.png'),
+      posterBg: require('./image/poster_partner_20221104.png'),
       codeParams: {
+        canvasWidth: 668,
+        canvasHeight: 1167,
         partnerImgUrl: '',
         partnerName: '',
         link: '',
-        x: 122,
-        y: 1191,
-        width: 202,
-        height: 192
+        x: 106,
+        y: 930,
+        width: 185,
+        height: 185,
+        partnerLabelY: 885,
+        partnerImgUrlY: 855
       }
     }
   },

+ 28 - 12
htmldev/loan/src/views/partner/poster/index.vue

@@ -1,9 +1,14 @@
 <template>
   <div>
-    <Popup position="bottom"
-           :style="{width: '80%', height: '88.5%', left: '10%', bottom: '3%'}"
-           v-model="showPoster">
-      <img class="poster" :src="strPostSrc" alt="" @click="funPreviewImage">
+    <Popup
+      position="bottom"
+      :style="{width: '80%', height: '88.5%', left: '10%', bottom: '3%', background: 'transparent'}"
+      v-model="showPoster">
+      <img
+        class="poster"
+        :src="strPostSrc"
+        alt=""
+        @click="funPreviewImage">
     </Popup>
     <div class="hide" id="qr-code"></div>
     <canvas class="hide" ref="myCanvas"></canvas>
@@ -89,33 +94,44 @@ export default {
     createPoster () {
       const vm = this
       const { posterBg } = this
-      const { partnerImgUrl, partnerName, x, y, width, height } = this.codeParams
+      const {
+        partnerImgUrl,
+        partnerName,
+        x,
+        y,
+        width,
+        height,
+        canvasWidth,
+        canvasHeight,
+        partnerLabelY,
+        partnerImgUrlY
+      } = this.codeParams
       const canvas = vm.$refs.myCanvas
       const ctx = canvas.getContext('2d')
       const canvas2 = document.getElementById('qr-code').getElementsByTagName('canvas')[0]
       const code = {}
       code.src = canvas2.toDataURL('image/png', 1)
-      canvas.width = 750
-      canvas.height = 1446
+      canvas.width = canvasWidth || 750
+      canvas.height = canvasHeight || 1446
       // 绘制背景
       vm.setImg({
         ctx,
         src: posterBg,
         x: 0,
         y: 0,
-        width: 750,
-        height: 1446,
+        width: canvasWidth || 750,
+        height: canvasHeight || 1446,
         cb () {
           if (partnerImgUrl) {
             ctx.font = '400 28px/40px STYuanti-Regular'
             ctx.fillStyle = '#C9AD8D'
-            ctx.fillText('推广人:', 236, 1128)
+            ctx.fillText('推广人:', 236, partnerLabelY || 1128)
             ctx.save()
             vm.setImg({
               ctx,
               src: partnerImgUrl,
               x: 346,
-              y: 1100,
+              y: partnerImgUrlY || 1100,
               width: 40,
               height: 40,
               isDrewCircle: true,
@@ -123,7 +139,7 @@ export default {
                 ctx.restore()
                 ctx.font = '600 28px/40px STYuanti-Regular'
                 ctx.fillStyle = '#C9AD8D'
-                ctx.fillText(partnerName, 398, 1130)
+                ctx.fillText(partnerName, 398, partnerLabelY || 1130)
                 // 绘制二维码
                 vm.setImg({
                   ctx,