Explorar o código

fix:合伙人功能优化

刘恒 hai 1 ano
pai
achega
b713a3b36a

+ 1 - 2
src/pages/business/agent.vue

@@ -431,8 +431,7 @@ export default {
       this.getVerification();
     },
     watchMessage(item) {
-      //
-      item;
+      
       this.$router.push({
         path: "/business/agent/message",
         query: {

+ 141 - 25
src/pages/wallet/partner.vue

@@ -97,7 +97,26 @@
             <a-button type="primary" @click="getList('')">查询</a-button>
           </a-form-item>
         </a-form>
-        <a-spin :spinning="loading">
+        <div >
+          <standard-table
+            bordered
+            :columns="columns"
+            :dataSource="tableList"
+            :pagination="pagination"
+            @change="onChange"
+            :loading="loading"
+            :scroll="{ x: 1200, y: 600 }"
+          >
+          
+            <div slot="patnerLevel" >
+              一级合伙人
+            </div>
+            <div slot="operation" slot-scope="{ record }">
+              <a-button type="link" @click="watchMessage(record)">详情</a-button>
+            </div>
+          </standard-table>
+        </div>
+        <!-- <a-spin :spinning="loading">
           <a-row class="personnel-message" type="flex" :gutter="16">
             <a-col
               v-for="item in list"
@@ -143,21 +162,21 @@
               </div>
             </a-col>
           </a-row>
-        </a-spin>
-        <div class="page">
+        </a-spin> -->
+        <!-- <div class="page">
           <a-pagination
-            v-model="pageInfo.pageNum"
-            :total="pageInfo.total"
+            v-model="pagination.pageNum"
+            :total="pagination.total"
             show-less-items
             show-size-changer
             show-quick-jumper
             :show-total="(total) => `共 ${total} 条数据`"
             @change="pageChange"
             @showSizeChange="pageChange"
-            :page-size.sync="pageInfo.pageSize"
+            :page-size.sync="pagination.pageSize"
             :pageSizeOptions="['12', '24', '36', '48']"
           />
-        </div>
+        </div> -->
       </div>
     </div>
   </div>
@@ -166,14 +185,75 @@
 <script>
 // import mixin from "../../minins/mixin";
 // import tree from "@/components/tree/tree";
+import StandardTable from "@/components/table/StandardTable";
+
 import moment from "moment";
+const columns = [
+  {
+    title: "姓名",
+    dataIndex: "userName",
+  },
+  {
+    title: "手机号",
+    dataIndex: "mobile",
+  },
+  {
+    title: "工号",
+    dataIndex: "userId",
+  },
+  {
+    title: "所属机构",
+    dataIndex: "deptName",
+  },
+  {
+    title: "等级",
+    dataIndex: "patnerLevel",
+    scopedSlots: { customRender: "patnerLevel" },
+  },
+  {
+    title: "会员总人数",
+    dataIndex: "memberShip",
+  },
+  {
+    title: "总保费",
+    dataIndex: "totalIncome",
+  },
+
+  {
+    title: "总佣金",
+    dataIndex: "commission",
+  },
+  {
+    title: "直接合伙人",
+    dataIndex: "numberPartners",
+  },
+  {
+    title: "直接工作室",
+    dataIndex: "directStudio",
+ 
+  },
+  {
+    title: "间接工作室",
+    dataIndex: "indirectStudio",
+  
+  },
+  
+  {
+    title: "操作",
+    dataIndex: "operation",
+    fixed: "right",
+    width: 100,
+    scopedSlots: { customRender: "operation" },
+  },
+];
 export default {
   components: {
-    // tree,
+    StandardTable,
   },
   //   mixins: [mixin],
   data() {
     return {
+      columns,
       formState: {
         days: undefined,
         time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
@@ -185,15 +265,21 @@ export default {
       },
       labelCol: { span: 4 },
       dataForm: {},
+      
       visible: false,
       backLinePersonnel: {},
       //   columns: columns,
       companyList: [],
       tableList: [],
-      pageInfo: {
-        pageNum: 1,
-        pageSize: 12,
+      pagination: {
+        current: 1,
+        defaultPageSize: 10,
         total: 0,
+        pagesize0ptions: ["10", "20", "30", "50", "100"],
+        hideOnSinglePage: false,
+        showQuickJumper: true, //
+        showSizeChanger: true, //是否可以改变pagesize
+        showTotal: (total) => `共 ${total} 条数据`,
       },
       list: [],
       loading: false,
@@ -220,9 +306,38 @@ export default {
     // }, 1000);
   },
   methods: {
+    watchMessage(item){
+      this.$router.push({
+        path: "/wallet/partner/message",
+        query: {
+          user:JSON.stringify( {
+            ...item,
+          
+          }),
+          deptId: this.deptId,
+          days:this.days,
+          time:JSON.stringify( {
+            beginDate: this.formState.beginDate,
+            endDate: this.formState.endDate,
+            
+          }),
+          
+        },
+      });
+    },
+    onChange(pagination) {
+      // this.$message.info('表格状态改变了')
+
+      this.pagination = {
+        current: pagination.current,
+        defaultPageSize: pagination.defaultPageSize,
+        total: pagination.total,
+      };
+      this.getAgencyList();
+    },
     getList() {
-      this.pageInfo.pageNum = 1;
-      this.pageInfo.pageSize = 12;
+      this.pagination.current = 1;
+      this.pagination.defaultPageSize = 12;
       this.getAgencyList();
     },
     async getTreeDeptUser() {
@@ -252,8 +367,8 @@ export default {
     },
 
     treeChoose(id) {
-      this.pageInfo.pageNum = 1;
-      this.pageInfo.pageSize = 10;
+      this.pagination.current = 1;
+      this.pagination.defaultPageSize = 10;
       this.deptId = id[0];
       this.getList();
     },
@@ -285,27 +400,28 @@ export default {
       this.loading = true;
 
       this.$API.wallet
+     
         .getPartnerStatistics({
-          pageNum: this.pageInfo.pageNum,
-          pageSize: this.pageInfo.pageSize,
+          pageNum: this.pagination.current,
+          pageSize: this.pagination.defaultPageSize,
           deptId: this.deptId,
           ...this.formState,
         })
         .then((res) => {
           if (res.data.code === 200) {
             this.loading = false;
-            this.list = [...res.data.data.records];
-            this.pageInfo.total = res.data.data.total;
+            this.tableList = [...res.data.data.records];
+            this.pagination.total = res.data.data.total;
           }
         });
     },
     //分页事件
-    pageChange(page, pageSize) {
-      //   console.log(page, pageSize);
-      this.pageInfo.pageNum = page;
-      this.pageInfo.pageSize = pageSize;
-      this.getAgencyList();
-    },
+    // pageChange(page, pageSize) {
+    //   //   console.log(page, pageSize);
+    //   this.pagination.pageNum = page;
+    //   this.pagination.pageSize = pageSize;
+    //   this.getAgencyList();
+    // },
   },
 };
 </script>

+ 614 - 0
src/pages/wallet/partner/channel.vue

@@ -0,0 +1,614 @@
+<template>
+    <div class="quote">
+      <div class="quote-tree">
+        <div style="overflow-y: auto">
+          <a-tree
+            :tree-data="treeData"
+            :replaceFields="replaceFields"
+            :title="'1'"
+            @select="treeChoose"
+          />
+          <!-- <tree @getList="treeChoose"></tree> -->
+        </div>
+      </div>
+      <div class="back-line-main">
+        <div class="back-line-header">
+          <div class="back-line-header-title">
+            <h2>合伙人</h2>
+            <div>
+              <span>时间筛选</span>
+              <a-range-picker
+                v-model="formState.time"
+                @change="onChangeTime"
+                valueFormat="YYYY-MM-DD"
+              >
+                <a-icon slot="suffixIcon" type="calendar" />
+              </a-range-picker>
+              <a-radio-group
+                default-value="1"
+                button-style="solid"
+                v-model="formState.days"
+              >
+                <a-radio-button
+                  :value="1"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  当天
+                </a-radio-button>
+                <a-radio-button
+                  :value="2"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  近7天
+                </a-radio-button>
+                <a-radio-button
+                  :value="3"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  近30天
+                </a-radio-button>
+              </a-radio-group>
+            </div>
+          </div>
+        </div>
+        
+        <div class="list">
+            <a-descriptions :title="partnerObj.deptName">
+                <a-descriptions-item label="会员总人数">
+                    {{ manyObj.memberShip }}
+                </a-descriptions-item>
+                <a-descriptions-item label="总保费">
+                    {{ manyObj.totalIncome }}
+                
+                </a-descriptions-item>
+                <a-descriptions-item label="我的佣金">
+                    {{ manyObj.commission }}
+                
+                </a-descriptions-item>
+                <!-- <a-descriptions-item label="下属团队">
+                    {{ manyObj.deptNum7 }}
+             
+                </a-descriptions-item> -->
+                <a-descriptions-item label="推荐人">
+                    {{ manyObj.suggestName }}
+              
+                </a-descriptions-item>
+            </a-descriptions>
+          
+                    
+               
+                
+              
+          
+          <div >
+            <a-tabs default-active-key="1" >
+                <a-tab-pane key="1" tab="下属代理人">
+                    
+                </a-tab-pane>
+          </a-tabs>
+            <standard-table
+                    bordered
+                    :columns="columns"
+                    :dataSource="tableList"
+                    :pagination="false"
+                    @change="onChange"
+                    :loading="loading"
+                   style="padding-bottom: 15px;box-sizing: border-box;"
+                    >
+                    
+                    <div slot="patnerLevel"  slot-scope="{text}">
+                        <!-- 一级合伙人 -->
+                        {{ patnerLevelObj[text]}}
+                    </div>
+                    <div slot="operation" slot-scope="{ record }">
+                        <a-button type="link" @click="watchMessage(record,'1')">详情</a-button>
+                    </div>
+                    </standard-table>
+          </div>
+         
+        </div>
+      </div>
+    </div>
+  </template>
+              
+  <script>
+  // import mixin from "../../minins/mixin";
+  // import tree from "@/components/tree/tree";
+  import StandardTable from "@/components/table/StandardTable";
+  
+  import moment from "moment";
+  const columns = [
+    {
+      title: "代理人名称",
+      dataIndex: "userName",
+    },
+  
+    {
+      title: "工号",
+      dataIndex: "userId",
+    },
+    {
+      title: "推荐人",
+      dataIndex: "suggestName",
+    },
+    {
+      title: "总保费",
+      dataIndex: "totalIncome",
+    },
+  
+    {
+      title: "我的佣金",
+      dataIndex: "commission",
+    },
+    
+   
+    
+    // {
+    //   title: "操作",
+    //   dataIndex: "operation",
+    //   fixed: "right",
+    //   width: 100,
+    //   scopedSlots: { customRender: "operation" },
+    // },
+  ];
+  
+  export default {
+    components: {
+      StandardTable,
+    },
+    //   mixins: [mixin],
+    data() {
+      return {
+        columns,
+       
+        formState: {
+          days: undefined,
+          time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
+          name: undefined,
+          userCode: undefined,
+          phoneNumber: undefined,
+          endDate: moment().format("YYYY-MM-DD"),
+          beginDate: moment().format("YYYY-MM-DD"),
+        },
+        labelCol: { span: 4 },
+        dataForm: {},
+        patnerLevelObj:{
+            1:"一级合伙人",
+            2:"二级合伙人",
+            3:"三级合伙人",
+            4:"四级合伙人",
+            5:"五级合伙人",
+        },
+        visible: false,
+        backLinePersonnel: {},
+        //   columns: columns,
+        companyList: [],
+        tableList: [],
+        studioTableList: [],
+        pagination: {
+          current: 1,
+          defaultPageSize: 10,
+          total: 0,
+          pagesize0ptions: ["10", "20", "30", "50", "100"],
+          hideOnSinglePage: false,
+          showQuickJumper: true, //
+          showSizeChanger: true, //是否可以改变pagesize
+          showTotal: (total) => `共 ${total} 条数据`,
+        },
+        partnerObj: {},
+        loading: false,
+        process: process.env.VUE_APP_API_BASE_URL,
+        treeData: [],
+        onLoadData: false,
+        replaceFields: {
+          children: "children",
+          title: "name",
+          key: "id",
+        },
+        deptId: "",
+        manyObj:{}
+      };
+    },
+    watch: {
+      "formState.days"() {
+        this.getList();
+      },
+    },
+    async mounted() {
+        await this.getTreeDeptUser();
+        this.partnerObj={...JSON.parse(this.$route.query.user)}
+        if(this.$route.query.time!="{}"){
+            this.formState.beginDate=JSON.parse(this.$route.query.time).beginDate
+            this.formState.endDate=JSON.parse(this.$route.query.time).endDate
+            this.formState.time=[
+                JSON.parse(this.$route.query.time).beginDate,
+                JSON.parse(this.$route.query.time).endDate
+            ]
+        }else{
+            this.formState.beginDate=''
+            this.formState.endDate=''
+            this.formState.time=[]
+        }
+      
+        this.formState.days=this.$route.query.days
+       
+  
+      // setTimeout(() => {
+      // }, 1000);
+    },
+    methods: {
+        watchMessage(item){
+            this.$router.push({
+            path: "/wallet/partner/message",
+            query: {
+            user:JSON.stringify( {
+                ...item,
+            
+            }),
+            deptId: this.deptId,
+            days:this.days,
+            time:JSON.stringify( {
+                beginDate: this.formState.beginDate,
+                endDate: this.formState.endDate,
+            }),
+            
+            },
+        });
+    },
+        
+       
+        onChange(pagination) {
+        // this.$message.info('表格状态改变了')
+  
+        this.pagination = {
+          current: pagination.current,
+          defaultPageSize: pagination.defaultPageSize,
+          total: pagination.total,
+        };
+        this.getAgencyList();
+      },
+      getList() {
+        this.pagination.current = 1;
+        this.pagination.defaultPageSize = 12;
+        this.getAgencyList();
+      },
+      async getTreeDeptUser() {
+        this.onLoadData = true;
+  
+        this.$API.wallet.getSysDeptTree({}).then((res) => {
+          if (res.data.code === 200) {
+            this.treeData = [...res.data.data];
+            this.deptId = res.data.data[0].id;
+            this.getAgencyList();
+          }
+        });
+      },
+      numberToChinese(num) {
+        const chineseNumbers = [
+          "一",
+          "二",
+          "三",
+          "四",
+          "五",
+          "六",
+          "七",
+          "八",
+          "九",
+        ];
+        return chineseNumbers[num - 1]; // 假设num是1到9的数字
+      },
+  
+      treeChoose(id) {
+        this.pagination.current = 1;
+        this.pagination.defaultPageSize = 10;
+        this.deptId = id[0];
+        this.getList();
+      },
+  
+      onChangeTime(val) {
+        // console.log(val);
+        this.formState.beginDate = val[0];
+        this.formState.endDate = val[1];
+        this.formState.days = undefined;
+        this.getList();
+      },
+      handleFinish() {
+        //
+      },
+      wholeHandleChange() {
+        this.getProvinceList(this.formState.whole);
+      },
+      provinceHandleChange() {
+        this.getCityList(this.formState.provinceId);
+      },
+      cityHandleChange() {
+        this.getAreaList(this.formState.cityId);
+      },
+      countyHandleChange() {
+        this.getStoreList(this.formState.countyId);
+      },
+  
+      getAgencyList() {
+        this.loading = true;
+        // delete this.formState.time
+        this.$API.wallet
+       
+          .getTeamUserInfo({
+            // pageNum: this.pagination.current,
+            // pageSize: this.pagination.defaultPageSize,
+            deptId: this.deptId,
+            // deptIds:this.partnerObj.deptIds,
+            ...this.formState,
+            userId:this.partnerObj.userId,
+            userIds:this.partnerObj.userIds,
+            // type:2,
+            loginUserId:this.partnerObj.loginUserId
+            // partnerIds:this.partnerObj.partnerIds
+          })
+          .then((res) => {
+            if (res.data.code === 200) {
+              this.loading = false;
+              this.tableList = [...res.data.data.partnerInfoVoList];
+              this.manyObj={...res.data.data}
+            //   this.pagination.total = res.data.data.total;
+            }
+          });
+      },
+      //分页事件
+      // pageChange(page, pageSize) {
+      //   //   console.log(page, pageSize);
+      //   this.pagination.pageNum = page;
+      //   this.pagination.pageSize = pageSize;
+      //   this.getAgencyList();
+      // },
+    },
+  };
+  </script>
+      <style lang='less' scoped>
+  .quote {
+    display: flex;
+    > div:first-child {
+      width: 20%;
+      background: #fff;
+      margin-right: 15px;
+    }
+    .quote-tree {
+      padding: 15px;
+      box-sizing: border-box;
+      //
+    }
+  }
+  .back-line-main {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    .back-line-header {
+      padding: 15px;
+      box-sizing: border-box;
+      background: #fff;
+      .back-line-header-title {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        padding-bottom: 15px;
+        // background: #fff;
+        border-bottom: 1px solid #eee;
+        box-sizing: border-box;
+        h2 {
+          margin: 0;
+        }
+        > div {
+          flex: 1;
+          display: flex;
+          align-items: center;
+          justify-content: flex-end;
+        }
+        span {
+          display: block;
+          margin-right: 15px;
+        }
+        /deep/.ant-calendar-picker {
+          width: 300px;
+        }
+      }
+    }
+    > div {
+      // height: 152px;
+      // background: #fff;
+    }
+    .ant-modal-body {
+      /deep/.ant-form-inline {
+        display: flex;
+      }
+      /deep/ .ant-form-inline .ant-form-item {
+        flex: none;
+        width: 50%;
+      }
+    }
+  }
+  .list {
+    padding: 0px;
+    box-sizing: border-box;
+    flex: 1;
+   
+    > .ant-descriptions {
+      padding: 10px;
+      box-sizing: border-box;
+      background: #fff;
+    
+    }
+    background: none;
+    .ant-spin-nested-loading {
+      padding: 10px 0;
+      box-sizing: border-box;
+    }
+  }
+  .ant-tabs{
+      padding:0 10px;
+      box-sizing: border-box;
+      background: #fff;
+     /deep/ .ant-tabs-content{
+        padding-bottom: 15px;
+        box-sizing: border-box;
+      }
+  }
+  .personnel-message {
+    // display: flex;
+    // flex-wrap: wrap;
+    // justify-content: space-between;
+    > div {
+      height: auto;
+  
+      border-radius: 8px;
+  
+      padding: 15px;
+  
+      box-sizing: border-box;
+      margin-bottom: 15px;
+      position: relative;
+  
+      padding: 0 10px;
+      box-sizing: border-box;
+      > div {
+        background: linear-gradient(360deg, #ffffff 70%, #ffd6d8 100%);
+        box-shadow: 0px 2px 8px 0px rgba(141, 149, 176, 0.15);
+        border-radius: 8px 8px 8px 8px;
+        padding: 10px;
+        box-sizing: border-box;
+      }
+      //初始化样式
+  
+      p {
+        display: flex;
+        justify-content: space-between;
+      }
+      p:first-child {
+        justify-content: flex-start;
+        > span {
+          display: flex;
+          margin-left: 15px;
+          color: #fff;
+          padding: 0 10px;
+          box-sizing: border-box;
+          border-radius: 4px;
+          align-items: center;
+          justify-content: center;
+        }
+      }
+      // p:last-child {
+      //   margin: 0;
+      //   justify-content: flex-end;
+      //   // text-align: right;
+      // }
+      div.user-icon {
+        width: 100%;
+        height: auto;
+        // position: absolute;
+        // top: 12px;
+        // right: 15px;
+        border-radius: 50%;
+        // overflow: hidden;
+        display: flex;
+        justify-content: space-between;
+        padding-bottom: 10px;
+        box-sizing: border-box;
+        align-items: center;
+        img {
+          width: 40px;
+          height: 40px;
+          border-radius: 50%;
+        }
+      }
+      .progress {
+        width: 100%;
+        height: 5px;
+        background: #eee;
+        border-radius: 8px;
+        margin-bottom: 8px;
+        > p {
+          width: 67%;
+          height: 100%;
+          background: #2a55e5;
+          border-radius: 8px;
+        }
+      }
+      // margin-right: 2%;
+    }
+    > div.agency1 {
+      background: linear-gradient(360deg, #ffffff 70%, #ffd6d8 100%);
+      box-shadow: 0px 2px 8px 0px rgba(141, 149, 176, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      > p:first-child {
+        color: #d32029;
+        span {
+          background: #d32029;
+        }
+      }
+    }
+    > div.agency2 {
+      background: rgba(216, 74, 27, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(216, 74, 27, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(216, 74, 27, 0.5);
+      > p:first-child {
+        color: #d84a1b;
+        span {
+          background: #d84a1b;
+        }
+      }
+    }
+    > div.agency3 {
+      background: rgba(42, 85, 229, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(42, 85, 229, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(42, 85, 229, 0.5);
+      > p:first-child {
+        color: #2a55e5;
+        span {
+          background: #2a55e5;
+        }
+      }
+    }
+    > div.agency4 {
+      background: rgba(19, 168, 168, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(19, 168, 168, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(19, 168, 168, 0.5);
+      > p:first-child {
+        color: #13a8a8;
+        span {
+          background: #13a8a8;
+        }
+      }
+    }
+    > div.agency5 {
+      background: rgba(23, 125, 220, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(23, 125, 220, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(23, 125, 220, 0.5);
+  
+      > p:first-child {
+        color: #177ddc;
+        span {
+          background: #177ddc;
+        }
+      }
+    }
+  }
+  .page {
+    display: flex;
+    justify-content: flex-end;
+  }
+  </style>

+ 695 - 0
src/pages/wallet/partner/message.vue

@@ -0,0 +1,695 @@
+<template>
+    <div class="quote">
+      <div class="quote-tree">
+        <div style="overflow-y: auto">
+          <a-tree
+            :tree-data="treeData"
+            :replaceFields="replaceFields"
+            :title="'1'"
+            @select="treeChoose"
+          />
+          <!-- <tree @getList="treeChoose"></tree> -->
+        </div>
+      </div>
+      <div class="back-line-main">
+        <div class="back-line-header">
+          <div class="back-line-header-title">
+            <h2>合伙人</h2>
+            <div>
+              <span>时间筛选</span>
+              <a-range-picker
+                v-model="formState.time"
+                @change="onChangeTime"
+                valueFormat="YYYY-MM-DD"
+              >
+                <a-icon slot="suffixIcon" type="calendar" />
+              </a-range-picker>
+              <a-radio-group
+                default-value="1"
+                button-style="solid"
+                v-model="formState.days"
+              >
+                <a-radio-button
+                  :value="1"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  当天
+                </a-radio-button>
+                <a-radio-button
+                  :value="2"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  近7天
+                </a-radio-button>
+                <a-radio-button
+                  :value="3"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  近30天
+                </a-radio-button>
+              </a-radio-group>
+            </div>
+          </div>
+        </div>
+        <div class="list">
+            <a-descriptions :title="partnerObj.userName">
+                <a-descriptions-item label="会员总人数">
+                    {{ partnerObj.memberShip }}
+                </a-descriptions-item>
+                <a-descriptions-item label="总保费">
+                    {{ partnerObj.totalIncome }}
+                
+                </a-descriptions-item>
+                <a-descriptions-item label="总佣金">
+                    {{ partnerObj.commission }}
+                
+                </a-descriptions-item>
+                <a-descriptions-item label="合伙人等级">
+                    {{ patnerLevelObj[partnerObj.patnerLevel] }}
+             
+                </a-descriptions-item>
+                <a-descriptions-item label="推荐人">
+                    {{ partnerObj.suggestName }}
+              
+                </a-descriptions-item>
+            </a-descriptions>
+            <a-tabs default-active-key="1" @change="tabChange">
+                <a-tab-pane key="1" tab="直接合伙人">
+                    <standard-table
+                    bordered
+                    :columns="columns"
+                    :dataSource="tableList"
+                    :pagination="false"
+                    @change="onChange"
+                    :loading="loading"
+                   
+                    >
+                    
+                    <div slot="patnerLevel"  slot-scope="{text}">
+                        <!-- 一级合伙人 -->
+                        {{ patnerLevelObj[text]}}
+                    </div>
+                    <div slot="operation" slot-scope="{ record }">
+                        <a-button type="link" @click="watchMessage(record,'1')">详情</a-button>
+                    </div>
+                    </standard-table>
+                </a-tab-pane>
+                <a-tab-pane key="2" tab="直接工作室" >
+                    <standard-table
+                    bordered
+                    :columns="columns1"
+                    :dataSource="studioTableList"
+                    :pagination="false"
+                    @change="onChange"
+                    :loading="loading"
+                    
+                    >
+                    
+                    <div slot="patnerLevel"  slot-scope="{text}">
+                        <!-- 一级合伙人 -->
+                        {{ patnerLevelObj[text]}}
+                    </div>
+                    <div slot="operation" slot-scope="{ record }">
+                        <a-button type="link" @click="watchMessage(record,'2')">详情</a-button>
+                    </div>
+                    </standard-table>
+                </a-tab-pane>
+              
+            </a-tabs>
+          <div>
+            
+          </div>
+         
+        </div>
+      </div>
+    </div>
+  </template>
+              
+  <script>
+  // import mixin from "../../minins/mixin";
+  // import tree from "@/components/tree/tree";
+  import StandardTable from "@/components/table/StandardTable";
+  
+  import moment from "moment";
+  const columns = [
+   
+    {
+      title: "等级",
+      dataIndex: "patnerLevel",
+      scopedSlots: { customRender: "patnerLevel" },
+    },
+    {
+      title: "会员总人数",
+      dataIndex: "memberShip",
+    },
+    {
+      title: "总保费",
+      dataIndex: "totalIncome",
+    },
+  
+    {
+      title: "我的佣金",
+      dataIndex: "commission",
+    },
+    {
+      title: "合伙人",
+      dataIndex: "numberPartners",
+    },
+    {
+      title: "直接工作室",
+      dataIndex: "directStudio",
+   
+    },
+   
+    
+    {
+      title: "操作",
+      dataIndex: "operation",
+      fixed: "right",
+      width: 100,
+      scopedSlots: { customRender: "operation" },
+    },
+  ];
+  const columns1 = [
+   
+    {
+      title: "工作室名称",
+      dataIndex: "userName",
+   
+    },
+    {
+      title: "推荐人",
+      dataIndex: "suggestName",
+    },
+    {
+      title: "下属团队",
+      dataIndex: "deptNum",
+    },
+  
+    {
+      title: "会员总人数",
+      dataIndex: "memberShip",
+    },
+    {
+      title: "总保费",
+      dataIndex: "totalIncome",
+    },
+    {
+      title: "我的佣金",
+      dataIndex: "commission",
+   
+    },
+   
+    
+    {
+      title: "操作",
+      dataIndex: "operation",
+      fixed: "right",
+      width: 100,
+      scopedSlots: { customRender: "operation" },
+    },
+  ];
+  export default {
+    components: {
+      StandardTable,
+    },
+    //   mixins: [mixin],
+    data() {
+      return {
+        columns,
+        columns1,
+        formState: {
+          days: undefined,
+          time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
+          name: undefined,
+          userCode: undefined,
+          phoneNumber: undefined,
+          endDate: moment().format("YYYY-MM-DD"),
+          beginDate: moment().format("YYYY-MM-DD"),
+        },
+        labelCol: { span: 4 },
+        dataForm: {},
+        patnerLevelObj:{
+            1:"一级合伙人",
+            2:"二级合伙人",
+            3:"三级合伙人",
+            4:"四级合伙人",
+            5:"五级合伙人",
+        },
+        visible: false,
+        backLinePersonnel: {},
+        //   columns: columns,
+        companyList: [],
+        tableList: [],
+        studioTableList: [],
+        pagination: {
+          current: 1,
+          defaultPageSize: 10,
+          total: 0,
+          pagesize0ptions: ["10", "20", "30", "50", "100"],
+          hideOnSinglePage: false,
+          showQuickJumper: true, //
+          showSizeChanger: true, //是否可以改变pagesize
+          showTotal: (total) => `共 ${total} 条数据`,
+        },
+        partnerObj: {},
+        loading: false,
+        process: process.env.VUE_APP_API_BASE_URL,
+        treeData: [],
+        onLoadData: false,
+        replaceFields: {
+          children: "children",
+          title: "name",
+          key: "id",
+        },
+        deptId: "",
+      };
+    },
+    watch: {
+      "formState.days"() {
+        this.getList();
+      },
+    },
+    async mounted() {
+        await this.getTreeDeptUser();
+        this.partnerObj={...JSON.parse(this.$route.query.user)}
+        // console.log()
+        if(this.$route.query.time!="{}"){
+            this.formState.beginDate=JSON.parse(this.$route.query.time).beginDate
+            this.formState.endDate=JSON.parse(this.$route.query.time).endDate
+            this.formState.time=[
+                JSON.parse(this.$route.query.time).beginDate,
+                JSON.parse(this.$route.query.time).endDate
+            ]
+        }else{
+            this.formState.beginDate=''
+            this.formState.endDate=''
+            this.formState.time=[]
+        }
+      
+        this.formState.days=this.$route.query.days
+       
+  
+      // setTimeout(() => {
+      // }, 1000);
+    },
+    methods: {
+        watchMessage(item,type){
+            this.$router.push({
+                path: type=='1' ? "/wallet/message/partnerInfo":'/wallet/message/studioInfo',
+                query: {
+                user:JSON.stringify( {
+                    ...item,
+                }),
+                deptId: this.deptId,
+                days:this.days,
+                time:JSON.stringify( {
+                    beginDate: this.formState.beginDate,
+                    endDate: this.formState.endDate,
+                    
+                }),
+                
+                },
+            });
+    },
+        tabChange(type){
+           
+            if(type==2){
+                this.getStudioInfo()
+            }else{
+                this.getAgencyList();  
+            }
+        },
+        getStudioInfo(){
+            this.loading = true;
+            // delete this.formState.time
+            this.$API.wallet
+            
+                .queryPartnerManyInfo({
+                // pageNum: this.pagination.current,
+                // pageSize: this.pagination.defaultPageSize,
+                  deptId: this.deptId,
+                  ...this.formState,
+                  type:2,
+                  userId:this.partnerObj.userId,
+                  leaderIds:this.partnerObj.leaderIds
+                })
+                .then((res) => {
+                  if (res.data.code === 200) {
+                      this.loading = false;
+                      
+                      this.studioTableList = [...res.data.data.partnerInfoVoList];
+                  //   this.pagination.total = res.data.data.total;
+                  }
+                });
+        },
+        onChange(pagination) {
+        // this.$message.info('表格状态改变了')
+  
+        this.pagination = {
+          current: pagination.current,
+          defaultPageSize: pagination.defaultPageSize,
+          total: pagination.total,
+        };
+        this.getAgencyList();
+      },
+      getList() {
+        this.pagination.current = 1;
+        this.pagination.defaultPageSize = 12;
+        this.getAgencyList();
+      },
+      async getTreeDeptUser() {
+        this.onLoadData = true;
+  
+        this.$API.wallet.getSysDeptTree({}).then((res) => {
+          if (res.data.code === 200) {
+            this.treeData = [...res.data.data];
+            this.deptId = res.data.data[0].id;
+            this.getAgencyList();
+          }
+        });
+      },
+      numberToChinese(num) {
+        const chineseNumbers = [
+          "一",
+          "二",
+          "三",
+          "四",
+          "五",
+          "六",
+          "七",
+          "八",
+          "九",
+        ];
+        return chineseNumbers[num - 1]; // 假设num是1到9的数字
+      },
+  
+      treeChoose(id) {
+        this.pagination.current = 1;
+        this.pagination.defaultPageSize = 10;
+        this.deptId = id[0];
+        this.getList();
+      },
+  
+      onChangeTime(val) {
+        // console.log(val);
+        this.formState.beginDate = val[0];
+        this.formState.endDate = val[1];
+        this.formState.days = undefined;
+        this.getList();
+      },
+      handleFinish() {
+        //
+      },
+      wholeHandleChange() {
+        this.getProvinceList(this.formState.whole);
+      },
+      provinceHandleChange() {
+        this.getCityList(this.formState.provinceId);
+      },
+      cityHandleChange() {
+        this.getAreaList(this.formState.cityId);
+      },
+      countyHandleChange() {
+        this.getStoreList(this.formState.countyId);
+      },
+  
+      getAgencyList() {
+        this.loading = true;
+        // delete this.formState.time
+        this.$API.wallet
+       
+          .queryPartnerInfo({
+            // pageNum: this.pagination.current,
+            // pageSize: this.pagination.defaultPageSize,
+            deptId: this.deptId,
+            ...this.formState,
+            userId:this.partnerObj.userId
+
+          })
+          .then((res) => {
+            if (res.data.code === 200) {
+              this.loading = false;
+              this.tableList = [...res.data.data];
+            //   this.pagination.total = res.data.data.total;
+            }
+          });
+      },
+      //分页事件
+      // pageChange(page, pageSize) {
+      //   //   console.log(page, pageSize);
+      //   this.pagination.pageNum = page;
+      //   this.pagination.pageSize = pageSize;
+      //   this.getAgencyList();
+      // },
+    },
+  };
+  </script>
+      <style lang='less' scoped>
+  .quote {
+    display: flex;
+    > div:first-child {
+      width: 20%;
+      background: #fff;
+      margin-right: 15px;
+    }
+    .quote-tree {
+      padding: 15px;
+      box-sizing: border-box;
+      //
+    }
+  }
+  .back-line-main {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    .back-line-header {
+      padding: 15px;
+      box-sizing: border-box;
+      background: #fff;
+      .back-line-header-title {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        padding-bottom: 15px;
+        // background: #fff;
+        border-bottom: 1px solid #eee;
+        box-sizing: border-box;
+        h2 {
+          margin: 0;
+        }
+        > div {
+          flex: 1;
+          display: flex;
+          align-items: center;
+          justify-content: flex-end;
+        }
+        span {
+          display: block;
+          margin-right: 15px;
+        }
+        /deep/.ant-calendar-picker {
+          width: 300px;
+        }
+      }
+    }
+    > div {
+      // height: 152px;
+      // background: #fff;
+    }
+    .ant-modal-body {
+      /deep/.ant-form-inline {
+        display: flex;
+      }
+      /deep/ .ant-form-inline .ant-form-item {
+        flex: none;
+        width: 50%;
+      }
+    }
+  }
+  .list {
+    padding: 0px;
+    box-sizing: border-box;
+    flex: 1;
+   
+    > .ant-descriptions {
+      padding: 10px;
+      box-sizing: border-box;
+      background: #fff;
+    
+    }
+    background: none;
+    .ant-spin-nested-loading {
+      padding: 10px 0;
+      box-sizing: border-box;
+    }
+  }
+  .ant-tabs{
+      padding:0 10px;
+      box-sizing: border-box;
+      background: #fff;
+     /deep/ .ant-tabs-content{
+        padding-bottom: 15px;
+        box-sizing: border-box;
+      }
+  }
+  .personnel-message {
+    // display: flex;
+    // flex-wrap: wrap;
+    // justify-content: space-between;
+    > div {
+      height: auto;
+  
+      border-radius: 8px;
+  
+      padding: 15px;
+  
+      box-sizing: border-box;
+      margin-bottom: 15px;
+      position: relative;
+  
+      padding: 0 10px;
+      box-sizing: border-box;
+      > div {
+        background: linear-gradient(360deg, #ffffff 70%, #ffd6d8 100%);
+        box-shadow: 0px 2px 8px 0px rgba(141, 149, 176, 0.15);
+        border-radius: 8px 8px 8px 8px;
+        padding: 10px;
+        box-sizing: border-box;
+      }
+      //初始化样式
+  
+      p {
+        display: flex;
+        justify-content: space-between;
+      }
+      p:first-child {
+        justify-content: flex-start;
+        > span {
+          display: flex;
+          margin-left: 15px;
+          color: #fff;
+          padding: 0 10px;
+          box-sizing: border-box;
+          border-radius: 4px;
+          align-items: center;
+          justify-content: center;
+        }
+      }
+      // p:last-child {
+      //   margin: 0;
+      //   justify-content: flex-end;
+      //   // text-align: right;
+      // }
+      div.user-icon {
+        width: 100%;
+        height: auto;
+        // position: absolute;
+        // top: 12px;
+        // right: 15px;
+        border-radius: 50%;
+        // overflow: hidden;
+        display: flex;
+        justify-content: space-between;
+        padding-bottom: 10px;
+        box-sizing: border-box;
+        align-items: center;
+        img {
+          width: 40px;
+          height: 40px;
+          border-radius: 50%;
+        }
+      }
+      .progress {
+        width: 100%;
+        height: 5px;
+        background: #eee;
+        border-radius: 8px;
+        margin-bottom: 8px;
+        > p {
+          width: 67%;
+          height: 100%;
+          background: #2a55e5;
+          border-radius: 8px;
+        }
+      }
+      // margin-right: 2%;
+    }
+    > div.agency1 {
+      background: linear-gradient(360deg, #ffffff 70%, #ffd6d8 100%);
+      box-shadow: 0px 2px 8px 0px rgba(141, 149, 176, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      > p:first-child {
+        color: #d32029;
+        span {
+          background: #d32029;
+        }
+      }
+    }
+    > div.agency2 {
+      background: rgba(216, 74, 27, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(216, 74, 27, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(216, 74, 27, 0.5);
+      > p:first-child {
+        color: #d84a1b;
+        span {
+          background: #d84a1b;
+        }
+      }
+    }
+    > div.agency3 {
+      background: rgba(42, 85, 229, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(42, 85, 229, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(42, 85, 229, 0.5);
+      > p:first-child {
+        color: #2a55e5;
+        span {
+          background: #2a55e5;
+        }
+      }
+    }
+    > div.agency4 {
+      background: rgba(19, 168, 168, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(19, 168, 168, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(19, 168, 168, 0.5);
+      > p:first-child {
+        color: #13a8a8;
+        span {
+          background: #13a8a8;
+        }
+      }
+    }
+    > div.agency5 {
+      background: rgba(23, 125, 220, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(23, 125, 220, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(23, 125, 220, 0.5);
+  
+      > p:first-child {
+        color: #177ddc;
+        span {
+          background: #177ddc;
+        }
+      }
+    }
+  }
+  .page {
+    display: flex;
+    justify-content: flex-end;
+  }
+  </style>

+ 710 - 0
src/pages/wallet/partner/partnerInfo.vue

@@ -0,0 +1,710 @@
+<template>
+    <div class="quote">
+      <div class="quote-tree">
+        <div style="overflow-y: auto">
+          <a-tree
+            :tree-data="treeData"
+            :replaceFields="replaceFields"
+            :title="'1'"
+            @select="treeChoose"
+          />
+          <!-- <tree @getList="treeChoose"></tree> -->
+        </div>
+      </div>
+      <div class="back-line-main">
+        <div class="back-line-header">
+          <div class="back-line-header-title">
+            <h2>合伙人</h2>
+            <div>
+              <span>时间筛选</span>
+              <a-range-picker
+                v-model="formState.time"
+                @change="onChangeTime"
+                valueFormat="YYYY-MM-DD"
+              >
+                <a-icon slot="suffixIcon" type="calendar" />
+              </a-range-picker>
+              <a-radio-group
+                default-value="1"
+                button-style="solid"
+                v-model="formState.days"
+              >
+                <a-radio-button
+                  :value="1"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  当天
+                </a-radio-button>
+                <a-radio-button
+                  :value="2"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  近7天
+                </a-radio-button>
+                <a-radio-button
+                  :value="3"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  近30天
+                </a-radio-button>
+              </a-radio-group>
+            </div>
+          </div>
+        </div>
+        <div class="list">
+            <a-descriptions :title="patnerLevelObj[partnerObj.patnerLevel]">
+                <a-descriptions-item label="会员总人数">
+                    {{ manyObj.memberShip }}
+                </a-descriptions-item>
+                <a-descriptions-item label="总保费">
+                    {{ manyObj.totalIncome }}
+                
+                </a-descriptions-item>
+                <a-descriptions-item label="总佣金">
+                    {{ manyObj.commission }}
+                
+                </a-descriptions-item>
+                <!-- <a-descriptions-item label="合伙人等级">
+                    {{ patnerLevelObj[partnerObj.patnerLevel] }}
+             
+                </a-descriptions-item>
+                <a-descriptions-item label="推荐人">
+                    {{ partnerObj.userName }}
+              
+                </a-descriptions-item> -->
+            </a-descriptions>
+            <a-tabs default-active-key="1" @change="tabChange">
+                <a-tab-pane key="1" tab="直接合伙人">
+                    <standard-table
+                    bordered
+                    :columns="columns"
+                    :dataSource="tableList"
+                    :pagination="false"
+                    @change="onChange"
+                    :loading="loading"
+                   
+                    >
+                    
+                    <div slot="patnerLevel"  slot-scope="{text}">
+                        <!-- 一级合伙人 -->
+                        {{ patnerLevelObj[text]}}
+                    </div>
+                    <div slot="operation" slot-scope="{ record }">
+                        <a-button type="link" @click="watchMessage(record,'1')">详情</a-button>
+                    </div>
+                    </standard-table>
+                </a-tab-pane>
+                <a-tab-pane key="2" tab="直接工作室" >
+                    <standard-table
+                    bordered
+                    :columns="columns1"
+                    :dataSource="studioTableList"
+                    :pagination="false"
+                    @change="onChange"
+                    :loading="loading"
+                    
+                    >
+                    
+                    <div slot="patnerLevel"  slot-scope="{text}">
+                        <!-- 一级合伙人 -->
+                        {{ patnerLevelObj[text]}}
+                    </div>
+                    <div slot="operation" slot-scope="{ record }">
+                        <a-button type="link" @click="watchMessage(record,'2')">详情</a-button>
+                    </div>
+                    </standard-table>
+                </a-tab-pane>
+              
+            </a-tabs>
+                    
+               
+                
+              
+          
+          <div>
+            
+          </div>
+         
+        </div>
+      </div>
+    </div>
+  </template>
+              
+  <script>
+  // import mixin from "../../minins/mixin";
+  // import tree from "@/components/tree/tree";
+  import StandardTable from "@/components/table/StandardTable";
+  
+  import moment from "moment";
+  const columns = [
+   
+    {
+      title: "合伙人姓名",
+      dataIndex: "userName",
+      
+    },
+    {
+      title: "推荐人",
+      dataIndex: "suggestName",
+      
+    },
+    {
+      title: "会员总人数",
+      dataIndex: "memberShip",
+    },
+    {
+      title: "总保费",
+      dataIndex: "totalIncome",
+    },
+  
+    {
+      title: "我的佣金",
+      dataIndex: "commission",
+    },
+    {
+      title: "合伙人",
+      dataIndex: "numberPartners",
+    },
+    {
+      title: "工作室",
+      dataIndex: "directStudio",
+   
+    },
+   
+    
+    {
+      title: "操作",
+      dataIndex: "operation",
+      fixed: "right",
+      width: 100,
+      scopedSlots: { customRender: "operation" },
+    },
+  ];
+  const columns1 = [
+   
+    {
+      title: "工作室名称",
+      dataIndex: "userName",
+   
+    },
+    {
+      title: "推荐人",
+      dataIndex: "suggestName",
+    },
+    {
+      title: "下属团队",
+      dataIndex: "deptNum",
+    },
+  
+    {
+      title: "会员总人数",
+      dataIndex: "memberShip",
+    },
+    {
+      title: "总保费",
+      dataIndex: "totalIncome",
+    },
+    {
+      title: "我的佣金",
+      dataIndex: "commission",
+   
+    },
+   
+    
+    {
+      title: "操作",
+      dataIndex: "operation",
+      fixed: "right",
+      width: 100,
+      scopedSlots: { customRender: "operation" },
+    },
+  ];
+  export default {
+    components: {
+      StandardTable,
+    },
+    //   mixins: [mixin],
+    data() {
+      return {
+        columns,
+        columns1,
+        formState: {
+          days: undefined,
+          time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
+          name: undefined,
+          userCode: undefined,
+          phoneNumber: undefined,
+          endDate: moment().format("YYYY-MM-DD"),
+          beginDate: moment().format("YYYY-MM-DD"),
+        },
+        labelCol: { span: 4 },
+        dataForm: {},
+        patnerLevelObj:{
+            1:"一级合伙人",
+            2:"二级合伙人",
+            3:"三级合伙人",
+            4:"四级合伙人",
+            5:"五级合伙人",
+        },
+        visible: false,
+        backLinePersonnel: {},
+        //   columns: columns,
+        companyList: [],
+        tableList: [],
+        studioTableList: [],
+        pagination: {
+          current: 1,
+          defaultPageSize: 10,
+          total: 0,
+          pagesize0ptions: ["10", "20", "30", "50", "100"],
+          hideOnSinglePage: false,
+          showQuickJumper: true, //
+          showSizeChanger: true, //是否可以改变pagesize
+          showTotal: (total) => `共 ${total} 条数据`,
+        },
+        partnerObj: {},
+        loading: false,
+        process: process.env.VUE_APP_API_BASE_URL,
+        treeData: [],
+        onLoadData: false,
+        replaceFields: {
+          children: "children",
+          title: "name",
+          key: "id",
+        },
+        deptId: "",
+        manyObj:{}
+      };
+    },
+    watch: {
+      "formState.days"() {
+        this.getList();
+      },
+    },
+    async mounted() {
+        await this.getTreeDeptUser();
+        this.partnerObj={...JSON.parse(this.$route.query.user)}
+        if(this.$route.query.time!="{}"){
+            this.formState.beginDate=JSON.parse(this.$route.query.time).beginDate
+            this.formState.endDate=JSON.parse(this.$route.query.time).endDate
+            this.formState.time=[
+                JSON.parse(this.$route.query.time).beginDate,
+                JSON.parse(this.$route.query.time).endDate
+            ]
+        }else{
+            this.formState.beginDate=''
+            this.formState.endDate=''
+            this.formState.time=[]
+        }
+      
+        this.formState.days=this.$route.query.days
+       
+  
+      // setTimeout(() => {
+      // }, 1000);
+    },
+    methods: {
+        watchMessage(item,type){
+          // path: type=='1' ? "/wallet/message/partnerInfo":'/wallet/message/studioInfo',
+            this.$router.push({
+              path:type=='1' ? "/wallet/partner/message":'/wallet/message/studioInfo',
+              query: {
+              user:JSON.stringify( {
+                  ...item,
+              
+              }),
+              deptId: this.deptId,
+              days:this.days,
+              time:JSON.stringify( {
+                  beginDate: this.formState.beginDate,
+                  endDate: this.formState.endDate,
+              }),
+            
+            },
+        });
+    },
+    tabChange(type){
+           
+           if(type==2){
+               this.getStudioInfo()
+           }else{
+               this.getAgencyList();  
+           }
+       },
+       getStudioInfo(){
+            this.loading = true;
+            // delete this.formState.time
+            this.$API.wallet
+            
+                .queryPartnerManyInfo({
+                // pageNum: this.pagination.current,
+                // pageSize: this.pagination.defaultPageSize,
+                    deptId: this.deptId,
+                    ...this.formState,
+                    type:2,
+                    userId:this.partnerObj.userId,
+                    leaderIds:this.partnerObj.leaderIds
+
+                })
+                .then((res) => {
+                if (res.data.code === 200) {
+                    this.loading = false;
+                    this.studioTableList = [...res.data.data.partnerInfoVoList];
+                    this.manyObj={...res.data.data}
+                //   this.pagination.total = res.data.data.total;
+                }
+                });
+        },
+       
+        onChange(pagination) {
+        // this.$message.info('表格状态改变了')
+  
+        this.pagination = {
+          current: pagination.current,
+          defaultPageSize: pagination.defaultPageSize,
+          total: pagination.total,
+        };
+        this.getAgencyList();
+      },
+      getList() {
+        this.pagination.current = 1;
+        this.pagination.defaultPageSize = 12;
+        this.getAgencyList();
+      },
+      async getTreeDeptUser() {
+        this.onLoadData = true;
+  
+        this.$API.wallet.getSysDeptTree({}).then((res) => {
+          if (res.data.code === 200) {
+            this.treeData = [...res.data.data];
+            this.deptId = res.data.data[0].id;
+            this.getAgencyList();
+          }
+        });
+      },
+      numberToChinese(num) {
+        const chineseNumbers = [
+          "一",
+          "二",
+          "三",
+          "四",
+          "五",
+          "六",
+          "七",
+          "八",
+          "九",
+        ];
+        return chineseNumbers[num - 1]; // 假设num是1到9的数字
+      },
+  
+      treeChoose(id) {
+        this.pagination.current = 1;
+        this.pagination.defaultPageSize = 10;
+        this.deptId = id[0];
+        this.getList();
+      },
+  
+      onChangeTime(val) {
+        // console.log(val);
+        this.formState.beginDate = val[0];
+        this.formState.endDate = val[1];
+        this.formState.days = undefined;
+        this.getList();
+      },
+      handleFinish() {
+        //
+      },
+      wholeHandleChange() {
+        this.getProvinceList(this.formState.whole);
+      },
+      provinceHandleChange() {
+        this.getCityList(this.formState.provinceId);
+      },
+      cityHandleChange() {
+        this.getAreaList(this.formState.cityId);
+      },
+      countyHandleChange() {
+        this.getStoreList(this.formState.countyId);
+      },
+  
+      getAgencyList() {
+        this.loading = true;
+        // delete this.formState.time
+        this.$API.wallet
+       
+          .queryPartnerManyInfo({
+            // pageNum: this.pagination.current,
+            // pageSize: this.pagination.defaultPageSize,
+            deptId: this.deptId,
+            ...this.formState,
+            userId:this.partnerObj.userId,
+            type:1,
+            partnerIds:this.partnerObj.partnerIds
+          })
+          .then((res) => {
+            if (res.data.code === 200) {
+              this.loading = false;
+              this.tableList = [...res.data.data.partnerInfoVoList];
+              this.manyObj={...res.data.data}
+            //   this.pagination.total = res.data.data.total;
+            }
+          });
+      },
+      //分页事件
+      // pageChange(page, pageSize) {
+      //   //   console.log(page, pageSize);
+      //   this.pagination.pageNum = page;
+      //   this.pagination.pageSize = pageSize;
+      //   this.getAgencyList();
+      // },
+    },
+  };
+  </script>
+      <style lang='less' scoped>
+  .quote {
+    display: flex;
+    > div:first-child {
+      width: 20%;
+      background: #fff;
+      margin-right: 15px;
+    }
+    .quote-tree {
+      padding: 15px;
+      box-sizing: border-box;
+      //
+    }
+  }
+  .back-line-main {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    .back-line-header {
+      padding: 15px;
+      box-sizing: border-box;
+      background: #fff;
+      .back-line-header-title {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        padding-bottom: 15px;
+        // background: #fff;
+        border-bottom: 1px solid #eee;
+        box-sizing: border-box;
+        h2 {
+          margin: 0;
+        }
+        > div {
+          flex: 1;
+          display: flex;
+          align-items: center;
+          justify-content: flex-end;
+        }
+        span {
+          display: block;
+          margin-right: 15px;
+        }
+        /deep/.ant-calendar-picker {
+          width: 300px;
+        }
+      }
+    }
+    > div {
+      // height: 152px;
+      // background: #fff;
+    }
+    .ant-modal-body {
+      /deep/.ant-form-inline {
+        display: flex;
+      }
+      /deep/ .ant-form-inline .ant-form-item {
+        flex: none;
+        width: 50%;
+      }
+    }
+  }
+  .list {
+    padding: 0px;
+    box-sizing: border-box;
+    flex: 1;
+   
+    > .ant-descriptions {
+      padding: 10px;
+      box-sizing: border-box;
+      background: #fff;
+    
+    }
+    background: none;
+    .ant-spin-nested-loading {
+      padding: 10px 0;
+      box-sizing: border-box;
+    }
+  }
+  .ant-tabs{
+      padding:0 10px;
+      box-sizing: border-box;
+      background: #fff;
+     /deep/ .ant-tabs-content{
+        padding-bottom: 15px;
+        box-sizing: border-box;
+      }
+  }
+  .personnel-message {
+    // display: flex;
+    // flex-wrap: wrap;
+    // justify-content: space-between;
+    > div {
+      height: auto;
+  
+      border-radius: 8px;
+  
+      padding: 15px;
+  
+      box-sizing: border-box;
+      margin-bottom: 15px;
+      position: relative;
+  
+      padding: 0 10px;
+      box-sizing: border-box;
+      > div {
+        background: linear-gradient(360deg, #ffffff 70%, #ffd6d8 100%);
+        box-shadow: 0px 2px 8px 0px rgba(141, 149, 176, 0.15);
+        border-radius: 8px 8px 8px 8px;
+        padding: 10px;
+        box-sizing: border-box;
+      }
+      //初始化样式
+  
+      p {
+        display: flex;
+        justify-content: space-between;
+      }
+      p:first-child {
+        justify-content: flex-start;
+        > span {
+          display: flex;
+          margin-left: 15px;
+          color: #fff;
+          padding: 0 10px;
+          box-sizing: border-box;
+          border-radius: 4px;
+          align-items: center;
+          justify-content: center;
+        }
+      }
+      // p:last-child {
+      //   margin: 0;
+      //   justify-content: flex-end;
+      //   // text-align: right;
+      // }
+      div.user-icon {
+        width: 100%;
+        height: auto;
+        // position: absolute;
+        // top: 12px;
+        // right: 15px;
+        border-radius: 50%;
+        // overflow: hidden;
+        display: flex;
+        justify-content: space-between;
+        padding-bottom: 10px;
+        box-sizing: border-box;
+        align-items: center;
+        img {
+          width: 40px;
+          height: 40px;
+          border-radius: 50%;
+        }
+      }
+      .progress {
+        width: 100%;
+        height: 5px;
+        background: #eee;
+        border-radius: 8px;
+        margin-bottom: 8px;
+        > p {
+          width: 67%;
+          height: 100%;
+          background: #2a55e5;
+          border-radius: 8px;
+        }
+      }
+      // margin-right: 2%;
+    }
+    > div.agency1 {
+      background: linear-gradient(360deg, #ffffff 70%, #ffd6d8 100%);
+      box-shadow: 0px 2px 8px 0px rgba(141, 149, 176, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      > p:first-child {
+        color: #d32029;
+        span {
+          background: #d32029;
+        }
+      }
+    }
+    > div.agency2 {
+      background: rgba(216, 74, 27, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(216, 74, 27, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(216, 74, 27, 0.5);
+      > p:first-child {
+        color: #d84a1b;
+        span {
+          background: #d84a1b;
+        }
+      }
+    }
+    > div.agency3 {
+      background: rgba(42, 85, 229, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(42, 85, 229, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(42, 85, 229, 0.5);
+      > p:first-child {
+        color: #2a55e5;
+        span {
+          background: #2a55e5;
+        }
+      }
+    }
+    > div.agency4 {
+      background: rgba(19, 168, 168, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(19, 168, 168, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(19, 168, 168, 0.5);
+      > p:first-child {
+        color: #13a8a8;
+        span {
+          background: #13a8a8;
+        }
+      }
+    }
+    > div.agency5 {
+      background: rgba(23, 125, 220, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(23, 125, 220, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(23, 125, 220, 0.5);
+  
+      > p:first-child {
+        color: #177ddc;
+        span {
+          background: #177ddc;
+        }
+      }
+    }
+  }
+  .page {
+    display: flex;
+    justify-content: flex-end;
+  }
+  </style>

+ 605 - 0
src/pages/wallet/partner/studioInfo.vue

@@ -0,0 +1,605 @@
+<template>
+    <div class="quote">
+      <div class="quote-tree">
+        <div style="overflow-y: auto">
+          <a-tree
+            :tree-data="treeData"
+            :replaceFields="replaceFields"
+            :title="'1'"
+            @select="treeChoose"
+          />
+          <!-- <tree @getList="treeChoose"></tree> -->
+        </div>
+      </div>
+      <div class="back-line-main">
+        <div class="back-line-header">
+          <div class="back-line-header-title">
+            <h2>合伙人</h2>
+            <div>
+              <span>时间筛选</span>
+              <a-range-picker
+                v-model="formState.time"
+                @change="onChangeTime"
+                valueFormat="YYYY-MM-DD"
+              >
+                <a-icon slot="suffixIcon" type="calendar" />
+              </a-range-picker>
+              <a-radio-group
+                default-value="1"
+                button-style="solid"
+                v-model="formState.days"
+              >
+                <a-radio-button
+                  :value="1"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  当天
+                </a-radio-button>
+                <a-radio-button
+                  :value="2"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  近7天
+                </a-radio-button>
+                <a-radio-button
+                  :value="3"
+                  @click="
+                    (formState.time = []),
+                      (formState.beginDate = ''),
+                      (formState.endDate = '')
+                  "
+                >
+                  近30天
+                </a-radio-button>
+              </a-radio-group>
+            </div>
+          </div>
+        </div>
+        
+        <div class="list">
+            <a-descriptions :title="partnerObj.deptName">
+                <a-descriptions-item label="会员总人数">
+                    {{ manyObj.memberShip }}
+                </a-descriptions-item>
+                <a-descriptions-item label="总保费">
+                    {{ manyObj.totalIncome }}
+                
+                </a-descriptions-item>
+                <a-descriptions-item label="我的佣金">
+                    {{ manyObj.commission }}
+                
+                </a-descriptions-item>
+                <a-descriptions-item label="下属团队">
+                    {{ manyObj.deptNum }}
+             
+                </a-descriptions-item>
+                <a-descriptions-item label="推荐人">
+                    {{ manyObj.suggestName }}
+              
+                </a-descriptions-item>
+            </a-descriptions>
+          
+          <div>
+            <a-tabs default-active-key="1" >
+                <a-tab-pane key="1" tab="下属团队">
+                    
+                </a-tab-pane>
+          </a-tabs>
+            <standard-table
+                    bordered
+                    :columns="columns"
+                    :dataSource="tableList"
+                    :pagination="false"
+                    @change="onChange"
+                    :loading="loading"
+                    style="padding-bottom: 15px;box-sizing: border-box;"
+                    >
+                    
+                    <div slot="patnerLevel"  slot-scope="{text}">
+                        <!-- 一级合伙人 -->
+                        {{ patnerLevelObj[text]}}
+                    </div>
+                    <div slot="operation" slot-scope="{ record }">
+                        <a-button type="link" @click="watchMessage(record,'1')">详情</a-button>
+                    </div>
+                    </standard-table>
+          </div>
+         
+        </div>
+      </div>
+    </div>
+  </template>
+              
+  <script>
+  // import mixin from "../../minins/mixin";
+  // import tree from "@/components/tree/tree";
+  import StandardTable from "@/components/table/StandardTable";
+  
+  import moment from "moment";
+  const columns = [
+    {
+      title: "团队名称",
+      dataIndex: "deptName",
+    },
+  
+    {
+      title: "会员总人数",
+      dataIndex: "memberShip",
+    },
+   
+    {
+      title: "总保费",
+      dataIndex: "totalIncome",
+    },
+  
+    {
+      title: "我的佣金",
+      dataIndex: "commission",
+    },
+    
+   
+    
+    {
+      title: "操作",
+      dataIndex: "operation",
+      fixed: "right",
+      width: 100,
+      scopedSlots: { customRender: "operation" },
+    },
+  ];
+  
+  export default {
+    components: {
+      StandardTable,
+    },
+    //   mixins: [mixin],
+    data() {
+      return {
+        columns,
+       
+        formState: {
+          days: undefined,
+          time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
+          name: undefined,
+          userCode: undefined,
+          phoneNumber: undefined,
+          endDate: moment().format("YYYY-MM-DD"),
+          beginDate: moment().format("YYYY-MM-DD"),
+        },
+        labelCol: { span: 4 },
+        dataForm: {},
+        patnerLevelObj:{
+            1:"一级合伙人",
+            2:"二级合伙人",
+            3:"三级合伙人",
+            4:"四级合伙人",
+            5:"五级合伙人",
+        },
+        visible: false,
+        backLinePersonnel: {},
+        //   columns: columns,
+        companyList: [],
+        tableList: [],
+        studioTableList: [],
+        pagination: {
+          current: 1,
+          defaultPageSize: 10,
+          total: 0,
+          pagesize0ptions: ["10", "20", "30", "50", "100"],
+          hideOnSinglePage: false,
+          showQuickJumper: true, //
+          showSizeChanger: true, //是否可以改变pagesize
+          showTotal: (total) => `共 ${total} 条数据`,
+        },
+        partnerObj: {},
+        loading: false,
+        process: process.env.VUE_APP_API_BASE_URL,
+        treeData: [],
+        onLoadData: false,
+        replaceFields: {
+          children: "children",
+          title: "name",
+          key: "id",
+        },
+        deptId: "",
+        manyObj:{}
+      };
+    },
+    watch: {
+      "formState.days"() {
+        this.getList();
+      },
+    },
+    async mounted() {
+        await this.getTreeDeptUser();
+        this.partnerObj={...JSON.parse(this.$route.query.user)}
+        if(this.$route.query.time!="{}"){
+            this.formState.beginDate=JSON.parse(this.$route.query.time).beginDate
+            this.formState.endDate=JSON.parse(this.$route.query.time).endDate
+            this.formState.time=[
+                JSON.parse(this.$route.query.time).beginDate,
+                JSON.parse(this.$route.query.time).endDate
+            ]
+        }else{
+            this.formState.beginDate=''
+            this.formState.endDate=''
+            this.formState.time=[]
+        }
+      
+        this.formState.days=this.$route.query.days
+       
+  
+      // setTimeout(() => {
+      // }, 1000);
+    },
+    methods: {
+        watchMessage(item){
+            this.$router.push({
+            path: "/wallet/message/channel",
+            query: {
+            user:JSON.stringify( {
+                ...item,
+            
+            }),
+            deptId: this.deptId,
+            days:this.days,
+            time:JSON.stringify( {
+                beginDate: this.formState.beginDate,
+                endDate: this.formState.endDate,
+            }),
+            
+            },
+        });
+    },
+        
+       
+        onChange(pagination) {
+        // this.$message.info('表格状态改变了')
+  
+        this.pagination = {
+          current: pagination.current,
+          defaultPageSize: pagination.defaultPageSize,
+          total: pagination.total,
+        };
+        this.getAgencyList();
+      },
+      getList() {
+        this.pagination.current = 1;
+        this.pagination.defaultPageSize = 12;
+        this.getAgencyList();
+      },
+      async getTreeDeptUser() {
+        this.onLoadData = true;
+  
+        this.$API.wallet.getSysDeptTree({}).then((res) => {
+          if (res.data.code === 200) {
+            this.treeData = [...res.data.data];
+            this.deptId = res.data.data[0].id;
+            this.getAgencyList();
+          }
+        });
+      },
+      numberToChinese(num) {
+        const chineseNumbers = [
+          "一",
+          "二",
+          "三",
+          "四",
+          "五",
+          "六",
+          "七",
+          "八",
+          "九",
+        ];
+        return chineseNumbers[num - 1]; // 假设num是1到9的数字
+      },
+  
+      treeChoose(id) {
+        this.pagination.current = 1;
+        this.pagination.defaultPageSize = 10;
+        this.deptId = id[0];
+        this.getList();
+      },
+  
+      onChangeTime(val) {
+        // console.log(val);
+        this.formState.beginDate = val[0];
+        this.formState.endDate = val[1];
+        this.formState.days = undefined;
+        this.getList();
+      },
+      handleFinish() {
+        //
+      },
+      wholeHandleChange() {
+        this.getProvinceList(this.formState.whole);
+      },
+      provinceHandleChange() {
+        this.getCityList(this.formState.provinceId);
+      },
+      cityHandleChange() {
+        this.getAreaList(this.formState.cityId);
+      },
+      countyHandleChange() {
+        this.getStoreList(this.formState.countyId);
+      },
+  
+      getAgencyList() {
+        this.loading = true;
+        // delete this.formState.time
+        this.$API.wallet
+       
+          .getTeamInfo({
+            // pageNum: this.pagination.current,
+            // pageSize: this.pagination.defaultPageSize,
+            deptId: this.deptId,
+            deptIds:this.partnerObj.deptIds,
+            ...this.formState,
+            userId:this.partnerObj.userId,
+            type:2,
+            loginUserId:this.partnerObj.loginUserId
+            // partnerIds:this.partnerObj.partnerIds
+          })
+          .then((res) => {
+            if (res.data.code === 200) {
+              this.loading = false;
+              this.tableList = [...res.data.data.partnerInfoVoList];
+              this.manyObj={...res.data.data}
+            //   this.pagination.total = res.data.data.total;
+            }
+          });
+      },
+      //分页事件
+      // pageChange(page, pageSize) {
+      //   //   console.log(page, pageSize);
+      //   this.pagination.pageNum = page;
+      //   this.pagination.pageSize = pageSize;
+      //   this.getAgencyList();
+      // },
+    },
+  };
+  </script>
+      <style lang='less' scoped>
+  .quote {
+    display: flex;
+    > div:first-child {
+      width: 20%;
+      background: #fff;
+      margin-right: 15px;
+    }
+    .quote-tree {
+      padding: 15px;
+      box-sizing: border-box;
+      //
+    }
+  }
+  .back-line-main {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    .back-line-header {
+      padding: 15px;
+      box-sizing: border-box;
+      background: #fff;
+      .back-line-header-title {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        padding-bottom: 15px;
+        // background: #fff;
+        border-bottom: 1px solid #eee;
+        box-sizing: border-box;
+        h2 {
+          margin: 0;
+        }
+        > div {
+          flex: 1;
+          display: flex;
+          align-items: center;
+          justify-content: flex-end;
+        }
+        span {
+          display: block;
+          margin-right: 15px;
+        }
+        /deep/.ant-calendar-picker {
+          width: 300px;
+        }
+      }
+    }
+    > div {
+      // height: 152px;
+      // background: #fff;
+    }
+    .ant-modal-body {
+      /deep/.ant-form-inline {
+        display: flex;
+      }
+      /deep/ .ant-form-inline .ant-form-item {
+        flex: none;
+        width: 50%;
+      }
+    }
+  }
+  .list {
+    padding: 0px;
+    box-sizing: border-box;
+    flex: 1;
+   
+    > .ant-descriptions {
+      padding: 10px;
+      box-sizing: border-box;
+      background: #fff;
+    
+    }
+    background: none;
+    .ant-spin-nested-loading {
+      padding: 10px 0;
+      box-sizing: border-box;
+    }
+  }
+  .ant-tabs{
+      padding:0 10px;
+      box-sizing: border-box;
+      background: #fff;
+     /deep/ .ant-tabs-content{
+        padding-bottom: 15px;
+        box-sizing: border-box;
+      }
+  }
+  .personnel-message {
+    // display: flex;
+    // flex-wrap: wrap;
+    // justify-content: space-between;
+    > div {
+      height: auto;
+  
+      border-radius: 8px;
+  
+      padding: 15px;
+  
+      box-sizing: border-box;
+      margin-bottom: 15px;
+      position: relative;
+  
+      padding: 0 10px;
+      box-sizing: border-box;
+      > div {
+        background: linear-gradient(360deg, #ffffff 70%, #ffd6d8 100%);
+        box-shadow: 0px 2px 8px 0px rgba(141, 149, 176, 0.15);
+        border-radius: 8px 8px 8px 8px;
+        padding: 10px;
+        box-sizing: border-box;
+      }
+      //初始化样式
+  
+      p {
+        display: flex;
+        justify-content: space-between;
+      }
+      p:first-child {
+        justify-content: flex-start;
+        > span {
+          display: flex;
+          margin-left: 15px;
+          color: #fff;
+          padding: 0 10px;
+          box-sizing: border-box;
+          border-radius: 4px;
+          align-items: center;
+          justify-content: center;
+        }
+      }
+      // p:last-child {
+      //   margin: 0;
+      //   justify-content: flex-end;
+      //   // text-align: right;
+      // }
+      div.user-icon {
+        width: 100%;
+        height: auto;
+        // position: absolute;
+        // top: 12px;
+        // right: 15px;
+        border-radius: 50%;
+        // overflow: hidden;
+        display: flex;
+        justify-content: space-between;
+        padding-bottom: 10px;
+        box-sizing: border-box;
+        align-items: center;
+        img {
+          width: 40px;
+          height: 40px;
+          border-radius: 50%;
+        }
+      }
+      .progress {
+        width: 100%;
+        height: 5px;
+        background: #eee;
+        border-radius: 8px;
+        margin-bottom: 8px;
+        > p {
+          width: 67%;
+          height: 100%;
+          background: #2a55e5;
+          border-radius: 8px;
+        }
+      }
+      // margin-right: 2%;
+    }
+    > div.agency1 {
+      background: linear-gradient(360deg, #ffffff 70%, #ffd6d8 100%);
+      box-shadow: 0px 2px 8px 0px rgba(141, 149, 176, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      > p:first-child {
+        color: #d32029;
+        span {
+          background: #d32029;
+        }
+      }
+    }
+    > div.agency2 {
+      background: rgba(216, 74, 27, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(216, 74, 27, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(216, 74, 27, 0.5);
+      > p:first-child {
+        color: #d84a1b;
+        span {
+          background: #d84a1b;
+        }
+      }
+    }
+    > div.agency3 {
+      background: rgba(42, 85, 229, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(42, 85, 229, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(42, 85, 229, 0.5);
+      > p:first-child {
+        color: #2a55e5;
+        span {
+          background: #2a55e5;
+        }
+      }
+    }
+    > div.agency4 {
+      background: rgba(19, 168, 168, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(19, 168, 168, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(19, 168, 168, 0.5);
+      > p:first-child {
+        color: #13a8a8;
+        span {
+          background: #13a8a8;
+        }
+      }
+    }
+    > div.agency5 {
+      background: rgba(23, 125, 220, 0.05);
+      box-shadow: 0px 2px 8px 0px rgba(23, 125, 220, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 1px solid rgba(23, 125, 220, 0.5);
+  
+      > p:first-child {
+        color: #177ddc;
+        span {
+          background: #177ddc;
+        }
+      }
+    }
+  }
+  .page {
+    display: flex;
+    justify-content: flex-end;
+  }
+  </style>

+ 56 - 0
src/router/config.js

@@ -263,6 +263,62 @@ const router = new Router({
           component: () => import('@/pages/business/orderMessage'),
         },
 
+        {
+          path: '/partner',
+          name: '合伙人',
+          component: PageView,
+          children: [
+            {
+              path: '/wallet/partner/message',
+              name: '合伙人详情',
+              hidden: true,
+              meta: { requiresAuth: true },
+
+              component: () => import('@/pages/wallet/partner/message'),
+
+            },
+           
+          ]
+        },
+        {
+          path: '/wallet/message',
+          name: '合伙人详情',
+          hidden: true,
+          meta: { requiresAuth: true },
+
+          component: PageView,
+          children: [
+            {
+              path: '/wallet/message/partnerInfo',
+              name: '合伙人',
+              hidden: true,
+              meta: { requiresAuth: true },
+
+              component: () => import('@/pages/wallet/partner/partnerInfo'),
+
+            },
+            {
+              path: '/wallet/message/studioInfo',
+              name: '工作室',
+              hidden: true,
+              meta: { requiresAuth: true },
+
+              component: () => import('@/pages/wallet/partner/studioInfo'),
+
+            },
+            {
+              path: '/wallet/message/channel',
+              name: '代理人',
+              hidden: true,
+              meta: { requiresAuth: true },
+
+              component: () => import('@/pages/wallet/partner/channel'),
+
+            },
+           
+          ]
+
+        },
 
       ]
     },

+ 31 - 1
src/services/wallet.js

@@ -17,6 +17,31 @@ export async function getSysDeptTree(data) {
     return request("/dept/getPartnerDeptTree", METHOD.GET, data)
 }
 
+//合伙人详情
+export async function queryPartnerInfo(data) {
+    return request("/deptBalance/queryPartnerInfo", METHOD.POST, data)
+}
+
+//工作室详情
+export async function queryStudioInfo(data) {
+    return request("/deptBalance/queryStudioInfo", METHOD.POST, data)
+}
+
+//多级合伙人信息
+export async function queryPartnerManyInfo(data) {
+    return request("/deptBalance/info", METHOD.POST, data)
+}
+//工作室团队
+export async function getTeamInfo(data) {
+    return request("/deptBalance/getTeamInfo", METHOD.POST, data)
+}
+//工作室代理人
+export async function getTeamUserInfo(data) {
+    return request("/deptBalance/getTeamUserInfo", METHOD.POST, data)
+}
+
+
+
 
 
 
@@ -26,5 +51,10 @@ export default {
     getPartnerStatistics,
     getTreeDeptUser,
     getAalletAgent,
-    getSysDeptTree
+    getSysDeptTree,
+    queryPartnerInfo,
+    queryStudioInfo,
+    queryPartnerManyInfo,
+    getTeamInfo,
+    getTeamUserInfo
 }

+ 1 - 2
vue.config.js

@@ -48,8 +48,7 @@ module.exports = {
       // },
       "/web-api": {        //设置第一代理
         target: 'http://39.98.239.48/web-api',
-        secure: false,
-        //secure:false,                    //如果是https接口,需要配置这个参数
+        secure: false,     //如果是https接口,需要配置这个参数
         ws: true,
         changeOrigin: true,            //如果接口跨域需要配置这个参数
         pathRewrite: {