浏览代码

fix:页面优化及渠道详情

刘恒 2 年之前
父节点
当前提交
584a0e4398

二进制
src/assets/img/car.png


二进制
src/assets/img/order.png


二进制
src/assets/img/orderMoney.png


+ 11 - 2
src/components/form/FormRow.vue

@@ -105,7 +105,11 @@
       :colon="false"
       v-show="className"
     >
-      <a-input placeholder="请输入姓名" v-model="formState.name"></a-input>
+      <a-input
+        placeholder="请输入姓名"
+        v-model="formState.name"
+        allowClear
+      ></a-input>
     </a-form-item>
     <a-form-item
       label="工号"
@@ -113,7 +117,11 @@
       :colon="false"
       v-show="className"
     >
-      <a-input placeholder="请输入工号" v-model="formState.userCode"></a-input>
+      <a-input
+        placeholder="请输入工号"
+        v-model="formState.userCode"
+        allowClear
+      ></a-input>
     </a-form-item>
     <a-form-item
       label="手机号"
@@ -124,6 +132,7 @@
       <a-input
         placeholder="请输入手机号"
         v-model="formState.phoneNumber"
+        allowClear
       ></a-input>
     </a-form-item>
     <a-form-item

+ 1 - 1
src/pages/agreement/index.vue

@@ -63,7 +63,7 @@
           >启用</a-button
         >
         <a-button v-else size="small" style="background: #f5f5f5"
-          >关闭</a-button
+          >禁用</a-button
         >
       </div>
 

+ 3 - 3
src/pages/personnelManage/channel.vue

@@ -68,10 +68,10 @@
         <div v-for="item in list" :key="item.userId">
           <p>姓名:{{ item.name }}</p>
           <p>机构归属:{{ item.deptName }}</p>
-          <p>
+          <!-- <p>
             <span>总人力:{{ item.totalManpower || 0 }}</span>
-            <span>出单人力:{{ item.orderManpower || 0 }}</span>
-          </p>
+            <span> {{ item.orderManpower || 0 }}</span>
+          </p> -->
           <p>
             <span>总保费:{{ item.totalPremium || 0 }}</span>
             <span>单均保费:{{ item.averagePremium || 0 }}</span>

+ 70 - 48
src/pages/personnelManage/channel/message.vue

@@ -17,11 +17,27 @@
       <div class="title">
         <h2>成员详情</h2>
         <div>
-          月份筛选
-          <a-month-picker placeholder="请选择月份" @change="monthChange" />
+          <span>时间筛选</span>
+          <a-range-picker
+            v-model="formState.time"
+            @change="timeChange"
+            valueFormat="YYYY-MM-DD HH:mm:ss"
+          >
+            <a-icon slot="suffixIcon" type="calendar" />
+          </a-range-picker>
+          <a-radio-group
+            style="margin-left: 10px"
+            default-value="1"
+            button-style="solid"
+            v-model="formState.days"
+          >
+            <a-radio-button :value="1"> 近1天 </a-radio-button>
+            <a-radio-button :value="7"> 近7天 </a-radio-button>
+            <a-radio-button :value="30"> 近30天 </a-radio-button>
+          </a-radio-group>
         </div>
       </div>
-      <a-form layout="inline" :model="formState" @finish="handleFinish">
+      <!-- <a-form layout="inline" :model="formState" @finish="handleFinish">
         <a-form-item label="姓名" :labelCol="{ span: 5 }" :colon="false">
           <a-input
             v-model="formState.name"
@@ -43,9 +59,7 @@
             allowClear
           ></a-input>
         </a-form-item>
-        <!-- <a-form-item label="筛选时间" :labelCol="{ span: 5 }" :colon="false">
-            <a-input></a-input>
-          </a-form-item> -->
+       
         <a-form-item
           label="             "
           :labelCol="{ span: 5 }"
@@ -54,31 +68,42 @@
         >
           <a-button type="primary" @click="getList()">查询</a-button>
         </a-form-item>
-      </a-form>
+      </a-form> -->
       <div class="personnel-message">
         <div v-for="item in userList" :key="item.deptId">
-          <p>团队成员:{{ item.name }}</p>
+          <p>渠道成员:{{ item.name }}</p>
           <p>报价笔数:{{ item.orderNumber || 0 }}</p>
           <p>
             <span>核保笔数:{{ item.underwritingCount || 0 }}</span>
           </p>
           <p>
-            <span>出单数:{{ item.qutationInsureCount || 0 }}</span>
+            <span>出单数:{{ item.qutationInsureCount || 0 }}</span>
             <span>签单保费:{{ item.totalPremium || 0 }}</span>
           </p>
-          <p>
-            <span>已认证:1864613</span>
-            <span>未认证:1864613</span>
-          </p>
-          <div>
-            <img :src="process + item.filePath" alt="" />
+          <!-- <p>
+            <span>已认证:{{ item.isFactorVerify || 0 }}</span>
+            <span>未认证:{{ item.isNotFactorVerify || 0 }}</span>
+          </p> -->
+          <div class="user-icon">
+            <img v-show="item.filePath" :src="process + item.filePath" alt="" />
+            <img
+              v-if="!item.filePath && item.sex == 'M'"
+              src="../../../assets/img/man.png"
+              alt=""
+            />
+            <img
+              v-if="!item.filePath && item.sex == 'F'"
+              src="../../../assets/img/woman.png"
+              alt=""
+            />
+            {{ item.userName }}
           </div>
           <p>
             <a-button type="primary" @click="openDrawer(item)">详情</a-button>
           </p>
         </div>
       </div>
-      <div class="page">
+      <!-- <div class="page">
         <a-pagination
           v-model="current"
           :total="pageInfo.total"
@@ -89,7 +114,7 @@
           :page-size.sync="pageInfo.pageSize"
           :pageSizeOptions="['12', '24', '36', '48']"
         />
-      </div>
+      </div> -->
     </div>
     <a-drawer
       :width="500"
@@ -125,23 +150,13 @@
         <li>
           <span>注册时间</span> <span>{{ userData.userDate }}</span>
         </li>
-        <li>
-          <span>是否达标</span> <span>{{ userData.isCompliance }}</span>
-        </li>
+
         <li>
           <span>签单保费</span> <span>{{ userData.totalPremium }}</span>
         </li>
         <li>
           <span>出单人力</span> <span>{{ userData.orderManpower }}</span>
         </li>
-        <li>
-          <span>签单保费达标差距</span>
-          <span>{{ userData.premiumCompliance }}</span>
-        </li>
-        <li>
-          <span>出单人力达标差距</span>
-          <span>{{ userData.orderManpowerCompliance }}</span>
-        </li>
       </ul>
     </a-drawer>
   </div>
@@ -155,6 +170,10 @@ export default {
         phoneNumber: "",
         name: "",
         userCode: "",
+        time: "",
+        days: "",
+        beginDate: undefined,
+        endDate: undefined,
       },
       current: 1,
       teamTab: 0,
@@ -177,9 +196,9 @@ export default {
     };
   },
   watch: {
-    // $route(val) {
-    //   // console.log(val);
-    // },
+    "formState.days"() {
+      this.getList();
+    },
   },
   created() {
     this.getList();
@@ -191,13 +210,12 @@ export default {
     openDrawer(item) {
       // item
       this.visible = true;
-      console.log(item);
+
       this.$API.personnel
         .getTeamUserDetails({
           userId: item.userId,
         })
         .then((res) => {
-          console.log(res);
           if (res.data.code === 200) {
             this.userData = { ...res.data.data };
           }
@@ -215,15 +233,19 @@ export default {
       this.pageInfo.pageSize = pageSize;
       this.getList();
     },
+    timeChange(val) {
+      this.formState.beginDate = val[0];
+      this.formState.endDate = val[1];
+      this.getList();
+    },
     getList() {
       this.$API.personnel
         .getChannelDetails({
           userId: this.$route.query.userId,
         })
         .then((res) => {
-          // console.log(res);
           if (res.data.code === 200) {
-            this.teamList = [...res.data.data.hzList];
+            this.userList = [...res.data.data];
             // this.teamList.unshift({
             //   totalManpower: this.$route.query.totalManpower,
             //   totalPremium: this.$route.query.totalPremium,
@@ -232,19 +254,19 @@ export default {
             // });
           }
         });
-      this.$API.personnel
-        .getTeamUserList({
-          userId: this.$route.query.userId,
-          pageNum: this.pageInfo.pageNum,
-          pageSize: this.pageInfo.pageSize,
-          ...this.formState,
-        })
-        .then((res) => {
-          if (res.data.code === 200) {
-            this.userList = [...res.data.data.records];
-            this.pageInfo.total = res.data.data.total;
-          }
-        });
+      //   this.$API.personnel
+      //     .getTeamUserList({
+      //       userId: this.$route.query.userId,
+      //       pageNum: this.pageInfo.pageNum,
+      //       pageSize: this.pageInfo.pageSize,
+      //       ...this.formState,
+      //     })
+      //     .then((res) => {
+      //       if (res.data.code === 200) {
+      //         // this.userList = [...res.data.data.records];
+      //         this.pageInfo.total = res.data.data.total;
+      //       }
+      //     });
     },
   },
 };

+ 11 - 2
src/pages/personnelManage/front/personnel.vue

@@ -152,10 +152,11 @@
           :data-source="teamList"
           :pagination="false"
           :scroll="{ x: 0, y: 700 }"
+          style="background: #d87a16"
         >
           <a-table-column data-index="index" title="排名">
             <template slot-scope="text, record, index">
-              {{ index }}
+              {{ index + 1 }}
             </template>
           </a-table-column>
           <a-table-column data-index="name" title="团队名称">
@@ -319,9 +320,17 @@ export default {
 };
 </script>
   <style lang='less' scoped>
+/deep/ .ant-table-thead > tr > th {
+  // color: #749dee !important;
+  background: rgba(216, 122, 22, 0.05);
+}
+/deep/.ant-table-row {
+  background: rgba(216, 122, 22, 0.05);
+}
+
 .back-line-main {
   display: flex;
-  height: 100%;
+  height: auto;
   //   flex-direction: column;
   .back-line-hearder {
     flex: 1;

+ 16 - 6
src/pages/personnelManage/front/teammanage.vue

@@ -67,11 +67,22 @@
             <span>签单保费:{{ item.totalPremium || 0 }}</span>
           </p>
           <p>
-            <span>已认证:1864613</span>
-            <span>未认证:1864613</span>
+            <span>已认证:{{ item.isFactorVerify || 0 }}</span>
+            <span>未认证:{{ item.isNotFactorVerify || 0 }}</span>
           </p>
-          <div>
-            <img :src="process + item.filePath" alt="" />
+          <div class="user-icon">
+            <img v-show="item.filePath" :src="process + item.filePath" alt="" />
+            <img
+              v-if="!item.filePath && item.sex == 'M'"
+              src="../../../assets/img/man.png"
+              alt=""
+            />
+            <img
+              v-if="!item.filePath && item.sex == 'F'"
+              src="../../../assets/img/woman.png"
+              alt=""
+            />
+            {{ item.userName }}
           </div>
           <p>
             <a-button type="primary" @click="openDrawer(item)">详情</a-button>
@@ -191,13 +202,12 @@ export default {
     openDrawer(item) {
       // item
       this.visible = true;
-      console.log(item);
+
       this.$API.personnel
         .getTeamUserDetails({
           userId: item.userId,
         })
         .then((res) => {
-          console.log(res);
           if (res.data.code === 200) {
             this.userData = { ...res.data.data };
           }

+ 173 - 87
src/pages/quote/quote.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="quote">
-    <div class="quote-tree">
+    <div class="quote-tree" style="border-radius: 8px">
       <div><h2>部门所属</h2></div>
       <div>
         <!-- <a-tree :load-data="onLoadData" :tree-data="treeData" /> -->
@@ -10,13 +10,42 @@
     <div class="back-line-main">
       <div class="back-line-header">
         <div class="back-line-header-title">
-          <h2>财务应收</h2>
+          <h2>合计</h2>
+          <div>
+            <dl>
+              <dt><img src="../../assets/img/car.png" alt="" /></dt>
+              <dd>
+                <span>车辆数</span>
+                <span>{{ 56 }}</span>
+              </dd>
+            </dl>
+            <dl>
+              <dt><img src="../../assets/img/order.png" alt="" /></dt>
+              <dd>
+                <span>车辆数</span>
+                <span>{{ 56 }}</span>
+              </dd>
+            </dl>
+            <dl>
+              <dt><img src="../../assets/img/orderMoney.png" alt="" /></dt>
+              <dd>
+                <span>车辆数</span>
+                <span>{{ 56 }}</span>
+              </dd>
+            </dl>
+          </div>
+        </div>
+      </div>
+      <div style="background-color: #fff; margin-top: 15px">
+        <div class="table-title">
+          <h2>合计</h2>
           <div>
             <span>时间筛选</span>
             <a-range-picker
               @change="onChangeTime"
               v-model="formState.time"
               value-format="YYYY-MM-DD"
+              style="margin-left: 10px"
             >
               <a-icon slot="suffixIcon" type="calendar" />
             </a-range-picker>
@@ -25,6 +54,7 @@
               button-style="solid"
               v-model="formState.dateType"
               @change="getVerification()"
+              style="margin-left: 10px"
             >
               <a-radio-button value="1"> 近1月 </a-radio-button>
               <a-radio-button value="2"> 近3月 </a-radio-button>
@@ -32,23 +62,83 @@
             </a-radio-group>
           </div>
         </div>
-      </div>
-      <standard-table
-        :columns="columns"
-        :dataSource="tableList"
-        :pagination="pagination"
-        @clear="onClear"
-        @change="onChange"
-        :loading="loading"
-        bordered
-      >
-        <div slot="count" slot-scope="{ text }">
-          {{ text != "-" ? text + "次" : text }}
-        </div>
-        <div slot="rate" slot-scope="{ text }">
-          {{ text != "-" ? (text * 100).toFixed(2) + "%" : text }}
+        <a-form
+          layout="inline"
+          :class="className"
+          :model="formState"
+          style="padding: 0 0 0 15px; box-sizing: border-box"
+        >
+          <a-form-item
+            label="业务员工号"
+            :labelCol="{ span: 8 }"
+            :colon="false"
+          >
+            <a-input
+              placeholder="请输入业务员工号"
+              v-model="formState.name"
+              allowClear
+            ></a-input>
+          </a-form-item>
+          <a-form-item
+            label="业务员姓名"
+            :labelCol="{ span: 8 }"
+            :colon="false"
+          >
+            <a-input
+              placeholder="请输入业务员姓名"
+              v-model="formState.userCode"
+              allowClear
+            ></a-input>
+          </a-form-item>
+          <a-form-item label="手机号" :labelCol="{ span: 5 }" :colon="false">
+            <a-input
+              placeholder="请输入手机号"
+              v-model="formState.phoneNumber"
+              allowClear
+            ></a-input>
+          </a-form-item>
+          <a-form-item label="车牌号" :labelCol="{ span: 5 }" :colon="false">
+            <a-input
+              placeholder="请输入车牌号"
+              v-model="formState.phoneNumber"
+              allowClear
+            ></a-input>
+          </a-form-item>
+          <a-form-item label="车架号" :labelCol="{ span: 5 }" :colon="false">
+            <a-input
+              placeholder="请输入车架号"
+              v-model="formState.phoneNumber"
+              allowClear
+            ></a-input>
+          </a-form-item>
+        </a-form>
+        <div
+          style="
+            display: flex;
+            justify-content: flex-end;
+            padding-right: 15px;
+            box-sizing: border-box;
+          "
+        >
+          <a-button type="primary" @click="getList">查询</a-button>
         </div>
-      </standard-table>
+        <standard-table
+          :columns="columns"
+          :dataSource="tableList"
+          :pagination="pagination"
+          @clear="onClear"
+          @change="onChange"
+          :loading="loading"
+          bordered
+        >
+          <div slot="count" slot-scope="{ text }">
+            {{ text != "-" ? text + "次" : text }}
+          </div>
+          <div slot="rate" slot-scope="{ text }">
+            {{ text != "-" ? (text * 100).toFixed(2) + "%" : text }}
+          </div>
+        </standard-table>
+      </div>
     </div>
   </div>
 </template>
@@ -59,77 +149,27 @@ import StandardTable from "@/components/table/StandardTable";
 import tree from "@/components/tree/tree";
 const columns = [
   {
-    title: "保险公司",
+    title: "车牌号",
     dataIndex: "companyName",
   },
 
   {
-    title: "合作公司",
+    title: "车架号",
     dataIndex: "parterCompanyName",
     // scopedSlots: { customRender: "parterCompanyName" },
   },
-  {
-    title: "大订单",
 
-    // scopedSlots: { customRender: "qutationCount" },
-    children: [
-      {
-        title: "报价数",
-        dataIndex: "bigQutationCount",
-        scopedSlots: { customRender: "count" },
-      },
-      {
-        title: "承保数",
-        dataIndex: "bigUnderwritingCount",
-        scopedSlots: { customRender: "count" },
-      },
-      {
-        title: "成交率",
-        dataIndex: "bigCloseRate",
-        scopedSlots: { customRender: "rate" },
-      },
-    ],
+  {
+    title: "订单数量",
+    dataIndex: "qutationCount",
   },
   {
-    title: "小订单",
-
-    // scopedSlots: { customRender: "qutationCount" },
-    children: [
-      {
-        title: "报价数",
-        dataIndex: "qutationCount",
-        scopedSlots: { customRender: "count" },
-      },
-      {
-        title: "核保数",
-        dataIndex: "underwritingCount",
-        scopedSlots: { customRender: "count" },
-      },
-      {
-        title: "承保数",
-        dataIndex: "qutationInsureCount",
-        scopedSlots: { customRender: "count" },
-      },
-      {
-        title: "核保通过率",
-        dataIndex: "passRate",
-        scopedSlots: { customRender: "rate" },
-      },
-      {
-        title: "成交率",
-        dataIndex: "closeRate",
-        scopedSlots: { customRender: "rate" },
-
-        // scopedSlots: { customRender: "qutationCount" },
-      },
-      {
-        title: "承保率",
-        dataIndex: "contributionRate",
-        scopedSlots: { customRender: "rate" },
-
-        // scopedSlots: { customRender: "qutationCount" },
-      },
-    ],
+    title: "成交率",
+    dataIndex: "underwritingCount",
+  },
+  {
+    title: "承保公司",
+    dataIndex: "qutationInsureCount",
   },
 ];
 
@@ -288,15 +328,15 @@ export default {
   display: flex;
   flex-direction: column;
   .back-line-header {
-    padding: 15px;
+    // padding: 15px;
     box-sizing: border-box;
     .back-line-header-title {
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-      padding-bottom: 15px;
-      border-bottom: 1px solid #f0f0f0;
+      padding: 15px;
       box-sizing: border-box;
+      background: #ffffff;
+      box-shadow: 0px 2px 8px 0px rgba(141, 149, 176, 0.15);
+      border-radius: 8px 8px 8px 8px;
+      border: 2px solid rgba(255, 255, 255, 0.2);
       h2 {
         margin: 0;
       }
@@ -304,7 +344,38 @@ export default {
         flex: 1;
         display: flex;
         align-items: center;
-        justify-content: flex-end;
+        justify-content: space-between;
+        > dl {
+          flex: none;
+          width: 271px;
+          height: 61px;
+          display: flex;
+          align-items: center;
+          background: linear-gradient(
+            267deg,
+            rgba(42, 85, 229, 0.1) 0%,
+            rgba(42, 85, 229, 0) 100%
+          );
+          box-shadow: 0px 2px 8px 0px rgba(42, 85, 229, 0.1);
+          border-radius: 4px 4px 4px 4px;
+          border: 1px solid #ffffff;
+
+          img {
+            width: 44px;
+            height: auto;
+          }
+          > dd {
+            display: flex;
+            align-items: center;
+            margin: 0;
+            font-family: PingFang SC, PingFang SC;
+            font-weight: 500;
+            font-size: 18px;
+            color: rgba(0, 0, 0, 0.85);
+            padding-left: 15px;
+            box-sizing: border-box;
+          }
+        }
       }
       span {
         display: block;
@@ -317,7 +388,7 @@ export default {
   }
   > div {
     // height: 152px;
-    background: #fff;
+    // background: #fff;
     .ant-form {
       display: flex;
       > .ant-form-item {
@@ -336,5 +407,20 @@ export default {
       }
     }
   }
+  .table-title {
+    padding: 15px 15px 0;
+    box-sizing: border-box;
+    display: flex;
+    align-items: center;
+    h2 {
+      margin: 0;
+    }
+    > div {
+      flex: 1;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
 }
 </style>

+ 0 - 0
src/pages/quote/agent.vue → src/pages/quote/smallorders/agent.vue


+ 0 - 0
src/pages/quote/channel.vue → src/pages/quote/smallorders/channel.vue


+ 340 - 0
src/pages/quote/smallorders/quote.vue

@@ -0,0 +1,340 @@
+<template>
+  <div class="quote">
+    <div class="quote-tree">
+      <div><h2>部门所属</h2></div>
+      <div>
+        <!-- <a-tree :load-data="onLoadData" :tree-data="treeData" /> -->
+        <tree @getList="getVerification"></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
+              @change="onChangeTime"
+              v-model="formState.time"
+              value-format="YYYY-MM-DD"
+            >
+              <a-icon slot="suffixIcon" type="calendar" />
+            </a-range-picker>
+            <a-radio-group
+              default-value="0"
+              button-style="solid"
+              v-model="formState.dateType"
+              @change="getVerification()"
+            >
+              <a-radio-button value="1"> 近1月 </a-radio-button>
+              <a-radio-button value="2"> 近3月 </a-radio-button>
+              <a-radio-button value="3"> 近半年 </a-radio-button>
+            </a-radio-group>
+          </div>
+        </div>
+      </div>
+      <standard-table
+        :columns="columns"
+        :dataSource="tableList"
+        :pagination="pagination"
+        @clear="onClear"
+        @change="onChange"
+        :loading="loading"
+        bordered
+      >
+        <div slot="count" slot-scope="{ text }">
+          {{ text != "-" ? text + "次" : text }}
+        </div>
+        <div slot="rate" slot-scope="{ text }">
+          {{ text != "-" ? (text * 100).toFixed(2) + "%" : text }}
+        </div>
+      </standard-table>
+    </div>
+  </div>
+</template>
+        
+<script>
+import StandardTable from "@/components/table/StandardTable";
+// import mixin from "../../minins/mixin";
+import tree from "@/components/tree/tree";
+const columns = [
+  {
+    title: "保险公司",
+    dataIndex: "companyName",
+  },
+
+  {
+    title: "合作公司",
+    dataIndex: "parterCompanyName",
+    // scopedSlots: { customRender: "parterCompanyName" },
+  },
+  {
+    title: "大订单",
+
+    // scopedSlots: { customRender: "qutationCount" },
+    children: [
+      {
+        title: "报价数",
+        dataIndex: "bigQutationCount",
+        scopedSlots: { customRender: "count" },
+      },
+      {
+        title: "承保数",
+        dataIndex: "bigUnderwritingCount",
+        scopedSlots: { customRender: "count" },
+      },
+      {
+        title: "成交率",
+        dataIndex: "bigCloseRate",
+        scopedSlots: { customRender: "rate" },
+      },
+    ],
+  },
+  {
+    title: "小订单",
+
+    // scopedSlots: { customRender: "qutationCount" },
+    children: [
+      {
+        title: "报价数",
+        dataIndex: "qutationCount",
+        scopedSlots: { customRender: "count" },
+      },
+      {
+        title: "核保数",
+        dataIndex: "underwritingCount",
+        scopedSlots: { customRender: "count" },
+      },
+      {
+        title: "承保数",
+        dataIndex: "qutationInsureCount",
+        scopedSlots: { customRender: "count" },
+      },
+      {
+        title: "核保通过率",
+        dataIndex: "passRate",
+        scopedSlots: { customRender: "rate" },
+      },
+      {
+        title: "成交率",
+        dataIndex: "closeRate",
+        scopedSlots: { customRender: "rate" },
+
+        // scopedSlots: { customRender: "qutationCount" },
+      },
+      {
+        title: "承保率",
+        dataIndex: "contributionRate",
+        scopedSlots: { customRender: "rate" },
+
+        // scopedSlots: { customRender: "qutationCount" },
+      },
+    ],
+  },
+];
+
+export default {
+  components: {
+    StandardTable,
+    tree,
+  },
+  //   mixins: [mixin],
+  data() {
+    return {
+      formState: {
+        whole: "",
+        cityId: "",
+        countyId: "",
+        houseId: "",
+        provinceId: "",
+        dateType: "",
+        time: "",
+        beginDate: undefined,
+        endDate: undefined,
+      },
+      backLinePersonnel: {},
+      columns: columns,
+      companyList: [],
+      tableList: [],
+      pagination: {
+        current: 1,
+        defaultPageSize: 10,
+        total: 0,
+        pagesize0ptions: ["10", "20", "30", "50", "100"],
+        hideOnSinglePage: false,
+        showQuickJumper: true, //
+        showSizeChanger: true, //是否可以改变pagesize
+      },
+      loading: false,
+      wholeList: [],
+      provinceList: [],
+      cityList: [],
+      areaList: [],
+      storeList: [],
+      treeData: [
+        { title: "Expand to load", key: "0" },
+        { title: "Expand to load", key: "1" },
+        { title: "Tree Node", key: "2", isLeaf: true },
+      ],
+    };
+  },
+  mounted() {
+    this.getVerification();
+    // setTimeout(() => {
+    // }, 1000);
+  },
+  methods: {
+    onLoadData(treeNode) {
+      return new Promise((resolve) => {
+        if (treeNode.dataRef.children) {
+          resolve();
+          return;
+        }
+        setTimeout(() => {
+          treeNode.dataRef.children = [
+            { title: "Child Node", key: `${treeNode.eventKey}-0` },
+            { title: "Child Node", key: `${treeNode.eventKey}-1` },
+          ];
+          this.treeData = [...this.treeData];
+          resolve();
+        }, 1000);
+      });
+    },
+    onChangeTime(val) {
+      // console.log(val);
+      this.formState.beginDate = val[0];
+      this.formState.endDate = val[1];
+      this.getVerification();
+    },
+    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);
+    },
+
+    getVerification() {
+      this.loading = true;
+
+      this.$API.quote
+        .getQuoteList({
+          pageNum: this.pagination.current,
+          pageSize: this.pagination.defaultPageSize,
+          dateType: this.formState.dateType,
+          beginDate: this.formState.beginDate,
+          endDate: this.formState.endDate,
+          // provinceId: this.formState.provinceId,
+          // cityId: this.formState.cityId,
+          // countyId: this.formState.countyId,
+          // houseId: this.formState.houseId,
+        })
+        .then((res) => {
+          if (res.data.code === 200) {
+            this.loading = false;
+            this.tableList = res.data.data.content;
+            this.pagination = {
+              current: res.data.data.pageNum,
+              defaultPageSize: res.data.data.pageSize,
+              total: res.data.data.totalSize,
+            };
+          }
+        });
+    },
+    onClear() {
+      this.$message.info("您清空了勾选的所有行");
+    },
+
+    onChange(pagination, filters, sorter, { currentDataSource }) {
+      // this.$message.info('表格状态改变了')
+      console.log(pagination, filters, sorter, { currentDataSource });
+      this.pagination = {
+        current: pagination.current,
+        defaultPageSize: pagination.pageSize,
+        total: pagination.total,
+      };
+      this.getVerification();
+    },
+  },
+};
+</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;
+    //
+    > div:first-child {
+      border-bottom: 1px solid #f0f0f0;
+    }
+  }
+}
+.back-line-main {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  .back-line-header {
+    padding: 15px;
+    box-sizing: border-box;
+    .back-line-header-title {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding-bottom: 15px;
+      border-bottom: 1px solid #f0f0f0;
+      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-form {
+      display: flex;
+      > .ant-form-item {
+        flex: 1;
+        /deep/.ant-form-item-control-wrapper {
+          width: 100%;
+        }
+      }
+    }
+    .form-item-search {
+      // display: flex;
+      // justify-content: flex-end;
+      /deep/ .ant-form-item-control {
+        display: flex;
+        justify-content: flex-end;
+      }
+    }
+  }
+}
+</style>

+ 55 - 0
src/pages/sys/menu.vue

@@ -13,6 +13,7 @@
       :pagination="false"
       :loading="loading"
       style="background: #fff"
+      :customRow="customRow"
     >
       <div class="operation-list" slot="operation" slot-scope="text, record">
         <a-button type="danger" @click="delMenu({ text, record })"
@@ -274,6 +275,60 @@ export default {
   },
   mounted() {},
   methods: {
+    customRow(record, index) {
+      console.log(record, index);
+      return {
+        style: {
+          cursor: "move",
+        },
+        // 鼠标移入
+        onMouseenter: (event) => {
+          // 兼容IE
+          var ev = event || window.event;
+          ev.target.draggable = true;
+        },
+        // 开始拖拽
+        onDragstart: (event) => {
+          console.log(event);
+          // 兼容IE
+          var ev = event || window.event;
+          // 阻止冒泡
+          ev.stopPropagation();
+          // 得到源目标数据
+          this.sourceObj = record;
+        },
+        // 拖动元素经过的元素
+        onDragover: (event) => {
+          // 兼容 IE
+          var ev = event || window.event;
+          // 阻止默认行为
+          ev.preventDefault();
+        },
+        // 鼠标松开
+        onDrop: (event) => {
+          // 兼容IE
+          var ev = event || window.event;
+          // 阻止冒泡
+          ev.stopPropagation();
+          // 得到目标数据
+          this.targetObj = record;
+          console.log(this.sourceObj, this.targetObj);
+          const tempDta = this.data;
+          tempDta[this.targetObj.weight] = this.sourceObj;
+          tempDta[this.sourceObj.weight] = this.targetObj;
+          let weightList = [];
+          tempDta.forEach((item, index) => {
+            item.weight = index;
+            weightList.push({
+              id: item.id,
+              weight: index,
+            });
+          });
+          // this.handleWeightModify(weightList); // 更改顺序接口
+        },
+      };
+    },
+
     getAuthList() {
       this.$API.sysManage.getAuthModule("sjqx").then((res) => {
         if (res.data.code === 200) {

+ 3 - 3
src/pages/task/channel.vue

@@ -99,12 +99,12 @@ const columns = [
   },
   {
     title: "承保率",
-    dataIndex: "contributionRate",
+    dataIndex: "closeRate",
     scopedSlots: { customRender: "quotationRate" },
   },
   {
-    title: "核保核保通过率",
-    dataIndex: "passingRate",
+    title: "核保通过率",
+    dataIndex: "contributionRate",
     scopedSlots: { customRender: "quotationRate" },
   },
 ];

+ 133 - 0
src/pages/wallet/agent.vue

@@ -105,6 +105,17 @@
                 </p>
                 <p>
                   <span>未提现:{{ item.notWithdrawn || 0 }}</span>
+                  <a-button
+                    style="
+                      width: 68px;
+                      height: 26px;
+                      background: #f1f4ff;
+                      border-radius: 4px;
+                      color: #2a55e5;
+                    "
+                    @click="openDrawer(item)"
+                    >详情</a-button
+                  >
                 </p>
               </div>
             </a-col>
@@ -124,6 +135,49 @@
         </div>
       </div>
     </div>
+    <a-drawer
+      :width="500"
+      :placement="'right'"
+      :visible="visible"
+      :headerStyle="headerStyle"
+      :closable="false"
+    >
+      <template slot="title">
+        <div class="custom-title" :style="headerStyle">
+          <div>
+            <a-icon type="close" @click="onClose" />
+            成员信息
+          </div>
+          <div>
+            <a-button style="margin-right: 8px" @click="onClose">取消</a-button>
+            <a-button type="primary" @click="onClose">确认</a-button>
+          </div>
+        </div>
+      </template>
+      <h3>个人信息</h3>
+      <ul class="list">
+        <li>
+          <span>姓名</span>
+          <span>{{ userData.name }}</span>
+        </li>
+        <li>
+          <span>会员号</span> <span>{{ userData.userId }}</span>
+        </li>
+        <li>
+          <span>手机号</span> <span>{{ userData.userPhone }}</span>
+        </li>
+        <li>
+          <span>注册时间</span> <span>{{ userData.userDate }}</span>
+        </li>
+
+        <li>
+          <span>签单保费</span> <span>{{ userData.totalPremium }}</span>
+        </li>
+        <li>
+          <span>出单人力</span> <span>{{ userData.orderManpower }}</span>
+        </li>
+      </ul>
+    </a-drawer>
   </div>
 </template>
             
@@ -159,6 +213,7 @@ export default {
         pageSize: 12,
         total: 0,
       },
+
       list: [],
       loading: false,
       process: process.env.VUE_APP_API_BASE_URL,
@@ -169,6 +224,12 @@ export default {
         title: "name",
         key: "id",
       },
+      headerStyle: {
+        display: "flex",
+        "align-items": "center",
+        "justify-content": "space-between",
+      },
+      userData: {},
     };
   },
   mounted() {
@@ -178,6 +239,25 @@ export default {
     this.getRole();
   },
   methods: {
+    onClose() {
+      //
+      this.visible = false;
+    },
+    openDrawer(item) {
+      // item
+      this.visible = true;
+
+      this.$API.personnel
+        .getTeamUserDetails({
+          userId: item.userId,
+        })
+        .then((res) => {
+          if (res.data.code === 200) {
+            this.userData = { ...res.data.data };
+          }
+        });
+      // console.log(this.visible)
+    },
     getList() {
       this.pageInfo.pageNum = 1;
       this.pageInfo.pageSize = 12;
@@ -486,4 +566,57 @@ export default {
   display: flex;
   justify-content: flex-end;
 }
+/deep/.ant-drawer-title {
+  width: 100%;
+}
+/deep/.custom-title {
+  display: flex;
+  > i {
+    cursor: pointer;
+  }
+}
+/deep/.ant-drawer-body {
+  h3 {
+    width: 100%;
+    height: 56px;
+    background: #fafafa;
+    font-weight: 500;
+    font-size: 16px;
+    color: rgba(0, 0, 0, 0.85);
+    text-align: center;
+    line-height: 56px;
+  }
+  /deep/ .ant-list-item {
+    display: flex;
+  }
+  .ant-list-split .ant-list-items .ant-list-item:last-child {
+    border-bottom: 1px solid #f0f0f0 !important;
+  }
+  .list-label {
+    width: 160px;
+  }
+}
+.list {
+  width: 100%;
+  > li {
+    height: 56px;
+    display: flex;
+    align-items: center;
+    border-bottom: 1px solid #f0f0f0;
+    padding: 0 10px;
+    box-sizing: border-box;
+    > span:first-child {
+      display: flex;
+      width: 200px;
+      font-weight: 500;
+      font-size: 16px;
+      color: rgba(0, 0, 0, 0.85);
+    }
+    span {
+      font-weight: 500;
+      font-size: 16px;
+      color: rgba(0, 0, 0, 0.85);
+    }
+  }
+}
 </style>

+ 2 - 1
src/pages/wallet/channel.vue

@@ -92,8 +92,9 @@
                     src="../../assets/img/woman.png"
                     alt=""
                   />
+                  {{ item.userName }}
                 </div>
-                <p>代理人:{{ item.userName }}</p>
+                <!-- <p>代理人:</p> -->
 
                 <p>归属:{{ item.deptName }}</p>