king
2024-02-28 8337f3207e68e03d7e30de2d037691862476deb6
src/views/rolemanage/index.jsx
@@ -3,8 +3,8 @@
import { Spin, notification, Button, Table, Modal, ConfigProvider, Tree, Input, Empty } from 'antd'
import moment from 'moment'
import md5 from 'md5'
import enUS from 'antd/es/locale/en_US'
import zhCN from 'antd/es/locale/zh_CN'
import { ApiOutlined } from '@ant-design/icons'
import Api from '@/api'
import Utils from '@/utils/utils.js'
@@ -15,25 +15,43 @@
const { TreeNode } = Tree
const { Search } = Input
const _locale = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS
const Header = asyncComponent(() => import('./header'))
const TransferForm = asyncComponent(() => import('@/templates/zshare/basetransferform'))
sessionStorage.setItem('isEditState', 'true')
class RoleManage extends Component {
  state = {
    app: null,
    loading: false,
    menulist: [],
    sortType: '',
    columns: [
      { title: '菜单名称', dataIndex: 'MenuName', key: 'MenuName', align: 'center' },
      {
        title: '菜单名称', dataIndex: 'MenuName', key: 'MenuName', align: 'center', render: (text, record) => {
          if (record.extra) {
            return <span style={{color: '#1890ff'}}>{text}</span>
          } else if (record.interfaces === 'true') {
            return <span><ApiOutlined style={{color: 'orange', marginRight: '5px'}} title="菜单中使用了外部接口" />{text}</span>
          }
          return text
        }
      },
      {
        title: '菜单参数', dataIndex: 'MenuNo', key: 'MenuNo', align: 'center'
      },
      {
        title: '修改时间', dataIndex: 'modifydate', key: 'modifydate', align: 'center', sorter: true, render: (text, record) => {
          if (window.GLOB.upStatus && record.up_action === 'Y') {
            return <span style={{color: 'orange'}}>{text}</span>
          }
          return text
        }
      },
      {
        title: '操作',
        key: 'action',
        align: 'center',
        render: (text, record) => (
          <div>
          <div style={{minWidth: '125px'}}>
            {record.type !== 'none' ?
              <Button type="link" onClick={() => this.deleteMenu(record)} style={{color: '#ff4d4f'}}>删除</Button> :
              <Button type="link" onClick={() => {
@@ -85,7 +103,7 @@
  getAppViewList = () => {
    const { app } = this.state
    Api.getSystemConfig({
    Api.getCloudConfig({
      func: 's_get_keyids',
      bid: app.ID
    }).then(result => {
@@ -132,6 +150,7 @@
            try {
              let pageParam = JSON.parse(window.decodeURIComponent(window.atob(item.menus_rolelist)))
              item.nodes = pageParam
              item.interfaces = pageParam.interfaces || 'false'
              
              if (pageParam.type) {
                item.type = pageParam.type
@@ -151,10 +170,12 @@
            delete item.menus_rolelist
          }
          if (!ub && app.userbind === item.MenuID) {
          if (app.userbind === item.MenuID) {
            item.extra = true
            ub = true
          }
          if (!im && app.instantMessage === item.MenuID) {
          if (app.instantMessage === item.MenuID) {
            item.extra = true
            im = true
          }
          
@@ -162,10 +183,10 @@
        })
        if (!im) {
          menus.push({nodes: '', type: 'none', MenuID: app.instantMessage, MenuName: '即时通信'})
          menus.push({nodes: '', type: 'none', extra: true, MenuID: app.instantMessage, MenuName: '即时通信'})
        }
        if (!ub) {
          menus.push({nodes: '', type: 'none', MenuID: app.userbind, MenuName: '用户绑定'})
          menus.push({nodes: '', type: 'none', extra: true, MenuID: app.userbind, MenuName: '用户绑定'})
        }
        this.setState({
@@ -358,7 +379,8 @@
      ParentID: 'mk_app',
      TypeCharOne: app.kei_no,
      typename: app.typename,
      lang: app.lang
      lang: app.lang,
      TYPE: 30
    }).then(res => {
      if (res.status) {
        this.setState({
@@ -391,14 +413,10 @@
      lang: app.lang
    }
    if (app.typename === 'pc' && record.nodes && record.nodes.popviews && record.nodes.popviews.length > 0) {
      param.MenuID = param.MenuID + ',' + record.nodes.popviews.join(',')
    }
    let _param = {
      func: 's_kei_link_keyids_addupt',
      BID: app.ID,
      exec_type: 'y',
      exec_type: 'x',
      LText: ''
    }
@@ -407,7 +425,7 @@
    if (appViewList.length !== _appViewList.length) {
      _param.LText = _appViewList.map(item => `select '${item.keys_id}','${item.keys_type}','${item.kei_no}','${item.appkey}','${item.bid}','${sessionStorage.getItem('CloudUserID')}','${item.remark}'`)
      _param.LText = _param.LText.join(' union all ')
      _param.LText = Utils.formatOptions(_param.LText)
      _param.LText = Utils.formatOptions(_param.LText, 'x')
  
      _param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
      _param.secretkey = Utils.encrypt('', _param.timestamp)
@@ -474,7 +492,7 @@
      confirmLoading: true
    })
    Api.getSystemConfig({
    Api.getCloudConfig({
      func: 'sPC_MainMenu_ReDel',
      MenuID: targetKeys.join(','),
      TypeCharOne: app.kei_no,
@@ -531,10 +549,6 @@
                  delete item.menus_rolelist
                }
                if (targetKeys.includes(item.MenuID) && item.nodes && item.nodes.popviews && item.nodes.popviews.length > 0) {
                  list = [...list, ...item.nodes.popviews]
                }
                
                return item
              })
@@ -545,7 +559,7 @@
            })
            if (app.typename === 'pc' && list.length > 0) {
              Api.getSystemConfig({
              Api.getCloudConfig({
                func: 'sPC_MainMenu_ReDel',
                MenuID: list.join(','),
                TypeCharOne: app.kei_no,
@@ -689,17 +703,17 @@
  }
  saveTree = () => {
    const { trees } = this.state
    // const { trees } = this.state
    const _this = this
    if (!trees || trees.length === 0) {
      notification.warning({
        top: 92,
        message: '未获取到权限信息!',
        duration: 5
      })
      return
    }
    // if (!trees || trees.length === 0) {
    //   notification.warning({
    //     top: 92,
    //     message: '未获取到权限信息!',
    //     duration: 5
    //   })
    //   return
    // }
    confirm({
      content: '确定执行吗?',
@@ -874,17 +888,35 @@
    window.open(window.location.href.replace(/#.+/ig, `#/${route}/${window.btoa(window.encodeURIComponent(JSON.stringify({...app, MenuID: item.MenuID, type: 'app'})))}`))
  }
  changeTable = (pagination, filters, sorter) => {
    this.setState({sortType: sorter.order || ''})
  }
  render () {
    const { app, loading, columns, menulist, trees, searchkey } = this.state
    let _menulist = menulist
    const { app, loading, columns, menulist, trees, searchkey, sortType } = this.state
    let _menulist = fromJS(menulist).toJS()
    if (searchkey) {
      _menulist = _menulist.filter(item => item.MenuName.toLowerCase().indexOf(searchkey.toLowerCase()) > -1)
    }
    if (sortType === 'ascend') {
      _menulist.sort((a, b) => {
        if (a.modifydate > b.modifydate) return 1
        if (a.modifydate < b.modifydate) return -1
        return 0
      })
    } else if (sortType === 'descend') {
      _menulist.sort((a, b) => {
        if (a.modifydate < b.modifydate) return 1
        if (a.modifydate > b.modifydate) return -1
        return 0
      })
    }
    return (
      <div className="mk-role-manage">
        <ConfigProvider locale={_locale}>
        <ConfigProvider locale={zhCN}>
          <Header app={app} />
          {loading ?
            <div className="loading-mask">
@@ -903,6 +935,7 @@
                  columns={columns}
                  dataSource={_menulist}
                  pagination={false}
                  onChange={this.changeTable}
                />
              </div>
            </div>