You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
6.2 KiB
191 lines
6.2 KiB
<template>
|
|
<div class="merchant-container">
|
|
<!-- 新增商家按钮 -->
|
|
<el-button type="primary" @click="openAddDialog" style="margin-bottom: 20px;">新增商家</el-button>
|
|
|
|
<!-- 商家信息展示 -->
|
|
<el-table :data="currentPageMerchants" stripe style="width: 100%">
|
|
<el-table-column label="商家名称" prop="name"></el-table-column>
|
|
<el-table-column label="商家地址" prop="address"></el-table-column>
|
|
<el-table-column label="联系方式" prop="phone"></el-table-column>
|
|
<el-table-column label="商家状态" prop="status"></el-table-column>
|
|
<el-table-column label="操作">
|
|
<template slot-scope="{ row }">
|
|
<el-button @click="editMerchant(row)" type="text" size="small">编辑</el-button>
|
|
<el-button @click="deleteMerchant(row)" type="text" size="small" class="delete-btn">删除</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
|
|
<!-- 分页 -->
|
|
<el-pagination
|
|
v-if="totalMerchants > 10"
|
|
:current-page.sync="currentPage"
|
|
:page-size="pageSize"
|
|
:total="totalMerchants"
|
|
layout="prev, pager, next, jumper"
|
|
@current-change="handlePageChange"
|
|
></el-pagination>
|
|
|
|
<!-- 增加商家的表单 -->
|
|
<el-dialog
|
|
:visible.sync="dialogVisible"
|
|
title="新增/编辑商家"
|
|
@close="resetForm"
|
|
>
|
|
<el-form :model="newMerchant" :rules="rules" ref="form" label-width="120px">
|
|
<el-form-item label="商家名称" prop="name">
|
|
<el-input v-model="newMerchant.name" placeholder="请输入商家名称"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="商家地址" prop="address">
|
|
<el-input v-model="newMerchant.address" placeholder="请输入商家地址"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="联系方式" prop="phone">
|
|
<el-input v-model="newMerchant.phone" placeholder="请输入联系方式"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="商家状态" prop="status">
|
|
<el-select v-model="newMerchant.status" placeholder="请选择商家状态">
|
|
<el-option label="正常" value="正常"></el-option>
|
|
<el-option label="暂停" value="暂停"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button @click="resetForm">取消</el-button>
|
|
<el-button type="primary" @click="saveMerchant">保存</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
/*import { ref, onMounted, watch } from 'vue';*/
|
|
/*import { ElTable, ElTableColumn, ElButton, ElPagination, ElDialog, ElForm, ElFormItem, ElInput, ElSelect, ElOption, ElMessage } from 'element-ui';*/
|
|
|
|
// 假数据
|
|
const dummyMerchants = [
|
|
{ id: 1, name: 'seller', address: '地址 A', phone: '1234567890', status: '正常' },
|
|
// 其他商家数据...
|
|
];
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
merchants: [...dummyMerchants], // 全部商家数据
|
|
currentPageMerchants: [], // 当前页显示的数据
|
|
currentPage: 1, // 当前页数
|
|
pageSize: 10, // 每页显示商家的数量
|
|
totalMerchants: dummyMerchants.length, // 商家总数
|
|
dialogVisible: false, // 是否显示新增商家的对话框
|
|
newMerchant: {
|
|
id: null,
|
|
name: '',
|
|
address: '',
|
|
phone: '',
|
|
status: '正常',
|
|
},
|
|
rules: {
|
|
name: [{ required: true, message: '商家名称不能为空', trigger: 'blur' }],
|
|
address: [{ required: true, message: '商家地址不能为空', trigger: 'blur' }],
|
|
phone: [{ required: true, message: '联系方式不能为空', trigger: 'blur' }],
|
|
status: [{ required: true, message: '商家状态不能为空', trigger: 'blur' }],
|
|
},
|
|
};
|
|
},
|
|
methods: {
|
|
// 初始化商家数据
|
|
fetchMerchants() {
|
|
const startIndex = (this.currentPage - 1) * this.pageSize;
|
|
const endIndex = this.currentPage * this.pageSize;
|
|
const pageData = this.merchants.slice(startIndex, endIndex);
|
|
|
|
this.currentPageMerchants = pageData;
|
|
this.totalMerchants = this.merchants.length; // 更新商家的总数
|
|
},
|
|
|
|
// 打开新增商家的对话框
|
|
openAddDialog() {
|
|
this.newMerchant = { id: null, name: '', address: '', phone: '', status: '正常' }; // 清空表单
|
|
this.dialogVisible = true;
|
|
},
|
|
|
|
// 增加商家
|
|
saveMerchant() {
|
|
if (this.newMerchant.name && this.newMerchant.address && this.newMerchant.phone && this.newMerchant.status) {
|
|
const newId = this.merchants.length + 1; // 用于模拟新增的商家ID
|
|
this.newMerchant.id = newId;
|
|
|
|
// 将新的商家添加到商家数组中
|
|
this.merchants.push({ ...this.newMerchant });
|
|
|
|
// 关闭对话框
|
|
this.dialogVisible = false;
|
|
|
|
// 提示信息
|
|
this.$message.success('商家信息保存成功');
|
|
this.fetchMerchants(); // 刷新商家列表
|
|
this.resetForm(); // 重置表单
|
|
} else {
|
|
this.$message.error('请填写完整信息');
|
|
}
|
|
},
|
|
|
|
// 编辑商家
|
|
editMerchant(row) {
|
|
this.newMerchant = { ...row }; // 将商家信息传递给表单
|
|
this.dialogVisible = true; // 打开对话框
|
|
},
|
|
|
|
// 删除商家
|
|
deleteMerchant(row) {
|
|
this.merchants = this.merchants.filter((merchant) => merchant.id !== row.id); // 删除商家
|
|
this.$message.success('商家删除成功');
|
|
this.fetchMerchants(); // 刷新商家列表
|
|
},
|
|
|
|
// 重置表单
|
|
resetForm() {
|
|
this.newMerchant = {
|
|
id: null,
|
|
name: '',
|
|
address: '',
|
|
phone: '',
|
|
status: '正常',
|
|
};
|
|
},
|
|
|
|
// 分页切换
|
|
handlePageChange(page) {
|
|
this.currentPage = page;
|
|
this.fetchMerchants();
|
|
},
|
|
},
|
|
mounted() {
|
|
this.fetchMerchants();
|
|
},
|
|
watch: {
|
|
totalMerchants() {
|
|
this.fetchMerchants(); // 数据变化时重新加载当前页数据
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped>
|
|
.merchant-container {
|
|
margin: 20px;
|
|
}
|
|
|
|
.delete-btn {
|
|
color: red;
|
|
font-size: 14px;
|
|
background-color: transparent;
|
|
border: none;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.delete-btn:hover {
|
|
text-decoration: underline;
|
|
}
|
|
</style>
|