From 5223edbcccfed84a33a706e5637ee65a61f377aa Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 22 十二月 2021 18:00:39 +0800
Subject: [PATCH] 2021-12-22

---
 src/components/normalform/modalform/index.jsx |   41 +++++++++++++++++++++++++++++++++++------
 1 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/src/components/normalform/modalform/index.jsx b/src/components/normalform/modalform/index.jsx
index 851b686..91fe3e5 100644
--- a/src/components/normalform/modalform/index.jsx
+++ b/src/components/normalform/modalform/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Form, Row, Col, Tooltip, Icon, Cascader, Input } from 'antd'
+import { Form, Row, Col, Tooltip, Cascader, Input } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import asyncComponent from '@/utils/asyncComponent'
 import MKEInput from './mkInput'
@@ -12,9 +13,12 @@
 const { TextArea } = Input
 
 const MKRadio = asyncComponent(() => import('./mkRadio'))
+const MKCheckbox = asyncComponent(() => import('./mkCheckbox'))
 const StyleInput = asyncComponent(() => import('./styleInput'))
 const MKFileUpload = asyncComponent(() => import('@/tabviews/zshare/fileupload'))
 const MKColor = asyncComponent(() => import('@/tabviews/zshare/mutilform/mkColor'))
+const MkEditIcon = asyncComponent(() => import('@/components/mkIcon'))
+const SourceComponent = asyncComponent(() => import('@/menu/components/share/sourcecomponent'))
 
 class ModalForm extends Component {
   static propTpyes = {
@@ -98,10 +102,17 @@
 
         if (cell.hidden) return
 
-        if (supItem.hidden || !item.values.includes(supItem.initval)) {
+        if (supItem.hidden) {
           cell.hidden = true
-          fieldMap.set(item.field, cell)
+        } else if (supItem.type === 'checkbox') {
+          let vals = [...supItem.initval, ...item.values]
+          if (vals.length === new Set(vals).size) {
+            cell.hidden = true
+          }
+        } else if (!item.values.includes(supItem.initval)) {
+          cell.hidden = true
         }
+        fieldMap.set(item.field, cell)
 
         fields.push(item)
       })
@@ -156,7 +167,19 @@
 
         current.controlFields.forEach(cell => {
           let m = map.get(cell.field)
-          m.hidden = current.hidden || !cell.values.includes(val)
+
+          if (current.hidden) {
+            m.hidden = true
+          } else if (current.type === 'checkbox') {
+            let vals = [...val, ...cell.values]
+            if (vals.length !== new Set(vals).size) {
+              m.hidden = false
+            } else {
+              m.hidden = true
+            }
+          } else {
+            m.hidden = !cell.values.includes(val)
+          }
 
           if (m.hidden) {
             m.initval = this.record[m.field]
@@ -193,7 +216,7 @@
       if (item.hidden || item.forbid) return
 
       let content = null
-      let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><Icon type="question-circle" />{item.label}</Tooltip> : item.label
+      let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><QuestionCircleOutlined className="mk-form-tip" />{item.label}</Tooltip> : item.label
     
       if (item.type === 'text') {
         content = (<MKEInput config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})} onSubmit={this.props.inputSubmit} />)
@@ -207,12 +230,18 @@
         content = (<StyleInput config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>)
       } else if (item.type === 'radio') {
         content = (<MKRadio config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>)
+      } else if (item.type === 'checkbox') {
+        content = (<MKCheckbox config={item} onChange={(val) => this.recordChange({[item.field]: val}, item)}/>)
       } else if (item.type === 'fileupload') {
         content = (<MKFileUpload config={item} onChange={(val) => this.recordChange({[item.field]: val})} />)
       } else if (item.type === 'cascader') {
-        content = (<Cascader options={item.options} expandTrigger="hover" placeholder="" />)
+        content = (<Cascader allowClear={!!item.allowClear} options={item.options} expandTrigger="hover" placeholder="" />)
       } else if (item.type === 'textarea') {
         content = (<TextArea rows={item.rows || 2} placeholder=""/>)
+      } else if (item.type === 'mkicon') {
+        content = (<MkEditIcon allowClear={item.allowClear}/>)
+      } else if (item.type === 'source') {
+        content = (<SourceComponent type="" placement="right"/>)
       }
 
       if (!content) return

--
Gitblit v1.8.0