字段修改,添加websocket

This commit is contained in:
2024-04-26 09:24:51 +08:00
parent da4c27fa95
commit 3bbea6fcae
5 changed files with 154 additions and 24 deletions

View File

@@ -2,5 +2,6 @@
+ 原生APP云打包使用自有证书
+ 证书别名testalias
+ 诺力三期的接口文档http://47.111.78.178:27017/,账号名字首字母小写 , 密码123456
+ 线上测试环境http://47.98.105.245:8011
+ 屏幕尺寸854px * 534px
+ app图标使用lms

View File

@@ -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 = ''

View File

@@ -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'
})

View File

@@ -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
View 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
}
}