From abf582fbe18c20ab4f01458a9209878c77fea9c0 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 15 一月 2020 18:59:52 +0800 Subject: [PATCH] 2020-01-15 --- src/templates/subtableconfig/index.jsx | 1117 ++++++++++++++-------------------------------------------- 1 files changed, 277 insertions(+), 840 deletions(-) diff --git a/src/templates/subtableconfig/index.jsx b/src/templates/subtableconfig/index.jsx index 1735682..e2196ff 100644 --- a/src/templates/subtableconfig/index.jsx +++ b/src/templates/subtableconfig/index.jsx @@ -6,7 +6,13 @@ import HTML5Backend from 'react-dnd-html5-backend' import { Button, Card, Modal, Collapse, notification, Spin, Select, List, Icon, Empty, Switch, Tooltip } from 'antd' import moment from 'moment' + import Api from '@/api' +import zhCN from '@/locales/zh-CN/comtable.js' +import enUS from '@/locales/en-US/comtable.js' +import Utils from '@/utils/utils.js' +import { getSearchForm, getActionForm, getColumnForm } from '@/templates/tableshare/formconfig' + import ActionForm from './actionform' import SettingForm from './settingform' import SearchForm from '@/templates/tableshare/searchform' @@ -18,9 +24,6 @@ import VerifyCard from '@/templates/tableshare/verifycard' import MenuForm from '@/templates/tableshare/menuform' import SourceElement from '@/templates/tableshare/dragelement/source' -import zhCN from '@/locales/zh-CN/comtable.js' -import enUS from '@/locales/en-US/comtable.js' -import Utils from '@/utils/utils.js' import Source from './source' import './index.scss' @@ -50,10 +53,8 @@ menuformlist: null, // 鍩烘湰淇℃伅琛ㄥ崟瀛楁 formlist: null, // 鎼滅储鏉′欢銆佹寜閽�佹樉绀哄垪琛ㄥ崟瀛楁 formtemp: '', // 琛ㄥ崟绫诲瀷锛屾樉绀哄垪銆佹寜閽�佹悳绱㈡潯浠� + modaltype: '', // 妯℃�佹绫诲瀷锛屾帶鍒舵ā鎬佹鏄剧ず card: null, // 缂栬緫鍏冪礌 - searchloading: false, // 鎼滅储鏉′欢鍔犺浇涓� - actionloading: false, // 鎸夐挳鍔犺浇涓� - columnsloading: false, // 鏄剧ず鍒楀姞杞戒腑 menuloading: false, // 鑿滃崟淇濆瓨涓� menucloseloading: false, // 鑿滃崟鍏抽棴鏃讹紝閫夋嫨淇濆瓨 loading: false, // 鍔犺浇涓紝椤甸潰spin @@ -64,6 +65,7 @@ originConfig: null, // 鍘熼厤缃� originActions: null, // 鍘熷鎸夐挳淇℃伅锛屼娇鐢ㄥ凡鏈夌敤鎴锋ā鏉� delActions: [], // 鍒犻櫎鎸夐挳鍒楄〃 + copyActions: [], // 澶嶅埗鎸夐挳缁� funcLoading: false, // 瀛樺偍杩囩▼鍒涘缓涓� showColumnName: false, // 鏄剧ず鍒楀瓧娈靛悕鎺у埗 tabviews: [], // 鎵�鏈夋爣绛鹃〉 @@ -267,682 +269,79 @@ } } + /** + * @description 鍏冪礌娣诲姞鎴栨嫋鍔ㄦ椂椤哄簭鍙樺寲 + */ handleList = (type, list, card) => { const { config } = this.state if (list.length > config[type].length) { list = list.filter(item => !item.origin) - this.setState({ - [type + 'loading']: true, - config: {...config, [type]: list } - }, () => { - // 鍒锋柊瀵瑰簲鐨勯厤缃俊鎭� - this.setState({ - [type + 'loading']: false - }) - - if (type === 'search') { - this.handleSearch(card) - } else if (type === 'action') { - this.handleAction(card) - } else if (type === 'columns') { - this.handleColumn(card) - } - }) - } else { - this.setState({config: {...config, [type]: list}}) + if (type === 'search') { + this.handleSearch(card) + } else if (type === 'action') { + this.handleAction(card) + } else if (type === 'columns') { + this.handleColumn(card) + } } + + this.setState({config: {...config, [type]: list}}) } + /** + * @description 鎼滅储鏉′欢缂栬緫锛岃幏鍙栨悳绱㈡潯浠惰〃鍗曚俊鎭� + */ handleSearch = (card) => { this.setState({ - visible: true, - formtemp: 'search', - modalTitle: '缂栬緫-鎼滅储鏉′欢', + modaltype: 'search', card: card, - formlist: [ - { - type: 'text', - key: 'label', - label: this.state.dict['header.form.name'], - initVal: card.label, - required: true, - readonly: false - }, - { - type: 'text', - key: 'field', - label: this.state.dict['header.form.field'], - initVal: card.field, - tooltip: '瀛楁鍚嶅彲浠ヤ娇鐢ㄩ�楀彿鍒嗛殧锛岃繘琛屽瀛楁缁煎悎鎼滅储锛屾敞锛氱患鍚堟悳绱粎鍦ㄦ枃鏈被鍨嬫椂鏈夋晥', - tooltipClass: 'middle', - required: true, - readonly: false - }, - { - type: 'select', - key: 'type', - label: this.state.dict['header.form.type'], - initVal: card.type, - required: true, - options: [{ - value: 'text', - text: this.state.dict['header.form.text'] - }, { - value: 'select', - text: this.state.dict['header.form.select'] - }, { - value: 'multiselect', - text: this.state.dict['header.form.multiselect'] - }, { - value: 'link', - text: this.state.dict['header.form.link'] - }, { - value: 'date', - text: this.state.dict['header.form.dateday'] - }, { - value: 'dateweek', - text: this.state.dict['header.form.dateweek'] - }, { - value: 'datemonth', - text: this.state.dict['header.form.datemonth'] - }, { - value: 'daterange', - text: this.state.dict['header.form.daterange'] - }] - }, - { - type: 'text', - key: 'initval', - label: this.state.dict['header.form.initval'], - initVal: card.initval, - required: false - }, - { - type: 'radio', - key: 'resourceType', - label: this.state.dict['header.form.resourceType'], - initVal: card.resourceType || '0', - required: true, - options: [{ - value: '0', - text: this.state.dict['header.form.custom'] - }, { - value: '1', - text: this.state.dict['header.form.datasource'] - }] - }, - { - type: 'radio', - key: 'setAll', - label: this.state.dict['header.form.setAll'], - initVal: card.setAll || 'false', - options: [{ - value: 'true', - text: this.state.dict['header.form.true'] - }, { - value: 'false', - text: this.state.dict['header.form.false'] - }] - }, - { - type: 'textarea', - key: 'dataSource', - label: this.state.dict['header.form.datasource'], - initVal: card.dataSource || '', - required: true, - readonly: false - }, - { - type: 'options', - key: 'options', - label: '', - initVal: card.options || [], - required: true, - readonly: false - }, - { - type: 'text', - key: 'linkField', - label: this.state.dict['header.form.linkField'], - initVal: card.linkField || '', - required: true, - readonly: false - }, - { - type: 'text', - key: 'valueField', - label: this.state.dict['header.form.valueField'], - initVal: card.valueField || '', - required: true, - readonly: false - }, - { - type: 'text', - key: 'valueText', - label: this.state.dict['header.form.valueText'], - initVal: card.valueText || '', - required: true, - readonly: false - }, - { - type: 'text', - key: 'orderBy', - label: this.state.dict['header.form.orderBy'], - initVal: card.orderBy || '', - required: false, - readonly: false - }, - { - type: 'select', - key: 'orderType', - label: this.state.dict['header.form.orderType'], - initVal: card.orderType || 'asc', - options: [{ - value: 'asc', - text: this.state.dict['header.form.asc'] - }, { - value: 'desc', - text: this.state.dict['header.form.desc'] - }] - }, - { - type: 'select', - key: 'match', - label: this.state.dict['header.form.match'], - initVal: card.match || 'like', - required: true, - options: [{ - value: 'like', - text: 'like' - }, { - value: 'equal', - text: 'equal' - }, { - value: 'greater', - text: '>' - }, { - value: 'less', - text: '<' - }, { - value: 'greaterequal', - text: '>=' - }] - }, - { - type: 'select', - key: 'display', - label: this.state.dict['header.form.display'], - initVal: card.display || 'dropdown', - required: true, - options: [{ - value: 'dropdown', - text: this.state.dict['header.form.dropdown'] - }, { - value: 'button', - text: this.state.dict['header.form.button'] - }] - } - ] + formlist: getSearchForm(card) }) } + /** + * @description 鎸夐挳缂栬緫锛岃幏鍙栨寜閽〃鍗曚俊鎭� + */ handleAction = (card, type) => { let ableField = this.props.permFuncField.join(', ') + let functip = <div> + <p style={{marginBottom: '5px'}}>{this.state.dict['header.modal.func.innerface'].replace('@ableField', ableField)}</p> + <p>{this.state.dict['header.modal.func.outface']}</p> + </div> + this.setState({ - visible: true, - formtemp: 'action', - modalTitle: type === 'copy' ? '澶嶅埗-鎸夐挳' : '缂栬緫-鎸夐挳', + modaltype: type === 'copy' ? 'actionCopy' : 'actionEdit', card: card, - formlist: [ - { - type: 'text', - key: 'label', - label: this.state.dict['header.form.name'], - initVal: card.label, - required: true, - readonly: false - }, - { - type: 'select', - key: 'OpenType', - label: this.state.dict['header.form.openType'], - initVal: card.OpenType, - required: true, - options: [{ - value: 'pop', - text: this.state.dict['header.form.popform'] - }, { - value: 'prompt', - text: this.state.dict['header.form.prompt'] - }, { - value: 'exec', - text: this.state.dict['header.form.exec'] - }, { - value: 'excelIn', - text: this.state.dict['header.form.excelIn'] - }, { - value: 'excelOut', - text: this.state.dict['header.form.excelOut'] - }, { - value: 'popview', - text: this.state.dict['header.form.popview'] - }] - }, { - type: 'select', - key: 'tabType', - label: this.state.dict['header.form.tabType'], - initVal: card.tabType || 'SubTable', - required: true, - options: [{ - value: 'SubTable', - text: this.state.dict['header.menu.tab.subtable'] - }] - }, - { - type: 'select', - key: 'linkTab', - label: '鍏宠仈鏍囩', - initVal: card.linkTab || '', - required: false, - options: [] - }, - { - type: 'radio', - key: 'intertype', - label: this.state.dict['header.form.intertype'], - initVal: card.intertype, - required: true, - options: [{ - value: 'inner', - text: this.state.dict['header.form.interface.inner'] - }, { - value: 'outer', - text: this.state.dict['header.form.interface.outer'] - }] - }, - { - type: 'text', - key: 'innerFunc', - label: this.state.dict['header.form.innerFunc'], - initVal: card.innerFunc, - tooltip: <div> - <p>鍐呴儴鎺ュ彛: 鍙嚜瀹氫箟鏁版嵁澶勭悊鍑芥暟锛屽嚱鏁板悕绉伴渶浠ableField}绛夊瓧绗﹀紑濮嬶紱鏈缃椂浼氳皟鐢ㄧ郴缁熷嚱鏁帮紝浣跨敤绯荤粺鍑芥暟闇�瀹屽杽鏁版嵁婧愬強鎿嶄綔绫诲瀷;</p> - <p>澶栭儴鎺ュ彛: 鍙嚜瀹氫箟鏁版嵁澶勭悊鍑芥暟锛屾彁浜ゆ暟鎹粡杩囧唴閮ㄥ嚱鏁板鐞嗗悗锛屼紶鍏ュ閮ㄦ帴鍙o紝鏈缃椂锛屾暟鎹細鐩存帴浼犲叆澶栭儴鎺ュ彛銆�</p> - </div>, - fields: this.props.permFuncField, - tooltipClass: 'middle', - required: false, - readonly: false - }, - { - type: 'radio', - key: 'sysInterface', - label: this.state.dict['header.form.sysInterface'], - initVal: card.sysInterface || 'false', - required: true, - options: [{ - value: 'true', - text: this.state.dict['header.form.true'] - }, { - value: 'false', - text: this.state.dict['header.form.false'] - }] - }, - { - type: 'text', - key: 'outerFunc', - label: this.state.dict['header.form.outerFunc'], - initVal: card.outerFunc, - required: false, - readonly: false - }, - { - type: 'text', - key: 'interface', - label: this.state.dict['header.form.interface'], - initVal: card.sysInterface === 'true' ? (window.GLOB.mainSystemApi || window.GLOB.subSystemApi) : card.interface, - required: true, - readonly: card.sysInterface === 'true' - }, - { - type: 'text', - key: 'callbackFunc', - label: this.state.dict['header.form.callbackFunc'], - initVal: card.callbackFunc, - required: false, - readonly: false - }, - { - type: 'select', - key: 'position', - label: this.state.dict['header.form.position'], - initVal: card.position || 'toolbar', - required: true, - options: [{ - value: 'toolbar', - text: this.state.dict['header.form.toolbar'] - }, { - value: 'grid', - text: this.state.dict['header.form.grid'] - }] - }, - { - type: 'select', - key: 'Ot', - label: this.state.dict['header.form.isRequired'], - initVal: card.Ot || 'requiredSgl', - required: true, - options: [] - }, - { - type: 'select', - key: 'execSuccess', - label: this.state.dict['header.form.execSuccess'], - initVal: card.execSuccess || 'never', - required: true, - options: [{ - value: 'never', - text: this.state.dict['header.form.refresh.never'] - }, { - value: 'grid', - text: this.state.dict['header.form.refresh.grid'] - }, { - value: 'view', - text: this.state.dict['header.form.refresh.view'] - }] - }, - { - type: 'select', - key: 'execError', - label: this.state.dict['header.form.execError'], - initVal: card.execError || 'never', - required: true, - options: [{ - value: 'never', - text: this.state.dict['header.form.refresh.never'] - }, { - value: 'grid', - text: this.state.dict['header.form.refresh.grid'] - }, { - value: 'view', - text: this.state.dict['header.form.refresh.view'] - }] - }, - { - type: 'select', - key: 'popClose', - label: this.state.dict['header.form.popClose'], - initVal: card.popClose || 'never', - required: true, - options: [{ - value: 'never', - text: this.state.dict['header.form.refresh.never'] - }, { - value: 'maingrid', - text: this.state.dict['header.form.refresh.maingrid'] - }, { - value: 'subgrid', - text: this.state.dict['header.form.refresh.subgrid'] - }] - }, - { - type: 'select', - key: 'icon', - label: this.state.dict['header.form.icon'], - initVal: card.icon, - required: false, - options: [] - }, - { - type: 'select', - key: 'class', - label: this.state.dict['header.form.class'], - initVal: card.class, - required: false, - options: [] - }, - { - type: 'text', - key: 'sql', - label: this.state.dict['header.form.datasource'], - initVal: card.sql || this.state.config.setting.tableName || '', - tooltip: this.state.dict['header.form.actionhelp.datasource'], - required: false - }, - { - type: 'select', - key: 'sqlType', - label: this.state.dict['header.form.action.type'], - initVal: card.sqlType || '', - tooltip: this.state.dict['header.form.actionhelp.sqlType'], - required: false, - options: [] - } - ] + formlist: getActionForm(card, functip, this.state.config, this.props.permFuncField, 'subtable') }) } + /** + * @description 鏄剧ず鍒椾笌鍚堝苟鍒楃紪杈戯紝鑾峰彇琛ㄥ崟淇℃伅 + */ handleColumn = (card) => { if (card.type !== 'colspan') { this.setState({ - visible: true, - formtemp: 'columns', - modalTitle: '缂栬緫-鏄剧ず鍒�', + modaltype: 'columns', card: card, - formlist: [ - { - type: 'text', - key: 'label', - label: this.state.dict['header.form.name'], - initVal: card.label, - required: true - }, - { - type: 'text', - key: 'field', - label: this.state.dict['header.form.field'], - initVal: card.field, - required: true, - readonly: false - }, - { - type: 'select', - key: 'type', - label: this.state.dict['header.form.type'], - initVal: card.type, - required: true, - options: [{ - value: 'text', - text: this.state.dict['header.form.text'] - }, { - value: 'picture', - text: this.state.dict['header.form.picture'] - }, { - value: 'number', - text: this.state.dict['header.form.number'] - }, { - value: 'textarea', - text: this.state.dict['header.form.textarea'] - }] - }, - { - type: 'select', - key: 'Align', - label: this.state.dict['header.form.align'], - initVal: card.Align, - required: true, - options: [{ - value: 'left', - text: this.state.dict['header.form.alignLeft'] - }, { - value: 'right', - text: this.state.dict['header.form.alignRight'] - }, { - value: 'center', - text: this.state.dict['header.form.alignCenter'] - }] - }, - { - type: 'radio', - key: 'Hide', - label: this.state.dict['header.form.Hide'], - initVal: card.Hide, - required: true, - options: [{ - value: 'true', - text: this.state.dict['header.form.true'] - }, { - value: 'false', - text: this.state.dict['header.form.false'] - }] - }, - { - type: 'radio', - key: 'IsSort', - label: this.state.dict['header.form.IsSort'], - initVal: card.IsSort, - required: true, - options: [{ - value: 'true', - text: this.state.dict['header.form.true'] - }, { - value: 'false', - text: this.state.dict['header.form.false'] - }] - }, - { - type: 'number', - key: 'Width', - min: 1, - max: 1000, - decimal: 0, - label: this.state.dict['header.form.columnWidth'], - initVal: card.Width, - required: true - }, - { - type: 'number', - key: 'decimal', - min: 0, - max: 18, - decimal: 0, - label: this.state.dict['header.form.decimal'], - initVal: card.decimal, - required: false - }, - { - type: 'select', - key: 'format', - label: this.state.dict['header.form.format'], - initVal: card.format || '', - options: [{ - value: '', - text: this.state.dict['header.form.empty'] - }, { - value: 'thdSeparator', - text: this.state.dict['header.form.thdSeparator'] - }], - required: false - }, - { - type: 'text', - key: 'prefix', - label: this.state.dict['header.form.prefix'], - initVal: card.prefix || '', - required: false, - readonly: false - }, - { - type: 'text', - key: 'postfix', - label: this.state.dict['header.form.postfix'], - initVal: card.postfix || '', - // tooltip: '鍚庣紑鍊艰缃负"\\n",琛ㄧず鎹㈣', - tooltipClass: 'middle', - required: false, - readonly: false - }, - { - type: 'select', - key: 'match', - label: this.state.dict['header.form.match'], - initVal: card.match || '', - options: [{ - value: '', - text: this.state.dict['header.form.empty'] - }, { - value: '>', - text: '>' - }, { - value: '<', - text: '<' - }, { - value: '>=', - text: '>=' - }, { - value: '<=', - text: '<=' - }], - required: false - }, - { - type: 'text', - key: 'matchVal', - min: -Infinity, - max: Infinity, - decimal: 0, - label: this.state.dict['header.form.matchVal'], - initVal: card.matchVal || '', - required: false, - readonly: false - }, - { - type: 'select', - key: 'color', - label: this.state.dict['header.form.color'], - initVal: card.color || '', - options: [{ - value: '', - text: this.state.dict['header.form.empty'] - }, { - value: 'red', - text: '绾㈣壊锛堝唴瀹癸級' - }, { - value: 'redbg', - text: '绾㈣壊锛堣儗鏅級' - }, { - value: 'orange', - text: '姗欒壊锛堝唴瀹癸級' - }, { - value: 'orangebg', - text: '姗欒壊锛堣儗鏅級' - }, { - value: 'green', - text: '缁胯壊锛堝唴瀹癸級' - }, { - value: 'greenbg', - text: '缁胯壊锛堣儗鏅級' - }], - required: false - } - ] + formlist: getColumnForm(card) }) } else { this.setState({ - visible: true, - formtemp: 'columns', + modaltype: 'colspan', card: card }) } } + /** + * @description 鎿嶄綔鍒楃紪杈� + */ handleGridBtn = () => { this.setState({ - visible: true, - formtemp: 'gridbtn', - modalTitle: '缂栬緫-鎿嶄綔鍒�', + modaltype: 'gridbtn' }) } @@ -953,14 +352,41 @@ * 3銆佹坊鍔犳垨缂栬緫鍒楋紝淇濆瓨鏃讹紝濡傛寜閽綅缃缃负琛ㄦ牸锛屽垯淇敼鎿嶄綔鍒楁樉绀虹姸鎬� */ handleSubmit = () => { - const { card } = this.state - let _config = JSON.parse(JSON.stringify(this.state.config)) + const { card, config, modaltype } = this.state - if (this.state.formtemp !== 'gridbtn') { - this.formRef.handleConfirm().then(res => { - let isupdate = false + if (modaltype === 'search') { + this.searchFormRef.handleConfirm().then(res => { + let _search = config.search.map(item => { + if (item.uuid === res.uuid) { + return res + } else { + return item + } + }) + _search = _search.filter(item => !item.origin) - if (res.type === 'action' && card.originCard && res.values.OpenType === 'pop') { + this.setState({ + config: {...config, search: _search}, + modaltype: '' + }) + }) + } else if (modaltype === 'actionEdit' || modaltype === 'actionCopy') { + this.actionFormRef.handleConfirm().then(res => { + let _action = config.action.map(item => { + if (item.uuid === res.uuid) { + return res + } else { + return item + } + }) + _action = _action.filter(item => !item.origin) + + if (modaltype === 'actionCopy') { + _action.push(res) + } + + // 澶嶅埗鎸夐挳鍓嶅悗鐨嗕负琛ㄥ崟鏃讹紝澶嶅埗琛ㄥ崟閰嶇疆淇℃伅锛宨d瀛樹簬澶嶅埗鍒楄〃 + if (res.OpenType === 'pop' && card.originCard && card.originCard.OpenType === 'pop') { Api.getSystemConfig({ func: 'sPC_Get_LongParam', MenuID: card.originCard.uuid @@ -968,11 +394,11 @@ if (result.status && result.LongParam) { let param = { func: 'sPC_ButtonParam_AddUpt', - ParentID: _config.uuid, - MenuID: res.values.uuid, - MenuNo: _config.tabNo, + ParentID: config.uuid, + MenuID: res.uuid, + MenuNo: config.tabNo, Template: 'Modal', - MenuName: res.values.label, + MenuName: res.label, PageParam: JSON.stringify({Template: 'Modal'}), LongParam: result.LongParam } @@ -983,73 +409,97 @@ message: response.message, duration: 10 }) + } else { + this.setState({ + copyActions: [...this.state.copyActions, res.uuid] + }) } }) } }) } - - _config[res.type] = _config[res.type].map(item => { - if (item.uuid === res.values.uuid) { - isupdate = true - return res.values + + // 鍒ゆ柇鏄惁瀛樺湪鎿嶄綔鍒� + let _hasGridbtn = _action.filter(act => act.position === 'grid').length > 0 + let _gridBtn = config.gridBtn + + if (_gridBtn) { + _gridBtn.display = _hasGridbtn + } else { + _gridBtn = { + display: _hasGridbtn, + Align: 'center', + IsSort: 'false', + uuid: Utils.getuuid(), + label: this.state.dict['header.form.column.action'], + type: 'action', + style: 'button', + show: 'horizontal', + Width: 120 + } + } + + this.setState({ + config: {...config, action: _action, gridBtn: _gridBtn}, + modaltype: '' + }) + }) + } else if (modaltype === 'columns' || modaltype === 'colspan') { + this.columnFormRef.handleConfirm().then(res => { + let _columns = config.columns.map(item => { + if (item.uuid === res.uuid) { + return res } else { return item } }) - _config[res.type] = _config[res.type].filter(item => !item.origin) - - if (!isupdate) { // 鎿嶄綔涓嶆槸淇敼锛屾坊鍔犲厓绱犺嚦鍒楄〃 - _config[res.type].push(res.values) - } - - if (res.type === 'action') { - let gridbtn = _config.action.filter(act => act.position === 'grid') - let _display = false - - if (gridbtn.length > 0) { - _display = true - } - - if (_config.gridBtn) { - _config.gridBtn.display = _display - } else { - _config.gridBtn = { - display: _display, - Align: 'center', - IsSort: 'false', - uuid: Utils.getuuid(), - label: this.state.dict['header.form.column.action'], - type: 'action', - style: 'button', - show: 'horizontal', - Width: 120 - } - } - } - - this.setState({ - config: _config, - searchloading: true, - actionloading: true, - columnsloading: true, - visible: false - }, () => { - this.setState({ - searchloading: false, - actionloading: false, - columnsloading: false, - }) - }) - }) - } else { - this.formRef.handleConfirm().then(res => { - _config.gridBtn = res + _columns = _columns.filter(item => !item.origin) this.setState({ - config: _config, - visible: false + config: {...config, columns: _columns}, + modaltype: '' }) + }) + } else if (modaltype === 'gridbtn') { + this.gridBtnFormRef.handleConfirm().then(res => { + this.setState({ + config: {...config, gridBtn: res}, + modaltype: '' + }) + }) + } + } + + /** + * @description 鍙栨秷淇濆瓨锛屽鏋滃厓绱犱负鏂版坊鍏冪礌锛屽垯浠庡簭鍒椾腑鍒犻櫎 + */ + editModalCancel = () => { + const { config, card, modaltype } = this.state + + if (card.focus) { + let _config = null + if (modaltype === 'search') { + let _search = config.search.filter(item => item.uuid !== card.uuid) + _config = {...config, search: _search} + } else if (modaltype === 'actionEdit') { + let _action = config.action.filter(item => item.uuid !== card.uuid) + _config = {...config, action: _action} + } else if (modaltype === 'columns' || modaltype === 'colspan') { + let _columns = config.columns.filter(item => item.uuid !== card.uuid) + _config = {...config, columns: _columns} + } else { + _config = config + } + + this.setState({ + card: null, + config: _config, + modaltype: '' + }) + } else { + this.setState({ + card: null, + modaltype: '' }) } } @@ -1061,7 +511,7 @@ let _config = JSON.parse(JSON.stringify(this.state.config)) this.formRef.handleConfirm().then(res => { - let btn = res.values // 鎸夐挳淇℃伅 + let btn = res // 鎸夐挳淇℃伅 let newLText = '' // 鍒涘缓瀛樺偍杩囩▼sql let DelText = '' // 鍒犻櫎瀛樺偍杩囩▼sql let isExit = false // 瀛樺偍杩囩▼鏄惁瀛樺湪 @@ -1311,10 +761,8 @@ return } - let isupdate = false _config.action = _config.action.map(item => { if (item.uuid === btn.uuid) { - isupdate = true return btn } else { return item @@ -1322,23 +770,14 @@ }) _config.action = _config.action.filter(item => !item.origin) - - if (!isupdate) { // 鎿嶄綔涓嶆槸淇敼锛屾坊鍔犲厓绱犺嚦鍒楄〃 - _config.action.push(btn) - } - - let gridbtn = _config.action.filter(act => act.position === 'grid') - let _display = false - - if (gridbtn.length > 0) { - _display = true - } + // 鍒ゆ柇鏄惁瀛樺湪鎿嶄綔鍒� + let _hasGridbtn = _config.action.filter(act => act.position === 'grid').length > 0 if (_config.gridBtn) { - _config.gridBtn.display = _display + _config.gridBtn.display = _hasGridbtn } else { _config.gridBtn = { - display: _display, + display: _hasGridbtn, Align: 'center', IsSort: 'false', uuid: Utils.getuuid(), @@ -1352,12 +791,7 @@ this.setState({ config: _config, - actionloading: true, funcLoading: false - }, () => { - this.setState({ - actionloading: false - }) }) }) }) @@ -1644,12 +1078,7 @@ this.setState({ profileVisible: false, config: config, - card: '', - actionloading: true - }, () => { - this.setState({ - actionloading: false - }) + card: '' }) } @@ -1735,21 +1164,11 @@ if (response.status) { this.setState({ config: _config, - originConfig: _config, - searchloading: true, - actionloading: true, - columnsloading: true + originConfig: _config }, () => { this.setState({ - searchloading: false, - actionloading: false, - columnsloading: false - }, () => { - - this.setState({ - menuloading: false, - menucloseloading: false - }) + menuloading: false, + menucloseloading: false }) this.submitAction(btnParam) }) @@ -2255,11 +1674,6 @@ this.setState({ config: {...config, setting: res}, settingVisible: false, - columnsloading: true - }, () => { - this.setState({ - columnsloading: false - }) }) }) } @@ -2370,6 +1784,7 @@ } render () { + const { modaltype } = this.state const configAction = this.state.config.action.filter(_action => !_action.origin && (_action.OpenType === 'pop' || _action.OpenType === 'popview' || _action.OpenType === 'blank' || _action.OpenType === 'tab') ) @@ -2478,7 +1893,6 @@ <Card title={'鏍囩锛堝瓙琛級椤甸潰閰嶇疆'} bordered={false} extra={ <div> <Switch className="big" checkedChildren="鍚�" unCheckedChildren="鍋�" checked={this.state.config.enabled} onChange={this.onEnabledChange} /> - {/* <Button type="primary" onClick={this.changeTemplate}>{this.state.dict['header.menu.template.change']}</Button> */} <Button type="primary" onClick={this.submitConfig} loading={this.state.menuloading}>{this.state.dict['header.save']}</Button> <Button onClick={this.cancelConfig}>{this.state.dict['header.return']}</Button> </div> @@ -2488,111 +1902,134 @@ <Tooltip placement="bottomLeft" overlayClassName="middle" title="鍦ㄥ乏渚у伐鍏锋爮銆婃悳绱€�嬩腑锛岄�夋嫨瀵瑰簲鎼滅储妗嗘嫋鑷虫澶勬坊鍔狅紱鎴栫偣鍑绘寜閽�婃坊鍔犳悳绱㈡潯浠躲�嬫壒閲忔坊鍔狅紝閫夋嫨鎵归噺娣诲姞鏃讹紝闇�鎻愬墠閫夋嫨浣跨敤琛ㄣ��"> <Icon type="question-circle" /> </Tooltip> - {!this.state.searchloading ? - <DragElement - type="search" - list={this.state.config.search} - handleList={this.handleList} - handleMenu={this.handleSearch} - deleteMenu={this.deleteElement} - placeholder={this.state.dict['header.form.search.placeholder']} - /> : null - } + <DragElement + type="search" + list={this.state.config.search} + handleList={this.handleList} + handleMenu={this.handleSearch} + deleteMenu={this.deleteElement} + placeholder={this.state.dict['header.form.search.placeholder']} + /> </div> <div className="action-list"> <Tooltip placement="bottomLeft" overlayClassName="middle" title="鍦ㄥ乏渚у伐鍏锋爮銆婃寜閽�嬩腑锛岄�夋嫨瀵瑰簲绫诲瀷鐨勬寜閽嫋鑷虫澶勬坊鍔狅紝濡傞�夋嫨鎸夐挳绫诲瀷涓鸿〃鍗曘�佹柊鏍囩椤电瓑鍚湁閰嶇疆椤甸潰鐨勬寜閽紝鍙湪宸︿晶宸ュ叿鏍�-鎸夐挳-鍙厤缃寜閽锛岀偣鍑绘寜閽畬鎴愮浉鍏抽厤缃�傛敞锛氬綋璁剧疆鎸夐挳鏄剧ず浣嶇疆涓鸿〃鏍兼椂锛屾樉绀哄垪浼氬鍔犳搷浣滃垪銆�"> <Icon type="question-circle" /> </Tooltip> - {!this.state.actionloading ? - <DragElement - type="action" - list={this.state.config.action} - handleList={this.handleList} - handleMenu={this.handleAction} - copyElement={(val) => this.handleAction(val, 'copy')} - deleteMenu={this.deleteElement} - profileMenu={this.profileAction} - placeholder={this.state.dict['header.form.action.placeholder']} - /> : null - } + <DragElement + type="action" + list={this.state.config.action} + handleList={this.handleList} + handleMenu={this.handleAction} + copyElement={(val) => this.handleAction(val, 'copy')} + deleteMenu={this.deleteElement} + profileMenu={this.profileAction} + placeholder={this.state.dict['header.form.action.placeholder']} + /> </div> <div className="column-list"> <Tooltip placement="bottomLeft" overlayClassName="middle" title="鍦ㄥ乏渚у伐鍏锋爮銆婃樉绀哄垪銆嬩腑锛岄�夋嫨瀵瑰簲绫诲瀷鐨勬樉绀哄垪鎷栬嚦姝ゅ娣诲姞锛涙垨鐐瑰嚮銆婃坊鍔犳樉绀哄垪銆嬫寜閽壒閲忔坊鍔狅紝閫夋嫨鎵归噺娣诲姞鏃讹紝闇�鎻愬墠閫夋嫨浣跨敤琛ㄣ�傛敞锛氭坊鍔犲悎骞跺垪鏃讹紝闇�璁剧疆鍙�夊垪銆�"> <Icon type="question-circle" /> </Tooltip> <Switch checkedChildren="寮�" unCheckedChildren="鍏�" defaultChecked={this.state.showColumnName} onChange={this.onColumnNameChange} /> - {!this.state.columnsloading ? - <DragElement - type="columns" - list={this.state.config.columns} - setting={this.state.config.setting} - gridBtn={this.state.config.gridBtn} - handleList={this.handleList} - handleMenu={this.handleColumn} - deleteMenu={this.deleteElement} - handleGridBtn={this.handleGridBtn} - showfield={this.state.showColumnName} - placeholder={this.state.dict['header.form.column.placeholder']} - /> : null - } + <DragElement + type="columns" + list={this.state.config.columns} + setting={this.state.config.setting} + gridBtn={this.state.config.gridBtn} + handleList={this.handleList} + handleMenu={this.handleColumn} + deleteMenu={this.deleteElement} + handleGridBtn={this.handleGridBtn} + showfield={this.state.showColumnName} + placeholder={this.state.dict['header.form.column.placeholder']} + /> </div> </Card> </div> </DndProvider> - {/* 缂栬緫鎼滅储鏉′欢銆佹寜閽�佹樉绀哄垪 */} + {/* 缂栬緫鎼滅储鏉′欢 */} <Modal - title={this.state.modalTitle} - visible={this.state.visible} + title={this.state.dict['header.modal.search.edit']} + visible={modaltype === 'search'} width={700} - onCancel={() => { this.setState({ visible: false }) }} + onOk={this.handleSubmit} + onCancel={this.editModalCancel} + destroyOnClose + > + <SearchForm + dict={this.state.dict} + card={this.state.card} + formlist={this.state.formlist} + wrappedComponentRef={(inst) => this.searchFormRef = inst} + /> + </Modal> + {/* 缂栬緫鎸夐挳锛氬鍒躲�佺紪杈� */} + <Modal + title={modaltype === 'actionEdit' ? this.state.dict['header.modal.action.edit'] : this.state.dict['header.modal.action.copy']} + visible={modaltype === 'actionEdit' || modaltype === 'actionCopy'} + width={700} + onCancel={this.editModalCancel} footer={[ - this.state.formtemp === 'action' ? - <Button key="delete" className="mk-btn mk-purple" onClick={this.creatFunc} loading={this.state.funcLoading}>{this.state.dict['header.menu.func.create']}</Button> : null, - <Button key="cancel" onClick={() => { this.setState({ visible: false }) }}>{this.state.dict['header.cancel']}</Button>, + modaltype === 'actionEdit' ? <Button key="delete" className="mk-btn mk-purple" onClick={this.creatFunc} loading={this.state.funcLoading}>{this.state.dict['header.menu.func.create']}</Button> : null, + <Button key="cancel" onClick={this.editModalCancel}>{this.state.dict['header.cancel']}</Button>, <Button key="confirm" type="primary" onClick={this.handleSubmit}>{this.state.dict['header.confirm']}</Button> ]} destroyOnClose > - {this.state.formtemp === 'search' ? - <SearchForm - dict={this.state.dict} - formlist={this.state.formlist} - card={this.state.card} - wrappedComponentRef={(inst) => this.formRef = inst} - /> : null - } - {this.state.formtemp === 'action' ? - <ActionForm - dict={this.state.dict} - card={this.state.card} - tabs={this.state.tabviews} - formlist={this.state.formlist} - wrappedComponentRef={(inst) => this.formRef = inst} - /> : null - } - {this.state.formtemp === 'columns' && this.state.card.type !== 'colspan' ? - <ColumnForm - dict={this.state.dict} - card={this.state.card} - formlist={this.state.formlist} - wrappedComponentRef={(inst) => this.formRef = inst} - /> : null - } - {this.state.formtemp === 'columns' && this.state.card.type === 'colspan' ? - <ColspanForm - dict={this.state.dict} - card={this.state.card} - columns={this.state.config.columns} - wrappedComponentRef={(inst) => this.formRef = inst} - /> : null - } - {this.state.formtemp === 'gridbtn' ? - <GridBtnForm - dict={this.state.dict} - card={this.state.config.gridBtn} - wrappedComponentRef={(inst) => this.formRef = inst} - /> : null - } + <ActionForm + dict={this.state.dict} + card={this.state.card} + tabs={this.state.tabviews} + formlist={this.state.formlist} + wrappedComponentRef={(inst) => this.actionFormRef = inst} + /> + </Modal> + {/* 鏄剧ず鍒楃紪杈� */} + <Modal + title={this.state.dict['header.modal.column.edit']} + visible={modaltype === 'columns'} + width={700} + onOk={this.handleSubmit} + onCancel={this.editModalCancel} + destroyOnClose + > + <ColumnForm + dict={this.state.dict} + card={this.state.card} + formlist={this.state.formlist} + wrappedComponentRef={(inst) => this.columnFormRef = inst} + /> + </Modal> + {/* 鍚堝苟鍒楃紪杈� */} + <Modal + title={this.state.dict['header.modal.colspan.edit']} + visible={modaltype === 'colspan'} + width={700} + onOk={this.handleSubmit} + onCancel={this.editModalCancel} + destroyOnClose + > + <ColspanForm + dict={this.state.dict} + card={this.state.card} + columns={this.state.config.columns} + wrappedComponentRef={(inst) => this.columnFormRef = inst} + /> + </Modal> + {/* 鎿嶄綔鍒楃紪杈� */} + <Modal + title={this.state.dict['header.modal.gridbtn.edit']} + visible={modaltype === 'gridbtn'} + width={700} + onOk={this.handleSubmit} + onCancel={this.editModalCancel} + destroyOnClose + > + <GridBtnForm + dict={this.state.dict} + card={this.state.config.gridBtn} + wrappedComponentRef={(inst) => this.gridBtnFormRef = inst} + /> </Modal> {/* 鏍规嵁瀛楁鍚嶆坊鍔犳樉绀哄垪鍙婃悳绱㈡潯浠� */} <Modal -- Gitblit v1.8.0