表格增删改查
<template>
<div class="app-container">
<div class="title-container">
<span class="title-container-left">客户信息查询</span>
</div>
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
:label-position="labelPosition"
label-width="100px"
>
<el-row>
<el-col :span="8" :xs="24">
<el-form-item label="客户号码" prop="customerNo">
<el-input
v-model="queryParams.customerNo"
placeholder="请输入客户号码"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="getUserInfo"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="姓名" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入姓名"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="getUserInfo"
/> </el-form-item
></el-col>
<el-col :span="8" :xs="24">
<el-form-item label="出生日期" prop="birthday">
<el-date-picker
size="small"
style="width: 240px"
value-format="yyyy-MM-dd"
v-model="queryParams.birthday"
placeholder="选择日期"
@keyup.enter.native="getUserInfo"
>
</el-date-picker>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="性别" prop="sex">
<el-select
v-model="queryParams.sex"
placeholder="请选择"
clearable
size="small"
style="width: 240px"
prop="sex"
>
<el-option label="男" value="0"></el-option>
<el-option label="女" value="1"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="证件类型" prop="idType">
<el-select
v-model="queryParams.idType"
placeholder="请选择"
clearable
size="small"
style="width: 240px"
>
<el-option label="身份证" value="01"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="证件号码" prop="idNo">
<el-input
v-model="queryParams.idNo"
placeholder="请输入证件号码"
clearable
size="small"
style="width: 240px"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" size="mini" @click="handleQuery"
>查询</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
size="mini"
@click="handleDelete"
:disabled="multiple"
v-hasPermi="['system:clientInfo:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
size="mini"
@click="handleAdd"
v-hasPermi="['system:clientInfo:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:clientInfo:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button type="primary" size="mini" @click="resetQuery"
>重置</el-button
>
</el-col>
</el-row>
<el-table
v-loading="loading"
:data="tableData"
height="300px"
style="width: 100%"
class="table"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
prop="customerNo"
label="客户号码"
width="150"
></el-table-column>
<el-table-column prop="name" label="姓名" width="150"></el-table-column>
<el-table-column
prop="sex"
label="性别"
width="150"
:formatter="sexFormatter"
></el-table-column>
<el-table-column
prop="birthday"
label="出生日期"
width="200"
></el-table-column>
<el-table-column
prop="idType"
label="证件类型"
:formatter="idTypeFormatter"
width="180"
></el-table-column>
<el-table-column
prop="idNo"
label="证件号码"
width="200"
></el-table-column>
<el-table-column
fixed="right"
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:clientInfo:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click.native.prevent="handleDelete(scope.row)"
v-hasPermi="['system:clientInfo:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="80px"
class="demo-form"
>
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="出生日期" prop="birthday">
<el-date-picker
v-model="form.birthday"
value-format="yyyy-MM-dd"
placeholder="请输入出生日期"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="性别" prop="sex">
<el-radio-group v-model="form.sex">
<el-radio label="0">男</el-radio>
<el-radio label="1">女</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="证件类型" prop="idType">
<el-select v-model="form.idType" placeholder="请选择证件类型">
<el-option label="身份证" value="01"></el-option>
</el-select>
</el-form-item>
<el-form-item label="证件号码" prop="idNo">
<el-input v-model="form.idNo" placeholder="请输入证件号码" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getUserInfo"
/>
</div>
</template>
<script>
import {
listClient,
getClient,
addClient,
updateClient,
delClient,
exportClient,
} from "@/api/system/clientInfo";
export default {
data() {
return {
loading: false,
labelPosition: "",
ids: [],
multiple: true,
single: true,
total: 0,
tableData: [],
title: "",
open: false,
birthday: "",
queryParams: {
pageNum: 1,
pageSize: 10,
customerNo: "",
name: "",
birthday: "",
sex: "",
idType: "",
idNo: "",
},
form: {
name: undefined,
birthday: undefined,
sex: undefined,
idType: undefined,
idNo: undefined,
},
rules: {
name: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
birthday: [
{ required: true, message: "出生日期不能为空", trigger: "blur" },
],
sex: [{ required: true, message: "性别不能为空", trigger: "blur" }],
idType: [
{ required: true, message: "证件类型不能为空", trigger: "blur" },
],
idNo: [
{ required: true, message: "证件号码不能为空", trigger: "blur" },
],
},
newData: [
{
customerNo: "001",
name: "用户1",
sex: "男",
birthday: "2016-05-02",
idNo: "12300000009999",
idType: "01",
},
{
customerNo: "002",
name: "用户2",
sex: "女",
birthday: "2016-05-02",
idNo: "12345678910123456",
idType: "01",
},
{
customerNo: "003",
name: "用户3",
sex: "女",
birthday: "2016-05-02",
idNo: "1234567999923456",
idType: "01",
},
],
};
},
methods: {
getUserInfo() {
listClient(this.queryParams).then((response) => {
this.tableData = response.rows;
this.total = response.total;
});
},
handleQuery() {
this.queryParams.pageNum = 1;
this.getUserInfo();
},
sexFormatter(row) {
return row.sex == 0 ? "男" : "女";
},
idTypeFormatter(row) {
const idType = row.idType;
if (idType == "01") {
return "身份证";
} else {
return "其他";
}
},
cancel() {
this.open = false;
this.reset();
},
reset() {
this.form = {
name: undefined,
birthday: undefined,
sex: undefined,
idType: undefined,
idNo: undefined,
};
this.resetForm("form");
},
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.customerNo);
this.single = selection.length != 1;
this.multiple = !selection.length;
},
handleAdd() {
this.reset();
this.open = true;
this.title = "添加客户信息";
},
submitForm: function () {
this.$refs["form"].validate((valid) => {
if (valid) {
console.log("customerNo=" + this.form.customerNo);
if (this.form.customerNo != undefined) {
updateClient(this.form).then((response) => {
this.$message("修改成功");
this.open = false;
this.getUserInfo();
});
} else {
addClient(this.form).then((response) => {
this.$message("新增成功");
this.open = false;
this.getUserInfo();
});
}
}
});
},
handleUpdate(row) {
this.reset();
const customerId = row.customerNo || this.ids[0];
const customerNoData = {
customerNo: customerId,
};
getClient(customerNoData).then((response) => {
this.form = response.data.returnUser[0];
this.open = true;
this.title = "修改客户信息";
});
},
handleDelete(row) {
const customerNos = row.customerNo || this.ids[0];
const customerNosData = {
customerNo: customerNos,
};
this.$confirm(
'是否删除客户号码为"' + customerNos + '"的数据项?',
"警告",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
)
.then(function () {
return delClient(customerNosData);
})
.then(() => {
this.getUserInfo();
this.$message("删除成功");
})
.catch(() => {});
},
handleExport() {
const queryParams = this.queryParams;
this.$confirm("是否确认导出所有用户数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function (res) {
return exportClient(queryParams);
})
.then((res) => {
console.log(res);
const blob = new Blob([res.data], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
});
console.log(blob);
const url = window.URL.createObjectURL(blob);
console.log(url);
const a = document.createElement("a");
a.style.display = "none";
a.href = url;
a.target = "_blank";
a.setAttribute("download", name);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
})
.catch((err) => {
this.$message.error("文件下载失败!");
});
},
},
};
</script>
<style scoped>
.title-container {
width: 100%;
height: 40px;
line-height: 40px;
background-color: #d6e4ff;
color: #999;
opacity: 0.8;
font-weight: bold;
font-size: 14px;
margin-bottom: 24px;
}
.title-container-left {
position: absolute;
display: inline-block;
left: 32px;
}
.table {
margin-top: 24px;
}
</style>
js文件
import request from "@/utils/request";
export function listClient(query) {
return request({
url: '/posuser/userDealMapper/selectByTable?pageNum='+query.pageNum+'&pageSize='+query.pageSize,
// url: "/posuser/userDealMapper/select",//
method: "post",
data: query,
});
}
export function getClient(customerNo) {
return request({
url: "/posuser/userDealMapper/select",
method: "post",
data: customerNo,
});
}
export function addClient(data) {
return request({
url: "/posuser/userDealMapper/insert",
method: "post",
data: data,
});
}
export function updateClient(data) {
return request({
url: "/posuser/userDealMapper/update",
method: "post",
data: data,
});
}
export function delClient(customerNo) {
return request({
// url: "/posuser/userDealMapper/delete?customerNo=" + customerNo,
url: "/posuser/userDealMapper/delete",
method: "post",
data: customerNo
});
}
export function exportClient(query) {
return request({
url: "/posuser/userDealMapper/export",
method: "post",
data: query,
responseType: 'blob'
});
}