2024-11-05 10:14:41 +08:00

252 lines
7.7 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="economic-detail-page">
<TnNavbar
fixed
bg-color="rgba(255, 255, 255, 0.01)"
:bottom-shadow="false"
:placeholder="false"
/>
<view class="economic-summary"
:style="{'background':'url('+ menuData.pic +') no-repeat','backgroundPosition':'center center','backgroundSize':'100% 100%'}"
>
<view class="summary-content">
<view class="summary-info">
<view class="title">{{ menuData.title }}</view>
<view class="desc">{{ menuData.description }}</view>
</view>
</view>
</view>
<view class="summary-detail" v-if="flag">
<view class="tn-p-lg tn-text-bold tn-text-2xl tn-text-center" :style="{'color':color}">
{{dateTimeValue.replace('-','年01-')}}{{menuData.title}}概况
</view>
<view class="detail tn-border tn-shadow-sm tn-p tn-radius tn-ml-lg tn-mr-lg tn-text-lg" :style="{'borderColor':color,'textIndent':'2em','boxShadow':'0 0.3125rem 1.875rem -1.25rem '+ color}" v-if="detailData">
<view class="text">
<view class="tn-text-2xl tn-text-bold tn-text-center tn-mt-sm tn-mb-sm" :style="{'color':color,'textIndent':0}">总体情况</view>
<p v-if="detailData[1]">{{dateTimeValue.replace('-','年01-')}}
<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[1].number}}</text>
家市双百企业实现规模产值<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[1].output}}</text>亿元
同比增长<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[1].output_increase}}</text>%{{detailData[1].explan}}
</p>
<view class="tn-text-2xl tn-text-bold tn-text-center tn-mt-lg tn-mb-sm" :style="{'color':color,'textIndent':0}">各园区"双百企业"情况</view>
<p v-if="detailData[2]">双福<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[2].number}}</text>
家市双百企业实现规模产值<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[2].output}}</text>亿元
同比增长<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[2].output_increase}}</text>%{{detailData[2].explan}}</p>
<p v-if="detailData[3]">白沙<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[3].number}}</text>
家市双百企业实现规模产值<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[3].output}}</text>亿元
同比增长<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[3].output_increase}}</text>%{{detailData[3].explan}}</p>
<p v-if="detailData[4]">德感<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[4].number}}</text>
家市双百企业实现规模产值<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[4].output}}</text>亿元
同比增长<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[4].output_increase}}</text>%{{detailData[4].explan}}</p>
<p v-if="detailData[5]">珞璜<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[5].number}}</text>
家市双百企业实现规模产值<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[5].output}}</text>亿元
同比增长<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[5].output_increase}}</text>%{{detailData[5].explan}}</p>
</view>
</view>
<view class="detail tn-flex-center-center" v-else>
<TnEmpty mode="data" size="lg" color="#ccc" v-if="isEmpty"/>
</view>
</view>
<tn-date-time-picker v-model="dateTimeValue" v-model:open="openDateTimePicker" init-current-date-time format="YYYY-MM" mode="yearmonth" @confirm="getDate"/>
<view class="picker-btn" @click="showPicker">
<tn-button shape="circle" type="success" size="lg" shadow shadow-color="tn-type-primary_shadow">
<tn-icon name="history" :size="50"/>
</tn-button>
</view>
</view>
</template>
<script lang="ts" setup>
import { reactive, ref } from 'vue';
import request from '@/utils/request';
import { onLoad } from "@dcloudio/uni-app";
import TnDateTimePicker from '@/uni_modules/tuniaoui-vue3/components/date-time-picker/src/date-time-picker.vue'
import TnEmpty from '@/uni_modules/tuniaoui-vue3/components/empty/src/empty.vue'
import onShare from '@/utils/share';
const { onShareAppMessage,onShareTimeline } = onShare()
const shareTitle = ref()
const shareParam = ref()
const flag = ref(false)
const color = ref()
const isEmpty = ref(false)
const menuData = reactive({
pic:'',
title:'',
color:'',
description:'',
})
const detailData = ref();
const dateTimeValue = ref();
const openDateTimePicker = ref(false)
const getDate = (date:string) => {
detailData.value = null
getSummaryData(date)
}
const getMenuData = (id:number) => {
request({
url:'/front/report/menu',
method:'GET',
data:{ menuId:id }
}).then((res:any)=>{
if(res.data.code === 0){
Object.assign(menuData,res.data.data)
color.value = res.data.data.color
shareParam.value = res.data.data.menuId
}else{
uni.showToast({
icon:'none',
title:res.data.message
})
}
})
}
const showPicker = () => {
openDateTimePicker.value = true
}
const getDateMonth = () => {
let datetime = new Date();
let month:any = datetime.getMonth()
month = month < 10?'0' + month : month
let dateMonth = datetime.getFullYear() + '-' + month
dateTimeValue.value = dateMonth;
}
const getSummaryData = (month:string) => {
request({
url:'/front/report/eco',
method:'GET',
data:{
month: month,
field: 'company'
}
}).then((res:any)=>{
if(res.data.code === 0){
let temp = []
res.data.data.map((item:any) =>{
temp[item.parkId] = item
})
detailData.value = temp
}else{
isEmpty.value = true
}
})
flag.value = true
}
onShareAppMessage(() => {
return {
title:shareTitle.value,
path:'/pages/report/economic/company/index?id=' + shareParam.value
}
})
onShareTimeline(() => {
return {
title:shareTitle.value,
path:'/pages/report/economic/company/index?id=' + shareParam.value
}
})
onLoad((option)=>{
getMenuData(option.id)
getDateMonth()
getSummaryData(dateTimeValue.value)
})
</script>
<style lang="scss" scoped>
.economic-summary {
position: relative;
width: 100%;
height: 450rpx;
z-index: 2;
&::before {
content: '';
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: linear-gradient(
0deg,
rgba(0, 0, 0, 0.4) 0%,
rgba(0, 0, 0, 0) 100%
);
z-index: 1;
}
.summary-content {
position: absolute;
left: 0;
bottom: 80rpx;
width: 100%;
padding: 0rpx 30rpx;
z-index: 2;
display: flex;
align-items: center;
.summary-info {
flex: 1;
color: #fff;
.title {
font-size: 52rpx;
font-weight: bold;
letter-spacing: 8rpx;
text-shadow: 4rpx 4rpx 10rpx #585858;
}
.desc {
font-size: 34rpx;
margin-top: 20rpx;
letter-spacing: 4rpx;
text-shadow: 4rpx 4rpx 10rpx #585858;
}
}
}
}
.summary-detail{
position: relative;
background-color: #fff;
top: -40rpx;
border-radius: 40rpx 40rpx 0 0;
z-index: 9;
.text{
letter-spacing: 4rpx;
text-align: justify;
}
.detail{
min-height: calc(100vh - 580rpx);
letter-spacing: 0.2em;
}
}
.picker-btn{
position: fixed;
z-index: 999;
right: 40rpx;
bottom: 60rpx;
}
</style>