| | |
| | | "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 |
| | | }); |
| | |
| | | "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 |
| | | }); |
| | |
| | | /* |
| | | 获取当前用户可见菜单 |
| | | */ |
| | | 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) |
| | | }); |
| | |
| | | |
| | | export const updataUser = (params: any) => { |
| | | return request({ |
| | | url: "/data/api-u/users/saveAuth", |
| | | url: "/saas/api-u/users/saveAuth", |
| | | method: "post", |
| | | data: params |
| | | }); |
| | |
| | | <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" |
| | |
| | | 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"> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getUserInfo, getAreas, getDic, entireUserInfo } from "@/api/login"; |
| | | |
| | | export default { |
| | | components: {}, |
| | | data() { |
| | |
| | | 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, //是否展示解绑弹窗 |
| | | 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, |
| | |
| | | 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", |
| | | }, |
| | | }; |
| | | }, |
| | |
| | | goto(i) { |
| | | this.activeIndex = i; |
| | | }, |
| | | 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) { |
| | |
| | | }, |
| | | }); |
| | | }, |
| | | |
| | | // 查询列表 |
| | | // 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; |
| | |
| | | }, |
| | | }, |
| | | mounted() {}, |
| | | created() { |
| | | getUserInfo().then((res) => { |
| | | this.userInfo = res.data; |
| | | this.userInfo.address = [this.userInfo.provinceId, this.userInfo.areaId]; |
| | | }); |
| | | this.getIndustrys(); |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | |
| | | margin-bottom: 30px; |
| | | } |
| | | .add-ruleForm::v-deep { |
| | | .el-form-item__label { |
| | | font-size: 14px; |
| | | color: #999999; |
| | | } |
| | | .area-title { |
| | | font-weight: 700; |
| | | color: #666666; |
| | |
| | | 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; |
| | |
| | | > |
| | | </el-tree> |
| | | </div> |
| | | <div class="tree-box"> |
| | | <!-- <div class="tree-box"> |
| | | <div class="t">数据权限</div> |
| | | <el-tree |
| | | :data="data2" |
| | |
| | | :props="defaultProps2" |
| | | > |
| | | </el-tree> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | |
| | | <div class="btns"> |
| | |
| | | |
| | | <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" |
| | |
| | | </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> |
| | | |
| | |
| | | }}</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"> |
| | |
| | | <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 |
| | | > |
| | | <!-- 解绑 --> |
| | | <span class="iconfont option" @click="Untying(scope.row)" |
| | | ></span |
| | | > |
| | | <!-- <span class="iconfont option" @click="Untying(scope.row)" |
| | | >解绑</span |
| | | > --> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | ></el-pagination> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 解绑弹窗 --> |
| | | <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"> |
| | |
| | | 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"> |
| | |
| | | </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, |
| | |
| | | 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, //是否展示解绑弹窗 |
| | | 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: [ |
| | |
| | | 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) { |
| | |
| | | |
| | | // 查询列表 |
| | | |
| | | save(){ |
| | | |
| | | }, |
| | | save() {}, |
| | | //分页功能 |
| | | handleSizeChange(size) { |
| | | this.size = size; |
| | |
| | | ]; |
| | | }, |
| | | |
| | | //关闭新增弹窗 |
| | | closeAddBox() { |
| | | this.isShowAdd = false; |
| | | }, |
| | | // 关闭解绑弹窗 |
| | | closeUnbindBox() { |
| | | this.isShowUnbind = false; |
| | |
| | | this.activeEquipment = equipment; |
| | | this.showJoin = true; |
| | | }, |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | } |
| | | .add-ruleForm::v-deep { |
| | | .el-input__inner { |
| | | width: 350px; |
| | | color: #3d3d3d; |
| | | border-radius: 4px; |
| | | border-color: #c0c5cc; |
| | |
| | | |
| | | .option { |
| | | margin-right: 10px; |
| | | font-size: 24px; |
| | | font-size: 14px; |
| | | color: rgb(0, 101, 255); |
| | | cursor: pointer; |
| | | } |
| | |
| | | <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]" --> |
| | |
| | | mounted() {}, |
| | | props: { |
| | | treeData: Array, |
| | | userMenus: Array, |
| | | defaultProps:Object, |
| | | }, |
| | | data() { |