前后端分离之前端vue
<template>
	<div class="custom">
		<el-col :span="2">
			<el-button type="primary" @click="opendialogVisible">添加</el-button>
		</el-col>
		<el-col :span="2">
			<el-button type="danger" @click="deleteBatch">批量删除</el-button>
		</el-col>
		<el-col :span="20">
			<el-form :model="searchForm" inline>
				<el-form-item label="姓名">
					<el-input v-model="searchForm.cname" placeholder="请输入查询内容"></el-input>
				</el-form-item>
				<el-form-item label="日期">
					<el-input type="date" v-model="searchForm.bir1" style="width: 45%;"></el-input> --
					<el-input type="date" v-model="searchForm.bir2" style="width: 45%;"></el-input>
				</el-form-item>
				<el-form-item>
					<el-button type="primary" @click="searchData">查询</el-button>
				</el-form-item>
			</el-form>
		</el-col>
		<el-table ref="rows" :data="tableData" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">
			<el-table-column type="selection" width="55">
			</el-table-column>
			<el-table-column prop="cid" label="序号" width="120">
			</el-table-column>
			<el-table-column prop="pic" label="头像" width="120">
				<template slot-scope="scope">
					<!--头像-->
					<el-avatar shape="square" :size="100" :src="scope.row.pic"></el-avatar>
				</template>
			</el-table-column>
			<el-table-column prop="cname" label="姓名" width="120">
			</el-table-column>
			<el-table-column prop="csex" label="性别" width="120">
			</el-table-column>
			<el-table-column prop="birthday" label="出生日期" width="120">
			</el-table-column>
			<el-table-column prop="bname" label="发卡银行" width="300">
			</el-table-column>
			<el-table-column label="操作">
				<template slot-scope="scope">
					<el-button size="mini" type="success" @click="editspan(scope.row)">查看</el-button>
					<el-button size="mini" type="primary" @click="editVisible(scope.row)">修改</el-button>
					<el-button size="mini" type="danger" @click="deleteCus(scope.row)">删除</el-button>
				</template>
			</el-table-column>
		</el-table>
		<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="current"
		 :page-sizes="pageSizes" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"
		 prev-text="上一页" next-text="下一页">
		</el-pagination>
		<!-- 添加对话框 -->
		<el-dialog title="添加列表" :visible.sync="dialogVisible" width="80%">
			<el-form :model="insertForm" :rules="rulesForm" ref="insertForm" label-width="100px" class="demo-ruleForm">
				<el-form-item label="客户姓名" prop="cname">
					<el-input v-model="insertForm.cname"></el-input>
				</el-form-item>
				<el-form-item label="性别" prop="csex">
					<el-radio v-model="insertForm.csex" label="男">男</el-radio>
					<el-radio v-model="insertForm.csex" label="女">女</el-radio>
				</el-form-item>
				<el-form-item label="出生日期" prop="birthday">
					<el-date-picker type="date" placeholder="选择日期" v-model="insertForm.birthday" style="width: 100%;"></el-date-picker>
				</el-form-item>
				<el-form-item label="头像" prop="pic">
					<el-upload class="avatar-uploader" action="http://localhost:8090/upload" :show-file-list="false" :on-success="handleAvatarSuccess">
						<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-item label="银行账号" prop="bname">
					<el-checkbox-group v-model="checkedBanks" @change="handleCheckedBanksChange">
						<el-checkbox v-for="bank in banks" :label="bank.bid">{{bank.bname}}</el-checkbox>
					</el-checkbox-group>
				</el-form-item>
				<el-form-item>
					<el-button type="primary" @click="submitForm('insertForm')">添加</el-button>
					<el-button @click="dialogVisible = false">取消</el-button>
				</el-form-item>
			</el-form>
		</el-dialog>
		<!-- 修改对话框 -->
		<el-dialog title="修改列表" :visible.sync="editdialogVisible" width="80%">
			<el-form :model="updateForm" ref="updateForm" label-width="100px">
				<el-form-item label="客户姓名" prop="cname">
					<el-input v-model="updateForm.cname"></el-input>
				</el-form-item>
				<el-form-item label="性别" prop="csex">
					<el-radio v-model="updateForm.csex" label="男">男</el-radio>
					<el-radio v-model="updateForm.csex" label="女">女</el-radio>
				</el-form-item>
				<el-form-item label="出生日期" prop="birthday">
					<el-date-picker type="date" placeholder="选择日期" v-model="updateForm.birthday" style="width: 100%;"></el-date-picker>
				</el-form-item>
				<el-form-item label="银行账号" prop="bname">
					<el-checkbox-group v-model="checkedBanks" @change="handleCheckedBanksChange">
						<el-checkbox v-for="bank in banks" :label="bank.bid">{{bank.bname}}</el-checkbox>
					</el-checkbox-group>
				</el-form-item>
				<el-form-item>
					<el-button type="primary" @click="updateData('updateForm')">更新</el-button>
					<el-button @click="editdialogVisible = false">取消</el-button>
				</el-form-item>
			</el-form>
		</el-dialog>
		<!-- 详情对话框 -->
		<el-dialog title="修改列表" :visible.sync="editSpanVisible" width="80%">
			<el-form :model="editForm" ref="editForm" label-width="100px">
				<el-form-item label="客户姓名" prop="cname">
					<el-input v-model="editForm.cname"></el-input>
				</el-form-item>
				<el-form-item label="性别" prop="csex">
					<el-radio v-model="editForm.csex" label="男">男</el-radio>
					<el-radio v-model="editForm.csex" label="女">女</el-radio>
				</el-form-item>
				<el-form-item label="出生日期" prop="birthday">
					<el-date-picker type="date" placeholder="选择日期" v-model="editForm.birthday" style="width: 100%;"></el-date-picker>
				</el-form-item>
				<el-form-item label="银行账号" prop="bname">
					<el-checkbox-group v-model="checkedBanks" @change="handleCheckedBanksChange">
						<el-checkbox v-for="bank in banks" :label="bank.bid">{{bank.bname}}</el-checkbox>
					</el-checkbox-group>
				</el-form-item>
				<el-form-item>
					<el-button @click="editSpanVisible = false">取消</el-button>
				</el-form-item>
			</el-form>
		</el-dialog>
	</div>
</template>
<script>
	export default {
		data() {
			return {
				rulesForm: {
					cname: [{
						required: true,
						message: '请输入客户姓名',
						trigger: 'blur'
					}],
					csex: [{
						required: true,
						message: '请选择客户性别',
						trigger: 'blur'
					}],
					birthday: [{
						type: 'date',
						required: true,
						message: '请选择出生日期',
						trigger: 'blur'
					}]
				},
				checkedBanks: [],
				banks: [],
				insertForm: {
					cname: '',
					csex: '',
					birthday: '',
					pic: '',
					bname: '',
					bids: ''
				},
				dialogVisible: false,
				imageUrl: '',
				updateForm: {
					cid: 0,
					cname: '',
					csex: '男',
					birthday: '',
					bname: '',
					bids: ''
				},
				editdialogVisible: false,
				editForm: {
					cid: 0,
					cname: '',
					csex: '男',
					birthday: '',
					bname: '',
					bids: ''
				},
				editSpanVisible: false,
				tableData: [],
				rows: [],
				current: 1,
				pageSize: 3,
				pageSizes: [2, 3, 5],
				total: 0,
				searchForm: {
					cname: '',
					bir1: '',
					bir2: ''
				}
			}
		},
		created() {
			this.initData();
			this.initBank();
		},
		methods: {
			//批量删除
			deleteBatch() {
				/* if (this.rows instanceof Array && this.rows.length > 0) { */
				/* this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
					          confirmButtonText: '确定',
					          cancelButtonText: '取消',
					          type: 'warning'
					        }).then(() => {
								//post请求
								this.axios.post("http://localhost:8090/custom/delete",null, {
									
								})
					          this.$message({
					            type: 'success',
					            message: '删除成功!'
					          });
					        }).catch(() => {
					          this.$message({
					            type: 'info',
					            message: '已取消删除'
					          });          
					        }); */
				this.$confirm('你确定要删除选中的数据吗?', '提示', {
					confirmButtonText: '确定',
					cancelButtonText: '取消',
					type: 'warning'
				}).then(() => {
					//post请求
					this.axios.post('http://localhost:8090/custom/delete', null, {
						params: {
							ids: this.rows.map(row => row.cid).join(",")
						}
					}).then((response) => {
						this.$message({
							type: 'success',
							message: '删除成功!'
						});
						//扩展操作
						this.initData();
					});
				}).catch(() => {
					this.$message({
						type: 'info',
						message: '已取消删除'
					});
				});
				/* } else {
					this.$message({
						type: 'success',
						message: '请选择要删除的数据!'
					});
				} */
			},
			//单删
			deleteCus(row) {
				this.$confirm('你确定要删除选中的数据吗?', '提示', {
					confirmButtonText: '确定',
					cancelButtonText: '取消',
					type: 'warning'
				}).then(() => {
					//post请求
					this.axios.post('http://localhost:8090/custom/delete', null, {
						params: {
							ids: row.cid
						}
					}).then((response) => {
						this.$message({
							type: 'success',
							message: '删除成功!'
						});
						//扩展操作
						this.initData();
					});
				}).catch(() => {
					this.$message({
						type: 'info',
						message: '已取消删除'
					});
				});
			},
			//添加
			submitForm(formName) {
				this.$refs[formName].validate((valid) => {
					if (valid) {
						//赋值过程
						this.insertForm.bids = this.checkedBanks.map(bid => bid).join(",");
						this.axios.post("http://localhost:8090/custom/insert", this.insertForm).then((response) => {
							if (response.data.result) {
								this.$message({
									type: 'success',
									message: '客户添加成功!'
								});
								//对话框关闭
								this.dialogVisible = false;
								//初始化列表数据
								this.initData();
							} else {
								this.$message.error("客户添加失败");
							}
						});
					} else {
						return false;
					}
				});
			},
			//改变事件,绑定数值发生变化,更新数值
			handleCheckedBanksChange(val) {
				this.checkedBanks = val;
			},
			initBank() {
				this.axios.get('http://localhost:8090/bank/findAll').then((response) => {
					//  查询出所有的银行列表
					this.banks = response.data;
				});
			},
			opendialogVisible() {
				//初始化空数组
				this.checkedBanks = [];
				//打开对话框钱,先查询所有的银行
				this.initBank();
				//打开对话框
				this.dialogVisible = true;
			},
			//查看
			editspan(row) {
				//初始化空数组
				this.checkedBanks = [];
				//判断本身是否具有银行账号信息
				if (row.bids != null && row.bids != '') {
					//拆分银行
					let bids = row.bids.split(",");
					//遍历银行
					for (let i = 0; i < bids.length; i++) {
						//取出银行id值
						let id = bids[i];
						//判断是否为数字
						if (!isNaN(id)) {
							//存入到回显的数组中
							this.checkedBanks.push(parseInt(id));
						}
					}
				}
				//打开对话框前,先查询所有银行
				this.initBank();
				Object.assign(this.editForm, row);
				this.editSpanVisible = true;
			},
			//回显
			editVisible(row) {
				//初始化空数组
				this.checkedBanks = [];
				//判断本事是否具有银行账号信息
				if (row.bids != null && row.bids != '') {
					console.log("sadj")
					//拆分银行
					let bids = row.bids.split(",");
					//遍历银行
					for (let i = 0; i < bids.length; i++) {
						console.log("skadj")
						//取出银行id值
						let bid = bids[i];
						//判断是否为数字
						if (!isNaN(bid)) {
							//存入到回显的数组中
							this.checkedBanks.push(parseInt(bid));
						}
					}
				}
				//打开对话框钱,先查询所有的银行
				this.initBank();
				Object.assign(this.updateForm, row);
				this.editdialogVisible = true;
			},
			//修改
			updateData(row) {
				//赋值过程
				this.updateForm.bids = this.checkedBanks.map((bid) => bid).join(",");
				this.axios.post("http://localhost:8090/custom/update", this.updateForm).then((response) => {
					if (response.data.result) {
						this.$message({
							type: 'success',
							message: '客户更新成功!'
						});
						//对话框关闭
						this.editdialogVisible = false;
						//初始化列表数据
						this.initData();
					} else {
						this.$message.error("客户更新失败!")
					}
				})
			},
			//图片上传
			handleAvatarSuccess(res,file){
				this.imageUrl = URL.createObjectURL(file.raw);
				if(this.dialogVisible){
					this.insertForm.pic = res.result;
				}
			},
			//列表方法
			initData() {
				this.axios.get('http://localhost:8090/custom/list', {
					params: {
						cname: this.searchForm.cname,
						bir1: this.searchForm.bir1,
						bir2: this.searchForm.bir2,
						current: this.current,
						size: this.pageSize
					}
				}).then((response) => {
					this.tableData = response.data.result.records;
					this.total = response.data.result.total;
				})
			},
			//查询方法
			searchData() {
				this.initData();
			},
			//改变每页显示的条数
			handleSizeChange(val) {
				this.pageSize = val;
				this.initData();
			},
			//改变 上一页下一页
			handleCurrentChange(val) {
				this.current = val;
				this.initData();
			},
			//全选,全不选
			handleSelectionChange(val) {
				this.rows = val;
			},
		}
	}
</script>
<style scoped>
	.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>
                    
                
                
            
        
浙公网安备 33010602011771号