Commit 86ef3e1c by zhaopanyu

zpy 10.26

parent 604e1338
import request from '@/utils/request'
import request from "@/utils/request";
// 查询老师请假信息列表
export function listTeacherLeave(query) {
return request({
url: '/school/teacherLeave/list',
method: 'get',
params: query
})
url: "/school/teacherLeave/list",
method: "get",
params: query,
});
}
// 查询老师请假信息详细
export function getTeacherLeave(id) {
return request({
url: '/school/teacherLeave/queryOne/' + id,
method: 'get'
})
url: "/school/teacherLeave/queryOne/" + id,
method: "get",
});
}
// 新增老师请假信息
export function addTeacherLeave(data) {
return request({
url: '/school/teacherLeave/add',
method: 'post',
data: data
})
url: "/school/teacherLeave/add",
method: "post",
data: data,
});
}
// 修改老师请假信息
export function updateTeacherLeave(data) {
return request({
url: '/school/teacherLeave/edit',
method: 'put',
data: data
})
url: "/school/teacherLeave/edit",
method: "put",
data: data,
});
}
// 删除老师请假信息
export function delTeacherLeave(ids) {
return request({
url: '/school/teacherLeave/delete/' + ids,
method: 'delete'
})
url: "/school/teacherLeave/delete/" + ids,
method: "delete",
});
}
//提交申请
export function submitApply(id) {
return request({
url: '/school/teacherLeave/submitApply/' + id,
method: 'post',
})
url: "/school/teacherLeave/submitApply/" + id,
method: "post",
});
}
/**
* 待办事项列表
*/
export function taskList(query) {
return request({
url: '/school/teacherLeave/taskList',
method: 'get',
params: query
})
url: "/school/teacherLeave/taskList",
method: "get",
params: query,
});
}
/**
......@@ -68,58 +67,58 @@ export function taskList(query) {
*/
export function taskDoneList(query) {
return request({
url: '/school/teacherLeave/taskDoneList',
method: 'get',
params: query
})
url: "/school/teacherLeave/taskDoneList",
method: "get",
params: query,
});
}
//审批历史列表
export function listHistory(data) {
return request({
url: '/activiti/process/listHistory',
method: 'get',
params: data
})
url: "/activiti/process/listHistory",
method: "get",
params: data,
});
}
/** 销假列表(同历史任务接口,目前分两个接口来做) */
export function revokeList(data) {
return request({
url: '/activiti/process/listHistory',
method: 'get',
params: data
})
url: "/activiti/process/listHistory",
method: "get",
params: data,
});
}
// 进度查看
export function viewSchedule(data) {
return request({
url: '/activiti/process/read-resource',
method: 'get',
params: data
})
url: "/activiti/process/read-resource",
method: "get",
params: data,
});
}
/** 审批任务 */
export function complete({taskId, instanceId, comment, pass}) {
export function complete({ taskId, instanceId, comment, pass }) {
return request({
url: `/school/teacherLeave/complete/${taskId}/${instanceId}`,
method: 'post',
method: "post",
data: {
comment,
pass
}
})
pass,
},
});
}
/** 销假 */
export function cancelLeave(taskId, postForm) {
return request({
url: '/school/teacherLeave/cancelLeave/' + taskId,
method: 'post',
data: postForm
})
url: "/school/teacherLeave/cancelLeave/" + taskId,
method: "post",
data: postForm,
});
}
/*新增修改dialog*/
......@@ -127,44 +126,49 @@ export function cancelLeave(taskId, postForm) {
//获取级部/处室下拉框
export function getGradeOfficeList(query) {
return request({
url: '/schoolGrade/getList',
method: 'get',
params: query
})
url: "/schoolGrade/getList",
method: "get",
params: query,
});
}
//获取级部/处室 主任 下拉框
export function getGradeOfficeDirectorList(form) {
return request({
url: '/school/teacherLeave/getDeptLeader/' + form.applyOrgid,
url: "/school/teacherLeave/getDeptLeader/" + form.applyOrgid,
params: form,
method: 'get',
})
method: "get",
});
}
//分管领导/主要领导下拉框
export function getLeaderList(form) {
return request({
url: '/school/teacherLeave/getSchoolLeader',
url: "/school/teacherLeave/getSchoolLeader",
params: form,
method: 'get',
})
method: "get",
});
}
//根据请假开始时间和结束时间,获取请假时长
export function getLeaveTime(data) {
return request({
url: '/school/teacherLeave/getTotalTime',
method: 'get',
url: "/school/teacherLeave/getTotalTime",
method: "get",
params: data,
})
});
}
export function getDepId() {
return request({
url: '/schoolGrade/getDeptOrGrade',
method: 'get',
})
url: "/schoolGrade/getDeptOrGrade",
method: "get",
});
}
//判断用户所选部门是属于级部还是科室
export function getDepids(deptId) {
return request({
url: "/schoolGrade/judgeDeptOrGrade/" + deptId,
method: "get",
});
}
......@@ -284,7 +284,7 @@ import {
getLeaderList
} from "@/api/smartSchool/personWork/leaveApply";
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 "@riophae/vue-treeselect/dist/vue-treeselect.css";
import SelectUser from "./components/SelectUser";
......@@ -323,7 +323,7 @@ export default {
created() {
this.getList();
this.schoolLeader();
this.employeeType = this.$store.state.user.employeeType;
// this.employeeType = this.$store.state.user.employeeType;
this.form.teacherId = this.$store.state.user.userId;
},
......@@ -529,8 +529,14 @@ export default {
},
deptIdAndName(node) {
this.form.applyOrgname = node.label;
this.form.handUserName1 = undefined;
console.log(node);
getDepids(node.id).then(response => {
this.employeeType = response.employeeType;
});
// this.form.applyOrgname = node.label;
// this.form.handUserName1 = undefined;
// this.gradeDirectorList()
},
/** 导出按钮操作 */
......@@ -746,7 +752,6 @@ export default {
if (res.code == 200) {
this.schoolLeaderList = res.rows
}
}))
},
......@@ -841,6 +846,8 @@ export default {
getDepId().then(res => {
this.$set(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)
const node = arr.find(item => {
if (item.id == this.form.applyOrgid) {
......
......@@ -2,12 +2,7 @@
<div class="app-container">
<el-form :model="queryForm" :inline="true" size="small" @submit.native.prevent>
<el-form-item label="序号" prop="sortId">
<el-input
clearable
placeholder="请输入序号"
v-model="queryForm.sortId"
@keyup.enter.native="handleQuery"
>
<el-input clearable placeholder="请输入序号" v-model="queryForm.sortId" @keyup.enter.native="handleQuery">
</el-input>
</el-form-item>
......@@ -20,63 +15,31 @@
<el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:schoolTimeDetail:add']"
>新增
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:schoolTimeDetail:add']">新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:schoolTimeDetail:edit']"
>修改
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['system:schoolTimeDetail:edit']">修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:schoolTimeDetail:remove']"
>删除
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['system:schoolTimeDetail:remove']">删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-close"
size="mini"
@click="handleClose"
v-hasPermi="['system:schoolTimeDetail:close']"
>关闭
<el-button type="info" plain icon="el-icon-close" size="mini" @click="handleClose"
v-hasPermi="['system:schoolTimeDetail:close']">关闭
</el-button>
</el-col>
......@@ -84,67 +47,34 @@
</el-row>
</el-form>
<el-table
v-loading="loading"
:data="timeList"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="序号" sortable align="center" width="80px" prop="sortId"/>
<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 v-loading="loading" :data="timeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" sortable align="center" width="80px" prop="sortId" />
<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 label="备注" align="center" prop="remark" show-overflow-tooltip>
</el-table-column>
<el-table-column label="操作" align="center"
class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:schoolTimeDetail:edit']"
>编辑
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:schoolTimeDetail:edit']">编辑
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:schoolTimeDetail:remove']"
>删除
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:schoolTimeDetail:remove']">删除
</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog
:title="title"
:visible.sync="open"
width="600px"
append-to-body
@close="cancel"
>
<el-dialog :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-item label="节次" prop="sortName">
<el-select
v-model="postForm.sortName"
value-key="sortId"
placeholder="请选择节次"
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 v-model="postForm.sortName" value-key="sortId" placeholder="请选择节次" 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-form-item>
......@@ -153,29 +83,18 @@
</el-form-item> -->
<el-form-item label="开始时间" prop="startTime">
<el-time-picker
v-model="postForm.startTime"
value-format="HH:mm"
format="HH:mm"
placeholder="选择开始时间"
style="width: 100%"
>
<el-time-picker v-model="postForm.startTime" value-format="HH:mm" format="HH:mm" placeholder="选择开始时间"
style="width: 100%">
</el-time-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<div class="block">
<el-time-picker
v-model="postForm.endTime"
value-format="HH:mm"
format="HH:mm"
placeholder="选择结束时间"
style="width: 100%"
>
<el-time-picker v-model="postForm.endTime" value-format="HH:mm" format="HH:mm" placeholder="选择结束时间"
style="width: 100%">
</el-time-picker>
</div>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input clearable v-model="postForm.remark"></el-input>
</el-form-item>
......@@ -186,11 +105,7 @@
</div>
</el-dialog>
<ExportTable
:open-export.sync="exportOptions.open"
:title="exportOptions.title"
@export="exportFile"
></ExportTable>
<ExportTable :open-export.sync="exportOptions.open" :title="exportOptions.title" @export="exportFile"></ExportTable>
</div>
</template>
......@@ -203,10 +118,10 @@ import {
queryOneDetail,
deleteTimeDetail
} from '@/api/smartSchool/schoolManage/schoolMomentsDetail'
import {ExportType} from "@/enums/common"
import {TimeName} from '@/enums/schedule/schoolMomentsDetail'
import {CustomCellStyle} from '@/enums/customStyle';
import {getDicts} from '@/api/system/dict/data'
import { ExportType } from "@/enums/common"
import { TimeName } from '@/enums/schedule/schoolMomentsDetail'
import { CustomCellStyle } from '@/enums/customStyle';
import { getDicts } from '@/api/system/dict/data'
import { closeCurrentTab } from "../../../../../../utils/utilLibrary/routerBatch/routerBatch";
export default {
......@@ -247,13 +162,13 @@ export default {
// 表单校验
rules: {
sortName: [
{required: true, message: "名称不能为空", trigger: "blur"}
{ required: true, message: "名称不能为空", trigger: "blur" }
],
startTime: [
{required: true, message: "开始时间不能为空", trigger: "blur"}
{ required: true, message: "开始时间不能为空", trigger: "blur" }
],
endTime: [
{required: true, message: "结束时间不能为空", trigger: "blur"}
{ required: true, message: "结束时间不能为空", trigger: "blur" }
],
},
// 弹出层标题
......@@ -291,8 +206,9 @@ export default {
exportType: '',
}
},
created() {
this.schoolTimeId = this.$route.query && this.$route.query.schoolTimeId;
this.getList();
this.getDict();
......@@ -313,7 +229,9 @@ export default {
// 获取列表数据
getList() {
this.loading = true;
this.schoolTimeId = this.$route.query && this.$route.query.schoolTimeId;
getDetailList(this.queryForm, this.schoolTimeId).then(response => {
console.log(this.queryForm, this.schoolTimeId);
this.loading = false
this.timeList = response.rows
this.sortList = this.timeList.map(function (value, index) {
......@@ -411,12 +329,12 @@ export default {
const ids = this.ids;
const schoolTimeId = this.schoolTimeId
const options = [
{type: ExportType.TOTAL, path: '/schoolTimeDetail/export/', params: {schoolTimeId}},
{type: ExportType.SELECT, path: '/schoolTimeDetail/export/' + ids, params: {schoolTimeId}},
{ type: ExportType.TOTAL, path: '/schoolTimeDetail/export/', params: { schoolTimeId } },
{ type: ExportType.SELECT, path: '/schoolTimeDetail/export/' + ids, params: { schoolTimeId } },
{
type: ExportType.QUERY,
path: '/schoolTimeDetail/export/',
params: {schoolTimeId, sortId: this.queryForm.sortId}
params: { schoolTimeId, sortId: this.queryForm.sortId }
},
]
callback(options, `学校时刻明细${new Date().getTime()}.xlsx`);
......@@ -502,7 +420,7 @@ export default {
this.resetForm('postForm')
},
setSortId(data) {
const {sortId, sortName} = data
const { sortId, sortName } = data
this.postForm.sortId = sortId
this.postForm.sortName = sortName
}
......@@ -512,6 +430,4 @@ export default {
}
</script>
<style>
</style>
<style></style>
......@@ -2,12 +2,8 @@
<section class="app-container">
<el-form :model="queryParams" :inline="true" size="small" @submit.native.prevent>
<el-form-item label="时刻名称" prop="timeName">
<el-input
clearable
v-model="queryParams.timeName"
@keyup.enter.native="handleQuery"
placeholder="选择时刻"
></el-input>
<el-input clearable v-model="queryParams.timeName" @keyup.enter.native="handleQuery"
placeholder="选择时刻"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
......@@ -16,38 +12,18 @@
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:schoolTime:add']"
>新增
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:schoolTime:add']">新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:schoolTime:edit']"
>修改
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['system:schoolTime:edit']">修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:schoolTime:remove']"
>删除
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['system:schoolTime:remove']">删除
</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
......@@ -63,83 +39,48 @@
<!-- </el-col>-->
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>-->
</el-row>
<el-table
v-loading="loading"
:data="momentList"
@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 v-loading="loading" :data="momentList" @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">
<template slot-scope="scope">
<el-switch
v-model="scope.row.isUsed"
active-value="1"
inactive-value="0"
@change="handleUsedChange(scope.row)"
/>
<el-switch v-model="scope.row.isUsed" active-value="1" inactive-value="0"
@change="handleUsedChange(scope.row)" />
</template>
</el-table-column>
<el-table-column label="备注" align="center" v-if="columns[2].visible" prop="remark">
</el-table-column>
<el-table-column label="操作" align="center" v-if="columns[3].visible"
class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" v-if="columns[3].visible" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:schoolTime:edit']"
>编辑
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:schoolTime:edit']">编辑
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-search"
@click="handleViewDetail(scope.row)"
>明细
<el-button size="mini" type="text" icon="el-icon-search" @click="handleViewDetail(scope.row)">明细
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:schoolTime:remove']"
>删除
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:schoolTime:remove']">删除
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
: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"
>
<pagination v-show="total > 0" :total="total" :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">
<div class="custom-dialog__header">
<span class="el-dialog__title">{{ title }}</span>
<div class="custom-dialog__right">
<div class="custom__dialog__size" @click="isFullScreen = !isFullScreen">
<svg-icon style="color: #909399; font-size: 13px"
:icon-class="isFullScreen?'exit-fullscreen':'fullscreen'"/>
:icon-class="isFullScreen ? 'exit-fullscreen' : 'fullscreen'" />
</div>
</div>
</div>
</template>
<el-form :model="form" ref="form" label-width="100px" :rules="rules">
<el-form-item label="时刻名称:" prop="timeName">
<el-input clearable v-model="form.timeName"
></el-input>
<el-input clearable v-model="form.timeName"></el-input>
</el-form-item>
<!-- <el-form-item label="是否使用:">
<el-select v-model="form.isUsed" style="width: 100%;">
......@@ -152,13 +93,8 @@
</el-select>
</el-form-item> -->
<el-form-item label="备注:" prop="remark">
<el-input
type="textarea"
maxlength="200"
:autosize="{ minRows: 2, maxRows: 5}"
show-word-limit
v-model="form.remark"
></el-input>
<el-input type="textarea" maxlength="200" :autosize="{ minRows: 2, maxRows: 5 }" show-word-limit
v-model="form.remark"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
......@@ -179,7 +115,7 @@ import {
deleteSelect,
changeUserStatus
} from '@/api/smartSchool/schoolManage/schoolMoments'
import {UseStatus} from "@/enums/schedule/schoolMoments";
import { UseStatus } from "@/enums/schedule/schoolMoments";
export default {
name: "SchoolMoments",
......@@ -211,15 +147,15 @@ export default {
// 校验
rules: {
timeName: [
{required: true, message: '请输入时刻名称', trigger: 'blur'}
{ required: true, message: '请输入时刻名称', trigger: 'blur' }
],
},
// 列信息
columns: [
{key: 0, label: `时刻名称`, visible: true},
{key: 1, label: `是否使用`, visible: true},
{key: 2, label: `备注`, visible: true},
{key: 3, label: `操作`, visible: true}
{ key: 0, label: `时刻名称`, visible: true },
{ key: 1, label: `是否使用`, visible: true },
{ key: 2, label: `备注`, visible: true },
{ key: 3, label: `操作`, visible: true }
],
// 选中数据
ids: [],
......@@ -300,16 +236,15 @@ export default {
/** 【学校时刻明细】按钮 */
handleViewDetail(row) {
// 这里进行一次路由跳转
this.$router.push({
// path: '/schoolManage/schoolMomentsDetail/' + row.id,
path: '/schoolManage/schoolMomentsDetail',
query: {
schoolTimeId: row.id
}
})
});
},
/** 【删除】按钮 */
handleDelete(row) {
this.throttle(() => {
......@@ -415,5 +350,4 @@ export default {
<style lang="scss" scoped>
@import "~@/assets/styles/moduleStyle/custom-dialog.scss";
</style>
......@@ -9,9 +9,7 @@
<el-button type="primary" plain size="mini" @click="printTable">打印
</el-button>
</div>
</div>
<el-card style="height: 100%;width: 900px;">
<br/> <br/>
<div style="width: 100%; margin: auto;" id="postFormContainer">
......
......@@ -3,37 +3,17 @@
<el-row>
<el-col :span="4">
<el-card style="height: 950px">
<el-form
:model="queryParams"
style="border-bottom: 1px solid #dfe6ec; padding: 10px 0 0 5px"
>
<el-form :model="queryParams" style="border-bottom: 1px solid #dfe6ec; padding: 10px 0 0 5px">
<el-form-item label="班级信息" prop="schoolYear">
<el-select
v-model="queryParams.schoolYear"
@change="getTreeData"
style="width: 100%"
size="mini"
>
<el-option
v-for="item in yearList"
:key="item.value"
:value="item.value"
:label="item.label"
>
<el-select v-model="queryParams.schoolYear" @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-select>
</el-form-item>
<el-form-item></el-form-item>
</el-form>
<el-tree
ref="tree"
node-key="id"
:data="treeData"
:expand-on-click-node="false"
highlight-current
default-expand-all
@node-click="handleNodeClick"
></el-tree>
<el-tree ref="tree" node-key="id" :data="treeData" :expand-on-click-node="false" highlight-current
default-expand-all @node-click="handleNodeClick"></el-tree>
<!-- </div>-->
</el-card>
</el-col>
......@@ -41,109 +21,61 @@
<el-card style="height: 950px" class="mt50">
<el-row>
<el-col :span="8">
<el-form
:inline="true"
:model="formData"
style="padding: 12px 0 0 0"
>
<el-form :inline="true" :model="formData" style="padding: 12px 0 0 0">
<!-- <el-form-item>-->
<!-- <el-button type="primary" plain size="mini"-->
<!-- @click="printTable">打印-->
<!-- </el-button>-->
<!-- </el-form-item>-->
<el-form-item label="学期" prop="termId">
<el-select
v-model="formData.termId"
@change="courseInfo"
placeholder="请选择学期"
>
<el-select v-model="formData.termId" @change="courseInfo" placeholder="请选择学期">
<el-option label="上学期" value="0"></el-option>
<el-option label="下学期" value="1"></el-option>
</el-select>
</el-form-item>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-upload"
size="mini"
@click="handleImport"
>导入
<el-button type="success" plain icon="el-icon-upload" size="mini" @click="handleImport">导入
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出
</el-button>
</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 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 :span="5" :offset="3">
<div
style="
<div style="
width: 100%;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
"
>
<el-button type="primary" plain @click="printTable"
>打 印
">
<el-button type="primary" plain @click="printTable">打 印
</el-button>
<br/>
<el-button
type="primary"
class="affirmCourse"
size="medium"
@click="getTableValue"
>确认课表信息
<br />
<el-button type="primary" class="affirmCourse" size="medium" @click="getTableValue">确认课表信息
</el-button>
</div>
</el-col>
</el-row>
<br/>
<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) => {
<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"
>
" height="710px">
<el-table-column label="节次" min-width="90" align="center">
<template slot-scope="scope">
{{ scope.row.sortName }}
......@@ -152,83 +84,44 @@
<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
>
{{ scope.row.startTime }}--{{ scope.row.endTime }}</span>
</template>
</el-table-column>
<el-table-column
prop="monday.courseName"
label="周一"
min-width="100"
align="center"
>
<el-table-column prop="monday.courseName" label="周一" min-width="100" align="center">
<template slot-scope="scope">
<div
draggable
@dragstart="
(res) => {
<div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'monday');
}
"
@dragover="dragover"
@drop="
(res) => {
" @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'monday');
}
"
@dragend="dragend"
class="dragBox"
>
" @dragend="dragend" class="dragBox">
{{ scope.row.monday && scope.row.monday.courseName }}
</div>
</template>
</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" align="center">
<template slot-scope="scope">
<div
draggable
@dragstart="
(res) => {
<div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'tuesday');
}
"
@dragover="dragover"
@drop="
(res) => {
" @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'tuesday');
}
"
@dragend="dragend"
class="dragBox"
>
" @dragend="dragend" class="dragBox">
{{ scope.row.tuesday && scope.row.tuesday.courseName }}
</div>
</template>
</el-table-column>
<el-table-column label="周三" min-width="100" align="center">
<template slot-scope="scope">
<div
draggable
@dragstart="
(res) => {
<div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'wednesday');
}
"
@dragover="dragover"
@drop="
(res) => {
" @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'wednesday');
}
"
@dragend="dragend"
class="dragBox"
>
" @dragend="dragend" class="dragBox">
{{
scope.row.wednesday && scope.row.wednesday.courseName
}}
......@@ -237,22 +130,13 @@
</el-table-column>
<el-table-column label="周四" min-width="100" align="center">
<template slot-scope="scope">
<div
draggable
@dragstart="
(res) => {
<div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'thursday');
}
"
@dragover="dragover"
@drop="
(res) => {
" @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'thursday');
}
"
@dragend="dragend"
class="dragBox"
>
" @dragend="dragend" class="dragBox">
{{
scope.row.thursday && scope.row.thursday.courseName
}}
......@@ -261,44 +145,26 @@
</el-table-column>
<el-table-column label="周五" min-width="100" align="center">
<template slot-scope="scope">
<div
draggable
@dragstart="
(res) => {
<div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'friday');
}
"
@dragover="dragover"
@drop="
(res) => {
" @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'friday');
}
"
@dragend="dragend"
class="dragBox"
>
" @dragend="dragend" class="dragBox">
{{ scope.row.friday && scope.row.friday.courseName }}
</div>
</template>
</el-table-column>
<el-table-column label="周六" min-width="100" align="center">
<template slot-scope="scope">
<div
draggable
@dragstart="
(res) => {
<div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'saturday');
}
"
@dragover="dragover"
@drop="
(res) => {
" @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'saturday');
}
"
@dragend="dragend"
class="dragBox"
>
" @dragend="dragend" class="dragBox">
{{
scope.row.saturday && scope.row.saturday.courseName
}}
......@@ -307,22 +173,13 @@
</el-table-column>
<el-table-column label="周日" min-width="100" align="center">
<template slot-scope="scope">
<div
draggable
@dragstart="
(res) => {
<div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'sunday');
}
"
@dragover="dragover"
@drop="
(res) => {
" @dragover="dragover" @drop="(res) => {
drop(res, scope.$index, 'sunday');
}
"
@dragend="dragend"
class="dragBox"
>
" @dragend="dragend" class="dragBox">
{{ scope.row.sunday && scope.row.sunday.courseName }}
</div>
</template>
......@@ -332,17 +189,10 @@
</el-col>
<el-col :span="2" :offset="1">
<div class="courseBox">
<div
v-for="(item, index) in courseTypeList"
:key="item.courseName"
draggable
@dragstart="
(res) => {
<div v-for="(item, index) in courseTypeList" :key="item.courseName" draggable @dragstart="(res) => {
dragCloneStart(res, index);
}
"
class="courseClone"
>
" class="courseClone">
{{ item.courseName }}
</div>
</div>
......@@ -353,24 +203,10 @@
</el-row>
<!-- 用户导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
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
>
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" 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>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
......@@ -406,14 +242,14 @@ import {
getClassTree,
saveClassTable,
} from "@/api/smartSchool/teachAffairAdministration/lessonManage";
import {getYearList} from "@/utils/utilLibrary/getYearList";
import { getYearList } from "@/utils/utilLibrary/getYearList";
import {
getFirstLeafNode,
handleTreeData,
} from "@/utils/utilLibrary/getTreeClass";
import {getToken} from "@/utils/auth";
import {commonUpload} from "@/api/common";
import { getToken } from "@/utils/auth";
import { commonUpload } from "@/api/common";
import * as dd from 'dingtalk-jsapi';
export default {
name: "index",
components: {
......@@ -495,7 +331,7 @@ export default {
// 是否更新已经存在的数据
// updateSupport: 0,
// 设置上传的请求头部
headers: {Authorization: "Bearer " + getToken()},
headers: { Authorization: "Bearer " + getToken() },
},
};
......@@ -718,16 +554,18 @@ export default {
// 打印
printTable() {
// 重置表单
printJS({
printable: "postFormContainer",
maxWidth: 10000,
header: "",
ignoreElements: ["no-print", "back-no-print", "front-no-print"],
targetStyles: ["*"],
gridHeaderStyle: "border: 1px solid black",
type: "html",
gridStyle: `text-align: center; border: 1px solid black`,
const baseUrl = window.location.protocol + '//' + window.location.host + '/printLesson';
const urlWithParams = `${baseUrl}?courseList=${encodeURIComponent(JSON.stringify(this.courseList))}`;
dd.biz.util.openLink({
url: urlWithParams,
onSuccess: () => {
console.log('跳转成功,准备打印');
// 打印条码
// this.printCode();
},
onFail: (error) => {
console.error('跳转失败', error);
}
});
},
/** 导入按钮操作 */
......@@ -750,7 +588,7 @@ export default {
response.msg +
"</div>",
"导入结果",
{dangerouslyUseHTMLString: true}
{ dangerouslyUseHTMLString: true }
);
},
// 上传成功回调
......@@ -847,7 +685,6 @@ export default {
/* line-height: 50px;*/
/* text-align: center;*/
/*}*/
</style>
......
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<el-button type="primary" plain @click="printTable">打 印
<el-row>
<el-col :span="20">
<el-card style="height: 950px" class="mt50">
<el-row>
<!-- <el-col :span="8"> -->
<!-- <el-form :inline="true" :model="formData" style="padding: 12px 0 0 0"> -->
<!-- <el-form-item>-->
<!-- <el-button type="primary" plain size="mini"-->
<!-- @click="printTable">打印-->
<!-- </el-button>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="学期" prop="termId">
<el-select v-model="formData.termId" @change="courseInfo" placeholder="请选择学期">
<el-option label="上学期" value="0"></el-option>
<el-option label="下学期" value="1"></el-option>
</el-select>
</el-form-item> -->
<!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-upload" size="mini"
@click="handleImport">导入
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini"
@click="handleExport">导出
</el-button>
</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) => {
:row-style="{ height: '35px' }" :cell-style="{ padding: '0', margin: '0' }"
:data="courseList" :row-key="(row) => {
return row.id;
}
" height="710px">
......@@ -35,7 +78,8 @@
</div>
</template>
</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"
align="center">
<template slot-scope="scope">
<div draggable @dragstart="(res) => {
dragstart(res, scope.$index, 'tuesday');
......@@ -132,6 +176,11 @@
</div>
</div>
</el-col>
</el-row>
</el-card>
</el-col>
</el-row>
</div>
</template>
......@@ -139,21 +188,21 @@
<script>
import draggable from "vuedraggable";
import printJS from "print-js";
// import {
// getNewYear,
// getClassType,
// getCourseInfo,
// getClassTree,
// saveClassTable,
// } from "@/api/smartSchool/teachAffairAdministration/lessonManage";
import {
// getNewYear,
// getClassType,
getCourseInfo,
// getClassTree,
// saveClassTable,
} from "@/api/smartSchool/teachAffairAdministration/lessonManage";
// import { getYearList } from "@/utils/utilLibrary/getYearList";
// import {
// getFirstLeafNode,
// handleTreeData,
// } from "@/utils/utilLibrary/getTreeClass";
// import { getToken } from "@/utils/auth";
// import { commonUpload } from "@/api/common";
import { getToken } from "@/utils/auth";
import { commonUpload } from "@/api/common";
import * as dd from 'dingtalk-jsapi';
export default {
name: "index",
components: {
......@@ -168,18 +217,11 @@ export default {
"student_type",
"child_state",
],
created() {
// 获取 URL 参数
const urlParams = new URLSearchParams(window.location.search);
// 获取 courseList 参数的值
const courseListParam = urlParams.get('courseList');
// 将 courseList 参数的值反序列化为 JavaScript 对象
const courseList = JSON.parse(decodeURIComponent(courseListParam));
console.log(courseList, 'courseList');
this.courseList = JSON.parse(decodeURIComponent(courseListParam)); // 将获取到的 courseList 赋值给 this.courseList
},
computed: {
// 上传的地址
url: function () {
......@@ -247,18 +289,144 @@ export default {
},
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) {
......@@ -285,6 +453,20 @@ export default {
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) {
// 作用于:被拖拽的元素
......@@ -300,8 +482,27 @@ export default {
event.preventDefault();
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() {
// 重置表单
......@@ -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>
......
......@@ -5,15 +5,13 @@
<div class="head-container">
<el-input v-model="deptName" placeholder="请输入部门名称" clearable size="small" prefix-icon="el-icon-search"
style="margin-bottom: 20px" />
</div>
<div class="head-container">
<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" />
</div>
</el-col>
<el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" label-width="90px" :inline="true" v-show="showSearch">
<el-form-item label="姓名" clearable prop="teacherName">
......@@ -562,7 +560,7 @@ export default {
// If the selection exceeds the limit, remove the last item
this.form.deptIds.pop();
}
},
}
},
created() {
this.getList();
......@@ -571,6 +569,7 @@ export default {
// this.initPassword = response.msg
// })
},
methods: {
handleSelectionChange(selectedItems) {
if (selectedItems.length > 8) {
......@@ -587,6 +586,8 @@ export default {
handleNodeClick(data) {
this.queryParams.deptId = data.id;
this.handleQuery();
},
/** 查询学校老师列表 */
......@@ -1077,7 +1078,7 @@ export default {
}
},
};
};
</script>
<style scoped>
.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