2019-11-28

<!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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值