<!-- 隐患记录 -->
<template>
	<view>
		<!-- 吸顶搜索框 start -->
		<key-word-search-input
			:inputSearchValue="searchForm.HIDDENDESCR"
			@search="handleSearch"
		/>
		<!-- 吸顶搜索框 end -->

		<!-- 列表渲染 start -->
		<list :list="list" @scrollToLower="scrollToLower">
			<template #default="{ item }">
				<view class="flex-between main-title">
					<view class="u-line-1">{{ item.HIDDENDESCR || "暂无" }}</view>
					<view :class="hiddenLevelColor[item.HIDDENLEVEL]">
						{{ item.HIDDENLEVELNAME }}
					</view>
				</view>
				<view class="flex-between subtitle mt-5">
					<view>来源:{{ hiddenSource[item.SOURCE] }}</view>
				</view>
				<view class="flex-between subtitle mt-5">
					<view>隐患发现人:{{ item.findUserNames || "暂无" }}</view>
					<view>
						隐患发现时间:{{
							item.DISCOVERYTIME ? formatTime(item.DISCOVERYTIME) : "暂无"
						}}
					</view>
				</view>
				<view class="flex-between subtitle mt-5">
					<view>隐患确认人:{{ item.confirmUserName || "暂无" }}</view>
					<view>
						隐患确认时间:{{
							item.CONFIRM_TIME ? formatTime(item.CONFIRM_TIME) : "暂无"
						}}
					</view>
				</view>
				<view class="flex-between subtitle mt-5">
					<view>隐患整改人:{{ item.RECTIFICATIONORNAME || "暂无" }}</view>
					<view>
						整改完成时间:{{
							item.RECTIFICATIONTIME
								? formatTime(item.RECTIFICATIONTIME)
								: "暂无"
						}}
					</view>
				</view>
				<view class="flex-between subtitle mt-5">
					<view>隐患整改人:{{ item.CHECKNAME || "暂无" }}</view>
					<view>
						整改完成时间:{{
							item.RECTIFICATIONTIME
								? formatTime(item.RECTIFICATIONTIME)
								: "暂无"
						}}
					</view>
				</view>
				<view class="flex-between subtitle mt-5">
					<view>隐患状态:{{ statusList[item.STATE] }}</view>
					<view class="flex-between">
						<!-- v-if="item.CREATOR === store.state.userInfo.USER_ID && item.STATE === '16'" -->
						<block
							v-if="
								item.CREATOR === store.state.userInfo.USER_ID &&
								item.STATE === '16'
							"
						>
							<view>
								<u-button
									type="primary"
									size="mini"
									shape="circle"
									@click="handleEditClick(item)"
								>
									修改
								</u-button>
							</view>
							<view class="ml-10">
								<u-button
									type="primary"
									size="mini"
									shape="circle"
									@click="fnDelete(item.HIDDEN_ID)"
								>
									删除
								</u-button>
							</view>
						</block>
						<view class="ml-10">
							<u-button
								type="primary"
								size="mini"
								shape="circle"
								@click="handleClickView(item)"
							>
								查看
							</u-button>
						</view>
					</view>
				</view>
			</template>
		</list>
		<!-- 列表渲染 end -->

		<search-popup
			:form="form"
			@search="handleSearch"
			@update-time="handleUpdateTime"
		/>
	</view>
</template>

<script>
import keyWordSearchInput from "@/components/keyWordSearchInput/index.vue";
import List from "@/components/list/list.vue";
import SearchPopup from "./components/search-popup.vue";
import * as HiddenAcceptanceApi from "../../api/index";
import { setHiddenDelete } from "../../api";
import dayjs from "dayjs";
import { HIDDEN_LEVEL_COlOR, HIDDEN_SOURCE } from "@/utils/constant";
import { hidden_record_list } from "@/Mock/responseData.js";

export default {
	components: { keyWordSearchInput, List, SearchPopup },

	onLoad() {},

	data() {
		return {
			store: this.$store, // 存储全局 store 到数据当前组件
			searchForm: {
				HIDDENDESCR: "", // 吸顶搜索框的搜索值
			},
			form: {
				HIDDENLEVEL: "", // 隐患级别
				STARTTIME: "", // 开始时间
				ENDTIME: "", // 结束时间
				STATE: "", // 隐患状态
			},
			isRequestEnd: false, // 请求是否已结束
			pagination: {
				showCount: 10,
				currentPage: 1,
				stateConfirm: "0",
				total: 0,
			},
			statusList: {
				"-2": "待确认",
				"-1": "已过期",
				1: "未整改",
				2: "已整改",
				3: "已复查",
				4: "已验收",
				5: "已忽略",
				6: "重大隐患",
				7: "待处理特殊隐患",
				8: "特殊处理隐患",
			},
			list: [],
		};
	},

	// 页面展示后立刻触发
	onShow() {
		this.getList();
	},

	created() {},

	computed: {
		hiddenLevelColor() {
			return HIDDEN_LEVEL_COlOR;
		},
		hiddenSource() {
			return HIDDEN_SOURCE;
		},
	},

	mounted() {},

	methods: {
		/** 处理搜索事件 */
		async handleSearch(filterVal) {
			console.log('filterVal :>> ', filterVal);
			this.pagination = {
				...this.pagination,
				currentPage: 1,
				showCount: 10,
				total: 0,
			};
			await this.getList(filterVal);
		},
		/** 获取列表数据 */
		getList(params) {
			console.log('params :>> ', params);
			if (this.isRequestEnd) return null;
			uni.showLoading({
				title: "加载中",
			});
			let { USER_ID, CORPINFO_ID, DEPARTMENT_ID } = this.store.state.userInfo;
			// HiddenAcceptanceApi.getHiddenList({
			// 	USER_ID: USER_ID,
			// 	CORPINFO_ID,
			// 	currentPage: this.pagination.currentPage,
			// 	showCount: this.pagination.showCount,
			// 	DISPOSESTATE: 2,
			// 	stateConfirm: this.pagination.stateConfirm,
			// 	USERDEPT: DEPARTMENT_ID,
			// 	SELFUSERID: USER_ID,
			// 	corpinfoId: CORPINFO_ID,
			// 	loginUserId: USER_ID,
			// });

			// 虚拟 mock 数据渲染
			setTimeout(() => {
				this.list = hidden_record_list;
				this.pagination.total = hidden_record_list.length;
				uni.hideLoading();
			}, 400);
		},
		/** 格式化日期时间 */
		formatTime(val) {
			return dayjs(val).format("YYYY-MM-DD");
		},
		/** 向下滚动加载数据 */
		async scrollToLower() {
			this.pagination.currentPage = this.pagination.currentPage++;
			if (this.total >= this.pagination.currentPage) await this.getList();
		},
		/** 验收按钮点击事件 */
		handleEditClick(ext) {
			uni.$u.route("/hiddenManageSubPackages/pages/hidden_report/index", {
				HIDDEN_ID: ext.HIDDEN_ID,
			});
		},
		/** 删除按钮点击事件 */
		async fnDelete() {
			await setHiddenDelete({ HIDDEN_ID, loginUserName: userInfo.NAME });
			uni.showToast({
				icon: "none",
				title: "删除成功",
			});
			handleSearch();
		},
		/** 查看按钮点击事件 */
		handleClickView(ext) {
			uni.$u.route("/hiddenManageSubPackages/pages/hidden_record/view", {
				HIDDEN_ID: ext.HIDDEN_ID,
			});
		},
		/** 更新 form 表单中开始时间和结束时间两个字段 */
		handleUpdateTime({ field, value }) {
			this.form = {
				...this.form,
				[field]: value,
			};
		},
	},
};
</script>

<style scoped lang="scss">
.u-line-1 {
	width: 500rpx;
}
</style>