zengh
2022-05-09 52c39f5e2711e5535b689b66dfa5e100c7882b7f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
// import $store from '../index.js'
// import vueconfig from '../../vue.config.js'
import Wst from './lid/websocketL.js'
import WxStorage from "../static/lib/wxStorage.js" //微信Storage
 
// var url = 'ws://' + vueconfig.devServer.proxy["/cloud"].target.substring(5) + '/websocket';
import $store from './index.js'
import apis from "./apiConfig.js"
// let url = 'ws://192.168.0.108:9034/websocket';
// let url = 'ws://61.131.136.25:2082/websocket';
let url = apis.wsapi;
 
const webSockets = new Wst(url);
 
let websocket = {
    state: {
        webSockets: webSockets, //websocket实例
        socket: '', //websoclet主体
        socketValue: '', //接收的数据
        socketState: false, // 当前连接websocket状态
        socketInterval: false, //心跳
        socketTimeout: false, //检测服务器是否连接成功timeout
        socketInterTime: 5000, //心跳时间 秒*1000
        socketStateMY: true, //总控  在退出登入时,强行关闭心跳
    },
    actions: {
        connectws({
            state,
            commit
        }) {
            console.log("开启websocket")
            var getValue = function(res) { // 消息回调
                commit("setSocketValue", res);
            }
            var getState = function(res) { // 状态回调
                commit("setState", res);
            }
            var getws = function(res) { // 主体回调
                commit("setSocket", res);
            }
            // console.log(webSockets.$callBack)
            // let equipmentInformation = navigator.userAgent;
            // var Data = {
            //     router: "share",
            //     res: {
            //         ...$store.state.logs.user,
            //         equipmentInformation: equipmentInformation
            //     },
            // }
            var ws = webSockets.$callBack(getValue, getState, getws, state.puserID || WxStorage.get("ids"))
                .$connect();
 
        },
    },
    mutations: {
        wsOut(state, value) {
            webSockets.$outws();
        },
        setSocket(state, value) { //websocket主体
            state.socket = value;
        },
        setSocketValue(state, value) {
            console.log(value, 222222222222)
            // if (value.router) { //正常数据返回
            //     //去除心跳数据
            //     if (value.router == 'share/heartbeat') {
            //         return;
            //     }
            console.log(value)
            state.socketValue = value;
            //     console.log(value, 'websocket信息')
            // } else { //异常数据返回
            //     console.log(value, '异常')
            // }
            let route;
            let type;
            let types111 = state.socketValue.type.split(",");
            if (types111.length > 1) {
                route = types111[0];
                type = types111[1];
 
            } else {
                type = types111[0];
            }
            // console.log()
            if (type === "start") {
                let types = uni.getSystemInfoSync().platform;
                let
                    d = {
                        serid: uni.getStorageSync("ids") || $store.state.puserID,
                        type: 0,
                        tasktype: route == "grabOrdersZAXC" ? 0 : (route == "grabOrdersZAYWXC" ? 1 : 2)
                    };
                let routes = getCurrentPages(); //获取当前页面栈
                let curRoute = routes[routes.length - 1].route; //获取当前页面的路由
                // console.log(curRoute)
                // return
                // let 
                uni.request({
                    url: $store.state.piAPI + "taskqd/selectLi",
                    method: "POST",
                    data: d,
                    header: {
                        "content-type": "application/x-www-form-urlencoded",
                    },
                    success(res) {
                        const data = res.data.data;
                        for (let k in data) {
                            if (data[k].id == state.socketValue.rid) {
                                let val = JSON.stringify({
                                    ...data[k],
                                    butCT: "beginUp",
                                    buttype: 0,
                                    myid: d.serid,
                                    myName: uni.getStorageSync("name") || $store.state
                                        .puserName,
                                    appenUrl: $store.state.piAPI,
                                    isOn: true
                                });
                                console.log(val)
                                let url = "/pages/grabOrders/map?data=" + JSON.stringify(val);
                                if (route) {
                                    url = "/pages/grabOrders/" + route + "/map?data=" + JSON.stringify(val);
                                }
                                console.log(url)
                                // if (types == "android", curRoute != "pages/grabOrders/map") {
                                if (curRoute != "pages/grabOrders/map") {
                                    uni.navigateTo({
                                        url: url,
                                    });
                                    return
                                }
                                uni.redirectTo({
                                    url: url,
                                });
                            } else {
                                continue;
                            }
                        }
                    },
                });
            } else if (type === "change") {
                // let routes = getCurrentPages(); //获取当前页面栈
                // let curRoute = routes[routes.length - 1].route; //获取当前页面的路由
                let d = {
                    serid: uni.getStorageSync("ids") || $store.state.puserID,
                    type: 0,
                    tasktype: route == "grabOrdersZAXC" ? 0 : (route == "grabOrdersZAYWXC" ? 1 : 2)
                };
            } else if (type == "taks") {
                // 角色辖区
                if (state.UserData.jurisdiction == value.xqid) {
                    console.log("开始推送")
                    // $store.state.Jurisdiction;
                    $store.commit("changeTaksMsg"); //任务状态更新
                    //语音提醒
                    // console.log($store)
                    $store.commit("controlAudio", {
                        key: 'keke',
                        method: '$play'
                    })
                    // "1415621013200236545"
                }
            }
        },
        //本地建造数据传递
        setMyvalue(state, value) {
            state.socketValue = value;
        },
        setsocketStateMY(state, value) {
            state.socketStateMY = value;
        },
        setState(state, value) {
            state.socketState = value;
        },
    }
}
 
export default websocket