瀏覽代碼

电池和机柜

xhj 3 年之前
父節點
當前提交
d6628128b7
共有 37 個文件被更改,包括 1756 次插入83 次删除
  1. 5 1
      components/cell/index.css
  2. 24 3
      components/cell/index.vue
  3. 18 0
      components/left-pop/index.css
  4. 74 0
      components/left-pop/index.vue
  5. 2 2
      components/nav-bar/index.css
  6. 1 1
      components/nav-bar/index.vue
  7. 98 0
      machineAndCell/BMS/BMS.css
  8. 218 0
      machineAndCell/BMS/BMS.vue
  9. 120 0
      machineAndCell/cellDetail/cellDetail.css
  10. 157 0
      machineAndCell/cellDetail/cellDetail.vue
  11. 180 0
      machineAndCell/cellSearch/cellSearch.css
  12. 115 0
      machineAndCell/cellSearch/cellSearch.vue
  13. 14 1
      machineAndCell/machineDetail/machineDetail.css
  14. 11 5
      machineAndCell/machineDetail/machineDetail.vue
  15. 99 0
      machineAndCell/machineDetailEdit/machineDetailEdit.css
  16. 148 0
      machineAndCell/machineDetailEdit/machineDetailEdit.vue
  17. 55 33
      pages.json
  18. 146 0
      pages/cell/cell.css
  19. 164 0
      pages/cell/cell.vue
  20. 41 0
      pages/machine/machine.css
  21. 37 2
      pages/machine/machine.vue
  22. 2 2
      pages/nearby/nearby.vue
  23. 6 1
      pages/order/order.vue
  24. 1 1
      pages/user/user.vue
  25. 二進制
      static/pages/images/address-icon2.png
  26. 二進制
      static/pages/images/change.png
  27. 二進制
      static/pages/images/self/cell.png
  28. 二進制
      static/pages/images/self/cell_h.png
  29. 二進制
      static/pages/images/self/index.png
  30. 二進制
      static/pages/images/self/index_h.png
  31. 二進制
      static/pages/images/self/machine.png
  32. 二進制
      static/pages/images/self/machine_h.png
  33. 二進制
      static/pages/images/self/order.png
  34. 二進制
      static/pages/images/self/order_h.png
  35. 二進制
      static/pages/images/self/user.png
  36. 二進制
      static/pages/images/self/user_h.png
  37. 20 31
      utils/request.js

+ 5 - 1
components/cell/index.css

@@ -4,4 +4,8 @@
 .cell-gou{width: 30rpx;height: 27rpx;position: absolute;right: 27rpx;bottom: 23rpx;}
 .cell-q{position: absolute;top: 17rpx;left: 7rpx;right: 7rpx;bottom: 7rpx;z-index: 2;}
 .cell-qs{position: absolute;bottom: 0;left: 0;width: 100%;background-color: #EB5C20;border-radius: 5rpx;}
-.full{background-color: #0FCB27;}
+.full{background-color: #0FCB27;}
+.soc-label{
+	position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);z-index: 3;font-weight: 500;
+color: #242323;
+}

+ 24 - 3
components/cell/index.vue

@@ -2,9 +2,14 @@
 	<view>
 		<view class="cell-infos ddflex">
 			<view class="cell">
-				<image src="../../static/pages/images/cell.png" class="cell-bg"></image>
-				<view class="cell-q">
-					<view :class="'cell-qs'+(soc>50?' full':'')" :style="'height:'+ soc+'%'"></view>
+				<view :style="'transform: rotate('+rotate+'deg);'">
+					<image :style="'width: '+width+'rpx;height:'+height+'rpx;'" src="../../static/pages/images/cell.png" class="cell-bg"></image>
+					<view class="cell-q">
+						<view :class="'cell-qs'+(soc>50?' full':'')" :style="'height:'+ soc+'%'"></view>
+					</view>
+				</view>
+				<view class="soc-label">
+					{{soc}}%
 				</view>
 			</view>
 		</view>
@@ -21,6 +26,22 @@
 			soc:{
 				type:Number,
 				default:0
+			},
+			width:{
+				type:Number,
+				default:68
+			},
+			height:{
+				type:Number,
+				default:132
+			},
+			showsoc:{
+				type:Boolean,
+				default:false
+			},
+			rotate:{
+				type:Number,
+				default:0
 			}
 		},
 		data() {

+ 18 - 0
components/left-pop/index.css

@@ -0,0 +1,18 @@
+.ddinfo{background: #fff;padding: 0 20rpx;margin: 30rpx;border-radius: 10rpx;}
+.ddinfo .li{padding: 30rpx 0;border-bottom: 2rpx solid #E5E5E5;}
+.ddinfo .li:last-child{border-bottom: none;}
+.ddinfo .li text{display: block;font-size: 28rpx;color: ##000000;}
+.ddinfo .li view{flex: 1;-webkit-flex: 1;font-size: 28rpx;color: #333;text-align: right;}
+.ddinfo .li view.quan{color: #FE0419;margin-right: 12rpx;}
+.ddinfo .li input{flex: 1;-webkit-flex: 1;font-size: 28rpx;color: #333;text-align: right;}
+.textarea{background: #f5f5f5;border-radius: 10rpx;margin-top: 20rpx;width: 100%;padding: 15rpx;box-sizing: border-box;height: 120rpx;font-size: 28rpx;color: #333;}
+.placeholder{color: #ccc;}
+.confirmation-bar{position: fixed;z-index: 100;left: 0;top: 0;bottom: 0;background: #fff;border-radius: 0rpx 0rpx 0 0;padding: 0rpx 0rpx 0rpx;width: 60%;height: 100%;}
+.pop-title{font-size:30rpx;padding:10rpx 50rpx 20rpx 50rpx;color:#263343;border-bottom:1rpx solid #eeeeee;}
+.pop-close{position: absolute;right: 40rpx;top: 25rpx;font-size: 40rpx;}
+.pop-content{}
+.confirmation-bar .pop-btn{display:flex; justify-content:space-around; position: relative;bottom:0;}
+.pop-btn-cancal{flex:0 0 40%;border-radius: 40rpx;background-color: #fff;height: 80rpx;line-height: 80rpx;color: #666;text-align: center;border:1rpx solid #666;}
+.pop-btn-submit{flex:0 0 40%;border-radius: 40rpx;background-color: #009AFF;height: 80rpx;line-height: 80rpx;color: #fff;text-align: center;border:1rpx solid #009AFF;}
+
+.mask{background-color:#000;opacity: 0.68;width: 100vw;height: 100vh;z-index: 99;}

+ 74 - 0
components/left-pop/index.vue

@@ -0,0 +1,74 @@
+<template>
+	<view>
+		<view v-show="showPop" class="confirmation-bar" :style="'width: '+width+';'">
+			<view class="" style="height: 100%;">
+				<slot></slot>
+			</view>
+			<view class="pop-btn" v-if="showBtn">
+				<view class="pop-btn-cancal" @tap="closePop"><slot name="leftbtnname">取消</slot></view>
+				<view class="pop-btn-submit" :style="'background-color:'+btnColor+';border:1rpx solid '+btnColor+';'" @tap="popSubmit"><slot name="rightbtnname">确认</slot></view>
+			</view>
+		</view>
+		<!-- 遮罩层 -->
+		<view v-show="showPop" @tap="closePop" class="mask"></view>
+	</view>
+
+</template>
+
+<script>
+	const app = getApp();
+	const req = require("../../utils/request.js");
+
+	export default {
+		data() {
+			return {
+				bottomBlankHeignt: app.globalData.isIPhoneX ? 68 : 0
+			};
+		},
+
+		components: {
+			
+		},
+		props: {
+			showPop: {
+				type: Boolean,
+				default: true
+			},
+			showBtn: {
+				type: Boolean,
+				default: true
+			},
+			title:{
+				type: String,
+				default:''
+			},
+			btnColor:{
+				type: String,
+				default:'#009AFF'
+			},
+			width:{
+				type: String,
+				default:'60%'
+			}
+		},
+		watch: {
+			
+		},
+
+		mounted() {
+			
+		},
+
+		methods: {
+			closePop(){
+				this.$emit('closePop',false)
+			},
+			popSubmit(){
+				this.$emit('popSubmit')
+			}
+		}
+	};
+</script>
+<style>
+	@import "./index.css";
+</style>

+ 2 - 2
components/nav-bar/index.css

@@ -17,14 +17,14 @@
     z-index: 98;
 }
 
-.Tabbar .tab-item {
+.Tabbar .nav-tab-item {
     width: 25%;
     text-align: center;
     position: relative;
     line-height: initial;
 }
 
-.tab-item .image {
+.nav-tab-item .image {
     display: block;
     width: 54rpx;
     height: 54rpx;

+ 1 - 1
components/nav-bar/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view>
 		<view class="Tabbar savepadding">
-			<view v-for="(item, index) in list" :key="index" class="tab-item" @tap="goUrl(item.click)">
+			<view v-for="(item, index) in list" :key="index" class="nav-tab-item" @tap="goUrl(item.click)">
 				<image class="nav_icon11 image" :src="channel===item.channel ?item.selectedIconPath:item.iconPath">
 				</image>
 				<view :class="channel===item.channel?'active':''">{{item.text}}<text class="dots"

+ 98 - 0
machineAndCell/BMS/BMS.css

@@ -0,0 +1,98 @@
+.tab-box{
+	background-color: #fff;
+	padding: 30rpx;
+	position: fixed;
+	left: 0;
+	right: 0;
+	top: 0;
+	z-index: 100;
+}
+.tab-item{
+	text-align: center;
+	font-size: 28rpx;
+	line-height: 41rpx;
+}
+.tab-item image{
+	visibility: hidden;
+}
+.tab-item-active{
+	color: #EB5C20;
+}
+.tab-item-active image{
+	visibility: visible;
+}
+.tab-active-icon{
+	width: 32rpx;
+	height: 10rpx;
+	margin-top: 10rpx;
+	margin: auto;
+}
+
+
+.option-box{
+	background: #FFFFFF;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	margin: 30rpx;
+	padding: 36rpx 20rpx 10rpx;;
+}
+.option-time{
+	font-size: 24rpx;
+	font-weight: 500;
+	color: #A8A5A5;
+	line-height: 36rpx;
+	justify-content: space-between;
+	padding-bottom:16rpx ;
+	border-bottom: 1rpx solid #E6E6E6;
+	z-index: 10;
+}
+.refresh{
+	font-size: 28rpx;
+}
+.refresh image{
+	width: 32rpx;
+	height: 32rpx;
+	margin-right: 8rpx;
+}
+.state{
+	justify-content: space-between;
+	font-size: 28rpx;
+	margin-top: 10rpx;
+	font-weight: 500;
+	color: #666464;
+	border-bottom: 1rpx solid #E6E6E6;
+}
+.state:last-child{
+	border-bottom: none;
+}
+
+.bms-info{
+	padding: 33rpx 20rpx;
+	background: #FFFFFF;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	margin: 30rpx;
+	overflow: hidden;
+	position: relative;
+}
+.bms-row{
+	font-size: 28rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #666464;
+	line-height: 41rpx;
+	padding-bottom: 35rpx;
+	border-bottom: 1rpx solid #E6E6E6;
+	margin-bottom: 35rpx;
+}
+.bms-row:last-child{
+	border-bottom: none;
+	padding-bottom: 0rpx;
+	margin-bottom: 0rpx;
+}
+.bms-row-right{
+	justify-content: flex-end;
+}
+.bms-row-data{
+	color: #A8A5A5;
+}

+ 218 - 0
machineAndCell/BMS/BMS.vue

@@ -0,0 +1,218 @@
+<template>
+	<view style="padding-bottom: 30rpx;">
+		<!-- tab -->
+		<view class="tab-box ddflex">
+			<view class="fflex ddflex">
+				<view :class="'tab-item fflex '+(queryType==1?'tab-item-active':'')" @click="queryTypeChange(1)">
+					<view>实时状态</view>
+					<image class="tab-active-icon" src="../../static/images/tab_cur.png"></image>
+				</view>
+				<view :class="'tab-item fflex '+(queryType==2?'tab-item-active':'')" @click="queryTypeChange(2)">
+					<view>BMS控制</view>
+					<image class="tab-active-icon" src="../../static/images/tab_cur.png"></image>
+				</view>
+			</view>
+		</view>
+		<view style="height: 110rpx;"></view>
+		
+		<block v-if="queryType==1">
+			<view class="option-box">
+				<view class="option-time ddflex">
+					<view>更新时间: 2023-04-03 11:09:08</view>
+					<view class="refresh ddflex">
+						<image src="../../static/pages/images/refresh.png"></image>
+						<text>刷新</text>
+					</view>
+				</view>
+				<view style="position: relative;">
+					<view style="height: 130rpx;"></view>
+					<view style="margin-top: 40rpx;justify-content: center;position: absolute;left: 50%;transform: translateX(-50%);top: -50%;" class="ddflex">
+						<cell :width="99" :height="197" :soc="6*10" :showsoc="true" :rotate="90"></cell>
+					</view>
+				</view>
+			</view>
+			
+			<view class="bms-info">
+				<view class="bms-row ddflex">
+					<view class="fflex ddflex">
+						<text>电池数量:</text>
+						<text class="bms-row-data">17 串</text>
+					</view>
+					<view class="fflex ddflex bms-row-right">
+						<text>剩余容量:</text>
+						<text class="bms-row-data">31.6 AH</text>
+					</view>
+				</view>
+				<view class="bms-row ddflex">
+					<view class="fflex ddflex">
+						<text>总电压:</text>
+						<text class="bms-row-data">66.99V</text>
+					</view>
+					<view class="fflex ddflex bms-row-right">
+						<text>电流数据:</text>
+						<text class="bms-row-data">0A</text>
+					</view>
+				</view>
+				<view class="bms-row ddflex">
+					<view class="fflex ddflex">
+						<text>最低电压:</text>
+						<text class="bms-row-data">3.934 V</text>
+					</view>
+					<view class="fflex ddflex bms-row-right">
+						<text>最高电压:</text>
+						<text class="bms-row-data">3.946V</text>
+					</view>
+				</view>
+				<view class="bms-row ddflex">
+					<view class="fflex ddflex">
+						<text>相差电压:</text>
+						<text class="bms-row-data">0.012V</text>
+					</view>
+					<view class="fflex ddflex bms-row-right">
+						<text>平均电压:</text>
+						<text class="bms-row-data">3.94V</text>
+					</view>
+				</view>
+				<view class="bms-row ddflex">
+					<view class="fflex ddflex">
+						<text>温度数量:</text>
+						<text class="bms-row-data">2个</text>
+					</view>
+					<view class="fflex ddflex bms-row-right">
+						<text>校准容量:</text>
+						<text class="bms-row-data">36.1AH</text>
+					</view>
+				</view>
+				<view class="bms-row ddflex">
+					<view class="fflex ddflex">
+						<text>温度:</text>
+						<text class="bms-row-data"> [20°C][20°C]</text>
+					</view>
+					<view class="fflex ddflex bms-row-right">
+						<text>功率:</text>
+						<text class="bms-row-data">0KW</text>
+					</view>
+				</view>
+				<view class="bms-row ddflex">
+					<view class="fflex ddflex">
+						<text>充电状态:</text>
+						<text class="bms-row-data">静止</text>
+					</view>
+					<view class="fflex ddflex bms-row-right">
+						<text>均衡开闭:</text>
+						<text class="bms-row-data">关闭</text>
+					</view>
+				</view>
+				<view class="bms-row ddflex">
+					<view class="fflex ddflex">
+						<text>循环摞碍次数:</text>
+						<text class="bms-row-data">216次</text>
+					</view>
+					<view class="fflex ddflex bms-row-right">
+						<text>固件版本:</text>
+						<text class="bms-row-data">0KW</text>
+					</view>
+				</view>
+				<view class="bms-row ddflex">
+					<view class="fflex ddflex">
+						<text>连接状态:</text>
+						<text class="bms-row-data">已连接</text>
+					</view>
+					<view class="fflex ddflex bms-row-right">
+						<text>设备编码:</text>
+						<text class="bms-row-data">613880983244</text>
+					</view>
+				</view>
+			</view>
+		</block>
+		
+		<block v-if="queryType==2">
+			<view class="option-box">
+				<view class="option-time ddflex">
+					<view>更新时间: 2023-04-03 11:09:08</view>
+					<view class="refresh ddflex">
+						<image src="../../static/pages/images/refresh.png"></image>
+						<text>刷新</text>
+					</view>
+				</view>
+				<view class="ddflex state">
+					<view class="ddflex">
+						<view>充电开关:</view>
+						<view style="color: #A8A5A5;">开启</view>
+					</view>
+					<switch style="transform: scale(0.6);" color="#FF753A"></switch>
+				</view>
+				<view class="ddflex state">
+					<view class="ddflex">
+						<view>放电开关:</view>
+						<view style="color: #A8A5A5;">关闭</view>
+					</view>
+					<switch style="transform: scale(0.6);" color="#FF753A"></switch>
+				</view>
+			</view>
+		</block>
+		
+	</view>
+</template>
+
+<script>
+	const app = getApp();
+	const req = require("../../utils/request.js");
+	import cell from "../../components/cell/index";
+
+	export default {
+		components: {
+			cell
+		},
+		props: {},
+		data() {
+			return {
+				systems: {},
+				isTop:0,
+				
+				queryType: 1,
+			}
+		},
+		onLoad(options) {
+
+		},
+		onShow() {
+			
+		},
+		methods: {
+			jumpUrl(url) {
+				if (req.isLogins(true)) {
+					uni.navigateTo({
+						url: url
+					})
+				}
+			},
+			queryTypeChange(val) {
+				if (this.queryType == val) return false
+				this.queryType = val
+			},
+		},
+		mounted() {
+			const systemInfo = uni.getSystemInfoSync();
+			// px转换到rpx的比例
+			let pxToRpxScale = 750 / systemInfo.windowWidth;
+			let systems = {
+				ktxStatusHeight: systemInfo.statusBarHeight * pxToRpxScale, // 状态栏的高度
+				navigationHeight: 44 * pxToRpxScale // 导航栏的高度
+			};
+			systems.barHeight = systems.ktxStatusHeight + systems.navigationHeight;
+			this.systems = systems;
+		},
+		onPageScroll: function(e) {
+			if (e.scrollTop > this.systems.barHeight) {
+				this.isTop = 1;
+			} else {
+				this.isTop = 0;
+			}
+		}
+	}
+</script>
+
+<style>
+	@import "./BMS.css";
+</style>

+ 120 - 0
machineAndCell/cellDetail/cellDetail.css

@@ -0,0 +1,120 @@
+page {
+	background-color: #fff;
+}
+
+.input-box {
+	padding: 30rpx 30rpx 0;
+}
+
+.input-box .input {
+	width: 615rpx;
+	height: 76rpx;
+	line-height: 76rpx;
+	background: #F8F8F8;
+	border-radius: 20rpx 20rpx 20rpx 20rpx;
+	opacity: 1;
+	padding: 0 32rpx;
+}
+
+.input-box .input input {
+	width: 100%;
+	height: 100%;
+}
+
+.saoma {
+	width: 39rpx;
+	height: 36rpx;
+	margin-left: 35rpx;
+}
+
+
+.item {
+	padding: 35rpx 0rpx;
+	justify-content: space-between;
+	border-bottom: 1rpx solid #E6E6E6;
+	;
+	margin: 0 30rpx;
+	line-height: 41rpx;
+	font-size: 28rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+}
+.item:last-child{
+	border-bottom: none;
+}
+.state{
+	width: 73rpx;
+	line-height: 36rpx;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	border: 2rpx solid #0FCB27;
+	font-size: 22rpx;
+	font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
+	font-weight: normal;
+	color: #0FCB27;
+	text-align: center;
+	margin-left: 10rpx;
+}
+.label {
+	color: #666464;
+	margin-right: 30rpx;
+}
+
+.item-input {
+	color: #666464;
+	text-align: right;
+	justify-content: flex-end;
+}
+
+
+/* 按钮 */
+.bottom-btns{
+	position: fixed;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	background: #FFFFFF;
+	box-shadow: 0rpx -5rpx 15rpx 1rpx rgba(0,0,0,0.05);
+	border-radius: 0rpx 0rpx 0rpx 0rpx;
+	opacity: 1;
+	z-index: 10;
+}
+.btn1{
+	width: 160rpx;
+	line-height: 76rpx;
+	height: 76rpx;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	color: #EB5C20;
+	border: 1px solid #EB5C20;
+	text-align: center;
+	font-weight: 500;
+	font-size: 28rpx;
+	box-sizing: border-box;
+}
+.btn2{
+	width: 160rpx;
+	line-height: 76rpx;
+	height: 76rpx;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	background-color: #EB5C20;
+	color: #fff;
+	border: 1px solid EB5C20;
+	text-align: center;
+	font-weight: 500;
+	font-size: 28rpx;
+	box-sizing: border-box;
+}
+.btn3{
+	width: 160rpx;
+	line-height: 76rpx;
+	height: 76rpx;
+	background: #0FCB27;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	color: #fff;
+	text-align: center;
+	font-weight: 500;
+	font-size: 28rpx;
+}

+ 157 - 0
machineAndCell/cellDetail/cellDetail.vue

@@ -0,0 +1,157 @@
+<template>
+	<view>
+		<view>
+			<view class="item ddflex">
+				<view class="label">所属门店</view>
+				<view class="item-input fflex ddflex">
+					<view>白云科技门店</view>
+					<!-- <view class="state">在线</view> -->
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">机柜名称</view>
+				<view class="item-input fflex">
+					CHZD04TTCC200329109
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">电池ID</view>
+				<view class="item-input fflex">
+					613880983244
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">租赁用户</view>
+				<view class="item-input fflex">
+					王鸿  15700317367
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">品牌</view>
+				<view class="item-input fflex">
+					乐享换电
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">型号</view>
+				<view class="item-input fflex">
+					60V  40AH
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">设备类型</view>
+				<view class="item-input fflex">
+					BWHY
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">电芯</view>
+				<view class="item-input fflex">
+					三元理
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">BMS保护板</view>
+				<view class="item-input fflex">
+					V1.2
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">软件版本</view>
+				<view class="item-input fflex">
+					百维
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">押金</view>
+				<view class="item-input fflex">
+					349元/月
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">起租时间</view>
+				<view class="item-input fflex">
+					2022-07-0314:07:15
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">到期时间</view>
+				<view class="item-input fflex">
+					2023-05-0300:00:00
+				</view>
+			</view>
+			<view class="item ddflex">
+				<view class="label">备注</view>
+				<view class="item-input fflex">
+					2.18更换新品头
+				</view>
+			</view>
+			
+		</view>
+		
+		<!-- 保存按钮 -->
+		<view style="height: 165rpx;" class="savepadding"></view>
+		<view class="bottom-btns savepadding">
+			<view class="ddflex" style="margin: 30rpx;justify-content: space-between;">
+				<view class="btn1" @click="jumpUrl('/warning/machineAlarm/machineAlarm')">断电</view>
+				<view class="btn1" @click="jumpUrl('/machineAndCell/machineDetail/machineDetail')">通电</view>
+				<view class="btn2">解绑</view>
+				<view class="btn3">保存</view>
+			</view>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	const app = getApp();
+	const req = require("../../utils/request.js");
+	export default {
+		components: {
+		},
+		props: {},
+		data() {
+			return {
+				systems: {},
+				isTop:0,
+			}
+		},
+		onLoad(options) {
+			
+		},
+		onShow() {
+			
+		},
+		methods: {
+			jumpUrl(url) {
+				if (req.isLogins(true)) {
+					uni.navigateTo({
+						url: url
+					})
+				}
+			},
+		},
+		mounted() {
+			const systemInfo = uni.getSystemInfoSync();
+			// px转换到rpx的比例
+			let pxToRpxScale = 750 / systemInfo.windowWidth;
+			let systems = {
+				ktxStatusHeight: systemInfo.statusBarHeight * pxToRpxScale, // 状态栏的高度
+				navigationHeight: 44 * pxToRpxScale // 导航栏的高度
+			};
+			systems.barHeight = systems.ktxStatusHeight + systems.navigationHeight;
+			this.systems = systems;
+		},
+		onPageScroll: function(e) {
+			if (e.scrollTop > this.systems.barHeight) {
+				this.isTop = 1;
+			} else {
+				this.isTop = 0;
+			}
+		}
+	}
+</script>
+
+<style>
+	@import "./cellDetail.css";
+</style>

+ 180 - 0
machineAndCell/cellSearch/cellSearch.css

@@ -0,0 +1,180 @@
+.top-box{
+	background-color: #fff;
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	z-index: 100;
+}
+.top-box{
+	background-color: #fff;
+}
+.top-title{
+	font-size: 36rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #333333;
+	padding: 0 30rpx;
+}
+.dow-ssicon{
+	width: 36rpx;
+	height: 36rpx;
+	margin-left: 15rpx;
+}
+/* 搜索 */
+.search-box{
+	padding: 30rpx;
+}
+.search-saoma{
+	width: 40rpx;
+	height: 40rpx;
+	margin-right: 45rpx;
+}
+.search-input{
+	height: 76rpx;
+	line-height: 76rpx;
+	background: #F8F8F8;
+	border-radius: 20rpx 20rpx 20rpx 20rpx;
+	opacity: 1;
+	padding: 0 16rpx 0 30rpx;
+}
+.search-input-icon{
+	width: 26rpx;
+	height: 26rpx;
+	margin-right: 10rpx;
+}
+.search-btn{
+	width: 96rpx;
+	height: 47rpx;
+	line-height: 47rpx;
+	background: #EB5C20;
+	border-radius: 24rpx 24rpx 24rpx 24rpx;
+	opacity: 1;
+	font-size: 22rpx;
+	font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
+	font-weight: normal;
+	color: #FFFFFF;
+	text-align: center;
+	margin-left: 10rpx;
+}
+
+.state-box{
+	margin: 30rpx;
+	justify-content: space-between;
+}
+.state-item{
+	width: 335rpx;
+	padding: 12rpx 20rpx;
+	background: #FFFFFF;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	box-sizing: border-box;
+}
+.icon{
+	width: 26rpx;
+	height: 26rpx;
+	background: #EB5C20;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	margin-right: 10rpx;
+}
+.state-label{
+	line-height: 41rpx;
+	font-size: 28rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #242323;
+	line-height: 35rpx;
+}
+.state-data{
+	margin-left: 36rpx;
+	justify-content: space-between;
+	line-height: 47rpx;
+	font-size: 32rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #242323;
+}
+
+/* 电池 */
+.cell-box{
+	margin: 30rpx;
+	background: #FFFFFF;
+	border-radius: 20rpx 20rpx 20rpx 20rpx;
+	opacity: 1;
+	padding: 30rpx;
+}
+.cell-title{
+	width: 157rpx;
+	line-height: 54rpx;
+	font-size: 36rpx;
+	font-family: Source Han Sans CN-Bold, Source Han Sans CN;
+	font-weight: bold;
+	color: #242323;
+}
+.cell-state{
+	line-height: 33rpx;
+	background: #EB5C20;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	font-size: 22rpx;
+	font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
+	font-weight: normal;
+	color: #FFFFFF;
+	padding: 0 10rpx;
+	text-align: center;
+	margin-left: 20rpx;
+}
+.cell-info{
+	font-size: 28rpx;
+	font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
+	font-weight: normal;
+	color: #666464;
+	line-height: 41rpx;
+}
+.cell-option{
+	margin-top: 20rpx;
+	border-top: 1rpx solid #E6E6E6;
+	padding: 30rpx 0 0;
+	line-height: 41rpx;
+	font-size: 28rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #333333;
+	text-align: center;
+}
+
+.data-end{
+	width: 170rpx;
+	line-height: 36rpx;
+	font-size: 24rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #A8A5A5;
+	position: relative;
+	display: block;
+	margin:30rpx auto;
+	text-align: center;
+}
+.data-end::before{
+	content: '';
+	width: 67rpx;
+	height: 1rpx;
+	opacity: 1;
+	background-color:#A8A5A5;
+	position: absolute;
+	top: 50%;
+	left: -22rpx;
+	transform: translate(-100%,-50%);
+}
+.data-end::after{
+	content: '';
+	width: 67rpx;
+	height: 1rpx;
+	opacity: 1;
+	background-color:#A8A5A5;
+	position: absolute;
+	top: 50%;
+	right: -22rpx;
+	transform: translate(100%,-50%);
+}

+ 115 - 0
machineAndCell/cellSearch/cellSearch.vue

@@ -0,0 +1,115 @@
+<template>
+	<view style="padding-bottom: 30rpx;">
+		<view class="top-box">
+			<view class="search-box ddflex">
+				<image class="search-saoma" src="../../static/pages/images/saoma.png"></image>
+				<view class="search-input ddflex fflex">
+					<image class="search-input-icon" src="../../static/pages/images/search.png"></image>
+					<input class="fflex"  placeholder="请输入编号查询"/>
+					<view class="search-btn">搜索</view>
+				</view>
+			</view>
+		</view>
+		
+		<view :style="'height: '+ (134) + 'rpx;'"></view>
+		
+		
+		<!-- 电池 -->
+		<view>
+			<view class="cell-box" v-for="item,index in 10">
+				<view class="ddflex">
+					<view style="margin-right: 35rpx;">
+						<cell :width="99" :height="197" :soc="index*10" :showsoc="true"></cell>
+					</view>
+					<view class="cell-info fflex">
+						<view class="ddflex">
+							<view class="cell-title">60V40AH</view>
+							<view class="cell-state">已租</view>
+						</view>
+						<view class="cell-info ddflex">
+							<view>机柜名称:</view>
+							<view>CHZD04TTCC200329109</view>
+						</view>
+						<view class="cell-info  ddflex">
+							<view>电池ID:</view>
+							<view>613880983244</view>
+						</view>
+						<view class="cell-info ddflex">
+							<view>门店:</view>
+							<view>白云科技门店</view>
+						</view>
+						<view class="cell-info ddflex">
+							<view>剩余30天</view>
+						</view>
+						<view class="cell-info ddflex">
+							<view>2023-04-03  11:07:46</view>
+						</view>
+					</view>
+				</view>
+				<view class="cell-option ddflex">
+					<view class="fflex">定位</view>
+					<view class="fflex">BMS</view>
+					<view class="fflex">详情</view>
+				</view>
+			</view>
+		</view>
+		
+		<view class="data-end">没有更多信息了</view>
+
+	</view>
+</template>
+
+<script>
+	const app = getApp();
+	const req = require("../../utils/request.js");
+	import cell from "../../components/cell/index";
+
+	export default {
+		components: {
+			cell
+		},
+		props: {},
+		data() {
+			return {
+				systems: {},
+				isTop:0,
+				
+				queryType:1
+			}
+		},
+		onLoad(options) {
+
+		},
+		onShow() {
+			
+		},
+		methods: {
+			queryTypeChange(val) {
+				if (this.queryType == val) return false
+				this.queryType = val
+			},
+		},
+		mounted() {
+			const systemInfo = uni.getSystemInfoSync();
+			// px转换到rpx的比例
+			let pxToRpxScale = 750 / systemInfo.windowWidth;
+			let systems = {
+				ktxStatusHeight: systemInfo.statusBarHeight * pxToRpxScale, // 状态栏的高度
+				navigationHeight: 44 * pxToRpxScale // 导航栏的高度
+			};
+			systems.barHeight = systems.ktxStatusHeight + systems.navigationHeight;
+			this.systems = systems;
+		},
+		onPageScroll: function(e) {
+			if (e.scrollTop > this.systems.barHeight) {
+				this.isTop = 1;
+			} else {
+				this.isTop = 0;
+			}
+		}
+	}
+</script>
+
+<style>
+	@import "./cellSearch.css";
+</style>

+ 14 - 1
machineAndCell/machineDetail/machineDetail.css

@@ -42,7 +42,19 @@ page {
 .item:last-child{
 	border-bottom: none;
 }
-
+.state{
+	width: 73rpx;
+	line-height: 36rpx;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	border: 2rpx solid #0FCB27;
+	font-size: 22rpx;
+	font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
+	font-weight: normal;
+	color: #0FCB27;
+	text-align: center;
+	margin-left: 10rpx;
+}
 .label {
 	color: #666464;
 	margin-right: 30rpx;
@@ -51,6 +63,7 @@ page {
 .item-input {
 	color: #A8A5A5;
 	text-align: right;
+	justify-content: flex-end;
 }
 
 

+ 11 - 5
machineAndCell/machineDetail/machineDetail.vue

@@ -3,9 +3,9 @@
 		<view>
 			<view class="item ddflex">
 				<view class="label">机柜名称</view>
-				<view class="item-input fflex">
+				<view class="item-input fflex ddflex">
 					<view>西正路100号门店12仓</view>
-					<view>在线</view>
+					<view class="state">在线</view>
 				</view>
 			</view>
 			<view class="item ddflex">
@@ -74,7 +74,7 @@
 		<!-- 保存按钮 -->
 		<view class="savepadding" style="height: 150rpx;"></view>
 		<view class="savepadding submit-box">
-			<view class="submit-btn">
+			<view class="submit-btn" @click="jumpUrl('/machineAndCell/machineDetailEdit/machineDetailEdit')">
 				更改机柜地址
 			</view>
 		</view>
@@ -96,13 +96,19 @@
 			}
 		},
 		onLoad(options) {
-
+			
 		},
 		onShow() {
 			
 		},
 		methods: {
-			
+			jumpUrl(url) {
+				if (req.isLogins(true)) {
+					uni.navigateTo({
+						url: url
+					})
+				}
+			},
 		},
 		mounted() {
 			const systemInfo = uni.getSystemInfoSync();

+ 99 - 0
machineAndCell/machineDetailEdit/machineDetailEdit.css

@@ -0,0 +1,99 @@
+page{
+	background-color: #fff;
+}
+.top{
+	border-top: 1rpx solid #E6E6E6;
+	padding: 36rpx 30rpx;
+}
+.machine-name{
+	font-size: 28rpx;
+	font-weight: 500;
+	color: #666464;
+	line-height: 41rpx;
+}
+.input-box{
+	background: #F5F5F5;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	padding: 0rpx 30rpx;
+	margin-top: 12rpx;
+	height: 96rpx;
+	box-sizing: border-box;
+	line-height: 96rpx;
+}
+.input-box input{
+	/* line-height: 41rpx; */
+	font-size: 28rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #333333;
+}
+.address-icon{
+	width: 36rpx;
+	height: 36rpx;
+	margin: 0 auto;
+}
+.address-label{
+	font-size: 24rpx;
+	font-weight: 500;
+	color: #666464;
+	line-height: 36rpx;
+	text-align: center;
+}
+.select-label{
+	line-height: 36rpx;
+	font-size: 24rpx;
+	font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+	font-weight: 400;
+	color: #A8A5A5;
+	margin-top: 21rpx;
+	padding-bottom:17rpx ;
+	border-bottom:  1rpx solid #E9E9E9;
+}
+.address-item{
+	padding: 30rpx 0 28rpx;
+	border-bottom:  1rpx solid #E9E9E9;
+}
+.address-item:last-child{
+	border-bottom:none
+}
+.address-text{
+	line-height: 40rpx;
+	font-size: 28rpx;
+	font-family: PingFang SC-Medium, PingFang SC;
+	font-weight: 500;
+	color: #000000;
+}
+.address-text2{
+	line-height: 28rpx;
+	font-size: 20rpx;
+	font-family: PingFang SC-Medium, PingFang SC;
+	font-weight: 500;
+	color: #999999;
+	margin-top: 3rpx;
+}
+/* 保存按钮 */
+.submit-box{
+	height: 140rpx;
+	background: #FFFFFF;
+	box-shadow: 0rpx -5rpx 15rpx 1rpx rgba(0,0,0,0.05);
+	border-radius: 0rpx 0rpx 0rpx 0rpx;
+	opacity: 1;
+	position: fixed;
+	left: 0;
+	right: 0;
+	bottom: 0;
+}
+.submit-btn{
+	width: 556rpx;
+	line-height: 76rpx;
+	background: #EB5C20;
+	border-radius: 38rpx 38rpx 38rpx 38rpx;
+	opacity: 1;
+	font-size: 28rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #FFFFFF;
+	text-align: center;
+	margin:30rpx auto;
+}

+ 148 - 0
machineAndCell/machineDetailEdit/machineDetailEdit.vue

@@ -0,0 +1,148 @@
+<template>
+	<view class="top">
+		<view>
+			<view class="machine-name">机柜名称</view>
+			<view class="input-box ddflex">
+				<input placeholder="输入机柜名称"/>
+			</view>
+		</view>
+		<view>
+			<view class="machine-name">所在地区</view>
+			<view class="input-box ddflex">
+				<input v-model="addressObj.name" :disabled="true" class="fflex" placeholder="选择所在地区"/>
+				<view style="margin-left: 10rpx;" @click="chooseLocation">
+					<image class="address-icon" src="../../static/pages/images/address-icon2.png"></image>
+					<view class="address-label">定位</view>
+				</view>
+			</view>
+		</view>
+		
+		<view class="select-label">
+			请选择地址
+		</view>
+		
+		<view>
+			<view class="address-item">
+				<view class="address-text">{{addressObj.address}}</view>
+				<view class="address-text2">当前所在区域</view>
+			</view>
+			<view class="address-item" v-for="item in addressList" @click="selectAddress(item)">
+				<view class="address-text">{{item.title}}</view>
+				<view class="address-text2">{{item.address}}</view>
+			</view>
+		</view>
+	
+		
+		<!-- 保存按钮 -->
+		<view class="savepadding" style="height: 150rpx;"></view>
+		<view class="savepadding submit-box">
+			<view class="submit-btn" @click="jumpUrl('')">
+				保存
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	const app = getApp();
+	const req = require("../../utils/request.js");
+	// 引入SDK核心类
+	var QQMapWX = require("../../utils/qqmap.js");
+
+	export default {
+		components: {},
+		props: {},
+		data() {
+			return {
+				systems: {},
+				isTop:0,
+				
+				latitude:28.23529,
+				longitude:112.93134,
+				
+				addressObj:{
+					name:'',
+					address:''
+				},
+				addressList:[]
+			}
+		},
+		onLoad(options) {
+			// 实例化API核心类
+			QQMapWX.initMap();
+			let location={
+				latitude:this.latitude,
+				longitude:this.longitude,
+			}
+			this.reverseGeocoder(location,true)
+		},
+		onShow() {
+		
+		},
+		methods: {
+			jumpUrl(url) {
+				if (req.isLogins(true)) {
+					uni.navigateTo({
+						url: url
+					})
+				}
+			},
+			chooseLocation() {
+				var tha = this;
+				uni.chooseLocation({
+					success: function(res) {
+						if (res.name) {
+							tha.addressObj= res;
+							tha.reverseGeocoder(res);
+							console.log('地址数据》》》:', res);
+						}
+					}
+				});
+			},
+			reverseGeocoder(location,init) {
+				QQMapWX.reverseGeocoder(location, data => {
+					if(init){
+						this.addressObj.address = data.address
+						this.addressObj.name = data.formatted_addresses.recommend
+					}
+					this.addressList = data.pois
+					console.log('解析后的地址地址数据:', data);
+				});
+			},
+			// 直接选择地址
+			selectAddress(item){
+				this.addressObj.address = item.address
+				this.addressObj.name = item.title
+				this.latitude = item.location.lat
+				this.longitude = item.location.lng
+				let location={
+					latitude:this.latitude,
+					longitude:this.longitude,
+				}
+				this.reverseGeocoder(location)
+			}
+		},
+		mounted() {
+			const systemInfo = uni.getSystemInfoSync();
+			// px转换到rpx的比例
+			let pxToRpxScale = 750 / systemInfo.windowWidth;
+			let systems = {
+				ktxStatusHeight: systemInfo.statusBarHeight * pxToRpxScale, // 状态栏的高度
+				navigationHeight: 44 * pxToRpxScale // 导航栏的高度
+			};
+			systems.barHeight = systems.ktxStatusHeight + systems.navigationHeight;
+			this.systems = systems;
+		},
+		onPageScroll: function(e) {
+			if (e.scrollTop > this.systems.barHeight) {
+				this.isTop = 1;
+			} else {
+				this.isTop = 0;
+			}
+		}
+	}
+</script>
+
+<style>
+	@import "./machineDetailEdit.css";
+</style>

+ 55 - 33
pages.json

@@ -35,12 +35,19 @@
 			"style": {
 				"navigationBarTitleText": "订单详情"
 			}
-		},{
+		},
+		{
 			"path": "pages/machine/machine",
 			"style": {
 				"navigationStyle": "custom"
 			}
 		},
+		{
+			"path": "pages/cell/cell",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
 		// {
 		// 	"path": "pages/main/main",
 		// 	"style": {
@@ -179,16 +186,12 @@
 				"text": "机柜"
 			},
 			{
-				"pagePath": "pages/interactive/index",
-				"text": "社区"
+				"pagePath": "pages/cell/cell",
+				"text": "电池"
 			},
-			// {
-			// 	"pagePath": "pages/live/live",
-			// 	"text": "直播"
-			// },
 			{
-				"pagePath": "pages/cart/cart",
-				"text": "购物"
+				"pagePath": "pages/order/order",
+				"text": "订单"
 			},
 			{
 				"pagePath": "pages/user/user",
@@ -226,8 +229,7 @@
 		"navigationBarTextStyle": "black",
 		"onReachBottomDistance": 300
 	},
-	"subPackages": [
-		{
+	"subPackages": [{
 			"root": "mine",
 			"pages": [{
 					"path": "order/order",
@@ -391,42 +393,41 @@
 		{
 			"root": "warning",
 			"pages": [{
-					"path": "abnormalAlarm/abnormalAlarm",
-					"style": {
-						"navigationBarTitleText": "异常告警"
-					}
-			},{
+				"path": "abnormalAlarm/abnormalAlarm",
+				"style": {
+					"navigationBarTitleText": "异常告警"
+				}
+			}, {
 				"path": "userAlarm/userAlarm",
 				"style": {
 					"navigationBarTitleText": "用户报障"
 				}
-			},{
+			}, {
 				"path": "userAlarmUpload/userAlarmUpload",
 				"style": {
 					"navigationBarTitleText": "上传记录"
 				}
-			},{
+			}, {
 				"path": "reconditionAlarm/reconditionAlarm",
 				"style": {
 					"navigationBarTitleText": "检修提醒"
 				}
-			},{
+			}, {
 				"path": "reconditionAlarmUpload/reconditionAlarmUpload",
 				"style": {
 					"navigationBarTitleText": "上传记录"
 				}
-			},{
+			}, {
 				"path": "orderAlarm/orderAlarm",
 				"style": {
 					"navigationBarTitleText": "异常订单"
 				}
-			},{
+			}, {
 				"path": "machineAlarm/machineAlarm",
 				"style": {
 					"navigationBarTitleText": "故障告警"
 				}
-			}
-			]
+			}]
 		},
 		{
 			"root": "machineAndCell",
@@ -435,17 +436,38 @@
 					"style": {
 						"navigationBarTitleText": "仓体信息"
 					}
-			},{
-				"path": "machineItemManage/machineItemManage",
-				"style": {
-					"navigationBarTitleText": "仓位管理"
-				}
-			},{
-				"path": "machineDetail/machineDetail",
-				"style": {
-					"navigationBarTitleText": "柜体信息"
+				}, {
+					"path": "machineItemManage/machineItemManage",
+					"style": {
+						"navigationBarTitleText": "仓位管理"
+					}
+				}, {
+					"path": "machineDetail/machineDetail",
+					"style": {
+						"navigationBarTitleText": "柜体信息"
+					}
+				}, {
+					"path": "machineDetailEdit/machineDetailEdit",
+					"style": {
+						"navigationBarTitleText": "更改名称/地址"
+					}
+				}, {
+					"path": "cellSearch/cellSearch",
+					"style": {
+						"navigationBarTitleText": "搜索"
+					}
+				},
+				{
+					"path": "cellDetail/cellDetail",
+					"style": {
+						"navigationBarTitleText": "详情"
+					}
+				}, {
+					"path": "BMS/BMS",
+					"style": {
+						"navigationBarTitleText": "BMS信息"
+					}
 				}
-			}
 			]
 		}
 	]

+ 146 - 0
pages/cell/cell.css

@@ -0,0 +1,146 @@
+.top-box{
+	background-color: #fff;
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	z-index: 100;
+}
+.top-box{
+	background-color: #fff;
+}
+.top-title{
+	font-size: 36rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #333333;
+	padding: 0 30rpx;
+}
+.dow-ssicon{
+	width: 36rpx;
+	height: 36rpx;
+	margin-left: 15rpx;
+}
+.tab-box{
+	background-color: #fff;
+	padding: 30rpx;
+	z-index: 100;
+}
+.tab-item{
+	text-align: center;
+	font-size: 28rpx;
+	line-height: 41rpx;
+}
+.tab-item image{
+	visibility: hidden;
+}
+.tab-item-active{
+	color: #EB5C20;
+}
+.tab-item-active image{
+	visibility: visible;
+}
+.tab-active-icon{
+	width: 32rpx;
+	height: 10rpx;
+	margin-top: 10rpx;
+	margin: auto;
+}
+.saoma{
+	width: 39rpx;
+	height: 36rpx;
+	margin-left: 60rpx;
+	margin-bottom: 10rpx;
+}
+.sousuo{
+	width: 36rpx;
+	height: 36rpx;
+	margin-left: 50rpx;
+	margin-bottom: 10rpx;
+}
+
+.state-box{
+	margin: 30rpx;
+	justify-content: space-between;
+}
+.state-item{
+	width: 335rpx;
+	padding: 12rpx 20rpx;
+	background: #FFFFFF;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	box-sizing: border-box;
+}
+.icon{
+	width: 26rpx;
+	height: 26rpx;
+	background: #EB5C20;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	margin-right: 10rpx;
+}
+.state-label{
+	line-height: 41rpx;
+	font-size: 28rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #242323;
+	line-height: 35rpx;
+}
+.state-data{
+	margin-left: 36rpx;
+	justify-content: space-between;
+	line-height: 47rpx;
+	font-size: 32rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #242323;
+}
+
+/* 电池 */
+.cell-box{
+	margin: 30rpx;
+	background: #FFFFFF;
+	border-radius: 20rpx 20rpx 20rpx 20rpx;
+	opacity: 1;
+	padding: 30rpx;
+}
+.cell-title{
+	width: 157rpx;
+	line-height: 54rpx;
+	font-size: 36rpx;
+	font-family: Source Han Sans CN-Bold, Source Han Sans CN;
+	font-weight: bold;
+	color: #242323;
+}
+.cell-state{
+	line-height: 33rpx;
+	background: #EB5C20;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	font-size: 22rpx;
+	font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
+	font-weight: normal;
+	color: #FFFFFF;
+	padding: 0 10rpx;
+	text-align: center;
+	margin-left: 20rpx;
+}
+.cell-info{
+	font-size: 28rpx;
+	font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
+	font-weight: normal;
+	color: #666464;
+	line-height: 41rpx;
+}
+.cell-option{
+	margin-top: 20rpx;
+	border-top: 1rpx solid #E6E6E6;
+	padding: 30rpx 0 0;
+	line-height: 41rpx;
+	font-size: 28rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #333333;
+	text-align: center;
+}

+ 164 - 0
pages/cell/cell.vue

@@ -0,0 +1,164 @@
+<template>
+	<view>
+		<view class="top-box">
+			<view class="top-title">
+				<view class="ddflex" :style="'height: '+ systems.navigationHeight + 'rpx;padding-top:' + systems.ktxStatusHeight + 'rpx;'+'line-height: '+ systems.navigationHeight + 'rpx;'">
+					<view>白云科技门店</view>
+					<image class="dow-ssicon" src="../../static/pages/images/dow-ssicon.png"></image>
+				</view>
+			</view>
+			<view class="tab-box ddflex">
+				<view class="fflex ddflex">
+					<view :class="'tab-item fflex '+(queryType==1?'tab-item-active':'')" @click="queryTypeChange(1)">
+						<view>全部</view>
+						<image class="tab-active-icon" src="../../static/images/tab_cur.png"></image>
+					</view>
+					<view :class="'tab-item fflex '+(queryType==2?'tab-item-active':'')" @click="queryTypeChange(2)">
+						<view>未租</view>
+						<image class="tab-active-icon" src="../../static/images/tab_cur.png"></image>
+					</view>
+					<view :class="'tab-item fflex '+(queryType==3?'tab-item-active':'')" @click="queryTypeChange(3)">
+						<view>已租</view>
+						<image class="tab-active-icon" src="../../static/images/tab_cur.png"></image>
+					</view>
+				</view>
+				<view class="ddflex">
+					<image class="saoma" src="../../static/pages/images/saoma.png"></image>
+					<image class="sousuo" src="../../static/pages/images/search.png" @click="jumpUrl('/machineAndCell/cellSearch/cellSearch')"></image>
+				</view>
+			</view>
+		</view>
+		
+		<view :style="'height: '+ (systems.navigationHeight+systems.ktxStatusHeight+106) + 'rpx;'"></view>
+		
+		<view class="ddflex state-box">
+			<view class="state-item">
+				<view class="ddflex">
+					<view class="icon"></view>
+					<view class="state-label">租赁中</view>
+				</view>
+				<view class="ddflex state-data">
+					<view>6</view>
+					<view>16.66%</view>
+				</view>
+			</view>
+			<view class="state-item">
+				<view class="ddflex">
+					<view class="icon" style="background: #0FCB27;"></view>
+					<view class="state-label">空闲</view>
+				</view>
+				<view class="ddflex fflex state-data">
+					<view>30</view>
+					<view>83.33%</view>
+				</view>
+			</view>
+		</view>
+		
+		<!-- 电池 -->
+		<view>
+			<view class="cell-box" v-for="item,index in 10">
+				<view class="ddflex">
+					<view style="margin-right: 35rpx;">
+						<cell :width="99" :height="197" :soc="index*10" :showsoc="true"></cell>
+					</view>
+					<view class="cell-info fflex">
+						<view class="ddflex">
+							<view class="cell-title">60V40AH</view>
+							<view class="cell-state">已租</view>
+						</view>
+						<view class="cell-info ddflex">
+							<view>机柜名称:</view>
+							<view>CHZD04TTCC200329109</view>
+						</view>
+						<view class="cell-info  ddflex">
+							<view>电池ID:</view>
+							<view>613880983244</view>
+						</view>
+						<view class="cell-info ddflex">
+							<view>门店:</view>
+							<view>白云科技门店</view>
+						</view>
+						<view class="cell-info ddflex">
+							<view>剩余30天</view>
+						</view>
+						<view class="cell-info ddflex">
+							<view>2023-04-03  11:07:46</view>
+						</view>
+					</view>
+				</view>
+				<view class="cell-option ddflex">
+					<view class="fflex">定位</view>
+					<view class="fflex" @click="jumpUrl('/machineAndCell/BMS/BMS')">BMS</view>
+					<view class="fflex" @click="jumpUrl('/machineAndCell/cellDetail/cellDetail')">详情</view>
+				</view>
+			</view>
+		</view>
+
+
+		<foot channel="cell" :isUpdate="isUpdate"></foot>
+	</view>
+</template>
+
+<script>
+	const app = getApp();
+	const req = require("../../utils/request.js");
+	import cell from "../../components/cell/index";
+	import foot from "../../components/nav-bar/index";
+
+	export default {
+		components: {
+			cell,
+			foot
+		},
+		props: {},
+		data() {
+			return {
+				systems: {},
+				isTop:0,
+				
+				queryType:1
+			}
+		},
+		onLoad(options) {
+
+		},
+		onShow() {
+			
+		},
+		methods: {
+			jumpUrl(url){
+				if(req.isLogins(true)){
+					uni.navigateTo({
+						url:url
+					})
+				}
+			},
+			queryTypeChange(val) {
+				if (this.queryType == val) return false
+				this.queryType = val
+			},
+		},
+		mounted() {
+			const systemInfo = uni.getSystemInfoSync();
+			// px转换到rpx的比例
+			let pxToRpxScale = 750 / systemInfo.windowWidth;
+			let systems = {
+				ktxStatusHeight: systemInfo.statusBarHeight * pxToRpxScale, // 状态栏的高度
+				navigationHeight: 44 * pxToRpxScale // 导航栏的高度
+			};
+			systems.barHeight = systems.ktxStatusHeight + systems.navigationHeight;
+			this.systems = systems;
+		},
+		onPageScroll: function(e) {
+			if (e.scrollTop > this.systems.barHeight) {
+				this.isTop = 1;
+			} else {
+				this.isTop = 0;
+			}
+		}
+	}
+</script>
+
+<style>
+	@import "./cell.css";
+</style>

+ 41 - 0
pages/machine/machine.css

@@ -115,4 +115,45 @@
 	width: 50rpx;
 	height: 50rpx;
 	margin-left: 10rpx;
+}
+
+/* 弹窗 */
+.pop-title{
+	line-height: 54rpx;
+	font-size: 36rpx;
+	font-family: Source Han Sans CN-Medium, Source Han Sans CN;
+	font-weight: 500;
+	color: #333333;
+	margin-left:30rpx ;
+}
+.change-ssicon{
+	width: 48rpx;
+	height: 48rpx;
+	margin-left: 10rpx;
+}
+.pop-content{
+	margin: 48rpx 30rpx 30rpx;
+	overflow: scroll;
+}
+.pop-content::-webkit-scrollbar{
+	display: none;
+}
+.pop-content-item{
+	height: 108rpx;
+	line-height: 108rpx;
+	background: #F5F5F5;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	border: 2rpx solid #F5F5F5;
+	padding: 0 30rpx;
+	margin-bottom: 28rpx;
+}
+.pop-content-active{
+	background: #fff;
+	border: 2rpx solid #EB5C20;
+}
+.pop-content-icon{
+	width: 12rpx;
+	height: 19rpx;
+	margin-left: 10rpx;
 }

+ 37 - 2
pages/machine/machine.vue

@@ -2,7 +2,7 @@
 	<view>
 		<view class="top-box">
 			<view class="top-title">
-				<view class="ddflex" :style="'height: '+ systems.navigationHeight + 'rpx;padding-top:' + systems.ktxStatusHeight + 'rpx;'+'line-height: '+ systems.navigationHeight + 'rpx;'">
+				<view @click="showPop=true" class="ddflex" :style="'height: '+ systems.navigationHeight + 'rpx;padding-top:' + systems.ktxStatusHeight + 'rpx;'+'line-height: '+ systems.navigationHeight + 'rpx;'">
 					<view>白云科技门店</view>
 					<image class="dow-ssicon" src="../../static/pages/images/dow-ssicon.png"></image>
 				</view>
@@ -43,6 +43,22 @@
 			</view>
 		</view>
 		
+		<left-pop v-if="showPop" :showPop="showPop" :btnColor="'#11BB8B'" :showBtn='false' title="解除提醒" width="460rpx"
+			@closePop="closePop()" @popSubmit="popSubmit()">
+			<view class="" style="height: 100%;flex-direction: column;display: flex;">
+				<view @click="closePop()" class="pop-title ddflex" :style="'height: '+ systems.navigationHeight + 'rpx;padding-top:' + systems.ktxStatusHeight + 'rpx;'+'line-height: '+ systems.navigationHeight + 'rpx;'">
+					<view>白云科技门店</view>
+					<image class="change-ssicon" src="../../static/pages/images/change.png"></image>
+				</view>
+				<view class="pop-content fflex">
+					<view :class="'pop-content-item '+(index==0?'pop-content-active':'')" v-for="(item,index) in 10">
+						<view class="pop-content-name">白云科技门店</view>
+						<image class="pop-content-icon" src=""></image>
+					</view>
+				</view>
+			</view>
+		</left-pop>
+		
 		<foot channel="machine" :isUpdate="isUpdate"></foot>
 	</view>
 </template>
@@ -51,10 +67,12 @@
 	const app = getApp();
 	const req = require("../../utils/request.js");
 	import foot from "../../components/nav-bar/index";
+	import leftPop from "../../components/left-pop/index";
 
 	export default {
 		components: {
-			foot
+			foot,
+			leftPop
 		},
 		props: {},
 		data() {
@@ -62,6 +80,9 @@
 				systems: {},
 				isTop:0,
 				isUpdate: false,
+				
+				showPop: false,
+				tempData: null,
 			}
 		},
 		onLoad(options) {
@@ -80,6 +101,20 @@
 					})
 				}
 			},
+			// 弹窗弹出
+			openPop(item) {
+				this.tempData = JSON.parse(JSON.stringify(item))
+				this.showPop = true
+			},
+			// 弹窗关闭
+			closePop() {
+				this.showPop = false
+				this.tempData = null
+			},
+			// 弹窗确认
+			popSubmit() {
+				this.closePop()
+			},
 		},
 		mounted() {
 			const systemInfo = uni.getSystemInfoSync();

+ 2 - 2
pages/nearby/nearby.vue

@@ -1,10 +1,10 @@
 <template>
 	<view>
-		<block v-if="config.Many_Store == 1">
+		<block v-if="true||config.Many_Store == 1">
 		<!--pages/nearby/nearby.wxml-->
 		<view class="ssbox bgfff dflex">
 			<view class="search dflex">
-				<view class="section" v-if="layerModel!=1">
+				<view class="section" v-if="true||layerModel!=1">
 					<picker mode="region" @change="bindRegionChange" :value="region" :custom-item="customItem">
 						<view class="picker dflex">
 							<!-- {{region[2]?region[2]:''}} -->

+ 6 - 1
pages/order/order.vue

@@ -73,15 +73,20 @@
 			</view>
 		</view>
 		
+		
+		<foot channel="order" :isUpdate="isUpdate"></foot>
 	</view>
 </template>
 
 <script>
 	const app = getApp();
 	const req = require("../../utils/request.js");
+	import foot from "../../components/nav-bar/index";
 
 	export default {
-		components: {},
+		components: {
+			foot
+		},
 		props: {},
 		data() {
 			return {

+ 1 - 1
pages/user/user.vue

@@ -302,7 +302,7 @@
 					data.nickName = req.excludeSpecial(data.nickName);
 					this.userInfos = data;
 					let userInfo = req.getStorage('userInfo');
-					userInfo.isDistriUser = suc.isDistriUser;
+					userInfo.isDistriUser = this.userInfos.isDistriUser;
 					req.setStorage('userInfo', userInfo);
 					// that.setData(data); // this.isbindmobile();
 					console.log('userinfo==' + JSON.stringify(data))

二進制
static/pages/images/address-icon2.png


二進制
static/pages/images/change.png


二進制
static/pages/images/self/cell.png


二進制
static/pages/images/self/cell_h.png


二進制
static/pages/images/self/index.png


二進制
static/pages/images/self/index_h.png


二進制
static/pages/images/self/machine.png


二進制
static/pages/images/self/machine_h.png


二進制
static/pages/images/self/order.png


二進制
static/pages/images/self/order_h.png


二進制
static/pages/images/self/user.png


二進制
static/pages/images/self/user_h.png


+ 20 - 31
utils/request.js

@@ -1022,20 +1022,19 @@ if (header.appId == 'ZQ1VK5oc17I387E') {
 	selectedIconPath = '/static/pages/images/' + publics.iconSrc + 'home_h.png'
 }
 var tab = [{
-		text: header.appId == 'ZQ1VK5oc17I387E' ? '云药房' : "首页",
-		iconPath: header.appId == 'ZQ1VK5oc17I387E' ? '/static/pages/images/yunyao.png' :
-			"/static/pages/images/home.png",
-		selectedIconPath: selectedIconPath,
+		text: "首页",
+		iconPath: '/static/pages/images/self/index.png',
+		selectedIconPath: '/static/pages/images/self/index_h.png',
 		pagePath: 'pages/index/index',
 		channel: 'home',
 		click: 'goHome',
-		index: header.appId == 'ZQ1VK5oc17I387E' ? 3 : 1,
+		index: 1,
 		show: true
 	},
 	{
 		text: "机柜",
-		iconPath: "/static/pages/images/sort.png",
-		selectedIconPath: '/static/pages/images/' + publics.iconSrc + 'sort_h.png',
+		iconPath: '/static/pages/images/self/machine.png',
+		selectedIconPath: '/static/pages/images/self/machine_h.png',
 		pagePath: 'pages/machine/machine',
 		click: 'goMachine',
 		channel: 'machine',
@@ -1043,39 +1042,29 @@ var tab = [{
 		show: true
 	},
 	{
-		text: "社区",
-		iconPath: "/static/pages/images/interactive.png",
-		selectedIconPath: '/static/pages/images/' + publics.iconSrc + 'interactive_h.png',
-		pagePath: 'pages/interactive/index',
-		click: 'goInteractive',
-		channel: 'interactive',
+		text: "电池",
+		iconPath: '/static/pages/images/self/cell.png',
+		selectedIconPath: '/static/pages/images/self/cell_h.png',
+		pagePath: 'pages/cell/cell',
+		click: 'goCell',
+		channel: 'cell',
 		index: 3,
 		show: true
 	},
 	{
-		text: "直播",
-		iconPath: "/static/pages/images/live.png",
-		selectedIconPath: '/static/pages/images/' + publics.iconSrc + 'live_h.png',
-		pagePath: 'pages/live/live',
-		click: 'goLive',
-		channel: 'live',
-		index: 3,
-		show: header.appId == 'ZQ1VK5oc17I387E' ? false : false
-	},
-	{
-		text: "购物车",
-		iconPath: '/static/pages/images/cart.png',
-		selectedIconPath: '/static/pages/images/' + publics.iconSrc + 'cart_h.png',
-		pagePath: 'pages/cart/cart',
-		click: 'goCart',
-		channel: 'cart',
+		text: "订单",
+		iconPath: '/static/pages/images/self/order.png',
+		selectedIconPath: '/static/pages/images/self/order_h.png',
+		pagePath: 'pages/order/order',
+		click: 'goOrder',
+		channel: 'order',
 		index: 5,
 		show: true
 	},
 	{
 		text: "我的",
-		iconPath: '/static/pages/images/user.png',
-		selectedIconPath: '/static/pages/images/' + publics.iconSrc + 'user_h.png',
+		iconPath: '/static/pages/images/self/user.png',
+		selectedIconPath: '/static/pages/images/self/user_h.png',
 		pagePath: 'pages/user/user',
 		click: 'goUser',
 		channel: 'user',