Browse Source

小程序用户管理接口联调(报告记录数据等接口)

htc 1 day ago
parent
commit
ffc47afd0e

+ 57 - 0
src/api/agent/indexTwo.js

@@ -1,5 +1,62 @@
 import request from '@/utils/request2'
 import request from '@/utils/request2'
 
 
+// ---start 小程序用户管理
+export function getWechatUserList(query) {
+  return request({
+    url: `/core/user/page`,
+    method: 'get',
+    params: query
+  })
+}
+export function getWechatUserInfoById(id) {
+  return request({
+    url: `/core/user/${id}`,
+    method: 'get'
+  })
+}
+export function getWechatUserUseData(id) {
+  return request({
+    url: `/core/user/getUserStats/${id}`,
+    method: 'get'
+  })
+}
+export function getUserTeamList(query) {
+  return request({
+    url: `/core/userteam/page`,
+    method: 'get',
+    params: query
+  })
+}
+export function getInvitationRecordList(query) {
+  return request({
+    url: `/core/register/record/page`,
+    method: 'get',
+    params: query
+  })
+}
+export function getQuestionniareManagerList(query) {
+  return request({
+    url: `/core/teammember/que/queManageList`,
+    method: 'get',
+    params: query
+  })
+}
+export function getTeamMemberList(query) {
+  return request({
+    url: `/core/member/page`,
+    method: 'get',
+    params: query
+  })
+}
+export function getPayRecoedList(query) {
+  return request({
+    url: `/core.v2/queorder/page`,
+    method: 'get',
+    params: query
+  })
+}
+// ---end 小程序用户管理
+
 // ---start 商业模式管理
 // ---start 商业模式管理
 // ------start 商品管理
 // ------start 商品管理
 export function getCommodityList(query) {
 export function getCommodityList(query) {

+ 0 - 1
src/views/modules/business/bill.vue

@@ -105,7 +105,6 @@
             query.beginTime = proxy.parseTime(new Date(query.startEndTime[0]), '{yy}-{mm}-{dd} {hh}:{ii}:{ss}')
             query.beginTime = proxy.parseTime(new Date(query.startEndTime[0]), '{yy}-{mm}-{dd} {hh}:{ii}:{ss}')
             query.endTime = proxy.parseTime(new Date(query.startEndTime[1]), '{yy}-{mm}-{dd} {hh}:{ii}:{ss}')
             query.endTime = proxy.parseTime(new Date(query.startEndTime[1]), '{yy}-{mm}-{dd} {hh}:{ii}:{ss}')
         }
         }
-
         loading.value = true;
         loading.value = true;
         delete query.startEndTime;
         delete query.startEndTime;
         const res = await getBillList(query);
         const res = await getBillList(query);

+ 50 - 26
src/views/modules/wechatUser.vue

@@ -5,19 +5,21 @@
         <el-form :model="queryParams" ref="queryRef" label-width="118px" style="margin-top: 20px;">
         <el-form :model="queryParams" ref="queryRef" label-width="118px" style="margin-top: 20px;">
           <el-row>
           <el-row>
             <el-col :span="6" style="padding-right: 20px;">
             <el-col :span="6" style="padding-right: 20px;">
-                <el-form-item label="注册渠道">
-                    <el-select v-model="queryParams.xxx" placeholder="请选择注册渠道"></el-select>
+                <el-form-item label="渠道类型">
+                    <el-select v-model="queryParams.channelType" placeholder="请选择渠道类型" clearable>
+                        <el-option v-for="item in channel_type" :label="item.label" :value="item.value"></el-option>
+                    </el-select>
                 </el-form-item>
                 </el-form-item>
             </el-col>
             </el-col>
             <el-col :span="6" style="padding-right: 20px;">
             <el-col :span="6" style="padding-right: 20px;">
                 <el-form-item label="用户昵称/手机号">
                 <el-form-item label="用户昵称/手机号">
-                    <el-input v-model="queryParams.yyy" placeholder="请输入用户昵称/手机号" style="width: 100%;"></el-input>
+                    <el-input v-model="queryParams.keyword" placeholder="请输入用户昵称/手机号" style="width: 100%;"></el-input>
                 </el-form-item>
                 </el-form-item>
             </el-col>
             </el-col>
             <el-col :span="8" style="padding-right: 20px;">
             <el-col :span="8" style="padding-right: 20px;">
                 <el-form-item label="时间周期">
                 <el-form-item label="时间周期">
                     <el-date-picker
                     <el-date-picker
-                        v-model="queryParams.zzz"
+                        v-model="queryParams.startEndTime"
                         type="datetimerange"
                         type="datetimerange"
                         range-separator="至"
                         range-separator="至"
                         start-placeholder="开始时间"
                         start-placeholder="开始时间"
@@ -39,17 +41,18 @@
                     {{ scope.$index + 1 }}
                     {{ scope.$index + 1 }}
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
-            <el-table-column label="用户昵称" prop="xx"></el-table-column>
-            <el-table-column label="手机号码" prop="xx"></el-table-column>
-            <el-table-column label="注册编号" prop="xx"></el-table-column>
+            <el-table-column label="用户昵称" prop="realName"></el-table-column>
+            <el-table-column label="手机号码" prop="mobile"></el-table-column>
+            <el-table-column label="注册编号" prop="registerId"></el-table-column>
             <el-table-column label="用户类型" prop="xx">
             <el-table-column label="用户类型" prop="xx">
-                <template #default="{ row }"></template>
+                <template #default="{ row }">{{ typeCfg[row.type] }}</template>
             </el-table-column>
             </el-table-column>
-            <el-table-column label="注册渠道" prop="xx">
-                <template #default="{ row }"></template>
+            <el-table-column label="注册渠道" prop="channelName"></el-table-column>
+            <el-table-column label="渠道类型" prop="channelType">
+                <template #default="{ row }">{{ channel_type.find(c=>c.value===row.channelType)?.label }}</template>
             </el-table-column>
             </el-table-column>
-            <el-table-column label="注册时间" prop="xx"></el-table-column>
-            <el-table-column label="最近登录时间" prop="xx"></el-table-column>
+            <el-table-column label="注册时间" prop="createDate"></el-table-column>
+            <!-- <el-table-column label="最近登录时间" prop="xx"></el-table-column> -->
             <el-table-column label="操作" width="150">
             <el-table-column label="操作" width="150">
                 <template #default="scope">
                 <template #default="scope">
                     <el-button link type="text" size="mini" @click="handleReview(scope.row)">查看</el-button>
                     <el-button link type="text" size="mini" @click="handleReview(scope.row)">查看</el-button>
@@ -72,17 +75,28 @@
 </template>
 </template>
 
 
 <script setup name="">
 <script setup name="">
-    import { ref, getCurrentInstance } from 'vue'
+    import { ref, getCurrentInstance, onMounted } from 'vue'
+    import { 
+        getWechatUserList
+    } from '@/api/agent/indexTwo.js'
     const { proxy } = getCurrentInstance();
     const { proxy } = getCurrentInstance();
+    const { channel_type } = proxy.useDict("channel_type");
     const title = proxy.$route.meta.title;
     const title = proxy.$route.meta.title;
     const queryParams = ref({
     const queryParams = ref({
         page:1,
         page:1,
         limit:10,
         limit:10,
-        xxx:'',
-        yyy:'',
-        zzz:''
+        channelType:'',
+        keyword:'',
+        startEndTime:'',
+        beginTime:'',
+        endTime:''
     })
     })
-    const dataList = ref([1])
+    const typeCfg = ref({
+        1:'基础版',
+        2:'专业版',
+        3:'专家版'
+    })
+    const dataList = ref([])
     const total = ref(0)
     const total = ref(0)
     const loading = ref(false)
     const loading = ref(false)
     
     
@@ -91,19 +105,26 @@
         queryParams.value = {
         queryParams.value = {
             page:1,
             page:1,
             limit:10,
             limit:10,
-            xxx:'',
-            yyy:'',
-            zzz:''
+            channelType:'',
+            keyword:'',
+            startEndTime:'',
+            beginTime:'',
+            endTime:''
         }
         }
         getList();
         getList();
     }
     }
 
 
     const getList = async () => {
     const getList = async () => {
-        let query = {...queryParams.value};
+        let query = JSON.parse(JSON.stringify(queryParams.value));
+        if(query.startEndTime && query.startEndTime.length > 0) {
+            query.beginTime = proxy.parseTime(new Date(query.startEndTime[0]), '{yy}-{mm}-{dd} {hh}:{ii}:{ss}')
+            query.endTime = proxy.parseTime(new Date(query.startEndTime[1]), '{yy}-{mm}-{dd} {hh}:{ii}:{ss}')
+        }
         loading.value = true;
         loading.value = true;
-        // const res = await getCoachList(query);
-        // dataList.value = res.data.list;
-        // total.value = res.data.total;
+        delete query.startEndTime;
+        const res = await getWechatUserList(query);
+        dataList.value = res.data.list;
+        total.value = res.data.total;
         loading.value = false;
         loading.value = false;
     }
     }
     const handleSizeChange = (e)=>{
     const handleSizeChange = (e)=>{
@@ -119,11 +140,14 @@
         proxy.$router.push({
         proxy.$router.push({
             path:'/wechatUserDetail',
             path:'/wechatUserDetail',
             query:{
             query:{
-                id:row.id,
-                name:row.name
+                id:row.id
             }
             }
         })
         })
     }
     }
+
+    onMounted(()=>{
+        getList();
+    })
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 36 - 14
src/views/modules/wechatUser/inviteRecord.vue

@@ -1,17 +1,19 @@
 <template>
 <template>
     <div class="page">
     <div class="page">
-        <el-table :data="list" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无邀请记录" max-height="578px" style="margin-top: 18px;">
+        <el-table :data="dataList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无邀请记录" max-height="578px" style="margin-top: 18px;">
             <el-table-column label="序号" width="50">
             <el-table-column label="序号" width="50">
                 <template #default="scope">
                 <template #default="scope">
                     {{ scope.$index + 1 }}
                     {{ scope.$index + 1 }}
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
-            <el-table-column label="用户昵称" prop="xx"></el-table-column>
-            <el-table-column label="手机号码" prop="xx"></el-table-column>
-            <el-table-column label="注册编号" prop="xx"></el-table-column>
-            <el-table-column label="邀请渠道" prop="xx"></el-table-column>
-            <el-table-column label="渠道类型" prop="xx"></el-table-column>
-            <el-table-column label="注册时间" prop="xx"></el-table-column>
+            <el-table-column label="用户昵称" prop="realName"></el-table-column>
+            <el-table-column label="手机号码" prop="mobile"></el-table-column>
+            <el-table-column label="注册编号" prop="userId"></el-table-column>
+            <el-table-column label="邀请渠道" prop="channelName"></el-table-column>
+            <el-table-column label="渠道类型" prop="">
+                <template #default="{ row }">{{ channel_type.find(t=>t.value==row.channelType)?.label||'' }}</template>
+            </el-table-column>
+            <el-table-column label="注册时间" prop="createDate"></el-table-column>
         </el-table>
         </el-table>
         <el-row style="display: flex;justify-content: center;">
         <el-row style="display: flex;justify-content: center;">
             <el-pagination
             <el-pagination
@@ -30,30 +32,50 @@
 
 
 <script setup name="">
 <script setup name="">
     const props = defineProps({
     const props = defineProps({
-        list:{
-            typeof:Array,
-            default:()=>[]
+        userId:{
+            typeof:'String',
+            default:''
+
         }
         }
     });
     });
-    import { ref, getCurrentInstance } from 'vue'
+    import { ref, getCurrentInstance, onMounted } from 'vue'
     const { proxy } = getCurrentInstance();
     const { proxy } = getCurrentInstance();
+    import { 
+        getInvitationRecordList
+    } from '@/api/agent/indexTwo.js'
+    const { channel_type } = proxy.useDict("channel_type");
     
     
     const queryParams = ref({
     const queryParams = ref({
         page: 1,
         page: 1,
-        pageSize: 10
+        pageSize: 10,
+        referrerId: ''
     })
     })
+    const dataList = ref([])
     const total = ref(0)
     const total = ref(0)
     const loading = ref(false)
     const loading = ref(false)
 
 
     const handleSizeChange = (val) => {
     const handleSizeChange = (val) => {
         queryParams.value.pageSize = val;
         queryParams.value.pageSize = val;
-        proxy.$emit('handleSizeChange', queryParams);
+        getList();
     }
     }
 
 
     const handleCurrentChange = (val) => {
     const handleCurrentChange = (val) => {
         queryParams.value.page = val;
         queryParams.value.page = val;
-        proxy.$emit('handleCurrentChange', queryParams);
+        getList();
+    }
+    const getList = async () => {
+        let query = JSON.parse(JSON.stringify(queryParams.value));
+        loading.value = true;
+        const res = await getInvitationRecordList(query);
+        dataList.value = res.data.list;
+        total.value = res.data.total;
+        loading.value = false;
     }
     }
+
+    onMounted(() => {
+        queryParams.value.referrerId = props.userId;
+        getList();
+    })
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 39 - 14
src/views/modules/wechatUser/payRecord.vue

@@ -1,19 +1,19 @@
 <template>
 <template>
     <div class="page">
     <div class="page">
-        <el-table :data="list" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无交易记录" max-height="578px" style="margin-top: 18px;">
+        <el-table :data="dataList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无交易记录" max-height="578px" style="margin-top: 18px;">
             <el-table-column label="序号" width="50">
             <el-table-column label="序号" width="50">
                 <template #default="scope">
                 <template #default="scope">
                     {{ scope.$index + 1 }}
                     {{ scope.$index + 1 }}
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
-            <el-table-column label="订单编号" prop="xx"></el-table-column>
-            <el-table-column label="交易时间" prop="xx"></el-table-column>
+            <el-table-column label="订单编号" prop="orderNo"></el-table-column>
+            <el-table-column label="交易时间" prop="payTime"></el-table-column>
             <el-table-column label="商品类型" prop="xx">
             <el-table-column label="商品类型" prop="xx">
-                <template #default="scope"></template>
+                <template #default="scope">{{ typeCfg[scope.row.type]||'' }}</template>
             </el-table-column>
             </el-table-column>
-            <el-table-column label="购买次数" prop="xx"></el-table-column>
-            <el-table-column label="交易金额(元)" prop="xx"></el-table-column>
-            <el-table-column label="有效期至" prop="xx"></el-table-column>
+            <el-table-column label="购买次数" prop="totalFrequency"></el-table-column>
+            <el-table-column label="交易金额(元)" prop="totalAmount"></el-table-column>
+            <el-table-column label="有效期至" prop="expirationTime"></el-table-column>
         </el-table>
         </el-table>
         <el-row style="display: flex;justify-content: center;">
         <el-row style="display: flex;justify-content: center;">
             <el-pagination
             <el-pagination
@@ -32,30 +32,55 @@
 
 
 <script setup name="">
 <script setup name="">
     const props = defineProps({
     const props = defineProps({
-        list:{
-            typeof:Array,
-            default:()=>[]
+        userId:{
+            typeof:'String',
+            default:''
+
         }
         }
     });
     });
-    import { ref, getCurrentInstance } from 'vue'
+    import { ref, getCurrentInstance, onMounted } from 'vue'
     const { proxy } = getCurrentInstance();
     const { proxy } = getCurrentInstance();
+    import { 
+        getPayRecoedList
+    } from '@/api/agent/indexTwo.js'
     
     
     const queryParams = ref({
     const queryParams = ref({
         page: 1,
         page: 1,
-        pageSize: 10
+        pageSize: 10,
+        tradeRecord:1,
+        userId:''
+    })
+    const typeCfg = ref({
+        1: '基础版',
+        2: '专业版',
+        3: '专家版'
     })
     })
+    const dataList = ref([])
     const total = ref(0)
     const total = ref(0)
     const loading = ref(false)
     const loading = ref(false)
 
 
     const handleSizeChange = (val) => {
     const handleSizeChange = (val) => {
         queryParams.value.pageSize = val;
         queryParams.value.pageSize = val;
-        proxy.$emit('handleSizeChange', queryParams);
+        getList();
     }
     }
 
 
     const handleCurrentChange = (val) => {
     const handleCurrentChange = (val) => {
         queryParams.value.page = val;
         queryParams.value.page = val;
-        proxy.$emit('handleCurrentChange', queryParams);
+        getList();
+    }
+    const getList = async () => {
+        let query = JSON.parse(JSON.stringify(queryParams.value));
+        loading.value = true;
+        const res = await getPayRecoedList(query);
+        dataList.value = res.data.list;
+        total.value = res.data.total;
+        loading.value = false;
     }
     }
+
+    onMounted(() => {
+        queryParams.value.userId = props.userId;
+        getList();
+    })
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 45 - 15
src/views/modules/wechatUser/questionnaireManager.vue

@@ -1,18 +1,20 @@
 <template>
 <template>
     <div class="page">
     <div class="page">
-        <el-table :data="list" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无问卷管理" max-height="578px" style="margin-top: 18px;">
+        <el-table :data="dataList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无问卷管理" max-height="578px" style="margin-top: 18px;">
             <el-table-column label="序号" width="50">
             <el-table-column label="序号" width="50">
                 <template #default="scope">
                 <template #default="scope">
                     {{ scope.$index + 1 }}
                     {{ scope.$index + 1 }}
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
-            <el-table-column label="问卷名称" prop="xx"></el-table-column>
-            <el-table-column label="问卷类型" prop="xx"></el-table-column>
-            <el-table-column label="团队名称" prop="xx"></el-table-column>
-            <el-table-column label="问卷状态" prop="xx">
-                <template #default="scope"></template>
+            <el-table-column label="问卷名称" prop="title"></el-table-column>
+            <el-table-column label="问卷类型" prop="">
+                <template #default="scope">{{ typeCfg[scope.row.type]||'' }}</template>
             </el-table-column>
             </el-table-column>
-            <el-table-column label="创建时间" prop="xx"></el-table-column>
+            <el-table-column label="团队名称" prop="teamName"></el-table-column>
+            <el-table-column label="问卷状态" prop="">
+                <template #default="scope">{{ statusCfg[scope.row.status]||'' }}</template>
+            </el-table-column>
+            <el-table-column label="创建时间" prop="createDate"></el-table-column>
         </el-table>
         </el-table>
         <el-row style="display: flex;justify-content: center;">
         <el-row style="display: flex;justify-content: center;">
             <el-pagination
             <el-pagination
@@ -31,30 +33,58 @@
 
 
 <script setup name="">
 <script setup name="">
     const props = defineProps({
     const props = defineProps({
-        list:{
-            typeof:Array,
-            default:()=>[]
+        userId:{
+            typeof:'String',
+            default:''
+
         }
         }
     });
     });
-    import { ref, getCurrentInstance } from 'vue'
+    import { ref, getCurrentInstance, onMounted } from 'vue'
     const { proxy } = getCurrentInstance();
     const { proxy } = getCurrentInstance();
+    import { 
+        getQuestionniareManagerList
+    } from '@/api/agent/indexTwo.js'
     
     
     const queryParams = ref({
     const queryParams = ref({
         page: 1,
         page: 1,
-        pageSize: 10
+        pageSize: 10,
+        userId:''
+    })
+    const typeCfg = ref({
+        0: '我发布的',
+        1: '我收到的'
     })
     })
+    const statusCfg = ref({
+        '-1': '已失效',
+        0: '待完成',
+        1: '已完成'
+    })
+    const dataList = ref([])
     const total = ref(0)
     const total = ref(0)
     const loading = ref(false)
     const loading = ref(false)
-
+    
     const handleSizeChange = (val) => {
     const handleSizeChange = (val) => {
         queryParams.value.pageSize = val;
         queryParams.value.pageSize = val;
-        proxy.$emit('handleSizeChange', queryParams);
+        getList();
     }
     }
 
 
     const handleCurrentChange = (val) => {
     const handleCurrentChange = (val) => {
         queryParams.value.page = val;
         queryParams.value.page = val;
-        proxy.$emit('handleCurrentChange', queryParams);
+        getList();
+    }
+    const getList = async () => {
+        let query = JSON.parse(JSON.stringify(queryParams.value));
+        loading.value = true;
+        const res = await getQuestionniareManagerList(query);
+        dataList.value = res.data.list;
+        total.value = res.data.total;
+        loading.value = false;
     }
     }
+
+    onMounted(() => {
+        queryParams.value.userId = props.userId;
+        getList();
+    })
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 48 - 18
src/views/modules/wechatUser/teamManager.vue

@@ -1,21 +1,27 @@
 <template>
 <template>
     <div class="page">
     <div class="page">
-        <el-table :data="list" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无团队" max-height="578px" style="margin-top: 18px;">
+        <el-table :data="dataList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无团队" max-height="578px" style="margin-top: 18px;">
             <el-table-column label="序号" width="50">
             <el-table-column label="序号" width="50">
                 <template #default="scope">
                 <template #default="scope">
                     {{ scope.$index + 1 }}
                     {{ scope.$index + 1 }}
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
-            <el-table-column label="团队名称" prop="xx"></el-table-column>
-            <el-table-column label="所在公司" prop="xx"></el-table-column>
-            <el-table-column label="所属地区" prop="xx"></el-table-column>
-            <el-table-column label="所属行业" prop="xx"></el-table-column>
-            <el-table-column label="团队职能类型" prop="xx"></el-table-column>
-            <el-table-column label="团队架构类型" prop="xx"></el-table-column>
-            <el-table-column label="团队规模" prop="xx"></el-table-column>
-            <el-table-column label="团队层级" prop="xx"></el-table-column>
-            <el-table-column label="团队简介" prop="xx" show-overflow-tooltip></el-table-column>
-            <el-table-column label="创建时间" prop="xx"></el-table-column>
+            <el-table-column label="团队名称" prop="teamName"></el-table-column>
+            <el-table-column label="所在公司" prop="enterpriseName"></el-table-column>
+            <el-table-column label="所属地区" prop="">
+                <template #default="{ row }">{{ row.provinceName+row.cityName }}</template>
+            </el-table-column>
+            <el-table-column label="所属行业" prop="industryName"></el-table-column>
+            <el-table-column label="团队职能类型" prop="functionNames"></el-table-column>
+            <el-table-column label="团队架构类型" prop="orgNames"></el-table-column>
+            <el-table-column label="团队规模" prop="">
+                <template #default="{ row }">{{ team_scale.find(t=>t.value==row.scale)?.label||'' }}</template>
+            </el-table-column>
+            <el-table-column label="团队层级" prop="">
+                <template #default="{ row }">{{ team_hierarchy.find(t=>t.value==row.hierarchy)?.label||'' }}</template>
+            </el-table-column>
+            <el-table-column label="团队简介" prop="brief" show-overflow-tooltip width="200"></el-table-column>
+            <el-table-column label="创建时间" prop="createDate" width="160"></el-table-column>
         </el-table>
         </el-table>
         <el-row style="display: flex;justify-content: center;">
         <el-row style="display: flex;justify-content: center;">
             <el-pagination
             <el-pagination
@@ -34,30 +40,54 @@
 
 
 <script setup name="">
 <script setup name="">
     const props = defineProps({
     const props = defineProps({
-        list:{
-            typeof:Array,
-            default:()=>[]
+        userId:{
+            typeof:'String',
+            default:''
+
         }
         }
     });
     });
-    import { ref, getCurrentInstance } from 'vue'
+    import { ref, getCurrentInstance, onMounted } from 'vue'
     const { proxy } = getCurrentInstance();
     const { proxy } = getCurrentInstance();
+    const { team_scale, team_hierarchy } = proxy.useDict("team_scale","team_hierarchy");
+    import { 
+        getUserTeamList
+    } from '@/api/agent/indexTwo.js'
     
     
     const queryParams = ref({
     const queryParams = ref({
         page: 1,
         page: 1,
-        pageSize: 10
+        pageSize: 10,
+        coachId:''
     })
     })
+    const dataList = ref([])
     const total = ref(0)
     const total = ref(0)
     const loading = ref(false)
     const loading = ref(false)
 
 
     const handleSizeChange = (val) => {
     const handleSizeChange = (val) => {
         queryParams.value.pageSize = val;
         queryParams.value.pageSize = val;
-        proxy.$emit('handleSizeChange', queryParams);
+        getList();
     }
     }
 
 
     const handleCurrentChange = (val) => {
     const handleCurrentChange = (val) => {
         queryParams.value.page = val;
         queryParams.value.page = val;
-        proxy.$emit('handleCurrentChange', queryParams);
+        getList();
     }
     }
+    const getList = async () => {
+        let query = JSON.parse(JSON.stringify(queryParams.value));
+        loading.value = true;
+        const res = await getUserTeamList(query);
+        dataList.value = res.data.list;
+        dataList.value.forEach(d=>{
+            d.functionNames = d.functions.map(f=>f.functionName).join('、');
+            d.orgNames = d.organizations.map(f=>f.orgName).join('、');
+        })
+        total.value = res.data.total;
+        loading.value = false;
+    }
+
+    onMounted(() => {
+        queryParams.value.coachId = props.userId;
+        getList();
+    })
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 34 - 12
src/views/modules/wechatUser/teamUser.vue

@@ -1,15 +1,17 @@
 <template>
 <template>
     <div class="page">
     <div class="page">
-        <el-table :data="list" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无团队成员" max-height="578px" style="margin-top: 18px;">
+        <el-table :data="dataList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无团队成员" max-height="578px" style="margin-top: 18px;">
             <el-table-column label="序号" width="50">
             <el-table-column label="序号" width="50">
                 <template #default="scope">
                 <template #default="scope">
                     {{ scope.$index + 1 }}
                     {{ scope.$index + 1 }}
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
-            <el-table-column label="成员昵称" prop="xx"></el-table-column>
-            <el-table-column label="手机号码" prop="xx"></el-table-column>
-            <el-table-column label="邮箱" prop="xx"></el-table-column>
-            <el-table-column label="人员身份类型" prop="xx"></el-table-column>
+            <el-table-column label="成员昵称" prop="realName"></el-table-column>
+            <el-table-column label="手机号码" prop="mobile"></el-table-column>
+            <el-table-column label="邮箱" prop="email"></el-table-column>
+            <!-- <el-table-column label="人员身份类型" prop="">
+                <template #default="{ row }">{{ UserCategory.find(t=>t.value==row.category)?.label||'' }}</template>
+            </el-table-column> -->
         </el-table>
         </el-table>
         <el-row style="display: flex;justify-content: center;">
         <el-row style="display: flex;justify-content: center;">
             <el-pagination
             <el-pagination
@@ -28,30 +30,50 @@
 
 
 <script setup name="">
 <script setup name="">
     const props = defineProps({
     const props = defineProps({
-        list:{
-            typeof:Array,
-            default:()=>[]
+        userId:{
+            typeof:'String',
+            default:''
+
         }
         }
     });
     });
-    import { ref, getCurrentInstance } from 'vue'
+    import { ref, getCurrentInstance, onMounted } from 'vue'
     const { proxy } = getCurrentInstance();
     const { proxy } = getCurrentInstance();
+    import { 
+        getTeamMemberList
+    } from '@/api/agent/indexTwo.js'
+    const { UserCategory } = proxy.useDict("UserCategory");
     
     
     const queryParams = ref({
     const queryParams = ref({
         page: 1,
         page: 1,
-        pageSize: 10
+        pageSize: 10,
+        coachId:''
     })
     })
+    const dataList = ref([])
     const total = ref(0)
     const total = ref(0)
     const loading = ref(false)
     const loading = ref(false)
 
 
     const handleSizeChange = (val) => {
     const handleSizeChange = (val) => {
         queryParams.value.pageSize = val;
         queryParams.value.pageSize = val;
-        proxy.$emit('handleSizeChange', queryParams);
+        getList();
     }
     }
 
 
     const handleCurrentChange = (val) => {
     const handleCurrentChange = (val) => {
         queryParams.value.page = val;
         queryParams.value.page = val;
-        proxy.$emit('handleCurrentChange', queryParams);
+        getList();
+    }
+    const getList = async () => {
+        let query = JSON.parse(JSON.stringify(queryParams.value));
+        loading.value = true;
+        const res = await getTeamMemberList(query);
+        dataList.value = res.data.list;
+        total.value = res.data.total;
+        loading.value = false;
     }
     }
+
+    onMounted(() => {
+        queryParams.value.coachId = props.userId;
+        getList();
+    })
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 46 - 23
src/views/modules/wechatUserDetail.vue

@@ -12,63 +12,63 @@
             <div class="info adf">
             <div class="info adf">
                 <div class="info-left adffcac">
                 <div class="info-left adffcac">
                     <img src="@/assets/images/agent/dialog_avatar.png">
                     <img src="@/assets/images/agent/dialog_avatar.png">
-                    <div class="type">{{ "基础版用户" }}</div>
+                    <div class="type">{{ (typeCfg[userInfo.type]||'默认')+"用户" }}</div>
                 </div>
                 </div>
                 <div class="info-right adf">
                 <div class="info-right adf">
                     <div class="info-right-pre adfac">
                     <div class="info-right-pre adfac">
                         <div class="info-right-pre-title">用户昵称:</div>
                         <div class="info-right-pre-title">用户昵称:</div>
-                        <div class="info-right-pre-content">{{ '刘宇然' }}</div>
+                        <div class="info-right-pre-content">{{ userInfo.realName }}</div>
                     </div>
                     </div>
                     <div class="info-right-pre adfac">
                     <div class="info-right-pre adfac">
                         <div class="info-right-pre-title">手机号码:</div>
                         <div class="info-right-pre-title">手机号码:</div>
-                        <div class="info-right-pre-content">{{ '187 **** 9876' }}</div>
+                        <div class="info-right-pre-content">{{ userInfo.mobile }}</div>
                     </div>
                     </div>
                     <div class="info-right-pre adfac">
                     <div class="info-right-pre adfac">
                         <div class="info-right-pre-title">注册编号:</div>
                         <div class="info-right-pre-title">注册编号:</div>
-                        <div class="info-right-pre-content">{{ '18798760987' }}</div>
+                        <div class="info-right-pre-content">{{ userInfo.registerId }}</div>
                     </div>
                     </div>
                     <div class="info-right-pre adfac">
                     <div class="info-right-pre adfac">
                         <div class="info-right-pre-title">注册时间:</div>
                         <div class="info-right-pre-title">注册时间:</div>
-                        <div class="info-right-pre-content">{{ '2025-06-30 13:00:08' }}</div>
+                        <div class="info-right-pre-content">{{ userInfo.createDate }}</div>
                     </div>
                     </div>
                     <div class="info-right-pre adfac">
                     <div class="info-right-pre adfac">
                         <div class="info-right-pre-title">注册渠道:</div>
                         <div class="info-right-pre-title">注册渠道:</div>
-                        <div class="info-right-pre-content">{{ '创衡运营邀请渠道' }}</div>
+                        <div class="info-right-pre-content">{{ userInfo.channelName }}</div>
                     </div>
                     </div>
                     <div class="info-right-pre adfac">
                     <div class="info-right-pre adfac">
                         <div class="info-right-pre-title">渠道类型:</div>
                         <div class="info-right-pre-title">渠道类型:</div>
-                        <div class="info-right-pre-content">{{ 'A类型' }}</div>
+                        <div class="info-right-pre-content">{{ channel_type.find(c=>c.value===userInfo.channelType)?.label }}</div>
                     </div>
                     </div>
-                    <div class="info-right-pre adfac">
+                    <!-- <div class="info-right-pre adfac">
                         <div class="info-right-pre-title">最近登录时间:</div>
                         <div class="info-right-pre-title">最近登录时间:</div>
                         <div class="info-right-pre-content">{{ '2025-10-30 13:00:08' }}</div>
                         <div class="info-right-pre-content">{{ '2025-10-30 13:00:08' }}</div>
-                    </div>
+                    </div> -->
                 </div>
                 </div>
             </div>
             </div>
         </div>
         </div>
-        <div class="ap_line" style="margin-top: 15px;"></div>
+        <div class="ap_line" style="margin-top: 25px;"></div>
         <div class="data">
         <div class="data">
             <div class="dtitle">使用数据</div>
             <div class="dtitle">使用数据</div>
             <div class="data-num adfac">
             <div class="data-num adfac">
                 <div class="data-num-pre adffcac">
                 <div class="data-num-pre adffcac">
                     <p>创建团队</p>
                     <p>创建团队</p>
-                    <span>{{ 8 }}</span>
+                    <span>{{ useData?.teamCount??0 }}</span>
                 </div>
                 </div>
                 <div class="data-num-pre adffcac">
                 <div class="data-num-pre adffcac">
                     <p>创建问卷</p>
                     <p>创建问卷</p>
-                    <span>{{ 8 }}</span>
+                    <span>{{ useData?.questionnaireCount??0 }}</span>
                 </div>
                 </div>
                 <div class="data-num-pre adffcac">
                 <div class="data-num-pre adffcac">
-                    <p>可次数基础版</p>
-                    <span>{{ 3 }}</span>
+                    <p>可次数基础版</p>
+                    <span>{{ useData?.basicCount??0 }}</span>
                 </div>
                 </div>
                 <div class="data-num-pre adffcac">
                 <div class="data-num-pre adffcac">
                     <p>可用次数专业版</p>
                     <p>可用次数专业版</p>
-                    <span>{{ 10 }}</span>
+                    <span>{{ useData?.profeCount??0 }}</span>
                 </div>
                 </div>
                 <div class="data-num-pre adffcac">
                 <div class="data-num-pre adffcac">
                     <p>累计购买金额</p>
                     <p>累计购买金额</p>
-                    <span>¥{{ 888 }}</span>
+                    <span>¥{{ useData?.totalOrderAmount??0 }}</span>
                 </div>
                 </div>
             </div>
             </div>
         </div>
         </div>
@@ -78,12 +78,12 @@
                 <div class="tab-pre" :class="{'active':tidx===index}" v-for="(item,index) in tabList" :key="index" @click="changeTab(index)">{{ item }}</div>
                 <div class="tab-pre" :class="{'active':tidx===index}" v-for="(item,index) in tabList" :key="index" @click="changeTab(index)">{{ item }}</div>
             </div>
             </div>
             <div class="table">
             <div class="table">
-                <TeamManager v-if="tidx===0" :list="[]"></TeamManager>
-                <InviteRecord v-if="tidx===1" :list="[]"></InviteRecord>
-                <QuestionnaireManager v-if="tidx===2" :list="[]"></QuestionnaireManager>
-                <TeamUser v-if="tidx===3" :list="[]"></TeamUser>
-                <PayRecord v-if="tidx===4" :list="[]"></PayRecord>
-                <ReportRecord v-if="tidx===5" :list="[]"></ReportRecord>
+                <TeamManager v-if="tidx===0&&userInfo.id" :userId="userInfo.id"></TeamManager>
+                <InviteRecord v-if="tidx===1&&userInfo.id" :userId="userInfo.id"></InviteRecord>
+                <QuestionnaireManager v-if="tidx===2&&userInfo.id" :userId="userInfo.id"></QuestionnaireManager>
+                <TeamUser v-if="tidx===3&&userInfo.id" :userId="userInfo.id"></TeamUser>
+                <PayRecord v-if="tidx===4&&userInfo.id" :userId="userInfo.id"></PayRecord>
+                <ReportRecord v-if="tidx===5&&userInfo.id" :userId="userInfo.id"></ReportRecord>
             </div>
             </div>
         </div>
         </div>
     </div>
     </div>
@@ -96,10 +96,22 @@
     import TeamUser from './wechatUser/teamUser.vue'
     import TeamUser from './wechatUser/teamUser.vue'
     import PayRecord from './wechatUser/payRecord.vue'
     import PayRecord from './wechatUser/payRecord.vue'
     import ReportRecord from './wechatUser/reportRecord.vue'
     import ReportRecord from './wechatUser/reportRecord.vue'
-    import { ref, getCurrentInstance } from 'vue'
+    import { ref, getCurrentInstance, onMounted } from 'vue'
     const { proxy } = getCurrentInstance();
     const { proxy } = getCurrentInstance();
+    const { channel_type } = proxy.useDict("channel_type");
+    import { 
+        getWechatUserInfoById,
+        getWechatUserUseData
+    } from '@/api/agent/indexTwo.js'
     
     
     const tidx = ref(0)
     const tidx = ref(0)
+    const useData = ref({})
+    const userInfo = ref({})
+    const typeCfg = ref({
+        1:'基础版',
+        2:'专业版',
+        3:'专家版'
+    })
     const tabList = ref(['团队管理','邀请记录','问卷管理','团队成员','交易记录','报告记录'])
     const tabList = ref(['团队管理','邀请记录','问卷管理','团队成员','交易记录','报告记录'])
 
 
     const handleBack = () => {
     const handleBack = () => {
@@ -109,6 +121,17 @@
     const changeTab = (index) => {
     const changeTab = (index) => {
         tidx.value = index
         tidx.value = index
     }
     }
+
+    onMounted(() => {
+        const id = proxy.$route.query.id
+        getWechatUserInfoById(id).then((res) => {
+            userInfo.value = res.data;
+            userInfo.value.mobile = userInfo.value.mobile.replace(/^(.{3})(?:\d+)(.{4})$/, "$1 **** $2");
+        })
+        getWechatUserUseData(id).then((res) => {
+            useData.value = res.data;
+        })
+    })
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">