king
2022-04-18 5706228a119361a22618f4565bb21c274584a6a3
2022-04-18
7个文件已修改
346 ■■■■■ 已修改文件
public/options.json 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/balcony/options.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/appmanage/index.jsx 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/appmanage/submutilform/index.jsx 158 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mobdesign/menuform/index.jsx 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/pcdesign/index.jsx 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/rolemanage/index.jsx 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/options.json
@@ -1,18 +1,18 @@
{
  "appId": "202108312122504607B107A83F55B40C98CCF",
  "appkey": "20210831212235413F287EC3BF489424496C8",
  "appId": "201912040924165801464FF1788654BC5AC73",
  "appkey": "20191106103859640976D6E924E464D029CF0",
  "mainSystemApi": "http://sso.mk9h.cn/cloud/webapi/dostars",
  "systemType": "",
  "externalDatabase": "false",
  "lineColor": "",
  "filter": "false",
  "defaultApp": "mkindustry",
  "defaultApp": "mk",
  "defaultLang": "zh-CN",
  "WXAppID": "",
  "debugger": false,
  "licenseKey": "7EFE13KIKLILIJB64C12",
  "probation": "2021-12-31",
  "licenseKey": "",
  "probation": "",
  "keepPassword": "true",
  "host": "http://demo.mk9h.cn",
  "service": "erp_new/"
  "host": "http://qingqiumarket.cn",
  "service": "MKWMS/"
}
src/menu/components/card/balcony/options.jsx
@@ -1,3 +1,4 @@
import React from 'react'
import { fromJS } from 'immutable'
import MenuUtils from '@/utils/utils-custom.js'
@@ -57,7 +58,12 @@
      field: 'linkType',
      label: '受控类型',
      initval: wrap.linkType || 'static',
      tooltip: '组件与其他组件之间的控制类型,独立类型表示与其他组件没有关联,同步类型中公式与按钮比较特殊,操作数据为其同步组件的数据。',
      tooltip: <div>
        <div>组件与其他组件之间的控制类型: </div>
        <div>1、独立表示与其他组件没有关联。</div>
        <div>2、同步类型中公式、按钮以及全选元素比较特殊,操作数据为其同步组件的数据。</div>
        <div>3、上级类型需添加当前组件的上级组件,并可设置当前组件为始终显示,还是只有在上级组件选行后才显示。</div>
      </div>,
      required: false,
      options: [
        {value: 'static', label: '独立'},
src/views/appmanage/index.jsx
@@ -474,6 +474,11 @@
              cell.statusBarColor = _param.statusBarColor || 'black'
              cell.sysBgColor = _param.sysBgColor || '#ffffff'
              cell.adapter = _param.adapter || ''
              cell.share = _param.share || 'false' // 分享
              cell.share_des = _param.share_des || '' // 分享描述
              cell.share_url = _param.share_url || '' // 分享图片
              cell.share_link = _param.share_link || '' // 分享链接
              if (cell.adapter && (cell.adapter === 'true' || cell.adapter === 'false')) {
                cell.adapter = ''
              }
@@ -484,6 +489,9 @@
            if (cell.user_binding !== 'true') {
              cell.user_binding = 'false'
            }
            if (cell.share !== 'true') {
              cell.share = 'false'
            }
            if (!cell.adapter && cell.apptype) {
@@ -649,7 +657,7 @@
    })
    // 子应用ID、typename、应用ID、CloudUserID、appkey、login_types(是否需要登录,已弃用)、link_type(是否使用短连接,已弃用)、role_type(是否使用角色管理)、lang、css(皮肤)、title(标题)、favicon(图标)、user_binding(用户绑定)、sms_id(短信模板ID)、自定义
    param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || ''})))}'`)
    param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || '', share: item.share || '', share_des: item.share_des || '', share_url: item.share_url || '', share_link: item.share_link || ''})))}'`)
    param.LText = param.LText.join(' union all ')
    param.LText = Utils.formatOptions(param.LText)
    
@@ -894,7 +902,7 @@
          return item
        })
        param.LText = selectApp.sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || ''})))}'`)
        param.LText = selectApp.sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || '', share: item.share || '', share_des: item.share_des || '', share_url: item.share_url || '', share_link: item.share_link || ''})))}'`)
        param.LText = param.LText.join(' union all ')
        param.LText = Utils.formatOptions(param.LText)
      }
@@ -987,7 +995,7 @@
        return item
      })
      param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || ''})))}'`)
      param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || '', share: item.share || '', share_des: item.share_des || '', share_url: item.share_url || '', share_link: item.share_link || ''})))}'`)
      param.LText = param.LText.join(' union all ')
      param.LText = Utils.formatOptions(param.LText)
@@ -1106,8 +1114,12 @@
                let color = skinStyle[item.css] ? skinStyle[item.css].color : '#e8e8e8'
                let binding = ''
                if (item.user_binding === 'true') {
                  binding = '需要'
                  binding = '用户绑定'
                }
                if (item.share === 'true') {
                  binding = binding ? binding + '、分享' : '分享'
                }
                return (
                  <div className="sub-app" key={index} style={{borderColor: color}}>
                    <Row>
@@ -1143,11 +1155,17 @@
                      </Col>
                      <Col span={12}>
                        <div className="app-item">
                          {binding ? <div className="label">
                          {/* {binding ? <div className="label">
                            <Tooltip placement="topLeft" title="微信公众号登录时,系统用户与微信用户的绑定方式。">
                              <QuestionCircleOutlined className="mk-form-tip" />
                              用户绑定:
                            </Tooltip>
                          </div> : null} */}
                          {binding ? <div className="label">
                            <Tooltip placement="topLeft" title="微信公众号或小程序中,绑定系统用户、自定义分享等功能。">
                              <QuestionCircleOutlined className="mk-form-tip" />
                              扩展功能:
                            </Tooltip>
                          </div> : null}
                          <div className="content">{binding}</div>
                        </div>
src/views/appmanage/submutilform/index.jsx
@@ -16,19 +16,29 @@
    inputSubmit: PropTypes.func  // input回车提交
  }
  state = {typename: 'mob', adapters: []}
  state = {typename: 'mob', adapters: [], exts: []}
  UNSAFE_componentWillMount() {
    const { card } = this.props
    let adapters = []
    let exts = []
    let typename = 'mob'
    if (card) {
      typename = card.typename || 'mob'
      adapters = card.adapter ? card.adapter.split(',') : []
      if (typename !== 'pc') {
        if (card.user_binding === 'true') {
          exts.push('user_binding')
        }
        if (card.share === 'true') {
          exts.push('share')
        }
      }
    }
    this.setState({typename, adapters})
    this.setState({typename, adapters, exts})
  }
  /**
@@ -38,31 +48,25 @@
    return new Promise(resolve => {
      this.props.form.validateFieldsAndScroll((err, values) => {
        if (!err) {
          // values.user_binding = values.user_binding ? values.user_binding.join(',') : ''
          values.adapter = values.adapter ? values.adapter.join(',') : ''
          // if (values.user_binding.indexOf('sms_vcode') > -1 && !values.sms_id) {
          //   notification.warning({
          //     top: 92,
          //     message: '手机号绑定时,需要短信模板!',
          //     duration: 5
          //   })
          //   return
          // }
          if (values.exts) {
            values.user_binding = values.exts.includes('user_binding') ? 'true' : 'false'
            values.share = values.exts.includes('share') ? 'true' : 'false'
            delete values.exts
          }
          resolve(values)
        }
      })
    })
  }
  // onChange = (vals) => {
  //   this.setState({user_binding: vals})
  // }
  onAdapterChange = (vals) => {
    if (!vals.includes('weixin') && !vals.includes('wxmini')) {
      this.setState({exts: []})
    }
    this.setState({adapters: vals})
    // if (!vals.includes('weixin') && !vals.includes('wxmini')) {
    //   this.setState({user_binding: []})
    // }
  }
  /**
@@ -76,7 +80,7 @@
  render() {
    const { card, type } = this.props
    const { getFieldDecorator } = this.props.form
    const { typename, adapters } = this.state
    const { typename, adapters, exts } = this.state
    const formItemLayout = {
      labelCol: {
        xs: { span: 24 },
@@ -166,6 +170,23 @@
            </Form.Item>
          </Col> : null}
          {typename !== 'pc' && (adapters.includes('weixin') || adapters.includes('wxmini')) ? <Col span={12}>
            <Form.Item label={
              <Tooltip placement="topLeft" title="在公众号或小程序中,可添加绑定系统用户、自定义分享等功能,自定义分享设置后,当前子应用将默认使用此分享链接。">
                <QuestionCircleOutlined className="mk-form-tip" />
                扩展功能
              </Tooltip>
            }>
              {getFieldDecorator('exts', {
                initialValue: exts
              })(
                <Checkbox.Group onChange={(vals) => this.setState({exts: vals})}>
                  <Checkbox value="user_binding">用户绑定</Checkbox>
                  <Checkbox value="share">分享</Checkbox>
                </Checkbox.Group>
              )}
            </Form.Item>
          </Col> : null}
          {/* {typename !== 'pc' && (adapters.includes('weixin') || adapters.includes('wxmini')) ? <Col span={12}>
            <Form.Item label="用户绑定">
              {getFieldDecorator('user_binding', {
                initialValue: card ? card.user_binding : 'false'
@@ -174,42 +195,59 @@
                  <Radio value="true">需要</Radio>
                  <Radio value="false">不需要</Radio>
                </Radio.Group>
                // <Checkbox.Group onChange={this.onChange}>
                //   <Checkbox value="uname_pwd">账号</Checkbox>
                //   <Checkbox value="sms_vcode">手机短信</Checkbox>
                // </Checkbox.Group>
              )}
            </Form.Item>
          </Col> : null}
          {/* {typename !== 'pc' && user_binding.includes('sms_vcode') ? <Col span={12}>
            <Form.Item label={
              <Tooltip placement="topLeft" title="短信模板可在 云系统->应用服务->开发者中心->短信模板 处添加。">
                <QuestionCircleOutlined className="mk-form-tip" />
                短信模板
              </Tooltip>
            }>
              {getFieldDecorator('sms_id', {
                initialValue: card ? card.sms_id || '' : '',
                rules: [{
                  required: true,
                  message: '使用手机短信时请选择短信模板!'
                }]
              })(
                <Select allowClear>
                  {msgs.map(option =>
                    <Select.Option key={option.ID} value={option.ID}>{option.SignName + ' - ' + option.TemplateCode}</Select.Option>
                  )}
                </Select>
              )}
            </Form.Item>
          </Col> : null} */}
          <Col span={12}>
            <Form.Item label="标题">
            <Form.Item label={
              exts.includes('share') ?
              <Tooltip placement="topLeft" title="子应用及分享时的标题。">
                <QuestionCircleOutlined className="mk-form-tip" />
                标题
              </Tooltip> : '标题'
            }>
              {getFieldDecorator('title', {
                initialValue: card ? card.title || '' : ''
                initialValue: card ? card.title || '' : '',
                rules: exts.includes('share') ? [{
                  required: true,
                  message: '请填写标题!'
                }] : []
              })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
            </Form.Item>
          </Col>
          {exts.includes('share') ? <Col span={12}>
            <Form.Item label={
              <Tooltip placement="topLeft" title="分享时的描述信息。">
                <QuestionCircleOutlined className="mk-form-tip" />
                分享描述
              </Tooltip>
            }>
              {getFieldDecorator('share_des', {
                initialValue: card ? card.share_des || '' : ''
              })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
            </Form.Item>
          </Col> : null}
          {exts.includes('share') ? <Col span={12}>
            <Form.Item label="分享图片">
              {getFieldDecorator('share_url', {
                initialValue: card ? card.share_url : ''
              })(
                <SourceComponent type="picture" placement="right"/>
              )}
            </Form.Item>
          </Col> : null}
          {exts.includes('share') ? <Col span={12}>
            <Form.Item label="分享链接">
              {getFieldDecorator('share_link', {
                initialValue: card ? card.share_link || 'main' : 'main'
              })(
                <Radio.Group>
                  <Radio value="main">应用入口</Radio>
                  <Radio value="view">页面链接</Radio>
                </Radio.Group>
              )}
            </Form.Item>
          </Col> : null}
          <Col span={12}>
            <Form.Item label="网站头像">
              {getFieldDecorator('favicon', {
@@ -219,32 +257,6 @@
              )}
            </Form.Item>
          </Col>
          {/* {typename !== 'pc' && user_binding.length > 0 ? <Col span={12}>
            <Form.Item label={
              <Tooltip placement="topLeft" title="使用微信授权登录时,绑定用户页面的版权声明,注:可添加html标签。">
                <QuestionCircleOutlined className="mk-form-tip" />
                版权
              </Tooltip>
            }>
              {getFieldDecorator('copyright', {
                initialValue: card ? card.copyright || '' : ''
              })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
            </Form.Item>
          </Col> : null}
          {typename !== 'pc' && user_binding.length > 0 ? <Col span={12}>
            <Form.Item label={
              <Tooltip placement="topLeft" title="使用微信授权登录时,绑定用户页面的LOGO。">
                <QuestionCircleOutlined className="mk-form-tip" />
                LOGO
              </Tooltip>
            }>
              {getFieldDecorator('logo', {
                initialValue: card ? card.logo : ''
              })(
                <SourceComponent type="picture" placement="right"/>
              )}
            </Form.Item>
          </Col> : null} */}
          {typename !== 'pc' && adapters.includes('app') ? <Col span={12}>
            <Form.Item label={
              <Tooltip placement="topLeft" title="在使用明科云APP时,页面的切换模式。注:苹果APP暂不支持H5模式。">
src/views/mobdesign/menuform/index.jsx
@@ -25,21 +25,24 @@
  selectChange = (key, value) => {
    const { config } = this.props
    if (key === 'cacheUseful') {
      this.props.updateConfig({...config, cacheUseful: value})
    } else if (key === 'timeUnit') {
      this.props.updateConfig({...config, timeUnit: value})
    } else if (key === 'advertUrl') {
      this.props.updateConfig({...config, advertUrl: value})
    } else if (key === 'advertTime') {
      this.props.updateConfig({...config, advertTime: value})
    } else if (key === 'pullRefresh') {
      this.props.updateConfig({...config, pullRefresh: value})
    } else if (key === 'statusBarbgColor') {
      this.props.updateConfig({...config, statusBarbgColor: value})
    } else if (key === 'permission') {
      this.props.updateConfig({...config, permission: value})
    }
    this.props.updateConfig({...config, [key]: value})
    // if (key === 'cacheUseful') {
    //   this.props.updateConfig({...config, cacheUseful: value})
    // } else if (key === 'timeUnit') {
    //   this.props.updateConfig({...config, timeUnit: value})
    // } else if (key === 'advertUrl') {
    //   this.props.updateConfig({...config, advertUrl: value})
    // } else if (key === 'advertTime') {
    //   this.props.updateConfig({...config, advertTime: value})
    // } else if (key === 'pullRefresh') {
    //   this.props.updateConfig({...config, pullRefresh: value})
    // } else if (key === 'statusBarbgColor') {
    //   this.props.updateConfig({...config, statusBarbgColor: value})
    // } else if (key === 'permission') {
    //   this.props.updateConfig({...config, permission: value})
    // } else if (key === 'share') {
    //   this.props.updateConfig({...config, share: value})
    // }
  }
  // 菜单名称
@@ -240,6 +243,47 @@
              )}
            </Form.Item>
          </Col> : null}
          {adapters.includes('weixin') || adapters.includes('wxmini') ? <Col span={24}>
            <Form.Item label="分享">
              {getFieldDecorator('share', {
                initialValue: config.share || 'default'
              })(
                <Radio.Group onChange={(e) => {this.selectChange('share', e.target.value)}}>
                  <Radio value="default">默认</Radio>
                  <Radio value="custom">自定义</Radio>
                </Radio.Group>
              )}
            </Form.Item>
          </Col> : null}
          {config.share === 'custom' && (adapters.includes('weixin') || adapters.includes('wxmini')) ? <Col span={24}>
            <Form.Item label="分享标题">
              {getFieldDecorator('share_title', {
                initialValue: config.share_title || '',
                rules: [
                  {
                    required: true,
                    message: '请输入分享标题!'
                  }
                ]
              })(<Input placeholder="" autoComplete="off" onChange={(e) => {this.selectChange('share_title', e.target.value)}}/>)}
            </Form.Item>
          </Col> : null}
          {config.share === 'custom' && (adapters.includes('weixin') || adapters.includes('wxmini')) ? <Col span={24}>
            <Form.Item label="分享描述">
              {getFieldDecorator('share_des', {
                initialValue: config.share_des || ''
              })(<Input placeholder="" autoComplete="off" onChange={(e) => {this.selectChange('share_des', e.target.value)}}/>)}
            </Form.Item>
          </Col> : null}
          {config.share === 'custom' && (adapters.includes('weixin') || adapters.includes('wxmini')) ? <Col span={24}>
            <Form.Item label="分享图片">
              {getFieldDecorator('share_url', {
                initialValue: config.share_url || ''
              })(
                <SourceComponent type="picture" placement="right" onChange={(val) => {this.selectChange('share_url', val)}}/>
              )}
            </Form.Item>
          </Col> : null}
          <Col span={24}>
            <Form.Item label="备注">
              {getFieldDecorator('Remark', {
src/views/pcdesign/index.jsx
@@ -248,7 +248,7 @@
      let homeId = MenuID || ''
      let appViewList = []
      if (!homeId && res.data && res.data.length > 0) {
      if (res.data && res.data.length > 0) {
        appViewList = res.data
        appViewList.forEach(item => {
          if (item.keys_type === 'index') {
@@ -1144,30 +1144,34 @@
                title: item.name,
                children: []
              }
              roles.children = item.menus.map(fst => {
                if (fst.property === 'classify' && fst.sublist.length > 0) {
                  return {
                    key: fst.MenuID,
                    title: fst.name,
                    children: fst.sublist.map(scd => {
                      if (scd.property === 'classify' && scd.sublist.length > 0) {
                        return {
                          key: scd.MenuID,
                          title: scd.name,
                          children: scd.sublist.map(thd => {
                            return { key: thd.MenuID, title: thd.name }
                          })
              if (item.wrap.permission === 'true') {
                roles.children = item.menus.map(fst => {
                  if (fst.property === 'classify' && fst.sublist.length > 0) {
                    return {
                      key: fst.MenuID,
                      title: fst.name,
                      children: fst.sublist.map(scd => {
                        if (scd.property === 'classify' && scd.sublist.length > 0) {
                          return {
                            key: scd.MenuID,
                            title: scd.name,
                            children: scd.sublist.map(thd => {
                              return { key: thd.MenuID, title: thd.name }
                            })
                          }
                        } else {
                          return { key: scd.MenuID, title: scd.name }
                        }
                      } else {
                        return { key: scd.MenuID, title: scd.name }
                      }
                    })
                      })
                    }
                  } else {
                    return { key: fst.MenuID, title: fst.name }
                  }
                } else {
                  return { key: fst.MenuID, title: fst.name }
                }
              })
                })
              } else {
                roles.pass = true
              }
              let _param = {
                func: 'sPC_TrdMenu_AddUpt',
src/views/rolemanage/index.jsx
@@ -133,14 +133,15 @@
              let pageParam = JSON.parse(window.decodeURIComponent(window.atob(item.menus_rolelist)))
              item.nodes = pageParam
              
              if (pageParam.type) {
                item.type = pageParam.type
              }
              if (pageParam.version !== '1.0') {
                item.nodes = ''
              } else if (pageParam.login || pageParam.pass) {
                item.nodes = ''
              } else if (pageParam.type === 'navbar') {
                item.type = 'navbar'
              } else if (pageParam.type === 'im') {
                item.type = 'im'
                item.nodes = ''
              }
            } catch (e) {
@@ -513,14 +514,15 @@
                    let pageParam = JSON.parse(window.decodeURIComponent(window.atob(item.menus_rolelist)))
                    item.nodes = pageParam
                    if (pageParam.type) {
                      item.type = pageParam.type
                    }
                    if (pageParam.version !== '1.0') {
                      item.nodes = ''
                    } else if (pageParam.login || pageParam.pass) {
                      item.nodes = ''
                    } else if (pageParam.type === 'navbar') {
                      item.type = 'navbar'
                    } else if (pageParam.type === 'im') {
                      item.type = 'im'
                      item.nodes = ''
                    }
                  } catch (e) {