新增待办信息

This commit is contained in:
2026-01-03 16:05:18 +08:00
parent 0b1fa8b0dd
commit da5f6b9995
4 changed files with 46 additions and 22 deletions

View File

@@ -14,7 +14,6 @@
<span class="info-item">时间{{ NoticeList?.createTime || '-' }}</span> <span class="info-item">时间{{ NoticeList?.createTime || '-' }}</span>
<span class="info-item">类型{{ getTypeText(NoticeList?.type) }}</span> <span class="info-item">类型{{ getTypeText(NoticeList?.type) }}</span>
</div> </div>
<!-- 优化后的内容展示区域 -->
<div class="detail-content"> <div class="detail-content">
<pre class="db-content">{{ NoticeList?.description || '无内容' }}</pre> <pre class="db-content">{{ NoticeList?.description || '无内容' }}</pre>
</div> </div>
@@ -43,7 +42,7 @@
import { defineComponent, ref, onMounted, onUnmounted } from 'vue'; import { defineComponent, ref, onMounted, onUnmounted } from 'vue';
import { useMessage } from '@jeesite/core/hooks/web/useMessage'; import { useMessage } from '@jeesite/core/hooks/web/useMessage';
import { BasicModal, useModalInner } from '@jeesite/core/components/Modal'; import { BasicModal, useModalInner } from '@jeesite/core/components/Modal';
import { bizListItemSflow, BizListItem } from '@jeesite/biz/api/biz/listItem'; import { bizListItemSflow, bizListItemList, BizListItem, TabItem } from '@jeesite/biz/api/biz/listItem';
export default defineComponent({ export default defineComponent({
components: { BasicModal }, components: { BasicModal },
@@ -51,14 +50,26 @@
setup(props, { emit }) { setup(props, { emit }) {
const TodoValue = ref(); const TodoValue = ref();
const NoticeList = ref(); const NoticeList = ref<BizListItem>();
const getDataList = async ( params: any) => {
try {
const result = await bizListItemList(params);
NoticeList.value = result.bizListItem || [];
TodoValue.value = result.bizListItem.extraDesc|| '';
} catch (error) {
NoticeList.value = undefined ;
console.error('获取数据失败:', error);
}
}
const { createMessage } = useMessage(); const { createMessage } = useMessage();
// 模态框注册 // 模态框注册
const [register, { closeModal }] = useModalInner(async (data: any) => { const [register, { closeModal }] = useModalInner(async (data: any) => {
if (!data) return; if (!data) return;
NoticeList.value = Array.isArray(data) ? data[0] : data; const params = {
TodoValue.value = NoticeList.value.extraDesc|| ''; id : data.id
}
await getDataList(params);
}); });
const getTypeText = (type: string) => { const getTypeText = (type: string) => {
@@ -120,9 +131,9 @@
/* 主容器样式 - 淡蓝色系优化 */ /* 主容器样式 - 淡蓝色系优化 */
.detail-container { .detail-container {
background-color: #f0f8ff; /* 统一淡蓝色背景 */ background-color: #f0f8ff; /* 统一淡蓝色背景 */
padding: 20px; padding: 12px;
border-radius: 8px; border-radius: 8px;
min-height: 200px; min-height: 400px;
font-size: 14px; font-size: 14px;
color: #333; color: #333;
} }

View File

@@ -13,6 +13,7 @@
$props.titleRows && $props.titleRows > 0 ? { rows: $props.titleRows, tooltip: !!item.title } : false $props.titleRows && $props.titleRows > 0 ? { rows: $props.titleRows, tooltip: !!item.title } : false
" "
:content="item.title" :content="item.title"
@click="openModal(true, item)"
/> />
<div class="extra" v-if="item.extra"> <div class="extra" v-if="item.extra">
<a-tag class="tag" :color="item.color"> <a-tag class="tag" :color="item.color">
@@ -52,14 +53,17 @@
</a-list-item> </a-list-item>
</template> </template>
</a-list> </a-list>
<Modal @register="register" />
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, PropType, ref, watch, unref } from 'vue'; import { computed, defineComponent, PropType, ref, watch, unref } from 'vue';
import { BizListItem } from '@jeesite/biz/api/biz/listItem'; import { BizListItem, tabListDataAll } from '@jeesite/biz/api/biz/listItem';
import { useDesign } from '@jeesite/core/hooks/web/useDesign'; import { useDesign } from '@jeesite/core/hooks/web/useDesign';
import { useModal } from '@jeesite/core/components/Modal';
import { List, Avatar, Tag, Typography } from 'ant-design-vue'; import { List, Avatar, Tag, Typography } from 'ant-design-vue';
import { Icon } from '@jeesite/core/components/Icon'; import { Icon } from '@jeesite/core/components/Icon';
import { isNumber } from '@jeesite/core/utils/is'; import { isNumber } from '@jeesite/core/utils/is';
import Modal from './NoticeInfo.vue';
interface ExtendedBizListItem extends BizListItem { interface ExtendedBizListItem extends BizListItem {
titleDelete?: '0' | '1' | string; titleDelete?: '0' | '1' | string;
@@ -74,6 +78,7 @@
ATypographyParagraph: Typography.Paragraph, ATypographyParagraph: Typography.Paragraph,
[Tag.name as string]: Tag, [Tag.name as string]: Tag,
Icon, Icon,
Modal,
}, },
props: { props: {
list: { list: {
@@ -103,6 +108,9 @@
}, },
emits: ['update:currentPage'], emits: ['update:currentPage'],
setup(props, { emit }) { setup(props, { emit }) {
const [register, { openModal }] = useModal();
const { prefixCls } = useDesign('header-notify-list'); const { prefixCls } = useDesign('header-notify-list');
const current = ref(props.currentPage || 1); const current = ref(props.currentPage || 1);
@@ -144,8 +152,15 @@
function handleTitleClick(item: ExtendedBizListItem) { function handleTitleClick(item: ExtendedBizListItem) {
props.onTitleClick && props.onTitleClick(item); props.onTitleClick && props.onTitleClick(item);
} }
return {
return { prefixCls, getPagination, getData, handleTitleClick, isTitleClickable }; prefixCls,
getPagination,
getData,
handleTitleClick,
isTitleClickable,
register,
openModal,
};
}, },
}); });
</script> </script>

View File

@@ -9,33 +9,29 @@
<template v-for="item in listData" :key="item.key"> <template v-for="item in listData" :key="item.key">
<TabPane> <TabPane>
<template #tab> <template #tab>
{{ item.name }} <span @click="getDataList()">{{ item.name }}</span>
<span v-if="item.list.length !== 0">({{ item.list.length }})</span> <span v-if="item.list.length !== 0">({{ item.list.length }})</span>
</template> </template>
<NoticeList :list="item.list" v-if="item.list.length > 0" @click="openModal(true, item.list)" /> <NoticeList :list="item.list" />
</TabPane> </TabPane>
</template> </template>
</Tabs> </Tabs>
</template> </template>
</Popover> </Popover>
</div> </div>
<Modal @register="register" @modalClose="getDataList()" />
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, onMounted, ref } from 'vue'; import { computed, defineComponent, onMounted, ref } from 'vue';
import { Popover, Tabs, Badge } from 'ant-design-vue'; import { Popover, Tabs, Badge } from 'ant-design-vue';
import { BellOutlined } from '@ant-design/icons-vue'; import { BellOutlined } from '@ant-design/icons-vue';
import NoticeList from './NoticeList.vue'; import NoticeList from './NoticeList.vue';
import { useModal } from '@jeesite/core/components/Modal';
import { useDesign } from '@jeesite/core/hooks/web/useDesign'; import { useDesign } from '@jeesite/core/hooks/web/useDesign';
import { useMessage } from '@jeesite/core/hooks/web/useMessage'; import { useMessage } from '@jeesite/core/hooks/web/useMessage';
import { tabListDataAll, bizListItemSflow, TabItem, BizListItem } from '@jeesite/biz/api/biz/listItem'; import { tabListDataAll, bizListItemSflow, TabItem, BizListItem } from '@jeesite/biz/api/biz/listItem';
import Modal from './NoticeInfo.vue';
export default defineComponent({ export default defineComponent({
components: { Popover, BellOutlined, Tabs, TabPane: Tabs.TabPane, Badge, NoticeList, Modal }, components: { Popover, BellOutlined, Tabs, TabPane: Tabs.TabPane, Badge, NoticeList },
setup() { setup() {
const [register, { openModal }] = useModal();
const { prefixCls } = useDesign('header-notify'); const { prefixCls } = useDesign('header-notify');
const listData = ref<TabItem[]>([]); const listData = ref<TabItem[]>([]);
@@ -65,8 +61,6 @@
prefixCls, prefixCls,
listData, listData,
count, count,
register,
openModal,
numberStyle: {}, numberStyle: {},
getDataList, getDataList,
}; };

View File

@@ -27,7 +27,7 @@
import { Icon } from '@jeesite/core/components/Icon'; import { Icon } from '@jeesite/core/components/Icon';
import { BasicForm, FormSchema, useForm } from '@jeesite/core/components/Form'; import { BasicForm, FormSchema, useForm } from '@jeesite/core/components/Form';
import { BasicModal, useModalInner } from '@jeesite/core/components/Modal'; import { BasicModal, useModalInner } from '@jeesite/core/components/Modal';
import { formatToDateTime } from '@jeesite/core/utils/dateUtil';
import { BizCalendarSchedule, bizCalendarScheduleSave, bizCalendarScheduleForm } from '@jeesite/biz/api/biz/calendarSchedule'; import { BizCalendarSchedule, bizCalendarScheduleSave, bizCalendarScheduleForm } from '@jeesite/biz/api/biz/calendarSchedule';
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
@@ -168,7 +168,11 @@
async function handleSubmit() { async function handleSubmit() {
try { try {
const data = await validate(); const orgData = await validate();
const data = {
... orgData,
updateTime: formatToDateTime(new Date()) ,
}
setModalProps({ confirmLoading: true }); setModalProps({ confirmLoading: true });
const params: any = { const params: any = {
isNewRecord: record.value.isNewRecord, isNewRecord: record.value.isNewRecord,