12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import type { JSX } from 'vue/jsx-runtime'
- import { Tag } from 'ant-design-vue'
- // text, record, index, column
- import dayjs from 'dayjs'
- import { get } from 'lodash'
- export interface CustomRenderProps {
- // eslint-disable-next-line ts/no-explicit-any
- text: any
- // eslint-disable-next-line ts/no-explicit-any
- record: any
- // eslint-disable-next-line ts/no-explicit-any
- index: any
- // eslint-disable-next-line ts/no-explicit-any
- column: any
- isExport?: boolean
- isDetail?: boolean
- }
- export function datetime(args: CustomRenderProps) {
- return dayjs(args.text).format('YYYY-MM-DD HH:mm:ss')
- }
- export function date(args: CustomRenderProps) {
- return args.text ? dayjs(args.text).format('YYYY-MM-DD') : '-'
- }
- // Used in Export
- date.isDate = true
- datetime.isDatetime = true
- // eslint-disable-next-line ts/no-explicit-any
- export function mask(maskObj: any): (args: CustomRenderProps) => JSX.Element {
- return (args: CustomRenderProps) => {
- // eslint-disable-next-line ts/no-explicit-any
- let v: any
- if (typeof maskObj?.[args.text] === 'function')
- v = maskObj[args.text]()
- else if (typeof maskObj?.[args.text] === 'string')
- v = maskObj[args.text]
- else v = args.text
- return v ?? '-'
- }
- }
- export function arrayToTextRender(args: CustomRenderProps) {
- return args.text?.join(', ')
- }
- export function actualValueRender(args: CustomRenderProps, actualDataIndex: string | string[]) {
- return get(args.record, actualDataIndex)
- }
- export function longTextWithEllipsis(len: number): (args: CustomRenderProps) => JSX.Element {
- return (args: CustomRenderProps) => {
- if (args.isExport || args.isDetail)
- return args.text
- return args.text.length > len ? `${args.text.substring(0, len)}...` : args.text
- }
- }
- export function year(args: CustomRenderProps) {
- return dayjs(args.text).format('YYYY')
- }
- // eslint-disable-next-line ts/no-explicit-any
- export function maskRenderWithColor(maskObj: any) {
- return (args: CustomRenderProps) => {
- let label: string
- if (typeof maskObj[args.text] === 'function')
- label = maskObj[args.text]()
- else if (typeof maskObj[args.text] === 'string')
- label = maskObj[args.text]
- else label = args.text
- if (args.isExport)
- return label
- const colorMap = {
- 0: '',
- 1: 'blue',
- 2: 'green',
- 3: 'red',
- 4: 'cyan',
- }
- return args.text ? h(Tag, { color: colorMap[args.text] }, maskObj[args.text]) : '-'
- }
- }
|