public/manifest.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/menu/components/editor/braft-editor/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/menu/components/share/sourcecomponent/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/menu/datasource/verifycard/excelout/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/menu/datasource/verifycard/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/menu/datasource/verifycard/index.scss | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/utils-custom.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/billprint/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/menudesign/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/menudesign/index.scss | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/menudesign/printmenuform/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/mobdesign/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/pcdesign/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/tabledesign/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
public/manifest.json
@@ -6,5 +6,5 @@ "display": "standalone", "theme_color": "#000000", "background_color": "#ffffff", "mk_version": "20240910" "mk_version": "20241002" } src/menu/components/editor/braft-editor/index.jsx
@@ -109,8 +109,9 @@ card.name = card.wrap.name card.errors = [] card.$tables = [] if (card.wrap.datatype !== 'static') { if (card.wrap.datatype === 'dynamic') { card.$c_ds = true card.errors = checkComponent(card) src/menu/components/share/sourcecomponent/index.jsx
@@ -74,12 +74,12 @@ </Radio.Group> : null} {url && type === 'video' ? <div className="mk-source-item-info"> <PaperClipOutlined /> <a target="_blank" rel="noopener noreferrer" href={url}>{name}</a> <a target="_blank" rel="noopener noreferrer" href={url.replace(/@mywebsite@\//ig, window.GLOB.baseurl)}>{name}</a> <DeleteOutlined title="删除文件" onClick={this.deleteUrl}/> </div> : null} {url && type !== 'video' && url !== '@icon@' ? <div className="mk-source-item-info picture"> <img src={url.replace(/@mywebsite@\//ig, window.GLOB.baseurl)} alt="" /> <a target="_blank" rel="noopener noreferrer" href={url}>{name}</a> <a target="_blank" rel="noopener noreferrer" href={url.replace(/@mywebsite@\//ig, window.GLOB.baseurl)}>{name}</a> <DeleteOutlined title="删除文件" onClick={this.deleteUrl}/> </div> : null} {url && type !== 'video' && url === '@icon@' ? <div className="mk-source-item-info avatar"> src/menu/datasource/verifycard/excelout/index.jsx
@@ -69,7 +69,7 @@ } render() { return (<DownloadOutlined className="columns-out" onClick={this.actionTrigger}/>) return (<DownloadOutlined className="columns-out" title="下载" onClick={this.actionTrigger}/>) } } src/menu/datasource/verifycard/index.jsx
@@ -1186,6 +1186,33 @@ }) } tolowercase = (type) => { const that = this confirm({ content: type === 'sub' ? '确定将子表字段转为小写吗?' : '确定将字段转为小写吗?', onOk() { that.execlowercase(type) }, onCancel() {} }) } execlowercase = (type) => { const { subColumns, columns } = this.state if (type === 'sub') { this.setState({subColumns: fromJS(subColumns).toJS().map(col => { col.field = col.field.toLowerCase() return col })}) } else { this.setState({columns: fromJS(columns).toJS().map(col => { col.field = col.field.toLowerCase() return col })}) } } /** * @description 组件销毁,清除state更新 */ @@ -1233,6 +1260,7 @@ type="fields" updatefield={this.updatefields} /> <SwapOutlined className="columns-lowercase" title="转小写" onClick={() => this.tolowercase()}/> <ExcelOut data={columns} setting={setting}/> <EditTable actions={['edit', 'move', 'copy', 'del', 'clear']} searchKey={searchKey} type="datasourcefield" wrappedComponentRef={(inst) => this.datasource = inst} data={columns} columns={colColumns} onChange={(columns) => this.setState({columns})}/> </TabPane> : <TabPane tab={ @@ -1257,6 +1285,7 @@ type="fields" updatefield={this.updateSubfields} /> <SwapOutlined className="columns-lowercase" title="转小写" onClick={() => this.tolowercase('sub')}/> <ExcelOut data={subColumns} setting={setting}/> <EditTable actions={['edit', 'move', 'copy', 'del', 'clear']} searchKey={searchKey} type="datasourcefield" wrappedComponentRef={(inst) => this.subdatasource = inst} data={subColumns} columns={colColumns} onChange={(subColumns) => this.setState({subColumns})}/> </TabPane> : null} src/menu/datasource/verifycard/index.scss
@@ -146,6 +146,16 @@ margin-right: 5px; cursor: pointer; } .columns-lowercase { float: right; position: relative; z-index: 2; right: 30px; height: 0px; top: -15px; color: orange; cursor: pointer; } .columns-out { float: right; position: relative; @@ -159,7 +169,7 @@ .ant-table-thead { .copy-control { top: -18px; right: 30px; right: 55px; .anticon-copy { margin-right: 12px; } src/utils/utils-custom.js
@@ -4799,7 +4799,7 @@ // SELECT @appkey@,'sPC_Get_TableData',1,@menuname@,@UserID@,@username@,@fullname@,@SessionUid@,@LoginUID@ let sql = '' if (item.setting.transact === 'true') { if (item.setting.transact === 'true' && !/BEGIN\s+TRY\s+begin\s+TRAN/.test(_customScript)) { sql = `/* ${item.setting.$name} */ BEGIN TRY begin TRAN @@ -4808,9 +4808,38 @@ arr_field='${arr_field}',tabid='${tabid}',parid='${parid}',sub_name='${sub_name}',sub_field='${sub_field}' ` let e_sql = `select ${_columns.map(col => col.field).join(',')} from (select ${_columns.map(col => /date/ig.test(col.datatype) ? `'1949-10-01' as ${col.field}` : `'0' as ${col.field}`).join(',')}) a where ${item.setting.primaryKey || 'ID'} != '0'` if (DateCount) { e_sql += ` select 0 as total ` } _tailScript = `${_tailScript} select @ErrorCode as ErrorCode,@retmsg as retmsg ${callback} COMMIT TRAN set NOCOUNT ON RETURN END TRY BEGIN CATCH ROLLBACK TRAN DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; set @ErrorCode=cast(ERROR_NUMBER() as nvarchar(50)) set @retmsg=ERROR_MESSAGE(); select @ErrorMessage=ERROR_MESSAGE(), @ErrorSeverity=ERROR_SEVERITY(), @ErrorState=ERROR_STATE(); RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState); END CATCH aaa: ${e_sql} select @ErrorCode as ErrorCode,@retmsg as retmsg GOTO_RETURN: ROLLBACK TRAN ` } else { sql = `/* ${item.setting.$name} */ src/views/billprint/index.jsx
@@ -1043,63 +1043,79 @@ } } while (!over) { let page = [] let count = 0 let _pageover = false comps.forEach(comp => { let item = fromJS(comp).toJS() if (item.wrap.printType === 'headerOrfooter') { // 页眉页脚 item.data = item.dataArray || null setData(item) page.push(item) comp.added = true } if (_pageover) return if (item.$page && comp.dataArray.length > 0) { item.data = [] while (count + 1 <= limit && comp.dataArray.length > 0) { item.data.push(comp.dataArray.shift()) count++ } if (count >= limit || comp.dataArray.length > 0) { _pageover = true } if (comp.dataArray.length === 0) { if (this.state.config.printPage === 'custom' && this.state.config.printScripts) { try { // eslint-disable-next-line let func = new Function('components', 'pages', 'notification', this.state.config.printScripts) func(comps, pages, notification) } catch (e) { console.warn(e) notification.warning({ top: 92, message: '自定义脚本执行错误!', duration: 5 }) } } else { while (!over) { let page = [] let count = 0 let _pageover = false comps.forEach(comp => { let item = fromJS(comp).toJS() if (item.wrap.printType === 'headerOrfooter') { // 页眉页脚 item.data = item.dataArray || null setData(item) page.push(item) comp.added = true } setData(item) page.push(item) } else if (!comp.added) { if (item.wrap.printHeight) { count += item.wrap.printHeight if (count >= limit) { _pageover = true return if (_pageover) return if (item.$page && comp.dataArray.length > 0) { item.data = [] while (count + 1 <= limit && comp.dataArray.length > 0) { item.data.push(comp.dataArray.shift()) count++ } if (count >= limit || comp.dataArray.length > 0) { _pageover = true } if (comp.dataArray.length === 0) { comp.added = true } setData(item) page.push(item) } else if (!comp.added) { if (item.wrap.printHeight) { count += item.wrap.printHeight if (count >= limit) { _pageover = true return } } item.data = item.dataArray || null setData(item) page.push(item) comp.added = true } item.data = item.dataArray || null setData(item) page.push(item) comp.added = true }) pages.push(page) pageIndex++ if (pageIndex >= 2000 || comps.findIndex(comp => !comp.added) === -1) { over = true } }) pages.push(page) pageIndex++ if (pageIndex >= 2000 || comps.findIndex(comp => !comp.added) === -1) { over = true } } src/views/menudesign/index.jsx
@@ -1323,7 +1323,7 @@ <StyleCombControlButton menu={config} /> <PasteController insert={this.insert} /> {config ? <Switch className="big" checkedChildren="启" unCheckedChildren="停" checked={config.enabled} onChange={this.onEnabledChange} /> : null} <Button type="primary" id="save-config" className={needUpdate ? 'update-tip' : ''} onClick={this.submitConfig} loading={menuloading}>保存</Button> <Button type="primary" id="save-config" disabled={!config} className={needUpdate ? 'update-tip' : ''} onClick={this.submitConfig} loading={menuloading}>保存</Button> <Button type="default" disabled={menuloading} onClick={this.closeView}>关闭</Button> </div> } style={{ width: '100%' }}> src/views/menudesign/index.scss
@@ -17,6 +17,13 @@ top: calc(50vh - 70px); z-index: 10; } .mini-radio { white-space: nowrap; span.ant-radio + * { padding-right: 0px; padding-left: 4px; } } .mk-hidden { text-decoration: line-through!important; span { src/views/menudesign/printmenuform/index.jsx
@@ -1,14 +1,20 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { Form, Row, Col, InputNumber, Select, Radio, Tooltip, Input } from 'antd' import { Form, Row, Col, InputNumber, Select, Radio, Tooltip, Input, Modal } from 'antd' import { QuestionCircleOutlined, EditOutlined } from '@ant-design/icons' import CodeMirror from '@/templates/zshare/codemirror' // import './index.scss' class MainSearch extends Component { static propTpyes = { config: PropTypes.object, updateConfig: PropTypes.func } state = { visible: false, printScripts: '' } selectChange = (key, value) => { @@ -76,9 +82,22 @@ }) } onScriptChange = (val) => { this.setState({printScripts: val}) } submit = () => { const { config } = this.props const { printScripts } = this.state this.setState({visible: false}) this.props.updateConfig({...config, printScripts}) } render() { const { config } = this.props const { getFieldDecorator } = this.props.form const { visible, printScripts } = this.state const formItemLayout = { labelCol: { xs: { span: 24 }, @@ -91,186 +110,206 @@ } return ( <Form {...formItemLayout}> <Row> <Col span={24}> <Form.Item label="菜单名称"> <span style={{display: 'inline-block', wordBreak: 'break-all', lineHeight: 1.5}}> {config.MenuName} </span> </Form.Item> </Col> <Col span={24}> <Form.Item label="菜单参数"> <span style={{display: 'inline-block', wordBreak: 'break-all', lineHeight: 1.5}}> {config.MenuNo} </span> </Form.Item> </Col> <Col span={24}> <Form.Item label="打印尺寸"> {getFieldDecorator('pageSize', { initialValue: config.pageSize || 'A4', rules: [ { required: true, message: '请选择打印尺寸!' } ] })( <Select onChange={(val) => this.selectChange('pageSize', val)}> <Select.Option value="A3">A3</Select.Option> <Select.Option value="A4">A4</Select.Option> <Select.Option value="A5">A5</Select.Option> </Select> )} </Form.Item> </Col> <Col span={24}> <Form.Item label="打印布局"> {getFieldDecorator('pageLayout', { initialValue: config.pageLayout || 'vertical', rules: [ { required: true, message: '请选择打印布局!' } ] })( <Radio.Group onChange={(e) => this.selectChange('pageLayout', e.target.value)}> <Radio value="vertical">纵向</Radio> <Radio value="horizontal">横向</Radio> </Radio.Group> )} </Form.Item> </Col> <Col span={24}> <Form.Item label="打印边距"> {getFieldDecorator('pagePadding', { initialValue: config.pagePadding || 'default', rules: [ { required: true, message: '请选择打印边距!' } ] })( <Radio.Group onChange={(e) => this.selectChange('pagePadding', e.target.value)}> <Radio value="default">默认</Radio> <Radio value="without">无</Radio> </Radio.Group> )} </Form.Item> </Col> <Col span={24}> <Form.Item label="页面布局"> {getFieldDecorator('printPage', { initialValue: config.printPage || 'auto' })( <Radio.Group onChange={(e) => this.selectChange('printPage', e.target.value)}> <Radio value="auto">自适应</Radio> <Radio value="page">分页</Radio> </Radio.Group> )} </Form.Item> </Col> {config.printPage === 'page' ? <Col span={24}> <Form.Item label="每页数(条)"> {getFieldDecorator('everyPCount', { initialValue: config.everyPCount || 15, rules: [ { required: true, message: '请输入每页数!' } ] })(<InputNumber min={1} max={1000} precision={1} onChange={(val) => this.selectChange('everyPCount', val)}/>)} </Form.Item> </Col> : null} <Col span={24}> <Form.Item label={ <Tooltip placement="topLeft" title="针对不规则纸张,可自定义设置打印高度和宽度,注:同时设置打印宽度和高度后方可生效。"> <QuestionCircleOutlined className="mk-form-tip" /> 自定义 </Tooltip> }> {getFieldDecorator('printCustom', { initialValue: config.printCustom || 'false' })( <Radio.Group onChange={(e) => this.selectChange('printCustom', e.target.value)}> <Radio value="false">不启用</Radio> <Radio value="true">启用</Radio> </Radio.Group> )} </Form.Item> </Col> {config.printCustom === 'true' ? <Col span={24}> <Form.Item label="打印宽度"> {getFieldDecorator('printWidth', { initialValue: config.printWidth || '' })(<InputNumber min={10} max={9999} precision={0} onChange={(val) => this.selectChange('printWidth', val)}/>)} </Form.Item> </Col> : null} {config.printCustom === 'true' ? <Col span={24}> <Form.Item label="打印高度"> {getFieldDecorator('printHeight', { initialValue: config.printHeight || '' })(<InputNumber min={10} max={9999} precision={0} onChange={(val) => this.selectChange('printHeight', val)}/>)} </Form.Item> </Col> : null} <Col span={24}> <Form.Item label="回调"> {getFieldDecorator('callback', { initialValue: config.callback || 'false' })( <Radio.Group onChange={(e) => this.selectChange('callback', e.target.value)}> <Radio value="false">不启用</Radio> <Radio value="true">启用</Radio> </Radio.Group> )} </Form.Item> </Col> {config.callback === 'true' ? <Col span={24}> <Form.Item label={ <Tooltip placement="topLeft" title="回调函数执行成功后默认会刷新源菜单页,返回信息(@retmsg)中含有(@no_target_menu@)可阻止此项刷新。"> <QuestionCircleOutlined className="mk-form-tip" /> 回调函数 </Tooltip> }> s_print_proc <EditOutlined style={{cursor: 'pointer'}} onClick={() => {window.open('#/proc/s_print_proc')}}/> </Form.Item> </Col> : null} {config.callback === 'true' ? <Col span={24}> <Form.Item label="回调参数"> {getFieldDecorator('callNo', { initialValue: config.callNo || '', rules: [ { required: true, message: '请填写回调参数!' }, { pattern: /^[a-zA-Z0-9_]+$/, message: '回调参数只可使用字母、数字以及_' } ] })(<Input onChange={(e) => this.selectChange('callNo', e.target.value)}/>)} </Form.Item> </Col> : null} <Col span={24}> <Form.Item label={ <Tooltip placement="topLeft" title="可自定义在浏览器标题栏中显示的网页标题。"> <QuestionCircleOutlined className="mk-form-tip" /> 网页标题 </Tooltip> }> {getFieldDecorator('webTitle', { initialValue: config.webTitle || '' })(<Input onChange={(e) => this.selectChange('webTitle', e.target.value)}/>)} </Form.Item> </Col> </Row> </Form> <> <Form {...formItemLayout}> <Row> <Col span={24}> <Form.Item label="菜单名称"> <span style={{display: 'inline-block', wordBreak: 'break-all', lineHeight: 1.5}}> {config.MenuName} </span> </Form.Item> </Col> <Col span={24}> <Form.Item label="菜单参数"> <span style={{display: 'inline-block', wordBreak: 'break-all', lineHeight: 1.5}}> {config.MenuNo} </span> </Form.Item> </Col> <Col span={24}> <Form.Item label="打印尺寸"> {getFieldDecorator('pageSize', { initialValue: config.pageSize || 'A4', rules: [ { required: true, message: '请选择打印尺寸!' } ] })( <Select onChange={(val) => this.selectChange('pageSize', val)}> <Select.Option value="A3">A3</Select.Option> <Select.Option value="A4">A4</Select.Option> <Select.Option value="A5">A5</Select.Option> </Select> )} </Form.Item> </Col> <Col span={24}> <Form.Item label="打印布局"> {getFieldDecorator('pageLayout', { initialValue: config.pageLayout || 'vertical', rules: [ { required: true, message: '请选择打印布局!' } ] })( <Radio.Group onChange={(e) => this.selectChange('pageLayout', e.target.value)}> <Radio value="vertical">纵向</Radio> <Radio value="horizontal">横向</Radio> </Radio.Group> )} </Form.Item> </Col> <Col span={24}> <Form.Item label="打印边距"> {getFieldDecorator('pagePadding', { initialValue: config.pagePadding || 'default', rules: [ { required: true, message: '请选择打印边距!' } ] })( <Radio.Group onChange={(e) => this.selectChange('pagePadding', e.target.value)}> <Radio value="default">默认</Radio> <Radio value="without">无</Radio> </Radio.Group> )} </Form.Item> </Col> <Col span={24}> <Form.Item label="页面布局"> {getFieldDecorator('printPage', { initialValue: config.printPage || 'auto' })( <Radio.Group className="mini-radio" onChange={(e) => this.selectChange('printPage', e.target.value)}> <Radio value="auto">自适应</Radio> <Radio value="page">分页</Radio> <Radio value="custom">自定义</Radio> </Radio.Group> )} </Form.Item> </Col> {config.printPage === 'custom' ? <Col span={24}> <Form.Item label="自定义脚本"> <EditOutlined style={{color: '#1890ff'}} onClick={() => this.setState({visible: true, printScripts: config.printScripts || ''})} /> </Form.Item> </Col> : null} {config.printPage === 'page' ? <Col span={24}> <Form.Item label="每页数(条)"> {getFieldDecorator('everyPCount', { initialValue: config.everyPCount || 15, rules: [ { required: true, message: '请输入每页数!' } ] })(<InputNumber min={1} max={1000} precision={1} onChange={(val) => this.selectChange('everyPCount', val)}/>)} </Form.Item> </Col> : null} <Col span={24}> <Form.Item label={ <Tooltip placement="topLeft" title="针对不规则纸张,可自定义设置打印高度和宽度,注:同时设置打印宽度和高度后方可生效。"> <QuestionCircleOutlined className="mk-form-tip" /> 自定义 </Tooltip> }> {getFieldDecorator('printCustom', { initialValue: config.printCustom || 'false' })( <Radio.Group onChange={(e) => this.selectChange('printCustom', e.target.value)}> <Radio value="false">不启用</Radio> <Radio value="true">启用</Radio> </Radio.Group> )} </Form.Item> </Col> {config.printCustom === 'true' ? <Col span={24}> <Form.Item label="打印宽度"> {getFieldDecorator('printWidth', { initialValue: config.printWidth || '' })(<InputNumber min={10} max={9999} precision={0} onChange={(val) => this.selectChange('printWidth', val)}/>)} </Form.Item> </Col> : null} {config.printCustom === 'true' ? <Col span={24}> <Form.Item label="打印高度"> {getFieldDecorator('printHeight', { initialValue: config.printHeight || '' })(<InputNumber min={10} max={9999} precision={0} onChange={(val) => this.selectChange('printHeight', val)}/>)} </Form.Item> </Col> : null} <Col span={24}> <Form.Item label="回调"> {getFieldDecorator('callback', { initialValue: config.callback || 'false' })( <Radio.Group onChange={(e) => this.selectChange('callback', e.target.value)}> <Radio value="false">不启用</Radio> <Radio value="true">启用</Radio> </Radio.Group> )} </Form.Item> </Col> {config.callback === 'true' ? <Col span={24}> <Form.Item label={ <Tooltip placement="topLeft" title="回调函数执行成功后默认会刷新源菜单页,返回信息(@retmsg)中含有(@no_target_menu@)可阻止此项刷新。"> <QuestionCircleOutlined className="mk-form-tip" /> 回调函数 </Tooltip> }> s_print_proc <EditOutlined style={{cursor: 'pointer'}} onClick={() => {window.open('#/proc/s_print_proc')}}/> </Form.Item> </Col> : null} {config.callback === 'true' ? <Col span={24}> <Form.Item label="回调参数"> {getFieldDecorator('callNo', { initialValue: config.callNo || '', rules: [ { required: true, message: '请填写回调参数!' }, { pattern: /^[a-zA-Z0-9_]+$/, message: '回调参数只可使用字母、数字以及_' } ] })(<Input onChange={(e) => this.selectChange('callNo', e.target.value)}/>)} </Form.Item> </Col> : null} <Col span={24}> <Form.Item label={ <Tooltip placement="topLeft" title="可自定义在浏览器标题栏中显示的网页标题。"> <QuestionCircleOutlined className="mk-form-tip" /> 网页标题 </Tooltip> }> {getFieldDecorator('webTitle', { initialValue: config.webTitle || '' })(<Input onChange={(e) => this.selectChange('webTitle', e.target.value)}/>)} </Form.Item> </Col> </Row> </Form> <Modal title="自定义脚本" wrapClassName="normal-css-modal" visible={visible} width={800} maskClosable={false} onOk={this.submit} onCancel={() => { this.setState({ visible: false })}} destroyOnClose > <CodeMirror mode="text/javascript" theme="cobalt" value={printScripts} onChange={this.onScriptChange} /> </Modal> </> ) } } src/views/mobdesign/index.jsx
@@ -2235,7 +2235,7 @@ {!controlshow ? <DoubleLeftOutlined onClick={() => {this.setState({controlshow: true})}}/> : null} </div> <div className="wrap"> <Button type="primary" className={needUpdate ? 'update-tip' : ''} onClick={this.submitConfig} id="save-config" loading={menuloading}>保存</Button> <Button type="primary" className={needUpdate ? 'update-tip' : ''} disabled={!config} onClick={this.submitConfig} id="save-config" loading={menuloading}>保存</Button> {config ? <Switch className="big" checkedChildren="启" unCheckedChildren="停" checked={config.enabled} onChange={this.onEnabledChange} /> : null} <ArrowLeftOutlined title="后退" className="back-view" onClick={this.backView}/> {config ? <Debug config={config}/> : null} src/views/pcdesign/index.jsx
@@ -1858,7 +1858,7 @@ {!controlshow ? <DoubleLeftOutlined onClick={() => {sessionStorage.setItem('controlshow', 'true'); this.setState({controlshow: true})}}/> : null} </div> <div className="wrap"> <Button type="primary" className={needUpdate ? 'update-tip' : ''} id="save-config" onClick={this.submitConfig} loading={menuloading}>保存</Button> <Button type="primary" className={needUpdate ? 'update-tip' : ''} disabled={!config} id="save-config" onClick={this.submitConfig} loading={menuloading}>保存</Button> {config ? <Switch className="big" checkedChildren="启" unCheckedChildren="停" checked={config.enabled} onChange={this.onEnabledChange} /> : null} <ArrowLeftOutlined title="后退" className="back-view" onClick={this.backView}/> {config ? <Debug config={config}/> : null} src/views/tabledesign/index.jsx
@@ -980,7 +980,7 @@ <ReplaceField type="custom" config={config} updateConfig={this.resetConfig}/> <PasteBaseTable type="page" insert={this.insert}/> {config ? <Switch className="big" checkedChildren="启" unCheckedChildren="停" checked={config.enabled} onChange={this.onEnabledChange} /> : null} <Button type="primary" id="save-config" onClick={this.submitConfig} loading={menuloading}>保存</Button> <Button type="primary" id="save-config" disabled={!config} onClick={this.submitConfig} loading={menuloading}>保存</Button> <Button type="default" disabled={menuloading} onClick={this.closeView}>关闭</Button> </div> } style={{ width: '100%' }}>