fix:相关漏洞修复
This commit is contained in:
1 parent
0e66d461a7
commit
766bdea32a
6 files changed
+370
-294
No files matched your search
@@ -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;
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in new issue
Block a user