From f81e83fca9cfca4d5149450433d9650b9dd59197 Mon Sep 17 00:00:00 2001
From: feige <791364011@qq.com>
Date: 星期三, 21 八月 2024 17:14:00 +0800
Subject: [PATCH] 增加了新的模块

---
 ruoyi-ui/src/api/clanManager/ancestor/index.js    |  138 +++++
 ruoyi-ui/src/views/clanManager/ancestor/index.vue |  749 +++++++++++++++++++++++++++
 ruoyi-ui/src/api/clanManager/clan/index.js        |  130 ++++
 ruoyi-ui/src/store/modules/user.js                |   11 
 ruoyi-ui/src/views/clanManager/clan/index.vue     |  534 +++++++++++++++++++
 ruoyi-ui/vue.config.js                            |    3 
 ruoyi-ui/src/views/system/family/index.vue        |    6 
 ruoyi-ui/src/views/system/user/index.vue          |    4 
 ruoyi-ui/src/router/index.js                      |   28 +
 ruoyi-ui/src/store/getters.js                     |    1 
 10 files changed, 1,600 insertions(+), 4 deletions(-)

diff --git a/ruoyi-ui/src/api/clanManager/ancestor/index.js b/ruoyi-ui/src/api/clanManager/ancestor/index.js
new file mode 100644
index 0000000..327f268
--- /dev/null
+++ b/ruoyi-ui/src/api/clanManager/ancestor/index.js
@@ -0,0 +1,138 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鎵�鏈変繚娲佹敹绾�
+export function listAncestor(query) {
+  return request({
+    url: '/ZfAncestor/all',
+    method: 'get',
+    params: query
+  })
+}
+export function listClan()
+{
+	return request({
+	  url: '/ZfClan/allZfInfo',
+	  method: 'get',
+	  
+	})
+}
+// 鏍规嵁id鏌ヨ鎵�鏈変繚娲佹敹绾宠缁嗕俊鎭�
+export function getCLeanInfo(id) {
+  return request({
+    url: '/zfClean/' + id,
+    method: 'get',
+
+  })
+}
+//鏂板淇℃伅
+export function addAncestor(data) {
+    return request({
+      url: '/ZfAncestor',
+      method: 'post',
+      data: data
+    })
+  }
+
+// 鍒犻櫎璧勪骇淇℃伅
+export function delClean(Ids) {
+  return request({
+    url: '/zfClean/' + Ids,
+    method: 'delete'
+  })
+}
+//淇敼淇℃伅
+export function updateClan(data) {
+  return request({
+    url: '/ZfClan',
+    method: 'put',
+    data: data
+  })
+}
+//涓婁紶鏂囦欢
+export function uploadPic(data) {
+  return request({
+    url: '/common/uploads',
+    method: 'post',
+    data: data
+  })
+}
+//涓嬭浇鏂囦欢
+export function download(data) {
+  return request({
+    url: '/common/downLoadFile',
+    method: 'get',
+    params: data,
+    responseType: 'blob'
+  })
+}
+
+//鎷垮埌绫诲埆
+export function getCategory()
+{
+  return request({
+    url: '/zDict/byId',
+    method: 'get',
+    params: {'id':22}
+  })
+}
+
+
+//瀵煎叆
+export function enload(data) {
+  return request({
+    url: '/zfClean/importData',
+    method: 'post',
+    data: data
+  })
+}
+
+// -------------------------------
+// 鍒嗕韩
+export function share(data) {
+  return request({
+    url: '/zfCleanShare/share',
+    method: 'post',
+    data: data
+  })
+}
+// 鏌ョ湅鍒嗕韩缁欒皝浜嗕粈涔堟暟鎹�
+export function shareToWho(data,query) {
+  return request({
+    url: '/zfCleanShare/getInfoByUserId',
+    method: 'post',
+    data: data,
+    params: query
+  })
+}
+// 鏌ョ湅璋佸垎浜簡鏁版嵁
+export function getWhoShare(query) {
+  return request({
+    url: '/zfCleanShare/getInfoByShareId',
+    method: 'get',
+    params: query
+  })
+}
+// 涓嬭浇鍒嗕韩鐨勬暟鎹�
+export function downShareData(data) {
+  return request({
+    url: '/zfCleanShare/downloadDate',
+    method: 'post',
+    data: data
+  })
+}
+// 鏀跺洖鍒嗕韩鏁版嵁
+export function deleteShareData(data) {
+  return request({
+    url: '/zfCleanShare/deleteInfoByUserId',
+    method: 'post',
+    data: data
+  })
+}
+// 灞曠ず涓嬭浇鐨勬暟鎹�
+export function showShareData(query) {
+  return request({
+    url: '/zfCleanShare/all',
+    method: 'get',
+    params: query
+  })
+}
diff --git a/ruoyi-ui/src/api/clanManager/clan/index.js b/ruoyi-ui/src/api/clanManager/clan/index.js
new file mode 100644
index 0000000..6f702e8
--- /dev/null
+++ b/ruoyi-ui/src/api/clanManager/clan/index.js
@@ -0,0 +1,130 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鎵�鏈変繚娲佹敹绾�
+export function listClan(query) {
+  return request({
+    url: '/ZfClan/all',
+    method: 'get',
+    params: query
+  })
+}
+// 鏍规嵁id鏌ヨ鎵�鏈変繚娲佹敹绾宠缁嗕俊鎭�
+export function getCLeanInfo(id) {
+  return request({
+    url: '/zfClean/' + id,
+    method: 'get',
+
+  })
+}
+//鏂板淇℃伅
+export function addClan(data) {
+    return request({
+      url: '/ZfClan',
+      method: 'post',
+      data: data
+    })
+  }
+
+// 鍒犻櫎璧勪骇淇℃伅
+export function delClean(Ids) {
+  return request({
+    url: '/zfClean/' + Ids,
+    method: 'delete'
+  })
+}
+//淇敼淇℃伅
+export function updateClan(data) {
+  return request({
+    url: '/ZfClan',
+    method: 'put',
+    data: data
+  })
+}
+//涓婁紶鏂囦欢
+export function uploadPic(data) {
+  return request({
+    url: '/common/uploads',
+    method: 'post',
+    data: data
+  })
+}
+//涓嬭浇鏂囦欢
+export function download(data) {
+  return request({
+    url: '/common/downLoadFile',
+    method: 'get',
+    params: data,
+    responseType: 'blob'
+  })
+}
+
+//鎷垮埌绫诲埆
+export function getCategory()
+{
+  return request({
+    url: '/zDict/byId',
+    method: 'get',
+    params: {'id':22}
+  })
+}
+
+
+//瀵煎叆
+export function enload(data) {
+  return request({
+    url: '/zfClean/importData',
+    method: 'post',
+    data: data
+  })
+}
+
+// -------------------------------
+// 鍒嗕韩
+export function share(data) {
+  return request({
+    url: '/zfCleanShare/share',
+    method: 'post',
+    data: data
+  })
+}
+// 鏌ョ湅鍒嗕韩缁欒皝浜嗕粈涔堟暟鎹�
+export function shareToWho(data,query) {
+  return request({
+    url: '/zfCleanShare/getInfoByUserId',
+    method: 'post',
+    data: data,
+    params: query
+  })
+}
+// 鏌ョ湅璋佸垎浜簡鏁版嵁
+export function getWhoShare(query) {
+  return request({
+    url: '/zfCleanShare/getInfoByShareId',
+    method: 'get',
+    params: query
+  })
+}
+// 涓嬭浇鍒嗕韩鐨勬暟鎹�
+export function downShareData(data) {
+  return request({
+    url: '/zfCleanShare/downloadDate',
+    method: 'post',
+    data: data
+  })
+}
+// 鏀跺洖鍒嗕韩鏁版嵁
+export function deleteShareData(data) {
+  return request({
+    url: '/zfCleanShare/deleteInfoByUserId',
+    method: 'post',
+    data: data
+  })
+}
+// 灞曠ず涓嬭浇鐨勬暟鎹�
+export function showShareData(query) {
+  return request({
+    url: '/zfCleanShare/all',
+    method: 'get',
+    params: query
+  })
+}
diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js
index 09a663d..527e438 100644
--- a/ruoyi-ui/src/router/index.js
+++ b/ruoyi-ui/src/router/index.js
@@ -109,6 +109,34 @@
       }
     ]
   },
+  {
+    path: '/ancestor',
+    component: Layout,
+    hidden: true,
+    redirect: 'noredirect',
+    children: [
+      {
+        path: 'ancestor',
+        component: () => import('@/views/clanManager/ancestor/index'),
+        name: 'ancestor',
+        meta: { title: '绁栧厛绠$悊', icon: 'user' }
+      }
+    ]
+  },
+  {
+    path: '/clan',
+    component: Layout,
+    hidden: true,
+    redirect: 'noredirect',
+    children: [
+      {
+        path: 'clan',
+        component: () => import('@/views/clanManager/clan/index'),
+        name: 'clan',
+        meta: { title: '瀹舵棌鍙风鐞�', icon: 'user' }
+      }
+    ]
+  },
   // {
   //   path: '',
   //   component: Layout,
diff --git a/ruoyi-ui/src/store/getters.js b/ruoyi-ui/src/store/getters.js
index 8adb1b6..2063daf 100644
--- a/ruoyi-ui/src/store/getters.js
+++ b/ruoyi-ui/src/store/getters.js
@@ -1,6 +1,7 @@
 const getters = {
   sidebar: state => state.app.sidebar,
   size: state => state.app.size,
+  clanId: state => state.user.clanId,
   device: state => state.app.device,
   dict: state => state.dict.dict,
   visitedViews: state => state.tagsView.visitedViews,
diff --git a/ruoyi-ui/src/store/modules/user.js b/ruoyi-ui/src/store/modules/user.js
index f6bd9ab..7428be4 100644
--- a/ruoyi-ui/src/store/modules/user.js
+++ b/ruoyi-ui/src/store/modules/user.js
@@ -6,6 +6,7 @@
     token: getToken(),
     name: '',
     avatar: '',
+	clanId: '',
     roles: [],
     permissions: []
   },
@@ -25,7 +26,10 @@
     },
     SET_PERMISSIONS: (state, permissions) => {
       state.permissions = permissions
-    }
+    },
+	SET_CLANID: (state, clanId) => {
+	  state.clanId = clanId
+	},
   },
 
   actions: {
@@ -63,9 +67,14 @@
           if (res.roles && res.roles.length > 0) { // 楠岃瘉杩斿洖鐨剅oles鏄惁鏄竴涓潪绌烘暟缁�
             commit('SET_ROLES', res.roles)
             commit('SET_PERMISSIONS', res.permissions)
+			
+		
           } else {
             commit('SET_ROLES', ['ROLE_DEFAULT'])
           }
+		 // console.log(res)
+		 // alert(res.user.clanId)
+		  	commit('SET_CLANID', res.user.clanId)
           commit('SET_NAME', user.userName)
           commit('SET_AVATAR', avatar)
           resolve(res)
diff --git a/ruoyi-ui/src/views/clanManager/ancestor/index.vue b/ruoyi-ui/src/views/clanManager/ancestor/index.vue
new file mode 100644
index 0000000..45d8572
--- /dev/null
+++ b/ruoyi-ui/src/views/clanManager/ancestor/index.vue
@@ -0,0 +1,749 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20">
+      <!--閮ㄩ棬鏁版嵁-->
+
+      <!--鐢ㄦ埛鏁版嵁-->
+      <el-col :span="20" :xs="24">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="鐢ㄦ埛鍚嶇О" prop="userName">
+            <el-input
+              v-model="queryParams.userName"
+              placeholder="璇疯緭鍏ョ敤鎴峰悕绉�"
+              clearable
+              style="width: 240px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鎵嬫満鍙风爜" prop="phonenumber">
+            <el-input
+              v-model="queryParams.phonenumber"
+              placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�"
+              clearable
+              style="width: 240px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鐘舵��" prop="status">
+            <el-select
+              v-model="queryParams.status"
+              placeholder="鐢ㄦ埛鐘舵��"
+              clearable
+              style="width: 240px"
+            >
+              <el-option
+                v-for="dict in dict.type.sys_normal_disable"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="鍒涘缓鏃堕棿">
+            <el-date-picker
+              v-model="dateRange"
+              style="width: 240px"
+              value-format="yyyy-MM-dd"
+              type="daterange"
+              range-separator="-"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+          </el-form-item>
+        </el-form>
+
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleAdd"
+              v-hasPermi="['system:user:add']"
+            >鏂板</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              size="mini"
+              :disabled="single"
+              @click="handleUpdate"
+              v-hasPermi="['system:user:edit']"
+            >淇敼</el-button>
+          </el-col>
+        
+          <el-col :span="1.5">
+            <el-button
+              type="info"
+              plain
+              icon="el-icon-upload2"
+              size="mini"
+              @click="handleImport"
+              v-hasPermi="['system:user:import']"
+            >瀵煎叆</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['system:user:export']"
+            >瀵煎嚭</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" ></right-toolbar>
+        </el-row>
+
+        <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="50" align="center" />
+          <el-table-column label="鐢ㄦ埛缂栧彿" align="center" key="id" prop="id"  />
+          <el-table-column label="鐢ㄦ埛鍚嶇О" align="center" key="name" prop="name"  :show-overflow-tooltip="true" />
+          <el-table-column label="瀹舵棌鍙�" align="center" key="clanName" prop="clanName"  :show-overflow-tooltip="true" />
+
+          <el-table-column label="鐢ㄦ埛瑙掕壊" align="center" key="roleName" prop="roleName" width="120" />
+      <el-table-column label="鎬у埆" align="center" key="sex" prop="sex"  width="120" >
+            <template slot-scope="scope">{{scope.row.sex==0? '濂�': '鐢�'}}</template>
+            
+          </el-table-column>
+      
+          <el-table-column
+            label="鎿嶄綔"
+            align="center"
+            width="160"
+            class-name="small-padding fixed-width"
+          >
+            <template slot-scope="scope" v-if="scope.row.userId !== 1">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['system:user:edit']"
+              >淇敼</el-button>
+              
+              <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
+                <el-button size="mini" type="text" icon="el-icon-d-arrow-right">鏇村</el-button>
+                <el-dropdown-menu slot="dropdown">
+                  <el-dropdown-item command="handleResetPwd" icon="el-icon-key"
+                    v-hasPermi="['system:user:resetPwd']">閲嶇疆瀵嗙爜</el-dropdown-item>
+                  <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check"
+                    v-hasPermi="['system:user:edit']">鍒嗛厤瑙掕壊</el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination
+          v-show="total>0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
+      </el-col>
+    </el-row>
+
+    <!-- 娣诲姞鎴栦慨鏀圭敤鎴烽厤缃璇濇 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body @close="handleClose">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+		<el-row>
+			
+			<el-col :span="12" >
+			  <el-form-item label="瀹舵棌鍚嶇О" prop="clanId">
+			    <el-select v-model="form.clanId"   placeholder="璇疯緭鍏ュ鏃忓悕绉�">
+			
+			<el-option
+			  v-for="item in famOptions"
+			  :key="item.clanId"
+			  :label="item.clanName"
+			  :value="item.clanId"
+			
+			></el-option>
+			
+			    </el-select>
+			
+			  </el-form-item>
+			</el-col>
+			<el-col :span="12">
+			  <el-form-item label="瑙掕壊" prop="role"  >
+			    <el-select v-model="form.roleId" placeholder="璇烽�夋嫨瑙掕壊" @change="changeRole">
+			
+			      <el-option
+			        v-for="item in roleOptions"
+			        :key="item.roleId"
+			        :label="item.roleName"
+			        :value="item.roleId"
+			        :disabled="item.status == 1"
+			      ></el-option>
+			    </el-select>
+			  </el-form-item>
+			</el-col>
+			
+		</el-row>
+        <el-row v-if="!isShowAn">
+          <el-col :span="12">
+            <el-form-item label="鐢ㄦ埛鍚嶇О" prop="name">
+              <el-input v-model="form.name" placeholder="璇疯緭鍏ョ敤鎴峰悕绉�" maxlength="30" />
+            </el-form-item>
+          </el-col>
+	<el-col :span="12">
+	  <el-form-item label="鐢ㄦ埛鎬у埆">
+	    <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+	      <el-option
+	        v-for="dict in dict.type.sys_user_sex"
+	        :key="dict.value"
+	        :label="dict.label"
+	        :value="dict.value"
+	      ></el-option>
+	    </el-select>
+	  </el-form-item>
+	</el-col>
+
+        </el-row>
+    <el-row v-if="isShowAn">
+          <el-col :span="12">
+            <el-form-item label="绁栧厛鍚嶇О" prop="name">
+              <el-input v-model="form.name" placeholder="璇疯緭鍏ョ鍏堝悕绉�" maxlength="30" />
+            </el-form-item>
+          </el-col>
+	<el-col :span="12">
+	  <el-form-item label="鐢ㄦ埛鎬у埆">
+	    <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+	      <el-option
+	        v-for="dict in dict.type.sys_user_sex"
+	        :key="dict.value"
+	        :label="dict.label"
+	        :value="dict.value"
+	      ></el-option>
+	    </el-select>
+	  </el-form-item>
+	</el-col>
+
+        </el-row>
+  <el-divider v-if="isShowAn" ></el-divider>
+        <el-row v-if="isShowAn">
+
+  <el-col :span="12">
+          <el-form-item label="绁栧厛鍚嶇О" prop="fname">
+            <el-input v-model="form.fname" placeholder="璇疯緭鍏ョ鍏堝悕绉�" maxlength="30" />
+          </el-form-item>
+        </el-col>
+  <el-col :span="12">
+    <el-form-item label="绁栧厛鎬у埆">
+      <el-select v-model="form.fsex" placeholder="璇烽�夋嫨鎬у埆">
+        <el-option
+          v-for="dict in dict.type.sys_user_sex"
+          :key="dict.value"
+          :label="dict.label"
+          :value="dict.value"
+        ></el-option>
+      </el-select>
+    </el-form-item>
+  </el-col>
+  
+
+        </el-row>
+  
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+
+
+  </div>
+</template>
+
+<script>
+import {listAncestor,listClan ,addAncestor} from "@/api/clanManager/ancestor/index"
+import { getIndividual,getInfoByFid,
+getAllInfo,listUser, getUser, delUser,
+ updateUserInfo,addUser, updateUser, getAllFamilys,resetUserPwd,
+ changeUserStatus, deptTreeSelect ,updateFM, updatePO, addPO} from "@/api/system/user";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "User",
+  dicts: ['sys_normal_disable', 'sys_user_sex'],
+  components: { Treeselect },
+  data() {
+    return {
+      // 淇敼閰嶅伓鏃剁殑鐢ㄦ埛id鍜宻ex
+      sex:'',
+      pOID:'',
+      a:undefined,
+      // 閬僵灞�
+      loading: true,
+      //瑙掕壊淇濆瓨
+      rt: undefined,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+	  isShowAn: false,
+      // 鎬绘潯鏁�
+      total: 0,
+      isshowMri: false,
+      isshowMar: false,
+      // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+      userList: null,
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 閮ㄩ棬鏍戦�夐」
+      deptOptions: undefined,
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 閮ㄩ棬鍚嶇О
+      deptName: undefined,
+      // 榛樿瀵嗙爜
+      initPassword: undefined,
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      //瀹跺涵鍙�
+      famiInfo:[],
+      fid: "鏃�",
+      // 宀椾綅閫夐」
+      postOptions: [],
+      // 瑙掕壊閫夐」
+      roleOptions: [
+		  {"roleId":4,"roleName":"绁栧厛"},{"roleId":2,"roleName":"瀹舵棌绠$悊鍛�"}
+	  ],
+	  famOptions:[],
+      // 琛ㄥ崟鍙傛暟
+	  cuid: undefined,
+	  orfid: undefined,
+	  ormid: undefined,
+      motherInfo:[],
+      fathorInfo:[],
+      allInfo:[],
+      allInfo2:[],
+      faid: 0,
+      maid: 0,
+      form: {},
+	  zinfid: undefined,
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
+      // 鐢ㄦ埛瀵煎叆鍙傛暟
+      upload: {
+        // 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛�
+        open: false,
+        // 寮瑰嚭灞傛爣棰橈紙鐢ㄦ埛瀵煎叆锛�
+        title: "",
+        // 鏄惁绂佺敤涓婁紶
+        isUploading: false,
+        // 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+        updateSupport: 0,
+        // 璁剧疆涓婁紶鐨勮姹傚ご閮�
+        headers: { Authorization: "Bearer " + getToken() },
+        // 涓婁紶鐨勫湴鍧�
+        url: process.env.VUE_APP_BASE_API + "/system/user/importData"
+      },
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: undefined,
+        role: undefined,
+        sex: undefined,
+  
+      },
+      // 鍒椾俊鎭�
+   
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        userName: [
+          { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+          { min: 2, max: 20, message: '鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿', trigger: 'blur' }
+        ],
+        nickName: [
+          { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        roleIds: [
+          { required: true, message: "鐢ㄦ埛瑙掕壊涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        isMyFamily: [
+          { required: true, message: "鏄惁澶栧珌涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        deptId: [
+          { required: true, message: "鐢ㄦ埛瑙掕壊涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+
+        password: [
+          { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+          { min: 5, max: 20, message: '鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿', trigger: 'blur' }
+        ],
+        email: [
+          {
+            type: "email",
+            message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+            trigger: ["blur", "change"]
+          }
+        ],
+        phonenumber: [
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+            trigger: "blur"
+          }
+        ]
+      }
+    };
+  },
+  watch: {
+    // 鏍规嵁鍚嶇О绛涢�夐儴闂ㄦ爲
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+    this.getList();
+	this.getFamOptions();
+    // this.getFamlilyInfo();
+    // this.getDeptTree();
+    // //鎷垮埌鑷繁瀹氫箟鐨勭敤鎴蜂俊鎭�
+    // this.getAllIn();
+    // this.getConfigKey("sys.user.initPassword").then(response => {
+    //   this.initPassword = response.msg;
+    // });
+  },
+  methods: {
+	changeRole(){
+		let fid = this.form.roleId
+		let _this = this
+		//绠$悊鍛�
+		if(fid==2)
+		{
+			this.isShowAn = false
+		}
+		else
+		{
+			this.isShowAn = true; 
+		}
+		return;
+	},
+	getFamOptions()
+	{
+		listClan().then(response =>{
+			console.log(this.famOptions)
+			this.famOptions = response.data
+		})
+	},
+    
+    // 鍏抽棴寮圭獥鍚�
+    handleClose(){
+      this.pOID = ''
+      this.allInfo2 = []
+      // this.reset();
+      // alert(this.pOID)
+    },
+
+
+
+    /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
+    getList() {
+      this.loading = true;
+	  //alert(this.queryParams.pageNum)
+      listAncestor(this.queryParams).then(response => {
+          this.userList = response.data.data;
+          console.log(response)
+          this.total = response.data.total;
+          this.loading = false;
+        }
+      );
+    },
+    /** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */
+    getDeptTree() {
+      deptTreeSelect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    // 绛涢�夎妭鐐�
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    // 鑺傜偣鍗曞嚮浜嬩欢
+    handleNodeClick(data) {
+      this.queryParams.deptId = data.id;
+      this.handleQuery();
+    },
+    // 鐢ㄦ埛鐘舵�佷慨鏀�
+    handleStatusChange(row) {
+      let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+      this.$modal.confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵').then(function() {
+        return changeUserStatus(row.userId, row.status);
+      }).then(() => {
+        this.$modal.msgSuccess(text + "鎴愬姛");
+      }).catch(function() {
+        row.status = row.status === "0" ? "1" : "0";
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+  
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+  
+        name: undefined,
+		fname: undefined,
+		fsex: undefined,
+        sex: undefined,
+		roleId: undefined,
+		clanId: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.queryParams.deptId = undefined;
+      this.$refs.tree.setCurrentKey(null);
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.userId);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    // 鏇村鎿嶄綔瑙﹀彂
+    handleCommand(command, row) {
+      switch (command) {
+        case "handleResetPwd":
+          this.handleResetPwd(row);
+          break;
+        case "handleAuthRole":
+          this.handleAuthRole(row);
+          break;
+        default:
+          break;
+      }
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.a = 1
+      this.reset();
+	    this.open = true;
+    //   getUser().then(response => {
+    //     this.postOptions = response.posts;
+    //     // this.roleOptions = response.roles;
+        
+		  // console.log(this.roleOptions,'roleOptionsroleOptionsroleOptions')
+		  // console.log("0-009888")
+    //     this.open = true;
+    //     this.title = "娣诲姞鐢ㄦ埛";
+    //     this.form.password = this.initPassword;
+    //   });
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.a = 2
+      this.pOID = row.userId
+      this.sex = row.sex
+    //  this.getSex();
+      this.reset();
+      const userId = row.userId || this.ids;
+	  this.cuid= row.userId || this.ids;
+      //  this.fid = response.data.familyId
+        //alert(this.fid)
+      getUser(userId).then(response => {
+        this.form = response.data;
+        console.log(response.data,'formformformformform')
+        console.log(this.form.spouseId,'浼翠荆id')
+        this.postOptions = response.posts;
+        this.roleOptions= []
+        this.roleOptions.push(response.roles[1])
+        this.roleOptions.push(response.roles[3])
+        // this.roleOptions = response.roles;
+        console.log(this.roleOptions,'roleOptionsroleOptionsroleOptions')
+        // this.$set(this.form, "postIds", response.postIds);
+        // this.$set(this.form, "roleIds", response.roleIds);
+       // alert(response.roleIds.length)
+        // if(response.roleIds.length!=0)
+        // this.rt = response.roleIds[0]
+        let _this = this
+
+     getIndividual(userId).then(response => {
+           //  alert(123)
+		   // console.log('++++++++-----0000((((((9999))))))')
+              console.log(response.data,'getIndividualgetIndividualgetIndividual')
+            if(response.data!=undefined)
+            {
+
+				_this.orfid = response.data.fatherId
+				_this.ormid = response.data.momId
+				//alert(response.data.roleId)
+
+			    _this.$set(_this.form,'fid',response.data.fatherId);
+				_this.$set(_this.form,'mid',response.data.momId);
+				_this.$set(_this.form,'isMyFamily',response.data.isMyFamily);
+				_this.$set(_this.form,'spouseId',response.data.spouseId);
+				if(response.data.roleId==3)
+					_this.$set(_this.form,'role',102);
+				else
+					_this.$set(_this.form,'role',response.data.roleId);
+			//  alert(_this.form.fid)
+			  _this.zinfid = response.data.userId
+			//  alert(78)
+              }
+          }
+        );
+
+        this.open = true;
+        this.title = "淇敼鐢ㄦ埛";
+        this.form.password = "";
+      });
+    },
+    /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
+    handleResetPwd(row) {
+      this.$prompt('璇疯緭鍏�"' + row.userName + '"鐨勬柊瀵嗙爜', "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        closeOnClickModal: false,
+        inputPattern: /^.{5,20}$/,
+        inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿"
+      }).then(({ value }) => {
+          resetUserPwd(row.userId, value).then(response => {
+            this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value);
+          });
+        }).catch(() => {});
+    },
+    /** 鍒嗛厤瑙掕壊鎿嶄綔 */
+    handleAuthRole: function(row) {
+      const userId = row.userId;
+      this.$router.push("/system/user-auth/role/" + userId);
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+
+      
+
+        let _this = this
+          let fm = {}
+		  console.log(this.form)
+ //          fm.userId = _this.zinfid;
+	// 	  fm.nickName = this.form.nickName
+	// 	  // alert(this.form.role)
+	// 	  fm.roleId = this.form.role
+	// 	  fm.sex = this.form.sex
+	// 	  // alert(fm.sex)
+	// 	  fm.status = this.form.status
+	// 	  fm.fid = this.form.fid
+	// 	  fm.mid = this.form.mid
+	// //	alert(this.form.isMyFamily)
+	// 	  fm.isMyFamily = this.form.isMyFamily=='1'?1:0
+
+	// 	  fm.spouseId = this.form.spouseId
+	// 	  fm.sysId = this.form.userId
+	// 	  fm.userName = this.form.userName
+ //      fm.remark = this.form.remark
+      // alert(fm.remark)
+
+		  console.log(fm,'fmfmfmfmfmfmfmfm')
+          if (valid) {
+            if (this.form.userId != undefined) {
+              updateUser(fm).then(response => {
+                  this.open = false;
+                   this.getList();
+                   // this.isshowMar = false
+                   // this.isshowMri = false
+              //   updateUserInfo(fm).then(response=>{
+                   this.$modal.msgSuccess("淇敼鎴愬姛");
+              //      this.open = false;
+              //      this.getList();
+              //      _this.rt = undefined
+              //      _this.fid = "鏃�"
+              //      this.isshowMar = false
+              //      this.isshowMri = false
+              //   })
+               });
+            } else {
+              addAncestor(this.form).then(response => {
+                this.$modal.msgSuccess("鏂板鎴愬姛");
+                this.open = false;
+                this.getList();
+				this.isShowAn = false
+               // _this.rt = undefined
+                // this.isshowMar = false
+                // this.isshowMri = false
+              });
+            }
+            }
+        
+       
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�').then(function() {
+        return delUser(userIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('system/user/export', {
+        ...this.queryParams
+      }, `user_${new Date().getTime()}.xlsx`)
+    },
+    /** 瀵煎叆鎸夐挳鎿嶄綔 */
+    handleImport() {
+      this.upload.title = "鐢ㄦ埛瀵煎叆";
+      this.upload.open = true;
+    },
+    /** 涓嬭浇妯℃澘鎿嶄綔 */
+    importTemplate() {
+      this.download('system/user/importTemplate', {
+      }, `user_template_${new Date().getTime()}.xlsx`)
+    },
+    // 鏂囦欢涓婁紶涓鐞�
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 鏂囦欢涓婁紶鎴愬姛澶勭悊
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "瀵煎叆缁撴灉", { dangerouslyUseHTMLString: true });
+      this.getList();
+    },
+    // 鎻愪氦涓婁紶鏂囦欢
+    submitFileForm() {
+      this.$refs.upload.submit();
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/clanManager/clan/index.vue b/ruoyi-ui/src/views/clanManager/clan/index.vue
new file mode 100644
index 0000000..6835b36
--- /dev/null
+++ b/ruoyi-ui/src/views/clanManager/clan/index.vue
@@ -0,0 +1,534 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
+
+      <el-form-item label="瀹舵棌鍙峰悕绉�" prop="roleKey">
+        <el-input
+          v-model="queryParams.clanName"
+          placeholder="璇疯緭鍏ュ鏃忓彿鍚嶇О"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+
+      </el-form-item>
+
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:role:add']"
+        >鏂板</el-button>
+      </el-col>
+
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:role:remove']"
+        >鍒犻櫎</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:role:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="roleList" :row-key="getRowId" @selection-change="handleSelectionChange">
+    <el-table-column type="selection" width="55"  align="center" />
+
+    <el-table-column fixed label="搴忓彿" sortable type="index" :index="(queryParams.pageNum-1)*queryParams.pageSize+1" width="100"/>
+    <el-table-column label="瀹舵棌鍙峰悕绉�" prop="clanName" sortable :show-overflow-tooltip="true" width="150" />
+
+      <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" >
+        <template slot-scope="scope"  v-if="scope.row.id !== 1">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:role:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:role:remove']"
+          >鍒犻櫎</el-button>
+
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀硅鑹查厤缃璇濇 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form  ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="瀹舵棌鍙峰悕绉�" prop="name">
+          <el-input v-model="form.clanName" placeholder="璇疯緭鍏ュ鏃忓彿鍚嶇О" @blur="chongf()"/>
+        </el-form-item>
+
+     <!--    <el-form-item label="鏈鎴愬憳"  prop="fid">
+           <el-select v-model="form.fid"  :disabled="ts" placeholder="璇烽�夋嫨" @change="handleChange">
+             <el-option
+               v-for="item in fatherInfo"
+               :key="item.id"
+               :label="item.label"
+               :value="item.id"
+             ></el-option>
+           </el-select> -->
+
+         </el-form-item>
+
+
+
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 鍒嗛厤瑙掕壊鏁版嵁鏉冮檺瀵硅瘽妗� -->
+
+  </div>
+</template>
+
+<script>
+import {listClan,addClan,updateClan} from "@/api/clanManager/clan/index"
+import {listFamily,addFam,findByFname,findInfoByFid,findInfo,updateFam,delFam} from "@/api/system/family"
+import { getRole, delRole, addRole, updateRole, dataScope, changeRoleStatus, deptTreeSelect } from "@/api/system/role";
+import { treeselect as menuTreeselect, roleMenuTreeselect } from "@/api/system/menu";
+import { getAllInfo} from "@/api/system/user";
+import {getRoot} from "@/api/root/index";
+
+export default {
+  name: "Role",
+  dicts: ['sys_normal_disable'],
+  data() {
+    return {
+      fatherInfo:[],
+      motherInfo:[],
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 瑙掕壊琛ㄦ牸鏁版嵁
+      roleList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏄惁鏄剧ず寮瑰嚭灞傦紙鏁版嵁鏉冮檺锛�
+      openDataScope: false,
+      menuExpand: false,
+      menuNodeAll: false,
+      deptExpand: true,
+      deptNodeAll: false,
+      ts: false,
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      // 鏁版嵁鑼冨洿閫夐」
+      dataScopeOptions: [
+        {
+          value: "1",
+          label: "鍏ㄩ儴鏁版嵁鏉冮檺"
+        },
+        {
+          value: "2",
+          label: "鑷畾鏁版嵁鏉冮檺"
+        },
+        {
+          value: "3",
+          label: "鏈儴闂ㄦ暟鎹潈闄�"
+        },
+        {
+          value: "4",
+          label: "鏈儴闂ㄥ強浠ヤ笅鏁版嵁鏉冮檺"
+        },
+        {
+          value: "5",
+          label: "浠呮湰浜烘暟鎹潈闄�"
+        }
+      ],
+      // 鑿滃崟鍒楄〃
+      menuOptions: [],
+      // 閮ㄩ棬鍒楄〃
+      deptOptions: [],
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        clanName: undefined,
+      
+      },
+      personInfos:[],
+      personInfos1:[],
+      // 琛ㄥ崟鍙傛暟
+      form: {
+		  clanId: undefined,
+		clanName: undefined,
+      },
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        clanName: [
+          { required: true, message: "瀹舵棌鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+ 
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getAllUser();
+  },
+  methods: {
+    chongf(){
+      //alert(2)
+      if(this.form.name!=""){
+      findByFname(this.form.name).then(response => {
+          console.log(response.data)
+       //   alert(response.data!=null)
+          if(response.data!=null)
+          {
+            this.$set(this.form,'name',"")
+            this.$modal.msgSuccess("瀹跺涵鍙峰凡缁忓瓨鍦紒")
+          }
+         
+
+      });
+      }
+    },
+    handleChange(){
+      let _this = this;
+     // this.form.mid = "112"
+   //  this.$set(this.form, 'mid', 112)
+
+     // alert(this.form.fid)
+      let id = Number(this.form.fid)
+        findInfoByFid(this.form.fid).then(response => {
+          console.log(response.data)
+          if(response.data!=null)
+          {
+            _this.$set(_this.form,'fid',undefined)
+            this.$modal.msgSuccess("鏈垚鍛樺凡缁忓缓绔嬪搴彿锛�")
+          }
+          //alert(this.personInfos[0].url)
+
+      });
+
+    },
+    getAllUser(){
+      getAllInfo().then(response=>{
+        let fams = response.data
+        let _this = this;
+        console.log(fams)
+        for(let i = 0; i < fams.length; i++)
+        {
+          if(fams[i].isMyFamily==1)
+          _this.fatherInfo.push({id:fams[i].userId,label:fams[i].nickName })
+
+          }
+      })
+    },
+    getRowId(row){
+      return row.clanId
+    },
+    /** 鏌ヨ瑙掕壊鍒楄〃 */
+    getList() {
+      this.loading = true;
+	 // alert(this.queryParams.pageNum)
+      listClan(this.queryParams).then(response => {
+		  console.log(response)
+          this.roleList = response.data.data;
+          this.total = response.data.total;
+          this.loading = false;
+        }
+      );
+    },
+    /** 鏌ヨ鑿滃崟鏍戠粨鏋� */
+    getMenuTreeselect() {
+      menuTreeselect().then(response => {
+        this.menuOptions = response.data;
+      });
+    },
+    // 鎵�鏈夎彍鍗曡妭鐐规暟鎹�
+    getMenuAllCheckedKeys() {
+      // 鐩墠琚�変腑鐨勮彍鍗曡妭鐐�
+      let checkedKeys = this.$refs.menu.getCheckedKeys();
+      // 鍗婇�変腑鐨勮彍鍗曡妭鐐�
+      let halfCheckedKeys = this.$refs.menu.getHalfCheckedKeys();
+      checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
+      return checkedKeys;
+    },
+    // 鎵�鏈夐儴闂ㄨ妭鐐规暟鎹�
+    getDeptAllCheckedKeys() {
+      // 鐩墠琚�変腑鐨勯儴闂ㄨ妭鐐�
+      let checkedKeys = this.$refs.dept.getCheckedKeys();
+      // 鍗婇�変腑鐨勯儴闂ㄨ妭鐐�
+      let halfCheckedKeys = this.$refs.dept.getHalfCheckedKeys();
+      checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
+      return checkedKeys;
+    },
+    /** 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戠粨鏋� */
+    getRoleMenuTreeselect(roleId) {
+      return roleMenuTreeselect(roleId).then(response => {
+        this.menuOptions = response.menus;
+        return response;
+      });
+    },
+    /** 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戠粨鏋� */
+    getDeptTree(roleId) {
+      return deptTreeSelect(roleId).then(response => {
+        this.deptOptions = response.depts;
+        return response;
+      });
+    },
+    // 瑙掕壊鐘舵�佷慨鏀�
+    handleStatusChange(row) {
+      let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+      this.$modal.confirm('纭瑕�"' + text + '""' + row.roleName + '"瑙掕壊鍚楋紵').then(function() {
+        return changeRoleStatus(row.roleId, row.status);
+      }).then(() => {
+        this.$modal.msgSuccess(text + "鎴愬姛");
+      }).catch(function() {
+        row.status = row.status === "0" ? "1" : "0";
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 鍙栨秷鎸夐挳锛堟暟鎹潈闄愶級
+    cancelDataScope() {
+      this.openDataScope = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      if (this.$refs.menu != undefined) {
+        this.$refs.menu.setCheckedKeys([]);
+      }
+      this.menuExpand = false,
+      this.menuNodeAll = false,
+      this.deptExpand = true,
+      this.deptNodeAll = false,
+      this.form = {
+        id: undefined,
+        name: undefined,
+
+        remark: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    // 鏇村鎿嶄綔瑙﹀彂
+    handleCommand(command, row) {
+      switch (command) {
+        case "handleDataScope":
+          this.handleDataScope(row);
+          break;
+        case "handleAuthUser":
+          this.handleAuthUser(row);
+          break;
+        default:
+          break;
+      }
+    },
+    // 鏍戞潈闄愶紙灞曞紑/鎶樺彔锛�
+    handleCheckedTreeExpand(value, type) {
+      if (type == 'menu') {
+        let treeList = this.menuOptions;
+        for (let i = 0; i < treeList.length; i++) {
+          this.$refs.menu.store.nodesMap[treeList[i].id].expanded = value;
+        }
+      } else if (type == 'dept') {
+        let treeList = this.deptOptions;
+        for (let i = 0; i < treeList.length; i++) {
+          this.$refs.dept.store.nodesMap[treeList[i].id].expanded = value;
+        }
+      }
+    },
+    // 鏍戞潈闄愶紙鍏ㄩ��/鍏ㄤ笉閫夛級
+    handleCheckedTreeNodeAll(value, type) {
+      if (type == 'menu') {
+        this.$refs.menu.setCheckedNodes(value ? this.menuOptions: []);
+      } else if (type == 'dept') {
+        this.$refs.dept.setCheckedNodes(value ? this.deptOptions: []);
+      }
+    },
+    // 鏍戞潈闄愶紙鐖跺瓙鑱斿姩锛�
+    handleCheckedTreeConnect(value, type) {
+      if (type == 'menu') {
+        this.form.menuCheckStrictly = value ? true: false;
+      } else if (type == 'dept') {
+        this.form.deptCheckStrictly = value ? true: false;
+      }
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.ts = false;
+     // this.getMenuTreeselect();
+      this.open = true;
+      this.title = "娣诲姞瀹舵棌鍙�";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+
+      this.reset();
+     // alert(row.fid)
+     // this.ts = true
+      //   this.$set(this.form, "fid",  row.fid);
+      this.$set(this.form, "clanId",  row.clanId);
+      this.$set(this.form, "clanName", row.clanName);
+      this.open = true;
+      this.title = "淇敼瀹舵棌鍙�";
+
+    },
+    /** 閫夋嫨瑙掕壊鏉冮檺鑼冨洿瑙﹀彂 */
+    dataScopeSelectChange(value) {
+      if(value !== '2') {
+        this.$refs.dept.setCheckedKeys([]);
+      }
+    },
+    /** 鍒嗛厤鏁版嵁鏉冮檺鎿嶄綔 */
+    handleDataScope(row) {
+      this.reset();
+      const deptTreeSelect = this.getDeptTree(row.roleId);
+      getRole(row.roleId).then(response => {
+        this.form = response.data;
+        this.openDataScope = true;
+        this.$nextTick(() => {
+          deptTreeSelect.then(res => {
+            this.$refs.dept.setCheckedKeys(res.checkedKeys);
+          });
+        });
+        this.title = "鍒嗛厤鏁版嵁鏉冮檺";
+      });
+    },
+    /** 鍒嗛厤鐢ㄦ埛鎿嶄綔 */
+    handleAuthUser: function(row) {
+      const roleId = row.roleId;
+      this.$router.push("/system/role-auth/user/" + roleId);
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm: function() {
+      let _this = this
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+        //  alert(this.form.id)
+          if (this.form.clanId != undefined) {
+          //  alert(this.form.name)
+           // this.form.menuIds = this.getMenuAllCheckedKeys();
+            updateClan(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+     
+              addClan(_this.form).then(response => {
+                this.$modal.msgSuccess("鏂板鎴愬姛");
+                this.open = false;
+                this.getList();
+              });
+           // }
+            // else
+            //   this.$modal.msgSuccess("瀹跺涵鍙峰凡缁忓瓨鍦ㄦ垨鑰呮湰鎴愬憳宸茬粡寤虹珛瀹跺涵鍙凤紒")
+         //}
+
+        }
+        }
+      });
+    },
+    /** 鎻愪氦鎸夐挳锛堟暟鎹潈闄愶級 */
+    submitDataScope: function() {
+      if (this.form.roleId != undefined) {
+        this.form.deptIds = this.getDeptAllCheckedKeys();
+        dataScope(this.form).then(response => {
+          this.$modal.msgSuccess("淇敼鎴愬姛");
+          this.openDataScope = false;
+          this.getList();
+        });
+      }
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const roleIds = row.id || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎瑙掕壊缂栧彿涓�"' + roleIds + '"鐨勬暟鎹」锛�').then(function() {
+        return delFam(roleIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('/ZfClan/export', {
+        ...this.queryParams
+      }, `family_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/ruoyi-ui/src/views/system/family/index.vue b/ruoyi-ui/src/views/system/family/index.vue
index a362c8a..33546cb 100644
--- a/ruoyi-ui/src/views/system/family/index.vue
+++ b/ruoyi-ui/src/views/system/family/index.vue
@@ -2,9 +2,9 @@
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
 
-      <el-form-item label="瀹跺涵鍚嶇О" prop="roleKey">
+      <el-form-item label="瀹跺涵鍚嶇О" prop="name">
         <el-input
-          v-model="queryParams.roleKey"
+          v-model="queryParams.name"
           placeholder="璇疯緭鍏ユ潈闄愬瓧绗�"
           clearable
           style="width: 240px"
@@ -286,6 +286,8 @@
     /** 鏌ヨ瑙掕壊鍒楄〃 */
     getList() {
       this.loading = true;
+	  let clanId = this.$store.state.user.clanId
+	  alert(clanId)
       listFamily().then(response => {
           this.roleList = response.data;
          // this.total = response.total;
diff --git a/ruoyi-ui/src/views/system/user/index.vue b/ruoyi-ui/src/views/system/user/index.vue
index 1ca6548..dc992d8 100644
--- a/ruoyi-ui/src/views/system/user/index.vue
+++ b/ruoyi-ui/src/views/system/user/index.vue
@@ -447,6 +447,7 @@
         pageSize: 10,
         userName: undefined,
         phonenumber: undefined,
+		clanId: undefined,
         status: undefined,
         deptId: undefined
       },
@@ -704,6 +705,9 @@
     /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
     getList() {
       this.loading = true;
+	 // alert(this.state.clanId)
+	// alert(this.state.name)
+	this.queryParams.clanId = this.$store.state.user.clanId
       listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
           this.userList = response.rows;
           console.log(this.userList,'userList')
diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js
index 339f1fb..17ab79b 100644
--- a/ruoyi-ui/vue.config.js
+++ b/ruoyi-ui/vue.config.js
@@ -30,13 +30,14 @@
   // webpack-dev-server 鐩稿叧閰嶇疆
   devServer: {
     host: '0.0.0.0',
+	// public: '192.168.1.2:8080', // 姝ゅ鏄嚜宸辩數鑴慖P鍦板潃锛�
     port: port,
     open: true,
     proxy: {
       // detail: https://cli.vuewww.bendudu.comjs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
       //target: `https://10.39.18.174:8080/`,
-	 //  target: `https://192.168.1.5:8080/`,
+	  // target: `https://192.168.1.3:8080/`,
        target: 'https://www.bendudu.com:8080/',
         changeOrigin: true,
         pathRewrite: {

--
Gitblit v1.9.1