diff --git a/src/views/formalities/formalitiesAreConsolidated/index.vue b/src/views/formalities/formalitiesAreConsolidated/index.vue index fad4d4a..2e693de 100644 --- a/src/views/formalities/formalitiesAreConsolidated/index.vue +++ b/src/views/formalities/formalitiesAreConsolidated/index.vue @@ -82,11 +82,18 @@ - + diff --git a/src/views/project/attendance/index.vue b/src/views/project/attendance/index.vue index 9d79f7f..b99239a 100644 --- a/src/views/project/attendance/index.vue +++ b/src/views/project/attendance/index.vue @@ -31,6 +31,7 @@ 搜索 重置 + 导出 @@ -234,6 +235,17 @@ const dialog = reactive({ details: false, title: '' }); +const now = new Date(); + +// 获取年份(4位数字) +const year = now.getFullYear(); + +// 获取月份(注意:getMonth() 返回 0-11,需要 +1 转换为 1-12) +const month = now.getMonth() + 1; + +// 格式化月份为两位数(不足两位补0),拼接成年月字符串 +const currentYearMonth = `${year}-${month.toString().padStart(2, '0')}`; + const echartsOption = ref({}); const initFormData: AttendanceForm = { id: undefined, @@ -260,7 +272,7 @@ const data = reactive>({ pageNum: 1, pageSize: 10, userName: undefined, - clockDate: undefined, + clockDate: currentYearMonth, clockStatus: undefined, commuter: undefined, projectId: currentProject.value?.id, @@ -454,7 +466,19 @@ const init = () => { handleQuery(); }); }; - +const onExport = () => { + try { + console.log(queryParams.value.clockDate); + proxy?.download( + 'project/attendance/exportList', + { projectId: currentProject.value?.id, clockDate: queryParams.value.clockDate }, + `考勤列表_${queryParams.value.clockDate}.xlsx` + ); + } catch (error) { + ElMessage.error('导出失败,请重试'); + console.error('文件导出错误:', error); + } +}; //监听项目id刷新数据 const listeningProject = watch( () => currentProject.value?.id, diff --git a/src/views/project/busSalaryDetails/component/detail.vue b/src/views/project/busSalaryDetails/component/detail.vue new file mode 100644 index 0000000..db5d506 --- /dev/null +++ b/src/views/project/busSalaryDetails/component/detail.vue @@ -0,0 +1,102 @@ + + + diff --git a/src/views/project/busSalaryDetails/component/edit.vue b/src/views/project/busSalaryDetails/component/edit.vue new file mode 100644 index 0000000..0d08744 --- /dev/null +++ b/src/views/project/busSalaryDetails/component/edit.vue @@ -0,0 +1,146 @@ + + + diff --git a/src/views/project/busSalaryDetails/component/model.ts b/src/views/project/busSalaryDetails/component/model.ts new file mode 100644 index 0000000..70b95a1 --- /dev/null +++ b/src/views/project/busSalaryDetails/component/model.ts @@ -0,0 +1,57 @@ +export interface BusSalaryDetailsTableColumns { + id:number + sfzNumber:string; // 身份证 + name:string; // 户名 + account:string; // 账户 + sumDuration:number; // 当月总时长 + salary:number; // 薪水(天) + dateOfIssue:string; // 发放年月 + lister:string; // 制表人 + createdAt:string; // 创建时间 +} + + +export interface BusSalaryDetailsInfoData { + id:number|undefined; // 主键ID + sfzNumber:string|undefined; // 身份证 + name:string|undefined; // 户名 + account:string|undefined; // 账户 + sumDuration:number|undefined; // 当月总时长 + salary:number|undefined; // 薪水(天) + projectId:number|undefined; // 项目id + teamId:number|undefined; // 班组id + projectName:string|undefined; // 项目名称 + teamName:string|undefined; // 班组名称 + dateOfIssue:string|undefined; // 发放年月 + lister:string|undefined; // 制表人 + createdAt:string|undefined; // 创建时间 + updatedAt:string|undefined; // 更新时间 + deletedAt:string|undefined; // 删除时间 +} + + +export interface BusSalaryDetailsTableDataState { + ids:any[]; + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + id: number|undefined; + sfzNumber: string|undefined; + projectId: number|undefined; + teamId: number|undefined; + dateRange: string[]; + }; + }; +} + + +export interface BusSalaryDetailsEditState{ + loading:boolean; + isShowDialog: boolean; + formData:BusSalaryDetailsInfoData; + rules: object; +} \ No newline at end of file diff --git a/src/views/project/busSalaryDetails/index.vue b/src/views/project/busSalaryDetails/index.vue new file mode 100644 index 0000000..227cbdb --- /dev/null +++ b/src/views/project/busSalaryDetails/index.vue @@ -0,0 +1,563 @@ + + +