From 1ba430d58ea3fd662d09b99f6e22ed3b3564a356 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 03 二月 2023 14:15:31 +0800 Subject: [PATCH] 2023-02-03 --- src/tabviews/zshare/mutilform/mkCheckCard/index.jsx | 30 +++++++++++++++++++++++++++++- 1 files changed, 29 insertions(+), 1 deletions(-) diff --git a/src/tabviews/zshare/mutilform/mkCheckCard/index.jsx b/src/tabviews/zshare/mutilform/mkCheckCard/index.jsx index 58acdce..154b7bd 100644 --- a/src/tabviews/zshare/mutilform/mkCheckCard/index.jsx +++ b/src/tabviews/zshare/mutilform/mkCheckCard/index.jsx @@ -23,8 +23,11 @@ let config = fromJS(this.props.config).toJS() let selectKeys = config.initval + let initlength = 0 if (config.multiple === 'true') { selectKeys = config.initval ? config.initval.split(',') : [] + initlength = selectKeys.length + selectKeys = this.filterVals(config.options, selectKeys) } if (!config.selectStyle && config.backgroundColor) { @@ -44,6 +47,10 @@ config: config, options: fromJS(config.options).toJS(), selectKeys: selectKeys + }, () => { + if (config.multiple === 'true' && selectKeys.length < initlength) { + this.props.onChange(selectKeys.join(',')) + } }) } @@ -60,9 +67,20 @@ } UNSAFE_componentWillReceiveProps (nextProps) { - const { config } = this.state + const { config, selectKeys } = this.state if (!is(fromJS(config.oriOptions), fromJS(nextProps.config.oriOptions))) { + if (config.multiple === 'true') { + let keys = this.filterVals(nextProps.config.options, fromJS(selectKeys).toJS()) + if (keys.length < selectKeys.length) { + this.setState({ + selectKeys: keys + }, () => { + this.props.onChange(keys.join(',')) + }) + } + } + this.setState({ config: {...config, oriOptions: nextProps.config.oriOptions}, options: fromJS(nextProps.config.options).toJS() @@ -77,6 +95,16 @@ MKEmitter.removeListener('mkFP', this.mkFormHandle) } + filterVals = (options, vals) => { + if (options.length === 0 || vals.length === 0) return vals + + let ops = options.map(item => item.$value) + + vals = vals.filter(val => ops.includes(val)) + + return vals + } + mkFormHandle = (uuid, parentId, level) => { if (uuid !== this.state.config.uuid) return -- Gitblit v1.8.0