fix:iframe页面token过期跳转登录

This commit is contained in:
zxj
2025-11-21 10:56:43 +08:00
parent 24ca49ce78
commit cf7e1f5d69
22 changed files with 1368 additions and 1241 deletions

View File

@@ -22,7 +22,7 @@
style="width: 100%; height: 100%"
:src="iframeUrl + '/course/manages'"
name="myframe"
sandbox="allow-forms allow-scripts allow-downloads allow-same-origin allow-popups"
sandbox="allow-forms allow-scripts allow-downloads allow-same-origin allow-popups allow-top-navigation"
></iframe>
</a-modal>
</div>

View File

@@ -1,281 +1,289 @@
<!-- 查看系统考试答卷--iframe嵌套 -->
<template>
<a-drawer
<a-drawer
:visible="CAvisible"
class="drawerStyle CheckAnsware"
placement="right"
width="40%"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain">
<div class="headersub">
<div class="headerTitle">查看答卷</div>
<img
style="width:29px;height:29px;cursor:pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div>
<!-- <div class="headersup"><span>评估名称<span style="color:#999ba3">管理者进阶作业</span></span><span style="margin-left:25px">考试总分<span style="color:#999ba3">100</span></span><span style="margin-left:25px">及格分<span style="color:#999ba3">60</span></span></div> -->
<div class="main" style="height:860px;display: flex;">
<iframe
id="iframe"
style="width: 100%; height: 100%;"
:src="iframeUrl+'/exam/viewanswer?id='+(answerId?answerId:datasource.answerId)"
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
>
</iframe>
</div>
<!-- <div class="btnn">
>
<div class="drawerMain">
<div class="headersub">
<div class="headerTitle">查看答卷</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div>
<!-- <div class="headersup"><span>评估名称<span style="color:#999ba3">管理者进阶作业</span></span><span style="margin-left:25px">考试总分<span style="color:#999ba3">100</span></span><span style="margin-left:25px">及格分<span style="color:#999ba3">60</span></span></div> -->
<div class="main" style="height: 860px; display: flex">
<iframe
id="iframe"
style="width: 100%; height: 100%"
:src="
iframeUrl +
'/exam/viewanswer?id=' +
(answerId ? answerId : datasource.answerId)
"
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
>
</iframe>
</div>
<!-- <div class="btnn">
<button class="btn1">取消</button>
<button class="btn2">确定</button>
</div> -->
</div>
</a-drawer>
</div>
</a-drawer>
</template>
<script>
import { toRefs,reactive } from '@vue/reactivity';
import { message } from 'ant-design-vue';
import { toRefs, reactive } from "@vue/reactivity";
import { message } from "ant-design-vue";
import { iframeUrl } from "../../api/method";
import {queryUserAnswerDetail} from '@/api/indexExam';
import { queryUserAnswerDetail } from "@/api/indexExam";
export default {
name:"CheckAnsware",
props:{
CAvisible:{
type:Boolean,
default:false,
},
datasource:{
type: Object,
default: function () {
return {};
},
},
answerId:{
type: String,
default: "",
}
name: "CheckAnsware",
props: {
CAvisible: {
type: Boolean,
default: false,
},
setup(props,ctx){
const state = reactive({
score:null, //传过来赋给score
queData:[
{
quetype:"判断",
quename:"当前项目对您是否有帮助?",
value:1,
answer:[
{
value:1,
answercontent:"错误",
analysis:"暂无解析",
},
]
},
{
quetype:"多选",
quename:"哪些项目跨年快乐memememememeemme?",
value:2,
answer:[
{
value:1,
answercontent:"A、有帮助"
},
{
value:2,
answercontent:"B、mei帮助"
},
{
value:3,
answercontent:"C、mei5155帮助"
},
{
value:4,
answercontent:"D、12345mei帮助"
}
],
answercontent:"错误",
analysis:"暂无解析",
},
{
quetype:"多选",
quename:"哪些项目跨年快乐memememememeemme?",
value:3,
answer:[
{
value:1,
answercontent:"A、有帮助"
},
{
value:2,
answercontent:"B、mei帮助"
},
{
value:3,
answercontent:"C、mei5155帮助"
},
{
value:4,
answercontent:"D、12345mei帮助"
}
]
},
{
quetype:"判断",
quename:"当前项目对您是否有帮助?",
value:4,
answer:[
{
value:1,
answercontent:"错误",
analysis:"暂无解析",
},
]
},
],
iframeUrl: iframeUrl,
})
datasource: {
type: Object,
default: function () {
return {};
},
},
answerId: {
type: String,
default: "",
},
},
setup(props, ctx) {
const state = reactive({
score: null, //传过来赋给score
queData: [
{
quetype: "判断",
quename: "当前项目对您是否有帮助?",
value: 1,
answer: [
{
value: 1,
answercontent: "错误",
analysis: "暂无解析",
},
],
},
{
quetype: "多选",
quename: "哪些项目跨年快乐memememememeemme?",
value: 2,
answer: [
{
value: 1,
answercontent: "A、有帮助",
},
{
value: 2,
answercontent: "B、mei帮助",
},
{
value: 3,
answercontent: "C、mei5155帮助",
},
{
value: 4,
answercontent: "D、12345mei帮助",
},
],
answercontent: "错误",
analysis: "暂无解析",
},
{
quetype: "多选",
quename: "哪些项目跨年快乐memememememeemme?",
value: 3,
answer: [
{
value: 1,
answercontent: "A、有帮助",
},
{
value: 2,
answercontent: "B、mei帮助",
},
{
value: 3,
answercontent: "C、mei5155帮助",
},
{
value: 4,
answercontent: "D、12345mei帮助",
},
],
},
{
quetype: "判断",
quename: "当前项目对您是否有帮助?",
value: 4,
answer: [
{
value: 1,
answercontent: "错误",
analysis: "暂无解析",
},
],
},
],
iframeUrl: iframeUrl,
});
const closeDrawer = ()=> {
ctx.emit("update:CAvisible",false)
}
const afterVisibleChange = (bool) => {
console.log(bool);
if(bool == true) {
console.log(props.datasource)
console.log(props.answerId?props.answerId:props.datasource.answerId)
}
}
const getQue = () => {
queryUserAnswerDetail(1).then(res => {
console.log(res)
}).catch(err =>{
message.error('用户答卷信息获取失败'+err)
})
}
return{
...toRefs(state),
closeDrawer,
afterVisibleChange,
getQue
}
}
const closeDrawer = () => {
ctx.emit("update:CAvisible", false);
};
const afterVisibleChange = (bool) => {
console.log(bool);
if (bool == true) {
console.log(props.datasource);
console.log(
props.answerId ? props.answerId : props.datasource.answerId
);
}
};
const getQue = () => {
queryUserAnswerDetail(1)
.then((res) => {
console.log(res);
})
.catch((err) => {
message.error("用户答卷信息获取失败" + err);
});
};
return {
...toRefs(state),
closeDrawer,
afterVisibleChange,
getQue,
};
},
};
</script>
<style lang="scss">
.CheckAnsware {
z-index: 99999;
.drawerMain {
min-width: 400px;
margin: 0px 32px 0px 32px;
display: flex;
flex-direction: column;
.headersub {
height: 73px;
display: flex;
justify-content: space-between;
align-items: center;
z-index: 99999;
.drawerMain {
min-width: 400px;
margin: 0px 32px 0px 32px;
display: flex;
flex-direction: column;
.headersub {
height: 73px;
display: flex;
justify-content: space-between;
align-items: center;
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
}
}
.headersup{
border-bottom: 1px solid #e8e8e8;
padding-bottom: 20px;
}
.main {
width: 100%;
overflow-y: auto;
margin-bottom: 70px;
.basetext{
color: #333333;
line-height: 25px;
margin-top: 27px ;
margin-bottom: 27px ;
}
.basequestion{
.ques{
.quename{
margin: 10px auto ;
font-weight: bold;
}
.queanswer{
padding-left: 25px;
.queabox{
margin-bottom: 10px;
.single{
padding: 5px;
.queaboxs{
display: flex;
flex-direction: column;
}
.analysisbox{
border: 1px solid #e8e8e8;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
border-radius: 8px;
margin-left: -10px;
padding: 5px 10px;
}
}
.multiple{
padding: 5px;
.queaboxs{
display: flex;
flex-direction: column;
}
.analysisbox{
border: 1px solid #e8e8e8;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
border-radius: 8px;
margin-left: -10px;
padding: 5px 10px;
}
}
}
}
}
}
}
.btnn {
height: 72px;
width: 100%;
position: absolute;
bottom: 0;
left: 0;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.btn1 {
width: 100px;
height: 40px;
border: 1px solid #4ea6ff;
border-radius: 8px;
color: #4ea6ff;
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;
height: 40px;
background: #4ea6ff;
border-radius: 8px;
border: 0;
margin-left: 15px;
color: #fff;
}
}
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
}
}
.headersup {
border-bottom: 1px solid #e8e8e8;
padding-bottom: 20px;
}
.main {
width: 100%;
overflow-y: auto;
margin-bottom: 70px;
.basetext {
color: #333333;
line-height: 25px;
margin-top: 27px;
margin-bottom: 27px;
}
.basequestion {
.ques {
.quename {
margin: 10px auto;
font-weight: bold;
}
.queanswer {
padding-left: 25px;
.queabox {
margin-bottom: 10px;
.single {
padding: 5px;
.queaboxs {
display: flex;
flex-direction: column;
}
.analysisbox {
border: 1px solid #e8e8e8;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
border-radius: 8px;
margin-left: -10px;
padding: 5px 10px;
}
}
.multiple {
padding: 5px;
.queaboxs {
display: flex;
flex-direction: column;
}
.analysisbox {
border: 1px solid #e8e8e8;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
border-radius: 8px;
margin-left: -10px;
padding: 5px 10px;
}
}
}
}
}
}
}
.btnn {
height: 72px;
width: 100%;
position: absolute;
bottom: 0;
left: 0;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.btn1 {
width: 100px;
height: 40px;
border: 1px solid #4ea6ff;
border-radius: 8px;
color: #4ea6ff;
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;
height: 40px;
background: #4ea6ff;
border-radius: 8px;
border: 0;
margin-left: 15px;
color: #fff;
}
}
}
}
</style>

View File

@@ -17,13 +17,13 @@
:src="`${iframeUrl}/course/manages?f=choose&refId=${props.id}&refType=${props.type}&courseIds=${couresIdArray}&projectId=${props.projectId}`"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</a-modal>
</template>
<script setup>
import {defineProps, ref} from "vue";
import {iframeUrl} from "@/api/method";
import { defineProps, ref } from "vue";
import { iframeUrl } from "@/api/method";
const visible = ref(false);
const couresIdArray = ref();
@@ -31,17 +31,17 @@ const props = defineProps({
type: Number,
id: Number,
courseIds: Array,
projectId: String
projectId: String,
});
// 把任务列表里类型为在线课的课程ID放到数组里
if(props.courseIds && props.courseIds.length){
var arr = []
for(var i = 0;i<props.courseIds.length;i++){
if(props.courseIds[i].type === 1){
arr.push(props.courseIds[i].courseId)
if (props.courseIds && props.courseIds.length) {
var arr = [];
for (var i = 0; i < props.courseIds.length; i++) {
if (props.courseIds[i].type === 1) {
arr.push(props.courseIds[i].courseId);
}
}
couresIdArray.value = arr
couresIdArray.value = arr;
}
function openModal() {
visible.value = true;
@@ -52,11 +52,8 @@ function closeModal() {
}
defineExpose({ closeModal });
</script>
<style lang="scss">
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important;
}
@@ -238,8 +235,8 @@ defineExpose({ closeModal });
}
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: #f6f9fd;
}
@@ -319,8 +316,8 @@ defineExpose({ closeModal });
justify-content: center;
background: linear-gradient(
rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
);
.inhe {

View File

@@ -3,18 +3,18 @@
<slot></slot>
</div>
<a-drawer
:visible="visible"
class="drawerStyle TimeManage"
placement="right"
width="1000"
:visible="visible"
class="drawerStyle TimeManage"
placement="right"
width="1000"
>
<div class="drawerMain">
<div class="header">
<div class="headerTitle">选择试卷</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div>
<div class="main">
@@ -23,18 +23,14 @@
<div class="namecon" style="margin-right: 30px">
<div class="name">试卷名称</div>
<a-input
v-model:value="params.keyWord"
style="width: 270px; height: 40px; border-radius: 8px"
placeholder="请输入试卷名称"
v-model:value="params.keyWord"
style="width: 270px; height: 40px; border-radius: 8px"
placeholder="请输入试卷名称"
/>
</div>
</div>
<div class="btns">
<div
class="btn btn1"
style="margin-right: 20px"
@click="search"
>
<div class="btn btn1" style="margin-right: 20px" @click="search">
<div class="img1"></div>
<div class="wz">搜索</div>
</div>
@@ -51,15 +47,17 @@
</div>
<div class="tab" style="margin-top: 20px; margin-bottom: 100px">
<a-table
:customRow="customRow"
class="ant-table-striped"
:row-class-name="(_, index) => (index % 2 === 1 ? 'table-striped' : null)"
row-key="id"
:columns="columns"
:data-source="data"
:loading="loading"
:pagination="pagination"
:row-selection="rowSelection"
:customRow="customRow"
class="ant-table-striped"
:row-class-name="
(_, index) => (index % 2 === 1 ? 'table-striped' : null)
"
row-key="id"
:columns="columns"
:data-source="data"
:loading="loading"
:pagination="pagination"
:row-selection="rowSelection"
/>
</div>
</div>
@@ -72,36 +70,36 @@
<!-- 新建考试 -->
<a-modal
v-model:visible="createVisible"
:footer="null"
:closable="false"
wrapClassName="modalStyle addExamModal"
:zIndex="9999"
v-model:visible="createVisible"
:footer="null"
:closable="false"
wrapClassName="modalStyle addExamModal"
:zIndex="9999"
>
<iframe
id="iframe"
style="width: 100%; height: 100%"
:src="iframeUrl + '/exam/papers?addnew=true'"
name="myframe"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
id="iframe"
style="width: 100%; height: 100%"
:src="iframeUrl + '/exam/papers?addnew=true'"
name="myframe"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</a-modal>
</template>
<script setup>
import {computed, defineEmits, defineProps, ref} from "vue";
import {iframeUrl} from "@/api/method";
import {useBoeApiPage} from "@/api/request";
import {EXAM_PAPER_PAGE} from "@/api/ThirdApi";
import {message} from "ant-design-vue";
import { computed, defineEmits, defineProps, ref } from "vue";
import { iframeUrl } from "@/api/method";
import { useBoeApiPage } from "@/api/request";
import { EXAM_PAPER_PAGE } from "@/api/ThirdApi";
import { message } from "ant-design-vue";
defineProps({
id: String,
name: String
})
const visible = ref(false)
const createVisible = ref(false)
const emit = defineEmits({})
name: String,
});
const visible = ref(false);
const createVisible = ref(false);
const emit = defineEmits({});
const columns = ref([
{
@@ -131,31 +129,35 @@ const columns = ref([
className: "h",
ellipsis: true,
},
])
]);
const initParams = {
keyWord: '',
keyWord: "",
pageIndex: 1,
pageSize: 10,
orderAsc: true
}
const params = ref(initParams)
orderAsc: true,
};
const params = ref(initParams);
const rowSelectKeys = ref([]);
const selectsData = ref([]);
const {data, loading, total, fetch} = useBoeApiPage(EXAM_PAPER_PAGE, params.value, {
init: false,
result: res => res.result.list,
totalPage: res => res.result.totalPages,
total: res => res.result.count
})
const { data, loading, total, fetch } = useBoeApiPage(
EXAM_PAPER_PAGE,
params.value,
{
init: false,
result: (res) => res.result.list,
totalPage: (res) => res.result.totalPages,
total: (res) => res.result.count,
}
);
const customRow = (record) => ({
onClick: () => {
rowSelectKeys.value = [record.id]
selectsData.value = [record]
}
})
rowSelectKeys.value = [record.id];
selectsData.value = [record];
},
});
const pagination = computed(() => ({
total: total.value,
@@ -167,20 +169,20 @@ const pagination = computed(() => ({
const changePagination = (e) => {
params.value.pageIndex = e;
fetch()
fetch();
};
const rowSelection = computed(() => ({
type: 'radio',
type: "radio",
columnWidth: 20,
selectedRowKeys: rowSelectKeys.value,
onChange: onSelectChange,
preserveSelectedRowKeys: true,
getCheckboxProps: getCheckboxProps
getCheckboxProps: getCheckboxProps,
}));
const getCheckboxProps = () => ({
// 某几项默认禁止选中(R: 当state等于1时)
disabled: false
})
disabled: false,
});
function onSelectChange(e, l) {
rowSelectKeys.value = e;
@@ -188,42 +190,42 @@ function onSelectChange(e, l) {
}
function search() {
params.value.pageIndex = 1
fetch()
params.value.pageIndex = 1;
fetch();
}
function reset() {
rowSelectKeys.value = [];
selectsData.value = [];
params.value.pageIndex = 1
params.value.keyWord = ''
fetch()
params.value.pageIndex = 1;
params.value.keyWord = "";
fetch();
}
const closeDrawer = () => {
visible.value = false
reset()
visible.value = false;
reset();
};
function confirm() {
if (!selectsData.value.length || !rowSelectKeys.value.length) {
message.warning("请选择试卷");
return
return;
}
emit('update:id', selectsData.value[0].id)
emit('update:name', selectsData.value[0].testName)
closeDrawer()
emit("update:id", selectsData.value[0].id);
emit("update:name", selectsData.value[0].testName);
closeDrawer();
}
function openDrawer() {
visible.value = true
visible.value = true;
}
function createPage() {
createVisible.value = true
createVisible.value = true;
}
defineExpose({openDrawer})
defineExpose({ openDrawer });
</script>
<style lang="scss">
@@ -264,7 +266,6 @@ defineExpose({openDrawer})
flex-wrap: wrap;
margin-top: 20px;
.sealeft {
display: flex;
flex-wrap: wrap;
@@ -353,8 +354,8 @@ defineExpose({openDrawer})
}
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: #f6f9fd;
}

View File

@@ -331,13 +331,13 @@
style="width: 100%; height: 100%; border: none"
:src="iframeUrl + '/exam/papers?addnew=true'"
name="myframe"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</div>
</template>
<script setup>
import { defineEmits, defineProps, ref, watch, computed,onMounted } from "vue";
import { defineEmits, defineProps, ref, watch, computed, onMounted } from "vue";
import GrowthSelectTest from "./GrowthSelectTest.vue";
import { Form, message } from "ant-design-vue";
import { useResetRef } from "@/utils/useCommon";
@@ -490,7 +490,7 @@ async function confirm() {
message.warning("请输入数据来源");
return;
}
console.log(formData.value)
console.log(formData.value);
await validate().catch(({ errorFields }) => {
message.warning(errorFields[0].errors.join());
throw Error("数据校验不通过");

View File

@@ -377,7 +377,7 @@
style="width: 100%; height: 100%; border: none"
:src="iframeUrl + '/exam/papers?addnew=true'"
name="myframe"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</div>

View File

@@ -29,7 +29,7 @@
}&refType=${14}&courseIds=&projectId=${props.growId}`"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</a-spin>

View File

@@ -17,7 +17,7 @@
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>

View File

@@ -17,7 +17,7 @@
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-scripts allow-same-origin allow-popups allow-downloads"
sandbox="allow-forms allow-scripts allow-same-origin allow-popups allow-downloads allow-top-navigation"
></iframe>
</div>
</template>

View File

@@ -17,7 +17,7 @@
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>

View File

@@ -11,28 +11,27 @@
<template>
<div class="courseManage">
<iframe
id="iframe"
style="width: 100%; height: 100%"
:src="iframeUrl + '/course/manages?page=manage'"
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
id="iframe"
style="width: 100%; height: 100%"
:src="iframeUrl + '/course/manages?page=manage'"
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
<OnlineClassModelStudent ref="stuRef" :type="13"></OnlineClassModelStudent>
</div>
</template>
<script setup>
import {onMounted, ref} from "vue";
import {iframeUrl} from "@/api/method";
import { onMounted, ref } from "vue";
import { iframeUrl } from "@/api/method";
import OnlineClassModelStudent from "@/components/student/OnlineClassModelStudent";
const stuRef = ref()
const stuRef = ref();
onMounted(() => {
window.openSelectStu = stuRef.value.openDrawer
})
window.openSelectStu = stuRef.value.openDrawer;
});
</script>
<style lang="scss">
.courseManage {

View File

@@ -17,7 +17,7 @@
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>

View File

@@ -17,7 +17,7 @@
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>

View File

@@ -17,7 +17,7 @@
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>

File diff suppressed because it is too large Load Diff

View File

@@ -7,13 +7,12 @@
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>
<script setup>
import {iframeUrl} from "@/api/method";
import { iframeUrl } from "@/api/method";
</script>
<style lang="scss">
.courseManage {

View File

@@ -7,13 +7,12 @@
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>
<script setup>
import {iframeUrl} from "@/api/method";
import { iframeUrl } from "@/api/method";
</script>
<style lang="scss">
.courseManage {

View File

@@ -17,7 +17,7 @@
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>

View File

@@ -1,19 +1,17 @@
<template>
<div class="courseManage">
<iframe
id="iframe"
style="width: 100%; height: 100%"
:src="`${BOE_URL}/pc/iframe/ugroup/manages`"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
id="iframe"
style="width: 100%; height: 100%"
:src="`${BOE_URL}/pc/iframe/ugroup/manages`"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>
<script setup>
const BOE_URL = window.location.protocol + process.env.VUE_APP_BOE_API_URL
const BOE_URL = window.location.protocol + process.env.VUE_APP_BOE_API_URL;
</script>
<style lang="scss">
.courseManage {

View File

@@ -1,19 +1,17 @@
<template>
<div class="courseManage">
<iframe
id="iframe"
style="width: 100%; height: 100%"
:src="`${BOE_URL}/platform/sys/dwdictionary`"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
id="iframe"
style="width: 100%; height: 100%"
:src="`${BOE_URL}/platform/sys/dwdictionary`"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>
<script setup>
const BOE_URL = window.location.protocol + process.env.VUE_APP_BOE_API_URL
const BOE_URL = window.location.protocol + process.env.VUE_APP_BOE_API_URL;
</script>
<style lang="scss">
.courseManage {

View File

@@ -1,19 +1,17 @@
<template>
<div class="courseManage">
<iframe
id="iframe"
style="width: 100%; height: 100%"
:src="`${BOE_URL}/resource/index.html`"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
id="iframe"
style="width: 100%; height: 100%"
:src="`${BOE_URL}/resource/index.html`"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>
<script setup>
const BOE_URL = window.location.protocol + process.env.VUE_APP_BOE_API_URL
const BOE_URL = window.location.protocol + process.env.VUE_APP_BOE_API_URL;
</script>
<style lang="scss">
.courseManage {

View File

@@ -1,19 +1,17 @@
<template>
<div class="courseManage">
<iframe
id="iframe"
style="width: 100%; height: 100%"
:src="`${BOE_URL}/train/manager/index.html`"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
id="iframe"
style="width: 100%; height: 100%"
:src="`${BOE_URL}/train/manager/index.html`"
name="myframe"
security="restricted"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</div>
</template>
<script setup>
const BOE_URL = window.location.protocol + process.env.VUE_APP_BOE_API_URL
const BOE_URL = window.location.protocol + process.env.VUE_APP_BOE_API_URL;
</script>
<style lang="scss">
.courseManage {