<script setup> import { ref, reactive } from "vue"; import { onLoad, } from "@dcloudio/uni-app"; import { getJSDDlist, getXMLXlist, getHYFLlist, getZJLYlist, } from "@/api/work/projectInfo.js"; import { getXMXZlist, } from "@/api/home.js"; import { getIndustyRateValueData, getIndustyRateAmtData, getAreaRateData, getYearRateData } from "@/api/work/analysis.js"; // 年度 let yearShow = ref(false); let defaultIndex = ref([0]); let yearColumns = ref([ ["2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "2032", "2033" ] ]) const yearShowChoose = function() { yearShow.value = true; } const yearClose = function(e) { if (e) searchInfo.year = e.value[0]; yearShow.value = false; } // 建设地点 let jsddFull = []; let jsddColumns = ref([]); const getJSDD = function() { getJSDDlist().then(res => { jsddFull = res.data.list; jsddColumns.value = [res.data.list.map(item => item.value)]; }) }; let jsddShow = ref(false); const jsddShowChoose = function() { jsddShow.value = true; } const jsddClose = function(e) { if (e) searchInfo.subjectId = e.value[0]; jsddShow.value = false; } // 项目类型 let xmlxFull = []; let xmlxColumns = ref([]); const getXMLX = function() { getXMLXlist().then(res => { xmlxFull = res.data.list; xmlxColumns.value = [res.data.list.map(item => item.value)]; }) }; let xmlxShow = ref(false); const xmlxShowChoose = function() { xmlxShow.value = true; } const xmlxClose = function(e) { if (e) searchInfo.kind = e.value[0]; xmlxShow.value = false; } // 项目性质 let xmxzFull = []; let xmxzColumns = ref([]); const getXMXZ = () => { getXMXZlist().then(res => { xmxzFull = res.data.list; xmxzFull.unshift({ key: null, value: "所有性质" }); xmxzFull = xmxzFull.filter(item => item.value !== "储备项目"); xmxzColumns.value = [xmxzFull.map(item => item.value)]; }) }; let xmxzShow = ref(false); const xmxzShowChoose = () => { xmxzShow.value = true; } const xmxzClose = e => { if (e) searchInfo.propKind = e.value[0]; xmxzShow.value = false; } // 是否隐藏 let hideFull = [{ key: null, value: "所有" }, { key: 1, value: "隐藏" }, { key: 0, value: "正常" }, ]; let hideColumns = ref([ ["所有", "隐藏", "正常"] ]) let hideShow = ref(false); const hideShowChoose = function() { hideShow.value = true; } const hideClose = function(e) { if (e) searchInfo.isHide = e.value[0]; hideShow.value = false; } // 行业分类 let hyflFull = [] let hyflColumns = ref([]) const getHYFL = () => { getHYFLlist().then(res => { hyflFull = res.data.list; hyflFull.unshift({ key: null, value: "所有分类" }); hyflColumns.value = [res.data.list.map(item => item.value)]; }) } let hyflShow = ref(false) const hyflShowChoose = () => { hyflShow.value = true } const hyflClose = e => { if (e) searchInfo.hyfl = e.value[0]; hyflShow.value = false } // 亿元项目 let yTypeFull = [{ key: null, value: "全部" }, { key: 1, value: "亿元以下" }, { key: 2, value: "1-5亿" }, { key: 3, value: "5-10亿" }, { key: 4, value: "10亿以上" }, ] let yTypeColumns = ref([ ["全部", "亿元以下", "1-5亿", "5-10亿", "10亿以上"] ]) let yTypeShow = ref(false) const yTypeShowChoose = () => { yTypeShow.value = true } const yTypeClose = e => { if (e) searchInfo.yType = e.value[0]; yTypeShow.value = false } // 取值模式 let modeFull = [{ key: 1, value: "实际值" }, { key: 2, value: "预测值" } ] let modeColumns = ref([ ["实际值", "预测值"] ]) let modeShow = ref(false) const modeShowChoose = () => { modeShow.value = true } const modeClose = e => { if (e) searchInfo.mode = e.value[0]; modeShow.value = false } // 资金来源 let zjlyFull = [] let zjlyColumns = ref([]) const getZJLY = () => { getZJLYlist().then(res => { zjlyFull = res.data.list; zjlyFull.unshift({ key: null, value: "所有来源" }); zjlyColumns.value = [res.data.list.map(item => item.value)]; }) } let zjlyShow = ref(false) const zjlyShowChoose = () => { zjlyShow.value = true } const zjlyClose = e => { if (e) searchInfo.zjly = e.value[0]; zjlyShow.value = false } // 同比/环比 let yearOnYearFull = [{ key: 1, value: "同比" }, { key: 2, value: "环比" }]; let yearOnYearColumns = ref([ ["同比", "环比"] ]) let yearOnYearShow = ref(false); const yearOnYearShowChoose = function() { yearOnYearShow.value = true; } const yearOnYearClose = function(e) { if (e) searchInfo.kindType = e.value[0]; yearOnYearShow.value = false; } // 页面主题 let titleMark = null; let titleText = ref(""); let titleEnum = { "industyRateValue": { text: "行业占比分析-数量", showArray: [{ text: "行业分类", key: "title", width: "200rpx" }, { text: "项目数量", key: "num", width: "100rpx", through: true, }, { text: "占比(%)", key: "rage", width: "100rpx" }], emitFunction: function(data) { getIndustryRateValue(data); } }, "industyRateAmt": { text: "行业占比分析-金额", showArray: [{ text: "行业分类", key: "title", width: "200rpx" }, { text: "投资金额(万元)", key: "num", width: "100rpx", through: true, }, { text: "占比(%)", key: "rage", width: "100rpx" }], emitFunction: function(data) { getIndustryAmtValue(data); } }, "areaRate": { text: "区县占比分析", showArray: [{ text: "建设地点", key: "jsddName", width: "150rpx", through: true, }, // { // text: "项目数", // key: "totalNum", // width: "150rpx", // }, { text: "投资完成率(%)", key: "amtRate", width: "180rpx", through: true, }, { text: "开工率(%)", key: "beginRate", width: "150rpx", through: true, } ], emitFunction: function(data) { getAreaRateValue(data); } }, "yearRate": { text: "年度投资分析", showArray: [{ text: "月份", key: "strmonth", }, { text: "上年度投资(万元)", key: "amt_last1", }, { text: "本年度投资(万元)", key: "amt_cur", }, { text: "增速(%)", key: "num_bl", }], emitFunction: function(data) { getYearRateValue(data) } }, }; // 展示列表 let showList = ref([]); const combineshowList = () => { let chooseList = titleEnum[titleMark].showArray; if (titleMark === "yearRate") { if (searchInfo.kindType === "同比") { chooseList = [{ text: "月份", key: "strmonth", width: "100rpx" }, { text: "上年度投资(万元)", key: "amt_last1", width: "200rpx" }, { text: "本年度投资(万元)", key: "amt_cur", width: "200rpx" }, { text: "增速(%)", key: "num_bl", width: "100rpx" }] } else { //环比 chooseList = [{ text: "月份", key: "strmonth", width: "100rpx" }, { text: "上月度投资(万元)", key: "amt_last1", width: "200rpx" }, { text: "本月度投资(万元)", key: "amt_cur", width: "200rpx" }, { text: "增速(%)", key: "num_bl", width: "100rpx" }] } } let tempArr = []; for (let i in chooseList) { tempArr.push(Object.assign({ value: null }, chooseList[i])); } showList.value = tempArr; } // 搜索内容 let listTotal = ref(0); let itemList = ref([]); let searchInfo = reactive({ year: null, //年度 subjectId: null, //建设地点 kind: null, //项目类型 propKind: null, //项目性质 isHide: "所有", //是否隐藏, hyfl: null, //行业分类, yType: null, //亿元项目 mode: "实际值", //取值模式, kindType: "同比", //同比/环比 }); const getList = () => { let params = { year: searchInfo.year, //年度 subjectId: jsddFull.find(item => item.value === searchInfo.subjectId)?.key, //建设地点 kind: xmlxFull.find(item => item.value === searchInfo.kind)?.key, //项目类型 propKind: xmxzFull.find(item => item.value === searchInfo.propKind)?.key, //项目性质 isHide: hideFull.find(item => item.value === searchInfo.isHide)?.key, //是否隐藏 hyfl: hyflFull.find(item => item.value === searchInfo.hyfl)?.key, //行业分类 yType: yTypeFull.find(item => item.value === searchInfo.yType)?.key, //亿元项目 mode: modeFull.find(item => item.value === searchInfo.mode)?.key, //取值模式 zjly: zjlyFull.find(item => item.value === searchInfo.zjly)?.key, //资金来源 kindType: yearOnYearFull.find(item => item.value === searchInfo.kindType)?.key, //同比/环比 }; if (titleMark === "yearRate") combineshowList() titleEnum[titleMark].emitFunction(params); } // 行业占比分析-数量 const getIndustryRateValue = params => { getIndustyRateValueData(params).then(res => { itemList.value = res.data.list; listTotal.value = res.data.list.length; createPieData(res.data.list); }) } // 行业占比分析-金额 const getIndustryAmtValue = params => { getIndustyRateAmtData(params).then(res => { itemList.value = res.data.list; listTotal.value = res.data.list.length; createPieData(res.data.list); }) } // 区县占比分析 const getAreaRateValue = params => { getAreaRateData(params).then(res => { itemList.value = res.data.list; listTotal.value = res.data.list.length; createPieData(res.data.list, "jsddName", "totalNum", true); }) } // 年度投资分析 const getYearRateValue = params => { getYearRateData(params).then(res => { itemList.value = res.data.list; listTotal.value = res.data.list.length; createLineData(res.data.list); }) } // 穿透 const goToProjectList = (item, keyword) => { // 判断是否有操作 let chooseList = titleEnum[titleMark].showArray; let haveThroughOption = chooseList.find(item => item.key === keyword)?.through; if (!haveThroughOption) return; let params = { year: searchInfo.year, //年度 subjectId: jsddFull.find(item => item.value === searchInfo.subjectId)?.key, //建设地点 kind: xmlxFull.find(item => item.value === searchInfo.kind)?.key, //项目类型 propKind: xmxzFull.find(item => item.value === searchInfo.propKind)?.key, //项目性质 isHide: hideFull.find(item => item.value === searchInfo.isHide)?.key, //是否隐藏 zbCheck: 1 }; Object.keys(params).forEach((key) => { let value = params[key]; if ((value ?? "") === "") delete params[key] }) if (titleMark === "industyRateValue" || titleMark === "industyRateAmt") { params.indusKind = item.indusKind; params.queryType = 0; } if (titleMark === "areaRate") { params.subjectId = item.subjectId; params.queryType = 0; } let url = "/pages/analysis/projectList/index?"; for (let i in params) { let item = null if (!((params[i] ?? "") === "")) { item = `${i}=${params[i]}&`; } else { item = `${i}=&`; } url = url += item; }; uni.navigateTo({ url }) } // 饼图 let showPie = ref(false); const pieOpts = { color: ["#90B5F4", "#6497EE", "#1869F6", "#FF8229", "#FFAC71"], padding: [0, 5, 0, 5], enableScroll: false, legend: { show: false }, extra: { pie: { activeOpacity: 0.5, activeRadius: 10, offsetAngle: 0, border: false, offsetAngle: -90 } } } let pieChartData = ref({ series: [{ data: [] }] }) const createPieData = (list, name = "title", unit = "num", isDoublePie = false) => { // 饼状图数据 let pieList = [] for (let i in list) { pieList.push({ "name": list[i][name], "value": list[i][unit] ?? 0, "labelShow": false }) } pieChartData.value.series[0].data = pieList; if (isDoublePie) { createDoublePieData(list); } else { showPie.value = true; } } // 双饼 let itemListOrderByAmt = ref([]) let showDoublePie = ref(false); const pieDoubleOpts = { color: ["#90B5F4", "#6497EE", "#1869F6", "#FF8229", "#FFAC71"], padding: [0, 5, 0, 5], enableScroll: false, legend: { show: false }, extra: { pie: { activeOpacity: 0.5, activeRadius: 10, offsetAngle: 0, border: false, offsetAngle: -90, customRadius: 50, } } } let doublePieChartData = ref({ series: [{ data: [] }] }) const createDoublePieData = list => { itemListOrderByAmt.value = JSON.parse(JSON.stringify(itemList.value)); itemListOrderByAmt.value.sort(sortByValue('amt', -1)); let pieList = []; for (let i in itemListOrderByAmt.value) { pieList.push({ "name": itemListOrderByAmt.value[i].jsddName, "value": itemListOrderByAmt.value[i].amt ?? 0, "labelShow": false }) } doublePieChartData.value.series[0].data = pieList; showDoublePie.value = true; } const sortByValue = (attr, rev) => { if (rev == undefined) { rev = 1 } else { (rev) ? 1: -1; } return function(a, b) { a = a[attr]; b = b[attr]; if (a < b) { return rev * -1 } if (a > b) { return rev * 1 } return 0; } } // 折线图 let showLine = ref(false); const LineOpts = { color: ["#1869F6", "#000"], touchMoveLimit: 24, enableScroll: true, dataLabel: false, legend: { show: false }, xAxis: { disableGrid: true, scrollShow: true, itemCount: 6, }, yAxis: { showTitle: true, gridType: "dash", data: [{ title: "增速(%)", }] }, extra: { column: { type: "group", width: 14, barBorderRadius: [12, 12, 12, 12], activeBgColor: "#000000", activeBgOpacity: 0.08, }, line: { activeType: "none" }, markLine: { // type: "dash", data: [{ value: 0, // labelText: "0", lineColor: "#000" }] } } } let LineChartData = ref({ categories: [], series: [{ name: "增速(%)", data: [] }] }) const createLineData = list => { let categoriesList = [] let seriesList = [] for (let i in list) { categoriesList.push(list[i].strmonth + "月") seriesList.push(list[i].num_bl) } LineChartData.value.categories = categoriesList.length > 0 ? categoriesList : ["无数据"] LineChartData.value.series[0].data = seriesList; showLine.value = true; } // 取整 const filterInt = value => { let expectNull = Number(value ?? 0); return parseInt(expectNull); } onLoad(options => { // 标题 titleMark = options.type; titleText.value = titleEnum[titleMark].text; // 列表 combineshowList(); // 年度 let now = new Date(); searchInfo.year = now.getFullYear(); defaultIndex.value = [searchInfo.year - 2000]; // 建设地点 getJSDD(); // 项目类型 getXMLX(); // 项目性质 getXMXZ(); // 页面列表 getList(); if (titleMark === "yearRate") { // 行业分类 getHYFL(); // 资金来源 getZJLY(); } }) </script> <template> <view class="container"> <page-title>{{titleText}}</page-title> <view class="cards-list"> <view class="card only-card"> <!-- 年度 --> <view class="card-item first-card-item" @click="yearShowChoose()"> <view class="card-item-name">年度</view> <view class="card-item-description"> <view v-if="searchInfo.year">{{searchInfo.year}}</view> <view v-else class="remind-text">请选择年度</view> <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon> </view> </view> <!-- 建设地点 --> <view class="card-item" @click="jsddShowChoose()"> <view class="card-item-name">建设地点</view> <view class="card-item-description"> <view v-if="searchInfo.subjectId">{{searchInfo.subjectId}}</view> <view v-else class="remind-text">请选择地点</view> <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon> </view> </view> <!-- 项目类型 --> <view class="card-item" @click="xmlxShowChoose()"> <view class="card-item-name">项目类型</view> <view class="card-item-description"> <view v-if="searchInfo.kind">{{searchInfo.kind}}</view> <view v-else class="remind-text">请选择类型</view> <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon> </view> </view> <!-- 项目性质 --> <view class="card-item" @click="xmxzShowChoose()"> <view class="card-item-name">项目性质</view> <view class="card-item-description"> <view v-if="searchInfo.propKind">{{searchInfo.propKind}}</view> <view v-else class="remind-text">请选择性质</view> <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon> </view> </view> <!-- 行业分类 --> <view class="card-item" v-if="titleMark === 'yearRate'" @click="hyflShowChoose()"> <view class="card-item-name">行业分类</view> <view class="card-item-description"> <view v-if="searchInfo.hyfl">{{searchInfo.hyfl}}</view> <view v-else class="remind-text">请选择类型</view> <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon> </view> </view> <!-- 资金来源 --> <view class="card-item" v-if="titleMark === 'yearRate'" @click="zjlyShowChoose()"> <view class="card-item-name">资金来源</view> <view class="card-item-description"> <view v-if="searchInfo.zjly">{{searchInfo.zjly}}</view> <view v-else class="remind-text">请选择来源</view> <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon> </view> </view> <!-- 亿元项目 --> <view class="card-item" v-if="titleMark === 'yearRate'" @click="yTypeShowChoose()"> <view class="card-item-name">亿元项目</view> <view class="card-item-description"> <view v-if="searchInfo.yType">{{searchInfo.yType}}</view> <view v-else class="remind-text">请选择</view> <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon> </view> </view> <!-- 是否隐藏 --> <view class="card-item" @click="hideShowChoose()"> <view class="card-item-name">是否隐藏</view> <view class="card-item-description"> <view v-if="searchInfo.isHide">{{searchInfo.isHide}}</view> <view v-else class="remind-text">请选择</view> <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon> </view> </view> <!-- 取值模式 --> <view class="card-item" v-if="titleMark === 'yearRate'" @click="modeShowChoose()"> <view class="card-item-name">取值模式</view> <view class="card-item-description"> <view v-if="searchInfo.mode">{{searchInfo.mode}}</view> <view v-else class="remind-text">请选择模式</view> <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon> </view> </view> <!-- 同比/环比 --> <view class="card-item" v-if="titleMark === 'yearRate'" @click="yearOnYearShowChoose()"> <view class="card-item-name">同比/环比</view> <view class="card-item-description"> <view v-if="searchInfo.kindType">{{searchInfo.kindType}}</view> <view v-else class="remind-text">请选择模式</view> <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon> </view> </view> </view> <view class="search-btn" @click="getList()">确定</view> <view class="double-pie" v-if="showDoublePie"> <view class="double-pie-area"> <view class="double-pie-item"> <qiun-data-charts type="pie" :opts="pieDoubleOpts" :chartData="pieChartData" tooltipFormat="tooltipDemo2" /> </view> <view class="double-pie-item"> <qiun-data-charts type="pie" :opts="pieDoubleOpts" :chartData="doublePieChartData" tooltipFormat="tooltipDemo3" /> </view> </view> <view class="double-pie-description"> <view class="double-pie-descriptionItem">项目数</view> <view class="double-pie-descriptionItem">实际投资金额</view> </view> <view class="double-pie-data"> <view class="double-pie-textArea"> <view class="double-pie-textItem" v-for="(item,index) in itemList" :key="index"> <view class="double-pie-name">{{item.jsddName ?? "--"}}</view> <view class="double-pie-project">{{item.totalNum ?? "--"}}个</view> </view> </view> <view class="double-pie-textArea"> <view class="double-pie-textItem" v-for="(item,index) in itemListOrderByAmt" :key="index"> <view class="double-pie-name">{{item.jsddName ?? "--"}}</view> <view class="double-pie-amt">{{filterInt(item.amt)}}万元</view> </view> </view> </view> </view> <view class="pie" v-if="showPie"> <qiun-data-charts v-if="titleMark==='industyRateValue' || titleMark==='areaRate'" type="pie" :opts="pieOpts" :chartData="pieChartData" tooltipFormat="tooltipDemo2" /> <qiun-data-charts v-if="titleMark==='industyRateAmt'" type="pie" :opts="pieOpts" :chartData="pieChartData" tooltipFormat="tooltipDemo3" /> </view> <view class="line" v-if="showLine"> <qiun-data-charts type="line" :opts="LineOpts" :ontouch="true" :chartData="LineChartData" /> </view> <uni-table stripe border emptyText="暂无更多数据"> <uni-tr> <uni-th align="center" v-for="(showItem,showIndex) in showList" :index="showIndex" :width="showItem.width">{{showItem.text}}</uni-th> </uni-tr> <uni-tr v-for="(item,index) in itemList" :key="index"> <uni-td align="center" v-for="(showItem,showIndex) in showList" :index="showIndex" @click="goToProjectList(item,showItem.key)"> {{item[showItem.key] ?? "--"}} </uni-td> </uni-tr> </uni-table> <view class="gap-bottom"></view> </view> <!-- 年度选择 --> <u-picker :show="yearShow" :defaultIndex="defaultIndex" :columns="yearColumns" @confirm="yearClose" @cancel="yearClose" @close="yearClose" closeOnClickOverlay></u-picker> <!-- 建设地点 --> <u-picker :show="jsddShow" :columns="jsddColumns" @confirm="jsddClose" @cancel="jsddClose" @close="jsddClose" closeOnClickOverlay></u-picker> <!-- 项目类型 --> <u-picker :show="xmlxShow" :columns="xmlxColumns" @confirm="xmlxClose" @cancel="xmlxClose" @close="xmlxClose" closeOnClickOverlay></u-picker> <!-- 项目性质 --> <u-picker :show="xmxzShow" :columns="xmxzColumns" @confirm="xmxzClose" @cancel="xmxzClose" @close="xmxzClose" closeOnClickOverlay></u-picker> <!-- 是否隐藏 --> <u-picker :show="hideShow" :columns="hideColumns" @confirm="hideClose" @cancel="hideClose" @close="hideClose" closeOnClickOverlay></u-picker> <!-- 行业分类 --> <u-picker :show="hyflShow" :columns="hyflColumns" @confirm="hyflClose" @cancel="hyflClose" @close="hyflClose" closeOnClickOverlay></u-picker> <!-- 亿元项目 --> <u-picker :show="yTypeShow" :columns="yTypeColumns" @confirm="yTypeClose" @cancel="yTypeClose" @close="yTypeClose" closeOnClickOverlay></u-picker> <!-- 取值模式 --> <u-picker :show="modeShow" :columns="modeColumns" @confirm="modeClose" @cancel="modeClose" @close="modeClose" closeOnClickOverlay></u-picker> <!-- 资金来源 --> <u-picker :show="zjlyShow" :columns="zjlyColumns" @confirm="zjlyClose" @cancel="zjlyClose" @close="zjlyClose" closeOnClickOverlay></u-picker> <!-- 同比/环比 --> <u-picker :show="yearOnYearShow" :columns="yearOnYearColumns" @confirm="yearOnYearClose" @cancel="yearOnYearClose" @close="yearOnYearClose" closeOnClickOverlay></u-picker> </view> </template> <style lang="scss" scoped> .search-btn { width: 98%; height: 84rpx; margin: 40rpx auto 26rpx; line-height: 84rpx; text-align: center; color: #FFFFFF; font-size: 36rpx; background: #1763E7; border-radius: 16rpx; } .card { padding-bottom: 60rpx; } .pie { height: 300rpx; margin: 0 auto 36rpx; background: #EAF0FA; border-radius: 40rpx; } .double-pie { min-height: 300rpx; margin: 0 auto 36rpx; background: #EAF0FA; border-radius: 40rpx; .double-pie-area { display: flex; width: 100%; height: 300rpx; .double-pie-item { width: 50%; height: 300rpx; } } .double-pie-description { display: flex; width: 100%; margin-bottom: 30rpx; .double-pie-descriptionItem { width: 50%; text-align: center; } } .double-pie-data { display: flex; width: 100%; min-height: 100rpx; padding-bottom: 20rpx; } .double-pie-textArea { width: 50%; } .double-pie-textItem { display: flex; justify-content: space-between; width: 100%; padding: 0 20rpx; box-sizing: border-box; font-size: 24rpx; color: #001643; .double-pie-project { flex: 1; font-weight: 500; text-align: right; margin-right: 20rpx; } .double-pie-name { flex: 1; } .double-pie-amt { flex: 1; font-weight: 500; text-align: right; } } } .line { width: 100%; height: 400rpx; margin: 0 auto 36rpx; background: #FFF; border-radius: 40rpx; overflow: hidden; } .swiper-item-content { height: 1200rpx; } ::v-deep .uni-table-scroll { height: auto; } ::v-deep .uni-table-th, .uni-table-td { padding: 0; } </style>