From a49dae2b2f8e9ee33abbca73ce717ad3d20d7eb0 Mon Sep 17 00:00:00 2001
From: zhaorulin <zhaorulin@singsingenglish.com>
Date: Mon, 12 Aug 2019 19:05:09 +0800
Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E9=A1=B5=20=E6=96=B0?=
 =?UTF-8?q?=E5=A2=9E=E6=90=9C=E7=B4=A2=E3=80=81=E9=AB=98=E7=BA=A7=E6=90=9C?=
 =?UTF-8?q?=E7=B4=A2=E3=80=81=E5=AF=BC=E5=87=BA=E3=80=81=E6=9D=83=E9=99=90?=
 =?UTF-8?q?=E9=85=8D=E7=BD=AE=209=E4=B8=AA=E6=9C=9F=E6=95=B0=E6=90=9C?=
 =?UTF-8?q?=E7=B4=A2=E6=A1=86=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/App.vue                                   |  21 +
 .../conversionList/channelConversionList.vue  |   7 +-
 .../channelGoodsConversionList.vue            |   8 +-
 .../conversionList/channelTransList.vue       |   7 +-
 .../marketEnrollmentConversionList.vue        |  23 +-
 .../conversionList/periodsConversionList.vue  |  34 +-
 .../conversionList/sourceConversionList.vue   |  10 +-
 .../conversionList/squadConversionList.vue    |  10 +-
 .../conversionList/teacherConversionList.vue  |  10 +-
 .../teacherPeriodsConversionList.vue          |   7 +-
 src/components/exchange/add.vue               |   2 +-
 src/components/framework/index.vue            |   6 +-
 src/components/lesson/index.vue               |  26 +-
 src/components/marketStatistics/index.vue     |   3 +-
 src/components/periods/dialog.vue             |  10 +-
 src/components/periods/index.vue              |   4 +-
 src/components/periods/newDialog.vue          |  33 +-
 src/components/system/role.vue                |   2 +-
 src/components/system/staff.vue               |   4 +-
 src/components/system/staffRecord.vue         |   2 +-
 src/components/system/tag.vue                 | 417 ++++++------------
 src/components/user/index.vue                 | 108 ++---
 src/components/userDetail/index.vue           |  34 +-
 src/service/api.js                            |   8 +
 24 files changed, 320 insertions(+), 476 deletions(-)

diff --git a/src/App.vue b/src/App.vue
index fdb56a3f..31663e1e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -198,6 +198,12 @@ html, body {
     &.width-320 {
       max-width: 320px;
     }
+    &.width-360 {
+      max-width: 360px;
+    }
+    &.width-400 {
+      max-width: 400px;
+    }
     &.width-480 {
       max-width: 480px;
     }
@@ -232,4 +238,19 @@ html, body {
     }
   }
 
+.el-table {
+  .f-c > div {
+    display: flex !important;
+    flex-flow: row;
+    justify-content: flex-start;
+    align-items: center;
+  }
+  .avatar {
+    width: 50px;
+    margin-right: 8px;
+    border-radius: 50%;
+    height: 50px;
+  }
+}
+
 </style>
diff --git a/src/components/conversionList/channelConversionList.vue b/src/components/conversionList/channelConversionList.vue
index cbc8a683..36655b57 100644
--- a/src/components/conversionList/channelConversionList.vue
+++ b/src/components/conversionList/channelConversionList.vue
@@ -140,8 +140,7 @@ export default {
       goods_id: null,
       teacherList: [],
       goodsList: [],
-      periodList: [],
-      total: 0,
+      //periodList: [],
       today: {
         text: "今天",
         onClick: () => {
@@ -343,12 +342,12 @@ export default {
       this.limit = val;
       this.getChannelTransList();
     },
-    getPeriodsOtherList() {
+    /*getPeriodsOtherList() {
       let json = { limit: 1000, page: 1,max_watch_num:20 };
       getPeriodsOtherListApi(json).then(res => {
         this.periodList = res.list;
       });
-    },
+    },*/
     getChannelTransList() {
       let json = {
         limit: this.limit,
diff --git a/src/components/conversionList/channelGoodsConversionList.vue b/src/components/conversionList/channelGoodsConversionList.vue
index 89b73372..4e900f2e 100644
--- a/src/components/conversionList/channelGoodsConversionList.vue
+++ b/src/components/conversionList/channelGoodsConversionList.vue
@@ -157,8 +157,7 @@ export default {
       list: [],
       goods_id: null,
       teacherList: [],
-      periodList: [],
-      total: 0,
+      //periodList: [],
       today: {
         text: "今天",
         onClick: () => {
@@ -204,7 +203,6 @@ export default {
           ];
         }
       },
-      propertyList: [],
       spanArr: [],
       contentSpanArr: [],
       searchFrom: {
@@ -391,12 +389,12 @@ export default {
       this.limit = val;
       this.getChannelTransList();
     },
-    getPeriodsOtherList() {
+    /*getPeriodsOtherList() {
       let json = { limit: 1000,page:1,max_watch_num:20 };
       getPeriodsOtherListApi(json).then(res => {
         this.periodList = res.list;
       });
-    },
+    },*/
     getChannelTransList() {
       let json = {
         limit: this.limit,
diff --git a/src/components/conversionList/channelTransList.vue b/src/components/conversionList/channelTransList.vue
index 4c6dfbe1..8405f7ad 100644
--- a/src/components/conversionList/channelTransList.vue
+++ b/src/components/conversionList/channelTransList.vue
@@ -65,13 +65,15 @@
       </el-form-item>
       <el-form-item label="期数名称" prop="periods_title">
         <el-select
+          :popper-class="'refresh-select-multi width-480'"
+          style="width: 480px"
           placeholder="请选择"
           v-model="searchFrom.periods_id"
           @change="onPeriodChange"
           multiple
           clearable
           filterable>
-          <el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
+          <el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="组ID">
@@ -443,6 +445,9 @@ export default {
     getPeriodsOtherList() {
       let json = { limit: 1000,page:1,max_watch_num:20 };
       getPeriodsOtherListApi(json).then(res => {
+        res.list.forEach(val=>{
+          val.label = `【${val.goods_id}】${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
+        })
         this.periodList = res.list;
       });
     },
diff --git a/src/components/conversionList/marketEnrollmentConversionList.vue b/src/components/conversionList/marketEnrollmentConversionList.vue
index 5e9a8187..f24766d2 100644
--- a/src/components/conversionList/marketEnrollmentConversionList.vue
+++ b/src/components/conversionList/marketEnrollmentConversionList.vue
@@ -36,13 +36,15 @@
       </el-form-item>
       <el-form-item label="期数名称" prop="periods_title">
         <el-select
+          :popper-class="'refresh-select-multi width-480'"
+          style="width: 480px"
           placeholder="请选择"
           v-model="searchFrom.periods_id"
           @change="onPeriodChange"
           multiple
           clearable
           filterable>
-          <el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
+          <el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -58,12 +60,11 @@
       :header-cell-style="{background:'#5f5f5f',color:'#fff'}"
       :data="list"
       size="mini"
-      height="calc(100vh - 210px)"
       :row-class-name="tableRowClassName"
       :span-method="arraySpanMethod"
     >
-      <el-table-column prop="periods_title" align="center" min-width="80" fixed label="期数名称">
-      </el-table-column>
+      <!--height="calc(100vh - 210px)"-->
+      <el-table-column prop="periods_title" align="center" min-width="80" fixed label="期数名称"></el-table-column>
       <el-table-column prop="is_other" min-width="160" align="left" fixed label="渠道信息">
         <template slot-scope="scope">
         来源:{{scope.row.is_other==0?"内部":"外部"}}<br>
@@ -109,7 +110,6 @@ export default {
         "wait_join_num",
         "other_wait_join_num"
       ],
-      periodList:[],
       searchFrom: {
         payTime: [],
         start_at: "",
@@ -196,6 +196,9 @@ export default {
     getPeriodsOtherList() {
       let json = { limit: 1000,page:1,max_watch_num:20 };
       getPeriodsOtherListApi(json).then(res => {
+        res.list.forEach(val=>{
+          val.label = `【${val.goods_id}】${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
+        })
         this.periodList = res.list;
       });
     },
@@ -292,10 +295,12 @@ export default {
 
 <style scoped lang="less">
 .searchFrom{
-  position: absolute;
-  top: 20px;
+  /*position: absolute;
+  top: 20px;*/
+}
+.el-table{
+  /*margin-top: 130px;*/
 }
-.el-table{margin-top: 130px;}
 /deep/.el-table--enable-row-hover .el-table__body tr:hover > td {
   background-color: #fff;
 }
@@ -306,6 +311,6 @@ export default {
   max-width: 100% !important;
 }
 .el-main .content .router-block .child-view {
-  height: 100vh;
+  /*height: 100vh;*/
 }
 </style>
diff --git a/src/components/conversionList/periodsConversionList.vue b/src/components/conversionList/periodsConversionList.vue
index 6171c99c..e8dabe19 100644
--- a/src/components/conversionList/periodsConversionList.vue
+++ b/src/components/conversionList/periodsConversionList.vue
@@ -11,8 +11,7 @@
           end-placeholder="结束日期"
           :picker-options="{shortcuts:[today,yesterday,last7Day,last30Day]}"
           :default-time="['00:00:00','23:59:59']"
-          @change="getChannelTransList"
-        ></el-date-picker>
+          @change="getChannelTransList"></el-date-picker>
       </el-form-item>
       <el-form-item label="开结课日期">
         <el-date-picker
@@ -24,8 +23,7 @@
           end-placeholder="结束日期"
           :picker-options="{shortcuts:[classToday,classYesterday,classLast7Day,classLast30Day]}"
           :default-time="['00:00:00','23:59:59']"
-          @change="getChannelTransList"
-        ></el-date-picker>
+          @change="getChannelTransList"></el-date-picker>
       </el-form-item>
       <el-form-item label="渠道code">
         <el-input v-model="searchFrom.invite_type" style="width: 110px"></el-input>
@@ -38,25 +36,23 @@
           clearable
           placeholder="请选择"
           style="width: 150px"
-          @change="selectChange"
-        >
+          @change="selectChange">
           <el-option
             v-for="(data,index) in watchList"
             :key="index"
             :label="data.title"
-            :value="data.id"
-          ></el-option>
+            :value="data.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="期数名称" prop="periods_title">
         <el-select
+          style="width: 480px"
           placeholder="请选择"
           v-model="searchFrom.periods_id"
           @change="onPeriodChange"
           multiple
-          filterable
-        >
-          <el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
+          filterable>
+          <el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="组ID">
@@ -69,15 +65,13 @@
           placeholder="请选择"
           @change="changeTeacher"
           clearable
-          style="width: 100px"
-        >
+          style="width: 100px">
           <el-option label="暂不分配" value="0"></el-option>
           <el-option
             v-for="(data,index) in teacherList"
             :key="index"
             :label="data.name"
-            :value="data.id"
-          ></el-option>
+            :value="data.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -92,15 +86,13 @@
       :data="list"
       @sort-change="sortMethod"
       :style="{width: width+'px'}"
-      fixed
-    >
+      fixed>
       <el-table-column prop="periods_title" label="期数名称" ></el-table-column>
       <el-table-column
         prop="duration_over_at"
         label="开课看课时间"
         style="font-size:12px;"
-        width="200"
-        >
+        width="200">
         <template slot-scope="scope">
           开课日期:{{scope.row.start_at}}
           <br>
@@ -164,7 +156,6 @@ export default {
       teacherList: [],
       goodsList: [],
       periodList: [],
-      total: 0,
       today: {
         text: "今天",
         onClick: () => {
@@ -453,6 +444,9 @@ export default {
     getPeriodsOtherList() {
       let json = { limit: 1000,page:1,max_watch_num:20 };
       getPeriodsOtherListApi(json).then(res => {
+        res.list.forEach(val=>{
+          val.label = `【${val.goods_id}】${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
+        })
         this.periodList = res.list;
         console.log(320)
       });
diff --git a/src/components/conversionList/sourceConversionList.vue b/src/components/conversionList/sourceConversionList.vue
index 8ec49ead..040504b7 100644
--- a/src/components/conversionList/sourceConversionList.vue
+++ b/src/components/conversionList/sourceConversionList.vue
@@ -35,13 +35,13 @@
       </el-form-item>
       <el-form-item label="期数名称" prop="periods_title">
         <el-select
+          style="width: 480px"
           placeholder="请选择"
           v-model="searchFrom.periods_id"
           @change="onPeriodChange"
           multiple
-          filterable
-        >
-          <el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
+          filterable>
+          <el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="转化前商品">
@@ -193,7 +193,6 @@ export default {
       teacherList: [],
       goodsList: [],
       periodList: [],
-      total: 0,
       today: {
         text: "今天",
         onClick: () => {
@@ -473,6 +472,9 @@ export default {
     getPeriodsOtherList() {
       let json = { limit: 1000,page:1,max_watch_num:20 };
       getPeriodsOtherListApi(json).then(res => {
+        res.list.forEach(val=>{
+          val.label = `【${val.goods_id}】${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
+        })
         this.periodList = res.list;
         console.log(320)
       });
diff --git a/src/components/conversionList/squadConversionList.vue b/src/components/conversionList/squadConversionList.vue
index d6d3e611..d4977327 100644
--- a/src/components/conversionList/squadConversionList.vue
+++ b/src/components/conversionList/squadConversionList.vue
@@ -37,13 +37,13 @@
       </el-form-item>
       <el-form-item label="期数名称" prop="periods_title">
         <el-select
+          style="width: 480px"
           placeholder="请选择"
           v-model="searchFrom.periods_id"
           @change="onPeriodChange"
           multiple
-          filterable
-        >
-          <el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
+          filterable>
+          <el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -117,7 +117,6 @@ export default {
       teacherList: [],
       goodsList: [],
       periodList: [],
-      total: 0,
       today: {
         text: "今天",
         onClick: () => {
@@ -355,6 +354,9 @@ export default {
     getPeriodsOtherList() {
       let json = { limit: 1000,page:1,max_watch_num:20 };
       getPeriodsOtherListApi(json).then(res => {
+        res.list.forEach(val=>{
+          val.label = `【${val.goods_id}】${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
+        })
         this.periodList = res.list;
       });
     },
diff --git a/src/components/conversionList/teacherConversionList.vue b/src/components/conversionList/teacherConversionList.vue
index e980a153..5f89c942 100644
--- a/src/components/conversionList/teacherConversionList.vue
+++ b/src/components/conversionList/teacherConversionList.vue
@@ -29,8 +29,7 @@
           clearable
           placeholder="请选择"
           style="width: 150px"
-          @change="selectChange"
-        >
+          @change="selectChange">
           <el-option
             v-for="(data,index) in watchList"
             :key="index"
@@ -41,12 +40,13 @@
       </el-form-item>
       <el-form-item label="期数名称" prop="periods_title">
         <el-select
+          style="width: 480px"
           placeholder="请选择"
           v-model="searchFrom.periods_id"
           @change="onPeriodChange"
           multiple
           filterable>
-          <el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
+          <el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -121,7 +121,6 @@ export default {
       teacherList: [],
       goodsList: [],
       periodList: [],
-      total: 0,
       today: {
         text: "今天",
         onClick: () => {
@@ -358,6 +357,9 @@ export default {
     getPeriodsOtherList() {
       let json = { limit: 1000,page:1,max_watch_num:20 };
       getPeriodsOtherListApi(json).then(res => {
+        res.list.forEach(val=>{
+          val.label = `【${val.goods_id}】${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
+        })
         this.periodList = res.list;
       });
     },
diff --git a/src/components/conversionList/teacherPeriodsConversionList.vue b/src/components/conversionList/teacherPeriodsConversionList.vue
index b6e69544..115e4521 100644
--- a/src/components/conversionList/teacherPeriodsConversionList.vue
+++ b/src/components/conversionList/teacherPeriodsConversionList.vue
@@ -35,12 +35,13 @@
       </el-form-item>
       <el-form-item label="期数名称" prop="periods_title">
         <el-select
+          style="width: 480px"
           placeholder="请选择"
           v-model="searchFrom.periods_id"
           @change="onPeriodChange"
           multiple
           filterable>
-          <el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
+          <el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="老师">
@@ -164,7 +165,6 @@ export default {
       teacherList: [],
       goodsList: [],
       periodList: [],
-      total: 0,
       today: {
         text: "今天",
         onClick: () => {
@@ -456,6 +456,9 @@ export default {
     getPeriodsOtherList() {
       let json = { limit: 1000,page:1,max_watch_num:20 };
       getPeriodsOtherListApi(json).then(res => {
+        res.list.forEach(val=>{
+          val.label = `【${val.goods_id}】${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
+        })
         this.periodList = res.list;
       });
     },
diff --git a/src/components/exchange/add.vue b/src/components/exchange/add.vue
index 20fe8788..6469717c 100644
--- a/src/components/exchange/add.vue
+++ b/src/components/exchange/add.vue
@@ -14,7 +14,7 @@
       <el-form-item label="活动方案">
         <el-select
           v-model="newIntegral.source"
-          :prop-class="'refresh-select-multi width-480'"
+          :popper-class="'refresh-select-multi width-480'"
           style="width: 480px" placeholder="请选择" filterable>
           <el-option
             v-for="(data,index) in classSource"
diff --git a/src/components/framework/index.vue b/src/components/framework/index.vue
index 0fba9d8d..1ace653d 100644
--- a/src/components/framework/index.vue
+++ b/src/components/framework/index.vue
@@ -54,6 +54,8 @@
     .menu-block{
       float: left;
       height: 100%;
+      background-color: #333333;
+      /*height: calc(100vh - 60px);*/
       /*overflow: auto;
       position: fixed;
       left: 0;
@@ -69,9 +71,9 @@
         height: 100%;
         position: relative;
         .child-view{
-          height: calc(100% - 40px);
+          /*height: calc(100% - 40px);
           width: 100%;
-          overflow-y: auto;
+          overflow-y: auto;*/
         }
       }
     }
diff --git a/src/components/lesson/index.vue b/src/components/lesson/index.vue
index 02e5aa8a..e342626e 100644
--- a/src/components/lesson/index.vue
+++ b/src/components/lesson/index.vue
@@ -1,24 +1,22 @@
 <template>
   <div class="user">
     <el-form ref="searchFrom" :model="searchFrom" label-width="100px" inline="" class="search-form">
-          <el-form-item label="课程标题">
-            <el-input v-model="searchFrom.title"></el-input>
-          </el-form-item>
-          <el-form-item label="">
-            <div class="search-btn-block">
-              <el-button type="primary" plain @click="getUser" icon="el-icon-search">搜索</el-button>
-              <el-button type="success" plain @click="add" v-if="!$store.state.readonly" icon="el-icon-plus">新增课程</el-button>
-            </div>
-          </el-form-item>
+      <el-form-item label="课程标题">
+        <el-input v-model="searchFrom.title"></el-input>
+      </el-form-item>
+      <el-form-item label="">
+        <div class="search-btn-block">
+          <el-button type="primary" plain @click="getUser" icon="el-icon-search">搜索</el-button>
+          <el-button type="success" plain @click="add" v-if="!$store.state.readonly" icon="el-icon-plus">新增课程</el-button>
+        </div>
+      </el-form-item>
     </el-form>
     <el-tabs v-model="searchFrom.type" type="card" style="background: white;padding-top: 10px" @tab-click="getUser">
       <el-tab-pane label="全部" name="-1"></el-tab-pane>
       <el-tab-pane label="日课" name="1"></el-tab-pane>
       <el-tab-pane label="月课" name="0"></el-tab-pane>
     </el-tabs>
-    <el-table
-      :data="userList"
-      style="width: 100%">
+    <el-table :data="userList">
       <el-table-column
         prop="title"
         label="课程名">
@@ -181,8 +179,8 @@
     margin: 0;
   }
   .user{
-    height: 100%;
-    overflow: auto;
+    /*height: 100%;*/
+    /*overflow: auto;*/
     padding: 20px 0;
     .btn-content{
       text-align: center;
diff --git a/src/components/marketStatistics/index.vue b/src/components/marketStatistics/index.vue
index 0432f685..c078f512 100644
--- a/src/components/marketStatistics/index.vue
+++ b/src/components/marketStatistics/index.vue
@@ -8,8 +8,7 @@
       height="calc(100vh - 60px)"
       size="mini"
       :row-class-name="tableRowClassName"
-      :span-method="arraySpanMethod"
-    >
+      :span-method="arraySpanMethod">
       <el-table-column min-width="180" prop="wait_join_num" align="left" fixed="left" label="期数总状况">
         <template slot-scope="scope">
           期数名称:{{scope.row.title}}
diff --git a/src/components/periods/dialog.vue b/src/components/periods/dialog.vue
index 389488b8..2b1983a1 100644
--- a/src/components/periods/dialog.vue
+++ b/src/components/periods/dialog.vue
@@ -1,19 +1,13 @@
 <template>
   <div>
-    <el-dialog
-      :title="dialogObj.title"
-      :visible.sync="dialogObj.show"
-    >
+    <el-dialog :title="dialogObj.title" :visible.sync="dialogObj.show">
       <el-table
         :data="goodList"
         style="width: 100%"
         row-key="id"
         highlight-current-row
         @current-change="handleCurrentChange">
-        <el-table-column
-          prop="id"
-          label="商品ID">
-        </el-table-column>
+        <el-table-column prop="id" label="商品ID"></el-table-column>
         <el-table-column
           prop="name"
           label="名称">
diff --git a/src/components/periods/index.vue b/src/components/periods/index.vue
index fbe36ccf..79ef5eb7 100644
--- a/src/components/periods/index.vue
+++ b/src/components/periods/index.vue
@@ -6,7 +6,9 @@
           <el-input v-model="title" placeholder="请输入内容" style="width: 150px" clearable></el-input>
         </el-form-item>
         <el-form-item label="商品名称">
-          <el-select v-model="goodsId" filterable placeholder="请选择" style="width: 150px" @change="onSearch" clearable>
+          <el-select
+            :popper-class="'refresh-select-multi width-400'" style="width: 400px"
+            v-model="goodsId" filterable placeholder="请选择" @change="onSearch" clearable>
             <el-option
               v-for="(data,index) in goodList"
               :key="index"
diff --git a/src/components/periods/newDialog.vue b/src/components/periods/newDialog.vue
index 33a74026..c4850609 100644
--- a/src/components/periods/newDialog.vue
+++ b/src/components/periods/newDialog.vue
@@ -2,26 +2,23 @@
   <div>
     <el-dialog
       :title="dialogObj.title"
-      center
-      append-to-body
+      center append-to-body
       :visible.sync="show"
       width="800px">
       <div v-loading="loading">
         <el-form ref="form" :model="form" label-width="120px" :rules="rules">
-          <el-row>
-            <el-col :span="10">
-              <el-form-item label="商品名称" prop="goods_id">
-                <el-select v-model="form.goods_id" placeholder="请选择" @change="onOptionChange" :disabled="form.id ? true : false">
-                  <el-option
-                    v-for="(data,index) in goodList"
-                    :key="index"
-                    :label="data | filterGoods"
-                    :value="data.id">
-                  </el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-          </el-row>
+          <el-form-item label="商品名称" prop="goods_id">
+            <el-select
+              :popper-class="'refresh-select-multi width-480'" style="width: 480px"
+              v-model="form.goods_id" placeholder="请选择" @change="onOptionChange" :disabled="form.id ? true : false">
+              <el-option
+                v-for="(data,index) in goodList"
+                :key="index"
+                :label="data | filterGoods"
+                :value="data.id">
+              </el-option>
+            </el-select>
+          </el-form-item>
           <el-form-item label="期数名称" prop="title">
             <el-input v-model="form.title"></el-input>
           </el-form-item>
@@ -83,10 +80,10 @@
             </el-select>
           </el-form-item>
         </el-form>
-        <span slot="footer" class="dialog-footer">
+      </div>
+      <div slot="footer" class="dialog-footer">
         <el-button @click="show = false">取 消</el-button>
         <el-button type="primary" @click="sub">确 定</el-button>
-      </span>
       </div>
     </el-dialog>
   </div>
diff --git a/src/components/system/role.vue b/src/components/system/role.vue
index 8b519a70..d946affc 100644
--- a/src/components/system/role.vue
+++ b/src/components/system/role.vue
@@ -96,7 +96,7 @@
         limit: 10,
         roleList:[],
         exportMenuList:[
-          '2-3','5-10','5-2','5-1','5-3','5-8','5-9','3-1','7-9','6-3'
+          '2-3','5-10','5-2','5-1','5-3','5-8','5-9','3-1','7-9','6-3', '10-8'
         ],
         dialog:{
           title:'新增角色',
diff --git a/src/components/system/staff.vue b/src/components/system/staff.vue
index 9cfc9557..8dc3ec99 100644
--- a/src/components/system/staff.vue
+++ b/src/components/system/staff.vue
@@ -81,7 +81,7 @@
       </el-table-column>
     </el-table>
     <page :total="total" :limit="limit" @pageChange="onPageChange" @sizeChange="onSizeChange"/>
-    <el-dialog :title="dialog.title" :visible.sync="dialog.show" width="500px">
+    <el-dialog :title="dialog.title" :visible.sync="dialog.show" width="800px">
 
       <el-form ref="dialogForm" :rules="dialog.form.rules" :model="dialog.form" label-width="100px">
         <el-form-item label="真实姓名:" prop="name">
@@ -334,7 +334,7 @@
   }
 
   .user {
-    height: 100%;
+    /*height: 100%;*/
     overflow: auto;
     padding: 20px 0;
 
diff --git a/src/components/system/staffRecord.vue b/src/components/system/staffRecord.vue
index 9e690806..f9018327 100644
--- a/src/components/system/staffRecord.vue
+++ b/src/components/system/staffRecord.vue
@@ -151,7 +151,7 @@
 
 <style lang="less" scoped>
   .user {
-    height: 100%;
+    /*height: 100%;*/
     overflow: auto;
     padding: 20px 0;
 
diff --git a/src/components/system/tag.vue b/src/components/system/tag.vue
index cc0d5ebd..22fc7dd1 100644
--- a/src/components/system/tag.vue
+++ b/src/components/system/tag.vue
@@ -4,15 +4,17 @@
     <div class="section-search search-single">
       <el-form ref="searchFrom" :model="searchFrom" label-width="80px" inline>
         <el-form-item>
-          <el-cascader
+          <!--<el-cascader
             style="width: 280px" placeholder="选择标签"
-            :props="searchProps" clearable></el-cascader>
+            :props="searchProps" clearable></el-cascader>-->
+
+          <el-input placeholder="输入标签名搜索" v-model="filterText"></el-input>
         </el-form-item>
 
         <el-form-item>
           <div class="search-btn-wrapper">
-            <el-button @click="onSearch" type="primary" plain>搜索</el-button>
-            <el-button @click="onSearch" type="warning" plain>高级搜索</el-button>
+            <!--<el-button @click="onSearch" type="primary" plain>搜索</el-button>-->
+            <el-button @click="dialogToggle" type="warning" plain>高级搜索</el-button>
             <!--<el-button v-if="!$store.state.readonly" @click="onAdd" type="success" plain>新增标签</el-button>-->
           </div>
         </el-form-item>
@@ -21,275 +23,81 @@
 
     <div class="tag-tree">
       <el-tree
-        :data="tableData"
-        node-key="id"
+        :data="treeData"
+        node-key="id" ref="tagTree"
         :props="tagProps"
         :indent="40"
         @node-expand="tagExpand"
         @node-collapse="tagCollapse"
+        :filter-node-method="filterNode"
         :default-expanded-keys="tagExpanded"
-        :expand-on-click-node="false">
+        :expand-on-click-node="true">
         <div class="custom-tree-node" slot-scope="{ node, data }">
           <el-tag class="tag-tree-item" effect="plain" size="medium">{{node.label}}</el-tag>
           <div style="display: flex">
-            <el-link type="success" size="mini" plain @click.stop="onAdd(node)">新增子标签 ({{node.level}}级)</el-link>
-            <el-link v-if="node.level != 1" type="warning" size="mini" plain @click.stop="onEdit(node, data, el)">编辑</el-link>
+            <!--<span>{{node.data.cover}}</span>-->
+            <el-popover
+              placement="right-start"
+              title="标签备注"
+              width="200"
+              trigger="hover"
+              :disabled="!node.data.cover"
+              :content="node.data.cover ? node.data.cover : '暂无备注'">
+              <el-link @click.stop class="cover-link" slot="reference" :disabled="!node.data.cover">备注</el-link>
+            </el-popover>
+            <el-link v-if="node.level < 4 && !$store.state.readonly" type="success" size="mini" plain @click.stop="onAdd(node)">新增子标签 ({{node.level}}级)</el-link>
+            <el-link v-if="node.level != 1 && !$store.state.readonly" type="warning" size="mini" plain @click.stop="onEdit(node, data)">编辑</el-link>
           </div>
         </div>
       </el-tree>
     </div>
 
-    <el-dialog :title="dialog.title" :visible.sync="dialog.show" width="500px">
-
-      <el-form ref="dialogForm" :rules="dialog.form.rules" :model="dialog.form" label-width="100px">
-
-        <el-form-item label="ID:" prop="id" style="display: none;">
-          <el-input v-model="dialog.form.id" maxlength="10" type="text"></el-input>
-        </el-form-item>
-        <el-form-item label="PID:" prop="pid" style="display: none;">
-          <el-input v-model="dialog.form.pid" maxlength="10" type="text"></el-input>
-        </el-form-item>
-
-        <el-form-item label="标签名称:" prop="name">
-          <el-input v-model="dialog.form.name" maxlength="10" type="text"></el-input>
-        </el-form-item>
-        <el-form-item label="标签备注:" prop="cover">
-          <el-input v-model="dialog.form.cover" maxlength="50" type="textarea" :rows="3"></el-input>
-        </el-form-item>
-      </el-form>
-
-      <span slot="footer" class="dialog-footer">
+    <el-dialog :title="dialog.title" :visible.sync="dialog.show" width="800px" title="高级搜索">
+
+      <div style="display: flex;margin-bottom: 20px;">
+        <el-button style="margin-right: 20px; width: 70px;" type="primary" v-if="!$store.state.readonly && $store.state.export" plain :disabled="!tableData.length" @click="exportExcel">导出</el-button>
+        <el-cascader
+          style="width: calc(100% - 90px)" placeholder="选择标签" clearable @change="conditionsChange"
+          :options="treeDataOrigin" :props="{ value: 'id', label: 'name', multiple: true, checkStrictly: true }"></el-cascader>
+      </div>
+
+      <el-table :data="tableData" border>
+        <el-table-column className="f-c" label="用户">
+          <template slot-scope="scope">
+            <img class="avatar" :src="scope.row.avatar">{{scope.row.nickname}}<br>(ID:{{scope.row.user_id}})
+          </template>
+        </el-table-column>
+
+        <el-table-column prop="baby_name" label="宝宝名称"></el-table-column>
+        <el-table-column prop="birthday" label="宝宝生日"></el-table-column>
+        <el-table-column prop="sex" label="宝宝性别" :formatter="sexFormatter"></el-table-column>
+        <el-table-column prop="mobile" label="手机号码"></el-table-column>
+        <!--<el-table-column label="操作" v-if="!$store.state.readonly" width="100">
+          <template slot-scope="scope">
+            <el-button size="mini" plain type="primary" @click="onEdit(scope.row)">编辑</el-button>
+          </template>
+        </el-table-column>-->
+      </el-table>
+      <page :total="total" :limit="limit" @pageChange="onPageChange" @sizeChange="onSizeChange"/>
+
+      <!--<span slot="footer" class="dialog-footer">
         <el-button @click="dialogToggle">取消</el-button>
         <el-button type="primary" @click="dialogSave">确定</el-button>
-      </span>
+      </span>-->
     </el-dialog>
   </div>
 </template>
 
 <script>
-  import {getTagApi, postTagApi, putTagApi} from "../../service/api";
-
-  let sid = 0, id = 1000;
+  import {getTagApi, postTagApi, putTagApi, getTagUserApi, exportExcelApi} from "../../service/api";
+  import page from '../framework/page';
 
   export default {
     name: "index",
     data() {
       return {
-
-        options: [{
-          value: 'zhinan',
-          label: '指南',
-          children: [{
-            value: 'shejiyuanze',
-            label: '设计原则',
-            children: [{
-              value: 'yizhi',
-              label: '一致'
-            }, {
-              value: 'fankui',
-              label: '反馈'
-            }, {
-              value: 'xiaolv',
-              label: '效率'
-            }, {
-              value: 'kekong',
-              label: '可控'
-            }]
-          }, {
-            value: 'daohang',
-            label: '导航',
-            children: [{
-              value: 'cexiangdaohang',
-              label: '侧向导航'
-            }, {
-              value: 'dingbudaohang',
-              label: '顶部导航'
-            }]
-          }]
-        }, {
-          value: 'zujian',
-          label: '组件',
-          children: [{
-            value: 'basic',
-            label: 'Basic',
-            children: [{
-              value: 'layout',
-              label: 'Layout 布局'
-            }, {
-              value: 'color',
-              label: 'Color 色彩'
-            }, {
-              value: 'typography',
-              label: 'Typography 字体'
-            }, {
-              value: 'icon',
-              label: 'Icon 图标'
-            }, {
-              value: 'button',
-              label: 'Button 按钮'
-            }]
-          }, {
-            value: 'form',
-            label: 'Form',
-            children: [{
-              value: 'radio',
-              label: 'Radio 单选框'
-            }, {
-              value: 'checkbox',
-              label: 'Checkbox 多选框'
-            }, {
-              value: 'input',
-              label: 'Input 输入框'
-            }, {
-              value: 'input-number',
-              label: 'InputNumber 计数器'
-            }, {
-              value: 'select',
-              label: 'Select 选择器'
-            }, {
-              value: 'cascader',
-              label: 'Cascader 级联选择器'
-            }, {
-              value: 'switch',
-              label: 'Switch 开关'
-            }, {
-              value: 'slider',
-              label: 'Slider 滑块'
-            }, {
-              value: 'time-picker',
-              label: 'TimePicker 时间选择器'
-            }, {
-              value: 'date-picker',
-              label: 'DatePicker 日期选择器'
-            }, {
-              value: 'datetime-picker',
-              label: 'DateTimePicker 日期时间选择器'
-            }, {
-              value: 'upload',
-              label: 'Upload 上传'
-            }, {
-              value: 'rate',
-              label: 'Rate 评分'
-            }, {
-              value: 'form',
-              label: 'Form 表单'
-            }]
-          }, {
-            value: 'data',
-            label: 'Data',
-            children: [{
-              value: 'table',
-              label: 'Table 表格'
-            }, {
-              value: 'tag',
-              label: 'Tag 标签'
-            }, {
-              value: 'progress',
-              label: 'Progress 进度条'
-            }, {
-              value: 'tree',
-              label: 'Tree 树形控件'
-            }, {
-              value: 'pagination',
-              label: 'Pagination 分页'
-            }, {
-              value: 'badge',
-              label: 'Badge 标记'
-            }]
-          }, {
-            value: 'notice',
-            label: 'Notice',
-            children: [{
-              value: 'alert',
-              label: 'Alert 警告'
-            }, {
-              value: 'loading',
-              label: 'Loading 加载'
-            }, {
-              value: 'message',
-              label: 'Message 消息提示'
-            }, {
-              value: 'message-box',
-              label: 'MessageBox 弹框'
-            }, {
-              value: 'notification',
-              label: 'Notification 通知'
-            }]
-          }, {
-            value: 'navigation',
-            label: 'Navigation',
-            children: [{
-              value: 'menu',
-              label: 'NavMenu 导航菜单'
-            }, {
-              value: 'tabs',
-              label: 'Tabs 标签页'
-            }, {
-              value: 'breadcrumb',
-              label: 'Breadcrumb 面包屑'
-            }, {
-              value: 'dropdown',
-              label: 'Dropdown 下拉菜单'
-            }, {
-              value: 'steps',
-              label: 'Steps 步骤条'
-            }]
-          }, {
-            value: 'others',
-            label: 'Others',
-            children: [{
-              value: 'dialog',
-              label: 'Dialog 对话框'
-            }, {
-              value: 'tooltip',
-              label: 'Tooltip 文字提示'
-            }, {
-              value: 'popover',
-              label: 'Popover 弹出框'
-            }, {
-              value: 'card',
-              label: 'Card 卡片'
-            }, {
-              value: 'carousel',
-              label: 'Carousel 走马灯'
-            }, {
-              value: 'collapse',
-              label: 'Collapse 折叠面板'
-            }]
-          }]
-        }, {
-          value: 'ziyuan',
-          label: '资源',
-          children: [{
-            value: 'axure',
-            label: 'Axure Components'
-          }, {
-            value: 'sketch',
-            label: 'Sketch Templates'
-          }, {
-            value: 'jiaohu',
-            label: '组件交互文档'
-          }]
-        }],
-
-        searchProps: {
-          lazy: true,
-          multiple: true,
-          checkStrictly: true,
-          lazyLoad (node, resolve) {
-            const { level } = node;
-            setTimeout(() => {
-              const nodes = Array.from({ length: level + 1 })
-                .map(item => ({
-                  value: ++sid,
-                  label: `选项${sid}`,
-                  leaf: level >= 2
-                }));
-              // 通过调用resolve将子节点数据返回,通知组件数据加载完成
-              resolve(nodes);
-            }, 1000);
-          }
-        },
+        conditions: [],
+        filterText: '',
 
         tagProps: {
           children: 'children',
@@ -311,6 +119,8 @@
         },
         startTime: [],
         tableData: [],
+        treeData: [],
+        treeDataOrigin: [],
         dialog: {
           title: '',
           show: false,
@@ -331,17 +141,63 @@
         loading: false
       }
     },
-    //components: { page },
+    components: { page },
+    watch: {
+      filterText(val) {
+        this.$refs.tagTree.filter(val);
+      }
+    },
     mounted() {
       this.getData()
     },
     methods: {
+      sexFormatter(item){
+        if(item.sex==0){
+          return '保密'
+        }
+        if(item.sex==1){
+          return 'ç”·'
+        }
+        if(item.sex==2){
+          return '女'
+        }
+      },
+
+      onPageChange(val) {
+        this.nowPage = val
+        this.getUserData()
+      },
+      onSizeChange(val) {
+        this.limit = val;
+        this.nowPage = 1;
+        this.getUserData()
+      },
+
+      getUserData(){
+        let json = {
+          conditions: JSON.stringify(this.conditions),
+          limit: this.limit,
+          page: this.nowPage
+        }
+
+        getTagUserApi(json).then(res=>{
+          this.tableData = res.list
+        })
+      },
+
+      filterNode(value, data) {
+        if (!value) return true;
+        return data.name.indexOf(value) !== -1;
+      },
 
       dialogToggle() {
         this.dialog.show = !this.dialog.show;
         if (!this.dialog.show) {
           this.dialogReset();
         }
+        /*if (this.tableData.length && this.tableData[0] == 0) { // 未初始化
+          this.getUserData();
+        }*/
       },
       dialogReset(callback) {
         this.$nextTick(()=>{
@@ -384,52 +240,27 @@
       },
 
       tagExpand(data, node, el) {
-        console.log(node)
+        //console.log(node)
         if (node.expanded) {
           this.tagExpanded.push(node.data.id)
         }
       },
 
       tagCollapse(data, node, el) {
-        console.log(node)
+        //console.log(node)
         if (node.expanded) {
           this.tagExpanded.splice(this.tagExpanded.findIndex(item => item == node.data.id), 1)
         }
       },
 
-      /*append(data) {
-        console.log(data)
-        const newChild = { id: id++, label: 'testtest', children: [] };
-        if (!data.children) {
-          this.$set(data, 'children', []);
-        }
-        data.children.push(newChild);
-      },
-
-      remove(node, data) {
-        console.log(node)
-        const parent = node.parent;
-        const children = parent.data.children || parent.data;
-        const index = children.findIndex(d => d.id === data.id);
-        children.splice(index, 1);
-      },*/
-
       getData() {
-        /*function addLable(data) {
-          data.forEach(val => {
-            val.label = val.name;
-            if (val.children && val.children.length) {
-              addLable(val.children)
-            }
-          })
-        };*/
         getTagApi().then(res => {
-          this.tableData = [{
+          this.treeDataOrigin = res;
+          this.treeData = [{
             children: res,
             cover: '',
             created_at: '',
             id: 0,
-            label: '所有标签',
             name: '所有标签',
             pid: 0,
             weight: 0,
@@ -450,7 +281,7 @@
         });
       },
 
-      onEdit(node,data,el) {
+      onEdit(node,data) {
         console.log(el)
         console.log(node)
         console.log(data)
@@ -469,6 +300,28 @@
       onSearch(){
         this.getData();
       },
+
+      conditionsChange(val){
+        console.log(val);
+        let arr = [];
+        if(val.length) {
+          val.forEach(v => {
+            arr.push(v[v.length - 1])
+          })
+          this.conditions = arr;
+          this.getUserData();
+        } else {
+          this.conditions = arr;
+          this.tableData = [];
+        }
+      },
+
+      exportExcel() {
+        let json = {
+          conditions: JSON.stringify(this.conditions),
+        }
+        exportExcelApi(`api/admin/advanced/search/export`, json, '标签用户列表');
+      }
     }
   }
 </script>
@@ -501,6 +354,12 @@
 
     .el-link {
       font-size: 12px;
+
+      &.cover-link {
+        margin-right: 10px;
+        line-height: 28px;
+      }
+
       &:hover:after {
         bottom: 2px;
       }
diff --git a/src/components/user/index.vue b/src/components/user/index.vue
index 6471171a..59b7b47a 100644
--- a/src/components/user/index.vue
+++ b/src/components/user/index.vue
@@ -1,65 +1,48 @@
 <template>
   <div class="user" v-loading="loading">
     <el-form ref="searchFrom" :model="searchFrom" label-width="80px" inline>
-          <el-form-item label="ID">
-            <el-input v-model="searchFrom.userId"></el-input>
-          </el-form-item>
-          <el-form-item label="昵称">
-            <el-input v-model="searchFrom.nickName"></el-input>
-          </el-form-item>
-          <el-form-item label="电话">
-            <el-input v-model="searchFrom.mobile"></el-input>
-          </el-form-item>
-          <el-form-item label="等级">
-            <el-input v-model="searchFrom.level"></el-input>
-          </el-form-item>
-          <el-form-item>
-            <div class="flexRow">
-              <el-button type="primary" plain @click="getUser">搜索</el-button>
-              <!--<el-button type="success" plain @click="syncUser">同步最新数据</el-button>-->
-            </div>
-          </el-form-item>
+      <el-form-item label="ID">
+        <el-input v-model="searchFrom.userId"></el-input>
+      </el-form-item>
+      <el-form-item label="昵称">
+        <el-input v-model="searchFrom.nickName"></el-input>
+      </el-form-item>
+      <el-form-item label="电话">
+        <el-input v-model="searchFrom.mobile"></el-input>
+      </el-form-item>
+      <el-form-item label="等级">
+        <el-input v-model="searchFrom.level"></el-input>
+      </el-form-item>
+      <!--<el-form-item label="标签">
+        <el-cascader
+          style="width: 320px" placeholder="选择标签" clearable @change="tagChange"
+          :options="options" :props="{ multiple: true, checkStrictly: true }"></el-cascader>
+      </el-form-item>-->
+      <el-form-item>
+        <div class="flexRow">
+          <el-button type="primary" plain @click="getUser">搜索</el-button>
+          <!--<el-button type="success" plain @click="syncUser">同步最新数据</el-button>-->
+        </div>
+      </el-form-item>
     </el-form>
     <el-table
       :data="userList"
       style="width: 100%">
-      <el-table-column
-        className="f-c"
-        label="用户">
+      <el-table-column className="f-c" label="用户">
         <template slot-scope="scope">
-          <img class="avatar" :src="scope.row.avatar">{{scope.row.nickname}}(ID:{{scope.row.user_id}})
+          <img class="avatar" :src="scope.row.avatar">{{scope.row.nickname}}<br>(ID:{{scope.row.user_id}})
         </template>
       </el-table-column>
-      <el-table-column
-        prop="mobile"
-        label="手机号">
-      </el-table-column>
-      <el-table-column
-        prop="created_at"
-        label="注册时间" sortable>
-      </el-table-column>
-      <el-table-column
-        prop="last_login_at"
-        label="最后登录时间" sortable>
-      </el-table-column>
-      <el-table-column
-        prop="baby_name"
-        label="宝宝名称" >
-      </el-table-column>
-      <el-table-column
-        prop="birthday"
-        label="宝宝生日" >
-      </el-table-column>
-      <el-table-column
-        prop="sex"
-        label="宝宝性别" :formatter="sexFormatter" >
-      </el-table-column>
-      <el-table-column
-        label="操作">
+      <el-table-column prop="mobile" label="手机号"></el-table-column>
+      <el-table-column prop="created_at" label="注册时间" width="105px" sortable></el-table-column>
+      <el-table-column prop="last_login_at" label="最后登录" width="105px" sortable></el-table-column>
+      <!--<el-table-column prop="last_login_at" label="最后登录时间" width="120px" sortable></el-table-column>-->
+      <el-table-column prop="baby_name" label="宝宝名称"></el-table-column>
+      <el-table-column prop="birthday" label="宝宝生日" width="105px"></el-table-column>
+      <el-table-column prop="sex" label="宝宝性别" width="80px" :formatter="sexFormatter"></el-table-column>
+      <el-table-column label="操作" width="100px">
         <template slot-scope="scope">
-          <el-button size="mini" plain type="primary" @click="goToDetail(scope.row.user_id)">
-            查看详情
-          </el-button>
+          <el-button size="mini" plain type="primary" @click="goToDetail(scope.row.user_id)">查看详情</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -123,6 +106,9 @@
       this.getUser()
     },
     methods:{
+      tagChange() {
+
+      },
       sexFormatter(item){
         if(item.sex==0){
           return '保密'
@@ -204,16 +190,10 @@
   }
 </script>
 
-<style scoped lang="less">
-  @import "../../util/public";
-  .avatar {
-    width: 50px;
-    margin-right: 5px;
-    border-radius: 50%;
-    height: 50px;
-  }
+<style lang="less">
+  /*@import "../../util/public";*/
   .user{
-    height: 100%;
+    /*height: 100%;*/
     overflow: auto;
     padding: 20px 0;
     .btn-content{
@@ -228,11 +208,3 @@
   }
 
 </style>
-<style>
-  .f-c > div {
-    display: flex !important;
-    flex-flow: row;
-    justify-content: flex-start;
-    align-items: center;
-  }
-</style>
diff --git a/src/components/userDetail/index.vue b/src/components/userDetail/index.vue
index ca828545..a8dc4c0e 100644
--- a/src/components/userDetail/index.vue
+++ b/src/components/userDetail/index.vue
@@ -97,24 +97,19 @@
               </el-table>
             </template>
           </el-table-column>
-          <el-table-column
-            prop="periods_title"
-            label="期数名称">
+          <el-table-column prop="periods_title" label="期数名称">
             <template slot-scope="scope">
               <router-link :to="{name:'class', query: { goods_id: scope.row.goods_id, periods_id: scope.row.periods_id}}" >
                 {{scope.row.periods_title}}
               </router-link>
             </template>
           </el-table-column>
-          <el-table-column
-            label="看课权限">
+          <el-table-column label="看课权限">
             <template slot-scope="scope">
               {{scope.row.is_view_course === 1 ? '是' : '否'}}
             </template>
           </el-table-column>
-          <el-table-column
-            className="f-c"
-            label="老师">
+          <el-table-column className="f-c" label="老师">
             <template slot-scope="scope">
               <router-link :to="`/teacher/${scope.row.teacher_id}`" >
                 <div class="f-c">
@@ -125,24 +120,11 @@
               </router-link>
             </template>
           </el-table-column>
-          <el-table-column
-            prop="join_num"
-            label="加入人数">
-          </el-table-column>
-          <el-table-column
-            prop="max_join_num"
-            label="最大加入人数">
-          </el-table-column>
-          <el-table-column
-            prop="start_at"
-            label="开课时间">
-          </el-table-column>
-          <el-table-column
-            prop="created_at"
-            label="创建时间">
-          </el-table-column>
-          <el-table-column
-            label="操作" width="400px">
+          <el-table-column prop="join_num" label="加入人数"></el-table-column>
+          <el-table-column prop="max_join_num" label="最大加入人数"></el-table-column>
+          <el-table-column prop="start_at" label="开课时间"></el-table-column>
+          <el-table-column prop="created_at" label="创建时间"></el-table-column>
+          <el-table-column label="操作" width="340px">
             <template slot-scope="scope">
               <el-button @click="showUser(scope.row)" size="mini" type="primary"> 班级成员</el-button>
               <el-button  size="mini" type="warning" v-if="!$store.state.readonly"  @click="editPrivilege(scope.row)" >编辑</el-button>
diff --git a/src/service/api.js b/src/service/api.js
index 73063854..2c9f3abc 100644
--- a/src/service/api.js
+++ b/src/service/api.js
@@ -1337,6 +1337,14 @@ export const postTagApi = function (json) {
 export const putTagApi = function (json) {
   return Vue.prototype.$put(`${_baseUrl}api/admin/category/${json.category_id}`, json)
 };
+// 根据标签搜索用户
+export const getTagUserApi = function (json) {
+  return Vue.prototype.$fetch(`${_baseUrl}api/admin/advanced/search`, json)
+};
+// 根据标签搜索用户
+export const TagUserApi = function (json) {
+  return Vue.prototype.$fetch(`${_baseUrl}api/admin/advanced/search`, json)
+};
 // 获取员工列表
 export const getStaffListApi = function (json) {
   return Vue.prototype.$fetch(`${_baseUrl}api/admin/staff/list`, json)
-- 
2.21.0