<template> <view class="consumableList"> <view class="head"> <uni-search-bar v-model="dataInfo.keyWord" :placeholder="placeHolder" bgColor="#F8F8F8" @input="search" cancelButton="none" focus :radius="18" /> </view> <view class="body" v-if="dataInfo.list.length"> <view class="body_item ellipsis" v-for="data in dataInfo.list" :key="data.id" @click="clickItem(data)"> {{data.dept}} </view> </view> <view class="zanwu" v-else> <text class="newicon newicon-zanwu"></text> </view> <view class="foot_common_btns"> <button @click="goBack" type="default" class="primaryButton btn">返回</button> </view> </view> </template> <script setup> import { debounce } from 'lodash-es' import { ref, reactive} from 'vue' import { onLoad, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app' import { api_department, api_incidentDetail, api_addSummaryDoc } from "@/http/api.js" import { defaultColor } from '@/static/js/theme.js' import { useSetTitle } from '@/share/useSetTitle.js' import { useLoginUserStore } from '@/stores/loginUser' import { useIncidentBuildStore } from '@/stores/incidentBuild' import { useGoBack } from '@/share/useGoBack.js' useSetTitle(); const loginUserStore = useLoginUserStore(); const incidentBuildStore = useIncidentBuildStore(); const { goBack } = useGoBack(); // 主题颜色 const primaryColor = ref(defaultColor) // placeHolder const placeHolder = ref(''); const entranceType = ref(null); // 院区id const branchId = ref(null); // 数据 const dataInfo = reactive({ list: [],//工单列表 idx: 0,//页码 hasMore: true,//是否有更多数据 incidentData: {},//事件对象 keyWord: '',//搜索的关键词 }) // 搜索 const search = debounce(getList.bind(null, 0), 500); // 获取列表信息 function getList(idx){ if(dataInfo.keyWord.trim() === ''){ dataInfo.list = []; uni.stopPullDownRefresh(); return; } uni.showLoading({ title: "加载中", mask: true, }); dataInfo.idx = idx === undefined ? dataInfo.idx : idx; if(dataInfo.idx === 0){ dataInfo.list = []; } let postData = { idx: dataInfo.idx, sum: 20, department: { hospital:{ id:'' }, // branch: dataInfo.incidentData.branch, // searchType: 'quickStart', // selectType: 'pinyin_qs', dept: dataInfo.keyWord, } } if(entranceType.value=='repair'){ if(branchId.value){ postData.department.hospital.id = branchId.value } }else{ if(loginUserStore.loginUser.user.currentHospital.parent){ postData.department.hospital.id = loginUserStore.loginUser.user.currentHospital.parent.id }else{ postData.department.hospital.id = loginUserStore.loginUser.user.currentHospital.id } } api_department(postData).then(res => { uni.hideLoading(); uni.stopPullDownRefresh(); if(res.status == 200){ let list = res.list || []; if(list.length){ dataInfo.hasMore = true; dataInfo.list = dataInfo.idx === 0 ? list : dataInfo.list.concat(list); }else{ dataInfo.hasMore = false; } }else{ uni.showToast({ icon: 'none', title: res.msg || '请求数据失败!' }); } }) } // 点击 function clickItem(data){ if(entranceType.value=='repair'){ let query = { department:null, departmentName:null, branch:branchId.value } let rapidRepNextData = uni.getStorageSync('rapidRepNext') if(rapidRepNextData){ let parseData = JSON.parse(rapidRepNextData) query.department = data.id//报修科室 query.departmentName = data.dept//报修科室 let repairData = { ...parseData, ...query } uni.setStorageSync('rapidRepNext',JSON.stringify(repairData)) }else{ query.department = data.id//报修科室 query.departmentName = data.dept//报修科室 uni.setStorageSync('rapidRepNext',JSON.stringify(query)) } uni.navigateTo({ url: '/pages/repair/rapidRepNext' }) }else{ dataInfo.incidentData.department = data; incidentBuildStore.setIncidentBuildData(dataInfo.incidentData, incidentBuildStore.incidentBuild.type, incidentBuildStore.incidentBuild.sign); uni.navigateTo({ url: '/pages/buildIncident/buildIncident' }) } } onLoad((option) => { if(option.type){ entranceType.value = option.type branchId.value = option.branchId } if(incidentBuildStore.incidentBuild.data){ dataInfo.incidentData = incidentBuildStore.incidentBuild.data; } if(incidentBuildStore.incidentBuild.type === 'buildIncident' && incidentBuildStore.incidentBuild.sign === 'department'){ placeHolder.value = '请搜索报修科室' } getList(0); }) onPullDownRefresh(() => { getList(0) }) onReachBottom(() => { dataInfo.idx += 1; if (dataInfo.hasMore) { getList(); // 当触底时加载更多数据 } }) </script> <style lang="scss" scoped> .consumableList{ display: flex; flex-direction: column; justify-content: space-between; .head{ height: 88rpx; display: flex; align-items: center; justify-content: center; padding: 0 24rpx; position: fixed; z-index: 99; width: 100%; box-sizing: border-box; background: linear-gradient( 90deg, #58CF66 0%, #DDE9FC 100%); } .body{ margin-bottom: 140rpx; margin-top: 88rpx; font-size: 26rpx; .body_item{ border-bottom: 1rpx solid #DEDEDE; padding: 24rpx; } } .zanwu{ margin-bottom: 140rpx; margin-top: 88rpx; display: flex; justify-content: center; .newicon-zanwu{ font-size: 256rpx; color: #D6D6D6; margin-top: 140rpx; } } .foot_common_btns{ position: fixed; left: 0; bottom: 0; background-color: #fff; } } </style>