This commit is contained in:
cclu 2024-05-28 20:14:02 +08:00
parent 08367973f5
commit e36ee4f57c
45 changed files with 992 additions and 2599 deletions

View File

@ -2,6 +2,7 @@ import Vue from 'vue'
import App from './App'
import Vuex from 'vuex'
import moment from "moment";
import Store from './store/store'
import request from './util/index.js'
import utils from './common/utils.js'
@ -13,6 +14,7 @@ Vue.config.productionTip = false
Vue.prototype.$store = Store
Vue.prototype.$util = utils
Vue.prototype.$request = request
Vue.prototype.$moment = moment
Vue.prototype.$eventHub = new Vue()

View File

@ -4,17 +4,16 @@
<!-- menu.bottom + 314 + 'px'-->
<view class="earlyTopBg"></view>
<view class="headerBox" :style="{top:menu.top + 'px',height:menu.height+'px'}">
<view class="backIconBox">
<view class="backIconBox" @click="handleBack">
<image class="backIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/navigation-left.svg"/>
</view>
<div class="picker" @click="handleChangeService">
<div class="picker">
<div class="selectService" >
<image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image>
<view class="select" style="margin-left: 16rpx">
<view class="content">
<view class="uni-input">{{serviceInfo.SERVERPART_NAME?serviceInfo.SERVERPART_NAME:''}}</view>
<p class="area">{{serviceInfo.SPREGIONTYPE_NAME?serviceInfo.SPREGIONTYPE_NAME:''}}</p>
<text class="noticeText" v-if="serviceInfo.SERVERPART_NAME==='安徽驿达'">选择您要看的服务区</text>
<view class="uni-input">{{res.ServerpartName?res.ServerpartName:''}}</view>
<p class="area">{{res.SPRegionTypeName?res.SPRegionTypeName:''}}</p>
<image class="rightArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
</view>
</view>
@ -25,70 +24,70 @@
<view class="revenueBox" :style="{top: menu.bottom + 19 +'px' }">
<view class="box">
<view class="typeBox">
<image class="bg" src="/static/images/warning/detailTopBg1.png"/>
<image class="bg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/detailTopBg1.png"/>
<view class="typeBoxTop">
<text class="monthText">2</text>
<text class="monthText">{{date || ''}}</text>
<text class="title">对客销售</text>
<text class="unit">/万元</text>
</view>
<view class="typeBoxContent">
<view style="width: 40%;display: inline-block">
<view class="valueItem">
<text class="valueAdd">+14.91%</text>
<text :class="res.RevenueINC.increaseRate>0?'valueAdd':res.RevenueINC.increaseRate<0?'valueGreen':''">{{ res.RevenueINC.increaseRate?`${res.RevenueINC.increaseRate}%`:'-' }}</text>
<text class="label">同比去年</text>
</view>
</view>
<view style="width: 30%;display: inline-block">
<view class="valueItem">
<text class="value">13,268.97</text>
<text class="value">{{res.RevenueINC.curYearData?$util.getMoney(res.RevenueINC.curYearData/10000):'-'}}</text>
<text class="label">2024</text>
</view>
</view>
<view style="width: 30%;display: inline-block">
<view class="valueItem">
<text class="value">11,546.32</text>
<text class="value">{{res.RevenueINC.lYearData?$util.getMoney(res.RevenueINC.lYearData/10000):'-'}}</text>
<text class="label">2023</text>
</view>
</view>
</view>
<view class="addBox">
<text class="label">增长</text>
<text class="addValue">+1722.65</text>
<text :class="res.RevenueINC.increaseData<0?'addGreenValue':res.RevenueINC.increaseData>0?'addValue':''">{{res.RevenueINC.increaseData>0?`+${$util.getMoney(res.RevenueINC.increaseData/10000)}`:res.RevenueINC.increaseData<0?`${$util.getMoney(res.RevenueINC.increaseData/10000)}`:''}}</text>
</view>
</view>
<view class="line"></view>
<view class="typeBox">
<image class="bg" src="/static/images/warning/detailTopBg2.png"/>
<image class="bg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/detailTopBg2.png"/>
<view class="typeBoxTop">
<text class="monthText">2</text>
<text class="monthText">{{date || ''}}</text>
<text class="title">入区车流</text>
<text class="unit">/万辆</text>
</view>
<view class="typeBoxContent">
<view style="width: 40%;display: inline-block">
<view class="valueItem">
<text class="valueAdd">+14.91%</text>
<text :class="res.BayonetINC.increaseRate>0?'valueAdd':res.BayonetINC.increaseRate<0?'valueGreen':''">{{ res.BayonetINC.increaseRate?res.BayonetINC.increaseRate>0?`+${res.BayonetINC.increaseRate}%`:res.BayonetINC.increaseRate<0?`${res.BayonetINC.increaseRate}%`:'0':'-' }}</text>
<text class="label">同比去年</text>
</view>
</view>
<view style="width: 30%;display: inline-block">
<view class="valueItem">
<text class="value">13,268.97</text>
<text class="value">{{res.BayonetINC.curYearData?$util.getMoney(res.BayonetINC.curYearData/10000):'-'}}</text>
<text class="label">2024</text>
</view>
</view>
<view style="width: 30%;display: inline-block">
<view class="valueItem">
<text class="value">11,546.32</text>
<text class="value">{{res.BayonetINC.lYearData?$util.getMoney(res.BayonetINC.lYearData/10000):'-'}}</text>
<text class="label">2023</text>
</view>
</view>
</view>
<view class="addBox">
<text class="label">增长</text>
<text class="addValue">+1722.65</text>
<text :class="res.BayonetINC.increaseData<0?'addGreenValue':res.BayonetINC.increaseData>0?'addValue':''">{{res.BayonetINC.increaseData>0?`+${$util.getMoney(res.BayonetINC.increaseData/10000)}`:res.BayonetINC.increaseData<0?`${$util.getMoney(res.BayonetINC.increaseData/10000)}`:''}}</text>
</view>
</view>
</view>
@ -96,7 +95,7 @@
</view>
<view class="detailContentBox" :style="{height: `calc(100vh - ${menu.bottom}px - 628rpx)`}">
<view class="contentTop">
<image class="topIcon" src=""/>
<image class="topIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/shopIcon.png"/>
<text class="topTitle">商家数据</text>
</view>
<view class="contentSort">
@ -144,38 +143,41 @@
</view>
<view class="listBox">
<view class="listItem">
<view class="listItem" v-for="(item,index) in res.ShopINCList" :key="index">
<view class="listItemTop">
<view class="listItemLeft">
<view class="logoBox">
<image class="logo" src=""/>
<image class="logo" :src="item.Brand_ICO"/>
</view>
<view class="titleBox">
<text class="itemTitle">百拉基</text>
<text class="itemTitle">{{item.ServerpartShopName}}</text>
<view class="itemTypeBox">
<text class="mode" style="margin-right: 8rpx">固定租金</text>
<text class="type">营收回款</text>
<text class="mode" style="margin-right: 8rpx">{{ item.SettlementModes }}</text>
<text class="type">{{ businessTypeObj[item.BusinessType ] }}</text>
</view>
</view>
</view>
<view class="listItemRight">
<image class="warningIcon" src="/static/images/warning/warningIcon.png"/>
<image class="warningIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/warningIcon.png"/>
</view>
</view>
<view class="listItemBottom" style="margin-bottom: 16rpx;margin-top: 24rpx">
<view class="bottomValue name" style="width: 56rpx">营收</view>
<view class="bottomValue value" style="width: 124rpx">31.94</view>
<view class="bottomValue value" style="width: 124rpx">23.65</view>
<view class="bottomValue value" style="width: 84rpx">+8.31</view>
<view class="bottomValue add" style="width: 124rpx">+24.23%</view>
<view class="bottomValue value" style="width: 124rpx">{{item.RevenueINC.lYearData?$util.getMoney(item.RevenueINC.lYearData/10000):'-'}}</view>
<view class="bottomValue value" style="width: 124rpx">{{item.RevenueINC.curYearData?$util.getMoney(item.RevenueINC.curYearData/10000):'-'}}</view>
<view class="bottomValue value" style="width: 84rpx">{{item.RevenueINC.increaseData?$util.getMoney(item.RevenueINC.increaseData/10000):'-'}}</view>
<view :class="item.RevenueINC.increaseRate<0?'bottomValue greenAdd':item.RevenueINC.increaseRate>0?'bottomValue add':''" style="width: 124rpx">{{item.RevenueINC.increaseRate?
item.RevenueINC.increaseRate>0?`+${item.RevenueINC.increaseRate}%`:
item.RevenueINC.increaseRate<0?`${item.RevenueINC.increaseRate}%`
:'':''}}</view>
</view>
<view class="listItemBottom">
<view class="bottomValue name" style="width: 56rpx">车流</view>
<view class="bottomValue value" style="width: 124rpx">31.94</view>
<view class="bottomValue value" style="width: 124rpx">23.65</view>
<view class="bottomValue value" style="width: 84rpx">+8.31</view>
<view class="bottomValue add" style="width: 124rpx">+24.23%</view>
<view class="bottomValue value" style="width: 124rpx">{{res.BayonetINC.lYearData?$util.getMoney(res.BayonetINC.lYearData/10000):'-'}}</view>
<view class="bottomValue value" style="width: 124rpx">{{res.BayonetINC.curYearData?$util.getMoney(res.BayonetINC.curYearData/10000):'-'}}</view>
<view class="bottomValue value" style="width: 84rpx">{{res.BayonetINC.increaseData?$util.getMoney(res.BayonetINC.increaseData/10000):'-'}}</view>
<view :class="res.BayonetINC.increaseRate<0?'bottomValue greenAdd':res.BayonetINC.increaseRate>0?'bottomValue add':''" style="width: 124rpx">{{res.BayonetINC.increaseRate?res.BayonetINC.increaseRate>0?`+${res.BayonetINC.increaseRate}%`:res.BayonetINC.increaseRate<0?`${res.BayonetINC.increaseRate}%`:'':''}}</view>
</view>
</view>
</view>
@ -189,6 +191,14 @@
return {
menu:{},
serviceInfo:{},//
res:{},//
businessTypeObj:{
1000: "合作经营",
2000: "固定租金",
3000: "保底采购",
4000: "业主自营",
},
date: '',//
}
},
onLoad(query){
@ -196,7 +206,23 @@
this.menu = uni.getMenuButtonBoundingClientRect()
let seat = uni.getStorageSync('currentService')
this.serviceInfo = seat
console.log('query',query)
if (query.obj){
this.res = JSON.parse(query.obj)
}
if (query.date){
this.date = query.date
}
console.log('this.res',this.res)
},
methods:{
//
handleBack(){
uni.navigateBack({
delta: 1
})
},
}
}
</script>
@ -364,6 +390,15 @@
text-align: left;
font-style: normal;
}
.valueGreen{
font-family: DINAlternate, DINAlternate;
font-weight: bold;
font-size: 46rpx;
color: #127E5B;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.label{
font-family: PingFangSC, PingFang SC;
font-weight: 400;
@ -405,6 +440,16 @@
font-style: normal;
margin-left: 8rpx;
}
.addGreenValue{
font-family: DINAlternate, DINAlternate;
font-weight: bold;
font-size: 28rpx;
color: #127E5B;
line-height: 32rpx;
text-align: left;
font-style: normal;
margin-left: 8rpx;
}
}
}
@ -497,6 +542,7 @@
align-items: center;
justify-content: space-between;
.listItemLeft{
width: 80%;
display: flex;
align-items: center;
.logoBox{
@ -511,6 +557,7 @@
}
.titleBox{
width: calc(100% - 96rpx);
.itemTitle{
font-family: PingFangSC, PingFang SC;
font-weight: 600;
@ -519,6 +566,11 @@
line-height: 40rpx;
text-align: left;
font-style: normal;
display: inline-block;
width: 60%;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.itemTypeBox{
.mode{
@ -590,6 +642,15 @@
text-align: left;
font-style: normal;
}
.greenAdd{
font-family: DINAlternate, DINAlternate;
font-weight: bold;
font-size: 28rpx;
color: #127E5B;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
}
}
}

View File

@ -3,13 +3,14 @@
<view class="earlyTop">
<view class="earlyTopBg"></view>
<view class="headerBox" :style="{top:menu.top + 'px',height:menu.height+'px'}">
<view class="backIconBox">
<view class="backIconBox" @click="handleBack">
<image class="backIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/navigation-left.svg"/>
</view>
<view class="timeBox">
<view class="timeIconBox">
<image class="timeIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/merchantAccount/selectIcon.svg"/>
</view>
<text class="timeText" @click="handleShowPopup">{{`${startDate}-${endDate}`}}</text>
<!-- <uni-datetime-picker v-model="datetimerange" type="daterange"/>-->
<!-- <picker class="timeSelect" mode="date" fields="month" :end="end" onChange="handleGetStartTime(e)">{{startDate}}</picker>-->
<!-- <span class="timeSelect" style="margin: 0 4rpx">-</span>-->
@ -20,16 +21,16 @@
<view class="errorWarning" :style="{top: menu.bottom + 18 + 'px'}">
<view class="errorTitle">
<image class="warningIcon" src="/static/images/warning/warningIcon.png"/>
<image class="warningIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/warningIcon.png"/>
<text class="title">经营异常预警</text>
</view>
<view class="errorContent">
<view class="contentItem">
<view style="display: flex;align-items: center">
<image class="itemIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/merchantAccount/accountIcon.svg"/>
<text class="contentText">车流增加服务区营减少</text>
<text class="contentText">车流增加服务区减少</text>
</view>
<text class="value">15</text>
<text class="value">{{ sumObj['车流增加,服务区营收减少'] || 0 }}</text>
</view>
<view class="contentItem">
@ -37,7 +38,7 @@
<image class="itemIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/merchantAccount/entryIcon.svg"/>
<text class="contentText">车流增加门店的营收减少</text>
</view>
<text class="value">24</text>
<text class="value">{{ sumObj['车流增加,门店的营收减少'] || 0 }}</text>
</view>
<view class="contentItem">
@ -45,15 +46,15 @@
<image class="itemIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/merchantAccount/payIcon.svg"/>
<text class="contentText">车流增加营收增长不匹配</text>
</view>
<text class="value">18</text>
<text class="value">{{ sumObj['车流增加,营收增长不匹配 '] || 0 }}</text>
</view>
<view class="contentItem" style="margin-bottom: 0">
<view style="display: flex;align-items: center">
<image class="itemIcon" src="/static/images/warning/dataIcon.png"/>
<image class="itemIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/dataIcon.png"/>
<text class="contentText">车流减少营收降低不匹配</text>
</view>
<text class="value">13</text>
<text class="value">{{ sumObj['车流减少,营收降低不匹配'] || 0 }}</text>
</view>
</view>
</view>
@ -61,7 +62,7 @@
<view class="servicepartContent">
<view class="contentTitle">
<image class="contentIcon" src="/static/images/warning/foodIcon.png"/>
<image class="contentIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/foodIcon.png"/>
<view class="titleBox">
<text class="title">服务区数据</text>
<text class="desc">/同比去年</text>
@ -71,32 +72,32 @@
<view class="selectBox">
<scroll-view scroll-x="true" class="scrollBox">
<view style="display: inline-block">
<view class="scrollItem selectScroll">
<view :class="selectTab===1?'scrollItem selectScroll':'scrollItem'" @click="handleChangeWarningTab(1)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/merchantAccount/accountIcon.svg"/>
<text class="text">经营</text>
</view>
</view>
<view style="display: inline-block">
<view class="scrollItem">
<view :class="selectTab===2?'scrollItem selectScroll':'scrollItem'" @click="handleChangeWarningTab(2)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/merchantAccount/entryIcon.svg"/>
<text class="text">营收</text>
</view>
</view>
<view style="display: inline-block">
<view class="scrollItem">
<view :class="selectTab===3?'scrollItem selectScroll':'scrollItem'" @click="handleChangeWarningTab(3)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/merchantAccount/payIcon.svg"/>
<text class="text">增长</text>
</view>
</view>
<view style="display: inline-block">
<view class="scrollItem">
<image class="itemImg" src="/static/images/warning/dataIcon.png"/>
<view :class="selectTab===4?'scrollItem selectScroll':'scrollItem'" @click="handleChangeWarningTab(4)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/dataIcon.png"/>
<text class="text">减少</text>
</view>
</view>
</scroll-view>
<view class="fixedRight" @click="handleShowPopup">
<image class="filterIcon" src="/static/images/warning/filter.png"/>
<image class="filterIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/filter.png"/>
筛选
</view>
</view>
@ -124,19 +125,20 @@
</view>
<view class="listContent">
<view class="listItem">
<view class="listItem" v-for="(item,index) in dataList" :key="index">
<view class="itemTop">
<view class="itemTopLeft">
<image class="topItemIcon"/>
<text class="name">新桥</text>
<image v-if="index<=2" class="topItemIcon" :src="index===0?'https://eshangtech.com/ShopICO/ahyd-BID/warning/sort1st.png':index===1?'https://eshangtech.com/ShopICO/ahyd-BID/warning/sort2st.png':index===2?'https://eshangtech.com/ShopICO/ahyd-BID/warning/sort3st.png':''"/>
<view class="otherIcon" v-else>{{index + 1}}</view>
<text class="name">{{ item.ServerpartName.split('服务区')[0] || '' }}</text>
<text class="unit">/服务区</text>
<image class="message"/>
</view>
<view class="itemTopRight">
<view class="warningNotice">
<image class="notice" src="/static/images/warning/warningIcon.png"/>
<text class="shopNumber">5个门店</text>
<view class="itemTopRight" @click="handleGoDetail(item)">
<view class="warningNotice" v-if="item.ShopINCList && item.ShopINCList.length>0">
<image class="notice" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/warningIcon.png"/>
<text class="shopNumber">{{ `${item.ShopINCList.length}个门店` }}</text>
</view>
<image class="moreIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/newIndex3/goMore.svg"/>
</view>
@ -145,36 +147,36 @@
<view class="itemContent">
<view class="secondItem">
<view class="bgBox">
<image class="bg" src="/static/images/warning/revenueBg.png"/>
<image class="bg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/revenueBg.png"/>
</view>
<view class="secondItemTop">
<text class="itemTopName">对客销售</text>
<text class="itemTopUnit">/万元</text>
</view>
<view class="itemValue">55.08</view>
<view :class="item.RevenueINC.curYearData<item.RevenueINC.lYearData?'itemGreenValue':'itemValue' ">{{ item.RevenueINC.curYearData?$util.getMoney(item.RevenueINC.curYearData / 10000):'-' }}</view>
<view class="addRate">
<!-- 增长-->
<text class="redValue" style="margin-right: 8rpx">+3.54</text>
<text :class="item.RevenueINC.increaseData>0?'redValue':item.RevenueINC.increaseData<0?'greenValue':''" style="margin-right: 8rpx">{{item.RevenueINC.increaseData?$util.getMoney(item.RevenueINC.increaseData / 10000):'-' }}</text>
<!-- 增幅-->
<text class="redValue">+1.37%</text>
<text :class="item.RevenueINC.increaseRate>0?'redValue':item.RevenueINC.increaseRate<0?'greenValue':''">{{item.RevenueINC.increaseRate?`${item.RevenueINC.increaseRate}%`:'-' }}</text>
<text class="unit">同比</text>
</view>
</view>
<view class="secondItem">
<view class="bgBox">
<image class="bg" src="/static/images/warning/carBg.png"/>
<image class="bg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/carBg.png"/>
</view>
<view class="secondItemTop">
<text class="itemTopName">入区车流</text>
<text class="itemTopUnit">/</text>
<text class="itemTopUnit">/</text>
</view>
<view class="itemValue">55.08</view>
<view :class="item.BayonetINC.curYearData<item.BayonetINC.lYearData?'itemGreenValue':'itemValue' ">{{ item.BayonetINC.curYearData?$util.getMoney(item.BayonetINC.curYearData / 10000):'-' }}</view>
<view class="addRate">
<!-- 增长-->
<text class="redValue" style="margin-right: 8rpx">+3.54</text>
<text :class="item.BayonetINC.increaseData>0?'redValue':item.BayonetINC.increaseData<0?'greenValue':''" style="margin-right: 8rpx">{{item.BayonetINC.increaseData?$util.getMoney(item.BayonetINC.increaseData / 10000):'-' }}</text>
<!-- 增幅-->
<text class="redValue">+1.37%</text>
<text :class="item.BayonetINC.increaseRate>0?'redValue':item.BayonetINC.increaseRate<0?'greenValue':''">{{item.BayonetINC.increaseRate?`${item.BayonetINC.increaseRate}%`:'-' }}</text>
<text class="unit">同比</text>
</view>
</view>
@ -190,61 +192,83 @@
<text class="uniPopupTitle">筛选</text>
<image @click="hidePopup" class="close" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/close.svg"></image>
</view>
<view class="filterBox">
<view class="filterTitle">统计时间</view>
<view class="filterTimeBox">
<picker class="timeSelect" mode="date" fields="month" :end="end" @change="handleGetStartTime">{{startDate}}</picker>
<span class="timeSelect" style="margin: 0 4rpx">-</span>
<picker class="timeSelect" mode="date" fields="month" :start="start" :end="end" @change="handleGetEndTime">{{endDate}}</picker>
</view>
</view>
<view class="filterBox" style="margin-top: 48rpx">
<view class="filterTitle">经营模式</view>
<view class="filterItemList">
<view class="filterItem">便利店</view>
<view class="filterItem">餐饮客房</view>
<view class="filterItem">商铺租赁</view>
<view :class="statisticsType===1?'filterItem selectFilterItem':'filterItem'" @click="handleChangeStaticType(1)">便利店</view>
<view :class="statisticsType===2?'filterItem selectFilterItem':'filterItem'" @click="handleChangeStaticType(2)">餐饮客房</view>
<view :class="statisticsType===3?'filterItem selectFilterItem':'filterItem'" @click="handleChangeStaticType(3)">商铺租赁</view>
</view>
</view>
<view class="filterBox" style="margin-top: 48rpx">
<view class="filterTitle">经营业态</view>
<view class="filterItemList">
<view class="filterItem">餐饮主食</view>
<view class="filterItem">休闲小吃</view>
<view class="filterItem">生活零售</view>
<view class="filterItem">汽车服务</view>
<view class="filterItem">司乘体验</view>
<view :class="shopTrade===item.value?'filterItem selectFilterItem':'filterItem'" v-for="(item,index) in shopTradeList" :key="index" @click="handleChangeShopTrade(item.value)">{{item.label}}</view>
</view>
</view>
<view class="filterBox" style="margin-top: 48rpx">
<view class="filterTitle">排行类型</view>
<view class="filterItemList">
<view class="filterItem">全局排行</view>
<view class="filterItem">管理排行</view>
<view :class="sorterType===1?'filterItem selectFilterItem':'filterItem'" @click="handleChangeSorterType(1)">全局排行</view>
<view :class="sorterType===2?'filterItem selectFilterItem':'filterItem'" @click="handleChangeSorterType(2)">管理排行</view>
</view>
</view>
<view class="button">确定</view>
<view class="button" @click="handleSubmit">确定</view>
</view>
</uniPopup>
</view>
</template>
<script>
import moment from "moment";
import UniDatetimePicker
from "../../uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue";
import request from '@/util/index.js'
import UniPopup from "../../components/uni-popup.vue";
import {wrapTreeNode} from "../../util/dateTime";
export default {
name: "index",
components: {UniPopup, UniDatetimePicker},
components: {UniPopup},
data(){
return {
menu:{},
showPop:false,//
datetimerange:[moment().format('YYYY/MM'),moment().format('YYYY/MM')]
// startDate: moment().format('YYYY/MM'),//
// endDate: moment().format('YYYY/MM'),//
// end: moment().format('YYYY/MM'),//
// datetimerange:[moment().format('YYYY/MM'),moment().format('YYYY/MM')]
startDate: moment().subtract(1,'months').format('YYYY/MM'),//
endDate: moment().subtract(1,'months').format('YYYY/MM'),//
start: moment().subtract(1,'months').format('YYYY/MM'),//
end: moment().format('YYYY/MM'),//
useInfo:{},//
statisticsType: 0,//
shopTrade: 0,//
shopTradeList:[],//
sorterType:2,//
selectTab: 1,// tab
dataList: [],//
sumObj:{},//
}
},
onLoad(query){
let systemInfo = uni.getSystemInfoSync()
this.menu = uni.getMenuButtonBoundingClientRect()
let userInfo = uni.getStorageSync('vuex')
userInfo = JSON.parse(userInfo)
this.useInfo = JSON.parse(JSON.stringify(userInfo))
this.handleBrandType()
this.handleGetWarningNumber()
this.handleGetPageData()
},
methods:{
//
@ -254,6 +278,167 @@
//
hidePopup(){
this.showPop = false
},
//
handleGetStartTime(e){
console.log('e',e)
this.start = e.detail.value
this.startDate = moment(e.detail.value).format('YYYY/MM')
},
//
handleGetEndTime(e){
this.endDate = moment(e.detail.value).format('YYYY/MM')
},
//
async handleBrandType(){
const req ={
FieldExplainField: 'BusinessTradeIds',
sessionName: 'BusinessTradeIds'
}
const data = await request.$webGet('EShangApiMain/FrameWork/GetFieldEnumTree',req)
const list = wrapTreeNode(data.Result_Data.List)
this.shopTradeList = list
},
//
handleChangeStaticType(e){
if (this.statisticsType===e){
this.statisticsType = 0
}else{
this.statisticsType = e
}
},
//
handleChangeShopTrade(e){
if (this.shopTrade===e){
this.shopTrade = 0
}else{
this.shopTrade = e
}
},
// tab
handleChangeWarningTab(e){
this.selectTab = e
this.dataList = []
this.handleGetPageData()
},
//
handleChangeSorterType(e){
if (this.sorterType===e){
this.sorterType = 0
}else{
this.sorterType = e
}
},
//
handleSubmit(){
this.showPop = false
this.handleGetPageData()
},
//
handleGoDetail(obj){
let date = ''
if (this.startDate === this.endDate){
let month = new Date(this.startDate).getMonth() + 1
date = `${month<10?'0'+month:month}`
}else{
date = `${moment(this.startDate).format('YYYYMM')}-${moment(this.endDate).format('YYYYMM')}`
}
this.$util.toNextRoute('navigateTo', `/pages/earlyWarning/detail?obj=${JSON.stringify(obj)}&date=${date}`)
},
//
handleBack(){
uni.navigateBack({
delta: 1
})
},
//
async handleGetWarningNumber(){
const req = {
StatisticsStartMonth: moment(this.startDate).format('YYYYMM'),
StatisticsEndMonth: moment(this.endDate).format('YYYYMM'),
BusinessTradeType: this.statisticsType || '',
shopTrade: this.shopTrade || ''
}
const data = await request.$webGet('/CommercialApi/Revenue/GetMonthINCAnalysisSummary',req)
console.log('data2312312',data)
let list = data.Result_Data.List
let obj = {}
if (list && list.length>0){
list.forEach(item=>{
obj[item.name] = item.value
})
}
this.sumObj = obj
},
//
async handleGetPageData(){
uni.showLoading({
title: '正在加载...'
})
const params = {
pushProvinceCode: this.useInfo.userData.ProvinceCode || '340000',
StatisticsStartMonth: moment(this.startDate).format('YYYYMM'),
StatisticsEndMonth: moment(this.endDate).format('YYYYMM'),
businessRegion:1,
calcQOQ: false,
calcYOY: true,
calcBayonet: true,
// showLevel: 1,
BusinessTradeType: this.statisticsType || '',
shopTrade: this.shopTrade || '',
showLevel: this.sorterType || '',
}
let req = {}
if (this.selectTab===1){
req = {
...params,
showBayonet: 1,
showRevenue: 2,
showLevel: 1
}
}else if(this.selectTab===2){
req = {
...params,
showBayonet: 1,
showRevenue: 2,
showLevel: 2
}
}else if(this.selectTab===3){
req = {
...params,
showBayonet: 1,
showRevenue: 1,
}
}else if(this.selectTab===4){
req = {
...params,
showBayonet: 2,
showRevenue: 2,
}
}
const data = await request.$webGet('CommercialApi/Revenue/GetMonthINCAnalysis',req)
if (data.Result_Data.List && data.Result_Data.List.length>0){
let list = wrapTreeNode(data.Result_Data.List)
console.log('list',list)
let res = []
list.forEach(item=>{
if (item.children && item.children.length>0){
item.children.forEach((subItem)=>{
if (subItem.children && subItem.children.length>0){
subItem.children.forEach((thirdItem)=>{
res.push(thirdItem)
})
}
})
}
})
console.log('res',res)
this.dataList = res
}
uni.hideLoading()
}
}
}
@ -301,6 +486,15 @@
height: 100%;
}
}
.timeText{
font-family: AlimamaShuHeiTi, AlimamaShuHeiTi;
font-weight: bold;
font-size: 32rpx;
color: #000000;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.timeSelect{
font-family: AlimamaShuHeiTi, AlimamaShuHeiTi;
font-weight: bold;
@ -554,6 +748,24 @@
width: 40rpx;
height: 40rpx;
}
.otherIcon{
width: 40rpx;
height: 40rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
background-image: url("https://eshangtech.com/ShopICO/ahyd-BID/warning/sortOther.png");
background-repeat: no-repeat;
background-size: 100% 100%;
font-family: PingFangSC, PingFang SC;
font-weight: 600;
font-size: 24rpx;
color: #FFFFFF;
line-height: 24rpx;
text-align: left;
font-style: normal;
}
.name{
font-family: PingFangSC, PingFang SC;
font-weight: 600;
@ -571,6 +783,7 @@
line-height: 32rpx;
text-align: left;
font-style: normal;
margin-left: 4rpx;
}
.message{
width: 32rpx;
@ -663,6 +876,15 @@
text-align: left;
font-style: normal;
}
.itemGreenValue{
font-family: DINAlternate, DINAlternate;
font-weight: bold;
font-size: 36rpx;
color: #127E5B;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.addRate{
.redValue{
font-family: DINAlternate, DINAlternate;
@ -673,6 +895,15 @@
text-align: left;
font-style: normal;
}
.greenValue{
font-family: DINAlternate, DINAlternate;
font-weight: bold;
font-size: 28rpx;
color: #127E5B;
line-height: 32rpx;
text-align: left;
font-style: normal;
}
.unit{
font-family: PingFangSC, PingFang SC;
font-weight: 400;
@ -693,7 +924,7 @@
.uniPopup{
width: 100%;
height: 976rpx;
height: 1050rpx;
box-sizing: border-box;
padding: 32rpx;
.uniPopupTop{
@ -749,10 +980,23 @@
border-radius: 8rpx;
padding: 12rpx 0;
}
.selectFilterItem{
color: #2363FF;
background: #ECF2FF;
}
.filterItem:nth-child(3){
margin-right: 0;
}
}
.filterTimeBox{
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 24rpx;
.timeSelect{
width: calc((100% - 20px)/2);
}
}
}
.button{

View File

@ -3,13 +3,14 @@
<view class="earlyTop" :style="{height: `calc(${menu.bottom}px + 636rpx)`}">
<view class="earlyTopBg"></view>
<view class="headerBox" :style="{top:menu.top + 'px',height:menu.height+'px'}">
<view class="backIconBox">
<view class="backIconBox" @click="handleBack">
<image class="backIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/navigation-left.svg"/>
</view>
<view class="timeBox">
<view class="timeIconBox">
<image class="timeIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/merchantAccount/selectIcon.svg"/>
</view>
<text class="timeText" @click="handleShowPopup">{{`${startDate}-${endDate}`}}</text>
<!-- <uni-datetime-picker v-model="datetimerange" type="daterange"/>-->
<!-- <picker class="timeSelect" mode="date" fields="month" :end="end" onChange="handleGetStartTime(e)">{{startDate}}</picker>-->
<!-- <span class="timeSelect" style="margin: 0 4rpx">-</span>-->
@ -20,13 +21,13 @@
<view class="errorWarning" :style="{top: menu.bottom + 18 + 'px'}">
<view class="errorTitle">
<image class="warningIcon" src="/static/images/warning/warningIcon.png"/>
<image class="warningIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/warningIcon.png"/>
<text class="title">经营异常预警</text>
</view>
<view class="errorContent">
<view class="errorItem">
<view class="itemLeft">
<image class="itemLogo" src="/static/images/warning/error1st.png"/>
<image class="itemLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error1st.png"/>
</view>
<view class="itemRight">
<text class="itemValue">15</text>
@ -36,7 +37,7 @@
<view class="errorItem">
<view class="itemLeft">
<image class="itemLogo" src="/static/images/warning/error2st.png"/>
<image class="itemLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error2st.png"/>
</view>
<view class="itemRight">
<text class="itemValue">15</text>
@ -46,7 +47,7 @@
<view class="errorItem">
<view class="itemLeft">
<image class="itemLogo" src="/static/images/warning/error3st.png"/>
<image class="itemLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error3st.png"/>
</view>
<view class="itemRight">
<text class="itemValue">15</text>
@ -56,7 +57,7 @@
<view class="errorItem">
<view class="itemLeft">
<image class="itemLogo" src="/static/images/warning/error4st.png"/>
<image class="itemLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error4st.png"/>
</view>
<view class="itemRight">
<text class="itemValue">15</text>
@ -66,7 +67,7 @@
<view class="errorItem">
<view class="itemLeft">
<image class="itemLogo" src="/static/images/warning/error5st.png"/>
<image class="itemLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error5st.png"/>
</view>
<view class="itemRight">
<text class="itemValue">15</text>
@ -76,7 +77,7 @@
<view class="errorItem">
<view class="itemLeft">
<image class="itemLogo" src="/static/images/warning/error6st.png"/>
<image class="itemLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error6st.png"/>
</view>
<view class="itemRight">
<text class="itemValue">15</text>
@ -86,7 +87,7 @@
<view class="errorItem" style="margin-bottom: 0">
<view class="itemLeft">
<image class="itemLogo" src="/static/images/warning/error7st.png"/>
<image class="itemLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error7st.png"/>
</view>
<view class="itemRight">
<text class="itemValue">15</text>
@ -96,7 +97,7 @@
<view class="errorItem" style="margin-bottom: 0">
<view class="itemLeft">
<image class="itemLogo" src="/static/images/warning/error8st.png"/>
<image class="itemLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error8st.png"/>
</view>
<view class="itemRight">
<text class="itemValue">15</text>
@ -109,7 +110,7 @@
<view class="servicepartContent">
<view class="contentTitle">
<image class="contentIcon" src="/static/images/warning/foodIcon.png"/>
<image class="contentIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/foodIcon.png"/>
<view class="titleBox">
<text class="title">商家数据</text>
</view>
@ -118,56 +119,56 @@
<view class="selectBox">
<scroll-view scroll-x="true" class="scrollBox">
<view style="display: inline-block">
<view class="scrollItem selectScroll">
<image class="itemImg" src="/static/images/warning/error1st.png"/>
<view :class="selectTab===1?'scrollItem selectScroll':'scrollItem'" @click="handleChangeTab(1)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error1st.png"/>
<text class="text">未营业</text>
</view>
</view>
<view style="display: inline-block">
<view class="scrollItem">
<image class="itemImg" src="/static/images/warning/error2st.png"/>
<view :class="selectTab===2?'scrollItem selectScroll':'scrollItem'" @click="handleChangeTab(2)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error2st.png"/>
<text class="text">利润低</text>
</view>
</view>
<view style="display: inline-block">
<view class="scrollItem">
<image class="itemImg" src="/static/images/warning/error3st.png"/>
<text class="text">预亏</text>
</view>
</view>
<view style="display: inline-block">
<view class="scrollItem">
<image class="itemImg" src="/static/images/warning/error4st.png"/>
<view :class="selectTab===3?'scrollItem selectScroll':'scrollItem'" @click="handleChangeTab(3)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error3st.png"/>
<text class="text">退场告警</text>
</view>
</view>
<view style="display: inline-block">
<view class="scrollItem">
<image class="itemImg" src="/static/images/warning/error5st.png"/>
<view :class="selectTab===4?'scrollItem selectScroll':'scrollItem'" @click="handleChangeTab(4)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error4st.png"/>
<text class="text">预亏</text>
</view>
</view>
<view style="display: inline-block">
<view :class="selectTab===5?'scrollItem selectScroll':'scrollItem'" @click="handleChangeTab(5)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error5st.png"/>
<text class="text">退场预警</text>
</view>
</view>
<view style="display: inline-block">
<view class="scrollItem">
<image class="itemImg" src="/static/images/warning/error6st.png"/>
<view :class="selectTab===6?'scrollItem selectScroll':'scrollItem'" @click="handleChangeTab(6)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error6st.png"/>
<text class="text">提成低</text>
</view>
</view>
<view style="display: inline-block">
<view class="scrollItem">
<image class="itemImg" src="/static/images/warning/error7st.png"/>
<view :class="selectTab===7?'scrollItem selectScroll':'scrollItem'" @click="handleChangeTab(7)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error7st.png"/>
<text class="text">租金高</text>
</view>
</view>
<view style="display: inline-block">
<view class="scrollItem">
<image class="itemImg" src="/static/images/warning/error8st.png"/>
<view :class="selectTab===8?'scrollItem selectScroll':'scrollItem'" @click="handleChangeTab(8)">
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error8st.png"/>
<text class="text">业态缺失</text>
</view>
</view>
</scroll-view>
<view class="fixedRight" @click="handleShowPopup">
<image class="filterIcon" src="/static/images/warning/filter.png"/>
<image class="filterIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/filter.png"/>
筛选
</view>
</view>
@ -195,35 +196,36 @@
</view>
<view class="listContent">
<view class="listItem">
<image class="bg" src="/static/images/warning/shopItemBg.png"/>
<view class="listItem" v-for="(item,index) in dataList" :key="index" @click="handleGoDetail(item)">
<image class="bg" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/shopItemBg.png"/>
<view class="listItemLeft">
<image class="shopLogo"/>
</view>
<view class="listItemRight">
<view class="rightTop">
<view class="rightTopLeft">
<image class="sortIcon"/>
<text class="shopName">吉祥馄饨</text>
<image v-if="index<=2" class="sortIcon" :src="index===0?'https://eshangtech.com/ShopICO/ahyd-BID/warning/sort1st.png':index===1?'https://eshangtech.com/ShopICO/ahyd-BID/warning/sort2st.png':index===2?'https://eshangtech.com/ShopICO/ahyd-BID/warning/sort3st.png':''"/>
<view class="otherIcon" v-else>{{index + 1}}</view>
<text class="shopName">{{ item.SERVERPARTSHOP_NAME || '' }}</text>
</view>
<view class="rightTopRight">
<image class="moreIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/newIndex3/goMore.svg"/>
</view>
</view>
<view class="rightBottom">
<text class="type" style="margin-right: 12rpx">合作经营</text>
<text class="endTime">2024/12/30 结束</text>
<text class="type" style="margin-right: 12rpx">{{ businessTypeObj[item.BUSINESS_TYPE] }}</text>
<text class="endTime">{{ `${item.ENDDATE}结束` }}</text>
</view>
<view class="rightBottomMoney">
<view style="width: 50%">
<view class="moneyItem">
<text class="value">79.435,54</text>
<text class="value">{{item.REVENUE_AMOUNT?$util.getMoney(item.REVENUE_AMOUNT / 10000):'-'}}</text>
<text class="unit">营收 /万元</text>
</view>
</view>
<view style="width: 50%">
<view class="moneyItem">
<text class="value">79.435,54</text>
<text class="value">{{item.PROFIT_AMOUNT?$util.getMoney(item.PROFIT_AMOUNT / 10000):'-'}}</text>
<text class="unit">盈利 /万元</text>
</view>
</view>
@ -240,33 +242,45 @@
<text class="uniPopupTitle">筛选</text>
<image @click="hidePopup" class="close" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/close.svg"></image>
</view>
<view class="filterBox">
<view class="filterTitle">统计时间</view>
<view class="filterTimeBox">
<picker class="timeSelect" mode="date" fields="month" :end="end" @change="handleGetStartTime">{{startDate}}</picker>
<span class="timeSelect" style="margin: 0 4rpx">-</span>
<picker class="timeSelect" mode="date" fields="month" :start="start" :end="end" @change="handleGetEndTime">{{endDate}}</picker>
</view>
</view>
<view class="filterBox" style="margin-top: 48rpx">
<view class="filterTitle">经营状态</view>
<view class="filterItemList">
<view class="filterItem">运营中</view>
<view class="filterItem">待运营</view>
<view class="filterItem">暂停</view>
<view class="filterItem">关闭</view>
<view :class="businessStatus===1000?'filterItem selectFilterItem':'filterItem'" @click="handleChangeBusinessStatus(1000)">运营中</view>
<view :class="businessStatus===1010?'filterItem selectFilterItem':'filterItem'" @click="handleChangeBusinessStatus(1010)">待运营</view>
<view :class="businessStatus===2000?'filterItem selectFilterItem':'filterItem'" @click="handleChangeBusinessStatus(2000)">暂停</view>
<view :class="businessStatus===3000?'filterItem selectFilterItem':'filterItem'" @click="handleChangeBusinessStatus(3000)">关闭</view>
</view>
</view>
<view class="filterBox" style="margin-top: 48rpx">
<view class="filterTitle">经营模式</view>
<view class="filterItemList">
<view class="filterItem">合作经营</view>
<view class="filterItem">固定租金</view>
<view class="filterItem">保底采购</view>
<view class="filterItem">业主自营</view>
<view :class="businessType===1000?'filterItem selectFilterItem':'filterItem'" @click="handleChangeBusinessType(1000)">合作经营</view>
<view :class="businessType===2000?'filterItem selectFilterItem':'filterItem'" @click="handleChangeBusinessType(2000)">固定租金</view>
<view :class="businessType===3000?'filterItem selectFilterItem':'filterItem'" @click="handleChangeBusinessType(3000)">保底采购</view>
<view :class="businessType===4000?'filterItem selectFilterItem':'filterItem'" @click="handleChangeBusinessType(4000)">业主自营</view>
</view>
</view>
<view class="button">确定</view>
<view class="button" @click="handleSubmit">确定</view>
</view>
</uniPopup>
</view>
</template>
<script>
import UniPopup from "../../components/uni-popup.vue";
import moment from "moment/moment";
import request from '@/util/index.js'
export default {
name: "projectWarning",
@ -275,13 +289,58 @@ export default {
return {
menu:{},
showPop:false,//
startDate: moment().subtract(1,'months').format('YYYY/MM'),//
endDate: moment().subtract(1,'months').format('YYYY/MM'),//
start: moment().subtract(1,'months').format('YYYY/MM'),//
end: moment().format('YYYY/MM'),//
businessStatus: 0,//
businessType: 0,//
allServerPartId:'',// id
selectTab: 1,
dataList: [],
businessTypeObj:{
1000: "合作经营",
2000: "固定租金",
3000: "保底采购",
4000: "业主自营",
}
}
},
onLoad(){
let systemInfo = uni.getSystemInfoSync()
this.menu = uni.getMenuButtonBoundingClientRect()
let userInfo = uni.getStorageSync('vuex')
userInfo = JSON.parse(userInfo)
let useInfoObj = JSON.parse(JSON.stringify(userInfo))
let serverList = useInfoObj.userData.serverPartList
let serverPartId = ''
console.log('useInfoObj',useInfoObj)
if (serverList && serverList.length>0){
serverList.forEach(item=>{
if (serverPartId){
serverPartId +=`,${item.value}`
}else{
serverPartId = item.value
}
})
}
this.allServerPartId = serverPartId
console.log('this.allServerPartId',this.allServerPartId)
this.handleGetPageData()
},
methods:{
handleSubmit(){
this.showPop = false
this.handleGetPageData()
},
// tab
handleChangeTab(e){
this.selectTab = e
this.dataList = []
this.handleGetPageData()
},
//
handleShowPopup(){
this.showPop = true
@ -289,6 +348,57 @@ export default {
//
hidePopup(){
this.showPop = false
},
//
handleBack(){
uni.navigateBack({
delta: 1
})
},
handleChangeBusinessStatus(e){
if (this.businessStatus === e){
this.businessStatus = 0
}else{
this.businessStatus = e
}
},
handleChangeBusinessType(e){
if (this.businessType === e){
this.businessType = 0
}else{
this.businessType = e
}
},
//
handleGetStartTime(e){
console.log('e',e)
this.start = e.detail.value
this.startDate = moment(e.detail.value).format('YYYY/MM')
},
//
handleGetEndTime(e){
this.endDate = moment(e.detail.value).format('YYYY/MM')
},
//
handleGoDetail(obj){
this.$util.toNextRoute('navigateTo', `/pages/earlyWarning/projectWarningDetail?obj=${JSON.stringify(obj)}`)
},
//
async handleGetPageData(){
uni.showLoading({
title: '正在加载...'
})
const req = {
ServerpartId: this.allServerPartId,
Business_Type: this.businessType || '',
// SettlementMode:'',
BusinessState: this.businessStatus || '',
WarningType: this.selectTab
}
const data = await request.$webGet('/EShangApiMain/BusinessProject/GetAccountWarningList',req)
this.dataList = data.Result_Data.List
console.log('this.dataList',this.dataList)
uni.hideLoading()
}
}
}
@ -334,6 +444,15 @@ export default {
height: 100%;
}
}
.timeText{
font-family: AlimamaShuHeiTi, AlimamaShuHeiTi;
font-weight: bold;
font-size: 32rpx;
color: #000000;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.timeSelect{
font-family: AlimamaShuHeiTi, AlimamaShuHeiTi;
font-weight: bold;
@ -622,11 +741,32 @@ export default {
align-items: center;
justify-content: space-between;
.rightTopLeft{
display: flex;
align-items: center;
.sortIcon{
width: 40rpx;
height: 40rpx;
margin-right: 12rpx;
}
.otherIcon{
width: 40rpx;
height: 40rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
background-image: url("https://eshangtech.com/ShopICO/ahyd-BID/warning/sortOther.png");
background-repeat: no-repeat;
background-size: 100% 100%;
font-family: PingFangSC, PingFang SC;
font-weight: 600;
font-size: 24rpx;
color: #FFFFFF;
line-height: 24rpx;
text-align: left;
font-style: normal;
margin-right: 12rpx;
}
.shopName{
font-family: PingFangSC, PingFang SC;
font-weight: 600;
@ -765,6 +905,19 @@ export default {
.filterItem:nth-child(3){
margin-right: 0;
}
.selectFilterItem{
color: #2363FF;
background: #ECF2FF;
}
}
.filterTimeBox{
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 24rpx;
.timeSelect{
width: calc((100% - 20px)/2);
}
}
}

View File

@ -3,7 +3,7 @@
<view class="earlyTop" :style="{height: `calc(${menu.bottom}px + 472rpx)`}">
<view class="earlyTopBg"></view>
<view class="headerBox" :style="{top:menu.top + 'px',height:menu.height+'px'}">
<view class="backIconBox">
<view class="backIconBox" @click="handleBack">
<image class="backIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/navigation-left.svg"/>
</view>
<view class="pageTitle">商家详情</view>
@ -18,15 +18,15 @@
</view>
<view class="topRight">
<view class="rightTop">
<text class="shopName">吉祥馄饨</text>
<text class="shopName">{{ detail.SERVERPARTSHOP_NAME || ''}}</text>
<view class="fixedBox">
<image class="fixed"/>
<text class="serverPartName">新桥服务区</text>
<text class="serverPartName">{{ detail.SERVERPART_NAME || '' }}</text>
</view>
</view>
<view class="rightBottom">
<text class="type">合作经营</text>
<text class="type" style="margin-left: 12rpx">2024/12/30 结束</text>
<text class="type">{{ businessTypeObj[detail.BUSINESS_TYPE] }}</text>
<text class="type" style="margin-left: 12rpx">{{ `${detail.ENDDATE}结束` }}</text>
</view>
</view>
</view>
@ -34,25 +34,25 @@
<view class="moneyBox">
<view style="width: 50%;display: inline-block">
<view class="moneyItem">
<text class="value">11,546.32</text>
<text class="value">{{detail.REVENUE_AMOUNT?$util.getMoney(detail.REVENUE_AMOUNT / 10000):'-'}}</text>
<text class="unit">营收 /万元</text>
</view>
</view>
<view style="width: 50%;display: inline-block">
<view class="moneyItem">
<text class="value">8,165.87</text>
<text class="value">{{detail.PROFIT_AMOUNT?$util.getMoney(detail.PROFIT_AMOUNT / 10000):'-'}}</text>
<text class="unit">盈利 /万元</text>
</view>
</view>
</view>
<view class="messageBox">
<image class="messageIcon" src="/static/images/warning/error6st.png"/>
<image class="messageIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/error6st.png"/>
<text class="messageType">保底租金偏低</text>
<text class="messageDesc">商家利润超过100万</text>
</view>
<view class="line"></view>
<text class="overTime">关闭日期2024/08/30</text>
<text class="overTime">{{ `关闭日期:${detail.PROJECT_ENDDATE}` }}</text>
</view>
</view>
</view>
@ -61,192 +61,262 @@
<view class="detailContentBox" :style="{height: `calc(100vh - ${menu.bottom}px - 472rpx)`}">
<view class="contentBox">
<view class="tabBox">
<view class="tabItem selectItem">
<image class="tabItemIcon" src="/static/images/warning/tab1Select.png"/>
<view :class="selectTab===1?'tabItem selectItem':'tabItem'" @click="handleChangeTab(1)">
<image class="tabItemIcon" :src="selectTab===1?'https://eshangtech.com/ShopICO/ahyd-BID/warning/tab1Select.png':'https://eshangtech.com/ShopICO/ahyd-BID/warning/tab1NOSelect.png'"/>
<text class="tabText">综合分析</text>
</view>
<view class="tabItem">
<image class="tabItemIcon" src="/static/images/warning/tab2NoSelect.png"/>
<view :class="selectTab===2?'tabItem selectItem':'tabItem'" @click="handleChangeTab(2)">
<image class="tabItemIcon" :src="selectTab===2?'https://eshangtech.com/ShopICO/ahyd-BID/warning/tab2Select.png':'https://eshangtech.com/ShopICO/ahyd-BID/warning/tab2NoSelect.png'"/>
<text class="tabText">经营情况</text>
</view>
</view>
<view class="descBox" v-if="selectTab===1">
<image class="descIcon" src="/static/images/warning/warningLight.png"/>
<view class="descBox" v-if="selectTab===1 && firstTabDetail.Profit">
<image class="descIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/warningLight.png"/>
<view class="desc">
<text class="descText">商家存在 <text class="big">较大的盈利优势</text> 建议后期项目调整保底提成</text>
<text class="descText">
{{firstTabDetail.Profit / 10000< 0 ?'商家存在':
firstTabDetail.Profit / 10000 <= 10 && firstTabDetail.Profit / 10000 > 0?'商家存在':
firstTabDetail.Profit / 10000 > 10 && firstTabDetail.Profit / 10000 < 100?'商家经营状态':
firstTabDetail.Profit / 10000 >= 100?'商家存在':''
}}
<text class="big">{{
firstTabDetail.Profit / 10000< 0 ?'退场风险':
firstTabDetail.Profit / 10000 <= 10 && firstTabDetail.Profit / 10000 > 0?'较大经营风险':
firstTabDetail.Profit / 10000 > 10 && firstTabDetail.Profit / 10000 < 100?'良好':
firstTabDetail.Profit / 10000 >= 100?'较大的盈利优势':''
}}</text>{{
firstTabDetail.Profit / 10000< 0 ?',请密切关注此项目经营状态!':
firstTabDetail.Profit / 10000 <= 10 && firstTabDetail.Profit / 10000 > 0?',请关注此项目经营状态!':
firstTabDetail.Profit / 10000 > 10 && firstTabDetail.Profit / 10000 < 100?',能较好的进行持续经营!':
firstTabDetail.Profit / 10000 >= 100?',建议后期项目调整保底提成!':''
}}
</text>
<view style="display: inline-block">
<view class="noticeBox">
<image class="noticeIcon" src="/static/images/warning/noticeIcon.png"/>
<image class="noticeIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/noticeIcon.png"/>
</view>
</view>
</view>
</view>
<view class="firstContent" v-if="selectTab===1">
<view v-if="firstTabDetail.BUSINESS_TRADE">
<view class="contentTitle">
<text class="yellowText">统一时间</text>口径下
</view>
<view class="contentItem" style="display: flex;align-items: center">
年度统计周期内
<image class="date" src="/static/images/warning/dateIcon.png"/>
<text class="time">2023/04/01 - 2024/03/31</text>
<image class="date" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/dateIcon.png"/>
<text class="time">{{`${firstTabDetail.STATISTICS_STARTDATE}-${firstTabDetail.STATISTICS_ENDDATE}`}}</text>
</view>
<view class="contentItem">
对客营收
<text class="money">170.94</text>
<text class="money">{{ firstTabDetail.PROJECT_REVENUE?$util.getMoney(firstTabDetail.PROJECT_REVENUE / 10000):'-'}}</text>
<text class="unit">/万元</text>
商家入账
<text class="money">132.14</text>
<text class="money">{{ firstTabDetail.SUBROYALTY_AMOUNT?$util.getMoney(firstTabDetail.SUBROYALTY_AMOUNT / 10000):'-'}}</text>
<text class="unit">/万元</text>
</view>
<view class="contentItem">
按合同约定支付驿达租金
<text class="money">135.24</text>
<text class="money">{{ firstTabDetail.ROYALTY_THEORY?$util.getMoney(firstTabDetail.ROYALTY_THEORY / 10000):'-'}}</text>
<text class="unit">/万元</text>
</view>
<view class="contentItem">
按对客销售的 <text style="color: #FE7628;margin: 0 8rpx">40%</text>成本预估经营成本需
<text class="money">87.14</text>
<text class="money">{{ firstTabDetail.PROJECT_REVENUE?$util.getMoney(firstTabDetail.PROJECT_REVENUE * 0.4 / 10000):'-'}}</text>
<text class="unit">/万元</text>
</view>
<view class="contentItem">
商家<text style="color: #FE7628;margin: 0 8rpx">预计盈利</text>
<text class="money">69.15</text>
商家<text style="color: #FE7628;margin: 0 8rpx">{{ firstTabDetail.Profit<0?'预计预亏':'预计盈利' }}</text>
<text class="money">{{ firstTabDetail.Profit?$util.getMoney(firstTabDetail.Profit / 10000):'-'}}</text>
<text class="unit">/万元</text>
</view>
<view class="contentItem">
<text class="yellowBgText">地方特色小吃/休闲小吃</text>
<text class="yellowBgText">膳仁福小吃</text>
<text class="yellowBgText">{{`${BusinessTradeIdsObj[firstTabDetail.BUSINESS_TRADE]}/${BusinessTradeIdsBigObj[firstTabDetail.BUSINESS_PTRADE]}`}}</text>
<!-- 地方特色小吃/休闲小吃-->
<text class="yellowBgText">{{ firstTabDetail.SHOPSHORTNAME || '' }}</text>
</view>
<view class="contentItem" style="display: flex;align-items: center">
优于<text style="color: #FE7628;margin: 0 8rpx">45.18%</text>
<view class="contentItem" style="display: flex;align-items: center;flex-wrap: wrap">
{{ firstTabDetail.ACCOUNT_RATE>=80?'优于':
firstTabDetail.ACCOUNT_RATE< 80 && firstTabDetail.ACCOUNT_RATE>= 50?'优于':
firstTabDetail.ACCOUNT_RATE< 50?'租赁收入低于':''
}}<text style="color: #FE7628;margin: 0 8rpx">{{ firstTabDetail.ACCOUNT_RATE?`${firstTabDetail.ACCOUNT_RATE}%`:'' }}</text>
的经营业态项目
<view style="display: flex;align-items: center;vertical-align: top">
<image class="stateIcon" src="/static/images/warning/Like.png"/>
<!-- /static/images/warning/stateIcon.png-->
<text class="stateText">优秀</text>
<image class="stateIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/Like.png"/>
<!-- https://eshangtech.com/ShopICO/ahyd-BID/warning/stateIcon.png-->
<text class="stateText">{{
firstTabDetail.ACCOUNT_RATE>=80?'优秀':
firstTabDetail.ACCOUNT_RATE<80 && firstTabDetail.ACCOUNT_RATE>= 50?'良好':
firstTabDetail.ACCOUNT_RATE< 50?'请关注此项目经营状况!':''
}}</text>
<view class="questionBox">
<image class="questionIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/newIndex3/noticeIcon.svg"/>
<!-- <view class="questionContent">-->
<!-- <view>{{ `>=80 %,优秀` }}</view>-->
<!-- <view>{{ `<= 80 % 且 >= 50 %,良好` }}</view>-->
<!-- <view>{{ `<50 %,请关注此项目经营状态` }}</view>-->
<!-- </view>-->
<!-- <view class="questionContent">-->
<!-- <view>{{ `>=80 %,优秀` }}</view>-->
<!-- <view>{{ `<= 80 % 且 >= 50 %,良好` }}</view>-->
<!-- <view>{{ `<50 %,请关注此项目经营状态` }}</view>-->
<!-- </view>-->
</view>
</view>
</view>
<view class="contentTitle" style="margin-top: 46rpx">
<text class="typeText">A类</text>口径下
<text class="typeText">{{SERVERPARTTYPEOBJ[firstTabDetail.SERVERPART_TYPE]}}</text>口径下
</view>
<view class="contentItem">
获客能力排名第
<text class="money">12</text>
<text class="unit">/37</text>
<text class="money">{{ firstTabDetail.TRADEREVENUE_RANK_TYPE }}</text>
<text class="unit">/{{ firstTabDetail.TRADE_COUNT_TYPE }}</text>
</view>
<view class="contentItem">
租金交付能力排名第
<text class="money">9</text>
<text class="unit">/37</text>
<text class="money">{{ firstTabDetail.TRADEACCOUNT_RANK_TYPE }}</text>
<text class="unit">/{{ firstTabDetail.TRADE_COUNT_TYPE }}</text>
</view>
<view class="contentTitle" style="padding-left: 14rpx;margin-top: 46rpx;display: flex;align-items: center">
在所有
<view class="YdBox">
<image class="YDLogo" src="/static/images/tabBar/company_active.png"/>
<image class="YDLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/tabBar/company_active.png"/>
<text style="color: red;text-indent: 0">驿达旗下</text>
</view> 服务区中
</view>
<view class="contentItem">
获客能力排名第
<text class="money">27</text>
<text class="unit">/100</text>
<text class="money">{{ firstTabDetail.TRADEREVENUE_RANK }}</text>
<text class="unit">/{{ firstTabDetail.TRADE_COUNT }}</text>
</view>
<view class="contentItem">
租金交付能力排名第
<text class="money">18</text>
<text class="unit">/100</text>
<text class="money">{{ firstTabDetail.TRADEACCOUNT_RANK }}</text>
<text class="unit">/{{ firstTabDetail.TRADE_COUNT }}</text>
</view>
</view>
<view style="color: red" v-else >未对项目进行设置业态无法分析</view>
</view>
<view class="secondContent" v-if="selectTab===2">
<view v-for="(item,index) in secondTabList" :key="index">
<view class="contentItem" style="display: flex;align-items: center;margin-bottom: 16rpx">
<text class="indexDesc">第一期</text>
<text class="indexDesc">{{ item.BUSINESS_PERIOD || ''}}</text>
<view class="timeBox">
<image class="dateIcon" src="/static/images/warning/dateIcon.png"/>
<text class="dateText">2023/04/01 - 2024/03/31</text>
<image class="dateIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/dateIcon.png"/>
<text class="dateText" style="white-space: nowrap">{{
`${item.STARTDATE ? $moment(item.STARTDATE).format('YYYY年MM月DD日') : ''}${item.ENDDATE ? $moment(item.ENDDATE).format('YYYY年MM月DD日') : ''}`
}}</text>
</view>
</view>
<view class="contentItem">
项目履约中...<text class="orangeText">保底租金已交付</text>
{{new Date().getTime() < new Date($moment(item.ENDDATE).format('YYYY-MM-DD')).getTime() ? '项目履约中...' : '项目已完成...'}}
<text class="orangeText">{{ item.SUBROYALTY_PRICE >= item.MINTURNOVER ?'保底租金已交付':'未完成保底额' }}</text>
</view>
<view class="contentItem">
对客销售总额<text class="money">170.94</text>
对客销售总额<text class="money">{{ item.REVENUE_AMOUNT?$util.getMoney(item.REVENUE_AMOUNT / 10000):'-'}}</text>
<text class="unit">/万元</text>
商家入账<text class="money">135.24</text>
商家入账<text class="money">{{ item.SUBROYALTY_THEORY?$util.getMoney(item.SUBROYALTY_THEORY / 10000):'-'}}</text>
<text class="unit">/万元</text>
</view>
<view class="contentItem">
按合同约定支付驿达租金<text class="money">135.24</text>
按合同约定支付驿达租金<text class="money">{{ item.ROYALTY_THEORY?$util.getMoney(item.ROYALTY_THEORY / 10000):'-'}}</text>
<text class="unit">/万元</text>
</view>
<view class="contentItem">
按对客销售的<text class="orangeText" style="margin: 0 8rpx">40%</text>
成本预估经营成本需
<text class="money">87.14</text>
<text class="money">{{ item.costEstimation?$util.getMoney(item.costEstimation / 10000):'-'}}</text>
<text class="unit">/万元</text>
</view>
<view class="contentItem">
商家<text class="orangeText" style="margin: 0 8rpx">预计盈利</text>
<text class="money">69.15</text>
商家<text class="orangeText" style="margin: 0 8rpx">预计{{item.profitEstimate < 0 ? '预亏' : '盈利'}}</text>
<text class="money">{{ item.profitEstimate?$util.getMoney(Math.abs(item.profitEstimate / 10000)):'-'}}</text>
<text class="unit">/万元</text>
</view>
<view class="contentItem">
商家进度完成
<text class="money">30.54%</text>
项目进度完成
<text class="money">{{ item.daySuccess && item.daySuccess > 100 ? 100 : item.daySuccess +'%' }}</text>
</view>
<view class="contentItem">
租金交付已完成
<text class="money">52.69%</text>
<text class="money">{{ item.rentDelivery && item.rentDelivery > 100 ? 100 : item.rentDelivery +'%' }}</text>
</view>
<view class="contentItem">
租金交付进度 <text class="orangeText" style="margin: 0 8rpx">优于</text> 项目进度
租金交付进度 <text class="orangeText" style="margin: 0 8rpx">{{ item.rentDelivery > item.daySuccess ? '优于' : item.rentDelivery < item.daySuccess ? '低于' : '等于' }}</text> 项目进度
</view>
<view class="resultBox">
<image class="warningLight" src="/static/images/warning/warningLight.png"/>
项目保底
<text class="blueText">基本实现</text>
<view class="resultBox" v-if="item.daySuccess < 100">
<image class="warningLight" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/warningLight.png"/>
{{ item.progressDifference <= 10 ? '项目保底' :
item.progressDifference > 10 && item.progressDifference <= 40 ?'项目能':
item.progressDifference > 40 ?'项目':
item.progressDifference <= 0 && item.progressDifference >= -10 ?'项目保底完成':
item.progressDifference <= -10 && item.progressDifference >= -40 ?'商家':
item.progressDifference < -40 ?'项目':''
}}
<text class="blueText">
{{ item.progressDifference <= 10 ? '基本能实现' :
item.progressDifference > 10 && item.progressDifference <= 40 ?'较好的完成':
item.progressDifference > 40 ?'超预期':
item.progressDifference <= 0 && item.progressDifference >= -10 ?'存在困难':
item.progressDifference <= -10 && item.progressDifference >= -40 ?'存在经营困难':
item.progressDifference < -40 ?'超预期':''
}}
</text>
{{ item.progressDifference <= 10 ? '' :
item.progressDifference > 10 && item.progressDifference <= 40 ?'保底且实现盈利':
item.progressDifference > 40 ?'后续项目可以适当提升保底营收':
item.progressDifference <= 0 && item.progressDifference >= -10 ?',请保持关注':
item.progressDifference <= -10 && item.progressDifference >= -40 ?',请密切保持关注':
item.progressDifference < -40 ?',商家存在退场风险':''
}}
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import request from '@/util/index.js'
import moment from "moment";
import {wrapTreeNode} from "../../util/dateTime";
export default {
name: "projectWarningDetail",
data(){
return {
menu:{},
serviceInfo:{},//
selectTab: 2,// tab
selectTab: 1,// tab
detail:{},//
businessTypeObj:{
1000: "合作经营",
2000: "固定租金",
3000: "保底采购",
4000: "业主自营",
},
firstTabDetail:{},//
secondTabList:[],//
BusinessTradeIdsObj:{},//
BusinessTradeIdsBigObj:{},//
SERVERPARTTYPEOBJ:{},//
}
},
onLoad(query){
@ -254,7 +324,140 @@
this.menu = uni.getMenuButtonBoundingClientRect()
let seat = uni.getStorageSync('currentService')
this.serviceInfo = seat
if (query.obj){
this.detail = JSON.parse(query.obj)
}
console.log('this.detail',this.detail)
this.handleGetField()
this.handleGetSERVERPART_TYPE()
this.handleGetFirstTab()
this.handleGetSecondTab()
},
methods:{
//
handleBack(){
uni.navigateBack({
delta: 1
})
},
// BusinessTradeIdsObj
async handleGetField(){
const req = {
FieldExplainField: 'BusinessTradeIds'
}
const data = await request.$webGet('/EShangApiMain/FrameWork/GetFieldEnumTree',req)
let list = wrapTreeNode(data.Result_Data.List)
let bigObj = {}
let obj = {}
if (list && list.length>0){
list.forEach(item=>{
bigObj[item.value] = item.label
if (item.children && item.children.length>0){
item.children.forEach(subItem=>{
obj[subItem.value] = subItem.label
})
}
})
}
console.log('data231231',list)
this.BusinessTradeIdsBigObj = bigObj
this.BusinessTradeIdsObj = obj
},
// BusinessTradeIdsBigObj
async handleGetSERVERPART_TYPE(){
const req = {
FieldExplainField: 'SERVERPART_TYPE'
}
const data = await request.$webGet('/EShangApiMain/FrameWork/GetFieldEnumTree',req)
let list = wrapTreeNode(data.Result_Data.List)
let obj = {}
if (list && list.length>0){
list.forEach(item=>{
obj[item.value] = item.label
})
}
console.log('data231231',list)
this.SERVERPARTTYPEOBJ = obj
},
//
handleChangeTab(e){
this.selectTab = e
},
async handleGetFirstTab(){
const req = {
ServerpartId: this.detail.SERVERPART_ID,
ServerpartShopId: this.detail.SERVERPARTSHOP_ID
}
const bottomData = await request.$webGet('/EShangApiMain/Revenue/GetBusinessTradeAnalysis',req)
const bottomData2 = await request.$webGet('/EShangApiMain/Revenue/GetBrandAnalysis',req)
console.log('bottomData',bottomData)
console.log('bottomData2',bottomData2)
let thirdObj = {}
let fourthObj = {}
if (bottomData.Result_Data.List && bottomData.Result_Data.List.length>0){
thirdObj = bottomData.Result_Data.List[0]
}
if (bottomData2.Result_Data.List && bottomData2.Result_Data.List.length>0){
fourthObj = bottomData2.Result_Data.List[0]
}
console.log('thirdObj',thirdObj)
console.log('fourthObj',fourthObj)
this.firstTabDetail = {
...thirdObj,
...fourthObj,
}
console.log('this.firstTabDetail',this.firstTabDetail)
},
async handleGetSecondTab(){
const req = {
DataType: 2,
BusinessProjectId: this.detail.BUSINESSPROJECT_ID
}
const data = await request.$webGet('/EShangApiMain/BusinessProject/GetAnnualSplit',req)
const shopTime = await request.$webGet('/EShangApiMain/Revenue/GetBusinessDate',{ServerpartShopIds:this.detail.BUSINESSPROJECT_ID})
let list = data.Result_Data.List
const shopEndTime = shopTime.Result_Data.value
console.log('shopEndTime',shopEndTime)
let beforeList = []
list.forEach(item=>{
if (item.PERIOD_INDEX){
if (new Date(item.STARTDATE).getTime()<new Date(shopEndTime).getTime() && new Date(item.ENDDATE).getTime()>new Date(shopEndTime).getTime()){
item.showMore = true
//
const startTime = moment(item.STARTDATE)
const endTime = moment(item.ENDDATE)
const nowTime = moment()
item.projectDaySum = endTime.diff(startTime,'days') + 1
//
item.projectBetween = nowTime.diff(startTime,'days') + 1
//
item.daySuccess = numeral((item.projectBetween / item.projectDaySum) * 100).format('0.00')
item.costEstimation = item.REVENUE_AMOUNT * 0.4
item.profitEstimate = item.SUBROYALTY_THEORY - (item.REVENUE_AMOUNT * 0.4)
item.rentDelivery = item.SUBROYALTY_PRICE / item.MINTURNOVER > 1 ? 100 : (item.SUBROYALTY_PRICE / item.MINTURNOVER)*100
item.daySuccessNumber = (item.projectBetween / item.projectDaySum) * 100
item.progressDifference = item.rentDelivery - item.daySuccessNumber
beforeList.push(item)
}else{
item.daySuccess = 100
item.daySuccessNumber = 100
item.costEstimation = item.REVENUE_AMOUNT * 0.4
item.rentDelivery = item.SUBROYALTY_PRICE / item.MINTURNOVER > 1 ? 100 : (item.SUBROYALTY_PRICE / item.MINTURNOVER)*100
item.profitEstimate = item.SUBROYALTY_THEORY - (item.REVENUE_AMOUNT * 0.4)
beforeList.push(item)
}
}
})
this.secondTabList = beforeList
console.log('this.secondTabList',this.secondTabList)
}
}
}
</script>
<style scoped lang="scss">
@ -470,6 +673,8 @@
margin-top: 32rpx;
.contentBox{
width: 100%;
background: #fff;
padding-bottom: 40rpx;
.tabBox{
width: 100%;
height: 108rpx;

View File

@ -1052,6 +1052,22 @@
<!-- <text class="funText">{{ isShowFestival==='spring'?'平安春运':isShowFestival==='qm'?'清明节':'' }}</text>-->
</view>
</view>
<view class="funItem" style="margin-top: 32rpx" @click="goToOperateWarning">
<view class="funItemContent">
<view class="funIconBox">
<image class="funIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/operateWarning.png"/>
</view>
<text class="funText">经营预警</text>
</view>
</view>
<view class="funItem" style="margin-top: 32rpx" @click="goToProjectWarning">
<view class="funItemContent">
<view class="funIconBox">
<image class="funIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/warning/projectWarning.png"/>
</view>
<text class="funText">项目预警</text>
</view>
</view>
<!-- 数智统计-->
@ -1981,6 +1997,12 @@ export default {
// this.$util.toNextRoute('navigateTo', `/pages/nationalPage/index?time=${this.lastDay}`)
this.$util.toNextRoute('navigateTo', `/pages/nationalPage/springTravel?selectType=2`)
},
goToOperateWarning(){
this.$util.toNextRoute('navigateTo', `/pages/earlyWarning/index`)
},
goToProjectWarning(){
this.$util.toNextRoute('navigateTo', `/pages/earlyWarning/projectWarning`)
},
handleShowTrafficDetail(){
this.showMonthDetail = !this.showMonthDetail
},

View File

@ -188,6 +188,7 @@ export default {
if(rs.Result_Code==100){
let newUser = rs.Result_Data
newUser.WeChat_MiniProToken = _this.user.WeChat_MiniProToken
console.log('newUser',newUser)
_this.setUser(newUser)
if(newUser.Membership_Phone) {
_this.updateUser(newUser)

View File

@ -94,10 +94,14 @@ export default {
handleGoFourth(item){
let version = uni.getStorageSync('version')
if (version===1){
if (item.summaryOfPortraits){
this.$util.toNextRoute('navigateTo', '/pages/summaryOfPortraits/index?index='+item.type)
}else{
this.$util.toNextRoute('navigateTo', item.homeUrl)
}
}else{
this.$util.toNextRoute('navigateTo', item.homeUrl)
}
},
//

View File

@ -246,6 +246,7 @@ import Tabbar from "../../components/tabbar/tabbar.vue";
isNotice:true,
notice:0,
type:0,
summaryOfPortraits: true,
value: 4,
},
{
@ -255,6 +256,7 @@ import Tabbar from "../../components/tabbar/tabbar.vue";
imagePath: 'https://eshangtech.com/ShopICO/ahyd-BID/user/assessment.svg',
isNotice:false,
notice:0,
summaryOfPortraits: true,
type:6,
value: 4,
},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 801 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 755 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 928 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 892 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -116,13 +116,26 @@ const actions = {
let _id = _user.Membership_Id
if(!_id) return
// console.log(_user)
await request.$get('WeChat_GetBusinessMemberInfo',{Membership_Id:_id}).then(res=>{
await request.$get('WeChat_GetBusinessMemberInfo',{Membership_Id:_id}).then(async res=>{
// request.$webGet('WebAPI_Push/Member/GetMemberInfo',{Membership_Id:_id,memberShipId:_id}).then(res=>{
if(res.Result_Code==100) {
let data = res.Result_Data
data.WeChat_MiniProToken = _user.WeChat_MiniProToken
data.WeChat_UserId = _user.WeChat_UserId
data.WeChat_UserName = _user.WeChat_UserName
let UserCityList = data.UserCityAuthority.split(' ')
let str = ''
if (UserCityList && UserCityList.length>0){
UserCityList.forEach(item=>{
if (str){
str+=`,${item}`
}else{
str = item
}
})
}
const serverPart = await request.$webGet('/EShangApiMain/BaseInfo/GetServerpartDDL',{ServerpartCodes: str})
data.serverPartList = serverPart.Result_Data.List
commit('setUser', data)
dispatch('getTodoList')
}else{

View File

@ -1,40 +0,0 @@
## 2.0.92024-01-12
fix: 修复图标大小默认值错误的问题
## 2.0.82023-12-14
- 修复 项目未使用 ts 情况下打包报错的bug
## 2.0.72023-12-14
- 修复 size 属性为 string 时不加单位导致尺寸异常的bug
## 2.0.62023-12-11
- 优化 兼容老版本icon类型如 top bottom 等
## 2.0.52023-12-11
- 优化 兼容老版本icon类型如 top bottom 等
## 2.0.42023-12-06
- 优化 uni-app x 下示例项目图标排序
## 2.0.32023-12-06
- 修复 nvue下引入组件报错的bug
## 2.0.22023-12-05
-优化 size 属性支持单位
## 2.0.12023-12-05
- 新增 uni-app x 支持定义图标
## 1.3.52022-01-24
- 优化 size 属性可以传入不带单位的字符串数值
## 1.3.42022-01-24
- 优化 size 支持其他单位
## 1.3.32022-01-17
- 修复 nvue 有些图标不显示的bug兼容老版本图标
## 1.3.22021-12-01
- 优化 示例可复制图标名称
## 1.3.12021-11-23
- 优化 兼容旧组件 type 值
## 1.3.02021-11-19
- 新增 更多图标
- 优化 自定义图标使用方式
- 优化 组件UI并提供设计资源详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons)
## 1.1.72021-11-08
## 1.2.02021-07-30
- 组件兼容 vue3如何创建vue3项目详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
## 1.1.52021-05-12
- 新增 组件示例地址
## 1.1.42021-02-05
- 调整为uni_modules目录规范

View File

@ -1,91 +0,0 @@
<template>
<text class="uni-icons" :style="styleObj">
<slot>{{unicode}}</slot>
</text>
</template>
<script>
import { fontData, IconsDataItem } from './uniicons_file'
/**
* Icons 图标
* @description 用于展示 icon 图标
* @tutorial https://ext.dcloud.net.cn/plugin?id=28
* @property {Number} size 图标大小
* @property {String} type 图标图案,参考示例
* @property {String} color 图标颜色
* @property {String} customPrefix 自定义图标
* @event {Function} click 点击 Icon 触发事件
*/
export default {
name: "uni-icons",
props: {
type: {
type: String,
default: ''
},
color: {
type: String,
default: '#333333'
},
size: {
type: Object,
default: 16
},
fontFamily: {
type: String,
default: ''
}
},
data() {
return {};
},
computed: {
unicode() : string {
let codes = fontData.find((item : IconsDataItem) : boolean => { return item.font_class == this.type })
if (codes !== null) {
return codes.unicode
}
return ''
},
iconSize() : string {
const size = this.size
if (typeof size == 'string') {
const reg = /^[0-9]*$/g
return reg.test(size as string) ? '' + size + 'px' : '' + size;
// return '' + this.size
}
return this.getFontSize(size as number)
},
styleObj() : UTSJSONObject {
if (this.fontFamily !== '') {
return { color: this.color, fontSize: this.iconSize, fontFamily: this.fontFamily }
}
return { color: this.color, fontSize: this.iconSize }
}
},
created() { },
methods: {
/**
* 字体大小
*/
getFontSize(size : number) : string {
return size + 'px';
},
},
}
</script>
<style scoped>
@font-face {
font-family: UniIconsFontFamily;
src: url('./uniicons.ttf');
}
.uni-icons {
font-family: UniIconsFontFamily;
font-size: 18px;
font-style: normal;
color: #333;
}
</style>

View File

@ -1,110 +0,0 @@
<template>
<!-- #ifdef APP-NVUE -->
<text :style="styleObj" class="uni-icons" @click="_onClick">{{unicode}}</text>
<!-- #endif -->
<!-- #ifndef APP-NVUE -->
<text :style="styleObj" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick">
<slot></slot>
</text>
<!-- #endif -->
</template>
<script>
import { fontData } from './uniicons_file_vue.js';
const getVal = (val) => {
const reg = /^[0-9]*$/g
return (typeof val === 'number' || reg.test(val)) ? val + 'px' : val;
}
// #ifdef APP-NVUE
var domModule = weex.requireModule('dom');
import iconUrl from './uniicons.ttf'
domModule.addRule('fontFace', {
'fontFamily': "uniicons",
'src': "url('" + iconUrl + "')"
});
// #endif
/**
* Icons 图标
* @description 用于展示 icons 图标
* @tutorial https://ext.dcloud.net.cn/plugin?id=28
* @property {Number} size 图标大小
* @property {String} type 图标图案参考示例
* @property {String} color 图标颜色
* @property {String} customPrefix 自定义图标
* @event {Function} click 点击 Icon 触发事件
*/
export default {
name: 'UniIcons',
emits: ['click'],
props: {
type: {
type: String,
default: ''
},
color: {
type: String,
default: '#333333'
},
size: {
type: [Number, String],
default: 16
},
customPrefix: {
type: String,
default: ''
},
fontFamily: {
type: String,
default: ''
}
},
data() {
return {
icons: fontData
}
},
computed: {
unicode() {
let code = this.icons.find(v => v.font_class === this.type)
if (code) {
return code.unicode
}
return ''
},
iconSize() {
return getVal(this.size)
},
styleObj() {
if (this.fontFamily !== '') {
return `color: ${this.color}; font-size: ${this.iconSize}; font-family: ${this.fontFamily};`
}
return `color: ${this.color}; font-size: ${this.iconSize};`
}
},
methods: {
_onClick() {
this.$emit('click')
}
}
}
</script>
<style lang="scss">
/* #ifndef APP-NVUE */
@import './uniicons.css';
@font-face {
font-family: uniicons;
src: url('./uniicons.ttf');
}
/* #endif */
.uni-icons {
font-family: uniicons;
text-decoration: none;
text-align: center;
}
</style>

View File

@ -1,664 +0,0 @@
.uniui-cart-filled:before {
content: "\e6d0";
}
.uniui-gift-filled:before {
content: "\e6c4";
}
.uniui-color:before {
content: "\e6cf";
}
.uniui-wallet:before {
content: "\e6b1";
}
.uniui-settings-filled:before {
content: "\e6ce";
}
.uniui-auth-filled:before {
content: "\e6cc";
}
.uniui-shop-filled:before {
content: "\e6cd";
}
.uniui-staff-filled:before {
content: "\e6cb";
}
.uniui-vip-filled:before {
content: "\e6c6";
}
.uniui-plus-filled:before {
content: "\e6c7";
}
.uniui-folder-add-filled:before {
content: "\e6c8";
}
.uniui-color-filled:before {
content: "\e6c9";
}
.uniui-tune-filled:before {
content: "\e6ca";
}
.uniui-calendar-filled:before {
content: "\e6c0";
}
.uniui-notification-filled:before {
content: "\e6c1";
}
.uniui-wallet-filled:before {
content: "\e6c2";
}
.uniui-medal-filled:before {
content: "\e6c3";
}
.uniui-fire-filled:before {
content: "\e6c5";
}
.uniui-refreshempty:before {
content: "\e6bf";
}
.uniui-location-filled:before {
content: "\e6af";
}
.uniui-person-filled:before {
content: "\e69d";
}
.uniui-personadd-filled:before {
content: "\e698";
}
.uniui-arrowthinleft:before {
content: "\e6d2";
}
.uniui-arrowthinup:before {
content: "\e6d3";
}
.uniui-arrowthindown:before {
content: "\e6d4";
}
.uniui-back:before {
content: "\e6b9";
}
.uniui-forward:before {
content: "\e6ba";
}
.uniui-arrow-right:before {
content: "\e6bb";
}
.uniui-arrow-left:before {
content: "\e6bc";
}
.uniui-arrow-up:before {
content: "\e6bd";
}
.uniui-arrow-down:before {
content: "\e6be";
}
.uniui-arrowthinright:before {
content: "\e6d1";
}
.uniui-down:before {
content: "\e6b8";
}
.uniui-bottom:before {
content: "\e6b8";
}
.uniui-arrowright:before {
content: "\e6d5";
}
.uniui-right:before {
content: "\e6b5";
}
.uniui-up:before {
content: "\e6b6";
}
.uniui-top:before {
content: "\e6b6";
}
.uniui-left:before {
content: "\e6b7";
}
.uniui-arrowup:before {
content: "\e6d6";
}
.uniui-eye:before {
content: "\e651";
}
.uniui-eye-filled:before {
content: "\e66a";
}
.uniui-eye-slash:before {
content: "\e6b3";
}
.uniui-eye-slash-filled:before {
content: "\e6b4";
}
.uniui-info-filled:before {
content: "\e649";
}
.uniui-reload:before {
content: "\e6b2";
}
.uniui-micoff-filled:before {
content: "\e6b0";
}
.uniui-map-pin-ellipse:before {
content: "\e6ac";
}
.uniui-map-pin:before {
content: "\e6ad";
}
.uniui-location:before {
content: "\e6ae";
}
.uniui-starhalf:before {
content: "\e683";
}
.uniui-star:before {
content: "\e688";
}
.uniui-star-filled:before {
content: "\e68f";
}
.uniui-calendar:before {
content: "\e6a0";
}
.uniui-fire:before {
content: "\e6a1";
}
.uniui-medal:before {
content: "\e6a2";
}
.uniui-font:before {
content: "\e6a3";
}
.uniui-gift:before {
content: "\e6a4";
}
.uniui-link:before {
content: "\e6a5";
}
.uniui-notification:before {
content: "\e6a6";
}
.uniui-staff:before {
content: "\e6a7";
}
.uniui-vip:before {
content: "\e6a8";
}
.uniui-folder-add:before {
content: "\e6a9";
}
.uniui-tune:before {
content: "\e6aa";
}
.uniui-auth:before {
content: "\e6ab";
}
.uniui-person:before {
content: "\e699";
}
.uniui-email-filled:before {
content: "\e69a";
}
.uniui-phone-filled:before {
content: "\e69b";
}
.uniui-phone:before {
content: "\e69c";
}
.uniui-email:before {
content: "\e69e";
}
.uniui-personadd:before {
content: "\e69f";
}
.uniui-chatboxes-filled:before {
content: "\e692";
}
.uniui-contact:before {
content: "\e693";
}
.uniui-chatbubble-filled:before {
content: "\e694";
}
.uniui-contact-filled:before {
content: "\e695";
}
.uniui-chatboxes:before {
content: "\e696";
}
.uniui-chatbubble:before {
content: "\e697";
}
.uniui-upload-filled:before {
content: "\e68e";
}
.uniui-upload:before {
content: "\e690";
}
.uniui-weixin:before {
content: "\e691";
}
.uniui-compose:before {
content: "\e67f";
}
.uniui-qq:before {
content: "\e680";
}
.uniui-download-filled:before {
content: "\e681";
}
.uniui-pyq:before {
content: "\e682";
}
.uniui-sound:before {
content: "\e684";
}
.uniui-trash-filled:before {
content: "\e685";
}
.uniui-sound-filled:before {
content: "\e686";
}
.uniui-trash:before {
content: "\e687";
}
.uniui-videocam-filled:before {
content: "\e689";
}
.uniui-spinner-cycle:before {
content: "\e68a";
}
.uniui-weibo:before {
content: "\e68b";
}
.uniui-videocam:before {
content: "\e68c";
}
.uniui-download:before {
content: "\e68d";
}
.uniui-help:before {
content: "\e679";
}
.uniui-navigate-filled:before {
content: "\e67a";
}
.uniui-plusempty:before {
content: "\e67b";
}
.uniui-smallcircle:before {
content: "\e67c";
}
.uniui-minus-filled:before {
content: "\e67d";
}
.uniui-micoff:before {
content: "\e67e";
}
.uniui-closeempty:before {
content: "\e66c";
}
.uniui-clear:before {
content: "\e66d";
}
.uniui-navigate:before {
content: "\e66e";
}
.uniui-minus:before {
content: "\e66f";
}
.uniui-image:before {
content: "\e670";
}
.uniui-mic:before {
content: "\e671";
}
.uniui-paperplane:before {
content: "\e672";
}
.uniui-close:before {
content: "\e673";
}
.uniui-help-filled:before {
content: "\e674";
}
.uniui-paperplane-filled:before {
content: "\e675";
}
.uniui-plus:before {
content: "\e676";
}
.uniui-mic-filled:before {
content: "\e677";
}
.uniui-image-filled:before {
content: "\e678";
}
.uniui-locked-filled:before {
content: "\e668";
}
.uniui-info:before {
content: "\e669";
}
.uniui-locked:before {
content: "\e66b";
}
.uniui-camera-filled:before {
content: "\e658";
}
.uniui-chat-filled:before {
content: "\e659";
}
.uniui-camera:before {
content: "\e65a";
}
.uniui-circle:before {
content: "\e65b";
}
.uniui-checkmarkempty:before {
content: "\e65c";
}
.uniui-chat:before {
content: "\e65d";
}
.uniui-circle-filled:before {
content: "\e65e";
}
.uniui-flag:before {
content: "\e65f";
}
.uniui-flag-filled:before {
content: "\e660";
}
.uniui-gear-filled:before {
content: "\e661";
}
.uniui-home:before {
content: "\e662";
}
.uniui-home-filled:before {
content: "\e663";
}
.uniui-gear:before {
content: "\e664";
}
.uniui-smallcircle-filled:before {
content: "\e665";
}
.uniui-map-filled:before {
content: "\e666";
}
.uniui-map:before {
content: "\e667";
}
.uniui-refresh-filled:before {
content: "\e656";
}
.uniui-refresh:before {
content: "\e657";
}
.uniui-cloud-upload:before {
content: "\e645";
}
.uniui-cloud-download-filled:before {
content: "\e646";
}
.uniui-cloud-download:before {
content: "\e647";
}
.uniui-cloud-upload-filled:before {
content: "\e648";
}
.uniui-redo:before {
content: "\e64a";
}
.uniui-images-filled:before {
content: "\e64b";
}
.uniui-undo-filled:before {
content: "\e64c";
}
.uniui-more:before {
content: "\e64d";
}
.uniui-more-filled:before {
content: "\e64e";
}
.uniui-undo:before {
content: "\e64f";
}
.uniui-images:before {
content: "\e650";
}
.uniui-paperclip:before {
content: "\e652";
}
.uniui-settings:before {
content: "\e653";
}
.uniui-search:before {
content: "\e654";
}
.uniui-redo-filled:before {
content: "\e655";
}
.uniui-list:before {
content: "\e644";
}
.uniui-mail-open-filled:before {
content: "\e63a";
}
.uniui-hand-down-filled:before {
content: "\e63c";
}
.uniui-hand-down:before {
content: "\e63d";
}
.uniui-hand-up-filled:before {
content: "\e63e";
}
.uniui-hand-up:before {
content: "\e63f";
}
.uniui-heart-filled:before {
content: "\e641";
}
.uniui-mail-open:before {
content: "\e643";
}
.uniui-heart:before {
content: "\e639";
}
.uniui-loop:before {
content: "\e633";
}
.uniui-pulldown:before {
content: "\e632";
}
.uniui-scan:before {
content: "\e62a";
}
.uniui-bars:before {
content: "\e627";
}
.uniui-checkbox:before {
content: "\e62b";
}
.uniui-checkbox-filled:before {
content: "\e62c";
}
.uniui-shop:before {
content: "\e62f";
}
.uniui-headphones:before {
content: "\e630";
}
.uniui-cart:before {
content: "\e631";
}

View File

@ -1,664 +0,0 @@
export type IconsData = {
id : string
name : string
font_family : string
css_prefix_text : string
description : string
glyphs : Array<IconsDataItem>
}
export type IconsDataItem = {
font_class : string
unicode : string
}
export const fontData = [
{
"font_class": "arrow-down",
"unicode": "\ue6be"
},
{
"font_class": "arrow-left",
"unicode": "\ue6bc"
},
{
"font_class": "arrow-right",
"unicode": "\ue6bb"
},
{
"font_class": "arrow-up",
"unicode": "\ue6bd"
},
{
"font_class": "auth",
"unicode": "\ue6ab"
},
{
"font_class": "auth-filled",
"unicode": "\ue6cc"
},
{
"font_class": "back",
"unicode": "\ue6b9"
},
{
"font_class": "bars",
"unicode": "\ue627"
},
{
"font_class": "calendar",
"unicode": "\ue6a0"
},
{
"font_class": "calendar-filled",
"unicode": "\ue6c0"
},
{
"font_class": "camera",
"unicode": "\ue65a"
},
{
"font_class": "camera-filled",
"unicode": "\ue658"
},
{
"font_class": "cart",
"unicode": "\ue631"
},
{
"font_class": "cart-filled",
"unicode": "\ue6d0"
},
{
"font_class": "chat",
"unicode": "\ue65d"
},
{
"font_class": "chat-filled",
"unicode": "\ue659"
},
{
"font_class": "chatboxes",
"unicode": "\ue696"
},
{
"font_class": "chatboxes-filled",
"unicode": "\ue692"
},
{
"font_class": "chatbubble",
"unicode": "\ue697"
},
{
"font_class": "chatbubble-filled",
"unicode": "\ue694"
},
{
"font_class": "checkbox",
"unicode": "\ue62b"
},
{
"font_class": "checkbox-filled",
"unicode": "\ue62c"
},
{
"font_class": "checkmarkempty",
"unicode": "\ue65c"
},
{
"font_class": "circle",
"unicode": "\ue65b"
},
{
"font_class": "circle-filled",
"unicode": "\ue65e"
},
{
"font_class": "clear",
"unicode": "\ue66d"
},
{
"font_class": "close",
"unicode": "\ue673"
},
{
"font_class": "closeempty",
"unicode": "\ue66c"
},
{
"font_class": "cloud-download",
"unicode": "\ue647"
},
{
"font_class": "cloud-download-filled",
"unicode": "\ue646"
},
{
"font_class": "cloud-upload",
"unicode": "\ue645"
},
{
"font_class": "cloud-upload-filled",
"unicode": "\ue648"
},
{
"font_class": "color",
"unicode": "\ue6cf"
},
{
"font_class": "color-filled",
"unicode": "\ue6c9"
},
{
"font_class": "compose",
"unicode": "\ue67f"
},
{
"font_class": "contact",
"unicode": "\ue693"
},
{
"font_class": "contact-filled",
"unicode": "\ue695"
},
{
"font_class": "down",
"unicode": "\ue6b8"
},
{
"font_class": "bottom",
"unicode": "\ue6b8"
},
{
"font_class": "download",
"unicode": "\ue68d"
},
{
"font_class": "download-filled",
"unicode": "\ue681"
},
{
"font_class": "email",
"unicode": "\ue69e"
},
{
"font_class": "email-filled",
"unicode": "\ue69a"
},
{
"font_class": "eye",
"unicode": "\ue651"
},
{
"font_class": "eye-filled",
"unicode": "\ue66a"
},
{
"font_class": "eye-slash",
"unicode": "\ue6b3"
},
{
"font_class": "eye-slash-filled",
"unicode": "\ue6b4"
},
{
"font_class": "fire",
"unicode": "\ue6a1"
},
{
"font_class": "fire-filled",
"unicode": "\ue6c5"
},
{
"font_class": "flag",
"unicode": "\ue65f"
},
{
"font_class": "flag-filled",
"unicode": "\ue660"
},
{
"font_class": "folder-add",
"unicode": "\ue6a9"
},
{
"font_class": "folder-add-filled",
"unicode": "\ue6c8"
},
{
"font_class": "font",
"unicode": "\ue6a3"
},
{
"font_class": "forward",
"unicode": "\ue6ba"
},
{
"font_class": "gear",
"unicode": "\ue664"
},
{
"font_class": "gear-filled",
"unicode": "\ue661"
},
{
"font_class": "gift",
"unicode": "\ue6a4"
},
{
"font_class": "gift-filled",
"unicode": "\ue6c4"
},
{
"font_class": "hand-down",
"unicode": "\ue63d"
},
{
"font_class": "hand-down-filled",
"unicode": "\ue63c"
},
{
"font_class": "hand-up",
"unicode": "\ue63f"
},
{
"font_class": "hand-up-filled",
"unicode": "\ue63e"
},
{
"font_class": "headphones",
"unicode": "\ue630"
},
{
"font_class": "heart",
"unicode": "\ue639"
},
{
"font_class": "heart-filled",
"unicode": "\ue641"
},
{
"font_class": "help",
"unicode": "\ue679"
},
{
"font_class": "help-filled",
"unicode": "\ue674"
},
{
"font_class": "home",
"unicode": "\ue662"
},
{
"font_class": "home-filled",
"unicode": "\ue663"
},
{
"font_class": "image",
"unicode": "\ue670"
},
{
"font_class": "image-filled",
"unicode": "\ue678"
},
{
"font_class": "images",
"unicode": "\ue650"
},
{
"font_class": "images-filled",
"unicode": "\ue64b"
},
{
"font_class": "info",
"unicode": "\ue669"
},
{
"font_class": "info-filled",
"unicode": "\ue649"
},
{
"font_class": "left",
"unicode": "\ue6b7"
},
{
"font_class": "link",
"unicode": "\ue6a5"
},
{
"font_class": "list",
"unicode": "\ue644"
},
{
"font_class": "location",
"unicode": "\ue6ae"
},
{
"font_class": "location-filled",
"unicode": "\ue6af"
},
{
"font_class": "locked",
"unicode": "\ue66b"
},
{
"font_class": "locked-filled",
"unicode": "\ue668"
},
{
"font_class": "loop",
"unicode": "\ue633"
},
{
"font_class": "mail-open",
"unicode": "\ue643"
},
{
"font_class": "mail-open-filled",
"unicode": "\ue63a"
},
{
"font_class": "map",
"unicode": "\ue667"
},
{
"font_class": "map-filled",
"unicode": "\ue666"
},
{
"font_class": "map-pin",
"unicode": "\ue6ad"
},
{
"font_class": "map-pin-ellipse",
"unicode": "\ue6ac"
},
{
"font_class": "medal",
"unicode": "\ue6a2"
},
{
"font_class": "medal-filled",
"unicode": "\ue6c3"
},
{
"font_class": "mic",
"unicode": "\ue671"
},
{
"font_class": "mic-filled",
"unicode": "\ue677"
},
{
"font_class": "micoff",
"unicode": "\ue67e"
},
{
"font_class": "micoff-filled",
"unicode": "\ue6b0"
},
{
"font_class": "minus",
"unicode": "\ue66f"
},
{
"font_class": "minus-filled",
"unicode": "\ue67d"
},
{
"font_class": "more",
"unicode": "\ue64d"
},
{
"font_class": "more-filled",
"unicode": "\ue64e"
},
{
"font_class": "navigate",
"unicode": "\ue66e"
},
{
"font_class": "navigate-filled",
"unicode": "\ue67a"
},
{
"font_class": "notification",
"unicode": "\ue6a6"
},
{
"font_class": "notification-filled",
"unicode": "\ue6c1"
},
{
"font_class": "paperclip",
"unicode": "\ue652"
},
{
"font_class": "paperplane",
"unicode": "\ue672"
},
{
"font_class": "paperplane-filled",
"unicode": "\ue675"
},
{
"font_class": "person",
"unicode": "\ue699"
},
{
"font_class": "person-filled",
"unicode": "\ue69d"
},
{
"font_class": "personadd",
"unicode": "\ue69f"
},
{
"font_class": "personadd-filled",
"unicode": "\ue698"
},
{
"font_class": "personadd-filled-copy",
"unicode": "\ue6d1"
},
{
"font_class": "phone",
"unicode": "\ue69c"
},
{
"font_class": "phone-filled",
"unicode": "\ue69b"
},
{
"font_class": "plus",
"unicode": "\ue676"
},
{
"font_class": "plus-filled",
"unicode": "\ue6c7"
},
{
"font_class": "plusempty",
"unicode": "\ue67b"
},
{
"font_class": "pulldown",
"unicode": "\ue632"
},
{
"font_class": "pyq",
"unicode": "\ue682"
},
{
"font_class": "qq",
"unicode": "\ue680"
},
{
"font_class": "redo",
"unicode": "\ue64a"
},
{
"font_class": "redo-filled",
"unicode": "\ue655"
},
{
"font_class": "refresh",
"unicode": "\ue657"
},
{
"font_class": "refresh-filled",
"unicode": "\ue656"
},
{
"font_class": "refreshempty",
"unicode": "\ue6bf"
},
{
"font_class": "reload",
"unicode": "\ue6b2"
},
{
"font_class": "right",
"unicode": "\ue6b5"
},
{
"font_class": "scan",
"unicode": "\ue62a"
},
{
"font_class": "search",
"unicode": "\ue654"
},
{
"font_class": "settings",
"unicode": "\ue653"
},
{
"font_class": "settings-filled",
"unicode": "\ue6ce"
},
{
"font_class": "shop",
"unicode": "\ue62f"
},
{
"font_class": "shop-filled",
"unicode": "\ue6cd"
},
{
"font_class": "smallcircle",
"unicode": "\ue67c"
},
{
"font_class": "smallcircle-filled",
"unicode": "\ue665"
},
{
"font_class": "sound",
"unicode": "\ue684"
},
{
"font_class": "sound-filled",
"unicode": "\ue686"
},
{
"font_class": "spinner-cycle",
"unicode": "\ue68a"
},
{
"font_class": "staff",
"unicode": "\ue6a7"
},
{
"font_class": "staff-filled",
"unicode": "\ue6cb"
},
{
"font_class": "star",
"unicode": "\ue688"
},
{
"font_class": "star-filled",
"unicode": "\ue68f"
},
{
"font_class": "starhalf",
"unicode": "\ue683"
},
{
"font_class": "trash",
"unicode": "\ue687"
},
{
"font_class": "trash-filled",
"unicode": "\ue685"
},
{
"font_class": "tune",
"unicode": "\ue6aa"
},
{
"font_class": "tune-filled",
"unicode": "\ue6ca"
},
{
"font_class": "undo",
"unicode": "\ue64f"
},
{
"font_class": "undo-filled",
"unicode": "\ue64c"
},
{
"font_class": "up",
"unicode": "\ue6b6"
},
{
"font_class": "top",
"unicode": "\ue6b6"
},
{
"font_class": "upload",
"unicode": "\ue690"
},
{
"font_class": "upload-filled",
"unicode": "\ue68e"
},
{
"font_class": "videocam",
"unicode": "\ue68c"
},
{
"font_class": "videocam-filled",
"unicode": "\ue689"
},
{
"font_class": "vip",
"unicode": "\ue6a8"
},
{
"font_class": "vip-filled",
"unicode": "\ue6c6"
},
{
"font_class": "wallet",
"unicode": "\ue6b1"
},
{
"font_class": "wallet-filled",
"unicode": "\ue6c2"
},
{
"font_class": "weibo",
"unicode": "\ue68b"
},
{
"font_class": "weixin",
"unicode": "\ue691"
}
] as IconsDataItem[]
// export const fontData = JSON.parse<IconsDataItem>(fontDataJson)

View File

@ -1,649 +0,0 @@
export const fontData = [
{
"font_class": "arrow-down",
"unicode": "\ue6be"
},
{
"font_class": "arrow-left",
"unicode": "\ue6bc"
},
{
"font_class": "arrow-right",
"unicode": "\ue6bb"
},
{
"font_class": "arrow-up",
"unicode": "\ue6bd"
},
{
"font_class": "auth",
"unicode": "\ue6ab"
},
{
"font_class": "auth-filled",
"unicode": "\ue6cc"
},
{
"font_class": "back",
"unicode": "\ue6b9"
},
{
"font_class": "bars",
"unicode": "\ue627"
},
{
"font_class": "calendar",
"unicode": "\ue6a0"
},
{
"font_class": "calendar-filled",
"unicode": "\ue6c0"
},
{
"font_class": "camera",
"unicode": "\ue65a"
},
{
"font_class": "camera-filled",
"unicode": "\ue658"
},
{
"font_class": "cart",
"unicode": "\ue631"
},
{
"font_class": "cart-filled",
"unicode": "\ue6d0"
},
{
"font_class": "chat",
"unicode": "\ue65d"
},
{
"font_class": "chat-filled",
"unicode": "\ue659"
},
{
"font_class": "chatboxes",
"unicode": "\ue696"
},
{
"font_class": "chatboxes-filled",
"unicode": "\ue692"
},
{
"font_class": "chatbubble",
"unicode": "\ue697"
},
{
"font_class": "chatbubble-filled",
"unicode": "\ue694"
},
{
"font_class": "checkbox",
"unicode": "\ue62b"
},
{
"font_class": "checkbox-filled",
"unicode": "\ue62c"
},
{
"font_class": "checkmarkempty",
"unicode": "\ue65c"
},
{
"font_class": "circle",
"unicode": "\ue65b"
},
{
"font_class": "circle-filled",
"unicode": "\ue65e"
},
{
"font_class": "clear",
"unicode": "\ue66d"
},
{
"font_class": "close",
"unicode": "\ue673"
},
{
"font_class": "closeempty",
"unicode": "\ue66c"
},
{
"font_class": "cloud-download",
"unicode": "\ue647"
},
{
"font_class": "cloud-download-filled",
"unicode": "\ue646"
},
{
"font_class": "cloud-upload",
"unicode": "\ue645"
},
{
"font_class": "cloud-upload-filled",
"unicode": "\ue648"
},
{
"font_class": "color",
"unicode": "\ue6cf"
},
{
"font_class": "color-filled",
"unicode": "\ue6c9"
},
{
"font_class": "compose",
"unicode": "\ue67f"
},
{
"font_class": "contact",
"unicode": "\ue693"
},
{
"font_class": "contact-filled",
"unicode": "\ue695"
},
{
"font_class": "down",
"unicode": "\ue6b8"
},
{
"font_class": "bottom",
"unicode": "\ue6b8"
},
{
"font_class": "download",
"unicode": "\ue68d"
},
{
"font_class": "download-filled",
"unicode": "\ue681"
},
{
"font_class": "email",
"unicode": "\ue69e"
},
{
"font_class": "email-filled",
"unicode": "\ue69a"
},
{
"font_class": "eye",
"unicode": "\ue651"
},
{
"font_class": "eye-filled",
"unicode": "\ue66a"
},
{
"font_class": "eye-slash",
"unicode": "\ue6b3"
},
{
"font_class": "eye-slash-filled",
"unicode": "\ue6b4"
},
{
"font_class": "fire",
"unicode": "\ue6a1"
},
{
"font_class": "fire-filled",
"unicode": "\ue6c5"
},
{
"font_class": "flag",
"unicode": "\ue65f"
},
{
"font_class": "flag-filled",
"unicode": "\ue660"
},
{
"font_class": "folder-add",
"unicode": "\ue6a9"
},
{
"font_class": "folder-add-filled",
"unicode": "\ue6c8"
},
{
"font_class": "font",
"unicode": "\ue6a3"
},
{
"font_class": "forward",
"unicode": "\ue6ba"
},
{
"font_class": "gear",
"unicode": "\ue664"
},
{
"font_class": "gear-filled",
"unicode": "\ue661"
},
{
"font_class": "gift",
"unicode": "\ue6a4"
},
{
"font_class": "gift-filled",
"unicode": "\ue6c4"
},
{
"font_class": "hand-down",
"unicode": "\ue63d"
},
{
"font_class": "hand-down-filled",
"unicode": "\ue63c"
},
{
"font_class": "hand-up",
"unicode": "\ue63f"
},
{
"font_class": "hand-up-filled",
"unicode": "\ue63e"
},
{
"font_class": "headphones",
"unicode": "\ue630"
},
{
"font_class": "heart",
"unicode": "\ue639"
},
{
"font_class": "heart-filled",
"unicode": "\ue641"
},
{
"font_class": "help",
"unicode": "\ue679"
},
{
"font_class": "help-filled",
"unicode": "\ue674"
},
{
"font_class": "home",
"unicode": "\ue662"
},
{
"font_class": "home-filled",
"unicode": "\ue663"
},
{
"font_class": "image",
"unicode": "\ue670"
},
{
"font_class": "image-filled",
"unicode": "\ue678"
},
{
"font_class": "images",
"unicode": "\ue650"
},
{
"font_class": "images-filled",
"unicode": "\ue64b"
},
{
"font_class": "info",
"unicode": "\ue669"
},
{
"font_class": "info-filled",
"unicode": "\ue649"
},
{
"font_class": "left",
"unicode": "\ue6b7"
},
{
"font_class": "link",
"unicode": "\ue6a5"
},
{
"font_class": "list",
"unicode": "\ue644"
},
{
"font_class": "location",
"unicode": "\ue6ae"
},
{
"font_class": "location-filled",
"unicode": "\ue6af"
},
{
"font_class": "locked",
"unicode": "\ue66b"
},
{
"font_class": "locked-filled",
"unicode": "\ue668"
},
{
"font_class": "loop",
"unicode": "\ue633"
},
{
"font_class": "mail-open",
"unicode": "\ue643"
},
{
"font_class": "mail-open-filled",
"unicode": "\ue63a"
},
{
"font_class": "map",
"unicode": "\ue667"
},
{
"font_class": "map-filled",
"unicode": "\ue666"
},
{
"font_class": "map-pin",
"unicode": "\ue6ad"
},
{
"font_class": "map-pin-ellipse",
"unicode": "\ue6ac"
},
{
"font_class": "medal",
"unicode": "\ue6a2"
},
{
"font_class": "medal-filled",
"unicode": "\ue6c3"
},
{
"font_class": "mic",
"unicode": "\ue671"
},
{
"font_class": "mic-filled",
"unicode": "\ue677"
},
{
"font_class": "micoff",
"unicode": "\ue67e"
},
{
"font_class": "micoff-filled",
"unicode": "\ue6b0"
},
{
"font_class": "minus",
"unicode": "\ue66f"
},
{
"font_class": "minus-filled",
"unicode": "\ue67d"
},
{
"font_class": "more",
"unicode": "\ue64d"
},
{
"font_class": "more-filled",
"unicode": "\ue64e"
},
{
"font_class": "navigate",
"unicode": "\ue66e"
},
{
"font_class": "navigate-filled",
"unicode": "\ue67a"
},
{
"font_class": "notification",
"unicode": "\ue6a6"
},
{
"font_class": "notification-filled",
"unicode": "\ue6c1"
},
{
"font_class": "paperclip",
"unicode": "\ue652"
},
{
"font_class": "paperplane",
"unicode": "\ue672"
},
{
"font_class": "paperplane-filled",
"unicode": "\ue675"
},
{
"font_class": "person",
"unicode": "\ue699"
},
{
"font_class": "person-filled",
"unicode": "\ue69d"
},
{
"font_class": "personadd",
"unicode": "\ue69f"
},
{
"font_class": "personadd-filled",
"unicode": "\ue698"
},
{
"font_class": "personadd-filled-copy",
"unicode": "\ue6d1"
},
{
"font_class": "phone",
"unicode": "\ue69c"
},
{
"font_class": "phone-filled",
"unicode": "\ue69b"
},
{
"font_class": "plus",
"unicode": "\ue676"
},
{
"font_class": "plus-filled",
"unicode": "\ue6c7"
},
{
"font_class": "plusempty",
"unicode": "\ue67b"
},
{
"font_class": "pulldown",
"unicode": "\ue632"
},
{
"font_class": "pyq",
"unicode": "\ue682"
},
{
"font_class": "qq",
"unicode": "\ue680"
},
{
"font_class": "redo",
"unicode": "\ue64a"
},
{
"font_class": "redo-filled",
"unicode": "\ue655"
},
{
"font_class": "refresh",
"unicode": "\ue657"
},
{
"font_class": "refresh-filled",
"unicode": "\ue656"
},
{
"font_class": "refreshempty",
"unicode": "\ue6bf"
},
{
"font_class": "reload",
"unicode": "\ue6b2"
},
{
"font_class": "right",
"unicode": "\ue6b5"
},
{
"font_class": "scan",
"unicode": "\ue62a"
},
{
"font_class": "search",
"unicode": "\ue654"
},
{
"font_class": "settings",
"unicode": "\ue653"
},
{
"font_class": "settings-filled",
"unicode": "\ue6ce"
},
{
"font_class": "shop",
"unicode": "\ue62f"
},
{
"font_class": "shop-filled",
"unicode": "\ue6cd"
},
{
"font_class": "smallcircle",
"unicode": "\ue67c"
},
{
"font_class": "smallcircle-filled",
"unicode": "\ue665"
},
{
"font_class": "sound",
"unicode": "\ue684"
},
{
"font_class": "sound-filled",
"unicode": "\ue686"
},
{
"font_class": "spinner-cycle",
"unicode": "\ue68a"
},
{
"font_class": "staff",
"unicode": "\ue6a7"
},
{
"font_class": "staff-filled",
"unicode": "\ue6cb"
},
{
"font_class": "star",
"unicode": "\ue688"
},
{
"font_class": "star-filled",
"unicode": "\ue68f"
},
{
"font_class": "starhalf",
"unicode": "\ue683"
},
{
"font_class": "trash",
"unicode": "\ue687"
},
{
"font_class": "trash-filled",
"unicode": "\ue685"
},
{
"font_class": "tune",
"unicode": "\ue6aa"
},
{
"font_class": "tune-filled",
"unicode": "\ue6ca"
},
{
"font_class": "undo",
"unicode": "\ue64f"
},
{
"font_class": "undo-filled",
"unicode": "\ue64c"
},
{
"font_class": "up",
"unicode": "\ue6b6"
},
{
"font_class": "top",
"unicode": "\ue6b6"
},
{
"font_class": "upload",
"unicode": "\ue690"
},
{
"font_class": "upload-filled",
"unicode": "\ue68e"
},
{
"font_class": "videocam",
"unicode": "\ue68c"
},
{
"font_class": "videocam-filled",
"unicode": "\ue689"
},
{
"font_class": "vip",
"unicode": "\ue6a8"
},
{
"font_class": "vip-filled",
"unicode": "\ue6c6"
},
{
"font_class": "wallet",
"unicode": "\ue6b1"
},
{
"font_class": "wallet-filled",
"unicode": "\ue6c2"
},
{
"font_class": "weibo",
"unicode": "\ue68b"
},
{
"font_class": "weixin",
"unicode": "\ue691"
}
]
// export const fontData = JSON.parse<IconsDataItem>(fontDataJson)

View File

@ -1,88 +0,0 @@
{
"id": "uni-icons",
"displayName": "uni-icons 图标",
"version": "2.0.9",
"description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。",
"keywords": [
"uni-ui",
"uniui",
"icon",
"图标"
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": "^3.2.14"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
},
"uni_modules": {
"dependencies": ["uni-scss"],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y",
"app-uvue": "y"
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y",
"钉钉": "y",
"快手": "y",
"飞书": "y",
"京东": "y"
},
"快应用": {
"华为": "y",
"联盟": "y"
},
"Vue": {
"vue2": "y",
"vue3": "y"
}
}
}
}
}

View File

@ -1,8 +0,0 @@
## Icons 图标
> **组件名uni-icons**
> 代码块: `uIcons`
用于展示 icons 图标 。
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons)
#### 如使用过程中有任何问题或者您对uni-ui有一些好的建议欢迎加入 uni-ui 交流群871950839