字段修改,添加websocket
This commit is contained in:
@@ -2,5 +2,6 @@
|
||||
+ 原生APP云打包使用自有证书
|
||||
+ 证书别名:testalias
|
||||
+ 诺力三期的接口文档:http://47.111.78.178:27017/,账号名字首字母小写 , 密码123456
|
||||
+ 线上测试环境:http://47.98.105.245:8011
|
||||
+ 屏幕尺寸:854px * 534px
|
||||
+ app图标使用lms
|
||||
@@ -27,7 +27,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getBillsCount} from '@/utils/getData2.js'
|
||||
// import {getBillsCount} from '@/utils/getData2.js'
|
||||
import { sendWebsocket, closeWebsocket } from '@/utils/websocket.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@@ -38,24 +39,50 @@
|
||||
},
|
||||
onLoad () {
|
||||
this._getBillsCount()
|
||||
this.intervalId = setInterval(this._getBillsCount, this.$store.getters.setTime)
|
||||
// this.intervalId = setInterval(this._getBillsCount, this.$store.getters.setTime)
|
||||
},
|
||||
onUnload () {
|
||||
closeWebsocket(true)
|
||||
if (this.intervalId) {
|
||||
clearInterval(this.intervalId)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async _getBillsCount () {
|
||||
let res = await getBillsCount()
|
||||
if (res.code === 1) {
|
||||
this.menuList = [...res.result]
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.desc,
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
// async _getBillsCount () {
|
||||
// let res = await getBillsCount()
|
||||
// if (res.code === 1) {
|
||||
// this.menuList = [...res.result]
|
||||
// } else {
|
||||
// uni.showToast({
|
||||
// title: res.desc,
|
||||
// icon: 'none'
|
||||
// })
|
||||
// }
|
||||
// },
|
||||
_getBillsCount () {
|
||||
let getTimestamp = new Date().getTime()
|
||||
let url = this.$store.getters.baseUrl
|
||||
url = url.substring(7)
|
||||
sendWebsocket('ws://' + url + '/webSocket/SendHomeInfo/' + getTimestamp, {}, this.wsMessage, this.wsErr)
|
||||
},
|
||||
wsMessage (res) {
|
||||
console.log(res)
|
||||
// clearTimeout(this.intervalId)
|
||||
// let data = res.head
|
||||
// this.$store.dispatch('materObj', res.home.result)
|
||||
// if (data.code === '1') {
|
||||
// this.menuList = [...data.result]
|
||||
// } else {
|
||||
// uni.showToast({
|
||||
// title: data.desc,
|
||||
// icon: 'none'
|
||||
// })
|
||||
// }
|
||||
},
|
||||
wsErr () {
|
||||
this.intervalId = setTimeout(() => {
|
||||
this._getBillsCount()
|
||||
}, 10000)
|
||||
},
|
||||
toPage (e) {
|
||||
let url = ''
|
||||
|
||||
@@ -40,13 +40,13 @@
|
||||
<view class="zd-row mgb20">
|
||||
<view class="zd-col-4 login_label">域名</view>
|
||||
<view class="zd-col-20">
|
||||
<input type="text" placeholder="域名地址" v-model="baseUrl" class="inputStyle">
|
||||
<input type="text" placeholder="域名地址" v-model.trim="baseUrl" class="inputStyle">
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd-row mgb20">
|
||||
<view class="zd-col-6 login_label">刷新时间</view>
|
||||
<view class="zd-col-18">
|
||||
<input type="number" placeholder="刷新时间" v-model="setTime" class="inputStyle">
|
||||
<input type="number" placeholder="刷新时间" v-model.trim="setTime" class="inputStyle">
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -74,7 +74,7 @@
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loginname: '',
|
||||
loginname: this.$store.getters.loginName,
|
||||
password: '',
|
||||
baseUrl: this.$store.getters.baseUrl,
|
||||
setTime: this.$store.getters.setTime / 1000,
|
||||
@@ -140,6 +140,7 @@
|
||||
let res = await handLogin(this.loginname, RSAencrypt(this.password))
|
||||
this.$store.dispatch('saveUserInfo', JSON.stringify(res.user.user))
|
||||
this.$store.dispatch('saveToken', res.token)
|
||||
this.$store.dispatch('saveLoginName', this.loginname)
|
||||
uni.redirectTo({
|
||||
url: '/pages/home/home'
|
||||
})
|
||||
|
||||
@@ -22,11 +22,12 @@
|
||||
<view class="zd-col-1 zd-th"><text>序号</text></view>
|
||||
<view class="zd-col-1 zd-th"><text>选择</text></view>
|
||||
<view class="zd-col-3 zd-th"><text>{{crType === 'IN'? '入库单号':'出库单号'}}</text></view>
|
||||
<view class="zd-col-3 zd-th"><text>组织名称</text></view>
|
||||
<view class="zd-col-2 zd-th"><text>发起部门</text></view>
|
||||
<view class="zd-col-3 zd-th"><text>去向</text></view>
|
||||
<view class="zd-col-2 zd-th"><text>状态</text></view>
|
||||
<view class="zd-col-3 zd-th"><text>仓库名称</text></view>
|
||||
<view class="zd-col-2 zd-th"><text>仓库名称</text></view>
|
||||
<view class="zd-col-2 zd-th"><text>制单日期</text></view>
|
||||
<view class="zd-col-3 zd-th"><text>制单人</text></view>
|
||||
<view class="zd-col-2 zd-th"><text>制单人</text></view>
|
||||
<view class="zd-col-2 zd-th"><text>业务日期</text></view>
|
||||
<view class="zd-col-2 zd-th"><text>操作日期</text></view>
|
||||
<view class="zd-col-2 zd-th"><text>操作人</text></view>
|
||||
@@ -38,11 +39,12 @@
|
||||
<view class="zd-checkbox" :class="{'zd-checkbox_active': e.checked}"></view>
|
||||
</view>
|
||||
<view class="zd-col-3 zd-td fontcol1" @tap.stop="toCollapse(e)"><text>{{e.djbh}}</text></view>
|
||||
<view class="zd-col-2 zd-td fontcol1" @tap.stop="toCollapse(e)"><text>{{e.fqmc}}</text></view>
|
||||
<view class="zd-col-3 zd-td" @tap.stop="toCollapse(e)"><text>{{e.zzmc}}</text></view>
|
||||
<view class="zd-col-2 zd-td" @tap.stop="toCollapse(e)"><text class="fontbg1">{{e.djzt}}</text></view>
|
||||
<view class="zd-col-3 zd-td" @tap.stop="toCollapse(e)"><text>{{e.ckmc}}</text></view>
|
||||
<view class="zd-col-2 zd-td" @tap.stop="toCollapse(e)"><text>{{e.ckmc}}</text></view>
|
||||
<view class="zd-col-2 zd-td" @tap.stop="toCollapse(e)"><text>{{e.cjsj.substring(0, 10)}}</text></view>
|
||||
<view class="zd-col-3 zd-td" @tap.stop="toCollapse(e)"><text>{{e.cjr}}</text></view>
|
||||
<view class="zd-col-2 zd-td" @tap.stop="toCollapse(e)"><text>{{e.cjr}}</text></view>
|
||||
<view class="zd-col-2 zd-td" @tap.stop="toCollapse(e)"><text>{{e.ywrq.substring(0, 10)}}</text></view>
|
||||
<view class="zd-col-2 zd-td" @tap.stop="toCollapse(e)"><text>{{e.update_time}}</text></view>
|
||||
<view class="zd-col-2 zd-td" @tap.stop="toCollapse(e)"><text>{{e.update_name}}</text></view>
|
||||
@@ -52,8 +54,6 @@
|
||||
<view class="zd-row zd-sec-th-wraper">
|
||||
<view class="zd-col-1 zd-sec-th"><text>序号</text></view>
|
||||
<view class="zd-col-1 zd-sec-th"><text>选择</text></view>
|
||||
<view class="zd-col-2 zd-sec-th"><text>明细编号</text></view>
|
||||
<view class="zd-col-2 zd-sec-th"><text>组织名称</text></view>
|
||||
<view class="zd-col-2 zd-sec-th"><text>仓库名称</text></view>
|
||||
<view class="zd-col-2 zd-sec-th"><text>物料编号</text></view>
|
||||
<view class="zd-col-3 zd-sec-th"><text>物料名称</text></view>
|
||||
@@ -63,12 +63,12 @@
|
||||
<view class="zd-col-2 zd-sec-th"><text>{{crType === 'IN'? '已入数量':'已出数量'}}</text></view>
|
||||
<view class="zd-col-2 zd-sec-th"><text>剩余数量</text></view>
|
||||
<view class="zd-col-2 zd-sec-th"><text>库存</text></view>
|
||||
<view class="zd-col-2 zd-th"><text>操作日期</text></view>
|
||||
<view class="zd-col-2 zd-th"><text>操作人</text></view>
|
||||
</view>
|
||||
<view class="zd-row zd-td-wraper" v-for="(el, j) in dataList2" :key="el.id" @tap.stop="toCheck2(el)">
|
||||
<view class="zd-col-1 zd-sec-td"><text>{{j+1}}</text></view>
|
||||
<view class="zd-col-1 zd-sec-td"><view class="zd-checkbox" :class="{'zd-checkbox_active': el.checked}"></view></view>
|
||||
<view class="zd-col-2 zd-sec-td"><text>{{el.code}}</text></view>
|
||||
<view class="zd-col-2 zd-sec-td"><text>{{el.zzmc}}</text></view>
|
||||
<view class="zd-col-2 zd-sec-td"><text>{{el.ckmc}}</text></view>
|
||||
<view class="zd-col-2 zd-sec-td"><text>{{el.wlbm}}</text></view>
|
||||
<view class="zd-col-3 zd-sec-td"><text>{{el.wlmc}}</text></view>
|
||||
@@ -78,6 +78,8 @@
|
||||
<view class="zd-col-2 zd-sec-td"><text>{{el.czsl}}</text></view>
|
||||
<view class="zd-col-2 zd-sec-td"><text>{{el.sysl}}</text></view>
|
||||
<view class="zd-col-2 zd-sec-td"><text>{{el.kcsl}}</text></view>
|
||||
<view class="zd-col-2 zd-sec-td"><text>{{el.update_time}}</text></view>
|
||||
<view class="zd-col-2 zd-sec-td"><text>{{el.update_name}}</text></view>
|
||||
</view>
|
||||
<view class="zd-row mgt10">
|
||||
<view class="zd-col-12 zd-row jcflexstart">
|
||||
|
||||
99
utils/websocket.js
Normal file
99
utils/websocket.js
Normal file
@@ -0,0 +1,99 @@
|
||||
let websock = null
|
||||
let messageCallback = null
|
||||
let errorCallback = null
|
||||
let wsUrl = ''
|
||||
|
||||
// 接收ws后端返回的数据
|
||||
function websocketonmessage (e) {
|
||||
messageCallback(JSON.parse(e.data))
|
||||
}
|
||||
|
||||
/**
|
||||
* 发起websocket连接
|
||||
* @param {Object} agentData 需要向后台传递的参数数据
|
||||
*/
|
||||
function websocketSend (agentData) {
|
||||
// 加延迟是为了尽量让ws连接状态变为OPEN
|
||||
setTimeout(() => {
|
||||
// 添加状态判断,当为OPEN时,发送消息
|
||||
if (websock.readyState === websock.OPEN) { // websock.OPEN = 1
|
||||
// 发给后端的数据需要字符串化
|
||||
websock.send(JSON.stringify(agentData))
|
||||
}
|
||||
if (websock.readyState === websock.CLOSED) { // websock.CLOSED = 3
|
||||
console.log('websock.readyState=3')
|
||||
}
|
||||
}, 500)
|
||||
}
|
||||
|
||||
// 关闭ws连接
|
||||
function websocketclose (e) {
|
||||
// e.code === 1000 表示正常关闭。 无论为何目的而创建, 该链接都已成功完成任务。
|
||||
// e.code !== 1000 表示非正常关闭。
|
||||
if (e && e.code !== 1000) {
|
||||
uni.showToast({
|
||||
title: 'server error',
|
||||
icon: 'none'
|
||||
})
|
||||
errorCallback()
|
||||
}
|
||||
}
|
||||
// 建立ws连接
|
||||
function websocketOpen (e) {
|
||||
// console.log('ws连接成功')
|
||||
}
|
||||
|
||||
// 初始化weosocket
|
||||
function initWebSocket () {
|
||||
if (typeof (WebSocket) === 'undefined') {
|
||||
uni.showToast({
|
||||
title: '您的浏览器不支持WebSocket,无法获取数据',
|
||||
icon: 'none'
|
||||
})
|
||||
return false
|
||||
}
|
||||
// ws请求完整地址
|
||||
const requstWsUrl = wsUrl
|
||||
websock = new WebSocket(requstWsUrl)
|
||||
|
||||
websock.onmessage = function (e) {
|
||||
websocketonmessage(e)
|
||||
}
|
||||
websock.onopen = function () {
|
||||
websocketOpen()
|
||||
}
|
||||
websock.onerror = function () {
|
||||
}
|
||||
websock.onclose = function (e) {
|
||||
websocketclose(e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发起websocket请求函数
|
||||
* @param {string} url ws连接地址
|
||||
* @param {Object} agentData 传给后台的参数
|
||||
* @param {function} successCallback 接收到ws数据,对数据进行处理的回调函数
|
||||
* @param {function} errCallback ws连接错误的回调函数
|
||||
*/
|
||||
export function sendWebsocket (url, agentData, successCallback, errCallback) {
|
||||
wsUrl = url
|
||||
initWebSocket()
|
||||
messageCallback = successCallback
|
||||
errorCallback = errCallback
|
||||
websocketSend(agentData)
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭websocket函数
|
||||
*/
|
||||
export function closeWebsocket (flag) {
|
||||
if (flag) {
|
||||
websock.close()
|
||||
return
|
||||
}
|
||||
if (websock) {
|
||||
websock.close() // 关闭websocket
|
||||
websock.onclose() // 关闭websocket
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user