面授课讲师同步PC

This commit is contained in:
zhangsir
2024-12-03 15:23:07 +08:00
parent 9c77a0b2c6
commit 2a07e05315
7 changed files with 180 additions and 38 deletions

View File

@@ -4,3 +4,4 @@ export const GET_USER_LIST = `/manageApi/admin/CheckUser/userInfo`
export const GET_USER_INFO = `/manageApi/admin/thirdApi/user/searchList`
// export const GET_USER_LIST = `/admin/CheckUser/userInfo`
// export const GET_USER_INFO = `/admin/thirdApi/user/searchList`
export const GET_USER_INFO_OLDURL = `/userbasic/user/getUserBaseInfoById`

23
src/hooks/useOrgName.js Normal file
View File

@@ -0,0 +1,23 @@
/**截取机构名称路径namePath最后两段不包含第一个 */
const useOrgName = (namePath) => {
let newName = namePath;
if (newName) {
let names = newName.split('/');
let len = names.length;
//使用最后两们
if (len > 1) {
newName = names[1];
if (!newName) {
newName = names[0]
}
}
}
return newName;
};
export {
useOrgName
}

View File

@@ -108,12 +108,12 @@
<div class="talk">面授课讲师</div>
<div class="box" style="width: 80px; right: 0px"></div>
</div>
<div class="teachermain">
<img class="teacherAvatar" :src="teacherInfo?.avatar"/>
<div class="teachermain" v-for="item in teacherItem">
<img class="teacherAvatar" :src="item?.avatar" />
<div style="flex: 1; margin-left: 11px; margin-right: 13px">
<div class="teacherName">{{ data.planDto?.teacher }}</div>
<div class="teacherName">{{ item?.realName }}</div>
<div class="teacherIntro">
{{ data.planDto?.bandDesc }}
{{ useOrgName(item?.orgNamePath) }}
</div>
</div>
</div>
@@ -346,16 +346,17 @@
<script setup>
import TitleHead from "@/components/TitleHead.vue";
import ReturnHead from "@/components/ReturnHead.vue";
import {computed, onBeforeMount, ref} from "vue";
import {computed, onBeforeMount, ref,watch} from "vue";
import FileTypeImg from "@/components/FileTypeImg.vue";
import {request, useRequest} from "@/api/request";
import {request, useRequest,boeRequest} from "@/api/request";
import {STU_OFFCOURSE_DETAIL, TASK_OFFCOURSE_NOTASK_SIGN,} from "@/api/api";
import {useRoute, useRouter} from "vue-router";
import {useUserInfo} from "@/api/utils";
import {ElMessage} from "element-plus";
import dayjs from "dayjs";
import isBetween from "dayjs/plugin/isBetween";
import { GET_USER_INFO_OLDURL} from "@/api/ThirdApi";
import { useOrgName } from "@/hooks/useOrgName.js";
const router = useRouter();
onBeforeMount(() => dayjs.extend(isBetween));
const returnclick = () => {
@@ -366,7 +367,29 @@ const {
} = useRoute();
const { data } = useRequest(STU_OFFCOURSE_DETAIL, { courseId,usePermission:true });
const teacherItem = ref([])
watch(() => data.value, (val) => {
const teacherIds = val?.planDto?.offteachers?.map(item=>item.teacherId)
const teacherLists = []
teacherIds.map(item=>{
teacherLists.push(boeRequest(GET_USER_INFO_OLDURL,{ userId: item }))
})
Promise.all(teacherLists).then(responses => {
responses.map((arr)=>{
const userInfo = arr.result;
userInfo.avatar = userInfo?.avatar
? userInfo?.avatar.includes('upload')
? userInfo?.avatar
: '/upload' + userInfo?.avatar
: '/800e23f7-b58c-4192-820d-0c6a2b7544cc.png';
const index = teacherIds.indexOf(userInfo.userId)
userInfo.realName = val.planDto.offteachers[index]?.teacherName
teacherItem.value.push(userInfo)
})
}).catch(error => {
console.log(error)
})
});
const teacherInfo = useUserInfo(computed(() => data.value?.planDto?.teacherId));
const isAllowSign = computed(() => dayjs().isBetween(dayjs(data.value.planDto?.beginTime).subtract(data.value.planDto?.beforeStart || 0, "minute"), dayjs(data.value.planDto?.afterStart ? data.value.planDto?.beginTime : data.value.planDto?.endTime).add(data.value.planDto?.afterStart || 0, "minute")));

View File

@@ -49,12 +49,12 @@
<div class="talk">面授课讲师</div>
<div class="box" style="width: 80px; right: 0px"></div>
</div>
<div class="teachermain">
<img class="teacherAvatar" :src="teacherInfo?.avatar" />
<div class="teachermain" v-for="item in teacherItem">
<img class="teacherAvatar" :src="item?.avatar" />
<div style="flex: 1; margin-left: 11px; margin-right: 13px">
<div class="teacherName">{{ data.planDto?.teacher }}</div>
<div class="teacherName">{{ item?.realName }}</div>
<div class="teacherIntro">
{{ data.planDto?.bandDesc }}
{{ useOrgName(item?.orgNamePath) }}
</div>
</div>
</div>
@@ -147,15 +147,16 @@
<script setup>
import ReturnHead from "@/components/ReturnHead.vue";
import {computed, ref,} from "vue";
import {computed, ref,watch} from "vue";
import FileTypeImg from "@/components/FileTypeImg.vue";
import {request, useRequest} from "@/api/request";
import {request, useRequest,boeRequest} from "@/api/request";
import {FACETEACH_SIGNUP, STU_OFFCOURSE_DETAIL} from "@/api/api";
import {useRoute, useRouter} from "vue-router";
import {useUserInfo} from "@/api/utils";
import {ElLoading, ElMessage} from "element-plus";
import dayjs from "dayjs";
import { GET_USER_INFO_OLDURL} from "@/api/ThirdApi";
import { useOrgName } from "@/hooks/useOrgName.js";
const router = useRouter();
const returnclick = () => {
router.back();
@@ -176,6 +177,29 @@ const closeLoading = () => {
loading.value.close();
};
const { data } = useRequest(STU_OFFCOURSE_DETAIL, { courseId }, () => closeLoading());
const teacherItem = ref([])
watch(() => data.value, (val) => {
const teacherIds = val?.planDto?.offteachers?.map(item=>item.teacherId)
const teacherLists = []
teacherIds.map(item=>{
teacherLists.push(boeRequest(GET_USER_INFO_OLDURL,{ userId: item }))
})
Promise.all(teacherLists).then(responses => {
responses.map((arr)=>{
const userInfo = arr.result;
userInfo.avatar = userInfo?.avatar
? userInfo?.avatar.includes('upload')
? userInfo?.avatar
: '/upload' + userInfo?.avatar
: '/800e23f7-b58c-4192-820d-0c6a2b7544cc.png';
const index = teacherIds.indexOf(userInfo.userId)
userInfo.realName = val.planDto.offteachers[index]?.teacherName
teacherItem.value.push(userInfo)
})
}).catch(error => {
console.log(error)
})
});
const teacherInfo = useUserInfo(computed(() => data.value?.planDto?.teacherId));
const activeName = ref("first");

View File

@@ -54,12 +54,12 @@
<div class="talk">面授课讲师</div>
<div class="box" style="width: 80px; right: 0px"></div>
</div>
<div class="teachermain">
<img class="teacherAvatar" :src="teacherInfo?.avatar" />
<div class="teachermain" v-for="item in teacherItem">
<img class="teacherAvatar" :src="item?.avatar" />
<div style="flex: 1; margin-left: 11px; margin-right: 13px">
<div class="teacherName">{{ data.planDto?.teacher }}</div>
<div class="teacherName">{{ item?.realName }}</div>
<div class="teacherIntro">
{{ data.planDto?.bandDesc }}
{{ useOrgName(item?.orgNamePath) }}
</div>
</div>
</div>
@@ -153,15 +153,16 @@
<script setup>
import ReturnHead from "@/components/ReturnHead.vue";
import {computed, ref} from "vue";
import {computed, ref,watch} from "vue";
import FileTypeImg from "@/components/FileTypeImg.vue";
import {request, useRequest} from "@/api/request";
import {request, useRequest,boeRequest} from "@/api/request";
import {FACETEACH_SIGNUP, STU_OFFCOURSE_DETAIL} from "@/api/api";
import {useRoute, useRouter} from "vue-router";
import {useUserInfo} from "@/api/utils";
import {ElLoading, ElMessage} from "element-plus";
import dayjs from "dayjs";
import { GET_USER_INFO_OLDURL} from "@/api/ThirdApi";
import { useOrgName } from "@/hooks/useOrgName.js";
const router = useRouter();
const returnclick = () => {
router.back();
@@ -180,7 +181,29 @@ const openLoading = () => {
openLoading();
const closeLoading = () => loading.value.close();
const { data } = useRequest(STU_OFFCOURSE_DETAIL, { courseId }, () => closeLoading());
const teacherItem = ref([])
watch(() => data.value, (val) => {
const teacherIds = val?.planDto?.offteachers?.map(item=>item.teacherId)
const teacherLists = []
teacherIds.map(item=>{
teacherLists.push(boeRequest(GET_USER_INFO_OLDURL,{ userId: item }))
})
Promise.all(teacherLists).then(responses => {
responses.map((arr)=>{
const userInfo = arr.result;
userInfo.avatar = userInfo?.avatar
? userInfo?.avatar.includes('upload')
? userInfo?.avatar
: '/upload' + userInfo?.avatar
: '/800e23f7-b58c-4192-820d-0c6a2b7544cc.png';
const index = teacherIds.indexOf(userInfo.userId)
userInfo.realName = val.planDto.offteachers[index]?.teacherName
teacherItem.value.push(userInfo)
})
}).catch(error => {
console.log(error)
})
});
const teacherInfo = useUserInfo(computed(() => data.value?.planDto?.teacherId));
const activeName = ref("first");

View File

@@ -81,12 +81,12 @@
<div class="talk">面授课讲师</div>
<div class="box" style="width: 80px; right: 0px"></div>
</div>
<div class="teachermain">
<img class="teacherAvatar" :src="teacherInfo?.avatar" />
<div class="teachermain" v-for="item in teacherItem">
<img class="teacherAvatar" :src="item?.avatar" />
<div style="flex: 1; margin-left: 11px; margin-right: 13px">
<div class="teacherName">{{ data.planDto?.teacher }}</div>
<div class="teacherName">{{ item?.realName }}</div>
<div class="teacherIntro">
{{ data.planDto?.bandDesc }}
{{ useOrgName(item?.orgNamePath) }}
</div>
</div>
</div>
@@ -183,9 +183,9 @@
<script setup>
import ReturnHead from "@/components/ReturnHead.vue";
import {computed, onBeforeMount, ref,} from "vue";
import {computed, onBeforeMount, ref,watch} from "vue";
import FileTypeImg from "@/components/FileTypeImg.vue";
import {request, useRequest} from "@/api/request";
import {request, useRequest,boeRequest} from "@/api/request";
import {FACETEACH_SIGNUP, STU_OFFCOURSE_DETAIL} from "@/api/api";
import {useRoute, useRouter} from "vue-router";
import {useUserInfo} from "@/api/utils";
@@ -193,7 +193,8 @@ import {ElLoading, ElMessage} from "element-plus";
import CommentReply from "@/components/CommentReply.vue";
import dayjs from "dayjs";
import isBetween from "dayjs/plugin/isBetween";
import { GET_USER_INFO_OLDURL} from "@/api/ThirdApi";
import { useOrgName } from "@/hooks/useOrgName.js";
const router = useRouter();
const returnclick = () => {
router.back();
@@ -215,6 +216,29 @@ const closeLoading = () => {
loading.value.close();
};
const { data } = useRequest(STU_OFFCOURSE_DETAIL, { courseId }, () => closeLoading());
const teacherItem = ref([])
watch(() => data.value, (val) => {
const teacherIds = val?.planDto?.offteachers?.map(item=>item.teacherId)
const teacherLists = []
teacherIds.map(item=>{
teacherLists.push(boeRequest(GET_USER_INFO_OLDURL,{ userId: item }))
})
Promise.all(teacherLists).then(responses => {
responses.map((arr)=>{
const userInfo = arr.result;
userInfo.avatar = userInfo?.avatar
? userInfo?.avatar.includes('upload')
? userInfo?.avatar
: '/upload' + userInfo?.avatar
: '/800e23f7-b58c-4192-820d-0c6a2b7544cc.png';
const index = teacherIds.indexOf(userInfo.userId)
userInfo.realName = val.planDto.offteachers[index]?.teacherName
teacherItem.value.push(userInfo)
})
}).catch(error => {
console.log(error)
})
});
const isAllowSign = computed(() => dayjs().isBetween(dayjs(data.value?.planDto?.beginTime).subtract(data.value?.planDto?.beforeStart || 0, "minute"), dayjs(data.value?.planDto?.afterStart ? data.value?.planDto?.beginTime : data.value?.planDto?.endTime).add(data.value?.planDto?.afterStart || 0, "minute")));
const teacherInfo = useUserInfo(computed(() => data.value?.planDto?.teacherId));
const activeName = ref("first");

View File

@@ -76,12 +76,12 @@
<div class="talk">面授课讲师</div>
<div class="box" style="width: 80px; right: 0px"></div>
</div>
<div class="teachermain">
<img class="teacherAvatar" :src="teacherInfo?.avatar"/>
<div class="teachermain" v-for="item in teacherItem">
<img class="teacherAvatar" :src="item?.avatar" />
<div style="flex: 1; margin-left: 11px; margin-right: 13px">
<div class="teacherName">{{ data.planDto?.teacher }}</div>
<div class="teacherName">{{ item?.realName }}</div>
<div class="teacherIntro">
{{ data.planDto?.bandDesc }}
{{ useOrgName(item?.orgNamePath) }}
</div>
</div>
</div>
@@ -189,21 +189,45 @@
<script setup>
import TitleHead from "@/components/TitleHead.vue";
import ReturnHead from "@/components/ReturnHead.vue";
import {computed, onBeforeMount, ref} from "vue";
import {computed, onBeforeMount, ref,watch} from "vue";
import FileTypeImg from "@/components/FileTypeImg.vue";
import {request, useRequest} from "@/api/request";
import {request, useRequest,boeRequest} from "@/api/request";
import {STU_OFFCOURSE_DETAIL, TASK_OFFCOURSE_NOTASK_SIGN,} from "@/api/api";
import {useRoute, useRouter} from "vue-router";
import {useUserInfo} from "@/api/utils";
import {ElMessage} from "element-plus";
import dayjs from "dayjs";
import isBetween from "dayjs/plugin/isBetween";
import { GET_USER_INFO_OLDURL} from "@/api/ThirdApi";
import { useOrgName } from "@/hooks/useOrgName.js";
onBeforeMount(() => dayjs.extend(isBetween));
const router = useRouter();
const returnclick = () => router.back();
const { query: { courseId, type, id: taskId, projectStatus, projectEndTime } } = useRoute();
const { data } = useRequest(STU_OFFCOURSE_DETAIL, { courseId });
const teacherItem = ref([])
watch(() => data.value, (val) => {
const teacherIds = val?.planDto?.offteachers?.map(item=>item.teacherId)
const teacherLists = []
teacherIds.map(item=>{
teacherLists.push(boeRequest(GET_USER_INFO_OLDURL,{ userId: item }))
})
Promise.all(teacherLists).then(responses => {
responses.map((arr)=>{
const userInfo = arr.result;
userInfo.avatar = userInfo?.avatar
? userInfo?.avatar.includes('upload')
? userInfo?.avatar
: '/upload' + userInfo?.avatar
: '/800e23f7-b58c-4192-820d-0c6a2b7544cc.png';
const index = teacherIds.indexOf(userInfo.userId)
userInfo.realName = val.planDto.offteachers[index]?.teacherName
teacherItem.value.push(userInfo)
})
}).catch(error => {
console.log(error)
})
});
const teacherInfo = useUserInfo(computed(() => data.value?.planDto?.teacherId));
const isAllowSign = computed(() => dayjs().isBetween(dayjs(data.value?.planDto?.beginTime).subtract(data.value?.planDto?.beforeStart || 0, "minute"), dayjs(data.value?.planDto?.afterStart ? data.value?.planDto?.beginTime : data.value?.planDto?.endTime).add(data.value?.planDto?.afterStart || 0, "minute")));
const activeName = ref("first");