Browse Source

解决内存泄漏导致页面卡顿

master_hella_20240701
yufei0306 6 months ago
parent
commit
10c6442085
  1. 28
      src/components/Verifition/src/Verify/VerifyPoints.vue
  2. 35
      src/components/Verifition/src/Verify/VerifySlide.vue
  3. 33
      src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue
  4. 8
      src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js
  5. 25
      src/components/iFrame/src/IFrame.vue
  6. 13
      src/layout/components/Logo/src/Logo.vue
  7. 13
      src/layout/components/TabMenu/src/TabMenu.vue
  8. 14
      src/views/bpm/model/editor/index.vue
  9. 13
      src/views/login/components/MobileForm.vue

28
src/components/Verifition/src/Verify/VerifyPoints.vue

@ -148,6 +148,8 @@ onMounted(() => {
} }
}) })
const canvas = ref(null) const canvas = ref(null)
const timer1 = ref<NodeJS.Timeout | number>(0)
const timer2 = ref<NodeJS.Timeout | number>(0)
const canvasClick = (e) => { const canvasClick = (e) => {
checkPosArr.push(getMousePos(canvas, e)) checkPosArr.push(getMousePos(canvas, e))
if (num.value == checkNum.value) { if (num.value == checkNum.value) {
@ -157,7 +159,7 @@ const canvasClick = (e) => {
checkPosArr.length = 0 checkPosArr.length = 0
checkPosArr.push(...arr) checkPosArr.push(...arr)
// //
setTimeout(() => { timer1.value = setTimeout(() => {
// var flag = this.comparePos(this.fontPos, this.checkPosArr); // var flag = this.comparePos(this.fontPos, this.checkPosArr);
// //
var captchaVerification = secretKey.value var captchaVerification = secretKey.value
@ -177,9 +179,13 @@ const canvasClick = (e) => {
text.value = t('captcha.success') text.value = t('captcha.success')
bindingClick.value = false bindingClick.value = false
if (mode.value == 'pop') { if (mode.value == 'pop') {
setTimeout(() => { timer2.value = setTimeout(() => {
proxy.$parent.clickShow = false proxy.$parent.clickShow = false
refresh() refresh()
if(timer2.value){
clearTimeout(timer2.value)
timer2.value = 0
}
}, 1500) }, 1500)
} }
proxy.$parent.$emit('success', { captchaVerification }) proxy.$parent.$emit('success', { captchaVerification })
@ -188,17 +194,33 @@ const canvasClick = (e) => {
barAreaColor.value = '#d9534f' barAreaColor.value = '#d9534f'
barAreaBorderColor.value = '#d9534f' barAreaBorderColor.value = '#d9534f'
text.value = t('captcha.fail') text.value = t('captcha.fail')
setTimeout(() => { timer2.value = setTimeout(() => {
refresh() refresh()
if(timer2.value){
clearTimeout(timer2.value)
timer2.value = 0
}
}, 700) }, 700)
} }
}) })
if(timer1.value){
clearTimeout(timer1.value)
timer1.value = 0
}
}, 400) }, 400)
} }
if (num.value < checkNum.value) { if (num.value < checkNum.value) {
num.value = createPoint(getMousePos(canvas, e)) num.value = createPoint(getMousePos(canvas, e))
} }
} }
onBeforeUnmount(() => {
if(timer1.value){
clearTimeout(timer1.value)
}
if(timer2.value){
clearTimeout(timer2.value)
}
})
// //
const getMousePos = function (obj, e) { const getMousePos = function (obj, e) {
var x = e.offsetX var x = e.offsetX

35
src/components/Verifition/src/Verify/VerifySlide.vue

@ -295,9 +295,14 @@ const end = () => {
showRefresh.value = false showRefresh.value = false
isEnd.value = true isEnd.value = true
if (mode.value == 'pop') { if (mode.value == 'pop') {
setTimeout(() => { let timer
timer = setTimeout(() => {
proxy.$parent.clickShow = false proxy.$parent.clickShow = false
refresh() refresh()
if(timer){
clearTimeout(timer)
timer = null
}
}, 1500) }, 1500)
} }
passFlag.value = true passFlag.value = true
@ -309,10 +314,15 @@ const end = () => {
secretKey.value secretKey.value
) )
: backToken.value + '---' + JSON.stringify({ x: moveLeftDistance, y: 5.0 }) : backToken.value + '---' + JSON.stringify({ x: moveLeftDistance, y: 5.0 })
setTimeout(() => { let timer
timer = setTimeout(() => {
tipWords.value = '' tipWords.value = ''
proxy.$parent.closeBox() proxy.$parent.closeBox()
proxy.$parent.$emit('success', { captchaVerification }) proxy.$parent.$emit('success', { captchaVerification })
if(timer){
clearTimeout(timer)
timer = null
}
}, 1000) }, 1000)
} else { } else {
moveBlockBackgroundColor.value = '#d9534f' moveBlockBackgroundColor.value = '#d9534f'
@ -320,13 +330,23 @@ const end = () => {
iconColor.value = '#fff' iconColor.value = '#fff'
iconClass.value = 'icon-close' iconClass.value = 'icon-close'
passFlag.value = false passFlag.value = false
setTimeout(function () { let timer
timer = setTimeout(()=>{
refresh() refresh()
if(timer){
clearTimeout(timer)
timer = null
}
}, 1000) }, 1000)
proxy.$parent.$emit('error', proxy) proxy.$parent.$emit('error', proxy)
tipWords.value = t('captcha.fail') tipWords.value = t('captcha.fail')
setTimeout(() => { let timer1
timer1 = setTimeout(() => {
tipWords.value = '' tipWords.value = ''
if(timer1){
clearTimeout(timer1)
timer1 = null
}
}, 1000) }, 1000)
} }
}) })
@ -351,10 +371,15 @@ const refresh = async () => {
isEnd.value = false isEnd.value = false
await getPictrue() await getPictrue()
setTimeout(() => { let timer
timer = setTimeout(() => {
transitionWidth.value = '' transitionWidth.value = ''
transitionLeft.value = '' transitionLeft.value = ''
text.value = explain.value text.value = explain.value
if(timer){
clearTimeout(timer)
timer = null
}
}, 300) }, 300)
} }

33
src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue

@ -76,6 +76,9 @@ const resetBaseInfo = () => {
// elementBaseInfo.value = JSON.parse(JSON.stringify(bpmnElement.value.businessObject)) // elementBaseInfo.value = JSON.parse(JSON.stringify(bpmnElement.value.businessObject))
console.log(elementBaseInfo.value, 'elementBaseInfo22222222222') console.log(elementBaseInfo.value, 'elementBaseInfo22222222222')
} }
const timer1 = ref<NodeJS.Timeout | number>()
const timer2 = ref<NodeJS.Timeout | number>()
const timer3 = ref<NodeJS.Timeout | number>()
const handleKeyUpdate = (value) => { const handleKeyUpdate = (value) => {
// value XML NCName // value XML NCName
if (!value) { if (!value) {
@ -90,8 +93,12 @@ const handleKeyUpdate = (value) => {
// BPMN XML key id // BPMN XML key id
elementBaseInfo.value['id'] = value elementBaseInfo.value['id'] = value
setTimeout(() => { timer1.value = setTimeout(() => {
updateBaseInfo('id') updateBaseInfo('id')
if(timer1.value){
clearTimeout(timer1.value)
timer1.value = 0
}
}, 100) }, 100)
} }
const handleNameUpdate = (value) => { const handleNameUpdate = (value) => {
@ -101,8 +108,12 @@ const handleNameUpdate = (value) => {
} }
elementBaseInfo.value['name'] = value elementBaseInfo.value['name'] = value
setTimeout(() => { timer2.value = setTimeout(() => {
updateBaseInfo('name') updateBaseInfo('name')
if(timer2.value){
clearTimeout(timer2.value)
timer2.value = 0
}
}, 100) }, 100)
} }
// const handleDescriptionUpdate=(value)=> { // const handleDescriptionUpdate=(value)=> {
@ -140,10 +151,14 @@ const updateBaseInfo = (key) => {
} }
onMounted(() => { onMounted(() => {
// bpmn 1 key name // bpmn 1 key name
setTimeout(() => { timer3.value = setTimeout(() => {
console.log(props.model, 'props.model') console.log(props.model, 'props.model')
handleKeyUpdate(props.model.key) handleKeyUpdate(props.model.key)
handleNameUpdate(props.model.name) handleNameUpdate(props.model.name)
if(timer3.value){
clearTimeout(timer3.value)
timer3.value = 0
}
console.log(props, 'propsssssssssssssssssssss') console.log(props, 'propsssssssssssssssssssss')
}, 1000) }, 1000)
}) })
@ -180,5 +195,17 @@ watch(
// } // }
onBeforeUnmount(() => { onBeforeUnmount(() => {
bpmnElement.value = null bpmnElement.value = null
if(timer1.value){
clearTimeout(timer1.value)
timer1.value = 0
}
if(timer2.value){
clearTimeout(timer2.value)
timer2.value = 0
}
if(timer3.value){
clearTimeout(timer3.value)
timer3.value = 0
}
}) })
</script> </script>

8
src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js

@ -22,9 +22,13 @@ export default {
methodName: binding.expression, methodName: binding.expression,
bindingFn: binding.value bindingFn: binding.value
} }
let timer
setTimeout(() => { timer = setTimeout(() => {
document.addEventListener('touchstart', documentHandler) // 为document绑定事件 document.addEventListener('touchstart', documentHandler) // 为document绑定事件
if(timer){
clearTimeout(timer)
timer = null
}
}) })
}, },
update(el, binding) { update(el, binding) {

25
src/components/iFrame/src/IFrame.vue

@ -14,6 +14,8 @@ const init = () => {
height.value = document.documentElement.clientHeight - 94.5 + 'px' height.value = document.documentElement.clientHeight - 94.5 + 'px'
loading.value = false loading.value = false
} }
const timer1 = ref<NodeJS.Timeout | number>()
const timer2 = ref<NodeJS.Timeout | number>()
console.log(props.src); console.log(props.src);
function populateIframe(iframe, headers) { function populateIframe(iframe, headers) {
@ -37,14 +39,33 @@ function populateIframe(iframe, headers) {
onMounted(() => { onMounted(() => {
setTimeout(() => { timer1.value = setTimeout(() => {
var iframe = document.querySelector("#iframe"); var iframe = document.querySelector("#iframe");
populateIframe(iframe, [["Authorization", 'Bearer ' + getAccessToken()], ["tenant-id", getTenantId()]]); populateIframe(iframe, [["Authorization", 'Bearer ' + getAccessToken()], ["tenant-id", getTenantId()]]);
if(timer1.value){
clearTimeout(timer1.value)
timer1.value = 0
}
}, 300); }, 300);
setTimeout(() => { timer2.value = setTimeout(() => {
init() init()
if(timer2.value){
clearTimeout(timer2.value)
timer2.value = 0
}
}, 300) }, 300)
}) })
onBeforeUnmount(() => {
if(timer1.value){
clearTimeout(timer1.value)
timer1.value = 0
}
if(timer2.value){
clearTimeout(timer2.value)
timer2.value = 0
}
})
</script> </script>
<template> <template>
<div v-loading="loading" :style="'height:' + height"> <div v-loading="loading" :style="'height:' + height">

13
src/layout/components/Logo/src/Logo.vue

@ -18,6 +18,7 @@ const title = computed(() => appStore.getTitle)
const layout = computed(() => appStore.getLayout) const layout = computed(() => appStore.getLayout)
const collapse = computed(() => appStore.getCollapse) const collapse = computed(() => appStore.getCollapse)
const timer = ref<NodeJS.Timeout | number>()
onMounted(() => { onMounted(() => {
if (unref(collapse)) show.value = false if (unref(collapse)) show.value = false
@ -31,14 +32,24 @@ watch(
return return
} }
if (!collapse) { if (!collapse) {
setTimeout(() => { timer.value = setTimeout(() => {
show.value = !collapse show.value = !collapse
if(timer.value){
clearTimeout(timer.value)
timer.value = 0
}
}, 400) }, 400)
} else { } else {
show.value = !collapse show.value = !collapse
} }
} }
) )
onBeforeUnmount(() => {
if(timer.value){
clearTimeout(timer.value)
timer.value = 0
}
})
watch( watch(
() => layout.value, () => layout.value,

13
src/layout/components/TabMenu/src/TabMenu.vue

@ -37,6 +37,7 @@ export default defineComponent({
const setCollapse = () => { const setCollapse = () => {
appStore.setCollapse(!unref(collapse)) appStore.setCollapse(!unref(collapse))
} }
const timer = ref<NodeJS.Timeout | number>()
onMounted(() => { onMounted(() => {
if (unref(fixedMenu)) { if (unref(fixedMenu)) {
@ -77,14 +78,24 @@ export default defineComponent({
() => collapse.value, () => collapse.value,
(collapse: boolean) => { (collapse: boolean) => {
if (!collapse) { if (!collapse) {
setTimeout(() => { timer.value = setTimeout(() => {
showTitle.value = !collapse showTitle.value = !collapse
if(timer.value){
clearTimeout(timer.value)
timer.value = 0
}
}, 200) }, 200)
} else { } else {
showTitle.value = !collapse showTitle.value = !collapse
} }
} }
) )
onBeforeUnmount(() => {
if(timer.value){
clearTimeout(timer.value)
timer.value = 0
}
})
// //
const showMenu = ref(unref(fixedMenu) ? true : false) const showMenu = ref(unref(fixedMenu) ? true : false)

14
src/views/bpm/model/editor/index.vue

@ -49,14 +49,26 @@ const controlForm = ref({
additionalModel: [CustomContentPadProvider, CustomPaletteProvider] additionalModel: [CustomContentPadProvider, CustomPaletteProvider]
}) })
const model = ref<ModelApi.ModelVO>() // const model = ref<ModelApi.ModelVO>() //
const timer = ref<NodeJS.Timeout | number>()
/** 初始化 modeler */ /** 初始化 modeler */
const initModeler = (item) => { const initModeler = (item) => {
setTimeout(() => { timer.value = setTimeout(() => {
modeler.value = item modeler.value = item
if(timer.value){
clearTimeout(timer.value)
timer.value = 0
}
}, 10) }, 10)
} }
onBeforeUnmount(() => {
if(timer.value){
clearTimeout(timer.value)
timer.value = 0
}
})
/** 添加/修改模型 */ /** 添加/修改模型 */
const save = async (bpmnXml) => { const save = async (bpmnXml) => {
const data = { const data = {

13
src/views/login/components/MobileForm.vue

@ -149,6 +149,7 @@ const smsVO = reactive({
}) })
const mobileCodeTimer = ref(0) const mobileCodeTimer = ref(0)
const msgTimer = ref<NodeJS.Timeout | number>() const msgTimer = ref<NodeJS.Timeout | number>()
const timer = ref<NodeJS.Timeout | number>()
const redirect = ref<string>('') const redirect = ref<string>('')
const getSmsCode = async () => { const getSmsCode = async () => {
await getTenantId() await getTenantId()
@ -161,6 +162,7 @@ const getSmsCode = async () => {
mobileCodeTimer.value = mobileCodeTimer.value - 1 mobileCodeTimer.value = mobileCodeTimer.value - 1
if (mobileCodeTimer.value <= 0) { if (mobileCodeTimer.value <= 0) {
clearInterval(msgTimer.value) clearInterval(msgTimer.value)
msgTimer.value = 0
} }
}, 1000) }, 1000)
}) })
@ -168,6 +170,11 @@ const getSmsCode = async () => {
onBeforeUnmount(() => { onBeforeUnmount(() => {
if(msgTimer.value){ if(msgTimer.value){
clearInterval(msgTimer.value) clearInterval(msgTimer.value)
msgTimer.value = 0
}
if(timer.value){
clearTimeout(timer.value)
timer.value = 0
} }
}) })
watch( watch(
@ -210,9 +217,13 @@ const signIn = async () => {
.catch(() => {}) .catch(() => {})
.finally(() => { .finally(() => {
loginLoading.value = false loginLoading.value = false
setTimeout(() => { timer.value = setTimeout(() => {
const loadingInstance = ElLoading.service() const loadingInstance = ElLoading.service()
loadingInstance.close() loadingInstance.close()
if(timer.value){
clearTimeout(timer.value)
timer.value = 0
}
}, 400) }, 400)
}) })
} }

Loading…
Cancel
Save