| | |
| | | import MarkForm from './markform' |
| | | import MkIcon from '@/components/mk-icon' |
| | | import { minkeIconSystem } from '@/utils/option.js' |
| | | import zhCN from '@/locales/zh-CN/model.js' |
| | | import enUS from '@/locales/en-US/model.js' |
| | | import '@/assets/css/table.scss' |
| | | import './index.scss' |
| | | |
| | | const EditTable = asyncComponent(() => import('@/templates/zshare/editTable')) |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | marks: null, |
| | | columns: null, |
| | | visible: false, |
| | |
| | | editable: true, |
| | | inputType: 'cascader', |
| | | options: [], |
| | | rules: [{ |
| | | validator: (rule, value, callback) => { |
| | | if (value[1] === 'dynamic' && value[0] === value[2]) { |
| | | callback('对比字段不可相同!') |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | }], |
| | | render: text => { |
| | | return ( |
| | | <div>{text[0]} VS {text[2] ? text[2] : '静态值'}</div> |
| | |
| | | width: '16%', |
| | | editable: true, |
| | | required: false, |
| | | inputType: 'input' |
| | | inputType: 'input', |
| | | render: (text, record) => { |
| | | if (!text) return '' |
| | | if (record.field && record.field[1] === 'dynamic') { |
| | | return <span title="对比动态值时,对比值无效。" style={{textDecoration: 'line-through'}}>{text}</span> |
| | | } else { |
| | | return text |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | title: '颜色', |
| | |
| | | _columns.unshift({field: '$Index', label: '序号'}) |
| | | |
| | | let options = _columns.map(col => { |
| | | let label = `${col.field}(${col.label})` |
| | | return { |
| | | value: col.field, |
| | | label: col.label, |
| | | label: label, |
| | | isLeaf: false, |
| | | children: [ |
| | | { |
| | |
| | | value: 'dynamic', |
| | | label: '动态值', |
| | | children: _columns.map(cell => { |
| | | let _label = `${cell.field}(${cell.label})` |
| | | return { |
| | | value: cell.field, |
| | | label: cell.label |
| | | label: _label |
| | | } |
| | | }) |
| | | } |
| | |
| | | if (item.signType && item.signType[0] === 'icon') { |
| | | item.signType = [item.signType[0] + item.signType[1], item.signType[2], item.signType[3]] |
| | | } |
| | | if (!item.uuid) { |
| | | item.uuid = Utils.getuuid() |
| | | } |
| | | return item |
| | | }) |
| | | |
| | |
| | | } |
| | | |
| | | render() { |
| | | const { marks, markColumns, visible, options, signs, dict } = this.state |
| | | const { marks, markColumns, visible, options, signs } = this.state |
| | | |
| | | return ( |
| | | <div style={{display: 'inline-block'}}> |
| | | <AntDesignOutlined className="profile" title="标记" onClick={this.resetMark} /> |
| | | <Modal |
| | | wrapClassName="model-table-column-mark-modal" |
| | | title={'标记设置'} |
| | | title="标记设置" |
| | | visible={visible} |
| | | width={'75vw'} |
| | | maskClosable={false} |
| | | okText={dict['model.submit']} |
| | | okText="提交" |
| | | onOk={this.markSubmit} |
| | | onCancel={() => { this.setState({ visible: false }) }} |
| | | destroyOnClose |
| | | > |
| | | <MarkForm field={this.props.field} dict={dict} signs={signs} columns={options} markChange={this.markChange}/> |
| | | <MarkForm field={this.props.field} signs={signs} columns={options} markChange={this.markChange}/> |
| | | <Col style={{fontSize: '12px', color: '#757575', paddingLeft: '10px'}} span={24}>注:从上到下,匹配第一个符合条件的标记。</Col> |
| | | <EditTable actions={['edit', 'move', 'del']} data={marks} columns={markColumns} onChange={(marks) => this.setState({marks})}/> |
| | | </Modal> |