Explorar o código

Merge branch 'master' of http://git.dgtis.com/zhangningning/ali_ai_learn_web

zhangningning hai 1 mes
pai
achega
fbc1e8dcc0
Modificáronse 3 ficheiros con 104 adicións e 26 borrados
  1. 9 0
      src/api/my.js
  2. 89 20
      src/pages/Personal/BusinessManagement.vue
  3. 6 6
      src/pages/PersonalCenter.vue

+ 9 - 0
src/api/my.js

@@ -92,6 +92,11 @@ export function deptList(data = {}) {
 export function applyDept(data = {}) {
   return request.post('/dept',data)
 }
+// 删除部门
+export function deleteDept(data = {}) {
+  return request.del(`/dept/${data}`)
+}
+
 // 添加员工
 export function addSubAccount(data = {}) {
   return request.post('/employee/addSubAccount',data)
@@ -115,4 +120,8 @@ export function getAvailablePoints(data = {}) {
 // 删除员工
 export function deleteSubAccount(data = {}) {
   return request.del(`/employee/deleteSubAccount/${data}`)
+}
+// 查询员工
+export function employeeList(data = {}) {
+  return request.get('/employee/list',data)
 }

+ 89 - 20
src/pages/Personal/BusinessManagement.vue

@@ -8,16 +8,17 @@
           <div class="">新增</div>
         </div>
       </div>
-      <el-tree ref="treeRef2" :data="dataSource" node-key="id" default-expand-all :expand-on-click-node="false"
+      <el-tree ref="treeRef2" :data="dataSource" node-key="deptId" default-expand-all :expand-on-click-node="false"
         :props="defaultProps" @node-click="handleNodeClick">
         <template #default="{ node, data }">
           <div class="custom-tree-node flex-center-between flex_1">
             <div class="">{{ node.label }}</div>
-            <div class="flex-align-center custom-tree-node-right">
-              <img src="/src/assets/imgs/my/jia2@2x.png" alt="">
+            <div @click.stop="" v-if="data.isBtn" class="flex-align-center custom-tree-node-right">
+              <el-input v-model="input" placeholder="Please input" />
+              <img @click.stop="changeNode(data,index,0)" src="/src/assets/imgs/my/jia2@2x.png" alt="">
 
-              <img src="/src/assets/imgs/my/bianji@2x.png" alt="">
-              <img src="/src/assets/imgs/my/shanchu@2x.png" alt="">
+              <img  @click.stop="changeNode(data,index,1)" src="/src/assets/imgs/my/bianji@2x.png" alt="">
+              <img  @click.stop="changeNode(data,index,2)" src="/src/assets/imgs/my/shanchu@2x.png" alt="">
               <!-- <el-button type="primary" link @click="append(data)">
                 Append
               </el-button>
@@ -30,22 +31,29 @@
       </el-tree>
     </div>
     <div class="businessManagement-right">
-      <div class="">我的员工</div>
-      <div class="">
-        <div class=""></div>
+      <div class="title gap10">
+        <div class="line_vertical"></div>
+        <div class="">我的员工</div>
+      </div>
+      <div class="flex-center-around">
+        <div class="flex-align-center">
+          <img src="" alt="">
+          <input type="text" placeholder="请输入要搜索的员工手机号">
+        </div>
         <div class="flex-align-center">
-          <div class="">
-            <img src="" alt="">
+          <div class="flex-align-center" @click="">
+            <img src="/src/assets/imgs/my/jia1@2x.png" alt="">
+            <div class="">添加</div>
           </div>
         </div>
       </div>
       <ul class="list">
-        <li>
+        <li v-for="(item,index) in list" :key="index">
           <div class="list_left">
-            <el-avatar :size="52" :src="''" />
+            <el-avatar :size="52" :src="item.userAvatar" />
             <div class="list_left_con">
-              <div class="">苗子辰</div>
-              <div class="">米币:1000</div>
+              <div class="">{{ item.nickName }}</div>
+              <div class="">米币:{{ item.points || 0 }}</div>
             </div>
           </div>
           <div class="list_right">
@@ -60,13 +68,24 @@
           </div>
         </li>
       </ul>
+      <template v-if="list.length">
+        <Pagination :total="form.total" :page-size="form.pageSize" :current-page="form.pageNum"
+          @page-change="handlePageChange" />
+      </template>
+      <el-empty v-else :description="$t('common.empty')" />
     </div>
   </div>
 </template>
 <script setup lang="ts">
+
 import { ref, onMounted } from 'vue';
-import { deptList } from '@/api/my';
+
+import { deptList, employeeList,applyDept ,deleteDept} from '@/api/my';
+
+import Pagination from '@/components/Pagination.vue'
+
 const list = ref([]);
+
 const dataSource = ref([])
 
 const defaultProps = {
@@ -74,14 +93,64 @@ const defaultProps = {
   label: 'deptName',
 }
 
+const form = ref({
+  total: 0,
+  pageSize: 10,
+  pageNum: 1,
+})
+const handlePageChange = (pageNum) => {
+  form.value.pageNum = pageNum;
+  getemployeeList();
+} 
+
 const getList = async () => {
   let res = await deptList();
-  console.log(res.rows);
+  addFieldsToAllElements(res.rows);
   dataSource.value = res.rows;
+  getemployeeList();
+}
+
+const addFieldsToAllElements = (arr)=> {
+
+  // 遍历当前层级的每一个元素
+  arr.map(element => {
+    // 给当前元素添加字段
+    element.isBtn = false;
+    element.isIpt = false;
+
+    // 如果当前元素有children,并且children是数组,就递归处理下一层
+    if (element.children && Array.isArray(element.children)) {
+      addFieldsToAllElements(element.children);
+    }
+  });
+}
+
+const getemployeeList = async () => {
+  let res = await employeeList();
+  console.log(res.rows);
+  list.value = res.rows;
+  form.value.total = res.total;
+}
+
+const changeNode = async (item,index,type) => {
+  console.log(item,index,type)
+  if (type == 0) {
+    let res = await applyDept({
+      deptName:'测试部门1730',
+      parentId:item.deptId
+    })
+    getList()
+  } else if (type == 1) {
+
+  } else if (type == 2) {
+    let res = await deleteDept(item.deptId);
+    getList()
+  }
 }
 
 const handleNodeClick = (data) => {
-  console.log(data)
+  // console.log(data.isBtn = true)
+  data.isBtn = !data.isBtn
 }
 
 onMounted(() => {
@@ -204,15 +273,15 @@ onMounted(() => {
         border-radius: 4px;
         font-size: 14px;
         color: #2D71FF;
+
         img {
           width: 14px;
           height: 14px;
           margin-right: 4px;
         }
+
         &:last-child {
-          div {
-            color: #E43434;
-          }
+         color: #E43434;
         }
       }
     }

+ 6 - 6
src/pages/PersonalCenter.vue

@@ -259,12 +259,12 @@ const navList = ref([
     iconActive: '/src/assets/imgs/my/icon8a@2x.png',
     show:true,
   },
-  {
-    name: 'personalCenter.serviceManagement',
-    path: '/personal-center/business-management',
-    icon: '/src/assets/imgs/my/icon9@2x.png',
-    iconActive: '/src/assets/imgs/my/icon9a@2x.png'
-  }
+  // {
+  //   name: 'personalCenter.serviceManagement',
+  //   path: '/personal-center/business-management',
+  //   icon: '/src/assets/imgs/my/icon9@2x.png',
+  //   iconActive: '/src/assets/imgs/my/icon9a@2x.png'
+  // }
 ])
 
 const dialogVisible = ref(false)