From 5515a793e08f2c9f0c8116960d3043f5bd32ccad Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 15 六月 2021 11:07:02 +0800 Subject: [PATCH] 2021-06-15 --- src/menu/components/share/pastecomponent/index.jsx | 7 + src/views/pcdesign/index.jsx | 2 src/tabviews/zshare/mutilform/checkCard/index.jsx | 7 + src/menu/components/form/normal-form/index.jsx | 44 ++++++++++ src/templates/modalconfig/checkCard/index.scss | 1 src/tabviews/custom/components/form/normal-form/index.jsx | 70 +++++++++++------ public/options.json | 1 src/tabviews/zshare/mutilform/checkCard/index.scss | 38 +++++++++ src/tabviews/zshare/mutilform/index.jsx | 2 src/tabviews/tabmanage/index.jsx | 6 src/views/appmanage/index.jsx | 15 +++ src/views/mobdesign/index.jsx | 2 src/tabviews/zshare/mutilform/customTextArea/index.jsx | 2 src/views/menudesign/index.jsx | 2 src/utils/utils.js | 4 src/assets/css/main.scss | 4 + 16 files changed, 163 insertions(+), 44 deletions(-) diff --git a/public/options.json b/public/options.json index a741dc9..40ee2e8 100644 --- a/public/options.json +++ b/public/options.json @@ -8,6 +8,7 @@ "filter": "false", "defaultApp": "", "defaultLang": "zh-CN", + "WXAppID": "", "debugger": false, "host": "http://qingqiumarket.cn", "service": "mkwms/" diff --git a/src/assets/css/main.scss b/src/assets/css/main.scss index 3d90a6e..c5c13e3 100644 --- a/src/assets/css/main.scss +++ b/src/assets/css/main.scss @@ -386,4 +386,8 @@ padding: 5px 20px; } } +} + +.ant-input[disabled] { + background-color: #fafafa!important; } \ No newline at end of file diff --git a/src/menu/components/form/normal-form/index.jsx b/src/menu/components/form/normal-form/index.jsx index 7ccde07..7c7771e 100644 --- a/src/menu/components/form/normal-form/index.jsx +++ b/src/menu/components/form/normal-form/index.jsx @@ -450,6 +450,7 @@ group.fields = group.fields.filter(item => !item.focus) this.setState({group, visible: false, editform: null}) + this.updateGroup(group) } /** @@ -622,6 +623,47 @@ }) } + pasteForm = (res) => { + let _config = fromJS(this.state.group).toJS() + let fieldrepet = false // 瀛楁閲嶅 + let labelrepet = false // 鎻愮ず鏂囧瓧閲嶅 + + _config.fields.forEach(item => { + if (res.field && item.field && item.field.toLowerCase() === res.field.toLowerCase()) { + fieldrepet = true + } else if (res.label && item.label === res.label) { + labelrepet = true + } + }) + + if (fieldrepet) { + notification.warning({ + top: 92, + message: '瀛楁宸插瓨鍦紒', + duration: 10 + }) + return + } else if (labelrepet) { + notification.warning({ + top: 92, + message: '鍚嶇О宸插瓨鍦紒', + duration: 10 + }) + return + } + _config.fields.push(res) + + this.updateGroup(_config) + + this.handleForm(res) + + notification.success({ + top: 92, + message: '绮樿创鎴愬姛锛�', + duration: 2 + }) + } + clickComponent = (e) => { if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() @@ -639,7 +681,7 @@ <Icon className="plus" title="娣诲姞鍒嗙粍" onClick={this.addCard} type="plus" /> <WrapComponent config={card} updateConfig={this.updateComponent} /> <CopyComponent type="propcard" card={card}/> - <PasteComponent config={card} options={['cardcell']} updateConfig={this.updateComponent} /> + <PasteComponent config={card} options={['form']} updateConfig={this.pasteForm} /> <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" /> <UserComponent config={card}/> <Icon className="close" title="鍒犻櫎缁勪欢" type="delete" onClick={() => this.props.deletecomponent(card.uuid)} /> diff --git a/src/menu/components/share/pastecomponent/index.jsx b/src/menu/components/share/pastecomponent/index.jsx index e4d8edf..73de275 100644 --- a/src/menu/components/share/pastecomponent/index.jsx +++ b/src/menu/components/share/pastecomponent/index.jsx @@ -129,6 +129,7 @@ pasteSubmit = () => { const { options } = this.props this.pasteFormRef.handleConfirm().then(res => { + if (!options.includes(res.copyType)) { notification.warning({ top: 92, message: '閰嶇疆淇℃伅鏍煎紡閿欒锛�', duration: 5 }) return @@ -147,7 +148,11 @@ MKEmitter.emit('copyButtons', copyBtns) } - if (type === 'action') { + if (config.type === 'form' && config.subtype === 'stepform') { + this.props.updateConfig(res) + this.setState({visible: false}) + return + } else if (type === 'action') { config.action = config.action || [] config.action = config.action.filter(item => !item.origin) diff --git a/src/tabviews/custom/components/form/normal-form/index.jsx b/src/tabviews/custom/components/form/normal-form/index.jsx index aa6387c..03e0350 100644 --- a/src/tabviews/custom/components/form/normal-form/index.jsx +++ b/src/tabviews/custom/components/form/normal-form/index.jsx @@ -33,7 +33,6 @@ BID: '', // 涓婄骇ID config: null, // 鍥捐〃閰嶇疆淇℃伅 loading: false, // 鏁版嵁鍔犺浇鐘舵�� - activeKey: '', // 閫変腑鏁版嵁 sync: false, // 鏄惁缁熶竴璇锋眰鏁版嵁 data: null, // 鏁版嵁 group: null, @@ -66,6 +65,7 @@ group.subButton.uuid = group.uuid group.subButton.$menuId = group.uuid group.subButton.Ot = 'requiredSgl' + group.subButton.$forbid = true group.subButton.OpenType = 'formSubmit' group.subButton.execError = 'never' @@ -180,6 +180,26 @@ MKEmitter.emit('reloadData', btn.syncComponentId) // 鍚岀骇鏍囩鍒锋柊 } + if (config.wrap.datatype !== 'static' && config.setting) { + this.loadData(btn) + } else { + this.execSuccess(btn) + } + } + + resetParentParam = (MenuID, id) => { + const { config } = this.state + if (config.wrap.datatype === 'static' || !config.setting.supModule || config.setting.supModule !== MenuID) return + if (id !== this.state.BID) { + this.setState({ BID: id }, () => { + this.loadData() + }) + } + } + + execSuccess = (btn) => { + const { config, group } = this.state + if (config.subcards.length > group.sort) { let _group = config.subcards.filter(item => item.sort === (group.sort + 1))[0] @@ -217,17 +237,7 @@ } } - resetParentParam = (MenuID, id) => { - const { config } = this.state - if (config.wrap.datatype === 'static' || !config.setting.supModule || config.setting.supModule !== MenuID) return - if (id !== this.state.BID) { - this.setState({ BID: id }, () => { - this.loadData() - }) - } - } - - async loadData () { + async loadData (btn) { const { mainSearch, menuType } = this.props const { config, arr_field, BID, group } = this.state @@ -236,6 +246,7 @@ data: {}, loading: false }) + btn && this.execSuccess(btn) return } @@ -254,6 +265,7 @@ this.setState({ loading: false }) + btn && this.execSuccess(btn) return } @@ -267,20 +279,27 @@ let result = await Api.genericInterface(param) if (result.status) { let _data = result.data && result.data[0] ? result.data[0] : {} - let _group = group - if (config.wrap.statusControl && _data[config.wrap.statusControl]) { - let _status = _data[config.wrap.statusControl] - let _groups = config.subcards.filter(item => item.setting.status === _status)[0] - _group = _groups || _group - } - this.setState({ - group: _group, - step: _group.sort - 1, - activeKey: '', - data: _data || {}, - loading: false - }) + if (btn) { + this.setState({ + data: _data || {}, + loading: false + }) + this.execSuccess(btn) + } else { + let _group = group + if (config.wrap.statusControl && _data[config.wrap.statusControl]) { + let _status = _data[config.wrap.statusControl] + let _groups = config.subcards.filter(item => item.setting.status === _status)[0] + _group = _groups || _group + } + this.setState({ + group: _group, + step: _group.sort - 1, + data: _data || {}, + loading: false + }) + } } else { this.setState({ loading: false, @@ -290,6 +309,7 @@ message: result.message, duration: 10 }) + btn && this.execSuccess(btn) } } diff --git a/src/tabviews/tabmanage/index.jsx b/src/tabviews/tabmanage/index.jsx index 7be8cb2..5d37c1d 100644 --- a/src/tabviews/tabmanage/index.jsx +++ b/src/tabviews/tabmanage/index.jsx @@ -49,9 +49,9 @@ return { uuid: temp.MenuID, value: temp.MenuID, - MenuName: temp.MenuName, + MenuName: temp.MenuName || '', type: temp.Template, - MenuNo: temp.MenuNo, + MenuNo: temp.MenuNo || '', Remark: temp.Remark } }) @@ -504,7 +504,7 @@ let _tabviews = [] if (tabviews) { - _tabviews = tabviews.filter(tab => tab.MenuName.toLowerCase().indexOf(searchKey.toLowerCase()) >= 0) + _tabviews = tabviews.filter(tab => tab.MenuName.toLowerCase().indexOf(searchKey.toLowerCase()) >= 0 || tab.MenuNo.toLowerCase().indexOf(searchKey.toLowerCase()) >= 0) } return ( diff --git a/src/tabviews/zshare/mutilform/checkCard/index.jsx b/src/tabviews/zshare/mutilform/checkCard/index.jsx index c8ceec6..f9e8ecf 100644 --- a/src/tabviews/zshare/mutilform/checkCard/index.jsx +++ b/src/tabviews/zshare/mutilform/checkCard/index.jsx @@ -29,8 +29,10 @@ } changeCard = (item) => { - const { multiple } = this.props.card + const { multiple, readonly } = this.props.card const { selectKeys } = this.state + + if (readonly) return if (multiple === 'true') { let keys = [] @@ -107,8 +109,9 @@ } render() { + const { card } = this.props return ( - <div className="check-card-form-box"> + <div className={'check-card-form-box' + (card.readonly ? ' readonly' : '')}> <Row gutter={12}>{this.getCards()}</Row> </div> ) diff --git a/src/tabviews/zshare/mutilform/checkCard/index.scss b/src/tabviews/zshare/mutilform/checkCard/index.scss index 3d87dc7..0887939 100644 --- a/src/tabviews/zshare/mutilform/checkCard/index.scss +++ b/src/tabviews/zshare/mutilform/checkCard/index.scss @@ -2,6 +2,7 @@ margin-top: 10px; margin-bottom: -10px; .card-cell { + position: relative; border: 1px solid #bcbcbc; border-radius: 4px; padding: 6px; @@ -16,7 +17,7 @@ white-space: nowrap; } } - .card-cell:hover, .card-cell.active { + .card-cell.active { border-color: #1890ff; background: #1890ff; span { @@ -24,6 +25,7 @@ } } .card-pic-cell { + position: relative; border: 1px solid #bcbcbc; border-radius: 4px; background-size: cover; @@ -32,8 +34,40 @@ line-height: 1.5; cursor: pointer; } - .card-pic-cell:hover, .card-pic-cell.active { + .card-pic-cell.active { border-color: #1890ff; box-shadow: 0px 0px 4px #1890ff; } + + .card-cell.active::after { + content: ' '; + position: absolute; + display: table; + border: 2px solid #ffffff; + border-top: 0; + border-left: 0; + bottom: 0; + right: 12px; + width: 6px; + height: 12px; + transform: rotate(45deg) scale(1) translate(-50%, -50%); + } +} +.check-card-form-box:not(.readonly) { + .card-cell:hover { + border-color: #1890ff; + background: #1890ff; + span { + color: #ffffff!important; + } + } + .card-pic-cell:hover { + border-color: #1890ff; + box-shadow: 0px 0px 4px #1890ff; + } +} +.check-card-form-box.readonly { + .card-cell, .card-pic-cell { + cursor: not-allowed; + } } \ No newline at end of file diff --git a/src/tabviews/zshare/mutilform/customTextArea/index.jsx b/src/tabviews/zshare/mutilform/customTextArea/index.jsx index 457e5f2..e7f2a38 100644 --- a/src/tabviews/zshare/mutilform/customTextArea/index.jsx +++ b/src/tabviews/zshare/mutilform/customTextArea/index.jsx @@ -80,7 +80,7 @@ const { value } = this.state return ( - <TextArea value={value} autoSize={{ minRows: 2, maxRows: Item.maxRows || 6 }} onChange={this.onChange} disabled={Item.readonly === 'true'} /> + <TextArea value={value} autoSize={{ minRows: 2, maxRows: Item.maxRows || 6 }} onChange={this.onChange} disabled={Item.readonly} /> ) } } diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx index 80d4c3a..77a19e4 100644 --- a/src/tabviews/zshare/mutilform/index.jsx +++ b/src/tabviews/zshare/mutilform/index.jsx @@ -380,7 +380,7 @@ _cell.Text = cell[item.valueText] if ((!_cell.Value && _cell.Value !== 0) || (!_cell.Text && _cell.Text !== 0)) return } else { - _cell.$value = cell[item.valueField] + _cell.$value = cell[item.cardValField] _cell = {..._cell, ...cell} if (!_cell.$value && _cell.$value !== 0) return } diff --git a/src/templates/modalconfig/checkCard/index.scss b/src/templates/modalconfig/checkCard/index.scss index 985c786..ddc72cb 100644 --- a/src/templates/modalconfig/checkCard/index.scss +++ b/src/templates/modalconfig/checkCard/index.scss @@ -1,4 +1,5 @@ .check-card-edit-box { + line-height: 1.5; .card-cell { border: 1px solid #bcbcbc; border-radius: 4px; diff --git a/src/utils/utils.js b/src/utils/utils.js index 891d2fd..acc7f97 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -702,7 +702,7 @@ arrfield.push(...item.linkSubField) } else if (item.type === 'checkcard') { arrfield = item.fields.map(f => f.field) - arrfield.push(item.valueField) + arrfield.push(item.cardValField) } arrfield = Array.from(new Set(arrfield)) @@ -1157,7 +1157,7 @@ } // 娣诲姞鏁版嵁涓瓧娈碉紝琛ㄥ崟鍊间紭鍏�(鎸夐挳涓嶉�夎鎴栧琛屾嫾鎺ユ椂璺宠繃) - if (data && btn.Ot !== 'notRequired' && btn.Ot !== 'requiredOnce') { + if (data && !btn.$forbid && btn.Ot !== 'notRequired' && btn.Ot !== 'requiredOnce') { datavars = {...data, ...datavars} const setField = (col) => { diff --git a/src/views/appmanage/index.jsx b/src/views/appmanage/index.jsx index 3efc3ba..9814d18 100644 --- a/src/views/appmanage/index.jsx +++ b/src/views/appmanage/index.jsx @@ -1,6 +1,6 @@ import React, {Component} from 'react' import { fromJS } from 'immutable' -import { Spin, notification, Button, Table, Modal, ConfigProvider } from 'antd' +import { Spin, notification, Button, Table, Modal, ConfigProvider, Typography } from 'antd' import moment from 'moment' import md5 from 'md5' import enUS from 'antd/es/locale/en_US' @@ -12,11 +12,19 @@ import './index.scss' const { confirm } = Modal +const { Paragraph } = Typography const _locale = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS const Header = asyncComponent(() => import('@/mob/header')) const MutilForm = asyncComponent(() => import('./mutilform')) const SubMutilForm = asyncComponent(() => import('./submutilform')) + +let base_url = '' +if (process.env.NODE_ENV === 'production') { + base_url = document.location.origin + '/' + window.GLOB.service +} else { + base_url = window.GLOB.location + '/' + window.GLOB.service +} class AppManage extends Component { state = { @@ -100,11 +108,12 @@ title: '鎿嶄綔', key: 'action', align: 'center', - width: '190px', + width: '250px', render: (text, record) => ( <div> <Button type="link" onClick={() => this.deleteSubApp(record)} style={{color: '#ff4d4f'}}>鍒犻櫎</Button> <Button type="link" onClick={() => this.jumpApp(record)}>缂栬緫搴旂敤</Button> + <Paragraph style={{display: 'inline-block', margin: 0}} copyable={{ text: `${base_url}${record.typename}/index.html#/index/${this.state.selectApp.kei_no}/${record.lang}` }}></Paragraph> </div> ) }, @@ -152,7 +161,7 @@ return item }) - + this.setState({ loading: false, applist: applist, diff --git a/src/views/menudesign/index.jsx b/src/views/menudesign/index.jsx index 375ea08..e89a971 100644 --- a/src/views/menudesign/index.jsx +++ b/src/views/menudesign/index.jsx @@ -845,7 +845,7 @@ check(item.components) return } - if (['propcard', 'brafteditor', 'sandbox'].includes(item.subtype) && item.wrap.datatype === 'static') return + if (['propcard', 'brafteditor', 'sandbox', 'stepform'].includes(item.subtype) && item.wrap.datatype === 'static') return if (item.setting) { if (item.setting.interType === 'system' && item.setting.execute !== 'false' && !item.setting.dataresource) { diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx index d44e5f9..3f3f415 100644 --- a/src/views/mobdesign/index.jsx +++ b/src/views/mobdesign/index.jsx @@ -1290,7 +1290,7 @@ error = `瀵艰埅鏍忋��${item.name}銆嬫湭璁剧疆鑿滃崟鍙傛暟锛乣 } - if (['propcard', 'brafteditor', 'sandbox', 'tabbar'].includes(item.subtype) && item.wrap.datatype === 'static') return + if (['propcard', 'brafteditor', 'sandbox', 'tabbar', 'stepform'].includes(item.subtype) && item.wrap.datatype === 'static') return if (item.setting) { if (item.setting.interType === 'system' && item.setting.execute !== 'false' && !item.setting.dataresource) { diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx index 2ed7bdc..837911a 100644 --- a/src/views/pcdesign/index.jsx +++ b/src/views/pcdesign/index.jsx @@ -1330,7 +1330,7 @@ check(item.components) return } - if (['propcard', 'brafteditor', 'sandbox'].includes(item.subtype) && item.wrap.datatype === 'static') return + if (['propcard', 'brafteditor', 'sandbox', 'stepform'].includes(item.subtype) && item.wrap.datatype === 'static') return if (item.setting) { if (item.setting.interType === 'system' && item.setting.execute !== 'false' && !item.setting.dataresource) { -- Gitblit v1.8.0