<template>
	<div class="admin_page">
		<div class="admin_table_search">
			<div class="admin_state">
				<div class="admin_state_item">
					<span>Create Time:</span>
					<a-range-picker
						style="width: 250px"
						class="range_picker"
						v-model:value="rangePickerValue"
						:placeholder="[
							$t('HistoryPage.StartDate'),
							$t('HistoryPage.EndDate'),
						]"
						valueFormat="YYYY-MM-DD"
					>
						<template #suffixIcon>
							<span
								class="icon iconfont range_picker_icon icon-rili"
							></span>
						</template>
					</a-range-picker>
				</div>
				<div class="admin_state_item">
					<span>Status:</span>
					<a-select
						v-model:value="status"
						size="large"
						style="width: 250px"
						optionFilterProp="label"
						:options="statusList"
						placeholder="Please select"
						@change="changeStatus"
						allowClear
						show-search
					></a-select>
				</div>
				<div class="admin_state_item">
					<span>School:</span>
					<a-select
						v-model:value="school"
						size="large"
						style="width: 250px"
						optionFilterProp="label"
						:options="schoolList"
						placeholder="Please select"
						allowClear
						show-search
						@focus="handleFocus"
					></a-select>
				</div>
			</div>
			<div class="admin_search">
				<div class="admin_search_item" @click="searchHistoryList">
					Search
				</div>
				<div class="admin_search_item" @click="addhHistoryList">
					Add
				</div>
			</div>
		</div>
		<div class="admin_table_content" ref="historyTable">
			<a-table
				@resizeColumn="handleResizeColumn"
				:loading="tableLoading"
				:columns="columns"
				:data-source="dataList"
				:scroll="{ y: historyTableHeight }"
				@change="changePage"
				:showSorterTooltip="false"
				:pagination="{
					showSizeChanger: true,
					current: currentPage,
					pageSize: pageSize,
					total: total,
					showQuickJumper: true,
					bordered: false,
				}"
			>
			</a-table>
		</div>
		<add ref="add" @searchHistoryList="searchHistoryList"></add>
	</div>
</template>
<script lang="ts">
	import {
		defineComponent,
		ref,
		createVNode,
		computed,
		reactive,
		toRefs,
		onMounted,
	} from "vue";
	import { formatTime } from "@/tool/util";
	import { useStore } from "vuex";
	import { Https } from "@/tool/https";
	import { getCookie, clonAllCookie } from "@/tool/cookie";
	import add from "./add.vue";
	export default defineComponent({
		components: { add },
		setup() {
			const store: any = useStore();
			let filter: any = reactive({
				dataList: [],
				tableLoading: false,
				countryList: computed(() => {
					return store.state.adminPage.country;
				}),
				add: null as any,
			});
			let filterData: any = reactive({
				currentPage: 1,
				pageSize: 10,
				total: 0,
				country: "",
				status: "",
				school: "",
				rangePickerValue: [],
			});
			let selectList = reactive({
				statusList: [
					{
						label: "all",
						value: "",
					},
					{
						label: "Enterprise",
						value: "Enterprise",
					},
					{
						label: "Education",
						value: "Education",
					},
				],
				schoolList: [],
			});
			let renameData: any = ref({}); //修改名字选中的数据
			const columns: any = computed(() => {
				return [
					{
						title: "Id",
						align: "center",
						dataIndex: "id",
						key: "id",
						width: 150,
						ellipsis: true,
					},
					{
						title: "Name",
						align: "center",
						dataIndex: "name",
						key: "name",
						width: 150,
						ellipsis: true,
					},
					{
						title: "Create Time",
						align: "center",
						dataIndex: "createTime",
						key: "createTime",
						width: 150,
						ellipsis: true,
					},
					{
						title: "Type",
						align: "center",
						dataIndex: "type",
						key: "type",
						width: 150,
						ellipsis: true,
					},
				];
			});
			//改变页码
			let changePage = (e: any, filters: any, sorter: any) => {
				filterData.currentPage = e.current;
				filterData.pageSize = e.pageSize;
				gettrialList();
			};
			const filterOption = (e: any) => {
				let type = filterData.status;
				if (type == "Education") type = "School";
				let params = {
					name: e,
					type,
				};
				Https.axiosPost(
					Https.httpUrls.organizationNameSearch,
					{},
					{ params: params }
				).then((rv: any) => {
					if (rv.length == 0) return (selectList.schoolList = []);
					selectList.schoolList = rv.map((item: any) => {
						return {
							label: item,
							value: item,
						};
					});
				});
			};
			//查询列表
			let searchHistoryList = () => {
				filterData.currentPage = 1;
				gettrialList();
			};
			//获取列表
			let gettrialList = () => {
				filter.tableLoading = true;
				const dateArr = filterData.rangePickerValue;
				const startDate = dateArr?.[0] ? dateArr[0] + " " + "00:00:00" : "";
				const endDate = dateArr?.[1] ? dateArr[1] + " " + "23:59:59" : "";
				const params = {
					startTime: startDate,
					endTime: endDate,
					id: "",
					name: filterData.school,
					type: filterData.status,
					size: filterData.pageSize,
					page: filterData.currentPage,
				}; //type: "Enterprise"
				Https.axiosPost(Https.httpUrls.queryOrganization, params).then(
					(rv: any) => {
						if (rv) {
							console.log(rv);
							// filter.dataList = rv;
							filter.dataList = rv.records;
							filterData.total = rv.total;
							filter.tableLoading = false;
							// this.workspaceItem.position = this.singleTypeList[0].label
						}
					}
				);
			};
			let addhHistoryList = () => {
				filter.add.init("Add", "");
			};
			const handleFocus = () => {
				if (selectList.schoolList.length == 0) {
					filterOption("");
				}
			};
			const changeStatus = () => {
				filterData.school = "";
				selectList.schoolList = [];
			};
			onMounted(() => {
				gettrialList();
			});
			return {
				...toRefs(filter),
				...toRefs(filterData),
				...toRefs(selectList),
				columns,
				renameData,
				changePage,
				searchHistoryList,
				gettrialList,
				addhHistoryList,
				handleFocus,
				changeStatus,
			};
		},
		data() {
			return {
				historyTableHeight: 0,
				handleResizeColumn: (w: any, col: any) => {
					col.width = w;
				},
			};
		},
		mounted() {
			let historyTable: any = this.$refs.historyTable;
			this.historyTableHeight = historyTable.clientHeight - 200;
		},
		methods: {},
	});
</script>
<style lang="less" scoped>
	.admin_page .admin_table_search .admin_state {
		display: flex;
		flex-wrap: wrap;
	}
	:deep(.operate_list) {
		.fi {
			font-size: 2rem;
			margin-right: 1rem;
		}
		.success {
			.fi-ss-check-circle {
				color: #3ab45c;
			}
		}
		.pending {
			.fi-ss-check-circle {
				color: #ffc628;
			}
		}
		.fail {
			.fi-ss-check-circle {
				color: #ff0000;
			}
		}
	}
</style>