洋浦学校 班主任例会

init
gongdi 3 years ago
parent 1f9e41f32d
commit 80b65a00ec

@ -532,5 +532,62 @@ const InterfaceConfig = {
isTestLogin: true,
},
/*
* 获取班主任例会列表-分页
"bureau_id":"必填 int 机构id"
"meeting_title":"非必填 string 会议标题(查询条件)"
"meeting_date":"非必填 string 会议日期(查询条件)"
"meeting_place":"非必填 string 会议地址(查询条件)"
"attendees":"非必填 string 参会教师名单(模糊查询)"
"page_number":"非必填 number 【当前页码】"
"page_size":"非必填 number 【每页条数】"
* */
"getMeetingList":{
url: 'intellioa/center/meeting/list',
method: 'get',
isTestLogin: true,
},
/*
* 查看班主任例会信息
"meeting_id": "必填 number【例会信息id】"
* */
"getMeetingView":{
url: 'intellioa/center/meeting/view',
method: 'get',
isTestLogin: true,
},
/*
* 新增编辑保存班主任例会信息
"meeting_id""例会信息idnumber非必填填写代表编辑"
"meeting_title""会议标题string(100),非必填"
"meeting_date""会议日期string必填"
"start_time""会议开始时间string必填"
"end_time""会议结束时间string非必填"
"meeting_place""会议地址string必填"
"attendees""参会教师名单string(1000),必填"
"remark""备注string(1000),非必填"
"person_id":"必填 int 操作人ID"
"identity_id":"必填 int 操作人身份ID"
"bureau_id":"必填 int 机构ID"
* */
"meetingSave":{
url: 'intellioa/center/meeting/save',
method: 'post',
isTestLogin: true,
},
/*
* 删除班主任例会信息
meeting_ids""例会信息idsstring必填批量删除时以英文逗号分隔"
"bureau_id":"必填 int 机构ID"
* */
"meetingDelete":{
url: 'intellioa/center/meeting/delete',
method: 'post',
isTestLogin: true,
},
};
export default InterfaceConfig;

@ -0,0 +1,342 @@
<template>
<div class="teacher-meeting-info-content-style">
<a-spin :spinning="pageLoading">
<div class="add-record-row-style">
<div class="li-box li-left">会议标题</div>
<div class="li-box li-right">
<a-input v-model="meetingTitle" placeholder="请输入会议标题" :maxLength="100"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left"><span class="must-option-style">*</span>会议日期</div>
<div class="li-box li-right">
<a-date-picker :locale="locale"
v-model="meetingDate"
:getCalendarContainer="getCalendarContainer()"
:format="dateFormat"
@change="onChange"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left"><span class="must-option-style">*</span>开始时间</div>
<div class="li-box li-right">
<a-time-picker :value="startTime" @change="onStartChange"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left"><span class="must-option-style">*</span>结束时间</div>
<div class="li-box li-right">
<a-time-picker :value="endTime" @change="onEndChange"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left"><span class="must-option-style">*</span>会议地址</div>
<div class="li-box li-right">
<a-input v-model="meetingPlace" placeholder="请输入会议地址" :maxLength="100"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left"><span class="must-option-style">*</span>教师名单</div>
<div class="li-box li-right">
<a-textarea v-model="attendees" placeholder="请输入参会教师名单"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left">备注</div>
<div class="li-box li-right">
<a-textarea v-model="remark" placeholder="请输入备注"/>
</div>
</div>
<div class="add-record-row-style button-row-style">
<a-button type="primary" class="button-style" @click="submit">
提交
</a-button>
<a-button class="button-style" @click="cancel"></a-button>
</div>
</a-spin>
</div>
</template>
<script>
import {Spin, Button, Cascader, Input, InputNumber, Modal, Select, DatePicker,Icon,TimePicker} from 'ant-design-vue';
import InterConfig from '../interConfig';
import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';
import moment from 'moment';
import ATextarea from "ant-design-vue/es/input/TextArea";
import Upload from '../../../../../../components/common/uploader/Upload.vue';
export default{
props: {
meetingId: {
type: String,
default: ""
}
},
data(){
return {
pageLoading: false,
locale,
meetingTitle: "",//
meetingDate:"",//
startTime:null,//
startTimeStr:"",
endTime:null,//
endTimeStr:"",
meetingPlace:"",//
attendees:"",//
remark: "",//
dateFormat: "YYYY-MM-DD",
timeFormat: "HH:mm",
}
},
created(){
if (this.$props.meetingId !== "") {
this.getInfo();
}
},
methods: {
getCalendarContainer: function () {
return triggerNode => triggerNode.parentNode;
},
onChange(value, dateString) {
if (dateString === "") {
this.meetingDate = null;
} else {
this.meetingDate = moment(dateString).format("YYYY-MM-DD");
}
},
onStartChange(value, dateString) {
this.startTime = value;
this.startTimeStr = dateString;
},
onEndChange(value, dateString) {
this.endTime = value;
this.endTimeStr = dateString;
},
getInfo: function () {
let param = {
meeting_id: this.$props.meetingId,
}
this.InterfaceConfig.callInterface([{
url: InterConfig.getMeetingView.url,
params: param,
method: InterConfig.getMeetingView.method,
isTestLogin: InterConfig.getMeetingView.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
let info = resData.data;
this.meetingTitle = info.meeting_title;
this.meetingDate = info.meeting_date;
this.startTime = moment(info.start_time,'HH:mm');
this.startTimeStr =info.start_time;
this.endTime = moment(info.end_time,'HH:mm');
this.endTimeStr =info.end_time;
this.meetingPlace = info.meeting_place;
this.attendees = info.attendees;
this.remark = info.remark;
}
})
},
submit: function () {
if (this.meetingDate === "") {
Modal.warning({
title: "请选择会议日期",
content: "",
centered: true
})
return;
}
if (this.startTimeStr === "") {
Modal.warning({
title: "请选择会议开始时间",
content: "",
centered: true
})
return;
}
if (this.endTimeStr === "") {
Modal.warning({
title: "请选择会议结束时间",
content: "",
centered: true
})
return;
}
if (this.meetingPlace.trim() === "") {
Modal.warning({
title: "请输入会议地址",
content: "",
centered: true
})
return;
}
if (this.attendees.trim() === "") {
Modal.warning({
title: "请输入参会教师名单",
content: "",
centered: true
})
return;
}
let param = {
meeting_title:this.meetingTitle,
meeting_date: this.meetingDate,
start_time:this.startTimeStr,
end_time:this.endTimeStr,
meeting_place: this.meetingPlace,
attendees:this.attendees,
remark:this.remark,
person_id: this.BaseConfig.userInfo.person_id,
identity_id: this.BaseConfig.userInfo.identity_id,
bureau_id: this.BaseConfig.person_info_my.bureau_id,
}
if(this.$props.meetingId !== ""){
param.meeting_id = this.$props.meetingId;
}
this.pageLoading = true;
this.InterfaceConfig.callInterface([{
url: InterConfig.meetingSave.url,
params: param,
method: InterConfig.meetingSave.method,
isTestLogin: InterConfig.meetingSave.isTestLogin,
}], (result) => {
this.pageLoading = false;
let resData = result[0].data;
if (resData.code === 2000) {
Modal.success({
title: "操作成功",
content: "",
centered: true
});
this.cancel();
}
})
},
cancel: function () {
this.$emit("cancel");
}
},
components: {
ATextarea,
ASpin: Spin,
ASelect: Select,
ASelectOption: Select.Option,
AInput: Input,
ADatePicker: DatePicker,
ATimePicker:TimePicker,
Upload,
AButton: Button,
AIcon:Icon,
}
}
</script>
<style scoped lang="scss">
.teacher-meeting-info-content-style {
width: 100%;
height: auto;
font-size: 1rem;
color: black;
.add-record-row-style {
width: 50%;
min-height: 3rem;
margin: 0.5rem auto;
display: flex;
.li-box {
min-height: 3rem;
line-height: 3rem;
.must-option-style {
color: red;
margin-right: 0.2rem;
}
}
.li-left {
width: 15%;
text-align: right;
}
.li-right {
width: 85%;
.person-list-content-style {
width: 700px;
height: 500px;
background-color: #ebebeb;
.list-content-style {
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
.honor-person-info {
width: auto;
height: 180px;
border: 1px solid #31a8fa;
margin: 0.5rem 0 0 0.5rem;
display: flex;
flex-direction: column;
justify-content: center;
.person-name {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: center;
}
/deep/ .img-style {
margin-right: 0 !important;
}
}
}
}
.ant-select {
width: 100px;
}
.no-border-input-style {
border-top: 0 !important;
border-left: 0 !important;
border-right: 0 !important;
}
.photo-container-style {
display: flex;
align-items: center;
align-content: center;
justify-content: center;
justify-items: center;
width: 120px !important;
border: 1px solid #e5e5e5;
height: 160px;
background-color: white;
position: relative;
.operate-class {
position: absolute;
bottom: 0.1rem;
color: #31a8fa;
font-size: 1rem;
cursor: pointer;
display: none;
}
.photo-size-style {
display: flex;
align-items: center;
align-content: center;
justify-items: center;
justify-content: center;
}
}
.edit-style {
&:hover {
.operate-class {
display: inline-block;
}
}
}
}
}
.button-row-style {
width: 50%;
margin: auto;
display: flex;
justify-content: center;
align-items: center;
.button-style {
margin-left: 0.5rem;
}
}
}
</style>

@ -8,7 +8,6 @@
<span style="margin:0 0.5rem">通报日期</span>
<a-date-picker :locale="locale"
v-model="punishDate"
:getCalendarContainer="getCalendarContainer()"
:format="dateFormat"
@change="onChange"/>
<span style="margin:0 0.5rem">通报学生</span>

@ -0,0 +1,296 @@
<template>
<div class="moral-student-notice-list-content-style">
<template v-if="pageType === 0">
<div class="search-and-add-style">
<div>
<span style="margin:0 0.5rem">会议标题</span>
<a-input v-model="meetingTitle"/>
<span style="margin:0 0.5rem">会议日期</span>
<a-date-picker :locale="locale"
v-model="meetingDate"
:format="dateFormat"
@change="onChange"/>
<span style="margin:0 0.5rem">会议地址</span>
<a-input v-model="meetingPlace"/>
<span style="margin:0 0.5rem">参会教师</span>
<a-input v-model="attendees"/>
<a-icon type="search" :style="{fontSize: '16px', color: '#31a8fa',marginLeft:'0.5rem'}" @click="search" />
</div>
<a-button type="primary" @click="toAdd" class="add-button-style">新增</a-button>
</div>
<a-table :columns="tableColumn" :data-source="dataList" :loading="loading" :pagination="false">
<span slot="action" slot-scope="text, record">
<a @click="toEdit(record)"></a>
<a-divider type="vertical"/>
<a @click="toDelete(record)"></a>
</span>
</a-table>
<a-pagination v-if="totalPage > 1" v-model="pageNumber" :pageSize="pageSize" :total="totalNum"
@change="onPageChange"/>
</template>
<a-modal title="提示"
:visible="visible"
centered
cancelText="取消"
okText="确定"
@ok="handleOk"
@cancel="handleCancel">
是否确定删除此条信息
</a-modal>
<template v-if="pageType === 1">
<meeting-info @cancel="cancel" :meetingId="meetingId"/>
</template>
</div>
</template>
<script>
import InterConfig from '../interConfig';
import {Table, Button, Select, Modal, Divider, Cascader, Icon, Input,Pagination,DatePicker} from 'ant-design-vue';
import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';
import moment from 'moment';
import _ from 'lodash';
import MeetingInfo from './meetingInfo.vue';
const tableColumn = [
{
dataIndex: 'index',
key: 'index',
title: '序号',
width: "80px",
align: "center"
},
{
dataIndex: 'meeting_title',
key: 'meetingTitle',
title: '会议标题',
align: "center"
},
{
dataIndex: 'meeting_date',
key: 'meetingDate',
title: '会议日期',
align: "center"
},
{
dataIndex: 'meeting_place',
key: 'meetingPlace',
title: '会议地址',
align: "center"
},
{
dataIndex: 'attendees',
key: 'attendees',
title: '教师名单',
align: "center"
},
{
dataIndex: 'create_time',
key: 'createTime',
title: '创建时间',
align: "center"
},
{
title: '操作',
key: 'action',
align: "center",
scopedSlots: {customRender: 'action'},
}
]
export default{
props: ["menuId"],
data(){
return {
locale,
pageType: 0,//0 1
meetingTitle: "",//
meetingDate:"",//
meetingPlace:"",//
dateFormat: "YYYY-MM-DD",
attendees:"",//
tableColumn: tableColumn,
dataList: [],
loading: false,
meetingId: "",
visible: false,
pageNumber: 1,
pageSize: 10,
totalPage: 0,
totalNum: 0,
}
},
created(){
this.getMeetingList();
},
mounted(){
},
methods: {
getCalendarContainer: function () {
return triggerNode => triggerNode.parentNode;
},
onChange(value, dateString) {
if (dateString === "") {
this.punishDate = null;
} else {
this.punishDate = moment(dateString).format("YYYY-MM-DD");
}
},
search:function () {
this.getMeetingList();
},
getMeetingList: function () {
let param = {
bureau_id: this.BaseConfig.person_info_my.bureau_id,
meeting_title: this.meetingTitle,
meeting_date: this.meetingDate,
meeting_place: this.meetingPlace,
attendees:this.attendees,
page_number: this.pageNumber,
page_size: this.pageSize,
}
this.InterfaceConfig.callInterface([{
url: InterConfig.getMeetingList.url,
params: param,
method: InterConfig.getMeetingList.method,
isTestLogin: InterConfig.getMeetingList.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
let dataList = resData.data.list;
if (dataList && dataList.length > 0) {
for (let i = 0, len = dataList.length; i < len; i++) {
dataList[i]['index'] = i + 1;
}
}
this.dataList = dataList;
this.totalNum = resData.data.total_row;
this.totalPage = resData.data.total_page;
}
})
},
onPageChange: function (page) {
this.pageNumber = page;
this.getMeetingList();
},
toAdd: function () {
this.meetingId = "";
this.pageType = 1;
},
toEdit: function (record) {
this.pageType = 1;
this.meetingId = record.meeting_id + "";
},
toDelete: function (record) {
this.meetingId = record.meeting_id;
this.visible = true;
},
cancel: function () {
this.pageType = 0;
this.getMeetingList();
},
submit: function (obj) {
let param = {
category_id: obj.category_id,
honor_list_json: JSON.stringify(obj.honor_list_json),
person_id: this.BaseConfig.userInfo.person_id,
identity_id: this.BaseConfig.userInfo.identity_id,
bureau_id: this.BaseConfig.person_info_my.bureau_id,
}
this.InterfaceConfig.callInterface([{
url: InterConfig.saveHonor.url,
params: param,
method: InterConfig.saveHonor.method,
isTestLogin: InterConfig.saveHonor.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
Modal.success({
title: "操作成功",
content: "",
centered: true
});
this.cancel();
}
})
},
//
handleOk: function () {
let param = {
meeting_ids: this.meetingId,
bureau_id: this.BaseConfig.person_info_my.bureau_id,
}
this.InterfaceConfig.callInterface([{
url: InterConfig.meetingDelete.url,
params: param,
method: InterConfig.meetingDelete.method,
isTestLogin: InterConfig.meetingDelete.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
Modal.success({
title: "操作成功",
content: "",
centered: true
});
this.handleCancel();
this.getMeetingList();
}
})
},
//
handleCancel: function () {
this.meetingId = "";
this.visible = false;
}
},
components: {
ATable: Table,
AButton: Button,
ASelect: Select,
ASelectOption: Select.Option,
AModal: Modal,
ADivider: Divider,
ACascader: Cascader,
AIcon: Icon,
AInput: Input,
MeetingInfo,
APagination:Pagination,
ADatePicker:DatePicker
}
}
</script>
<style scoped lang="scss">
.moral-student-notice-list-content-style {
width: 100%;
height: auto;
padding: 0.5rem;
.search-and-add-style {
width: 100%;
height: 3.5rem;
background-color: white;
margin-bottom: 0.5rem;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 0.5rem;
.ant-select {
width: 100px;
}
.ant-input {
width: 150px;
}
.add-button-style {
float: right;
}
}
.ant-table-wrapper {
/deep/ .upload-container-style {
display: flex;
justify-content: center;
align-items: center;
}
}
.ant-pagination {
margin-top: 0.5rem;
text-align: right;
}
}
</style>

@ -251,6 +251,14 @@ export const systemCenterConfig = [
component:() => import("./servicePlatform/moralEducation/studentNotice.vue"),
props:true,
},
{
id:"moralEducation-1-3",
title:"班主任例会",
path:'/workBench/servicePlatform/moralEducationTeacherMeeting/:id/:name/:menuId',
name:'moralEducationTeacherMeeting',
component:() => import("./servicePlatform/moralEducation/teacherMeeting.vue"),
props:true,
},
]
},
]

Loading…
Cancel
Save