/* eslint-disable no-param-reassign */ import { defineComponent, PropType, watch, Ref, ref } from 'vue'; import { useNamespace } from '@ibiz-template/vue-util'; import dayjs from 'dayjs'; import { clone } from 'ramda'; import '@ibiz-template/theme/style/components/common/extend-action-grid/extend-action-grid.scss'; /** * 办理人员名称显示去重 * * @param tag 需要去重的名称标识 * @param dataS 需要去重数据集 */ const acceptingOfficerNoDup = (tag: string, dataS: IData[]) => { const tempData: IData[] = []; if (dataS?.length > 0 && tag) { dataS.forEach((data: IData) => { tempData.push(data[tag]); }); } const noDup = [...new Set(tempData)]; return noDup; }; /** * 绘制人员 */ const renderAuthorName = (task: IData) => { let authorNames: IData[] = []; if (task.comments.length > 0) { authorNames = acceptingOfficerNoDup('authorName', task.comments); } else { authorNames = acceptingOfficerNoDup('displayname', task.identitylinks); } const disabled = !(authorNames.length > 1); const content = authorNames.map(item => item).toString(); return ( {content} ); }; /** * 绘制单位 */ const renderAuthorOrgName = (task: IData) => { let authorOrgNames: IData[] = []; if (task.comments.length > 0) { authorOrgNames = acceptingOfficerNoDup('authorOrgName', task.comments); } const disabled = !(authorOrgNames.length > 1); const content = authorOrgNames.map(item => item).toString(); return ( {content} ); }; /** * 绘制部门 */ const renderAuthorDeptName = (task: IData) => { let authorDeptNames: IData[] = []; if (task.comments.length > 0) { authorDeptNames = acceptingOfficerNoDup('authorDeptName', task.comments); } const disabled = !(authorDeptNames.length > 1); const content = authorDeptNames.map(item => item).toString(); return ( {content} ); }; export const ExtendActionGrid = defineComponent({ name: 'ExtendActionGrid', props: { data: { type: Object as PropType, }, }, setup(props) { const ns = useNamespace('extend-action-grid'); const UIData: Ref = ref(null); watch( () => props.data, (newVal, oldVal) => { if (newVal !== oldVal && newVal) { const copyData = clone(newVal); if (copyData.usertasks.length > 0) { copyData.usertasks.forEach((task: IData) => { task.isShow = false; }); copyData.usertasks = copyData.usertasks.reverse(); UIData.value = copyData; } } }, { immediate: true }, ); /** * 时间转换 * * @memberof ExtendActionTimeline */ const formatDate = (date: string, format: string) => { return dayjs(date).format(format); }; /** * 点击事件 * * @memberof ExtendActionTimeline */ const changeExpand = (userTask: IData) => { userTask.isShow = !userTask.isShow; }; return { ns, formatDate, changeExpand, UIData }; }, render() { return (
序号
节点
办理人员
单位
部门
操作
完成时间
审批意见
{this.UIData && this.UIData.usertasks.map((task: IData, index: number) => { return [
{index + 1}
{task.userTaskName}
{renderAuthorName(task)}
{renderAuthorOrgName(task)}
{renderAuthorDeptName(task)}
{task.comments[task.comments.length - 1] && task.comments[task.comments.length - 1].type}
{task.comments[task.comments.length - 1] && this.formatDate( task.comments[task.comments.length - 1].time, 'MM月DD日 HH:mm:ss', )}
{task.comments[task.comments.length - 1] && task.comments[task.comments.length - 1].fullMessage}
{(task.comments.length > 1 || task.identitylinks.length > 1) && (
{ this.changeExpand(task); }} >
)}
, task.isShow && [ task.comments.map((comment: IData) => { return (
{comment.authorName}
{comment.authorOrgName}
{comment.authorDeptName}
{comment.type}
{this.formatDate(comment.time, 'MM月DD日 HH:mm:ss')}
{comment.fullMessage}
); }), task.identitylinks.length > 0 && (
待办理
item.displayname) .toString()} theme='light' > {task.identitylinks .map((item: IData) => item.displayname) .toString()}
), ], ]; })}
); }, });