diff --git a/src/pages/base/message/index.vue b/src/pages/base/message/index.vue
index c697906..6999a62 100644
--- a/src/pages/base/message/index.vue
+++ b/src/pages/base/message/index.vue
@@ -41,7 +41,7 @@
diff --git a/src/pages/view/routine/gwlz/index.vue b/src/pages/view/routine/gwlz/index.vue
index 44a5b4f..ea46c33 100644
--- a/src/pages/view/routine/gwlz/index.vue
+++ b/src/pages/view/routine/gwlz/index.vue
@@ -10,7 +10,7 @@
@@ -46,24 +46,29 @@
类型:
{{ data.docType }}
+ 提交时间:
+ {{ formatDate(data.tjrtime) }}
-
- 紧急程度:
-
- {{ getUrgencyText(data.urgencyLevel) }}
-
-
-
- 审批进度:
- {{ getApproverProgress(data) }}
-
-
- 提交人:
- {{ data.tjrxm || '未知' }}
-
-
- 提交时间:
- {{ formatTime(data.tjrtime || data.createdTime) }}
+
+
+
+
+
+
+
+
+ 🖼️
+ 🎥
+ 📄
+ 📎
+
+ {{ getFileName(file) }}
+
@@ -71,31 +76,19 @@
-
-
+
+
@@ -459,6 +628,7 @@ onMounted(() => {
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
+ line-clamp: 2;
-webkit-box-orient: vertical;
word-break: break-word;
}
@@ -477,6 +647,14 @@ onMounted(() => {
color: white;
}
&.status-submitted {
+ background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);
+ color: white;
+ }
+ &.status-pending {
+ background: linear-gradient(135deg, #ff9800 0%, #f57c00 100%);
+ color: white;
+ }
+ &.status-completed {
background: linear-gradient(135deg, #66bb6a 0%, #4caf50 100%);
color: white;
}
@@ -506,10 +684,9 @@ onMounted(() => {
}
.info-label {
- width: 80px;
color: #666;
font-size: 14px;
- margin-right: 8px;
+ margin-right: 0;
flex-shrink: 0;
}
@@ -519,28 +696,53 @@ onMounted(() => {
flex: 1;
}
-.urgency-tag {
- padding: 4px 8px;
- border-radius: 12px;
- font-size: 12px;
- font-weight: 500;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+// 紧急程度相关样式已删除
- &.urgency-low {
- background: linear-gradient(135deg, #66bb6a 0%, #4caf50 100%);
- color: white;
+// 附件相关样式
+.attachments-section {
+ margin-top: 12px;
+ padding-top: 12px;
+ border-top: 1px solid #f0f0f0;
+}
+
+// 附件标题样式已删除
+
+.attachments-list {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+}
+
+.attachment-item {
+ display: flex;
+ align-items: center;
+ padding: 6px 10px;
+ background: #f8f9fa;
+ border: 1px solid #e9ecef;
+ border-radius: 6px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ max-width: 200px;
+
+ &:active {
+ transform: translateY(1px);
+ background: #e9ecef;
+ border-color: #007aff;
}
- &.urgency-normal {
- background: linear-gradient(135deg, #90a4ae 0%, #78909c 100%);
- color: white;
+
+ .attachment-icon {
+ margin-right: 6px;
+ font-size: 16px;
+ flex-shrink: 0;
}
- &.urgency-high {
- background: linear-gradient(135deg, #ffa726 0%, #ff9800 100%);
- color: white;
- }
- &.urgency-urgent {
- background: linear-gradient(135deg, #ef5350 0%, #e53935 100%);
- color: white;
+
+ .attachment-name {
+ font-size: 12px;
+ color: #333;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ flex: 1;
}
}
@@ -557,6 +759,32 @@ onMounted(() => {
gap: 8px;
}
+// 按钮样式,与状态标签大小相同
+.action-button-approve,
+.action-button-detail {
+ padding: 4px 8px !important;
+ border-radius: 12px !important;
+ font-size: 12px !important;
+ font-weight: 500 !important;
+ white-space: nowrap !important;
+ flex-shrink: 0 !important;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
+ height: auto !important;
+ min-height: 24px !important;
+}
+
+.action-button-approve {
+ background: linear-gradient(135deg, #ff9800 0%, #f57c00 100%) !important;
+ color: white !important;
+ border: none !important;
+}
+
+.action-button-detail {
+ background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%) !important;
+ color: white !important;
+ border: none !important;
+}
+
// 响应式优化
@media (max-width: 375px) {
.query-component {
diff --git a/src/pages/view/routine/kefuxuncha/xcXkList.vue b/src/pages/view/routine/kefuxuncha/xcXkList.vue
index e9f7a1c..bba361c 100644
--- a/src/pages/view/routine/kefuxuncha/xcXkList.vue
+++ b/src/pages/view/routine/kefuxuncha/xcXkList.vue
@@ -35,6 +35,10 @@
开课地点:
{{ xkkc.kcdd }}
+
+ 开课年级:
+ {{ xkkc.njname || '暂无' }}
+
上课人数:
上课地点:
{{ xkkc.kcdd }}
+
+ 开课年级:
+ {{ xkkc.njname || '暂无' }}
+
+
+ 上课人数:
+ {{ xkkc.hasNum || 0 }} | {{ xkkc.maxNum || 0 }}
+
diff --git a/src/pages/view/routine/qd/confirm.vue b/src/pages/view/routine/qd/confirm.vue
index e36d011..383946a 100644
--- a/src/pages/view/routine/qd/confirm.vue
+++ b/src/pages/view/routine/qd/confirm.vue
@@ -71,6 +71,42 @@
+
+
+
+
+ 签到时间未开始
+ 签到打卡时间还未开始,请耐心等待
+ 请关注签到开始时间
+
+
+ 会议信息
+
+ 会议名称:
+ {{ meetingInfo?.qdmc || '未设置' }}
+
+
+ 签到时间:
+ {{ formatTime(meetingInfo?.qdkstime) }} - {{ formatTime(meetingInfo?.qdjstime) }}
+
+
+ 打卡开始:
+ {{ formatTime(meetingInfo?.dkkstime) }}
+
+
+ 会议地点:
+ {{ meetingInfo?.qdwz || '未设置' }}
+
+
+ 当前时间:
+ {{ formatTime(new Date()) }}
+
+
+
+
+
+
+
@@ -184,7 +220,7 @@ const qdzxId = ref('');
const qrExpireTime = ref(60); // 默认60秒
// 当前步骤
-const currentStep = ref<'sign' | 'confirm' | 'success' | 'notInList' | 'timeExpired' | 'qrExpired' | 'alreadySigned'>('confirm');
+const currentStep = ref<'sign' | 'confirm' | 'success' | 'notInList' | 'timeNotStarted' | 'timeExpired' | 'qrExpired' | 'alreadySigned'>('confirm');
// 用户信息
const userInfo = ref(null);
@@ -286,10 +322,19 @@ const loadMeetingInfo = async () => {
if (result && result.resultCode === 1) {
meetingInfo.value = result.result;
- // 1. 验证签到时间是否已结束
+ // 1. 验证签到时间
const currentTime = new Date();
+ const startTime = meetingInfo.value?.dkkstime ? new Date(meetingInfo.value.dkkstime) : null;
const endTime = meetingInfo.value?.qdjstime ? new Date(meetingInfo.value.qdjstime) : null;
+ // 检查签到时间是否未开始
+ if (startTime && currentTime < startTime) {
+ // 签到时间未开始,显示"签到时间未开始"界面
+ currentStep.value = 'timeNotStarted';
+ return;
+ }
+
+ // 检查签到时间是否已结束
if (endTime && currentTime > endTime) {
// 签到时间已结束,显示"签到时间已结束"界面
currentStep.value = 'timeExpired';
@@ -418,18 +463,22 @@ const goBack = () => {
.info-item {
display: flex;
- margin-bottom: 12px;
+ margin-bottom: 16px;
+ align-items: flex-start;
.info-label {
font-size: 14px;
color: #666;
min-width: 80px;
+ text-align: right !important;
+ margin-right: 12px;
}
.info-value {
font-size: 14px;
color: #333;
flex: 1;
+ text-align: left !important;
}
}
}
@@ -542,18 +591,22 @@ const goBack = () => {
.info-item {
display: flex;
- margin-bottom: 8px;
+ margin-bottom: 12px;
+ align-items: flex-start;
.info-label {
font-size: 14px;
color: #666;
min-width: 80px;
+ text-align: right !important;
+ margin-right: 12px;
}
.info-value {
font-size: 14px;
color: #333;
flex: 1;
+ text-align: left !important;
}
}
}
@@ -568,6 +621,37 @@ const goBack = () => {
font-size: 16px;
}
+/* 签到时间未开始阶段 */
+.time-not-started-step {
+ background: white;
+ border-radius: 16px;
+ padding: 40px 24px;
+ margin-top: 40px;
+ text-align: center;
+}
+
+.time-not-started-content {
+ .time-not-started-title {
+ display: block;
+ font-size: 24px;
+ font-weight: 600;
+ color: #333;
+ margin: 16px 0 8px;
+ }
+
+ .time-not-started-subtitle {
+ font-size: 14px;
+ color: #666;
+ margin-bottom: 16px;
+ }
+
+ .time-not-started-tip {
+ font-size: 14px;
+ color: #999;
+ margin-bottom: 24px;
+ }
+}
+
/* 签到时间已结束阶段 */
.time-expired-step {
background: white;
@@ -647,18 +731,22 @@ const goBack = () => {
.info-item {
display: flex;
- margin-bottom: 8px;
+ margin-bottom: 12px;
+ align-items: flex-start;
.info-label {
font-size: 14px;
color: #666;
min-width: 80px;
+ text-align: right !important;
+ margin-right: 12px;
}
.info-value {
font-size: 14px;
color: #333;
flex: 1;
+ text-align: left !important;
}
}
}
diff --git a/src/pages/view/routine/qd/detail.vue b/src/pages/view/routine/qd/detail.vue
index 3b0d1c9..23755c8 100644
--- a/src/pages/view/routine/qd/detail.vue
+++ b/src/pages/view/routine/qd/detail.vue
@@ -17,11 +17,15 @@
{{ qdInfo.qdwz || '未设置' }}
- 开始时间:
+ 签到时间:
+ {{ formatTime(qdInfo.dkkstime) }}
+
+
+ 会议开始:
{{ formatTime(qdInfo.qdkstime) }}
- 结束时间:
+ 会议结束:
{{ formatTime(qdInfo.qdjstime) }}
@@ -49,6 +53,10 @@
{{ signedCount }}
已签到
+
+ {{ lateCount }}
+ 迟到
+
{{ unsignedCount }}
未签到
@@ -141,6 +149,7 @@ interface QdInfo {
jsId: string;
jsxm: string;
qdFbtime: string;
+ dkkstime: string;
qdkstime: string;
qdjstime: string;
qdry: string;
@@ -166,11 +175,28 @@ const currentFilter = ref('all');
const totalCount = computed(() => teacherList.value.length);
const signedCount = computed(() => teacherList.value.filter(t => t.qdStatus === '1').length);
const unsignedCount = computed(() => teacherList.value.filter(t => t.qdStatus === '0').length);
+const lateCount = computed(() => {
+ if (!qdInfo.value.qdkstime) return 0;
+ const meetingStartTime = new Date(qdInfo.value.qdkstime);
+ return teacherList.value.filter(t => {
+ if (t.qdStatus !== '1' || !t.qdwctime) return false;
+ const signInTime = new Date(t.qdwctime);
+ return signInTime > meetingStartTime;
+ }).length;
+});
const filteredTeacherList = computed(() => {
switch (currentFilter.value) {
case 'signed':
return teacherList.value.filter(t => t.qdStatus === '1');
+ case 'late':
+ if (!qdInfo.value.qdkstime) return [];
+ const meetingStartTime = new Date(qdInfo.value.qdkstime);
+ return teacherList.value.filter(t => {
+ if (t.qdStatus !== '1' || !t.qdwctime) return false;
+ const signInTime = new Date(t.qdwctime);
+ return signInTime > meetingStartTime;
+ });
case 'unsigned':
return teacherList.value.filter(t => t.qdStatus === '0');
default:
@@ -225,6 +251,9 @@ const showTeacherList = (filter: string) => {
case 'signed':
popupTitle.value = `已签到人员 (${signedCount.value}人)`;
break;
+ case 'late':
+ popupTitle.value = `迟到人员 (${lateCount.value}人)`;
+ break;
case 'unsigned':
popupTitle.value = `未签到人员 (${unsignedCount.value}人)`;
break;
@@ -421,6 +450,10 @@ const handleBack = () => {
&.unsigned {
color: #dc3545;
}
+
+ &.late {
+ color: #ff9800;
+ }
}
.stat-label {
diff --git a/src/pages/view/routine/qd/index.vue b/src/pages/view/routine/qd/index.vue
index 0e9c19a..3144069 100644
--- a/src/pages/view/routine/qd/index.vue
+++ b/src/pages/view/routine/qd/index.vue
@@ -61,11 +61,15 @@
{{ data.qdwz || '未设置' }}
- 开始时间:
+ 签到时间:
+ {{ formatTime(data.dkkstime) }}
+
+
+ 会议开始:
{{ formatTime(data.qdkstime) }}
- 结束时间:
+ 会议结束:
{{ formatTime(data.qdjstime) }}
@@ -129,6 +133,7 @@ interface QdItem {
jsId: string; // 发布人ID
jsxm: string; // 发布人姓名
qdFbtime: string; // 发布时间
+ dkkstime: string; // 签到打卡开始时间
qdkstime: string; // 签到开始时间
qdjstime: string; // 签到结束时间
qdry: string; // 签到人员
@@ -396,6 +401,7 @@ onMounted(() => {
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
+ line-clamp: 2;
-webkit-box-orient: vertical;
word-break: break-word;
}
diff --git a/src/pages/view/routine/qd/publish.vue b/src/pages/view/routine/qd/publish.vue
index 637db3e..0dd52b6 100644
--- a/src/pages/view/routine/qd/publish.vue
+++ b/src/pages/view/routine/qd/publish.vue
@@ -5,14 +5,18 @@
+
+ *
+ 签到名称
+
@@ -20,13 +24,16 @@
+
+ *
+ 签到地点
+
@@ -34,7 +41,10 @@
+
+
+
+
+
+
+ *
+ 签到开始
+
+
+
+ {{ formData.dkkstime || '请选择签到打卡开始时间' }}
+
+
+
+
+
+
- 开始时间
+
+ *
+ 会议开始
+
- {{ formData.qdkstime || '请选择开始时间' }}
+ {{ formData.qdkstime || '请选择会议开始时间' }}
@@ -95,10 +126,13 @@
- 结束时间
+
+ *
+ 会议结束
+
- {{ formData.qdjstime || '请选择结束时间' }}
+ {{ formData.qdjstime || '请选择会议结束时间' }}
@@ -106,6 +140,7 @@
+
@@ -171,6 +206,7 @@ const formData = reactive({
mdqz: '0',
qdkstime: '',
qdjstime: '',
+ dkkstime: '',
jsxm: '',
qdFbtime: '',
targetTeachers: [] as TeacherInfo[]
@@ -273,12 +309,17 @@ const handlePublish = async () => {
}
if (!formData.qdkstime) {
- uni.showToast({ title: '请选择开始时间', icon: 'none' });
+ uni.showToast({ title: '请选择会议开始时间', icon: 'none' });
return;
}
if (!formData.qdjstime) {
- uni.showToast({ title: '请选择结束时间', icon: 'none' });
+ uni.showToast({ title: '请选择会议结束时间', icon: 'none' });
+ return;
+ }
+
+ if (!formData.dkkstime) {
+ uni.showToast({ title: '请选择签到打卡开始时间', icon: 'none' });
return;
}
@@ -312,6 +353,7 @@ const handlePublish = async () => {
mdqz: formData.mdqz,
qdkstime: formatDateTime(formData.qdkstime),
qdjstime: formatDateTime(formData.qdjstime),
+ dkkstime: formatDateTime(formData.dkkstime),
jsId: js.id,
jsxm: formData.jsxm,
qdFbtime: formData.qdFbtime,
@@ -372,38 +414,72 @@ const handlePublish = async () => {
margin-bottom: 15px;
}
-.title-input {
- font-size: 18px;
- font-weight: bold;
- color: #333;
-
- :deep(.uni-easyinput__content) {
- background: transparent;
- }
-
- :deep(.uni-easyinput__content-input) {
- color: #333;
- }
-
- :deep(.uni-easyinput__placeholder-class) {
- color: #999;
- }
+.form-label {
+ display: flex;
+ align-items: center;
+ margin-bottom: 8px;
}
-.content-input {
+.required-asterisk {
+ color: #ff4757;
+ font-size: 16px;
+ font-weight: bold;
+ margin-right: 4px;
+}
+
+.label-text {
+ font-size: 16px;
+ font-weight: 600;
+ color: #333;
+}
+
+.section-title-container {
+ display: flex;
+ align-items: center;
+}
+
+.list-label-container {
+ display: flex;
+ align-items: center;
+}
+
+.input-field {
font-size: 16px;
color: #333;
:deep(.uni-easyinput__content) {
- background: transparent;
+ background: #fff;
+ border: 1px solid #e0e0e0;
+ border-radius: 8px;
+ padding: 12px;
+ min-height: 44px;
}
:deep(.uni-easyinput__content-input) {
color: #333;
+ font-size: 16px;
}
:deep(.uni-easyinput__placeholder-class) {
color: #999;
+ font-size: 16px;
+ }
+
+ :deep(.uni-easyinput__content):focus-within {
+ border-color: #007aff;
+ box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.1);
+ }
+
+ &.single-line {
+ :deep(.uni-easyinput__content) {
+ min-height: 44px;
+ height: 44px;
+ }
+
+ :deep(.uni-easyinput__content-input) {
+ line-height: 44px;
+ height: 44px;
+ }
}
}
diff --git a/src/pages/view/routine/qd/qr-code.vue b/src/pages/view/routine/qd/qr-code.vue
index e75441a..90c125a 100644
--- a/src/pages/view/routine/qd/qr-code.vue
+++ b/src/pages/view/routine/qd/qr-code.vue
@@ -26,6 +26,10 @@
+
+ 签到时间:
+ {{ formatTime(meetingInfo?.dkkstime) }}
+
会议时间:
{{ formatTime(meetingInfo?.qdkstime) }} - {{ formatTime(meetingInfo?.qdjstime) }}
diff --git a/src/pages/view/routine/qd/selectTeachers.vue b/src/pages/view/routine/qd/selectTeachers.vue
index b1e600a..b1d4153 100644
--- a/src/pages/view/routine/qd/selectTeachers.vue
+++ b/src/pages/view/routine/qd/selectTeachers.vue
@@ -43,7 +43,7 @@
-
+
{{ getSecondSelectLabel() }}
@@ -256,7 +256,8 @@ const onSelectTypeChange = async (e: any) => {
// 按科目:需要加载科目数据
await loadKmData();
} else if (selectType.value === 4) {
- // 按职务:需要加载职务数据
+ // 按职务:默认选择党政职务,直接加载职务数据
+ zwType.value = 1; // 默认选择党政职务
await loadZwData();
}
};
@@ -329,20 +330,20 @@ const loadAllTeachersFromStorage = async () => {
console.log('parsedData是否为对象:', typeof parsedData === 'object');
console.log('parsedData的所有属性:', Object.keys(parsedData || {}));
console.log('parsedData的data属性:', parsedData?.data);
- console.log('parsedData的allJs属性:', parsedData?.allJs);
+ console.log('parsedData的allJsBasicInfoVo属性:', parsedData?.allJsBasicInfoVo);
- // 检查数据结构,可能allJs直接在parsedData下
+ // 检查数据结构,可能allJsBasicInfoVo直接在parsedData下
let allJsData;
- if (parsedData.data && parsedData.data.allJs) {
- allJsData = parsedData.data.allJs;
- console.log('从parsedData.data.allJs获取数据');
- } else if (parsedData.allJs) {
- allJsData = parsedData.allJs;
- console.log('从parsedData.allJs获取数据');
+ if (parsedData.data && parsedData.data.allJsBasicInfoVo) {
+ allJsData = parsedData.data.allJsBasicInfoVo;
+ console.log('从parsedData.data.allJsBasicInfoVo获取数据');
+ } else if (parsedData.allJsBasicInfoVo) {
+ allJsData = parsedData.allJsBasicInfoVo;
+ console.log('从parsedData.allJsBasicInfoVo获取数据');
} else {
- console.warn('localStorage中没有找到allJs数据');
+ console.warn('localStorage中没有找到allJsBasicInfoVo数据');
console.warn('可用的属性:', Object.keys(parsedData));
- uni.showToast({ title: '未找到教师数据(allJs)', icon: 'none' });
+ uni.showToast({ title: '未找到教师数据(allJsBasicInfoVo)', icon: 'none' });
return;
}
@@ -440,18 +441,18 @@ const loadTeachersByNjIdFromStorage = async () => {
parsedData = storageData;
}
- // 检查数据结构,可能allJs直接在parsedData下
+ // 检查数据结构,可能allJsBasicInfoVo直接在parsedData下
let allJsData;
- if (parsedData.data && parsedData.data.allJs) {
- allJsData = parsedData.data.allJs;
- console.log('从parsedData.data.allJs获取数据');
- } else if (parsedData.allJs) {
- allJsData = parsedData.allJs;
- console.log('从parsedData.allJs获取数据');
+ if (parsedData.data && parsedData.data.allJsBasicInfoVo) {
+ allJsData = parsedData.data.allJsBasicInfoVo;
+ console.log('从parsedData.data.allJsBasicInfoVo获取数据');
+ } else if (parsedData.allJsBasicInfoVo) {
+ allJsData = parsedData.allJsBasicInfoVo;
+ console.log('从parsedData.allJsBasicInfoVo获取数据');
} else {
- console.warn('localStorage中没有找到allJs数据');
+ console.warn('localStorage中没有找到allJsBasicInfoVo数据');
console.warn('可用的属性:', Object.keys(parsedData));
- uni.showToast({ title: '未找到教师数据(allJs)', icon: 'none' });
+ uni.showToast({ title: '未找到教师数据(allJsBasicInfoVo)', icon: 'none' });
return;
}
@@ -509,6 +510,8 @@ const loadTeachersByZwIdFromStorage = async () => {
console.log('=== 开始从localStorage按职务加载教师数据 ===');
console.log('选中的职务ID:', selectTwoType.value);
console.log('职务类型:', zwType.value === 1 ? '党政职务' : '其他职务');
+ console.log('selectTwoType.value类型:', typeof selectTwoType.value);
+ console.log('selectTwoType.value是否为数组:', Array.isArray(selectTwoType.value));
// 从localStorage获取所有教师数据
const storageData = uni.getStorageSync('app-common');
@@ -535,15 +538,15 @@ const loadTeachersByZwIdFromStorage = async () => {
parsedData = storageData;
}
- // 检查数据结构,从parsedData.data.allJs获取教师数据
- if (!parsedData.data || !parsedData.data.allJs) {
+ // 检查数据结构,从parsedData.data.allJsBasicInfoVo获取教师数据
+ if (!parsedData.data || !parsedData.data.allJsBasicInfoVo) {
console.warn('localStorage中没有找到教师数据');
console.warn('可用的属性:', Object.keys(parsedData || {}));
uni.showToast({ title: '未找到教师数据', icon: 'none' });
return;
}
- const allJsData = parsedData.data.allJs;
+ const allJsData = parsedData.data.allJsBasicInfoVo;
console.log('allJs数据结构:', allJsData);
// 检查allJs是否有result字段
@@ -556,26 +559,42 @@ const loadTeachersByZwIdFromStorage = async () => {
const teacherArray = allJsData.result;
console.log('教师数组数据:', teacherArray);
console.log('教师数组长度:', teacherArray.length);
+
+ // 打印前几个教师的数据结构,特别关注职务字段
+ if (teacherArray.length > 0) {
+ console.log('第一个教师完整数据:', teacherArray[0]);
+ console.log('第一个教师的dzzw字段:', teacherArray[0].dzzw);
+ console.log('第一个教师的qtzw字段:', teacherArray[0].qtzw);
+ if (teacherArray.length > 1) {
+ console.log('第二个教师完整数据:', teacherArray[1]);
+ console.log('第二个教师的dzzw字段:', teacherArray[1].dzzw);
+ console.log('第二个教师的qtzw字段:', teacherArray[1].qtzw);
+ }
+ }
// 根据职务类型和选中的职务ID过滤教师
- const selectedZwId = selectTwoType.value[0]; // 假设只选择一个职务
+ const selectedZwIds = selectTwoType.value; // 支持多个职务选择
+ console.log('选中的职务ID列表:', selectedZwIds);
+
const filteredTeachers = teacherArray.filter((teacher: any) => {
let hasZwId = false;
if (zwType.value === 1) {
// 党政职务:检查dzzw字段
if (teacher.dzzw) {
- const dzzwArray = teacher.dzzw.split(',');
- hasZwId = dzzwArray.includes(selectedZwId);
+ const dzzwArray = teacher.dzzw.split(',').map((id: string) => id.trim());
+ // 检查教师是否有任何一个选中的党政职务
+ hasZwId = selectedZwIds.some(selectedId => dzzwArray.includes(selectedId));
}
- console.log(`教师${teacher.jsxm || teacher.name}的党政职务:`, teacher.dzzw, '是否匹配职务ID:', selectedZwId, '结果:', hasZwId);
+ console.log(`教师${teacher.jsxm || teacher.name}的党政职务:`, teacher.dzzw, '是否匹配职务ID列表:', selectedZwIds, '结果:', hasZwId);
} else if (zwType.value === 2) {
// 其他职务:检查qtzw字段
if (teacher.qtzw) {
- const qtzwArray = teacher.qtzw.split(',');
- hasZwId = qtzwArray.includes(selectedZwId);
+ const qtzwArray = teacher.qtzw.split(',').map((id: string) => id.trim());
+ // 检查教师是否有任何一个选中的其他职务
+ hasZwId = selectedZwIds.some(selectedId => qtzwArray.includes(selectedId));
}
- console.log(`教师${teacher.jsxm || teacher.name}的其他职务:`, teacher.qtzw, '是否匹配职务ID:', selectedZwId, '结果:', hasZwId);
+ console.log(`教师${teacher.jsxm || teacher.name}的其他职务:`, teacher.qtzw, '是否匹配职务ID列表:', selectedZwIds, '结果:', hasZwId);
}
return hasZwId;
@@ -725,9 +744,9 @@ const loadZwData = async () => {
}
}
- // 如果没有缓存数据,则调用getZwListByLx方法获取并缓存
- if (!zwData) {
- console.log('localStorage中没有职务数据,开始调用getZwListByLx获取并缓存');
+ // 如果没有缓存数据或缺少某种职务类型,则调用getZwListByLx方法获取并缓存
+ if (!zwData || !zwData['党政职务'] || !zwData['其他职务']) {
+ console.log('localStorage中没有完整职务数据,开始调用getZwListByLx获取并缓存');
try {
// 导入并调用getZwListByLx方法
@@ -773,7 +792,10 @@ const loadZwData = async () => {
if (filteredData.length === 0) {
console.warn('没有找到对应类型的职务数据');
- uni.showToast({ title: '未找到对应类型的职务数据', icon: 'none' });
+ // 不显示错误提示,因为可能还没有选择具体职务
+ // uni.showToast({ title: '未找到对应类型的职务数据', icon: 'none' });
+ // 设置空数组,让界面显示选择框
+ datas.value = [];
return;
}
@@ -971,15 +993,19 @@ const ensureTeacherDataCached = async () => {
}
// 检查是否已有教师数据
- if (parsedData?.data?.allJs?.result && parsedData.data.allJs.result.length > 0) {
+ if (parsedData?.data?.allJsBasicInfoVo?.result && parsedData.data.allJsBasicInfoVo.result.length > 0) {
hasTeacherData = true;
- console.log('localStorage中已有教师数据,数量:', parsedData.data.allJs.result.length);
+ console.log('localStorage中已有教师数据,数量:', parsedData.data.allJsBasicInfoVo.result.length);
}
- // 检查是否已有职务数据
- if (parsedData?.data?.zw) {
+ // 检查是否已有职务数据(需要同时包含党政职务和其他职务)
+ if (parsedData?.data?.zw &&
+ parsedData.data.zw['党政职务'] &&
+ parsedData.data.zw['其他职务']) {
hasZwData = true;
- console.log('localStorage中已有职务数据');
+ console.log('localStorage中已有完整的职务数据');
+ } else if (parsedData?.data?.zw) {
+ console.log('localStorage中只有部分职务数据,需要重新加载');
}
}
diff --git a/src/pages/view/routine/xk/dm.vue b/src/pages/view/routine/xk/dm.vue
index 4861d71..f26a958 100644
--- a/src/pages/view/routine/xk/dm.vue
+++ b/src/pages/view/routine/xk/dm.vue
@@ -51,7 +51,7 @@
{{ xs.xsXm || xs.xsxm }}
- {{ xs.bjmc }}
+ {{ xs.njmcName || xs.njmc }}{{ xs.bjmc ? ' ' + xs.bjmc : '' }}
@@ -258,6 +258,7 @@ const loadXsList = async () => {
tx: dmXs.tx || dmXs.xstx || dmXs.avatar,
bjmc: dmXs.bjmc,
njmc: dmXs.njmc,
+ njmcName: dmXs.njmcName || dmXs.njmc,
jzxm: dmXs.jzxm,
jzdh: dmXs.jzdh,
xsxm: dmXs.xsxm || dmXs.xm,
diff --git a/src/pages/view/routine/xk/dmIndex.vue b/src/pages/view/routine/xk/dmIndex.vue
index 9d185b2..205bffd 100644
--- a/src/pages/view/routine/xk/dmIndex.vue
+++ b/src/pages/view/routine/xk/dmIndex.vue
@@ -32,6 +32,10 @@
开课地点:
{{ xkkc.kcdd }}
+
+ 开课年级:
+ {{ xkkc.njname || '暂无' }}
+
上课人数:
{{ xkkc.hasNum || 0 }} | {{ xkkc.maxNum || 0 }}
@@ -240,7 +244,6 @@ const goDm = (xkkc: any) => {
} else {
msg = "上课时间未到,无法点名";
}
- // TODO: 测试阶段,默认都可以点名,不计算时间
dmFlag = true;
if (dmFlag) {
setData(xkkc);
diff --git a/src/pages/view/routine/xk/xkList.vue b/src/pages/view/routine/xk/xkList.vue
index f4998ab..6955120 100644
--- a/src/pages/view/routine/xk/xkList.vue
+++ b/src/pages/view/routine/xk/xkList.vue
@@ -35,6 +35,10 @@
开课地点:
{{ xkkc.kcdd }}
+
+ 开课年级:
+ {{ xkkc.njname || '暂无' }}
+
上课人数:
{{ xkkc.hasNum || 0 }} | {{ xkkc.maxNum || 0 }}
diff --git a/src/pages/view/routine/xk/xkkcDetail.vue b/src/pages/view/routine/xk/xkkcDetail.vue
index 4555498..efd5321 100644
--- a/src/pages/view/routine/xk/xkkcDetail.vue
+++ b/src/pages/view/routine/xk/xkkcDetail.vue
@@ -19,6 +19,10 @@
上课周期:
{{ xkkc.skzqmc }}
+
+ 开课年级:
+ {{ xkkc.njname || '暂无' }}
+
上课时间:
{{ formatClassTime(xkkc.skkstime, xkkc.skjstime) }}
@@ -204,8 +208,13 @@ const schema = reactive([
{
field: "jhsj",
label: "计划时间",
- component: "BasicDateTimes",
- componentProps: {},
+ component: "BasicInput",
+ componentProps: {
+ type: "date",
+ placeholder: "请选择计划日期",
+ // 在微信浏览器中强制显示日期选择器
+ style: "position: relative; z-index: 1000;",
+ },
},
{
field: "jhdd",
@@ -222,6 +231,8 @@ const schema = reactive([
},
componentProps: {
type: "textarea",
+ maxlength: -1, // 不限字数
+ showCount: false, // 不显示字数统计
},
},
])