From 882d11341442d5128c9e314f76e48d4d829f31cc Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 27 十月 2023 17:15:47 +0800
Subject: [PATCH] 2023-10-27

---
 src/tabviews/custom/components/table/edit-table/normalTable/mkPopSelect/index.scss |   93 ++++++++++++++----
 src/tabviews/custom/components/table/edit-table/normalTable/mkPopSelect/index.jsx  |   99 +++++++++----------
 src/tabviews/zshare/mutilform/mkPopSelect/index.scss                               |    3 
 src/menu/components/table/edit-table/columns/editColumn/index.jsx                  |    2 
 src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx             |   29 +++++
 src/tabviews/custom/components/table/edit-table/normalTable/index.jsx              |   42 ++++++-
 6 files changed, 187 insertions(+), 81 deletions(-)

diff --git a/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx b/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
index da0ea0b..6ebce77 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
+++ b/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
@@ -457,6 +457,35 @@
       required: true
     },
     {
+      type: 'radio',
+      key: 'laypage',
+      label: '鍒嗛〉',
+      initVal: card.laypage || 'true',
+      required: false,
+      options: [{
+        value: 'true',
+        text: '鏄�'
+      }, {
+        value: 'false',
+        text: '鍚�'
+      }]
+    },
+    {
+      type: 'radio',
+      key: 'onload',
+      label: '鍒濆鍖�',
+      initVal: card.onload || 'true',
+      tooltip: '褰撴病鏈夎缃悳绱㈠瓧娈垫椂锛屽垵濮嬪寲鍔犺浇鏁版嵁銆�',
+      required: false,
+      options: [{
+        value: 'true',
+        text: '鍔犺浇'
+      }, {
+        value: 'false',
+        text: '涓嶅姞杞�'
+      }]
+    },
+    {
       type: 'text',
       key: 'valueField',
       label: '鍊悸峰瓧娈�',
diff --git a/src/menu/components/table/edit-table/columns/editColumn/index.jsx b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
index baca4f6..25e6c22 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/index.jsx
+++ b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
@@ -76,7 +76,7 @@
         } else if (this.record.editType === 'date') {
           _options.push('required', 'precision', 'enter', 'declareType')
         } else if (this.record.editType === 'popSelect') {
-          _options.push('required', 'enter', 'linkSubField', 'columns', 'dataSource', 'primaryKey', 'order', 'showField', 'controlField', 'searchKey', 'popWidth')
+          _options.push('required', 'enter', 'linkSubField', 'columns', 'dataSource', 'primaryKey', 'order', 'showField', 'controlField', 'searchKey', 'popWidth', 'laypage', 'onload')
         } else if (this.record.editType === 'select') {
           _options.push('required', 'enter', 'resourceType', 'linkSubField', 'dropdown')
 
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 0805ba9..cdf3368 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -371,8 +371,23 @@
     }, 10)
   }
 
-  onPopChange = () => {
+  onPopChange = (values) => {
+    const { col, record } = this.props
 
+    this.setState({editing: false})
+
+    setTimeout(() => {
+      if (/\$next/.test(col.enter)) {
+        MKEmitter.emit('nextLine', col, record.$$uuid)
+      } else if (col.enter === '$sub') {
+        MKEmitter.emit('subLine', col, record)
+      } else if (col.enter !== '$noAct') {
+        let node = document.getElementById(col.enter + record.$$uuid)
+        node && node.click()
+      }
+    }, 50)
+
+    MKEmitter.emit('changeRecord', col.tableId, {...record, ...values})
   }
 
   render() {
@@ -455,7 +470,7 @@
             let _value = record[col.field] !== undefined ? record[col.field] : ''
 
             return (<td onClick={(e) => e.stopPropagation()} className="editing_table_cell">
-              <MKPopSelect defaultValue={_value} config={col} BID={record.$$BID} ID={record.$$uuid} onChange={this.onPopChange} onSubmit={() => {}}/>
+              <MKPopSelect mask={true} defaultValue={_value} config={col} BID={record.$$BID} ID={record.$$uuid} onChange={this.onPopChange} blur={() => this.setState({editing: false})}/>
             </td>)
           } else {
             let _value = record[col.field] !== undefined ? record[col.field] : ''
@@ -844,8 +859,21 @@
     MKEmitter.emit('changeRecord', col.tableId, {...record, [col.field]: _val})
   }
 
-  onPopChange = () => {
+  onPopChange = (values) => {
+    const { col, record } = this.props
 
+    setTimeout(() => {
+      if (/\$next/.test(col.enter)) {
+        MKEmitter.emit('nextLine', col, record.$$uuid)
+      } else if (col.enter === '$sub') {
+        MKEmitter.emit('subLine', col, record)
+      } else if (col.enter !== '$noAct') {
+        let node = document.getElementById(col.enter + record.$$uuid)
+        node && node.click()
+      }
+    }, 50)
+
+    MKEmitter.emit('changeRecord', col.tableId, {...record, ...values})
   }
 
   render() {
@@ -880,7 +908,7 @@
           )
         } else if (col.editType === 'popSelect') {
           children = (
-            <MKPopSelect config={col} defaultValue={record[col.field] || ''} BID={record.$$BID} ID={record.$$uuid} onChange={this.onPopChange} onSubmit={() => {}}/>
+            <MKPopSelect config={col} defaultValue={record[col.field] || ''} BID={record.$$BID} ID={record.$$uuid} onChange={this.onPopChange}/>
           )
         } else {
           children = (<>
@@ -2049,11 +2077,7 @@
     })
 
     if (err) {
-      notification.warning({
-        top: 92,
-        message: err,
-        duration: 5
-      })
+      message.warning(err)
 
       return null
     }
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/mkPopSelect/index.jsx b/src/tabviews/custom/components/table/edit-table/normalTable/mkPopSelect/index.jsx
index ca6c4d0..651bc6f 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/mkPopSelect/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/mkPopSelect/index.jsx
@@ -1,13 +1,11 @@
 import React, {Component} from 'react'
 import { is, fromJS } from 'immutable'
-import { Select } from 'antd'
 import { notification, Modal, Table, Input } from 'antd'
 import moment from 'moment'
-import { TableOutlined } from '@ant-design/icons'
+import { TableOutlined, CloseCircleFilled } from '@ant-design/icons'
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
-import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 const { Search } = Input
@@ -17,7 +15,7 @@
     super(props)
     
     let config = fromJS(props.config).toJS()
-    let value = props.defaultValue || config.initval
+    let value = props.defaultValue
 
     let arrfield = config.columns.map(f => f.field)
   
@@ -94,10 +92,10 @@
   }
 
   componentDidMount () {
-    const { config } = this.state
+    const { mask } = this.props
 
-    if (config.onload === 'true' && config.editType !== 'popSelect') {
-      this.loadData()
+    if (mask) {
+      this.trigger()
     }
   }
 
@@ -243,46 +241,26 @@
 
   selectChange = (val, record) => {
     const { config } = this.state
-    let other = {}
 
-    if (config.subFields) {
-      let option = record || null
+    let values = {[config.field]: val}
 
-      if (!option) {
-        option = this.state.options.filter(m => m.$$uuid === val)[0]
-      }
-
-      option && config.subFields.forEach((n, i) => {
-        other[n.field] = option[n.field]
-        setTimeout(() => {
-          MKEmitter.emit('mkFC', 'input', n.uuid, option[n.field])
-        }, i * 5)
+    if (config.linkSubField) {
+      config.linkSubField.forEach(m => {
+        values[m] = record[m] === undefined ? '' : record[m]
       })
     }
 
-    this.props.onChange(val, other)
-    this.setState({value: val}, () => {
-      if (config.enter === 'tab') {
-        MKEmitter.emit('mkFC', 'focus', config.tabUuid)
-      } else if (config.enter === 'sub') {
-        if (config.subFields) {
-          setTimeout(() => {
-            this.props.onSubmit()
-          }, 1000)
-        } else {
-          this.props.onSubmit()
-        }
-      }
-    })
+    this.props.onChange(values)
+    this.setState({value: val})
   }
 
   trigger = (e) => {
     const { config, options } = this.state
     
-    e.stopPropagation()
+    e && e.stopPropagation()
 
     this.setState({visible: true}, () => {
-      if (config.editType === 'popSelect' && options.length === 0) {
+      if (config.onload === 'true' && options.length === 0) {
         this.loadData()
       }
     })
@@ -294,6 +272,23 @@
 
     this.selectChange(record.$$uuid, record)
     this.setState({visible: false})
+  }
+
+  clear = (e) => {
+    const { config } = this.state
+
+    e.stopPropagation()
+    
+    let values = {[config.field]: ''}
+
+    if (config.linkSubField) {
+      config.linkSubField.forEach(m => {
+        values[m] = ''
+      })
+    }
+
+    this.props.onChange(values)
+    this.setState({value: ''})
   }
 
   changeTable = (pagination, filters, sorter) => {
@@ -316,25 +311,27 @@
     })
   }
 
+  cancel = () => {
+    const { mask } = this.props
+
+    this.setState({visible: false})
+
+    if (mask) {
+      this.props.blur()
+    }
+  }
+
   render() {
+    const { mask } = this.props
     const { value, config, options, visible, loading, total, pageIndex, pageSize, columns, placeholder } = this.state
     
     return <>
-      <Select
-        className="mk-pop-select"
-        showSearch={!!config.searchKey}
-        allowClear
-        value={value}
-        onSearch={(val) => val && this.searchOption(val)}
-        filterOption={false}
-        onChange={(val) => this.selectChange(val === undefined ? '' : val)}
-        disabled={config.readonly}
-        suffixIcon={<TableOutlined onClick={this.trigger}/>}
-      >
-        {options.map(option =>
-          <Select.Option disabled={option.$disabled} key={option.key} value={option.$$uuid}>{option.$label}</Select.Option>
-        )}
-      </Select>
+      {mask ? <div className="mk-pop-select-mask" onClick={this.trigger}></div> : null}
+      <div className="mk-pop-select-wrap" onClick={this.trigger}>
+        {value}
+        {value && !mask ? <CloseCircleFilled onClick={this.clear} /> : null}
+        <TableOutlined onClick={this.trigger}/>
+      </div>
       <Modal
         wrapClassName='mk-pop-select-modal'
         title={config.label}
@@ -344,7 +341,7 @@
         maskClosable={false}
         cancelText="鍏抽棴"
         width={config.popWidth < 100 ? config.popWidth + 'vw' : config.popWidth}
-        onCancel={() => this.setState({visible: false})}
+        onCancel={this.cancel}
         destroyOnClose
       >
         {config.searchKey ? <Search placeholder={placeholder} onSearch={this.searchOption} enterButton /> : null}
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/mkPopSelect/index.scss b/src/tabviews/custom/components/table/edit-table/normalTable/mkPopSelect/index.scss
index 9fb18d8..bc198f7 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/mkPopSelect/index.scss
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/mkPopSelect/index.scss
@@ -1,26 +1,76 @@
-.mk-pop-select {
-  .ant-select-selection__rendered {
-    margin-right: 30px;
+.mk-pop-select-wrap {
+  position: relative;
+  box-sizing: border-box;
+  margin: 0;
+  padding: 0 30px 0 11px;
+  color: rgba(0, 0, 0, 0.65);
+  font-size: 14px;
+  font-variant: tabular-nums;
+  list-style: none;
+  font-feature-settings: 'tnum';
+  position: relative;
+  display: inline-block;
+  width: 100%;
+  outline: 0;
+  border: 1px solid #d9d9d9;
+  border-top-width: 1.02px;
+  background: #ffffff;
+  user-select: none;
+  height: 32px;
+  cursor: pointer;
+  transition: all 0.3s;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  line-height: 30px;
+
+  .anticon-table {
+    padding: 7px;
+    color: rgba(0, 0, 0, 0.25);
+    transition: color 0.3s;
+    font-size: 14px;
+    position: absolute;
+    right: 0px;
+    top: 0px;
   }
-  .ant-select-selection__clear {
-    right: 35px;
+  .anticon-close-circle {
+    color: rgba(0, 0, 0, 0.25);
+    transition: all 0.3s;
+    padding: 7px;
+    opacity: 0;
+    position: absolute;
+    right: 25px;
   }
-  .ant-select-arrow {
-    transform: translate(8px, -9px);
-    .ant-select-arrow-icon {
-      padding: 7px;
-      color: rgba(0, 0, 0, 0.25);
-      transition: color 0.2s;
-      font-size: 14px;
-      svg {
-        transition: none!important;
-        transform: none!important;
-      }
-    }
-    .ant-select-arrow-icon:hover {
-      color: var(--mk-sys-color);
-    }
+  .anticon-close-circle:hover {
+    color: rgba(0, 0, 0, 0.45);
   }
+}
+.mk-pop-select-wrap:hover, .mk-pop-select-mask:hover + .mk-pop-select-wrap {
+  border-color: var(--mk-sys-color5);
+  box-shadow: 0 0 0 2px var(--mk-sys-color2);
+
+  .anticon-table {
+    color: var(--mk-sys-color);
+  }
+  .anticon-close-circle {
+    opacity: 1;
+  }
+}
+.mk-pop-select-mask {
+  position: absolute;
+  background: #ffffff;
+  top: 0px;
+  left: 0px;
+  right: 0px;
+  bottom: 0px;
+  height: auto;
+  border: 1px solid #d9d9d9;
+  cursor: pointer;
+}
+.mk-pop-select-mask + .mk-pop-select-wrap {
+  border: none;
+  box-shadow: none!important;
+  padding-left: 0px;
 }
 .mk-pop-select-modal {
   .ant-modal-body {
@@ -33,6 +83,9 @@
       margin-bottom: 20px;
     }
     table {
+      td {
+        padding: 12px 16px;
+      }
       tr:not(.ant-table-row-selected):hover > td {
         background-color: var(--mk-sys-color1);
       }
diff --git a/src/tabviews/zshare/mutilform/mkPopSelect/index.scss b/src/tabviews/zshare/mutilform/mkPopSelect/index.scss
index 9fb18d8..9663e3f 100644
--- a/src/tabviews/zshare/mutilform/mkPopSelect/index.scss
+++ b/src/tabviews/zshare/mutilform/mkPopSelect/index.scss
@@ -33,6 +33,9 @@
       margin-bottom: 20px;
     }
     table {
+      td {
+        padding: 12px 16px;
+      }
       tr:not(.ant-table-row-selected):hover > td {
         background-color: var(--mk-sys-color1);
       }

--
Gitblit v1.8.0