tangning %!s(int64=3) %!d(string=hai) anos
pai
achega
d7644900de

+ 145 - 13
src/assets/icon/demo_index.html

@@ -2,7 +2,7 @@
 <html>
 <head>
   <meta charset="utf-8"/>
-  <title>IconFont Demo</title>
+  <title>iconfont Demo</title>
   <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico" type="image/x-icon"/>
   <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01EYTRnJ297D6vehehJ_!!6000000008020-55-tps-64-64.svg"/>
   <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
@@ -13,10 +13,33 @@
   <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
   <!-- 代码高亮 -->
   <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
+  <style>
+    .main .logo {
+      margin-top: 0;
+      height: auto;
+    }
+
+    .main .logo a {
+      display: flex;
+      align-items: center;
+    }
+
+    .main .logo .sub-title {
+      margin-left: 0.5em;
+      font-size: 22px;
+      color: #fff;
+      background: linear-gradient(-45deg, #3967FF, #B500FE);
+      -webkit-background-clip: text;
+      -webkit-text-fill-color: transparent;
+    }
+  </style>
 </head>
 <body>
   <div class="main">
-    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">&#xe86b;</a></h1>
+    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
+      <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
+      
+    </a></h1>
     <div class="nav-tabs">
       <ul id="tabs" class="dib-box">
         <li class="dib active"><span>Unicode</span></li>
@@ -32,6 +55,36 @@
           <ul class="icon_lists dib-box">
           
             <li class="dib">
+              <span class="icon iconfont">&#xe6e2;</span>
+                <div class="name">fire_role_management</div>
+                <div class="code-name">&amp;#xe6e2;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe6e0;</span>
+                <div class="name">fire_organization</div>
+                <div class="code-name">&amp;#xe6e0;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe6a0;</span>
+                <div class="name">fire_home_study</div>
+                <div class="code-name">&amp;#xe6a0;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe6a1;</span>
+                <div class="name">fire_home_vr</div>
+                <div class="code-name">&amp;#xe6a1;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe69f;</span>
+                <div class="name">collect</div>
+                <div class="code-name">&amp;#xe69f;</div>
+              </li>
+          
+            <li class="dib">
               <span class="icon iconfont">&#xe695;</span>
                 <div class="name">fire_mic_off</div>
                 <div class="code-name">&amp;#xe695;</div>
@@ -188,24 +241,20 @@
 
           <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
           <ul>
-            <li>兼容性最好,支持 IE6+,及所有现代浏览器。</li>
             <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
-            <li>但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。</li>
+            <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
           </ul>
           <blockquote>
-            <p>注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式</p>
+            <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
           </blockquote>
           <p>Unicode 使用步骤如下:</p>
           <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
 <pre><code class="language-css"
 >@font-face {
   font-family: 'iconfont';
-  src: url('iconfont.eot');
-  src: url('iconfont.eot?#iefix') format('embedded-opentype'),
-      url('iconfont.woff2') format('woff2'),
-      url('iconfont.woff') format('woff'),
-      url('iconfont.ttf') format('truetype'),
-      url('iconfont.svg#iconfont') format('svg');
+  src: url('iconfont.woff2?t=1639981610282') format('woff2'),
+       url('iconfont.woff?t=1639981610282') format('woff'),
+       url('iconfont.ttf?t=1639981610282') format('truetype');
 }
 </code></pre>
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@@ -232,6 +281,51 @@
         <ul class="icon_lists dib-box">
           
           <li class="dib">
+            <span class="icon iconfont iconfire_role_management"></span>
+            <div class="name">
+              fire_role_management
+            </div>
+            <div class="code-name">.iconfire_role_management
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconfire_organization"></span>
+            <div class="name">
+              fire_organization
+            </div>
+            <div class="code-name">.iconfire_organization
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconfire_home_study"></span>
+            <div class="name">
+              fire_home_study
+            </div>
+            <div class="code-name">.iconfire_home_study
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconfire_home_vr"></span>
+            <div class="name">
+              fire_home_vr
+            </div>
+            <div class="code-name">.iconfire_home_vr
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconcollect"></span>
+            <div class="name">
+              collect
+            </div>
+            <div class="code-name">.iconcollect
+            </div>
+          </li>
+          
+          <li class="dib">
             <span class="icon iconfont iconfire_mic_off"></span>
             <div class="name">
               fire_mic_off
@@ -464,10 +558,8 @@
         <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
         <p>与 Unicode 使用方式相比,具有如下特点:</p>
         <ul>
-          <li>兼容性良好,支持 IE8+,及所有现代浏览器。</li>
           <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
           <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
-          <li>不过因为本质上还是使用的字体,所以多色图标还是不支持的。</li>
         </ul>
         <p>使用步骤如下:</p>
         <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
@@ -487,6 +579,46 @@
           
             <li class="dib">
                 <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconfire_role_management"></use>
+                </svg>
+                <div class="name">fire_role_management</div>
+                <div class="code-name">#iconfire_role_management</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconfire_organization"></use>
+                </svg>
+                <div class="name">fire_organization</div>
+                <div class="code-name">#iconfire_organization</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconfire_home_study"></use>
+                </svg>
+                <div class="name">fire_home_study</div>
+                <div class="code-name">#iconfire_home_study</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconfire_home_vr"></use>
+                </svg>
+                <div class="name">fire_home_vr</div>
+                <div class="code-name">#iconfire_home_vr</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconcollect"></use>
+                </svg>
+                <div class="name">collect</div>
+                <div class="code-name">#iconcollect</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
                   <use xlink:href="#iconfire_mic_off"></use>
                 </svg>
                 <div class="name">fire_mic_off</div>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 25 - 7
src/assets/icon/iconfont.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 1
src/assets/icon/iconfont.js


+ 35 - 0
src/assets/icon/iconfont.json

@@ -6,6 +6,41 @@
   "description": "",
   "glyphs": [
     {
+      "icon_id": "26624915",
+      "name": "fire_role_management",
+      "font_class": "fire_role_management",
+      "unicode": "e6e2",
+      "unicode_decimal": 59106
+    },
+    {
+      "icon_id": "26624684",
+      "name": "fire_organization",
+      "font_class": "fire_organization",
+      "unicode": "e6e0",
+      "unicode_decimal": 59104
+    },
+    {
+      "icon_id": "21445457",
+      "name": "fire_home_study",
+      "font_class": "fire_home_study",
+      "unicode": "e6a0",
+      "unicode_decimal": 59040
+    },
+    {
+      "icon_id": "21445458",
+      "name": "fire_home_vr",
+      "font_class": "fire_home_vr",
+      "unicode": "e6a1",
+      "unicode_decimal": 59041
+    },
+    {
+      "icon_id": "21104009",
+      "name": "collect",
+      "font_class": "collect",
+      "unicode": "e69f",
+      "unicode_decimal": 59039
+    },
+    {
       "icon_id": "20808329",
       "name": "fire_mic_off",
       "font_class": "fire_mic_off",

BIN=BIN
src/assets/icon/iconfont.ttf


BIN=BIN
src/assets/icon/iconfont.woff


BIN=BIN
src/assets/icon/iconfont.woff2


+ 3 - 2
src/constant/index.js

@@ -417,19 +417,20 @@ export const getPlaceCode = (val) => {
   let rets = ''
   let vals = val.split('>')
   let searchData = PLACE
-
+  console.log('getPlaceCodeval',val);
   for (let val of vals) {
     let item = searchData.find(({value}) => value === val)
 
     if (item) {
       rets += searchData.indexOf(item) + 1
+      console.log('rets',rets);
       searchData = item.children
     } else {
       rets += '0';
       break;
     }
   }
-
+  console.log('getPlaceCode',rets);
   return rets
 }
 

+ 18 - 4
src/request/config.js

@@ -43,7 +43,21 @@ export const updateUserPWD = ''
 
 
 
-/**  ----------------楼盘接口----------------   */
+// 获取角色列表
+export const getPageList = '/web/role/getPageList'
+// 新增修改角色信息
+export const updateRole = '/web/role/save'
+// 删除角色
+export const removeRole = '/web/role/remove/'
+// 查看角色
+export const detailRole = '/web/role/detail/'
+// 获取所有权限树
+export const getRoleTree = '/web/role/getTree'
+// 获取当前所有权限树
+export const getTreeByRole = '/web/role/getTreeByRole/'
+/** ------------------------------------------ */
+
+
 // 根据条件拉取所有楼盘
 export const getEstateList = '/fcb/project/project/queryOrSearchList'
 // 修改楼盘信息
@@ -115,11 +129,11 @@ export const deleteScene = '/web/scene/delete'
 
 
 
-/** ----------------相机接口---------------- */
+/** ----------------相机接口----------------  getUserCameraList  ==>> getPageList*/
 // 获取相机列表
-export const getCameraList = '/web/camera/getUserCameraList'
+export const getCameraList = '/web/camera/getPageList'
 // 获取相机选项
-export const getCameraOptions = '/web/camera/getUserCameraList?pageNum=1&pageSize=100000&type=1'
+export const getCameraOptions = '/web/camera/getPageList?pageNum=1&pageSize=100000&type=1'
 // 获取相机选项(自己)
 export const getCameraListByUser = '/web/camera/getCameraListByUser?pageNum=1&pageSize=100000'
 // 添加相机

+ 2 - 2
src/state/navs.js

@@ -11,10 +11,10 @@ const ICON_MAP = {
   vrmodel: 'iconfire_scenes', 
   camera: 'iconfire_camera', 
   dispatch: 'iconfire_management', 
-  organization: 'el-icon-guide', 
+  organization: 'iconfire_organization', 
   teaching: 'iconfire_study',
   user: 'iconfire_user',
-  role:'iconfire_user',
+  role:'iconfire_role_management',
 }
 
 const getNames = (config) => {

+ 2 - 2
src/state/tableRef.js

@@ -110,8 +110,8 @@ const referListData = async (ret, getUrl, pagAttr = {}) => {
   
   try {
     let res = await axios.get(getUrl,  { params })
-    ret.pag.value.state.total = pagAttr['totalNum'] ? res.data[pagAttr['totalNum']] : res.data.totalNum
-    ret.dataList.value.state = res.data.list = 'list'in pagAttr ?  pagAttr['list'] ? res.data[pagAttr['list']] : res.data : res.data.list
+    ret.pag.value.state.total = pagAttr['totalNum'] ? res.data[pagAttr['totalNum']] : res.data.total
+    ret.dataList.value.state = res.data.records = 'list'in pagAttr ?  pagAttr['list'] ? res.data[pagAttr['list']] : res.data : res.data.records
   } catch {
     ret.dataList.value.state = []
     ret.pag.value.state.total = 0

+ 102 - 144
src/view/role/index.vue

@@ -4,7 +4,7 @@
       <el-form label-width="84px" inline="true">
         <el-form-item label="角色名称:">
           <el-input
-            v-model="search.state.nickName"
+            v-model="search.state.searchKey"
             placeholder="请输入"
           ></el-input>
         </el-form-item>
@@ -20,7 +20,7 @@
 
     <div class="body-layer" style="padding-top: 8px">
       <div class="body-but">
-        <el-button type="primary" @click="newAddclick">新增角色</el-button>
+        <el-button type="primary" @click="()=>{newAddclick(null,'新增')}">新增角色</el-button>
         <!-- <h3 style="visibility: hidden;">用户列表</h3> -->
       </div>
 
@@ -37,22 +37,23 @@
             {{ pag.state.size * (pag.state.currPage - 1) + $index + 1 }}
           </div>
         </el-table-column>
-        <el-table-column label="角色名称" prop="userName"></el-table-column>
-        <el-table-column label="角色类型" prop="nickName"></el-table-column>
-        <el-table-column
-          label="所属架构"
-          prop="departmentName"
-        ></el-table-column>
-        <el-table-column label="创建人" prop="roleName"></el-table-column>
-        <el-table-column label="创建时间" prop="roleName"></el-table-column>
+        <el-table-column label="角色名称" prop="roleName"></el-table-column>
+        <el-table-column label="角色类型" prop="type">
+            <template #default="scope">
+                  {{ scope.row.type==0?'预设':'自定义' }}
+            </template>
+        </el-table-column>
+        <el-table-column label="所属架构" prop="deptName" ></el-table-column>
+        <el-table-column label="创建人" prop="nickName"></el-table-column>
+        <el-table-column label="创建时间" prop="createTime"></el-table-column>
         <el-table-column label="操作" v-slot:default="{ row }">
           <!-- v-if="auth.update || auth.updatePwd || auth.delete"  v-if="auth.update"-->
           <!-- row.roleKey == roleKey[user.roleKey] -->
           <template v-if="user.roleKey !== 'admin-ordinary'">
-            <span class="oper-span" @click="delInfo(row)" v-power="'view'"
+            <span class="oper-span" @click="()=>{newAddclick(row.id,'查看')}" v-power="'view'"
               >查看</span
             >
-            <span class="oper-span" @click="updateInfo(row)" v-power="'edit'"
+            <span class="oper-span" @click="()=>{newAddclick(row.id,'编辑')}" v-power="'edit'"
               >编辑</span
             >
             <!-- v-if="auth.delete" -->
@@ -72,34 +73,20 @@
         :current-page="pag.state.currPage"
         :page-size="pag.state.size"
         layout="total, sizes, prev, pager, next, jumper"
-        :total="pag.state.total"
+        :total="pag.state.total || 0"
       />
     </div>
 
     <com-dialog
-      title="编辑用户"
-      v-model:show="oper.state.show"
-      @submit="operItem"
-      width="540"
-    >
-      <el-form ref="form" :model="form" label-width="90px" class="user-from">
-        <el-form-item label="用户姓名" class="mandatory">
-          <el-input
-            v-model.trim="editName"
-            placeholder="请输入"
-            maxlength="15"
-          ></el-input>
-        </el-form-item>
-      </el-form>
-    </com-dialog>
-
-    <com-dialog
-      title="新增角色"
+      :title="`${operateType}角色`"
       @quit="
         newData = {};
         deptIdList = [];
       "
       v-model:show="newShow"
+      :showClose="operateType != '查看'"
+      :enterText="operateType == '查看'?'确定':false"
+      :cornerClose="operateType == '查看'"
       @submit="newSubmit"
       width="540"
     >
@@ -107,7 +94,8 @@
         <el-form-item label="角色名称:" class="mandatory">
           <el-input
             maxlength="15"
-            v-model="newData.nickName"
+            v-model="newData.roleName"
+            :disabled="operateType == '查看'"
             placeholder="请输入"
           ></el-input>
         </el-form-item>
@@ -117,8 +105,8 @@
         >
           <el-input
             maxlength="15"
-            disabled="true"
-            v-model="newData.userRokename"
+            :disabled="true"
+            v-model="newData.deptName"
             placeholder="请输入"
           ></el-input>
         </el-form-item>
@@ -133,9 +121,10 @@
                 show-checkbox
                 :current-node-key="nodekey"
                 node-key="id"
+                :default-checked-keys="Object.keys(radioData)"
                 @check="handleClick"
                 @node-click="handClick"
-                :props="{ children: 'children', label: 'label' }"
+                :props="{ children: 'children', label: 'name',disabled:'disabled' }"
               />
               <!-- @current-change="handcurrentChange" 
                 @check-change="handcheckchange"-->
@@ -148,6 +137,7 @@
                 v-if="selectShow"
                 v-model="radio"
                 @change="radioChange"
+                :disabled="operateType == '查看'"
               >
                 <el-radio
                   style="line-height:28px"
@@ -173,22 +163,18 @@ import comDialog from "@/components/dialog";
 import comHead from "@/components/head";
 import comCompany from "@/components/company-select";
 import comPagination from "@/components/pagination";
-// import roleCompany from "@/components/role-select";
-// import comSelect from "@/components/company-select";
 import auth from "@/state/viewAuth";
 import user from "@/state/user";
 import axios from "axios";
-// import { encryption } from "@/util";
-import { PHONE, EPSW } from "@/constant/REG";
 import { ADMIN_USER_ID } from "@/constant";
-
 import {
   getTreeselect,
-  getUserList,
-  updateUser,
-  deleUser,
+  getRoleTree,
+  detailRole,
+  getPageList,
+  updateRole,
+  removeRole,
   changeUserStatus,
-  userAdd,
   userEdit,
 } from "@/request/config";
 import { getApp } from "../../app";
@@ -198,10 +184,10 @@ export default {
   setup() {
     const flag = ref(true);
     const state = getTableState({
-      getUrl: getUserList,
-      updateUrl: updateUser,
+      getUrl: getPageList,
+      updateUrl: updateRole,
       operAttr: {
-        nickName: "",
+        roleName: "",
         userName: "",
         deptId: "",
         password: "",
@@ -209,7 +195,7 @@ export default {
         roleId: "",
         maxlevel: 1,
       },
-      searchAttr: { nickName: "", status: "", deptId: "" },
+      searchAttr: { roleName: "", status: "", deptId: "",searchKey:'' },
     });
     const headList = ref([{ name: "角色管理", value: 2 }]);
     const roleKey = ref({
@@ -217,21 +203,13 @@ export default {
       "admin-dept": "admin-ordinary",
     });
     const operRoleId = ref("");
-    const updateInfo = (row) => {
-      if (!row.status) {
-        return getApp().$message.error("请先启用用户", "提示");
-      }
-      data.editName = row.nickName;
-      operRoleId.value = row.roleId;
-      state.oper.value.readyUpdate(row);
-    };
     const delInfo = async (row) => {
       let isOk = await getApp().$confirm(
-        "用户被删除后,无法登陆使用,无法编辑场景(可将该用户关联的相机绑定到其他管理员),确认要删除组织吗?",
+        "删除角色后,相关用户需重新配置角色,确认要删除组织吗?",
         "删除"
       );
       if (isOk) {
-        await axios.post(deleUser, { id: row.id });
+        await axios.post(removeRole+row.id , { id: row.id });
         getApp().$message({ message: "操作成功", type: "success" });
         state.search.value.submit();
       }
@@ -239,15 +217,38 @@ export default {
     const getTreedata = async () => {
       let res = await axios.get(getTreeselect, {});
       data.treedata = res.data;
-      console.log("data.treedata", data.treedata);
-      // getApp().$ref.treeBox.setCurrentKey(user.info.id)
     };
-    const newAddclick = () => {
+    const newAddclick = async (id,type) => {
+      let reqApi = getRoleTree;//id?getTreeByRole+id:getRoleTree
+      let treeRes = await axios.get(reqApi, {roleId:id});
+      data.selectId = id
+      if(type != '新增'){
+          let res = await axios.get(detailRole+id, {roleId:id});
+          let { roleName,perm,deptName} = res.data
+          data.radioData = perm
+          data.newData = {
+            ...data.newData,
+            roleName,
+            deptName,
+          }
+      }else{
+        data.newData.deptName = user.deptName
+        data.radioData = {}
+      }
+      data.roledata = type == '查看'?(treeRes.data.map(ele => {
+        ele.disabled = true
+        ele.children && ele.children.map(item => item.disabled = true)
+        return ele
+      })):treeRes.data || [];
+      data.operateType = type || '新增'
       data.newShow = true;
+      
     };
     const data = reactive({
       newShow: false,
       editName: "", //修改编辑用户名称
+      selectId:'',
+      operateType:'新增',
       deptIdList: [],
       radio: 1,
       radioData: {},
@@ -255,67 +256,24 @@ export default {
       selectShow: false,
       roleSelct: [
         { id: 1, value: "全部数据" },
-        { id: 2, value: "所属组织及下级组织数据" },
-        { id: 3, value: "所属组织内部数据" },
-        { id: 4, value: "个人创建数据" },
+        { id: 3, value: "所属组织及下级组织数据" },
+        { id: 4, value: "所属组织内部数据" },
+        { id: 5, value: "个人创建数据" },
       ],
+      checkedList:[],//tree 选中树
       selectData: {},
-      roledata: [
-        {
-          id: 1,
-          label: "场景管理",
-          value: true,
-          children: [
-            {
-              id: 14,
-              label: "查看",
-              value: false,
-            },
-            {
-              id: 19,
-              label: "删除",
-              value: false,
-            },
-            {
-              id: 10,
-              label: "编辑",
-              value: false,
-            },
-          ],
-        },
-        {
-          id: 2,
-          label: "火调管理",
-          value: true,
-          children: [
-            {
-              id: 24,
-              label: "查看",
-              value: false,
-            },
-            {
-              id: 29,
-              label: "删除",
-              value: false,
-            },
-            {
-              id: 20,
-              label: "编辑",
-              value: false,
-            },
-          ],
-        },
-      ],
+      roledata: [],
       treedata: [],
       newData: {
         userName: "",
         userId: "",
-        userRokename: "全部数据",
+        deptName: user.deptName,
         password: "",
         userRole: "",
       },
     });
     onMounted(async () => {
+
       getTreedata();
     });
     return {
@@ -325,7 +283,6 @@ export default {
       getTreedata,
       headList,
       delInfo,
-      updateInfo,
       auth,
       user,
       operRoleId,
@@ -339,12 +296,13 @@ export default {
     handleClick(data, checked) {
       console.log(checked);
       console.log(data);
+      this.checkedList = checked.checkedKeys
       let CurrentKey = this.$refs.tree.getCurrentKey();
       if (
         checked.checkedKeys.includes(data.id) &&
-        !data.value &&
+        data.type == 'button' &&
         CurrentKey == data.id
-      ) {
+      ) { //找到高亮且勾选的item
         this.setselectShow(data, data.id);
       } else {
         this.selectShow = null;
@@ -353,54 +311,54 @@ export default {
     radioChange(val) {
       let id = this.selectShow.id;
       this.radioData[id] = val;
-      console.log("radioChange", val);
+      console.log("radioChange", this.radioData);
     },
     handClick(data) {
       let checkedNodes = this.$refs.tree.getCheckedNodes();
       let selectShow = checkedNodes.find((ele) => data.id == ele.id) || null;
-      if (!data.value) {
+      if (data.type == 'button'&& this.operateType !== '查看') {
         this.setselectShow(selectShow, data.id);
       }
-      console.log("handClick", this.selectShow);
+      console.log("handClick",data);
     },
     setselectShow(selectShow, id) {
       this.selectShow = selectShow;
-      this.radio = this.radioData[id] || 1;
+      this.radio = parseInt(this.radioData[id] || 1)
+      if(!this.radioData[id])this.radioData[id] = 1
     },
     handcurrentChange(a, b) {
       console.log("handcurrentChange", a, b);
       console.log("ref", this.selectShow);
     },
-    changeDeptId(val) {
-      this.newData.deptId = val && val[val.length - 1];
+    assembleData(val) {
+      let data = val.map(ele => {
+        ele.children && ele.children(ele => ele.disabled = true)
+        return ele
+      })
+      console.log('assembleData',data);
+      return data
     },
     async newSubmit() {
-      console.log("newSubmit", this.user, this.newData);
-      if (!this.newData.nickName) {
-        return this.$message.error("请输入用户姓名", "提示");
-      }
-      if (!this.newData.roleId) {
-        return this.$message.error("请选择用户角色", "提示");
+      if(this.operateType == '查看'){
+         return  this.newShow = false;
       }
-      console.log(PHONE.REG.test(this.newData.userName), this.newData.userName);
-      if (!this.newData.userName) {
-        return this.$message.error("请选择用户账户", "提示");
-      } else if (!PHONE.REG.test(this.newData.userName)) {
-        return this.$message.error(PHONE.tip, "提示");
-      }
-      if (!this.newData.psw) {
-        return this.$message.error("请输入登录密码", "提示");
-      } else if (!EPSW.REG.test(this.newData.psw)) {
-        return this.$message.error(EPSW.tip, "提示");
+      if (!this.newData.roleName) {
+        return this.$message.error("请输入用户姓名", "提示");
       }
-      let apiinfo = await axios.post(userAdd, {
-        nickName: this.newData.nickName,
-        password: this.newData.psw,
-        userName: this.newData.userName,
-        roleId: this.newData.roleId,
-        deptId: this.newData.deptId,
-        // ...this.newData
+      let perm = {}
+      this.checkedList.map(ele =>{ 
+        perm[ele] = 1
+      })
+      let id = this.selectId
+      let apiinfo = await axios.post(updateRole, { //新增修改角色
+        "id": id || '',
+        "perm": {
+          ...perm,
+          ...this.radioData,
+        },
+        "roleName": this.newData.roleName
       });
+      console.log("newSubmit", apiinfo);
       this.$message({ message: apiinfo.msg || "成功", type: "success" });
       // await this.$confirm('每个组织只能创建一个总管理员~', '新增用户')
       this.newData = {};
@@ -415,7 +373,7 @@ export default {
       console.log("state.oper", this.oper);
       await axios.post(userEdit, {
         id: this.oper.state.id,
-        nickName: this.editName,
+        roleName: this.editName,
       });
       this.$message({ message: "编辑成功", type: "success" });
       this.oper.reset();

+ 2 - 2
vue.config.js

@@ -19,8 +19,8 @@ module.exports = {
     // 设置代理proxy
     proxy: {
       '/__api': {
-        // target: 'http://192.168.0.26:8585/',
-        target: 'https://testxfhd.4dkankan.com',
+        target: 'http://192.168.0.135:8585/',
+        // target: 'https://testxfhd.4dkankan.com',
         // target: 'https://testhuodiao.4dkankan.com/',
         changeOrigin: true,  
         pathRewrite: {