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

410 lines
14 KiB
Vue
Raw 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 tn-mb-xl" v-if="flag">
<view class="tn-p-lg tn-text-bold tn-text-2xl tn-text-center tn-border-bottom tn-gray-disabled_border" :style="{'color':color}">
{{dateTimeValue.replace('-','年01-')}}{{menuData.title}}概况
</view>
<view class="detail tn-radius tn-ml-lg tn-mr-lg tn-text-lg" v-if="detailData">
<view class="tn-text-2xl tn-text-bold tn-text-center tn-mt-sm tn-mb-sm" :style="{'color':color}">江津工业园</view>
<view class="block tn-radius tn-flex tn-flex-center-between tn-shadow tn-p-sm" v-if="detailData[1]">
<view class="item tn-p-sm">
<TnTitle title="规上产值" mode="vLine" size="lg"/>
<view class="tn-pt-xs tn-ml-sm">
<span class="tn-text-bold tn-text-2xl">{{detailData[1].output}}</span>亿元
</view>
<view class="tn-pt-xs tn-ml-sm">
同比
<span class="tn-text-bold" :style="{'color':detailData[1].output_increase>=0?'red':'green'}">
{{detailData[1].output_increase>=0?'+':''}}{{detailData[1].output_increase}}%
</span>
</view>
</view>
<view class="item tn-p-sm">
<TnTitle title="当月产值" mode="vLine" size="lg"/>
<view class="tn-pt-xs tn-ml-sm">
<span class="tn-text-bold tn-text-2xl">{{detailData[1].month_output}}</span>亿元
</view>
<view class="tn-pt-xs tn-ml-sm">
同比
<span class="tn-text-bold" :style="{'color':detailData[1].month_increase>=0?'red':'green'}">
{{detailData[1].month_increase>=0?'+':''}}{{detailData[1].month_increase}}%
</span>
</view>
</view>
</view>
<view class="tn-text-2xl tn-text-bold tn-text-center tn-mt-lg tn-mb-sm" :style="{'color':color}">各园区工业经济情况</view>
<view class="chart-box">
<ucharts-column :chartData="manuChartData" type="group"/>
</view>
<view class="tn-text-2xl tn-text-bold tn-text-center tn-mt-sm tn-mb-sm" :style="{'color':color}">双福工业园</view>
<view class="block tn-radius tn-flex tn-flex-center-between tn-shadow tn-p-sm" v-if="detailData[2]">
<view class="itemtn-p-sm">
<TnTitle title="规上产值" mode="vLine" size="lg"/>
<view class="tn-pt-xs tn-ml-sm">
<span class="tn-text-bold tn-text-2xl">{{detailData[2].output}}</span>亿元
</view>
<view class="tn-pt-xs tn-ml-sm">
同比
<span class="tn-text-bold" :style="{'color':detailData[2].output_increase>=0?'red':'green'}">
{{detailData[2].output_increase>=0?'+':''}}{{detailData[2].output_increase}}%
</span>
</view>
</view>
<view class="item tn-p-sm">
<TnTitle title="当月产值" mode="vLine" size="lg"/>
<view class="tn-pt-xs tn-ml-sm">
<span class="tn-text-bold tn-text-2xl">{{detailData[2].month_output}}</span>亿元
</view>
<view class="tn-pt-xs tn-ml-sm">
同比
<span class="tn-text-bold" :style="{'color':detailData[2].month_increase>=0?'red':'green'}">
{{detailData[2].month_increase>=0?'+':''}}{{detailData[2].month_increase}}%
</span>
</view>
</view>
</view>
<view class="tn-text-2xl tn-text-bold tn-text-center tn-mt-sm tn-mb-sm" :style="{'color':color}">珞璜工业园</view>
<view class="block tn-radius tn-flex tn-flex-center-between tn-shadow tn-p-sm" v-if="detailData[5]">
<view class="item tn-p-sm">
<TnTitle title="规上产值" mode="vLine" size="lg"/>
<view class="tn-pt-xs tn-ml-sm">
<span class="tn-text-bold tn-text-2xl">{{detailData[5].output}}</span>亿元
</view>
<view class="tn-pt-xs tn-ml-sm">
同比
<span class="tn-text-bold" :style="{'color':detailData[5].output_increase>=0?'red':'green'}">
{{detailData[5].output_increase>=0?'+':''}}{{detailData[5].output_increase}}%
</span>
</view>
</view>
<view class="item tn-p-sm">
<TnTitle title="当月产值" mode="vLine" size="lg"/>
<view class="tn-pt-xs tn-ml-sm">
<span class="tn-text-bold tn-text-2xl">{{detailData[5].month_output}}</span>亿元
</view>
<view class="tn-pt-xs tn-ml-sm">
同比
<span class="tn-text-bold" :style="{'color':detailData[5].month_increase>=0?'red':'green'}">
{{detailData[5].month_increase>=0?'+':''}}{{detailData[5].month_increase}}%
</span>
</view>
</view>
</view>
<view class="tn-text-2xl tn-text-bold tn-text-center tn-mt-sm tn-mb-sm" :style="{'color':color}">德感工业园</view>
<view class="block tn-radius tn-flex tn-flex-center-between tn-shadow tn-p-sm" v-if="detailData[4]">
<view class="item tn-p-sm">
<TnTitle title="规上产值" mode="vLine" size="lg"/>
<view class="tn-pt-xs tn-ml-sm">
<span class="tn-text-bold tn-text-2xl">{{detailData[4].output}}</span>亿元
</view>
<view class="tn-pt-xs tn-ml-sm">
同比
<span class="tn-text-bold" :style="{'color':detailData[4].output_increase>=0?'red':'green'}">
{{detailData[4].output_increase>=0?'+':''}}{{detailData[4].output_increase}}%
</span>
</view>
</view>
<view class="item tn-p-sm">
<TnTitle title="当月产值" mode="vLine" size="lg"/>
<view class="tn-pt-xs tn-ml-sm">
<span class="tn-text-bold tn-text-2xl">{{detailData[4].month_output}}</span>亿元
</view>
<view class="tn-pt-xs tn-ml-sm">
同比
<span class="tn-text-bold" :style="{'color':detailData[4].month_increase>=0?'red':'green'}">
{{detailData[4].month_increase>=0?'+':''}}{{detailData[4].month_increase}}%
</span>
</view>
</view>
</view>
<view class="tn-text-2xl tn-text-bold tn-text-center tn-mt-sm tn-mb-sm" :style="{'color':color}">白沙工业园</view>
<view class="block tn-radius tn-flex tn-flex-center-between tn-shadow tn-p-sm" v-if="detailData[3]">
<view class="item tn-p-sm">
<TnTitle title="规上产值" mode="vLine" size="lg"/>
<view class="tn-pt-xs tn-ml-sm">
<span class="tn-text-bold tn-text-2xl">{{detailData[3].output}}</span>亿元
</view>
<view class="tn-pt-xs tn-ml-sm">
同比
<span class="tn-text-bold" :style="{'color':detailData[3].output_increase>=0?'red':'green'}">
{{detailData[3].output_increase>=0?'+':''}}{{detailData[3].output_increase}}%
</span>
</view>
</view>
<view class="item tn-p-sm">
<TnTitle title="当月产值" mode="vLine" size="lg"/>
<view class="tn-pt-xs tn-ml-sm">
<span class="tn-text-bold tn-text-2xl">{{detailData[3].month_output}}</span>亿元
</view>
<view class="tn-pt-xs tn-ml-sm">
同比
<span class="tn-text-bold" :style="{'color':detailData[3].month_increase>=0?'red':'green'}">
{{detailData[3].month_increase>=0?'+':''}}{{detailData[3].month_increase}}%
</span>
</view>
</view>
</view>
<!-- <view class="text">
<p v-if="detailData[2]">双福工业园实现规上产值<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>%
当月实现产值<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[2].month_output}}</text>亿元
同比增长<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[2].month_increase}}</text>%{{detailData[2].explan}}</p>
<p v-if="detailData[3]">白沙工业园实现规上产值<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>%
当月实现产值<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[3].month_output}}</text>亿元
同比增长<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[3].month_increase}}</text>%{{detailData[3].explan}}</p>
<p v-if="detailData[4]">德感工业园实现规上产值<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>%
当月实现产值<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[4].month_output}}</text>亿元
同比增长<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[4].month_increase}}</text>%{{detailData[4].explan}}</p>
<p v-if="detailData[5]">珞璜工业园实现规上产值<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>%
当月实现产值<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[5].month_output}}</text>亿元
同比增长<text class="tn-text-bold tn-text-2xl" :style="{'color':color}">{{detailData[5].month_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';
import UchartsColumn from '../../../components/ucharts-column.vue'
const { onShareAppMessage,onShareTimeline } = onShare()
const shareTitle = ref()
const shareParam = ref()
const flag = ref(false)
const color = ref()
const manuChartData = 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: 'manu'
}
}).then((res:any)=>{
if(res.data.code === 0){
let temp = []
res.data.data.map((item:any) =>{
temp[item.parkId] = item
})
detailData.value = temp
setTimeout(() => {
let manu_res = {
categories: ["双福","珞璜","德感","白沙"],
series: [
{
name: "规上产值",
data: [temp[2].output,temp[5].output,temp[4].output,temp[3].output]
},
{
name: "当月产值",
data: [temp[2].month_output,temp[5].month_output,temp[4].month_output,temp[3].month_output]
}
]
};
manuChartData.value = JSON.parse(JSON.stringify(manu_res));
}, 500);
}else{
isEmpty.value = true
}
})
flag.value = true
}
onShareAppMessage(() => {
return {
title:shareTitle.value,
path:'/pages/report/economic/manu/index?id=' + shareParam.value
}
})
onShareTimeline(() => {
return {
title:shareTitle.value,
path:'/pages/report/economic/manu/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: -1;
&::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{
background-color: #fff;
margin-top: -40rpx;
padding-bottom: 40rpx;
border-radius: 40rpx 40rpx 0 0;
z-index: 9;
.detail{
min-height: calc(100vh - 580rpx);
.block{
background: linear-gradient(0deg,rgba(0, 150, 255, 0.4),rgba(0, 150, 255, 0.05));
.item{
width: calc(100% / 2 - 10rpx);
}
}
}
}
.picker-btn{
position: fixed;
z-index: 999;
right: 40rpx;
bottom: 60rpx;
}
</style>