|
|
@@ -212,13 +212,7 @@
|
|
|
|
|
|
<!-- 分页组件 -->
|
|
|
<div class="pagination-container">
|
|
|
- <pagination
|
|
|
- v-show="total > 0"
|
|
|
- :total="total"
|
|
|
- :page="queryParams.pageNum"
|
|
|
- :limit="queryParams.pageSize"
|
|
|
- @pagination="getList"
|
|
|
- />
|
|
|
+ <pagination v-show="total > 0" :total="total" :page="queryParams.pageNum" :limit="queryParams.pageSize" @pagination="getList" />
|
|
|
</div>
|
|
|
</el-card>
|
|
|
|
|
|
@@ -244,10 +238,10 @@
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="签到地点" :span="2">{{ currentRecord.checkInLocation || '-' }}</el-descriptions-item>
|
|
|
<el-descriptions-item label="工作内容" :span="2">
|
|
|
- <div style="white-space: pre-wrap;">{{ currentRecord.workContent || '-' }}</div>
|
|
|
+ <div style="white-space: pre-wrap">{{ currentRecord.workContent || '-' }}</div>
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="备注" :span="2">
|
|
|
- <div style="white-space: pre-wrap;">{{ currentRecord.remark || '-' }}</div>
|
|
|
+ <div style="white-space: pre-wrap">{{ currentRecord.remark || '-' }}</div>
|
|
|
</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
</div>
|
|
|
@@ -277,10 +271,7 @@
|
|
|
<div class="calendar-day">
|
|
|
<div class="day-number">{{ data.day.split('-').slice(2).join('') }}</div>
|
|
|
<div v-if="getAttendanceStatus(data.day)" class="attendance-status">
|
|
|
- <el-tag
|
|
|
- :type="getStatusTagType(getAttendanceStatus(data.day))"
|
|
|
- size="small"
|
|
|
- >
|
|
|
+ <el-tag :type="getStatusTagType(getAttendanceStatus(data.day))" size="small">
|
|
|
{{ getStatusText(getAttendanceStatus(data.day)) }}
|
|
|
</el-tag>
|
|
|
</div>
|
|
|
@@ -350,25 +341,13 @@
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="签到状态" prop="status">
|
|
|
<el-select v-model="addForm.status" placeholder="请选择签到状态" style="width: 100%">
|
|
|
- <el-option
|
|
|
- v-for="item in attendanceStatusOptions"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
+ <el-option v-for="item in attendanceStatusOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="工作时长" prop="workDuration">
|
|
|
- <el-input-number
|
|
|
- v-model="addForm.workDuration"
|
|
|
- :min="0"
|
|
|
- :max="24"
|
|
|
- :precision="1"
|
|
|
- placeholder="工作时长(小时)"
|
|
|
- style="width: 100%"
|
|
|
- />
|
|
|
+ <el-input-number v-model="addForm.workDuration" :min="0" :max="24" :precision="1" placeholder="工作时长(小时)" style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -376,24 +355,10 @@
|
|
|
<el-input v-model="addForm.checkInLocation" placeholder="请输入签到地点" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="工作内容" prop="workContent">
|
|
|
- <el-input
|
|
|
- v-model="addForm.workContent"
|
|
|
- type="textarea"
|
|
|
- :rows="3"
|
|
|
- placeholder="请输入工作内容"
|
|
|
- maxlength="500"
|
|
|
- show-word-limit
|
|
|
- />
|
|
|
+ <el-input v-model="addForm.workContent" type="textarea" :rows="3" placeholder="请输入工作内容" maxlength="500" show-word-limit />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="备注" prop="remark">
|
|
|
- <el-input
|
|
|
- v-model="addForm.remark"
|
|
|
- type="textarea"
|
|
|
- :rows="2"
|
|
|
- placeholder="请输入备注"
|
|
|
- maxlength="200"
|
|
|
- show-word-limit
|
|
|
- />
|
|
|
+ <el-input v-model="addForm.remark" type="textarea" :rows="2" placeholder="请输入备注" maxlength="200" show-word-limit />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
@@ -447,24 +412,12 @@ const addForm = ref({
|
|
|
|
|
|
// 新增表单验证规则
|
|
|
const addFormRules = ref({
|
|
|
- studentName: [
|
|
|
- { required: true, message: '请输入学生姓名', trigger: 'blur' }
|
|
|
- ],
|
|
|
- studentNumber: [
|
|
|
- { required: true, message: '请输入学号', trigger: 'blur' }
|
|
|
- ],
|
|
|
- className: [
|
|
|
- { required: true, message: '请输入班级', trigger: 'blur' }
|
|
|
- ],
|
|
|
- companyName: [
|
|
|
- { required: true, message: '请输入实习单位', trigger: 'blur' }
|
|
|
- ],
|
|
|
- checkInTime: [
|
|
|
- { required: true, message: '请选择签到时间', trigger: 'change' }
|
|
|
- ],
|
|
|
- status: [
|
|
|
- { required: true, message: '请选择签到状态', trigger: 'change' }
|
|
|
- ]
|
|
|
+ studentName: [{ required: true, message: '请输入学生姓名', trigger: 'blur' }],
|
|
|
+ studentNumber: [{ required: true, message: '请输入学号', trigger: 'blur' }],
|
|
|
+ className: [{ required: true, message: '请输入班级', trigger: 'blur' }],
|
|
|
+ companyName: [{ required: true, message: '请输入实习单位', trigger: 'blur' }],
|
|
|
+ checkInTime: [{ required: true, message: '请选择签到时间', trigger: 'change' }],
|
|
|
+ status: [{ required: true, message: '请选择签到状态', trigger: 'change' }]
|
|
|
});
|
|
|
|
|
|
// 查询参数
|
|
|
@@ -500,7 +453,7 @@ const getList = () => {
|
|
|
queryParams.value.checkTimeEnd = '';
|
|
|
}
|
|
|
|
|
|
- listInternshipDaily(queryParams.value).then(response => {
|
|
|
+ listInternshipDaily(queryParams.value).then((response) => {
|
|
|
internshipDailyList.value = response.rows;
|
|
|
total.value = response.total;
|
|
|
loading.value = false;
|
|
|
@@ -510,13 +463,15 @@ const getList = () => {
|
|
|
// 获取统计数据
|
|
|
const getStatisticsData = () => {
|
|
|
console.log('正在获取统计数据...');
|
|
|
- getStatistics().then(response => {
|
|
|
- console.log('统计数据响应:', response);
|
|
|
- statistics.value = response.data || {};
|
|
|
- console.log('设置的统计数据:', statistics.value);
|
|
|
- }).catch(error => {
|
|
|
- console.error('获取统计数据失败:', error);
|
|
|
- });
|
|
|
+ getStatistics()
|
|
|
+ .then((response) => {
|
|
|
+ console.log('统计数据响应:', response);
|
|
|
+ statistics.value = response.data || {};
|
|
|
+ console.log('设置的统计数据:', statistics.value);
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ console.error('获取统计数据失败:', error);
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
// 搜索按钮操作
|
|
|
@@ -528,7 +483,7 @@ const handleQuery = () => {
|
|
|
// 重置按钮操作
|
|
|
const resetQuery = () => {
|
|
|
daterangeCheckTime.value = [];
|
|
|
- proxy.resetForm("queryFormRef");
|
|
|
+ proxy.resetForm('queryFormRef');
|
|
|
queryParams.value = {
|
|
|
pageNum: 1,
|
|
|
pageSize: 10,
|
|
|
@@ -581,17 +536,19 @@ const cancelAdd = () => {
|
|
|
|
|
|
// 提交新增
|
|
|
const submitAdd = () => {
|
|
|
- proxy.$refs.addFormRef.validate(valid => {
|
|
|
+ proxy.$refs.addFormRef.validate((valid) => {
|
|
|
if (valid) {
|
|
|
addLoading.value = true;
|
|
|
|
|
|
- addInternshipDaily(addForm.value).then(response => {
|
|
|
- proxy.$modal.msgSuccess("新增签到记录成功");
|
|
|
- addDialogVisible.value = false;
|
|
|
- getList();
|
|
|
- }).finally(() => {
|
|
|
- addLoading.value = false;
|
|
|
- });
|
|
|
+ addInternshipDaily(addForm.value)
|
|
|
+ .then((response) => {
|
|
|
+ proxy.$modal.msgSuccess('新增签到记录成功');
|
|
|
+ addDialogVisible.value = false;
|
|
|
+ getList();
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ addLoading.value = false;
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
@@ -625,16 +582,14 @@ const loadCalendarData = () => {
|
|
|
month: calendarMonth.value
|
|
|
};
|
|
|
|
|
|
- getCalendar(currentStudent.value.studentId, params).then(response => {
|
|
|
+ getCalendar(currentStudent.value.studentId, params).then((response) => {
|
|
|
calendarData.value = response.data || [];
|
|
|
});
|
|
|
};
|
|
|
|
|
|
// 获取考勤状态
|
|
|
const getAttendanceStatus = (date) => {
|
|
|
- const record = calendarData.value.find(item =>
|
|
|
- item.checkDate === date
|
|
|
- );
|
|
|
+ const record = calendarData.value.find((item) => item.checkDate === date);
|
|
|
return record ? record.status : null;
|
|
|
};
|
|
|
|
|
|
@@ -662,9 +617,13 @@ const getStatusText = (status) => {
|
|
|
|
|
|
// 导出按钮操作
|
|
|
const handleExport = () => {
|
|
|
- proxy.download('zsjy/internship/daily/export', {
|
|
|
- ...queryParams.value
|
|
|
- }, `实习日常记录_${new Date().getTime()}.xlsx`);
|
|
|
+ proxy.download(
|
|
|
+ 'zsjy/internship/daily/export',
|
|
|
+ {
|
|
|
+ ...queryParams.value
|
|
|
+ },
|
|
|
+ `实习日常记录_${new Date().getTime()}.xlsx`
|
|
|
+ );
|
|
|
};
|
|
|
|
|
|
// 初始化
|