<template name="apps"> <view> <!-- <swiper class="swiper" circular :indicator-dots="true" :autoplay="true" :interval="3000" :duration="800"> <swiper-item> <image src="../../static/img/titlebg.jpg" class="swiper-item"></image> </swiper-item> <swiper-item> <image src="../../static/img/titlebg.jpg" class="swiper-item"></image> </swiper-item> </swiper> --> <swiper class="swiper" circular :indicator-dots="true" :autoplay="true" :interval="3000" :duration="800"> <swiper-item v-for="(item, index) in picture" :key="index"> <image :src="item" class="swiper-item"></image> </swiper-item> </swiper> <view class="line-box"> <view class="center-box"> <view class="center-left-box"> <view class="btn-box-1 mart-t"> {{pageInfo.enterprisec}} </view> <view class="btn-box-2 mart-t" @click="totongxunlu22"> {{pageInfo.todayc}} </view> <view class="btn-box-3 mart-t" @click="totongxunlu23"> {{pageInfo.samemonthc}} </view> <view class="btn-box-4 mart-t"> {{pageInfo.industryc}} </view> </view> <view class="center-left-box"> <view class="btn-box-text mart-t"> 平台企业数 </view> <view class="btn-box-text mart-t"> 当日活跃数 </view> <view class="btn-box-text mart-t"> 当月活跃数 </view> <view class="btn-box-text mart-t"> 细分行业数 </view> </view> </view> <view class="center-box"> <view class="kuai-text">快捷入口</view> <view class="center-left-box"> <view class="btn-Imbox" @click="totongxunlu"> <image class="center-img" src="/static/img/icon1.png"></image> <p>重点园区</p> </view> <view class="btn-Imbox" @click="totongxunlu2"> <image class="center-img" src="/static/img/icon2.png"></image> <p>产业图谱</p> </view> <view class="btn-Imbox" @click="totongxunlu6"> <image class="center-img" src="/static/img/icon4.png"></image> <p>产品分布</p> </view> </view> <view class="center-left-box"> <view class="btn-Imbox" @click="totongxunlu3"> <image class="center-img" src="/static/img/icon3.png"></image> <p>链主企业</p> </view> <view class="btn-Imbox" @click="totongxunlu4"> <image class="center-img" src="/static/img/icon8.png"></image> <p>产品供需</p> </view> <view class="btn-Imbox" @click="totongxunlu5"> <image class="center-img" src="/static/img/icon5.png"></image> <p>我的发布</p> </view> <!-- <view class="btn-Imbox" v-if="isLogin!=null" @click="outlogin"> <image class="center-img" src="/static/img/icon7.png"></image> <p>退出登录</p> </view> <view class="btn-Imbox" v-if="isLogin==null" @click="outlogin"> <image class="center-img" src="/static/img/icon6.png"></image> <p>立即登录</p> </view> --> </view> </view> <!-- <view :style="[{top:CustomBar + 'px'}]"> <view class="search-box"> <view class="search-box1"> <view class="choose-box"> <input type="text" placeholder="输入或选择属地" v-model="searchForm.des1" confirm-type="search" style="padding-left: 28rpx;" ></input> <jp-picker class="choose-boxp" v-model="searchForm.des1" rangeKey="label" rangeValue="value" :range="parkList2" > </jp-picker> </view> <view class="choose-box"> <input type="text" placeholder="输入或选择行业" v-model="searchForm.industry" confirm-type="search" style="padding-left: 28rpx;" ></input> <jp-picker class="choose-boxp" v-model="searchForm.industry" rangeKey="label" rangeValue="value" :range="parkList" > </jp-picker> </view> </view> <view class="choose-box2" style="margin-top: 20rpx;"> <view class="choose-box3"> <view style="width: 300rpx;display: flex;align-items: center;color: #666666;font-size: 33rpx;"> 产业链环节: </view> <DoublePicker :column1Label="''" :column2Label="''" :column1Data="parkList3" :column2Data="parkList4" v-model="ddd1" @update:column2Data="updateCities" /> </view> </view> <view class="choose-box2" style="margin-top: 20rpx;"> <view style="width: 520rpx;"> <input type="text" placeholder="输入关键词产品或企业名称" v-model="searchForm.name" confirm-type="search" ></input> </view> <text style="padding-left: 40rpx;flex: 1;" class="cuIcon-search color-white" @click="doSearch"></text> </view> </view> <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" :up="upOption" @up="upCallback"> <view class="cu-item" :class="modalName=='move-box-'+ index?'move-cur':''" v-for="(item, index) in dataList" :key="index" @touchstart="ListTouchStart" @touchmove="ListTouchMove" @touchend="ListTouchEnd" :data-target="'move-box-' + index"> <view class="item-box" @click="gotoBuildInfo(item.id)"> <view class="item-title"> <view> {{item.name}} </view> </view> <view class="item-line"> <view v-if="item.bz3!=''&&item.bz3!=undefined" class="item-name">{{item.bz1}}、{{item.bz3}}</view> <view v-if="item.bz3==''||item.bz3==undefined" class="item-name">{{item.bz1}}</view> </view> <view class="item-line"> <view class="item-name2">{{item.industry}}</view> <view class="item-name3">{{item.des1}}</view> </view> </view> </view> </mescroll-body> <uni-fab :pattern=" { color: '#7A7E83', backgroundColor: '#fff', selectedColor: '#007AFF', buttonColor: '#007AFF' }" horizontal="right" vertical="bottom" @fabClick="add" v-if="stype == 5"></uni-fab> </view> --> <view @click="outlogin" class="fixed-bottom-right" v-if="isLogin!=null"> <image class="center-img2" src="/static/img/icon_logout.png"></image> </view> </view> </view> </template> <script> import loginService from "@/api/auth/loginService"; import uniFab from '@/components/uni-fab/uni-fab.vue'; import DoublePicker from '@/components/DoublePicker/DoublePicker.vue' import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js"; import MescrollMoreItemMixin from "@/components/mescroll-uni/mixins/mescroll-more-item.js"; import {mapActions} from 'vuex' export default { mixins: [MescrollMixin, MescrollMoreItemMixin], // 使用mixin (在main.js注册全局组件) name: "apps", components: { uniFab, DoublePicker }, data() { return { isLogin:"", pageInfo: {}, loginid:"", stype: "", // 企业 => 3 楼宇 => 2 园区 => 1 zfadmin => 4 admin=> 5 searchForm: { des1:"", industry:"", name:"", }, picture:["https://miniapp.huidutech.com.cn/yd_qycpfbH5/bg1.jpg", "https://miniapp.huidutech.com.cn/yd_qycpfbH5/bg2.jpg", "https://miniapp.huidutech.com.cn/yd_qycpfbH5/bg3.jpg", "https://miniapp.huidutech.com.cn/yd_qycpfbH5/bg4.jpg"], curWord: "", //当前搜索关键词 dataList: [], // 数据列表 modalName: null, tablePage: { total: 0, currentPage: 1, pageSize: 10, orders: [] }, loading: false, parkId: '', parkList: [], parkList2: [], parkList3: [], parkList4: [], ddd1:"" , }; }, onLoad(query) { if(query!=undefined&&query!=null&&query!=''){ if(query.loginid!=undefined){ this.loginid=query.loginid this.autoLogin(); } } }, onShow() { this.isLogin=this.$auth.checkisLogin(); }, created() { this.getPageInfo(); this.getParkList() this.getParkList2() this.getParkList3() }, methods: { ...mapActions(['refreshUserInfo']), //选择产业链环节 getParkList3() { loginService.getIndustryChainList({ }).then(({ data }) => { // this.parkList3 = data.map((item) => { // return { // label: item.bz2, // value: item.bz2 // } // }); this.parkList3=[{label: '上游',value: '上游'},{label: '中游',value: '中游'},{label: '下游',value: '下游'}] this.parkList4 = data .map((item) => { const match = item.bz2.match(/\((.*?)\)/); // 匹配括号内的内容 if (match) { return { label: match[1], // 括号内的内容 value: match[1] // 括号内的内容 }; } return null; // 如果没有括号,返回 null }) .filter((item) => item !== null) // 过滤掉 null 值 .reduce((acc, current) => { // 使用 Set 去重 const existingItem = acc.find((item) => item.value === current.value); if (!existingItem) { acc.push(current); } return acc; }, []); this.parkList3.unshift({ label: "全部", value: "" }); this.parkList4.unshift({ label: "全部", value: "" }); }).catch(e => { console.log(e) }) }, //选择属地 getParkList2() { loginService.getAreaList({ }).then(({ data }) => { this.parkList2 = data.map((item) => { return { label: item.des1, value: item.des1 } }) this.parkList2.unshift({ label: "盐都区", value: "" }); }).catch(e => { console.log(e) }) }, //选择行业 getParkList() { loginService.getHyList({ }).then(({ data }) => { this.parkList = data.map((item) => { return { label: item.industry, value: item.industry } }) this.parkList.unshift({ label: "全部", value: "" }); }).catch(e => { console.log(e) }) }, /*获取数据列表 */ upCallback(page) { this.loading = true loginService.comlist({ current: page.num, size: page.size, name: this.curWord, des1: this.parkId, orders: [{ column: 'a.create_date', asc: false }], ...this.searchForm }).then(({ data }) => { let curPageData = data.records this.mescroll.endBySize(curPageData.length, data.total); //如果是第一页需手动制空列表 if (page.num == 1) this.dataList = []; //追加新数据 this.dataList = this.dataList.concat(curPageData); }).catch(e => { //联网失败, 结束加载 this.mescroll.endErr(); }) }, gotoBuildInfo(id) { // uni.navigateTo({ // url: `/pages/comEdit/comEdit?id=${id}&ischeck=1` // }) window.location.href=`/yd_qycpfbH5/#/pages/comEdit/comEdit?id=${id}&ischeck=1` }, updateCities(newCities) { this.cities = newCities; }, // 搜索 doSearch() { if(this.ddd1.column2!=''&&this.ddd1!=''){ this.searchForm.bz2=this.ddd1.column1+'('+this.ddd1.column2+')'; }else if(this.ddd1!=''){ this.searchForm.bz2=this.ddd1.column1; } this.dataList = []; // 先清空列表,显示加载进度 this.mescroll.resetUpScroll(); }, totongxunlu(){ uni.navigateTo({ url: '/pages/comList/comList' }) }, totongxunlu2(){ uni.navigateTo({ url: '/pages/buildList/buildList2?w=1' }) }, totongxunlu3(){ uni.navigateTo({ url: '/pages/buildList/buildList?w=2' }) }, totongxunlu6(){ uni.navigateTo({ url: '/pages/buildList/buildList?w=1' }) }, totongxunlu4(){ uni.navigateTo({ url: '/pages/product/productList?w=1' }) }, totongxunlu5(){ if(this.isLogin==null){ uni.showModal({ title: '您还未登录,现在去登录?', showCancel: true, success: (res) => { if (res.confirm) { uni.showLoading() uni.reLaunch({ url: '/pages/login/login' }) } } }); }else{ uni.navigateTo({ url: '/pages/product/productList?w=2' }) } }, totongxunlu22(){ uni.navigateTo({ url: '/pages/buildList/buildList3?w=1' }) }, totongxunlu23(){ uni.navigateTo({ url: '/pages/buildList/buildList3?w=2' }) }, getPageInfo() { loginService.InfoStatistics({}).then(({ data }) => { this.pageInfo = data; //103改为 14/103 //this.pageInfo.industryc="14/"+this.pageInfo.industryc; }); }, autoLogin(){ console.log("登录id"+this.loginid); loginService.loginid( this.loginid).then(({data}) => { this.$store.commit('SET_TOKEN',data.token); this.refreshUserInfo(); }).catch(e => { console.error(e) }) }, getRole() { let userInfo = uni.getStorageSync('WMS-userinfo') var officeId = userInfo.officeDTO.id; var roleIds = userInfo.roleIds; if (roleIds.indexOf("17bac1f980264e3e8193bc965538e2c6") != -1) { //// 管理员 this.stype = 5 uni.setStorageSync('stype', this.stype); } else if (roleIds.indexOf("ade960e8f02544998b07397304c059c1") != -1) { // 政府管理员 this.stype = 4 uni.setStorageSync('stype', this.stype); } else { console.log('==================>这里走了么','================>存一个stape') loginService .getOtherIdByOffceid({ officeid: officeId, }) .then(({ data }) => { console.log(data, "====================>getOtherIdByOffceid"); this.stype = data.stype; uni.setStorageSync('stype', this.stype); }); } }, outloginset(){ loginService.logout().then(({ data }) => { this.$store.commit('logout'); uni.clearStorage(); }) this.$store.commit('logout'); uni.clearStorage(); this.isLogin=this.$auth.checkisLogin(); uni.hideLoading() }, outlogin() { uni.showModal({ title: '您确认退出么?', showCancel: true, success: (res) => { if (res.confirm) { uni.showLoading() this.outloginset(); // uni.reLaunch({ // url: '/pages/login/login' // }) } } }); }, tces() { uni.navigateTo({ url: '/pages/index/AudioToWord' }) }, // ListTouch触摸开始 ListTouchStart(e) { this.listTouchStart = e.touches[0].pageX }, // ListTouch计算方向 ListTouchMove(e) { this.listTouchDirection = e.touches[0].pageX - this.listTouchStart > -60 ? 'right' : 'left' }, // ListTouch计算滚动 ListTouchEnd(e) { if (this.listTouchDirection == 'left') { this.modalName = e.currentTarget.dataset.target } else { this.modalName = null } this.listTouchDirection = null } } } </script> <style> .page { height: 100vh; } .line-box { padding-left: 20rpx; padding-right: 20rpx; margin-top: 20rpx; } .mart-t { margin-top: 30rpx; } .center-box{ margin-top: 20rpx; width: 100%; border-radius: 25rpx; border-radius: 25rpx; background: #fff; box-shadow: 0px 8px 16px 2px rgba(101, 101, 101, 0.2); padding-bottom: 30rpx; display: flex; flex-wrap: wrap; } .center-left-box { width: 100%; padding-bottom: 30rpx; display: flex; flex-wrap: wrap; } .btn-box-text { flex:1; height: 20rpx; text-align: center; color: #000000; font-size: 14px; font-weight: 700; } .btn-box-1 { flex:1; height: 30rpx; text-align: center; color: #36A7F3; font-size: x-large; font-weight: 700; } .btn-box-2 { flex:1; height: 30rpx; text-align: center; color:#F3365A; font-size: x-large; font-weight: 700; } .btn-box-3 { flex:1; height: 30rpx; text-align: center; color:#15D578; font-size: x-large; font-weight: 700; } .btn-box-4 { flex:1; height: 30rpx; text-align: center; color:#F1A31B; font-size: x-large; font-weight: 700; } .btn-Imbox { flex:1; height: 150rpx; padding-top: 8rpx; text-align: center; display: flex; flex-direction: column; justify-content: center; /* 子元素内部内容竖向居中 */ align-items: center; /* 子元素内部内容水平居中 */ text-align: center; /* 文字居中 */ } .btn-Imbox p { font-size: 14px; /* 文字大小,可根据需要调整 */ margin: 0; /* 去掉默认的外边距 */ font-weight: 700; } .center-img{ width: 90rpx; height: 90rpx; margin-bottom: 10rpx; text-align: center; } .center-img2{ width: 70rpx; height: 70rpx; margin-top: 10rpx; margin-bottom: 20rpx; text-align: center; } .kuai-text{ color: #000000; font-weight: 900; font-size: 34rpx; padding-top: 20rpx; padding-left: 20rpx; } .btn-box-5 { width: 337rpx; height: 200rpx; background-image: url('../../static/img/btn3.png'); background-size: 100% 100%; } .btn-box-6 { width: 337rpx; height: 200rpx; background-image: url('../../static/img/btn6.png'); background-size: 100% 100%; } .h-200 { height: 200rpx; } .swiper { width: 750rpx; height: 310rpx; } .swiper-item { width: 750rpx; height: 310rpx; background-color: aliceblue; } .font-size-35 { font-size: 35px !important; } .img-size { width: 80rpx; height: 80rpx; } .content-box { width: 437rpx; height: 200rpx; } .my-app .padding-sm { padding: 6px; } .grid .padding-sm .bg-white { box-shadow: 0 1px 4px #f9f9f9, 1px 1px 40px rgba(0, 0, 0, .06); } .bg-blue { background: #fff; color: #0081ff !important; } .text-white, .line-white, .lines-white { color: #0081ff !important; } .cu-bar .search-form { background-color: white; } .item-box{ width: 710rpx; background: #FFFFFF; box-shadow: 0px 1px 3px 0px rgba(9,2,4,0.1); border-radius: 10px; padding-top: 20rpx; padding-left: 38rpx; padding-right: 10rpx; margin-top: 20rpx; } .item-title{ position: relative; display: flex; justify-content: space-between; font-size: 30rpx; color: #010101; font-weight: bold; align-items: center; } .item-line{ display: flex; height: 48rpx; margin-top: 20rpx; } .item-line2{ height: 48rpx; margin-top: 20rpx; } .subtitle{ color: #E5880E; } .item-name{ margin-top: 5rpx; font-size: 29rpx; color: #666666; } .item-name2{ font-size: 29rpx; color: #676D99; } .item-name3{ display: flex; width: 100%; padding-right: 30rpx; flex: 1; justify-content: flex-end; font-size: 29rpx; color: #676D99; } .item-content{ color: #1497EF; font-size: 30rpx; } .btn-box{ display: flex; } .line-zs{ width: 2rpx; height: 30rpx; background: #36A7F3; } .edit-botton{ width: 100rpx; height: 48rpx; line-height: 48rpx; color: #fff; font-size: 28rpx; margin-right: 20rpx; border-radius: 10rpx; background: #5A9EE9; text-align: center; } .del-botton{ width: 100rpx; height: 48rpx; line-height: 48rpx; color: #fff; font-size: 28rpx; margin-right: 20rpx; border-radius: 10rpx; background: #F27C85; text-align: center; } .color-white{ color: #808080; font-size: 40rpx; line-height: 60rpx; } .search-box{ padding-left: 20rpx; padding-right: 20rpx; padding-top: 20rpx; margin-top: 20rpx; width: 100%; border-radius: 25rpx; border-radius: 25rpx; background: #fff; box-shadow: 0px 8px 16px 2px rgba(101, 101, 101, 0.2); padding-bottom: 30rpx; display: flex; flex-wrap: wrap; } .search-box1{ display: flex; } .input-box{ background: #fff; height: 65rpx; width: 640rpx; display: flex; align-items: center; border-radius: 30rpx; padding-left: 30rpx; margin-right: 20rpx; } .input-boxinput{ height: 75rpx; font-size: 15rpx; } .choose-box{ background: #fff; width: 325rpx; border-radius: 23rpx; height: 70rpx; display: flex; align-items: center; justify-content: center; margin-right: 20rpx; border: 1rpx solid #808080; } .choose-box2{ background: #fff; width: 100%; border-radius: 23rpx; height: 70rpx; display: flex; padding-left: 29rpx; align-items: center; border: 1rpx solid #808080; } .choose-box3{ display: flex; } .choose-boxp{ font-size: 32rpx; width: 80rpx; } .fixed-bottom-right { padding: 20rpx; position: fixed; bottom: 20px; /* 距离底部的距离 */ right: 20px; /* 距离右侧的距离 */ } </style>