提交dev

This commit is contained in:
daihh
2022-06-07 19:25:01 +08:00
5 changed files with 153 additions and 192 deletions

View File

@@ -14,7 +14,7 @@ VUE_APP_BOE_WEB_URL = 'https://u.boe.com'
VUE_APP_BOE_MOBILE_URL = 'http://192.168.0.10:8082/mobile'
# File路径的基础url
VUE_APP_FILE_BASE_URL = 'http://localhost:8091/upload'
VUE_APP_FILE_BASE_URL = 'http://192.168.0.10:9090/cdn/upload'
# File路径的基础url的相对路径加此项是为了不影响之前的路径配置
VUE_APP_FILE_RELATIVE_PATH = '/upload'

View File

@@ -24,6 +24,19 @@ const lineHeightStyle = new lineHeightAttributor("lineHeight", "line-height", {
scope: Parchment.Scope.INLINE,
whitelist: ["1", "1.5", "2", "3", "4"]
});
const toolbarOptions = [
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
[{ indent: "-1" }, { indent: "+1" }], // 缩进
[{ size: [false,"18px"] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
[{ align: [] }], // 对齐方式
[{ lineheight: ['initial', '1', '1.5', '2', '3', '4'] }],
["clean"], // 清除文本格式
["link", "image"]
]
Quill.register({ 'formats/lineHeight': lineHeightStyle }, true)
export default {
name: "Editor",
@@ -33,6 +46,10 @@ export default {
type: String,
default: "",
},
toobar:{
type: Boolean,
default: true
},
placeholder: {
type: String,
default: "请输入长度大于100个字符的内容",
@@ -68,19 +85,7 @@ export default {
},
// 工具栏配置
toolbar: {
container:[
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
[{ indent: "-1" }, { indent: "+1" }], // 缩进
[{ size: [false,"18px"] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
[{ align: [] }], // 对齐方式
[{ lineheight: ['initial', '1', '1.5', '2', '3', '4'] }],
["clean"], // 清除文本格式
["link", "image"] // 链接、图片、视频, "video"
],
container:this.toobar? toolbarOptions:[],
handlers: {
image: function(value) {
if (value) {

View File

@@ -70,11 +70,16 @@ export function formatDate(date){
// 秒转时分秒
export function formatSeconds(value) {
let result = parseInt(value)
let h = Math.floor(result / 3600) < 10 ? '0' + Math.floor(result / 3600) : Math.floor(result / 3600);
let m = Math.floor((result / 60 % 60)) < 10 ? '0' + Math.floor((result / 60 % 60)) : Math.floor((result / 60 % 60));
let s = Math.floor((result % 60)) < 10 ? '0' + Math.floor((result % 60)) : Math.floor((result % 60));
let d= Math.floor(result / (3600*24));
let last=Math.floor(result % (3600*24));
let h = Math.floor(last / 3600) < 10 ? '0' + Math.floor(last / 3600) : Math.floor(last / 3600);
let m = Math.floor((last / 60 % 60)) < 10 ? '0' + Math.floor((last / 60 % 60)) : Math.floor((last / 60 % 60));
let s = Math.floor((last % 60)) < 10 ? '0' + Math.floor((last % 60)) : Math.floor((last % 60));
let res = '';
if(d>0){
res += `${d}`;
}
if(h !== '00'){
res += `${h}小时`;
}

View File

@@ -1,28 +1,35 @@
<template>
<div class="u-page">
<div style="padding-bottom: 10px;">
<div style="display: flex;justify-content:flex-start;">
<div style="padding: 0px 5px;">
<el-select v-model="query.tSystemId" value-key="id" clearable @change="queryChangeSystem" placeholder="请选择教师体系">
<div>
<el-row :gutter="5">
<el-col :span="4">
<el-select style="width: 100%" v-model="query.tsystemId" value-key="id" clearable @change="queryChangeSystem" placeholder="教师体系">
<el-option v-for="item in systemData" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
<!-- 要在换一个变量与新建区别开 -->
<div style="padding: 0px 5px;">
<el-select v-model="query.tLevelId" clearable value-key="id" placeholder="请选择教师级别">
</el-col>
<el-col :span="4">
<el-select style="width: 100%" v-model="query.tlevelId" clearable value-key="id" placeholder="教师级别">
<el-option v-for="item in queryLevelData" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
<div style="padding: 0px 5px;"><el-input placeholder="请输入姓名" v-model="query.queryName" clearable></el-input></div>
<div style="padding: 0px 5px;">
<el-select v-model="query.salaryId" clearable value-key="id" placeholder="请选择发薪地">
</el-col>
<el-col :span="4">
<el-input style="width: 100%" placeholder="姓名" v-model="query.name" clearable></el-input>
</el-col>
<el-col :span="4">
<el-select style="width: 100%" v-model="query.salaryId" clearable value-key="id" placeholder="发薪地">
<el-option v-for="item in placeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</div>
</div>
<div style="margin-top:10px;padding: 0px 5px;">
<el-button icon="el-icon-search" type="primary" @click="getsearch()">搜索</el-button>
</el-col>
<el-col :span="8">
<el-button icon="el-icon-search" type="primary" @click="loadData(1)">搜索</el-button>
<el-button icon="el-icon-refresh-right" type="primary" @click="reset">重置</el-button>
</el-col>
</el-row>
</div>
<div style="margin-top:10px;padding: 0px 5px;">
<el-button icon="el-icon-circle-plus-outline" type="primary" @click="openDialog">新建教师</el-button>
<el-button icon="el-icon-folder-opened" type="primary" @click="exportsExcel">导出</el-button>
</div>
@@ -39,13 +46,16 @@
<!-- <el-table-column label="创建时间" sortable prop="sysCreateTime"></el-table-column> -->
<el-table-column label="修改时间" sortable width="155" prop="sysUpdateTime"></el-table-column>
<el-table-column label="授课时长" prop="teaching"></el-table-column>
<el-table-column label="教师体系" prop="tsystemName"></el-table-column>
<el-table-column label="教师级别" prop="tlevelName"></el-table-column>
<el-table-column label="发薪地" prop="salaryName"></el-table-column>
<el-table-column label="在职状态" width="90" :filters="[{ text: '在职', value: '0'}, { text: '离职', value: '1' }]"
:filter-method="filterWork">
<template slot-scope="scope">
{{scope.row.waitStatus=='0'?'在职': scope.row.waitStatus=='1' ? '离职' :''}}
</template>
</el-table-column>
<el-table-column label="认证状态" width="90" :filters="[{ text: '未认证', value: '0'}, { text: '已认证', value: '1' }]"
<el-table-column label="认证状态" width="90" :filters="[{ text: '未认证', value: 0}, { text: '已认证', value: 1 }]"
:filter-method="filterCertification">
<template slot-scope="scope">
{{scope.row.certStatus==0 ?'未认证': scope.row.certStatus==1 ? '已认证' :''}}
@@ -69,7 +79,7 @@
</template>
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 70px;">
<div style="text-align: center;margin-top: 50px;">
<el-pagination
background
@size-change="handleSizeChange"
@@ -81,7 +91,7 @@
:total="count">
</el-pagination>
</div>
<div style="height: 100px;"></div>
<div style="height: 50px;"></div>
<el-dialog :title="newOrEdit" custom-class="g-dialog" width="900px" :visible.sync="dialogVisible" :close-on-click-modal='false' >
<el-form label-width="100px" :model="form" ref="form" :rules="rules">
<el-form-item>
@@ -144,6 +154,7 @@
</el-form-item>
<el-form-item label="备注">
<el-input v-model="form.description" clearable type="textarea" :autosize='{ minRows: 3, maxRows: 6 }'></el-input>
<!--<WxEditor :toobar="false" v-model="form.description" :minHeight="50"></WxEditor>-->
</el-form-item>
<el-form-item label="擅长课程">
<el-input v-model="form.courses" clearable placeholder="请输入"></el-input>
@@ -154,14 +165,10 @@
<el-button :loading="saveLoading" type="primary" @click="saveHandle"> </el-button>
</span>
</el-dialog>
<el-dialog
title="教师详情"
:close-on-click-modal="false"
:visible.sync="showTeacherDetails"
width="800px">
<teacher-details v-if="teacherDetailsId != ''" :id="teacherDetailsId" :newId="teacherDetailId"></teacher-details>
<el-dialog title="教师详情" :close-on-click-modal="false" :visible.sync="showTeacherDetails" width="800px">
<teacher-details v-if="teacherDetailId != ''" :id="teacherDetailsId" :newId="teacherDetailId"></teacher-details>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCloseOne()"> </el-button>
<el-button @click="handleCloseOne()"> </el-button>
<!-- <el-button type="primary" @click="showTeacherDetails = false"> </el-button> -->
</span>
</el-dialog>
@@ -169,6 +176,7 @@
</template>
<script>
import WxEditor from '@/components/Editor/index.vue';
import teacherApi from "@/api/modules/teacher";
import teacherBoeApi from "@/api/boe/teacher";
import userApi from "@/api/system/user";
@@ -177,14 +185,14 @@
import { mapGetters } from 'vuex';
export default {
name: 'teacher',
components:{imageUpload,teacherDetails},
components:{imageUpload,teacherDetails,WxEditor},
data(){
return {
query:{
tSystemId:'',
tSystemIds:'',
tLevelId:'',
queryName:'',
tsystemId:'',
tsystemIds:'',
tlevelId:'',
name:'',
salaryId:'',
pageIndex: 1,
pageSize: 10,
@@ -227,7 +235,6 @@
]
},
selectList:[],
queryName:"",
dialogVisible:false,
tableData:[],
searchName:null,
@@ -258,6 +265,7 @@
showTeacherDetails(val) {
if(!val) {
this.teacherDetailsId = '';
this.teacherDetailId = '';
}
}
},
@@ -343,20 +351,14 @@
});
this.levelData=array;
},
getsearch(){
this.pageIndex = 1;
this.loadData(1);
},
reset (){
this.query.queryName = '';
this.query.tSystemId='',
this.query.tLevelId='',
this.query.queryName='',
this.query.name = '';
this.query.tsystemId='',
this.query.tlevelId='',
this.query.salaryId='',
this.query.pageIndex= 1,
this.query.pageSize= 10,
this.$refs.teacherTable.clearFilter();
this.pageIndex = 1;
this.loadData(1);
},
openDialog(){
@@ -373,6 +375,9 @@
waitStatus:0,//在职
certStatus:0,//未认证
}
this.tSystemData = {};
this.tLevelData= {};
this.coverImage = '';
this.dialogVisible=true
},
filterWork(value,row){
@@ -441,8 +446,8 @@
if (res.status == 200 && res.result != null) {
this.havaInfo = true;
this.form.account = res.result.account;
if(res.result.photo != '') {
this.coverImage = this.fileBaseUrl+res.result.photo;
if(res.result.account.avatar != '') {
this.coverImage = this.fileBaseUrl+res.result.account.avatar;
}
this.form.user = res.result;
} else {
@@ -585,15 +590,8 @@
},
loadData(pageIndex) {
this.query.pageIndex = pageIndex;
this.query.tSystemIds = this.query.tSystemId || this.teacherSystemids.join();
teacherApi
.page(
this.query
// pageIndex: this.pageIndex,
// pageSize: this.pageSize,
// name: this.queryName,
)
.then((res) => {
this.query.tsystemIds = this.query.tsystemId || this.teacherSystemids.join();
teacherApi.page(this.query).then((res) => {
if (res.status == 200) {
const result = res.result;
this.tableData = result.list;
@@ -664,33 +662,32 @@
})
ids = ids.join();
}
//如果是勾选的那需要传id的值使用逗号分隔
//get请求
// var eleLink = document.createElement('a');
// eleLink.download = '教师列表';
// eleLink.style.display = 'none';
// eleLink.href = `${process.env.VUE_APP_BASE_API}/xboe/teacher/export?name=${this.queryName}`;
// document.body.appendChild(eleLink);
// eleLink.click();
// 然后移除
// document.body.removeChild(eleLink);
//post请求
var eleForm=document.createElement('form');
eleForm.style="display:none;";
eleForm.method='post';
eleForm.action=`${process.env.VUE_APP_BASE_API}/xboe/teacher/export?name=${this.queryName}`;
eleForm.action=`${process.env.VUE_APP_BASE_API}/xboe/teacher/export?name=${this.query.name}`;
//添加ids条件
var hdnFilePath = document.createElement('input');
hdnFilePath.type = 'hidden';
hdnFilePath.name = 'ids';
hdnFilePath.value = ids;
eleForm.appendChild(hdnFilePath);
//添加查询姓名
var hdnName = document.createElement('input');
hdnName.type = 'hidden';
hdnName.name = 'name';
hdnName.value = this.query.name;
eleForm.appendChild(hdnName);
document.body.appendChild(eleForm);
eleForm.submit();
document.body.removeChild(eleForm);
},
exportCourse(row){
if(!row.sysId){
this.$message({message:'无原系统教师关联,只导出新系统的教师课程',type:'warning'});
}
var eleLink = document.createElement('a');
eleLink.download = '教师授课信息';
eleLink.style.display = 'none';

View File

@@ -22,21 +22,21 @@
</el-col>
</el-form-item>
<el-form-item label="讲师组织:" >
<el-col :span="12">{{form.company_name}}</el-col>
<el-col :span="12">{{form.company_name? form.company_name:'--'}}</el-col>
<el-col :span="12">
<el-form-item label="初始授课时长:">{{formatSeconds(form.default_teaching_time)}}</el-form-item></el-col>
<el-form-item label="初始授课时长:">{{form.default_teaching_time? formatSeconds(form.default_teaching_time):'--'}}</el-form-item></el-col>
</el-form-item>
<el-form-item label="讲师体系:">
<el-col :span="12">{{form.system_name}}</el-col>
<el-col :span="12">{{newForm.tsystemName? newForm.tsystemName:'--'}}</el-col>
<el-col :span="12">
<el-form-item label="讲师级别:">
{{form.level_name}}
{{newForm.tlevelName? newForm.tlevelName:'--'}}
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="总计授课时长:">
<el-col :span="12">{{formatSeconds(form.teaching_time)}}</el-col>
<el-col :span="12">{{form.teaching_time? formatSeconds(form.teaching_time):'--'}}</el-col>
<el-col :span="12">
<el-form-item label="认证状态:">
{{form.is_certify == 1? '已认证':'未认证'}}
@@ -44,10 +44,11 @@
</el-col>
</el-form-item>
<el-form-item label="认证时间:">
<el-col :span="12">{{formatsec(form.certify_at *1000)}}</el-col>
<el-col :span="12">{{form.certify_at? formatsec(form.certify_at *1000):'--'}}</el-col>
<el-col :span="12">
<el-form-item label="认证资料:">
<i style="color:blue" title="点击下载" @click="downloadActioon(form.certification)" class="el-icon-download"></i>
<i style="color:blue" v-if="form.certification" title="点击下载" @click="downloadActioon(form.certification)" class="el-icon-download"></i>
<span v-else>--</span>
</el-form-item>
</el-col>
</el-form-item>
@@ -57,12 +58,12 @@
<!-- <el-col :span="12">--</el-col> -->
<!-- <el-col :span="12"> -->
<el-form-item label="讲师介绍:">
<div v-html="form.description"></div>
<div v-html="newForm.description"></div>
</el-form-item>
<!-- </el-col>
</el-form-item> -->
<el-form-item label="讲师备注:">
{{form.remark}}
{{newForm.remark}}
</el-form-item>
</el-form>
</el-col>
@@ -81,51 +82,29 @@
</el-option>
</el-select></div>
</div>
<el-table height="430"
:data="records.list"
style="width: 100%;margin-top:10px">
<el-table-column
prop="courseCode" width="120"
label="班级编号">
<el-table height="430" :data="records.list" style="width: 100%;margin-top:10px">
<el-table-column prop="courseCode" width="120" label="班级编号">
</el-table-column>
<el-table-column
prop="courseType"
label="类型">
<el-table-column prop="courseType" label="类型">
<template slot-scope="scope">
<span v-if="scope.row.courseType == '1'">面授班</span>
<span v-if="scope.row.courseType == '2'">训练班</span>
<span v-if="scope.row.courseType == '0'">在线班</span>
</template>
</el-table-column>
<el-table-column
prop="courseName" show-overflow-tooltip
label="班级名称" width="180">
<el-table-column prop="courseName" show-overflow-tooltip label="班级名称" width="180">
</el-table-column>
<el-table-column
prop="modName" show-overflow-tooltip
label="模块名称"
width="100">
<el-table-column prop="modName" show-overflow-tooltip label="模块名称" width="100">
</el-table-column>
<el-table-column
prop="teachingTime"
label="授课时长(min)" width="120">
<el-table-column prop="teachingTime" label="授课时长(min)" width="120">
</el-table-column>
<el-table-column
prop="openStartTime"
label="开班时间" width="140">
<el-table-column prop="openStartTime" label="开班时间" width="140">
</el-table-column>
<el-table-column
prop="courseStatus"
label="班级状态"
width="100">
<el-table-column prop="courseStatus" label="班级状态" width="100">
</el-table-column>
<el-table-column
prop="teacherScore"
label="评分">
<el-table-column prop="teacherScore" label="评分">
</el-table-column>
<el-table-column
label="操作"
width="120">
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-button type="text" @click="recordsUpdate(scope.row)">修改</el-button>
<el-button type="text" @click="recordsDel(scope.row)">删除</el-button>
@@ -146,28 +125,11 @@
</div> -->
</el-tab-pane>
<el-tab-pane label="授课资格" name="third">
<el-table height="430"
:data="qualify.list"
style="width: 100%">
<el-table-column
prop="courseCode"
label="课程编号"
width="180">
</el-table-column>
<el-table-column
prop="courseName" show-overflow-tooltip
label="课程名称"
width="250">
</el-table-column>
<el-table-column
prop="dictionaryName"
label="课程分类"
width="180">
</el-table-column>
<el-table-column
prop="courseType"
label="课程类型"
width="100">
<el-table height="430" :data="qualify.list" style="width: 100%">
<el-table-column prop="courseCode" label="课程编号" width="180"> </el-table-column>
<el-table-column prop="courseName" show-overflow-tooltip label="课程名称" width="250"> </el-table-column>
<el-table-column prop="dictionaryName" label="课程分类" width="180"> </el-table-column>
<el-table-column prop="courseType" label="课程类型" width="100">
<template slot-scope="scope">
<span v-if="scope.row.courseType == '0'">录播</span>
<span v-if="scope.row.courseType == '1'">面授</span>
@@ -189,55 +151,30 @@
</div> -->
</el-tab-pane>
<el-tab-pane label="未开班资源" name="fourth">
<el-table height="430"
:data="courseInfoList"
style="width: 100%">
<el-table-column
prop="courseCode"
label="班级编号"
width="120">
<el-table height="430" :data="courseInfoList" style="width: 100%">
<el-table-column prop="courseCode" label="班级编号" width="120">
</el-table-column>
<el-table-column
prop="courseName" show-overflow-tooltip
label="班级名称"
width="200">
<el-table-column prop="courseName" show-overflow-tooltip label="班级名称" width="200">
</el-table-column>
<el-table-column
prop="modName" width="150" show-overflow-tooltip
label="模块名称">
<el-table-column prop="modName" width="150" show-overflow-tooltip label="模块名称">
</el-table-column>
<el-table-column
prop="teachingTime"
label="授课时长"
width="100">
<el-table-column prop="teachingTime" label="授课时长" width="100">
</el-table-column>
<el-table-column
prop="openStartTime"
label="开班时间"
width="180">
<el-table-column prop="openStartTime" label="开班时间" width="180">
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="晋级过程" name="five">
<el-table height="370"
:data="precessList"
style="width: 100%">
<el-table-column
prop="operatorTime"
label="变更时间"
width="180">
<el-table height="370" :data="precessList" style="width: 100%">
<el-table-column prop="operatorTime" label="变更时间" width="180">
</el-table-column>
<el-table-column
prop="type"
label="变更方式">
<el-table-column prop="type" label="变更方式">
<template slot-scope="scope">
<span v-if="scope.row.type == '0'">手动</span>
<span v-if="scope.row.type == '1'">自动</span>
</template>
</el-table-column>
<el-table-column
prop="afterLevelName"
label="变更结果">
<el-table-column prop="afterLevelName" label="变更结果">
</el-table-column>
<el-table-column
prop="operatorName"
@@ -327,8 +264,18 @@ export default {
};
},
mounted() {
this.getDetail(this.id);
this.getAvatar();
if(this.id) {
this.getDetail();
}
},
watch:{
id(newVal){
if(newVal){
this.getDetail(newVal);
}
}
},
computed: {
...mapGetters(["userInfo"])
@@ -495,6 +442,13 @@ export default {
this.getCourseScore()
},
getDetail() {
//应该是自己系统的教师信息呀
// teacherApi.detail(this.newId).then(rs=>{
// if(rs.status==200){
// }
// });
teacherBoeApi.teacherInfo(this.id).then(res => {
if (res.status == 200) {
const result = res.result;