zhuguifei
2 天以前 7941623b1fb108a154ea4270d7c7e2df6031f6e5
优化页面UI更新
已修改3个文件
100 ■■■■■ 文件已修改
common/api.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mqtt/MqttView.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabBar/device.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/api.js
@@ -1,11 +1,12 @@
import {
    fly
} from '@/common/request/fly.js'
const base = "http://192.168.21.3:9999"
// const base = "https://lanpucloud.cn"
// const base = "http://192.168.21.3:9999"
const base = "http://lanpucloud.cn"
//配置请求基地址
fly.config.baseURL = base + ""
fly.config.baseURL = base + "/herb"
// fly.config.baseURL = base + ""
const ip = uni.getStorageSync('lan_ip');
if (ip) {
    fly.config.baseURL = "http://" + ip + ":9999"
mqtt/MqttView.vue
@@ -47,17 +47,20 @@
                }
                let opts = {
                    // #ifdef H5
                    url: 'wss://' + this.$api.mqttBaseUrl + ':8084/mqtt',
                    url: 'ws://' + this.$api.mqttBaseUrl + ':8083/mqtt',
                    // #endif
                    // #ifdef MP-WEIXIN
                    url: 'wxs://' + this.$api.mqttBaseUrl + ':8084/mqtt', // 微信小程序强制 WSS
                    // #endif
                    // #ifdef APP-PLUS
                    url: 'wxs://' + this.$api.mqttBaseUrl + ':8084/mqtt', // Android/iOS 用普通 WebSocket
                    url: 'wx://' + this.$api.mqttBaseUrl + ':8083/mqtt', // Android/iOS 用普通 WebSocket
                    // #endif
                    clientId: deviceid,
                    username: account.username,
                    password: account.password
                    // username: account.username,
                    // password: account.password,
                    //统一使用租户登录 TODO 添加多租户用户
                    username: 'tongjitang',
                    password: '123456'
                }
                if (!this.$mqttTool.client) {
                    this.$mqttTool.client = await this.$mqttTool.connect(opts);
pages/tabBar/device.vue
@@ -177,13 +177,13 @@
                             <template v-else-if="item.warnData">
                                <view class="title text-sm text-yellow text-cut"> {{(item.warnData.length > 0) ? item.warnData[0]:''}}</view>
                            </template>
                            <view v-if="getErrorCount(item) > 0">
                                <u-tag  size="mini" :text="getErrorCount(item)" type="error" plain></u-tag>
                            </view>
                            <view style="width: 20rpx;"></view>
                            <view v-if="getWarnCount(item) > 0">
                                <u-tag  size="mini" :text="getWarnCount(item)" type="warning" plain></u-tag>
                            </template>
                            <view v-if="getErrorCount(item) > 0">
                                <u-tag  size="mini" :text="getErrorCount(item)" type="error" plain></u-tag>
                            </view>
                            <view style="width: 20rpx;"></view>
                            <view v-if="getWarnCount(item) > 0">
                                <u-tag  size="mini" :text="getWarnCount(item)" type="warning" plain></u-tag>
                            </view>
                        </view>
@@ -208,23 +208,28 @@
                loading: true,
                // v-model绑定的这个变量不要在分页请求结束中自己赋值!!!
                dataList: [],
                curDate: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd'),
                curDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
                isProcessing: false,
                // key->设备租户+code 
                dataMap: new Map(),
                alarmEquCount: 0,
                faultEquCount: 0,
                timer: null
                timer: null,
                mqttThrottleMs: 1000,
                lastMqttTs: 0,
                dateTimer: null
            }
        },
        onShow() {
            this.startTimer()
            this.startDateTimer()
            this.mqttData()
        },
        onHide() {
            this.stopTimer()
            this.stopDateTimer()
            uni.$off(this.$constant.MQTT_TOPIC_MESSAGE)
        },
        onTabItemTap: function(e) {
@@ -273,22 +278,22 @@
            },
            getErrorCount(item){
                let count = 0;
                if(item.errorData){
                    count += item.errorData.length
                }
                return count;
            },
            getWarnCount(item){
                let count = 0;
                if(item.warnData){
                    count += item.warnData.length
                }
                return count;
            },
            getErrorCount(item){
                let count = 0;
                if(item.errorData){
                    count += item.errorData.length
                }
                return count;
            },
            getWarnCount(item){
                let count = 0;
                if(item.warnData){
                    count += item.warnData.length
                }
                return count;
            },
            startTimer() {
                this.timer = setInterval(() => {
                    //this.queryRealFaultData();
@@ -296,6 +301,14 @@
            },
            stopTimer() {
                clearInterval(this.timer);
            },
            startDateTimer() {
                this.dateTimer = setInterval(() => {
                    this.curDate = dayjs().format('YYYY-MM-DD HH:mm:ss')
                }, 1000);
            },
            stopDateTimer() {
                clearInterval(this.dateTimer);
            },
            queryRealFaultData() {
                //发送数据
@@ -324,6 +337,9 @@
            mqttData() {
                uni.$on(this.$constant.MQTT_TOPIC_MESSAGE, (data) => {
                    try {
                        const now = Date.now();
                        if (now - this.lastMqttTs < this.mqttThrottleMs) return;
                        this.lastMqttTs = now;
                        // 1. 数据解析和验证
                        const {
                            data: wdata,
@@ -342,11 +358,11 @@
                            case topics.updateEquStatu:
                                this.handleEquipmentStatusUpdate(wdata);
                                break;
                            case topics.realData:
                            case topics.realData:
                                this.mergeMqttRealData(wdata);
                                break;
                            case topics.realFaultTopic:
                            case topics.oneceFaultTopic:
                            case topics.oneceFaultTopic:
                                this.handleFaultData(wdata);
                                break;
                        }
@@ -428,16 +444,16 @@
                    const [tenantId, equCode] = key.split("_");
                    const targetItem = this.dataList.find(i =>
                        i.tenantId == tenantId && i.code == equCode
                    );
                    );
                    if (targetItem) {
                        const updatedItem = {
                            ...targetItem,
                            errorData: targetItem.online ? faults.filter(f => f.faultType === 1).map(n => n.faultName) : [],
                            warnData: targetItem.online ? faults.filter(f => f.faultType === 2).map(n => n.faultName) : [],
                        };
                        if(targetItem.online){
                            updatedItem.refreshTime = dayjs().format('HH:mm:ss');
                        };
                        if(targetItem.online){
                            updatedItem.refreshTime = dayjs().format('HH:mm:ss');
                        }
                        
                        this.$set(this.dataList, this.dataList.indexOf(targetItem), updatedItem);
@@ -573,4 +589,4 @@
            }
        }
    }
</style>
</style>