You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							309 lines
						
					
					
						
							7.5 KiB
						
					
					
				
			
		
		
	
	
							309 lines
						
					
					
						
							7.5 KiB
						
					
					
				| <template> | |
|   <cs-page :selected="3" title="企业档案" isTab> | |
|     <view class="page-container" id="page"> | |
|       <van-search | |
|         :value="queryParams.enterprisesName" | |
|         placeholder="输入企业名称或类型查询" | |
|         @sreach="queryEnterprise" | |
|         @clear="resetQuery('enterpriseName')" | |
|         id="sreach" | |
|       /> | |
|       <van-dropdown-menu safe-area-tab-bar active-color="#17C653"> | |
|         <van-dropdown-item | |
|           :value="queryParams.qy" | |
|           :options="getDropdownOption('qy')" | |
|           @change=" | |
|             v => { | |
|               querySelect(v, 'qy') | |
|             } | |
|           " | |
|         /> | |
|         <van-dropdown-item | |
|           :value="queryParams.hy" | |
|           :options="getDropdownOption('hy')" | |
|           @change=" | |
|             v => { | |
|               querySelect(v, 'hy') | |
|             } | |
|           " | |
|         /> | |
|         <van-dropdown-item | |
|           :value="queryParams.st" | |
|           :options="getDropdownOption('st')" | |
|           @change=" | |
|             v => { | |
|               querySelect(v, 'st') | |
|             } | |
|           " | |
|         /> | |
|         <van-dropdown-item | |
|           :value="queryParams.wr" | |
|           :options="getDropdownOption('wr')" | |
|           @change=" | |
|             v => { | |
|               querySelect(v, 'wr') | |
|             } | |
|           " | |
|         /> | |
|       </van-dropdown-menu> | |
|       <scroll-view | |
|         scroll-y="true" | |
|         :refresher-enabled="true" | |
|         @refresherrefresh="refresherrefresh" | |
|         :refresher-triggered="refresherTriggered" | |
|         @refresherpulling="refresherpulling" | |
|         @scrolltolower="loadMore" | |
|         class="list" | |
|         :style="{ maxHeight: `${listHeight - sreachHeight}px` }" | |
|       > | |
|         <view | |
|           v-for="enterprise in list" | |
|           :key="enterprise.id" | |
|           class="wd-flex wd-items-center enterprise" | |
|           @click="goDetail(enterprise.id)" | |
|         > | |
|           <u-avatar :src="enterprise.files[0].url" shape="square" size="64"></u-avatar> | |
|           <view class="wd-flex wd-flex-col" style="gap: 4px"> | |
|             <text class="wd-font-800 wd-text-15">{{ enterprise.enterprisesName }}</text> | |
|             <view class="wd-flex wd-pb-8px"> | |
|               <u-icon name="map" size="14" color="#17C653"></u-icon> | |
|               <text class="address wd-text-12" style="margin-left: 4px">{{ enterprise.address }}</text> | |
|             </view> | |
|             <view class="tagList"> | |
|               <view class="tag" v-for="(tag, index) in enterprise.tagList" :key="index"> | |
|                 {{ tag }} | |
|               </view> | |
|             </view> | |
|           </view> | |
|           <view | |
|             class="audit" | |
|             v-if="enterprise.audit != 2" | |
|             :style="{ color: enterprise.audit == 1 ? '#F6B100' : '#ea000c', backgroundColor: '#FFF8DD' }" | |
|           > | |
|             {{ $dict.echoDicValue(dictMap.user_audit_type, enterprise.audit) }} | |
|           </view> | |
|         </view> | |
|         <u-loadmore :status="load" marginTop="12" marginBottom="12" /> | |
|       </scroll-view> | |
|     </view> | |
|   </cs-page> | |
| </template> | |
|  | |
| <script> | |
| import { getEnterPriseList } from '@/api/enterprise/index.js' | |
| import { getDictBatchByType, getDeptTree, getTagData } from '@/api/system/dict.js' | |
| export default { | |
|   data() { | |
|     return { | |
|       queryParams: { | |
|         pageSize: 10, | |
|         pageNo: 1, | |
|         qy: '', | |
|         hy: '', | |
|         st: '', | |
|         wr: '', | |
|         enterprisesName: '', | |
|         tagList: '' | |
|       }, | |
|       listHeight: 0, | |
|       sreachHeight: 0, | |
|       refresherTriggered: false, | |
|       list: [], | |
|       load: 'loadmore', | |
|       dictMap: {} | |
|     } | |
|   }, | |
|   async onLoad() { | |
|     await this.getDict() | |
|   }, | |
|   onShow() { | |
|     this.queryEnterprise() | |
|   }, | |
|   onReady() { | |
|     this.getPageHeight() | |
|   }, | |
|   methods: { | |
|     getPageHeight() { | |
|       const query = uni.createSelectorQuery().in(this) | |
|       query | |
|         .select('#sreach') | |
|         .boundingClientRect(data => { | |
|           this.sreachHeight = data.height | |
|         }) | |
|         .exec() | |
|       query | |
|         .select('#page') | |
|         .boundingClientRect(data => { | |
|           this.listHeight = data.height - 35 | |
|         }) | |
|         .exec() | |
|     }, | |
|     async getList() { | |
|       uni.showToast({ | |
|         title: '加载中', | |
|         mask: true, | |
|         icon: 'loading' | |
|       }) | |
|       this.load = 'loading' | |
|       const res = await getEnterPriseList(this.queryParams) | |
|       this.list.push(...res.data.list) | |
|       this.load = 'loadmore' | |
|       if (this.list.length == res.data.total) { | |
|         this.load = 'nomore' | |
|       } | |
|       uni.hideToast() | |
|     }, | |
|     async getDict() { | |
|       const tags = await getTagData(['qy', ' hy', 'st', 'wr'].join(',')) | |
|       const dict = await getDictBatchByType({ type: ['user_audit_type'].join(',') }) | |
|       let tagMap = {} | |
|       tags.data.forEach(t => { | |
|         tagMap[t.tagCode] = t.children | |
|       }) | |
|       this.dictMap = { | |
|         ...tagMap, | |
|         ...dict.data | |
|       } | |
|     }, | |
|     getDropdownOption(key) { | |
|       if (!this.dictMap[key]) return [] | |
|       const keyMap = { | |
|         qy: '区域', | |
|         hy: '行业', | |
|         st: '生态', | |
|         wr: '污染' | |
|       } | |
|       const data = this.dictMap[key].map(d => { | |
|         return { | |
|           value: d.id, | |
|           text: d.tagName | |
|         } | |
|       }) | |
|       data.push({ | |
|         value: '', | |
|         text: keyMap[key] | |
|       }) | |
|       return data | |
|     }, | |
|     querySelect(v, key) { | |
|       this.queryParams[key] = v.detail | |
|       this.queryEnterprise() | |
|     }, | |
|     queryEnterprise() { | |
|       this.queryParams.pageNo = 1 | |
|       this.load = 'loadmore' | |
|       this.list = [] | |
|       this.queryParams.tagList = [this.queryParams.qy, this.queryParams.hy, this.queryParams.st, this.queryParams.wr] | |
|         .filter(i => i != '') | |
|         .join() | |
|       this.getList() | |
|     }, | |
|     loadMore() { | |
|       if (this.load == 'nomore') { | |
|         uni.showToast({ | |
|           title: '没有更多了', | |
|           icon: 'none' | |
|         }) | |
|         return | |
|       } | |
|       this.queryParams.pageNo++ | |
|       this.getList() | |
|     }, | |
|     refresherpulling() { | |
|       const that = this | |
|       if (!this.refresherTriggered) { | |
|         this.refresherTriggered = true | |
|         setTimeout(() => { | |
|           that.refresherTriggered = false | |
|         }, 1000) | |
|       } | |
|     }, | |
|     refresherrefresh() { | |
|       this.resetQuery() | |
|     }, | |
|     async resetQuery() { | |
|       this.queryParams = { | |
|         pageSize: 10, | |
|         pageNo: 1, | |
|         qy: '', | |
|         hy: '', | |
|         st: '', | |
|         wr: '', | |
|         enterprisesName: '', | |
|         tagList: '' | |
|       } | |
|       await this.queryEnterprise() | |
|     }, | |
|     goDetail(id) { | |
|       uni.navigateTo({ | |
|         url: `/sub/enterprise/detail?id=${id}` | |
|       }) | |
|     } | |
|   } | |
| } | |
| </script> | |
|  | |
| <style lang="scss" scoped> | |
| .page-container { | |
|   height: 100%; | |
|   overflow: hidden; | |
| } | |
| .list { | |
|   display: flex; | |
|   flex-flow: column nowrap; | |
|   gap: 12px; | |
|   padding: 0 12px; | |
| } | |
| .enterprise { | |
|   padding: 12px; | |
|   background-color: #fff; | |
|   border-radius: $cs-border-radius; | |
|   gap: 12px; | |
|   margin-top: 12px; | |
|   position: relative; | |
|   overflow: hidden; | |
|   font-size: 12px; | |
|   .address { | |
|     color: $uni-text-color-grey; | |
|   } | |
|   &:active { | |
|     background-color: $cs-color-touch; | |
|   } | |
|   .tagList { | |
|     margin-top: 8px; | |
|     display: flex; | |
|     gap: 4px; | |
|     color: $uni-text-color-grey; | |
|     display: flex; | |
|     .tag { | |
|       font-size: 12px; | |
|       display: flex; | |
|       padding: 2px 6px; | |
|       justify-content: center; | |
|       align-items: center; | |
|       border-radius: 2px; | |
|       background: #f9f9f9; | |
|     } | |
|   } | |
|   .audit { | |
|     position: absolute; | |
|     right: -19px; | |
|     top: 6px; | |
|     transform: rotateZ(45deg); | |
|     transform-origin: 50% 50%; | |
|     padding: 4px 20px; | |
|     font-size: 12px; | |
|     text-align: center; | |
|   } | |
| } | |
| ::v-deep .van-dropdown-menu { | |
|   box-shadow: none; | |
|   height: 35px; | |
|   font-size: 13px; | |
|   border-bottom: 1px solid #f1f1f4; | |
| } | |
|  | |
| ::v-deep .u-list { | |
|   padding: 12px; | |
| } | |
| </style>
 | |
| 
 |