167 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
| <!--
 | ||
|  * @Descripttion: 此文件由SCUI生成,典型的VUE增删改列表页面组件
 | ||
|  * @version: 1.0
 | ||
|  * @Author: SCUI AutoCode 模板版本 1.0.0-beta.1
 | ||
|  * @Date: <%= createDate %>
 | ||
|  * @LastEditors: (最后更新作者)
 | ||
|  * @LastEditTime: (最后更新时间)
 | ||
| -->
 | ||
| 
 | ||
| <template>
 | ||
| 	<el-container>
 | ||
| 		<el-header>
 | ||
| 			<div class="left-panel">
 | ||
| 				<el-button type="primary" icon="el-icon-plus" @click="add"></el-button>
 | ||
| 				<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
 | ||
| 			</div>
 | ||
| 			<div class="right-panel">
 | ||
| 				<div class="right-panel-search">
 | ||
| 					<el-input v-model="query.search" placeholder="关键词搜索" clearable></el-input>
 | ||
| 					<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
 | ||
| 				</div>
 | ||
| 			</div>
 | ||
| 		</el-header>
 | ||
| 		<el-main class="nopadding">
 | ||
| 			<scTable ref="table" :apiObj="apiObj" row-key="<%= base.rowKey %>" @selection-change="selectionChange">
 | ||
| 
 | ||
| 				<el-table-column type="selection" width="50"></el-table-column>
 | ||
| 				<% column.forEach(function(item, index){ %>
 | ||
| 				<el-table-column label="<%= item.label %>" prop="<%= item.prop %>" width="<%= item.width %>"></el-table-column>
 | ||
| 				<% })%>
 | ||
| 				<el-table-column label="操作" fixed="right" align="right" width="140">
 | ||
| 					<template #default="scope">
 | ||
| 						<el-button link size="small" @click="table_show(scope.row, scope.$index)">查看</el-button>
 | ||
| 						<el-button link size="small" @click="table_edit(scope.row, scope.$index)">编辑</el-button>
 | ||
| 						<el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
 | ||
| 							<template #reference>
 | ||
| 								<el-button link size="small">删除</el-button>
 | ||
| 							</template>
 | ||
| 						</el-popconfirm>
 | ||
| 					</template>
 | ||
| 				</el-table-column>
 | ||
| 			</scTable>
 | ||
| 		</el-main>
 | ||
| 	</el-container>
 | ||
| 
 | ||
| 	<el-dialog :title="titleMap[saveMode]" v-model="saveDialogVisible" :width="500" destroy-on-close>
 | ||
| 		<save-dialog ref="saveDialog" :mode="saveMode"></save-dialog>
 | ||
| 		<template #footer>
 | ||
| 			<el-button @click="saveDialogVisible=false" >取 消</el-button>
 | ||
| 			<el-button v-if="saveMode!='show'" type="primary" @click="saveForm()" :loading="isSaveing">保 存</el-button>
 | ||
| 		</template>
 | ||
| 	</el-dialog>
 | ||
| </template>
 | ||
| 
 | ||
| <script>
 | ||
| 	import saveDialog from './save'
 | ||
| 
 | ||
| 	export default {
 | ||
| 		name: '<%= base.name %>',
 | ||
| 		components: {
 | ||
| 			saveDialog
 | ||
| 		},
 | ||
| 		data() {
 | ||
| 			return {
 | ||
| 				apiObj: this.$API.<%= api.list %>,
 | ||
| 				selection: [],
 | ||
| 				search: {
 | ||
| 					keyword: ""
 | ||
| 				},
 | ||
| 				saveDialogVisible: false,
 | ||
| 				saveMode: 'add',
 | ||
| 				titleMap: {
 | ||
| 					add: "新增",
 | ||
| 					edit: "编辑",
 | ||
| 					show: "查看"
 | ||
| 				},
 | ||
| 				isSaveing: false,
 | ||
| 			}
 | ||
| 		},
 | ||
| 		mounted(){
 | ||
| 
 | ||
| 		},
 | ||
| 		methods: {
 | ||
| 			//添加
 | ||
| 			add(){
 | ||
| 				this.saveMode = 'add';
 | ||
| 				this.saveDialogVisible = true;
 | ||
| 			},
 | ||
| 			//编辑
 | ||
| 			table_edit(row){
 | ||
| 				this.saveMode = 'edit';
 | ||
| 				this.saveDialogVisible = true;
 | ||
| 				this.$nextTick(() => {
 | ||
| 					//这里可以再次根据ID查询详情接口
 | ||
| 					this.$refs.saveDialog.setData(row)
 | ||
| 				})
 | ||
| 			},
 | ||
| 			//查看
 | ||
| 			table_show(row){
 | ||
| 				this.saveMode = 'show';
 | ||
| 				this.saveDialogVisible = true;
 | ||
| 				this.$nextTick(() => {
 | ||
| 					//这里可以再次根据ID查询详情接口
 | ||
| 					this.$refs.saveDialog.setData(row)
 | ||
| 				})
 | ||
| 			},
 | ||
| 			//删除
 | ||
| 			async table_del(row, index){
 | ||
| 				var reqData = {id: row.id}
 | ||
| 				var res = await this.$API.<%= api.del %>.post(reqData);
 | ||
| 				if(res.code == 200){
 | ||
| 					//这里选择刷新整个表格 OR 插入/编辑现有表格数据
 | ||
| 					this.$refs.table.tableData.splice(index, 1);
 | ||
| 					this.$message.success("删除成功")
 | ||
| 				}else{
 | ||
| 					this.$alert(res.message, "提示", {type: 'error'})
 | ||
| 				}
 | ||
| 			},
 | ||
| 			//批量删除
 | ||
| 			async batch_del(){
 | ||
| 				this.$confirm(`确定删除选中的 ${this.selection.length} 项吗?`, '提示', {
 | ||
| 					type: 'warning'
 | ||
| 				}).then(() => {
 | ||
| 					const loading = this.$loading();
 | ||
| 					this.selection.forEach(item => {
 | ||
| 						this.$refs.table.tableData.forEach((itemI, indexI) => {
 | ||
| 							if (item.id === itemI.id) {
 | ||
| 								this.$refs.table.tableData.splice(indexI, 1)
 | ||
| 							}
 | ||
| 						})
 | ||
| 					})
 | ||
| 					loading.close();
 | ||
| 					this.$message.success("操作成功")
 | ||
| 				}).catch(() => {
 | ||
| 
 | ||
| 				})
 | ||
| 			},
 | ||
| 			//提交
 | ||
| 			saveForm(){
 | ||
| 				this.$refs.saveDialog.submit(async (formData) => {
 | ||
| 					this.isSaveing = true;
 | ||
| 					var res = await this.$API.<%= api.save %>.post(formData);
 | ||
| 					this.isSaveing = false;
 | ||
| 					if(res.code == 200){
 | ||
| 						//这里选择刷新整个表格 OR 插入/编辑现有表格数据
 | ||
| 						this.saveDialogVisible = false;
 | ||
| 						this.$message.success("操作成功")
 | ||
| 					}else{
 | ||
| 						this.$alert(res.message, "提示", {type: 'error'})
 | ||
| 					}
 | ||
| 				})
 | ||
| 			},
 | ||
| 			//表格选择后回调事件
 | ||
| 			selectionChange(selection){
 | ||
| 				this.selection = selection;
 | ||
| 			},
 | ||
| 			//搜索
 | ||
| 			handleQuery(){
 | ||
| 
 | ||
| 			}
 | ||
| 		}
 | ||
| 	}
 | ||
| </script>
 | ||
| 
 | ||
| <style>
 | ||
| </style>
 |