mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/student-h5.git
synced 2025-12-07 01:46:45 +08:00
面授课讲师同步PC
This commit is contained in:
@@ -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
23
src/hooks/useOrgName.js
Normal 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
|
||||
}
|
||||
@@ -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")));
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user