<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>vue-elementui</title>
<!--先引入vue.js库-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!--axios-->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<!-- 引入样式 -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<!-- 引入组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>
</head>
<body>
<div id="app">
<el-row>
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="员工工号或者部门名称">
<el-input v-model="formInline.enameOrDname" placeholder="员工工号或者部门名称"></el-input>
</el-form-item>
<el-form-item label="所属部门">
<el-select v-model="formInline.deptNo" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.dno"
:label="item.dname"
:value="item.dno">
</el-option>
</el-select>
<!--
dno, dname, job
<el-select v-model="formInline.deptNo" placeholder="所属部门">
<el-option label="请选择" value=""></el-option>
<el-option label="行政部" value="1"></el-option>
<el-option label="国防部" value="2"></el-option>
<el-option label="市场部" value="3"></el-option>
</el-select>-->
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">查询</el-button>
<el-button type="primary" @click="toSave">添加</el-button>
<el-button type="primary" @click="flush">刷新</el-button>
</el-form-item>
</el-form>
</el-row>
<el-row>
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
prop="ename"
label="姓名"
width="180">
</el-table-column>
<!-- <el-table-column
prop="dno"
label="部门编号"
width="180">
</el-table-column>-->
<el-table-column
prop="sex"
label="性别">
</el-table-column>
<el-table-column
prop="empno"
label="员工编号">
</el-table-column>
<el-table-column
prop="dname"
label="部门名称">
</el-table-column>
<el-table-column
prop="hiredate"
label="入职时间">
</el-table-column>
<el-table-column
prop="headpicname"
label="头像原文件名称">
</el-table-column>
<el-table-column
label="头像">
<template slot-scope="scope">
<img v-if="scope.row.headpic" :src="'/show?FileName='+scope.row.headpic" height="100px;" width="100px;">
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="primary"
size="mini"
@click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button
size="mini"
type="danger"
@click="handleDelete(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-row>
<el-row>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[2,3,4,5,10,15,100, 200, 300, 400]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</el-row>
<el-row>
<!--添加修改弹出框-->
<el-dialog :title="title" :visible.sync="dialogFormVisible">
<el-form :model="form">
<!--隐藏主键-->
<el-input v-model="form.empno" type="hidden" autocomplete="off"></el-input>
<el-form-item label="用户名" :label-width="formLabelWidth">
<el-input v-model="form.userName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="密码" :label-width="formLabelWidth">
<el-input v-model="form.passWord" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="姓名" :label-width="formLabelWidth">
<el-input v-model="form.ename" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="性别" :label-width="formLabelWidth">
<template>
<el-radio v-model="form.sex" label="男">男</el-radio>
<el-radio v-model="form.sex" label="女">女</el-radio>
</template>
</el-form-item>
<el-form-item label="雇佣日期" :label-width="formLabelWidth">
<el-date-picker
v-model="form.hiredate"
align="right"
type="date"
placeholder="选择日期"
:picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item label="部门编号" :label-width="formLabelWidth">
<el-select v-model="form.dno" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.dno"
:label="item.dname"
:value="item.dno">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="角色授权">
<el-button type="primary" @click="showRoles">拥有角色</el-button>
</el-form-item>
<el-form-item label="原头像" v-if="form.headpic" :label-width="formLabelWidth">
<img v-if="form.headpic" :src="'/show?FileName='+form.headpic" height="160px;" width="160px;">
</el-form-item>
<el-form-item label="人员头像" :label-width="formLabelWidth">
<el-upload
name="headPic"
class="avatar-uploader"
action="/uploadHeadPic"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="danger" @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="saveData">确 定</el-button>
</div>
</el-dialog>
</el-row>
<el-dialog title="角色树" :visible.sync="dialogRoleFormVisible">
<el-tree :data="treeData" default-expand-all
ref="tree"
node-key="id"
show-checkbox
check-strictly="true"
:default-checked-keys="checkedKeys"
@check-change="handleRoleTreeClick"
></el-tree>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="dialogRoleFormVisible = false">确 定</el-button>
</div>
</el-dialog>
</div>
<script>
var vue =new Vue({
el:"#app",
data:{
tableData:[],
currentPage:1,
pageSize:5,
total:0,
formInline: {
enameOrDname: '',
deptNo: ''
},
options:[],
title:'',
dialogFormVisible: false,
form: {
ename: '',
dno:'',
sex: '男',
empno: '',
dname: '',
hiredate: '',
headPic:'',
headPicName:'',
roleIds:'',
userName:'',
passWord:''
},
formLabelWidth: '120px',
pickerOptions: {
disabledDate:function(time) {
return time.getTime() > Date.now();
},
shortcuts: [{
text: '今天',
onClick:function(picker) {
picker.$emit('pick', new Date());
}
}, {
text: '昨天',
onClick:function(picker) {
var date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24);
picker.$emit('pick', date);
}
}, {
text: '一周前',
onClick:function(picker) {
var date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', date);
}
}]
},
url:'',
imageUrl: '',
dialogRoleFormVisible:false,
treeData:[],
checkedKeys:[]
},
created:function(){
this.loadData();
var self = this;
//获取所有部门
axios.post('/dept/list')
.then(function (response) {
self.options=response.data;
});
axios.post("/roleTree")
.then(function (response) {
self.treeData=response.data;
})
},
methods: {
loadData:function(){
var self = this;
//开始位置 (currentPage-1)*pageSize
var start = (this.currentPage-1)*this.pageSize;
axios.post('/emp/page',{"start":start,"pageSize":this.pageSize,
"ename":this.formInline.enameOrDname,"deptNo":this.formInline.deptNo})
.then(function (response) {
//JSON.parse()把json字符串转换为json对象
self.tableData=response.data.empList;
self.total=response.data.total;
})
.catch(function (error) {
})
.then(function () {
// always executed
});
},
handleSizeChange:function(val) {
this.pageSize=val;
this.loadData();
},
handleCurrentChange:function(val) {
this.currentPage=val;
this.loadData();
},
onSubmit:function() {
this.loadData();
},
flush:function(){
this.pageSize=3;
this.currentPage=1;
this.formInline.deptNo='';
this.formInline.enameOrDname='';
this.loadData();
},
toSave:function(){
this.title='员工添加';
this.url="/emp/save";
this.form={ename: '', dno:'', sex: '男', empno: '', dname: '', hiredate: '',
headPic:'',
headPicName:'',userName:'',passWord:''};
this.imageUrl ='';
//让弹出框显示
this.dialogFormVisible=true;
},
handleEdit:function(index, row) {
this.title='员工修改';
this.url="/emp/update";
//赋值
this.form=row;
this.imageUrl ='';
//让弹出框显示
this.dialogFormVisible=true;
},
saveData:function(){
var self=this;
axios.post(this.url, this.form)
.then(function (response) {
//添加或者修改成功
if(response.data==1){
self.$message({
message: '恭喜你, 操作成功',
type: 'success'
});
//关闭弹出框
self.dialogFormVisible=false;
//刷新页面
self.loadData();
}else{ //添加或者修改错误
self.$message.error('错了哦, 操作错误');
}
})
},
handleDelete:function(index, row) {
var self=this;
this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
axios.post("/emp/delete?empNo="+row.empno)
.then(function (response) {
//添加或者修改成功
if(response.data==1){
self.$message({
type: 'success',
message: '删除成功!'
});
//刷新页面
self.loadData();
}else{ //添加或者修改错误
self.$message.error('错了哦, 操作错误');
}
})
}).catch(function() {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
handleAvatarSuccess:function(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
this.form.headPicName = file.response.originalFilename;
this.form.headPic =file.response.newFileName;
},
beforeAvatarUpload:function(file) {
var isJPG = file.type === 'image/jpeg';
var isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 格式!');
}
if (!isLt2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
}
return isJPG && isLt2M;
},
showRoles:function(){
this.checkedKeys=[];
var _this=this;
if(_this.form.empno!='') {
axios.post("/roleTree")
.then(function (response) {
_this.treeData = response.data;
axios.post("/getRolesByUserId?userId=" + _this.form.empno)
.then(function (response) {
_this.checkedKeys = response.data;
})
})
}
this.dialogRoleFormVisible=true;
},
handleRoleTreeClick:function(){
//[ 2, 9, 10]
console.log(this.$refs.tree.getCheckedKeys());
var nodes = this.$refs.tree.getCheckedKeys()+"";
var tnodes = nodes.replace("[").replace("]").replace(" ");//2,9,10
console.log(tnodes);
this.form.roleIds=tnodes;
}
}
});
</script>
</body>
</html>
2019-11-28
最新推荐文章于 2022-10-14 15:40:59 发布