Commit a38f89b4 by Cat
parents 4044d1e0 8cbd4b10
import request from '@/utils/request' import request from "@/utils/request";
// 查询老师请假信息列表 // 查询老师请假信息列表
export function listTeacherLeave(query) { export function listTeacherLeave(query) {
return request({ return request({
url: '/school/teacherLeave/list', url: "/school/teacherLeave/list",
method: 'get', method: "get",
params: query params: query,
}) });
} }
// 查询老师请假信息详细 // 查询老师请假信息详细
export function getTeacherLeave(id) { export function getTeacherLeave(id) {
return request({ return request({
url: '/school/teacherLeave/queryOne/' + id, url: "/school/teacherLeave/queryOne/" + id,
method: 'get' method: "get",
}) });
} }
// 新增老师请假信息 // 新增老师请假信息
export function addTeacherLeave(data) { export function addTeacherLeave(data) {
return request({ return request({
url: '/school/teacherLeave/add', url: "/school/teacherLeave/add",
method: 'post', method: "post",
data: data data: data,
}) });
} }
// 修改老师请假信息 // 修改老师请假信息
export function updateTeacherLeave(data) { export function updateTeacherLeave(data) {
return request({ return request({
url: '/school/teacherLeave/edit', url: "/school/teacherLeave/edit",
method: 'put', method: "put",
data: data data: data,
}) });
} }
// 删除老师请假信息 // 删除老师请假信息
export function delTeacherLeave(ids) { export function delTeacherLeave(ids) {
return request({ return request({
url: '/school/teacherLeave/delete/' + ids, url: "/school/teacherLeave/delete/" + ids,
method: 'delete' method: "delete",
}) });
} }
//提交申请 //提交申请
export function submitApply(id) { export function submitApply(id) {
return request({ return request({
url: '/school/teacherLeave/submitApply/' + id, url: "/school/teacherLeave/submitApply/" + id,
method: 'post', method: "post",
}) });
} }
/** /**
* 待办事项列表 * 待办事项列表
*/ */
export function taskList(query) { export function taskList(query) {
return request({ return request({
url: '/school/teacherLeave/taskList', url: "/school/teacherLeave/taskList",
method: 'get', method: "get",
params: query params: query,
}) });
} }
/** /**
...@@ -68,58 +67,58 @@ export function taskList(query) { ...@@ -68,58 +67,58 @@ export function taskList(query) {
*/ */
export function taskDoneList(query) { export function taskDoneList(query) {
return request({ return request({
url: '/school/teacherLeave/taskDoneList', url: "/school/teacherLeave/taskDoneList",
method: 'get', method: "get",
params: query params: query,
}) });
} }
//审批历史列表 //审批历史列表
export function listHistory(data) { export function listHistory(data) {
return request({ return request({
url: '/activiti/process/listHistory', url: "/activiti/process/listHistory",
method: 'get', method: "get",
params: data params: data,
}) });
} }
/** 销假列表(同历史任务接口,目前分两个接口来做) */ /** 销假列表(同历史任务接口,目前分两个接口来做) */
export function revokeList(data) { export function revokeList(data) {
return request({ return request({
url: '/activiti/process/listHistory', url: "/activiti/process/listHistory",
method: 'get', method: "get",
params: data params: data,
}) });
} }
// 进度查看 // 进度查看
export function viewSchedule(data) { export function viewSchedule(data) {
return request({ return request({
url: '/activiti/process/read-resource', url: "/activiti/process/read-resource",
method: 'get', method: "get",
params: data params: data,
}) });
} }
/** 审批任务 */ /** 审批任务 */
export function complete({taskId, instanceId, comment, pass}) { export function complete({ taskId, instanceId, comment, pass }) {
return request({ return request({
url: `/school/teacherLeave/complete/${taskId}/${instanceId}`, url: `/school/teacherLeave/complete/${taskId}/${instanceId}`,
method: 'post', method: "post",
data: { data: {
comment, comment,
pass pass,
} },
}) });
} }
/** 销假 */ /** 销假 */
export function cancelLeave(taskId, postForm) { export function cancelLeave(taskId, postForm) {
return request({ return request({
url: '/school/teacherLeave/cancelLeave/' + taskId, url: "/school/teacherLeave/cancelLeave/" + taskId,
method: 'post', method: "post",
data: postForm data: postForm,
}) });
} }
/*新增修改dialog*/ /*新增修改dialog*/
...@@ -127,44 +126,49 @@ export function cancelLeave(taskId, postForm) { ...@@ -127,44 +126,49 @@ export function cancelLeave(taskId, postForm) {
//获取级部/处室下拉框 //获取级部/处室下拉框
export function getGradeOfficeList(query) { export function getGradeOfficeList(query) {
return request({ return request({
url: '/schoolGrade/getList', url: "/schoolGrade/getList",
method: 'get', method: "get",
params: query params: query,
}) });
} }
//获取级部/处室 主任 下拉框 //获取级部/处室 主任 下拉框
export function getGradeOfficeDirectorList(form) { export function getGradeOfficeDirectorList(form) {
return request({ return request({
url: '/school/teacherLeave/getDeptLeader/' + form.applyOrgid, url: "/school/teacherLeave/getDeptLeader/" + form.applyOrgid,
params: form, params: form,
method: 'get', method: "get",
}) });
} }
//分管领导/主要领导下拉框 //分管领导/主要领导下拉框
export function getLeaderList(form) { export function getLeaderList(form) {
return request({ return request({
url: '/school/teacherLeave/getSchoolLeader', url: "/school/teacherLeave/getSchoolLeader",
params: form, params: form,
method: 'get', method: "get",
}) });
} }
//根据请假开始时间和结束时间,获取请假时长 //根据请假开始时间和结束时间,获取请假时长
export function getLeaveTime(data) { export function getLeaveTime(data) {
return request({ return request({
url: '/school/teacherLeave/getTotalTime', url: "/school/teacherLeave/getTotalTime",
method: 'get', method: "get",
params: data, params: data,
}) });
} }
export function getDepId() { export function getDepId() {
return request({ return request({
url: '/schoolGrade/getDeptOrGrade', url: "/schoolGrade/getDeptOrGrade",
method: 'get', method: "get",
}) });
}
//判断用户所选部门是属于级部还是科室
export function getDepids(deptId) {
return request({
url: "/schoolGrade/judgeDeptOrGrade/" + deptId,
method: "get",
});
} }
...@@ -284,7 +284,7 @@ import { ...@@ -284,7 +284,7 @@ import {
getLeaderList getLeaderList
} from "@/api/smartSchool/personWork/leaveApply"; } from "@/api/smartSchool/personWork/leaveApply";
import { formatDate } from "../../../../utils"; import { formatDate } from "../../../../utils";
import { getDepId } from "../../../../api/smartSchool/personWork/leaveApply"; import { getDepId, getDepids } from "../../../../api/smartSchool/personWork/leaveApply";
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import SelectUser from "./components/SelectUser"; import SelectUser from "./components/SelectUser";
...@@ -323,7 +323,7 @@ export default { ...@@ -323,7 +323,7 @@ export default {
created() { created() {
this.getList(); this.getList();
this.schoolLeader(); this.schoolLeader();
this.employeeType = this.$store.state.user.employeeType; // this.employeeType = this.$store.state.user.employeeType;
this.form.teacherId = this.$store.state.user.userId; this.form.teacherId = this.$store.state.user.userId;
}, },
...@@ -529,8 +529,14 @@ export default { ...@@ -529,8 +529,14 @@ export default {
}, },
deptIdAndName(node) { deptIdAndName(node) {
this.form.applyOrgname = node.label; console.log(node);
this.form.handUserName1 = undefined; getDepids(node.id).then(response => {
this.employeeType = response.employeeType;
});
// this.form.applyOrgname = node.label;
// this.form.handUserName1 = undefined;
// this.gradeDirectorList() // this.gradeDirectorList()
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
...@@ -746,7 +752,6 @@ export default { ...@@ -746,7 +752,6 @@ export default {
if (res.code == 200) { if (res.code == 200) {
this.schoolLeaderList = res.rows this.schoolLeaderList = res.rows
} }
})) }))
}, },
...@@ -841,6 +846,8 @@ export default { ...@@ -841,6 +846,8 @@ export default {
getDepId().then(res => { getDepId().then(res => {
this.$set(this.form, "applyOrgid", res.data); this.$set(this.form, "applyOrgid", res.data);
this.form.applyOrgid = res.data this.form.applyOrgid = res.data
this.employeeType = res.employeeType
console.log(this.employeeType, '22');
let arr = this.readNodes(this.gradeOfficeList) let arr = this.readNodes(this.gradeOfficeList)
const node = arr.find(item => { const node = arr.find(item => {
if (item.id == this.form.applyOrgid) { if (item.id == this.form.applyOrgid) {
......
...@@ -2,12 +2,7 @@ ...@@ -2,12 +2,7 @@
<div class="app-container"> <div class="app-container">
<el-form :model="queryForm" :inline="true" size="small" @submit.native.prevent> <el-form :model="queryForm" :inline="true" size="small" @submit.native.prevent>
<el-form-item label="序号" prop="sortId"> <el-form-item label="序号" prop="sortId">
<el-input <el-input clearable placeholder="请输入序号" v-model="queryForm.sortId" @keyup.enter.native="handleQuery">
clearable
placeholder="请输入序号"
v-model="queryForm.sortId"
@keyup.enter.native="handleQuery"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
...@@ -20,63 +15,31 @@ ...@@ -20,63 +15,31 @@
<el-form> <el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
type="primary" v-hasPermi="['system:schoolTimeDetail:add']">新增
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:schoolTimeDetail:add']"
>新增
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
type="success" v-hasPermi="['system:schoolTimeDetail:edit']">修改
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:schoolTimeDetail:edit']"
>修改
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
type="danger" v-hasPermi="['system:schoolTimeDetail:remove']">删除
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:schoolTimeDetail:remove']"
>删除
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="info" plain icon="el-icon-close" size="mini" @click="handleClose"
type="info" v-hasPermi="['system:schoolTimeDetail:close']">关闭
plain
icon="el-icon-close"
size="mini"
@click="handleClose"
v-hasPermi="['system:schoolTimeDetail:close']"
>关闭
</el-button> </el-button>
</el-col> </el-col>
...@@ -84,67 +47,34 @@ ...@@ -84,67 +47,34 @@
</el-row> </el-row>
</el-form> </el-form>
<el-table <el-table v-loading="loading" :data="timeList" @selection-change="handleSelectionChange">
v-loading="loading" <el-table-column type="selection" width="55" align="center" />
:data="timeList" <el-table-column label="序号" sortable align="center" width="80px" prop="sortId" />
@selection-change="handleSelectionChange"> <el-table-column label="名称" align="center" prop="sortName" show-overflow-tooltip />
<el-table-column type="selection" width="55" align="center"/> <el-table-column sortable label="开始时间" align="center" prop="startTime" show-overflow-tooltip />
<el-table-column label="序号" sortable align="center" width="80px" prop="sortId"/> <el-table-column label="结束时间" sortable align="center" prop="endTime" show-overflow-tooltip>
<el-table-column label="名称" align="center" prop="sortName" show-overflow-tooltip/>
<el-table-column sortable label="开始时间" align="center" prop="startTime"
show-overflow-tooltip/>
<el-table-column label="结束时间" sortable align="center" prop="endTime"
show-overflow-tooltip>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip> <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
size="mini" v-hasPermi="['system:schoolTimeDetail:edit']">编辑
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:schoolTimeDetail:edit']"
>编辑
</el-button> </el-button>
<el-button <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
size="mini" v-hasPermi="['system:schoolTimeDetail:remove']">删除
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:schoolTimeDetail:remove']"
>删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-dialog <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body @close="cancel">
:title="title"
:visible.sync="open"
width="600px"
append-to-body
@close="cancel"
>
<el-form ref="postForm" :model="postForm" :rules="rules" label-width="80px"> <el-form ref="postForm" :model="postForm" :rules="rules" label-width="80px">
<el-form-item label="节次" prop="sortName"> <el-form-item label="节次" prop="sortName">
<el-select <el-select v-model="postForm.sortName" value-key="sortId" placeholder="请选择节次" clearable @change="setSortId"
v-model="postForm.sortName" style="width: 100%">
value-key="sortId" <el-option v-for="item in dictList" :key="item.value" :label="item.label"
placeholder="请选择节次" :value="{ sortId: item.value, sortName: item.label }" :disabled="item.disabled" />
clearable
@change="setSortId"
style="width: 100%"
>
<el-option
v-for="item in dictList"
:key="item.value"
:label="item.label"
:value="{sortId:item.value,sortName:item.label}"
:disabled="item.disabled"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -153,29 +83,18 @@ ...@@ -153,29 +83,18 @@
</el-form-item> --> </el-form-item> -->
<el-form-item label="开始时间" prop="startTime"> <el-form-item label="开始时间" prop="startTime">
<el-time-picker <el-time-picker v-model="postForm.startTime" value-format="HH:mm" format="HH:mm" placeholder="选择开始时间"
v-model="postForm.startTime" style="width: 100%">
value-format="HH:mm"
format="HH:mm"
placeholder="选择开始时间"
style="width: 100%"
>
</el-time-picker> </el-time-picker>
</el-form-item> </el-form-item>
<el-form-item label="结束时间" prop="endTime"> <el-form-item label="结束时间" prop="endTime">
<div class="block"> <div class="block">
<el-time-picker <el-time-picker v-model="postForm.endTime" value-format="HH:mm" format="HH:mm" placeholder="选择结束时间"
v-model="postForm.endTime" style="width: 100%">
value-format="HH:mm"
format="HH:mm"
placeholder="选择结束时间"
style="width: 100%"
>
</el-time-picker> </el-time-picker>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input clearable v-model="postForm.remark"></el-input> <el-input clearable v-model="postForm.remark"></el-input>
</el-form-item> </el-form-item>
...@@ -186,11 +105,7 @@ ...@@ -186,11 +105,7 @@
</div> </div>
</el-dialog> </el-dialog>
<ExportTable <ExportTable :open-export.sync="exportOptions.open" :title="exportOptions.title" @export="exportFile"></ExportTable>
:open-export.sync="exportOptions.open"
:title="exportOptions.title"
@export="exportFile"
></ExportTable>
</div> </div>
</template> </template>
...@@ -203,10 +118,10 @@ import { ...@@ -203,10 +118,10 @@ import {
queryOneDetail, queryOneDetail,
deleteTimeDetail deleteTimeDetail
} from '@/api/smartSchool/schoolManage/schoolMomentsDetail' } from '@/api/smartSchool/schoolManage/schoolMomentsDetail'
import {ExportType} from "@/enums/common" import { ExportType } from "@/enums/common"
import {TimeName} from '@/enums/schedule/schoolMomentsDetail' import { TimeName } from '@/enums/schedule/schoolMomentsDetail'
import {CustomCellStyle} from '@/enums/customStyle'; import { CustomCellStyle } from '@/enums/customStyle';
import {getDicts} from '@/api/system/dict/data' import { getDicts } from '@/api/system/dict/data'
import { closeCurrentTab } from "../../../../../../utils/utilLibrary/routerBatch/routerBatch"; import { closeCurrentTab } from "../../../../../../utils/utilLibrary/routerBatch/routerBatch";
export default { export default {
...@@ -247,13 +162,13 @@ export default { ...@@ -247,13 +162,13 @@ export default {
// 表单校验 // 表单校验
rules: { rules: {
sortName: [ sortName: [
{required: true, message: "名称不能为空", trigger: "blur"} { required: true, message: "名称不能为空", trigger: "blur" }
], ],
startTime: [ startTime: [
{required: true, message: "开始时间不能为空", trigger: "blur"} { required: true, message: "开始时间不能为空", trigger: "blur" }
], ],
endTime: [ endTime: [
{required: true, message: "结束时间不能为空", trigger: "blur"} { required: true, message: "结束时间不能为空", trigger: "blur" }
], ],
}, },
// 弹出层标题 // 弹出层标题
...@@ -291,8 +206,9 @@ export default { ...@@ -291,8 +206,9 @@ export default {
exportType: '', exportType: '',
} }
}, },
created() { created() {
this.schoolTimeId = this.$route.query && this.$route.query.schoolTimeId;
this.getList(); this.getList();
this.getDict(); this.getDict();
...@@ -313,7 +229,9 @@ export default { ...@@ -313,7 +229,9 @@ export default {
// 获取列表数据 // 获取列表数据
getList() { getList() {
this.loading = true; this.loading = true;
this.schoolTimeId = this.$route.query && this.$route.query.schoolTimeId;
getDetailList(this.queryForm, this.schoolTimeId).then(response => { getDetailList(this.queryForm, this.schoolTimeId).then(response => {
console.log(this.queryForm, this.schoolTimeId);
this.loading = false this.loading = false
this.timeList = response.rows this.timeList = response.rows
this.sortList = this.timeList.map(function (value, index) { this.sortList = this.timeList.map(function (value, index) {
...@@ -411,12 +329,12 @@ export default { ...@@ -411,12 +329,12 @@ export default {
const ids = this.ids; const ids = this.ids;
const schoolTimeId = this.schoolTimeId const schoolTimeId = this.schoolTimeId
const options = [ const options = [
{type: ExportType.TOTAL, path: '/schoolTimeDetail/export/', params: {schoolTimeId}}, { type: ExportType.TOTAL, path: '/schoolTimeDetail/export/', params: { schoolTimeId } },
{type: ExportType.SELECT, path: '/schoolTimeDetail/export/' + ids, params: {schoolTimeId}}, { type: ExportType.SELECT, path: '/schoolTimeDetail/export/' + ids, params: { schoolTimeId } },
{ {
type: ExportType.QUERY, type: ExportType.QUERY,
path: '/schoolTimeDetail/export/', path: '/schoolTimeDetail/export/',
params: {schoolTimeId, sortId: this.queryForm.sortId} params: { schoolTimeId, sortId: this.queryForm.sortId }
}, },
] ]
callback(options, `学校时刻明细${new Date().getTime()}.xlsx`); callback(options, `学校时刻明细${new Date().getTime()}.xlsx`);
...@@ -502,7 +420,7 @@ export default { ...@@ -502,7 +420,7 @@ export default {
this.resetForm('postForm') this.resetForm('postForm')
}, },
setSortId(data) { setSortId(data) {
const {sortId, sortName} = data const { sortId, sortName } = data
this.postForm.sortId = sortId this.postForm.sortId = sortId
this.postForm.sortName = sortName this.postForm.sortName = sortName
} }
...@@ -512,6 +430,4 @@ export default { ...@@ -512,6 +430,4 @@ export default {
} }
</script> </script>
<style> <style></style>
</style>
...@@ -2,12 +2,8 @@ ...@@ -2,12 +2,8 @@
<section class="app-container"> <section class="app-container">
<el-form :model="queryParams" :inline="true" size="small" @submit.native.prevent> <el-form :model="queryParams" :inline="true" size="small" @submit.native.prevent>
<el-form-item label="时刻名称" prop="timeName"> <el-form-item label="时刻名称" prop="timeName">
<el-input <el-input clearable v-model="queryParams.timeName" @keyup.enter.native="handleQuery"
clearable placeholder="选择时刻"></el-input>
v-model="queryParams.timeName"
@keyup.enter.native="handleQuery"
placeholder="选择时刻"
></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
...@@ -16,38 +12,18 @@ ...@@ -16,38 +12,18 @@
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
type="primary" v-hasPermi="['system:schoolTime:add']">新增
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:schoolTime:add']"
>新增
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
type="success" v-hasPermi="['system:schoolTime:edit']">修改
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:schoolTime:edit']"
>修改
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
type="danger" v-hasPermi="['system:schoolTime:remove']">删除
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:schoolTime:remove']"
>删除
</el-button> </el-button>
</el-col> </el-col>
<!-- <el-col :span="1.5">--> <!-- <el-col :span="1.5">-->
...@@ -63,83 +39,48 @@ ...@@ -63,83 +39,48 @@
<!-- </el-col>--> <!-- </el-col>-->
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>--> <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>-->
</el-row> </el-row>
<el-table <el-table v-loading="loading" :data="momentList" @selection-change="handleSelectionChange">
v-loading="loading" <el-table-column type="selection" width="55" align="center" />
:data="momentList" <el-table-column label="时刻名称" align="center" v-if="columns[0].visible" prop="timeName" show-overflow-tooltip />
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="时刻名称" align="center" v-if="columns[0].visible" prop="timeName"
show-overflow-tooltip/>
<el-table-column label="是否使用" align="center" v-if="columns[1].visible" prop="isUsed"> <el-table-column label="是否使用" align="center" v-if="columns[1].visible" prop="isUsed">
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch v-model="scope.row.isUsed" active-value="1" inactive-value="0"
v-model="scope.row.isUsed" @change="handleUsedChange(scope.row)" />
active-value="1"
inactive-value="0"
@change="handleUsedChange(scope.row)"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" v-if="columns[2].visible" prop="remark"> <el-table-column label="备注" align="center" v-if="columns[2].visible" prop="remark">
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" v-if="columns[3].visible" <el-table-column label="操作" align="center" v-if="columns[3].visible" class-name="small-padding fixed-width">
class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
size="mini" v-hasPermi="['system:schoolTime:edit']">编辑
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:schoolTime:edit']"
>编辑
</el-button> </el-button>
<el-button <el-button size="mini" type="text" icon="el-icon-search" @click="handleViewDetail(scope.row)">明细
size="mini"
type="text"
icon="el-icon-search"
@click="handleViewDetail(scope.row)"
>明细
</el-button> </el-button>
<el-button <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
size="mini" v-hasPermi="['system:schoolTime:remove']">删除
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:schoolTime:remove']"
>删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
v-show="total > 0" @pagination="getList"></pagination>
:total="total" <el-dialog width="500px" :visible.sync="open" :fullscreen="isFullScreen" :modal-append-to-body="false">
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
></pagination>
<el-dialog
width="500px"
:visible.sync="open"
:fullscreen="isFullScreen"
:modal-append-to-body="false"
>
<template slot="title"> <template slot="title">
<div class="custom-dialog__header"> <div class="custom-dialog__header">
<span class="el-dialog__title">{{ title }}</span> <span class="el-dialog__title">{{ title }}</span>
<div class="custom-dialog__right"> <div class="custom-dialog__right">
<div class="custom__dialog__size" @click="isFullScreen = !isFullScreen"> <div class="custom__dialog__size" @click="isFullScreen = !isFullScreen">
<svg-icon style="color: #909399; font-size: 13px" <svg-icon style="color: #909399; font-size: 13px"
:icon-class="isFullScreen?'exit-fullscreen':'fullscreen'"/> :icon-class="isFullScreen ? 'exit-fullscreen' : 'fullscreen'" />
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<el-form :model="form" ref="form" label-width="100px" :rules="rules"> <el-form :model="form" ref="form" label-width="100px" :rules="rules">
<el-form-item label="时刻名称:" prop="timeName"> <el-form-item label="时刻名称:" prop="timeName">
<el-input clearable v-model="form.timeName" <el-input clearable v-model="form.timeName"></el-input>
></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item label="是否使用:"> <!-- <el-form-item label="是否使用:">
<el-select v-model="form.isUsed" style="width: 100%;"> <el-select v-model="form.isUsed" style="width: 100%;">
...@@ -152,13 +93,8 @@ ...@@ -152,13 +93,8 @@
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="备注:" prop="remark"> <el-form-item label="备注:" prop="remark">
<el-input <el-input type="textarea" maxlength="200" :autosize="{ minRows: 2, maxRows: 5 }" show-word-limit
type="textarea" v-model="form.remark"></el-input>
maxlength="200"
:autosize="{ minRows: 2, maxRows: 5}"
show-word-limit
v-model="form.remark"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
...@@ -179,7 +115,7 @@ import { ...@@ -179,7 +115,7 @@ import {
deleteSelect, deleteSelect,
changeUserStatus changeUserStatus
} from '@/api/smartSchool/schoolManage/schoolMoments' } from '@/api/smartSchool/schoolManage/schoolMoments'
import {UseStatus} from "@/enums/schedule/schoolMoments"; import { UseStatus } from "@/enums/schedule/schoolMoments";
export default { export default {
name: "SchoolMoments", name: "SchoolMoments",
...@@ -211,15 +147,15 @@ export default { ...@@ -211,15 +147,15 @@ export default {
// 校验 // 校验
rules: { rules: {
timeName: [ timeName: [
{required: true, message: '请输入时刻名称', trigger: 'blur'} { required: true, message: '请输入时刻名称', trigger: 'blur' }
], ],
}, },
// 列信息 // 列信息
columns: [ columns: [
{key: 0, label: `时刻名称`, visible: true}, { key: 0, label: `时刻名称`, visible: true },
{key: 1, label: `是否使用`, visible: true}, { key: 1, label: `是否使用`, visible: true },
{key: 2, label: `备注`, visible: true}, { key: 2, label: `备注`, visible: true },
{key: 3, label: `操作`, visible: true} { key: 3, label: `操作`, visible: true }
], ],
// 选中数据 // 选中数据
ids: [], ids: [],
...@@ -300,16 +236,15 @@ export default { ...@@ -300,16 +236,15 @@ export default {
/** 【学校时刻明细】按钮 */ /** 【学校时刻明细】按钮 */
handleViewDetail(row) { handleViewDetail(row) {
// 这里进行一次路由跳转
this.$router.push({ this.$router.push({
// path: '/schoolManage/schoolMomentsDetail/' + row.id,
path: '/schoolManage/schoolMomentsDetail', path: '/schoolManage/schoolMomentsDetail',
query: { query: {
schoolTimeId: row.id schoolTimeId: row.id
} }
}) });
}, },
/** 【删除】按钮 */ /** 【删除】按钮 */
handleDelete(row) { handleDelete(row) {
this.throttle(() => { this.throttle(() => {
...@@ -415,5 +350,4 @@ export default { ...@@ -415,5 +350,4 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import "~@/assets/styles/moduleStyle/custom-dialog.scss"; @import "~@/assets/styles/moduleStyle/custom-dialog.scss";
</style> </style>
...@@ -9,9 +9,7 @@ ...@@ -9,9 +9,7 @@
<el-button type="primary" plain size="mini" @click="printTable">打印 <el-button type="primary" plain size="mini" @click="printTable">打印
</el-button> </el-button>
</div> </div>
</div> </div>
<el-card style="height: 100%;width: 900px;"> <el-card style="height: 100%;width: 900px;">
<br/> <br/> <br/> <br/>
<div style="width: 100%; margin: auto;" id="postFormContainer"> <div style="width: 100%; margin: auto;" id="postFormContainer">
......
...@@ -3,37 +3,17 @@ ...@@ -3,37 +3,17 @@
<el-row> <el-row>
<el-col :span="4"> <el-col :span="4">
<el-card style="height: 950px"> <el-card style="height: 950px">
<el-form <el-form :model="queryParams" style="border-bottom: 1px solid #dfe6ec; padding: 10px 0 0 5px">
:model="queryParams"
style="border-bottom: 1px solid #dfe6ec; padding: 10px 0 0 5px"
>
<el-form-item label="班级信息" prop="schoolYear"> <el-form-item label="班级信息" prop="schoolYear">
<el-select <el-select v-model="queryParams.schoolYear" @change="getTreeData" style="width: 100%" size="mini">
v-model="queryParams.schoolYear" <el-option v-for="item in yearList" :key="item.value" :value="item.value" :label="item.label">
@change="getTreeData"
style="width: 100%"
size="mini"
>
<el-option
v-for="item in yearList"
:key="item.value"
:value="item.value"
:label="item.label"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item></el-form-item> <el-form-item></el-form-item>
</el-form> </el-form>
<el-tree <el-tree ref="tree" node-key="id" :data="treeData" :expand-on-click-node="false" highlight-current
ref="tree" default-expand-all @node-click="handleNodeClick"></el-tree>
node-key="id"
:data="treeData"
:expand-on-click-node="false"
highlight-current
default-expand-all
@node-click="handleNodeClick"
></el-tree>
<!-- </div>--> <!-- </div>-->
</el-card> </el-card>
</el-col> </el-col>
...@@ -41,109 +21,61 @@ ...@@ -41,109 +21,61 @@
<el-card style="height: 950px" class="mt50"> <el-card style="height: 950px" class="mt50">
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form <el-form :inline="true" :model="formData" style="padding: 12px 0 0 0">
:inline="true"
:model="formData"
style="padding: 12px 0 0 0"
>
<!-- <el-form-item>--> <!-- <el-form-item>-->
<!-- <el-button type="primary" plain size="mini"--> <!-- <el-button type="primary" plain size="mini"-->
<!-- @click="printTable">打印--> <!-- @click="printTable">打印-->
<!-- </el-button>--> <!-- </el-button>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="学期" prop="termId"> <el-form-item label="学期" prop="termId">
<el-select <el-select v-model="formData.termId" @change="courseInfo" placeholder="请选择学期">
v-model="formData.termId"
@change="courseInfo"
placeholder="请选择学期"
>
<el-option label="上学期" value="0"></el-option> <el-option label="上学期" value="0"></el-option>
<el-option label="下学期" value="1"></el-option> <el-option label="下学期" value="1"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="success" plain icon="el-icon-upload" size="mini" @click="handleImport">导入
type="success"
plain
icon="el-icon-upload"
size="mini"
@click="handleImport"
>导入
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出
</el-button> </el-button>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div <div class="trash" id="trashId" draggable @dragenter="trashDragenter" @dragover="trashDragover"
class="trash" @dragleave="trashDragLeave" @drop="trashDrop">
id="trashId" <i style="font-size: 40px; pointer-events: none" class="el-icon-delete"></i>
draggable
@dragenter="trashDragenter"
@dragover="trashDragover"
@dragleave="trashDragLeave"
@drop="trashDrop"
>
<i
style="font-size: 40px; pointer-events: none"
class="el-icon-delete"
></i>
</div> </div>
</el-col> </el-col>
<el-col :span="5" :offset="3"> <el-col :span="5" :offset="3">
<div <div style="
style="
width: 100%; width: 100%;
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
" ">
> <el-button type="primary" plain @click="printTable">打 印
<el-button type="primary" plain @click="printTable"
>打 印
</el-button> </el-button>
<br/> <br />
<el-button <el-button type="primary" class="affirmCourse" size="medium" @click="getTableValue">确认课表信息
type="primary"
class="affirmCourse"
size="medium"
@click="getTableValue"
>确认课表信息
</el-button> </el-button>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<br/> <br />
<el-row> <el-row>
<el-col :span="21"> <el-col :span="21">
<div class="course"> <div class="course">
<el-table <el-table id="postFormContainer" v-loading="loading" border :key="Math.random()"
id="postFormContainer" :row-style="{ height: '35px' }" :cell-style="{ padding: '0', margin: '0' }" :data="courseList" :row-key="(row) => {
v-loading="loading" return row.id;
border }
:key="Math.random()" " height="710px">
:row-style="{ height: '35px' }"
:cell-style="{ padding: '0', margin: '0' }"
:data="courseList"
:row-key="
(row) => {
return row.id;
}
"
height="710px"
>
<el-table-column label="节次" min-width="90" align="center"> <el-table-column label="节次" min-width="90" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.sortName }} {{ scope.row.sortName }}
...@@ -152,83 +84,44 @@ ...@@ -152,83 +84,44 @@
<el-table-column label="时间" align="center" min-width="90"> <el-table-column label="时间" align="center" min-width="90">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="font-size: 8px"> <span style="font-size: 8px">
{{ scope.row.startTime }}--{{ scope.row.endTime }}</span {{ scope.row.startTime }}--{{ scope.row.endTime }}</span>
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="monday.courseName" label="周一" min-width="100" align="center">
prop="monday.courseName"
label="周一"
min-width="100"
align="center"
>
<template slot-scope="scope"> <template slot-scope="scope">
<div <div draggable @dragstart="(res) => {
draggable dragstart(res, scope.$index, 'monday');
@dragstart=" }
(res) => { " @dragover="dragover" @drop="(res) => {
dragstart(res, scope.$index, 'monday'); drop(res, scope.$index, 'monday');
} }
" " @dragend="dragend" class="dragBox">
@dragover="dragover"
@drop="
(res) => {
drop(res, scope.$index, 'monday');
}
"
@dragend="dragend"
class="dragBox"
>
{{ scope.row.monday && scope.row.monday.courseName }} {{ scope.row.monday && scope.row.monday.courseName }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="tuesday.courseName" droppable label="周二" min-width="100" align="center">
prop="tuesday.courseName"
droppable
label="周二"
min-width="100"
align="center"
>
<template slot-scope="scope"> <template slot-scope="scope">
<div <div draggable @dragstart="(res) => {
draggable dragstart(res, scope.$index, 'tuesday');
@dragstart=" }
(res) => { " @dragover="dragover" @drop="(res) => {
dragstart(res, scope.$index, 'tuesday'); drop(res, scope.$index, 'tuesday');
} }
" " @dragend="dragend" class="dragBox">
@dragover="dragover"
@drop="
(res) => {
drop(res, scope.$index, 'tuesday');
}
"
@dragend="dragend"
class="dragBox"
>
{{ scope.row.tuesday && scope.row.tuesday.courseName }} {{ scope.row.tuesday && scope.row.tuesday.courseName }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="周三" min-width="100" align="center"> <el-table-column label="周三" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div <div draggable @dragstart="(res) => {
draggable dragstart(res, scope.$index, 'wednesday');
@dragstart=" }
(res) => { " @dragover="dragover" @drop="(res) => {
dragstart(res, scope.$index, 'wednesday'); drop(res, scope.$index, 'wednesday');
} }
" " @dragend="dragend" class="dragBox">
@dragover="dragover"
@drop="
(res) => {
drop(res, scope.$index, 'wednesday');
}
"
@dragend="dragend"
class="dragBox"
>
{{ {{
scope.row.wednesday && scope.row.wednesday.courseName scope.row.wednesday && scope.row.wednesday.courseName
}} }}
...@@ -237,22 +130,13 @@ ...@@ -237,22 +130,13 @@
</el-table-column> </el-table-column>
<el-table-column label="周四" min-width="100" align="center"> <el-table-column label="周四" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div <div draggable @dragstart="(res) => {
draggable
@dragstart="
(res) => {
dragstart(res, scope.$index, 'thursday'); dragstart(res, scope.$index, 'thursday');
} }
" " @dragover="dragover" @drop="(res) => {
@dragover="dragover" drop(res, scope.$index, 'thursday');
@drop=" }
(res) => { " @dragend="dragend" class="dragBox">
drop(res, scope.$index, 'thursday');
}
"
@dragend="dragend"
class="dragBox"
>
{{ {{
scope.row.thursday && scope.row.thursday.courseName scope.row.thursday && scope.row.thursday.courseName
}} }}
...@@ -261,44 +145,26 @@ ...@@ -261,44 +145,26 @@
</el-table-column> </el-table-column>
<el-table-column label="周五" min-width="100" align="center"> <el-table-column label="周五" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div <div draggable @dragstart="(res) => {
draggable
@dragstart="
(res) => {
dragstart(res, scope.$index, 'friday'); dragstart(res, scope.$index, 'friday');
} }
" " @dragover="dragover" @drop="(res) => {
@dragover="dragover" drop(res, scope.$index, 'friday');
@drop=" }
(res) => { " @dragend="dragend" class="dragBox">
drop(res, scope.$index, 'friday');
}
"
@dragend="dragend"
class="dragBox"
>
{{ scope.row.friday && scope.row.friday.courseName }} {{ scope.row.friday && scope.row.friday.courseName }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="周六" min-width="100" align="center"> <el-table-column label="周六" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div <div draggable @dragstart="(res) => {
draggable dragstart(res, scope.$index, 'saturday');
@dragstart=" }
(res) => { " @dragover="dragover" @drop="(res) => {
dragstart(res, scope.$index, 'saturday'); drop(res, scope.$index, 'saturday');
} }
" " @dragend="dragend" class="dragBox">
@dragover="dragover"
@drop="
(res) => {
drop(res, scope.$index, 'saturday');
}
"
@dragend="dragend"
class="dragBox"
>
{{ {{
scope.row.saturday && scope.row.saturday.courseName scope.row.saturday && scope.row.saturday.courseName
}} }}
...@@ -307,22 +173,13 @@ ...@@ -307,22 +173,13 @@
</el-table-column> </el-table-column>
<el-table-column label="周日" min-width="100" align="center"> <el-table-column label="周日" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div <div draggable @dragstart="(res) => {
draggable
@dragstart="
(res) => {
dragstart(res, scope.$index, 'sunday'); dragstart(res, scope.$index, 'sunday');
} }
" " @dragover="dragover" @drop="(res) => {
@dragover="dragover" drop(res, scope.$index, 'sunday');
@drop=" }
(res) => { " @dragend="dragend" class="dragBox">
drop(res, scope.$index, 'sunday');
}
"
@dragend="dragend"
class="dragBox"
>
{{ scope.row.sunday && scope.row.sunday.courseName }} {{ scope.row.sunday && scope.row.sunday.courseName }}
</div> </div>
</template> </template>
...@@ -332,17 +189,10 @@ ...@@ -332,17 +189,10 @@
</el-col> </el-col>
<el-col :span="2" :offset="1"> <el-col :span="2" :offset="1">
<div class="courseBox"> <div class="courseBox">
<div <div v-for="(item, index) in courseTypeList" :key="item.courseName" draggable @dragstart="(res) => {
v-for="(item, index) in courseTypeList"
:key="item.courseName"
draggable
@dragstart="
(res) => {
dragCloneStart(res, index); dragCloneStart(res, index);
} }
" " class="courseClone">
class="courseClone"
>
{{ item.courseName }} {{ item.courseName }}
</div> </div>
</div> </div>
...@@ -353,24 +203,10 @@ ...@@ -353,24 +203,10 @@
</el-row> </el-row>
<!-- 用户导入对话框 --> <!-- 用户导入对话框 -->
<el-dialog <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
:title="upload.title" <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="url"
:visible.sync="upload.open" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess"
width="400px" :auto-upload="false" drag>
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
...@@ -406,14 +242,14 @@ import { ...@@ -406,14 +242,14 @@ import {
getClassTree, getClassTree,
saveClassTable, saveClassTable,
} from "@/api/smartSchool/teachAffairAdministration/lessonManage"; } from "@/api/smartSchool/teachAffairAdministration/lessonManage";
import {getYearList} from "@/utils/utilLibrary/getYearList"; import { getYearList } from "@/utils/utilLibrary/getYearList";
import { import {
getFirstLeafNode, getFirstLeafNode,
handleTreeData, handleTreeData,
} from "@/utils/utilLibrary/getTreeClass"; } from "@/utils/utilLibrary/getTreeClass";
import {getToken} from "@/utils/auth"; import { getToken } from "@/utils/auth";
import {commonUpload} from "@/api/common"; import { commonUpload } from "@/api/common";
import * as dd from 'dingtalk-jsapi';
export default { export default {
name: "index", name: "index",
components: { components: {
...@@ -495,7 +331,7 @@ export default { ...@@ -495,7 +331,7 @@ export default {
// 是否更新已经存在的数据 // 是否更新已经存在的数据
// updateSupport: 0, // updateSupport: 0,
// 设置上传的请求头部 // 设置上传的请求头部
headers: {Authorization: "Bearer " + getToken()}, headers: { Authorization: "Bearer " + getToken() },
}, },
}; };
...@@ -718,16 +554,18 @@ export default { ...@@ -718,16 +554,18 @@ export default {
// 打印 // 打印
printTable() { printTable() {
// 重置表单 const baseUrl = window.location.protocol + '//' + window.location.host + '/printLesson';
printJS({ const urlWithParams = `${baseUrl}?courseList=${encodeURIComponent(JSON.stringify(this.courseList))}`;
printable: "postFormContainer", dd.biz.util.openLink({
maxWidth: 10000, url: urlWithParams,
header: "", onSuccess: () => {
ignoreElements: ["no-print", "back-no-print", "front-no-print"], console.log('跳转成功,准备打印');
targetStyles: ["*"], // 打印条码
gridHeaderStyle: "border: 1px solid black", // this.printCode();
type: "html", },
gridStyle: `text-align: center; border: 1px solid black`, onFail: (error) => {
console.error('跳转失败', error);
}
}); });
}, },
/** 导入按钮操作 */ /** 导入按钮操作 */
...@@ -750,7 +588,7 @@ export default { ...@@ -750,7 +588,7 @@ export default {
response.msg + response.msg +
"</div>", "</div>",
"导入结果", "导入结果",
{dangerouslyUseHTMLString: true} { dangerouslyUseHTMLString: true }
); );
}, },
// 上传成功回调 // 上传成功回调
...@@ -847,7 +685,6 @@ export default { ...@@ -847,7 +685,6 @@ export default {
/* line-height: 50px;*/ /* line-height: 50px;*/
/* text-align: center;*/ /* text-align: center;*/
/*}*/ /*}*/
</style> </style>
......
<template> <template>
<div class="app-container"> <div class="app-container">
<el-row :gutter="10" class="mb8"> <el-row>
<el-button type="primary" plain @click="printTable">打 印 <el-col :span="20">
</el-button> <el-card style="height: 950px" class="mt50">
</el-row> <el-row>
<el-col :span="21"> <!-- <el-col :span="8"> -->
<div class="course"> <!-- <el-form :inline="true" :model="formData" style="padding: 12px 0 0 0"> -->
<el-table id="postFormContainer" v-loading="loading" border :key="Math.random()" <!-- <el-form-item>-->
:row-style="{ height: '35px' }" :cell-style="{ padding: '0', margin: '0' }" :data="courseList" :row-key="(row) => { <!-- <el-button type="primary" plain size="mini"-->
return row.id; <!-- @click="printTable">打印-->
} <!-- </el-button>-->
" height="710px"> <!-- </el-form-item>-->
<el-table-column label="节次" min-width="90" align="center"> <!-- <el-form-item label="学期" prop="termId">
<template slot-scope="scope"> <el-select v-model="formData.termId" @change="courseInfo" placeholder="请选择学期">
{{ scope.row.sortName }} <el-option label="上学期" value="0"></el-option>
</template> <el-option label="下学期" value="1"></el-option>
</el-table-column> </el-select>
<el-table-column label="时间" align="center" min-width="90"> </el-form-item> -->
<template slot-scope="scope"> <!-- <el-row :gutter="10" class="mb8">
<span style="font-size: 8px"> <el-col :span="1.5">
{{ scope.row.startTime }}--{{ scope.row.endTime }}</span> <el-button type="success" plain icon="el-icon-upload" size="mini"
</template> @click="handleImport">导入
</el-table-column> </el-button>
<el-table-column prop="monday.courseName" label="周一" min-width="100" align="center"> </el-col>
<template slot-scope="scope"> <el-col :span="1.5">
<div draggable @dragstart="(res) => { <el-button type="warning" plain icon="el-icon-download" size="mini"
dragstart(res, scope.$index, 'monday'); @click="handleExport">导出
} </el-button>
" @dragover="dragover" @drop="(res) => { </el-col>
</el-row> -->
<!-- </el-form> -->
<!-- </el-col> -->
<!-- <el-col :span="8"> -->
<!-- <div class="trash" id="trashId" draggable @dragenter="trashDragenter" @dragover="trashDragover"
@dragleave="trashDragLeave" @drop="trashDrop">
<i style="font-size: 40px; pointer-events: none" class="el-icon-delete"></i>
</div> -->
<!-- </el-col> -->
<el-col >
<div style="width: 100%; display: flex; justify-content: flex-end; align-items: flex-end;">
<el-button type="primary" plain @click="printTable">打 印</el-button>
<br />
</div>
</el-col>
</el-row>
<br />
<el-row>
<el-col :span="21">
<div class="course">
<el-table id="postFormContainer" v-loading="loading" border :key="Math.random()"
:row-style="{ height: '35px' }" :cell-style="{ padding: '0', margin: '0' }"
:data="courseList" :row-key="(row) => {
return row.id;
}
" height="710px">
<el-table-column label="节次" min-width="90" align="center">
<template slot-scope="scope">
{{ scope.row.sortName }}
</template>
</el-table-column>
<el-table-column label="时间" align="center" min-width="90">
<template slot-scope="scope">
<span style="font-size: 8px">
{{ scope.row.startTime }}--{{ scope.row.endTime }}</span>
</template>
</el-table-column>
<el-table-column prop="monday.courseName" label="周一" min-width="100" align="center">
<template slot-scope="scope">
<div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'monday');
}
" @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'monday'); drop(res, scope.$index, 'monday');
} }
" @dragend="dragend" class="dragBox"> " @dragend="dragend" class="dragBox">
{{ scope.row.monday && scope.row.monday.courseName }} {{ scope.row.monday && scope.row.monday.courseName }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="tuesday.courseName" droppable label="周二" min-width="100" align="center"> <el-table-column prop="tuesday.courseName" droppable label="周二" min-width="100"
<template slot-scope="scope"> align="center">
<div draggable @dragstart="(res) => { <template slot-scope="scope">
dragstart(res, scope.$index, 'tuesday'); <div draggable @dragstart="(res) => {
} dragstart(res, scope.$index, 'tuesday');
" @dragover="dragover" @drop="(res) => { }
" @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'tuesday'); drop(res, scope.$index, 'tuesday');
} }
" @dragend="dragend" class="dragBox"> " @dragend="dragend" class="dragBox">
{{ scope.row.tuesday && scope.row.tuesday.courseName }} {{ scope.row.tuesday && scope.row.tuesday.courseName }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="周三" min-width="100" align="center"> <el-table-column label="周三" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div draggable @dragstart="(res) => { <div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'wednesday'); dragstart(res, scope.$index, 'wednesday');
} }
" @dragover="dragover" @drop="(res) => { " @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'wednesday'); drop(res, scope.$index, 'wednesday');
} }
" @dragend="dragend" class="dragBox"> " @dragend="dragend" class="dragBox">
{{ {{
scope.row.wednesday && scope.row.wednesday.courseName scope.row.wednesday && scope.row.wednesday.courseName
}} }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="周四" min-width="100" align="center"> <el-table-column label="周四" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div draggable @dragstart="(res) => { <div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'thursday'); dragstart(res, scope.$index, 'thursday');
} }
" @dragover="dragover" @drop="(res) => { " @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'thursday'); drop(res, scope.$index, 'thursday');
} }
" @dragend="dragend" class="dragBox"> " @dragend="dragend" class="dragBox">
{{ {{
scope.row.thursday && scope.row.thursday.courseName scope.row.thursday && scope.row.thursday.courseName
}} }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="周五" min-width="100" align="center"> <el-table-column label="周五" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div draggable @dragstart="(res) => { <div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'friday'); dragstart(res, scope.$index, 'friday');
} }
" @dragover="dragover" @drop="(res) => { " @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'friday'); drop(res, scope.$index, 'friday');
} }
" @dragend="dragend" class="dragBox"> " @dragend="dragend" class="dragBox">
{{ scope.row.friday && scope.row.friday.courseName }} {{ scope.row.friday && scope.row.friday.courseName }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="周六" min-width="100" align="center"> <el-table-column label="周六" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div draggable @dragstart="(res) => { <div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'saturday'); dragstart(res, scope.$index, 'saturday');
} }
" @dragover="dragover" @drop="(res) => { " @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'saturday'); drop(res, scope.$index, 'saturday');
} }
" @dragend="dragend" class="dragBox"> " @dragend="dragend" class="dragBox">
{{ {{
scope.row.saturday && scope.row.saturday.courseName scope.row.saturday && scope.row.saturday.courseName
}} }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="周日" min-width="100" align="center"> <el-table-column label="周日" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div draggable @dragstart="(res) => { <div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'sunday'); dragstart(res, scope.$index, 'sunday');
} }
" @dragover="dragover" @drop="(res) => { " @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'sunday'); drop(res, scope.$index, 'sunday');
} }
" @dragend="dragend" class="dragBox"> " @dragend="dragend" class="dragBox">
{{ scope.row.sunday && scope.row.sunday.courseName }} {{ scope.row.sunday && scope.row.sunday.courseName }}
</div>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
<el-col :span="2" :offset="1">
<div class="courseBox">
<div v-for="(item, index) in courseTypeList" :key="item.courseName" draggable @dragstart="(res) => {
dragCloneStart(res, index);
}
" class="courseClone">
{{ item.courseName }}
</div>
</div> </div>
</template> </el-col>
</el-table-column> </el-row>
</el-table> </el-card>
</div> </el-col>
</el-col>
<el-col :span="2" :offset="1"> </el-row>
<div class="courseBox">
<div v-for="(item, index) in courseTypeList" :key="item.courseName" draggable @dragstart="(res) => {
dragCloneStart(res, index);
}
" class="courseClone">
{{ item.courseName }}
</div>
</div>
</el-col>
</div> </div>
</template> </template>
...@@ -139,21 +188,21 @@ ...@@ -139,21 +188,21 @@
<script> <script>
import draggable from "vuedraggable"; import draggable from "vuedraggable";
import printJS from "print-js"; import printJS from "print-js";
// import { import {
// getNewYear, // getNewYear,
// getClassType, // getClassType,
// getCourseInfo, getCourseInfo,
// getClassTree, // getClassTree,
// saveClassTable, // saveClassTable,
// } from "@/api/smartSchool/teachAffairAdministration/lessonManage"; } from "@/api/smartSchool/teachAffairAdministration/lessonManage";
// import { getYearList } from "@/utils/utilLibrary/getYearList"; // import { getYearList } from "@/utils/utilLibrary/getYearList";
// import { // import {
// getFirstLeafNode, // getFirstLeafNode,
// handleTreeData, // handleTreeData,
// } from "@/utils/utilLibrary/getTreeClass"; // } from "@/utils/utilLibrary/getTreeClass";
// import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
// import { commonUpload } from "@/api/common"; import { commonUpload } from "@/api/common";
import * as dd from 'dingtalk-jsapi';
export default { export default {
name: "index", name: "index",
components: { components: {
...@@ -168,18 +217,11 @@ export default { ...@@ -168,18 +217,11 @@ export default {
"student_type", "student_type",
"child_state", "child_state",
], ],
created() { created() {
// 获取 URL 参数
const urlParams = new URLSearchParams(window.location.search); const urlParams = new URLSearchParams(window.location.search);
// 获取 courseList 参数的值
const courseListParam = urlParams.get('courseList'); const courseListParam = urlParams.get('courseList');
// 将 courseList 参数的值反序列化为 JavaScript 对象 this.courseList = JSON.parse(decodeURIComponent(courseListParam)); // 将获取到的 courseList 赋值给 this.courseList
const courseList = JSON.parse(decodeURIComponent(courseListParam));
console.log(courseList, 'courseList');
}, },
computed: { computed: {
// 上传的地址 // 上传的地址
url: function () { url: function () {
...@@ -247,18 +289,144 @@ export default { ...@@ -247,18 +289,144 @@ export default {
}, },
methods: { methods: {
newYear() {
getNewYear().then((res) => {
// this.$set(queryParams, "schoolYear", Number(res.schoolYear))
this.queryParams.schoolYear = res.schoolYear;
this.getTreeData(); //关键性的一句
});
},
/** 获取班级下拉树数据 */
getTreeData() {
getClassTree(this.queryParams)
.then((response) => {
this.$nextTick(() => {
try {
this.treeData = handleTreeData(
response.data,
this.dict.type.grade_type,
this.dict.type.Grade
);
} catch (exception) {
this.treeData = [];
}
const searchItem = getFirstLeafNode(this.treeData[0]);
this.handleNodeClick.apply(undefined, [searchItem]);
});
})
.catch((error) => {
});
},
// 节点点击事件
handleNodeClick(data) {
this.currentTreeDatas = data
this.formData.classId = data.id;
this.$nextTick(() => {
this.$refs.tree.setCurrentKey(data.id);
});
this.courseInfo();
},
/* ------------------安全线--------------------- */
//获取课程种类列表
classType() {
getClassType().then((res) => {
// this.courseTypeList = res.rows
this.courseTypeList = res.rows.map((item) => {
return {
id: item.id,
courseName: item.courseName,
};
});
});
},
//上传课程表信息给后端保存
getTableValue() {
console.log(306);
this.loading = true;
console.log(this.courseList, 307);
this.courseList.map((item) => {
this.courseTypeList.map((items) => {
if (item.monday["courseName"] == items["courseName"]) {
item.monday["id"] = items.id;
}
if (item.tuesday["courseName"] == items["courseName"]) {
item.tuesday["id"] = items.id;
}
if (item.wednesday["courseName"] == items["courseName"]) {
item.wednesday["id"] = items.id;
}
if (item.thursday["courseName"] == items["courseName"]) {
item.thursday["id"] = items.id;
}
if (item.friday["courseName"] == items["courseName"]) {
item.friday["id"] = items.id;
}
if (item.saturday["courseName"] == items["courseName"]) {
item.saturday["id"] = items.id;
}
if (item.sunday["courseName"] == items["courseName"]) {
item.sunday["id"] = items.id;
}
// return items
});
return item;
});
saveClassTable(
this.formData.classId,
this.formData.termId,
this.courseList
)
.then((res) => {
if (res.code == 200) {
this.loading = false;
this.$modal.msgSuccess("录入成功");
}
})
.catch((err) => {
this.loading = false;
this.$modal.msgError("录入失败");
});
},
//获取课表信息
courseInfo() {
this.loading = true;
getCourseInfo(this.formData)
.then((res) => {
//课表
this.courseList = [];
this.courseList = res.rows;
this.loading = false;
})
.catch((err) => {
});
},
//判断当前时间节点处在上学期还是下学期
getSession() {
let d = new Date();
let n = d.getMonth() + 1;
if (n >= 2 && n < 8) {
//下学期
this.formData.termId = "1";
} else {
//上学期
this.formData.termId = "0";
}
},
handleYearList() {
// 获取年份选择框数组
this.yearList = getYearList();
let a = {};
a.value = new Date().getFullYear() + 1;
a.label = a.value + "年";
this.yearList.unshift(a);
},
//拖动模块 //拖动模块
dragstart(event, index, weekNum) { dragstart(event, index, weekNum) {
...@@ -285,6 +453,20 @@ export default { ...@@ -285,6 +453,20 @@ export default {
event.preventDefault(); // *********必须声明的事件*********** event.preventDefault(); // *********必须声明的事件***********
}, },
drop(event, index, weekNum) {
event.preventDefault();
//作用于:目标元素
this.dragAimIndex = index;
this.dragAimWeekNum = weekNum;
this.listText = event.target.innerHTML; //3.获取到目标元素的DOM
const drag_text = event.dataTransfer.getData("drag_text"); //2.获取到拖拽元素的DOM
event.target.innerHTML = drag_text; //4.将目标元素更改为拖拽元素
if (this.state == "clone") {
console.log(this.dragAimIndex, this.dragAimWeekNum, 415);
this.courseList[this.dragAimIndex][this.dragAimWeekNum]["courseName"] =
this.courseTypeList[this.dragIndex]["courseName"];
}
},
trashDragenter(event) { trashDragenter(event) {
// 作用于:被拖拽的元素 // 作用于:被拖拽的元素
...@@ -300,8 +482,27 @@ export default { ...@@ -300,8 +482,27 @@ export default {
event.preventDefault(); event.preventDefault();
document.getElementById("trashId").style.background = "white"; document.getElementById("trashId").style.background = "white";
}, },
trashDrop(event) {
//作用于:目标元素
event.preventDefault();
document.getElementById("trashId").style.background = "white";
this.courseList[this.dragIndex][this.dragWeekNum]["courseName"] = null;
this.courseList[this.dragIndex][this.dragWeekNum]["id"] = null;
},
dragend() {
// 作用于:被拖拽的元素
event.preventDefault();
event.target.innerHTML = this.listText;
if (this.state == "drag") {
let temp =
this.courseList[this.dragIndex][this.dragWeekNum]["courseName"];
this.courseList[this.dragIndex][this.dragWeekNum]["courseName"] =
this.courseList[this.dragAimIndex][this.dragAimWeekNum]["courseName"];
this.courseList[this.dragAimIndex][this.dragAimWeekNum]["courseName"] =
temp;
}
},
// 打印 // 打印
printTable() { printTable() {
// 重置表单 // 重置表单
...@@ -318,9 +519,48 @@ export default { ...@@ -318,9 +519,48 @@ export default {
}, },
/** 导入按钮操作 */
handleImport() {
this.upload.title = "课程表导入";
this.upload.open = true;
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.handleNodeClick(this.currentTreeDatas)
this.$alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
response.msg +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
);
},
// 上传成功回调
handleAvatarSuccess(res, file) {
this.imageUrl = res.data.url;
this.commonUpload(file);
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit()
},
// 导出
handleExport() {
this.download(
`/schoolTimeTable/exportTable/${this.formData.classId}/${this.formData.termId}`,
{
...this.queryParams,
},
`课程表_${new Date().getTime()}.xlsx`
);
},
}, },
}; };
</script> </script>
......
...@@ -5,15 +5,13 @@ ...@@ -5,15 +5,13 @@
<div class="head-container"> <div class="head-container">
<el-input v-model="deptName" placeholder="请输入部门名称" clearable size="small" prefix-icon="el-icon-search" <el-input v-model="deptName" placeholder="请输入部门名称" clearable size="small" prefix-icon="el-icon-search"
style="margin-bottom: 20px" /> style="margin-bottom: 20px" />
</div> </div>
<div class="head-container"> <div class="head-container">
<el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false" <el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false"
:filter-node-method="filterNode" ref="tree" default-expand-all highlight-current :filter-node-method="filterNode" ref="tree" default-expand-all="false" highlight-current
@node-click="handleNodeClick" /> @node-click="handleNodeClick" />
</div> </div>
</el-col> </el-col>
<el-col :span="20" :xs="24"> <el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" label-width="90px" :inline="true" v-show="showSearch"> <el-form :model="queryParams" ref="queryForm" size="small" label-width="90px" :inline="true" v-show="showSearch">
<el-form-item label="姓名" clearable prop="teacherName"> <el-form-item label="姓名" clearable prop="teacherName">
...@@ -562,522 +560,525 @@ export default { ...@@ -562,522 +560,525 @@ export default {
// If the selection exceeds the limit, remove the last item // If the selection exceeds the limit, remove the last item
this.form.deptIds.pop(); this.form.deptIds.pop();
} }
}, }
}, },
created() { created() {
this.getList(); this.getList();
this.getDeptTree(); this.getDeptTree();
// this.getConfigKey('sys.user.initPassword').then(response => { // this.getConfigKey('sys.user.initPassword').then(response => {
// this.initPassword = response.msg // this.initPassword = response.msg
// }) // })
},
methods: {
handleSelectionChange(selectedItems) {
if (selectedItems.length > 8) {
// 用户选择的项数超过了最大限制,您可以在此处进行处理,例如取消选择最后一个项
this.form.deptIds.pop();
}
}, },
methods: { // 筛选节点
handleSelectionChange(selectedItems) { filterNode(value, data) {
if (selectedItems.length > 8) { if (!value) return true;
// 用户选择的项数超过了最大限制,您可以在此处进行处理,例如取消选择最后一个项 return data.label.indexOf(value) !== -1;
this.form.deptIds.pop(); },
} // 节点单击事件
}, handleNodeClick(data) {
// 筛选节点 this.queryParams.deptId = data.id;
filterNode(value, data) { this.handleQuery();
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
// 节点单击事件
handleNodeClick(data) {
this.queryParams.deptId = data.id;
this.handleQuery();
},
/** 查询学校老师列表 */
getList() {
this.loading = true;
listInform(this.queryParams).then((response) => {
this.informList = response.rows;
this.total = response.total; },
this.loading = false;
}); /** 查询学校老师列表 */
}, getList() {
// 取消按钮 this.loading = true;
cancel() { listInform(this.queryParams).then((response) => {
this.open = false; this.informList = response.rows;
this.reset();
}, this.total = response.total;
// 表单重置 this.loading = false;
reset() { });
this.form = { },
id: null, // 取消按钮
teacherName: null, cancel() {
// userName: null, this.open = false;
teacherTel: null, this.reset();
// phonenumber: null, },
teacherCode: null, // 表单重置
idCard: null, reset() {
homeAddress: null, this.form = {
nation: null, id: null,
picUrl: null, teacherName: null,
birthday: null, // userName: null,
education: null, teacherTel: null,
sex: null, // phonenumber: null,
postIds: null, teacherCode: null,
roleIds: null, idCard: null,
deptId: null, homeAddress: null,
password: null, nation: null,
}; picUrl: null,
this.imageUrl = ""; birthday: null,
this.resetForm("form"); education: null,
}, sex: null,
/** 搜索按钮操作 */ postIds: null,
handleQuery() { roleIds: null,
this.throttle(() => { deptId: null,
this.queryParams.pageNum = 1; password: null,
this.getList(); };
}); this.imageUrl = "";
}, this.resetForm("form");
getResumelist() { },
this.resumeListLoading = true; /** 搜索按钮操作 */
listResume({ teacherId: this.teacherId }).then((res) => { handleQuery() {
if (res.code == 200) { this.throttle(() => {
this.resumeList = res.rows; this.queryParams.pageNum = 1;
this.resumeListLoading = false; this.getList();
} else { });
this.$message.error("数据请求失败"); },
this.resumeListLoading = false; getResumelist() {
} this.resumeListLoading = true;
listResume({ teacherId: this.teacherId }).then((res) => {
if (res.code == 200) {
this.resumeList = res.rows;
this.resumeListLoading = false;
} else {
this.$message.error("数据请求失败");
this.resumeListLoading = false;
}
});
},
getHonorlist() {
this.honorListLoading = true;
listTeacherAward({ teacherId: this.teacherId }).then((res) => {
if (res.code == 200) {
this.honorList = res.rows;
this.honorListLoading = false;
} else {
this.$message.error("数据请求失败");
this.honorListLoading = false;
}
});
},
handleResume(row) {
this.$router.push({
path: "/teacherManage/resume",
query: {
teacherId: row.id,
},
});
},
handleHonor(row) {
// 进入下一个页面
this.$router.push({
path: "/teacherManage/awardDetails",
query: {
teacherId: row.id,
},
});
},
handleClassView(row) {
this.$router.push({
path: "/teachManage/classView",
query: {
teacherId: row.id,
},
});
},
/** 重置密码按钮操作 */
handleResetPwd(row) {
this.$prompt('请输入"' + row.teacherName + '"的新密码', "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
closeOnClickModal: false,
inputPattern: /^.{5,20}$/,
inputErrorMessage: "用户密码长度必须介于 5 和 20 之间"
}).then(({ value }) => {
resetUserPwd(row.userId, value).then(response => {
this.$modal.msgSuccess("修改成功,新密码是:" + value);
}); });
}, }).catch(() => {
getHonorlist() { });
this.honorListLoading = true; },
listTeacherAward({ teacherId: this.teacherId }).then((res) => { /** 分配角色操作 */
if (res.code == 200) { handleAuthRole: function (row) {
this.honorList = res.rows; // const userId = row.userId;
this.honorListLoading = false; this.$router.push({
} else { path: "/teacherInforManage/authRole",
this.$message.error("数据请求失败"); query: {
this.honorListLoading = false; userId: row.userId
} }
});
},
//确认分配角色
submitAssignRoles() {
console.log(this.authRole);
let query = {};
query.id = this.userId;
query.authRole = this.authRole;
submitRoles(query).then((res) => {
this.assignRolesopen = false;
this.$message({
type: "success",
message: `分配角色成功`,
}); });
}, });
handleResume(row) { },
this.$router.push({ // 关闭对话框
path: "/teacherManage/resume", close() {
query: { this.assignRolesopen = false;
teacherId: row.id, this.resetPasswordopen = false;
}, },
//确认重置密码
submitReset() {
let query = {};
query.userId = this.userId;
query.password = this.password;
sendResetPassword(query).then((res) => {
this.resetPasswordopen = false;
this.$message({
type: "info",
message: `重置密码成功`,
}); });
}, });
handleHonor(row) { },
// 进入下一个页面 /** 重置按钮操作 */
this.$router.push({ resetQuery() {
path: "/teacherManage/awardDetails", this.resetForm("queryForm");
query: { this.handleQuery();
teacherId: row.id, },
}, // 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.isDisabled = false;
this.reset();
this.signUrl = "",
this.imageUrl = "",
this.open = true;
this.title = "添加教职工信息";
this.getPostAndRoleList();
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.getPostAndRoleList();
const id = row.id || this.ids;
this.$modal.loading("正在加载数据,请稍等...");
getInform(id)
.then((response) => {
this.$modal.closeLoading();
this.form = response.data;
this.imageUrl = this.peV + this.form.picUrl;
this.signUrl = this.peV + this.form.sign;
this.open = true;
this.isDisabled = false;
this.title = "修改教职工信息";
})
.catch((error) => {
this.$modal.closeLoading();
}); });
}, },
handleClassView(row) { /** 查看详情 */
this.$router.push({ handleDetail(row) {
path: "/teachManage/classView", this.reset();
query: { this.getPostAndRoleList();
teacherId: row.id, const id = row.id || this.ids;
}, this.$modal.loading("正在加载数据,请稍等...");
getInform(id)
.then((response) => {
this.$modal.closeLoading();
this.form = response.data;
this.imageUrl = this.form.picUrl;
this.open = true;
this.isDisabled = true;
this.title = "查看教职工信息";
})
.catch((error) => {
this.$modal.closeLoading();
}); });
}, },
// 上传成功回调
handleAvatarSuccess(res, file) {
this.imageUrl = res.data.url;
this.commonUpload(file);
},
// 上传前格式和图片大小限制
beforeAvatarUpload(file) {
const type =
file.type === "image/jpeg" ||
"image/jpg" ||
"image/webp" ||
"image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!type) {
this.$message.error("图片格式不正确!(只能包含jpg,png,webp,JPEG)");
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return type && isLt2M;
},
/** 重置密码按钮操作 */ // 上传图片
handleResetPwd(row) { uploadImage(file, type) {
this.$prompt('请输入"' + row.teacherName + '"的新密码', "提示", { const fileData = file.file;
confirmButtonText: "确定", const formData = new FormData();
cancelButtonText: "取消", formData.append("file", fileData);
closeOnClickModal: false, if (type == 'photo') {
inputPattern: /^.{5,20}$/, this.photoUploadLoading = true;
inputErrorMessage: "用户密码长度必须介于 5 和 20 之间" commonUpload(formData).then((response) => {
}).then(({ value }) => { console.log(response, 1147)
resetUserPwd(row.userId, value).then(response => { this.photoUploadLoading = false;
this.$modal.msgSuccess("修改成功,新密码是:" + value); this.$modal.msgSuccess("上传成功");
}); this.imageUrl = process.env.VUE_APP_BASE_API + response.url;
}).catch(() => { this.form.avatar = response.url;
}).catch((error) => {
this.photoUploadLoading = false;
}); });
}, } else {
/** 分配角色操作 */ this.signUploadLoading = true;
handleAuthRole: function (row) { signUpload(formData).then((response) => {
// const userId = row.userId; this.signUploadLoading = false;
this.$router.push({ this.$modal.msgSuccess("上传成功");
path: "/teacherInforManage/authRole", this.signUrl = process.env.VUE_APP_BASE_API + response.url;
query: { this.form.sign = response.url;
userId: row.userId }).catch((error) => {
} this.signUploadLoading = false;
}); });
}, }
//确认分配角色 },
submitAssignRoles() {
console.log(this.authRole);
let query = {};
query.id = this.userId;
query.authRole = this.authRole;
submitRoles(query).then((res) => {
this.assignRolesopen = false;
this.$message({
type: "success",
message: `分配角色成功`,
});
});
},
// 关闭对话框
close() {
this.assignRolesopen = false;
this.resetPasswordopen = false;
},
//确认重置密码
submitReset() {
let query = {};
query.userId = this.userId;
query.password = this.password;
sendResetPassword(query).then((res) => {
this.resetPasswordopen = false;
this.$message({
type: "info",
message: `重置密码成功`,
});
});
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.isDisabled = false;
this.reset();
this.signUrl = "",
this.imageUrl = "",
this.open = true;
this.title = "添加教职工信息";
this.getPostAndRoleList();
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.getPostAndRoleList();
const id = row.id || this.ids;
this.$modal.loading("正在加载数据,请稍等...");
getInform(id)
.then((response) => {
this.$modal.closeLoading();
this.form = response.data;
this.imageUrl = this.peV + this.form.picUrl;
this.signUrl = this.peV + this.form.sign;
this.open = true;
this.isDisabled = false;
this.title = "修改教职工信息";
})
.catch((error) => {
this.$modal.closeLoading();
});
},
/** 查看详情 */
handleDetail(row) {
this.reset();
this.getPostAndRoleList();
const id = row.id || this.ids;
this.$modal.loading("正在加载数据,请稍等...");
getInform(id)
.then((response) => {
this.$modal.closeLoading();
this.form = response.data;
this.imageUrl = this.form.picUrl;
this.open = true;
this.isDisabled = true;
this.title = "查看教职工信息";
})
.catch((error) => {
this.$modal.closeLoading();
});
},
// 上传成功回调
handleAvatarSuccess(res, file) {
this.imageUrl = res.data.url;
this.commonUpload(file);
},
// 上传前格式和图片大小限制
beforeAvatarUpload(file) {
const type =
file.type === "image/jpeg" ||
"image/jpg" ||
"image/webp" ||
"image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!type) {
this.$message.error("图片格式不正确!(只能包含jpg,png,webp,JPEG)");
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return type && isLt2M;
},
// 上传图片 /** 提交按钮 */
uploadImage(file, type) { submitForm() {
const fileData = file.file; if (!this.form.picUrl) {
const formData = new FormData(); if (this.form.sex === Gender.FEMALE) {
formData.append("file", fileData); this.form.picUrl =
if (type == 'photo') { "https://eos-wuxi-1.cmecloud.cn/dy-pro/image/2022/08/09/b076ed42bfca4a8cae062dfffd5f3618.jpg";
this.photoUploadLoading = true;
commonUpload(formData).then((response) => {
console.log(response, 1147)
this.photoUploadLoading = false;
this.$modal.msgSuccess("上传成功");
this.imageUrl = process.env.VUE_APP_BASE_API + response.url;
this.form.avatar = response.url;
}).catch((error) => {
this.photoUploadLoading = false;
});
} else { } else {
this.signUploadLoading = true; this.form.picUrl =
signUpload(formData).then((response) => { "https://eos-wuxi-1.cmecloud.cn/dy-pro/image/2022/08/09/8a6c1334494d418d8a53cc7bf5abd668.jpg";
this.signUploadLoading = false;
this.$modal.msgSuccess("上传成功");
this.signUrl = process.env.VUE_APP_BASE_API + response.url;
this.form.sign = response.url;
}).catch((error) => {
this.signUploadLoading = false;
});
} }
}
}, this.$refs["form"].validate((valid) => {
if (valid) {
/** 提交按钮 */ if (this.form.id != null) {
submitForm() { updateInform(this.form).then((response) => {
if (!this.form.picUrl) { this.$modal.msgSuccess("修改成功");
if (this.form.sex === Gender.FEMALE) { this.open = false;
this.form.picUrl = this.getList();
"https://eos-wuxi-1.cmecloud.cn/dy-pro/image/2022/08/09/b076ed42bfca4a8cae062dfffd5f3618.jpg"; });
} else { } else {
this.form.picUrl = addInform(this.form).then((response) => {
"https://eos-wuxi-1.cmecloud.cn/dy-pro/image/2022/08/09/8a6c1334494d418d8a53cc7bf5abd668.jpg"; this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
} }
} }
this.$refs["form"].validate((valid) => { });
if (valid) { },
if (this.form.id != null) { /** 删除按钮操作 */
updateInform(this.form).then((response) => { handleDelete(row) {
this.$modal.msgSuccess("修改成功"); const ids = row.id || this.ids;
this.open = false; this.$modal
this.getList(); .confirm(
}); `是否确认删除选中的${Object.hasOwnProperty.call(ids, "length") ? ids.length : 1
} else { }条数据?`
addInform(this.form).then((response) => { )
this.$modal.msgSuccess("新增成功"); .then(() => {
this.open = false; this.$modal.loading("正在删除数据,请稍等...");
this.getList(); return delInform(ids);
}); })
} .then(() => {
} this.$modal.closeLoading();
this.$modal.msgSuccess("删除成功");
this.getList();
})
.catch(() => {
this.$modal.closeLoading();
}); });
}, },
/** 删除按钮操作 */ /** 导出按钮操作 */
handleDelete(row) { handleExport() {
const ids = row.id || this.ids; // 导出选中,导出全部,根据查询条件导出
this.$modal this.exportOptions.open = true;
.confirm( // this.$confirm(`是否确认导出${ !!this.ids.length ? this.ids.length + '条' : '所有' }数据?`, '提示', {
`是否确认删除选中的${Object.hasOwnProperty.call(ids, "length") ? ids.length : 1 // confirmButtonText: '确定',
}条数据?` // cancelButtonText: '取消',
) // type: 'warning'
.then(() => { // }).then(() => {
this.$modal.loading("正在删除数据,请稍等..."); // if (this.ids.length) {
return delInform(ids); // this.download('/school/teacher/export/' + this.ids, {
}) // ...this.queryParams
.then(() => { // }, `教师信息.xlsx`)
this.$modal.closeLoading(); // } else {
this.$modal.msgSuccess("删除成功"); // this.download('/school/teacher/export', {
this.getList(); // ...this.queryParams
}) // }, `教师信息.xlsx`)
.catch(() => { // }
this.$modal.closeLoading(); //
}); // }).catch(() => {
}, //
/** 导出按钮操作 */ // });
handleExport() { },
// 导出选中,导出全部,根据查询条件导出
this.exportOptions.open = true;
// this.$confirm(`是否确认导出${ !!this.ids.length ? this.ids.length + '条' : '所有' }数据?`, '提示', {
// confirmButtonText: '确定',
// cancelButtonText: '取消',
// type: 'warning'
// }).then(() => {
// if (this.ids.length) {
// this.download('/school/teacher/export/' + this.ids, {
// ...this.queryParams
// }, `教师信息.xlsx`)
// } else {
// this.download('/school/teacher/export', {
// ...this.queryParams
// }, `教师信息.xlsx`)
// }
//
// }).catch(() => {
//
// });
},
/** 导入按钮 */
handleImport() {
this.upload.title = "用户导入";
this.upload.open = true;
},
dateFormat(row, column, cellValue, index) {
const daterc = row[column.property];
if (daterc) {
if (daterc.indexOf("T") === -1) return daterc;
const arr = daterc.split("T");
const d = arr[0];
const darr = d.split("-");
const t = arr[1];
const tarr = t.split(".000");
const marr = tarr[0].split(":");
const dd = darr[0] + "-" + darr[1] + "-" + darr[2];
return dd;
}
},
/** 更多下拉菜单 */
// handleCommand(command, row) {
// this[command].apply(undefined, [row]);
// },
// 更多操作触发
handleCommand(command, row) {
switch (command) {
case "handleHonor":
this.handleHonor(row)
break;
case "handleResume":
this.handleResume(row)
break;
case "handleResetPwd":
this.handleResetPwd(row);
break;
case "handleAuthRole":
this.handleAuthRole(row);
break;
default:
break;
}
},
/** 导入按钮 */
handleImport() {
this.upload.title = "用户导入";
this.upload.open = true;
},
dateFormat(row, column, cellValue, index) {
const daterc = row[column.property];
if (daterc) {
if (daterc.indexOf("T") === -1) return daterc;
const arr = daterc.split("T");
const d = arr[0];
const darr = d.split("-");
const t = arr[1];
const tarr = t.split(".000");
const marr = tarr[0].split(":");
const dd = darr[0] + "-" + darr[1] + "-" + darr[2];
return dd;
}
},
/** 更多下拉菜单 */
// handleCommand(command, row) {
// this[command].apply(undefined, [row]);
// },
// 更多操作触发
handleCommand(command, row) {
switch (command) {
case "handleHonor":
this.handleHonor(row)
break;
case "handleResume":
this.handleResume(row)
break;
case "handleResetPwd":
this.handleResetPwd(row);
break;
case "handleAuthRole":
this.handleAuthRole(row);
break;
default:
break;
}
},
/** 查询部门下拉树结构 */
getDeptTree() {
this.$store
.dispatch("getDeptTree")
.then((response) => {
this.deptOptions = response;
})
.catch((error) => {
this.deptOptions = [];
});
},
/** 查询岗位列表,角色列表 */
getPostAndRoleList() {
this.$store
.dispatch("getPostList")
.then((response) => {
/** 查询部门下拉树结构 */
getDeptTree() {
this.$store
.dispatch("getDeptTree")
.then((response) => {
this.deptOptions = response;
})
.catch((error) => {
this.deptOptions = [];
});
},
/** 查询岗位列表,角色列表 */
getPostAndRoleList() {
this.$store
.dispatch("getPostList")
.then((response) => {
this.postOptions = response.posts;
console.log(this.postOptions, 1304);
this.roleOptions = response.roles;
})
.catch((error) => {
this.postOptions = [];
this.roleOptions = [];
});
},
/** 下载模板操作 */
importTemplate() {
this.download(
"school/teacher/importTemplate",
{},
`老师信息模板_${new Date().getTime()}.xlsx`
);
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
response.msg +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
);
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出 */
exportFile(callback) {
const ids = this.ids;
const options = [
{ type: ExportType.TOTAL, path: "/school/teacher/export", params: {} },
{
type: ExportType.SELECT,
path: "/school/teacher/export/" + ids,
params: {},
},
{
type: ExportType.QUERY,
path: "/school/teacher/export",
params: this.queryParams,
},
];
callback(options, `老师信息${new Date().getTime()}.xlsx`);
},
/** 是否可以被勾选 */ this.postOptions = response.posts;
isSelected(row, index) { console.log(this.postOptions, 1304);
if (row.id == 1) { this.roleOptions = response.roles;
return false; })
} .catch((error) => {
return true; this.postOptions = [];
}, this.roleOptions = [];
switchChange(row, status) { });
this.$modal },
.confirm(status === '1' ? '是否确认停用此用户状态?' : '是否确认启用此用户状态?') /** 下载模板操作 */
.then(() => { importTemplate() {
this.$modal.loading('正在修改状态,请稍等...') this.download(
statusChange(status, row.id) "school/teacher/importTemplate",
.then(response => { {},
this.$modal.closeLoading() `老师信息模板_${new Date().getTime()}.xlsx`
this.$modal.msgSuccess('修改成功') );
}) },
}) // 文件上传中处理
.catch(() => { handleFileUploadProgress(event, file, fileList) {
this.$modal.closeLoading() this.upload.isUploading = true;
}) },
// console.log(row, status, 56565656) // 文件上传成功处理
// statusChange(status, row.id).then(() => { handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
response.msg +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
);
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出 */
exportFile(callback) {
const ids = this.ids;
const options = [
{ type: ExportType.TOTAL, path: "/school/teacher/export", params: {} },
{
type: ExportType.SELECT,
path: "/school/teacher/export/" + ids,
params: {},
},
{
type: ExportType.QUERY,
path: "/school/teacher/export",
params: this.queryParams,
},
];
callback(options, `老师信息${new Date().getTime()}.xlsx`);
},
// }) /** 是否可以被勾选 */
isSelected(row, index) {
if (row.id == 1) {
return false;
} }
return true;
}, },
}; switchChange(row, status) {
this.$modal
.confirm(status === '1' ? '是否确认停用此用户状态?' : '是否确认启用此用户状态?')
.then(() => {
this.$modal.loading('正在修改状态,请稍等...')
statusChange(status, row.id)
.then(response => {
this.$modal.closeLoading()
this.$modal.msgSuccess('修改成功')
})
})
.catch(() => {
this.$modal.closeLoading()
})
// console.log(row, status, 56565656)
// statusChange(status, row.id).then(() => {
// })
}
},
};
</script> </script>
<style scoped> <style scoped>
.avatar-uploader { .avatar-uploader {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment