dbsd_kczx/src/utils/common/renderUtils.ts

132 lines
3.4 KiB
TypeScript
Raw Normal View History

2022-03-10 09:47:29 +08:00
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 };