暂存
This commit is contained in:
@@ -66,6 +66,9 @@ const mainRoutes = {
|
|||||||
{ path: '/course-sociologyList', component: _import('modules/course/sociologyList'), name: 'course-sociologyList', meta: { title: '国学标签列表', isTab: true } },
|
{ path: '/course-sociologyList', component: _import('modules/course/sociologyList'), name: 'course-sociologyList', meta: { title: '国学标签列表', isTab: true } },
|
||||||
{ path: '/userCourse', component: _import('modules/user/userCourse'), name: 'userCourse', meta: { title: '用户课程列表', isTab: true } },
|
{ path: '/userCourse', component: _import('modules/user/userCourse'), name: 'userCourse', meta: { title: '用户课程列表', isTab: true } },
|
||||||
{ path: '/workOrder', component: _import('modules/workOrderLIst'), name: 'workOrder', meta: { title: '工单列表', isTab: true } },
|
{ path: '/workOrder', component: _import('modules/workOrderLIst'), name: 'workOrder', meta: { title: '工单列表', isTab: true } },
|
||||||
|
// { path: '/miniClassList', component: _import('modules/miniClass/miniClassList'), name: 'miniClass', meta: { title: '班级列表', isTab: true } },
|
||||||
|
{ path: '/miniClassList8', component: _import('modules/miniClass/miniClassList8'), name: 'miniClassList8', meta: { title: 'miniClassList8', isTab: true } },
|
||||||
|
{ path: '/ClassType', component: _import('modules/miniClass/miniClassType'), name: 'ClassType', meta: { title: '班级类型管理', isTab: true } },
|
||||||
],
|
],
|
||||||
beforeEnter (to, from, next) {
|
beforeEnter (to, from, next) {
|
||||||
let token = Vue.cookie.get('token')
|
let token = Vue.cookie.get('token')
|
||||||
|
|||||||
@@ -69,8 +69,13 @@
|
|||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div>
|
<div>
|
||||||
<span style="font-weight:bold; font-size:16px">{{ scope.row.title }}</span><br>
|
<span style="font-weight:bold; font-size:16px">{{
|
||||||
<span style="color:#999">( 创建时间:{{ scope.row.createTime}} )</span>
|
scope.row.title
|
||||||
|
}}</span
|
||||||
|
><br />
|
||||||
|
<span style="color:#999"
|
||||||
|
>( 创建时间:{{ scope.row.createTime }} )</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -159,7 +164,7 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="排序"
|
label="排序"
|
||||||
>
|
>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
fixed="right"
|
fixed="right"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
@@ -183,15 +188,44 @@
|
|||||||
@click="addOrUpdateHandle(scope.row)"
|
@click="addOrUpdateHandle(scope.row)"
|
||||||
>修改</el-button
|
>修改</el-button
|
||||||
>
|
>
|
||||||
<el-button type="text" size="small" @click="showLinkTags(scope.row)"
|
<el-button
|
||||||
>查看引用</el-button
|
type="text"
|
||||||
>
|
size="small"
|
||||||
|
@click="showLinkTags(scope.row)"
|
||||||
|
>查看引用</el-button
|
||||||
|
>
|
||||||
<el-button
|
<el-button
|
||||||
type="text"
|
type="text"
|
||||||
size="small"
|
size="small"
|
||||||
@click="deleteHandle(scope.row.id)"
|
@click="deleteHandle(scope.row.id)"
|
||||||
>删除</el-button
|
>删除</el-button
|
||||||
>
|
>
|
||||||
|
<!-- <el-dropdown>
|
||||||
|
<span
|
||||||
|
class="el-dropdown-link"
|
||||||
|
style="color:#17B3A3 ; cursor:pointer"
|
||||||
|
>
|
||||||
|
更多操作<i class="el-icon-arrow-down el-icon--right"></i>
|
||||||
|
</span>
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<el-dropdown-item>
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="showLinkTags(scope.row)"
|
||||||
|
>查看引用</el-button
|
||||||
|
>
|
||||||
|
</el-dropdown-item> -->
|
||||||
|
<!-- <el-dropdown-item>
|
||||||
|
<el-button
|
||||||
|
@click="showDirectorShow(scope.row)"
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
>教务主任管理</el-button
|
||||||
|
>
|
||||||
|
</el-dropdown-item> -->
|
||||||
|
<!-- </el-dropdown-menu>
|
||||||
|
</el-dropdown> -->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -211,9 +245,9 @@
|
|||||||
<add-or-update
|
<add-or-update
|
||||||
v-if="addOrUpdateVisible"
|
v-if="addOrUpdateVisible"
|
||||||
ref="addOrUpdate"
|
ref="addOrUpdate"
|
||||||
:relationProducts = relationProducts
|
:relationProducts="relationProducts"
|
||||||
@pclose = "pclose"
|
@pclose="pclose"
|
||||||
@showProTable = "showProTable"
|
@showProTable="showProTable"
|
||||||
@refreshDataList="getDataList"
|
@refreshDataList="getDataList"
|
||||||
></add-or-update>
|
></add-or-update>
|
||||||
<commonShopTable
|
<commonShopTable
|
||||||
@@ -230,25 +264,26 @@
|
|||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
<div v-if="resList.length > 0">
|
<div v-if="resList.length > 0">
|
||||||
<div style="margin-bottom:20px">当前课程共有 {{resList.length}} 个标签引用</div>
|
<div style="margin-bottom:20px">
|
||||||
|
当前课程共有 {{ resList.length }} 个标签引用
|
||||||
|
</div>
|
||||||
<div v-for="(item, index) in resList" :key="index">
|
<div v-for="(item, index) in resList" :key="index">
|
||||||
{{index + 1}}、 {{ item.title }}
|
{{ index + 1 }}、 {{ item.title }}
|
||||||
<span v-if="item.isLast != 1">
|
<span v-if="item.isLast != 1">
|
||||||
<span v-for="(item1, index1) in item.children" :key="index1"
|
<span v-for="(item1, index1) in item.children" :key="index1">
|
||||||
> > {{ item1.title }}
|
> {{ item1.title }}
|
||||||
<span v-if="item1.isLast != 1">
|
<span v-if="item1.isLast != 1">
|
||||||
<span
|
<span v-for="(item2, index2) in item1.children" :key="index2">
|
||||||
v-for="(item2, index2) in item1.children"
|
> {{ item2.title }}
|
||||||
:key="index2"
|
|
||||||
> > {{ item2.title }}
|
|
||||||
<span v-if="item2.isLast != 1">
|
<span v-if="item2.isLast != 1">
|
||||||
<span
|
<span
|
||||||
v-for="(item3, index3) in item2.children"
|
v-for="(item3, index3) in item2.children"
|
||||||
:key="index3"
|
:key="index3"
|
||||||
> > {{ item3.title }}</span
|
>
|
||||||
>
|
> {{ item3.title }}</span
|
||||||
</span>
|
>
|
||||||
</span>
|
</span>
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
@@ -260,6 +295,65 @@
|
|||||||
<el-button type="primary" @click="closeLink">好 的</el-button>
|
<el-button type="primary" @click="closeLink">好 的</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
<!-- 教务主任设置 -->
|
||||||
|
<el-dialog
|
||||||
|
title="教务主任管理"
|
||||||
|
:visible.sync="directorShow"
|
||||||
|
width="40%"
|
||||||
|
@close="closeDirector"
|
||||||
|
>
|
||||||
|
<div class="">
|
||||||
|
<h3>当前操作的课程:{{ optCourse.title }}</h3>
|
||||||
|
<el-form ref="director" :model="director" label-width="100px">
|
||||||
|
<el-form-item label="主任设置:" prop="director">
|
||||||
|
<el-select
|
||||||
|
v-model="director.director"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
:remote-method="remoteMethod"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userList"
|
||||||
|
:key="item.tel"
|
||||||
|
:label="item.tel"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="副主任设置:" prop="ddirector">
|
||||||
|
<el-select
|
||||||
|
v-model="director.ddirector"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
:remote-method="remoteMethod"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userList"
|
||||||
|
:key="item.tel"
|
||||||
|
:label="item.tel"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<span v-show="isSameOne" style="color:red"
|
||||||
|
>主任和副主任不可以是同一个人</span
|
||||||
|
>
|
||||||
|
</el-form-item></el-form
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="saveDirector">提 交</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -270,6 +364,15 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
selectType: [],
|
selectType: [],
|
||||||
|
director: {
|
||||||
|
director: null,
|
||||||
|
ddirector: null
|
||||||
|
},
|
||||||
|
directorShow: false,
|
||||||
|
remoteMethodLoading: false,
|
||||||
|
miniClassVisible: false,
|
||||||
|
personSeting: false,
|
||||||
|
userList: [],
|
||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
id: "all",
|
id: "all",
|
||||||
@@ -287,11 +390,11 @@ export default {
|
|||||||
children: []
|
children: []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
courseId:"0",
|
courseId: "0",
|
||||||
dataForm: {
|
dataForm: {
|
||||||
key: "",
|
key: ""
|
||||||
},
|
},
|
||||||
relationProducts:[],
|
relationProducts: [],
|
||||||
query: {
|
query: {
|
||||||
type: "",
|
type: "",
|
||||||
categoryId: "",
|
categoryId: "",
|
||||||
@@ -311,7 +414,8 @@ export default {
|
|||||||
sociologyList: "/master/courseSociology/getCourseSociologyList" //国学
|
sociologyList: "/master/courseSociology/getCourseSociologyList" //国学
|
||||||
},
|
},
|
||||||
resList: [],
|
resList: [],
|
||||||
resListVisible: false
|
resListVisible: false,
|
||||||
|
optCourse: {}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
@@ -328,28 +432,176 @@ export default {
|
|||||||
this.getTreeList(this.urlList.sociologyList, 2);
|
this.getTreeList(this.urlList.sociologyList, 2);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
delPro(val){
|
delPro(val) {
|
||||||
console.log(val,this.relationProducts)
|
console.log(val, this.relationProducts);
|
||||||
let list = this.relationProducts
|
let list = this.relationProducts;
|
||||||
|
|
||||||
|
this.relationProducts = list.slice(1, 1);
|
||||||
|
},
|
||||||
|
saveDirector() {
|
||||||
|
if(this.director.director == this.director.ddirector && this.director.director != null){
|
||||||
|
this.$message.error('主任与副主任不能是同一人')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var director = 0;
|
||||||
|
var ddirector = 0;
|
||||||
|
if (this.director.director) {
|
||||||
|
director = this.director.director;
|
||||||
|
}
|
||||||
|
if (this.director.ddirector) {
|
||||||
|
ddirector = this.director.ddirector;
|
||||||
|
}
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/master/course/editCourseDirector"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
courseId: this.optCourse.id,
|
||||||
|
director: director, //主任,清空时传0
|
||||||
|
ddirector: ddirector //副主任,清空时传0
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
if (res.data.code == 0) {
|
||||||
|
this.$message.success("操作成功!");
|
||||||
|
this.closeDirector();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
this.$message.error("获取课程信息失败");
|
||||||
|
_info = null;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
closeDirector() {
|
||||||
|
this.directorShow = false;
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs["director"].resetFields();
|
||||||
|
this.director = {
|
||||||
|
director: null,
|
||||||
|
ddirector: null
|
||||||
|
};
|
||||||
|
this.userList = []
|
||||||
|
this.optCourse = {};
|
||||||
|
console.log("director关闭了吗", this.director);
|
||||||
|
})
|
||||||
|
|
||||||
|
},200)
|
||||||
|
|
||||||
this.relationProducts = list.slice(1,1)
|
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
pclose(){
|
async showDirectorShow(data) {
|
||||||
this.relationProducts = []
|
this.optCourse = data;
|
||||||
this.courseId = null
|
var obj = await this.getDirectorInfo(data.id);
|
||||||
console.log('关闭了 ')
|
console.log("教务信息", obj);
|
||||||
|
if (obj) {
|
||||||
|
// console.log("有绑定", obj.data.director.tel);
|
||||||
|
if (obj.data.director != null) {
|
||||||
|
var list = this.userList.map( item => { return item.id})
|
||||||
|
console.log('list',list)
|
||||||
|
var i = list.find(function(elem){
|
||||||
|
return elem == obj.data.director.id;
|
||||||
|
});
|
||||||
|
if(!i){
|
||||||
|
this.userList.push({
|
||||||
|
id:obj.data.director.id,
|
||||||
|
tel:obj.data.director.tel
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.director.director = obj.data.director.id;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// this.director.director = null;
|
||||||
|
}
|
||||||
|
if (obj.data.ddirector != null) {
|
||||||
|
console.log('jinlailema')
|
||||||
|
var list = this.userList.map( item => { return item.id})
|
||||||
|
console.log('list',list)
|
||||||
|
var i = list.find(function(elem){
|
||||||
|
return elem == obj.data.ddirector.id;
|
||||||
|
});
|
||||||
|
if(!i){
|
||||||
|
this.userList.push({
|
||||||
|
id:obj.data.ddirector.id,
|
||||||
|
tel:obj.data.ddirector.tel
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.director.ddirector = obj.data.ddirector.id;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// this.ddirector.director = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log("没有绑定");
|
||||||
|
this.director = {
|
||||||
|
director: null,
|
||||||
|
ddirector: null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
this.directorShow = true;
|
||||||
},
|
},
|
||||||
linkList(data){
|
// 检索教务信息
|
||||||
console.log('父级',data)
|
getDirectorInfo(id) {
|
||||||
if(data && data.length > 0){
|
return new Promise((resolve, reject) => {
|
||||||
this.relationProducts = data
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/master/course/getCourseDirector"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
courseId: id
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
resolve(res);
|
||||||
|
// if (res.code === 0) {
|
||||||
|
// _info = res.director;
|
||||||
|
// console.log('教务信息++++res', res.director)
|
||||||
|
// }
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
this.$message.error("获取课程信息失败");
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 搜索用户列表
|
||||||
|
remoteMethod(query) {
|
||||||
|
if (query !== "") {
|
||||||
|
this.remoteMethodLoading = true;
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/book/user/getUserList"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
key: query
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.userList = data.user.records;
|
||||||
|
this.remoteMethodLoading = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
this.userList = [];
|
||||||
|
this.remoteMethodLoading = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.userList = [];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
showProTable(data){
|
pclose() {
|
||||||
console.log('data',data)
|
this.relationProducts = [];
|
||||||
|
this.courseId = null;
|
||||||
|
console.log("关闭了 ");
|
||||||
|
},
|
||||||
|
linkList(data) {
|
||||||
|
console.log("父级", data);
|
||||||
|
if (data && data.length > 0) {
|
||||||
|
this.relationProducts = data;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
showProTable(data) {
|
||||||
|
console.log("data", data);
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.commonShopTable.open();
|
this.$refs.commonShopTable.open();
|
||||||
});
|
});
|
||||||
@@ -359,7 +611,6 @@ export default {
|
|||||||
this.resList = [];
|
this.resList = [];
|
||||||
},
|
},
|
||||||
showLinkTags(row) {
|
showLinkTags(row) {
|
||||||
|
|
||||||
this.$http({
|
this.$http({
|
||||||
url: this.$http.adornUrl("/master/course/getCourseLableLinkList"),
|
url: this.$http.adornUrl("/master/course/getCourseLableLinkList"),
|
||||||
method: "post",
|
method: "post",
|
||||||
@@ -370,7 +621,6 @@ export default {
|
|||||||
this.resListVisible = true;
|
this.resListVisible = true;
|
||||||
if (res.data.code == 0 && res.data.resList.length > 0) {
|
if (res.data.code == 0 && res.data.resList.length > 0) {
|
||||||
this.resList = res.data.resList;
|
this.resList = res.data.resList;
|
||||||
|
|
||||||
}
|
}
|
||||||
// console.log(row, "row" , res.data.resList,this.resList);
|
// console.log(row, "row" , res.data.resList,this.resList);
|
||||||
});
|
});
|
||||||
@@ -404,7 +654,7 @@ export default {
|
|||||||
},
|
},
|
||||||
// 获取数据列表
|
// 获取数据列表
|
||||||
getDataList() {
|
getDataList() {
|
||||||
this.relationProducts = []
|
this.relationProducts = [];
|
||||||
var data = {
|
var data = {
|
||||||
page: this.pageIndex,
|
page: this.pageIndex,
|
||||||
limit: this.pageSize,
|
limit: this.pageSize,
|
||||||
@@ -466,8 +716,8 @@ export default {
|
|||||||
},
|
},
|
||||||
// 新增 / 修改
|
// 新增 / 修改
|
||||||
addOrUpdateHandle(row) {
|
addOrUpdateHandle(row) {
|
||||||
this.addOrUpdateVisible = true;
|
this.addOrUpdateVisible = true;
|
||||||
row ? this.courseId = row.id : ''
|
row ? (this.courseId = row.id) : "";
|
||||||
// this.courseId = row.id
|
// this.courseId = row.id
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.addOrUpdate.init(row);
|
this.$refs.addOrUpdate.init(row);
|
||||||
@@ -592,6 +842,15 @@ export default {
|
|||||||
this.getDataList();
|
this.getDataList();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isSameOne() {
|
||||||
|
if(this.director.ddirector == this.director.director && this.director.ddirector != null){
|
||||||
|
return true
|
||||||
|
}else{
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -601,4 +860,7 @@ export default {
|
|||||||
color: #149f97;
|
color: #149f97;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.flexbox {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
411
src/views/modules/miniClass/classAddType.vue
Normal file
411
src/views/modules/miniClass/classAddType.vue
Normal file
@@ -0,0 +1,411 @@
|
|||||||
|
<template>
|
||||||
|
<!-- 小班教学页面 -->
|
||||||
|
<div class="">
|
||||||
|
<el-drawer
|
||||||
|
size="600px"
|
||||||
|
title="班级模型"
|
||||||
|
style="font-size:16px; font-weight:bold;"
|
||||||
|
:visible.sync="drawer"
|
||||||
|
direction="ltr"
|
||||||
|
:before-close="handleClose"
|
||||||
|
>
|
||||||
|
<div style="padding:26px">
|
||||||
|
<el-form
|
||||||
|
:model="ClassModelForm"
|
||||||
|
:rules="ClassModelRules"
|
||||||
|
ref="ClassModelForm"
|
||||||
|
label-width="100px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<div style="margin:15px 0; font-size:14px; color:#606266">
|
||||||
|
模型类型:
|
||||||
|
</div>
|
||||||
|
<el-form-item label="" prop="ClassModelForm" label-width="0">
|
||||||
|
<el-select v-model="ClassModelForm.type" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in typeOptions"
|
||||||
|
:key="item.label"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<div style="margin:15px 0; font-size:14px; color:#606266">
|
||||||
|
名称:<span style="color:red">*</span>
|
||||||
|
</div>
|
||||||
|
<el-form-item label="" prop="title" label-width="0">
|
||||||
|
<el-input v-model="ClassModelForm.title"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<div style="margin:15px 0; font-size:14px; color:#606266">
|
||||||
|
课程设置: <span style="color:red">*</span>
|
||||||
|
<span v-if="ClassModelForm.type == '0'" style="color:#999"
|
||||||
|
>请选择一门课程</span
|
||||||
|
>
|
||||||
|
<span v-else style="color:#999">可选择多门课程</span>
|
||||||
|
</div>
|
||||||
|
<el-form-item label="" prop="courseIds" label-width="0">
|
||||||
|
<el-select
|
||||||
|
class="courseSelect"
|
||||||
|
size="medium"
|
||||||
|
v-model="ClassModelForm.courseIds"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
multiple
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入课程名"
|
||||||
|
:remote-method="getCourseList"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in courseList"
|
||||||
|
:key="item.title"
|
||||||
|
:label="item.title"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<div style="margin:15px 0; font-size14px; color:#606266">
|
||||||
|
教研室成员
|
||||||
|
</div>
|
||||||
|
<div style="border:1px solid #eee; padding:10px; margin-bottom:15px">
|
||||||
|
<el-form-item label="主任" prop="directorId">
|
||||||
|
<!-- <el-input v-model="ClassModelForm.member.directorId"></el-input> -->
|
||||||
|
<el-select
|
||||||
|
v-model="ClassModelForm.directorId"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
:remote-method="remoteMethod"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userList"
|
||||||
|
:key="item.tel"
|
||||||
|
:label="item.tel"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="副主任" prop="ddirectorId">
|
||||||
|
<el-select
|
||||||
|
v-model="ClassModelForm.ddirectorId"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
:remote-method="remoteMethod"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userList"
|
||||||
|
:key="item.tel"
|
||||||
|
:label="item.tel"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
<div style="text-align:center; margin-top:15px">
|
||||||
|
<el-button type="primary" @click="submitModel" v-if="ClassModelForm.id">保 存</el-button>
|
||||||
|
<el-button type="primary" @click="submitModel" v-else>立即创建</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-drawer>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { quillEditor } from "vue-quill-editor";
|
||||||
|
import global from "../../common/common.vue"; //引入共用组间
|
||||||
|
|
||||||
|
import "quill/dist/quill.core.css";
|
||||||
|
import "quill/dist/quill.snow.css";
|
||||||
|
import "quill/dist/quill.bubble.css";
|
||||||
|
const toolbarOptions = [
|
||||||
|
["bold", "italic", "underline", "strike"], // 加粗,斜体,下划线,删除线
|
||||||
|
["blockquote", "code-block"], //引用,代码块
|
||||||
|
[{ header: 1 }, { header: 2 }], // 几级标题
|
||||||
|
[{ list: "ordered" }, { list: "bullet" }], // 有序列表,无序列表
|
||||||
|
[{ script: "sub" }, { script: "super" }], // 下角标,上角标
|
||||||
|
[{ indent: "-1" }, { indent: "+1" }], // 缩进
|
||||||
|
[{ direction: "rtl" }], // 文字输入方向
|
||||||
|
[{ size: ["small", false, "large", "huge"] }], // 字体大小
|
||||||
|
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
|
||||||
|
[{ color: [] }, { background: [] }], // 颜色选择
|
||||||
|
[
|
||||||
|
{
|
||||||
|
font: [
|
||||||
|
"SimSun",
|
||||||
|
"SimHei",
|
||||||
|
"Microsoft-YaHei",
|
||||||
|
"KaiTi",
|
||||||
|
"FangSong",
|
||||||
|
"Arial"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
], // 字体
|
||||||
|
[{ align: [] }], // 居中
|
||||||
|
["clean"], // 清除样式,
|
||||||
|
["link", "image"] // 上传图片、上传视频
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
props: ["classModel"],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
baseUrl: global.baseUrl,
|
||||||
|
drawer: true,
|
||||||
|
ClassModelRules: {
|
||||||
|
title: [{ required: true, message: "必填项", trigger: "blur" }],
|
||||||
|
courseIds: [{ required: true, message: "必填项", trigger: "blur" }]
|
||||||
|
},
|
||||||
|
remoteMethodLoading: false,
|
||||||
|
ClassModelForm: {
|
||||||
|
title: "",
|
||||||
|
id: undefined,
|
||||||
|
content: "",
|
||||||
|
courseIds: undefined,
|
||||||
|
type: "0",
|
||||||
|
directorId: null, // 主任
|
||||||
|
ddirectorId: null // 副主任
|
||||||
|
},
|
||||||
|
courseList: [],
|
||||||
|
typeOptions: [
|
||||||
|
{
|
||||||
|
value: "0",
|
||||||
|
label: "普通小班"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: "1",
|
||||||
|
label: "联合班"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: "2",
|
||||||
|
label: "精英班"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
userList: [],
|
||||||
|
// 富文本编辑器配置
|
||||||
|
editorOption: {
|
||||||
|
modules: {
|
||||||
|
history: {
|
||||||
|
delay: 1000,
|
||||||
|
maxStack: 50,
|
||||||
|
userOnly: false
|
||||||
|
},
|
||||||
|
toolbar: {
|
||||||
|
container: toolbarOptions,
|
||||||
|
handlers: {
|
||||||
|
image: function(value) {
|
||||||
|
if (value) {
|
||||||
|
// 调用element的图片上传组件
|
||||||
|
document.querySelector(".editorUploader input").click();
|
||||||
|
} else {
|
||||||
|
this.quill.format("image", false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
placeholder: "请输入正文"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// console.log('激活了')
|
||||||
|
if (this.classModel) {
|
||||||
|
console.log("编辑", this.classModel);
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.ClassModelForm = this.classModel;
|
||||||
|
if (this.classModel.courseList.length > 0) {
|
||||||
|
this.courseList = this.classModel.courseList;
|
||||||
|
var list = [...this.classModel.courseList];
|
||||||
|
var ids = list.map(item => {
|
||||||
|
return item.id;
|
||||||
|
});
|
||||||
|
this.ClassModelForm.courseIds = ids;
|
||||||
|
}
|
||||||
|
if (this.classModel.director) {
|
||||||
|
this.userList.push(this.classModel.director);
|
||||||
|
}
|
||||||
|
if(this.classModel.directorId == 0){
|
||||||
|
this.ClassModelForm.directorId = null
|
||||||
|
}
|
||||||
|
if (this.classModel.ddirector) {
|
||||||
|
this.userList.push(this.classModel.ddirector);
|
||||||
|
}
|
||||||
|
if(this.classModel.ddirectorId == 0){
|
||||||
|
this.ClassModelForm.ddirectorId = null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log("添加");
|
||||||
|
}
|
||||||
|
// this.getCourseList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
submitModel() {
|
||||||
|
console.log(
|
||||||
|
"this.ClassModelForm.ddirectorId",
|
||||||
|
this.ClassModelForm.ddirectorId
|
||||||
|
);
|
||||||
|
if(this.ClassModelForm.directorId == (this.ClassModelForm.ddirectorId + "") && this.ClassModelForm.ddirectorId != null){
|
||||||
|
this.$message.error('主任和副主任不可为同一人!')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$refs['ClassModelForm'].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
if (this.ClassModelForm.type == '0' && this.ClassModelForm.courseIds.length > 1){
|
||||||
|
this.$message.error('普通小班模型只可以绑定一门课程哦')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var url = ''
|
||||||
|
this.ClassModelForm.id ? url = '/common/class/editClassModel' : url = '/common/class/addClassModel'
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl(url),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
id: this.ClassModelForm.id,
|
||||||
|
title: this.ClassModelForm.title,
|
||||||
|
directorId: this.ClassModelForm.directorId,
|
||||||
|
ddirectorId: this.ClassModelForm.ddirectorId + "",
|
||||||
|
type: this.ClassModelForm.type, // 班类型 0小班 1联合班 2精英班
|
||||||
|
courseIds: this.ClassModelForm.courseIds.join(",")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code == 0) {
|
||||||
|
this.$message.success("操作成功");
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.handleClose();
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
this.$message.error(data.msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
shwoUpMsg() {
|
||||||
|
this.$message.success("正在上传");
|
||||||
|
},
|
||||||
|
getCourseList(query) {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/master/course/getCourseList"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
coursetitle: query, //关键字
|
||||||
|
type: 1,
|
||||||
|
medicalId: "",
|
||||||
|
sociologyId: ""
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.courseList = data.page.records;
|
||||||
|
} else {
|
||||||
|
this.courseList = [];
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
this.$message.error("获取课程失败");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
contentUploadSuccess(res, file) {
|
||||||
|
// console.log(res)
|
||||||
|
// console.log(file)
|
||||||
|
let quill = this.$refs.myQuillEditor.quill;
|
||||||
|
// 如果上传成功
|
||||||
|
if (res) {
|
||||||
|
// 获取光标所在位置
|
||||||
|
let length = quill.getSelection().index;
|
||||||
|
// 插入图片,res为服务器返回的图片链接地址
|
||||||
|
quill.insertEmbed(length, "image", res.url);
|
||||||
|
// 调整光标到最后
|
||||||
|
quill.setSelection(length + 1);
|
||||||
|
this.$message.success("图片插入成功");
|
||||||
|
} else {
|
||||||
|
this.$message.error("图片插入失败!");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 失去焦点事件
|
||||||
|
onEditorBlur(quill) {
|
||||||
|
// console.log('editor blur!', quill)
|
||||||
|
},
|
||||||
|
// 获得焦点事件
|
||||||
|
onEditorFocus(quill) {
|
||||||
|
//console.log('editor focus!', quill)
|
||||||
|
},
|
||||||
|
// 准备富文本编辑器
|
||||||
|
onEditorReady(quill) {
|
||||||
|
// console.log('editor ready!', quill)
|
||||||
|
},
|
||||||
|
remoteMethod(query) {
|
||||||
|
if (query !== "") {
|
||||||
|
this.remoteMethodLoading = true;
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/book/user/getUserList"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
key: query
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.userList = data.user.records;
|
||||||
|
this.remoteMethodLoading = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
this.userList = [];
|
||||||
|
this.remoteMethodLoading = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.userList = [];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleClose() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs["ClassModelForm"].resetFields();
|
||||||
|
this.userList = [];
|
||||||
|
this.courseList = [];
|
||||||
|
});
|
||||||
|
this.$emit("handleClose");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
quillEditor
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
// isMultiple() {
|
||||||
|
// console.log('this.ClassModelForm.type',this.ClassModelForm.type)
|
||||||
|
// if (this.ClassModelForm.type == '0') {
|
||||||
|
// return false;
|
||||||
|
// } else {
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.editorUploader {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.courseSelect {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
634
src/views/modules/miniClass/miniClass.vue
Normal file
634
src/views/modules/miniClass/miniClass.vue
Normal file
@@ -0,0 +1,634 @@
|
|||||||
|
<template>
|
||||||
|
<!-- 小班教学页面 -->
|
||||||
|
<div class="">
|
||||||
|
<el-drawer
|
||||||
|
size="700px"
|
||||||
|
title="小班管理"
|
||||||
|
style="font-size:16px; font-weight:bold;"
|
||||||
|
:visible.sync="drawer"
|
||||||
|
direction="ltr"
|
||||||
|
:before-close="handleClose"
|
||||||
|
>
|
||||||
|
<div class="btnTag flexbox">
|
||||||
|
<span @click="mainSet = true" :class="mainSet ? 'acitve' : ''"
|
||||||
|
>基本信息</span
|
||||||
|
><span
|
||||||
|
v-if="miniClassForm.id"
|
||||||
|
@click="mainSet = false"
|
||||||
|
:class="!mainSet ? 'acitve' : ''"
|
||||||
|
>管理成员设置</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div style="padding:26px" v-show="mainSet">
|
||||||
|
<el-form
|
||||||
|
:model="miniClassForm"
|
||||||
|
:rules="miniClassRules"
|
||||||
|
ref="miniClassForm"
|
||||||
|
label-width="100px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-form-item label="班级模型" prop="modelId">
|
||||||
|
<el-select
|
||||||
|
v-model="miniClassForm.modelId"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入模型名称"
|
||||||
|
:remote-method="modelRemoteMethod"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in modelList"
|
||||||
|
:key="item.title"
|
||||||
|
:label="item.title"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="名称" prop="title">
|
||||||
|
<el-input v-model="miniClassForm.title"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="封面图" prop="icon">
|
||||||
|
<!-- <el-input v-model="miniClassForm.icon"></el-input> -->
|
||||||
|
<el-upload
|
||||||
|
class="avatar-uploader icon-uploader"
|
||||||
|
:action="baseUrl + '/oss/fileoss'"
|
||||||
|
:show-file-list="false"
|
||||||
|
accept=".jpeg,.jpg,.gif,.png"
|
||||||
|
:on-success="iconhandleAvatarSuccess"
|
||||||
|
:before-upload="iconbeforeAvatarUpload"
|
||||||
|
>
|
||||||
|
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
|
||||||
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
<div style="margin:15px 0; font-size14px; color:#606266">
|
||||||
|
简介/教学目标
|
||||||
|
</div>
|
||||||
|
<el-form-item label="" prop="content" label-width="0">
|
||||||
|
<el-upload
|
||||||
|
class="editorUploader"
|
||||||
|
:action="baseUrl + '/oss/fileoss'"
|
||||||
|
accept=".jpeg,.jpg,.gif,.png"
|
||||||
|
:show-file-list="false"
|
||||||
|
:before-upload="shwoUpMsg"
|
||||||
|
:on-success="contentUploadSuccess"
|
||||||
|
>
|
||||||
|
</el-upload>
|
||||||
|
<quill-editor
|
||||||
|
v-model="miniClassForm.content"
|
||||||
|
ref="myQuillEditor"
|
||||||
|
:options="editorOption"
|
||||||
|
@blur="onEditorBlur($event)"
|
||||||
|
@focus="onEditorFocus($event)"
|
||||||
|
@ready="onEditorReady($event)"
|
||||||
|
class="shangpin_editor"
|
||||||
|
>
|
||||||
|
</quill-editor>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div style="text-align:right; margin-top:15px">
|
||||||
|
<el-button type="primary" @click="saveAdd" v-if="!miniClassForm.id"
|
||||||
|
>创建班级</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" @click="saveAdd" v-else>保 存</el-button
|
||||||
|
><el-button type="success" @click="kaiban" v-if="miniClassForm.state == '0'">开班</el-button
|
||||||
|
><el-button type="warning" @click="jieban" v-if="miniClassForm.state == '1'">结班</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-show="!mainSet">
|
||||||
|
<div>
|
||||||
|
<el-form
|
||||||
|
:model="member"
|
||||||
|
ref="member"
|
||||||
|
label-width="100px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-form-item label="班长" prop="monitor">
|
||||||
|
<!-- <el-input v-model="miniClassForm.member.monitor"></el-input> -->
|
||||||
|
<el-select
|
||||||
|
class="userSelect"
|
||||||
|
v-model="member.monitor"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
:remote-method="remoteMethod"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userList"
|
||||||
|
:key="item.tel"
|
||||||
|
:label="item.tel"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="副班长" prop="dmonitor">
|
||||||
|
<el-select
|
||||||
|
class="userSelect"
|
||||||
|
v-model="member.dmonitor"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
:remote-method="remoteMethod"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userList"
|
||||||
|
:key="item.tel"
|
||||||
|
:label="item.tel"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="学委" prop="learner">
|
||||||
|
<el-select
|
||||||
|
class="userSelect"
|
||||||
|
v-model="member.learner"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
:remote-method="remoteMethod"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userList"
|
||||||
|
:key="item.tel"
|
||||||
|
:label="item.tel"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="评分员" prop="scorer">
|
||||||
|
<el-select
|
||||||
|
class="userSelect"
|
||||||
|
v-model="member.scorer"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
multiple
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
:remote-method="remoteMethod"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userList"
|
||||||
|
:key="item.tel"
|
||||||
|
:label="item.tel"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="记分员" prop="counter">
|
||||||
|
<el-select
|
||||||
|
class="userSelect"
|
||||||
|
v-model="member.counter"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
multiple
|
||||||
|
clearable
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
:remote-method="remoteMethod"
|
||||||
|
:loading="remoteMethodLoading"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userList"
|
||||||
|
:key="item.tel"
|
||||||
|
:label="item.tel"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div style="text-align:center">
|
||||||
|
<el-button type="primary" @click="saveMember">保 存</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-drawer>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { quillEditor } from "vue-quill-editor";
|
||||||
|
import global from "../../common/common.vue"; //引入共用组间
|
||||||
|
|
||||||
|
import "quill/dist/quill.core.css";
|
||||||
|
import "quill/dist/quill.snow.css";
|
||||||
|
import "quill/dist/quill.bubble.css";
|
||||||
|
const toolbarOptions = [
|
||||||
|
["bold", "italic", "underline", "strike"], // 加粗,斜体,下划线,删除线
|
||||||
|
["blockquote", "code-block"], //引用,代码块
|
||||||
|
[{ header: 1 }, { header: 2 }], // 几级标题
|
||||||
|
[{ list: "ordered" }, { list: "bullet" }], // 有序列表,无序列表
|
||||||
|
[{ script: "sub" }, { script: "super" }], // 下角标,上角标
|
||||||
|
[{ indent: "-1" }, { indent: "+1" }], // 缩进
|
||||||
|
[{ direction: "rtl" }], // 文字输入方向
|
||||||
|
[{ size: ["small", false, "large", "huge"] }], // 字体大小
|
||||||
|
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
|
||||||
|
[{ color: [] }, { background: [] }], // 颜色选择
|
||||||
|
[
|
||||||
|
{
|
||||||
|
font: [
|
||||||
|
"SimSun",
|
||||||
|
"SimHei",
|
||||||
|
"Microsoft-YaHei",
|
||||||
|
"KaiTi",
|
||||||
|
"FangSong",
|
||||||
|
"Arial"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
], // 字体
|
||||||
|
[{ align: [] }], // 居中
|
||||||
|
["clean"], // 清除样式,
|
||||||
|
["link", "image"] // 上传图片、上传视频
|
||||||
|
];
|
||||||
|
export default {
|
||||||
|
props: ["course", "miniClass"],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
baseUrl: global.baseUrl,
|
||||||
|
mainSet: true,
|
||||||
|
drawer: true,
|
||||||
|
miniClassRules: {
|
||||||
|
modelId: [{ required: true, message: "必填项", trigger: "blur" }],
|
||||||
|
title: [{ required: true, message: "必填项", trigger: "blur" }]
|
||||||
|
},
|
||||||
|
remoteMethodLoading: false,
|
||||||
|
imageUrl: "",
|
||||||
|
miniClassForm: {
|
||||||
|
title: "",
|
||||||
|
id: undefined,
|
||||||
|
content: "",
|
||||||
|
icon: "",
|
||||||
|
state: "0",
|
||||||
|
modelId: undefined
|
||||||
|
},
|
||||||
|
member: {
|
||||||
|
monitor: null, // 班长
|
||||||
|
dmonitor: null, // 副班长
|
||||||
|
marker: null, // 评分员
|
||||||
|
learner: null, //学委
|
||||||
|
scorer: [], //评分员
|
||||||
|
counter: [] // 记分员
|
||||||
|
},
|
||||||
|
modelList: [],
|
||||||
|
userList: [],
|
||||||
|
// 富文本编辑器配置
|
||||||
|
editorOption: {
|
||||||
|
modules: {
|
||||||
|
history: {
|
||||||
|
delay: 1000,
|
||||||
|
maxStack: 50,
|
||||||
|
userOnly: false
|
||||||
|
},
|
||||||
|
toolbar: {
|
||||||
|
container: toolbarOptions,
|
||||||
|
handlers: {
|
||||||
|
image: function(value) {
|
||||||
|
if (value) {
|
||||||
|
// 调用element的图片上传组件
|
||||||
|
document.querySelector(".editorUploader input").click();
|
||||||
|
} else {
|
||||||
|
this.quill.format("image", false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
placeholder: "请输入正文"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// console.log('激活了')
|
||||||
|
if (this.miniClass) {
|
||||||
|
console.log("编辑小班", this.miniClass);
|
||||||
|
if (this.miniClass.classModel.id) {
|
||||||
|
this.modelList.push(this.miniClass.classModel);
|
||||||
|
}
|
||||||
|
if (this.miniClass.icon.length > 0) {
|
||||||
|
this.imageUrl = this.miniClass.icon;
|
||||||
|
}
|
||||||
|
this.miniClassForm = this.miniClass;
|
||||||
|
if(this.miniClass.classUsers.length > 0){
|
||||||
|
var list = [...this.miniClass.classUsers]
|
||||||
|
// this.userList = [...this.miniClass.classUsers]
|
||||||
|
list.forEach( item => {
|
||||||
|
if(item.role == '1'){
|
||||||
|
this.member.monitor = item.userId
|
||||||
|
}
|
||||||
|
if(item.role == '2'){
|
||||||
|
this.member.dmonitor = item.userId
|
||||||
|
}
|
||||||
|
if(item.role == '3'){
|
||||||
|
this.member.learner = item.userId
|
||||||
|
}
|
||||||
|
if(item.role == '4'){
|
||||||
|
this.member.scorer.push(item.userId)
|
||||||
|
console.log(" this.member.scorer", this.member.scorer,item.userId);
|
||||||
|
}
|
||||||
|
if(item.role == '5'){
|
||||||
|
this.member.counter.push(item.userId)
|
||||||
|
console.log("this.member.counter", this.member.counter,item.userId);
|
||||||
|
}
|
||||||
|
item.id = item.userId
|
||||||
|
this.userList.push(item)
|
||||||
|
})
|
||||||
|
// console.log("处理后的",this.userList);
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log("添加小班");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 开班
|
||||||
|
kaiban(){
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl('/common/class/editClass'),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
id: this.miniClassForm.id,
|
||||||
|
modelId: this.miniClassForm.modelId,
|
||||||
|
title: this.miniClassForm.title,
|
||||||
|
icon: this.miniClassForm.icon,
|
||||||
|
state: '1',
|
||||||
|
content: this.miniClassForm.content
|
||||||
|
// createUserid: "10185"
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message.success("操作成功");
|
||||||
|
this.handleClose();
|
||||||
|
}else{
|
||||||
|
this.$message.error("操作失败");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 结班
|
||||||
|
jieban(){
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl('/common/class/editClass'),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
id: this.miniClassForm.id,
|
||||||
|
modelId: this.miniClassForm.modelId,
|
||||||
|
title: this.miniClassForm.title,
|
||||||
|
icon: this.miniClassForm.icon,
|
||||||
|
state: '2',
|
||||||
|
content: this.miniClassForm.content
|
||||||
|
// createUserid: "10185"
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message.success("操作成功");
|
||||||
|
this.handleClose();
|
||||||
|
}else{
|
||||||
|
this.$message.error("操作失败");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 保存成员信息
|
||||||
|
saveMember() {
|
||||||
|
var url = ''
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/common/class/setUserRole"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
classId: this.miniClassForm.id,
|
||||||
|
monitor: this.member.monitor+'', //班长
|
||||||
|
dmonitor: this.member.dmonitor+'', //2班长
|
||||||
|
learner: this.member.learner+'', //学习委员
|
||||||
|
scorer: this.member.scorer.join(','), //评分员
|
||||||
|
counter: this.member.counter.join(',') //记分员
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message.success("设置成功");
|
||||||
|
this.handleClose();
|
||||||
|
}else{
|
||||||
|
this.$message.error(data.msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
// 创建/编辑班级
|
||||||
|
saveAdd() {
|
||||||
|
this.$refs["miniClassForm"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
var url = "";
|
||||||
|
console.log("this.miniClassForm.id", this.miniClassForm.id);
|
||||||
|
this.miniClassForm.id
|
||||||
|
? (url = "/common/class/editClass")
|
||||||
|
: (url = "/common/class/addClass");
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl(url),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
id: this.miniClassForm.id,
|
||||||
|
modelId: this.miniClassForm.modelId,
|
||||||
|
title: this.miniClassForm.title,
|
||||||
|
icon: this.miniClassForm.icon,
|
||||||
|
state: this.miniClassForm.state,
|
||||||
|
content: this.miniClassForm.content
|
||||||
|
// createUserid: "10185"
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message.success("操作成功");
|
||||||
|
this.handleClose();
|
||||||
|
}else{
|
||||||
|
this.$message.error("提交失败");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.$message.error("请完成表单的填写");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 搜索模型
|
||||||
|
modelRemoteMethod(query) {
|
||||||
|
if (query !== "") {
|
||||||
|
this.remoteMethodLoading = true;
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/common/class/getClassModelList"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
title: query
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.modelList = data.page.records;
|
||||||
|
this.remoteMethodLoading = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
this.modelList = [];
|
||||||
|
this.remoteMethodLoading = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.modelList = [];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
shwoUpMsg() {
|
||||||
|
this.$message.success("正在上传");
|
||||||
|
},
|
||||||
|
contentUploadSuccess(res, file) {
|
||||||
|
// console.log(res)
|
||||||
|
// console.log(file)
|
||||||
|
let quill = this.$refs.myQuillEditor.quill;
|
||||||
|
// 如果上传成功
|
||||||
|
if (res) {
|
||||||
|
// 获取光标所在位置
|
||||||
|
let length = quill.getSelection().index;
|
||||||
|
// 插入图片,res为服务器返回的图片链接地址
|
||||||
|
quill.insertEmbed(length, "image", res.url);
|
||||||
|
// 调整光标到最后
|
||||||
|
quill.setSelection(length + 1);
|
||||||
|
this.$message.success("图片插入成功");
|
||||||
|
} else {
|
||||||
|
this.$message.error("图片插入失败!");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 失去焦点事件
|
||||||
|
onEditorBlur(quill) {
|
||||||
|
// console.log('editor blur!', quill)
|
||||||
|
},
|
||||||
|
|
||||||
|
iconhandleAvatarSuccess(res, file) {
|
||||||
|
this.miniClassForm.icon = res.url;
|
||||||
|
this.imageUrl = URL.createObjectURL(file.raw);
|
||||||
|
console.log("this.imageUrl", this.imageUrl, file, res);
|
||||||
|
this.$message.success("上传成功");
|
||||||
|
},
|
||||||
|
iconbeforeAvatarUpload(file) {
|
||||||
|
this.$message.success("正在上传");
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获得焦点事件
|
||||||
|
onEditorFocus(quill) {
|
||||||
|
//console.log('editor focus!', quill)
|
||||||
|
},
|
||||||
|
// 准备富文本编辑器
|
||||||
|
onEditorReady(quill) {
|
||||||
|
// console.log('editor ready!', quill)
|
||||||
|
},
|
||||||
|
remoteMethod(query) {
|
||||||
|
if (query !== "") {
|
||||||
|
this.remoteMethodLoading = true;
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/book/user/getUserList"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
key: query
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.userList = data.user.records;
|
||||||
|
this.remoteMethodLoading = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
this.userList = [];
|
||||||
|
this.remoteMethodLoading = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.userList = [];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleClose() {
|
||||||
|
// this.$nextTick(() => {
|
||||||
|
this.userList = []
|
||||||
|
this.$refs["miniClassForm"].resetFields();
|
||||||
|
// });
|
||||||
|
this.$emit("handleClose");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
quillEditor
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.userSelect {
|
||||||
|
width: 80% !important;
|
||||||
|
}
|
||||||
|
.flexbox {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.editorUploader {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.btnTag {
|
||||||
|
justify-content: space-between;
|
||||||
|
margin: 20px 0;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
padding: 20px 0;
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
width: 50%;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 30px;
|
||||||
|
font-weight: normal;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
span.acitve {
|
||||||
|
color: #427ce9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-uploader {
|
||||||
|
border: 1px dashed #d9d9d9;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
.avatar-uploader .el-upload {
|
||||||
|
border: 1px dashed #d9d9d9;
|
||||||
|
border-radius: 6px;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.avatar-uploader .el-upload:hover {
|
||||||
|
border-color: #409eff;
|
||||||
|
}
|
||||||
|
.avatar-uploader-icon {
|
||||||
|
font-size: 28px;
|
||||||
|
color: #8c939d;
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
line-height: 100px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.avatar {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
352
src/views/modules/miniClass/miniClassList.vue
Normal file
352
src/views/modules/miniClass/miniClassList.vue
Normal file
@@ -0,0 +1,352 @@
|
|||||||
|
<template>
|
||||||
|
<div class="mod-config">
|
||||||
|
<el-form
|
||||||
|
:inline="true"
|
||||||
|
:model="dataForm"
|
||||||
|
@keyup.enter.native="getDataList()"
|
||||||
|
>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input v-model="dataForm.title" placeholder="请输入小班名称" clearable>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="小班状态">
|
||||||
|
<el-select v-model="dataForm.state" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in statusOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="小班类型">
|
||||||
|
<el-select v-model="dataForm.type" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
@click="
|
||||||
|
pageIndex = 1;
|
||||||
|
getDataList();
|
||||||
|
"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
v-if="isAuth('book:user:save')"
|
||||||
|
type="primary"
|
||||||
|
@click="showMiniClass()"
|
||||||
|
>新开小班</el-button
|
||||||
|
>
|
||||||
|
<!-- <el-button v-if="isAuth('book:user:delete')" type="danger" @click="deleteHandle()"
|
||||||
|
:disabled="dataListSelections.length <= 0">批量删除</el-button> -->
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table
|
||||||
|
:data="dataList"
|
||||||
|
border
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
style="width: 100%;"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
prop="title"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="小班名称"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column
|
||||||
|
prop="createUser.tel"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="创建人"
|
||||||
|
>
|
||||||
|
</el-table-column> -->
|
||||||
|
<el-table-column
|
||||||
|
prop="avatar"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="日期"
|
||||||
|
>
|
||||||
|
|
||||||
|
<template slot-scope="scope">
|
||||||
|
创建日期:{{scope.row.createTime}}<br/> 开班日期<br/>结班日期<br/>
|
||||||
|
<!-- <img
|
||||||
|
v-if="scope.row.avatar && scope.row.avatar != ''"
|
||||||
|
:src="scope.row.avatar"
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
class="tableImg"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
v-else
|
||||||
|
src="../../../../static/img/morenAvavter.png"
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
class="tableImg"
|
||||||
|
/> -->
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="state"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="小班状态"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">{{scope.row.state | getStatus}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
fixed="right"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="150"
|
||||||
|
label="操作"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="showMiniClass(scope.row)"
|
||||||
|
>修改</el-button
|
||||||
|
>
|
||||||
|
<!-- <el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="setMember(scope.row)"
|
||||||
|
>管理成员</el-button
|
||||||
|
> -->
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="deleteHandle(scope.row.id)"
|
||||||
|
>删除</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
@size-change="sizeChangeHandle"
|
||||||
|
@current-change="currentChangeHandle"
|
||||||
|
:current-page="pageIndex"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="total"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
>
|
||||||
|
</el-pagination>
|
||||||
|
<!-- 小班教学管理 -->
|
||||||
|
<mini-class
|
||||||
|
ref="miniClass"
|
||||||
|
v-if="miniClassVisible"
|
||||||
|
@handleClose="miniClassHandleClose"
|
||||||
|
:miniClass="miniClass"
|
||||||
|
></mini-class>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import miniClass from "./miniClass.vue";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
setMemberVisible:false,
|
||||||
|
dataForm: {
|
||||||
|
title: "",
|
||||||
|
type:'0',
|
||||||
|
state:'0'
|
||||||
|
},
|
||||||
|
// courseId: {},
|
||||||
|
course: null,
|
||||||
|
miniClass: undefined,
|
||||||
|
// showMiniClass:false,
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
value: '0',
|
||||||
|
label: "普通小班"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '1',
|
||||||
|
label: "联合班"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '2',
|
||||||
|
label: "精英班"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
statusOptions : [
|
||||||
|
{
|
||||||
|
value: '0',
|
||||||
|
label: "待开班"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '1',
|
||||||
|
label: "已开班"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '2',
|
||||||
|
label: "已结班"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
adc: false,
|
||||||
|
pointForm: {
|
||||||
|
pointType: 0,
|
||||||
|
remark: "",
|
||||||
|
// title:'',
|
||||||
|
pointAmount: 0
|
||||||
|
},
|
||||||
|
dataList: [],
|
||||||
|
pageIndex: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
totalPage: 0,
|
||||||
|
total: 0,
|
||||||
|
dataListLoading: false,
|
||||||
|
miniClassVisible: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
filters: {
|
||||||
|
getStatus: function (value) {
|
||||||
|
var _str = '454545'
|
||||||
|
switch (value) {
|
||||||
|
case '0':
|
||||||
|
_str = '待开班'
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
_str = '已开班'
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
_str = '已结班'
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return _str
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
miniClass
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// this.courseId = this.$route.query.courseId;
|
||||||
|
console.log("得到的课程id");
|
||||||
|
// this.getCourseInfo()
|
||||||
|
this.getDataList();
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted(){
|
||||||
|
console.log("得到的课程id");
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
setMemberClose(){
|
||||||
|
|
||||||
|
},
|
||||||
|
// 管理人员设置
|
||||||
|
setMember(data){
|
||||||
|
|
||||||
|
},
|
||||||
|
// 管理员小班管理
|
||||||
|
showMiniClass(data) {
|
||||||
|
// console.log('miniClass',data)
|
||||||
|
if(data){
|
||||||
|
this.miniClass = data
|
||||||
|
}
|
||||||
|
this.miniClassVisible = true;
|
||||||
|
|
||||||
|
},
|
||||||
|
// 关闭小班设置
|
||||||
|
miniClassHandleClose() {
|
||||||
|
this.miniClassVisible = false;
|
||||||
|
this.miniClass = undefined
|
||||||
|
this.getDataList()
|
||||||
|
},
|
||||||
|
// 获取数据列表
|
||||||
|
getDataList() {
|
||||||
|
this.dataListLoading = true;
|
||||||
|
this.$http({
|
||||||
|
// url: this.$http.adornUrl('/book/user/list'),
|
||||||
|
url: this.$http.adornUrl("/common/class/getClassList"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
page: this.pageIndex,
|
||||||
|
limit: this.pageSize,
|
||||||
|
title: this.dataForm.title,
|
||||||
|
type: this.dataForm.type,
|
||||||
|
state: this.dataForm.state
|
||||||
|
})
|
||||||
|
// params: this.$http.adornParams({
|
||||||
|
// 'page': 1,
|
||||||
|
// 'limit': this.pageSize,
|
||||||
|
// 'key': this.dataForm.key
|
||||||
|
// })
|
||||||
|
}).then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.dataList = data.page.records;
|
||||||
|
this.totalPage = data.page.pages;
|
||||||
|
this.total = data.page.total;
|
||||||
|
this.dataListLoading = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 每页数
|
||||||
|
sizeChangeHandle(val) {
|
||||||
|
this.pageSize = val;
|
||||||
|
this.pageIndex = 1;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
// 当前页
|
||||||
|
currentChangeHandle(val) {
|
||||||
|
this.pageIndex = val;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增 / 修改
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
deleteHandle(id) {
|
||||||
|
var ids = id
|
||||||
|
// ? [id]
|
||||||
|
// : this.dataListSelections.map(item => {
|
||||||
|
// return item.id;
|
||||||
|
// });
|
||||||
|
this.$confirm(
|
||||||
|
`确定删除操作?`,
|
||||||
|
"提示",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}
|
||||||
|
).then(() => {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/common/class/delClass"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
classId:ids
|
||||||
|
})
|
||||||
|
}).then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message({
|
||||||
|
message: "操作成功",
|
||||||
|
type: "success",
|
||||||
|
duration: 1500,
|
||||||
|
onClose: () => {
|
||||||
|
this.getDataList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$message.error(data.msg);
|
||||||
|
}
|
||||||
|
}).catch(e => {
|
||||||
|
this.$message.error('删除失败');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
322
src/views/modules/miniClass/miniClassType.vue
Normal file
322
src/views/modules/miniClass/miniClassType.vue
Normal file
@@ -0,0 +1,322 @@
|
|||||||
|
<template>
|
||||||
|
<div class="mod-config">
|
||||||
|
<el-form
|
||||||
|
:inline="true"
|
||||||
|
:model="dataForm"
|
||||||
|
@keyup.enter.native="getDataList()"
|
||||||
|
>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input v-model="dataForm.key" placeholder="请输入班级模型名称" clearable>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="班级类型">
|
||||||
|
<el-select v-model="dataForm.status" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
@click="
|
||||||
|
pageIndex = 1;
|
||||||
|
getDataList();
|
||||||
|
"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
v-if="isAuth('book:user:save')"
|
||||||
|
type="primary"
|
||||||
|
@click="showClassModel()"
|
||||||
|
>添加班级模型</el-button
|
||||||
|
>
|
||||||
|
<!-- <el-button v-if="isAuth('book:user:delete')" type="danger" @click="deleteHandle()"
|
||||||
|
:disabled="dataListSelections.length <= 0">批量删除</el-button> -->
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table
|
||||||
|
:data="dataList"
|
||||||
|
border
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
style="width: 100%;"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
prop="title"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="名称"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="createUser.tel"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="包含课程"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-if="scope.row.courseList.length > 0">
|
||||||
|
<div v-for="(item, index) in scope.row.courseList" :key="index">{{item.title}}</div>
|
||||||
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
还没有绑定课程
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="createTime"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="主任设置"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<!-- <div> <span>主任</span></div> -->
|
||||||
|
<div v-if="scope.row.director">
|
||||||
|
<span v-if="scope.row.director.nickname">{{scope.row.director.nickname}}<br/></span>
|
||||||
|
<span v-if="scope.row.director.tel">电话:{{scope.row.director.tel}}<br/></span>
|
||||||
|
<span v-if="scope.row.director.email">邮箱:{{scope.row.director.email}}<br/></span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="state"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="副主任设置"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<!-- <div><span>副主任</span></div> -->
|
||||||
|
<div v-if="scope.row.ddirector">
|
||||||
|
<span v-if="scope.row.ddirector.nickname">{{scope.row.ddirector.nickname}}<br/></span>
|
||||||
|
<span v-if="scope.row.ddirector.tel">电话:{{scope.row.ddirector.tel}}<br/></span>
|
||||||
|
<span v-if="scope.row.ddirector.email">邮箱:{{scope.row.ddirector.email}}<br/></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
fixed="right"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="150"
|
||||||
|
label="操作"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="showClassModel(scope.row)"
|
||||||
|
>修改</el-button
|
||||||
|
>
|
||||||
|
<!-- <el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="deleteHandle(scope.row.id)"
|
||||||
|
>删除</el-button
|
||||||
|
> -->
|
||||||
|
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
@size-change="sizeChangeHandle"
|
||||||
|
@current-change="currentChangeHandle"
|
||||||
|
:current-page="pageIndex"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="total"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
>
|
||||||
|
</el-pagination>
|
||||||
|
|
||||||
|
<!-- 小班教学管理 -->
|
||||||
|
<class-add-type
|
||||||
|
ref="miniClass"
|
||||||
|
v-if="miniClassVisible"
|
||||||
|
@handleClose="miniClassHandleClose"
|
||||||
|
:classModel="miniClass"
|
||||||
|
></class-add-type>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import classAddType from "./classAddType.vue";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dataForm: {
|
||||||
|
key: "",
|
||||||
|
status:'0'
|
||||||
|
},
|
||||||
|
courseId: {},
|
||||||
|
course: null,
|
||||||
|
miniClass: undefined,
|
||||||
|
// showClassModel:false,
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
value: '0',
|
||||||
|
label: "普通小班"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '1',
|
||||||
|
label: "联合班"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '2',
|
||||||
|
label: "精英班"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
adc: false,
|
||||||
|
pointForm: {
|
||||||
|
pointType: 0,
|
||||||
|
remark: "",
|
||||||
|
// title:'',
|
||||||
|
pointAmount: 0
|
||||||
|
},
|
||||||
|
dataList: [],
|
||||||
|
pageIndex: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
totalPage: 0,
|
||||||
|
total: 0,
|
||||||
|
dataListLoading: false,
|
||||||
|
miniClassVisible: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
classAddType
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.courseId = this.$route.query.courseId;
|
||||||
|
console.log("得到的课程id", this.courseId);
|
||||||
|
this.getCourseInfo()
|
||||||
|
this.getDataList();
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 管理员小班管理
|
||||||
|
showClassModel(data) {
|
||||||
|
// console.log('miniClass',data)
|
||||||
|
if(data){
|
||||||
|
this.miniClass = data
|
||||||
|
}
|
||||||
|
// if(this.course.id){
|
||||||
|
this.miniClassVisible = true;
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
// 关闭小班设置
|
||||||
|
miniClassHandleClose() {
|
||||||
|
this.miniClassVisible = false;
|
||||||
|
this.miniClass = undefined
|
||||||
|
this.getDataList()
|
||||||
|
},
|
||||||
|
// 获取课程详情
|
||||||
|
getCourseInfo(){
|
||||||
|
this.$http
|
||||||
|
.request({
|
||||||
|
url: this.$http.adornUrl('/master/course/getCoursedetail'),
|
||||||
|
method: "POST",
|
||||||
|
data: {
|
||||||
|
id: 35
|
||||||
|
// id: this.courseId
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
//默认 无 说明:请求头
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
// console.log("result at line 452:", res);
|
||||||
|
if (res && res.data.code == 0) {
|
||||||
|
this.course = res.data.course;
|
||||||
|
// console.log("课程详细:", data);
|
||||||
|
}
|
||||||
|
}).catch(e => {
|
||||||
|
this.$message.error('获取数据失败')
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 获取数据列表
|
||||||
|
getDataList() {
|
||||||
|
this.dataListLoading = true;
|
||||||
|
this.$http({
|
||||||
|
// url: this.$http.adornUrl('/book/user/list'),
|
||||||
|
url: this.$http.adornUrl("/common/class/getClassModelList"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
page: this.pageIndex,
|
||||||
|
limit: this.pageSize,
|
||||||
|
|
||||||
|
title: this.dataForm.key,
|
||||||
|
// status: dataForm.status
|
||||||
|
})
|
||||||
|
// params: this.$http.adornParams({
|
||||||
|
// 'page': 1,
|
||||||
|
// 'limit': this.pageSize,
|
||||||
|
// 'key': this.dataForm.key
|
||||||
|
// })
|
||||||
|
}).then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.dataList = data.page.records;
|
||||||
|
this.totalPage = data.page.pages;
|
||||||
|
this.total = data.page.total;
|
||||||
|
this.dataListLoading = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 每页数
|
||||||
|
sizeChangeHandle(val) {
|
||||||
|
this.pageSize = val;
|
||||||
|
this.pageIndex = 1;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
// 当前页
|
||||||
|
currentChangeHandle(val) {
|
||||||
|
this.pageIndex = val;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增 / 修改
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
deleteHandle(id) {
|
||||||
|
var ids = id
|
||||||
|
? [id]
|
||||||
|
: this.dataListSelections.map(item => {
|
||||||
|
return item.id;
|
||||||
|
});
|
||||||
|
this.$confirm(
|
||||||
|
`确定对[id=${ids.join(",")}]进行[${id ? "删除" : "批量删除"}]操作?`,
|
||||||
|
"提示",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}
|
||||||
|
).then(() => {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/book/user/delete"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData(ids, false)
|
||||||
|
}).then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message({
|
||||||
|
message: "操作成功",
|
||||||
|
type: "success",
|
||||||
|
duration: 1500,
|
||||||
|
onClose: () => {
|
||||||
|
this.getDataList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$message.error(data.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -5,10 +5,10 @@
|
|||||||
window.SITE_CONFIG = {};
|
window.SITE_CONFIG = {};
|
||||||
|
|
||||||
// api接口请求地址
|
// api接口请求地址
|
||||||
// window.SITE_CONFIG['baseUrl'] = 'http://192.168.110.100:9200/pb';//张川川
|
window.SITE_CONFIG['baseUrl'] = 'http://192.168.110.100:9200/pb';//张川川
|
||||||
// window.SITE_CONFIG['baseUrl'] = 'http://59.110.212.44:9200/pb';
|
// window.SITE_CONFIG['baseUrl'] = 'http://59.110.212.44:9200/pb';
|
||||||
// window.SITE_CONFIG['baseUrl'] = 'https://testapi.nuttyreading.com'; // 线上测试环境11
|
// window.SITE_CONFIG['baseUrl'] = 'https://testapi.nuttyreading.com'; // 线上测试环境11
|
||||||
window.SITE_CONFIG['baseUrl'] = 'https://api.nuttyreading.com'; // 线上正式环境
|
// window.SITE_CONFIG['baseUrl'] = 'https://api.nuttyreading.com'; // 线上正式环境
|
||||||
// window.SITE_CONFIG['baseUrl'] = 'http://192.168.110.110:9200/pb';//磊哥
|
// window.SITE_CONFIG['baseUrl'] = 'http://192.168.110.110:9200/pb';//磊哥
|
||||||
// window.SITE_CONFIG['baseUrl'] = 'http://59.110.212.44:9200/pb';
|
// window.SITE_CONFIG['baseUrl'] = 'http://59.110.212.44:9200/pb';
|
||||||
// window.SITE_CONFIG['baseUrl'] = 'http://192.168.110.100:9200/pb';
|
// window.SITE_CONFIG['baseUrl'] = 'http://192.168.110.100:9200/pb';
|
||||||
|
|||||||
Reference in New Issue
Block a user