oil-station/fuintAdmin/src/views/commission/relation/index.vue
2023-10-09 11:12:49 +08:00

378 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="会员ID" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入标题"
clearable
style="width: 200px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="所属店铺" prop="store">
<el-select
v-model="queryParams.storeId"
placeholder="所属店铺"
clearable
style="width: 180px"
>
<el-option :key="0" label="公共所有" v-if="!this.$store.getters.storeId" :value="0"/>
<el-option v-for="storeInfo in storeList" :key="storeInfo.id" :label="storeInfo.name" :value="storeInfo.id"/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="状态"
clearable
style="width: 100px"
>
<el-option key="A" label="启用" value="A"/>
<el-option key="N" label="禁用" value="N"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['content:banner:add']"
>新增</el-button>
</el-form-item>
</el-form>
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column label="ID" prop="id" width="55"/>
<el-table-column label="标题" align="center" prop="title" />
<el-table-column label="所属店铺" align="center" prop="store">
<template slot-scope="scope">
<span v-if="scope.row.storeId && scope.row.storeId > 0">
<span>{{ getName(storeList, scope.row.storeId) }}</span>
</span>
<span v-else>公共所有</span>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
active-value="A"
inactive-value="N"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column label="排序" align="center" prop="sort" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-hasPermi="['content:banner:edit']"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
v-hasPermi="['content:banner:edit']"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open" class="common-dialog" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="标题" prop="title">
<el-input v-model="form.title" placeholder="请输入标题" maxlength="200" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="所属店铺" prop="storeId">
<el-select
v-model="form.storeId"
style="width: 260px"
placeholder="所属店铺,空则为公共所有"
>
<el-option :key="0" label="公共所有" v-if="!this.$store.getters.storeId" :value="0"/>
<el-option v-for="storeInfo in storeList" :key="storeInfo.id" :label="storeInfo.name" :value="storeInfo.id"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="链接" prop="url">
<el-input v-model="form.url" placeholder="请输入链接pages/user/index" maxlength="200"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9">
<el-form-item label="图片" prop="image">
<el-upload
:action="uploadAction"
list-type="picture-card"
:class="{hide:hideUpload}"
:file-list="uploadFiles"
:auto-upload="true"
:show-file-list="false"
:headers="uploadHeader"
:on-success="handleUploadSuccess">
<img
v-if="this.form.image"
:src="imagePath + this.form.image"
class="list-img"
/>
<i v-if="!this.form.image" class="el-icon-plus"></i>
</el-upload>
</el-form-item>
</el-col>
<p class="form-tips">提示点击图片修改建议尺寸640 x 350</p>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="排序" prop="sort">
<el-input v-model="form.sort" placeholder="请输入排序数字,越小越靠前" maxlength="10"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注信息">
<el-input v-model="form.description" type="textarea" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="状态">
<el-radio-group v-model="form.status">
<el-radio key="A" label="A" value="A">启用</el-radio>
<el-radio key="N" label="N" value="N">禁用</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</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>
</div>
</template>
<script>
import { getToken } from '@/utils/auth';
import { getBannerList, updateBannerStatus, getBannerInfo, saveBanner } from "@/api/banner";
export default {
name: "CommissionRelation",
data() {
return {
// 遮罩层
loading: true,
// 标题
title: "",
// 选中数组
ids: [],
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 图片根目录
imagePath: "",
// 总条数
total: 0,
// 表格数据
list: [],
// 是否显示弹出层
open: false,
// 默认排序
defaultSort: {prop: 'sort', order: 'ascending'},
// 表单参数
form: { id: '', title: '', storeId: 0, status: "A", sort: 0 },
// 店铺列表
storeList: [],
// 上传地址
uploadAction: process.env.VUE_APP_SERVER_URL + 'backendApi/file/upload',
// 隐藏上传
hideUpload: false,
// 上传文件列表
uploadFiles: [],
uploadHeader: { 'Access-Token' : getToken() },
// 查询参数
queryParams: {
page: 1,
pageSize: 10,
title: '',
storeId: '',
status: ''
},
// 表单校验
rules: {
title: [
{ required: true, message: "标题不能为空", trigger: "blur" },
{ min: 2, max: 200, message: '标题长度必须介于2 和 200 之间', trigger: 'blur' }
],
image: [{ required: true, message: "请上传图片", trigger: "blur" }]
}
};
},
created() {
this.getList();
},
methods: {
// 查询列表
getList() {
this.loading = true;
getBannerList(this.queryParams).then( response => {
this.list = response.data.dataList.content;
this.total = response.data.dataList.totalElements;
this.imagePath = response.data.imagePath
this.storeList = response.data.storeList;
this.loading = false;
}
);
},
// 搜索按钮操作
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
// 重置按钮操作
resetQuery() {
this.resetForm("queryForm");
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
this.handleQuery();
},
// 状态修改
handleStatusChange(row) {
let text = row.status == "A" ? "启用" : "禁用";
this.$modal.confirm('确认要' + text + '"' + row.title + '"吗?').then(function() {
return updateBannerStatus(row.id, row.status);
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function() {
row.status = row.status === "N" ? "A" : "N";
});
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.multiple = !selection.length
},
// 排序触发事件
handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
// 新增按钮操作
handleAdd() {
this.reset();
this.open = true;
this.title = "新增Banner";
},
// 表单重置
reset() {
this.form = {
id: "",
title: "",
status: "A",
image: "",
description: ""
};
this.uploadFiles = []
this.resetForm("form");
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 提交按钮
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != undefined) {
saveBanner(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
saveBanner(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
// 修改按钮操作
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getBannerInfo(id).then(response => {
this.form = response.data.bannerInfo;
this.uploadFiles = [{ url: response.data.imagePath + this.form.image, status: 'finished'}]
this.open = true;
this.title = "编辑Banner";
});
},
// 删除按钮操作
handleDelete(row) {
const name = row.title
this.$modal.confirm('是否确认删除"' + name + '"的数据项?').then(function() {
return updateBannerStatus(row.id, 'D');
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
handleUploadSuccess(file) {
this.form.image = file.data.fileName
}
}
};
</script>
<style scoped>
.common-dialog >>> .el-upload--picture-card {
width: 60px;
height: 50px;
line-height: 60px;
}
</style>