Browse Source

方案静态页

htc 3 months ago
parent
commit
9b7dd68f88
3 changed files with 181 additions and 493 deletions
  1. 2 2
      components/Tabbar/tabbar.vue
  2. 4 2
      pages.json
  3. 175 489
      pages/plan/index.vue

+ 2 - 2
components/Tabbar/tabbar.vue

@@ -4,7 +4,6 @@
 			<view v-for="(item,index) in list" :key="index" @tap="changeTabbar(index)">
 				<image :src="tabbarIndex===index?item.activeImg:item.inactiveImg"></image>
 				<text :class="tabbarIndex===index?'on':''">{{item.text}}</text>
-
 			</view>
 		</view>
 	</view>
@@ -86,13 +85,14 @@
 			}
 
 			text {
-				margin-top: 4rpx;
+				margin-top: 8rpx;
 				font-size: 24rpx;
 				font-family: PingFangSC, PingFang SC;
 				font-weight: 500;
 				color: #666666;
 				&.on{
 					color: #385FDF;
+					font-weight: bold;
 				}
 			}
 		}

+ 4 - 2
pages.json

@@ -13,13 +13,15 @@
 		{
 			"path": "pages/plan/index",
 			"style": {
-				"navigationBarTitleText": "方案"
+				"navigationBarTitleText": "方案",
+				"navigationStyle": "custom"
 			}
 		},
 		{
 			"path": "pages/consult/index",
 			"style": {
-				"navigationBarTitleText": "在线咨询"
+				"navigationBarTitleText": "在线咨询",
+				"navigationStyle": "custom"
 			}
 		}
 	],

+ 175 - 489
pages/plan/index.vue

@@ -1,509 +1,195 @@
 <template>
-	<view class="page">
-		<view class="chart" v-if="testData.length">
-			<cusEcharts :option="testOption"></cusEcharts>
-		</view>
-		<view class="chart" v-if="kxData.length">
-			<cusEcharts :option="kxOption"></cusEcharts>
-		</view>
-		<view class="chart" v-if="kxData2.length">
-			<cusEcharts :option="kxOption2"></cusEcharts>
+	<view class="page" :style="{'height':h+'px'}">
+		<view class="left">
+			<view class="item" :class="[(index===nIndex)?'active':'',index===(nIndex+1)?'rtb':'']" 
+			v-for="(item,index) in navList" :key="index" @click="changeType(index)">
+				{{item.name}}
+			</view>
+		</view>
+		<view class="right">
+			<block v-if="solutionList.length">
+				<u-list class="ulist" @scrolltolower="scrolltolower">
+					<u-list-item class="item" v-for="(item, index) in solutionList" :key="index" @click="toDetails(item)">
+						<view class="top">
+							<image :src="item.img"></image>
+						</view>
+						<view class="text">
+							{{item.name}}
+						</view>
+					</u-list-item>
+				</u-list>
+			</block>
+			<block v-else></block>
 		</view>
 		<tabbar :tabbarIndex="1"></tabbar>
 	</view>
 </template>
 
 <script>
-    import * as echarts from "echarts";
-	import aqiData from '@/static/js/aqi-beijing.js'
 	export default {
 		data(){
 			return {
-				testData:[],
-				testOption:null,
-				kxData:[],
-				kxOption:null,
-				kxData2:[],
-				kxOption2:null
+				navList:[
+					{name:'全部'},
+					{name:'智慧楼宇'},
+					{name:'总部园区'},
+					{name:'产业园区'},
+					{name:'工业园区'},
+					{name:'智慧校园'},
+					{name:'智慧场馆'},
+					{name:'公共交通'},
+					{name:'智慧文旅'},
+					{name:'城市服务'},
+					{name:'住宅社区'},
+					{name:'3D可视化'},
+					{name:'智慧运维'},
+					{name:'智慧安防'},
+					{name:'楼宇自控'},
+					{name:'能耗管理'},
+					{name:'智能照明'},
+					{name:'智慧通行'},
+					{name:'智能环卫'},
+					{name:'智慧电梯'},
+					{name:'应急指挥'},
+					{name:'资产管理'}
+				],
+				nIndex:0,
+				solutionList:[],
+				isOver:false
 			}
-		},
-		mounted() {
-			this.init();
+		},
+		onLoad() {
+			this.getList();
 		},
 		methods:{
-			init(){
-				this.initTestChart();
-				this.initKxChart();
-				this.initKxChart2();
-			},
-			initTestChart(){
-				this.testData = [150, 230, 224, 218, 135, 147, 260];
-				this.testOption = {
-				  xAxis: {
-					type: 'category',
-					data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
-				  },
-				  yAxis: {
-					type: 'value'
-				  },
-				  series: [
-					{
-					  data: this.testData,
-					  type: 'line'
-					}
-				  ]
-				};
-			},
-			initKxChart(){
-				this.kxData = [270,220,350,210,280,400];
-				const offsetX = 4;
-				const offsetY = 2;
-				// 绘制左侧面
-				const CubeLeft = echarts.graphic.extendShape({
-					shape: {
-						x: 0,
-						y: 0,
-					},
-					buildPath: function (ctx, shape) {
-						// 会canvas的应该都能看得懂,shape是从custom传入的
-						const xAxisPoint = shape.xAxisPoint;
-						const c0 = [shape.x, shape.y];
-						const c1 = [shape.x - offsetX, shape.y - offsetY];
-						const c2 = [xAxisPoint[0] - offsetX, xAxisPoint[1] - offsetY];
-						const c3 = [xAxisPoint[0], xAxisPoint[1]];
-						ctx
-							.moveTo(c0[0], c0[1])
-							.lineTo(c1[0], c1[1])
-							.lineTo(c2[0], c2[1])
-							.lineTo(c3[0], c3[1])
-							.closePath();
-					},
-				});
-				// 绘制右侧面
-				const CubeRight = echarts.graphic.extendShape({
-					shape: {
-						x: 0,
-						y: 0,
-					},
-					buildPath: function (ctx, shape) {
-						const xAxisPoint = shape.xAxisPoint;
-						const c1 = [shape.x, shape.y];
-						const c2 = [xAxisPoint[0], xAxisPoint[1]];
-						const c3 = [xAxisPoint[0] + offsetX, xAxisPoint[1] - offsetY];
-						const c4 = [shape.x + offsetX, shape.y - offsetY];
-						ctx
-							.moveTo(c1[0], c1[1])
-							.lineTo(c2[0], c2[1])
-							.lineTo(c3[0], c3[1])
-							.lineTo(c4[0], c4[1])
-							.closePath();
-					},
-				});
-				// 绘制顶面
-				const CubeTop = echarts.graphic.extendShape({
-					shape: {
-						x: 0,
-						y: 0,
-					},
-					buildPath: function (ctx, shape) {
-						const c1 = [shape.x, shape.y];
-						const c2 = [shape.x + offsetX, shape.y - offsetY]; //右点
-						const c3 = [shape.x, shape.y - offsetX];
-						const c4 = [shape.x - offsetX, shape.y - offsetY];
-						ctx
-							.moveTo(c1[0], c1[1])
-							.lineTo(c2[0], c2[1])
-							.lineTo(c3[0], c3[1])
-							.lineTo(c4[0], c4[1])
-							.closePath();
-					},
-				});
-
-				// 注册三个面图形
-				echarts.graphic.registerShape("CubeLeft", CubeLeft);
-				echarts.graphic.registerShape("CubeRight", CubeRight);
-				echarts.graphic.registerShape("CubeTop", CubeTop);
-
-				this.kxOption = {
-					tooltip: {
-						trigger: 'axis',
-						backgroundColor: 'rgba(13,5,30,.6)',
-						borderWidth: 1,
-						borderColor: '#4ddd8f',
-						padding: 5,
-						textStyle: {
-							color: '#fff'
-						}
-					},
-					legend: {
-						right: 170,
-						top: 15,
-						textStyle: {
-							fontSize: 12,
-							color: '#A7BFDE'
-						},
-						itemWidth: 6,
-						itemHeight: 8
-					},
-					grid: {
-						left: '4%',
-						right: '3%',
-						top: '25%',
-						bottom: '8%',
-						containLabel: true,
-					},
-					xAxis: {
-						type: 'category',
-						data: ['3月', '4月', '5月', '6月', '7月', '8月'],
-						axisPointer: {
-							type: 'shadow'
-						},
-						axisTick: {
-							show: true,
-							length: 4,
-							lineStyle: {
-								color: 'rgba(199,211,229,0.5)'
-							}
-						},
-						axisLine: {
-							show: true,
-							lineStyle: {
-								color: 'rgba(199,211,229,0.5)'
-							}
-						},
-						axisLabel: {
-							color: '#c7d3e5'
-						}
-					},
-					yAxis: {
-						name:'(单位)',
-						type: 'value',
-						nameTextStyle: {
-							fontSize: 12,
-							color: '#C6D7F1',
-							fontWeight: 400,
-						},
-						nameGap: 25,
-						axisLine: {
-							show: false,
-							lineStyle: {
-								width: 1,
-								color: '#545454'
-							}
-						},
-						splitLine: {
-							show: true,
-							lineStyle: {
-								color: 'rgba(199,211,229,0.3)',
-								width: 1,
-								type: 'dashed'
-							}
-						},
-						axisTick: {
-							show: false
-						},
-						axisLabel: {
-							fontSize: 12,
-							color: '#c7d3e5'
-						}
-					},
-					series: [
-						{
-							name: "国内",
-							type: "custom",
-							renderItem: (params, api) => {
-								const location = api.coord([api.value(0), api.value(1)]);
-								const xAxisPoint = api.coord([api.value(0), 0]);
-								const distance = 7;
-								return {
-									type: "group",
-									children: [{
-											type: "CubeLeft",
-											shape: {
-												api,
-												xValue: api.value(0),
-												yValue: api.value(1),
-												x: location[0] + distance,
-												y: location[1],
-												xAxisPoint: [xAxisPoint[0] + distance, xAxisPoint[1]],
-											},
-											style: {
-												fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-														offset: 0,
-														color: '#0B5FA9',
-													},
-													{
-														offset: 1,
-														color: 'rgba(11,95,169,0)'
-													}
-												]),
-											},
-										},
-										{
-											type: "CubeRight",
-											shape: {
-												api,
-												xValue: api.value(0),
-												yValue: api.value(1),
-												x: location[0] + distance,
-												y: location[1],
-												xAxisPoint: [xAxisPoint[0] + distance, xAxisPoint[1]],
-											},
-											style: {
-												fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-														offset: 0,
-														color: '#088BFF',
-													},
-													{
-														offset: 1,
-														color: 'rgba(8,139,255,0)'
-													}
-												]),
-											},
-										},
-										{
-											type: "CubeTop",
-											shape: {
-												api,
-												xValue: api.value(0),
-												yValue: api.value(1),
-												x: location[0] + distance,
-												y: location[1],
-												xAxisPoint: [xAxisPoint[0] + distance, xAxisPoint[1]],
-											},
-											style: {
-												fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-														offset: 0,
-														color: '#61B5FF',
-													},
-													{
-														offset: 1,
-														color: '#61B5FF'
-													}
-												]),
-											},
-										},
-									],
-								};
-							},
-							itemStyle: {
-								color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-										offset: 0,
-										color: "#00BFF4",
-									},
-									{
-										offset: 1,
-										color: "#A5E2FF",
-									},
-								]),
-							},
-							data: [410,330,210,210,480,190],
-						},
-						{
-							name: "出口",
-							type: "custom",
-							renderItem: (params, api) => {
-								const location = api.coord([api.value(0), api.value(1)]);
-								const xAxisPoint = api.coord([api.value(0), 0]);
-								const distance = 7;
-								return {
-									type: "group",
-									children: [{
-											type: "CubeLeft",
-											shape: {
-												api,
-												xValue: api.value(0),
-												yValue: api.value(1),
-												x: location[0] - distance,
-												y: location[1],
-												xAxisPoint: [xAxisPoint[0] - distance, xAxisPoint[1]],
-											},
-											style: {
-												fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-														offset: 0,
-														color: '#28A9A2',
-													},
-													{
-														offset: 1,
-														color: 'rgba(40,169,162,0)'
-													}
-												]),
-											},
-										},
-										{
-											type: "CubeRight",
-											shape: {
-												api,
-												xValue: api.value(0),
-												yValue: api.value(1),
-												x: location[0] - distance,
-												y: location[1],
-												xAxisPoint: [xAxisPoint[0] - distance, xAxisPoint[1]],
-											},
-											style: {
-												fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-														offset: 0,
-														color: '#35FFF4',
-													},
-													{
-														offset: 1,
-														color: 'rgba(53,255,244,0)'
-													}
-												]),
-											},
-										},
-										{
-											type: "CubeTop",
-											shape: {
-												api,
-												xValue: api.value(0),
-												yValue: api.value(1),
-												x: location[0] - distance,
-												y: location[1],
-												xAxisPoint: [xAxisPoint[0] - distance, xAxisPoint[1]],
-											},
-											style: {
-												fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-														offset: 0,
-														color: '#7EFFF8',
-													},
-													{
-														offset: 1,
-														color: '#7EFFF8'
-													}
-												]),
-											},
-										},
-									],
-								};
-							},
-							itemStyle: {
-								color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-										offset: 0,
-										color: "#6AAAFF",
-									},
-									{
-										offset: 1,
-										color: "#046EFE",
-									},
-								]),
-							},
-							data: this.kxData,
-						}
-					],
-				};
-			},
-			initKxChart2(){
-				this.kxData2 = [0];
-				let data = aqiData;
-				this.kxOption2 = {
-					title: {
-						text: 'Beijing AQI',
-						left: '1%'
-					  },
-					  tooltip: {
-						trigger: 'axis'
-					  },
-					  grid: {
-						left: '10%',
-						right: '150px',
-						bottom: '20%'
-					  },
-					  xAxis: {
-						data: data.map(function (item) {
-						  return item[0];
-						})
-					  },
-					  yAxis: {},
-					  dataZoom: [
-						{
-						  startValue: '2014-06-01'
-						},
-						{
-						  type: 'inside'
-						}
-					  ],
-					  visualMap: {
-						top: 50,
-						right: 10,
-						pieces: [
-						  {
-							gt: 0,
-							lte: 50,
-							color: '#93CE07'
-						  },
-						  {
-							gt: 50,
-							lte: 100,
-							color: '#FBDB0F'
-						  },
-						  {
-							gt: 100,
-							lte: 150,
-							color: '#FC7D02'
-						  },
-						  {
-							gt: 150,
-							lte: 200,
-							color: '#FD0100'
-						  },
-						  {
-							gt: 200,
-							lte: 300,
-							color: '#AA069F'
-						  },
-						  {
-							gt: 300,
-							color: '#AC3B2A'
-						  }
-						],
-						outOfRange: {
-						  color: '#999'
-						}
-					  },
-					  series: {
-						name: 'Beijing AQI',
-						type: 'line',
-						data: data.map(function (item) {
-						  return item[1];
-						}),
-						markLine: {
-						  silent: true,
-						  lineStyle: {
-							color: '#333'
-						  },
-						  data: [
-							{
-							  yAxis: 50
-							},
-							{
-							  yAxis: 100
-							},
-							{
-							  yAxis: 150
-							},
-							{
-							  yAxis: 200
-							},
-							{
-							  yAxis: 300
-							}
-						  ]
-						}
-					  }
-				}
-			},
+			changeType(index){
+				this.nIndex = index;
+			},
+			scrolltolower() {
+				if (this.isOver) return;
+				this.getList();
+			},
+			getList(){
+				this.solutionList = [
+					{
+						img:'../../static/imgs/home_default.png',
+						name:'智慧园商业解决方案'
+					},
+					{
+						img:'../../static/imgs/home_default.png',
+						name:'智慧园商业解决方案'
+					},
+					{
+						img:'../../static/imgs/home_default.png',
+						name:'智慧园商业解决方案'
+					},
+					{
+						img:'../../static/imgs/home_default.png',
+						name:'智慧园商业解决方案'
+					},
+					{
+						img:'../../static/imgs/home_default.png',
+						name:'智慧园商业解决方案'
+					},
+					{
+						img:'../../static/imgs/home_default.png',
+						name:'智慧园商业解决方案'
+					},
+					{
+						img:'../../static/imgs/home_default.png',
+						name:'智慧园商业解决方案'
+					},
+					{
+						img:'../../static/imgs/home_default.png',
+						name:'智慧园商业解决方案'
+					}
+				];
+			}
 		}
 	}
 </script>
 
 <style scoped lang="less">
-	.chart{
-		width: 100%;
-		height: 300px;
-		margin-top: 50px;
-		&:first-child{
-			margin-top: 0;
-		}
+	.page{
+		background: #FFFFFF;
+		box-sizing: border-box;
+		display: flex;
+		
+		.left{
+			width: 168rpx;
+			height: 100%;
+			overflow-y: auto;
+			background: #F3F4F8;
+			.item{
+				width: 100%;
+				height: 98rpx;
+				background: #F3F4F8;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				overflow: hidden;
+				white-space: nowrap;
+				text-overflow: ellipsis;
+				font-family: PingFangSC, PingFang SC;
+				font-weight: 400;
+				font-size: 26rpx;
+				color: #9D9DA0;
+				line-height: 37rpx;
+				&.active{
+					background: #FFFFFF;
+					font-weight: bold;
+					color: #1460CA;
+				}
+				&.rtb{
+					border-top-right-radius: 16rpx;
+				}
+			}
+		}
+		
+		.right{
+			width: calc(100% - 168rpx);
+			padding: 0 24rpx 20rpx;
+			box-sizing: border-box;
+			
+			.ulist{
+				height: 100% !important;
+				::v-deep .uni-scroll-view-content>uni-view{
+					display: flex;
+					flex-direction: row;
+					justify-content: space-between;
+					flex-wrap: wrap;
+				}
+				.item{
+					width: calc(50% - 13rpx);
+					margin-top: 20rpx;
+					border-radius: 12rpx 12rpx 0rpx 0rpx;
+					background: #FFFFFF;
+					.top{
+						width: 100%;
+						height: 186rpx;
+						background: #D8D8D8;
+						border-radius: 12rpx 12rpx 0rpx 0rpx;
+						image{
+							width: 100%;
+							height: 100%;
+							border-radius: 12rpx 12rpx 0rpx 0rpx;
+						}
+					}
+					.text{
+						width: 100%;
+						padding: 16rpx 10rpx;
+						box-sizing: border-box;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
+						font-family: PingFang-SC, PingFang-SC;
+						font-weight: bold;
+						font-size: 24rpx;
+						color: #111111;
+						line-height: 24rpx;
+					}
+				}
+			}
+		}
 	}
 </style>