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.
 
 
 
 
 

581 lines
14 KiB

<style lang="less">
@import "@/styles/table-common.less";
@import "shop.less";
</style>
<template>
<div class="search">
<Card>
<Row v-show="openSearch">
<Form ref="searchForm" :model="searchForm" inline :label-width="70">
<FormItem label="店铺名称" prop="nickname">
<Input type="text" v-model="searchForm.keyWord" clearable placeholder="请输入店铺名称"
style="width: 200px" />
</FormItem>
<FormItem style="margin-left: -35px" class="br">
<Button @click="handleSearch" type="primary" icon="ios-search">搜索</Button>
<Button @click="handleReset">重置</Button>
</FormItem>
</Form>
</Row>
<Row align="middle" justify="space-between" class="operation">
<div>
<Button @click="add" type="primary" icon="md-add">添加店铺</Button>
<Button @click="delAll" icon="md-trash">批量删除</Button>
</div>
<div class="icons">
<Tooltip content="刷新" placement="top" transfer>
<Icon type="md-refresh" size="18" class="item" @click="getDataList" />
</Tooltip>
<Tooltip :content="openSearch ? '关闭搜索' : '开启搜索'" placement="top" transfer>
<Icon type="ios-search" size="18" class="item tip" @click="openSearch = !openSearch" />
</Tooltip>
<Tooltip :content="openTip ? '关闭提示' : '开启提示'" placement="top" transfer>
<Icon type="md-bulb" size="18" class="item tip" @click="openTip = !openTip" />
</Tooltip>
<Tooltip content="表格密度" placement="top" transfer>
<Dropdown @on-click="changeTableSize" trigger="click">
<Icon type="md-list" size="18" class="item" />
<DropdownMenu slot="list">
<DropdownItem :selected="tableSize == 'default'" name="default">默认</DropdownItem>
<DropdownItem :selected="tableSize == 'large'" name="large">宽松</DropdownItem>
<DropdownItem :selected="tableSize == 'small'" name="small">紧密</DropdownItem>
</DropdownMenu>
</Dropdown>
</Tooltip>
</div>
</Row>
<Alert show-icon v-show="openTip">
已选择
<span class="select-count">{{ selectList.length }}</span> 项
<a class="select-clear" @click="clearSelectAll">清空</a>
</Alert>
<Table :loading="loading" border :columns="columns" :data="data" :size="tableSize" sortable="custom"
@on-sort-change="changeSort" @on-selection-change="showSelect" ref="table"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize"
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
size="small" show-total show-elevator show-sizer></Page>
</Row>
</Card>
<Modal :title="商品列表" v-model="Visiable" :mask-closable="false" :scrollabele="true" :width="1500">
<goodsList ref="goodsPage" v-if="Visiable"></goodsList>
<div slot="footer" v-show=Visiable>
<Button type="text" @click="Visiable = false">关闭</Button>
</div>
</Modal>
<Modal :title="查看评论" v-model="courierVisiable" :mask-closable="false" :scrollabele="true" :width="1200">
<logistics-address v-if="courierVisiable" ref="courierDialog"></logistics-address>
<div slot="footer" v-show=courierVisiable>
<Button type="text" @click="courierVisiable = false">关闭</Button>
</div>
</Modal>
<check-password ref="checkPass" @on-success="resetPass" />
<addEdit :data="form" :type="showType" v-model="showUser" @on-submit="getDataList" />
<mernage :data="form" ref="dialog" :type="showTypeMe" v-model="showmernage" @on-submit="getDataList" />
</div>
</template>
<script>
import {
getUserListData,
enableUser,
disableUser,
deleteUser,
getAllUserData,
importUserData,
resetUserPass,
} from "@/api/index";
import departmentChoose from "@/views/my-components/hiver/department-choose";
import checkPassword from "@/views/my-components/hiver/check-password";
import addEdit from "./addEdit.vue";
import mernage from "./mernage.vue";
import logisticsAddress from "@/views/app/shop/logisticsAddress.vue";
import dict from "@/views/my-components/hiver/dict";
import goodsList from "./dictManage.vue";
import {
deleteShop,
disableShop,
enableShop,
getAllShopData,
getShopData
} from "@/api/app";
export default {
name: "user-manage",
components: {
logisticsAddress,
departmentChoose,
checkPassword,
addEdit,
mernage,
dict,
goodsList
},
data() {
return {
courierVisiable:false,
Visiable:false,
tableSize: "default",
showUser: false,
showmernage:false,
showType: "0",
showTypeMe: "0",
openSearch: true,
openTip: true,
loading: true,
drop: false,
dropDownContent: "展开",
dropDownIcon: "ios-arrow-down",
selectList: [],
searchForm: {
id: "",
keyWord: "",
shopOwnerId: "",
shopMangerId: "",
shopArea: "",
businessDistrictLevel: "",
contactPhone: "",
shopIcon: "1111",
shopAddress: "",
yearFee: "",
chargeTime: "",
startTime: "",
endTime: "",
pageNumber: 1,
pageSize: 10,
sort: "createTime",
order: "desc",
startDate: "",
endDate: "",
regionId:JSON.parse(this.getStore("userInfo")).departmentId,
remark: "",
},
form: {},
columns: [{
type: "selection",
width: 60,
align: "center",
fixed: "left",
},
{
type: "index",
width: 60,
align: "center",
fixed: "left",
},
{
title: "店铺名称",
key: "shopName",
minWidth: 125,
sortable: true,
fixed: "left",
},
{
title: "店铺区域",
key: "shopAreaTitle",
minWidth: 120,
},
{
title: "店铺分类",
key: "shopTypeTitle",
minWidth: 120,
},
{
title: "店铺地址",
key: "shopAddress",
minWidth: 125,
sortable: true,
},
{
title: "联系方式",
key: "contactPhone",
minWidth: 180,
sortable: true,
},
{
title: "支付宝账号",
key: "aliAccount",
width: 180,
align: "center",
},
{
title: "店铺评分",
key: "shopScore",
width: 70,
align: "center",
},
{
title: "入驻时间",
key: "createTime",
sortable: true,
sortType: "desc",
width: 180,
},
{
title: "操作",
key: "action",
width: 170,
align: "center",
fixed: "right",
render: (h, params) => {
let enableOrDisable = "";
if (params.row.status == 1) {
enableOrDisable = h(
"a", {
on: {
click: () => {
this.disable(params.row);
},
},
},
"禁用"
);
} else {
enableOrDisable = h(
"a", {
on: {
click: () => {
this.enable(params.row);
},
},
},
"启用"
);
}
return h("div", [
h(
"a", {
on: {
click: () => {
this.edit(params.row);
},
},
},
"编辑"
),
h("Divider", {
props: {
type: "vertical",
},
}),
h(
"a", {
on: {
click: () => {
this.mernage(params.row);
},
},
},
"管理"
),
h("Divider", {
props: {
type: "vertical",
},
}),
enableOrDisable,
h("Divider", {
props: {
type: "vertical",
},
}),
h(
"a", {
on: {
click: () => {
this.remove(params.row);
},
},
},
"删除"
),
h("Divider", {
props: {
type: "vertical",
},
}),
h(
"a", {
on: {
click: () => {
this.findAllRecord(params.row);
},
},
},
"查看评论"
),
h("Divider", {
props: {
type: "vertical",
},
}),
h(
"a", {
on: {
click: () => {
this.goodsList(params.row);
},
},
},
"管理商品"
),
]);
},
},
],
data: [],
total: 0,
};
},
methods: {
init() {
this.getDataList();
},
changePage(v) {
this.searchForm.pageNumber = v;
this.getDataList();
this.clearSelectAll();
},
changePageSize(v) {
this.searchForm.pageSize = v;
this.getDataList();
},
changeTableSize(v) {
this.tableSize = v;
},
getDataList() {
// 多条件搜索用户列表
this.loading = true;
getShopData(this.searchForm).then((res) => {
this.loading = false;
if (res.success) {
if (!this.getStore("roles").includes("ROLE_ADMIN")) {
res.result.content.forEach((e) => {
e.mobile = "您无权查看该数据";
});
}
this.data = res.result.content;
this.total = res.result.totalElements;
if (this.data.length == 0 && this.searchForm.pageNumber > 1) {
this.searchForm.pageNumber -= 1;
this.getDataList();
}
}
});
},
handleSearch() {
this.searchForm.pageNumber = 1;
this.searchForm.pageSize = 10;
this.data = []
this.getDataList();
},
handleReset() {
this.$refs.searchForm.resetFields();
this.searchForm.pageNumber = 1;
this.searchForm.pageSize = 10;
this.searchForm.startDate = "";
this.searchForm.endDate = "";
this.$refs.dep.clearSelect();
this.searchForm.departmentId = "";
// 重新加载数据
this.getDataList();
},
changeSort(e) {
this.searchForm.sort = e.key;
this.searchForm.order = e.order;
if (e.order == "normal") {
this.searchForm.order = "";
}
this.getDataList();
},
resetPass() {
this.$Modal.confirm({
title: "确认重置",
content: "您确认要重置所选的 " +
this.selectList.length +
" 条用户数据密码为 123456 ?",
loading: true,
onOk: () => {
let ids = "";
this.selectList.forEach(function(e) {
ids += e.id + ",";
});
ids = ids.substring(0, ids.length - 1);
resetUserPass({
ids: ids
}).then((res) => {
this.$Modal.remove();
if (res.success) {
this.$Message.success("操作成功");
this.clearSelectAll();
this.getDataList();
}
});
},
});
},
findAllRecord(v) {
this.courierVisiable = true;
this.$nextTick(() => {
this.$refs.courierDialog.initRecharge(v);
});
},
add() {
this.showType = "2";
this.showUser = true;
},
goodsList(v){
this.Visiable = true;
this.$nextTick(() => {
this.$refs.goodsPage.init(v);
});
},
edit(v) {
// 转换null为""
for (let attr in v) {
if (v[attr] == null) {
v[attr] = "";
}
}
let str = JSON.stringify(v);
let data = JSON.parse(str);
this.form = data;
this.showType = "1";
this.showUser = true;
},
mernage(v) {
// 转换null为""
for (let attr in v) {
if (v[attr] == null) {
v[attr] = "";
}
}
let str = JSON.stringify(v);
let data = JSON.parse(str);
this.form = data;
this.$refs.dialog.init(data);
this.showTypeMe = "1";
this.showmernage = true;
},
enable(v) {
this.$Modal.confirm({
title: "确认启用",
content: "您确认要启用店铺 " + v.shopName + " ?",
loading: true,
onOk: () => {
enableShop({
id: v.id
}).then((res) => {
this.$Modal.remove();
if (res.success) {
this.$Message.success("操作成功");
this.getDataList();
}
});
},
});
},
disable(v) {
this.$Modal.confirm({
title: "确认禁用",
content: "您确认要禁用店铺 " + v.shopName + " ?",
loading: true,
onOk: () => {
disableShop({
id: v.id
}).then((res) => {
this.$Modal.remove();
if (res.success) {
this.$Message.success("操作成功");
this.getDataList();
}
});
},
});
},
remove(v) {
this.$Modal.confirm({
title: "确认删除",
content: "您确认要删除店铺 " + v.shopName + " ?",
loading: true,
onOk: () => {
deleteShop({
ids: v.id
}).then((res) => {
this.$Modal.remove();
if (res.success) {
this.clearSelectAll();
this.$Message.success("删除成功");
this.getDataList();
}
});
},
});
},
dropDown() {
if (this.drop) {
this.dropDownContent = "展开";
this.dropDownIcon = "ios-arrow-down";
} else {
this.dropDownContent = "收起";
this.dropDownIcon = "ios-arrow-up";
}
this.drop = !this.drop;
},
showSelect(e) {
this.selectList = e;
},
clearSelectAll() {
this.$refs.table.selectAll(false);
},
delAll() {
if (this.selectList.length <= 0) {
this.$Message.warning("您还未选择要删除的数据");
return;
}
this.$Modal.confirm({
title: "确认删除",
content: "您确认要删除所选的 " + this.selectList.length + " 条数据?",
loading: true,
onOk: () => {
let ids = "";
this.selectList.forEach(function(e) {
ids += e.id + ",";
});
ids = ids.substring(0, ids.length - 1);
deleteUser({
ids: ids
}).then((res) => {
this.$Modal.remove();
if (res.success) {
this.$Message.success("删除成功");
this.clearSelectAll();
this.getDataList();
}
});
},
});
}
},
mounted() {
this.init();
},
};
</script>