import { h } from 'vue'; import { Avatar,Tag, Tooltip } from 'ant-design-vue'; import { getFileAccessHttpUrl } from '/@/utils/common/compUtils'; import { Tinymce } from '/@/components/Tinymce'; import Icon from '/@/components/Icon'; import { getDictItemsByCode } from '/@/utils/dict/index'; import { filterMultiDictText } from '/@/utils/dict/JDictSelectUtil.js'; import { loadCategoryData } from '/@/api/common/api'; import {isEmpty} from "/@/utils/is"; const render = { /** * 渲染列表头像 */ renderAvatar: ({ record }) => { if (record.avatar) { let avatarList = record.avatar.split(','); return h('span', avatarList.map((item) => { return h(Avatar, { src: getFileAccessHttpUrl(item), shape: 'square', size: 'default', style: { marginRight: '5px' } }); })); } else { return h(Avatar, { shape: 'square', size: 'default' }, { icon: () => h(Icon, { icon: 'ant-design:file-image-outlined', size: 30 }), }); } }, /** * 根据字典编码 渲染 * @param v 值 * @param code 字典编码 * @param renderTag 是否使用tag渲染 */ renderDict: (v, code,renderTag=false) => { let text = ''; let array = getDictItemsByCode(code); let obj = array.filter(item => { return item.value == v; }); if (obj.length > 0) { text = obj[0].text; } return isEmpty(text)||!renderTag?h('span',text):h(Tag,text) }, /** * 渲染图片 * @param text */ renderImage: ({text}) => { if(!text){ return h(Avatar, { shape: 'square', size: 'large' }, { icon: () => h(Icon, { icon: 'ant-design:file-image-outlined', size: 30 }), }); } let avatarList = text.split(','); return h('span', avatarList.map((item) => { return h(Avatar, { src: getFileAccessHttpUrl(item), shape: 'square', size: 'large', style: { marginRight: '5px' } }); })); }, /** * 渲染 Tooltip * @param text * @param len */ renderTip: (text, len=20) => { if(text){ let showText = text+'' if(showText.length>len){ showText = showText.substr(0, len)+'...' } return h(Tooltip, { title: text }, ()=>showText) } return text; }, /** * 渲染a标签 * @param text */ renderHref: ({text}) => { if(!text){ return '' } const len = 20 if(text.length>len){ text = text.substr(0, len) } return h('a', { href: text, target: '_blank'}, text) }, /** * 根据字典渲染 * @param v * @param array */ renderDictNative: (v, array,renderTag=false) => { let text = ''; let color = ''; let obj = array.filter(item => { return item.value == v; }); if (obj.length > 0) { text = obj[0].label; color = obj[0].color; } return isEmpty(text)||!renderTag?h('span',text):h(Tag, {color},()=>text) }, /** * 渲染富文本 */ renderTinymce: ({ model, field }) => { return h(Tinymce, { showImageUpload: false, height: 300, value: model[field], onChange: (value: string) => { model[field] = value; }, }); }, renderSwitch: (text, arr) => { return text ? filterMultiDictText(arr, text) : ''; }, renderCategoryTree: (text, code) => { let array = getDictItemsByCode(code); return filterMultiDictText(array, text); }, renderTag(text,color){ return isEmpty(text)?h('span', text):h(Tag, { color },()=>text) } }; export { render };