heyujie
2022-04-11 999f9a47da7783388d0214b9f8d987ea2d9f2916
子账户管理新
1个文件已删除
5个文件已修改
1061 ■■■■■ 已修改文件
src/api/user copy.ts 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/user.ts 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personalCenter/components/BasicInfo.vue 374 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personalCenter/components/StepCard.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personalCenter/components/SubAccount.vue 504 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personalCenter/components/TreeBox.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/user copy.ts
File was deleted
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
  });
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, //是否展示解绑弹窗
      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;
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">
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)"
              >&#xe640;</span
            <span class="iconfont option" @click="editUser(scope.row)"
              >编辑</span
            >
            <!-- 解绑 -->
            <span class="iconfont option" @click="Untying(scope.row)"
              >&#xe617;</span
            >
            <!-- <span class="iconfont option" @click="Untying(scope.row)"
              >解绑</span
            > -->
          </template>
        </el-table-column>
      </el-table>
@@ -101,34 +107,9 @@
        ></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">
    <div class="add-title" @click="isShowAdd = false">
      <span class="iconfont">&#xe614;</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, //是否展示解绑弹窗
      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;
    },
    // 关闭解绑弹窗
    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;
    }
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 {};