From 614d99a5e1006d1e7aba44165caa6768b93656a8 Mon Sep 17 00:00:00 2001 From: qq787203167 <787203167@qq.com> Date: Sat, 2 Jul 2022 15:23:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93=E5=B7=B2?= =?UTF-8?q?=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-web/src/components/AssignedBy/index.vue | 4 + .../components/ReferenceParameter/index.vue | 3 + .../SynchronousSubmissionLibrary/index.vue | 4 + .../src/components/TaskCutOffTime/index.vue | 3 + jero-web/src/main.js | 3 +- jero-web/src/utils/socketVuexOne.js | 116 ++++++++++++++++++ .../ParameterItemCollectionList.vue | 4 +- .../components/TaskParameterCollection.vue | 26 +++- 8 files changed, 157 insertions(+), 6 deletions(-) create mode 100644 jero-web/src/utils/socketVuexOne.js diff --git a/jero-web/src/components/AssignedBy/index.vue b/jero-web/src/components/AssignedBy/index.vue index 90bcdd144..7d6973111 100644 --- a/jero-web/src/components/AssignedBy/index.vue +++ b/jero-web/src/components/AssignedBy/index.vue @@ -178,6 +178,7 @@ export default { this.$message.warning(this.$t('OnlyOneSelected')) } else { let param = {ids: this.selectedRowKeysArray, paramsManifestId:this.$route.query.id ,projectId: this.$route.query.projectId, dre:this.selectedRowKeysDate[0].username } + this.confirmLoading = true axios({ url: '/jero-boot/params/collectManifest/updateDreBatch', method: 'post', @@ -199,14 +200,17 @@ export default { _this.$message.success(_this.$t('OperationSuccessful')) // 填写人 // 获取当前登陆人 + this.confirmLoading = false this.$emit('GetgetLoginUserType') this.$emit('GetgetTableList') this.$emit('areaVisibleAssignedbyflag', false) }else{ + this.confirmLoading = false _this.$message.warning(_this.$t('operationFailed')) } }) .catch( (error) =>{ + this.confirmLoading = false console.log(error); }); } diff --git a/jero-web/src/components/ReferenceParameter/index.vue b/jero-web/src/components/ReferenceParameter/index.vue index 94db39bf8..0e2ca7182 100644 --- a/jero-web/src/components/ReferenceParameter/index.vue +++ b/jero-web/src/components/ReferenceParameter/index.vue @@ -231,13 +231,16 @@ export default { this.formInline.targetConfigIds = this.formInline.targetConfigIds.join(',') } let param = {ids: this.selectedRowKeysArray, ...this.formInline } + this.confirmLoading = true postAction('params/collectManifest/referParams', param).then((res) => { if (res.success) { this.$message.success(this.$t('OperationSuccessful')) this.$emit('areaVisibleAssignedbyflag', false) this.$emit('GetgetTableList') + this.confirmLoading = false } else { this.$message.warning(res.message) + this.confirmLoading = false } }) }}) diff --git a/jero-web/src/components/SynchronousSubmissionLibrary/index.vue b/jero-web/src/components/SynchronousSubmissionLibrary/index.vue index 7edd7ad05..a3f002ce2 100644 --- a/jero-web/src/components/SynchronousSubmissionLibrary/index.vue +++ b/jero-web/src/components/SynchronousSubmissionLibrary/index.vue @@ -92,6 +92,7 @@ export default { handleSubmit() { let _this = this let param = {ids: this.selectedRowKeysArray, paramsManifestId: this.paramsManifest.id } + this.confirmLoading = true axios({ url: '/jero-boot/params/collectManifest/syncReport', method: 'post', @@ -114,12 +115,15 @@ export default { _this.$message.success(_this.$t('OperationSuccessful')) this.$emit('areaVisibsynchronous', false) this.$emit('GetgetTableList') + this.confirmLoading = false }else{ _this.$message.warning(_this.$t('operationFailed')) + this.confirmLoading = false } }) .catch( (error) =>{ console.log(error); + this.confirmLoading = false }); } } diff --git a/jero-web/src/components/TaskCutOffTime/index.vue b/jero-web/src/components/TaskCutOffTime/index.vue index 7ca73d419..e1e570155 100644 --- a/jero-web/src/components/TaskCutOffTime/index.vue +++ b/jero-web/src/components/TaskCutOffTime/index.vue @@ -107,12 +107,15 @@ export default { handleSubmit() { let _this = this let param = {ids: this.selectedRowKeysArray, deadline: `${this.pickerDate}`, } + this.confirmLoading = true postAction('/params/collectManifest/updateDeadlineBatch', param).then((res) => { if (res.success) { this.$emit('areaVisibleTaskCutOffTimeflag', false) this.$message.success(res.message) + this.confirmLoading = false } else { this.$message.warning(res.message) + this.confirmLoading = false } }) }, diff --git a/jero-web/src/main.js b/jero-web/src/main.js index f0bdff612..171fe1fb7 100644 --- a/jero-web/src/main.js +++ b/jero-web/src/main.js @@ -50,9 +50,10 @@ import { import config from '@/defaultSettings' //引入 import socketPublic from '@/utils/socketVuex.js' - +import socketPublicOne from '@/utils/socketVuexOne.js' //挂载 Vue.prototype.$socketPublic = socketPublic +Vue.prototype.$socketPublicOne = socketPublicOne import JDictSelectTag from './components/dict/index.js' import hasPermission from '@/utils/hasPermission' import vueBus from '@/utils/vueBus' diff --git a/jero-web/src/utils/socketVuexOne.js b/jero-web/src/utils/socketVuexOne.js new file mode 100644 index 000000000..5e1e6a4ae --- /dev/null +++ b/jero-web/src/utils/socketVuexOne.js @@ -0,0 +1,116 @@ +import Vue from 'vue' +import Vuex from 'vuex' +import store from '@/store/' + +Vue.use(Vuex) +// console.log(window._CONFIG['domianWebSocketURL']) + +export default new Vuex.Store({ + state: { + ws: null, //建立的连接 + lockReconnect: false, //是否真正建立连接 + timeout: 15000, //15秒一次心跳 + timeoutObj: null, //心跳心跳倒计时 + serverTimeoutObj: null, //心跳倒计时 + timeoutnum: null, //断开 重连倒计时 + msg: null //接收到的信息 + + }, + getters: { + // 获取接收的信息 + socketMsgs: state => { + return state.msg + } + }, + mutations: { + //初始化ws 用户登录后调用 + webSocketInit(state) { + let that = this + //this 创建一个state.ws对象【发送、接收、关闭socket都由这个对象操作】 + const userId = store.getters.userInfo.id + state.ws = new WebSocket(window._CONFIG['domianWebSocketURL'].replace('https://', 'wss://').replace('http://', 'ws://') + '/websocket/socketServer') + state.ws.onopen = function(res) { + console.log('Connection success...') + /** + * 启动心跳检测 + */ + that.commit('start') + } + state.ws.onmessage = function(res) { + if (res.data === 'heartCheck') { + // 收到服务器信息,心跳重置 + that.commit('reset') + } else { + state.msg = res + } + } + state.ws.onclose = function(res) { + //重连 + that.commit('reconnect') + } + state.ws.onerror = function(res) { + //重连 + that.commit('reconnect') + } + }, + reconnect(state) { + //重新连接 + let that = this + if (state.lockReconnect) { + return + } + state.lockReconnect = true + //没连接上会一直重连,30秒重试请求重连,设置延迟避免请求过多 + state.timeoutnum && + clearTimeout(state.timeoutnum) + state.timeoutnum = setTimeout(() => { + //新连接 + that.commit('webSocketInit') + state.lockReconnect = false + }, 5000) + }, + reset(state) { + //重置心跳 + let that = this + //清除时间 + clearTimeout(state.timeoutObj) + clearTimeout(state.serverTimeoutObj) + //重启心跳 + that.commit('start') + }, + start(state) { + //开启心跳 + var self = this + state.timeoutObj && + clearTimeout(state.timeoutObj) + state.serverTimeoutObj && + clearTimeout(state.serverTimeoutObj) + state.timeoutObj = setTimeout(() => { + //这里发送一个心跳,后端收到后,返回一个心跳消息, + if (state.ws.readyState === 1) { + //如果连接正常 + state.ws.send('heartCheck') + } else { + //否则重连 + self.commit('reconnect') + } + state.serverTimeoutObj = setTimeout(function() { + //超时关闭 + state.ws.close() + }, state.timeout) + }, state.timeout) + } + }, + actions: { + webSocketInit({ + commit + }, url) { + commit('webSocketInit', url) + }, + webSocketSend({ + commit + }, p) { + commit('webSocketSend', p) + } + } +}) \ No newline at end of file diff --git a/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue b/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue index e85d4ffaa..5a9322ba1 100644 --- a/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue +++ b/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue @@ -511,7 +511,9 @@ mounted() { this.GetgetLoginUserType() this.time = setInterval(() => { - this.handlePreservation() + if (this.currentPersonRole == "dre"){ + this.handlePreservation() + } }, 10000) this.paramsManifest = JSON.parse(localStorage.getItem('paramsManifest')) document.title = `${this.paramsManifest.title}-` + this.$t('ParameteItemCollectionList') diff --git a/jero-web/src/views/projectManagement/components/TaskParameterCollection.vue b/jero-web/src/views/projectManagement/components/TaskParameterCollection.vue index 941b85887..0c1b447f0 100644 --- a/jero-web/src/views/projectManagement/components/TaskParameterCollection.vue +++ b/jero-web/src/views/projectManagement/components/TaskParameterCollection.vue @@ -65,7 +65,8 @@ {{$t('configure')}} {{$t('edit')}} - {{$t('deleteLib')}} + {{$t('deleteLib')}} {{$t('historicalVersion')}} @@ -114,6 +115,7 @@ import Vue from 'vue' import { ACCESS_TOKEN } from '@/store/mutation-types' import eventBUs from '@/common/event' + import store from '@/store/' export default { name: 'TaskParameterCollection', @@ -199,7 +201,7 @@ conList: 'params/config/list', changeExtension: 'params/manifest/changeExtension', verifyConfig: 'params/manifest/verifyConfig', - configurelist:'params/manifest/getConfigFlag', + configurelist: 'params/manifest/getConfigFlag' }, loading: false, dataSource: [], @@ -215,7 +217,7 @@ version: 0, itemId: '', // 配置id itemRow: {}, // 配置一行数据 - configFlag:'', + configFlag: '', historicalVisible: false, historicalRow: {}, // 历史版本得数据 drawerVisible: false, @@ -224,6 +226,22 @@ selectedRowKeysvalArray: [] } }, + created() { + if (store.getters.userInfo) { + this.$socketPublicOne.dispatch('webSocketInit')//初始化ws + } + }, + watch: { + '$socketPublicOne.state.msg': { + //处理接收到的消息 + handler: function(res) { + let that = this + if (res.data == '1'){ + this.getlist() + } + } + } + }, mounted() { this.getlist() }, @@ -276,7 +294,7 @@ configure(item) { this.itemId = item.id this.itemRow = item - this.$refs.configureRef.addModel(item.id,item) + this.$refs.configureRef.addModel(item.id, item) }, handleCancel(val) { this.areaVisible = val