From bf24b61a7170d8b026eb3234c6714fab3548f9f1 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 04 六月 2025 10:45:13 +0800
Subject: [PATCH] 2025-06-04

---
 src/tabviews/rolemanage/index.jsx |  125 +++++++++++++++++++++++++++--------------
 1 files changed, 82 insertions(+), 43 deletions(-)

diff --git a/src/tabviews/rolemanage/index.jsx b/src/tabviews/rolemanage/index.jsx
index f334a5c..4801d55 100644
--- a/src/tabviews/rolemanage/index.jsx
+++ b/src/tabviews/rolemanage/index.jsx
@@ -1,14 +1,13 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Card, Col, Row, Icon, Menu, notification, Spin, Input, Tabs, Button, Tree, Empty, Select } from 'antd'
+import { Card, Col, Row, Menu, notification, Spin, Input, Tabs, Button, Tree, Empty, Select } from 'antd'
+import { BankOutlined } from '@ant-design/icons'
 import md5 from 'md5'
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
 import MKEmitter from '@/utils/events.js'
-import zhCN from '@/locales/zh-CN/main.js'
-import enUS from '@/locales/en-US/main.js'
 import './index.scss'
 
 const { Search } = Input
@@ -20,12 +19,10 @@
 
 export default class RoleManage extends Component {
   static propTpyes = {
-    MenuNo: PropTypes.string, // 鑿滃崟鍙傛暟
     MenuID: PropTypes.string  // 鑿滃崟Id
   }
 
   state = {
-    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
     loading: true,
     loadingTree: false,
     loadingAppTree: false,
@@ -80,7 +77,7 @@
       func: 's_get_kei'
     }
 
-    Api.getCloudConfig(param).then(result => {
+    Api.getSystemConfig(param).then(result => {
       if (result.status) {
         let applist = result.data.map(item => {
           item.sublist = item.data_detail || []
@@ -109,7 +106,8 @@
    */
   getMainMenuList = async () => {
     let param = {
-      func: 's_rolemenu_get_FstMenu'
+      func: 's_rolemenu_get_FstMenu',
+      version: 1
     }
     let result = await Api.getSystemConfig(param)
 
@@ -119,7 +117,7 @@
         loading: false,
         mainMenus: result.data.map(item => {
           return {
-            title: item.MenuName,
+            title: item.langname ? item.MenuName + '(' + item.langname + ')' : item.MenuName,
             key: item.MenuID,
             children: [],
             selected: true
@@ -144,12 +142,13 @@
    * @description 鑾峰彇鎵�鏈夎彍鍗曡妭鐐癸紝褰㈡垚鏉冮檺鏍�
    */
   getAllMenuList = async () => {
-    const { selectRoleId, mainMenus } = this.state
+    const { mainMenus } = this.state
 
     let param = {
       func: 's_rolemenu_get_FunMenu',
-      RoleID: selectRoleId,
-      SelectedType: ''
+      RoleID: '',
+      SelectedType: '',
+      version: 1
     }
 
     let result = await Api.getSystemConfig(param)
@@ -163,9 +162,19 @@
       //     item.ParentID = item.TypeCharOne
       //   }
       // })
+      // let map = new Map() // 鍘婚噸
+
+      // result.data = result.data.filter(item => {
+      //   if (map.has(item.ParentID + item.MenuID)) return false
+
+      //   map.set(item.ParentID + item.MenuID, true)
+        
+      //   return true
+      // })
+
       let _tree = this.getTree(fromJS(mainMenus).toJS(), result.data)
       if (_tree[0]) {
-        if (_tree[0].key === 'PC' && _tree[0].children) {
+        if (_tree[0].key.indexOf('PC') > -1 && _tree[0].children) {
           // _openKeys = _tree[0].children.map(cell => cell.key)
           this.getOpenNode(_tree[0].children[0], _openKeys)
         } else {
@@ -177,6 +186,10 @@
         loadingTree: false,
         menuTrees: _tree,
         menuOpenKeys: _openKeys
+      }, () => {
+        if (this.state.selectRoleId) {
+          this.getSelectMenuList()
+        }
       })
     } else {
       this.setState({
@@ -199,7 +212,8 @@
 
     let param = {
       func: 's_rolemenu_get_Menulist',
-      RoleID: selectRoleId
+      RoleID: selectRoleId,
+      version: 1
     }
 
     this.setState({
@@ -218,7 +232,7 @@
       this.getCheckedKeys(fromJS(menuTrees).toJS(), _initKeys)
 
       if (menuTrees[0]) {
-        if (menuTrees[0].key === 'PC' && menuTrees[0].children) {
+        if (menuTrees[0].key.indexOf('PC') > -1 && menuTrees[0].children) {
           this.getOpenNode(menuTrees[0].children[0], _openKeys)
         } else {
           this.getOpenNode(menuTrees[0], _openKeys)
@@ -230,7 +244,7 @@
       let _tree = this.getSelectTree(fromJS(menuTrees).toJS(), Keys)
 
       if (_tree[0]) {
-        if (_tree[0].key === 'PC' && _tree[0].children) {
+        if (_tree[0].key.indexOf('PC') > -1 && _tree[0].children) {
           this.getOpenNode(_tree[0].children[0], _openkeys)
         } else {
           this.getOpenNode(_tree[0], _openkeys)
@@ -270,7 +284,8 @@
       RoleID: selectRoleId,
       TypeCharOne: selectApp.kei_no,
       typename: selectSubApp.typename,
-      lang: selectSubApp.lang
+      lang: selectSubApp.lang,
+      version: 1
     }
 
     this.setState({
@@ -359,7 +374,7 @@
   /**
    * @description 鑾峰彇鏉冮檺鍒嗛厤鏍�
    */
-  getTree = (parents, options) => {
+  getTree = (parents, options, addSelf) => {
     parents.forEach(parent => {
       parent.children = []
 
@@ -370,7 +385,7 @@
             title: option.MenuName,
             key: option.MenuID,
             addSelf: option.OnlySelf === 'true',
-            tabs: option.Tabs
+            // tabs: option.Tabs
           })
         }
       })
@@ -378,13 +393,13 @@
       if (parent.children.length === 0) {
         parent.children = null
         // 閽堝鏍囩锛岀敓鎴愭柊鐨刬d锛屽苟淇濆瓨鍏宠仈鍏崇郴锛堟爣绛句笉鍞竴锛�
-        if (parent.tabs) {
-          let _uuid = Utils.getuuid()
-          linkMap.set(_uuid, parent.key)
+        // if (parent.tabs) {
+        //   let _uuid = Utils.getuuid()
+        //   linkMap.set(_uuid, parent.key)
 
-          parent.originKey = parent.key
-          parent.key = _uuid
-        }
+        //   parent.originKey = parent.key
+        //   parent.key = _uuid
+        // }
       } else {
         // 涓夌骇鑿滃崟鍒涘缓瀛愰」
         if (parent.addSelf) {
@@ -395,20 +410,29 @@
           parent.children.unshift({
             title: parent.title + '(浠呴〉闈�)',
             key: _uuid,
-            isSubView: true
+            // isSubView: true
+          })
+        } else if (addSelf) {
+          let _uuid = Utils.getuuid()
+          linkMap.set(_uuid, parent.key)
+          parent.subKey = _uuid
+
+          parent.children.unshift({
+            title: parent.title + '(琛ㄦ牸)',
+            key: _uuid,
           })
         }
 
         // 閽堝鏍囩锛岀敓鎴愭柊鐨刬d锛屽苟淇濆瓨鍏宠仈鍏崇郴锛堟爣绛句笉鍞竴锛�
-        if (parent.tabs) {
-          let _uuid = Utils.getuuid()
-          linkMap.set(_uuid, parent.key)
+        // if (parent.tabs) {
+        //   let _uuid = Utils.getuuid()
+        //   linkMap.set(_uuid, parent.key)
           
-          parent.originKey = parent.key
-          parent.key = _uuid
-        }
+        //   parent.originKey = parent.key
+        //   parent.key = _uuid
+        // }
 
-        parent.children = this.getTree(parent.children, options)
+        parent.children = this.getTree(parent.children, options, parent.addSelf)
       }
     })
     return parents
@@ -445,8 +469,8 @@
           }
         }
         return true
-      } else if (parent.isSubView) {
-        return true
+      // } else if (parent.isSubView) {
+      //   return true
       }
       return false
     })
@@ -555,9 +579,10 @@
           submitloading: false
         }, () => {
           this.getSelectMenuList()
+          this.clearBackSqlCache()
         })
         if (window.GLOB.mainSystemApi) {
-          Api.getLocalConfig(localParam).then(res => {
+          Api.genericInterface(localParam).then(res => {
             if (!res.status) {
               notification.warning({
                 top: 92,
@@ -574,6 +599,20 @@
         notification.warning({
           top: 92,
           message: result.message,
+          duration: 5
+        })
+      }
+    })
+  }
+
+  clearBackSqlCache = () => {
+    if (!window.backend) return
+
+    Api.cacheInterface({}).then(res => {
+      if (!res.status) {
+        notification.warning({
+          top: 92,
+          message: res.message || '缂撳瓨娓呯┖澶辫触锛�',
           duration: 5
         })
       }
@@ -626,7 +665,7 @@
         })
         
         if (window.GLOB.mainSystemApi) {
-          Api.getLocalConfig(localParam).then(res => {
+          Api.genericInterface(localParam).then(res => {
             if (!res.status) {
               notification.warning({
                 top: 92,
@@ -709,15 +748,15 @@
 
     this.setState({loadingAppTree: true})
 
-    Api.getCloudConfig(param).then(result => {
+    Api.getSystemConfig(param).then(result => {
       if (result.status) {
         if (!result.data || result.data.length === 0) {
-          this.setState({loadingAppTree: false, appTrees: []})
+          this.setState({loadingAppTree: false, appTrees: [], appInitCheckKeys: null, appCheckedKeys: [], appOpenKeys: [], selectAppTrees: [], selectAppOpenKeys: []})
         } else {
           this.initTrees(result.data)
         }
       } else {
-        this.setState({loadingAppTree: false, appTrees: []})
+        this.setState({loadingAppTree: false, appTrees: [], appInitCheckKeys: null, appCheckedKeys: [], appOpenKeys: [], selectAppTrees: [], selectAppOpenKeys: []})
         notification.warning({
           top: 92,
           message: result.message,
@@ -770,7 +809,7 @@
 
     let expandedKeys = this.getExpandedKeys(trees, 0, [])
 
-    this.setState({loadingAppTree: false, appTrees: trees, appOpenKeys: expandedKeys}, () => {
+    this.setState({loadingAppTree: false, appInitCheckKeys: null, appCheckedKeys: [], selectAppTrees: [], selectAppOpenKeys: [], appTrees: trees, appOpenKeys: expandedKeys}, () => {
       this.getSelectAppNodeList()
     })
   }
@@ -844,7 +883,7 @@
     const { activeKey, filterRoleList, applist, selectApp, selectSubApp, loading, loadingTree, loadingAppTree, primarykey, menuTrees, appTrees, checkedKeys, appCheckedKeys, menuOpenKeys, selectMenuTrees, selectAppTrees, selectRoleId, selectMenuOpenKeys, selectAppOpenKeys, submitloading, appOpenKeys } = this.state
 
     return (
-      <div className="rolemanage">
+      <div className={'rolemanage' + (applist.length === 0 ? ' manager' : '')}>
         {loading && <Spin size="large" />}
         <Tabs activeKey={activeKey} type="card" onChange={this.changeType}>
           <TabPane tab="绠$悊绯荤粺" key="manage">
@@ -854,7 +893,7 @@
                   className="role-list"
                   title={
                     <span className="role-title">
-                      <Icon type="bank" />
+                      <BankOutlined />
                       <span className="title">瑙掕壊</span>
                       <Search placeholder="" value={primarykey} onChange={e => this.setState({primarykey: e.target.value})} onSearch={this.filterRole} />
                     </span>
@@ -921,7 +960,7 @@
                   className="role-list"
                   title={
                     <span className="role-title">
-                      <Icon type="bank" />
+                      <BankOutlined />
                       <span className="title">瑙掕壊</span>
                       <Search placeholder="" value={primarykey} onChange={e => this.setState({primarykey: e.target.value})} onSearch={this.filterRole} />
                     </span>

--
Gitblit v1.8.0