From d074bedd5c2834113fe0c4ed5a3c78ec905681c3 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 10 九月 2021 16:02:57 +0800 Subject: [PATCH] 2021-09-10 --- src/components/normalform/modalform/mkCheckbox/index.scss | 0 src/components/normalform/modalform/mkInput/index.jsx | 2 src/pc/components/navbar/normal-navbar/index.jsx | 17 + src/tabviews/custom/components/card/prop-card/index.scss | 2 src/mob/components/navbar/normal-navbar/index.jsx | 17 + src/components/normalform/modalform/index.jsx | 17 + src/menu/components/editor/braft-editor/options.jsx | 7 src/menu/components/card/data-card/options.jsx | 6 src/menu/components/share/actioncomponent/formconfig.jsx | 25 +- src/components/normalform/modalform/mkRadio/index.jsx | 2 src/pc/components/login/normal-login/index.jsx | 17 + src/pc/components/login/normal-login/options.jsx | 123 +++++++++++++ /dev/null | 19 -- src/components/normalform/modalform/mkCheckbox/index.jsx | 46 +++++ src/mob/components/navbar/normal-navbar/options.jsx | 45 +++++ src/pc/components/navbar/normal-navbar/options.jsx | 118 +++++++++++++ src/views/mobdesign/index.scss | 4 src/views/pcdesign/index.scss | 4 src/tabviews/custom/components/card/balcony/index.jsx | 2 src/views/menudesign/index.scss | 3 src/tabviews/custom/components/card/data-card/index.scss | 2 src/utils/utils.js | 5 src/assets/css/main.scss | 3 src/components/normalform/modalform/mkSelect/index.jsx | 4 24 files changed, 443 insertions(+), 47 deletions(-) diff --git a/src/assets/css/main.scss b/src/assets/css/main.scss index 9c1486d..c1e2533 100644 --- a/src/assets/css/main.scss +++ b/src/assets/css/main.scss @@ -38,6 +38,9 @@ html, body { width: 100%; font-size: 14px; + // .ant-table, .ant-dropdown { + // color: rgba(0, 0, 0, 0.85); + // } } #root { height: 100%; diff --git a/src/components/normalform/modalform/index.jsx b/src/components/normalform/modalform/index.jsx index e0927dc..99658a4 100644 --- a/src/components/normalform/modalform/index.jsx +++ b/src/components/normalform/modalform/index.jsx @@ -12,6 +12,7 @@ const { TextArea } = Input const MKRadio = asyncComponent(() => import('./mkRadio')) +const MKCheckbox = asyncComponent(() => import('./mkCheckbox')) const StyleInput = asyncComponent(() => import('./styleInput')) const MKFileUpload = asyncComponent(() => import('@/tabviews/zshare/fileupload')) const MKColor = asyncComponent(() => import('@/tabviews/zshare/mutilform/mkColor')) @@ -158,7 +159,19 @@ current.controlFields.forEach(cell => { let m = map.get(cell.field) - m.hidden = current.hidden || !cell.values.includes(val) + + if (current.hidden) { + m.hidden = true + } else if (current.type === 'checkbox') { + let vals = [...val, ...cell.values] + if (vals.length !== new Set(vals).size) { + m.hidden = false + } else { + m.hidden = true + } + } else { + m.hidden = !cell.values.includes(val) + } if (m.hidden) { m.initval = this.record[m.field] @@ -209,6 +222,8 @@ content = (<StyleInput config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>) } else if (item.type === 'radio') { content = (<MKRadio config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>) + } else if (item.type === 'checkbox') { + content = (<MKCheckbox config={item} onChange={(val) => this.recordChange({[item.field]: val}, item)}/>) } else if (item.type === 'fileupload') { content = (<MKFileUpload config={item} onChange={(val) => this.recordChange({[item.field]: val})} />) } else if (item.type === 'cascader') { diff --git a/src/components/normalform/modalform/mkCheckbox/index.jsx b/src/components/normalform/modalform/mkCheckbox/index.jsx new file mode 100644 index 0000000..934eece --- /dev/null +++ b/src/components/normalform/modalform/mkCheckbox/index.jsx @@ -0,0 +1,46 @@ +import React, {Component} from 'react' +import PropTypes from 'prop-types' +import { is, fromJS } from 'immutable' +import { Checkbox } from 'antd' + +import './index.scss' + +class MKCheckbox extends Component { + static propTpyes = { + config: PropTypes.object, + onChange: PropTypes.func + } + + state = { + value: this.props.config.initval, + config: fromJS(this.props.config).toJS(), + options: fromJS(this.props.config.options).toJS(), + } + + shouldComponentUpdate (nextProps, nextState) { + return !is(fromJS(this.state), fromJS(nextState)) + } + + componentWillUnmount () { + this.setState = () => { + return + } + } + + onChange = (value) => { + this.setState({value}) + this.props.onChange(value) + } + + render() { + const { value, options } = this.state + + return ( + <Checkbox.Group defaultValue={value} onChange={this.onChange}> + {options.map(option => <Checkbox key={option.value} title={option.label} disabled={option.disabled} value={option.value}>{option.label}</Checkbox>)} + </Checkbox.Group> + ) + } +} + +export default MKCheckbox \ No newline at end of file diff --git a/src/components/normalform/modalform/mkCheckbox/index.scss b/src/components/normalform/modalform/mkCheckbox/index.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/components/normalform/modalform/mkCheckbox/index.scss diff --git a/src/components/normalform/modalform/mkInput/index.jsx b/src/components/normalform/modalform/mkInput/index.jsx index 2df60f7..74165f9 100644 --- a/src/components/normalform/modalform/mkInput/index.jsx +++ b/src/components/normalform/modalform/mkInput/index.jsx @@ -64,7 +64,7 @@ const { config } = this.props const { value } = this.state - return <Input ref={this.inputRef} placeholder={config.placeholder || ''} value={value} autoComplete="off" onChange={this.handleChange} onPressEnter={this.props.onSubmit} /> + return <Input ref={this.inputRef} readOnly={config.readOnly} placeholder={config.placeholder || ''} value={value} autoComplete="off" onChange={this.handleChange} onPressEnter={this.props.onSubmit} /> } } diff --git a/src/components/normalform/modalform/mkRadio/index.jsx b/src/components/normalform/modalform/mkRadio/index.jsx index 9b2ec9e..c14b111 100644 --- a/src/components/normalform/modalform/mkRadio/index.jsx +++ b/src/components/normalform/modalform/mkRadio/index.jsx @@ -85,7 +85,7 @@ return ( <Radio.Group style={{whiteSpace: 'nowrap'}} value={value} onChange={this.onChange}> - {options.map(option => <Radio key={option.value} value={option.value}>{option.label}</Radio>)} + {options.map(option => <Radio key={option.value} disabled={option.disabled} value={option.value}>{option.label}</Radio>)} </Radio.Group> ) } diff --git a/src/components/normalform/modalform/mkSelect/index.jsx b/src/components/normalform/modalform/mkSelect/index.jsx index 6fe6b33..c5c6ad4 100644 --- a/src/components/normalform/modalform/mkSelect/index.jsx +++ b/src/components/normalform/modalform/mkSelect/index.jsx @@ -117,7 +117,7 @@ onChange={(val) => val === undefined && this.selectChange('')} > {options.map(option => - <Select.Option key={option.value || option.field} value={option.value || option.field}>{option.label || option.text}</Select.Option> + <Select.Option key={option.value || option.field} disabled={option.disabled} value={option.value || option.field}>{option.label || option.text}</Select.Option> )} </Select> ) @@ -130,7 +130,7 @@ onChange={this.mutilselectChange} > {options.map(option => - <Select.Option key={option.value} value={option.value}>{option.label || option.text}</Select.Option> + <Select.Option key={option.value} disabled={option.disabled} value={option.value}>{option.label || option.text}</Select.Option> )} </Select>) } diff --git a/src/menu/components/card/data-card/options.jsx b/src/menu/components/card/data-card/options.jsx index 82a507f..fd03a9b 100644 --- a/src/menu/components/card/data-card/options.jsx +++ b/src/menu/components/card/data-card/options.jsx @@ -84,7 +84,7 @@ options: [ {value: '', label: '涓嶅彲閫�'}, {value: 'radio', label: '鍗曢��'}, - {value: 'checkbox', label: '澶氶��', forbid: subtype === 'propcard'}, + {value: 'checkbox', label: '澶氶��', disabled: subtype === 'propcard'}, ], controlFields: [ {field: 'checkAll', values: ['checkbox']}, @@ -101,7 +101,7 @@ options: [ {value: 'false', label: '鏃�'}, {value: 'init', label: '鍒濆鍖�'}, - {value: 'always', label: '鏁版嵁鍔犺浇', forbid: subtype === 'propcard'}, + {value: 'always', label: '鏁版嵁鍔犺浇', disabled: subtype === 'propcard'}, ] }, { @@ -178,7 +178,7 @@ ] return cardWrapForm.map(item => { - if (['pagestyle', 'cardType', 'selected'].includes(item.field)) { + if (['pagestyle'].includes(item.field)) { item.options = item.options.filter(option => !option.forbid) } diff --git a/src/menu/components/editor/braft-editor/options.jsx b/src/menu/components/editor/braft-editor/options.jsx index c3f6c06..7f53cc7 100644 --- a/src/menu/components/editor/braft-editor/options.jsx +++ b/src/menu/components/editor/braft-editor/options.jsx @@ -18,6 +18,13 @@ const cardWrapForm = [ { type: 'text', + field: 'title', + label: '鏍囬', + initval: wrap.title || '', + required: false + }, + { + type: 'text', field: 'name', label: '缁勪欢鍚嶇О', initval: wrap.name || '', diff --git a/src/menu/components/share/actioncomponent/formconfig.jsx b/src/menu/components/share/actioncomponent/formconfig.jsx index 6eb2dad..d55d7ec 100644 --- a/src/menu/components/share/actioncomponent/formconfig.jsx +++ b/src/menu/components/share/actioncomponent/formconfig.jsx @@ -61,16 +61,6 @@ ] if (isApp) { - pageTemps = [ - // { value: 'page', text: '鑿滃崟' }, - { value: 'linkpage', text: '鍏宠仈鑿滃崟' }, - { value: 'billprint', text: '鍗曟嵁鎵撳嵃' }, - { value: 'pay', text: Formdict['model.pay'] }, - { value: 'custom', text: '閾炬帴' } - ] - funTypes = [ - { value: 'changeuser', text: Formdict['header.form.func.changeuser'] }, - ] appMenus = sessionStorage.getItem('appMenus') if (appMenus) { try { @@ -87,10 +77,23 @@ funTypes = [ { value: 'mkBinding', text: '寮�閫氭壂鐮佺櫥褰�' }, { value: 'mkUnBinding', text: '鐢ㄦ埛瑙g粦' }, - // { value: 'scan', text: '鎵竴鎵�' }, { value: 'reAuth', text: '閲嶆柊鎺堟潈' }, ] + pageTemps = [ + { value: 'linkpage', text: '鍏宠仈鑿滃崟' }, + // { value: 'pay', text: Formdict['model.pay'] }, + { value: 'custom', text: '閾炬帴' } + ] } else { + pageTemps = [ + { value: 'linkpage', text: '鍏宠仈鑿滃崟' }, + { value: 'billprint', text: '鍗曟嵁鎵撳嵃' }, + { value: 'pay', text: Formdict['model.pay'] }, + { value: 'custom', text: '閾炬帴' } + ] + funTypes = [ + { value: 'changeuser', text: Formdict['header.form.func.changeuser'] }, + ] opentypes = opentypes.filter(item => item.value !== 'tab') } } diff --git a/src/mob/components/navbar/normal-navbar/index.jsx b/src/mob/components/navbar/normal-navbar/index.jsx index 0d38e64..eb23343 100644 --- a/src/mob/components/navbar/normal-navbar/index.jsx +++ b/src/mob/components/navbar/normal-navbar/index.jsx @@ -8,9 +8,10 @@ import MKEmitter from '@/utils/events.js' import zhCN from '@/locales/zh-CN/model.js' import enUS from '@/locales/en-US/model.js' +import getWrapForm from './options' import './index.scss' -const WrapComponent = asyncIconComponent(() => import('./wrapsetting')) +const NormalForm = asyncIconComponent(() => import('@/components/normalform')) const MenuComponent = asyncIconComponent(() => import('./menusetting')) const SettingComponent = asyncIconComponent(() => import('@/menu/datasource')) @@ -141,6 +142,16 @@ } } + getWrapForms = () => { + const { wrap } = this.state.card + + return getWrapForm(wrap) + } + + updateWrap = (res) => { + this.updateComponent({...this.state.card, wrap: res}) + } + render() { const { card } = this.state @@ -152,7 +163,9 @@ <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> <MenuComponent config={card} updateConfig={this.updateComponent} /> - <WrapComponent config={card} updateConfig={this.updateComponent} /> + <NormalForm title="鑿滃崟鏍忚缃�" width={800} update={this.updateWrap} getForms={this.getWrapForms}> + <Icon type="edit" style={{color: '#1890ff'}} title="缂栬緫"/> + </NormalForm> <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" /> <Icon className="close" title="鍒犻櫎缁勪欢" type="delete" onClick={() => this.props.deletecomponent(card.uuid)} /> {card.wrap.datatype !== 'static' ? <SettingComponent config={card} updateConfig={this.updateComponent} /> : null} diff --git a/src/mob/components/navbar/normal-navbar/options.jsx b/src/mob/components/navbar/normal-navbar/options.jsx new file mode 100644 index 0000000..2a7ebc2 --- /dev/null +++ b/src/mob/components/navbar/normal-navbar/options.jsx @@ -0,0 +1,45 @@ +/** + * @description Wrap琛ㄥ崟閰嶇疆淇℃伅 + */ +export default function (wrap) { + const wrapForm = [ + { + type: 'text', + field: 'name', + label: '瀵艰埅鏍忓悕绉�', + initval: wrap.name || '', + required: true + }, + { + type: 'text', + field: 'MenuNo', + label: '鑿滃崟鍙傛暟', + initval: wrap.MenuNo || '', + required: true + }, + { + type: 'radio', + field: 'datatype', + label: '鏁版嵁鏉ユ簮', + initval: wrap.datatype || 'static', + tooltip: '閫夋嫨闈欐�佸�硷紝鏃犻渶閰嶇疆鏁版嵁婧愩��', + required: false, + options: [ + {value: 'dynamic', label: '鍔ㄦ��'}, + {value: 'static', label: '闈欐��'}, + ] + }, + { + type: 'number', + field: 'height', + label: '楂樺害', + initval: wrap.height || 50, + min: 30, + max: 200, + precision: 0, + required: true + } + ] + + return wrapForm +} \ No newline at end of file diff --git a/src/mob/components/navbar/normal-navbar/wrapsetting/index.jsx b/src/mob/components/navbar/normal-navbar/wrapsetting/index.jsx deleted file mode 100644 index a6785d0..0000000 --- a/src/mob/components/navbar/normal-navbar/wrapsetting/index.jsx +++ /dev/null @@ -1,81 +0,0 @@ -import React, {Component} from 'react' -import PropTypes from 'prop-types' -import { is, fromJS } from 'immutable' -import { Icon, Modal } from 'antd' - -import zhCN from '@/locales/zh-CN/model.js' -import enUS from '@/locales/en-US/model.js' -import SettingForm from './settingform' -import './index.scss' - -class DataSource extends Component { - static propTpyes = { - config: PropTypes.any, - updateConfig: PropTypes.func - } - - state = { - dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, - visible: false, - wrap: null - } - - UNSAFE_componentWillMount () { - const { config } = this.props - - this.setState({wrap: fromJS(config.wrap).toJS()}) - } - - shouldComponentUpdate (nextProps, nextState) { - return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState)) - } - - editDataSource = () => { - this.setState({ - visible: true - }) - } - - verifySubmit = () => { - const { config } = this.props - - this.verifyRef.handleConfirm().then(res => { - - this.setState({ - wrap: res, - visible: false - }) - this.props.updateConfig({...config, wrap: res}) - }) - } - - render () { - const { visible, dict, wrap } = this.state - - return ( - <div className="model-menu-setting-wrap"> - <Icon type="edit" title="缂栬緫" onClick={() => this.editDataSource()} /> - <Modal - wrapClassName="popview-modal" - title="鑿滃崟鏍忚缃�" - visible={visible} - width={800} - maskClosable={false} - okText={dict['model.submit']} - onOk={this.verifySubmit} - onCancel={() => { this.setState({ visible: false }) }} - destroyOnClose - > - <SettingForm - dict={dict} - wrap={wrap} - inputSubmit={this.verifySubmit} - wrappedComponentRef={(inst) => this.verifyRef = inst} - /> - </Modal> - </div> - ) - } -} - -export default DataSource \ No newline at end of file diff --git a/src/mob/components/navbar/normal-navbar/wrapsetting/index.scss b/src/mob/components/navbar/normal-navbar/wrapsetting/index.scss deleted file mode 100644 index 04372e6..0000000 --- a/src/mob/components/navbar/normal-navbar/wrapsetting/index.scss +++ /dev/null @@ -1,7 +0,0 @@ -.model-menu-setting-wrap { - display: inline-block; - - >.anticon-edit { - color: #1890ff; - } -} \ No newline at end of file diff --git a/src/mob/components/navbar/normal-navbar/wrapsetting/settingform/index.jsx b/src/mob/components/navbar/normal-navbar/wrapsetting/settingform/index.jsx deleted file mode 100644 index debd0d8..0000000 --- a/src/mob/components/navbar/normal-navbar/wrapsetting/settingform/index.jsx +++ /dev/null @@ -1,118 +0,0 @@ -import React, {Component} from 'react' -import PropTypes from 'prop-types' -import { Form, Row, Col, Input, InputNumber, Tooltip, Icon, Radio } from 'antd' - -import './index.scss' - -class SettingForm extends Component { - static propTpyes = { - dict: PropTypes.object, // 瀛楀吀椤� - wrap: PropTypes.object, // 鏁版嵁婧愰厤缃� - inputSubmit: PropTypes.func // 鍥炶溅浜嬩欢 - } - - state = {} - - handleConfirm = () => { - // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� - return new Promise((resolve, reject) => { - this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { - resolve(values) - } else { - reject(err) - } - }) - }) - } - - handleSubmit = (e) => { - e.preventDefault() - - if (this.props.inputSubmit) { - this.props.inputSubmit() - } - } - - render() { - const { wrap } = this.props - const { getFieldDecorator } = this.props.form - const formItemLayout = { - labelCol: { - xs: { span: 24 }, - sm: { span: 8 } - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 } - } - } - - return ( - <div className="model-menu-setting-form"> - <Form {...formItemLayout}> - <Row gutter={24}> - <Col span={12}> - <Form.Item label="瀵艰埅鏍忓悕绉�"> - {getFieldDecorator('name', { - initialValue: wrap.name, - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '瀵艰埅鏍忓悕绉�!' - } - ] - })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label="鑿滃崟鍙傛暟"> - {getFieldDecorator('MenuNo', { - initialValue: wrap.MenuNo, - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '鑿滃崟鍙傛暟!' - } - ] - })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="閫夋嫨闈欐�佸�硷紝鏃犻渶閰嶇疆鏁版嵁婧愩��"> - <Icon type="question-circle" /> - 鏁版嵁鏉ユ簮 - </Tooltip> - }> - {getFieldDecorator('datatype', { - initialValue: wrap.datatype || 'static' - })( - <Radio.Group> - <Radio value="dynamic">鍔ㄦ��</Radio> - <Radio value="static">闈欐��</Radio> - </Radio.Group> - )} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label="楂樺害"> - {getFieldDecorator('height', { - initialValue: wrap.height || 50, - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '楂樺害!' - } - ] - })(<InputNumber min={30} max={200} precision={0} onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - </Row> - </Form> - </div> - ) - } -} - -export default Form.create()(SettingForm) \ No newline at end of file diff --git a/src/mob/components/navbar/normal-navbar/wrapsetting/settingform/index.scss b/src/mob/components/navbar/normal-navbar/wrapsetting/settingform/index.scss deleted file mode 100644 index 159130b..0000000 --- a/src/mob/components/navbar/normal-navbar/wrapsetting/settingform/index.scss +++ /dev/null @@ -1,11 +0,0 @@ -.model-menu-setting-form { - position: relative; - - .anticon-question-circle { - color: #c49f47; - margin-right: 3px; - } - .ant-input-number { - width: 100%; - } -} \ No newline at end of file diff --git a/src/pc/components/login/normal-login/index.jsx b/src/pc/components/login/normal-login/index.jsx index 74ec83e..bd48443 100644 --- a/src/pc/components/login/normal-login/index.jsx +++ b/src/pc/components/login/normal-login/index.jsx @@ -10,10 +10,11 @@ import zhCN from '@/locales/zh-CN/model.js' import enUS from '@/locales/en-US/model.js' import { resetStyle } from '@/utils/utils-custom.js' +import getWrapForm from './options' import './index.scss' const LoginForm = asyncComponent(() => import('./loginform')) -const WrapComponent = asyncIconComponent(() => import('../wrapsetting')) +const NormalForm = asyncIconComponent(() => import('@/components/normalform')) class PropCardEditComponent extends Component { static propTpyes = { @@ -141,6 +142,16 @@ } } + getWrapForms = () => { + const { wrap } = this.state.card + + return getWrapForm(wrap) + } + + updateWrap = (res) => { + this.updateComponent({...this.state.card, wrap: res}) + } + render() { const { card, dict } = this.state let style = resetStyle(card.style) @@ -159,7 +170,9 @@ <div className="login-edit-box" style={style} onClick={this.clickComponent} id={card.uuid}> <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> - <WrapComponent config={card} updateConfig={this.updateComponent} /> + <NormalForm title="鐧诲綍璁剧疆" width={800} update={this.updateWrap} getForms={this.getWrapForms}> + <Icon type="edit" style={{color: '#1890ff'}} title="缂栬緫"/> + </NormalForm> <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" /> <Icon className="close" title="鍒犻櫎缁勪欢" type="delete" onClick={() => this.props.deletecomponent(card.uuid)} /> </div> diff --git a/src/pc/components/login/normal-login/options.jsx b/src/pc/components/login/normal-login/options.jsx new file mode 100644 index 0000000..c423354 --- /dev/null +++ b/src/pc/components/login/normal-login/options.jsx @@ -0,0 +1,123 @@ +/** + * @description Wrap琛ㄥ崟閰嶇疆淇℃伅 + */ +export default function (wrap) { + let appType = sessionStorage.getItem('appType') + let menulist = sessionStorage.getItem('appMenus') + if (menulist) { + try { + menulist = JSON.parse(menulist) + } catch (e) { + menulist = [] + } + } else { + menulist = [] + } + + let msgTemps = sessionStorage.getItem('msgTemplate') + + if (msgTemps) { + try { + msgTemps = JSON.parse(msgTemps) + msgTemps = msgTemps.map(item => { + item.value = item.ID + item.label = item.SignName + ' - ' + item.TemplateCode + return item + }) + } catch (e) { + msgTemps = [] + } + } else { + msgTemps = [] + } + + const wrapForm = [ + { + type: 'text', + field: 'name', + label: '缁勪欢鍚嶇О', + initval: wrap.name || '', + tooltip: '鐢ㄤ簬缁勪欢闂寸殑鍖哄垎銆�', + required: true + }, + { + type: 'checkbox', + field: 'loginWays', + label: '鐧诲綍鏂瑰紡', + initval: wrap.loginWays || [], + required: true, + options: [ + { label: '璐﹀彿', value: 'uname_pwd' }, + { label: '鐭俊', value: 'sms_vcode' }, + { label: '鎵爜', value: 'app_scan', disabled: appType === 'mob' }, + ], + controlFields: [ + {field: 'tempId', values: ['sms_vcode']} + ] + }, + { + type: 'number', + field: 'width', + label: '瀹藉害', + initval: wrap.width || 24, + tooltip: '鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒椼��', + min: 1, + max: 24, + precision: 0, + required: true + }, + { + type: 'number', + field: 'maxWidth', + label: '鏈�澶у搴�', + initval: wrap.maxWidth || '', + tooltip: '鐧诲綍妗嗙殑鏈�澶у搴﹀�笺��', + min: 100, + max: 2000, + precision: 0, + required: false + }, + { + type: 'styleInput', + field: 'height', + label: '楂樺害', + initval: wrap.height || '', + tooltip: '缁勪欢鍗犵敤鐨勬渶灏忛珮搴︼紝鐢ㄤ簬椤甸潰甯冨眬銆�', + required: false, + options: ['px', 'vh', 'vw', '%'] + }, + { + type: 'radio', + field: 'link', + label: '閾炬帴', + initval: wrap.link || 'menu', + required: false, + options: [ + {value: 'menu', label: '鑿滃崟'}, + {value: 'linkmenu', label: '鍏宠仈鑿滃崟'}, + ], + controlFields: [ + {field: 'linkmenu', values: ['linkmenu']} + ] + }, + { + type: 'select', + field: 'linkmenu', + label: '鍏宠仈鑿滃崟', + initval: wrap.linkmenu || '', + required: true, + options: menulist + }, + { + type: 'select', // $楠岃瘉鐮�$ $mob$ $send_type$ + field: 'tempId', + label: '鐭俊妯℃澘', + initval: wrap.tempId || '', + tooltip: '鐭俊妯℃澘鍙湪绠$悊绯荤粺 HS-濂囦簯鐭俊妯℃澘 澶勬坊鍔犮��', + required: true, + options: msgTemps + } + ] + + return wrapForm +} \ No newline at end of file diff --git a/src/pc/components/login/wrapsetting/index.jsx b/src/pc/components/login/wrapsetting/index.jsx deleted file mode 100644 index 9c0ac72..0000000 --- a/src/pc/components/login/wrapsetting/index.jsx +++ /dev/null @@ -1,81 +0,0 @@ -import React, {Component} from 'react' -import PropTypes from 'prop-types' -import { is, fromJS } from 'immutable' -import { Icon, Modal } from 'antd' - -import zhCN from '@/locales/zh-CN/model.js' -import enUS from '@/locales/en-US/model.js' -import SettingForm from './settingform' -import './index.scss' - -class DataSource extends Component { - static propTpyes = { - config: PropTypes.any, - updateConfig: PropTypes.func - } - - state = { - dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, - visible: false, - wrap: null - } - - UNSAFE_componentWillMount () { - const { config } = this.props - - this.setState({wrap: fromJS(config.wrap).toJS()}) - } - - shouldComponentUpdate (nextProps, nextState) { - return !is(fromJS(this.state), fromJS(nextState)) - } - - editDataSource = () => { - this.setState({ - visible: true - }) - } - - verifySubmit = () => { - const { config } = this.props - - this.verifyRef.handleConfirm().then(res => { - - this.setState({ - wrap: res, - visible: false - }) - this.props.updateConfig({...config, wrap: res}) - }) - } - - render () { - const { visible, dict, wrap } = this.state - - return ( - <div className="model-menu-setting-wrap"> - <Icon type="edit" title="缂栬緫" onClick={() => this.editDataSource()} /> - <Modal - wrapClassName="popview-modal" - title="鐧诲綍璁剧疆" - visible={visible} - width={800} - maskClosable={false} - okText={dict['model.submit']} - onOk={this.verifySubmit} - onCancel={() => { this.setState({ visible: false }) }} - destroyOnClose - > - <SettingForm - dict={dict} - wrap={wrap} - inputSubmit={this.verifySubmit} - wrappedComponentRef={(inst) => this.verifyRef = inst} - /> - </Modal> - </div> - ) - } -} - -export default DataSource \ No newline at end of file diff --git a/src/pc/components/login/wrapsetting/index.scss b/src/pc/components/login/wrapsetting/index.scss deleted file mode 100644 index 04372e6..0000000 --- a/src/pc/components/login/wrapsetting/index.scss +++ /dev/null @@ -1,7 +0,0 @@ -.model-menu-setting-wrap { - display: inline-block; - - >.anticon-edit { - color: #1890ff; - } -} \ No newline at end of file diff --git a/src/pc/components/login/wrapsetting/settingform/index.jsx b/src/pc/components/login/wrapsetting/settingform/index.jsx deleted file mode 100644 index a5eeeda..0000000 --- a/src/pc/components/login/wrapsetting/settingform/index.jsx +++ /dev/null @@ -1,242 +0,0 @@ -import React, {Component} from 'react' -import PropTypes from 'prop-types' -import { Form, Row, Col, Input, Tooltip, Icon, InputNumber, Select, Checkbox, notification, Radio } from 'antd' - -import StyleInput from '@/menu/stylecontroller/styleInput' -import './index.scss' - -class SettingForm extends Component { - static propTpyes = { - dict: PropTypes.object, // 瀛楀吀椤� - wrap: PropTypes.object, // 鏁版嵁婧愰厤缃� - inputSubmit: PropTypes.func // 鍥炶溅浜嬩欢 - } - - state = { - msgTemps: [], - appMenus: [], - link: this.props.wrap.link || 'menu' - } - - UNSAFE_componentWillMount () { - let msgTemps = sessionStorage.getItem('msgTemplate') - - if (msgTemps) { - try { - msgTemps = JSON.parse(msgTemps) - } catch (e) { - msgTemps = [] - } - } else { - msgTemps = [] - } - - let appMenus = sessionStorage.getItem('appMenus') - if (appMenus) { - try { - appMenus = JSON.parse(appMenus) - } catch (e) { - appMenus = [] - } - } else { - appMenus = [] - } - - this.setState({msgTemps, appMenus}) - } - - handleConfirm = () => { - // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� - return new Promise((resolve, reject) => { - this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { - if (values.loginWays.includes('sms_vcode') && !values.tempId) { - notification.warning({ - top: 92, - message: '浣跨敤鐭俊楠岃瘉鐮佺櫥褰曟椂锛岄渶瑕侀�夋嫨鐭俊妯℃澘锛�', - duration: 5 - }) - return - } - resolve(values) - } else { - reject(err) - } - }) - }) - } - - handleSubmit = (e) => { - e.preventDefault() - - if (this.props.inputSubmit) { - this.props.inputSubmit() - } - } - - render() { - const { wrap } = this.props - const { getFieldDecorator } = this.props.form - const { msgTemps, appMenus, link } = this.state - - const formItemLayout = { - labelCol: { - xs: { span: 24 }, - sm: { span: 8 } - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 } - } - } - - return ( - <div className="model-menu-setting-form"> - <Form {...formItemLayout}> - <Row gutter={24}> - <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="鐢ㄤ簬缁勪欢闂寸殑鍖哄垎銆�"> - <Icon type="question-circle" /> - 缁勪欢鍚嶇О - </Tooltip> - }> - {getFieldDecorator('name', { - initialValue: wrap.name, - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '缁勪欢鍚嶇О!' - } - ] - })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label="鐧诲綍鏂瑰紡"> - {getFieldDecorator('loginWays', { - initialValue: wrap.loginWays || [], - rules: [ - { - required: true, - message: this.props.dict['form.required.select'] + '鐧诲綍鏂瑰紡!' - } - ] - })( - <Checkbox.Group - options={[ - { label: '璐﹀彿', value: 'uname_pwd' }, - { label: '鐭俊', value: 'sms_vcode' }, - { label: '鎵爜', value: 'app_scan' }, - ]} - /> - )} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒椼��"> - <Icon type="question-circle" /> - 瀹藉害 - </Tooltip> - }> - {getFieldDecorator('width', { - initialValue: wrap.width || 24, - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '瀹藉害!' - } - ] - })(<InputNumber min={1} max={24} precision={0} onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="鐧诲綍妗嗙殑鏈�澶у搴﹀�笺��"> - <Icon type="question-circle" /> - 鏈�澶у搴� - </Tooltip> - }> - {getFieldDecorator('maxWidth', { - initialValue: wrap.maxWidth || '' - })(<InputNumber min={100} max={2000} precision={0} onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="缁勪欢鍗犵敤鐨勬渶灏忛珮搴︼紝鐢ㄤ簬椤甸潰甯冨眬銆�"> - <Icon type="question-circle" /> - 楂樺害 - </Tooltip> - }> - {getFieldDecorator('height', { - initialValue: wrap.height - })(<StyleInput options={['px', 'vh', 'vw', '%']}/>)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label="閾炬帴"> - {getFieldDecorator('link', { - initialValue: wrap.link || 'menu' - })( - <Radio.Group onChange={(e) => this.setState({link: e.target.value})}> - <Radio key="menu" value="menu"> 鑿滃崟 </Radio> - <Radio key="linkmenu" value="linkmenu"> 鍏宠仈鑿滃崟 </Radio> - </Radio.Group> - )} - </Form.Item> - </Col> - {link === 'linkmenu' ? <Col span={12}> - <Form.Item label="鍏宠仈鑿滃崟"> - {getFieldDecorator('linkmenu', { - initialValue: wrap.linkmenu || '', - rules: [ - { - required: true, - message: this.props.dict['form.required.select'] + '鑿滃崟!' - } - ] - })( - <Select - showSearch - filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} - > - {appMenus.map(option => - <Select.Option key={option.MenuID} value={option.MenuID}>{option.MenuName}</Select.Option> - )} - </Select> - )} - </Form.Item> - </Col> : null} - {/* $楠岃瘉鐮�$ $mob$ $send_type$ */} - <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="鐭俊妯℃澘鍙湪绠$悊绯荤粺 HS-濂囦簯鐭俊妯℃澘 澶勬坊鍔犮��"> - <Icon type="question-circle" /> - 鐭俊妯℃澘 - </Tooltip> - }> - {getFieldDecorator('tempId', { - initialValue: wrap.tempId || '' - })( - <Select - showSearch - allowClear - filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} - > - {msgTemps.map(option => - <Select.Option key={option.ID} value={option.ID}>{option.SignName + ' - ' + option.TemplateCode}</Select.Option> - )} - </Select> - )} - </Form.Item> - </Col> - </Row> - </Form> - </div> - ) - } -} - -export default Form.create()(SettingForm) \ No newline at end of file diff --git a/src/pc/components/login/wrapsetting/settingform/index.scss b/src/pc/components/login/wrapsetting/settingform/index.scss deleted file mode 100644 index 159130b..0000000 --- a/src/pc/components/login/wrapsetting/settingform/index.scss +++ /dev/null @@ -1,11 +0,0 @@ -.model-menu-setting-form { - position: relative; - - .anticon-question-circle { - color: #c49f47; - margin-right: 3px; - } - .ant-input-number { - width: 100%; - } -} \ No newline at end of file diff --git a/src/pc/components/navbar/normal-navbar/index.jsx b/src/pc/components/navbar/normal-navbar/index.jsx index 11ce5dd..1d3b062 100644 --- a/src/pc/components/navbar/normal-navbar/index.jsx +++ b/src/pc/components/navbar/normal-navbar/index.jsx @@ -8,9 +8,10 @@ import MKEmitter from '@/utils/events.js' import zhCN from '@/locales/zh-CN/model.js' import enUS from '@/locales/en-US/model.js' +import getWrapForm from './options' import './index.scss' -const WrapComponent = asyncIconComponent(() => import('./wrapsetting')) +const NormalForm = asyncIconComponent(() => import('@/components/normalform')) const MenuComponent = asyncIconComponent(() => import('./menusetting')) const LinkComponent = asyncIconComponent(() => import('./linksetting')) @@ -163,6 +164,16 @@ } } + getWrapForms = () => { + const { wrap } = this.state.card + + return getWrapForm(wrap) + } + + updateWrap = (res) => { + this.updateComponent({...this.state.card, wrap: res}) + } + render() { const { card } = this.state @@ -172,7 +183,9 @@ <div className="mk-popover-control"> <MenuComponent config={card} updateConfig={this.updateComponent} /> <LinkComponent config={card} updateConfig={this.updateComponent} /> - <WrapComponent config={card} updateConfig={this.updateComponent} /> + <NormalForm title="瀵艰埅鏍忚缃�" width={800} update={this.updateWrap} getForms={this.getWrapForms}> + <Icon type="edit" style={{color: '#1890ff'}} title="缂栬緫"/> + </NormalForm> <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" /> <Icon className="close" title="鍒犻櫎缁勪欢" type="delete" onClick={() => this.props.deletecomponent(card.uuid)} /> </div> diff --git a/src/pc/components/navbar/normal-navbar/options.jsx b/src/pc/components/navbar/normal-navbar/options.jsx new file mode 100644 index 0000000..4940158 --- /dev/null +++ b/src/pc/components/navbar/normal-navbar/options.jsx @@ -0,0 +1,118 @@ +/** + * @description Wrap琛ㄥ崟閰嶇疆淇℃伅 + */ +export default function (wrap) { + let menulist = sessionStorage.getItem('appMenus') + if (menulist) { + try { + menulist = JSON.parse(menulist) + } catch (e) { + menulist = [] + } + } else { + menulist = [] + } + + const wrapForm = [ + { + type: 'text', + field: 'name', + label: '瀵艰埅鏍忓悕绉�', + initval: wrap.name || '', + required: true + }, + { + type: 'text', + field: 'MenuNo', + label: '鑿滃崟鍙傛暟', + initval: wrap.MenuNo || '', + required: true + }, + { + type: 'number', + field: 'width', + label: '瀹藉害', + initval: wrap.width || 1200, + tooltip: '瀵艰埅鏍忎富浣撳唴瀹瑰搴︼紙鍖呮嫭logo銆佽彍鍗曘�侀摼鎺ョ瓑锛夈��', + min: 400, + max: 3000, + precision: 0, + required: true + }, + { + type: 'number', + field: 'height', + label: '楂樺害', + initval: wrap.height || 50, + min: 50, + max: 200, + precision: 0, + required: true + }, + { + type: 'source', + field: 'logo', + label: 'logo', + initval: wrap.logo || '', + required: false + }, + { + type: 'radio', + field: 'property', + label: 'logo灞炴��', + initval: wrap.property || '', + required: false, + options: [ + {value: '', label: '绌�'}, + {value: 'linkmenu', label: '鍏宠仈鑿滃崟'}, + {value: 'link', label: '閾炬帴'} + ], + controlFields: [ + {field: 'linkmenu', values: ['linkmenu']}, + {field: 'link', values: ['link']}, + ] + }, + { + type: 'select', + field: 'linkmenu', + label: '鍏宠仈鑿滃崟', + initval: wrap.linkmenu || '', + required: true, + options: menulist + }, + { + type: 'textarea', + field: 'link', + label: '閾炬帴', + initval: wrap.link || '', + required: true, + span: 24 + }, + { + type: 'radio', + field: 'user', + label: '鐢ㄦ埛淇℃伅', + initval: wrap.user || 'hidden', + tooltip: '瀛樺湪鐧诲綍涓斿彇鍒扮櫥褰曚俊鎭椂锛屾樉绀虹敤鎴峰ご鍍忋�佺敤鎴峰悕鍙婇��鍑恒��', + required: false, + options: [ + {value: 'hidden', label: '闅愯棌'}, + {value: 'show', label: '鏄剧ず'}, + ] + }, + { + type: 'radio', + field: 'hover', + label: '鎮诞鏄剧ず', + initval: wrap.hover || 'false', + tooltip: '榛樿闅愯棌鑿滃崟鏍忥紝榧犳爣鍦ㄩ潬杩戦《閮ㄦ椂鏄剧ず銆�', + required: false, + options: [ + {value: 'false', label: '涓嶅惎鐢�'}, + {value: 'true', label: '鍚敤'}, + ] + } + ] + + return wrapForm +} \ No newline at end of file diff --git a/src/pc/components/navbar/normal-navbar/wrapsetting/index.jsx b/src/pc/components/navbar/normal-navbar/wrapsetting/index.jsx deleted file mode 100644 index 81346a6..0000000 --- a/src/pc/components/navbar/normal-navbar/wrapsetting/index.jsx +++ /dev/null @@ -1,83 +0,0 @@ -import React, {Component} from 'react' -import PropTypes from 'prop-types' -import { is, fromJS } from 'immutable' -import { Icon, Modal } from 'antd' - -import zhCN from '@/locales/zh-CN/model.js' -import enUS from '@/locales/en-US/model.js' -import SettingForm from './settingform' -import './index.scss' - -class DataSource extends Component { - static propTpyes = { - config: PropTypes.any, - updateConfig: PropTypes.func - } - - state = { - dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, - visible: false, - wrap: null - } - - UNSAFE_componentWillMount () { - const { config } = this.props - - this.setState({wrap: fromJS(config.wrap).toJS()}) - } - - shouldComponentUpdate (nextProps, nextState) { - return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState)) - } - - editDataSource = () => { - this.setState({ - visible: true - }) - } - - verifySubmit = () => { - const { config } = this.props - - this.verifyRef.handleConfirm().then(res => { - - this.setState({ - wrap: res, - visible: false - }) - this.props.updateConfig({...config, wrap: res}) - }) - } - - render () { - const { config } = this.props - const { visible, dict, wrap } = this.state - - return ( - <div className="model-menu-setting-wrap"> - <Icon type="edit" title="缂栬緫" onClick={() => this.editDataSource()} /> - <Modal - wrapClassName="popview-modal" - title={config.type === 'table' ? '琛ㄦ牸璁剧疆' : '鍗$墖璁剧疆'} - visible={visible} - width={800} - maskClosable={false} - okText={dict['model.submit']} - onOk={this.verifySubmit} - onCancel={() => { this.setState({ visible: false }) }} - destroyOnClose - > - <SettingForm - dict={dict} - wrap={wrap} - config={config} - inputSubmit={this.verifySubmit} - wrappedComponentRef={(inst) => this.verifyRef = inst} - /> - </Modal> - </div> - ) - } -} - -export default DataSource \ No newline at end of file diff --git a/src/pc/components/navbar/normal-navbar/wrapsetting/index.scss b/src/pc/components/navbar/normal-navbar/wrapsetting/index.scss deleted file mode 100644 index 04372e6..0000000 --- a/src/pc/components/navbar/normal-navbar/wrapsetting/index.scss +++ /dev/null @@ -1,7 +0,0 @@ -.model-menu-setting-wrap { - display: inline-block; - - >.anticon-edit { - color: #1890ff; - } -} \ No newline at end of file diff --git a/src/pc/components/navbar/normal-navbar/wrapsetting/settingform/index.jsx b/src/pc/components/navbar/normal-navbar/wrapsetting/settingform/index.jsx deleted file mode 100644 index 61d30f0..0000000 --- a/src/pc/components/navbar/normal-navbar/wrapsetting/settingform/index.jsx +++ /dev/null @@ -1,232 +0,0 @@ -import React, {Component} from 'react' -import PropTypes from 'prop-types' -import { Form, Row, Col, Input, Tooltip, Icon, InputNumber, Select, Radio } from 'antd' - -import asyncComponent from '@/utils/asyncComponent' -import './index.scss' - -const SourceComponent = asyncComponent(() => import('@/menu/components/share/sourcecomponent')) -const { TextArea } = Input - -class SettingForm extends Component { - static propTpyes = { - dict: PropTypes.object, // 瀛楀吀椤� - config: PropTypes.object, // 鍗$墖琛屼俊鎭� - wrap: PropTypes.object, // 鏁版嵁婧愰厤缃� - inputSubmit: PropTypes.func // 鍥炶溅浜嬩欢 - } - - state = { - appMenus: [], - property: '' - } - - UNSAFE_componentWillMount () { - let appMenus = sessionStorage.getItem('appMenus') - if (appMenus) { - try { - appMenus = JSON.parse(appMenus) - } catch (e) { - appMenus = [] - } - } else { - appMenus = [] - } - - this.setState({appMenus, property: this.props.wrap.property || ''}) - } - - handleConfirm = () => { - // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� - return new Promise((resolve, reject) => { - this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { - resolve(values) - } else { - reject(err) - } - }) - }) - } - - handleSubmit = (e) => { - e.preventDefault() - - if (this.props.inputSubmit) { - this.props.inputSubmit() - } - } - - render() { - const { wrap } = this.props - const { getFieldDecorator } = this.props.form - const { appMenus, property } = this.state - const formItemLayout = { - labelCol: { - xs: { span: 24 }, - sm: { span: 8 } - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 } - } - } - - return ( - <div className="model-menu-setting-form"> - <Form {...formItemLayout}> - <Row gutter={24}> - <Col span={12}> - <Form.Item label="瀵艰埅鏍忓悕绉�"> - {getFieldDecorator('name', { - initialValue: wrap.name, - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '瀵艰埅鏍忓悕绉�!' - } - ] - })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label="鑿滃崟鍙傛暟"> - {getFieldDecorator('MenuNo', { - initialValue: wrap.MenuNo, - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '鑿滃崟鍙傛暟!' - } - ] - })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="瀵艰埅鏍忎富浣撳唴瀹瑰搴︼紙鍖呮嫭logo銆佽彍鍗曘�侀摼鎺ョ瓑锛夈��"> - <Icon type="question-circle" /> - 瀹藉害 - </Tooltip> - }> - {getFieldDecorator('width', { - initialValue: wrap.width || 1200, - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '瀹藉害!' - } - ] - })(<InputNumber min={400} precision={0} onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label="楂樺害"> - {getFieldDecorator('height', { - initialValue: wrap.height || 50, - rules: [ - { - required: true, - message: this.props.dict['form.required.input'] + '楂樺害!' - } - ] - })(<InputNumber min={50} max={200} precision={0} onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label="logo"> - {getFieldDecorator('logo', { - initialValue: wrap.logo - })( - <SourceComponent type="image" /> - )} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label="logo灞炴��"> - {getFieldDecorator('property', { - initialValue: wrap.property || '' - })( - <Radio.Group onChange={(e) => this.setState({property: e.target.value})} style={{whiteSpace: 'nowrap'}}> - <Radio value="">绌�</Radio> - <Radio value="linkmenu">鍏宠仈鑿滃崟</Radio> - <Radio value="link">閾炬帴</Radio> - </Radio.Group> - )} - </Form.Item> - </Col> - {property === 'linkmenu' ? <Col span={12}> - <Form.Item label="logo閾炬帴"> - {getFieldDecorator('linkmenu', { - initialValue: wrap.linkmenu || '', - rules: [ - { - required: true, - message: this.props.dict['form.required.select'] + '鍏宠仈鑿滃崟!' - } - ] - })( - <Select - showSearch - filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} - > - {appMenus.map(option => - <Select.Option key={option.MenuID} value={option.MenuID}>{option.MenuName}</Select.Option> - )} - </Select> - )} - </Form.Item> - </Col> : null} - {property === 'link' ? <Col span={24}> - <Form.Item label="logo閾炬帴" className="textarea"> - {getFieldDecorator('link', { - initialValue: wrap.link || '', - rules: [{ - required: true, - message: '璇疯緭鍏ラ摼鎺ュ湴鍧�!' - }] - })(<TextArea rows={2} />)} - </Form.Item> - </Col> : null} - <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="瀛樺湪鐧诲綍涓斿彇鍒扮櫥褰曚俊鎭椂锛屾樉绀虹敤鎴峰ご鍍忋�佺敤鎴峰悕鍙婇��鍑恒��"> - <Icon type="question-circle" /> - 鐢ㄦ埛淇℃伅 - </Tooltip> - }> - {getFieldDecorator('user', { - initialValue: wrap.user || 'hidden' - })( - <Radio.Group> - <Radio value="hidden">闅愯棌</Radio> - <Radio value="show">鏄剧ず</Radio> - </Radio.Group> - )} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="榛樿闅愯棌鑿滃崟鏍忥紝榧犳爣鍦ㄩ潬杩戦《閮ㄦ椂鏄剧ず銆�"> - <Icon type="question-circle" /> - 鎮诞鏄剧ず - </Tooltip> - }> - {getFieldDecorator('hover', { - initialValue: wrap.hover || 'false' - })( - <Radio.Group> - <Radio value="true">鍚敤</Radio> - <Radio value="false">涓嶅惎鐢�</Radio> - </Radio.Group> - )} - </Form.Item> - </Col> - </Row> - </Form> - </div> - ) - } -} - -export default Form.create()(SettingForm) \ No newline at end of file diff --git a/src/pc/components/navbar/normal-navbar/wrapsetting/settingform/index.scss b/src/pc/components/navbar/normal-navbar/wrapsetting/settingform/index.scss deleted file mode 100644 index 25eecb7..0000000 --- a/src/pc/components/navbar/normal-navbar/wrapsetting/settingform/index.scss +++ /dev/null @@ -1,19 +0,0 @@ -.model-menu-setting-form { - position: relative; - - .anticon-question-circle { - color: #c49f47; - margin-right: 3px; - } - .ant-input-number { - width: 100%; - } - .ant-form-item.textarea { - .ant-form-item-label { - width: 16%; - } - .ant-form-item-control-wrapper { - width: 84%; - } - } -} \ No newline at end of file diff --git a/src/tabviews/custom/components/card/balcony/index.jsx b/src/tabviews/custom/components/card/balcony/index.jsx index 5026c93..2842c8a 100644 --- a/src/tabviews/custom/components/card/balcony/index.jsx +++ b/src/tabviews/custom/components/card/balcony/index.jsx @@ -175,7 +175,7 @@ MKEmitter.emit('reloadData', btn.syncComponentId) // 鍚岀骇鏍囩鍒锋柊 } - if (position === 'mainline' && supModule) { // 涓昏〃琛屽埛鏂� + if (position === 'mainline' && supModule) { // 涓昏〃琛屽埛鏂� MKEmitter.emit('reloadData', supModule, (BID || 'empty')) } else if (position === 'popclose') { // 鏍囩鍏抽棴鍒锋柊 supModule && MKEmitter.emit('reloadData', supModule, (BID || 'empty')) diff --git a/src/tabviews/custom/components/card/data-card/index.scss b/src/tabviews/custom/components/card/data-card/index.scss index 9f7e363..e01ac8d 100644 --- a/src/tabviews/custom/components/card/data-card/index.scss +++ b/src/tabviews/custom/components/card/data-card/index.scss @@ -143,6 +143,8 @@ bottom: 0; left: 0; right: 0; + z-index: 2; + opacity: 0; cursor: pointer; } } diff --git a/src/tabviews/custom/components/card/prop-card/index.scss b/src/tabviews/custom/components/card/prop-card/index.scss index bb919f8..d1d8f34 100644 --- a/src/tabviews/custom/components/card/prop-card/index.scss +++ b/src/tabviews/custom/components/card/prop-card/index.scss @@ -86,6 +86,8 @@ bottom: 0; left: 0; right: 0; + z-index: 2; + opacity: 0; cursor: pointer; } } diff --git a/src/utils/utils.js b/src/utils/utils.js index ca334ec..84bcc0f 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -703,8 +703,6 @@ if (item.type === 'link') { arrfield.push(item.linkField) - } else if ((item.type === 'select' || item.type === 'radio') && item.linkSubField && item.linkSubField.length > 0) { - arrfield.push(...item.linkSubField) } else if (item.type === 'checkcard') { arrfield = item.fields.map(f => f.field) arrfield.push(item.cardValField) @@ -712,6 +710,9 @@ arrfield.push(item.urlField) } } + if (['select', 'radio', 'link', 'checkcard'].includes(item.type) && item.linkSubField && item.linkSubField.length > 0) { + arrfield.push(...item.linkSubField) + } if (item.disableField) { arrfield.push(item.disableField) } diff --git a/src/views/menudesign/index.scss b/src/views/menudesign/index.scss index 178ca87..3ac0d49 100644 --- a/src/views/menudesign/index.scss +++ b/src/views/menudesign/index.scss @@ -171,4 +171,7 @@ background: transparent!important; border-radius: 0!important; } +} +body { + overflow-y: hidden; } \ No newline at end of file diff --git a/src/views/mobdesign/index.scss b/src/views/mobdesign/index.scss index ca8fe66..a0a52fc 100644 --- a/src/views/mobdesign/index.scss +++ b/src/views/mobdesign/index.scss @@ -241,4 +241,8 @@ border: 1px solid rgba(0, 0, 0, 0.07); background: rgba(0, 0, 0, 0); } +} + +body { + overflow-y: hidden; } \ No newline at end of file diff --git a/src/views/pcdesign/index.scss b/src/views/pcdesign/index.scss index 8b4d1bd..5652d35 100644 --- a/src/views/pcdesign/index.scss +++ b/src/views/pcdesign/index.scss @@ -220,4 +220,8 @@ border: 1px solid rgba(0, 0, 0, 0.07); background: rgba(0, 0, 0, 0); } +} + +body { + overflow-y: hidden; } \ No newline at end of file -- Gitblit v1.8.0