<template>
	<a-table
		ref="table"
		:columns="columns"
		:data-source="dataSources"
		:row-key="(record) => record.courseId"
		bordered
		:expand-row-by-click="true"
		:pagination="false"
		size="small"
	>
		<template #bodyCell="{ column, text, record }">
			<template v-if="column.dataIndex === 'publishTime'">{{ formatTimestamp(text) }}</template>
			<template v-if="column.dataIndex === 'action'">
				<a-button size="small" @click="handleDetail(record)" style="margin-right: 5px">详情</a-button>
				<a-button size="small" @click="handleEdit(record)" style="margin-right: 5px">编辑</a-button>
				<a-button size="small" @click="handleCopy(record)" style="margin-right: 5px">复制</a-button>
				<a-popover v-model:visible="popoverVisible[record.courseId]" title="确定下架?" trigger="click">
					<template #content>
						<a-button style="margin-right: 10px" type="primary" @click="handleShelf(record, 0)">确定 </a-button>
						<a-button
							@click="
								() => {
									popoverVisible[record.courseId] = false
								}
							"
							>取消</a-button
						>
					</template>
					<!--					<a-button size="small" style="margin-right: 5px">选择</a-button>-->
					<a-button v-if="record.putawayStatus == 1" size="small" style="margin-right: 5px">下架</a-button>
				</a-popover>
				<a-popover v-model:visible="popoverVisibles[record.courseId]" title="确定上架?" trigger="click">
					<template #content>
						<a-button style="margin-right: 10px" type="primary" @click="handleShelf(record, 1)">确定 </a-button>
						<a-button
							@click="
								() => {
									popoverVisibles[record.courseId] = false
								}
							"
							>取消</a-button
						>
					</template>
					<!--					<a-button size="small" style="margin-right: 5px">选择</a-button>-->
					<a-button v-if="record.putawayStatus == 0" size="small" style="margin-right: 5px">上架</a-button>
				</a-popover>
				<a-popover v-model:visible="popoverDelVisibles[record.courseId]" title="确定删除?" trigger="click">
					<template #content>
						<a-button style="margin-right: 10px" type="primary" @click="handleDelete(record)">确定 </a-button>
						<a-button
							@click="
								() => {
									popoverDelVisibles[record.courseId] = false
								}
							"
							>取消</a-button
						>
					</template>
					<!--					<a-button size="small" style="margin-right: 5px">选择</a-button>-->
					<a-button size="small" style="margin-right: 5px">删除</a-button>
				</a-popover>
			</template>
		</template>
	</a-table>
	<div style="display: flex; width: 100%; justify-content: flex-end; margin-top: 10px">
		<a-pagination
			v-model:current="pagination.current"
			v-model:pageSize="pagination.size"
			:total="total"
			show-less-items
			@change="handlerChange"
		/>
	</div>
</template>

<script setup>
	import tool from '@/utils/tool'
	import { ref, onMounted } from 'vue'
	import { list, copy, deletes } from '@/api/courseinfo'
	import { useRouter } from 'vue-router'
	import { updateCourseStatus } from '@/api/course/courseDetail'

	const router = useRouter()

	const emit = defineEmits(['handleEdit', 'handleDetail'])
	const popoverDelVisibles = ref({})
	const dataSources = ref([])
	const popoverVisible = ref({})
	const popoverVisibles = ref({})
	const formState = ref({
		name: '',
		loacl: ''
	}) // 列表loading
	const columns = [
		{
			title: '课程名称',
			dataIndex: 'courseName',
			sorter: true
		},
		{
			title: '状态',
			dataIndex: 'putawayStatusName',
			sorter: true
		},
		{
			title: '院系',
			dataIndex: 'collegeTwoIdName',
			sorter: true
		},
		{
			title: '课程类型',
			dataIndex: 'courseTypeName',
			sorter: true
		},
		{
			title: '课时数量',
			dataIndex: 'hourCount',
			sorter: true
		},
		{
			title: '发布时间',
			dataIndex: 'publishTime',
			sorter: true
		},
		{
			title: '操作',
			dataIndex: 'action',
			sorter: true,
			width: '290px',
			align: 'center'
		}
	]
	// tool.formatTimestamp()

	const formatTimestamp = (time) => {
		return tool.formatTimestamp(time)
	}
	const total = ref(0)
	const pagination = ref({
		size: 10,
		current: 1
	})
	const onChangeCurrent = (current) => {
		router.push({
			path: '/' + current
		})
	}
	const handlerChange = (page, pageSize) => {
		// pagination.value.size = pageSize
		// pagination.value.current = page

		getList()
	}
	const handleDetail = (record) => {
		// router.push({
		// 	path: '/portal/courseDetails',
		// 	query: {
		// 		id: record.courseId
		// 	}
		// })
		emit('handleDetail', record)
	}

	// 编辑按钮点击事件
	const handleEdit = (record) => {
		// 在这里添加编辑记录的逻辑

		emit('handleEdit', record)
	}
	const handleCopy = (record) => {
		// 在这里添加编辑记录的逻辑
		copy({ courseId: record.courseId }).then((res) => {
			if (res.code == 200) {
				getList()
			}
		})
		// getList()
	}

	// 上架按钮点击事件
	const handleShelf = (record, num) => {
		popoverVisible.value[record.courseId] = false
		popoverVisibles.value[record.courseId] = false
		// 在这里添加上架记录的逻辑
		// {
		// 	"courseId": "1948183431150227458",
		// 	"putawayStatus": 1
		// }
		updateCourseStatus({ courseId: record.courseId, putawayStatus: num }).then((res) => {
			getList()
		})
	}

	// 删除按钮点击事件
	const handleDelete = (record) => {
		popoverDelVisibles.value[record.courseId] = false
		deletes([{ courseId: record.courseId }]).then(() => {
			getList()
		})
	}
	const getList = () => {
		list({ ...pagination.value }).then((data) => {
			if (data.code == 200) {
				dataSources.value = []
				dataSources.value = data.data.records
				pagination.value.current = data.data.current
				pagination.value.size = data.data.size
				total.value = data.data.total
			}
			// data.records
		})
	}
	const setList = (search) => {
		formState.value = search
		pagination.value.current = 1
		list({ ...pagination.value, ...formState.value }).then((data) => {
			if (data.code == 200) {
				dataSources.value = data.data.records
				pagination.value.current = data.data.current
				pagination.value.size = data.data.size
				total.value = data.data.total
			}
			// data.records
		})
	}

	// 重置按钮点击事件
	onMounted(() => {
		// getListData()
		getList()
	})

	// watch(
	// 	() => dataSources.value,
	// 	(newVal, oldVal) => {
	// 		console.log('数据源变化了 ', ' 新的 ',newVal, '  旧的 ',oldVal)
	// 	},
	// 	{ deep: true, immediate: true }
	// )
	defineExpose({
		setList
	})
</script>

<style scoped>
	.desc p {
		margin-bottom: 1em;
	}
</style>
