UNPKG

vue-ant-patterns

Version:

vue-ant-patterns

473 lines (423 loc) 15.8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _babelHelperVueJsxMergeProps = require('babel-helper-vue-jsx-merge-props'); var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _antDesignVue = require('ant-design-vue'); var _vueTypes = require('ant-design-vue/lib/_util/vue-types'); var _vueTypes2 = _interopRequireDefault(_vueTypes); var _dIcon = require('../d-icon'); var _dIcon2 = _interopRequireDefault(_dIcon); var _defaultProps = require('./defaultProps'); var _defaultProps2 = _interopRequireDefault(_defaultProps); var _card = require('./card'); var _card2 = _interopRequireDefault(_card); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } /* babel-plugin-inline-import '../style/image/avatar.svg' */var avatarSvg = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTY4NjI3MTAwNjUxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjY2MzIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTUxMiAyMjcuNDg4Yy03NC4xMTIgMC0xMzQuMzA0IDYwLjI4OC0xMzQuMzA0IDEzNC4zMDRzNjAuMTkyIDEzNC40IDEzNC4zMDQgMTM0LjQgMTM0LjMwNC02MC4yODggMTM0LjMwNC0xMzQuMzA0LTYwLjE5Mi0xMzQuNC0xMzQuMzA0LTEzNC40ek01MTIgMEMyMjkuMTg0IDAgMCAyMjkuMTg0IDAgNTEyczIyOS4xODQgNTEyIDUxMiA1MTJjMjgyLjc4NCAwIDUxMi0yMjkuMjE2IDUxMi01MTJTNzk0Ljc4NCAwIDUxMiAweiBtMjM3Ljg4OCA3ODAuMDk2YTI1LjI4IDI1LjI4IDAgMCAxLTI1LjMxMi0yNS4zMTJjMC0xMTYtOTMuNDA4LTIwNi44MTYtMjEyLjYwOC0yMDYuODE2cy0yMTIuNjA4IDkwLjc4NC0yMTIuNjA4IDIwNi43ODRjMCAxNC4wMTYtMTEuMjk2IDI1LjMxMi0yNS4zMTIgMjUuMzEycy0yNS4zMTItMTEuMjk2LTI1LjMxMi0yNS4zMTJjMC03MC4xMTIgMjcuNDg4LTEzNS4yOTYgNzcuNDA4LTE4My42MTZhMjU5LjM5MiAyNTkuMzkyIDAgMCAxIDg0LjUxMi01NC41OTIgMTg4LjM4NCAxODguMzg0IDAgMCAxLTI5LjQwOC0yNGMtMzQuOTEyLTM0LjkxMi01NC4yMDgtODEuNDA4LTU0LjIwOC0xMzAuODE2czE5LjItOTUuOTA0IDU0LjIwOC0xMzAuODE2YzM0LjkxMi0zNC45MTIgODEuNDA4LTU0LjIwOCAxMzAuNzg0LTU0LjIwOHM5NS45MDQgMTkuMiAxMzAuNzg0IDU0LjIwOGMzNC43ODQgMzUuMDA4IDU0LjExMiA4MS41MDQgNTQuMTEyIDEzMC45MTJzLTE5LjIgOTUuOTA0LTU0LjIwOCAxMzAuODE2YTE4Ni45MTIgMTg2LjkxMiAwIDAgMS0yOS40MDggMjQgMjYxLjc5MiAyNjEuNzkyIDAgMCAxIDg0LjUxMiA1NC41OTJjNDkuODg4IDQ4LjE5MiA3Ny40MDggMTEzLjQwOCA3Ny40MDggMTgzLjYxNmEyNS40MDggMjUuNDA4IDAgMCAxLTI1LjQwOCAyNS4yMTZ6IiBwLWlkPSI2NjMzIiBmaWxsPSIjY2NjIj48L3BhdGg+PC9zdmc+'; var Person = { name: 'DCardPerson', props: { prefixCls: _vueTypes2['default'].string.def('depot-dcard-person'), baseInfo: _defaultProps2['default'].baseInfo, dropDownMenuItems: _vueTypes2['default'].array.def([]), loading: _vueTypes2['default'].bool.def(false) // 显示预加载 }, data: function data() { return { bodyStyle: { padding: '0 16px', margin: 0 }, sVisible: false, // 是否显示checkbox showBackCard: false, // 是否显示卡片背面 size: 'default' }; }, methods: { // 点击头像事件 handleAvatarClick: function handleAvatarClick(e) { this.$emit('avatarClick', e); }, // 头像下面button事件, 将卡片信息返回去 handleButtonClick: function handleButtonClick(e, item, baseInfo) { this.$emit('actionButtonsClick', e, item, baseInfo); }, // 点击标题事件 handleTitleClick: function handleTitleClick(e) { this.$emit('titleClick', e); }, // 点击checkbox onChangeCheckbox: function onChangeCheckbox(e, baseInfo) { // this.checked = e.target.checked; this.$emit('onChangeCheckbox', e, baseInfo); }, // 鼠标滑过 handleMouseOver: function handleMouseOver(e) { this.sVisible = true; }, // 鼠标移出 handleMouseOut: function handleMouseOut(e) { this.sVisible = false; }, // 翻转卡片 showBackCardFun: function showBackCardFun(e) { this.showBackCard = !this.showBackCard; }, renderIntegrity: function renderIntegrity() { var h = this.$createElement; var baseInfo = this.baseInfo, loading = this.loading; var integrity = baseInfo.integrity; var loadingBlock = h('div', { 'class': 'depot-dcard-loading-block', style: 'width:100%;' }); return integrity && integrity.label ? !loading ? h( 'div', { 'class': 'line-progress' }, [h( 'span', { 'class': 'line-progress-txt' }, [integrity.label, ': ', integrity.value, '%'] ), h(_antDesignVue.Progress, { attrs: { strokeColor: '#0081EE', percent: integrity.value, showInfo: false } })] ) : loadingBlock : h('div', { 'class': 'line-progress' }); }, renderIconButtons: function renderIconButtons() { var h = this.$createElement; var baseInfo = this.baseInfo, handleButtonClick = this.handleButtonClick, loading = this.loading; var buttons = baseInfo.buttons; var loadingSpan = h('div', { 'class': 'depot-dcard-loading-span' }); return h( 'div', { 'class': 'icon-box' }, [buttons && buttons.length ? buttons.map(function (item) { return !loading ? h( 'd-icon-button', { on: { 'click': function click(e) { handleButtonClick(e, item, baseInfo); } }, key: item.key, attrs: { shape: 'circle' } }, [h('d-icon', { attrs: { type: item.icon } })] ) : loadingSpan; }) : null] ); }, // 卡片正面信息渲染 renderFrontBaseInfo: function renderFrontBaseInfo() { var _this = this; var h = this.$createElement; var $slots = this.$slots, baseInfo = this.baseInfo, loading = this.loading; var photo = baseInfo.photo, employeeName = baseInfo.employeeName, employeeCode = baseInfo.employeeCode, positionName = baseInfo.positionName, jobName = baseInfo.jobName, companyName = baseInfo.companyName, deptName = baseInfo.deptName, status = baseInfo.status; var loadingBlock = h('div', { 'class': 'depot-dcard-loading-block' }); var loadingBlockW50 = h('div', { 'class': 'depot-dcard-loading-block W50' }); var loadingBlockImg = h('div', { 'class': 'depot-dcard-loading-block', style: 'width:80px;height:80px;border-radius:50%' }); var loadingSpan = h('span', { 'class': 'depot-dcard-loading-span' }); return h( 'div', { 'class': 'front-baseinfo' }, [h( 'div', { 'class': 'avatar-box' }, [h( 'div', { on: { 'click': function click(e) { _this.handleAvatarClick(e); } } }, [!loading ? h('d-avatar', { attrs: { src: photo || avatarSvg, alt: employeeName, size: 'xl' } }) : loadingBlockImg] ), this.renderIntegrity(), this.renderIconButtons()] ), h( 'div', { 'class': 'base-info' }, [h( 'h3', { attrs: { title: employeeName }, on: { 'click': function click(e) { _this.handleTitleClick(e); } } }, [!loading ? employeeName : loadingBlockW50] ), h( 'div', { 'class': 's-line s-primary-color', attrs: { title: employeeCode } }, [!loading ? employeeCode : loadingBlock] ), h( 'div', { 'class': 's-line' }, [status && status.length ? status.map(function (it) { return !loading ? h( 'span', { key: it.key, 'class': 'tag' }, [it.name] ) : loadingSpan; }) : null] ), h( 'div', { 'class': 's-line', attrs: { title: positionName + ' - ' + positionName } }, [!loading ? positionName + jobName : loadingBlock] ), h( 'div', { 'class': 's-line', attrs: { title: deptName } }, [!loading ? deptName : loadingBlock] ), h( 'div', { 'class': 's-line', attrs: { title: companyName } }, [!loading ? companyName : loadingBlock] ), $slots['default']] )] ); }, // 左上角操作区域 renderLeftTopActions: function renderLeftTopActions() { var _checkClass; var h = this.$createElement; var baseInfo = this.baseInfo, onChangeCheckbox = this.onChangeCheckbox; var checked = baseInfo.checked, id = baseInfo.id; var checkClass = (_checkClass = {}, (0, _defineProperty3['default'])(_checkClass, 'left-option', true), (0, _defineProperty3['default'])(_checkClass, 'checkbox-show', checked || this.sVisible), _checkClass); return h( 'div', { 'class': checkClass }, [h(_antDesignVue.Checkbox, { attrs: { checked: checked, value: id }, on: { 'change': function change(e) { onChangeCheckbox(e, baseInfo); } } })] ); }, // 右上角操作区域 renderRightTopActions: function renderRightTopActions() { var _this2 = this; var h = this.$createElement; var dropDownMenuItems = this.dropDownMenuItems, loading = this.loading; var menuProps = { props: { overlayClassName: 'rightOptionDropdown' }, on: { click: function click(_ref) { var item = _ref.item, key = _ref.key, keyPath = _ref.keyPath; _this2.$emit('rightOptionMenuSelect', { item: item, key: key, keyPath: keyPath }); } } }; var loadingBlock = h('div', { 'class': 'depot-dcard-loading-block', style: 'width:20px;' }); return dropDownMenuItems.length > 0 && h( 'div', { 'class': 'right-option' }, [!loading ? h( _antDesignVue.Dropdown, { attrs: { trigger: ['click'], overlayClassName: 'rightOptionDropdown' } }, [h('d-icon', { attrs: { type: 'ellipsis' } }), h( _antDesignVue.Menu, (0, _babelHelperVueJsxMergeProps2['default'])([{ slot: 'overlay' }, menuProps]), [dropDownMenuItems.map(function (it) { if (it === null) { return h(_antDesignVue.Menu.Divider, { key: 'null' }); } return h( _antDesignVue.Menu.Item, { key: it.key }, [it.icon ? h(_dIcon2['default'], { attrs: { type: it.icon } }) : null, it.title] ); })] )] ) : loadingBlock] ); }, // 右下角操作翻转卡片区域 renderRightBottomAactions: function renderRightBottomAactions() { var _class, _this3 = this; var h = this.$createElement; var rightBottomProps = { 'class': (_class = {}, (0, _defineProperty3['default'])(_class, 'right-bottom-operation', true), (0, _defineProperty3['default'])(_class, 'rightBottom-show', this.sVisible), _class), on: { click: function click(e) { _this3.showBackCardFun(e); } } }; return h('div', rightBottomProps); }, // 卡片背面信息渲染 renderBackInfo: function renderBackInfo() { var h = this.$createElement; var baseInfo = this.baseInfo; var employeeDate = baseInfo.employeeDate, employeeName = baseInfo.employeeName, employmentForm = baseInfo.employmentForm, postion = baseInfo.postion, jobFamiliy = baseInfo.jobFamiliy; return h( 'div', { 'class': 'backInfoWrapper' }, [h( 'h3', { attrs: { title: employeeName } }, [employeeName] ), h( 'div', { 'class': 'back-info-item' }, [h( 'span', { 'class': 'name' }, ['\u663E\u793A\u987A\u5E8F\uFF1A'] ), h( 'span', { 'class': 'value' }, ['129'] )] ), h( 'div', { 'class': 'back-info-item' }, [h( 'span', { 'class': 'name' }, ['\u5165\u804C\u65E5\u671F\uFF1A'] ), h( 'span', { 'class': 'value' }, [employeeDate] )] ), h( 'div', { 'class': 'back-info-item' }, [h( 'span', { 'class': 'name' }, ['\u7528\u5DE5\u5F62\u5F0F\uFF1A'] ), h( 'span', { 'class': 'value' }, [employmentForm] )] ), h( 'div', { 'class': 'back-info-item' }, [h( 'span', { 'class': 'name' }, ['\u804C\u7B49\uFF1A'] ), h( 'span', { 'class': 'value' }, [postion] )] ), h( 'div', { 'class': 'back-info-item' }, [h( 'span', { 'class': 'name' }, ['\u804C\u52A1\u65CF\uFF1A'] ), h( 'span', { 'class': 'value' }, [jobFamiliy] )] )] ); } }, render: function render() { var _cx, _this4 = this; var h = arguments[0]; var prefixCls = this.prefixCls, $listeners = this.$listeners, $attrs = this.$attrs, baseInfo = this.baseInfo, loading = this.loading; var checked = baseInfo.checked; var personProps = { 'class': (0, _classnames2['default'])((_cx = {}, (0, _defineProperty3['default'])(_cx, prefixCls, 1), (0, _defineProperty3['default'])(_cx, prefixCls + '-selected', checked), _cx)), attrs: (0, _extends3['default'])({}, $attrs), on: (0, _extends3['default'])({}, $listeners, { mouseenter: function mouseenter(e) { _this4.handleMouseOver(e); }, mouseleave: function mouseleave(e) { _this4.handleMouseOut(e); } }) }; return h( 'div', personProps, [h( _card2['default'], { attrs: { rollingOver: true, size: this.size, bodyStyle: this.bodyStyle } }, [h( 'template', { slot: 'content' }, [this.renderLeftTopActions(), this.renderRightTopActions(), this.renderFrontBaseInfo()] ), h( 'template', { slot: 'backContent' }, [this.renderLeftTopActions(), this.renderRightTopActions(), this.renderBackInfo()] )] )] ); } }; exports['default'] = Person;