fix:相关漏洞修复

This commit is contained in:
weiwei committed 2025-08-15 15:55:02 +08:00
1 parent 0e66d461a7
commit 766bdea32a
6 files changed
+370 -294

No files matched your search

+60 -58
View File
@@ -3,7 +3,9 @@
<div v-loading="mainLoading" class="msg-main">
<div id="msg-div" class="msg-div">
<div v-if="!tableLoading">
<div v-if="loadMore" class="el-table__empty-block" @click="loadingMore"><span class="el-table__empty-text">点击加载更多</span></div>
<div v-if="loadMore" class="el-table__empty-block" @click="loadingMore">
<span class="el-table__empty-text">点击加载更多</span>
</div>
<div v-if="!loadMore" class="el-table__empty-block"><span class="el-table__empty-text">没有更多了</span></div>
</div>
<div v-for="item in tableData" :key="item.id" class="execution" id="msgTable">
@@ -109,125 +111,125 @@
</template>
<script setup lang="ts" name="wx-msg">
import { fetchList, addObj } from '/@/api/mp/wx-fans-msg';
import { useMessage } from '/@/hooks/message';
import { getMaterialVideo } from '/@/api/mp/wx-material';
import { fetchList, addObj } from "/@/api/mp/wx-fans-msg"
import { useMessage } from "/@/hooks/message"
import { getMaterialVideo } from "/@/api/mp/wx-material"
const WxReply = defineAsyncComponent(() => import('../wx-reply/index.vue'));
const WxNews = defineAsyncComponent(() => import('../wx-news/index.vue'));
const WxReply = defineAsyncComponent(() => import("../wx-reply/index.vue"))
const WxNews = defineAsyncComponent(() => import("../wx-news/index.vue"))
const NameAvatar = defineAsyncComponent(() => import('/@/components/NameAvatar/index.vue'));
const NameAvatar = defineAsyncComponent(() => import("/@/components/NameAvatar/index.vue"))
const visible = ref(false);
const visible = ref(false)
// 各种loading
const mainLoading = ref(false);
const sendLoading = ref(false);
const mainLoading = ref(false)
const sendLoading = ref(false)
const loadMore = ref(false);
const loadMore = ref(false)
const objData = ref({
repType: 'text',
appId: '',
}) as any;
repType: "text",
appId: "",
}) as any
const page = reactive({
total: 0, // 总页数
currentPage: 1, // 当前页数
pageSize: 10, // 每页显示多少条
ascs: [], //升序字段
descs: 'create_time', //降序字段
});
descs: "create_time", //降序字段
})
const wxData = reactive({
appId: '',
wxUserId: '',
});
appId: "",
wxUserId: "",
})
const sendMsg = () => {
if (objData.value) {
if (objData.value.repType === 'news') {
if (objData.value.repType === "news") {
if (JSON.parse(objData.value.content).length > 1) {
useMessage().error('图文消息条数限制在1条以内,已默认发送第一条');
objData.value.content = JSON.parse(objData.value.content)[0];
useMessage().error("图文消息条数限制在1条以内,已默认发送第一条")
objData.value.content = JSON.parse(objData.value.content)[0]
}
}
sendLoading.value = true;
sendLoading.value = true
addObj(
Object.assign(
{
wxUserId: wxData.wxUserId,
appId: wxData.appId,
},
objData.value
)
objData.value,
),
)
.then(() => {
tableData.value = [];
tableData.value = []
getData().then(() => {
//box-container是添加overflow的父div,也就是出现滚动条的div
var scrollTarget = document.getElementById('msg-div');
var scrollTarget = document.getElementById("msg-div")
//scrollTarget.scrollHeight是获取dom元素的高度,然后设置scrollTop
scrollTarget.scrollTop = scrollTarget.scrollHeight;
});
scrollTarget.scrollTop = scrollTarget.scrollHeight
})
})
.finally(() => {
sendLoading.value = false;
});
sendLoading.value = false
})
}
};
}
const tableData = ref([] as any);
const tableLoading = ref(false);
const tableData = ref([] as any)
const tableLoading = ref(false)
const openDialog = (data: any) => {
wxData.wxUserId = data.wxUserId;
wxData.appId = data.appId;
objData.value.appId = data.appId;
getData();
visible.value = true;
};
wxData.wxUserId = data.wxUserId
wxData.appId = data.appId
objData.value.appId = data.appId
getData()
visible.value = true
}
const getData = () => {
tableLoading.value = true;
tableLoading.value = true
return fetchList({
...page,
...wxData,
}).then((res) => {
const data = res.data.records.reverse();
tableData.value = [...data, ...tableData.value];
page.total = res.data.total;
tableLoading.value = false;
const data = res.data.records.reverse()
tableData.value = [...data, ...tableData.value]
page.total = res.data.total
tableLoading.value = false
if (data.length < page.pageSize || data.length === 0) {
loadMore.value = false;
loadMore.value = false
}
});
};
})
}
const loadVideo = (item) => {
getMaterialVideo({
mediaId: item.repMediaId,
appId: item.appId,
}).then((response) => {
const data = response.data;
window.open(data.downUrl, 'target', '');
});
};
// const data = response.data
// window.open(data.downUrl, 'target', '');
})
}
const loadingMore = () => {
page.currentPage = page.currentPage + 1;
getData();
};
page.currentPage = page.currentPage + 1
getData()
}
// 暴露变量
defineExpose({
openDialog,
});
})
</script>
<style lang="scss" scoped>
@import './comment.scss';
@import './card.scss';
@import "./comment.scss";
@import "./card.scss";
.msg-main {
margin-top: -30px;
+80 -80
View File
@@ -99,136 +99,136 @@
</template>
<script setup lang="ts" name="wx-reply">
import { getMaterialVideo } from '/@/api/mp/wx-material';
import { useMessage } from '/@/hooks/message';
const WxMaterialSelect = defineAsyncComponent(() => import('/@/components/Wechat/wx-material-select/main.vue'));
import { getMaterialVideo } from "/@/api/mp/wx-material"
import { useMessage } from "/@/hooks/message"
const WxMaterialSelect = defineAsyncComponent(() => import("/@/components/Wechat/wx-material-select/main.vue"))
const WxFileUpload = defineAsyncComponent(() => import('/@/components/Wechat/fileUpload/index.vue'));
const WxFileUpload = defineAsyncComponent(() => import("/@/components/Wechat/fileUpload/index.vue"))
const WxNews = defineAsyncComponent(() => import('/@/components/Wechat/wx-news/index.vue'));
const WxNews = defineAsyncComponent(() => import("/@/components/Wechat/wx-news/index.vue"))
const props = defineProps({
objData: {
type: Object,
default: () => {
return {
repType: '',
repContent: '',
repName: '',
repDesc: '',
repUrl: '',
};
repType: "",
repContent: "",
repName: "",
repDesc: "",
repUrl: "",
}
},
},
});
})
const uploadData = reactive({
mediaType: props.objData.repType,
title: '',
introduction: '',
title: "",
introduction: "",
appId: props.objData.appId,
});
})
const tempObj = ref({}) as any;
const tempObj = ref({}) as any
const handleClick = (tab) => {
uploadData.mediaType = tab.paneName;
uploadData.appId = props.objData.appId;
uploadData.mediaType = tab.paneName
uploadData.appId = props.objData.appId
const tempObjItem = tempObj.value[tab.paneName];
const tempObjItem = tempObj.value[tab.paneName]
if (tempObjItem) {
props.objData.repName = tempObjItem.repName ? tempObjItem.repName : null;
props.objData.repMediaId = tempObjItem.repMediaId ? tempObjItem.repMediaId : null;
props.objData.media_id = tempObjItem.media_id ? tempObjItem.media_id : null;
props.objData.repUrl = tempObjItem.repUrl ? tempObjItem.repUrl : null;
props.objData.content = tempObjItem.content ? tempObjItem.content : null;
props.objData.repDesc = tempObjItem.repDesc ? tempObjItem.repDesc : null;
props.objData.repName = tempObjItem.repName ? tempObjItem.repName : null
props.objData.repMediaId = tempObjItem.repMediaId ? tempObjItem.repMediaId : null
props.objData.media_id = tempObjItem.media_id ? tempObjItem.media_id : null
props.objData.repUrl = tempObjItem.repUrl ? tempObjItem.repUrl : null
props.objData.content = tempObjItem.content ? tempObjItem.content : null
props.objData.repDesc = tempObjItem.repDesc ? tempObjItem.repDesc : null
} else {
props.objData.repName = '';
props.objData.repMediaId = '';
props.objData.media_id = '';
props.objData.repUrl = '';
props.objData.content = '';
props.objData.repDesc = '';
props.objData.repName = ""
props.objData.repMediaId = ""
props.objData.media_id = ""
props.objData.repUrl = ""
props.objData.content = ""
props.objData.repDesc = ""
}
};
}
const deleteObj = () => {
props.objData.repName = '';
props.objData.repUrl = '';
props.objData.content = '';
};
props.objData.repName = ""
props.objData.repUrl = ""
props.objData.content = ""
}
const openMaterial = (data: any) => {
dialogNewsRef.value.openDialog(data);
};
dialogNewsRef.value.openDialog(data)
}
const dialogNewsRef = ref();
const dialogNewsRef = ref()
const selectMaterial = (item, appId) => {
let tempObjItem = {
repType: '',
repMediaId: '',
media_id: '',
content: '',
} as any;
repType: "",
repMediaId: "",
media_id: "",
content: "",
} as any
tempObjItem.repType = props.objData.repType;
tempObjItem.repMediaId = item.mediaId;
tempObjItem.media_id = item.mediaId;
tempObjItem.content = item.content;
tempObjItem.repType = props.objData.repType
tempObjItem.repMediaId = item.mediaId
tempObjItem.media_id = item.mediaId
tempObjItem.content = item.content
props.objData.repMediaId = item.mediaId;
props.objData.media_id = item.mediaId;
props.objData.content = item.content;
if (props.objData.repType === 'music') {
tempObjItem.repThumbMediaId = item.mediaId;
tempObjItem.repThumbUrl = item.url;
props.objData.repThumbMediaId = item.mediaId;
props.objData.repThumbUrl = item.url;
props.objData.repMediaId = item.mediaId
props.objData.media_id = item.mediaId
props.objData.content = item.content
if (props.objData.repType === "music") {
tempObjItem.repThumbMediaId = item.mediaId
tempObjItem.repThumbUrl = item.url
props.objData.repThumbMediaId = item.mediaId
props.objData.repThumbUrl = item.url
} else {
tempObjItem.repName = item.name;
tempObjItem.repUrl = item.url;
props.objData.repName = item.name;
props.objData.repUrl = item.url;
tempObjItem.repName = item.name
tempObjItem.repUrl = item.url
props.objData.repName = item.name
props.objData.repUrl = item.url
}
if (props.objData.repType === 'video') {
if (props.objData.repType === "video") {
getMaterialVideo({
mediaId: item.mediaId,
appId: appId,
}).then((response) => {
const data = response.data;
tempObjItem.repDesc = data.description || '';
tempObjItem.repUrl = data.downUrl;
props.objData.repName = data.title;
props.objData.repDesc = data.description || '';
props.objData.repUrl = data.downUrl;
});
const data = response.data
tempObjItem.repDesc = data.description || ""
tempObjItem.repUrl = data.downUrl
props.objData.repName = data.title
props.objData.repDesc = data.description || ""
props.objData.repUrl = data.downUrl
})
}
if (props.objData.repType === 'news') {
props.objData.content = JSON.stringify(item.content.newsItem);
if (props.objData.repType === "news") {
props.objData.content = JSON.stringify(item.content.newsItem)
}
tempObj.value[props.objData.repType] = tempObjItem;
};
tempObj.value[props.objData.repType] = tempObjItem
}
const handelUpload = (response) => {
if (response.code === 0) {
const item = response.data;
selectMaterial(item, props.objData.appId);
const item = response.data
selectMaterial(item, props.objData.appId)
} else {
useMessage().error('上传错误' + response.msg);
useMessage().error("上传错误" + response.msg)
}
};
}
const loadVideo = (item) => {
getMaterialVideo({
mediaId: item.repMediaId,
appId: item.appId,
}).then((response) => {
const data = response.data;
window.open(data.downUrl, 'target', '');
});
};
// const data = response.data
// window.open(data.downUrl, 'target', '');
})
}
</script>
<style scoped lang="scss">