From 9b0754adb7fbe595eef73010992c0ce53ef6571a Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 11 十月 2023 17:22:36 +0800 Subject: [PATCH] Merge branch 'develop' --- src/templates/zshare/modalform/index.jsx | 9 src/menu/components/form/formaction/index.scss | 3 src/utils/utils-datamanage.js | 21 + src/menu/components/share/sourcecomponent/inputform/index.jsx | 2 src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx | 70 +++ src/tabviews/custom/components/module/account/index.jsx | 5 src/menu/components/share/markcomponent/index.jsx | 45 ++ src/menu/components/form/formaction/actionform/index.jsx | 2 src/menu/components/card/prop-card/index.scss | 1 src/utils/utils-custom.js | 88 ++-- src/menu/components/form/simple-form/options.jsx | 4 src/menu/datasource/index.jsx | 21 + src/tabviews/zshare/actionList/exceloutbutton/index.jsx | 2 src/menu/components/form/simple-form/index.jsx | 6 src/templates/sharecomponent/actioncomponent/verifyexcelout/utils.jsx | 11 src/menu/components/share/sourcecomponent/inputform/index.scss | 4 src/menu/components/form/formaction/index.jsx | 15 src/tabviews/custom/components/share/normalTable/index.jsx | 34 + src/tabviews/custom/components/form/simple-form/index.jsx | 13 src/tabviews/zshare/actionList/normalbutton/index.jsx | 14 src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx | 2 src/menu/datasource/verifycard/index.jsx | 4 src/utils/utils.js | 157 +++++++- src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx | 2 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx | 2 src/menu/components/form/formaction/formconfig.jsx | 2 src/menu/components/table/base-table/columns/index.scss | 19 + src/tabviews/custom/components/card/cardcellList/index.jsx | 40 + src/menu/components/card/cardcellcomponent/index.jsx | 5 src/templates/zshare/formconfig.jsx | 26 + src/templates/zshare/verifycard/index.jsx | 15 src/menu/components/share/sourcecomponent/index.jsx | 2 src/tabviews/custom/components/table/edit-table/normalTable/index.jsx | 68 +++ src/tabviews/zshare/actionList/printbutton/index.jsx | 14 src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss | 1 src/tabviews/zshare/mutilform/index.jsx | 14 src/tabviews/custom/components/chart/antv-X6/index.jsx | 162 ++++++++ src/tabviews/custom/index.jsx | 9 src/menu/components/table/base-table/columns/index.jsx | 5 src/menu/debug/index.jsx | 13 src/templates/zshare/verifycard/baseform/index.jsx | 29 + src/menu/components/table/normal-table/columns/index.jsx | 2 42 files changed, 781 insertions(+), 182 deletions(-) diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx index 1100466..3495c10 100644 --- a/src/menu/components/card/cardcellcomponent/index.jsx +++ b/src/menu/components/card/cardcellcomponent/index.jsx @@ -451,10 +451,7 @@ } else if (res.class !== cell.class || res.show !== cell.show || !res.style) { let cl = res.class.replace('border-', '') let style = {} - if (res.show === 'link' || res.show === 'icon') { - style.color = color[cl] - style.backgroundColor = 'transparent' - } else if (res.class === 'default') { + if (res.class === 'default') { style.color = 'rgba(0, 0, 0, 0.65)' style.backgroundColor = '#fff' style.borderColor = '#d9d9d9' diff --git a/src/menu/components/card/prop-card/index.scss b/src/menu/components/card/prop-card/index.scss index 6f1ec06..5e0c1e5 100644 --- a/src/menu/components/card/prop-card/index.scss +++ b/src/menu/components/card/prop-card/index.scss @@ -82,6 +82,7 @@ color: orange; float: right; margin: 5px; + clear: left; } } .menu-prop-card-edit-box::after { diff --git a/src/menu/components/form/formaction/actionform/index.jsx b/src/menu/components/form/formaction/actionform/index.jsx index b21638c..b65157b 100644 --- a/src/menu/components/form/formaction/actionform/index.jsx +++ b/src/menu/components/form/formaction/actionform/index.jsx @@ -54,7 +54,7 @@ shows = ['typeName', 'label', 'actionType'] } else if (this.record.type === 'next') { shows = ['typeName', 'label', 'actionType'] - } else if (this.record.type === 'close') { + } else if (this.record.type === 'close' || this.record.type === 'reset') { shows = ['typeName', 'label'] } else { shows = ['typeName', 'label', 'intertype', 'Ot', 'execSuccess', 'syncComponent', 'anchors', 'linkmenu', 'output', 'reload'] // 閫夐」鍒楄〃 diff --git a/src/menu/components/form/formaction/formconfig.jsx b/src/menu/components/form/formaction/formconfig.jsx index 2e98dbc..e90047a 100644 --- a/src/menu/components/form/formaction/formconfig.jsx +++ b/src/menu/components/form/formaction/formconfig.jsx @@ -14,6 +14,8 @@ _type = '涓嬩竴姝�' } else if (card.type === 'close') { _type = '鍏抽棴' + } else if (card.type === 'reset') { + _type = '閲嶇疆' } let menulist = [] diff --git a/src/menu/components/form/formaction/index.jsx b/src/menu/components/form/formaction/index.jsx index 50fae57..015c25e 100644 --- a/src/menu/components/form/formaction/index.jsx +++ b/src/menu/components/form/formaction/index.jsx @@ -65,6 +65,8 @@ group.nextButton.style = style } else if (card.type === 'close') { group.closeButton.style = style + } else if (card.type === 'reset') { + group.resetButton.style = style } this.props.updateconfig(group) @@ -148,6 +150,9 @@ } else if (res.type === 'close') { res.enable = group.closeButton.enable || 'true' group.closeButton = res + } else if (res.type === 'reset') { + res.enable = group.resetButton.enable || 'true' + group.resetButton = res } this.setState({ @@ -220,13 +225,21 @@ } trigger="hover"> <Button type="link" className="submit mk-primary" onDoubleClick={this.changeMenu} style={resetStyle(group.subButton.style)}>{group.subButton.label}</Button> </Popover> + {group.resetButton && group.resetButton.enable === 'true' ? <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ + <div className="mk-popover-control"> + <EditOutlined className="edit" title="缂栬緫" onClick={() => this.handleAction(group.resetButton)} /> + <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={() => this.handleStyle(group.resetButton)}/> + </div> + } trigger="hover"> + <Button type="link" className="reset" style={resetStyle(group.resetButton.style)}>{group.resetButton.label}</Button> + </Popover> : null} {group.closeButton && group.closeButton.enable === 'true' ? <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> <EditOutlined className="edit" title="缂栬緫" onClick={() => this.handleAction(group.closeButton)} /> <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={() => this.handleStyle(group.closeButton)}/> </div> } trigger="hover"> - <Button type="link" style={resetStyle(group.closeButton.style)}>{group.closeButton.label}</Button> + <Button type="link" className="reset" style={resetStyle(group.closeButton.style)}>{group.closeButton.label}</Button> </Popover> : null} {group.nextButton && group.nextButton.enable === 'true' ? <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> diff --git a/src/menu/components/form/formaction/index.scss b/src/menu/components/form/formaction/index.scss index b980900..960834f 100644 --- a/src/menu/components/form/formaction/index.scss +++ b/src/menu/components/form/formaction/index.scss @@ -18,4 +18,7 @@ height: auto; right: 0px; } + .reset { + height: auto; + } } diff --git a/src/menu/components/form/simple-form/index.jsx b/src/menu/components/form/simple-form/index.jsx index 15527e3..ba3c39c 100644 --- a/src/menu/components/form/simple-form/index.jsx +++ b/src/menu/components/form/simple-form/index.jsx @@ -523,6 +523,7 @@ res.enable = buttons.includes('enable') ? 'true' : 'false' res.closeEnable = buttons.includes('closeEnable') ? 'true' : 'false' + res.resetEnable = buttons.includes('resetEnable') ? 'true' : 'false' _card.wrap = res @@ -546,6 +547,11 @@ } else if (_card.subcards[0].closeButton) { _card.subcards[0].closeButton.enable = _card.wrap.closeEnable } + if (_card.wrap.resetEnable === 'true' && !_card.subcards[0].resetButton) { + _card.subcards[0].resetButton = {label: '閲嶇疆', enable: 'true', type: 'reset', style: {backgroundColor: '#ffffff', color: 'rgba(0,0,0,0.65)', borderColor: '#d9d9d9', borderWidth: '1px', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px', marginLeft: '10px'}} + } else if (_card.subcards[0].resetButton) { + _card.subcards[0].resetButton.enable = _card.wrap.resetEnable + } this.updateComponent(_card) } diff --git a/src/menu/components/form/simple-form/options.jsx b/src/menu/components/form/simple-form/options.jsx index 1ace5c6..9df9c00 100644 --- a/src/menu/components/form/simple-form/options.jsx +++ b/src/menu/components/form/simple-form/options.jsx @@ -53,6 +53,9 @@ if (wrap.closeEnable === 'true') { buttons.push('closeEnable') } + if (wrap.resetEnable === 'true') { + buttons.push('resetEnable') + } const wrapForm = [ { @@ -152,6 +155,7 @@ required: false, options: [ {value: 'enable', label: '鎻愪氦'}, + {value: 'resetEnable', label: '閲嶇疆'}, {value: 'closeEnable', label: '鍏抽棴'}, ], }, diff --git a/src/menu/components/share/markcomponent/index.jsx b/src/menu/components/share/markcomponent/index.jsx index 246f2ea..f198d58 100644 --- a/src/menu/components/share/markcomponent/index.jsx +++ b/src/menu/components/share/markcomponent/index.jsx @@ -118,7 +118,21 @@ 'line-through': '涓垝绾�', 'icon': '鍥炬爣', 'iconfront': '鍥炬爣', - 'iconback': '鍥炬爣', + 'iconback': '鍥炬爣' + } + + if (text[0] === 'indent') { + return ( + <div>缂╄繘/{text[1]}涓瓧绗�</div> + ) + } else if (text[0] === 'pointfront') { + return ( + <div><span style={{display: 'inline-block', width: '8px', height: '8px', borderRadius: '14px', background: 'black', verticalAlign: 'middle'}}></span> 鐐癸紙鍓嶏級</div> + ) + } else if (text[0] === 'pointback') { + return ( + <div>鐐癸紙鍚庯級 <span style={{display: 'inline-block', width: '8px', height: '8px', borderRadius: '14px', background: 'black', verticalAlign: 'middle'}}></span></div> + ) } return ( @@ -249,6 +263,7 @@ }) } ] + let signs = [ { value: 'font', @@ -267,6 +282,14 @@ label: '涓垝绾�' }, { + value: 'pointfront', + label: '鐐癸紙鍓嶏級' + }, + { + value: 'pointback', + label: '鐐癸紙鍚庯級' + }, + { value: 'iconfront', label: '鍥炬爣锛堝墠锛�', children: icons @@ -275,12 +298,32 @@ value: 'iconback', label: '鍥炬爣锛堝悗锛�', children: icons + }, + { + value: 'indent', + label: '缂╄繘', + children: [{ + value: 2, + label: '2涓瓧绗�' + }, { + value: 4, + label: '4涓瓧绗�' + }, { + value: 6, + label: '6涓瓧绗�' + }, { + value: 8, + label: '8涓瓧绗�' + }] } ] if (type === 'line' || type === 'sequence') { signs.pop() signs.pop() + signs.pop() + signs.pop() + signs.pop() } else if (type === 'slider') { markColumns = markColumns.filter(col => { col.width = '20%' diff --git a/src/menu/components/share/sourcecomponent/index.jsx b/src/menu/components/share/sourcecomponent/index.jsx index bf42033..fe17598 100644 --- a/src/menu/components/share/sourcecomponent/index.jsx +++ b/src/menu/components/share/sourcecomponent/index.jsx @@ -88,7 +88,7 @@ </div> : null} <Modal visible={!!visible} - width={visible !== 'system' ? 600 : 1000} + width={visible !== 'system' ? 650 : 1000} closable={false} maskClosable={false} okText="纭畾" diff --git a/src/menu/components/share/sourcecomponent/inputform/index.jsx b/src/menu/components/share/sourcecomponent/inputform/index.jsx index 5f552ce..0a06300 100644 --- a/src/menu/components/share/sourcecomponent/inputform/index.jsx +++ b/src/menu/components/share/sourcecomponent/inputform/index.jsx @@ -174,7 +174,7 @@ return ( <div className="mk-source-pop-wrap"> - {keyword === 'input' ? <Form.Item label="鍦板潃" labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={{xs: { span: 24 }, sm: { span: 20 }}}> + {keyword === 'input' ? <Form.Item label="鍦板潃" help="鍙娇鐢ˊmywebsite@浠f浛鍩熷悕锛堝惈铏氭嫙鐩綍锛夛紝濡傦細@mywebsite@/Content/images/xxx.jpg" labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={{xs: { span: 24 }, sm: { span: 20 }}}> <TextArea id="source-input" value={url} rows={4} onChange={this.changeValue}/> </Form.Item> : null} {keyword === 'upload' ? <Form.Item label="涓婁紶" labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={{xs: { span: 24 }, sm: { span: 20 }}}> diff --git a/src/menu/components/share/sourcecomponent/inputform/index.scss b/src/menu/components/share/sourcecomponent/inputform/index.scss index 576da5d..fc5b77f 100644 --- a/src/menu/components/share/sourcecomponent/inputform/index.scss +++ b/src/menu/components/share/sourcecomponent/inputform/index.scss @@ -50,6 +50,10 @@ position: relative; top: -15px; } + .ant-form-explain { + margin-top: 5px; + word-break: break-all; + } } .picture-edit-model { .ant-modal { diff --git a/src/menu/components/table/base-table/columns/index.jsx b/src/menu/components/table/base-table/columns/index.jsx index 1205028..aad0434 100644 --- a/src/menu/components/table/base-table/columns/index.jsx +++ b/src/menu/components/table/base-table/columns/index.jsx @@ -2,7 +2,7 @@ import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' import { DndProvider, DragSource, DropTarget } from 'react-dnd' -import { Table, Popover, Modal, message, notification } from 'antd' +import { Table, Popover, Modal, message, notification, Typography } from 'antd' import { PlusOutlined, PlusSquareOutlined, EditOutlined, CopyOutlined, DeleteOutlined, FontColorsOutlined, CloseCircleOutlined, AntDesignOutlined } from '@ant-design/icons' import asyncComponent from '@/utils/asyncComponent' @@ -12,6 +12,7 @@ import './index.scss' const { confirm } = Modal +const { Paragraph } = Typography const EditColumn = asyncComponent(() => import('./editColumn')) const MarkColumn = asyncIconComponent(() => import('@/menu/components/share/markcomponent')) const CardCellComponent = asyncComponent(() => import('@/menu/components/card/cardcellcomponent')) @@ -199,7 +200,7 @@ } return ( <td style={{...style}} className={className}> - {val} + {column.field ? <Paragraph className="col-copy" copyable={{ text: column.field }}>{val}</Paragraph> : val} {column.Hide === 'true' ? <CloseCircleOutlined style={{marginLeft: '5px', color: 'orange', fontSize: '12px'}}/> : null} {column.marks && column.marks.length ? <AntDesignOutlined className="profile"/> : null} </td> diff --git a/src/menu/components/table/base-table/columns/index.scss b/src/menu/components/table/base-table/columns/index.scss index 45da4dc..48aae5d 100644 --- a/src/menu/components/table/base-table/columns/index.scss +++ b/src/menu/components/table/base-table/columns/index.scss @@ -23,6 +23,25 @@ tr { td { background: #ffffff; + .col-copy { + margin-bottom: 0; + display: inline-block; + color: inherit; + .ant-typography-copy { + position: absolute; + left: 2px; + top: 0px; + margin-left: 0px; + font-size: 12px; + opacity: 0; + transition: opacity 0.2s; + } + } + } + td:hover .col-copy { + .ant-typography-copy { + opacity: 1; + } } td:not(.ant-table-selection-column) { position: relative; diff --git a/src/menu/components/table/normal-table/columns/index.jsx b/src/menu/components/table/normal-table/columns/index.jsx index 00f61c5..02653b8 100644 --- a/src/menu/components/table/normal-table/columns/index.jsx +++ b/src/menu/components/table/normal-table/columns/index.jsx @@ -12,7 +12,7 @@ import './index.scss' const { confirm } = Modal -const { Paragraph } = Typography +const { Paragraph } = Typography const EditColumn = asyncComponent(() => import('./editColumn')) const MarkColumn = asyncIconComponent(() => import('@/menu/components/share/markcomponent')) const CardCellComponent = asyncComponent(() => import('@/menu/components/card/cardcellcomponent')) diff --git a/src/menu/datasource/index.jsx b/src/menu/datasource/index.jsx index 759e84e..68edece 100644 --- a/src/menu/datasource/index.jsx +++ b/src/menu/datasource/index.jsx @@ -157,13 +157,15 @@ if (res.columns) { res.columns = res.columns.map(item => { - if (/int/ig.test(item.datatype)) { item.type = 'number' item.decimal = 0 } else if (/Decimal/ig.test(item.datatype)) { item.type = 'number' item.decimal = +item.datatype.replace(/^Decimal\(18,/ig, '').replace(/\)/ig, '') + } else if (/^date/ig.test(item.datatype)) { + item.type = 'text' + item.fieldlength = 50 } else { item.type = 'text' item.fieldlength = +item.datatype.replace(/^Nvarchar\(/ig, '').replace(/\)/ig, '') @@ -211,6 +213,23 @@ if (config.subtype !== 'dualdatacard') { delete res.subColumns } else { + res.subColumns = res.subColumns.map(item => { + if (/int/ig.test(item.datatype)) { + item.type = 'number' + item.decimal = 0 + } else if (/Decimal/ig.test(item.datatype)) { + item.type = 'number' + item.decimal = +item.datatype.replace(/^Decimal\(18,/ig, '').replace(/\)/ig, '') + } else if (/^date/ig.test(item.datatype)) { + item.type = 'text' + item.fieldlength = 50 + } else { + item.type = 'text' + item.fieldlength = +item.datatype.replace(/^Nvarchar\(/ig, '').replace(/\)/ig, '') + } + return item + }) + res.subColumns.reverse() } diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx index 7519b71..8da4cb7 100644 --- a/src/menu/datasource/verifycard/index.jsx +++ b/src/menu/datasource/verifycard/index.jsx @@ -2,7 +2,7 @@ import PropTypes from 'prop-types' import { fromJS } from 'immutable' import { Form, Tabs, Popconfirm, notification, Modal, Typography, Spin, message, Button, Input } from 'antd' -import { StopOutlined, CheckCircleOutlined, EditOutlined, SwapOutlined, DeleteOutlined, CopyOutlined, BorderOutlined, SnippetsOutlined } from '@ant-design/icons' +import { StopOutlined, CheckCircleOutlined, TableOutlined, EditOutlined, SwapOutlined, DeleteOutlined, CopyOutlined, BorderOutlined, SnippetsOutlined } from '@ant-design/icons' import moment from 'moment' import md5 from 'md5' @@ -1053,7 +1053,7 @@ <EditTable actions={['edit', 'move', 'copy', 'del', 'clear']} searchKey={searchKey} type="datasourcefield" wrappedComponentRef={(inst) => this.datasource = inst} data={columns} columns={colColumns} onChange={(columns) => this.setState({columns})}/> </TabPane> : <TabPane tab={ <span> - 瀛楁闆� + 瀛楁闆�<TableOutlined style={{marginLeft: '5px', fontSize: '12px'}} /> {columns.length ? <span className="count-tip">{columns.length}</span> : null} </span> } key="columns"> diff --git a/src/menu/debug/index.jsx b/src/menu/debug/index.jsx index 6e18351..91b7f27 100644 --- a/src/menu/debug/index.jsx +++ b/src/menu/debug/index.jsx @@ -315,7 +315,7 @@ card.backElements.forEach(cell => { if (cell.eleType !== 'button' || cell.hidden === 'true') return - let sql = this.resetButton(item, cell, process) + let sql = this.resetButton(item, cell, process, null, true) if (sql) { if (typeof(sql) === 'string') { @@ -364,11 +364,18 @@ }) } - resetButton = (item, cell, process, group) => { + resetButton = (item, cell, process, group, isback) => { let sql = '' if (['exec', 'prompt', 'pop', 'form', 'formSubmit'].includes(cell.OpenType)) { if (cell.intertype === 'system' || cell.procMode === 'system') { // 绯荤粺鎺ュ彛 - sql = this.getSysDefaultSql(cell, item, process, group) + if (item.subtype === 'dualdatacard' && isback) { + let _item = fromJS(item).toJS() + _item.columns = _item.subColumns || [] + _item.setting.primaryKey = _item.setting.subKey + sql = this.getSysDefaultSql(cell, _item, process, group) + } else { + sql = this.getSysDefaultSql(cell, item, process, group) + } } } else if (cell.OpenType === 'excelIn') { if (cell.intertype === 'system') { diff --git a/src/tabviews/custom/components/card/cardcellList/index.jsx b/src/tabviews/custom/components/card/cardcellList/index.jsx index 9208d9a..fed3d09 100644 --- a/src/tabviews/custom/components/card/cardcellList/index.jsx +++ b/src/tabviews/custom/components/card/cardcellList/index.jsx @@ -426,6 +426,14 @@ } else { val = <span>{val} <MkIcon style={mark.innerStyle} type={mark.icon} /></span> } + } else if (mark.space) { + val = <><span style={{float: 'left'}} dangerouslySetInnerHTML={{__html: mark.space}}></span>{val}</> + } else if (mark.point) { + if (mark.position === 'front') { + val = <>{mark.point}{val}</> + } else { + val = <>{val}{mark.point}</> + } } className = mark.signType } @@ -507,6 +515,14 @@ val = <span><MkIcon style={mark.innerStyle} type={mark.icon} /> {val}</span> } else { val = <span>{val} <MkIcon style={mark.innerStyle} type={mark.icon} /></span> + } + } else if (mark.space) { + val = <><span style={{float: 'left'}} dangerouslySetInnerHTML={{__html: mark.space}}></span>{val}</> + } else if (mark.point) { + if (mark.position === 'front') { + val = <>{mark.point}{val}</> + } else { + val = <>{val}{mark.point}</> } } className = mark.signType @@ -774,9 +790,7 @@ let func = new Function('data', card.formula) val = func(_data) } catch (e) { - if (window.GLOB.debugger === true) { - console.warn(e) - } + console.warn(e) val = '' } } else if (card.$sync) { @@ -794,10 +808,8 @@ // eslint-disable-next-line _val = eval(_val) } catch (e) { - if (window.GLOB.debugger === true) { - console.info(_val) - console.warn(e) - } + console.info(_val) + console.warn(e) _val = 0 } } @@ -820,10 +832,8 @@ // eslint-disable-next-line _val = eval(_val) } catch (e) { - if (window.GLOB.debugger === true) { - console.info(_val) - console.warn(e) - } + console.info(_val) + console.warn(e) _val = '' } } @@ -882,6 +892,14 @@ } else { val = <span>{val} <MkIcon style={mark.innerStyle} type={mark.icon} /></span> } + } else if (mark.space) { + val = <><span style={{float: 'left'}} dangerouslySetInnerHTML={{__html: mark.space}}></span>{val}</> + } else if (mark.point) { + if (mark.position === 'front') { + val = <>{mark.point}{val}</> + } else { + val = <>{val}{mark.point}</> + } } className = mark.signType } diff --git a/src/tabviews/custom/components/chart/antv-X6/index.jsx b/src/tabviews/custom/components/chart/antv-X6/index.jsx index 97525bc..faedfd9 100644 --- a/src/tabviews/custom/components/chart/antv-X6/index.jsx +++ b/src/tabviews/custom/components/chart/antv-X6/index.jsx @@ -989,7 +989,7 @@ }) graph.on('edge:click', ({ edge }) => { this.selectNode = edge - + this.setState({node: edge.store.data}) graph.clearTransformWidgets() @@ -1561,19 +1561,41 @@ let start_num = 0 let end_num = 0 let unvalid = false + let map = new Map() + let appMap = new Map() nodes.cells.forEach(item => { - if (item.mknode === 'start') { + if (item.shape === 'mk-text' || item.shape === 'lane') return + + if (!item.mkdata) { + unvalid = true + } else if (item.mknode === 'start') { start_num++ } else if (item.mknode === 'end') { end_num++ - } else if (item.shape === 'edge' && item.mknode !== 'endEdge' && item.mknode !== 'startEdge') { - if (!item.mkdata.members || item.mkdata.members.length === 0) { + } else if (item.shape === 'edge') { + if (item.mknode !== 'endEdge' && item.mknode !== 'startEdge' && (!item.mkdata.members || item.mkdata.members.length === 0)) { unvalid = true + } else if (item.mknode === 'startEdge' || item.mkdata.flowType === 'reject') { + if (map.has(item.source.cell)) { + unvalid = true + } else { + map.set(item.source.cell, true) + } + } else if (item.mkdata.flowType === 'approval' || item.mknode === 'endEdge') { + let val = '' + if (item.mkdata.execCondition === 'open') { + val = item.mkdata.match + item.mkdata.matchVal + } + if (appMap.has(item.source.cell + val)) { + unvalid = true + } else { + appMap.set(item.source.cell + val, true) + } } } - }) + if (start_num !== 1 || end_num !== 1 || unvalid) { _status = 0 } @@ -1993,15 +2015,49 @@ let start_num = 0 let end_num = 0 let unvalidId = '' - + let emptyNode = null + let emptyEdge = null + let map = new Map() + let appMap = new Map() + let rejectId = '' + let approvalId = '' + nodes.cells.forEach(item => { - if (item.mknode === 'start') { + if (item.shape === 'mk-text' || item.shape === 'lane') return + + if (!item.mkdata) { + if (item.shape !== 'edge') { + if (!emptyNode) { + emptyNode = item + } + } else { + if (!emptyEdge) { + emptyEdge = item + } + } + } else if (item.mknode === 'start') { start_num++ } else if (item.mknode === 'end') { end_num++ - } else if (item.shape === 'edge' && item.mknode !== 'endEdge' && item.mknode !== 'startEdge') { - if (!item.mkdata.members || item.mkdata.members.length === 0) { + } else if (item.shape === 'edge' && !unvalidId && !rejectId && !approvalId) { + if (item.mknode !== 'endEdge' && item.mknode !== 'startEdge' && (!item.mkdata.members || item.mkdata.members.length === 0)) { unvalidId = item.id + } else if (item.mknode === 'startEdge' || item.mkdata.flowType === 'reject') { + if (map.has(item.source.cell)) { + rejectId = item.source.cell + } else { + map.set(item.source.cell, true) + } + } else if (item.mkdata.flowType === 'approval' || item.mknode === 'endEdge') { + let val = '' + if (item.mkdata.execCondition === 'open') { + val = item.mkdata.match + item.mkdata.matchVal + } + if (appMap.has(item.source.cell + val)) { + approvalId = item.source.cell + } else { + appMap.set(item.source.cell + val, item) + } } } }) @@ -2030,21 +2086,97 @@ message: '缁撴潫鑺傜偣涓嶅彲娣诲姞澶氫釜锛�', duration: 2 }) - } else if (unvalidId) { - let edge = this.mkGraph.getCellById(unvalidId) + } else if (emptyNode) { + let errmsg = '閮ㄥ垎鑺傜偣鏈缃熀鏈俊鎭��' + if (emptyNode.attrs && emptyNode.attrs.text && emptyNode.attrs.text.text) { + errmsg = '鑺傜偣銆�' + emptyNode.attrs.text.text + '銆嬫湭璁剧疆鍩烘湰淇℃伅銆�' + } + notification.warning({ + top: 92, + message: errmsg, + duration: 2 + }) + } else if (emptyEdge) { + let errmsg = '閮ㄥ垎杩炵嚎鏈缃熀鏈俊鎭��' - let node = edge.getTargetCell() + let edge = this.mkGraph.getCellById(emptyEdge.id) + let target = edge.getTargetCell() + + let t_label = '' + if (target.attrs && target.attrs.text && target.attrs.text.text) { + t_label = target.attrs.text.text + } + + let source = edge.getSourceCell() + + let s_label = '' + if (source.attrs && source.attrs.text && source.attrs.text.text) { + s_label = source.attrs.text.text + } + + if (t_label && s_label) { + errmsg = '鑺傜偣銆�' + s_label + '銆嬩笌鑺傜偣銆�' + t_label + '銆嬮棿杩炵嚎鏈缃熀鏈俊鎭��' + } + + notification.warning({ + top: 92, + message: errmsg, + duration: 2 + }) + } else if (rejectId) { + let node = this.mkGraph.getCellById(rejectId) let title = '' - if (node.attrs && node.attrs.text) { - title = node.attrs.text.text + '' + if (node.attrs && node.attrs.text && node.attrs.text.text) { + title = '鑺傜偣銆�' + node.attrs.text.text + '銆�' } else if (node.mkdata) { title = '鐘舵�侊細' + node.mkdata.status + ' - ' + node.mkdata.statusName } notification.warning({ top: 92, - message: '杩炴帴锛�' + title + '锛夌殑绾挎湭璁剧疆瀹℃壒浜猴紒', + message: title + ' 涓嶅彲璁剧疆涓ゆ潯椹冲洖杩炵嚎锛�', + duration: 2 + }) + } else if (approvalId) { + let node = this.mkGraph.getCellById(approvalId) + + let title = '' + if (node.attrs && node.attrs.text && node.attrs.text.text) { + title = '鑺傜偣銆�' + node.attrs.text.text + '銆�' + } else if (node.mkdata) { + title = '鐘舵�侊細' + node.mkdata.status + ' - ' + node.mkdata.statusName + } + + notification.warning({ + top: 92, + message: title + ' 鍚庣殑瀹℃壒鍒嗘敮鎵ц鏉′欢閲嶅锛�', + duration: 2 + }) + } else if (unvalidId) { + let edge = this.mkGraph.getCellById(unvalidId) + + let node = edge.getTargetCell() + + let title = '' + if (node.attrs && node.attrs.text && node.attrs.text.text) { + title = node.attrs.text.text + } else if (node.mkdata) { + title = '鐘舵�侊細' + node.mkdata.status + ' - ' + node.mkdata.statusName + } + + let source = edge.getSourceCell() + + let s_label = '' + if (source.attrs && source.attrs.text && source.attrs.text.text) { + s_label = source.attrs.text.text + } else if (source.mkdata) { + s_label = '鐘舵�侊細' + source.mkdata.status + ' - ' + source.mkdata.statusName + } + + notification.warning({ + top: 92, + message: '鑺傜偣銆�' + s_label + '銆嬩笌銆�' + title + '銆嬮棿杩炵嚎鏈缃鎵逛汉锛�', duration: 2 }) } else { diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx index bf50398..9ff4eb4 100644 --- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx +++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx @@ -499,7 +499,7 @@ visible={visible} closable={false} maskClosable={false} - width={1000} + width={1050} onOk={this.confirm} onCancel={() => this.setState({visible: false})} destroyOnClose diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss index 893aaf2..aa7ebb2 100644 --- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss +++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss @@ -130,6 +130,7 @@ background-image: none; border: 1px solid #d9d9d9; border-radius: 4px; + vertical-align: middle; .anticon-form { float: right; diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx index 65f565d..0d89461 100644 --- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx +++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx @@ -175,7 +175,7 @@ return ( <> - <div className="member-input">{value.length}浜�<FormOutlined onClick={this.trigger} /></div> + <div className="member-input">{value.length > 0 ? value.length + '浜�' : ''}<FormOutlined onClick={this.trigger} /></div> <Modal wrapClassName="member-modal" title="閫夋嫨浜哄憳" diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx index 4d6fc81..6444785 100644 --- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx +++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx @@ -1,6 +1,6 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -import { Form, Row, Col, Input, Radio, Tooltip, InputNumber } from 'antd' +import { Form, Row, Col, Input, Radio, Tooltip, InputNumber, Switch } from 'antd' import { QuestionCircleOutlined } from '@ant-design/icons' import MemberForm from './memberform' @@ -14,13 +14,23 @@ } state = { - flowType: this.props.data.flowType || 'approval' + flowType: this.props.data.flowType || 'approval', + execCondition: this.props.data.execCondition === 'open', } handleConfirm = () => { return new Promise((resolve, reject) => { this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { + if (values.execCondition === true) { + values.execCondition = 'open' + } else if (values.execCondition === false) { + values.execCondition = 'close' + } + + if (values.matchVal) { + values.matchVal = values.matchVal.replace(/\t+|\v+|\s+/g, '') + } resolve(values) } else { reject(err) @@ -32,7 +42,7 @@ render() { const { node, orgs } = this.props const { getFieldDecorator } = this.props.form - const { flowType } = this.state + const { flowType, execCondition } = this.state const formItemLayout = { labelCol: { xs: { span: 24 }, @@ -155,6 +165,60 @@ )} </Form.Item> </Col> : null} + {nodetype === 'edge' && flowType !== 'reject' ? <Col span={12}> + <Form.Item label="鎵ц鏉′欢"> + {getFieldDecorator('execCondition', { + valuePropName: 'checked', + initialValue: execCondition + })( + <Switch checkedChildren="寮�鍚�" unCheckedChildren="鍏抽棴" onChange={(val) => this.setState({execCondition: val})} /> + )} + </Form.Item> + </Col> : null} + {nodetype === 'edge' && flowType !== 'reject' && execCondition ? <Col span={12}> + <Form.Item label="瀵规瘮鏂瑰紡"> + {getFieldDecorator('match', { + initialValue: data.match || '=' + })( + <Radio.Group> + <Radio value="=">=</Radio> + <Radio value="<"><</Radio> + <Radio value=">">></Radio> + <Radio value="<="><=</Radio> + <Radio value=">=">>=</Radio> + <Radio value="!=">!=</Radio> + </Radio.Group> + )} + </Form.Item> + </Col> : null} + {nodetype === 'edge' && flowType !== 'reject' && execCondition ? <Col span={12}> + <Form.Item label={ + <Tooltip placement="topLeft" title="瀵规瘮鍊间腑涓嶅彲鍖呭惈鍒惰〃绗︺�佺┖鏍笺�佹崲琛岀绛夈��"> + <QuestionCircleOutlined className="mk-form-tip" /> + 瀵规瘮鍊� + </Tooltip> + }> + {getFieldDecorator('matchVal', { + initialValue: data.matchVal || '' + })( + <Input placeholder="" autoComplete="off"/> + )} + </Form.Item> + </Col> : null} + {nodetype === 'node' ? <Col span={12}> + <Form.Item label={ + <Tooltip placement="topLeft" title="鏍囪灏嗕綔涓鸿妭鐐笽D"> + <QuestionCircleOutlined className="mk-form-tip" /> + 鏍囪 + </Tooltip> + }> + {getFieldDecorator('sign', { + initialValue: data.sign || '' + })( + <Input placeholder="" autoComplete="off"/> + )} + </Form.Item> + </Col> : null} <Col span={24}> <Form.Item label="澶囨敞"> {getFieldDecorator('remark', { diff --git a/src/tabviews/custom/components/form/simple-form/index.jsx b/src/tabviews/custom/components/form/simple-form/index.jsx index 8115aea..5b3c32c 100644 --- a/src/tabviews/custom/components/form/simple-form/index.jsx +++ b/src/tabviews/custom/components/form/simple-form/index.jsx @@ -63,7 +63,7 @@ let _group = _config.subcards[0] - if (_group.subButton.enable === 'false' && (!_group.closeButton || _group.closeButton.enable !== 'true')) { + if (_group.subButton.enable === 'false' && (!_group.closeButton || _group.closeButton.enable !== 'true') && (!_group.resetButton || _group.resetButton.enable !== 'true')) { _group.subButton.style.display = 'none' _group.$button = 'no-button' } @@ -318,6 +318,16 @@ MKEmitter.emit('closeTabView', group.subButton.$MenuID) } + resetTab = () => { + const { data } = this.state + + this.setState({ + data: null + }, () => { + this.setState({data: data}) + }) + } + render() { const { config, loading, BID, BData, data, group } = this.state @@ -350,6 +360,7 @@ columns={config.columns} selectedData={data.$$empty ? [] : [data]} /> + {group.resetButton && group.resetButton.enable === 'true' ? <Button type="link" onClick={this.resetTab} style={group.resetButton.style}>{group.resetButton.label}</Button> : null} {group.closeButton && group.closeButton.enable === 'true' ? <Button type="link" onClick={this.closeTab} style={group.closeButton.style}>{group.closeButton.label}</Button> : null} </div> : null} </div> diff --git a/src/tabviews/custom/components/module/account/index.jsx b/src/tabviews/custom/components/module/account/index.jsx index 24d04ca..bdc02be 100644 --- a/src/tabviews/custom/components/module/account/index.jsx +++ b/src/tabviews/custom/components/module/account/index.jsx @@ -120,10 +120,12 @@ } setBook = (item, resolve) => { + const { config } = this.props + if (!resolve) { this.setState({activeItem: item}) - MKEmitter.emit('resetSelectLine', this.props.config.uuid, item.id, item) + MKEmitter.emit('resetSelectLine', config.uuid, item.id, item) } let userid = sessionStorage.getItem('UserID') || '' @@ -152,6 +154,7 @@ } if (resolve) { + sessionStorage.setItem('ThirdMenu', config.$pageId) window.location.reload() } }) diff --git a/src/tabviews/custom/components/share/normalTable/index.jsx b/src/tabviews/custom/components/share/normalTable/index.jsx index 90c6088..be531d2 100644 --- a/src/tabviews/custom/components/share/normalTable/index.jsx +++ b/src/tabviews/custom/components/share/normalTable/index.jsx @@ -144,6 +144,14 @@ } } else if (mark.innerStyle) { content = <span style={mark.innerStyle}>{content}</span> + } else if (mark.space) { + content = <><span dangerouslySetInnerHTML={{__html: mark.space}}></span>{content}</> + } else if (mark.point) { + if (mark.position === 'front') { + content = <>{mark.point}{content}</> + } else { + content = <>{content}{mark.point}</> + } } } if (col.blur) { @@ -208,6 +216,14 @@ } } else if (mark.innerStyle) { content = <span style={mark.innerStyle}>{content}</span> + } else if (mark.space) { + content = <><span dangerouslySetInnerHTML={{__html: mark.space}}></span>{content}</> + } else if (mark.point) { + if (mark.position === 'front') { + content = <>{mark.point}{content}</> + } else { + content = <>{content}{mark.point}</> + } } } @@ -337,9 +353,7 @@ let func = new Function('data', col.formula) content = func([record]) } catch (e) { - if (window.GLOB.debugger === true) { - console.warn(e) - } + console.warn(e) content = '' } } else { @@ -352,10 +366,8 @@ // eslint-disable-next-line content = eval(content) } catch (e) { - if (window.GLOB.debugger === true) { - console.info(content) - console.warn(e) - } + console.info(content) + console.warn(e) content = '' } @@ -389,6 +401,14 @@ } } else if (mark.innerStyle) { content = <span style={mark.innerStyle}>{content}</span> + } else if (mark.space) { + content = <><span dangerouslySetInnerHTML={{__html: mark.space}}></span>{content}</> + } else if (mark.point) { + if (mark.position === 'front') { + content = <>{mark.point}{content}</> + } else { + content = <>{content}{mark.point}</> + } } } diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx index 4ce4d1b..0f95fec 100644 --- a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx +++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx @@ -309,6 +309,14 @@ } } else if (mark.innerStyle) { content = <span style={mark.innerStyle}>{content}</span> + } else if (mark.space) { + content = <><span dangerouslySetInnerHTML={{__html: mark.space}}></span>{content}</> + } else if (mark.point) { + if (mark.position === 'front') { + content = <>{mark.point}{content}</> + } else { + content = <>{content}{mark.point}</> + } } } @@ -397,6 +405,14 @@ } } else if (mark.innerStyle) { content = <span style={mark.innerStyle}>{content}</span> + } else if (mark.space) { + content = <><span dangerouslySetInnerHTML={{__html: mark.space}}></span>{content}</> + } else if (mark.point) { + if (mark.position === 'front') { + content = <>{mark.point}{content}</> + } else { + content = <>{content}{mark.point}</> + } } } @@ -441,9 +457,7 @@ let func = new Function('data', col.formula) content = func([record]) } catch (e) { - if (window.GLOB.debugger === true) { - console.warn(e) - } + console.warn(e) content = '' } } else { @@ -457,10 +471,8 @@ // eslint-disable-next-line content = eval(content) } catch (e) { - if (window.GLOB.debugger === true) { - console.info(content) - console.warn(e) - } + console.info(content) + console.warn(e) content = '' } } @@ -498,6 +510,14 @@ } } else if (mark.innerStyle) { content = <span style={mark.innerStyle}>{content}</span> + } else if (mark.space) { + content = <><span dangerouslySetInnerHTML={{__html: mark.space}}></span>{content}</> + } else if (mark.point) { + if (mark.position === 'front') { + content = <>{mark.point}{content}</> + } else { + content = <>{content}{mark.point}</> + } } } @@ -750,6 +770,14 @@ } } else if (mark.innerStyle) { content = <span style={mark.innerStyle}>{content}</span> + } else if (mark.space) { + content = <><span dangerouslySetInnerHTML={{__html: mark.space}}></span>{content}</> + } else if (mark.point) { + if (mark.position === 'front') { + content = <>{mark.point}{content}</> + } else { + content = <>{content}{mark.point}</> + } } } @@ -817,6 +845,14 @@ } } else if (mark.innerStyle) { content = <span style={mark.innerStyle}>{content}</span> + } else if (mark.space) { + content = <><span dangerouslySetInnerHTML={{__html: mark.space}}></span>{content}</> + } else if (mark.point) { + if (mark.position === 'front') { + content = <>{mark.point}{content}</> + } else { + content = <>{content}{mark.point}</> + } } } @@ -850,9 +886,7 @@ let func = new Function('data', col.formula) content = func([record]) } catch (e) { - if (window.GLOB.debugger === true) { - console.warn(e) - } + console.warn(e) content = '' } } else { @@ -866,10 +900,8 @@ // eslint-disable-next-line content = eval(content) } catch (e) { - if (window.GLOB.debugger === true) { - console.info(content) - console.warn(e) - } + console.info(content) + console.warn(e) content = '' } } @@ -907,6 +939,14 @@ } } else if (mark.innerStyle) { content = <span style={mark.innerStyle}>{content}</span> + } else if (mark.space) { + content = <><span dangerouslySetInnerHTML={{__html: mark.space}}></span>{content}</> + } else if (mark.point) { + if (mark.position === 'front') { + content = <>{mark.point}{content}</> + } else { + content = <>{content}{mark.point}</> + } } } diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx index e4f0f5a..55cf1da 100644 --- a/src/tabviews/custom/index.jsx +++ b/src/tabviews/custom/index.jsx @@ -238,6 +238,15 @@ config.$cache = config.cacheLocal === 'true' config.$time = config.localCacheTime || 0 + if (window.GLOB.systemType !== 'production' && result.modifydate) { + let s = (new Date().getTime() - new Date(result.modifydate).getTime()) / (1000 * 60 * 60) + if (!isNaN(s) && s < 2) { + config.$cache = false + config.$time = 0 + config.cacheUseful = 'false' + } + } + let initInters = [] config.interfaces = this.formatInterSetting(config.interfaces, regs, MenuID, initInters) diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx index 30385fe..7e032ca 100644 --- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx +++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx @@ -447,7 +447,7 @@ const { btn } = this.props let imgCol = false - let columns = btn.verify.columns.filter(col => { + let columns = btn.verify.columns.map(col => { if (col.type === 'image') { imgCol = true } diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx index eeb24ce..816e450 100644 --- a/src/tabviews/zshare/actionList/normalbutton/index.jsx +++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx @@ -2882,7 +2882,19 @@ _item.value = _item.value.replace(/\t+|\v+/g, '') // 鍘婚櫎鍒惰〃绗� if (item.interception !== 'false') { // 鍘婚櫎棣栧熬绌烘牸 - _item.value = _item.value.replace(/(^\s*|\s*$)/g, '') + if (item.interception === 'func') { + try { + // eslint-disable-next-line + let func = new Function('value', 'data', item.func) + _item.value = func(_item.value, _data) + _item.value = _item.value !== undefined ? _item.value : '' + } catch (e) { + console.warn(e) + _item.value = '' + } + } else { + _item.value = _item.value.replace(/(^\s*|\s*$)/g, '') + } } if (_item.type === 'text' && /@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 鐗规畩瀛楁鏇挎崲 _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (BID || '')) diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx index 6691220..4bd500f 100644 --- a/src/tabviews/zshare/actionList/printbutton/index.jsx +++ b/src/tabviews/zshare/actionList/printbutton/index.jsx @@ -2148,7 +2148,19 @@ _item.value = _item.value.replace(/\t+|\v+/g, '') // 鍘婚櫎鍒惰〃绗� if (item.interception !== 'false') { // 鍘婚櫎棣栧熬绌烘牸 - _item.value = _item.value.replace(/(^\s*|\s*$)/g, '') + if (item.interception === 'func') { + try { + // eslint-disable-next-line + let func = new Function('value', 'data', item.func) + _item.value = func(_item.value, _data) + _item.value = _item.value !== undefined ? _item.value : '' + } catch (e) { + console.warn(e) + _item.value = '' + } + } else { + _item.value = _item.value.replace(/(^\s*|\s*$)/g, '') + } } if (_item.type === 'text' && /@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 鐗规畩瀛楁鏇挎崲 _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || '')) diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx index e4f95d3..b1f23a7 100644 --- a/src/tabviews/zshare/mutilform/index.jsx +++ b/src/tabviews/zshare/mutilform/index.jsx @@ -1218,7 +1218,19 @@ _item.value = _item.value.replace(/\t+|\v+/g, '') // 鍘婚櫎鍒惰〃绗� if (item.interception !== 'false') { // 鍘婚櫎棣栧熬绌烘牸 - _item.value = _item.value.replace(/(^\s*|\s*$)/g, '') + if (item.interception === 'func') { + try { + // eslint-disable-next-line + let func = new Function('value', 'data', item.func) + _item.value = func(_item.value, record) + _item.value = _item.value !== undefined ? _item.value : '' + } catch (e) { + console.warn(e) + _item.value = '' + } + } else { + _item.value = _item.value.replace(/(^\s*|\s*$)/g, '') + } } if (item.type === 'text' && /@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 鐗规畩瀛楁鏇挎崲 _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || '')) diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx index 5b520c4..6555fcc 100644 --- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx +++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx @@ -970,7 +970,7 @@ <Button className="excel-col-add mk-red" title="娓呯┖Excel鍒�" onClick={this.clearField}> 娓呯┖Excel鍒� </Button> - <div style={{color: '#959595', fontSize: '13px', paddingLeft: '10px'}}>濡傞渶瀵煎嚭搴忓彿锛岃浣跨敤瀛楁 $Index锛涙暟鍊肩被鍨嬪鍑烘椂鍙繘琛屾暟鎹鐞嗭紙鍙栫粷瀵瑰�笺�佷繚鐣欏皬鏁颁綅锛夛紱绾㈣壊鏍囬瀵煎嚭鏃跺垪澶存枃瀛椾负绾㈣壊銆�</div> + <div style={{color: '#959595', fontSize: '13px', paddingLeft: '10px'}}>濡傞渶瀵煎嚭搴忓彿锛岃浣跨敤瀛楁 $Index锛涙暟鍊肩被鍨嬪鍑烘椂鍙彇缁濆鍊间互鍙婅缃皬鏁颁綅锛涘鍑轰负鍚︽椂锛屼笉浣跨敤琛屼俊鎭紱绾㈣壊鏍囬瀵煎嚭鏃跺垪澶存枃瀛椾负绾㈣壊銆�</div> <EditTable actions={['edit', 'move', 'copy', 'del']} type="excelcolumn" wrappedComponentRef={(inst) => this.columnRef = inst} data={verify.columns} columns={excelColumns} onChange={this.changeColumns}/> </TabPane> {card.intertype === 'system' ? <TabPane tab={ diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/utils.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/utils.jsx index 04b1446..20bb8e3 100644 --- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/utils.jsx +++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/utils.jsx @@ -67,14 +67,7 @@ let custompage = /@pageSize@|@orderBy@/i.test(_dataresource + _customScript) // 姝e垯鏇挎崲 - let _regoptions = regoptions.map(item => { - return { - reg: new RegExp('@' + item.key + '@', 'ig'), - value: `'0'` - } - }) - - _regoptions.push({ + regoptions.push({ reg: new RegExp('@orderBy@', 'ig'), value: verify.order }, { @@ -85,7 +78,7 @@ value: 1 }) - _regoptions.forEach(item => { + regoptions.forEach(item => { _dataresource = _dataresource.replace(item.reg, item.value) _customScript = _customScript.replace(item.reg, item.value) _tailScript = _tailScript.replace(item.reg, item.value) diff --git a/src/templates/zshare/formconfig.jsx b/src/templates/zshare/formconfig.jsx index 752c7ec..f2373e3 100644 --- a/src/templates/zshare/formconfig.jsx +++ b/src/templates/zshare/formconfig.jsx @@ -3615,16 +3615,28 @@ { type: 'radio', key: 'interception', - label: '鎴彇绌烘牸', + label: '鎴彇鏂瑰紡', initVal: card.interception || 'true', - tooltip: '鎻愪氦鏃讹紝鏄惁鎴彇棣栧熬鐨勭┖鐧藉瓧绗︺��', + tooltip: '鎻愪氦鏃剁殑鏂囨湰澶勭悊鏂瑰紡锛岀┖鐧藉瓧绗︽寚寮�澶存垨缁撳熬鐨勭┖鐧藉瓧绗︺��', options: [{ - value: 'true', - text: '鏄�' - }, { value: 'false', - text: '鍚�' + text: '鏃�' + }, { + value: 'true', + text: '绌虹櫧瀛楃' + }, { + value: 'func', + text: '鑷畾涔夊嚱鏁�' }] + }, + { + type: 'textarea', + key: 'func', + label: '鍑芥暟', + initVal: card.func || '', + tooltip: '鍑芥暟鏈変袱涓叆鍙�(value, data)锛岀涓�涓负褰撳墠琛ㄥ崟鍊硷紝绗簩涓负琛ㄥ崟鎵�鏈夊瓧娈�-鍊肩殑瀵硅薄锛岃杩斿洖澶勭悊鍚庣殑鍊笺��', + rows: 2, + required: true }, { type: 'textarea', @@ -3858,7 +3870,7 @@ type: 'radio', key: 'constant', label: 'Unicode甯搁噺', - tooltip: '浣跨敤鏃跺皢鍦ㄦ彁浜ゅ唴瀹瑰墠鍔犱笂 N锛屼唬琛ㄥ瓨鍏ユ暟鎹簱鏃朵互 Unicode 鏍煎紡瀛樺偍銆�', + tooltip: `浣跨敤鏃跺皢鍦ㄦ彁浜ゅ唴瀹瑰墠鍔犱笂 N锛屼唬琛ㄥ瓨鍏ユ暟鎹簱鏃朵互 Unicode 鏍煎紡瀛樺偍銆備緥濡傦細@nvarchar=N'脴W30041'銆俙, initVal: card.constant || 'false', options: [{ value: 'true', diff --git a/src/templates/zshare/modalform/index.jsx b/src/templates/zshare/modalform/index.jsx index be0389c..43d8efa 100644 --- a/src/templates/zshare/modalform/index.jsx +++ b/src/templates/zshare/modalform/index.jsx @@ -147,6 +147,9 @@ shows.push('regularExtra') } } + if (this.record.interception === 'func') { + shows.push('func') + } } else if (type === 'number') { reTypes.initval = 'number' reRequired.initval = true @@ -165,6 +168,9 @@ shows.push('fieldlength') } else if (this.record.declare === 'decimal') { shows.push('decimal') + } + if (this.record.interception === 'func') { + shows.push('func') } } else if (['multiselect', 'select', 'link', 'radio', 'checkbox'].includes(type)) { if (this.record.resourceType === '0') { // 鑷畾涔夎祫婧� @@ -278,6 +284,9 @@ if (this.record.encryption === 'false') { shows.push('enterReplace') } + if (this.record.interception === 'func') { + shows.push('func') + } } if (['multiselect', 'select', 'link', 'radio', 'checkbox', 'checkcard', 'cascader'].includes(type)) { diff --git a/src/templates/zshare/verifycard/baseform/index.jsx b/src/templates/zshare/verifycard/baseform/index.jsx index 6ea9c9e..83c366d 100644 --- a/src/templates/zshare/verifycard/baseform/index.jsx +++ b/src/templates/zshare/verifycard/baseform/index.jsx @@ -279,7 +279,7 @@ } render() { - const { unionFields, verify, notes, card, appType } = this.props + const { unionFields, verify, notes, card, appType, columns } = this.props const { wxTemps, selectTemp } = this.state const formItemLayout = { labelCol: { @@ -290,6 +290,17 @@ xs: { span: 24 }, sm: { span: 16 } } + } + + let _columns = [] + if (window.GLOB.process) { + _columns = columns.filter(col => { + if (!col.field) return false + if (col.field.toLowerCase() === 'id') return false + if (col.type === 'text' && col.fieldlength > 100) return false + + return true + }) } return ( @@ -462,6 +473,22 @@ </Radio.Group> </Form.Item> </Col> : null} + {window.GLOB.process && verify.workFlow === 'true' && verify.flowType === 'approval' ? <Col span={8}> + <Form.Item label={ + <Tooltip placement="bottomLeft" title="濡傛灉瀹℃壒瀛樺湪澶氭潯鍒嗘敮锛屽彲娣诲姞瀹℃壒娴佺▼鐨勬帶鍒跺瓧娈碉紝閫氳繃琛屼俊鎭帶鍒舵祦绋嬭蛋鍚戙�傛敞锛氶渶鍦ㄦ祦绋嬪浘涓畬鍠勫垎鏀殑鎵ц鏉′欢銆�"> + <QuestionCircleOutlined className="mk-form-tip" /> + 娴佺▼鎺у埗 + </Tooltip> + }> + <Select allowClear value={verify.flowBranch} onChange={(val) => {this.onOptionChange(val || '', 'flowBranch')}}> + {_columns.map(option => + <Select.Option key={option.field} value={option.field}> + {option.label} + </Select.Option> + )} + </Select> + </Form.Item> + </Col> : null} <Col span={24}></Col> <Col span={8}> <Form.Item label={ diff --git a/src/templates/zshare/verifycard/index.jsx b/src/templates/zshare/verifycard/index.jsx index 3103749..df7c6dc 100644 --- a/src/templates/zshare/verifycard/index.jsx +++ b/src/templates/zshare/verifycard/index.jsx @@ -626,7 +626,7 @@ oriVerify: fromJS(_verify).toJS() }) - if (config.Template !== 'FormTab' && card.intertype === 'inner') { + if (card.intertype === 'inner') { return } @@ -637,11 +637,6 @@ field: card.field, label: card.label, type: 'text' - }) - resolve(_fields) - } else if (config.Template === 'FormTab') { - config.groups.forEach(group => { - _fields.push(...group.sublist) }) resolve(_fields) } else if (card.modal && (card.OpenType === 'pop' || !card.OpenType)) { @@ -1553,7 +1548,7 @@ } render() { - const { card } = this.props + const { card, columns } = this.props const { activeKey, verifyInter, setting, verify, fields, uniqueFields, uniqueColumns, unionFields, onceUniqueColumns, columnsFields, contrastColumns, customColumns, orderColumns, scriptsColumns, cbScriptsColumns, orderModular, orderModularDetail, voucher, voucherDetail, notes, appType } = this.state const formItemLayout = { labelCol: { @@ -1576,7 +1571,7 @@ {verify.default === 'false' ? <span className="count-tip"><ExclamationOutlined style={{color: 'orange'}}/></span> : null} </span> } key="base"> - <BaseForm card={card} appType={appType} unionFields={unionFields} setting={setting} verify={verify} notes={notes} onChange={(verify) => this.setState({verify})} wrappedComponentRef={(inst) => this.baseForm = inst}/> + <BaseForm card={card} appType={appType} columns={columns} unionFields={unionFields} setting={setting} verify={verify} notes={notes} onChange={(verify) => this.setState({verify})} wrappedComponentRef={(inst) => this.baseForm = inst}/> </TabPane> : null} {verifyInter === 'system' ? <TabPane tab={ <span> @@ -1612,7 +1607,7 @@ fields={fields} btn={this.props.card} billcodes={verify.billcodes} - columns={this.props.columns} + columns={columns} modular={orderModular} modularDetail={orderModularDetail} orderChange={this.orderChange} @@ -1641,7 +1636,7 @@ } key="voucher"> <VoucherForm voucher={voucher} - columns={this.props.columns} + columns={columns} voucherobj={verify.voucher} voucherDetail={voucherDetail} voucherChange={this.voucherChange} diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js index 59816a5..2af2a61 100644 --- a/src/utils/utils-custom.js +++ b/src/utils/utils-custom.js @@ -919,6 +919,13 @@ if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty') { item.setting.supModule = '' } + + if (item.wrap && item.wrap.supType === 'multi') { + item.wrap.supType = 'single' + + delete item.supNodes + } + if (item.wrap && item.wrap.supModule) { item.wrap.supModule = '' } @@ -1546,6 +1553,11 @@ } else if (card.type !== 'balcony' && !card.setting.supModule) { // 鎮诞妗嗕笂绾х粍浠堕渶鍗曠嫭璁剧疆 errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } + if (card.subtype === 'dualdatacard' && card.subColumns) { + card.subColumns.forEach(col => { + columns.push(col.field) + }) + } } else if ((card.type === 'balcony' || card.type === 'card') && card.wrap.datatype === 'public') { columns = card.columns.map(c => c.field) } @@ -1553,6 +1565,31 @@ let doubleClick = '' if (card.type === 'table') { doubleClick = card.wrap.doubleClick || '' + } + + let checkBtn = (cell) => { + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (!cell.modal || cell.modal.fields.length === 0) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) + } + } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) + } else if (cell.OpenType === 'excelOut') { + if (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) + } else if (cell.intertype === 'system' && cell.verify.dataType !== 'custom' && card.$c_ds && columns.length > 0) { + let cols = [] + cell.verify.columns.forEach(col => { + if (col.output === 'false' || col.Column === '$Index') return + if (!columns.includes(col.Column)) { + cols.push(col.Column) + } + }) + if (cols.length) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楋紙${cols.join('銆�')}锛夊湪瀛楁闆嗕腑涓嶅瓨鍦紒`}) + } + } + } } if (card.$c_ac) { @@ -1565,15 +1602,7 @@ // errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑寮圭獥鏍囩鏈惎鐢╜}) // } // } - if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { - if (!cell.modal || cell.modal.fields.length === 0) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) - } - } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) - } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) - } + checkBtn(cell) if (doubleClick === cell.uuid) { doubleClick = '' } @@ -1586,15 +1615,7 @@ item.elements.forEach(cell => { if (cell.eleType === 'button') { if (cell.hidden === 'true') return - if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { - if (!cell.modal || cell.modal.fields.length === 0) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) - } - } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) - } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) - } + checkBtn(cell) if (linkbtn && linkbtn === cell.uuid) { linkbtn = '' } @@ -1607,15 +1628,7 @@ item.backElements.forEach(cell => { if (cell.eleType === 'button') { if (cell.hidden === 'true') return - if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { - if (!cell.modal || cell.modal.fields.length === 0) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) - } - } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) - } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) - } + checkBtn(cell) if (linkbtn && linkbtn === cell.uuid) { linkbtn = '' } @@ -1639,15 +1652,7 @@ card.elements.forEach(cell => { if (cell.eleType === 'button') { if (cell.hidden === 'true') return - if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { - if (!cell.modal || cell.modal.fields.length === 0) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) - } - } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) - } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) - } + checkBtn(cell) } else if (cell.datatype === 'dynamic' && cell.field && !columns.includes(cell.field)) { errors.push({ level: 1, detail: `鍗$墖涓姩鎬佸瓧娈碘��${cell.field}鈥濇棤鏁坄}) } @@ -1660,15 +1665,8 @@ col.elements.forEach(cell => { if (cell.eleType === 'button') { if (cell.hidden === 'true') return - if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { - if (!cell.modal || cell.modal.fields.length === 0) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) - } - } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) - } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) { - errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) - } + + checkBtn(cell) if (doubleClick === cell.uuid) { doubleClick = '' diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js index 3bac86d..4544fe1 100644 --- a/src/utils/utils-datamanage.js +++ b/src/utils/utils-datamanage.js @@ -212,7 +212,14 @@ } if (_customScript) { - if (LText) { + if (DateCount) { + DateCount = `${DateCount} + ${_tailScript} + aaa: + if @ErrorCode!='' + insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' + ` + } else if (LText) { LText = `${LText} ${_tailScript} aaa: @@ -227,6 +234,17 @@ insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' ` } + } else if (_tailScript && DateCount) { + LText = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) + Select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' + ${LText} + ` + DateCount = `${DateCount} + ${_tailScript} + aaa: + if @ErrorCode!='' + insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' + ` } else if (_tailScript) { LText = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) Select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' @@ -247,6 +265,7 @@ if (window.GLOB.debugger === true) { _customScript && console.info(`${setting.$name ? `/*${setting.$name} 鑷畾涔夎剼鏈�*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`) LText && console.info(`${setting.$name ? `/*${setting.$name} 鏁版嵁婧�*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n')) + DateCount && console.info(`${setting.$name ? `/*${setting.$name} 鎬绘暟鏌ヨ*/\n` : ''}` + DateCount.replace(/\n\s{8}/ig, '\n')) } if (setting.$name) { diff --git a/src/utils/utils.js b/src/utils/utils.js index e874151..7da4357 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -1,3 +1,4 @@ +import React from 'react' import moment from 'moment' import md5 from 'md5' @@ -2117,6 +2118,7 @@ let status = 0 let statusName = '' let detailId = '' + let error = '' if (verify.flowType === 'start') { target = flow.cells.filter(cell => cell.mknode === 'start')[0] @@ -2125,17 +2127,112 @@ detailId = target.id status = target.mkdata.status statusName = target.mkdata.statusName + } else { + error = '宸ヤ綔娴佹棤寮�濮嬭妭鐐�' } } else if (_data.works_flow_param) { - node = JSON.parse(window.decodeURIComponent(window.atob(_data.works_flow_param))) + try { + node = JSON.parse(window.decodeURIComponent(window.atob(_data.works_flow_param))) + } catch (e) { + node = null + } if (node) { let lines = flow.cells.filter(cell => cell.shape === 'edge' && cell.source.cell === node.id) if (verify.flowType === 'reject') { line = lines.filter(cell => cell.mkdata.flowType === 'reject' || cell.mknode === 'startEdge')[0] } else { - line = lines.filter(cell => cell.mkdata.flowType !== 'reject' && cell.mknode !== 'startEdge')[0] + let endEdge = null + lines = lines.filter(cell => { + if (cell.mknode === 'endEdge') { + endEdge = cell + return false + } + + return cell.mkdata.flowType !== 'reject' && cell.mknode !== 'startEdge' + }) + + if (lines.length === 0) { + if (!endEdge) { + error = '鏃犲彲鎵ц鐨勬祦绋嬪垎鏀�' + } else { + line = endEdge + } + } else { + let branchKey = verify.flowBranch ? verify.flowBranch.toLowerCase() : '' + + if (!branchKey) { + lines.forEach(line => { + if (line.mkdata.execCondition === 'open') { + error = '鎸夐挳鏈缃祦绋嬫帶鍒跺瓧娈点��' + } + }) + if (!error) { + line = lines[0] + } + } else if (!_data.hasOwnProperty(branchKey)) { + error = '琛屼俊鎭腑鏃犳祦绋嬫帶鍒跺瓧娈点��' + } else { + if (endEdge) { + line = endEdge + } + + let equalLine = null + let gtOrLtLine = [] + let unEqualLine = null + let branchVal = _data[branchKey] + + if (branchVal && typeof(branchVal) === 'string' && !isNaN(branchVal)) { + branchVal = +branchVal + } + + lines.forEach(item => { + if (item.mkdata.execCondition !== 'open') { + line = item + } else { + if (item.mkdata.match === '=') { + if (item.mkdata.matchVal === branchVal + '') { + equalLine = item + } + } else if (item.mkdata.match === '!=') { + if (item.mkdata.matchVal !== branchVal + '') { + unEqualLine = item + } + } else { + if (item.mkdata.match === '<') { + if (item.mkdata.matchVal < branchVal) { + gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) + } + } else if (item.mkdata.match === '>') { + if (item.mkdata.matchVal > branchVal) { + gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) + } + } else if (item.mkdata.match === '<=') { + if (item.mkdata.matchVal <= branchVal) { + gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) + } + } else if (item.mkdata.match === '>=') { + if (item.mkdata.matchVal >= branchVal) { + gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) + } + } + } + } + }) + + if (equalLine) { + line = equalLine + } else if (gtOrLtLine.length > 0) { + gtOrLtLine.sort((a, b) => a.dist - b.dist) + line = gtOrLtLine[0] + } else if (unEqualLine) { + line = unEqualLine + } + } + } } + } else { + error = '琛屼俊鎭腑宸ヤ綔娴佸弬鏁版棤娉曡В鏋�' } if (line) { @@ -2143,7 +2240,11 @@ status = line.mkdata.status statusName = line.mkdata.statusName target = flow.cells.filter(cell => cell.id === line.target.cell)[0] + } else if (!error) { + error = '宸ヤ綔娴佷腑鏃犲搴旀祦绋�' } + } else { + error = '琛屼俊鎭腑鏃犲伐浣滄祦鍙傛暟' } if (verify.flowSql === 'true' && target) { @@ -2184,20 +2285,12 @@ ` } } else if (verify.flowSql === 'true') { - target = flow.cells.filter(cell => cell.mknode === 'start')[0] - - if (target) { - detailId = target.id - } - status = 0 statusName = '寮傚父' + _sql += ` /* 宸ヤ綔娴佸紓甯竤ql */ - update s_my_works_flow set status=@status@,statusname=@statusname@,works_flow_param=@works_flow_param@,works_flow_detail_id=@works_flow_detail_id@,modifydate=getdate(),modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname - where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0 - insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,upid) - select @ID@,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@time_id@ + select @ErrorCode='E',@retmsg='${error || '宸ヤ綔娴佹墽琛屽紓甯�'}' goto aaa ` } @@ -2302,10 +2395,7 @@ * @description 鑾峰彇鏍囪淇℃伅 */ export function getMark (marks, record, style = {}) { - let icon = null - let innerStyle = null - let position = null - let signType = '' + let res = {} style = JSON.parse(JSON.stringify(style)) marks.some(mark => { @@ -2342,42 +2432,45 @@ if (type === 'font') { style.color = mark.color - innerStyle = {color: mark.color} - signType = ' sign-font' + res.innerStyle = {color: mark.color} + res.signType = ' sign-font' } else if (type === 'background') { style.backgroundColor = mark.color if (mark.fontColor) { style.color = mark.fontColor - innerStyle = {color: mark.fontColor} + res.innerStyle = {color: mark.fontColor} } } else if (type === 'underline') { style.textDecoration = 'underline' style.color = mark.color - innerStyle = {color: mark.color, textDecoration: 'underline'} + res.innerStyle = {color: mark.color, textDecoration: 'underline'} } else if (type === 'line-through') { style.textDecoration = 'line-through' style.color = mark.color - innerStyle = {color: mark.color, textDecoration: 'line-through'} + res.innerStyle = {color: mark.color, textDecoration: 'line-through'} } else if (type.indexOf('icon') > -1) { - icon = mark.signType[mark.signType.length - 1] - innerStyle = {color: mark.color} + res.icon = mark.signType[mark.signType.length - 1] + res.innerStyle = {color: mark.color} if (type === 'iconfront' || mark.signType[1] === 'front') { - position = 'front' + res.position = 'front' } else { - position = 'back' + res.position = 'back' } + } else if (type === 'indent') { + style.color = mark.color + res.space = Array(mark.signType[1] + 1).join(' ') + } else if (type === 'pointfront') { + res.position = 'front' + res.point = <span style={{display: 'inline-block', marginRight: '3px', width: '8px', height: '8px', borderRadius: '14px', background: mark.color, verticalAlign: 'middle'}}></span> + } else if (type === 'pointback') { + res.position = 'back' + res.point = <span style={{display: 'inline-block', marginLeft: '3px', width: '8px', height: '8px', borderRadius: '14px', background: mark.color, verticalAlign: 'middle'}}></span> } return true }) - return { - style, - icon, - innerStyle, - position, - signType - } + return res } /** -- Gitblit v1.8.0