| | |
| | | "display": "standalone", |
| | | "theme_color": "#000000", |
| | | "background_color": "#ffffff", |
| | | "mk_version": "20250502" |
| | | "mk_version": "20250605" |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * @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 = '') { |
| | |
| | | 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) |
| | |
| | | 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); |
| | |
| | | <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> |
| | |
| | | 'mk-rect', |
| | | { |
| | | inherit: 'rect', |
| | | width: 66, |
| | | height: 36, |
| | | width: 100, |
| | | height: 32, |
| | | attrs: { |
| | | body: { |
| | | strokeWidth: 1, |
| | |
| | | 'mk-polygon', |
| | | { |
| | | inherit: 'polygon', |
| | | width: 66, |
| | | height: 36, |
| | | width: 100, |
| | | height: 32, |
| | | attrs: { |
| | | body: { |
| | | strokeWidth: 1, |
| | |
| | | 'mk-circle', |
| | | { |
| | | inherit: 'circle', |
| | | width: 36, |
| | | height: 36, |
| | | width: 40, |
| | | height: 40, |
| | | attrs: { |
| | | body: { |
| | | strokeWidth: 1, |
| | |
| | | 'mk-ellipse', |
| | | { |
| | | inherit: 'ellipse', |
| | | width: 66, |
| | | height: 36, |
| | | width: 100, |
| | | height: 32, |
| | | attrs: { |
| | | body: { |
| | | strokeWidth: 1, |
| | |
| | | '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: { |
| | |
| | | 'mk-text', |
| | | { |
| | | inherit: 'rect', |
| | | width: 66, |
| | | height: 36, |
| | | width: 100, |
| | | height: 50, |
| | | attrs: { |
| | | body: { |
| | | strokeWidth: 0, |
| | |
| | | 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"> |
| | |
| | | </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" /> |
| | |
| | | })(<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 |
| | |
| | | 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({ |
| | |
| | | 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({ |
| | |
| | | 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')}) |
| | | } |
| | |
| | | 'mk-rect', |
| | | { |
| | | inherit: 'rect', |
| | | width: 66, |
| | | height: 40, |
| | | width: 100, |
| | | height: 32, |
| | | attrs: { |
| | | body: { |
| | | strokeWidth: 1, |
| | |
| | | 'mk-polygon', |
| | | { |
| | | inherit: 'polygon', |
| | | width: 66, |
| | | height: 40, |
| | | width: 100, |
| | | height: 32, |
| | | attrs: { |
| | | body: { |
| | | strokeWidth: 1, |
| | |
| | | 'mk-paral', |
| | | { |
| | | inherit: 'polygon', |
| | | width: 66, |
| | | height: 40, |
| | | width: 100, |
| | | height: 32, |
| | | attrs: { |
| | | body: { |
| | | strokeWidth: 1, |
| | |
| | | 'mk-ellipse', |
| | | { |
| | | inherit: 'ellipse', |
| | | width: 66, |
| | | height: 40, |
| | | width: 100, |
| | | height: 32, |
| | | attrs: { |
| | | body: { |
| | | strokeWidth: 1, |
| | |
| | | 'mk-text', |
| | | { |
| | | inherit: 'text-block', |
| | | width: 66, |
| | | height: 40, |
| | | width: 100, |
| | | height: 50, |
| | | text: '文本域', |
| | | attrs: { |
| | | body: { |
| | |
| | | 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 |
| | | } |
| | |
| | | ], |
| | | layoutOptions: { |
| | | columns: 2, |
| | | columnWidth: 80, |
| | | columnWidth: 110, |
| | | rowHeight: 55 |
| | | } |
| | | }) |
| | |
| | | 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', |
| | |
| | | } |
| | | } |
| | | }) |
| | | 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: '连接' |
| | | } |
| | | } |
| | | }) |
| | |
| | | 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', |
| | |
| | | } |
| | | }) |
| | | |
| | | 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', |
| | |
| | | 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 = [] |
| | |
| | | const stencil = new Stencil({ |
| | | title: '流程图', |
| | | target: graph, |
| | | stencilGraphWidth: 180, |
| | | stencilGraphWidth: 230, |
| | | stencilGraphHeight: 180, |
| | | groups: [ |
| | | { |
| | |
| | | ], |
| | | layoutOptions: { |
| | | columns: 2, |
| | | columnWidth: 80, |
| | | columnWidth: 110, |
| | | rowHeight: 55 |
| | | } |
| | | }) |
| | |
| | | setback = () => { |
| | | if (this.mkGraph.canUndo()) { |
| | | this.mkGraph.undo() |
| | | } else { |
| | | message.warning('无可撤销记录!') |
| | | } |
| | | } |
| | | |
| | | setprev = () => { |
| | | if (this.mkGraph.canRedo()) { |
| | | this.mkGraph.redo() |
| | | } else { |
| | | message.warning('无可前进记录!') |
| | | } |
| | | } |
| | | |
| | |
| | | let cells = this.mkGraph.getCells() |
| | | const that = this |
| | | |
| | | if (cells.length === 0) return |
| | | if (cells.length === 0) { |
| | | message.warning('尚未添加元素!') |
| | | return |
| | | } |
| | | |
| | | confirm({ |
| | | title: '确定清空元素吗?', |
| | |
| | | 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; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | 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() |
| | |
| | | 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 || '')}> |
| | |
| | | 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({ |
| | |
| | | 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({ |
| | |
| | | if (setting.supModule && !BID) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: dict['sup_key_req'] || '需要上级主键值!', |
| | | message: setting.supModTip || dict['sup_key_req'] || '需要上级主键值!', |
| | | duration: 5 |
| | | }) |
| | | |
| | |
| | | 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({ |
| | |
| | | } 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 |
| | |
| | | } 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 |
| | |
| | | * @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 |
| | | } |
| | |
| | | loadingTree: false, |
| | | menuTrees: _tree, |
| | | menuOpenKeys: _openKeys |
| | | }, () => { |
| | | if (this.state.selectRoleId) { |
| | | this.getSelectMenuList() |
| | | } |
| | | }) |
| | | } else { |
| | | this.setState({ |
| | |
| | | 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) { |
| | |
| | | if (setting.supModule && !BID) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: dict['sup_key_req'] || '需要上级主键值!', |
| | | message: setting.supModTip || dict['sup_key_req'] || '需要上级主键值!', |
| | | duration: 5 |
| | | }) |
| | | } else { |
| | |
| | | if (setting.supModule && !BID) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '需要上级主键值!', |
| | | message: setting.supModTip || '需要上级主键值!', |
| | | duration: 5 |
| | | }) |
| | | } else if (data.length === 0) { |
| | |
| | | if (setting.supModule && !BID) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: dict['sup_key_req'] || '需要上级主键值!', |
| | | message: setting.supModTip || dict['sup_key_req'] || '需要上级主键值!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | |
| | | if (setting.supModule && !BID) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: dict['sup_key_req'] || '需要上级主键值!', |
| | | message: setting.supModTip || dict['sup_key_req'] || '需要上级主键值!', |
| | | duration: 5 |
| | | }) |
| | | return false |
| | |
| | | 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() |
| | |
| | | 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 传输号添加回调处理 |
| | |
| | | if (focusField) { |
| | | MKEmitter.emit('resetFocus', btn.uuid, focusField) |
| | | } |
| | | window.GLOB.errFocusId = '' |
| | | |
| | | this.setState({ |
| | | loadingNumber: '', |
| | |
| | | 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) |
| | | } |
| | | |
| | |
| | | if (setting.supModule && !BID) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: dict['sup_key_req'] || '需要上级主键值!', |
| | | message: setting.supModTip || dict['sup_key_req'] || '需要上级主键值!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | |
| | | if (setting.supModule && !BID) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: dict['sup_key_req'] || '需要上级主键值!', |
| | | message: setting.supModTip || dict['sup_key_req'] || '需要上级主键值!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | |
| | | if (!menu) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: dict['no_perm'] || '菜单已删除或没有访问权限!', |
| | | message: dict['no_perm'] || `没有${btn.MenuName ? `菜单《${btn.MenuName}》的` : '此菜单的'}访问权限!`, |
| | | duration: 5 |
| | | }) |
| | | return |
| | |
| | | if (!menu) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: dict['no_perm'] || '菜单已删除或没有访问权限!', |
| | | message: dict['no_perm'] || '没有此菜单的访问权限!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | |
| | | |
| | | 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') { |
| | |
| | | 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) => { |
| | |
| | | }) |
| | | |
| | | this.submitId = formId || '' |
| | | window.GLOB.errFocusId = errId || '' |
| | | |
| | | if (locals) { |
| | | sessionStorage.setItem('local_' + action.uuid, JSON.stringify(locals)) |
| | |
| | | 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) |
| | | } |
| | | } |
| | | }) |
| | |
| | | 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) |
| | | } |
| | |
| | | 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) |
| | | } |
| | | } |
| | | |
| | |
| | | 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) |
| | | } |
| | | } |
| | | |
| | |
| | | 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) |
| | | } |
| | | } |
| | | }) |
| | |
| | | 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) |
| | | } |
| | | } |
| | | }) |
| | |
| | | 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) |
| | | } |
| | | } |
| | | }) |
| | |
| | | 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) |
| | | } |
| | | } |
| | | |
| | |
| | | editable: true, |
| | | options: [], |
| | | width: '25%', |
| | | render: (text, record) => { |
| | | render: (text) => { |
| | | if (!text) return '' |
| | | return text[0] + '+' + shortkeycode[text[1]] |
| | | } |
| | |
| | | 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 ? ( |
| | |
| | | <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'}}> |
| | |
| | | }], |
| | | printTypeColumns: [ |
| | | { |
| | | title: '打印类型', |
| | | title: window.GLOB.dict['print_type'] || '打印类型', |
| | | dataIndex: 'Text', |
| | | width: '26.1%' |
| | | }, |
| | |
| | | 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 ? ( |
| | |
| | | <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'}}> |
| | |
| | | |
| | | 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"> |
| | |
| | | filterSql(script.sql) |
| | | }) |
| | | } |
| | | if (item.setting.supModTip) { |
| | | sql.push(item.setting.supModTip) |
| | | } |
| | | } |
| | | |
| | | if (item.columns) { |
| | |
| | | filterSql(script.sql) |
| | | }) |
| | | } |
| | | if (item.setting.supModTip) { |
| | | sql.push(item.setting.supModTip) |
| | | } |
| | | }) |
| | | } |
| | | |
| | |
| | | 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) |
| | |
| | | script.sql = filterSql(script.sql) |
| | | }) |
| | | } |
| | | if (item.setting.supModTip) { |
| | | item.setting.supModTip = replaceTitle(item.setting.supModTip) |
| | | } |
| | | } |
| | | |
| | | if (item.columns) { |
| | |
| | | item.scripts && item.scripts.forEach(script => { |
| | | script.sql = filterSql(script.sql) |
| | | }) |
| | | } |
| | | if (item.setting.supModTip) { |
| | | item.setting.supModTip = replaceTitle(item.setting.supModTip) |
| | | } |
| | | }) |
| | | } |
| | |
| | | script.sql = filterSql(script.sql) |
| | | }) |
| | | } |
| | | if (item.setting.supModTip) { |
| | | item.setting.supModTip = replaceTitle(item.setting.supModTip) |
| | | } |
| | | } |
| | | |
| | | if (item.columns) { |
| | |
| | | script.sql = filterSql(script.sql) |
| | | }) |
| | | } |
| | | if (item.setting.supModTip) { |
| | | item.setting.supModTip = replaceTitle(item.setting.supModTip) |
| | | } |
| | | }) |
| | | } |
| | | |
| | |
| | | |
| | | 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) { // 长度校验 |
| | |
| | | } |
| | | |
| | | // 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, |
| | |
| | | min-height: 420px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: right; |
| | | justify-content: flex-end; |
| | | padding-right: 20vw; |
| | | overflow: hidden; |
| | | |
| | |
| | | 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'], |