| | |
| | | trdItem.OpenType = PageParam.OpenType || 'newtab' |
| | | trdItem.hidden = PageParam.hidden || 'false' |
| | | trdItem.menuColor = PageParam.menuColor || '' |
| | | trdItem.urlFields = PageParam.urlFields || '' |
| | | |
| | | if (trdItem.type === 'NewPage') { |
| | | trdItem.OpenType = 'newpage' |
| | |
| | | let linkTypes = [ |
| | | { value: 'tel', text: '电话' }, |
| | | { value: 'email', text: '邮箱' }, |
| | | { value: 'linkmenu', text: '关联菜单' }, |
| | | { value: 'download', text: '下载' }, |
| | | { value: 'other', text: '其他' } |
| | | ] |
| | |
| | | card.linkType = '' |
| | | card.linkurl = '' |
| | | } |
| | | } else if (card.linkType === 'linkmenu') { |
| | | if (appType !== 'mob' && appType !== 'pc') { |
| | | card.link = '' |
| | | card.linkType = '' |
| | | card.linkurl = '' |
| | | card.linkmenu = '' |
| | | // } else if (card.linkType === 'linkmenu') { |
| | | // if (appType !== 'mob' && appType !== 'pc') { |
| | | // card.link = '' |
| | | // card.linkType = '' |
| | | // card.linkurl = '' |
| | | // card.linkmenu = '' |
| | | // } |
| | | } |
| | | |
| | | let menulist = sessionStorage.getItem('fstMenuList') |
| | | |
| | | if (appType === '' && menulist) { |
| | | try { |
| | | menulist = JSON.parse(menulist) |
| | | } catch (e) { |
| | | menulist = [] |
| | | } |
| | | } else { |
| | | menulist = [] |
| | | } |
| | | |
| | | let appMenus = sessionStorage.getItem('appMenus') |
| | |
| | | forbid: isHeader |
| | | }, |
| | | { |
| | | type: linkTypes.length > 4 ? 'select' : 'radio', |
| | | type: 'select', |
| | | key: 'linkType', |
| | | label: '链接类型', |
| | | initVal: card.linkType || 'other', |
| | |
| | | forbid: !['pc', 'mob'].includes(appType) |
| | | }, |
| | | { |
| | | type: 'cascader', |
| | | key: 'linkmenu', |
| | | label: '关联菜单', |
| | | initVal: card.linkmenu || [], |
| | | required: true, |
| | | options: menulist, |
| | | forbid: ['pc', 'mob'].includes(appType) |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'linkurl', |
| | | label: '链接地址', |
| | |
| | | |
| | | if (this.record.type === 'text' || this.record.type === 'number') { |
| | | if (this.record.perspective === 'linkmenu') { |
| | | _options.push('linkmenu', 'linkfields', 'open') |
| | | _options.push('linkmenu', 'open') |
| | | } else if (this.record.perspective === 'linkurl') { |
| | | _options.push('linkurl', 'linkfields', 'open') |
| | | } |
| | |
| | | |
| | | if (this.record.type === 'text' || this.record.type === 'number') { |
| | | if (this.record.perspective === 'linkmenu') { |
| | | _options.push('linkmenu', 'linkfields', 'open') |
| | | _options.push('linkmenu', 'open') |
| | | } else if (this.record.perspective === 'linkurl') { |
| | | _options.push('linkurl', 'linkfields', 'open') |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | if (cell.linkmenu && cell.linkmenu.length > 0) { |
| | | let menu_id = cell.linkmenu.pop() |
| | | cell.linkThdMenu = window.GLOB.mkThdMenus.get(menu_id) || '' |
| | | if (!cell.linkThdMenu) { |
| | | cell.link = '' |
| | | } |
| | | } |
| | | |
| | | if (cell.marks && cell.marks.length === 0) { |
| | | cell.marks = null |
| | | } |
| | | if (cell.anchors && cell.anchors.length === 0) { |
| | | cell.anchors = null |
| | | } |
| | | |
| | | return true |
| | | }) |
| | |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | | import { getMark } from '@/utils/utils.js' |
| | | import MkIcon from '@/components/mk-icon' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import Encrypts from '@/components/encrypts' |
| | | import './index.scss' |
| | | |
| | |
| | | openNewView = (e, card) => { |
| | | const { cardCell, data, cards } = this.props |
| | | |
| | | if (data.$disabled) return |
| | | e.stopPropagation() |
| | | |
| | | if (card.anchors && card.anchors.length > 0) { |
| | | if (card.anchors) { |
| | | let id = card.anchors[card.anchors.length - 1] |
| | | let node = document.getElementById('anchor' + id) |
| | | node && node.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'nearest'}) |
| | | } |
| | | |
| | | if (!card.link || (card.linkType === 'qywx' || card.linkType === 'linkmenu')) return |
| | | e.stopPropagation() |
| | | if (card.linkType === 'qywx') return |
| | | if (card.linkType === 'linkmenu') { |
| | | if (card.linkThdMenu) { |
| | | let __param = { |
| | | $BID: data.$$uuid |
| | | } |
| | | |
| | | if (card.field) { |
| | | __param.$searchkey = card.field |
| | | __param.$searchval = data[card.field] || '' |
| | | } |
| | | |
| | | if (card.joint === 'true' && card.linkThdMenu.urlFields) { |
| | | let lower = {} |
| | | Object.keys(data).forEach(key => { |
| | | lower[key.toLowerCase()] = data[key] |
| | | }) |
| | | |
| | | card.linkThdMenu.urlFields.split(',').forEach(field => { |
| | | __param[field] = lower[field.toLowerCase()] || '' |
| | | }) |
| | | } |
| | | |
| | | let tabmenu = card.linkThdMenu |
| | | |
| | | tabmenu.param = __param |
| | | |
| | | MKEmitter.emit('modifyTabs', tabmenu, true) |
| | | } |
| | | return |
| | | } |
| | | |
| | | let url = '' |
| | | |
| | |
| | | } |
| | | |
| | | if (card.copyable === 'true') { |
| | | if (card.link || (card.anchors && card.anchors.length > 0)) { |
| | | if (card.link || card.anchors) { |
| | | let url = orival |
| | | |
| | | if (card.link === 'static') { |
| | |
| | | } |
| | | className = mark.signType |
| | | } |
| | | |
| | | if (card.link || (card.anchors && card.anchors.length > 0)) { |
| | | _style.cursor = 'pointer' |
| | | } |
| | | |
| | | if (card.bgImage && data[card.bgImage]) { |
| | | _style.backgroundImage = `url('${data[card.bgImage]}')` |
| | | } |
| | | |
| | | contents.push( |
| | | <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}> |
| | | <div style={_style} onClick={(e) => {this.openNewView(e, card)}}> |
| | | {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : |
| | | <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>} |
| | | |
| | | if (!data.$disabled && (card.link || card.anchors)) { |
| | | _style.cursor = 'pointer' |
| | | contents.push( |
| | | <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}> |
| | | <div style={_style} onClick={(e) => {this.openNewView(e, card)}}> |
| | | {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : |
| | | <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | ) |
| | | ) |
| | | } else { |
| | | contents.push( |
| | | <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}> |
| | | <div style={_style}> |
| | | {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : |
| | | <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>} |
| | | </div> |
| | | </div> |
| | | ) |
| | | } |
| | | } else if (card.eleType === 'number') { |
| | | let val = '' |
| | | let _style = {...card.style} |
| | |
| | | _imagestyle.backgroundPosition = _style.backgroundPosition || 'center' |
| | | _imagestyle.backgroundRepeat = _style.backgroundRepeat || 'no-repeat' |
| | | |
| | | if (card.link) { |
| | | _style.cursor = 'pointer' |
| | | } |
| | | |
| | | if (_style.position === 'absolute') { |
| | | _style.width = '100%' |
| | | } |
| | | |
| | | |
| | | let scale = url && card.scale === 'true' |
| | | let urls = url ? url.split(',').filter(Boolean) : [''] |
| | | |
| | | urls.forEach((u, i) => { |
| | | contents.push(<div className={'ant-col ant-col-' + card.width} key={card.uuid + i} style={_style_} span={card.width}> |
| | | <div style={_style} onClick={(e) => {this.openNewView(e, card)}}> |
| | | <MkPicture style={_imagestyle} lostTip={card.lostTip !== 'false'} scale={scale} url={u} urls={urls}/> |
| | | </div> |
| | | </div>) |
| | | }) |
| | | |
| | | if (card.link && !data.$disabled) { |
| | | _style.cursor = 'pointer' |
| | | urls.forEach((u, i) => { |
| | | contents.push(<div className={'ant-col ant-col-' + card.width} key={card.uuid + i} style={_style_} span={card.width}> |
| | | <div style={_style} onClick={(e) => {this.openNewView(e, card)}}> |
| | | <MkPicture style={_imagestyle} lostTip={card.lostTip !== 'false'} scale={scale} url={u} urls={urls}/> |
| | | </div> |
| | | </div>) |
| | | }) |
| | | } else { |
| | | urls.forEach((u, i) => { |
| | | contents.push(<div className={'ant-col ant-col-' + card.width} key={card.uuid + i} style={_style_} span={card.width}> |
| | | <div style={_style}> |
| | | <MkPicture style={_imagestyle} lostTip={card.lostTip !== 'false'} scale={scale} url={u} urls={urls}/> |
| | | </div> |
| | | </div>) |
| | | }) |
| | | } |
| | | } else if (card.eleType === 'splitline') { |
| | | let _borderWidth = card.borderWidth === undefined ? 1 : card.borderWidth |
| | | _style_ = _style_ || {} |
| | |
| | | '5:1': '20%', '6:1': '16.67%', '7:1': '14.29%', '8:1': '12.5%', '9:1': '11.11%', |
| | | '10:1': '10%', '3:4': '133.33%', '2:3': '150%', '9:16': '177.78%' |
| | | } |
| | | |
| | | // 字段透视 |
| | | const triggerLink = (e, item, record) => { |
| | | e.stopPropagation() |
| | | |
| | | if (item.linkThdMenu) { |
| | | let __param = { |
| | | $searchkey: item.field, |
| | | $searchval: record[item.field] || '', |
| | | $BID: record.$$uuid |
| | | } |
| | | |
| | | if (item.linkThdMenu.urlFields) { |
| | | let lower = {} |
| | | Object.keys(record).forEach(key => { |
| | | lower[key.toLowerCase()] = record[key] |
| | | }) |
| | | |
| | | item.linkThdMenu.urlFields.split(',').forEach(field => { |
| | | __param[field] = lower[field.toLowerCase()] || '' |
| | | }) |
| | | } else if (item.linkfields && item.linkfields.length > 0) { |
| | | item.linkfields.forEach(field => { |
| | | __param[field] = record[field] || '' |
| | | }) |
| | | } |
| | | |
| | | let tabmenu = item.linkThdMenu |
| | | |
| | | tabmenu.param = __param |
| | | |
| | | MKEmitter.emit('modifyTabs', tabmenu, true) |
| | | } else if (item.linkurl) { |
| | | let src = item.linkurl |
| | | |
| | | let con = '?' |
| | | |
| | | if (/\?/ig.test(src)) { |
| | | con = '&' |
| | | } |
| | | |
| | | if (item.linkfields && item.linkfields.length > 0) { |
| | | item.linkfields.forEach(field => { |
| | | if (field.toLowerCase() === 'id') return |
| | | con += `${field}=${record[field] || ''}&` |
| | | }) |
| | | } |
| | | |
| | | src = src + `${con}id=${record.$$uuid}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}` |
| | | |
| | | window.open(src) |
| | | } |
| | | } |
| | | |
| | | class BodyRow extends React.Component { |
| | | shouldComponentUpdate (nextProps, nextState) { |
| | | return !is(fromJS(this.props.data), fromJS(nextProps.data)) || this.props.className !== nextProps.className |
| | |
| | | } |
| | | |
| | | render() { |
| | | let { col, config, record, className, style, triggerLink, ...resProps } = this.props |
| | | let { col, config, record, className, style, ...resProps } = this.props |
| | | |
| | | if (!col) return (<td {...resProps} className={className} style={style}/>) |
| | | |
| | |
| | | resProps.children = content |
| | | |
| | | if (!record.$disabled && (col.linkThdMenu || col.linkurl)) { |
| | | style = style || {} |
| | | style.cursor = 'pointer' |
| | | |
| | | return (<td {...resProps} className={className} onDoubleClick={() => triggerLink(col, record)} style={style}/>) |
| | | return (<td {...resProps} className={className + ' clickable'} onClick={(e) => triggerLink(e, col, record)} style={style}/>) |
| | | } |
| | | } else if (col.type === 'number') { |
| | | let content = '' |
| | |
| | | resProps.children = content |
| | | |
| | | if (!record.$disabled && (col.linkThdMenu || col.linkurl)) { |
| | | style = style || {} |
| | | style.cursor = 'pointer' |
| | | |
| | | return (<td {...resProps} className={className} onDoubleClick={() => triggerLink(col, record)} style={style}/>) |
| | | return (<td {...resProps} className={className + ' clickable'} onClick={(e) => triggerLink(e, col, record)} style={style}/>) |
| | | } |
| | | } else if (col.type === 'picture') { |
| | | let photos = '' |
| | |
| | | record, |
| | | col: item, |
| | | config: item.type === 'custom' ? {setting, columns: fields} : null, |
| | | triggerLink: this.triggerLink |
| | | }) |
| | | } |
| | | } |
| | |
| | | |
| | | MKEmitter.emit('resetSelectLine', MenuID, '', '') |
| | | MKEmitter.emit('syncBalconyData', MenuID, [], false) |
| | | } |
| | | } |
| | | |
| | | // 字段透视 |
| | | triggerLink = (item, record) => { |
| | | let __param = { |
| | | $searchkey: item.field, |
| | | $searchval: record[item.field] || '', |
| | | $BID: record.$$uuid |
| | | } |
| | | |
| | | if (item.linkfields && item.linkfields.length > 0) { |
| | | item.linkfields.forEach(field => { |
| | | __param[field] = record[field] || '' |
| | | }) |
| | | } |
| | | |
| | | if (item.linkThdMenu) { |
| | | let tabmenu = item.linkThdMenu |
| | | |
| | | tabmenu.param = __param |
| | | |
| | | MKEmitter.emit('modifyTabs', tabmenu, true) |
| | | } else if (item.linkurl) { |
| | | let src = item.linkurl |
| | | |
| | | let con = '?' |
| | | |
| | | if (/\?/ig.test(src)) { |
| | | con = '&' |
| | | } |
| | | |
| | | if (item.linkfields && item.linkfields.length > 0) { |
| | | item.linkfields.forEach(field => { |
| | | if (field.toLowerCase() === 'id') return |
| | | con += `${field}=${record[field] || ''}&` |
| | | }) |
| | | } |
| | | |
| | | src = src + `${con}id=${record.$$uuid}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}` |
| | | |
| | | window.open(src) |
| | | } |
| | | } |
| | | |
| | |
| | | font-size: inherit; |
| | | } |
| | | |
| | | .clickable { |
| | | color: var(--mk-sys-color); |
| | | cursor: pointer; |
| | | } |
| | | .clickable:hover { |
| | | text-decoration: underline; |
| | | } |
| | | |
| | | .mk-disabled { |
| | | color: #bcbcbc; |
| | | cursor: not-allowed; |
| | |
| | | if (cell.marks && cell.marks.length === 0) { |
| | | cell.marks = null |
| | | } |
| | | if (cell.anchors && cell.anchors.length === 0) { |
| | | cell.anchors = null |
| | | } |
| | | |
| | | if (cell.linkmenu && cell.linkmenu.length > 0) { |
| | | let menu_id = cell.linkmenu.pop() |
| | | cell.linkThdMenu = window.GLOB.mkThdMenus.get(menu_id) || '' |
| | | if (!cell.linkThdMenu) { |
| | | cell.link = '' |
| | | } |
| | | } |
| | | |
| | | if (['text', 'number', 'formula'].includes(cell.eleType)) { |
| | | if (!cell.height) { |
| | |
| | | if (cell.marks && cell.marks.length === 0) { |
| | | cell.marks = null |
| | | } |
| | | if (cell.anchors && cell.anchors.length === 0) { |
| | | cell.anchors = null |
| | | } |
| | | |
| | | if (cell.linkmenu && cell.linkmenu.length > 0) { |
| | | let menu_id = cell.linkmenu.pop() |
| | | cell.linkThdMenu = window.GLOB.mkThdMenus.get(menu_id) || '' |
| | | if (!cell.linkThdMenu) { |
| | | cell.link = '' |
| | | } |
| | | } |
| | | |
| | | if (['text', 'number', 'formula'].includes(cell.eleType)) { |
| | | if (!cell.height) { |
| | |
| | | display: inline-block; |
| | | float: none; |
| | | vertical-align: top; |
| | | text-align: left; |
| | | } |
| | | .ant-checkbox-wrapper { |
| | | color: rgba(0, 0, 0, 0.85); |
| | |
| | | } |
| | | |
| | | let interfaces = getFuncsAndInters(config) |
| | | let urlFields = config.urlFields ? config.urlFields.join(',') : '' |
| | | |
| | | let param = { |
| | | func: 'sPC_TrdMenu_AddUpt', |
| | |
| | | EasyCode: config.easyCode || '', |
| | | Template: 'CustomPage', |
| | | MenuName: config.MenuName || '', |
| | | PageParam: JSON.stringify({Template: 'CustomPage', OpenType: config.OpenType || 'newtab', hidden: config.hidden || 'false', menuColor: config.menuColor || '', interfaces}), |
| | | PageParam: JSON.stringify({Template: 'CustomPage', OpenType: config.OpenType || 'newtab', hidden: config.hidden || 'false', menuColor: config.menuColor || '', interfaces, urlFields}), |
| | | open_edition: config.open_edition, |
| | | LText: '', |
| | | LTexttb: '', |
| | |
| | | } |
| | | |
| | | let interfaces = getFuncsAndInters(config) |
| | | let urlFields = config.urlFields ? config.urlFields.join(',') : '' |
| | | |
| | | let param = { |
| | | func: 'sPC_TrdMenu_AddUpt', |
| | |
| | | EasyCode: config.easyCode || '', |
| | | Template: 'BaseTable', |
| | | MenuName: config.MenuName || '', |
| | | PageParam: JSON.stringify({Template: 'BaseTable', OpenType: config.OpenType || 'newtab', hidden: config.hidden || 'false', menuColor: config.menuColor || '', interfaces}), |
| | | PageParam: JSON.stringify({Template: 'BaseTable', OpenType: config.OpenType || 'newtab', hidden: config.hidden || 'false', menuColor: config.menuColor || '', interfaces, urlFields}), |
| | | open_edition: config.open_edition, |
| | | LText: '', |
| | | LTexttb: '', |