From 999f9a47da7783388d0214b9f8d987ea2d9f2916 Mon Sep 17 00:00:00 2001 From: heyujie <516346543@qq.com> Date: 星期一, 11 四月 2022 13:55:05 +0800 Subject: [PATCH] 子账户管理新 --- src/views/personalCenter/components/SubAccount.vue | 504 ++++++++++++++------------- src/views/personalCenter/components/TreeBox.vue | 13 /dev/null | 89 ---- src/views/personalCenter/components/BasicInfo.vue | 374 ++++++-------------- src/api/user.ts | 77 +-- src/views/personalCenter/components/StepCard.vue | 4 6 files changed, 411 insertions(+), 650 deletions(-) diff --git a/src/api/user copy.ts b/src/api/user copy.ts deleted file mode 100644 index 0cc8dbd..0000000 --- a/src/api/user copy.ts +++ /dev/null @@ -1,89 +0,0 @@ -import request from "@/scripts/httpRequest"; -import qs from "qs"; - -export const getUsers = () => { - return request({ - url: "/data/api-u/users/findAllUser", - method: "get" - }); -}; - - -export const getSysMenus = () => { - return request({ - url: "/data/api-u/sysmenus/tree", - method: "get" - }); -}; - -export const getUserMenus = (query: any) => { - return request({ - url: "/data/api-u/users/findById", - method: "post", - data: qs.stringify(query) - }); -}; - -export const updataUser = (params: any) => { - return request({ - url: "/data/api-u/users/saveAuth", - method: "post", - data: params - }); -}; - -export const uploadHeadPic = (params: any) => { - return request({ - url: "/data/api-u/users/uploadHeadPic", - method: "post", - data: params - }); -}; - -export const addUser = (params: any) => { - return request({ - url: "/data/api-u/users/add", - method: "post", - data: params - }); -}; - -export const updateUser = (params: any) => { - return request({ - url: "/data/api-u/users/updateProfile", - method: "post", - data: params - }); -}; - -export const updatePassword = (params: any) => { - return request({ - url: "/data/api-u/users/updatePwd", - method: "post", - data: qs.stringify(params) - }); -}; - -export const deleteUser = (params: any) => { - return request({ - url: "/data/api-u/users/delUser", - method: "post", - data: params - }); -}; - - -export const defHeadPics = () => { - return request({ - url: "/data/api-u/users/defHeadPics", - method: "get" - }); -}; - - -export const getRoles = () => { - return request({ - url: "/data/api-v/role/findAll", - method: "get" - }); -}; \ No newline at end of file diff --git a/src/api/user.ts b/src/api/user.ts index 3b089eb..7dcfbd4 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -9,9 +9,9 @@ "type": 0, "userId": "string" */ -export const getMembers = (params: any) => { +export const findUserList = (params: any) => { return request({ - url: "/data/api-u/user/findUserList", + url: "/saas/api-u/user/findUserList", method: "post", data: params }); @@ -24,30 +24,25 @@ "type": 0, "userId": "string" */ -export const getManager = (params: any) => { +export const getManagerList = (params: any) => { return request({ - url: "/data/api-u/user/findManagerList", + url: "/saas/api-u/user/findManagerList", method: "post", data: params }); }; -/* 淇濆瓨娉ㄥ唽浼氬憳 - "id": "string", - "areaId": 0, - "chPwdFirstLogin": true, - "companyName": "string", - "contact": "string", - "email": "string", - "industryId": "string", - "password": "string", - "trueName": "string", - "type": 0, - "userType": 0, - "username": "string" -*/ + +export const saveSubUser = (params: any) => { + return request({ + url: "/saas/api-u/user/saveSubUser", + method: "post", + data: params + }); +}; + export const saveMember = (params: any) => { return request({ - url: "/data/api-u/user/saveUser", + url: "/saas/api-u/user/saveUser", method: "post", data: params }); @@ -55,57 +50,41 @@ /* 鑾峰彇褰撳墠鐢ㄦ埛鍙鑿滃崟 */ -export const getCheckedMenu = () => { +export const getMenu = () => { return request({ - url: "/data/api-u/menu/tree", + url: "/saas/api-u/menu/tree", method: "get" }); }; -/* - 淇濆瓨杩愯惀鐢ㄦ埛 - "chPwdFirstLogin": true, - "email": "string", - "id": "string", - "menuIds": [ - "string" - ], - "isChangePwd": "string" - "password": "string", - "pos": "string", - "trueName": "string", - "username": "string" -*/ +export const getDataTree = (params) => { + return request({ + url: "/saas/api-u/user/dataTree", + method: "post", + data: params + }); +}; + export const saveManager = (params: any) => { return request({ - url: "/data/api-u/user/saveManager", + url: "/saas/api-u/user/saveManager", method: "post", data: params }); }; -/* - 鏌ヨ鐢ㄦ埛鐨勭粺璁′俊鎭細 - "userId": "", -*/ export const statisticByUser = (params: any) => { return request({ - url: "/data/api-s/statistic/statisticByUser", + url: "/saas/api-s/statistic/statisticByUser", method: "post", data: params }); }; -export const getSysMenus = () => { - return request({ - url: "/data/api-u/menu/tree", - method: "get" - }); -}; export const getUserMenus = (query: any) => { return request({ - url: "/data/api-u/users/findById", + url: "/saas/api-u/users/findById", method: "post", data: qs.stringify(query) }); @@ -113,7 +92,7 @@ export const updataUser = (params: any) => { return request({ - url: "/data/api-u/users/saveAuth", + url: "/saas/api-u/users/saveAuth", method: "post", data: params }); diff --git a/src/views/personalCenter/components/BasicInfo.vue b/src/views/personalCenter/components/BasicInfo.vue index 934021f..bd41987 100644 --- a/src/views/personalCenter/components/BasicInfo.vue +++ b/src/views/personalCenter/components/BasicInfo.vue @@ -1,9 +1,9 @@ <template> <div class="basic-info"> - <div class="head-name">瀛愯处鎴风鐞�</div> + <div class="head-name">鍩烘湰璧勬枡</div> <el-form - :model="ruleForm" + :model="userInfo" :rules="rules" :label-position="'left'" ref="ruleForm" @@ -11,60 +11,59 @@ class="add-ruleForm" > <div class="area-title">鍩烘湰淇℃伅</div> - <el-form-item label="鐢ㄦ埛鍚�" prop="name"> - <el-input v-model="ruleForm.name" style="width: 200px"></el-input> + <el-form-item label="鐢ㄦ埛鍚�" prop="username"> + <el-input v-model="userInfo.username" style="width: 200px"></el-input> </el-form-item> <el-form-item label="娉ㄥ唽绫诲瀷" prop="type"> - <el-radio v-model="ruleForm.type" label="1">涓汉</el-radio> - <el-radio v-model="ruleForm.type" label="2">鍏徃</el-radio> + <el-radio-group v-model="userInfo.userType"> + <el-radio :label="1">涓汉</el-radio> + <el-radio :label="2">鍏徃</el-radio> + </el-radio-group> </el-form-item> - <el-form-item label="濮撳悕" prop="name"> - <el-input v-model="ruleForm.name" style="width: 200px"></el-input> + <el-form-item label="濮撳悕" prop="trueName"> + <el-input v-model="userInfo.trueName" style="width: 200px"></el-input> </el-form-item> - <div class="area-title" style="margin-top: 60px">涓氬姟淇℃伅</div> + <div class="area-title" style="margin-top: 50px">涓氬姟淇℃伅</div> - <el-form-item label="琛屼笟搴旂敤" prop="region"> + <el-form-item label="琛屼笟搴旂敤" prop="industryId"> <el-select - v-model="ruleForm.region" - placeholder="璇烽�夋嫨琛屼笟搴旂敤" + v-model="userInfo.industryId" + placeholder="琛屼笟" style="width: 410px" > - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> + <el-option + v-for="(item, index) in industrys" + :label="item.name" + :value="item.id" + :key="index" + ></el-option> </el-select> </el-form-item> - <el-form-item label="鍏徃鍚嶇О" prop="region"> - <el-input v-model="ruleForm.name" style="width: 410px"></el-input> + <el-form-item label="鍏徃鍚嶇О" prop="companyName"> + <el-input + v-model="userInfo.companyName" + style="width: 410px" + ></el-input> </el-form-item> - <div class="area-title" style="margin-top: 60px">鑱旂郴淇℃伅</div> + <div class="area-title" style="margin-top: 50px">鑱旂郴淇℃伅</div> - <el-form-item label="鎵�鍦ㄥ湴鍖�" prop="region"> - <el-select - v-model="ruleForm.region" - placeholder="璇烽�夋嫨鍩庡競" - style="width: 200px; margin-right: 10px" - > - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> - </el-select> - <el-select - v-model="ruleForm.region" - placeholder="璇烽�夋嫨鍖�" - style="width: 200px" - > - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> - </el-select> + <el-form-item label="鎵�鍦ㄥ湴鍖�" prop="areaId"> + <el-cascader + v-model="userInfo.address" + :props="options" + style="width: 410px" + @change="handleChange" + ></el-cascader> </el-form-item> - <el-form-item label="鎵嬫満鍙�" prop="name"> - <el-input v-model="ruleForm.name" style="width: 200px"></el-input> + <el-form-item label="鎵嬫満鍙�" prop="phoneNum"> + <el-input v-model="userInfo.phoneNum" style="width: 200px"></el-input> </el-form-item> - <el-form-item label="閭" prop="name"> - <el-input v-model="ruleForm.password" style="width: 410px"></el-input> + <el-form-item label="閭" prop="email"> + <el-input v-model="userInfo.email" style="width: 410px"></el-input> </el-form-item> </el-form> <div class="btns"> @@ -74,6 +73,8 @@ </template> <script> +import { getUserInfo, getAreas, getDic, entireUserInfo } from "@/api/login"; + export default { components: {}, data() { @@ -85,23 +86,50 @@ page: 1, size: 10, //鍒嗛〉鐩稿叧 inputText: "", //杈撳叆妗嗗唴瀹� - activeStep: 0, + industrys: [], activeIndex: 0, total: 0, //鎬绘暟 - dataList: [ - { - name: "basic", - phone: "1121313232", - userType: "涓汉", - duration: "姘镐箙", - authList: "闆嗙兢1锛岄泦缇�2", - isBind: 1, - }, - ], isShowAdd: false, //鏄惁灞曠ず鏂板寮圭獥 isShowUnbind: false, //鏄惁灞曠ず瑙g粦寮圭獥 isShowRelate: false, unbindId: "", + options: { + lazy: true, + lazyLoad(node, resolve) { + // 鎳掑姞杞借妭鐐圭渷甯傛暟鎹� + const { level } = node; + let nodes; + console.log("鑺傜偣锛�", level, node); + getAreas({ parentId: level == 0 ? 0 : node.value }) + .then((json) => { + nodes = json.data.list; + nodes = nodes.map((item) => ({ + value: item.id, + label: item.name, + level: item.level, + leaf: level >= 1, + })); + resolve(nodes); + }) + .catch((err) => { + console.log(err); + }); + }, + }, + userInfo: { + userId: "", + username: "panlei", + phoneNum: "17610829559", + type: "", // 鏅�氱敤鎴疯繕鏄紑鍙戣�� + userType: 1, // 涓汉杩樻槸鍏徃 + industryId: "", + address: [110100, 110105], + areaId: "", + provinceId: "", + trueName: "", + companyName: "", + email: "", + }, durationArr: [ { value: 0, @@ -116,165 +144,19 @@ showQuit: false, //灞曠ず閫�鍑洪泦缇ょ殑寮圭獥 showJoin: false, //灞曠ず鍔犲叆闆嗙兢鐨勫脊绐� activeEquipment: null, //澶勭悊涓殑璁惧 - ruleForm: { - name: "", - region: "", - password: "", - date1: "", - date2: "", - delivery: false, - type: [], - resource: "", - desc: "", - authList: { - menuAuth: [], - dataAuth: [], - }, - }, rules: { - name: [ - { required: true, message: "璇疯緭鍏ユ椿鍔ㄥ悕绉�", trigger: "blur" }, - { min: 3, max: 5, message: "闀垮害鍦� 3 鍒� 5 涓瓧绗�", trigger: "blur" }, + trueName: [ + { required: true, message: "璇峰~鍐欑湡瀹炲鍚�", trigger: "change" }, ], - region: [ - { required: true, message: "璇烽�夋嫨娲诲姩鍖哄煙", trigger: "change" }, + username: [ + { required: true, message: "璇峰~鍐欑敤鎴峰悕", trigger: "change" }, ], - date1: [ - { - type: "date", - required: true, - message: "璇烽�夋嫨鏃ユ湡", - trigger: "change", - }, - ], - date2: [ - { - type: "date", - required: true, - message: "璇烽�夋嫨鏃堕棿", - trigger: "change", - }, + phoneNum: [ + { required: true, message: "璇峰~鍐欐墜鏈哄彿", trigger: "change" }, ], type: [ - { - type: "array", - required: true, - message: "璇疯嚦灏戦�夋嫨涓�涓椿鍔ㄦ�ц川", - trigger: "change", - }, + { required: true, message: "璇烽�夋嫨娉ㄥ唽绫诲瀷", trigger: "change" }, ], - resource: [ - { required: true, message: "璇烽�夋嫨娲诲姩璧勬簮", trigger: "change" }, - ], - desc: [{ required: true, message: "璇峰~鍐欐椿鍔ㄥ舰寮�", trigger: "blur" }], - }, - data1: [ - { - id: 1, - label: "涓�绾� 1", - children: [ - { - id: 4, - label: "浜岀骇 1-1", - children: [ - { - id: 9, - label: "涓夌骇 1-1-1", - }, - { - id: 10, - label: "涓夌骇 1-1-2", - }, - ], - }, - ], - }, - { - id: 2, - label: "涓�绾� 2", - children: [ - { - id: 5, - label: "浜岀骇 2-1", - }, - { - id: 6, - label: "浜岀骇 2-2", - }, - ], - }, - { - id: 3, - label: "涓�绾� 3", - children: [ - { - id: 7, - label: "浜岀骇 3-1", - }, - { - id: 8, - label: "浜岀骇 3-2", - }, - ], - }, - ], - defaultProps1: { - children: "children", - label: "label", - }, - data2: [ - { - id: 1, - label: "涓�绾� 1", - children: [ - { - id: 4, - label: "浜岀骇 1-1", - children: [ - { - id: 9, - label: "涓夌骇 1-1-1", - }, - { - id: 10, - label: "涓夌骇 1-1-2", - }, - ], - }, - ], - }, - { - id: 2, - label: "涓�绾� 2", - children: [ - { - id: 5, - label: "浜岀骇 2-1", - }, - { - id: 6, - label: "浜岀骇 2-2", - }, - ], - }, - { - id: 3, - label: "涓�绾� 3", - children: [ - { - id: 7, - label: "浜岀骇 3-1", - }, - { - id: 8, - label: "浜岀骇 3-2", - }, - ], - }, - ], - defaultProps2: { - children: "children", - label: "label", }, }; }, @@ -286,8 +168,27 @@ goto(i) { this.activeIndex = i; }, - save(){ - + async getIndustrys() { + let res = await getDic(); + if (res.success) { + this.industrys = res.data.dics; + } else { + console.log("鏌ヨ琛屼笟鍒楄〃澶辫触锛�"); + } + }, + save() { + this.userInfo.provinceId = this.userInfo.address[0]; + this.userInfo.areaId = this.userInfo.address[1]; + entireUserInfo(this.userInfo) + .then((res) => { + this.$notify.success("璐︽埛淇℃伅淇濆瓨鎴愬姛"); + }) + .catch((err) => { + if (err && err.status == 401) { + return; + } + this.$notify.error("璐︽埛淇℃伅淇濆瓨澶辫触"); + }); }, // 璺冲埌璁惧璇︽儏 checkDetail(row) { @@ -313,35 +214,6 @@ }, }); }, - - // 鏌ヨ鍒楄〃 - // searchingBtn() { - // let param = { - // page: this.page, - // size: this.size, - // // startTime: this.searchTime[0], - // // endTime: this.searchTime[1], - // inputText: this.inputText, - // }; - // findDevList(param) - // .then((res) => { - // this.dataList = res.data.list; - // //鏃堕棿鍒嗚鏄剧ず - - // this.dataList.forEach((item) => { - // item.installTime = item.installTime.split(" "); - // item.firstUseTime = item.firstUseTime.split(" "); - // }); - // this.total = res.data.total; - // if (res.data.total <= this.size) { - // this.page = 1; - // } - // }) - // .catch((err) => { - // console.log(err); - // }); - // }, - //鍒嗛〉鍔熻兘 handleSizeChange(size) { this.size = size; @@ -408,6 +280,13 @@ }, }, mounted() {}, + created() { + getUserInfo().then((res) => { + this.userInfo = res.data; + this.userInfo.address = [this.userInfo.provinceId, this.userInfo.areaId]; + }); + this.getIndustrys(); + }, }; </script> @@ -424,6 +303,10 @@ margin-bottom: 30px; } .add-ruleForm::v-deep { + .el-form-item__label { + font-size: 14px; + color: #999999; + } .area-title { font-weight: 700; color: #666666; @@ -439,31 +322,14 @@ height: 32px; line-height: 32px; } - .user-tree { - .el-form-item__content { - display: flex; - .tree-box { - .t { - height: 32px; - background: #f0f5fa; - border-radius: 3px 3px 0px 0px; - line-height: 32px; - text-align: center; - border-bottom: 1px solid #c0c5cc; - } - width: 336px; - height: 480px; - border: 1px solid #c0c5cc; - margin-right: 20px; - box-sizing: border-box; - } - } - } } .searchBtn { - width: 80px;margin-top: 38px; + width: 80px; + margin-top: 50px; height: 40px; line-height: 40px; + border-radius: 3px; + cursor: pointer; text-align: center; color: #fff; background: #0065ff; diff --git a/src/views/personalCenter/components/StepCard.vue b/src/views/personalCenter/components/StepCard.vue index 44af2a4..eb365d0 100644 --- a/src/views/personalCenter/components/StepCard.vue +++ b/src/views/personalCenter/components/StepCard.vue @@ -43,7 +43,7 @@ > </el-tree> </div> - <div class="tree-box"> + <!-- <div class="tree-box"> <div class="t">鏁版嵁鏉冮檺</div> <el-tree :data="data2" @@ -54,7 +54,7 @@ :props="defaultProps2" > </el-tree> - </div> + </div> --> </div> <div class="btns"> diff --git a/src/views/personalCenter/components/SubAccount.vue b/src/views/personalCenter/components/SubAccount.vue index 4721b7c..377c64f 100644 --- a/src/views/personalCenter/components/SubAccount.vue +++ b/src/views/personalCenter/components/SubAccount.vue @@ -10,7 +10,7 @@ <div class="cluster"> 鎺堟潈鏃堕暱 - <el-select v-model="cluster" placeholder="璇烽�夋嫨"> + <el-select v-model="timeLength" placeholder="璇烽�夋嫨"> <el-option v-for="item in durationArr" :key="item.value" @@ -23,8 +23,8 @@ </div> <div class="right"> - <div class="button searchBtn" @click="save">鎼滅储</div> - <div class="button resetBtn" @click="save">閲嶇疆</div> + <div class="button searchBtn" @click="findUserList">鎼滅储</div> + <div class="button resetBtn" @click="reset">閲嶇疆</div> </div> </div> @@ -55,19 +55,25 @@ }}</template> </el-table-column> <el-table-column - prop="name" + prop="trueName" label="濮撳悕" show-overflow-tooltip ></el-table-column> <el-table-column - prop="phone" - label="鎵嬫満鍙�" + prop="username" + label="鐢ㄦ埛鍚�" show-overflow-tooltip ></el-table-column> - <el-table-column prop="userType" label="鐢ㄦ埛绫诲瀷"></el-table-column> - <el-table-column prop="duration" label="鎺堟潈鏃堕暱"></el-table-column> - <el-table-column prop="authList" label="鏉冮檺"></el-table-column> - + <el-table-column prop="userType" label="鐢ㄦ埛绫诲瀷"> + <template slot-scope="scope"> + <span>{{ scope.row.userType == 1 ? "涓汉" : "鍏徃" }}</span> + </template> + </el-table-column> + <el-table-column prop="authDuration" label="鎺堟潈鏃堕暱" > </el-table-column> + <el-table-column prop="dataNames" label="鏉冮檺"> + + </el-table-column> + <el-table-column label="鐘舵��"> <template slot-scope="scope"> <div v-if="scope.row.isBind == 1" class="status green">宸茬粦瀹�</div> @@ -78,13 +84,13 @@ <el-table-column label="鎿嶄綔"> <template slot-scope="scope"> <!-- 缂栬緫 --> - <span class="iconfont option" @click="joinCluster(scope.row)" - ></span + <span class="iconfont option" @click="editUser(scope.row)" + >缂栬緫</span > <!-- 瑙g粦 --> - <span class="iconfont option" @click="Untying(scope.row)" - ></span - > + <!-- <span class="iconfont option" @click="Untying(scope.row)" + >瑙g粦</span + > --> </template> </el-table-column> </el-table> @@ -101,34 +107,9 @@ ></el-pagination> </div> </div> - - <!-- 瑙g粦寮圭獥 --> - <UnbindBox - @close="closeUnbindBox" - v-if="isShowUnbind" - :id="unbindId" - @reflash="reflash" - ></UnbindBox> - - <!-- 娣诲姞璁惧寮圭獥 --> - <!-- <AddBox @close="closeAddBox" v-if="isShowAdd"></AddBox> --> - - <!-- 閫�鍑洪泦缇ゅ脊绐� --> - <QuitClusterBox - :equipment="activeEquipment" - v-if="showQuit" - @close="showQuit = false" - ></QuitClusterBox> - - <!-- 鍔犲叆闆嗙兢寮圭獥 --> - <JoinClusterBox - :equipment="activeEquipment" - v-if="showJoin" - @close="showJoin = false" - ></JoinClusterBox> </div> <div class="sub-account" v-else-if="isShowAdd"> - <div class="add-title" @click="isShowAdd=false"> + <div class="add-title" @click="isShowAdd = false"> <span class="iconfont"></span> <span>娣诲姞瀛愯处鎴�</span> </div> @@ -140,57 +121,97 @@ label-width="100px" class="add-ruleForm" > - <el-form-item label="鐢ㄦ埛鍚�" prop="name"> - <el-input v-model="ruleForm.name"></el-input> + <el-form-item label="鐢ㄦ埛鍚�" prop="username"> + <el-input v-model="ruleForm.username" style="width: 350px"></el-input> </el-form-item> - <el-form-item label="瀵嗙爜" prop="name"> - <el-input v-model="ruleForm.password"></el-input> + <el-form-item label="瀵嗙爜" prop="password"> + <el-input v-model="ruleForm.password" style="width: 350px"></el-input> </el-form-item> - <el-form-item label="閲嶇疆瀵嗙爜" prop="delivery"> - <el-checkbox v-model="ruleForm.delivery">棣栨鐧婚檰淇敼瀵嗙爜</el-checkbox> + <el-form-item label="閲嶇疆瀵嗙爜" prop="isChangePwd"> + <el-checkbox v-model="ruleForm.isChangePwd" + >棣栨鐧婚檰淇敼瀵嗙爜</el-checkbox + > </el-form-item> - <el-form-item label="鐢ㄦ埛绫诲瀷" prop="type"> - <el-radio v-model="ruleForm.type" label="1">涓汉</el-radio> - <el-radio v-model="ruleForm.type" label="2">鍏徃</el-radio> + <el-form-item label="鐢ㄦ埛绫诲瀷" prop="userType"> + <el-radio v-model="ruleForm.userType" :label="1">涓汉</el-radio> + <el-radio v-model="ruleForm.userType" :label="2">鍏徃</el-radio> </el-form-item> - <el-form-item label="濮撳悕" prop="name"> - <el-input v-model="ruleForm.name"></el-input> + <el-form-item label="濮撳悕" prop="trueName"> + <el-input v-model="ruleForm.trueName" style="width: 350px"></el-input> </el-form-item> - <el-form-item label="閭" prop="name"> - <el-input v-model="ruleForm.password"></el-input> + <el-form-item label="閭" prop="email"> + <el-input v-model="ruleForm.email" style="width: 350px"></el-input> </el-form-item> - <el-form-item label="琛屼笟" prop="region"> - <el-select v-model="ruleForm.region" placeholder="璇烽�夋嫨琛屼笟"> - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> + <el-form-item label="琛屼笟" prop="industryId"> + <el-select + v-model="ruleForm.industryId" + placeholder="璇烽�夋嫨琛屼笟" + style="width: 350px" + > + <el-option + v-for="(item, index) in industrys" + :label="item.name" + :value="item.id" + :key="index" + ></el-option> </el-select> </el-form-item> - <el-form-item label="鍦板尯" prop="region"> - <el-select v-model="ruleForm.region" placeholder="璇烽�夋嫨琛屼笟"> - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> - </el-select> + <el-form-item label="鍦板尯" prop="address"> + <el-cascader + v-model="ruleForm.address" + :props="options" + style="width: 350px" + @change="handleChange" + ></el-cascader> </el-form-item> - <el-form-item label="鎺堟潈鏃堕暱" prop="region"> - <el-select v-model="ruleForm.region" placeholder="璇烽�夋嫨琛屼笟"> - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> + <el-form-item label="鎺堟潈鏃堕暱" prop="authDuration"> + <el-select + v-model="ruleForm.authDuration" + style="width: 350px" + placeholder="璇烽�夋嫨鎺堟潈鏃堕暱" + > + <el-option label="涓�骞�" value="涓�骞�"></el-option> + <el-option label="涓ゅ勾" value="涓ゅ勾"></el-option> </el-select> </el-form-item> - <el-form-item label="鐢ㄦ埛鏉冮檺" prop="authList" class="user-tree"> - - <TreeBox :defaultProp="defaultProp1" :treeData="data1"></TreeBox> - - - <TreeBox :defaultProp="defaultProp2" :treeData="data2"></TreeBox> + <el-form-item label="鐢ㄦ埛鏉冮檺" prop="menuIds" class="user-tree"> + <!-- <TreeBox :defaultProp="defaultProp" :treeData="sysMenus"></TreeBox> --> + <!-- <TreeBox :defaultProp="defaultProp2" :treeData="data2"></TreeBox> --> + <div class="tree-box"> + <div class="t">鑿滃崟鏉冮檺</div> + <el-tree + ref="treeMenus" + :data="sysMenus" + show-checkbox + default-expand-all + node-key="id" + :props="defaultProp" + :default-checked-keys="checkedMenu" + check-on-click-node + > + </el-tree> + </div> + <div class="tree-box"> + <div class="t">鏁版嵁鏉冮檺</div> + <el-tree + ref="treeData" + :data="DataTree" + show-checkbox + default-expand-all + node-key="id" + :props="defaultProp" + :default-checked-keys="checkedData" + check-on-click-node + > + </el-tree> + </div> </el-form-item> - </el-form> <div class="right"> - <div class="button searchBtn" @click="save">鎼滅储</div> - <div class="button resetBtn" @click="save">閲嶇疆</div> + <div class="button searchBtn" @click="saveSubUser">淇濆瓨</div> + <div class="button resetBtn" @click="resetUser">閲嶇疆</div> </div> </div> <div class="sub-account" v-else-if="isShowRelate"> @@ -207,18 +228,14 @@ </template> <script> -import UnbindBox from "@/views/equipmentManagement/equipmentDetail/components/UnbindBox"; -import QuitClusterBox from "@/views/equipmentManagement/equipmentList/components/QuitClusterBox"; -import JoinClusterBox from "@/views/equipmentManagement/equipmentList/components/JoinClusterBox"; +import { findUserList, saveSubUser, getMenu, getDataTree } from "@/api/user"; +import { getAreas, getDic } from "@/api/login"; + import Steps from "./Steps"; import StepsCard from "./StepCard"; import TreeBox from "./TreeBox"; export default { components: { - // AddBox, - UnbindBox, - QuitClusterBox, - JoinClusterBox, Steps, StepsCard, TreeBox, @@ -234,49 +251,66 @@ inputText: "", //杈撳叆妗嗗唴瀹� activeStep: 0, activeIndex: 0, + industrys: [], total: 0, //鎬绘暟 - dataList: [ - { - name: "basic", - phone: "1121313232", - userType: "涓汉", - duration: "姘镐箙", - authList: "闆嗙兢1锛岄泦缇�2", - isBind: 1, + options: { + lazy: true, + lazyLoad(node, resolve) { + // 鎳掑姞杞借妭鐐圭渷甯傛暟鎹� + const { level } = node; + let nodes; + getAreas({ parentId: level == 0 ? 0 : node.value }) + .then((json) => { + nodes = json.data.list; + nodes = nodes.map((item) => ({ + value: item.id, + label: item.name, + level: item.level, + leaf: level >= 1, + })); + resolve(nodes); + }) + .catch((err) => { + console.log(err); + }); }, - ], + }, + dataList: [], isShowAdd: false, //鏄惁灞曠ず鏂板寮圭獥 isShowUnbind: false, //鏄惁灞曠ず瑙g粦寮圭獥 - isShowRelate: false, + isShowRelate: false,isEditing: false, unbindId: "", durationArr: [ { - value: 0, + value: "涓�骞�", label: "涓�骞�", }, { - value: 1, + value: "涓ゅ勾", label: "涓ゅ勾", }, ], //鎵�灞為泦缇や笅鎷夋 - cluster: null, //閫変腑鐨勯泦缇ょ被鍨� + timeLength: null, //閫変腑鐨勬巿鏉冩椂闀� showQuit: false, //灞曠ず閫�鍑洪泦缇ょ殑寮圭獥 showJoin: false, //灞曠ず鍔犲叆闆嗙兢鐨勫脊绐� activeEquipment: null, //澶勭悊涓殑璁惧 + checkedData:[], + checkedMenu:[], ruleForm: { - name: "", - region: "", + id: "", + username: "", + userType: "", password: "", - date1: "", - date2: "", - delivery: false, - type: [], - resource: "", - desc: "", - authList: { - menuAuth: [], - dataAuth: [], - }, + trueName: "", + email: "", + isChangePwd: false, + industryId: "", + address: [], + authDuration: "", + areaId: "", + provinceId: "", + menuIds: [], + dataIds: [], }, rules: { name: [ @@ -286,153 +320,131 @@ region: [ { required: true, message: "璇烽�夋嫨娲诲姩鍖哄煙", trigger: "change" }, ], - date1: [ - { - type: "date", - required: true, - message: "璇烽�夋嫨鏃ユ湡", - trigger: "change", - }, - ], - date2: [ - { - type: "date", - required: true, - message: "璇烽�夋嫨鏃堕棿", - trigger: "change", - }, - ], - type: [ - { - type: "array", - required: true, - message: "璇疯嚦灏戦�夋嫨涓�涓椿鍔ㄦ�ц川", - trigger: "change", - }, - ], resource: [ { required: true, message: "璇烽�夋嫨娲诲姩璧勬簮", trigger: "change" }, ], desc: [{ required: true, message: "璇峰~鍐欐椿鍔ㄥ舰寮�", trigger: "blur" }], }, - data1: [ - { - id: 1, - label: "涓�绾� 1", - children: [ - { - id: 4, - label: "浜岀骇 1-1", - children: [ - { - id: 9, - label: "涓夌骇 1-1-1", - }, - { - id: 10, - label: "涓夌骇 1-1-2", - }, - ], - }, - ], - }, - { - id: 2, - label: "涓�绾� 2", - children: [ - { - id: 5, - label: "浜岀骇 2-1", - }, - { - id: 6, - label: "浜岀骇 2-2", - }, - ], - }, - { - id: 3, - label: "涓�绾� 3", - children: [ - { - id: 7, - label: "浜岀骇 3-1", - }, - { - id: 8, - label: "浜岀骇 3-2", - }, - ], - }, - ], - defaultProps1: { + sysMenus: [], + DataTree: [], + userInfo: {}, + curEditId: "", + defaultProp: { children: "children", - label: "label", - }, - data2: [ - { - id: 1, - label: "涓�绾� 1", - children: [ - { - id: 4, - label: "浜岀骇 1-1", - children: [ - { - id: 9, - label: "涓夌骇 1-1-1", - }, - { - id: 10, - label: "涓夌骇 1-1-2", - }, - ], - }, - ], - }, - { - id: 2, - label: "涓�绾� 2", - children: [ - { - id: 5, - label: "浜岀骇 2-1", - }, - { - id: 6, - label: "浜岀骇 2-2", - }, - ], - }, - { - id: 3, - label: "涓�绾� 3", - children: [ - { - id: 7, - label: "浜岀骇 3-1", - }, - { - id: 8, - label: "浜岀骇 3-2", - }, - ], - }, - ], - defaultProps2: { - children: "children", - label: "label", + label: "name", }, }; }, + created() { + this.userInfo = JSON.parse(sessionStorage.getItem("userInfo")); + this.findUserList(); + this.getIndustrys(); + this.fetchSysMenus(); + this.fetchDataTree(); + }, methods: { + fetchDataTree() { + getDataTree({ userId: this.userInfo.id }).then((res) => { + this.DataTree = res.data.dataTree; + }); + }, + fetchSysMenus() { + getMenu().then((rsp) => { + if (rsp && rsp.success) { + this.sysMenus = rsp.data.menus; + // this.userMenus = []; + } + }); + }, + editUser(row) { + this.isShowAdd = true; + this.isEditing = true + this.ruleForm.id = row.id; + this.ruleForm.username = row.username; + this.ruleForm.userType = row.userType; + this.ruleForm.password = row.password; + this.ruleForm.trueName = row.trueName; + this.ruleForm.email = row.email; + this.ruleForm.isChangePwd = row.isChangePwd; + this.ruleForm.industryId = row.industryId; + this.ruleForm.areaId =row.areaId ; + debugger + this.ruleForm.address = [ row.provinceId,row.areaId] + this.ruleForm.provinceId = row.provinceId; + this.ruleForm.authDuration = row.authDuration; + this.checkedMenu = row.menuIds; + this.checkedData = row.dataIds; + }, + resetUser() { + this.ruleForm = { + id: "", + username: "", + userType: "", + password: "", + trueName: "", + email: "", + isChangePwd: false, + industryId: "", + areaId: "", + provinceId: "", + authDuration: "", + }; + this.$refs.treeMenus.setCheckedKeys([]); + this.$refs.treeData.setCheckedKeys([]); + }, + async getIndustrys() { + let res = await getDic(); + if (res.success) { + this.industrys = res.data.dics; + } else { + console.log("鏌ヨ琛屼笟鍒楄〃澶辫触锛�"); + } + }, + saveSubUser() { + this.ruleForm.menuIds = this.$refs.treeMenus.getCheckedKeys(); + this.ruleForm.dataIds = this.$refs.treeData.getCheckedKeys(); + let json = { + id: this.isEditing? this.ruleForm.id:"", + username: this.ruleForm.username, + password: this.ruleForm.password, + isChangePwd: this.ruleForm.isChangePwd, + userType: this.ruleForm.userType, + trueName: this.ruleForm.trueName, + email: this.ruleForm.email, + industryId: this.ruleForm.industryId, + areaId: this.ruleForm.address[1], + authDuration: this.ruleForm.authDuration, + menuIds: this.ruleForm.menuIds, + dataIds: this.ruleForm.dataIds, + }; + debugger + saveSubUser(json).then((res) => { + debugger; + }); + }, + findUserList() { + findUserList({ + inputText: this.inputText, + page: this.page, + size: this.size, + }).then((res) => { + if (res.success) { + this.dataList = res.data.dataList; + } + }); + }, goback() { - this.isShowAdd=false + this.isShowAdd = false; + this.isEditing =false this.isShowRelate = false; this.activeIndex = 0; }, goto(i) { this.activeIndex = i; + }, + reset() { + this.inputText = ""; + this.timeLength = null; }, // 璺冲埌璁惧璇︽儏 checkDetail(row) { @@ -460,10 +472,8 @@ }, // 鏌ヨ鍒楄〃 - - save(){ - }, + save() {}, //鍒嗛〉鍔熻兘 handleSizeChange(size) { this.size = size; @@ -498,10 +508,6 @@ ]; }, - //鍏抽棴鏂板寮圭獥 - closeAddBox() { - this.isShowAdd = false; - }, // 鍏抽棴瑙g粦寮圭獥 closeUnbindBox() { this.isShowUnbind = false; @@ -528,9 +534,6 @@ this.activeEquipment = equipment; this.showJoin = true; }, - }, - mounted() { - }, }; </script> @@ -561,7 +564,6 @@ } .add-ruleForm::v-deep { .el-input__inner { - width: 350px; color: #3d3d3d; border-radius: 4px; border-color: #c0c5cc; @@ -771,7 +773,7 @@ .option { margin-right: 10px; - font-size: 24px; + font-size: 14px; color: rgb(0, 101, 255); cursor: pointer; } diff --git a/src/views/personalCenter/components/TreeBox.vue b/src/views/personalCenter/components/TreeBox.vue index 8ee0c96..e5cba90 100644 --- a/src/views/personalCenter/components/TreeBox.vue +++ b/src/views/personalCenter/components/TreeBox.vue @@ -1,16 +1,18 @@ <template> <div class="tree-box"> - <div class="t">鏁版嵁鏉冮檺</div> + <div class="t">鑿滃崟鏉冮檺</div> <el-tree :data="treeData" show-checkbox - :default-expand-all="true" + default-expand-all node-key="id" :props="defaultProps" + :default-checked-keys="userMenus" + check-on-click-node > </el-tree> - <!-- :default-checked-keys="[5]" --> - <!-- :default-expanded-keys="[2, 3]" --> + <!-- :default-checked-keys="[5]" --> + <!-- :default-expanded-keys="[2, 3]" --> </div> </template> @@ -20,7 +22,8 @@ mounted() {}, props: { treeData: Array, - defaultProps:Object, + userMenus: Array, + defaultProps: Object, }, data() { return {}; -- Gitblit v1.8.0