king
2025-01-16 325aa13d3b61d1c066f8fcab107003ef36713df3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
import React from 'react'
import MkIcon from '@/components/mk-icon'
 
/**
 * @description Wrap表单配置信息
 */
export default function (wrap) {
  let menulist = sessionStorage.getItem('appMenus')
  let searchable = true
  let adapters = sessionStorage.getItem('adapter')
  if (adapters) {
    adapters = adapters.split(',')
  } else {
    adapters = []
  }
 
  window.GLOB.customMenu.components.forEach(item => {
    if (item.type === 'search') {
      searchable = false
    }
  })
 
  if (menulist) {
    try {
      menulist = JSON.parse(menulist)
    } catch (e) {
      menulist = []
    }
  } else {
    menulist = []
  }
 
  let funs = []
 
  if (wrap.back === 'true') {
    funs.push('back')
  }
  if (wrap.logout === 'true') {
    funs.push('logout')
  }
  if (wrap.scan === 'true') {
    funs.push('scan')
  }
  if (wrap.refresh === 'true') {
    funs.push('refresh')
  }
  if (wrap.resetPwd === 'true') {
    funs.push('resetPwd')
  }
 
  const topbarWrapForm = [
    {
      type: 'radio',
      field: 'type',
      label: '类型',
      initval: wrap.type || 'navbar',
      required: false,
      options: [
        {value: 'navbar', label: '导航栏'},
        {value: 'search', label: '搜索框', disabled: !searchable},
        {value: 'searchIcon', label: '搜索标', disabled: !searchable},
      ],
    },
    {
      type: 'text',
      field: 'title',
      label: '标题',
      initval: wrap.title || '',
      // tooltip: '使用搜索框时,标题用于搜索条件隐藏时(当启用黑名单,登录用户无权限时)显示。注:@username代表用户名,@fullname代表姓名。',
      tooltip: '注:@username代表用户名,@fullname代表姓名,@appname代表应用名。',
      required: false
    },
    {
      type: 'checkbox',
      field: 'funs',
      label: '扩展功能',
      tooltip: '1、返回上一页;2、绑定公众号后可分享当前页面;3、二维码以“login”开头时为扫码登录,二维码以“http”开头为页面跳转,二维码以“mkbid”开头为菜单跳转,且设置有关联菜单;4、当前页面刷新;5、退出系统,返回第一个页面。',
      initval: funs,
      required: false,
      options: [
        {value: 'back', label: '返回'},
        {value: 'scan', label: '扫一扫'},
        {value: 'resetPwd', label: '修改密码'},
        {value: 'refresh', label: '刷新'},
        {value: 'logout', label: '退出'},
      ],
      controlFields: [
        {field: 'reload', values: ['back']},
        {field: 'linkmenu', values: ['scan']},
        {field: 'prefix', values: ['scan']},
      ],
      span: 24
    },
    {
      type: 'radio',
      field: 'mode',
      label: '弹框背景',
      initval: wrap.mode || 'dark',
      tooltip: '当存在扩展功能或自定义菜单时,展示对应信息弹窗的背景颜色。',
      required: false,
      options: [
        {value: 'light', label: '白色'},
        {value: 'dark', label: '黑色'},
      ]
    },
    // {
    //   type: 'radio',
    //   field: 'back',
    //   label: '返回',
    //   initval: wrap.back || 'true',
    //   required: false,
    //   options: [
    //     {value: 'true', label: '显示'},
    //     {value: 'false', label: '隐藏'},
    //   ],
    //   controlFields: [
    //     {field: 'reload', values: ['true']},
    //   ]
    // },
    // {
    //   type: 'radio',
    //   field: 'logout',
    //   label: '退出',
    //   initval: wrap.logout || 'false',
    //   tooltip: '点击退出时,返回第一个页面。',
    //   required: false,
    //   options: [
    //     {value: 'true', label: '显示'},
    //     {value: 'false', label: '隐藏'},
    //   ]
    // },
    // {
    //   type: 'radio',
    //   field: 'scan',
    //   label: '扫一扫',
    //   initval: wrap.scan || 'false',
    //   tooltip: '系统功能:1、扫码登录,二维码以“login”开头,2、页面跳转,二维码以“http”开头,3、菜单跳转,二维码以“mkbid”开头,且设置关联菜单',
    //   required: false,
    //   options: [
    //     {value: 'true', label: '显示'},
    //     {value: 'false', label: '隐藏'},
    //   ],
    //   controlFields: [
    //     {field: 'linkmenu', values: ['true']},
    //   ]
    // },
    // {
    //   type: 'radio',
    //   field: 'refresh',
    //   label: '刷新',
    //   initval: wrap.refresh || 'false',
    //   required: false,
    //   options: [
    //     {value: 'true', label: '显示'},
    //     {value: 'false', label: '隐藏'},
    //   ]
    // },
    {
      type: 'radio',
      field: 'reload',
      label: '返回后',
      initval: wrap.reload || 'false',
      tooltip: '返回后是否刷新数据。注:在明科云APP中有效。',
      required: false,
      options: [{
        value: 'false',
        label: '不刷新'
      }, {
        value: 'true',
        label: '刷新'
      }]
    },
    {
      type: 'select',
      field: 'linkmenu',
      label: '关联菜单',
      initval: wrap.linkmenu || '',
      tooltip: '使用扫码登录功能或菜单跳转功能时,需选择跳转的菜单。',
      required: false,
      options: menulist
    },
    {
      type: 'text',
      field: 'prefix',
      label: '前缀',
      initval: wrap.prefix || '',
      tooltip: '扫码信息将与前缀拼接后执行。注:跳转菜单需以mkbid(:或,)开头,mkbid(:或,)跳转后将被去除。例如:mkbid:123456 跳转后页面BID为 123456。',
      required: false
    },
    {
      type: 'radio',
      field: 'minishow',
      label: '小程序中',
      initval: wrap.minishow || 'false',
      tooltip: '导航栏在小程序中是否显示。',
      required: false,
      options: [
        {value: 'true', label: '显示'},
        {value: 'false', label: '隐藏'},
      ],
      forbid: !adapters.includes('wxmini')
    },
    {
      type: 'radio',
      field: 'menuPosition',
      label: '自定义菜单位置',
      initval: wrap.menuPosition || 'right',
      tooltip: '自定义菜单的位置。注:菜单位于左侧时会显示头像,且返回功能被禁用。',
      required: false,
      options: [
        {value: 'left', label: '左侧'},
        {value: 'right', label: '右侧'},
      ]
    },
    {
      type: 'table',
      field: 'menus',
      label: '自定义菜单',
      initval: wrap.menus || [],
      required: false,
      span: 24,
      actions: ['edit', 'del', 'add', 'move', 'view'],
      tip: <span style={{fontSize: '12px', color: '#959595', position: 'relative', top: '-8px'}}>当使用图标<MkIcon type="user"/>,且右侧只有一个菜单时,会显示用户头像。</span>,
      columns: [
        {
          title: '图标',
          dataIndex: 'icon',
          inputType: 'icon',
          editable: true,
          required: true,
          render: (text, record) => <MkIcon type={text}/>,
          width: '23%'
        },
        {
          title: '自定义名称',
          dataIndex: 'name',
          inputType: 'text',
          editable: true,
          required: false,
          width: '23%'
        },
        {
          title: '菜单',
          dataIndex: 'menu',
          inputType: 'select',
          editable: true,
          required: true,
          extends: [{key: 'label', value: 'label'}],
          width: '23%',
          render: (text, record) => record.label,
          options: menulist
        }
      ]
    }
  ]
 
  return topbarWrapForm