<!-- 隐患整改组件 --> <template> <view class="container"> <!-- 吸顶搜索框 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>隐患确认状态:待整改</view> <view class="flex-between"> <view> <u-button type="primary" size="mini" shape="circle" @click="handleClickRectify(item)"> 整改 </u-button> </view> <view v-if="item.exaCount === 0" class="ml-10"> <u-button type="primary" size="mini" shape="circle" @click="handleClickExtensionApplication(item)"> 延期申请 </u-button> </view> </view> </view> </template> </list> <!-- 列表渲染 end --> </view> </template> <script> import keyWordSearchInput from "@/components/keyWordSearchInput/index.vue"; import List from "@/components/list/list.vue"; import * as HiddenRectificationApi from "../../api/index"; import dayjs from "dayjs"; import { HIDDEN_LEVEL_COlOR, HIDDEN_SOURCE } from "@/utils/constant"; import { hidden_rectification_list } from "@/Mock/responseData.js"; export default { components: { keyWordSearchInput, List }, onShow() { this.resetPagination() }, data() { return { store: this.$store, // 全局store searchForm: { HIDDENDESCR: "", }, isRequestEnd: false, // 请求是否已结束 pagination: { showCount: 10, currentPage: 1, stateConfirm: "0", total: 0, }, list: [], } }, created() { }, mounted() { }, // 页面展示后立刻触发 onShow() { this.getList(); }, computed: { hiddenLevelColor() { return HIDDEN_LEVEL_COlOR; }, hiddenSource() { return HIDDEN_SOURCE; }, }, methods: { /** 处理搜索事件 */ async handleSearch(val) { this.pagination = { ...this.pagination, currentPage: 1, showCount: 10, total: 0, }; await this.getList(val); }, async resetPagination(params) { this.list = []; this.pagination = { showCount: 10, currentPage: 1, stateConfirm: "0", total: 0, }; await this.getList(params); }, getList() { if (this.isRequestEnd) return null; uni.showLoading({ title: "加载中", }); let { USER_ID, CORPINFO_ID, DEPARTMENT_ID } = this.store.state.userInfo; // HiddenRectificationApi.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, // }).then((response) => { // console.log('response :>> ', response); // }) // 虚拟 mock 数据渲染 setTimeout(() => { this.list = hidden_rectification_list; this.pagination.total = 0; 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(); }, /** 整改按钮事件 */ handleClickRectify(ext) { uni.$u.route( '/hiddenManageSubPackages/pages/hidden_rectification/rectification', { HIDDEN_ID: ext.HIDDEN_ID } ) }, /** 处理延期申请按钮事件 */ handleClickExtensionApplication(ext) { uni.$u.route( '/hiddenManageSubPackages/pages/hidden_rectification/delay', { HIDDEN_ID: ext.HIDDEN_ID } ) } } } </script> <style lang="scss" scoped></style>