<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>