JM-admin/src/view/teacherManage/teacherDetail.vue
2023-04-18 14:33:31 +08:00

340 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script setup>
// 引入依赖
import api from '@/api/teacher'
import capi from '@/api/course'
import custom from '@/utils/custom'
import {formatDate} from '@/utils/format'
// import { toSQLLine } from '@/utils/stringFun'
// import WarningBar from '@/components/warningBar/warningBar.vue'
// import coursePool from './components/coursePool.vue'
// import exercisesPool from '@/view/course/components/exercisesPool.vue'
import {ref,onMounted,provide } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { useRouter, useRoute } from 'vue-router'
import cityList from '@/utils/city.json';
const router = useRouter()
const route = useRoute()
// 变量
const teacherInfo = ref({})
const imgs = ref([])
// 生命周期
onMounted(() => {
getTeacherDetail()
})
// funstions
async function getTeacherDetail() {
const res = await api.getTeacherDetail({id:route.params.id})
if(res.code === 0) {
teacherInfo.value = res.data
// let teacher_cert = JSON.parse(res.data.teacher_cert)
let skill_cert = JSON.parse(res.data.skill_cert)
imgs.value = [...skill_cert]
// console.log(imgs.value)
}
}
const tip_text = ref('')
const dialogVisible = ref(false)
const a_type = ref(0)
function actionFunc(type) {
dialogVisible.value = true
a_type.value = type
switch (type){
case 3:
tip_text.value = '是否同意该教师申请?';
break;
case 2:
tip_text.value = '是否拒绝该教师申请?';
break;
}
}
async function actionOk() { // 确认提交
const res = await api.teacherOperator({
teacher_id:teacherInfo.value.user_id,
status:a_type.value
})
if(res.code === 0) {
ElMessage({
type: 'success',
message: res.msg
})
getTeacherDetail()
}
}
function getStateName(state) {
let str = ''
switch (state){
case 1:
str = '待审核'
break;
case 2:
str = '已拒绝'
break;
case 3:
str = '已同意'
break;
}
return str
}
const detail_type = ref({
dealDetailMoney:'dealDetailMoney',
courseListDetail:'courseListDetail', // 教师课程列表
examListDetail:'examListDetail', // 教师试卷列表
dealDetailPoint:'dealDetailPoint',
// learningDetail:'learningDetail',
// testDetail:'testDetail',
// auctionDetail:'auctionDetail',// 竞拍
// raffleDetail:'raffleDetail',// 抽奖
})
function toDealDetail(type) {
router.push({name:type,params:{user_id:route.params.id}})
}
</script>
<template>
<div>
<!-- 基本信息-->
<div class="gva-search-box">
<div class="baseInfo-box">
<div class="bb-item">
<img class="avatar" :src="teacherInfo.avatar" alt="">
</div>
<div class="bb-item">
昵称{{teacherInfo.name}}
</div>
<div class="bb-item">
ID{{teacherInfo.user_id}}
</div>
<div class="bb-item">
注册时间{{custom.dateFmt(teacherInfo.CreatedAt)}}
</div>
<!-- <div class="bb-item">-->
<!-- 身份教师-->
<!-- </div>-->
<!-- <div class="bb-item">-->
<!-- 邀请人数105-->
<!-- </div>-->
</div>
</div>
<!-- 章节信息-->
<div class="gva-table-box">
<div class="detail-info-box">
<div class="dib-row">
<div class="dib-item">
<div class="di-left">身份证号码</div>
<div class="di-right">{{teacherInfo.id_card}}</div>
</div>
<div class="dib-item">
<div class="di-left">手机号码</div>
<div class="di-right">{{teacherInfo.phone}}</div>
</div>
</div>
<div class="dib-row">
<div class="dib-item">
<div class="di-left">区域</div>
<div class="di-right">{{cityList[teacherInfo.province]?.province}}</div>
</div>
<div class="dib-item">
<div class="di-left">提交时间</div>
<div class="di-right">{{formatDate(teacherInfo.CreatedAt)}}</div>
</div>
<div class="dib-item">
<div class="di-left">就职单位</div>
<div class="di-right">{{teacherInfo.college}}</div>
</div>
<div class="dib-item">
<div class="di-left">任职行业</div>
<div class="di-right">{{teacherInfo.major}}</div>
</div>
</div>
<div class="dib-row">
<div class="dib-item">
<div class="di-left">余额</div>
<div class="di-right">{{teacherInfo.balance}}</div>
</div>
<div class="dib-item">
<div class="di-left">累计收益</div>
<div class="di-right">{{teacherInfo.income}}</div>
</div>
<div class="dib-item link-item" @click="toDealDetail(detail_type.dealDetailMoney)">
<div class="di-left">查看交易明细</div>
</div>
</div>
<div class="dib-row">
<div class="dib-item">
<div class="di-left">积分</div>
<div class="di-right">{{teacherInfo.points}}</div>
</div>
<!-- <div class="dib-item">-->
<!-- <div class="di-left">累计收益</div>-->
<!-- <div class="di-right">{{teacherInfo.income}}</div>-->
<!-- </div>-->
<div class="dib-item link-item" @click="toDealDetail(detail_type.dealDetailPoint)">
<div class="di-left">查看交易明细</div>
</div>
</div>
<div class="dib-row">
<div class="dib-item">
<div class="di-left">上架课程</div>
<div class="di-right">{{teacherInfo.publish_course}}</div>
</div>
<div class="dib-item link-item" @click="toDealDetail(detail_type.courseListDetail)">
<div class="di-left">查看课程列表</div>
</div>
</div>
<div class="dib-row">
<div class="dib-item">
<div class="di-left">上架测试</div>
<div class="di-right">{{teacherInfo.publish_exam}}</div>
</div>
<div class="dib-item link-item" @click="toDealDetail(detail_type.examListDetail)">
<div class="di-left ">查看试卷列表</div>
</div>
</div>
<div class="dib-row">
<div class="dib-item">
<div class="di-left">销售次数(课程)</div>
<div class="di-right">{{teacherInfo.course_sale}}</div>
</div>
<div class="dib-item">
<div class="di-left">累计金额</div>
<div class="di-right">{{teacherInfo.course_income}}</div>
</div>
<!-- <div class="dib-item link-item">-->
<!-- <div class="di-left">查看销售记录</div>-->
<!-- </div>-->
</div>
<div class="dib-row">
<div class="dib-item">
<div class="di-left">销售次数(测试)</div>
<div class="di-right">{{teacherInfo.exam_sale}}</div>
</div>
<div class="dib-item">
<div class="di-left">累计金额</div>
<div class="di-right">{{teacherInfo.exam_income}}</div>
</div>
<!-- <div class="dib-item link-item">-->
<!-- <div class="di-left">查看销售记录</div>-->
<!-- </div>-->
</div>
<div class="dib-row" style="margin-top: 50px">
<div class="dib-item">
<div class="di-left">资质证书多张</div>
</div>
<div class="dib-item">
<el-image
v-for="(item,i) in imgs"
class="img-css"
:src="item"
:zoom-rate="1.2"
:preview-src-list="imgs"
:initial-index="4"
fit="cover"
/>
</div>
</div>
</div>
<!-- 操作区域-->
<!-- <div class="action-box" v-if="teacherInfo.status == 1">-->
<!-- <div class="a-btn approved" @click="actionFunc(3)">同意</div>-->
<!-- <div class="a-btn refuse" @click="actionFunc(2)">拒绝</div>-->
<!-- </div>-->
<!-- <div class="action-box" v-else>-->
<!-- <div class="state-text" :class="{'reuse-text':teacherInfo.status == 2}">{{getStateName(teacherInfo.status)}}</div>-->
<!-- </div>-->
<div class="action-box">
<div class="state-text" :class="{'reuse-text':teacherInfo.status == 2}">{{getStateName(teacherInfo.status)}}</div>
</div>
</div>
<el-dialog
v-model="dialogVisible"
title="操作提醒"
width="30%"
:before-close="handleClose"
>
<span>{{tip_text}}</span>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="actionOk">
确定
</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<style scoped lang="scss">
.action-box{
display: flex;
margin-top: 20px;
justify-content: center;
.a-btn{
background: rgb(60, 106, 112);
color: white;
padding: 10px 50px;
cursor: pointer;
margin: 10px;
border-radius: 5px;
}
.approved{
}
.refuse{
background: white !important;
color:rgb(60, 106, 112) !important;
border: 1px solid rgb(60, 106, 112) !important;
}
}
/*基本信息*/
.gva-search-box{
.baseInfo-box{
display: flex;
align-items: center;
//justify-content: space-around;
.bb-item{
margin: 10px 20px;
.avatar{
width: 50px;
height: 50px;
border-radius: 50%;
border: 1px solid #cdcdcd;
}
}
}
}
/*详细信息*/
.text{
color: red !important;
}
.state-text{
font-size: 15px;
color: gray;
}
.gva-table-box{
.detail-info-box{
.dib-row{
overflow: hidden;
.link-item{
color: #3C6A70 !important;
cursor: pointer;
}
.dib-item{
//color: gray;
padding: 10px 0;
display: flex;
float: left;
margin-right: 30px;
.di-left{
}
.img-css{
width: 100px;
height: 100px;
margin: 0 10px 10px 0;
cursor: pointer;
}
}
}
}
}
</style>