guojy 1 tahun lalu
induk
melakukan
560efb7021

+ 4 - 4
src/main.js

@@ -23,7 +23,7 @@ import axiosUser from '@/utils/axiosUser'
 import axiosKc from '@/utils/axiosKc'
 import 'shepherd.js/dist/css/shepherd.css';
 
-import {Tabbar,Empty,TabbarItem,Grid,GridItem,Field,NavBar,Row,Col,List ,Picker , Cell,CellGroup,Toast,Popup,Dialog,RadioGroup,Radio,Notify,Button,Icon,Tab, Tabs} from 'vant'
+import {Tabbar,Empty,TabbarItem,ShareSheet ,Divider,Grid,GridItem,Form,Field,NavBar,Row,Col,List ,Picker , Cell,CellGroup,Toast,Popup,Dialog,RadioGroup,Radio,Notify,Button,Icon,Tab, Tabs} from 'vant'
 import {getWxToken,setWxToken,getIsIdentity,supremeAuthority, getIsWx,getTypes, getTypesName,getUserData, getEmployeeMap,getCache,setCache,removeCache,returnDeptName,getEmployeeMapItem,returnFh } from '@/utils/auth'
 Vue.prototype.$echarts = echarts
 Vue.prototype.$moment = moment
@@ -50,15 +50,15 @@ Vue.prototype.$isWx=getIsWx()
 // true为APP打包,false为M端打包
 Vue.prototype.$isApp = true
 
-setWxToken('eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOm51bGwsImlhdCI6MTcwMzU3MzQyMywiZXhwIjotMSwibmJmIjoxNzAzNTczNDIzLCJqdGkiOiJNS0wwQ1d2QW9IZjhGTnhjIiwic3ViIjoyOCwicHJ2IjoiY2E2NDg5ZDUwZjI0MDdhNjc4MzBlODA5MGQwMTQ4ODM1Njg1OTYyYiIsInJvbGUiOiJlbXBsb3llZSJ9.3tu6W0NaobTYKF_p0GxIDcSNbwFOqPr1vwXS0bO9lb0')
-localStorage.setItem("wx_user_info",JSON.stringify({"account_id":31608,"nickname":"沐阳人","account":{"id":31608,"img_url":"","name":"雷阳","site_count_max":1,"tel":"15270803986","try_user":0,"account":""},"account_site":[{"id":24451,"account_id":31608,"site_id":14,"employee_id":35131,"create_time":"1709805792","update_time":"1709805792","delete_time":null,"site":{"id":14,"name":"广东功道云数字科技有限公司","status":1,"account_id":18,"expire_time":2067350399}}],"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOm51bGwsImlhdCI6MTcxMTA5MjAyNSwiZXhwIjotMSwibmJmIjoxNzExMDkyMDI1LCJqdGkiOiJIOExwaTdmTXpXRGVVTmNIIiwic3ViIjozMTYwOCwicHJ2IjoiOTNhMjEyMzNhMWE5ZDMxZmNkNjlmNzZhMjZhZTVkNzczMzU4NzgxNSIsInJvbGUiOiJwbGF0Zm9ybSJ9.q4z339k_Lb1YyLRNQFzSBXV3rvInExqTh6lM0CiguPQ","invitation_wait_count":0,"join_wait_count":0,"wo_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOm51bGwsImlhdCI6MTcxMTA5MjAyNSwiZXhwIjotMSwibmJmIjoxNzExMDkyMDI1LCJqdGkiOiI3cFRYclZhR0NwQW11eGNFIiwic3ViIjoxMTc3MCwicHJ2IjoiMDMwMGE1NDlhYjhmNzAyY2RhODMyMzFhNDEzMzJlY2NiZGU5ZGY4ZiIsInJvbGUiOiJ3ZWNoYXRfb3Blbl91c2VyIn0.iK5JQ5e2t8aGSK9CdIelDvOm47zUI4FtDM0oMr0FAtE"}))
+// setWxToken('eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOm51bGwsImlhdCI6MTcwMzU3MzQyMywiZXhwIjotMSwibmJmIjoxNzAzNTczNDIzLCJqdGkiOiJNS0wwQ1d2QW9IZjhGTnhjIiwic3ViIjoyOCwicHJ2IjoiY2E2NDg5ZDUwZjI0MDdhNjc4MzBlODA5MGQwMTQ4ODM1Njg1OTYyYiIsInJvbGUiOiJlbXBsb3llZSJ9.3tu6W0NaobTYKF_p0GxIDcSNbwFOqPr1vwXS0bO9lb0')
+// localStorage.setItem("wx_user_info",JSON.stringify({"account_id":31608,"nickname":"沐阳人","account":{"id":31608,"img_url":"","name":"雷阳","site_count_max":1,"tel":"15270803986","try_user":0,"account":""},"account_site":[{"id":24451,"account_id":31608,"site_id":14,"employee_id":35131,"create_time":"1709805792","update_time":"1709805792","delete_time":null,"site":{"id":14,"name":"广东功道云数字科技有限公司","status":1,"account_id":18,"expire_time":2067350399}}],"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOm51bGwsImlhdCI6MTcxMTA5MjAyNSwiZXhwIjotMSwibmJmIjoxNzExMDkyMDI1LCJqdGkiOiJIOExwaTdmTXpXRGVVTmNIIiwic3ViIjozMTYwOCwicHJ2IjoiOTNhMjEyMzNhMWE5ZDMxZmNkNjlmNzZhMjZhZTVkNzczMzU4NzgxNSIsInJvbGUiOiJwbGF0Zm9ybSJ9.q4z339k_Lb1YyLRNQFzSBXV3rvInExqTh6lM0CiguPQ","invitation_wait_count":0,"join_wait_count":0,"wo_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOm51bGwsImlhdCI6MTcxMTA5MjAyNSwiZXhwIjotMSwibmJmIjoxNzExMDkyMDI1LCJqdGkiOiI3cFRYclZhR0NwQW11eGNFIiwic3ViIjoxMTc3MCwicHJ2IjoiMDMwMGE1NDlhYjhmNzAyY2RhODMyMzFhNDEzMzJlY2NiZGU5ZGY4ZiIsInJvbGUiOiJ3ZWNoYXRfb3Blbl91c2VyIn0.iK5JQ5e2t8aGSK9CdIelDvOm47zUI4FtDM0oMr0FAtE"}))
 
 
 Vue.use(VueScroller)
 Vue.component('icon', icon)
 Vue.component('noData', noData)
 Vue.component('userImage', userImage)
-Vue.use(Button).use(Tabbar).use(TabbarItem).use(Grid).use(GridItem).use(Picker).use(Field).use(List).use(Tabs).use(Tab).use(NavBar).use(Row).use(Col).use(Cell).use(CellGroup).use(Toast).use(Popup).use(Dialog).use(RadioGroup).use(Radio).use(Icon).use(Notify).use(Empty)
+Vue.use(Button).use(Tabbar).use(TabbarItem).use(ShareSheet).use(Grid).use(Divider).use(GridItem).use(Picker).use(Form).use(Field).use(List).use(Tabs).use(Tab).use(NavBar).use(Row).use(Col).use(Cell).use(CellGroup).use(Toast).use(Popup).use(Dialog).use(RadioGroup).use(Radio).use(Icon).use(Notify).use(Empty)
 
 Vue.prototype.$route_back = function(setp) {
   if (typeof(setp) == 'undefined') {

+ 2 - 2
src/permission.js

@@ -31,7 +31,7 @@ router.beforeEach((to, from, next) => {
     // next();
   } else if (whiteList.indexOf(to.path) !== -1 || filterWhite(to.path)) {
     console.log(2)
-    if (getWxToken()) {
+    if (getWxToken() || to.path == '/courseLogin' || to.path == '/courseHome') {
       if (typeof (window.$routes_map[to.name]) != 'undefined') {
         window.document.title = window.$routes_map[to.name].label
       } else {
@@ -39,7 +39,7 @@ router.beforeEach((to, from, next) => {
       }
       next()
     } else {
-      next('courseLogin')
+      next('/courseHome')
     }
   } else {
     console.log(3)

+ 3 - 0
src/utils/auth.js

@@ -355,6 +355,9 @@ export function removeToken() {
   }
 }
 
+export function getWxUserId() {
+  return JSON.parse(localStorage.getItem('wx_user_info')).id
+}
 export function getWxToken() {
   if (window.plus) {
     return plus.storage.getItem(WxTokenKey)

+ 40 - 22
src/utils/axiosKc.js

@@ -17,24 +17,25 @@ if (window.plus) {
 }
 let url = '';
 const request = axios.create({
-  baseURL: process.env.BASE_API, //
+  // baseURL: process.env.BASE_API, //
   // baseURL: 'https://oa.g107.com',
+  baseURL:'http://192.168.0.66:8081',
   timeout: 20000,
   headers: {
     'Content-Type': 'application/x-www-form-urlencoded',
     'pl': pl
   },
-  transformRequest: [function(data) {
-    return qs.stringify(data)
-  }]
+  // transformRequest: [function(data) {
+  //   return qs.stringify(data)
+  // }]
 })
 
 request.interceptors.request.use(
     config => {
-      url = config.url;
-      if (getWxToken()) {
-        config.headers['A-Token'] = getWxToken()
-      }
+      // url = config.url;
+      // if (getWxToken()) {
+      //   config.headers['A-Token'] = getWxToken()
+      // }
       return config
     },
     error => {
@@ -45,9 +46,9 @@ request.interceptors.request.use(
 request.interceptors.response.use(
   response => {
     if (response.data.code === 1) {
-      if (response.data.refresh_token) {
-        if (response.data.refresh_token != getWxToken()) {
-          setWxToken(response.data.refresh_token)
+      if (response.data.data&&response.data.data.utoken) {
+        if (response.data.data.utoken != getWxToken()) {
+          setWxToken(response.data.data.utoken)
         }
       }
       return response
@@ -72,35 +73,35 @@ request.interceptors.response.use(
       });
     } else if (response.data.code === 0) {
       Notify({
-        message: response.data.msg,
+        message: response.data.message,
         color: '#ad0000',
         background: '#d1d1d1',
       });
       return Promise.reject('error')
-    } else if (response.data.code === 2001) {
+    } else if (response.data.code === 2) {
       Notify({
-        message: response.data.msg,
+        message: response.data.message,
         color: '#ad0000',
         background: '#ffe1e1',
       });
       return Promise.reject('error')
     } else if (response.data.code === 999) {
       Notify({
-        message: response.data.msg,
+        message: response.data.message,
         color: '#ad0000',
         background: '#ffe1e1',
       });
       return Promise.reject('error')
-    } else if (response.data.code === 3000) {
+    } else if (response.data.code === 3) {
       Notify({
-        message: '服务暂时不可用,请稍后重试,或联系客服',
+        message: response.data.message,
         color: '#ad0000',
         background: '#ffe1e1',
       });
       return Promise.reject('error')
-    } else if (response.data.code === 4444) { //系统过期
+    } else if (response.data.code === 0) { //系统过期
       Notify({
-        message: response.data.msg,
+        message: response.data.message,
         color: '#ad0000',
         background: '#ffe1e1',
       });
@@ -121,9 +122,16 @@ request.interceptors.response.use(
 var CancelToken = axios.CancelToken;
 Vue.$httpRequestList = [];
 //isToken  是微信的TOKEN  用来绑定
-export default (type, url, data, heaStr, isToken) => {
-  var Accept,Token = localStorage.getItem('a-token-temp');
+export default (type, url, data, heaStr, isToken,Content_Type) => {
+  var Accept,ContentType
+  var Token = ''
   switch (heaStr) {
+    case undefined:
+      Accept = 'application/json, text/plain, */*'
+      break
+    case '':
+      Accept = 'application/json, text/plain, */*'
+      break
     case 'v2':
       Accept = 'application/vnd.test.v2+json'
       break;
@@ -131,16 +139,26 @@ export default (type, url, data, heaStr, isToken) => {
       Accept = 'application/vnd.test.v3+json'
       break;
   }
+  if (getWxToken()) {
+    Token = getWxToken();
+  }
   if (isToken) {
     Token = isToken
   }
+  if (Content_Type == '' || Content_Type == undefined) {
+    // ContentType = 'application/x-www-form-urlencoded'
+    ContentType = 'application/json'
+  }else{
+    ContentType = Content_Type
+  }
   return new Promise((resolve, reject) => { //封装ajax
     var aa = {
       method: type,
       url: url,
       headers: {
         'Accept': Accept,
-        'A-Token': Token
+        'A-Token': Token,
+        'Content-Type': ContentType
       },
       cancelToken: new CancelToken(c => { //强行中断请求要用到的
         Vue.$httpRequestList.push(c);

+ 112 - 0
src/view/course/api/index.js

@@ -0,0 +1,112 @@
+import axiosKc from "../../../utils/axiosKc";
+import {Dialog,Notify} from 'vant'
+import {getWxToken,setWxToken,openError,getWxUserId} from '@/utils/auth'
+//wxid获取用户wxtoken
+export function getWxApiToken(wxId) {
+    return new Promise((resolve, reject) => {
+        axiosKc('get', `/mkt/demo/token/wo/${wxId}`).then((res) => {
+            if (res.data.code == 1) {
+                resolve(res.data.data)
+            } else {
+                Notify({ type: 'danger', message: data.message });
+                reject(res.data.message)
+            }
+        })
+    })
+}
+//通过wxtoken获取用户wxApiToken
+export function getUSerInfo(token) {
+    return new Promise((resolve, reject) => {
+        axiosKc('post', `/mkt/client/login`,{},'',token).then((res) => {
+            if (res.data.code == 1) {
+                setWxToken(res.data.data.utoken)
+                localStorage.setItem('wx_user_info',JSON.stringify(res.data.data))
+                resolve(res.data.data)
+            } else {
+                Notify({ type: 'danger', message: data.message });
+                reject(res.data.message)
+            }
+        })
+    })
+}
+//添加经销商
+export function addDealer(data) {
+    return new Promise((resolve, reject) => {
+        axiosKc('post', `/mkt/client/${getWxUserId()}/join`,data).then((res) => {
+            if (res.data.code == 1) {
+                setWxToken(res.data.data.utoken)
+                localStorage.setItem('wx_user_info',JSON.stringify(res.data.data))
+                resolve(res.data.data)
+            } else {
+                Notify({ type: 'danger', message: data.message });
+                reject(res.data.message)
+            }
+        })
+    })
+}
+
+//获取经销商推广的课程/mkt/client/{userId}/subject/list
+export function getDealerCourseList() {
+    return new Promise((resolve, reject) => {
+        axiosKc('get', `/mkt/client/${getWxUserId()}/capital/list`).then((res) => {
+            if (res.data.code == 1) {
+                resolve(res.data.data)
+            } else {
+                Notify({ type: 'danger', message: data.message });
+                reject(res.data.message)
+            }
+        })
+    })
+}
+//获取经销商推广的课程
+export function getUserCourseList() {
+    return new Promise((resolve, reject) => {
+        axiosKc('get', `/mkt/client/${getWxUserId()}/subject/list`).then((res) => {
+            if (res.data.code == 1) {
+                resolve(res.data.data)
+            } else {
+                Notify({ type: 'danger', message: data.message });
+                reject(res.data.message)
+            }
+        })
+    })
+}
+//获取经销商推广的所有/指定课程的交易记录
+export function getCourseRecordList(data) {
+    return new Promise((resolve, reject) => {
+        axiosKc('get', `/mkt/client/${getWxUserId()}/capital/log`,data).then((res) => {
+            if (res.data.code == 1) {
+                resolve(res.data.data)
+            } else {
+                Notify({ type: 'danger', message: data.message });
+                reject(res.data.message)
+            }
+        })
+    })
+}
+//获取经销商的团队人员
+export function getDealerTeam(data) {
+    return new Promise((resolve, reject) => {
+        axiosKc('get', `/mkt/client/${getWxUserId()}/team/list`,data).then((res) => {
+            if (res.data.code == 1) {
+                resolve(res.data.data)
+            } else {
+                Notify({ type: 'danger', message: data.message });
+                reject(res.data.message)
+            }
+        })
+    })
+}
+//获取经销商的30天内交易的人员
+export function getDealerPerson(data,days=30) {
+    return new Promise((resolve, reject) => {
+        axiosKc('get', `/mkt/client/${getWxUserId()}/team/list/transfer/${days}`,data).then((res) => {
+            if (res.data.code == 1) {
+                resolve(res.data.data)
+            } else {
+                Notify({ type: 'danger', message: data.message });
+                reject(res.data.message)
+            }
+        })
+    })
+}

+ 16 - 5
src/view/course/components/CourseTeam.vue

@@ -8,14 +8,14 @@
       />
     </form>
     <div class="team-desc">
-      <p v-if="teamType == 1">团队人数:{{ teamData.count }}人</p>
+      <p v-if="teamType == 1">团队人数:{{ count }}人</p>
       <p v-if="teamType == 2">近{{ days }}天有交易的人</p>
     </div>
     <div class="team-list">
-      <div class="team-flex" v-for="(item, index) in teamData.list">
+      <div class="team-flex" v-for="(item, index) in teamList">
         <userImage
           class="about-me__avatar"
-          :img_url="item.img_url"
+          :img_url="item.imgUrl"
           :user_name="item.name"
           width=".8rem"
           height=".8rem"
@@ -23,7 +23,7 @@
         <div class="flex-r">
           <div class="flex-tel">
             <p>{{ item.name }}</p>
-            <span>手机:{{ item.tel }}</span>
+            <span>手机:{{ item.mobile }}</span>
           </div>
           <div class="flex-deal" @click="otDealPage(item.id)">交易</div>
         </div>
@@ -44,6 +44,14 @@ export default {
     days: {
       type: Number,
       default: 30
+    },
+    teamList:{
+      type:Array,
+      default:[]
+    },
+    count:{
+      type:Number,
+      default:0
     }
   },
   data() {
@@ -98,7 +106,10 @@ export default {
       this.teamData.list = data.list;
     },
     //人员搜索
-    onSearch() {},
+    onSearch() {
+      console.log(this.searchValue)
+      this.$emit('search',this.searchValue)
+    },
   }
 };
 </script>

+ 94 - 71
src/view/course/components/courseList.vue

@@ -2,62 +2,76 @@
   <div class="listOuer">
     <div class="listTit" v-if="fixedTitle" :style="{ background: outBg }">
       <p>{{ fixedTitle }}</p>
-      <span v-if="showNum == 1&&fixedTitle" @click="toMoreUrl">查看更多>></span>
+      <span v-if="showNum == 1 && fixedTitle" @click="toMoreUrl"
+        >课程变动明细</span
+      >
     </div>
     <div class="listInner">
-      <div
-        class="listLi"
-        v-for="(item, index) in dataList"
-        :key="index"
-        :class="{ marginGap: listType == 2 }"
-        :style="{ background: outBg }"
-      >
-        <div class="listLiTit" v-if="item.direction">
-          <p>
-            {{ item.direction == "to" ? "卖出" : "收到"
-            }}<span>【{{ item.dealNumber }}】套</span>课程
-          </p>
-        </div>
-        <div class="listLiTop" :class="{listLiTopT:(showNum == 2||showNum == 3)}" @click="toUrl(item.id)">
-          <img :src="item.url" />
-          <div class="liInfo">
-            <div class="courseLiTit">
-              <p>{{ item.title }}</p>
-            </div>
-            <div class="courseLiDesc">
-              <span>共{{ item.courseNum }}节</span>
-              <span style="color: #F76146;">¥{{ item.price }}</span>
+      <template v-if="dataList.length > 0">
+        <div
+          class="listLi"
+          v-for="(item, index) in dataList"
+          :key="index"
+          :class="{ marginGap: listType == 2 }"
+          :style="{ background: outBg }"
+        >
+          <div class="listLiTit" v-if="item.direction">
+            <p>
+              {{ item.direction == "to" ? "卖出" : "收到"
+              }}<span>【{{ item.dealNumber }}】套</span>课程
+            </p>
+          </div>
+          <div
+            class="listLiTop"
+            :class="{ listLiTopT: showNum == 2 || showNum == 3 }"
+            @click="toUrl(item)"
+          >
+            <img :src="item.subjectThumb" />
+            <div class="liInfo">
+              <div class="courseLiTit">
+                <p>{{ item.subjectName }}</p>
+              </div>
+              <div class="courseLiDesc">
+                <span>共{{ item.sectionsNum }}节</span>
+                <span style="color: #F76146;">¥{{ item.subjectPrice }}</span>
+              </div>
             </div>
           </div>
-        </div>
-        <div class="courseBtm" v-if="showNum == 1">
-          <span>剩余名额:{{ item.surplus }}套</span>
-          <span>已卖出:{{ item.sale }}套</span>
-        </div>
-        <div class="courseBtm showNumTwo" v-if="showNum == 2">
-          <div class="showNumTwoL">
-            <p>剩余名额</p>
-            <span></span>
-            <span>{{ item.surplus }}套</span>
+          <div class="courseBtm" v-if="showNum == 1">
+            <span>剩余名额:{{ item.amount }}套</span>
+            <span>已卖出:{{ item.statistics.saleAmount }}套</span>
+          </div>
+          <div class="courseBtm showNumTwo" v-if="showNum == 2">
+            <div class="showNumTwoL">
+              <p>剩余名额</p>
+              <span>{{ item.amount }}套</span>
+            </div>
+            <div class="showNumTwoL">
+              <p>已卖出</p>
+              <span>{{ item.statistics.saleAmount }}套</span>
+            </div>
           </div>
-          <div class="showNumTwoL">
-            <p>已卖出</p>
-          <span>{{ item.sale }}套</span>
+          <div
+            v-if="showNum == 0 && !(item.dealStatus && item.dealStatus !== 4)"
+            style="height: .2rem;"
+          ></div>
+          <div
+            class="dealComfirm"
+            @click="comfirm(item)"
+            v-if="item.dealStatus && item.dealStatus !== 4"
+            :class="item.direction == 'to' ? 'dealTo' : ''"
+          >
+            <span>{{
+              item.direction == "to" ? "待对方确认" : "确认接收"
+            }}</span>
           </div>
         </div>
-        <div
-          v-if="showNum == 0 && !(item.dealStatus && item.dealStatus !== 4)"
-          style="height: .2rem;"
-        ></div>
-        <div
-          class="dealComfirm"
-          @click="comfirm(item)"
-          v-if="item.dealStatus && item.dealStatus !== 4"
-          :class="item.direction == 'to' ? 'dealTo' : ''"
-        >
-          <span>{{ item.direction == "to" ? "待对方确认" : "确认接收" }}</span>
+      </template>
+      <template v-else>
+        <div class='noData'>
+          <van-empty description="暂无课程..." />
         </div>
-      </div>
+      </template>
     </div>
   </div>
 </template>
@@ -98,9 +112,9 @@ export default {
       default: false
     },
     // 是否是推广的课程
-    isNoAd:{
-      type:Boolean,
-      default:false
+    isNoAd: {
+      type: Boolean,
+      default: false
     }
   },
   data() {
@@ -109,24 +123,29 @@ export default {
   created() {},
   mounted() {},
   methods: {
-    //查看推广更多
+    //查看名额变动明细
     toMoreUrl() {
-      this.$router.push(`/course/adlist`);
+      // this.$router.push(`/course/adlist`);
+      this.$router.push(`/course/limitChange`);
     },
     // 查看课程详情
-    toUrl(id) {
+    toUrl(item) {
       // console.log(item)
-      if(!this.isNoAd){
-        this.$router.push(`/courseAdDetail/${id}`);
+      if (!this.isNoAd&&this.$route.path != `/courseAdDetail/${item.subjectId}`) {
+        this.$router.push({
+          path:`/courseAdDetail/${item.subjectId}`,
+          query:item
+        });
+      } else if(this.isNoAd&&this.$route.path != `/courseDetail/${item.subjectId}`) {
+        this.$router.push(`/courseDetail/${item.subjectId}`);
       }else{
-        this.$router.push(`/courseDetail/${id}`);
+        console.log(123)
       }
-      
     },
     // 接受名额转入
     comfirm(item) {
       console.log(item);
-      this.$router.push(`/course/transfer/${item.older_id}`)
+      this.$router.push(`/course/transfer/${item.older_id}`);
       // if (item.dealStatus == 3) {
       //   this.$dialog
       //     .confirm({
@@ -155,7 +174,7 @@ export default {
   .listTit {
     display: flex;
     align-items: center;
-    padding: 0 .2rem;
+    padding: 0 0.2rem;
     justify-content: space-between;
     p {
       font-size: 0.3rem;
@@ -168,10 +187,14 @@ export default {
     }
     span {
       font-size: 0.23rem;
-      color: #333;
+      color: #0075fc;
     }
   }
   .listInner {
+    .noData{
+      width:100%;
+      background:#FFF;
+    }
     .listLi {
       // padding-top: 0.2rem;
       padding-bottom: 0.2rem;
@@ -214,14 +237,14 @@ export default {
       .listLiTop {
         display: flex;
         justify-content: space-between;
-        &.listLiTopT{
+        &.listLiTopT {
           padding: 0.2rem 0.1rem;
           background: #efefef;
           border-radius: 0.1rem;
         }
         & > img {
           width: 3rem;
-          height: 2rem;
+          height: 2.25rem;
           display: block;
           border-radius: 0.1rem;
         }
@@ -268,20 +291,20 @@ export default {
             margin-right: 0.3rem;
           }
         }
-        &.showNumTwo{
+        &.showNumTwo {
           align-items: center;
-          .showNumTwoL{
-            padding: .1rem 0;
+          .showNumTwoL {
+            padding: 0.1rem 0;
             flex: 1;
             text-align: center;
-            p{
-              font-size: .26rem;
+            p {
+              font-size: 0.26rem;
               color: #000;
-              line-height: .5rem;
+              line-height: 0.5rem;
             }
-            span{
+            span {
               color: #000;
-              font-size: .35rem;
+              font-size: 0.35rem;
               font-weight: 600;
               line-height: 2.3;
             }

+ 48 - 30
src/view/course/deal/limitRecord.vue

@@ -7,7 +7,10 @@
       @click-left="onClickLeft"
     ></van-nav-bar>
     <div class="recordContent">
-      <scroller>
+      <scroller
+        ref="scroller"
+        :on-infinite='getMoreList'
+      >
         <div class="recordList">
           <div
             class="recordLi"
@@ -15,57 +18,72 @@
             :key="index"
           >
             <div class="flex-name-num">
-              <p>{{ item.title }}</p>
-              <span
-                >{{ item.direction == "to" ? "-" : "+"
-                }}{{ item.dealNumber }}</span
+              <p>{{ item.subjectName }}</p>
+              <span>{{Number(item.amount)>0?`+${item.amount}`:item.amount}}</span
               >
             </div>
-            <p>{{ item.beizhu }}</p>
-            <span>{{ item.create_time }}</span>
+            <p>{{ item.content }}</p>
+            <span>{{ item.createTime }}</span>
           </div>
         </div>
+        <van-divider  :style="{ color: '#333', borderColor: '#333', padding: '10px 16px' }" v-if='recordList.length == page.total'>没有更多了</van-divider>
       </scroller>
     </div>
   </div>
 </template>
 
 <script>
+import {getCourseRecordList} from '../api'
 export default {
   name: "limitRecord",
   components: {},
   props: [],
   data() {
     return {
+      canReq:true,
       title: "名额变动明细",
-
-      recordList: [
-        {
-          id: 3,
-          title: "出吧v发给别的发光飞碟",
-          beizhu: "但是反反复复毒贩夫妇",
-          direction: "to",
-          dealStatus: 4,
-          dealNumber: 60,
-          create_time: "2012-10-09"
-        },
-        {
-          id: 4,
-          title: "出吧v发给别的发光飞碟",
-          beizhu: "但是反反复复毒贩夫妇",
-          direction: "to",
-          dealStatus: 4,
-          dealNumber: 60,
-          create_time: "2012-10-09"
-        }
-      ]
+      page:{
+        cur:1,
+        size:10,
+        total:0
+      },
+      recordList: []
     };
   },
-  created() {},
+  created() {
+    this.getList();
+  },
   methods: {
     onClickLeft() {
       this.$router.go(-1);
-    }
+    },
+    getList(){
+      let data = {
+        page:this.page.cur,
+        pageSize:this.page.size
+      }
+      getCourseRecordList(data).then(res=>{
+        this.recordList = this.recordList.concat(res.list)
+        this.page.cur = res.current
+        this.page.total = res.total
+        if(this.recordList.length<this.page.total){
+          this.canReq = true
+        }
+      })
+    },
+    getMoreList(){
+      console.log("到底了")
+      if(this.recordList.length<this.page.total && this.canReq){
+        this.canReq = false
+        this.$toast.loading({
+          duration: 1,
+          message: '加载中...',
+          forbidClick: true,
+        })
+        this.page.cur+=1
+        this.getList()
+      }
+    },
   },
   computed: {}
 };

+ 137 - 76
src/view/course/home.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="curPage">
-    <div v-show="!isWx" @click="isWxEnv()">
+    <div v-show="!isWx">
       <p>请在微信中打开</p>
     </div>
     <div class="userInfo" v-show="isWx">
@@ -13,7 +13,7 @@
         <div class="userImage">
           <userImage
             class="about-me__avatar"
-            :img_url="user_info.img_url"
+            :img_url="user_info.imgUrl"
             :user_name="user_info.name"
             width="1.12rem"
             height="1.12rem"
@@ -38,11 +38,11 @@
         </div>
         <div class="user_leave">
           <van-icon name="gem-o" color="#a66666" />
-          {{ user_info.site_count_max ? "经销商" : "学员" }}
+          {{ user_info.marketable ? "经销商" : "学员" }}
         </div>
       </van-row>
     </div>
-    <div class="user_tabs">
+    <div class="user_tabs" v-if="user_info.marketable">
       <div class="tabs_content">
         <div class="tabsLi" @click="toUrl('/courseTeam')">
           <van-icon name="friends-o" />
@@ -56,7 +56,7 @@
     </div>
     <div class="courScroll">
       <scroller ref="scroller" :on-refresh="refresh" :isInitRefresh="false">
-        <div class="myCourseList">
+        <div class="myCourseList" v-if="user_info.marketable">
           <courseList
             :dataList="courseClass.proCourse.courseList"
             :showNum="1"
@@ -88,14 +88,18 @@ import { getWxToken, setWxToken, openError } from "@/utils/auth";
 import { isWxEnv } from "./utils";
 import courseList from "./components/courseList.vue";
 import { Overlay } from "vant";
-
+import {
+  getWxApiToken,
+  getUSerInfo,
+  getDealerCourseList,
+  getUserCourseList
+} from "./api";
 Vue.use(Overlay);
 export default {
-  name: "",
+  name: "courseHome",
   components: {
     courseList
   },
-  props: [],
   data() {
     return {
       qrVisible: false,
@@ -104,70 +108,59 @@ export default {
       isWx: true,
       isAndroid: this.$getCache("isAndroid"),
       user_info: {
-        img_url: "",
-        id: "wx15451154555",
-        name: "新人",
-        tel: "15270803986",
-        site_count_max: false
+        imgUrl: "",
+        id: "0",
+        name: "用户名",
+        mobile: "0",
+        marketable: false
+      },
+      page: {
+        cur: 1,
+        size: 10,
+        total: 0
       },
       courseClass: {
         proCourse: {
           title: "我推广的课程",
+          total:0,
           courseList: [
             {
-              id: 123,
-              surplus: 120,
-              sale: 341,
-              title:
-                "大撒大声地大萨达大萨达撒大声地的撒旦撒旦撒打算打算大萨达萨达大萨达",
-              price: 598,
-              courseNum: 14,
-              url: "/static/img/course.f1777cf.jpg"
-            },
-            {
-              id: 124,
-              surplus: 120,
-              sale: 341,
-              title:
-                "大撒大声地大萨达大萨达撒大声地的撒旦撒旦撒打算打算大萨达萨达大萨达",
-              price: 598,
-              courseNum: 14,
-              url: "/static/img/course.f1777cf.jpg"
-            },
-            {
-              id: 125,
-              surplus: 120,
-              sale: 341,
-              title:
-                "大撒大声地大萨达大萨达撒大声地的撒旦撒旦撒打算打算大萨达萨达大萨达",
-              price: 598,
-              courseNum: 14,
-              url: "/static/img/course.f1777cf.jpg"
+              id: 123,//资产id
+              userId:133333,//用户id
+              subjectId:123333333,//课程id
+              subjectName:"大撒大声",
+              subjectThumb:"/static/img/course.f1777cf.jpg",//缩略图
+              subjectPrice:550,//课程价格
+              sectionsNum:13,//章节数
+              subjectEnable:1,//是否上架
+              amount:12,//剩余名额
+              statistics:{
+                saleAmount:133,//已卖出
+                transferOutAmount:1222,//已转入
+                transferInAmount:233,//已转出
+              },
             }
           ]
         },
         learnCourse: {
           title: "我学习的课程",
+          total:0,
           courseList: [
-            {
-              id: 126,
-              surplus: 120,
-              sale: 341,
-              title:
-                "大撒大声地大萨达大萨达撒大声地的撒旦撒旦撒打算打算大萨达萨达大萨达",
-              price: 598,
-              courseNum: 14,
-              url: "/static/img/course.f1777cf.jpg"
-            },
-            {
-              id: 127,
-              surplus: 120,
-              sale: 341,
-              title:
-                "大撒大声地大萨达大萨达撒大声地的撒旦撒旦撒打算打算大萨达萨达大萨达",
-              price: 598,
-              courseNum: 14,
-              url: "/static/img/course.f1777cf.jpg"
+          {
+              id: 123,//资产id
+              userId:133333,//用户id
+              subjectId:123333333,//课程id
+              subjectName:"大撒大声",
+              subjectThumb:"/static/img/course.f1777cf.jpg",//缩略图
+              subjectPrice:598,//课程价格
+              sectionsNum:13,//章节数
+              subjectEnable:1,//是否上架
+              amount:12,//剩余名额
+              statistics:{
+                saleAmount:133,//已卖出
+                transferOutAmount:1222,//已转入
+                transferInAmount:233,//已转出
+              },
             }
           ]
         }
@@ -179,16 +172,96 @@ export default {
     this.init();
   },
   methods: {
+    //获取用户数据
+    init() {
+      if (this.$route.query && this.$route.query.pid) {
+        this.$router.push(`/courseLogin?pid=${this.$route.query.pid}`);
+      } else {
+        isWxEnv()
+          .then(() => {
+            if (getWxToken()) {
+              this.user_info = JSON.parse(localStorage.getItem("wx_user_info"));
+              if (this.user_info.marketable) {
+                this.getDealerCourseList();
+              }
+              this.getUserCourseList();
+            } else {
+              getWxApiToken(7).then(token => {
+                getUSerInfo(token).then(res => {
+                  this.user_info = JSON.parse(
+                    localStorage.getItem("wx_user_info")
+                  );
+                  if (this.user_info.marketable) {
+                    getDealerCourseList();
+                  }
+                  getUserCourseList();
+                });
+              });
+            }
+          })
+          .catch(err => {
+            if (getWxToken()) {
+              this.user_info = JSON.parse(localStorage.getItem("wx_user_info"));
+              if (this.user_info.marketable) {
+                this.getDealerCourseList();
+              }
+              this.getUserCourseList();
+            } else {
+              getWxApiToken(7).then(token => {
+                getUSerInfo(token).then(res => {
+                  this.user_info = JSON.parse(
+                    localStorage.getItem("wx_user_info")
+                  );
+                  if (this.user_info.marketable) {
+                    this.getDealerCourseList();
+                  }
+                  this.getUserCourseList();
+                });
+              });
+            }
+          });
+      }
+    },
+    //获取经销推广课程列表
+    getDealerCourseList() {
+      getDealerCourseList().then(res => {
+        this.courseClass.proCourse.total = res.total
+        this.courseClass.proCourse.courseList = res.list
+      });
+    },
+    //获取用户消费的课程列表
+    getUserCourseList() {
+      getUserCourseList().then(res => {
+        this.courseClass.learnCourse.total = res.total
+        let list = []
+        res.list.forEach(item=>{
+          let data = {
+            subjectName:item.name,
+            subjectId:item.id,
+            subjectPrice:item.price,
+            subjectThumb:item.thumb,
+            subjectEnable:item.enable,
+            sectionsNum:item.sectionsNum
+          }
+          list.push(data)
+        })
+        this.courseClass.learnCourse.courseList = list
+      });
+    },
+    // 打开二维码
     qropen() {
       this.qrVisible = true;
       this.$nextTick(() => {
         this.creatQrCode();
       });
     },
+    // 创建二维码
     creatQrCode() {
       if (!this.qrcodeStatus) {
         this.qrcode = new QRCode(this.$refs.qrCodeUrl, {
-          text: "https://www.baidu.com/", // 需要转换为二维码的内容
+          text: `https://3i98944q41.goho.co/#/courseLogin&pid=${
+            JSON.parse(localStorage.getItem("wx_user_info")).id
+          }`, // 需要转换为二维码的内容
           width: 200,
           height: 200,
           colorDark: "#000000",
@@ -198,6 +271,7 @@ export default {
         this.qrcodeStatus = true;
       }
     },
+    //复制剪切板
     copyLink(event) {
       let that = this;
       //这里是复制目标的类名
@@ -208,7 +282,7 @@ export default {
       });
       clipboard.on("success", function(e) {
         e.clearSelection(); //清除选中的文字的选择状态
-        that.$toast("身份ID复制成功~");
+        that.$toast.success("ID复制成功~");
       });
 
       clipboard.on("error", function(e) {
@@ -228,18 +302,6 @@ export default {
       }, 1000);
       // this.getInitData(done);
     },
-    //获取用户数据
-    init() {
-      isWxEnv()
-        .then(() => {
-          this.user_info = JSON.parse(
-            localStorage.getItem("wx_user_info")
-          ).account;
-        })
-        .catch(err => {
-          console.log(err);
-        });
-    },
     //请求微信授权
     doWeixinLogin() {
       if (this.isAndroid) {
@@ -248,8 +310,7 @@ export default {
         window.location.href = `${process.env.VUE_APP_WXURL}?marketing=1`;
       }
     }
-  },
-  computed: {}
+  }
 };
 </script>
 <style scoped lang="scss">

+ 78 - 49
src/view/course/user/courseAdDeal.vue

@@ -7,7 +7,9 @@
       @click-left="onClickLeft"
     ></van-nav-bar>
     <div class="courseContent">
-      <scroller ref="scroller">
+      <scroller 
+        ref="scroller"
+        :on-infinite='getMoreList'>
         <courseList :dataList="courseInfo" :showNum="2"></courseList>
         <div class="record">
           <p>名额变动明细</p>
@@ -18,26 +20,31 @@
               :key="index"
             >
               <div class="flex-name-num">
-                <p>{{ item.title }}</p>
-                <span
-                  >{{ item.direction == "to" ? "-" : "+"
-                  }}{{ item.dealNumber }}</span
-                >
+                <p>{{ item.subjectName }}</p>
+                <span>{{Number(item.amount)>0?`+${item.amount}`:item.amount}}</span>
               </div>
-              <p>{{ item.beizhu }}</p>
-              <span>{{ item.create_time }}</span>
+              <p>{{ item.content }}</p>
+              <span>{{ item.createTime }}</span>
             </div>
           </div>
         </div>
+        <van-divider  :style="{ color: '#333', borderColor: '#333', padding: '10px 16px' }" v-if='recordList.length == page.total'>没有更多了</van-divider>
       </scroller>
     </div>
-    <div class="courseShare">
-      <span>赠送课程给好友(当前剩余:{{ courseDetail.surplus }}套)</span>
+    <div class="courseShare" @click="showShare = true">
+      <span>赠送课程给好友(当前剩余:{{ courseDetail.amount }}套)</span>
     </div>
+    <van-share-sheet
+      v-model="showShare"
+      title="立即赠送给好友"
+      :options="options"
+      @select="onSelect"
+    />
   </div>
 </template>
 
 <script>
+import {getCourseRecordList} from '../api'
 import courseList from "../components/courseList.vue";
 export default {
   name: "",
@@ -45,54 +52,45 @@ export default {
   props: [],
   data() {
     return {
+      showShare:false,
+      canReq:true,
       loading: false,
       finished: false,
       activeTab: 0,
       title: "课程详情",
-      courseDetail: {
-        thumb: "/static/img/course.f1777cf.jpg",
-        name: "课程精讲",
-        images: [],
-        section: [],
-        price: 598,
-        courseNum: 11,
-        sale: 21,
-        surplus: 59
+      options:[
+        { name: '微信', icon: 'wechat' },
+        { name: '复制链接', icon: 'link' },
+        { name: '二维码', icon: 'qrcode' },
+      ],
+      page:{
+        cur:1,
+        total:0,
+        size:10
       },
-      recordList:[
-      {
-          id:3,
-          title: "出吧v发给别的发光飞碟",
-          beizhu: "但是反反复复毒贩夫妇",
-          direction: "to",
-          dealStatus: 4,
-          dealNumber: 60,
-          create_time: "2012-10-09"
-        },
-        {
-          id:4,
-          title: "出吧v发给别的发光飞碟",
-          beizhu: "但是反反复复毒贩夫妇",
-          direction: "to",
-          dealStatus: 4,
-          dealNumber: 60,
-          create_time: "2012-10-09"
+      courseDetail: {
+        id: 0,//资产id
+        userId:0,//用户id
+        subjectId:0,//课程id
+        subjectName:"",
+        subjectThumb:"",//缩略图
+        subjectPrice:0,//课程价格
+        sectionsNum:0,//章节数
+        subjectEnable:1,//是否上架
+        amount:0,//剩余名额
+        statistics:{
+          saleAmount:0,//已卖出
+          transferOutAmount:0,//已转入
+          transferInAmount:0,//已转出
         },
-      ]
+      },
+      recordList:[]
     };
   },
   computed: {
     courseInfo() {
       let list = [];
-      let data = {
-        url: this.courseDetail.thumb,
-        title: this.courseDetail.name,
-        courseNum: this.courseDetail.courseNum,
-        price: this.courseDetail.price,
-        sale: this.courseDetail.sale,
-        surplus: this.courseDetail.surplus
-      };
-      list.push(data);
+      list.push(this.courseDetail);
       return list;
     }
   },
@@ -100,6 +98,37 @@ export default {
     this.init();
   },
   methods: {
+    onSelect(option){
+      console.log(option)
+    },
+    getMoreList(){
+      console.log("到底了")
+      if(this.recordList.length<this.page.total && this.canReq){
+        this.canReq = false
+        this.$toast.loading({
+          duration: 1,
+          message: '加载中...',
+          forbidClick: true,
+        })
+        this.page.cur+=1
+        this.getRecord()
+      }
+    },
+    getRecord(){
+      let data = {
+        page:this.page.cur,
+        pageSize:this.page.size,
+        subjectId:this.courseId
+      }
+      getCourseRecordList(data).then(res=>{
+        this.recordList = this.recordList.concat(res.list)
+        this.page.cur = res.current
+        this.page.total = res.total
+        if(this.recordList.length<this.page.total){
+          this.canReq = true
+        }
+      })
+    },
     // 下拉刷新
     onScroll(done) {
       console.log(12333);
@@ -115,9 +144,9 @@ export default {
       this.$router.go(-1);
     },
     init() {
-      console.log(this.$route.params);
       this.courseId = this.$route.params.id;
-      console.log(this.courseId);
+      this.courseDetail = this.$route.query
+      this.getRecord();
     }
   }
 };

+ 15 - 3
src/view/course/user/courseDeal.vue

@@ -55,6 +55,7 @@
 </template>
 
 <script>
+import {getCourseRecordList} from '../api'
 export default {
   name: "",
   components: {},
@@ -146,10 +147,21 @@ export default {
       this.$router.go(-1);
     },
     init() {
-      console.log(this.$route.params);
       this.courseId = this.$route.params.id;
-      console.log(this.courseId);
-    }
+    },
+    getDetail(){
+      let data = {
+        
+      }
+      getCourseRecordList(data).then(res=>{
+        this.recordList = this.recordList.concat(res.list)
+        this.page.cur = res.current
+        this.page.total = res.total
+        if(this.recordList.length<this.page.total){
+          this.canReq = true
+        }
+      })
+    },
   },
   computed: {}
 };

+ 142 - 31
src/view/course/user/login.vue

@@ -1,44 +1,155 @@
 <template>
-<div class="page">
-经销商手机号绑定
-  <div class="tit">
-    <p>请完善用户信息</p>
+  <div class="page">
+    <van-nav-bar title="经销商手机号绑定"></van-nav-bar>
+    <div class="buibOuter">
+      <div class="bindContent">
+        <div class="tit">
+          <p>请完善用户信息{{ pid }}</p>
+        </div>
+        <van-form @submit="onSubmit">
+          <van-cell-group>
+            <van-field
+              v-model="form.name"
+              :rules="[{ required: true, message: '请填写用户名' }]"
+              placeholder="请输入用户名"
+            />
+          </van-cell-group>
+          <van-cell-group>
+            <van-field
+              v-model="form.mobile"
+              name="pattern"
+              :rules="[{ pattern, message: '请填写正确的手机号' }]"
+              placeholder="请输入手机号"
+            />
+          </van-cell-group>
+          <van-cell-group>
+            <van-field
+              v-model="form.code"
+              center
+              clearable
+              :rules="[{ required:true, message: '请填写短信验证码' }]"
+              placeholder="请输入短信验证码"
+            >
+              <template #button>
+                <van-button size="small" style="width: 2rem;" :color="subBtn" @click="getYzm()">{{
+                  outTime == 0 ? "获取验证码" : outTime
+                }}</van-button>
+              </template>
+            </van-field>
+          </van-cell-group>
+          <div style="margin: 16px;">
+            <van-button block type="info" native-type="submit">提交</van-button>
+          </div>
+        </van-form>
+      </div>
+    </div>
   </div>
-  <div class="bindContent">
-    <van-cell-group>
-      <van-field v-model="form.name" label="" placeholder="请输入用户名" />
-    </van-cell-group>
-    <van-cell-group>
-      <van-field v-model="form.name" label="" placeholder="请输入手机号" />
-    </van-cell-group>
-    <van-cell-group>
-      <van-field v-model="form.name" label="" placeholder="请输入验证码" />
-    </van-cell-group>
-  </div>
-
-</div>
 </template>
 
 <script>
+import {addDealer} from '../api'
 export default {
-  name: '',
+  name: "courseLogin",
   components: {},
-    props: [],
-  data () {
+  props: [],
+  data() {
     return {
-      form:{
-        name:"",
-        tel:'',
-        yzm:''
+      outTime: 0,
+      pid: 0,
+      form: {
+        name: "",
+        mobile: "",
+        code: ""
+      },
+      pattern:/^(?:(?:\+|00)86)?1[3-9]\d{9}$/,
+      partternY:/\d{6}/,
+    };
+  },
+  created() {
+    this.init();
+  },
+  computed: {
+    subBtn() {
+      if (this.outTime > 0) {
+        return "#999";
+      } else {
+        return "#26A2FF";
       }
     }
   },
-  created () { },
-  mounted () { },
-  methods: { },
-  computed: {}
-}
+  watch: {
+    outTime(val) {
+      if (val > 0) {
+        setTimeout(() => {
+          this.outTime = this.outTime - 1;
+        }, 1000);
+      }
+    }
+  },
+  methods: {
+    init() {
+      if (this.$route.query && this.$route.query.pid) {
+        this.pid = this.$route.query.pid;
+      }
+    },
+    getYzm() {
+      this.outTime = 10;
+    },
+    onSubmit() {
+      let data = {
+        pid:this.pid,
+        name:this.form.name,
+        mobile:this.form.mobile,
+        code:this.form.code
+      }
+      addDealer(data).then(res=>{
+        this.$toast.success("注册经销商成功")
+        setTimeout(()=>{
+          this.$router.push('/courseHome')
+        },1500)
+      })
+    }
+  }
+};
 </script>
-<style scoped lang='scss'>
-
+<style scoped lang="scss">
+* {
+  margin: 0;
+  padding: 0;
+}
+img {
+  display: block;
+}
+.page {
+  .buibOuter {
+    width: 100%;
+    height: calc(100vh - 0.92rem);
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    .bindContent {
+      width: 92%;
+      overflow: hidden;
+      border-radius: 0.15rem;
+      background: #fff;
+      margin: 0 auto;
+      padding: 0.5rem 0.3rem;
+      box-sizing: border-box;
+      .tit {
+        display: flex;
+        justify-content: center;
+        p {
+          font-size: 0.32rem;
+          font-weight: 600;
+          line-height: 0.32rem;
+          margin-bottom: 0.5rem;
+        }
+      }
+    }
+  }
+}
+/deep/ .van-field__control {
+  font-size: 0.28rem;
+  line-height: 0.9rem;
+}
 </style>

+ 64 - 12
src/view/course/user/team.vue

@@ -11,26 +11,33 @@
     ></van-nav-bar>
     <div class="teamContent">
       <scroller
-        :on-refresh="refresh"
         :isInitRefresh="false"
+        :on-infinite='getMoreList'
       >
-      <Team :teamType="type"></Team>
+      <Team :teamType="type" :teamList="teamList" :count="page.total" @search='search'></Team>
+      <van-divider  :style="{ color: '#333', borderColor: '#333', padding: '10px 16px' }" v-if='teamList.length == page.total'>没有更多了</van-divider>
     </scroller>
     </div>
   </div>
 </template>
 
 <script>
+import {getDealerTeam,getDealerPerson} from '../api'
 import Team from '../components/CourseTeam'
 export default {
   name: "",
   components: {Team},
-  props: {
-    
-  },
   data() {
     return {
+      canReq:true,
         type:1,
+        page:{
+          cur:1,
+          size:10,
+          total:0,
+        },
+        teamList:[],
+        keyword:''
     };
   },
   computed: {
@@ -42,22 +49,67 @@ export default {
     this.init()
   },
   methods: {
-    //下拉刷新
-    refresh(done) {
-      setTimeout(() => {
-        done();
-      }, 1000);
+    getMoreList(){
+      console.log("到底了")
+      if(this.teamList.length<this.page.total && this.canReq){
+        this.canReq = false
+        this.$toast.loading({
+          duration: 1,
+          message: '加载中...',
+          forbidClick: true,
+        })
+        this.page.cur+=1
+        this.getList()
+      }
     },
     init(){
-        // this.type = this.$route.params.id
+        this.getList()
     },
      //导航左侧返回
      onClickLeft() {
-      this.$router.go(-1);
+      if(this.type){
+        this.$router.go(-1);
+      }else{
+        this.type = 1
+        this.total = 0
+        this.page.cur = 1
+        this.getList();
+      }
     },
     //导航右侧30天交易
     onClickRight() {
         this.type = 0
+        this.total = 0
+        this.page.cur = 1
+        this.getList();
+    },
+    getList(){
+      let data = {
+        page:this.page.cur,
+        pageSize:this.page.size,
+        keyword:this.keyword
+      }
+      if(this.type){
+        console.log(1)
+        getDealerTeam(data).then(res=>{
+          this.teamList = res.list
+          this.page.total = res.total
+        })
+      }else{
+        console.log(2)
+        getDealerPerson(data).then(res=>{
+          this.teamList = res.list
+          this.page.total = res.total
+          this.page.cur = res.current
+        })
+      }
+      if(this.teamList.length<this.page.total){
+          this.canReq = true
+      }
+    },
+    search(val){
+      this.keyword = val;
+      this.getList();
     },
   }
 };

+ 25 - 0
src/view/course/user/wxAuth.vue

@@ -0,0 +1,25 @@
+<template>
+<div>
+</div>
+</template>
+
+<script>
+export default {
+  name: '',
+  components: {},
+    props: [],
+  data () {
+    return {
+    }
+  },
+  created () { 
+    
+  },
+  mounted () { },
+  methods: { },
+  computed: {}
+}
+</script>
+<style scoped lang='scss'>
+
+</style>

+ 22 - 26
src/view/course/utils/index.js

@@ -4,27 +4,27 @@ import { getWxToken, setWxToken, openError } from "@/utils/auth";
 import { getIsIdentity, supremeAuthority, getIsWx, getTypes, getTypesName, getUserData, getEmployeeMap, getCache, setCache, removeCache, returnDeptName, getEmployeeMapItem, returnFh } from '@/utils/auth'
 //判断环境/登录状态
 export function isWxEnv() {
-    return new Promise((resolve, reject) => {
-        if (getWxToken()) {
-            resolve()
-        } else {
-            Toast("当前未授权微信信息");
-            reject(1)
-        }
-    })
     // return new Promise((resolve, reject) => {
-    //     if (getIsWx()) {
-    //         if (getWxToken()) {
-    //             resolve()
-    //         } else {
-    //             doWeixinLogin();
-    //             reject(1)
-    //         }
+    //     if (getWxToken()) {
+    //         resolve()
     //     } else {
-    //         Toast("当前不在微信环境中,请在微信中打开浏览");
-    //         reject(2)
+    //         // Toast("当前未授权微信信息");
+    //         reject(1)
     //     }
     // })
+    return new Promise((resolve, reject) => {
+        if (getIsWx()) {
+            if (getWxToken()) {
+                resolve()
+            } else {
+                doWeixinLogin();
+                reject(1)
+            }
+        } else {
+            Toast("当前不在微信环境中,请在微信中打开浏览");
+            reject(2)
+        }
+    })
 }
 //请求微信授权
 function doWeixinLogin() {
@@ -34,24 +34,20 @@ function doWeixinLogin() {
         window.location.href = `${process.env.VUE_APP_WXURL}?marketing=1`;
     }
 }
-export function copyLink(data, event) {
+export function copyLink(event) {
     let that = this;
     //这里是复制目标的类名
     let clipboard = new Clipboard(event, {
-        text: function () {
-            return data;
+        text: function (trigger) {
+            return trigger.getAttribute("aria-label");
         }
     });
     clipboard.on("success", function (e) {
-        console.info("Action:", e.action);
-        console.info("Text:", e.text); //复制的文本内容
-        console.info("Trigger:", e.trigger); //节点
         e.clearSelection(); //清除选中的文字的选择状态
-        that.$toast("身份ID复制成功~");
+        that.$toast.success("复制成功~");
     });
 
     clipboard.on("error", function (e) {
-        console.error("Action:", e.action);
-        console.error("Trigger:", e.trigger);
+        console.error(e);
     });
 }