|
|
@@ -27,27 +27,63 @@
|
|
|
</view>
|
|
|
<view class="control-list-right">
|
|
|
<view
|
|
|
- class="control-list-right-item"
|
|
|
v-for="(item, index) in deviceList"
|
|
|
+ class="control-list-right-item"
|
|
|
+ :class="item.sfType == '10' ? 'control-list-right-items' : ''"
|
|
|
:key="index"
|
|
|
>
|
|
|
- <view class="control-list-right-item-icon">
|
|
|
- <image
|
|
|
- :src="item.sfType == '3' ? stir : solenoidValve"
|
|
|
- class="solenoid-valve"
|
|
|
- />
|
|
|
+ <view style="display: flex; align-items: center;" v-if="item.sfType != '10'">
|
|
|
+ <view class="control-list-right-item-icon">
|
|
|
+ <image
|
|
|
+ :src="item.sfType == '3' ? stir : solenoidValve"
|
|
|
+ class="solenoid-valve"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ <view class="control-list-right-item-title">{{
|
|
|
+ item.sfDisplayname || item.sfName
|
|
|
+ }}</view>
|
|
|
+ <view class="control-list-right-item-action">
|
|
|
+ <u-switch
|
|
|
+ :value="item.value == 1 ? true : false"
|
|
|
+ @change="changeSwitch(item)"
|
|
|
+ activeColor="#14A478"
|
|
|
+ size="40"
|
|
|
+ inactiveColor="rgb(230, 230, 230)"
|
|
|
+ ></u-switch>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view class="control-list-right-item-title">{{
|
|
|
- item.sfDisplayname || item.sfName
|
|
|
- }}</view>
|
|
|
- <view class="control-list-right-item-action">
|
|
|
- <u-switch
|
|
|
- :value="item.value == 1 ? true : false"
|
|
|
- @change="changeSwitch(item)"
|
|
|
- activeColor="#14A478"
|
|
|
- size="40"
|
|
|
- inactiveColor="rgb(230, 230, 230)"
|
|
|
- ></u-switch>
|
|
|
+ <view v-else>
|
|
|
+ <view class="control-list-right-item-icon">
|
|
|
+ <image
|
|
|
+ :src="item.sfType == '3' ? stir : solenoidValve"
|
|
|
+ class="solenoid-valve"
|
|
|
+ />
|
|
|
+ <text style="margin-left:6rpx">
|
|
|
+ {{
|
|
|
+ item.sfDisplayname || item.sfName
|
|
|
+ }}
|
|
|
+ </text>
|
|
|
+ </view>
|
|
|
+ <view class="control-list-right-item-actions">
|
|
|
+ 状态
|
|
|
+ <view class="control-list-right-item-actions-status">
|
|
|
+ <view
|
|
|
+ class="status-item"
|
|
|
+ :class="item.value == '1'?'status-item-open':''"
|
|
|
+ @click="changeStatus(item, '1')"
|
|
|
+ >开</view>
|
|
|
+ <view
|
|
|
+ class="status-item"
|
|
|
+ :class="item.value == '0'?'status-item-pause':''"
|
|
|
+ @click="changeStatus(item, '0')"
|
|
|
+ >停</view>
|
|
|
+ <view
|
|
|
+ class="status-item status-item-close-label"
|
|
|
+ :class="item.value == '2'?'status-item-close':''"
|
|
|
+ @click="changeStatus(item, '2')"
|
|
|
+ >关</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<u-empty v-if="deviceList.length === 0" text="暂无数据"></u-empty>
|
|
|
@@ -178,24 +214,23 @@ export default {
|
|
|
|
|
|
// 遍历 secondObject 并更新值
|
|
|
for (const key in secondObject) {
|
|
|
- const item = sfCodeMap.get(key);
|
|
|
- if (item) {
|
|
|
- item.value = secondObject[key][0][1];
|
|
|
+ let newKey = '';
|
|
|
+ if(key.includes('GHChannelDev:ChannelParamSet')){
|
|
|
+ newKey = key + ':Status';
|
|
|
+ const item = sfCodeMap.get(newKey);
|
|
|
+ if (item) {
|
|
|
+ const params = JSON.parse(secondObject[key][0][1]);
|
|
|
+ this.$set(item,'value',params.Status)
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ const item = sfCodeMap.get(key);
|
|
|
+ if (item) {
|
|
|
+ this.$set(item,'value',secondObject[key][0][1])
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- async changeSwitch(item) {
|
|
|
- item.value = item.value == 1 ? 0 : 1;
|
|
|
- const sfCode = item.sfCode;
|
|
|
- const params = {};
|
|
|
- params[sfCode] = item.value;
|
|
|
- const payload = {
|
|
|
- data: params,
|
|
|
- };
|
|
|
- const data = {
|
|
|
- devBid: this.devBid,
|
|
|
- data: params,
|
|
|
- };
|
|
|
+ async sfDecvtl(data){
|
|
|
const res = await this.$myRequest({
|
|
|
url: '/api/v2/iot/mobile/device/sf/devctl/',
|
|
|
method: 'post',
|
|
|
@@ -212,6 +247,27 @@ export default {
|
|
|
icon: 'none',
|
|
|
});
|
|
|
},
|
|
|
+ changeStatus(item,index){
|
|
|
+ const sfCode = item.sfCode;
|
|
|
+ const params = {};
|
|
|
+ params[sfCode] = index;
|
|
|
+ const data = {
|
|
|
+ devBid: this.devBid,
|
|
|
+ data: params,
|
|
|
+ };
|
|
|
+ this.sfDecvtl(data)
|
|
|
+ },
|
|
|
+ changeSwitch(item) {
|
|
|
+ item.value = item.value == 1 ? 0 : 1;
|
|
|
+ const sfCode = item.sfCode;
|
|
|
+ const params = {};
|
|
|
+ params[sfCode] = item.value;
|
|
|
+ const data = {
|
|
|
+ devBid: this.devBid,
|
|
|
+ data: params,
|
|
|
+ };
|
|
|
+ this.sfDecvtl(data)
|
|
|
+ },
|
|
|
controlClick(index) {
|
|
|
this.activeIndex = index;
|
|
|
this.deviceList = this.leftList[this.activeIndex]?.childrenList || [];
|
|
|
@@ -373,6 +429,8 @@ uni-page-body {
|
|
|
margin-bottom: 22rpx;
|
|
|
position: relative;
|
|
|
.control-list-right-item-icon {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
.solenoid-valve {
|
|
|
width: 40rpx;
|
|
|
height: 40rpx;
|
|
|
@@ -385,6 +443,46 @@ uni-page-body {
|
|
|
position: absolute;
|
|
|
right: 16rpx;
|
|
|
}
|
|
|
+ .control-list-right-item-actions {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-top: 22rpx;
|
|
|
+ .control-list-right-item-actions-status {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ border-radius: 12rpx;
|
|
|
+ background: #FFF;
|
|
|
+ padding: 6rpx;
|
|
|
+ margin-left: 12rpx;
|
|
|
+ .status-item{
|
|
|
+ width: 92rpx;
|
|
|
+ height: 48rrpx;
|
|
|
+ line-height: 48rrpx;
|
|
|
+ text-align: center;
|
|
|
+ border-radius: 8rpx;
|
|
|
+ background: #FFF;
|
|
|
+ color:#656565;
|
|
|
+ }
|
|
|
+ .status-item-close-label{
|
|
|
+ color:#FF5951;
|
|
|
+ }
|
|
|
+ .status-item-open{
|
|
|
+ background: #0BBC58;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ .status-item-pause{
|
|
|
+ background: #F8B610;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ .status-item-close{
|
|
|
+ background: #DDDFE6;
|
|
|
+ color: #303133;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .control-list-right-items{
|
|
|
+ height: 172rpx;
|
|
|
}
|
|
|
}
|
|
|
}
|