From b6fd01e789451c3fbd039a02aaf91c5629122a80 Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期一, 20 六月 2022 19:59:13 +0800
Subject: [PATCH] 1.角色清单新增修改、设置完成

---
 src/utils/request.js             |    2 
 src/views/jcsz/zzjg.vue          |    4 
 src/store/modules/user.js        |   24 +
 src/views/jcsz/yhqd.vue          |    2 
 src/api/user.js                  |    7 
 src/views/jcsz/jsqd.vue          |  702 ++++++++++++++++++++++++++++++++++++++++++-------
 src/api/jcsz.js                  |   14 
 src/layout/components/Navbar.vue |   27 +
 8 files changed, 650 insertions(+), 132 deletions(-)

diff --git a/src/api/jcsz.js b/src/api/jcsz.js
index c5db989..ed44d31 100644
--- a/src/api/jcsz.js
+++ b/src/api/jcsz.js
@@ -98,15 +98,15 @@
   return request({
     url: 'BasicSetting/RoleTypeAdd',
     method: 'post',
-    params: data
+    data
   })
 }
-// 瑙掕壊绫诲瀷鏂板
+// 瑙掕壊绫诲瀷鍒犻櫎
 export function RoleTypeDelete(data) {
   return request({
     url: 'BasicSetting/RoleTypeDelete',
     method: 'post',
-    data
+    params: data
   })
 }
 // 瑙掕壊娓呭崟鏌ヨ
@@ -130,7 +130,7 @@
   return request({
     url: 'BasicSetting/DeleteRole',
     method: 'post',
-    data
+    params: data
   })
 }
 
@@ -142,10 +142,10 @@
     params: data
   })
 }
-// 瑙掕壊娓呭崟鍏宠仈鐢ㄦ埛鏌ヨ淇濆瓨
-export function SaveRoleAssoctUser(data) {
+// 瑙掕壊娓呭崟鍏宠仈鐢ㄦ埛淇濆瓨
+export function SaveRoleAssoctUser(data, rolecode) {
   return request({
-    url: 'BasicSetting/SaveRoleAssoctUser',
+    url: 'BasicSetting/SaveRoleAssoctUser?rolecode=' + rolecode,
     method: 'post',
     data
   })
diff --git a/src/api/user.js b/src/api/user.js
index 48a69de..bb9faa4 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -22,9 +22,10 @@
   })
 }
 
-export function logout() {
+export function logout(data) {
   return request({
-    url: '/vue-admin-template/user/logout',
-    method: 'post'
+    url: '/Login/LoginOut',
+    method: 'post',
+    params: data
   })
 }
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 79c30ae..56bf3c0 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -44,7 +44,9 @@
 import { mapGetters } from 'vuex'
 import Breadcrumb from '@/components/Breadcrumb'
 import Hamburger from '@/components/Hamburger'
-import { getCookie } from '@/utils/auth'
+import { getCookie, removeCookie, removeToken } from '@/utils/auth'
+import { logout } from '@/api/user'
+import { resetRouter } from '@/router'
 
 export default {
   components: {
@@ -70,8 +72,27 @@
       this.$store.dispatch('app/toggleSideBar')
     },
     async logout() {
-      await this.$store.dispatch('user/logout')
-      this.$router.push(`/login?redirect=${this.$route.fullPath}`)
+      // await this.$store.dispatch('user/logout')
+      const usercode = getCookie('navTabId')
+      const username = getCookie('admin')
+      const usertype = getCookie('usertype')
+      const data = {
+        usercode,
+        username,
+        usertype
+      }
+      const res = await logout(data)
+      if (res.code === '200') {
+        removeToken()
+        resetRouter()
+        removeCookie('admin')
+        removeCookie('navTabId')
+        removeCookie('usertype')
+        this.$message.success('閫�鍑烘垚鍔燂紒')
+        this.$router.push(`/login?redirect=${this.$route.fullPath}`)
+        // this.$router.push(`/login?redirect=${this.$route.fullPath}`)
+      }
+      // this.$router.push(`/login`)
     }
   }
 }
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 204eab3..950181d 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,5 +1,5 @@
 import { login, logout, getInfo } from '@/api/user'
-import { getToken, setToken, removeToken, setCookie } from '@/utils/auth'
+import { getToken, setToken, removeToken, setCookie, removeCookie, getCookie } from '@/utils/auth'
 import { resetRouter } from '@/router'
 
 const getDefaultState = () => {
@@ -38,6 +38,8 @@
 
         setCookie('admin', res.username)
         setCookie('navTabId', res.usercode)
+        setCookie('usertype', res.usertype)
+        console.log(res.usertype, 111)
         // commit('SET_TOKEN', data.token)
         // setToken(res)
         // commit('SET_TOKEN', res)
@@ -73,9 +75,23 @@
   // user logout
   logout({ commit, state }) {
     return new Promise((resolve, reject) => {
-      logout(state.token).then(() => {
-        removeToken() // must remove  token  first
-        resetRouter()
+      // logout(state.token).then(() => {
+      const data = {
+        usercode: getCookie('navTabId'),
+        username: getCookie('admin'),
+        usertype: getCookie('usertype')
+      }
+
+      logout(data).then(res => {
+        if (res.code === '200') {
+          removeToken() // must remove  token  first
+          resetRouter()
+
+          removeCookie('admin')
+          removeCookie('navTabId')
+          removeCookie('usertype')
+          this.$message.success('閫�鍑烘垚鍔燂紒')
+        }
         commit('RESET_STATE')
         resolve()
       }).catch(error => {
diff --git a/src/utils/request.js b/src/utils/request.js
index 4c5a99f..b96d3dd 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -7,7 +7,7 @@
 const service = axios.create({
   baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
   withCredentials: true, // send cookies when cross-domain requests
-  timeout: 5000 // request timeout
+  timeout: 10000 // request timeout
 })
 // axios.defaults.withCredentials = true
 
diff --git a/src/views/jcsz/jsqd.vue b/src/views/jcsz/jsqd.vue
index e9d6084..21a51d7 100644
--- a/src/views/jcsz/jsqd.vue
+++ b/src/views/jcsz/jsqd.vue
@@ -19,10 +19,10 @@
             <el-form-item label="瑙掕壊绫诲瀷" style=" display: flex;">
               <el-select v-model="form.RoleTypeCode" style="width: calc(100%-30px)" placeholder="璇烽�夋嫨">
                 <el-option
-                  v-for="item in RoleTypeCodeArr"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
+                  v-for="item in RoleTypeCodeArr2"
+                  :key="item.roletype_code"
+                  :label="item.roletype_name"
+                  :value="item.roletype_code"
                 />
               </el-select>
             </el-form-item>
@@ -36,9 +36,9 @@
           </div>
         </el-form>
       </div>
-      <div style="margin-bottom: 20px;display: flex">
+      <div style="margin-bottom: 20px;display: flex; z-index: 2">
         <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
-        <el-button type="primary" icon="el-icon-setting" @click="">璁剧疆</el-button>
+        <el-button type="primary" icon="el-icon-setting" @click="settingButton">璁剧疆</el-button>
         <el-button type="primary" icon="el-icon-upload2" @click="upload">瀵煎叆</el-button>
       </div>
 
@@ -55,11 +55,6 @@
           <!--          <el-table-column-->
           <!--            type="selection"-->
           <!--            width="50"-->
-          <!--          />-->
-          <!--          <el-table-column-->
-          <!--            prop="id"-->
-          <!--            width="50"-->
-          <!--            label="搴忓彿"-->
           <!--          />-->
           <el-table-column
             prop="RowNum"
@@ -82,6 +77,12 @@
             sortable="custom"
           />
           <el-table-column
+            prop="description"
+            label="瑙掕壊鎻忚堪"
+            show-overflow-tooltip
+            sortable="custom"
+          />
+          <el-table-column
             prop="lm_user"
             label="鍒涘缓浜哄憳"
             sortable="custom"
@@ -94,19 +95,21 @@
           <el-table-column
             prop="lm_date"
             label="鍏宠仈鐢ㄦ埛"
+            width="120"
             sortable="custom"
           >
             <template slot-scope="{row}">
-              <i class="el-icon-user-solid" />
+              <i class="el-icon-user-solid" @click="userClick(row)" />
             </template>
           </el-table-column>
           <el-table-column
             prop="lm_date"
             label="鍒嗛厤鏉冮檺"
             sortable="custom"
+            width="120"
           >
             <template slot-scope="{row}">
-              <i class="el-icon-share" />
+              <i class="el-icon-share" @click="rightClick(row)" />
             </template>
           </el-table-column>
           <el-table-column
@@ -115,7 +118,7 @@
             <template slot-scope="{row}">
               <div class="operationClass">
                 <el-button type="text" @click="edit('edit',row)">淇敼</el-button>
-                <el-button type="text" @click="del(row.id)">鍒犻櫎</el-button>
+                <el-button type="text" @click="del(row)">鍒犻櫎</el-button>
               </div>
             </template>
           </el-table-column>
@@ -143,39 +146,29 @@
       @closed="handleClose"
       @close="handleClose"
     >
-      <el-form ref="dialogForm" :rules="dialogFormRules" :model="dialogForm" label-width="80px">
-        <el-form-item label="缁勭粐绫诲瀷" prop="OrgType">
-          <el-radio-group
-            v-model="dialogForm.OrgType"
-            style="display: flex;align-items: end;height: 29px;"
-            @change="changeRadio"
-          >
-            <el-radio
-              v-for="item in OrgTypeArr"
-              :key="item.value"
-              :value="item.value"
-              :label="item.label"
-            />
-          </el-radio-group>
+      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
+        <el-form-item label="瑙掕壊缂栫爜" prop="RoleCode">
+          <el-input v-model="dialogForm.RoleCode" :disabled="operation!=='add'" style="width: 220px" />
         </el-form-item>
-        <el-form-item label="缁勭粐缂栫爜" prop="OrgCode">
-          <el-input v-model="dialogForm.OrgCode" :disabled="operation!=='add'" style="width: 220px" />
+        <el-form-item label="瑙掕壊鍚嶇О" prop="RoleName">
+          <el-input v-model="dialogForm.RoleName" style="width: 220px" />
         </el-form-item>
-        <el-form-item label="缁勭粐鍚嶇О" prop="OrgName">
-          <el-input v-model="dialogForm.OrgName" style="width: 220px" />
-        </el-form-item>
-        <el-form-item v-if="dialogFormOrgTypeSelected!=='F'" prop="SupUnit" label="涓婄骇鍗曚綅">
+        <el-form-item prop="RoleTypeCode" label="瑙掕壊绫诲瀷">
           <el-select
-            v-model="dialogForm.SupUnit"
+            v-model="dialogForm.RoleTypeCode"
             style="width: 220px"
             placeholder="璇烽�夋嫨"
           >
             <el-option
-              v-for="item in SupUnitArr"
-              :label="item.org_name"
-              :value="item.id"
+              v-for="item in RoleTypeCodeArr2"
+              :key="item.roletype_code"
+              :label="item.roletype_name"
+              :value="item.roletype_code"
             />
           </el-select>
+        </el-form-item>
+        <el-form-item label="瑙掕壊鎻忚堪" prop="description">
+          <el-input v-model="dialogForm.description" type="textarea" style="width: 220px" />
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
@@ -186,22 +179,251 @@
       </span>
     </el-dialog>
     <!--    璁剧疆鎸夐挳瀵硅瘽妗�-->
+    <el-dialog
+      title="瑙掕壊绫诲瀷"
+      :visible.sync="settingDialogVisible"
+      width="50%"
+      top="15vh"
+      class="settingDialogVisible"
+      @closed="handleCloseSetting"
+      @close="handleCloseSetting"
+    >
+      <div style="margin-bottom: 20px;display: flex">
+        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="addSetting">鏂板</el-button>
+        <!--        <el-button type="primary" icon="el-icon-delete" @click="delSetting">鍒犻櫎</el-button>-->
+      </div>
+      <el-table
+        :data="RoleTypeCodeArr"
+        border
+        highlight-current-row
+        :style="{width: 100+'%',height:tableHeight-300+'px'}"
+        :header-cell-style="this.$headerCellStyle"
+        :cell-style="this.$cellStyle"
+        @sort-change="sortChangeOfSetting"
+      >
+        <!--        <el-table-column-->
+        <!--          type="selection"-->
+        <!--          width="50"-->
+        <!--        />-->
+        <el-table-column
+          width="50"
+          label="搴忓彿"
+          type="index"
+        />
+        <el-table-column
+          prop="roletype_code"
+          label="绫诲瀷缂栫爜"
+          sortable="custom"
+        >
+          <template slot-scope="{row}">
+            <el-input v-if="row.isVisible===1" v-model="row.roletype_code" placeholder="璇疯緭鍏�" />
+            <div v-else> {{ row.roletype_code }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="roletype_name"
+          label="绫诲瀷鍚嶇О"
+          sortable="custom"
+        >
+          <template slot-scope="{row}">
+            <el-input v-if="row.isVisible===1" v-model="row.roletype_name" placeholder="璇疯緭鍏�" />
+            <div v-else> {{ row.roletype_name }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column>
 
+          <template slot-scope="{row}">
+            <div class="operationClass">
+              <el-button v-if="row.isVisible===0" type="text" @click="delSetting(row)">鍒犻櫎</el-button>
+              <el-button v-if="row.isVisible===1" type="text" @click="formSettingSave(row)">淇濆瓨</el-button>
+              <el-button v-if="row.isVisible===1" type="text" @click="formSettingCancel(row)">鍙栨秷</el-button>
+            </div>
+          </template>
+          <!--          <template v-for="item in RoleTypeCodeArr" slot-scope="{row}">-->
+          <!--            <div :key="item.roletype_code" class="operationClass">-->
+          <!--              <el-button v-if="item.isVisible" type="text" @click="formSettingSave(row)">淇濆瓨</el-button>-->
+          <!--              <el-button v-if="item.isVisible" type="text" @click="formSettingCancel(row)">鍙栨秷</el-button>-->
+          <!--            </div>-->
+          <!--          </template>-->
+        </el-table-column>
+      </el-table>
+      <!--鍒嗛〉-->
+      <pagination
+        v-show="RoleTypeCodeArrLength>0"
+        :total="RoleTypeCodeArrLength"
+        :page.sync="formSetting.page"
+        :limit.sync="formSetting.rows"
+        align="right"
+        layout="prev, pager, next,sizes"
+        popper-class="select_bottom"
+        @pagination="getRoleTypeSearch"
+      />
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="settingDialogVisibleCancel">杩斿洖</el-button>
+          <!--          <el-button type="primary" @click="settingDialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
     <!--    鍏宠仈鐢ㄦ埛瀵硅瘽妗�-->
+    <el-dialog
+      title="瑙掕壊鍏宠仈鐢ㄦ埛"
+      :visible.sync="userDialogVisible"
+      width="90%"
+      top="15vh"
+      class="userDialogVisible"
+      @closed="handleCloseUser"
+      @close="handleCloseUser"
+    >
+      <div>
+        <i class="el-icon-s-comment" style="color:#42b983;" /> 瑙掕壊鍚嶇О锛歿{ userForm.roleName }}
+      </div>
+      <el-divider />
+      <div style="margin-bottom: 10px">
+        <i class="el-icon-s-operation" style="color:#42b983;" /> 鐢ㄦ埛鍒楄〃
+      </div>
+      <div style="display: flex;min-height: 50px">
+        <el-form ref="dialogFormUser" inline :model="dialogFormUser" label-width="80px">
+          <el-form-item label="鐢ㄦ埛缂栫爜">
+            <el-input v-model="dialogFormUser.usercode" class="userDialogVisibleInput" style="width: 220px" />
+          </el-form-item>
+          <el-form-item label="鐢ㄦ埛鍚嶇О">
+            <el-input v-model="dialogFormUser.username" class="userDialogVisibleInput" style="width: 220px" />
+          </el-form-item>
+          <el-form-item label="鎵�灞炵粍缁�">
+            <el-cascader
+              ref="dialogCascaderUser"
+              key="cascaderKey"
+              :options="StuOrgArr"
+              :props="defaultProps"
+              class="userDialogVisibleInput"
+              style="width: 220px;"
+              @change="dialogCascaderChange"
+            />
 
-    <!--    鍒嗛厤鍏ㄩ�夊璇濇-->
+          </el-form-item>
+          <el-form-item label="鍏宠仈瑙掕壊">
+            <el-select
+              v-model="dialogFormUser.isrole"
+              style="width: 220px"
+              placeholder="璇烽�夋嫨"
+              class="userDialogVisibleInput"
+            >
+              <el-option
+                v-for="item in roleArr"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-form>
+        <el-button type="primary" icon="el-icon-search" style="margin-top: 5px;margin-left: 30px" @click="getRoleAssociationUser">鏌ヨ</el-button>
+        <el-button type="info" icon="el-icon-refresh" style="margin-top: 5px;margin-left: 10px" @click="setRoleAssociationUser">閲嶇疆</el-button>
+      </div>
+      <el-table
+        ref="multipleTable"
+        :data="dialogFormUserTable"
+        border
+        highlight-current-row
+        :style="{width: 100+'%',height:tableHeight-300+'px'}"
+        :header-cell-style="this.$headerCellStyle"
+        :cell-style="this.$cellStyle"
+        @sort-change="sortChangeOfUser"
+        @selection-change="handleSelectionChange"
+        @select="handleSelect"
+      >
+        <el-table-column
+          type="selection"
+          width="50"
+        />
+        <el-table-column
+          prop="RowNum"
+          width="50"
+          label="搴忓彿"
+        />
+        <el-table-column
+          prop="usercode"
+          label="鐢ㄦ埛缂栫爜"
+          sortable="custom"
+        />
+        <el-table-column
+          prop="username"
+          label="鐢ㄦ埛鍚嶇О"
+          sortable="custom"
+        />
+        <el-table-column
+          prop="org_name"
+          label="鎵�灞炵粍缁�"
+          sortable="custom"
+        />
+        <el-table-column
+          prop="flag"
+          label="鍏宠仈瑙掕壊"
+          sortable="custom"
+        >
+          <template slot-scope="{row}">
+            <div v-if="row.flag==='Y'">鏄�</div>
+            <div v-if="row.flag==='N'">鍚�</div>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <!--鍒嗛〉-->
+      <pagination
+        v-show="dialogFormUserTableLength>0"
+        :total="dialogFormUserTableLength"
+        :page.sync="dialogFormUser.page"
+        :limit.sync="dialogFormUser.rows"
+        align="right"
+        layout="prev, pager, next,sizes"
+        popper-class="select_bottom"
+        @pagination="getRoleAssociationUser"
+      />
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="userDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button type="primary" @click="userDialogVisibleConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+    <!--    鍒嗛厤鏉冮檺瀵硅瘽妗�-->
+    <el-dialog
+      title="瑙掕壊鍏宠仈鏉冮檺"
+      :visible.sync="dialogVisibleRight"
+      width="50%"
+      top="15vh"
+      class="dialogVisibleRight"
+      @closed="handleCloseRight"
+      @close="handleCloseRight"
+    >
+      <div>
+        <i class="el-icon-s-comment" style="color:#42b983;" /> 瑙掕壊鍚嶇О锛歿{ rightFrom.username }}
+      </div>
+      <el-divider />
+      <div style="margin-bottom: 10px">
+        <i class="el-icon-s-operation" style="color:#42b983;" /> 鏉冮檺鎿嶄綔绔�
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="rightDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button type="primary" @click="rightDialogVisibleConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import Pagination from '@/components/Pagination'
 import {
-  AddUpdateOrganization,
-  DeleteOrganization,
-  OrganizationSearch,
-  PrentOrganization,
-  RoleSearch,
-  RoleTypeDelete
+  AddUpdateRole,
+  DeleteRole,
+  RoleAssociationUser,
+  RoleSearch, RoleTypeAdd,
+  RoleTypeDelete, RoleTypeSearch, SaveRoleAssoctUser, UserOrganization
 } from '@/api/jcsz'
 import { getCookie } from '@/utils/auth'
 
@@ -223,13 +445,13 @@
         }
       }
     }
-    const validateTypeCode = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇烽�夋嫨涓婄骇'))
-      } else {
-        callback()
-      }
-    }
+    // const validateTypeCode = (rule, value, callback) => {
+    //   if (!value) {
+    //     return callback(new Error('璇烽�夋嫨涓婄骇'))
+    //   } else {
+    //     callback()
+    //   }
+    // }
     return {
       mainHeight: 0,
       tableHeight: 0,
@@ -243,49 +465,122 @@
         page: 1, // 绗嚑椤�
         rows: 10 // 姣忛〉澶氬皯鏉�
       },
-      RoleTypeCodeArr: [], // 瑙掕壊绫诲瀷缂栫爜鏁扮粍
-
       total: 10,
+      RoleTypeCodeArr: [], // 瑙掕壊绫诲瀷缂栫爜鏁扮粍
+      RoleTypeCodeArr2: [], // 瑙掕壊绫诲瀷缂栫爜鏁扮粍  鎼滅储
+      RoleTypeCodeArrLength: 0,
+      formSetting: {
+        page: 1,
+        rows: 10,
+        prop: 'roletype_code',
+        order: 'desc'
+      },
       tableData: [],
       dialogVisible: false,
       dialogForm: {
-        OrgType: '',
-        OrgCode: '',
-        OrgName: '',
-        SupUnit: ''// 涓婄骇鍗曚綅
+        RoleId: '',
+        RoleCode: '', // 瑙掕壊缂栫爜
+        RoleName: '', // 瑙掕壊鍚嶇О
+        RoleTypeCode: '', // 瑙掕壊绫诲瀷
+        description: ''//
       },
-      SupUnitArr: [],
-      dialogFormOrgTypeSelected: '',
       operation: '',
       dialogFormRules: {
-        OrgType: [
-          { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
-        ],
-        OrgCode: [
+        RoleCode: [
           { required: true, validator: validateName, trigger: ['blur', 'change'] }
         ],
-        OrgName: [
+        RoleName: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
         ],
-        SupUnit: [
-          { required: true, validator: validateTypeCode, trigger: ['blur', 'change'] }
+        RoleTypeCode: [
+          { required: true, message: '璇烽�夋嫨瑙掕壊绫诲瀷', trigger: ['blur', 'change'] }
         ]
-      }
+      },
+      settingDialogVisible: false,
+      userDialogVisible: false,
+      userForm: { // 瑙掕壊娓呭崟甯﹀埌鍏宠仈鐢ㄦ埛鍐呯殑鍊�
+        roleName: '',
+        roleCode: ''
+      },
+      dialogFormUser: { // 瀵硅瘽妗嗕腑鎼滅储琛ㄥ崟鍊�
+        usercode: '',
+        username: '',
+        orgcode: '',
+        isrole: '',
+        page: 1,
+        rows: 10,
+        prop: 'flag',
+        order: 'desc'
+      },
+      dialogFormUserTable: [],
+      dialogFormUserTableLength: 0,
+      StuOrgArr: [], // 鎵�灞炵粍缁�
+      defaultProps: {
+        checkStrictly: true,
+        value: 'code',
+        label: 'name',
+        children: 'children'
+      },
+      roleArr: [
+        { value: 'Y', label: '鏄�' },
+        { value: 'N', label: '鍚�' }
+      ], // 鍏宠仈瑙掕壊鏁扮粍
+      userMultipleArr: [],
+      userSingleCode: '',
+      userSingleCodeFlag: false,
+      dialogVisibleRight: false,
+      rightFrom: {
+        username: '',
+        usercode: ''
+      },
+      dialogFormRight: {
 
+      }
     }
   },
   created() {
     this.getRoleSearch()
+    this.getRoleTypeSearch2()
+    this.getUserOrganization()
   },
   mounted() {
     window.addEventListener('resize', this.getHeight)
     this.getHeight()
   },
   methods: {
+    // 鑾峰彇瑙掕壊娓呭崟
     async getRoleSearch() {
       const res = await RoleSearch(this.form)
       this.tableData = res.data
       this.total = res.count
+    },
+    // 鑾峰彇鐢ㄦ埛绫诲瀷
+    async getRoleTypeSearch() {
+      const res = await RoleTypeSearch(this.formSetting)
+      this.RoleTypeCodeArr = res.data
+      this.RoleTypeCodeArrLength = res.count
+      this.RoleTypeCodeArr.forEach((item, index) => {
+        item.isVisible = 0
+      })
+    },
+    async getRoleTypeSearch2() { // 鎼滅储灞曠ず鐨勫唴瀹�
+      const data = {
+        page: 1,
+        rows: 1000000,
+        prop: 'roletype_code',
+        order: 'desc'
+      }
+      const res = await RoleTypeSearch(data)
+      this.RoleTypeCodeArr2 = res.data
+    },
+    settingButton() {
+      this.settingDialogVisible = true
+      this.getRoleTypeSearch()
+    },
+    // 鑾峰彇鎵�灞炵粍缁�
+    async getUserOrganization() {
+      const { data: res } = await UserOrganization()
+      this.StuOrgArr = res
     },
     // 鎺掑簭鏀瑰彉鏃�
     sortChange({ column, prop, order }) {
@@ -300,6 +595,22 @@
       this.form.prop = prop
       this.getRoleSearch()
     },
+    sortChangeOfSetting({ column, prop, order }) {
+      if (order === 'descending') {
+        order = 'desc'
+      } else if (order === 'ascending') {
+        order = 'asc'
+      } else {
+        order = 'desc'
+      }
+      this.formSetting.order = order
+      this.formSetting.prop = prop
+      this.getRoleTypeSearch()
+    },
+
+    upload() {
+
+    },
     // 鏌ヨ
     search() {
       this.getRoleSearch()
@@ -312,24 +623,6 @@
       this.form.CreateUser = ''
       this.getRoleSearch()
     },
-    // 鍗曢�夋鏀瑰彉鏃�
-    // async changeRadio(val) {
-    //   if (val.length > 1) {
-    //     this.OrgTypeArr.forEach(item => {
-    //       if (item.label === val) {
-    //         this.dialogFormOrgTypeSelected = item.value
-    //       }
-    //     })
-    //     this.dialogForm.SupUnit = ''
-    //   } else {
-    //     this.dialogFormOrgTypeSelected = val
-    //   }
-    //   if (this.dialogFormOrgTypeSelected !== 'F') {
-    //     const { data: res } = await PrentOrganization({ orgcode: this.dialogFormOrgTypeSelected })
-    //     this.SupUnitArr = res
-    //   }
-    // },
-
     // 鏂板鎸夐挳
     add(operation) {
       this.operation = operation
@@ -341,35 +634,38 @@
       this.dialogVisible = true
 
       this.$nextTick(() => {
-        this.changeRadio(this.dialogForm.OrgType)
-        this.dialogForm.OrgCode = row.org_code
-        this.dialogForm.OrgName = row.org_name
-        this.dialogForm.SupUnit = row.parent_id
+        this.$refs.dialogForm.clearValidate()
+        this.dialogForm.RoleId = row.id
+        this.dialogForm.RoleCode = row.role_code
+        this.dialogForm.RoleName = row.role_name
+        this.dialogForm.RoleTypeCode = row.roletype_code
+        this.dialogForm.description = row.description
       })
     },
     // 鍒犻櫎鎸夐挳
-    async del(id) {
+    del(row) {
       this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
         type: 'warning'
       }).then(() => {
-        // RoleTypeDelete({ RoleTypeCode: id }).then(res => {
-        //   if (res.code === '200') {
-        //     this.$message.success('鍒犻櫎鎴愬姛!')
-        //     this.getRoleSearch()
-        //   }
-        // })
+        DeleteRole({ RoleCode: row.role_code }).then(res => {
+          if (res.code === '200') {
+            this.$message.success('鍒犻櫎鎴愬姛!')
+            this.getRoleSearch()
+          }
+        })
       }).catch(() => {
         this.$message.info('宸插彇娑堝垹闄�')
       })
     },
     // 瀵硅瘽妗嗗叧闂簨浠�
     handleClose() {
-      this.dialogForm.OrgType = ''
-      this.dialogForm.OrgCode = ''
-      this.dialogForm.OrgName = ''
-      this.dialogForm.SupUnit = ''
+      this.dialogForm.RoleId = ''
+      this.dialogForm.RoleCode = ''
+      this.dialogForm.RoleName = ''
+      this.dialogForm.RoleTypeCode = ''
+      this.dialogForm.description = ''
       this.$refs.dialogForm.clearValidate()
     },
     // 瀵硅瘽妗嗗彇娑�
@@ -381,14 +677,15 @@
       this.$refs.dialogForm.validate(valid => {
         if (valid) {
           const data = {
-            OrganType: this.dialogFormOrgTypeSelected,
-            OrganCode: this.dialogForm.OrgCode,
-            OrganName: this.dialogForm.OrgName,
-            SupUnit: this.dialogFormOrgTypeSelected === 'F' ? '0' : this.dialogForm.SupUnit,
-            OperType: this.operation === 'add' ? 'Add' : 'Update',
-            Operator: getCookie('admin')
+            RoleId: this.dialogForm.RoleId,
+            RoleCode: this.dialogForm.RoleCode,
+            RoleName: this.dialogForm.RoleName,
+            RoleTypeCode: this.dialogForm.RoleTypeCode,
+            description: this.dialogForm.description,
+            OperType: this.operation === 'add' ? 'Add' : 'Update'
+            // Operator: getCookie('admin')
           }
-          AddUpdateOrganization(data).then(res => {
+          AddUpdateRole(data).then(res => {
             if (res.code === '200') {
               this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
               this.getRoleSearch()
@@ -407,6 +704,173 @@
         this.mainHeight = window.innerHeight - 200
         this.tableHeight = this.mainHeight - 100
       })
+    },
+    /* 璁剧疆妯″潡*/
+    // 璁剧疆瀵硅瘽妗嗗叧闂簨浠�
+    handleCloseSetting() {
+      this.RoleTypeCodeArr.forEach((item, index) => {
+        if (item.isVisible === 1) {
+          this.RoleTypeCodeArr.splice(index, 1)
+        }
+      })
+    },
+    // 璁剧疆瀵硅瘽妗嗗彇娑堜簨浠�
+    settingDialogVisibleCancel() {
+      this.settingDialogVisible = false
+    },
+    settingDialogVisibleConfirm() {
+
+    },
+    // 娣诲姞鎸夐挳
+    addSetting() {
+      const data = { roletype_code: '', roletype_name: '', isVisible: 1 }
+      this.RoleTypeCodeArr.unshift(data)
+    },
+    // 鍒犻櫎鎸夐挳
+    delSetting(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        RoleTypeDelete({ RoleTypeCode: row.roletype_code }).then(res => {
+          if (res.code === '200') {
+            this.$message.success('鍒犻櫎鎴愬姛!')
+            this.getRoleTypeSearch()
+          }
+        })
+      }).catch(() => {
+        this.$message.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 璁剧疆琛ㄥ崟淇濆瓨浜嬩欢
+    async formSettingSave(row) {
+      if (row.roletype_code.trim().length < 1) {
+        return this.$message.info('绫诲瀷缂栫爜涓嶈兘涓虹┖锛�')
+      }
+      if (row.roletype_name.trim().length < 1) {
+        return this.$message.info('绫诲瀷鍚嶇О涓嶈兘涓虹┖锛�')
+      }
+      const data = {
+        code: row.roletype_code,
+        name: row.roletype_name
+      }
+      const res = await RoleTypeAdd([data])
+      if (res.code === '200') {
+        this.$message.success('娣诲姞鎴愬姛锛�')
+        await this.getRoleTypeSearch()
+      }
+    },
+    // 璁剧疆琛ㄥ崟鍙栨秷浜嬩欢
+    formSettingCancel(row) {
+      this.RoleTypeCodeArr.forEach((item, index) => {
+        if (item.isVisible === 1) {
+          this.RoleTypeCodeArr.splice(index, 1)
+        }
+      })
+    },
+
+    /* 鍏宠仈鐢ㄦ埛妯″潡*/
+    userClick(row) {
+      this.userDialogVisible = true
+      this.userForm.roleName = row.role_name
+      this.userForm.roleCode = row.role_code
+      this.getRoleAssociationUser()
+    },
+    async getRoleAssociationUser() {
+      const res = await RoleAssociationUser(this.dialogFormUser)
+      this.dialogFormUserTable = res.data
+      this.dialogFormUserTableLength = res.count
+
+      this.$nextTick(() => {
+        this.dialogFormUserTable.forEach((item, index) => {
+          if (item.flag === 'Y') {
+            this.$refs.multipleTable.toggleRowSelection(this.dialogFormUserTable[index], true)
+          }
+        })
+      })
+    },
+    // 澶勭悊澶氶��    鏄庡ぉ浣跨敤涓嬫媺澶氶�夊洖鏄捐瘯璇曠湅
+    handleSelectionChange(val) {
+      val.forEach((item, index) => {
+        this.userMultipleArr.push({ code: item.usercode, name: item.username })
+      })
+      this.userMultipleArr.forEach((item, index) => {
+        if (item.code === this.userSingleCode && this.userSingleCodeFlag) {
+          this.userMultipleArr.splice(index, 1)
+        }
+      })
+      console.log(this.userMultipleArr, 2)
+    },
+    handleSelect(selection, row) {
+      this.userMultipleArr.forEach((item, index) => {
+        if (item.code === row.usercode) {
+          this.userSingleCodeFlag = true
+          // this.userMultipleArr.splice(index, 1)
+        }
+      })
+      // console.log(selection, row, 111)
+      this.userSingleCode = row.usercode
+      console.log(this.userMultipleArr, 1)
+    },
+    sortChangeOfUser({ column, prop, order }) {
+      if (order === 'descending') {
+        order = 'desc'
+      } else if (order === 'ascending') {
+        order = 'asc'
+      } else {
+        order = 'desc'
+      }
+      this.dialogFormUser.order = order
+      this.dialogFormUser.prop = prop
+      this.getRoleAssociationUser()
+    },
+    handleCloseUser() {
+      this.dialogFormUser.usercode = ''
+      this.dialogFormUser.username = ''
+      this.dialogFormUser.orgcode = ''
+      this.dialogFormUser.isrole = ''
+      this.$refs.dialogCascaderUser.checkedValue = ''
+    },
+    userDialogVisibleCancel() {
+      this.userDialogVisible = false
+    },
+    async  userDialogVisibleConfirm() {
+      this.userMultipleArr = this.userMultipleArr.filter((currentValue, currentIndex, selfArr) => {
+        return selfArr.findIndex(item => item.code === currentValue.code) === currentIndex
+      })
+      console.log(this.userMultipleArr, 111)
+      // const res = await SaveRoleAssoctUser(this.userMultipleArr, this.userForm.roleCode)
+      // if (res.code === '200') {
+      //   this.$message.success('淇濆瓨鎴愬姛锛�')
+      // }
+    },
+    dialogCascaderChange(val) {
+      this.dialogFormUser.orgcode = val[val.length - 1]
+    },
+    // 缃┖鎸夐挳
+    setRoleAssociationUser() {
+      this.dialogFormUser.usercode = ''
+      this.dialogFormUser.username = ''
+      this.dialogFormUser.orgcode = ''
+      this.dialogFormUser.isrole = ''
+      this.$refs.dialogCascaderUser.checkedValue = ''
+    },
+    /* 瑙掕壊鍏宠仈鏉冮檺瀵硅瘽妗嗛儴鍒�*/
+    rightClick(row) {
+      console.log(row)
+      this.dialogVisibleRight = true
+      this.rightFrom.usercode = row.role_code
+      this.rightFrom.username = row.role_name
+    },
+    handleCloseRight() {
+
+    },
+    rightDialogVisibleCancel() {
+
+    },
+    rightDialogVisibleConfirm() {
+
     }
   }
 }
@@ -452,6 +916,20 @@
   padding: 20px 100px !important;
 }
 
+.settingDialogVisible, .userDialogVisible {
+  ::v-deep .el-dialog__body {
+    padding: 10px 20px !important;
+  }
+}
+.userDialogVisible{
+  ::v-deep .userDialogVisibleInput {
+    //width:calc(100% - 30px) !important;
+  }
+  //::v-deep  .el-form-item {
+  //  width:calc(100% - 30px) !important;
+  //}
+}
+
 ::v-deep .el-radio__input.is-checked .el-radio__inner {
   background-color: $main_color;
   border-color: $main_color;
@@ -494,7 +972,7 @@
   align-items: center;
 }
 
-.el-icon-share ,.el-icon-user-solid{
+.el-icon-share, .el-icon-user-solid {
   color: $main_color;
   cursor: pointer;
 }
@@ -502,20 +980,22 @@
 .el-checkbox.is-bordered.is-checked {
   border-color: $main_color;
 }
+
 ::v-deep .el-radio__input.is-checked .el-radio__inner {
   border-color: $main_color;
   background: $main_color;
 }
 
-::v-deep .el-checkbox__input.is-indeterminate .el-checkbox__inner{
+::v-deep .el-checkbox__input.is-indeterminate .el-checkbox__inner {
   border-color: $main_color;
   background: $main_color;
 }
+
 ::v-deep .el-checkbox__input.is-checked + .el-checkbox__label {
   color: $main_color !important;
 }
 
-::v-deep .el-checkbox.is-bordered+.el-checkbox.is-bordered{
+::v-deep .el-checkbox.is-bordered + .el-checkbox.is-bordered {
   margin: 10px 30px 0px 0;
 }
 
diff --git a/src/views/jcsz/yhqd.vue b/src/views/jcsz/yhqd.vue
index 7df3eca..cd67522 100644
--- a/src/views/jcsz/yhqd.vue
+++ b/src/views/jcsz/yhqd.vue
@@ -51,7 +51,7 @@
           </div>
         </el-form>
       </div>
-      <div style="margin-bottom: 20px;display: flex">
+      <div style="margin-bottom: 20px;display: flex;z-index: 2">
         <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
         <el-button type="primary" icon="el-icon-upload2" @click="upload">瀵煎叆</el-button>
       </div>
diff --git a/src/views/jcsz/zzjg.vue b/src/views/jcsz/zzjg.vue
index 9ad83fc..62d3680 100644
--- a/src/views/jcsz/zzjg.vue
+++ b/src/views/jcsz/zzjg.vue
@@ -36,7 +36,7 @@
           </div>
         </el-form>
       </div>
-      <div style="margin-bottom: 20px;display: flex">
+      <div style="margin-bottom: 20px;display: flex;z-index: 2">
         <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
         <!--        <el-button type="primary" icon="el-icon-edit" @click="edit('edit')">淇敼</el-button>-->
         <!--        <el-button type="primary" icon="el-icon-delete" @click="del">鎵归噺鍒犻櫎</el-button>-->
@@ -57,7 +57,7 @@
           <!--            width="50"-->
           <!--          />-->
           <el-table-column
-            prop="id"
+            prop="RowNum"
             width="50"
             label="搴忓彿"
           />

--
Gitblit v1.9.3