| | |
| | | class MainSearch extends Component { |
| | | static propTpyes = { |
| | | dict: PropTypes.object, // 字典项 |
| | | type: PropTypes.any, // type为"card"时,只可选单行或不选行 |
| | | setting: PropTypes.object, // 页面设置 |
| | | formlist: PropTypes.any, // 表单信息 |
| | | card: PropTypes.any, // 按钮信息 |
| | |
| | | |
| | | |
| | | UNSAFE_componentWillMount () { |
| | | const { card } = this.props |
| | | const { card, type } = this.props |
| | | |
| | | let _menulist = this.props.formlist.filter(form => form.key === 'linkmenu')[0] || '' |
| | | let _opentype = card.OpenType // 打开方式 |
| | |
| | | } else if (item.key === 'icon') { |
| | | item.options = btnIcons |
| | | } else if (item.key === 'Ot') { |
| | | if (card.pageTemplate === 'pay') { // 行级按钮、支付按钮,只能选单行 |
| | | if (type === 'card') { |
| | | item.options = this.state.requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value)) |
| | | } else if (card.pageTemplate === 'pay') { // 行级按钮、支付按钮,只能选单行 |
| | | item.options = this.state.requireOptions.filter(op => ['requiredSgl'].includes(op.value)) |
| | | } else if (['innerpage', 'blank', 'tab', 'popview', 'excelIn'].includes(_opentype)) { |
| | | item.options = this.state.requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value)) |
| | |
| | | * 3、切换标签类型,重置可选标签 |
| | | */ |
| | | openTypeChange = (key, value) => { |
| | | const { card } = this.props |
| | | const { card, type } = this.props |
| | | |
| | | if (key === 'OpenType') { |
| | | let _options = this.getOptions(value, this.state.interType, this.state.funcType, card.pageTemplate) |
| | |
| | | if (item.key === 'intertype') { |
| | | _fieldval.intertype = this.state.interType |
| | | } else if (item.key === 'Ot') { |
| | | if (['innerpage', 'blank', 'tab', 'popview'].includes(value)) { |
| | | if (type === 'card') { |
| | | item.options = this.state.requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value)) |
| | | } else if (['innerpage', 'blank', 'tab', 'popview'].includes(value)) { |
| | | item.options = this.state.requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value)) |
| | | _fieldval.Ot = 'requiredSgl' |
| | | } else if (value === 'excelIn') { |
| | |
| | | if (item.key === 'intertype') { |
| | | _fieldval.intertype = this.state.interType |
| | | } else if (item.key === 'Ot' && value === 'print') { |
| | | item.options = this.state.requireOptions |
| | | if (type === 'card') { |
| | | item.options = this.state.requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value)) |
| | | } else { |
| | | item.options = this.state.requireOptions |
| | | } |
| | | } |
| | | |
| | | return item |
| | |
| | | let _fieldval = {} |
| | | this.setState({ |
| | | formlist: this.state.formlist.map(item => { |
| | | if (item.key === 'Ot' && value === 'insert') { |
| | | if (item.key === 'Ot' && type === 'card') { |
| | | item.options = this.state.requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value)) |
| | | } else if (item.key === 'Ot' && value === 'insert') { |
| | | item.options = this.state.requireOptions.filter(op => ['notRequired', 'requiredSgl', 'required'].includes(op.value)) |
| | | } else if (item.key === 'Ot') { |
| | | item.options = this.state.requireOptions |
| | |
| | | if (value === 'pay') { |
| | | item.options = this.state.requireOptions.filter(op => ['requiredSgl'].includes(op.value)) |
| | | _fieldval.Ot = 'requiredSgl' |
| | | } else if (type === 'card') { |
| | | item.options = this.state.requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value)) |
| | | } else { |
| | | item.options = this.state.requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value)) |
| | | } |
| | |
| | | } |
| | | |
| | | onChange = (e, key) => { |
| | | const { type } = this.props |
| | | const { openType } = this.state |
| | | let value = e.target.value |
| | | |
| | |
| | | } else if (item.key === 'sysInterface') { |
| | | item.initVal = 'false' |
| | | } else if (item.key === 'Ot') { |
| | | item.options = this.state.requireOptions |
| | | if (type === 'card') { |
| | | item.options = this.state.requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value)) |
| | | } else { |
| | | item.options = this.state.requireOptions |
| | | } |
| | | } |
| | | return item |
| | | }) |
| | |
| | | |
| | | const getContent = () => { |
| | | if (card.eleType === 'text' || card.eleType === 'number') { |
| | | let val = `${card.prefix || ''}${card.value || ''}${card.postfix || ''}` |
| | | let val = `${card.prefix || ''}${card.datatype === 'static' ? (card.value || '') : (card.field || '')}${card.postfix || ''}` |
| | | return val |
| | | } else if (card.eleType === 'icon') { |
| | | return (<Icon type={card.icon}/>) |
| | |
| | | import './index.scss' |
| | | |
| | | const cardTypeOptions = { |
| | | text: ['eleType', 'datatype', 'value', 'format', 'fontSize', 'fontWeight', 'width', 'height', 'align', 'padding', 'prefix', 'postfix'], |
| | | number: ['eleType', 'datatype', 'value', 'format', 'fontSize', 'fontWeight', 'width', 'height', 'align', 'padding', 'prefix', 'postfix'], |
| | | text: ['eleType', 'datatype', 'format', 'fontSize', 'fontWeight', 'width', 'height', 'align', 'padding', 'prefix', 'postfix'], |
| | | number: ['eleType', 'datatype', 'format', 'fontSize', 'fontWeight', 'width', 'height', 'align', 'padding', 'prefix', 'postfix'], |
| | | picture: ['eleType', 'datatype', 'width', 'lenWidRadio', 'radius', 'padding', 'url'], |
| | | icon: ['eleType', 'icon', 'fontSize', 'width', 'height', 'align', 'padding', 'tooltip'], |
| | | link: ['eleType', 'datatype', 'value', 'labelfield', 'fontSize', 'width', 'height', 'align', 'padding', 'prefix'], |
| | | icon: ['eleType', 'icon', 'datatype', 'fontSize', 'width', 'align', 'padding'], |
| | | link: ['eleType', 'datatype', 'labelfield', 'fontSize', 'width', 'height', 'align', 'padding', 'prefix'], |
| | | slider: ['eleType', 'field', 'width', 'color', 'padding', 'maxValue'], |
| | | splitline: ['eleType', 'color', 'width', 'padding'], |
| | | } |
| | |
| | | |
| | | UNSAFE_componentWillMount () { |
| | | const { card, config } = this.props |
| | | |
| | | let _options = this.getOptions(card.eleType, card.datatype) |
| | | |
| | | this.setState({ |
| | |
| | | if (['text', 'number', 'picture', 'link'].includes(eleType)) { |
| | | if (datatype === 'dynamic') { |
| | | _options.push('field') |
| | | } else if (eleType !== 'picture') { |
| | | _options.push('value') |
| | | } |
| | | } else if (eleType === 'icon') { |
| | | if (datatype === 'dynamic') { |
| | | _options.push('field') |
| | | } else { |
| | | _options.push('tooltip') |
| | | } |
| | | } |
| | | |
| | |
| | | ] |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'icon', |
| | | label: '图标', |
| | | initVal: card.icon, |
| | | required: true, |
| | | options: [ |
| | | { value: 'question-circle', text: 'question-circle'}, |
| | | { value: 'alert', text: 'alert'}, |
| | | { value: 'cloud', text: 'cloud'}, |
| | | { value: 'eye', text: 'eye'}, |
| | | { value: 'eye-invisible', text: 'eye-invisible'}, |
| | | { value: 'android', text: 'android'}, |
| | | { value: 'apple', text: 'apple'}, |
| | | { value: 'windows', text: 'windows'}, |
| | | { value: 'ie', text: 'ie'}, |
| | | { value: 'chrome', text: 'chrome'}, |
| | | { value: 'github', text: 'github'}, |
| | | { value: 'aliwangwang', text: 'aliwangwang'}, |
| | | { value: 'dingding', text: 'dingding'}, |
| | | { value: 'wechat', text: 'wechat'}, |
| | | { value: 'alipay', text: 'alipay'}, |
| | | { value: 'weibo-square', text: 'weibo-square'}, |
| | | { value: 'weibo-circle', text: 'weibo-circle'}, |
| | | { value: 'taobao-circle', text: 'taobao-circle'}, |
| | | { value: 'weibo', text: 'weibo'}, |
| | | { value: 'twitter', text: 'twitter'}, |
| | | { value: 'youtube', text: 'youtube'}, |
| | | { value: 'alipay-circle', text: 'alipay-circle'}, |
| | | { value: 'taobao', text: 'taobao'}, |
| | | { value: 'skype', text: 'skype'}, |
| | | { value: 'qq', text: 'qq'}, |
| | | { value: 'gitlab', text: 'gitlab'}, |
| | | { value: 'zhihu', text: 'zhihu'}, |
| | | { value: 'slack', text: 'slack'}, |
| | | { value: 'sketch', text: 'sketch'}, |
| | | { value: 'yahoo', text: 'yahoo'}, |
| | | { value: 'reddit', text: 'reddit'}, |
| | | { value: 'dribbble', text: 'dribbble'}, |
| | | ] |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'datatype', |
| | | label: '数据类型', |
| | | initVal: card.datatype || 'dynamic', |
| | | initVal: card.datatype || 'static', |
| | | required: true, |
| | | options: [ |
| | | { value: 'dynamic', text: '动态' }, |
| | |
| | | label: '后缀', |
| | | initVal: card.postfix || '', |
| | | required: false |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'icon', |
| | | label: '图标', |
| | | initVal: card.icon, |
| | | required: true, |
| | | options: [ |
| | | { value: 'question-circle', text: 'question-circle'}, |
| | | { value: 'alert', text: 'alert'}, |
| | | { value: 'cloud', text: 'cloud'}, |
| | | { value: 'eye', text: 'eye'}, |
| | | { value: 'eye-invisible', text: 'eye-invisible'}, |
| | | { value: 'android', text: 'android'}, |
| | | { value: 'apple', text: 'apple'}, |
| | | { value: 'windows', text: 'windows'}, |
| | | { value: 'ie', text: 'ie'}, |
| | | { value: 'chrome', text: 'chrome'}, |
| | | { value: 'github', text: 'github'}, |
| | | { value: 'aliwangwang', text: 'aliwangwang'}, |
| | | { value: 'dingding', text: 'dingding'}, |
| | | { value: 'wechat', text: 'wechat'}, |
| | | { value: 'alipay', text: 'alipay'}, |
| | | { value: 'weibo-square', text: 'weibo-square'}, |
| | | { value: 'weibo-circle', text: 'weibo-circle'}, |
| | | { value: 'taobao-circle', text: 'taobao-circle'}, |
| | | { value: 'weibo', text: 'weibo'}, |
| | | { value: 'twitter', text: 'twitter'}, |
| | | { value: 'youtube', text: 'youtube'}, |
| | | { value: 'alipay-circle', text: 'alipay-circle'}, |
| | | { value: 'taobao', text: 'taobao'}, |
| | | { value: 'skype', text: 'skype'}, |
| | | { value: 'qq', text: 'qq'}, |
| | | { value: 'gitlab', text: 'gitlab'}, |
| | | { value: 'zhihu', text: 'zhihu'}, |
| | | { value: 'slack', text: 'slack'}, |
| | | { value: 'sketch', text: 'sketch'}, |
| | | { value: 'yahoo', text: 'yahoo'}, |
| | | { value: 'reddit', text: 'reddit'}, |
| | | { value: 'dribbble', text: 'dribbble'}, |
| | | ] |
| | | }, |
| | | { |
| | | type: 'text', |
| | |
| | | let _elements = elements.map(cell => { |
| | | if (cell.uuid === ele.uuid) { |
| | | ele.style = cell.style || {} |
| | | ele.btnstyle = cell.btnstyle || {} |
| | | if (ele.eleType === 'splitline' && cell.eleType !== 'splitline') { |
| | | ele.style.paddingTop = '5px' |
| | | ele.style.paddingBottom = '5px' |
| | | } |
| | | |
| | | return ele |
| | | } |
| | | return cell |
| | |
| | | if (cell.uuid === ele.uuid) { |
| | | ele.eleType = 'button' |
| | | ele.style = cell.style || {} |
| | | ele.btnstyle = cell.btnstyle || {} |
| | | return ele |
| | | } |
| | | |
| | |
| | | > |
| | | <ActionForm |
| | | dict={dict} |
| | | type="card" |
| | | card={card} |
| | | formlist={this.state.formlist} |
| | | inputSubmit={this.handleActionSubmit} |
| | |
| | | } |
| | | |
| | | render() { |
| | | const { card } = this.props |
| | | const { card, data } = this.props |
| | | |
| | | return ( |
| | | <Col span={card.setting.width || 6}> |
| | | <div className={'card-item'} style={card.style}> |
| | | <CardCellComponent elements={card.elements} updateElement={this.updateCard}/> |
| | | <div className="card-item-box" style={card.style}> |
| | | <CardCellComponent data={data} elements={card.elements}/> |
| | | </div> |
| | | </Col> |
| | | ) |
| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { is, fromJS } from 'immutable' |
| | | import { Button, Icon } from 'antd' |
| | | import { Button, Icon, Col, Tooltip } from 'antd' |
| | | |
| | | import zhCN from '@/locales/zh-CN/model.js' |
| | | import enUS from '@/locales/en-US/model.js' |
| | |
| | | static propTpyes = { |
| | | cards: PropTypes.object, // 菜单配置信息 |
| | | cardCell: PropTypes.object, |
| | | data: PropTypes.object, |
| | | elements: PropTypes.array, // 元素集 |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | getContent = (card) => { |
| | | const { data } = this.props |
| | | |
| | | if (card.eleType === 'text' || card.eleType === 'number') { |
| | | let val = `${card.prefix || ''}${card.value || ''}${card.postfix || ''}` |
| | | return <span key={card.uuid}>{val}</span> |
| | | } else if (card.eleType === 'icon') { |
| | | return (<Icon key={card.uuid} type={card.icon}/>) |
| | | } else if (card.eleType === 'slider') { |
| | | let val = '' |
| | | |
| | | if (card.datatype === 'static') { |
| | | val = card.value |
| | | } else if (data.hasOwnProperty(card.field)) { |
| | | val = data[card.field] |
| | | } |
| | | |
| | | if (val !== '') { |
| | | val = `${card.prefix || ''}${val}${card.postfix || ''}` |
| | | } |
| | | |
| | | return ( |
| | | <div className="ant-mk-slider" key={card.uuid}> |
| | | <div className="ant-mk-slider-rail"></div> |
| | | <div className="ant-mk-slider-track" style={{width: '30%', backgroundColor: card.color}}></div> |
| | | <div className="ant-mk-slider-handle" style={{left: '30%', borderColor: card.color}}></div> |
| | | </div> |
| | | <Col key={card.uuid} span={card.width}> |
| | | <div style={card.style}>{val}</div> |
| | | </Col> |
| | | ) |
| | | } else if (card.eleType === 'icon') { |
| | | let val = '' |
| | | |
| | | if (card.datatype === 'static') { |
| | | val = card.tooltip |
| | | } else if (data.hasOwnProperty(card.field)) { |
| | | val = data[card.field] |
| | | } |
| | | |
| | | return ( |
| | | <Col key={card.uuid} span={card.width}> |
| | | <div style={card.style}> |
| | | {val ? <Tooltip title={val}> |
| | | <Icon type={card.icon}/> |
| | | </Tooltip> : <Icon type={card.icon}/>} |
| | | </div> |
| | | </Col> |
| | | ) |
| | | } else if (card.eleType === 'slider') { |
| | | let val = 0 |
| | | |
| | | if (data.hasOwnProperty(card.field)) { |
| | | val = parseFloat(data[card.field]) |
| | | if (isNaN(val)) { |
| | | val = 0 |
| | | } |
| | | } |
| | | |
| | | val = val / card.maxValue * 100 |
| | | val = parseInt(val * 100) / 100 |
| | | |
| | | let _val = val |
| | | if (val > 100) { |
| | | _val = '100%' |
| | | } else { |
| | | _val = `${val}%` |
| | | } |
| | | |
| | | return ( |
| | | <Col key={card.uuid} span={card.width}> |
| | | <div style={card.style}> |
| | | <div className="ant-mk-slider"> |
| | | <div className="ant-mk-slider-rail"></div> |
| | | <div className="ant-mk-slider-track" style={{width: _val, backgroundColor: card.color}}></div> |
| | | <Tooltip title={val}> |
| | | <div className="ant-mk-slider-handle" style={{left: _val, borderColor: card.color}}></div> |
| | | </Tooltip> |
| | | </div> |
| | | </div> |
| | | </Col> |
| | | ) |
| | | } else if (card.eleType === 'picture') { |
| | | let _imagestyle = {} |
| | |
| | | } |
| | | |
| | | return ( |
| | | <div className="ant-mk-picture" key={card.uuid} style={_imagestyle}></div> |
| | | <Col key={card.uuid} span={card.width}> |
| | | <div style={card.style}> |
| | | <div className="ant-mk-picture" style={_imagestyle}></div> |
| | | </div> |
| | | </Col> |
| | | ) |
| | | } else if (card.eleType === 'splitline') { |
| | | return ( |
| | | <div className="ant-mk-splitline" key={card.uuid} style={{backgroundColor: card.color}}></div> |
| | | <Col key={card.uuid} span={card.width}> |
| | | <div style={card.style}> |
| | | <div className="ant-mk-splitline" style={{backgroundColor: card.color}}></div> |
| | | </div> |
| | | </Col> |
| | | ) |
| | | } else if (card.eleType === 'button') { |
| | | if (card.show === 'icon') { |
| | | return (card.icon ? <Button key={card.uuid} className={'mk-link mk-' + card.class} style={card.btnstyle} type="link"><Icon type={card.icon}/></Button> : null) |
| | | return ( |
| | | <Col key={card.uuid} span={card.width}> |
| | | <div style={card.style}> |
| | | <Button className={'mk-link mk-' + card.class} style={card.btnstyle} type="link"><Icon type={card.icon}/></Button> |
| | | </div> |
| | | </Col> |
| | | ) |
| | | } else if (card.show === 'link') { |
| | | return ( |
| | | <Button key={card.uuid} className={'mk-link mk-' + card.class} style={card.btnstyle} type="link">{card.label}{card.icon ? <Icon type={card.icon}/> : null}</Button> |
| | | <Col key={card.uuid} span={card.width}> |
| | | <div style={card.style}> |
| | | <Button className={'mk-link mk-' + card.class} style={card.btnstyle} type="link">{card.label}{card.icon ? <Icon type={card.icon}/> : null}</Button> |
| | | </div> |
| | | </Col> |
| | | ) |
| | | } else { |
| | | return ( |
| | | <Button |
| | | key={card.uuid} |
| | | className={'mk-btn mk-' + card.class} |
| | | icon={card.icon} |
| | | style={card.btnstyle} |
| | | > |
| | | {card.label} |
| | | </Button> |
| | | <Col key={card.uuid} span={card.width}> |
| | | <div style={card.style}> |
| | | <Button |
| | | className={'mk-btn mk-' + card.class} |
| | | icon={card.icon} |
| | | style={card.btnstyle} |
| | | > |
| | | {card.label} |
| | | </Button> |
| | | </div> |
| | | </Col> |
| | | ) |
| | | } |
| | | } |
| | |
| | | const { elements } = this.state |
| | | |
| | | return ( |
| | | <div className="model-menu-card-cell-list"> |
| | | <div className="card-cell-list"> |
| | | {elements.map(item => this.getContent(item))} |
| | | </div> |
| | | ) |
| | |
| | | .model-menu-card-cell-list { |
| | | position: relative; |
| | | .ant-form-item-label { |
| | | .anticon-question-circle { |
| | | color: #c49f47; |
| | | position: absolute; |
| | | left: 5px; |
| | | top: 5px; |
| | | } |
| | | } |
| | | |
| | | .card-detail-row > .anticon-plus { |
| | | color: #26C281; |
| | | font-size: 16px; |
| | | padding: 5px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .card-cell { |
| | | border-style: solid; |
| | | border-width: 0; |
| | | } |
| | | .card-button-cell { |
| | | float: left; |
| | | button { |
| | | background-size: cover; |
| | | background-position: center center; |
| | | span { |
| | | font-style: inherit; |
| | | text-decoration: inherit; |
| | | } |
| | | } |
| | | } |
| | | .card-cell:hover { |
| | | box-shadow: 0px 0px 1px #d8d8d8; |
| | | } |
| | | .ant-slider { |
| | | margin: 0px; |
| | | } |
| | | } |
| | |
| | | import UtilsDM from '@/utils/utils-datamanage.js' |
| | | import zhCN from '@/locales/zh-CN/main.js' |
| | | import enUS from '@/locales/en-US/main.js' |
| | | import preImg from '@/assets/img/prev.png' |
| | | import nextImg from '@/assets/img/next.png' |
| | | import './index.scss' |
| | | |
| | | const CardItem = asyncComponent(() => import('../cardItem')) |
| | |
| | | state = { |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, // 字典 |
| | | config: null, // 图表配置信息 |
| | | pageIndex: 1, |
| | | empty: false, |
| | | loading: false, // 数据加载状态 |
| | | data: null // 数据 |
| | | data: null, // 数据 |
| | | total: null |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | |
| | | |
| | | async loadData () { |
| | | const { mainSearch, BID, menuType, dataManager } = this.props |
| | | const { config, arr_field } = this.state |
| | | const { config, arr_field, pageIndex } = this.state |
| | | |
| | | let searches = [] |
| | | if (mainSearch && mainSearch.length > 0) { // 主表搜索条件 |
| | |
| | | }) |
| | | |
| | | let _orderBy = config.setting.order || '' |
| | | let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, config.setting.pageSize, BID, menuType, dataManager) |
| | | let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, config.setting.pageSize, BID, menuType, dataManager) |
| | | |
| | | let result = await Api.genericInterface(param) |
| | | if (result.status) { |
| | | this.setState({ |
| | | data: result.data, |
| | | total: result.total, |
| | | loading: false |
| | | }) |
| | | } else { |
| | |
| | | } |
| | | } |
| | | |
| | | prevPage = () => { |
| | | const { pageIndex } = this.state |
| | | |
| | | if (pageIndex === 1) return |
| | | |
| | | this.setState({ |
| | | pageIndex: pageIndex - 1 |
| | | }, () => { |
| | | this.loadData() |
| | | }) |
| | | } |
| | | nextPage = () => { |
| | | const { config, pageIndex, total } = this.state |
| | | let _total = config.setting.pageSize * pageIndex |
| | | |
| | | if (_total >= total) return |
| | | |
| | | this.setState({ |
| | | pageIndex: pageIndex + 1 |
| | | }, () => { |
| | | this.loadData() |
| | | }) |
| | | } |
| | | |
| | | render() { |
| | | const { config, empty, loading, data } = this.state |
| | | const { config, empty, loading, data, pageIndex, total } = this.state |
| | | |
| | | let _total = config.setting.pageSize * pageIndex |
| | | let pageable = config.pageable && config.setting.laypage |
| | | if ((pageIndex === 1 && total <= _total) || !data) { |
| | | pageable = false |
| | | } |
| | | |
| | | return ( |
| | | <div className="custom-card-box" style={config.style}> |
| | |
| | | <Spin /> |
| | | </div> : null |
| | | } |
| | | {data && data.length > 0 ? data.map((item, index) => ( |
| | | <CardItem key={index} card={config.subcards[0]} cards={config} data={item} /> |
| | | )) : null} |
| | | {pageable ? <div className={'prev-page ' + (pageIndex === 1 ? 'disabled' : '')} onClick={this.prevPage}><div><div><img src={preImg} alt=""/></div></div></div> : null} |
| | | {data && data.length > 0 ? <div className="card-row-list"> |
| | | {data.map((item, index) => ( |
| | | <CardItem key={index} card={config.subcards[0]} cards={config} data={item} /> |
| | | ))} |
| | | </div> : null} |
| | | {pageable ? <div className={'prev-page ' + (total <= _total ? 'disabled' : '')} onClick={this.nextPage}><div><div><img src={nextImg} alt=""/></div></div></div> : null} |
| | | {empty ? <Empty description={false}/> : null} |
| | | </div> |
| | | ) |
| | |
| | | .custom-card-box { |
| | | background: #ffffff; |
| | | min-height: 100px; |
| | | display: flex; |
| | | position: relative; |
| | | |
| | | .card-item { |
| | | .prev-page { |
| | | width: 20px; |
| | | div { |
| | | height: 100%; |
| | | display: table; |
| | | div { |
| | | display: table-cell; |
| | | vertical-align: middle; |
| | | } |
| | | } |
| | | img { |
| | | width: 15px; |
| | | height: 100px; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | .prev-page.disabled { |
| | | img { |
| | | cursor: not-allowed; |
| | | } |
| | | } |
| | | .card-row-list::after { |
| | | content: ' '; |
| | | display: block; |
| | | clear: both; |
| | | } |
| | | .card-row-list { |
| | | flex: 10; |
| | | } |
| | | .card-item-box { |
| | | border-style: solid; |
| | | .card-cell-list::after { |
| | | content: ' '; |
| | | display: block; |
| | | clear: both; |
| | | } |
| | | } |
| | | |
| | | .card-cell-list { |
| | | position: relative; |
| | | |
| | | .ant-mk-slider { |
| | | box-sizing: border-box; |
| | | margin: 0; |
| | | color: rgba(0, 0, 0, 0.65); |
| | | font-size: 14px; |
| | | font-variant: tabular-nums; |
| | | line-height: 1.5; |
| | | list-style: none; |
| | | font-feature-settings: 'tnum', "tnum"; |
| | | position: relative; |
| | | height: 12px; |
| | | padding: 3px 0; |
| | | cursor: pointer; |
| | | touch-action: none; |
| | | |
| | | .ant-mk-slider-track { |
| | | height: 7px; |
| | | position: absolute; |
| | | background-color: #91d5ff; |
| | | border-radius: 4px; |
| | | transition: background-color 0.3s; |
| | | } |
| | | .ant-mk-slider-rail { |
| | | height: 7px; |
| | | position: absolute; |
| | | width: 100%; |
| | | background-color: #f5f5f5; |
| | | border-radius: 2px; |
| | | transition: background-color 0.3s; |
| | | } |
| | | .ant-mk-slider-handle { |
| | | position: absolute; |
| | | width: 14px; |
| | | height: 14px; |
| | | margin-top: -4px; |
| | | margin-left: -7px; |
| | | background-color: #fff; |
| | | border: solid 2px #91d5ff; |
| | | border-radius: 50%; |
| | | cursor: pointer; |
| | | transition: border-color 0.3s, box-shadow 0.6s, transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28), -webkit-box-shadow 0.6s, -webkit-transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28); |
| | | } |
| | | } |
| | | .ant-mk-splitline { |
| | | height: 1px; |
| | | } |
| | | .ant-slider { |
| | | margin: 0px; |
| | | } |
| | | } |
| | | |
| | | .ant-empty { |
| | |
| | | } |
| | | .loading-mask { |
| | | position: absolute; |
| | | left: 20px; |
| | | left: 40px; |
| | | top: 0; |
| | | right: 20px; |
| | | bottom: 30px; |
| | | right: 40px; |
| | | bottom: 0px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .custom-card-box::after { |
| | | content: ' '; |
| | | display: block; |
| | | clear: both; |
| | | } |
| | |
| | | let _declarefields = [] |
| | | |
| | | // 获取字段键值对 |
| | | if (formdata) { |
| | | formdata.forEach(form => { |
| | | if (form.type === 'text') { // 特殊字段替换 |
| | | form.value = form.value.replace(/^(\s*)@appkey@(\s*)$/ig, appkey) |
| | | form.value = form.value.replace(/^(\s*)@SessionUid@(\s*)$/ig, sessionUid) |
| | | form.value = form.value.replace(/^(\s*)@bid@(\s*)$/ig, BID) |
| | | } |
| | | formdata && formdata.forEach(form => { |
| | | if (form.type === 'text') { // 特殊字段替换 |
| | | form.value = form.value.replace(/^(\s*)@appkey@(\s*)$/ig, appkey) |
| | | form.value = form.value.replace(/^(\s*)@SessionUid@(\s*)$/ig, sessionUid) |
| | | form.value = form.value.replace(/^(\s*)@bid@(\s*)$/ig, BID) |
| | | } |
| | | |
| | | _formFieldValue[form.key] = form.value |
| | | let _key = form.key.toLowerCase() |
| | | _formFieldValue[form.key] = form.value |
| | | let _key = form.key.toLowerCase() |
| | | |
| | | if (!_initvars.includes(_key)) { |
| | | _initvars.push(_key) |
| | | if (!_initvars.includes(_key)) { |
| | | _initvars.push(_key) |
| | | |
| | | if (form.type === 'number') { |
| | | let val = form.value |
| | | if (typeof(val) !== 'number') { |
| | | val = parseFloat(val) |
| | | if (isNaN(val)) { |
| | | val = 0 |
| | | } |
| | | if (form.type === 'number') { |
| | | let val = form.value |
| | | if (typeof(val) !== 'number') { |
| | | val = parseFloat(val) |
| | | if (isNaN(val)) { |
| | | val = 0 |
| | | } |
| | | _initfields.push(`@${_key}=${val}`) |
| | | } else { |
| | | _initfields.push(`@${_key}='${form.value}'`) |
| | | } |
| | | _initfields.push(`@${_key}=${val}`) |
| | | } else { |
| | | _initfields.push(`@${_key}='${form.value}'`) |
| | | } |
| | | |
| | | if (!_vars.includes(_key)) { |
| | | _vars.push(_key) |
| | | } |
| | | |
| | | if (!_vars.includes(_key)) { |
| | | _vars.push(_key) |
| | | |
| | | if (form.fieldlen && form.fieldlen > 2048) { |
| | | form.fieldlen = 'max' |
| | | } |
| | | |
| | | let _type = `nvarchar(${form.fieldlen})` |
| | | |
| | | if (form.type.match(/date/ig)) { |
| | | _type = 'datetime' |
| | | } else if (form.type === 'number') { |
| | | _type = `decimal(18,${form.fieldlen})` |
| | | } |
| | | |
| | | _declarefields.push(`@${_key} ${_type}`) |
| | | if (form.fieldlen && form.fieldlen > 2048) { |
| | | form.fieldlen = 'max' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | let _type = `nvarchar(${form.fieldlen})` |
| | | |
| | | if (form.type.match(/date/ig)) { |
| | | _type = 'datetime' |
| | | } else if (form.type === 'number') { |
| | | _type = `decimal(18,${form.fieldlen})` |
| | | } |
| | | |
| | | _declarefields.push(`@${_key} ${_type}`) |
| | | } |
| | | }) |
| | | |
| | | // 添加数据中字段,表单值优先(按钮不选行或多行拼接时跳过) |
| | | if (data && btn.Ot !== 'notRequired' && btn.Ot !== 'requiredOnce') { |
| | |
| | | |
| | | // 单号生成,使用上级id(BID)或列表数据,声明变量(检验) |
| | | let _billcodesSql = '' |
| | | if (verify.billcodes && verify.billcodes.length > 0) { |
| | | if (formdata && verify.billcodes && verify.billcodes.length > 0) { |
| | | let keys = formdata.map(item => item.key.toLowerCase()) // 表单字段 |
| | | |
| | | verify.billcodes.forEach(item => { |
| | | if (!keys.includes(item.field.toLowerCase())) return // 表单中不含单号生成字段 |
| | | |
| | | let _ModularDetailCode = '' |
| | | let _lpline = '' |
| | | if (item.TypeCharOne === 'Lp') { |