From 9ec0ae766b3290264f7619e30298ced191e9a344 Mon Sep 17 00:00:00 2001
From: xulili <xulili@wisenergy.cn>
Date: Wed, 31 Mar 2021 12:22:06 +0800
Subject: [PATCH] index

---
 src/config/menu.js                |  12 +-
 src/page/accounts/statistical.vue | 363 +++++++++++++++++++++---------
 src/page/accounts/users.vue       |   2 +-
 src/page/index/index.vue          |  62 ++---
 src/style/menu.less               |  13 +-
 5 files changed, 285 insertions(+), 167 deletions(-)

diff --git a/src/config/menu.js b/src/config/menu.js
index 79926ec..cff185d 100644
--- a/src/config/menu.js
+++ b/src/config/menu.js
@@ -61,14 +61,14 @@ export const menuList = [
                 children: [
                     { name: '视频审核', icon: 'icon-video', color: 'index-blue', url: '/checkVideo' },
                     { name: '展板审核', icon: 'icon-screen', color: 'index-green', url: '/checkDisplay' },
-                    { name: '平台学习内容审核', icon: 'icon-magnifier', color: 'index-pink', url: '/checkLearn' },
+                    { name: '学习内容审核', icon: 'icon-magnifier', color: 'index-pink', url: '/checkLearn' },
                     { name: '账号禁用审核', icon: 'icon-disable', color: 'index-red', url: '/checkLearn' }
                 ]
             }
         ]
     },
     {
-        title: '单位用户管理',
+        name: '单位用户管理',
         icon: 'icon-headUser',
         avatar: 'user_head_picture.png',
         color: '',
@@ -81,7 +81,7 @@ export const menuList = [
                 color: '',
                 url: '',
                 children: [
-                    { label: '互动管理', icon: 'icon-interaction', color: 'index-purple', url: '/interactive' }
+                    { name: '互动管理', icon: 'icon-interaction', color: 'index-purple', url: '/interactive' }
                 ]
             },
             {
@@ -91,7 +91,7 @@ export const menuList = [
                 color: '',
                 url: '',
                 children: [
-                    { label: '账号管理', icon: 'icon-account', color: 'index-blue', url: '/unitAdmin' }
+                    { name: '账号管理', icon: 'icon-account', color: 'index-blue', url: '/unitAdmin' }
                 ]
             }
         ]
@@ -134,7 +134,7 @@ export const menuList = [
         avatar: 'statistics_head_picture.png',
         color: '',
         url: '',
-        menu: [
+        children: [
             {
                 name: '统计图表',
                 icon: '',
@@ -165,7 +165,7 @@ export const menuList = [
         avatar: 'system_head_picture.png',
         color: '',
         url: '',
-        menu: [
+        children: [
             {
                 name: '机构及信息管理',
                 icon: '',
diff --git a/src/page/accounts/statistical.vue b/src/page/accounts/statistical.vue
index 1748111..b305d32 100644
--- a/src/page/accounts/statistical.vue
+++ b/src/page/accounts/statistical.vue
@@ -1,125 +1,268 @@
 <template>
- <!-- 统计用户管理 -->
+  <!-- 统计用户管理 -->
   <div class="user-wrapper height100">
-      <div class="search-container">
-          <el-form :inline="true" :model="form">
-            <el-form-item>
-                <el-input
-                 v-model="form.user" 
-                 placeholder="请输入用户名"
-                 suffix-icon="el-icon-search"
-                ></el-input>
-            </el-form-item>
-             <el-form-item>
-               <el-select 
-                v-model="form.status" 
-                 placeholder="请选择账号状态"
-                clearable 
-               >
-                 <el-option
-                     v-for="item in options"
-                     :key="item.value"
-                     :label="item.label"
-                     :value="item.value"
-                    ></el-option>
-               </el-select>
-            </el-form-item>
-            <el-form-item>
-                <div class="btn-group">
-                   <el-button type="primary" @click="handleSubmit">查询</el-button>
-                   <el-button @click="handleReset">重置</el-button>
-                </div>     
-            </el-form-item>
-        </el-form>
-        <div class="page-tip">
-            <span class="page-tip-title">页面说明:</span>
-            <span class="page-tips">可按按照用户名及账号状态进行信息筛选。可新增统计账号,“*”为必填项。</span>
-        </div>
-      </div>
-      <div class="table-content">
+    <div class="search-container">
+      <el-form :inline="true" :model="form">
+        <el-form-item>
+          <el-input
+            v-model="form.userName"
+            placeholder="请输入用户名"
+            suffix-icon="el-icon-search"
+          ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-select
+            v-model="form.status"
+            placeholder="请选择账号状态"
+            clearable
+          >
+            <el-option
+              v-for="item in statusOption"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
           <div class="btn-group">
-               <el-button type="primary">新建统计账户</el-button>
+            <el-button type="primary" @click="handleSubmit">查询</el-button>
+            <el-button @click="handleReset">重置</el-button>
           </div>
-           <!-- <party-table :feildList="feildList" :list="list"></party-table> -->
-           <account-table
-            :feildList="feildList"
-            :list="list"
-            @action="handleAction"
-           />
-           <party-pagination/>
+        </el-form-item>
+      </el-form>
+      <div class="page-tip">
+        <span class="page-tip-title">页面说明:</span>
+        <span class="page-tips"
+          >可按按照用户名及账号状态进行信息筛选。可新增统计账号,“*”为必填项。</span
+        >
+      </div>
+    </div>
+    <div class="table-content">
+      <div class="btn-group">
+        <el-button type="primary">新建统计账户</el-button>
       </div>
-      <!-- <user-dialog/> -->
+      <account-table
+        :feildList="feildList"
+        :list="list"
+        @action="handleAction"
+      />
+      <party-pagination :page="page" @changePage="handleChangeCurrent" />
+    </div>
   </div>
 </template>
 <script>
-import { partyPagination } from '@/components/index'
-import accountTable from './components/accountTable'
-// import userDialog from './userDialog/index'
+import { partyPagination } from "@/components/index";
+import accountTable from "./components/accountTable";
+import msgDialog from "./msgDialog.vue";
 export default {
-    data(){
-        return{
-            form:{
-                user:'',
-                status:''
-            },
-            addForm:{
-
-            },
-            options:[
-               {label:'待激活',value:0},
-               {label:'活跃',value:1},
-               {label:'禁用待审核',value:2},
-               {label:'禁用',value:3},
-            ],
-            feildList:[
-                {prop:'username',label:'平台用户名'},
-                {prop:'org',label:'所在机构'},
-                {prop:'endTime',label:'到期时间'},
-                {prop:'type',label:'账号类型'},
-                {prop:'status',label:'账号状态'},
-                {prop:'',label:'操作',isEdit:true, width:280},
-            ],
-            list: [
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'}, 
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'}, 
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'}, 
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'},
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'}, 
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'}, 
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'}, 
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'},
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'}, 
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'}, 
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'}, 
-                { username: '丁晓晓', org:'北京市政府',type:'系统管理员',endTime:'永久有效', status:'活跃'}, 
-              ]
-        }
+  data() {
+    return {
+      form: {
+        userName: "",
+        status: "",
+        type: 5, //1.用户账号 2.平台单位单位管理员账号 3.机顶盒账号 4.运维账号 5. 统计账号
+      },
+      statusOption: [
+        { label: "活跃", value: 1 },
+        { label: "禁用", value: 2 },
+        { label: "待审核", value: 3 },
+      ],
+      feildList: [
+        { prop: "username", label: "统计用户名" },
+        { prop: "org", label: "所属单位" },
+        { prop: "exiredDate", label: "到期时间" },
+        { prop: "statusName", label: "账号状态" },
+        { prop: "", label: "操作", isEdit: true, width: 280 },
+      ],
+      list: [],
+      page: {
+        _index: 1,
+        _size: 10,
+        total: 0,
+      },
+      activeRow: {},
+      msgInfo: {},
+    };
+  },
+  components: {
+    partyPagination,
+    accountTable,
+    // addDialog,
+    // editDialog,
+    msgDialog,
+  },
+  mounted() {
+    this.getFirstPageList();
+  },
+  methods: {
+    handleSubmit() {
+        this.getFirstPageList();
     },
-    components:{ partyPagination, accountTable},
-    mounted(){
-
+    handleReset() {
+      this.form.userName = "";
+      this.form.user = "";
+      this.getFirstPageList();
     },
-    methods:{
-        handleSubmit(){
-
-        },
-        handleReset(){
-            this.form.user = ''
-        },
-        // 弹窗关闭
-        handleClose(){
-          this.$confirm('确认关闭?')
-          .then(_ => {
-            done();
-          })
-          .catch(_ => {});
+    getFirstPageList() {
+      this.page._index = 1;
+      this.getPageList();
+    },
+    getPageList() {
+      let requestParams = {};
+      requestParams._index = this.page._index;
+      requestParams._size = this.page._size;
+      requestParams.type = this.form.type;
+      if (this.form.userName) {
+        requestParams.userName = this.form.userName;
+      }
+      if (this.form.status) {
+        requestParams.status = this.form.status;
+      }
+      this.$https(
+        {
+          method: "get",
+          url: "tUser/getPageList",
+          authType: this.backToken,
         },
-        handleAction(params){
-            console.log(params.type)
-        }
-    }
-}
+        requestParams
+      )
+        .then((res) => {
+          if (res.status != 200) {
+            this.getResWithOutData();
+          } else {
+            if (res.data.resultCode == 200) {
+              this.list = res.data.data.records;
+              this.page._size = res.data.data.size;
+              this.page.total = res.data.data.total;
+            } else {
+              this.getResWithOutData();
+            }
+          }
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+    // 新增账号
+    handleAdd() {
+      this.$refs.addDialog.dialogVisible = true;
+    },
+    // 编辑
+    handleEdit() {
+      this.$refs.editDialog.id = this.activeRow.id;
+      this.$refs.editDialog.getDetailById();
+      this.$refs.editDialog.dialogVisible = true;
+    },
+    // 重置密码
+    handleResetPwd() {
+      let _this = this;
+      this.$https({
+        method: "put",
+        url: `tUser/resetPassword?userId=${this.activeRow.id}`,
+        authType: this.backToken,
+      })
+        .then((res) => {
+          if (res.status != 200) {
+            _this.$message.error(res.data.message);
+          } else {
+            if (res.data.resultCode == 200) {
+              _this.msgInfo = {
+                type: "success",
+                des: `用户${this.activeRow.userName}密码已重置!`,
+              };
+              _this.$refs.msgDilaog.dialogVisible = true;
+            } else {
+              _this.$message.error(res.data.message);
+            }
+          }
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+    // 禁用
+    handleDisable() {
+      let _this = this;
+      this.$https({
+        method: "put",
+        url: `tUser/disable?userId=${this.activeRow.id}`,
+        authType: this.backToken,
+      })
+        .then((res) => {
+          if (res.status != 200) {
+            _this.$message.error(res.data.message);
+          } else {
+            if (res.data.resultCode == 200) {
+              _this.msgInfo = {
+                type: "wait",
+                des: `${this.activeRow.userName}账号禁用申请已提交,待审核…`,
+              };
+              _this.$refs.msgDilaog.dialogVisible = true;
+              _this.getPageList();
+            } else {
+              _this.$message.error(res.data.message);
+            }
+          }
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+    // 激活
+    handleActive() {
+      let _this = this;
+      this.$https({
+        method: "put",
+        url: `tUser/disable?userId=${this.activeRow.id}`,
+        authType: this.backToken,
+      })
+        .then((res) => {
+          if (res.status != 200) {
+            _this.$message.error(res.data.message);
+          } else {
+            if (res.data.resultCode == 200) {
+              _this.msgInfo = {
+                type: "success",
+                des: `用户${this.activeRow.userName}账号激活成功!`,
+              };
+              _this.$refs.msgDilaog.dialogVisible = true;
+              _this.getPageList();
+            } else {
+              this.$message.error(res.data.message);
+            }
+          }
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+    handleAction(params) {
+      this.activeRow = params.row;
+      switch (params.type) {
+        case "enable":
+          this.handleActive();
+          break;
+        case "disable":
+          this.handleDisable();
+          break;
+        case "reset":
+          this.handleResetPwd();
+          break;
+        case "edit":
+          this.handleEdit();
+          break;
+        default:
+          break;
+      }
+    },
+    // 翻页
+    handleChangeCurrent() {
+      this.page._index = val;
+      this.getPageList();
+    },
+  },
+};
 </script>
 <style lang="less" scoped>
-
 </style>
\ No newline at end of file
diff --git a/src/page/accounts/users.vue b/src/page/accounts/users.vue
index 81621b4..1df1e4e 100644
--- a/src/page/accounts/users.vue
+++ b/src/page/accounts/users.vue
@@ -50,7 +50,7 @@ export default {
     return {
       form: {
         userName: "",
-        type: 1,  //1.用户账号 2.平台单位单位管理员账号 3.机顶盒账号 4.运维账号
+        type: 1,  //1.用户账号 2.平台单位单位管理员账号 3.机顶盒账号 4.运维账号 5. 统计账号
       },
       feildList: [
         { prop: "userName", label: "平台用户名" },
diff --git a/src/page/index/index.vue b/src/page/index/index.vue
index 000e889..8c220d8 100644
--- a/src/page/index/index.vue
+++ b/src/page/index/index.vue
@@ -17,9 +17,10 @@
                  <span class="panel-box-sub-title_name">{{subItem.name}}</span>
              </div>
              <ul >
-                 <li v-for="(menu,mIndex) in subItem.children" :key="mIndex" @click="goPage(menu.url)" :class="menu.color">
-
-                    <i :class="menu.icon" class="icon-memu"></i>
+                 <li v-for="(menu,mIndex) in subItem.children" :key="mIndex" @click="goPage(menu.url)" >
+                    <div :class="menu.color" class="icon-div">
+                         <i :class="menu.icon" class="icon-memu"></i>
+                    </div>
                     <span class="menu-label">{{menu.name}}</span>
                  </li>
              </ul>
@@ -54,37 +55,13 @@ export default{
 <style lang="less" scoped>
 @import '~@/style/menu.less';
 @media screen and (max-width: 1440px) {
-    .index-container{
-        width: 100%;
-    }
-   .panel-sub-box ul li{
-        padding:1.25vw 10px;
-        .menu-label{
-            font-size: 14px;
-        }
-   }
+    .index-container{  width: 100%; }
 }
 @media  (min-width:1441px) and (max-width:1680px)  {
-    .index-container{
-        width: 96%;
-    }
-     .panel-sub-box ul li{
-        padding:1.25vw 20px;
-        .menu-label{
-            font-size: 14px;
-        }
-   }
+    .index-container{ width: 96%;  }
 }
 @media  (min-width:1681px){
-   .index-container{
-        width: 92%;
-    }
-    .panel-sub-box ul li{
-        padding:1.25vw;
-        .menu-label{
-            font-size: 16px;
-        }
-   }
+   .index-container{ width: 92%; }
 }
 .index-container{
     margin: 0 auto;
@@ -163,6 +140,7 @@ export default{
             ul{
                 display: flex;
                 padding-top: 20px;
+                margin-left: -20px;
                 li{
                     width: 6.67vw;
                     height:8.33vw ;
@@ -171,26 +149,22 @@ export default{
                     text-align: center;
                     border-radius: 8px;
                     color: @font-color;
+                    cursor: pointer;
                     &:not(:first-child){
                         margin-left: 20px;
                     }
-                    &.active,&:hover{
-                        background: @party-red;
-                        box-shadow: 0 8px 4px -4px rgba(155,30,35,0.40);
-                        border-radius: 8px;
-                        border-radius: 8px;
-                        color: @party-white;
-                        cursor: pointer;
-                         color:@party-white;
+                    .icon-div{
+                        padding-top: 0.94vw;
+                        height: 4.79vw;
+                        width: 4.79vw;
+                        border-radius: 16px;
+                        margin: 0 auto 0.8vw ;
                     }
                     .icon-memu{
                         display: block;
-                        width: 2.08vw;
-                        height: 2.08vw;
-                        border-radius:50%;
-                        margin: 0 auto 0.83vw;
-                        background-image: linear-gradient(180deg, #FFF7E8 0%, #FFEDCC 100%);
-                        box-shadow: 0 4px 8px 0 rgba(0,0,0,0.20);
+                        margin: 0 auto;
+                        width: 2.91vw;
+                        height: 2.91vw;
                     }
                     .menu-label{                
                         line-height: 24px;
diff --git a/src/style/menu.less b/src/style/menu.less
index 3fcfff8..3bd77e5 100644
--- a/src/style/menu.less
+++ b/src/style/menu.less
@@ -2,7 +2,9 @@
 @party-pink:#CF6BA4;
 @party-blue:#5E8DE5;
 @party-green:#3DD0C6;
-@colors: purple, pink, blue, green,red;
+@party-red:#B93838;
+@colors: @party-purple, @party-pink, @party-blue, @party-green,@party-red;
+@colorName:-purple,-pink,-blue,-green,-red;
 @iconList:headContent,copyrights,classify,content,plane,
   pen,data,headAudit,video,screen,magnifier,disable,headUser,interaction,
   account,headStb,radio,message,gear,appversion,interface,headStatistics,overview,tend,
@@ -16,9 +18,8 @@
     }
   });
 
-  each(@colors, {
-    // .index-@{value}{
-    //     background-color: @{party-@{value}}
-    // }
-   
+  each(@colorName, {
+    .index@{value}{
+        background-color: extract(@colors, @index);
+    }  
   });
\ No newline at end of file
-- 
2.18.1