新增待办信息

This commit is contained in:
2025-12-21 10:25:44 +08:00
parent b01c16da66
commit 5d2cbda448
5 changed files with 132 additions and 18 deletions

View File

@@ -43,10 +43,8 @@ import java.io.Serial;
@Column(name = "folder_id", attrName = "folderId", label = "文件夹标识"),
@Column(name = "user_name", attrName = "userName", label = "用户姓名", isUpdate = false, isQuery = false),
@Column(name = "login_code", attrName = "loginCode", label = "用户名称", isUpdate = false),
@Column(name = "download_count", attrName = "downloadCount", label = "下载次数", isUpdate = false, isQuery = false, isUpdateForce = true),
@Column(name = "view_count", attrName = "viewCount", label = "查看次数", isUpdate = false, isQuery = false, isUpdateForce = true),
@Column(name = "expire_time", attrName = "expireTime", label = "过期时间", isQuery = false, isUpdateForce = true),
@Column(name = "is_delete", attrName = "isDelete", label = "是否删除", isUpdateForce = true),
@Column(name = "download_count", attrName = "downloadCount", label = "下载次数"),
@Column(name = "view_count", attrName = "viewCount", label = "查看次数"),
@Column(name = "update_time", attrName = "updateTime", label = "更新时间", isQuery = false, isUpdateForce = true),
@Column(name = "svg_icon", attrName = "svgIcon", label = "文件夹标识"),
}, joinTable = {
@@ -75,8 +73,6 @@ public class BizMyfiles extends DataEntity<BizMyfiles> implements Serializable {
private String loginCode; // 用户名称
private Integer downloadCount; // 下载次数
private Integer viewCount; // 查看次数
private Date expireTime; // 过期时间
private Integer isDelete; // 是否删除
private Date updateTime; // 更新时间
private String svgIcon; //文件图标
@@ -96,8 +92,6 @@ public class BizMyfiles extends DataEntity<BizMyfiles> implements Serializable {
@ExcelField(title = "用户名称", attrName = "loginCode", align = Align.CENTER, sort = 110),
@ExcelField(title = "下载次数", attrName = "downloadCount", align = Align.CENTER, sort = 120),
@ExcelField(title = "查看次数", attrName = "viewCount", align = Align.CENTER, sort = 130),
@ExcelField(title = "过期时间", attrName = "expireTime", align = Align.CENTER, sort = 140, dataFormat = "yyyy-MM-dd hh:mm"),
@ExcelField(title = "是否删除", attrName = "isDelete", dictType = "sys_yes_no", align = Align.CENTER, sort = 150),
@ExcelField(title = "更新时间", attrName = "updateTime", align = Align.CENTER, sort = 160, dataFormat = "yyyy-MM-dd hh:mm"),
})
public BizMyfiles() {

View File

@@ -18,7 +18,7 @@
import { useMessage } from '@jeesite/core/hooks/web/useMessage';
import { BasicModal, useModalInner } from '@jeesite/core/components/Modal';
import { FolderItem, BizFolders, bizFoldersListAll, bizFoldersSave, bizFolderTreeData } from '@jeesite/biz/api/biz/folders';
import { BizFolders, bizFoldersListAll, bizFoldersSave, bizFolderTreeData } from '@jeesite/biz/api/biz/folders';
import { useUserStore } from '@jeesite/core/store/modules/user';
const userStore = useUserStore();
const userinfo = computed(() => userStore.getUserInfo);

View File

@@ -0,0 +1,114 @@
<template>
<BasicModal
v-bind="$attrs"
@register="register"
title="移动文件"
width="60%"
@cancel="handleCancel"
@ok="handleSubmit"
>
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts">
import { defineComponent, ref, computed, onMounted, onUnmounted } from 'vue';
import { useI18n } from '@jeesite/core/hooks/web/useI18n';
import { BasicForm, FormSchema, useForm } from '@jeesite/core/components/Form';
import { useMessage } from '@jeesite/core/hooks/web/useMessage';
import { BasicModal, useModalInner } from '@jeesite/core/components/Modal';
import { BizFolders, bizFolderTreeData } from '@jeesite/biz/api/biz/folders';
import { BizMyfiles, bizMyfilesEdit } from '@jeesite/biz/api/biz/myfiles';
import { useUserStore } from '@jeesite/core/store/modules/user';
const userStore = useUserStore();
const userinfo = computed(() => userStore.getUserInfo);
export default defineComponent({
components: { BasicModal, BasicForm },
emits: ['modalClose'],
setup(props, { emit }) {
const paramId = ref();
const { showMessage } = useMessage();
const { t } = useI18n('biz.myfiles');
const record = ref<BizFolders>({} as BizFolders);
const inputFormSchemas: FormSchema<BizFolders>[] = [
{
label: t('目录名称'),
field: 'folderId',
fieldLabel: 'folderName',
component: 'TreeSelect',
componentProps: {
api: bizFolderTreeData,
params: { loginCode: userinfo.value.loginCode },
allowClear: true,
},
required: true,
},
{
label: t('文件名称'),
field: 'fileName',
component: 'Input',
componentProps: {
maxlength: 52,
},
required: true,
},
];
// 表单注册核心逻辑
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm<BizFolders>({
labelWidth: 120,
schemas: inputFormSchemas,
baseColProps: { md: 24, lg: 12 },
});
const { createMessage } = useMessage();
const [register, { setModalProps, closeModal }] = useModalInner(async (data: any) => {
setModalProps({ loading: true });
await resetFields();
paramId.value = data.id;
record.value = (data || {}) as BizFolders;
record.value.__t = new Date().getTime();
await setFieldsValue(record.value);
setModalProps({ loading: false });
});
async function handleSubmit() {
try {
setModalProps({ confirmLoading: true });
const data = await validate();
const params: any = {
id : paramId.value,
};
const res = await bizMyfilesEdit(params, data);
showMessage(res.message);
handleCancel();
} catch (error: any) {
console.error('移动文件失败:', error);
} finally {
setModalProps({ confirmLoading: false });
}
}
// 取消按钮逻辑
const handleCancel = () => {
resetFields();
emit('modalClose');
closeModal();
};
return {
register,
closeModal,
handleCancel,
registerForm,
inputFormSchemas,
handleSubmit,
};
},
});
</script>
<style>
</style>

View File

@@ -379,7 +379,9 @@
<div class="card-divider"></div>
<div class="file-card-actions">
<span class="folder-name-label" :title="file.folderName">
{{ file.folderName }}
<a-button type="link" size="small" @click="openInputModal(true,file)" >
{{ file.folderName }}
</a-button>
</span>
<div class="action-buttons">
<a-button type="link" size="small" @click="downloadFiles(file)" >
@@ -396,8 +398,9 @@
</div>
</div>
</div>
<UploadModal @register="uploadregister" @modalClose="getFileList({ params: ParamsFolders})"/>
<FolderModal @register="folderregister" @modalClose="handleFolderModalClose" />
<UploadModal @register="registerUpload" @modalClose="getFileList({ params: ParamsFolders})"/>
<FolderModal @register="registerFolder" @modalClose="handleFolderModalClose" />
<InputModal @register="registerModal" @modalClose="getFileList({ params: ParamsFolders})" />
</template>
<script setup lang="ts">
@@ -410,6 +413,7 @@ import { useGlobSetting } from '@jeesite/core/hooks/setting';
import { downloadByUrl } from '@jeesite/core/utils/file/download';
import UploadModal from './upload.vue';
import FolderModal from './folder.vue';
import InputModal from './form.vue';
import { bizFoldersSave, bizFoldersAllData, bizFolderItemAll, bizFoldersDelete } from '@jeesite/biz/api/biz/folders';
import { BizMyfiles, bizMyfilesEdit, bizMyfilesListAll, bizMyfilesDelete } from '@jeesite/biz/api/biz/myfiles';
@@ -419,8 +423,10 @@ const userStore = useUserStore();
const userinfo = computed(() => userStore.getUserInfo);
import { BasicTree } from '@jeesite/core/components/Tree';
const [uploadregister, { openModal: openUploadModal }] = useModal();
const [folderregister, { openModal: openfolderModal }] = useModal();
const [registerModal, { openModal: openInputModal }] = useModal();
const [registerUpload, { openModal: openUploadModal }] = useModal();
const [registerFolder, { openModal: openfolderModal }] = useModal();
interface FolderNode {
id: string;

View File

@@ -8,12 +8,12 @@
<TabPane key="2" tab="我的待办">
<ItemsInfo />
</TabPane>
<TabPane key="3" tab="字典管理">
<TableInfo />
</TabPane>
<TabPane key="4" tab="文件管理">
<TabPane key="3" tab="文件管理">
<MyfileInfo />
</TabPane>
<TabPane key="4" tab="字典管理">
<TableInfo />
</TabPane>
</Tabs>
</div>
</template>