基于SpringBoot和Vue的OA办公管理系统

今天介绍一个基于SpringBoot和Vue的OA办公管理系统,适合初学者拿来学习或者用作大作业的参考等等。

 

使用的技术

后端:JAVA语言,Sprongboot框架,MySql数据库

前端:Vue

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

MySQL是一个关系型数据库管理系统由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

Vue是一套用于构建用户界面的渐进式JavaScript框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用(SPA)提供驱动。

 

实现的功能

管理员和员工两种角色,公告展示、项目进度展示、请假和请假审批、日志系统、会议管理等;

部分代码展示

<template>
	<div>
		<el-form>
			<el-form-item>
				<el-button v-if="!ifAdmin" type="primary" size="small" @click="apply" icon="el-icon-plus">请假申请</el-button>
			</el-form-item>
		</el-form>
		<el-table :data="tableData">
			<el-table-column prop="userName" label="请假人" width="150"></el-table-column>
			<el-table-column prop="qjyy" label="请假类型"></el-table-column>
			<el-table-column prop="ksTime" label="请假开始时间" width="180"></el-table-column>
			<el-table-column prop="jsTime" label="请假结束时间" width="180"></el-table-column>
			<el-table-column prop="qjzt" label="审批状态" width="180"></el-table-column>
			<el-table-column prop="qjms" label="备注" width="180"></el-table-column>
			<el-table-column label="操作" width="150" v-if="ifAdmin">
				<template scope="scope">
					<el-button type="success" size="small" :disabled="buttonAble(scope.row)" @click="handleAgree(scope.row,1)">同意</el-button>
					<el-button type="danger" size="small" :disabled="buttonAble(scope.row)" @click="handleAgree(scope.row,0)">拒绝</el-button>
				</template>
			</el-table-column>
		</el-table>
		<el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
			<el-form :model="addForm" label-width="100px" ref="addForm">
				<el-form-item label="请假人" prop="UserName">
					<el-input v-model="addForm.userName" readonly=true></el-input>
				</el-form-item>
				<el-form-item label="请假类型">
					<el-select v-model="addForm.qjyy">
						<el-option label="病假" value="病假"></el-option>
						<el-option label="事假" value="事假"></el-option>
					</el-select>
				</el-form-item>
				<el-form-item label="请假时间">
					<el-date-picker
						v-model="addForm.time"
						type="daterange"
						value-format="yyyy-MM-dd"
						range-separator="至"
						start-placeholder="开始日期"
						end-placeholder="结束日期">
					</el-date-picker>
				</el-form-item>
				<el-form-item label="备注">
					<el-input type="textarea" v-model="addForm.qjms"></el-input>
				</el-form-item>
			</el-form>
			<div slot="footer" class="dialog-footer">
				<el-button size="small" @click.native="addFormVisible = false">取消</el-button>
				<el-button size="small" type="primary" @click.native="addSubmit">提交</el-button>
			</div>
		</el-dialog>
	</div>
</template>

<script>
import util from '../common/js/util'
import { getQjList,agreeQj,addQj } from '../api/api'
	export default {
		data() {
			return {
				tableData: [],
				ifAdmin: true,
				addFormVisible: false,
				addForm: {
					userName: '',
					qjyy: '',
					time: '',
					qjms: ''
				}
			}
		},
		mounted() {
			this.getTableData()
		},
		methods: {
			handleAgree(row,value) {
				console.log(row,value)
				if(value==1) {
					var params = {
						qjId: row.qjId,
						qjzt: '同意'
					}
				}else{
					var params = {
						qjId: row.qjId,
						qjzt: '拒绝'
					}
				}
				agreeQj(params).then((res) => {
					this.$message({
						message: res.data.msg,
						// type: 'success'
					});
					this.getTableData()
				})
			},
			getTableData() {
				var user = sessionStorage.getItem('user');
				user = JSON.parse(user)
				user.permission=='1'?this.ifAdmin = true:this.ifAdmin = false
				var params = {
					userId: user.userId
				}
				getQjList(params).then((res) => {
					this.tableData = res.data
				})
			},
			buttonAble(row) {
				if(row.qjzt=='审批中') {
					return false
				} else {
					return true
				}
			},
			apply() {
				var user = sessionStorage.getItem('user');
				user = JSON.parse(user)
				this.addFormVisible = true
				this.addForm.userName = user.userName
				this.addForm.qjyy = ''
				this.addForm.time = ''
				this.addForm.qjms = ''
			},
			addSubmit() {
				var user = sessionStorage.getItem('user');
				user = JSON.parse(user)
				var obj = {
					userId: user.userId,
					qjyy: this.addForm.qjyy,
					// ksTime: this.addForm.time[0].valueOf(),
					ksTime: (!this.addForm.time[0] || this.addForm.time[0] == '') ? '' : util.formatDate.format(new Date(this.addForm.time[0]), 'yyyy-MM-dd'),
					// jsTime: this.addForm.time[1].valueOf(),
					jsTime: (!this.addForm.time[1] || this.addForm.time[1] == '') ? '' : util.formatDate.format(new Date(this.addForm.time[1]), 'yyyy-MM-dd'),
					qjzt: '审批中',
					qjms: this.addForm.qjms
				}
				addQj(obj).then((res) => {
					this.$message({
						message: res.data.msg,
						type: 'success'
        	});
				})
				this.addFormVisible = false
				this.getTableData()
			}
		}
	}

</script>

 演示视频

基于SpringBoot和Vue的OA办公管理系统

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值