| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- 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 { isEmpty } from '/@/utils/is';
- import { useMessage } from '/@/hooks/web/useMessage';
- const { createMessage } = useMessage();
- 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) {
- //update-begin-author:taoyan date:2022-5-24 for: VUEN-1084 【vue3】online表单测试发现的新问题 41、生成的代码,树默认图大小未改
- return h(
- Avatar,
- { shape: 'square', size: 25 },
- {
- icon: () => h(Icon, { icon: 'ant-design:file-image-outlined', size: 25 }),
- }
- );
- }
- let avatarList = text.split(',');
- return h(
- 'span',
- avatarList.map((item) => {
- return h(Avatar, {
- src: getFileAccessHttpUrl(item),
- shape: 'square',
- size: 25,
- style: { marginRight: '5px' },
- });
- })
- );
- //update-end-author:taoyan date:2022-5-24 for: VUEN-1084 【vue3】online表单测试发现的新问题 41、生成的代码,树默认图大小未改
- },
- /**
- * 渲染 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);
- },
- };
- /**
- * 文件下载
- */
- function downloadFile(url) {
- if (!url) {
- createMessage.warning('未知的文件');
- return;
- }
- if (url.indexOf(',') > 0) {
- url = url.substring(0, url.indexOf(','));
- }
- url = getFileAccessHttpUrl(url.split(',')[0]);
- if (url) {
- window.open(url);
- }
- }
- export { render, downloadFile };
|