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%" style="width: 100%; height: 100%"
:src="iframeUrl + '/course/manages'" :src="iframeUrl + '/course/manages'"
name="myframe" 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> ></iframe>
</a-modal> </a-modal>
</div> </div>

View File

@@ -17,15 +17,19 @@
/> />
</div> </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="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;"> <div class="main" style="height: 860px; display: flex">
<iframe <iframe
id="iframe" id="iframe"
style="width: 100%; height: 100%;" style="width: 100%; height: 100%"
:src="iframeUrl+'/exam/viewanswer?id='+(answerId?answerId:datasource.answerId)" :src="
iframeUrl +
'/exam/viewanswer?id=' +
(answerId ? answerId : datasource.answerId)
"
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> </iframe>
</div> </div>
@@ -38,10 +42,10 @@
</template> </template>
<script> <script>
import { toRefs,reactive } from '@vue/reactivity'; import { toRefs, reactive } from "@vue/reactivity";
import { message } from 'ant-design-vue'; import { message } from "ant-design-vue";
import { iframeUrl } from "../../api/method"; import { iframeUrl } from "../../api/method";
import {queryUserAnswerDetail} from '@/api/indexExam'; import { queryUserAnswerDetail } from "@/api/indexExam";
export default { export default {
name: "CheckAnsware", name: "CheckAnsware",
props: { props: {
@@ -58,7 +62,7 @@ export default {
answerId: { answerId: {
type: String, type: String,
default: "", default: "",
} },
}, },
setup(props, ctx) { setup(props, ctx) {
const state = reactive({ const state = reactive({
@@ -74,7 +78,7 @@ export default {
answercontent: "错误", answercontent: "错误",
analysis: "暂无解析", analysis: "暂无解析",
}, },
] ],
}, },
{ {
quetype: "多选", quetype: "多选",
@@ -83,20 +87,20 @@ export default {
answer: [ answer: [
{ {
value: 1, value: 1,
answercontent:"A、有帮助" answercontent: "A、有帮助",
}, },
{ {
value: 2, value: 2,
answercontent:"B、mei帮助" answercontent: "B、mei帮助",
}, },
{ {
value: 3, value: 3,
answercontent:"C、mei5155帮助" answercontent: "C、mei5155帮助",
}, },
{ {
value: 4, value: 4,
answercontent:"D、12345mei帮助" answercontent: "D、12345mei帮助",
} },
], ],
answercontent: "错误", answercontent: "错误",
analysis: "暂无解析", analysis: "暂无解析",
@@ -108,21 +112,21 @@ export default {
answer: [ answer: [
{ {
value: 1, value: 1,
answercontent:"A、有帮助" answercontent: "A、有帮助",
}, },
{ {
value: 2, value: 2,
answercontent:"B、mei帮助" answercontent: "B、mei帮助",
}, },
{ {
value: 3, value: 3,
answercontent:"C、mei5155帮助" answercontent: "C、mei5155帮助",
}, },
{ {
value: 4, value: 4,
answercontent:"D、12345mei帮助" answercontent: "D、12345mei帮助",
} },
] ],
}, },
{ {
quetype: "判断", quetype: "判断",
@@ -134,36 +138,40 @@ export default {
answercontent: "错误", answercontent: "错误",
analysis: "暂无解析", analysis: "暂无解析",
}, },
] ],
}, },
], ],
iframeUrl: iframeUrl, iframeUrl: iframeUrl,
}) });
const closeDrawer = () => { const closeDrawer = () => {
ctx.emit("update:CAvisible",false) ctx.emit("update:CAvisible", false);
} };
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {
console.log(bool); console.log(bool);
if (bool == true) { if (bool == true) {
console.log(props.datasource) console.log(props.datasource);
console.log(props.answerId?props.answerId:props.datasource.answerId) console.log(
} props.answerId ? props.answerId : props.datasource.answerId
);
} }
};
const getQue = () => { const getQue = () => {
queryUserAnswerDetail(1).then(res => { queryUserAnswerDetail(1)
console.log(res) .then((res) => {
}).catch(err =>{ console.log(res);
message.error('用户答卷信息获取失败'+err)
}) })
} .catch((err) => {
message.error("用户答卷信息获取失败" + err);
});
};
return { return {
...toRefs(state), ...toRefs(state),
closeDrawer, closeDrawer,
afterVisibleChange, afterVisibleChange,
getQue getQue,
} };
} },
}; };
</script> </script>
<style lang="scss"> <style lang="scss">

View File

@@ -17,7 +17,7 @@
:src="`${iframeUrl}/course/manages?f=choose&refId=${props.id}&refType=${props.type}&courseIds=${couresIdArray}&projectId=${props.projectId}`" :src="`${iframeUrl}/course/manages?f=choose&refId=${props.id}&refType=${props.type}&courseIds=${couresIdArray}&projectId=${props.projectId}`"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</a-modal> </a-modal>
</template> </template>
@@ -31,17 +31,17 @@ const props = defineProps({
type: Number, type: Number,
id: Number, id: Number,
courseIds: Array, courseIds: Array,
projectId: String projectId: String,
}); });
// 把任务列表里类型为在线课的课程ID放到数组里 // 把任务列表里类型为在线课的课程ID放到数组里
if (props.courseIds && props.courseIds.length) { if (props.courseIds && props.courseIds.length) {
var arr = [] var arr = [];
for (var i = 0; i < props.courseIds.length; i++) { for (var i = 0; i < props.courseIds.length; i++) {
if (props.courseIds[i].type === 1) { if (props.courseIds[i].type === 1) {
arr.push(props.courseIds[i].courseId) arr.push(props.courseIds[i].courseId);
} }
} }
couresIdArray.value = arr couresIdArray.value = arr;
} }
function openModal() { function openModal() {
visible.value = true; visible.value = true;
@@ -52,11 +52,8 @@ function closeModal() {
} }
defineExpose({ closeModal }); defineExpose({ closeModal });
</script> </script>
<style lang="scss"> <style lang="scss">
.ant-table-striped :deep(.table-striped) td { .ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important; background-color: #fafafa !important;
} }

View File

@@ -30,11 +30,7 @@
</div> </div>
</div> </div>
<div class="btns"> <div class="btns">
<div <div class="btn btn1" style="margin-right: 20px" @click="search">
class="btn btn1"
style="margin-right: 20px"
@click="search"
>
<div class="img1"></div> <div class="img1"></div>
<div class="wz">搜索</div> <div class="wz">搜索</div>
</div> </div>
@@ -53,7 +49,9 @@
<a-table <a-table
:customRow="customRow" :customRow="customRow"
class="ant-table-striped" class="ant-table-striped"
:row-class-name="(_, index) => (index % 2 === 1 ? 'table-striped' : null)" :row-class-name="
(_, index) => (index % 2 === 1 ? 'table-striped' : null)
"
row-key="id" row-key="id"
:columns="columns" :columns="columns"
:data-source="data" :data-source="data"
@@ -83,7 +81,7 @@
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
:src="iframeUrl + '/exam/papers?addnew=true'" :src="iframeUrl + '/exam/papers?addnew=true'"
name="myframe" 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> ></iframe>
</a-modal> </a-modal>
</template> </template>
@@ -97,11 +95,11 @@ import {message} from "ant-design-vue";
defineProps({ defineProps({
id: String, id: String,
name: String name: String,
}) });
const visible = ref(false) const visible = ref(false);
const createVisible = ref(false) const createVisible = ref(false);
const emit = defineEmits({}) const emit = defineEmits({});
const columns = ref([ const columns = ref([
{ {
@@ -131,31 +129,35 @@ const columns = ref([
className: "h", className: "h",
ellipsis: true, ellipsis: true,
}, },
]) ]);
const initParams = { const initParams = {
keyWord: '', keyWord: "",
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
orderAsc: true orderAsc: true,
} };
const params = ref(initParams) const params = ref(initParams);
const rowSelectKeys = ref([]); const rowSelectKeys = ref([]);
const selectsData = ref([]); const selectsData = ref([]);
const {data, loading, total, fetch} = useBoeApiPage(EXAM_PAPER_PAGE, params.value, { const { data, loading, total, fetch } = useBoeApiPage(
EXAM_PAPER_PAGE,
params.value,
{
init: false, init: false,
result: res => res.result.list, result: (res) => res.result.list,
totalPage: res => res.result.totalPages, totalPage: (res) => res.result.totalPages,
total: res => res.result.count total: (res) => res.result.count,
}) }
);
const customRow = (record) => ({ const customRow = (record) => ({
onClick: () => { onClick: () => {
rowSelectKeys.value = [record.id] rowSelectKeys.value = [record.id];
selectsData.value = [record] selectsData.value = [record];
} },
}) });
const pagination = computed(() => ({ const pagination = computed(() => ({
total: total.value, total: total.value,
@@ -167,20 +169,20 @@ const pagination = computed(() => ({
const changePagination = (e) => { const changePagination = (e) => {
params.value.pageIndex = e; params.value.pageIndex = e;
fetch() fetch();
}; };
const rowSelection = computed(() => ({ const rowSelection = computed(() => ({
type: 'radio', type: "radio",
columnWidth: 20, columnWidth: 20,
selectedRowKeys: rowSelectKeys.value, selectedRowKeys: rowSelectKeys.value,
onChange: onSelectChange, onChange: onSelectChange,
preserveSelectedRowKeys: true, preserveSelectedRowKeys: true,
getCheckboxProps: getCheckboxProps getCheckboxProps: getCheckboxProps,
})); }));
const getCheckboxProps = () => ({ const getCheckboxProps = () => ({
// 某几项默认禁止选中(R: 当state等于1时) // 某几项默认禁止选中(R: 当state等于1时)
disabled: false disabled: false,
}) });
function onSelectChange(e, l) { function onSelectChange(e, l) {
rowSelectKeys.value = e; rowSelectKeys.value = e;
@@ -188,42 +190,42 @@ function onSelectChange(e, l) {
} }
function search() { function search() {
params.value.pageIndex = 1 params.value.pageIndex = 1;
fetch() fetch();
} }
function reset() { function reset() {
rowSelectKeys.value = []; rowSelectKeys.value = [];
selectsData.value = []; selectsData.value = [];
params.value.pageIndex = 1 params.value.pageIndex = 1;
params.value.keyWord = '' params.value.keyWord = "";
fetch() fetch();
} }
const closeDrawer = () => { const closeDrawer = () => {
visible.value = false visible.value = false;
reset() reset();
}; };
function confirm() { function confirm() {
if (!selectsData.value.length || !rowSelectKeys.value.length) { if (!selectsData.value.length || !rowSelectKeys.value.length) {
message.warning("请选择试卷"); message.warning("请选择试卷");
return return;
} }
emit('update:id', selectsData.value[0].id) emit("update:id", selectsData.value[0].id);
emit('update:name', selectsData.value[0].testName) emit("update:name", selectsData.value[0].testName);
closeDrawer() closeDrawer();
} }
function openDrawer() { function openDrawer() {
visible.value = true visible.value = true;
} }
function createPage() { function createPage() {
createVisible.value = true createVisible.value = true;
} }
defineExpose({openDrawer}) defineExpose({ openDrawer });
</script> </script>
<style lang="scss"> <style lang="scss">
@@ -264,7 +266,6 @@ defineExpose({openDrawer})
flex-wrap: wrap; flex-wrap: wrap;
margin-top: 20px; margin-top: 20px;
.sealeft { .sealeft {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;

View File

@@ -331,7 +331,7 @@
style="width: 100%; height: 100%; border: none" style="width: 100%; height: 100%; border: none"
:src="iframeUrl + '/exam/papers?addnew=true'" :src="iframeUrl + '/exam/papers?addnew=true'"
name="myframe" 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> ></iframe>
</div> </div>
</div> </div>
@@ -490,7 +490,7 @@ async function confirm() {
message.warning("请输入数据来源"); message.warning("请输入数据来源");
return; return;
} }
console.log(formData.value) console.log(formData.value);
await validate().catch(({ errorFields }) => { await validate().catch(({ errorFields }) => {
message.warning(errorFields[0].errors.join()); message.warning(errorFields[0].errors.join());
throw Error("数据校验不通过"); throw Error("数据校验不通过");

View File

@@ -377,7 +377,7 @@
style="width: 100%; height: 100%; border: none" style="width: 100%; height: 100%; border: none"
:src="iframeUrl + '/exam/papers?addnew=true'" :src="iframeUrl + '/exam/papers?addnew=true'"
name="myframe" 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> ></iframe>
</div> </div>
</div> </div>

View File

@@ -29,7 +29,7 @@
}&refType=${14}&courseIds=&projectId=${props.growId}`" }&refType=${14}&courseIds=&projectId=${props.growId}`"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</a-spin> </a-spin>

View File

@@ -17,7 +17,7 @@
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>

View File

@@ -17,7 +17,7 @@
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>

View File

@@ -17,7 +17,7 @@
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>

View File

@@ -17,7 +17,7 @@
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
<OnlineClassModelStudent ref="stuRef" :type="13"></OnlineClassModelStudent> <OnlineClassModelStudent ref="stuRef" :type="13"></OnlineClassModelStudent>
</div> </div>
@@ -27,12 +27,11 @@ import {onMounted, ref} from "vue";
import { iframeUrl } from "@/api/method"; import { iframeUrl } from "@/api/method";
import OnlineClassModelStudent from "@/components/student/OnlineClassModelStudent"; import OnlineClassModelStudent from "@/components/student/OnlineClassModelStudent";
const stuRef = ref() const stuRef = ref();
onMounted(() => { onMounted(() => {
window.openSelectStu = stuRef.value.openDrawer window.openSelectStu = stuRef.value.openDrawer;
}) });
</script> </script>
<style lang="scss"> <style lang="scss">
.courseManage { .courseManage {

View File

@@ -17,7 +17,7 @@
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>

View File

@@ -17,7 +17,7 @@
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>

View File

@@ -17,7 +17,7 @@
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>

View File

@@ -21,30 +21,41 @@
value: 'code', value: 'code',
}" }"
allow-clear allow-clear
:getPopupContainer="triggerNode => triggerNode.parentNode || document.body" :getPopupContainer="
(triggerNode) => triggerNode.parentNode || document.body
"
v-model:value="valueproj" v-model:value="valueproj"
show-search show-search
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择内容分类" placeholder="请选择内容分类"
tree-default-expand-all tree-default-expand-all
:tree-data="sysTypeOptions"> :tree-data="sysTypeOptions"
>
</a-tree-select> </a-tree-select>
</div> </div>
<div class="inpbox1"> <div class="inpbox1">
<a-input v-model:value="valuecreater" style=" <a-input
v-model:value="valuecreater"
style="
width: 270px; width: 270px;
height: 40px; height: 40px;
border-radius: 8px; border-radius: 8px;
margin-right: 5%; margin-right: 5%;
" placeholder="请输入创建人" /> "
placeholder="请输入创建人"
/>
</div> </div>
<div class="inpbox1"> <div class="inpbox1">
<a-input v-model:value="valuename" style=" <a-input
v-model:value="valuename"
style="
width: 270px; width: 270px;
height: 40px; height: 40px;
border-radius: 8px; border-radius: 8px;
margin-right: 5%; margin-right: 5%;
" placeholder="请输入名称" /> "
placeholder="请输入名称"
/>
</div> </div>
<div class="select addTimeBox"> <div class="select addTimeBox">
<div class="addTime">创建时间</div> <div class="addTime">创建时间</div>
@@ -71,20 +82,40 @@
</div> </div>
<div class="tmpl_body"> <div class="tmpl_body">
<div class="tmpl_tabbox"> <div class="tmpl_tabbox">
<a-table :columns="columns1" :data-source="tableData1" :loading="loading" expandRowByClick="true" <a-table
@expand="expandTable" :scroll="{ x: 1300 }" :pagination="false" /> :columns="columns1"
:data-source="tableData1"
:loading="loading"
expandRowByClick="true"
@expand="expandTable"
:scroll="{ x: 1300 }"
:pagination="false"
/>
</div> </div>
<div class="tableBox"> <div class="tableBox">
<div class="pa"> <div class="pa">
<a-pagination v-if="total > 10" :showSizeChanger="false" show-quick-jumper :pageSize="pageSize" <a-pagination
v-model:current="currentPage" :total="total" class="pagination" @change="changePagination" /> v-if="total > 10"
:showSizeChanger="false"
show-quick-jumper
:pageSize="pageSize"
v-model:current="currentPage"
:total="total"
class="pagination"
@change="changePagination"
/>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- 审核弹窗 --> <!-- 审核弹窗 -->
<a-modal v-model:visible="courAuditModal" :footer="null" :closable="closeBack" wrapClassName="courAuditModal" <a-modal
centered="true"> v-model:visible="courAuditModal"
:footer="null"
:closable="closeBack"
wrapClassName="courAuditModal"
centered="true"
>
<div class="delete"> <div class="delete">
<div class="del_header"></div> <div class="del_header"></div>
<div class="del_main"> <div class="del_main">
@@ -95,12 +126,14 @@
</div> </div>
<div class="body"> <div class="body">
<div class="item"> <div class="item">
<div class="left" style="color:#4ea6ff;">修改意见</div> <div class="left" style="color: #4ea6ff">修改意见</div>
<div class="rig"> <div class="rig"></div>
</div>
</div> </div>
<!-- 修改记录详情 --> <!-- 修改记录详情 -->
<div v-if="openDetailVisibie" style="display: flex;width: 100%;margin-top: 12px;"> <div
v-if="openDetailVisibie"
style="display: flex; width: 100%; margin-top: 12px"
>
<a-table <a-table
:columns="columns2" :columns="columns2"
:data-source="tableData2" :data-source="tableData2"
@@ -108,10 +141,28 @@
expandRowByClick="true" expandRowByClick="true"
@expand="expandTable" @expand="expandTable"
:scroll="{ y: 250 }" :scroll="{ y: 250 }"
:pagination="false" /> :pagination="false"
/>
</div> </div>
<div style="display: flex;justify-content: center;align-items: center;height: 70px;"> <div
<div @click="openDetail" style="cursor:pointer;padding: 2px 12px;border-radius: 4px;background: #4ea6ff;color: #fff;font-size: 14px;"> style="
display: flex;
justify-content: center;
align-items: center;
height: 70px;
"
>
<div
@click="openDetail"
style="
cursor: pointer;
padding: 2px 12px;
border-radius: 4px;
background: #4ea6ff;
color: #fff;
font-size: 14px;
"
>
{{ openDetailVisibie ? "详情折叠" : "详情展开" }} {{ openDetailVisibie ? "详情折叠" : "详情展开" }}
</div> </div>
</div> </div>
@@ -125,61 +176,101 @@
</div> </div>
</div> </div>
<div class="item" style="margin-top: 20px"> <div class="item" style="margin-top: 20px">
<div class="sign" style="position: relative; left: 30px; top: -2px"> <div
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> class="sign"
style="position: relative; left: 30px; top: -2px"
>
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<div class="left">审核意见</div> <div class="left">审核意见</div>
<div class="rig"> <div class="rig">
<a-textarea v-model:value="valueSugg" :rows="4" show-count :maxlength="20" /> <a-textarea
v-model:value="valueSugg"
:rows="4"
show-count
:maxlength="20"
/>
</div> </div>
</div> </div>
</div> </div>
<div class="del_btnbox"> <div class="del_btnbox">
<div class="del_btn btn2" @click="closeCourAuditModal" style="margin-right: 32px;"> <div
class="del_btn btn2"
@click="closeCourAuditModal"
style="margin-right: 32px"
>
<div class="btnText">取消</div> <div class="btnText">取消</div>
</div> </div>
<div class="del_btn btn2" @click="sureCourAuditModal"> <div class="del_btn btn2" @click="sureCourAuditModal">
<div class="btnText">确定</div> <div class="btnText">确定</div>
</div> </div>
</div> </div>
<div style="height:20px;"></div> <div style="height: 20px"></div>
</div> </div>
</div> </div>
</a-modal> </a-modal>
<!-- 邀请审核弹窗 --> <!-- 邀请审核弹窗 -->
<a-modal v-model:visible="courInvitationAuditModal" :footer="null" :closable="closeBack" wrapClassName="courAuditModal" <a-modal
centered="true" style="height:400px;"> v-model:visible="courInvitationAuditModal"
:footer="null"
:closable="closeBack"
wrapClassName="courAuditModal"
centered="true"
style="height: 400px"
>
<div class="delete"> <div class="delete">
<div class="del_header"></div> <div class="del_header"></div>
<div class="del_main" style="height:400px;"> <div class="del_main" style="height: 400px">
<div class="header"> <div class="header">
<div class="icon"></div> <div class="icon"></div>
<span>请选择教师</span> <span>请选择教师</span>
<div class="close_exit" @click="closeInvitationCourAuditModal"></div> <div
class="close_exit"
@click="closeInvitationCourAuditModal"
></div>
</div> </div>
<div class="body"> <div class="body">
<div class="item" style="align-items: center;"> <div class="item" style="align-items: center">
<div class="left">教师</div> <div class="left">教师</div>
<div class="rig" style="margin-left: 10px;"> <div class="rig" style="margin-left: 10px">
<ProjectManager <ProjectManager
placeholder="请输入教师姓名" placeholder="请输入教师姓名"
v-model:value="memberValue.value" v-model:value="memberValue.value"
v-model:name="memberValue.label"> v-model:name="memberValue.label"
>
</ProjectManager> </ProjectManager>
</div> </div>
</div> </div>
<div class="item" style="margin-top: 20px"> <div class="item" style="margin-top: 20px">
<div class="sign" style="position: relative; left: 30px; top: -2px"> <div
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> class="sign"
style="position: relative; left: 30px; top: -2px"
>
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<div class="left">邀请说明</div> <div class="left">邀请说明</div>
<div class="rig"> <div class="rig">
<a-textarea v-model:value="valueSuggInvitation" :rows="4" show-count :maxlength="20" /> <a-textarea
v-model:value="valueSuggInvitation"
:rows="4"
show-count
:maxlength="20"
/>
</div> </div>
</div> </div>
</div> </div>
<div class="del_btnbox"> <div class="del_btnbox">
<div class="del_btn btn2" @click="closeInvitationCourAuditModal" style="margin-right: 32px;"> <div
class="del_btn btn2"
@click="closeInvitationCourAuditModal"
style="margin-right: 32px"
>
<div class="btnText">取消</div> <div class="btnText">取消</div>
</div> </div>
<div class="del_btn btn2" @click="sureInvitationCourAuditModal"> <div class="del_btn btn2" @click="sureInvitationCourAuditModal">
@@ -190,48 +281,74 @@
</div> </div>
</a-modal> </a-modal>
<!-- 转审完成弹窗 --> <!-- 转审完成弹窗 -->
<a-modal v-model:visible="transferInvitationAuditModal" :footer="null" :closable="closeBack" wrapClassName="courAuditModal" <a-modal
centered="true"> v-model:visible="transferInvitationAuditModal"
<div class="delete" style="height:460px;"> :footer="null"
:closable="closeBack"
wrapClassName="courAuditModal"
centered="true"
>
<div class="delete" style="height: 460px">
<div class="del_header"></div> <div class="del_header"></div>
<div class="del_main"> <div class="del_main">
<div class="header"> <div class="header">
<div class="icon"></div> <div class="icon"></div>
<span>审核信息</span> <span>审核信息</span>
<div class="close_exit" @click="closeTransferInvitationCourAuditModal"></div> <div
class="close_exit"
@click="closeTransferInvitationCourAuditModal"
></div>
</div> </div>
<div class="body"> <div class="body">
<div class="item" style="align-items: center;"> <div class="item" style="align-items: center">
<div class="left">审核人</div> <div class="left">审核人</div>
<div class="rig" style="margin-left: 10px;"> <div class="rig" style="margin-left: 10px">
<span>{{ transferCompletedModel.name }}</span> <span>{{ transferCompletedModel.name }}</span>
</div> </div>
</div> </div>
<div class="item" style="align-items: center;margin-top: 20px;"> <div class="item" style="align-items: center; margin-top: 20px">
<div class="left">审核结果</div> <div class="left">审核结果</div>
<div class="rig" style="margin-left: 10px;"> <div class="rig" style="margin-left: 10px">
<a-tag v-if="transferCompletedModel.result=='审核拒绝'" color="red">拒绝</a-tag> <a-tag
<a-tag v-if="transferCompletedModel.result=='审核通过'" color="green">通过</a-tag> v-if="transferCompletedModel.result == '审核拒绝'"
color="red"
>拒绝</a-tag
>
<a-tag
v-if="transferCompletedModel.result == '审核通过'"
color="green"
>通过</a-tag
>
</div> </div>
</div> </div>
<div class="item" style="margin-top: 20px"> <div class="item" style="margin-top: 20px">
<div class="sign" style="position: relative; left: 30px; top: -2px"> <div
class="sign"
style="position: relative; left: 30px; top: -2px"
>
<!-- <img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> --> <!-- <img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> -->
</div> </div>
<div class="left">审核备注</div> <div class="left">审核备注</div>
<div class="rig"> <div class="rig">
<a-textarea v-model:value="transferCompletedModel.remarks" :rows="4" :disabled="true" /> <a-textarea
v-model:value="transferCompletedModel.remarks"
:rows="4"
:disabled="true"
/>
</div> </div>
</div> </div>
<div class="item" style="align-items: center;margin-top: 20px;"> <div class="item" style="align-items: center; margin-top: 20px">
<div class="left">审核时间</div> <div class="left">审核时间</div>
<div class="rig" style="margin-left: 10px;"> <div class="rig" style="margin-left: 10px">
<span>{{ transferCompletedModel.times }}</span> <span>{{ transferCompletedModel.times }}</span>
</div> </div>
</div> </div>
</div> </div>
<div class="del_btnbox"> <div class="del_btnbox">
<div class="del_btn btn2" @click="closeTransferInvitationCourAuditModal"> <div
class="del_btn btn2"
@click="closeTransferInvitationCourAuditModal"
>
<div class="btnText">关闭</div> <div class="btnText">关闭</div>
</div> </div>
</div> </div>
@@ -239,13 +356,27 @@
</div> </div>
</a-modal> </a-modal>
<!-- 预览弹窗 --> <!-- 预览弹窗 -->
<SeeModal :visible="lookCourseModal" :detail="faceDetailObj" @cancel="ft_exit" /> <SeeModal
:visible="lookCourseModal"
:detail="faceDetailObj"
@cancel="ft_exit"
/>
<!-- 审核在线课 --> <!-- 审核在线课 -->
<a-modal v-model:visible="onlineClassesVisible" :footer="null" :closable="false" <a-modal
wrapClassName="modalStyle onlineClassesStyle" :zIndex="9999"> v-model:visible="onlineClassesVisible"
<iframe id="iframe" style="width: 100%; height: 100%" :src="iframeUrl + 'course/noapproved'" name="myframe" :footer="null"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"></iframe> :closable="false"
wrapClassName="modalStyle onlineClassesStyle"
:zIndex="9999"
>
<iframe
id="iframe"
style="width: 100%; height: 100%"
:src="iframeUrl + 'course/noapproved'"
name="myframe"
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups allow-top-navigation"
></iframe>
</a-modal> </a-modal>
</div> </div>
</template> </template>
@@ -1079,8 +1210,10 @@ export default {
position: absolute; position: absolute;
width: calc(100%); width: calc(100%);
height: 68px; height: 68px;
background: linear-gradient(rgba(78, 166, 255, 0.2) 0%, background: linear-gradient(
rgba(78, 166, 255, 0) 100%); rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
);
} }
.del_main { .del_main {
@@ -1188,7 +1321,6 @@ export default {
.lookCourseModal { .lookCourseModal {
.ant-modal { .ant-modal {
.ant-modal-content { .ant-modal-content {
// width:1358px !important; // width:1358px !important;
.ant-modal-body { .ant-modal-body {
.modalHeader { .modalHeader {

View File

@@ -7,13 +7,12 @@
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>
<script setup> <script setup>
import { iframeUrl } from "@/api/method"; import { iframeUrl } from "@/api/method";
</script> </script>
<style lang="scss"> <style lang="scss">
.courseManage { .courseManage {

View File

@@ -7,13 +7,12 @@
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>
<script setup> <script setup>
import { iframeUrl } from "@/api/method"; import { iframeUrl } from "@/api/method";
</script> </script>
<style lang="scss"> <style lang="scss">
.courseManage { .courseManage {

View File

@@ -17,7 +17,7 @@
frameborder="0" frameborder="0"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>

View File

@@ -6,14 +6,12 @@
:src="`${BOE_URL}/pc/iframe/ugroup/manages`" :src="`${BOE_URL}/pc/iframe/ugroup/manages`"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>
<script setup> <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> </script>
<style lang="scss"> <style lang="scss">
.courseManage { .courseManage {

View File

@@ -6,14 +6,12 @@
:src="`${BOE_URL}/platform/sys/dwdictionary`" :src="`${BOE_URL}/platform/sys/dwdictionary`"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>
<script setup> <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> </script>
<style lang="scss"> <style lang="scss">
.courseManage { .courseManage {

View File

@@ -6,14 +6,12 @@
:src="`${BOE_URL}/resource/index.html`" :src="`${BOE_URL}/resource/index.html`"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>
<script setup> <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> </script>
<style lang="scss"> <style lang="scss">
.courseManage { .courseManage {

View File

@@ -6,14 +6,12 @@
:src="`${BOE_URL}/train/manager/index.html`" :src="`${BOE_URL}/train/manager/index.html`"
name="myframe" name="myframe"
security="restricted" 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> ></iframe>
</div> </div>
</template> </template>
<script setup> <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> </script>
<style lang="scss"> <style lang="scss">
.courseManage { .courseManage {