From a837624af068cb3a3455f66d9932fc1509e37b25 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 10 六月 2025 23:37:34 +0800 Subject: [PATCH] 2025-06-10 --- src/tabviews/custom/components/table/base-table/index.jsx | 2 src/tabviews/zshare/mutilform/mkSwitch/index.jsx | 4 src/tabviews/zshare/actionList/popupbutton/index.jsx | 2 src/tabviews/zshare/topSearch/index.jsx | 2 src/tabviews/custom/components/card/double-data-card/index.jsx | 2 src/utils/utils-custom.js | 25 +++ src/menu/components/chart/antv-X6/index.jsx | 24 +- src/tabviews/zshare/actionList/excelInbutton/index.jsx | 2 src/tabviews/zshare/actionList/exceloutbutton/index.jsx | 2 src/tabviews/custom/popview/index.jsx | 2 src/tabviews/zshare/mutilform/mkCheck/index.jsx | 4 src/tabviews/custom/components/table/edit-table/index.jsx | 2 src/tabviews/zshare/mutilform/mkSelect/index.jsx | 4 src/api/index.js | 19 - src/tabviews/zshare/mutilform/mkInput/index.jsx | 2 src/tabviews/custom/components/form/simple-form/index.jsx | 6 src/tabviews/zshare/mutilform/mkVercode/index.jsx | 2 src/tabviews/zshare/mutilform/mkNumberInput/index.jsx | 2 src/tabviews/zshare/actionList/normalbutton/index.jsx | 26 ++- src/tabviews/custom/components/card/data-card/index.jsx | 2 src/utils/utils.js | 4 src/tabviews/custom/components/card/prop-card/index.jsx | 2 src/tabviews/zshare/actionList/tabbutton/index.jsx | 4 src/tabviews/zshare/actionList/funczip/index.jsx | 2 src/components/imgScale/index.scss | 4 public/manifest.json | 2 src/tabviews/rolemanage/index.jsx | 8 src/menu/datasource/verifycard/settingform/index.jsx | 17 ++ src/tabviews/custom/components/table/normal-table/index.jsx | 2 src/tabviews/zshare/actionList/funcMegvii/index.jsx | 2 src/tabviews/custom/components/table/edit-table/normalTable/index.jsx | 2 src/tabviews/zshare/actionList/printbutton/index.jsx | 2 src/tabviews/zshare/mutilform/mkPopSelect/index.jsx | 4 src/tabviews/custom/components/chart/antv-X6/index.scss | 7 src/tabviews/zshare/mutilform/index.jsx | 11 + src/tabviews/custom/components/chart/antv-X6/index.jsx | 184 ++++++++++++---------- src/tabviews/custom/index.jsx | 2 src/views/login/index.scss | 2 src/menu/components/card/prop-card/index.jsx | 2 src/tabviews/zshare/settingcomponent/editTable/index.jsx | 16 +- src/views/systemfunc/sidemenu/config.jsx | 14 src/tabviews/zshare/mutilform/mkDatePicker/index.jsx | 2 src/views/login/index.jsx | 2 43 files changed, 255 insertions(+), 178 deletions(-) diff --git a/public/manifest.json b/public/manifest.json index 809cb78..2ce0dbe 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -6,5 +6,5 @@ "display": "standalone", "theme_color": "#000000", "background_color": "#ffffff", - "mk_version": "20250502" + "mk_version": "20250605" } diff --git a/src/api/index.js b/src/api/index.js index adf6deb..373d628 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -156,25 +156,17 @@ } /** - * @description 浣跨敤dostar鎺ュ彛锛岃烦杩囬獙璇� - * @param {Object} param 鏌ヨ鍙婃彁浜ゅ弬鏁� + * @description 鑰佺郴缁熺櫥褰� */ loginAndRedirect (param) { - let url = '' - if (process.env.NODE_ENV === 'production') { - url = document.location.origin + '/zh-CN/Home/LoginAndRedirect' - } else { - url = window.GLOB.location + '/zh-CN/Home/LoginAndRedirect' - } - return axios({ - url: url, + url: document.location.origin + '/zh-CN/Home/LoginAndRedirect', method: 'post', data: qs.stringify(param) }) } - /* @description 鐩存帴璇锋眰 + /** * @description 寰俊涓氬姟璇锋眰 鍘熸帴鍙� 'wxpay/getaccesstoken' */ // wxAccessToken (appId, domain = '') { @@ -1145,8 +1137,9 @@ res.ErrCode = '-2' MKEmitter.emit('reloadTabs') } else if (res.message === 'permission deny') { - res.message = window.GLOB.dict['permission_deny'] || '鏃犲綋鍓嶈彍鍗曟垨鎸夐挳鐨勮闂潈闄愶紝璇疯仈绯荤鐞嗗憳锛�' - res.ErrMesg = window.GLOB.dict['permission_deny'] || '鏃犲綋鍓嶈彍鍗曟垨鎸夐挳鐨勮闂潈闄愶紝璇疯仈绯荤鐞嗗憳锛�' + let isBtn = url.indexOf('s_TableData_InUpDe') > -1 + res.message = window.GLOB.dict['permission_deny'] || `鏃犲綋鍓�${isBtn ? '鎸夐挳' : '鑿滃崟'}鐨勮闂潈闄愶紝璇疯仈绯荤鐞嗗憳锛乣 + res.ErrMesg = res.message } } resolve(res) diff --git a/src/components/imgScale/index.scss b/src/components/imgScale/index.scss index 8bc7646..f193b66 100644 --- a/src/components/imgScale/index.scss +++ b/src/components/imgScale/index.scss @@ -48,8 +48,8 @@ overflow: hidden; } .mk-image-preview-img { - max-width: 100%; - max-height: 100%; + max-width: 95%; + max-height: 95%; vertical-align: middle; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); diff --git a/src/menu/components/card/prop-card/index.jsx b/src/menu/components/card/prop-card/index.jsx index ec54ba9..3fd1c5c 100644 --- a/src/menu/components/card/prop-card/index.jsx +++ b/src/menu/components/card/prop-card/index.jsx @@ -403,7 +403,7 @@ <CopyComponent type="propcard" card={card}/> <PasteComponent options={['cardcell']} updateConfig={this.pasteComponent} /> <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle}/> - {card.wrap.datatype === 'dynamic' ? <ClockComponent config={card} updateConfig={this.updateComponent}/> : <ClockCircleOutlined style={{color: '#eeeeee', cursor: 'not-allowed'}}/>} + {card.wrap.datatype !== 'public' ? <ClockComponent config={card} updateConfig={this.updateComponent}/> : <ClockCircleOutlined style={{color: '#eeeeee', cursor: 'not-allowed'}}/>} <DeleteOutlined className="close" title="鍒犻櫎缁勪欢" onClick={() => this.props.deletecomponent(card.uuid)} /> {card.wrap.datatype === 'dynamic' ? <SettingComponent config={card} updateConfig={this.updateComponent} /> : <SettingOutlined style={{color: '#eeeeee', cursor: 'not-allowed'}}/>} </div> diff --git a/src/menu/components/chart/antv-X6/index.jsx b/src/menu/components/chart/antv-X6/index.jsx index 4c5cc7c..b5f7239 100644 --- a/src/menu/components/chart/antv-X6/index.jsx +++ b/src/menu/components/chart/antv-X6/index.jsx @@ -68,8 +68,8 @@ 'mk-rect', { inherit: 'rect', - width: 66, - height: 36, + width: 100, + height: 32, attrs: { body: { strokeWidth: 1, @@ -89,8 +89,8 @@ 'mk-polygon', { inherit: 'polygon', - width: 66, - height: 36, + width: 100, + height: 32, attrs: { body: { strokeWidth: 1, @@ -110,8 +110,8 @@ 'mk-circle', { inherit: 'circle', - width: 36, - height: 36, + width: 40, + height: 40, attrs: { body: { strokeWidth: 1, @@ -131,8 +131,8 @@ 'mk-ellipse', { inherit: 'ellipse', - width: 66, - height: 36, + width: 100, + height: 32, attrs: { body: { strokeWidth: 1, @@ -152,8 +152,8 @@ 'mk-star', { inherit: 'polygon', - width: 36, - height: 36, + width: 40, + height: 40, points: '100,10 40,198 190,78 10,78 160,198', attrs: { body: { @@ -175,8 +175,8 @@ 'mk-text', { inherit: 'rect', - width: 66, - height: 36, + width: 100, + height: 50, attrs: { body: { strokeWidth: 0, diff --git a/src/menu/datasource/verifycard/settingform/index.jsx b/src/menu/datasource/verifycard/settingform/index.jsx index cfb2a37..92b8896 100644 --- a/src/menu/datasource/verifycard/settingform/index.jsx +++ b/src/menu/datasource/verifycard/settingform/index.jsx @@ -219,6 +219,7 @@ sm: { span: 16 } } } + let hasUp = !['balcony', 'menubar', 'commonbar', 'tabbar', 'invTable'].includes(config.subtype) && (!config.wrap || config.wrap.supType !== 'multi') && MenuType !== 'billPrint' return ( <div className="model-datasource-setting-form-box"> @@ -474,7 +475,7 @@ </Radio.Group>)} </Form.Item> </Col> : null} - {!['balcony', 'menubar', 'commonbar', 'tabbar', 'invTable'].includes(config.subtype) && (!config.wrap || config.wrap.supType !== 'multi') && MenuType !== 'billPrint' ? <Col span={8}> + {hasUp ? <Col span={8}> <Form.Item label={ <Tooltip placement="topLeft" title={'璇ョ粍浠跺鏋滃彈鍏朵粬缁勪欢鎺у埗锛岃閫夐」鐩稿簲鐨勭粍浠讹紝娌℃湁鏃堕�夆�滄棤鈥濄��'}> <QuestionCircleOutlined className="mk-form-tip" /> @@ -737,6 +738,20 @@ })(<InputNumber min={0} max={60000} precision={0} />)} </Form.Item> </Col> : null} + {hasUp && setting.supModule && setting.supModule[0] && setting.supModule[0] !== 'empty' ? <Col span={8}> + <Form.Item label={ + <Tooltip placement="topLeft" title="鏈幏鍙栧埌涓婄骇涓婚敭鍊肩殑鎻愮ず鏂囨湰銆�"> + <QuestionCircleOutlined className="mk-form-tip" /> + 涓婄骇绌哄�兼彁绀� + </Tooltip> + }> + {getFieldDecorator('supModTip', { + initialValue: setting.supModTip || '' + })( + <Input placeholder={''} autoComplete="off" /> + )} + </Form.Item> + </Col> : null} </Row> </Form> <Modal diff --git a/src/tabviews/custom/components/card/data-card/index.jsx b/src/tabviews/custom/components/card/data-card/index.jsx index 3f04f41..8861386 100644 --- a/src/tabviews/custom/components/card/data-card/index.jsx +++ b/src/tabviews/custom/components/card/data-card/index.jsx @@ -1091,7 +1091,7 @@ if (config.setting.supModule && !BID && config.wrap.supKey !== 'false') { notification.warning({ top: 92, - message: window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: config.setting.supModTip || window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) this.setState({ diff --git a/src/tabviews/custom/components/card/double-data-card/index.jsx b/src/tabviews/custom/components/card/double-data-card/index.jsx index 4fac5cc..3aa3097 100644 --- a/src/tabviews/custom/components/card/double-data-card/index.jsx +++ b/src/tabviews/custom/components/card/double-data-card/index.jsx @@ -1002,7 +1002,7 @@ if (config.setting.supModule && !BID && config.wrap.supKey !== 'false') { notification.warning({ top: 92, - message: window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: config.setting.supModTip || window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) this.setState({ diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx index f0bce0e..2c4e2d2 100644 --- a/src/tabviews/custom/components/card/prop-card/index.jsx +++ b/src/tabviews/custom/components/card/prop-card/index.jsx @@ -161,7 +161,7 @@ MKEmitter.addListener('searchRefresh', this.searchRefresh) } - if (config.timer && config.wrap.datatype === 'dynamic') { + if (config.timer && config.wrap.datatype !== 'public') { this.timer = new TimerTask() this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {this.loadData('timer')}) } diff --git a/src/tabviews/custom/components/chart/antv-X6/index.jsx b/src/tabviews/custom/components/chart/antv-X6/index.jsx index a1df8cf..ed4283f 100644 --- a/src/tabviews/custom/components/chart/antv-X6/index.jsx +++ b/src/tabviews/custom/components/chart/antv-X6/index.jsx @@ -138,8 +138,8 @@ 'mk-rect', { inherit: 'rect', - width: 66, - height: 40, + width: 100, + height: 32, attrs: { body: { strokeWidth: 1, @@ -168,8 +168,8 @@ 'mk-polygon', { inherit: 'polygon', - width: 66, - height: 40, + width: 100, + height: 32, attrs: { body: { strokeWidth: 1, @@ -198,8 +198,8 @@ 'mk-paral', { inherit: 'polygon', - width: 66, - height: 40, + width: 100, + height: 32, attrs: { body: { strokeWidth: 1, @@ -256,8 +256,8 @@ 'mk-ellipse', { inherit: 'ellipse', - width: 66, - height: 40, + width: 100, + height: 32, attrs: { body: { strokeWidth: 1, @@ -318,8 +318,8 @@ 'mk-text', { inherit: 'text-block', - width: 66, - height: 40, + width: 100, + height: 50, text: '鏂囨湰鍩�', attrs: { body: { @@ -900,18 +900,18 @@ const stencil = new Stencil({ title: '娴佺▼鍥�', target: graph, - stencilGraphWidth: 180, + stencilGraphWidth: 230, stencilGraphHeight: 180, groups: [ { title: '閫氱敤鑺傜偣', name: 'group1', - graphHeight: 240 + graphHeight: 150 }, { title: '鑷畾涔�', name: 'group2', - graphHeight: 150, + graphHeight: 300, layoutOptions: { rowHeight: 70 } @@ -919,7 +919,7 @@ ], layoutOptions: { columns: 2, - columnWidth: 80, + columnWidth: 110, rowHeight: 55 } }) @@ -1055,10 +1055,10 @@ mkdata: {status: 0, statusName: '鏈彁浜�'}, attrs: { body: { - rx: 20, - ry: 26, - fill: '#52c41a', - stroke: '#52c41a' + rx: 0, + ry: 0, + fill: '#000000', + stroke: '#000000' }, text: { fill: '#ffffff', @@ -1066,83 +1066,34 @@ } } }) - const r2 = graph.createNode({ - shape: 'mk-rect', - attrs: { - body: { - rx: 20, - ry: 26, - fill: '#e6f4ff', - stroke: '#1890ff' - }, - text: { - text: '杩囩▼' - } - } - }) - const r3 = graph.createNode({ - shape: 'mk-rect', - attrs: { - body: { - rx: 6, - ry: 6, - fill: '#fff7e6', - stroke: '#fa8c16' - }, - text: { - text: '鍙�夎繃绋�' - } - } - }) + const r4 = graph.createNode({ shape: 'mk-rect', attrs: { body: { rx: 0, ry: 0, - fill: '#fff7e6', - stroke: '#fa8c16' + fill: '#ffffff', + stroke: '#757575' }, text: { + fill: '#000000', text: '鑺傜偣' } } }) + const r5 = graph.createNode({ shape: 'mk-polygon', attrs: { body: { refPoints: '0,10 10,0 20,10 10,20', - fill: '#f9f0ff', - stroke: '#722ed1' + fill: '#ffffff', + stroke: '#757575' }, text: { + fill: '#000000', text: '鍐崇瓥' - } - } - }) - const r6 = graph.createNode({ - shape: 'mk-paral', - attrs: { - body: { - refPoints: '10,0 40,0 30,20 0,20', - fill: '#e6fffb', - stroke: '#13c2c2' - }, - text: { - text: '鏁版嵁' - } - } - }) - const r7 = graph.createNode({ - shape: 'mk-circle', - attrs: { - body: { - fill: '#e6f4ff', - stroke: '#1890ff' - }, - text: { - text: '杩炴帴' } } }) @@ -1153,10 +1104,10 @@ mkdata: {status: 888, statusName: '宸插畬鎴�'}, attrs: { body: { - rx: 20, - ry: 26, - fill: '#fa8c16', - stroke: '#fa8c16' + rx: 0, + ry: 0, + fill: '#000000', + stroke: '#000000' }, text: { fill: '#ffffff', @@ -1165,7 +1116,65 @@ } }) - stencil.load([r1, r2, r3, r4, r5, r6, r7, r8], 'group1') + stencil.load([r1, r4, r5, r8], 'group1') + + const r2 = graph.createNode({ + shape: 'mk-rect', + attrs: { + body: { + rx: 20, + ry: 26, + fill: '#ffffff', + stroke: '#757575' + }, + text: { + fill: '#000000', + text: '杩囩▼' + } + } + }) + const r3 = graph.createNode({ + shape: 'mk-rect', + attrs: { + body: { + rx: 6, + ry: 6, + fill: '#ffffff', + stroke: '#757575' + }, + text: { + fill: '#000000', + text: '鍙�夎繃绋�' + } + } + }) + const r6 = graph.createNode({ + shape: 'mk-paral', + attrs: { + body: { + refPoints: '10,0 40,0 30,20 0,20', + fill: '#ffffff', + stroke: '#757575' + }, + text: { + fill: '#000000', + text: '鏁版嵁' + } + } + }) + const r7 = graph.createNode({ + shape: 'mk-circle', + attrs: { + body: { + fill: '#ffffff', + stroke: '#757575' + }, + text: { + fill: '#000000', + text: '杩炴帴' + } + } + }) const p1 = graph.createNode({ shape: 'mk-ellipse', @@ -1180,7 +1189,7 @@ shape: 'mk-text' }) - stencil.load([p1, p2, p3], 'group2') + stencil.load([r2, r3, r6, r7, p1, p2, p3], 'group2') if (this.cells.length > 0) { let cells = [] @@ -1299,7 +1308,7 @@ const stencil = new Stencil({ title: '娴佺▼鍥�', target: graph, - stencilGraphWidth: 180, + stencilGraphWidth: 230, stencilGraphHeight: 180, groups: [ { @@ -1325,7 +1334,7 @@ ], layoutOptions: { columns: 2, - columnWidth: 80, + columnWidth: 110, rowHeight: 55 } }) @@ -1554,12 +1563,16 @@ setback = () => { if (this.mkGraph.canUndo()) { this.mkGraph.undo() + } else { + message.warning('鏃犲彲鎾ら攢璁板綍锛�') } } setprev = () => { if (this.mkGraph.canRedo()) { this.mkGraph.redo() + } else { + message.warning('鏃犲彲鍓嶈繘璁板綍锛�') } } @@ -1737,7 +1750,10 @@ let cells = this.mkGraph.getCells() const that = this - if (cells.length === 0) return + if (cells.length === 0) { + message.warning('灏氭湭娣诲姞鍏冪礌锛�') + return + } confirm({ title: '纭畾娓呯┖鍏冪礌鍚�?', diff --git a/src/tabviews/custom/components/chart/antv-X6/index.scss b/src/tabviews/custom/components/chart/antv-X6/index.scss index 5fc7c62..d4e81ef 100644 --- a/src/tabviews/custom/components/chart/antv-X6/index.scss +++ b/src/tabviews/custom/components/chart/antv-X6/index.scss @@ -86,14 +86,17 @@ display: flex; .mk-stencil { - width: 180px; - min-width: 180px; + width: 240px; + min-width: 240px; height: 100%; position: relative; z-index: 2; border-right: 1px solid #dfe3e8; transition: all 0.2s; + .x6-port { + display: none; + } .x6-widget-stencil-title { display: none; } diff --git a/src/tabviews/custom/components/form/simple-form/index.jsx b/src/tabviews/custom/components/form/simple-form/index.jsx index c3edeff..fc9822d 100644 --- a/src/tabviews/custom/components/form/simple-form/index.jsx +++ b/src/tabviews/custom/components/form/simple-form/index.jsx @@ -403,12 +403,12 @@ } } - mkFormSubmit = (btnId, callback, formId) => { + mkFormSubmit = (btnId, callback, formId, errId) => { const { group } = this.state if (group.uuid !== btnId) return - this.formRef.handleConfirm(formId).then(res => { + this.formRef.handleConfirm(formId, errId).then(res => { MKEmitter.emit('triggerFormSubmit', {menuId: btnId, form: res}) }, () => { callback && callback() @@ -460,7 +460,7 @@ data={data} action={group} unload={config.setting.supModule && !BID} - inputSubmit={(id) => this.mkFormSubmit(group.uuid, null, id)} + inputSubmit={(id, errId) => this.mkFormSubmit(group.uuid, null, id, errId)} wrappedComponentRef={(inst) => this.formRef = inst} /> : null} {data ? <div className={'mk-form-action ' + (group.$button || '')}> diff --git a/src/tabviews/custom/components/table/base-table/index.jsx b/src/tabviews/custom/components/table/base-table/index.jsx index 0099b1e..4117ef4 100644 --- a/src/tabviews/custom/components/table/base-table/index.jsx +++ b/src/tabviews/custom/components/table/base-table/index.jsx @@ -436,7 +436,7 @@ if (config.setting.supModule && !BID) { notification.warning({ top: 92, - message: window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: config.setting.supModTip || window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) this.setState({ diff --git a/src/tabviews/custom/components/table/edit-table/index.jsx b/src/tabviews/custom/components/table/edit-table/index.jsx index 1ce2b6a..7f9b250 100644 --- a/src/tabviews/custom/components/table/edit-table/index.jsx +++ b/src/tabviews/custom/components/table/edit-table/index.jsx @@ -637,7 +637,7 @@ if (setting.supModule && !BID) { notification.warning({ top: 92, - message: window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) this.setState({ diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx index b596c48..8415ed3 100644 --- a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx +++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx @@ -2508,7 +2508,7 @@ if (setting.supModule && !BID) { notification.warning({ top: 92, - message: dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) diff --git a/src/tabviews/custom/components/table/normal-table/index.jsx b/src/tabviews/custom/components/table/normal-table/index.jsx index 2443066..42ec308 100644 --- a/src/tabviews/custom/components/table/normal-table/index.jsx +++ b/src/tabviews/custom/components/table/normal-table/index.jsx @@ -901,7 +901,7 @@ if (setting.supModule && !BID && setting.supKey !== 'false') { notification.warning({ top: 92, - message: window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) this.setState({ diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx index 36e091f..9e84a15 100644 --- a/src/tabviews/custom/index.jsx +++ b/src/tabviews/custom/index.jsx @@ -1258,7 +1258,7 @@ } else if (component.wrap && component.wrap.datatype === 'static') { component.format = '' component.setting = component.setting || {} - component.setting.useMSearch = false + component.setting.useMSearch = component.wrap.useMSearch === 'true' component.setting.sync = 'false' return component diff --git a/src/tabviews/custom/popview/index.jsx b/src/tabviews/custom/popview/index.jsx index 57a2d3f..f0139d1 100644 --- a/src/tabviews/custom/popview/index.jsx +++ b/src/tabviews/custom/popview/index.jsx @@ -905,7 +905,7 @@ } else if (component.wrap && component.wrap.datatype === 'static') { component.format = '' component.setting = component.setting || {} - component.setting.useMSearch = false + component.setting.useMSearch = component.wrap.useMSearch === 'true' component.setting.sync = 'false' return component diff --git a/src/tabviews/rolemanage/index.jsx b/src/tabviews/rolemanage/index.jsx index e8b8fa1..c0bf4b9 100644 --- a/src/tabviews/rolemanage/index.jsx +++ b/src/tabviews/rolemanage/index.jsx @@ -142,11 +142,11 @@ * @description 鑾峰彇鎵�鏈夎彍鍗曡妭鐐癸紝褰㈡垚鏉冮檺鏍� */ getAllMenuList = async () => { - const { selectRoleId, mainMenus } = this.state + const { mainMenus } = this.state let param = { func: 's_rolemenu_get_FunMenu', - RoleID: selectRoleId, + RoleID: '', SelectedType: '', version: 1 } @@ -186,6 +186,10 @@ loadingTree: false, menuTrees: _tree, menuOpenKeys: _openKeys + }, () => { + if (this.state.selectRoleId) { + this.getSelectMenuList() + } }) } else { this.setState({ diff --git a/src/tabviews/zshare/actionList/excelInbutton/index.jsx b/src/tabviews/zshare/actionList/excelInbutton/index.jsx index 6c5f1a0..a022b65 100644 --- a/src/tabviews/zshare/actionList/excelInbutton/index.jsx +++ b/src/tabviews/zshare/actionList/excelInbutton/index.jsx @@ -121,7 +121,7 @@ if (setting.supModule && !BID) { notification.warning({ top: 92, - message: dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) } else if (btn.Ot === 'requiredSgl' && data.length !== 1) { diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx index 36aa1b9..053530d 100644 --- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx +++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx @@ -102,7 +102,7 @@ if (setting.supModule && !BID) { notification.warning({ top: 92, - message: dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) } else { diff --git a/src/tabviews/zshare/actionList/funcMegvii/index.jsx b/src/tabviews/zshare/actionList/funcMegvii/index.jsx index 652dc2a..29638b1 100644 --- a/src/tabviews/zshare/actionList/funcMegvii/index.jsx +++ b/src/tabviews/zshare/actionList/funcMegvii/index.jsx @@ -122,7 +122,7 @@ if (setting.supModule && !BID) { notification.warning({ top: 92, - message: '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) } else if (data.length === 0) { diff --git a/src/tabviews/zshare/actionList/funczip/index.jsx b/src/tabviews/zshare/actionList/funczip/index.jsx index 9bee41a..7c36866 100644 --- a/src/tabviews/zshare/actionList/funczip/index.jsx +++ b/src/tabviews/zshare/actionList/funczip/index.jsx @@ -113,7 +113,7 @@ if (setting.supModule && !BID) { notification.warning({ top: 92, - message: dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) return diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx index 495d224..6a1abc0 100644 --- a/src/tabviews/zshare/actionList/normalbutton/index.jsx +++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx @@ -413,7 +413,7 @@ if (setting.supModule && !BID) { notification.warning({ top: 92, - message: dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) return false @@ -1533,7 +1533,7 @@ if (setting.supModule && !BID) { notification.warning({ top: 92, - message: window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || window.GLOB.dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) _resolve() @@ -2682,11 +2682,16 @@ delete result.message delete result.status - param = { - ...outParam, - ...result, - func: btn.callbackFunc - } + param = {} + + Object.keys(outParam).forEach(key => { + param[key.toLowerCase()] = outParam[key] + }) + Object.keys(result).forEach(key => { + param[key.toLowerCase()] = result[key] + }) + + param.func = btn.callbackFunc if (window.GLOB.mkHS) { if (btn.callbackFunc === 's_sVersion_Local_add' && window.GLOB.forcedUpdate) { // special 浼犺緭鍙锋坊鍔犲洖璋冨鐞� @@ -3011,6 +3016,7 @@ if (focusField) { MKEmitter.emit('resetFocus', btn.uuid, focusField) } + window.GLOB.errFocusId = '' this.setState({ loadingNumber: '', @@ -3837,7 +3843,11 @@ loadingTotal: '', }) - if (btnconfig && btnconfig.setting && btnconfig.setting.errFocus) { + if (window.GLOB.errFocusId && (btnconfig || btn.OpenType === 'formSubmit')) { + MKEmitter.emit('mkFC', 'focus', window.GLOB.errFocusId) + + window.GLOB.errFocusId = '' + } else if (btnconfig && btnconfig.setting && btnconfig.setting.errFocus) { MKEmitter.emit('mkFC', 'focus', btnconfig.setting.errFocus) } diff --git a/src/tabviews/zshare/actionList/popupbutton/index.jsx b/src/tabviews/zshare/actionList/popupbutton/index.jsx index 9c79b09..71fb054 100644 --- a/src/tabviews/zshare/actionList/popupbutton/index.jsx +++ b/src/tabviews/zshare/actionList/popupbutton/index.jsx @@ -155,7 +155,7 @@ if (setting.supModule && !BID) { notification.warning({ top: 92, - message: dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) return diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx index 5b331b5..8b330d2 100644 --- a/src/tabviews/zshare/actionList/printbutton/index.jsx +++ b/src/tabviews/zshare/actionList/printbutton/index.jsx @@ -143,7 +143,7 @@ if (setting.supModule && !BID) { notification.warning({ top: 92, - message: dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) return diff --git a/src/tabviews/zshare/actionList/tabbutton/index.jsx b/src/tabviews/zshare/actionList/tabbutton/index.jsx index 94322e0..d812ec5 100644 --- a/src/tabviews/zshare/actionList/tabbutton/index.jsx +++ b/src/tabviews/zshare/actionList/tabbutton/index.jsx @@ -188,7 +188,7 @@ if (!menu) { notification.warning({ top: 92, - message: dict['no_perm'] || '鑿滃崟宸插垹闄ゆ垨娌℃湁璁块棶鏉冮檺锛�', + message: dict['no_perm'] || `娌℃湁${btn.MenuName ? `鑿滃崟銆�${btn.MenuName}銆嬬殑` : '姝よ彍鍗曠殑'}璁块棶鏉冮檺锛乣, duration: 5 }) return @@ -285,7 +285,7 @@ if (!menu) { notification.warning({ top: 92, - message: dict['no_perm'] || '鑿滃崟宸插垹闄ゆ垨娌℃湁璁块棶鏉冮檺锛�', + message: dict['no_perm'] || '娌℃湁姝よ彍鍗曠殑璁块棶鏉冮檺锛�', duration: 5 }) return diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx index ce72b24..6c3bdc4 100644 --- a/src/tabviews/zshare/mutilform/index.jsx +++ b/src/tabviews/zshare/mutilform/index.jsx @@ -707,6 +707,13 @@ if (item.enter === 'tab' || item.enter === 'sub') { item.tabUuid = '' + if (item.enter === 'sub' && item.errTabField) { + if (item.errTabField === 'origin') { + item.errTabUuid = item.uuid + } else if (fieldMap.has(item.errTabField)) { + item.errTabUuid = fieldMap.get(item.errTabField).uuid + } + } if (item.tabField && fieldMap.has(item.tabField)) { item.tabUuid = fieldMap.get(item.tabField).uuid } else if (item.enter === 'tab') { @@ -1561,10 +1568,11 @@ return fields } - handleConfirm = (formId) => { + handleConfirm = (formId, errId) => { const { action } = this.props const { formlist, send_type, timestamp, n_id } = this.state + window.GLOB.errFocusId = '' // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� return new Promise((resolve, reject) => { this.props.form.validateFieldsAndScroll((err, values) => { @@ -1691,6 +1699,7 @@ }) this.submitId = formId || '' + window.GLOB.errFocusId = errId || '' if (locals) { sessionStorage.setItem('local_' + action.uuid, JSON.stringify(locals)) diff --git a/src/tabviews/zshare/mutilform/mkCheck/index.jsx b/src/tabviews/zshare/mutilform/mkCheck/index.jsx index b6c3195..0079dd8 100644 --- a/src/tabviews/zshare/mutilform/mkCheck/index.jsx +++ b/src/tabviews/zshare/mutilform/mkCheck/index.jsx @@ -30,10 +30,10 @@ config.tabUuid && MKEmitter.emit('mkFC', 'focus', config.tabUuid) if (config.linkFields || config.subFields || config.controlFields) { setTimeout(() => { - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) }, 1000) } else { - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) } } }) diff --git a/src/tabviews/zshare/mutilform/mkDatePicker/index.jsx b/src/tabviews/zshare/mutilform/mkDatePicker/index.jsx index 48ababe..1f96b82 100644 --- a/src/tabviews/zshare/mutilform/mkDatePicker/index.jsx +++ b/src/tabviews/zshare/mutilform/mkDatePicker/index.jsx @@ -78,7 +78,7 @@ MKEmitter.emit('mkFC', 'focus', config.tabUuid) } else if (config.enter === 'sub') { config.tabUuid && MKEmitter.emit('mkFC', 'focus', config.tabUuid) - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) } }, 50) } diff --git a/src/tabviews/zshare/mutilform/mkInput/index.jsx b/src/tabviews/zshare/mutilform/mkInput/index.jsx index 9bdbbcf..0083264 100644 --- a/src/tabviews/zshare/mutilform/mkInput/index.jsx +++ b/src/tabviews/zshare/mutilform/mkInput/index.jsx @@ -125,7 +125,7 @@ MKEmitter.emit('mkFC', 'focus', config.tabUuid) } else { MKEmitter.emit('mkFC', 'focus', config.tabUuid) - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) } } diff --git a/src/tabviews/zshare/mutilform/mkNumberInput/index.jsx b/src/tabviews/zshare/mutilform/mkNumberInput/index.jsx index aa4d070..b842510 100644 --- a/src/tabviews/zshare/mutilform/mkNumberInput/index.jsx +++ b/src/tabviews/zshare/mutilform/mkNumberInput/index.jsx @@ -71,7 +71,7 @@ MKEmitter.emit('mkFC', 'focus', config.tabUuid) } else { MKEmitter.emit('mkFC', 'focus', config.tabUuid) - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) } } diff --git a/src/tabviews/zshare/mutilform/mkPopSelect/index.jsx b/src/tabviews/zshare/mutilform/mkPopSelect/index.jsx index bc9fe92..3aca1c8 100644 --- a/src/tabviews/zshare/mutilform/mkPopSelect/index.jsx +++ b/src/tabviews/zshare/mutilform/mkPopSelect/index.jsx @@ -360,10 +360,10 @@ config.tabUuid && MKEmitter.emit('mkFC', 'focus', config.tabUuid) if (config.subFields) { setTimeout(() => { - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) }, 1000) } else { - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) } } }) diff --git a/src/tabviews/zshare/mutilform/mkSelect/index.jsx b/src/tabviews/zshare/mutilform/mkSelect/index.jsx index ebc1a80..7371348 100644 --- a/src/tabviews/zshare/mutilform/mkSelect/index.jsx +++ b/src/tabviews/zshare/mutilform/mkSelect/index.jsx @@ -162,10 +162,10 @@ config.tabUuid && MKEmitter.emit('mkFC', 'focus', config.tabUuid) if (config.linkFields || config.subFields || config.controlFields) { setTimeout(() => { - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) }, 1000) } else { - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) } } }) diff --git a/src/tabviews/zshare/mutilform/mkSwitch/index.jsx b/src/tabviews/zshare/mutilform/mkSwitch/index.jsx index 7cea5b9..ad7c009 100644 --- a/src/tabviews/zshare/mutilform/mkSwitch/index.jsx +++ b/src/tabviews/zshare/mutilform/mkSwitch/index.jsx @@ -41,10 +41,10 @@ config.tabUuid && MKEmitter.emit('mkFC', 'focus', config.tabUuid) if (config.linkFields || config.subFields || config.controlFields) { setTimeout(() => { - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) }, 1000) } else { - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) } } }) diff --git a/src/tabviews/zshare/mutilform/mkVercode/index.jsx b/src/tabviews/zshare/mutilform/mkVercode/index.jsx index 7f6eff9..080584d 100644 --- a/src/tabviews/zshare/mutilform/mkVercode/index.jsx +++ b/src/tabviews/zshare/mutilform/mkVercode/index.jsx @@ -56,7 +56,7 @@ MKEmitter.emit('mkFC', 'focus', config.tabUuid) } else { config.tabUuid && MKEmitter.emit('mkFC', 'focus', config.tabUuid) - this.props.onSubmit(config.tabUuid) + this.props.onSubmit(config.tabUuid, config.errTabUuid) } } diff --git a/src/tabviews/zshare/settingcomponent/editTable/index.jsx b/src/tabviews/zshare/settingcomponent/editTable/index.jsx index b0a64e2..2dad740 100644 --- a/src/tabviews/zshare/settingcomponent/editTable/index.jsx +++ b/src/tabviews/zshare/settingcomponent/editTable/index.jsx @@ -77,7 +77,7 @@ editable: true, options: [], width: '25%', - render: (text, record) => { + render: (text) => { if (!text) return '' return text[0] + '+' + shortkeycode[text[1]] } @@ -92,7 +92,7 @@ title: window.GLOB.dict['operation'] || '鎿嶄綔', dataIndex: 'operation', width: '140px', - render: (text, record) => { + render: (_, record) => { const { editingKey } = this.state const editable = this.isEditing(record) return editable ? ( @@ -100,11 +100,11 @@ <EditableContext.Consumer> {form => ( <span onClick={() => this.save(form, record.uuid)} style={{ marginRight: 8 , color: '#1890ff', cursor: 'pointer'}}> - 淇濆瓨 + {window.GLOB.dict['save'] || '淇濆瓨'} </span> )} </EditableContext.Consumer> - <span style={{ color: '#1890ff', cursor: 'pointer'}} onClick={() => this.cancel(record.uuid)}>鍙栨秷</span> + <span style={{ color: '#1890ff', cursor: 'pointer'}} onClick={() => this.cancel(record.uuid)}>{window.GLOB.dict['cancel'] || '鍙栨秷'}</span> </div> ) : ( <div className={'edit-operation-btn' + (editingKey !== '' ? ' disabled' : '')} style={{minWidth: '110px'}}> @@ -115,7 +115,7 @@ }], printTypeColumns: [ { - title: '鎵撳嵃绫诲瀷', + title: window.GLOB.dict['print_type'] || '鎵撳嵃绫诲瀷', dataIndex: 'Text', width: '26.1%' }, @@ -130,7 +130,7 @@ title: window.GLOB.dict['operation'] || '鎿嶄綔', dataIndex: 'operation', width: '153px', - render: (text, record) => { + render: (_, record) => { const { editingKey } = this.state const editable = this.isEditing(record) return editable ? ( @@ -138,11 +138,11 @@ <EditableContext.Consumer> {form => ( <span onClick={() => this.save(form, record.uuid, record.parentId)} style={{ marginRight: 8 , color: '#1890ff', cursor: 'pointer'}}> - 淇濆瓨 + {window.GLOB.dict['save'] || '淇濆瓨'} </span> )} </EditableContext.Consumer> - <span style={{ color: '#1890ff', cursor: 'pointer'}} onClick={() => this.cancel(record.uuid)}>鍙栨秷</span> + <span style={{ color: '#1890ff', cursor: 'pointer'}} onClick={() => this.cancel(record.uuid)}>{window.GLOB.dict['cancel'] || '鍙栨秷'}</span> </div> ) : ( <div className={'edit-operation-btn' + (editingKey !== '' ? ' disabled' : '')} style={{minWidth: '110px'}}> diff --git a/src/tabviews/zshare/topSearch/index.jsx b/src/tabviews/zshare/topSearch/index.jsx index 6a50820..06cddd2 100644 --- a/src/tabviews/zshare/topSearch/index.jsx +++ b/src/tabviews/zshare/topSearch/index.jsx @@ -1266,7 +1266,7 @@ return ( <> - <Form {...formItemLayout} className={`mk-search-wrap mk-float-${setting.float} mk-order-${setting.order}`} style={setting.style}> + <Form {...formItemLayout} className={`mk-search-wrap mk-float-${setting.float} mk-order-${setting.order || 'none'}`} style={setting.style}> <Row gutter={24}>{this.getFields()}</Row> {advanceValues.length && (setting.advanceType !== 'pulldown' || (setting.advanceType === 'pulldown' && !visible)) ? <Row gutter={24}> <div className="advanced-list"> diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js index 464d315..87a4db3 100644 --- a/src/utils/utils-custom.js +++ b/src/utils/utils-custom.js @@ -2553,6 +2553,9 @@ filterSql(script.sql) }) } + if (item.setting.supModTip) { + sql.push(item.setting.supModTip) + } } if (item.columns) { @@ -2729,6 +2732,9 @@ filterSql(script.sql) }) } + if (item.setting.supModTip) { + sql.push(item.setting.supModTip) + } }) } @@ -2767,7 +2773,12 @@ ops = ops.map(n => n.replace(/^\s+|\s+$/g, '')) menu = menu.map(n => n.replace(/^\s+|\s+$/g, '')) - sql = sql.filter(Boolean) + sql = sql.filter((n) => { + if (!n) return false + if (/^[a-zA-Z_]+$/.test(n)) return false + + return true + }) btn = btn.filter(Boolean) ops = ops.filter(Boolean) menu = menu.filter(Boolean) @@ -3145,6 +3156,9 @@ script.sql = filterSql(script.sql) }) } + if (item.setting.supModTip) { + item.setting.supModTip = replaceTitle(item.setting.supModTip) + } } if (item.columns) { @@ -3320,6 +3334,9 @@ item.scripts && item.scripts.forEach(script => { script.sql = filterSql(script.sql) }) + } + if (item.setting.supModTip) { + item.setting.supModTip = replaceTitle(item.setting.supModTip) } }) } @@ -3566,6 +3583,9 @@ script.sql = filterSql(script.sql) }) } + if (item.setting.supModTip) { + item.setting.supModTip = replaceTitle(item.setting.supModTip) + } } if (item.columns) { @@ -3726,6 +3746,9 @@ script.sql = filterSql(script.sql) }) } + if (item.setting.supModTip) { + item.setting.supModTip = replaceTitle(item.setting.supModTip) + } }) } diff --git a/src/utils/utils.js b/src/utils/utils.js index c655419..d9502c6 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -1188,6 +1188,10 @@ val = val.replace(/(^\s+$)|\t+|\v+/ig, '') + if (col.interception !== 'false') { + val = val.replace(/^\s+|\s+$/g, '') + } + if (!val && col.required === 'true') { // 蹇呭~鏍¢獙 errors.push(_position + '鍐呭涓嶅彲涓虹┖') } else if (col.limit && val.length > col.limit) { // 闀垮害鏍¢獙 diff --git a/src/views/login/index.jsx b/src/views/login/index.jsx index 94b1fde..2737ed0 100644 --- a/src/views/login/index.jsx +++ b/src/views/login/index.jsx @@ -851,7 +851,7 @@ } // positecgroup - if (res.users_upt === 'true' && window.GLOB.systemType === 'production') { + if (['20210626201522493D7AD7591D7A547278685', '20210626201956190740F1DF384914A3CA9EF'].includes(window.GLOB.appkey) && res.users_upt === 'true' && window.GLOB.systemType === 'production') { Api.genericInterface({ func: 's_Get_local_u_deleted', users_upt_date: res.users_upt_date, diff --git a/src/views/login/index.scss b/src/views/login/index.scss index 7ef832b..daae91b 100644 --- a/src/views/login/index.scss +++ b/src/views/login/index.scss @@ -37,7 +37,7 @@ min-height: 420px; display: flex; align-items: center; - justify-content: right; + justify-content: flex-end; padding-right: 20vw; overflow: hidden; diff --git a/src/views/systemfunc/sidemenu/config.jsx b/src/views/systemfunc/sidemenu/config.jsx index 058481e..37ea55c 100644 --- a/src/views/systemfunc/sidemenu/config.jsx +++ b/src/views/systemfunc/sidemenu/config.jsx @@ -191,13 +191,13 @@ MenuID: '1577972969199lei1g0qkvlh4tkc908m', MenuNo: 'sModularM', MenuName: '绯荤粺妯″潡', - }, { - src: '', - PageParam: {OpenType: 'newtab', Template: 'BaseTable'}, - type: 'BaseTable', - MenuID: '1578479100252lfbp29v1kafk4s4q4ig', - MenuNo: 'BDLanguagePacksM', - MenuName: '璇█鍖�', + // }, { + // src: '', + // PageParam: {OpenType: 'newtab', Template: 'BaseTable'}, + // type: 'BaseTable', + // MenuID: '1578479100252lfbp29v1kafk4s4q4ig', + // MenuNo: 'BDLanguagePacksM', + // MenuName: '璇█鍖�', }, { src: '', systems: ['production', 'local', 'SSO', 'cloud'], -- Gitblit v1.8.0