mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-12 12:26:47 +08:00
Merge remote-tracking branch 'boe/dev0731' into dev0731
This commit is contained in:
22375
package-lock.json
generated
Normal file
22375
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -84,7 +84,7 @@ export function useBoeApiPage(_url, params = {}, config = {
|
|||||||
// init: true,
|
// init: true,
|
||||||
// result: res => res.result,
|
// result: res => res.result,
|
||||||
// }) {
|
// }) {
|
||||||
//
|
|
||||||
// const state = reactive({
|
// const state = reactive({
|
||||||
// data: [],
|
// data: [],
|
||||||
// loading: false,
|
// loading: false,
|
||||||
@@ -92,7 +92,7 @@ export function useBoeApiPage(_url, params = {}, config = {
|
|||||||
// watch(() => params, () => {
|
// watch(() => params, () => {
|
||||||
// fetch();
|
// fetch();
|
||||||
// });
|
// });
|
||||||
//
|
|
||||||
// function fetch() {
|
// function fetch() {
|
||||||
// state.loading = true;
|
// state.loading = true;
|
||||||
// return boeRequest(_url, params).then(r => {
|
// return boeRequest(_url, params).then(r => {
|
||||||
@@ -100,7 +100,7 @@ export function useBoeApiPage(_url, params = {}, config = {
|
|||||||
// state.loading = false;
|
// state.loading = false;
|
||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
//
|
|
||||||
// config.init && fetch();
|
// config.init && fetch();
|
||||||
// return {
|
// return {
|
||||||
// ...toRefs(state),
|
// ...toRefs(state),
|
||||||
@@ -109,7 +109,7 @@ export function useBoeApiPage(_url, params = {}, config = {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// export function useBoeUserListPage(_url, params = {}, init = true) {
|
// export function useBoeUserListPage(_url, params = {}, init = true) {
|
||||||
//
|
|
||||||
// const state = reactive({
|
// const state = reactive({
|
||||||
// data: [],
|
// data: [],
|
||||||
// loading: false,
|
// loading: false,
|
||||||
@@ -118,10 +118,10 @@ export function useBoeApiPage(_url, params = {}, config = {
|
|||||||
// page: 1,
|
// page: 1,
|
||||||
// ...params
|
// ...params
|
||||||
// });
|
// });
|
||||||
//
|
|
||||||
// watch(() => params.keyword, throttle(fetch, 600));
|
// watch(() => params.keyword, throttle(fetch, 600));
|
||||||
// watch(() => params.page, fetch);
|
// watch(() => params.page, fetch);
|
||||||
//
|
|
||||||
// function fetch() {
|
// function fetch() {
|
||||||
// state.loading = true;
|
// state.loading = true;
|
||||||
// if (!params.keyword) {
|
// if (!params.keyword) {
|
||||||
@@ -135,7 +135,7 @@ export function useBoeApiPage(_url, params = {}, config = {
|
|||||||
// state.loading = false;
|
// state.loading = false;
|
||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
//
|
|
||||||
// init && fetch();
|
// init && fetch();
|
||||||
// return {
|
// return {
|
||||||
// ...toRefs(state),
|
// ...toRefs(state),
|
||||||
|
|||||||
@@ -74,8 +74,8 @@
|
|||||||
margin: 0px 4px 120px 10px;
|
margin: 0px 4px 120px 10px;
|
||||||
border: 1px solid #f0f0f0;
|
border: 1px solid #f0f0f0;
|
||||||
">
|
">
|
||||||
<BaseTable ref="stuTableRef" :columns="stuColumns" :url="USER_LIST_PAGE" pageKey="page"
|
<BaseTable ref="stuTableRef" :columns="stuColumns" :url="USER_LIST_PAGE" pageKey="pageNo"
|
||||||
:request="useBoeApiUserInfoPage" v-model:params="nameSearch" v-model:selectedRows="stuSelectRows"
|
:request="useNewRowsPageNoInit" v-model:params="nameSearch" v-model:selectedRows="stuSelectRows"
|
||||||
type="checkbox"></BaseTable>
|
type="checkbox"></BaseTable>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -128,8 +128,8 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="tableBox tabb">
|
<div class="tableBox tabb">
|
||||||
<BaseTable ref="auditTableRef" :columns="audiColums" :url="AUDIENCE_LIST" page-key="page"
|
<BaseTable ref="auditTableRef" :columns="audiColums" :url="AUDIENCE_LIST" page-key="pageNo"
|
||||||
:request="useBoeApiAuditPage" v-model:params="audienceName" v-model:selectedRows="auditSelectRows"
|
v-model:params="audienceName" v-model:selectedRows="auditSelectRows"
|
||||||
v-model:selectedRowKeys="auditSelectRowKeys" type="checkbox"></BaseTable>
|
v-model:selectedRowKeys="auditSelectRowKeys" type="checkbox"></BaseTable>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -311,16 +311,10 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import { computed, defineEmits, defineProps, ref, watch, onMounted, reactive, nextTick } from "vue";
|
import { computed, defineEmits, defineProps, ref, watch, onMounted, reactive, nextTick } from "vue";
|
||||||
import { boeRequest, useBoeApi, useBoeApiPage, useBoeApiUserInfoPage, useBoeApiAuditPage } from "@/api/request";
|
import {useNewRowsPageNoInit, useBoeApiAuditPage,request,useRequest } from "@/api/request";
|
||||||
import {
|
|
||||||
ORG_CHILD_LIST,
|
|
||||||
ORG_LIST,
|
|
||||||
USER_LIST_PAGE,
|
|
||||||
AUDIENCE_LIST,
|
|
||||||
} from "@/api/ThirdApi";
|
|
||||||
import dialog from "@/utils/dialog";
|
import dialog from "@/utils/dialog";
|
||||||
|
import {AUDIENCE_LIST, ORG_CHILD_LIST, ORG_LIST, STUDENT_LIST, USER_LIST_PAGE} from "@/api/apis";
|
||||||
import BaseTable from "@/components/common/BaseTable";
|
import BaseTable from "@/components/common/BaseTable";
|
||||||
import { STUDENT_LIST } from "@/api/apis";
|
|
||||||
// 推荐接口
|
// 推荐接口
|
||||||
import { caseRecommend, userList } from '@/api/case'
|
import { caseRecommend, userList } from '@/api/case'
|
||||||
|
|
||||||
@@ -412,7 +406,7 @@ const stageId = ref();
|
|||||||
|
|
||||||
const nameSearch = ref({
|
const nameSearch = ref({
|
||||||
keyword: "",
|
keyword: "",
|
||||||
departId: null,
|
departId: '',
|
||||||
});
|
});
|
||||||
const stuTreeSelectKeys = ref([]);
|
const stuTreeSelectKeys = ref([]);
|
||||||
const stuTreeExpandedKeys = ref([]);
|
const stuTreeExpandedKeys = ref([]);
|
||||||
@@ -421,30 +415,30 @@ const audienceName = ref({
|
|||||||
});
|
});
|
||||||
const searchOrgName = ref({
|
const searchOrgName = ref({
|
||||||
keyword: "",
|
keyword: "",
|
||||||
page: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
});
|
});
|
||||||
const stageIds = computed(() => props.stage);
|
const stageIds = computed(() => props.stage);
|
||||||
|
|
||||||
const { data: orgData, fetch: searchOrg } = useBoeApiPage(
|
const { data: orgData, fetchData: searchOrg } = useRequest(
|
||||||
ORG_LIST,
|
ORG_LIST,
|
||||||
searchOrgName.value
|
searchOrgName.value
|
||||||
);
|
);
|
||||||
const { data: treeData, loading: orgLoading } = useBoeApi(
|
const { data: treeData, loading: orgLoading } = useRequest(
|
||||||
ORG_LIST,
|
ORG_LIST,
|
||||||
{ keyword: "" },
|
{ keyword: "" },
|
||||||
{
|
// {
|
||||||
init: true,
|
// init: true,
|
||||||
result: (res) => res.result.map((e) => ({ ...e, isLeaf: false })),
|
// result: (res) => res.result.map((e) => ({ ...e, isLeaf: false })),
|
||||||
}
|
// }
|
||||||
);
|
);
|
||||||
const { data: treeOrgData, loading: orgOrgLoading } = useBoeApi(
|
const { data: treeOrgData, loading: orgOrgLoading } = useRequest(
|
||||||
ORG_LIST,
|
ORG_LIST,
|
||||||
{ keyword: "" },
|
{ keyword: "" },
|
||||||
{
|
// {
|
||||||
init: true,
|
// init: true,
|
||||||
result: (res) => res.result.map((e) => ({ ...e, isLeaf: false })),
|
// result: (res) => res.result.map((e) => ({ ...e, isLeaf: false })),
|
||||||
}
|
// }
|
||||||
);
|
);
|
||||||
|
|
||||||
const projectStuColumns = ref([
|
const projectStuColumns = ref([
|
||||||
@@ -601,18 +595,19 @@ function searchAudi() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onLoadData(treeNode) {
|
function onLoadData(treeNode) {
|
||||||
return boeRequest(ORG_CHILD_LIST, { keyword: "", orgId: treeNode.id }).then(
|
return request(ORG_CHILD_LIST, { keyword: "", orgId: treeNode.id }).then(
|
||||||
(r) => {
|
(r) => {
|
||||||
treeNode.dataRef.treeChildList = r.result.directChildList;
|
// treeNode.dataRef.treeChildList = r.result.directChildList;
|
||||||
|
treeNode.dataRef.treeChildList = r.data;
|
||||||
treeData.value = [...treeData.value];
|
treeData.value = [...treeData.value];
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onLoadOrgData(treeNode) {
|
function onLoadOrgData(treeNode) {
|
||||||
return boeRequest(ORG_CHILD_LIST, { keyword: "", orgId: treeNode.id }).then(
|
return request(ORG_CHILD_LIST, { keyword: "", orgId: treeNode.id }).then(
|
||||||
(r) => {
|
(r) => {
|
||||||
treeNode.dataRef.treeChildList = r.result.directChildList;
|
treeNode.dataRef.treeChildList = r.data;
|
||||||
treeOrgData.value = [...treeOrgData.value];
|
treeOrgData.value = [...treeOrgData.value];
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -659,7 +654,7 @@ function orgDel(i) {
|
|||||||
const listData = reactive({
|
const listData = reactive({
|
||||||
departId: '',
|
departId: '',
|
||||||
keyword: "",
|
keyword: "",
|
||||||
page: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -688,9 +683,9 @@ const httpList = (addOrMinus) => {
|
|||||||
userList(listData).then((res) => {
|
userList(listData).then((res) => {
|
||||||
if (res.status == 200) {
|
if (res.status == 200) {
|
||||||
if (!addOrMinus) {
|
if (!addOrMinus) {
|
||||||
counts.value -= res.data.result.totalElement
|
counts.value -= res.data.result.total
|
||||||
} else {
|
} else {
|
||||||
counts.value += res.data.result.totalElement
|
counts.value += res.data.result.total
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(counts.value);
|
console.log(counts.value);
|
||||||
@@ -699,7 +694,7 @@ const httpList = (addOrMinus) => {
|
|||||||
|
|
||||||
const resetStu = () => {
|
const resetStu = () => {
|
||||||
nameSearch.value.keyword = "";
|
nameSearch.value.keyword = "";
|
||||||
stuTableRef.value.reset({ keyword: "", departId: null });
|
stuTableRef.value.reset({ keyword: "", departId: '' });
|
||||||
};
|
};
|
||||||
//清空选择部门信息
|
//清空选择部门信息
|
||||||
const deleteDepSelect = () => {
|
const deleteDepSelect = () => {
|
||||||
@@ -815,7 +810,7 @@ watch(visiable, () => {
|
|||||||
orgSelectKeys.value = [];
|
orgSelectKeys.value = [];
|
||||||
deptList.value = [];
|
deptList.value = [];
|
||||||
audienceName.value.keyword = "";
|
audienceName.value.keyword = "";
|
||||||
nameSearch.value.departId = null;
|
nameSearch.value.departId = '';
|
||||||
stuTreeExpandedKeys.value = [];
|
stuTreeExpandedKeys.value = [];
|
||||||
stuTreeSelectKeys.value = [];
|
stuTreeSelectKeys.value = [];
|
||||||
activeKey.value = props.isGroup ? 4 : 1;
|
activeKey.value = props.isGroup ? 4 : 1;
|
||||||
@@ -829,7 +824,7 @@ watch(visiable, () => {
|
|||||||
auditTableRef.value && auditTableRef.value.clear();
|
auditTableRef.value && auditTableRef.value.clear();
|
||||||
auditTableRef.value && auditTableRef.value.reset({ keyword: "" });
|
auditTableRef.value && auditTableRef.value.reset({ keyword: "" });
|
||||||
stuTableRef.value && stuTableRef.value.clear();
|
stuTableRef.value && stuTableRef.value.clear();
|
||||||
stuTableRef.value && stuTableRef.value.reset({ keyword: "", departId: null });
|
stuTableRef.value && stuTableRef.value.reset({ keyword: "", departId: '' });
|
||||||
projectStuTableRef.value && projectStuTableRef.value.clear();
|
projectStuTableRef.value && projectStuTableRef.value.clear();
|
||||||
projectStuTableRef.value && projectStuTableRef.value.reset({ pid: props.infoId, type: props.infoType, studentName: "" });
|
projectStuTableRef.value && projectStuTableRef.value.reset({ pid: props.infoId, type: props.infoType, studentName: "" });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -884,7 +884,7 @@ export default {
|
|||||||
selectedKeys: "sub21",
|
selectedKeys: "sub21",
|
||||||
pagename: "受众管理",
|
pagename: "受众管理",
|
||||||
},
|
},
|
||||||
|
|
||||||
],
|
],
|
||||||
oldManage: window.location.protocol + process.env.VUE_APP_OLD_MANAGE
|
oldManage: window.location.protocol + process.env.VUE_APP_OLD_MANAGE
|
||||||
});
|
});
|
||||||
|
|||||||
136
src/components/common/BaseSlotTable.vue
Normal file
136
src/components/common/BaseSlotTable.vue
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
<template>
|
||||||
|
<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">
|
||||||
|
<template #operation="{ record }">
|
||||||
|
<slot :record="record"></slot>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { defineProps, defineExpose, ref, computed, onMounted, defineEmits, nextTick } from "vue";
|
||||||
|
import { useRowsPageNoInit } from "@/api/request";
|
||||||
|
import { useResetRef } from "@/utils/useCommon";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
columns: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
pageKey: {
|
||||||
|
type: String,
|
||||||
|
default: "pageNo"
|
||||||
|
},
|
||||||
|
params: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
init: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
request: {
|
||||||
|
type: Function,
|
||||||
|
default: useRowsPageNoInit
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const emit = defineEmits(["update:params", "update:selectedRowKeys", "update:selectedRows"]);
|
||||||
|
const rowSelectKeys = ref([]);
|
||||||
|
const selectsData = ref([]);
|
||||||
|
const params = useResetRef({ [props.pageKey]: 1, pageSize: 10 });
|
||||||
|
const postParam = computed(() => ({ ...params.value, ...props.params }));
|
||||||
|
|
||||||
|
const { data, loading, total, fetch: onFetch } = props.request(props.url, postParam);
|
||||||
|
|
||||||
|
const rowSelection = computed(() => (props.type ? {
|
||||||
|
type: props.type,
|
||||||
|
columnWidth: 20,
|
||||||
|
selectedRowKeys: rowSelectKeys.value,
|
||||||
|
onChange: onSelectChange,
|
||||||
|
preserveSelectedRowKeys: true,
|
||||||
|
} : null));
|
||||||
|
|
||||||
|
const customRow = (record) => ({
|
||||||
|
onClick: () => {
|
||||||
|
if (props.type === "checkbox") {
|
||||||
|
if (rowSelectKeys.value.some(t => t === record.id)) {
|
||||||
|
rowSelectKeys.value = rowSelectKeys.value.filter(t => t !== record.id);
|
||||||
|
selectsData.value = selectsData.value.filter(t => t.id !== record.id);
|
||||||
|
} else {
|
||||||
|
rowSelectKeys.value.push(record.id);
|
||||||
|
selectsData.value.push(record);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rowSelectKeys.value = [record.id];
|
||||||
|
selectsData.value = [record];
|
||||||
|
}
|
||||||
|
emit("update:selectedRowKeys", [...rowSelectKeys.value]);
|
||||||
|
emit("update:selectedRows", [...selectsData.value]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(() => props.init && nextTick(onFetch));
|
||||||
|
|
||||||
|
function onSelectChange(e, l) {
|
||||||
|
rowSelectKeys.value = e;
|
||||||
|
selectsData.value = l;
|
||||||
|
emit("update:selectedRowKeys", e);
|
||||||
|
emit("update:selectedRows", l);
|
||||||
|
}
|
||||||
|
|
||||||
|
const pagination = computed(() => ({
|
||||||
|
total: total.value,
|
||||||
|
showSizeChanger: false,
|
||||||
|
current: params.value[props.pageKey],
|
||||||
|
pageSize: params.value.pageSize,
|
||||||
|
onChange: changePagination,
|
||||||
|
}));
|
||||||
|
const changePagination = (e) => {
|
||||||
|
params.value[props.pageKey] = e;
|
||||||
|
nextTick(onFetch);
|
||||||
|
};
|
||||||
|
|
||||||
|
function reset(v) {
|
||||||
|
params.reset();
|
||||||
|
v && emit("update:params", { ...v });
|
||||||
|
nextTick(onFetch);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetSelected() {
|
||||||
|
rowSelectKeys.value = [];
|
||||||
|
selectsData.value = [];
|
||||||
|
emit("update:selectedRowKeys", []);
|
||||||
|
emit("update:selectedRows", []);
|
||||||
|
}
|
||||||
|
|
||||||
|
function clear(v) {
|
||||||
|
rowSelectKeys.value = [];
|
||||||
|
selectsData.value = [];
|
||||||
|
params.reset();
|
||||||
|
v && emit("update:params", { ...v });
|
||||||
|
emit("update:selectedRowKeys", []);
|
||||||
|
emit("update:selectedRows", []);
|
||||||
|
}
|
||||||
|
|
||||||
|
const toLoading = () => loading.value = true;
|
||||||
|
|
||||||
|
function remove(i) {
|
||||||
|
rowSelectKeys.value.splice(i, 1);
|
||||||
|
selectsData.value.splice(i, 1);
|
||||||
|
emit("update:selectedRowKeys", rowSelectKeys.value);
|
||||||
|
emit("update:selectedRows", selectsData.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
const fetch = () => nextTick(onFetch);
|
||||||
|
|
||||||
|
defineExpose({ fetch, reset, resetSelected, clear, toLoading, remove });
|
||||||
|
|
||||||
|
</script>
|
||||||
@@ -282,7 +282,7 @@
|
|||||||
<!-- 二维码弹窗 -->
|
<!-- 二维码弹窗 -->
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive } from "vue";
|
import { toRefs, reactive } from "vue";
|
||||||
import SignQR from "./SignQR.vue";
|
import SignQR from "./SignQR.vue";
|
||||||
import TwoDimensionalCode from "../../components/TwoDimensionalCode";
|
import TwoDimensionalCode from "../../components/TwoDimensionalCode";
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
>
|
>
|
||||||
起止时间:{{ datasource.startTime }} ~ {{ datasource.endTime }}
|
起止时间:{{ datasource.startTime }} ~ {{ datasource.endTime }}
|
||||||
</div>
|
</div>
|
||||||
<!--
|
<!--
|
||||||
<div v-else class="endtime">
|
<div v-else class="endtime">
|
||||||
起止时间:—
|
起止时间:—
|
||||||
</div>-->
|
</div>-->
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
:options="projectNameList"
|
:options="projectNameList"
|
||||||
@change="selectProjectName"
|
@change="selectProjectName"
|
||||||
|
|
||||||
></a-select>
|
></a-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnss" style="margin-top: 20px">
|
<div class="btnss" style="margin-top: 20px">
|
||||||
|
|
||||||
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
||||||
<div class="img1"></div>
|
<div class="img1"></div>
|
||||||
<div class="wz">催促学习</div>
|
<div class="wz">催促学习</div>
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
// import * as api from "../../../api/index";
|
// import * as api from "../../../api/index";
|
||||||
@@ -288,7 +288,7 @@ export default {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: "任务状态",
|
title: "任务状态",
|
||||||
dataIndex: "finishStatus",
|
dataIndex: "finishStatus",
|
||||||
@@ -374,8 +374,8 @@ export default {
|
|||||||
currentStageId: props.datasource.stageId,
|
currentStageId: props.datasource.stageId,
|
||||||
type: 1,
|
type: 1,
|
||||||
pid: props.datasource.projectId,
|
pid: props.datasource.projectId,
|
||||||
taskId: props.datasource.projectTaskId,
|
taskId: props.datasource.projectTaskId,
|
||||||
taskType: props.datasource.type,
|
taskType: props.datasource.type,
|
||||||
status: state.projectName,
|
status: state.projectName,
|
||||||
studentName: state.name,
|
studentName: state.name,
|
||||||
});
|
});
|
||||||
@@ -387,7 +387,7 @@ export default {
|
|||||||
type: 1,
|
type: 1,
|
||||||
pid: props.datasource.projectId,
|
pid: props.datasource.projectId,
|
||||||
taskId: props.datasource.projectTaskId,
|
taskId: props.datasource.projectTaskId,
|
||||||
taskType: props.datasource.type,
|
taskType: props.datasource.type,
|
||||||
status: state.projectName,
|
status: state.projectName,
|
||||||
studentName: state.name,
|
studentName: state.name,
|
||||||
})
|
})
|
||||||
@@ -686,4 +686,4 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)">
|
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)">
|
||||||
|
|
||||||
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
||||||
<div class="img1"></div>
|
<div class="img1"></div>
|
||||||
<div class="wz">催促考试</div>
|
<div class="wz">催促考试</div>
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
<CheckAnsware v-model:CAvisible="CAvisible" :datasource="datasource1"/>
|
<CheckAnsware v-model:CAvisible="CAvisible" :datasource="datasource1"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive } from "vue";
|
import { toRefs, reactive } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import EScore from "../ExportScore.vue";
|
import EScore from "../ExportScore.vue";
|
||||||
@@ -327,12 +327,12 @@ export default {
|
|||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
{text.record.status === 1 || text.record.status === 9 ?
|
{text.record.status === 1 || text.record.status === 9 ?
|
||||||
<a onClick={()=>{
|
<a onClick={()=>{
|
||||||
state.studentKid = text.record.studentKid;
|
state.studentKid = text.record.studentKid;
|
||||||
state.datasource1 = text.record;
|
state.datasource1 = text.record;
|
||||||
state.CAvisible = true;
|
state.CAvisible = true;
|
||||||
}}>查看答卷 </a> :
|
}}>查看答卷 </a> :
|
||||||
<span style="color:rgba(0, 0, 0, 0.25);cursor:not-allowed;"> 查看答卷 </span>
|
<span style="color:rgba(0, 0, 0, 0.25);cursor:not-allowed;"> 查看答卷 </span>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
@@ -424,7 +424,7 @@ export default {
|
|||||||
// 重置
|
// 重置
|
||||||
function reseatTableData() {
|
function reseatTableData() {
|
||||||
state.loadingData = true;
|
state.loadingData = true;
|
||||||
state.currentPage = 1;
|
state.currentPage = 1;
|
||||||
state.name = '';
|
state.name = '';
|
||||||
state.projectName = undefined;
|
state.projectName = undefined;
|
||||||
getData();
|
getData();
|
||||||
@@ -441,7 +441,7 @@ export default {
|
|||||||
function exportData() {
|
function exportData() {
|
||||||
// window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?chapterId=${props.datasource.stageId=="0"?"":props.datasource.stageId}&targetId=${props.datasource.projectId}&taskId=${props.datasource.courseId}&type=${2}`)
|
// window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?chapterId=${props.datasource.stageId=="0"?"":props.datasource.stageId}&targetId=${props.datasource.projectId}&taskId=${props.datasource.courseId}&type=${2}`)
|
||||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?currentStageId=${props.datasource.stageId}&type=${2}&targetId=${props.datasource.projectId}&pid=${props.datasource.projectId}&taskId=${props.datasource.courseId}&taskType=${props.datasource.type}`)
|
window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?currentStageId=${props.datasource.stageId}&type=${2}&targetId=${props.datasource.projectId}&pid=${props.datasource.projectId}&taskId=${props.datasource.courseId}&taskType=${props.datasource.type}`)
|
||||||
|
|
||||||
{/* api.ExportExam({
|
{/* api.ExportExam({
|
||||||
"chapterId": props.datasource.chapterId,
|
"chapterId": props.datasource.chapterId,
|
||||||
"targetId": props.datasource.routerId,
|
"targetId": props.datasource.routerId,
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnss" style="margin-top: 20px">
|
<div class="btnss" style="margin-top: 20px">
|
||||||
|
|
||||||
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
||||||
<div class="img1"></div>
|
<div class="img1"></div>
|
||||||
<div class="wz">催促考试</div>
|
<div class="wz">催促考试</div>
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
:scroll="{ x: 900 }"
|
:scroll="{ x: 900 }"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="pa">
|
<div class="pa">
|
||||||
<a-pagination
|
<a-pagination
|
||||||
:showSizeChanger="false"
|
:showSizeChanger="false"
|
||||||
@@ -108,31 +108,31 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <div class="btnn">
|
<!-- <div class="btnn">
|
||||||
<button class="btn1" @click="closeDrawer">取消</button>
|
<button class="btn1" @click="closeDrawer">取消</button>
|
||||||
<button class="btn2" @click="closeDrawer">确定</button>
|
<button class="btn2" @click="closeDrawer">确定</button>
|
||||||
</div> -->
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
<!-- 导出成绩抽屉 -->
|
<!-- 导出成绩抽屉 -->
|
||||||
<ExportAchievement
|
<ExportAchievement
|
||||||
@closeDraw="closeDraw"
|
@closeDraw="closeDraw"
|
||||||
v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal"
|
v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal"
|
||||||
:type="1"
|
:type="1"
|
||||||
:targetId="datasource.projectId"
|
:targetId="datasource.projectId"
|
||||||
:courseId="datasource.courseId"
|
:courseId="datasource.courseId"
|
||||||
:taskId="datasource.id"
|
:taskId="datasource.id"
|
||||||
:chapterId="datasource.stageId" />
|
:chapterId="datasource.stageId" />
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive } from "vue";
|
import { toRefs, reactive } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import ExportAchievement from "../ExportAchievement.vue";
|
import ExportAchievement from "../ExportAchievement.vue";
|
||||||
import * as api from '../../../api/indexTaskManage';
|
import * as api from '../../../api/indexTaskManage';
|
||||||
import { batchSendMessage } from "@/api/index1";
|
import { batchSendMessage } from "@/api/index1";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "ProjectExternalExamManage",
|
name: "ProjectExternalExamManage",
|
||||||
components: {
|
components: {
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
setup(props, ctx) {
|
setup(props, ctx) {
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
name: "",
|
name: "",
|
||||||
@@ -302,7 +302,7 @@
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: "完成时间",
|
title: "完成时间",
|
||||||
dataIndex: "finishedTime",
|
dataIndex: "finishedTime",
|
||||||
@@ -332,7 +332,7 @@
|
|||||||
],
|
],
|
||||||
loadingData: true
|
loadingData: true
|
||||||
});
|
});
|
||||||
|
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
ctx.emit("update:TMvisibleExternal", false);
|
ctx.emit("update:TMvisibleExternal", false);
|
||||||
state.name = "";
|
state.name = "";
|
||||||
@@ -358,7 +358,7 @@
|
|||||||
}
|
}
|
||||||
state.selectedRowKeys = selectedRowKeys;
|
state.selectedRowKeys = selectedRowKeys;
|
||||||
};
|
};
|
||||||
|
|
||||||
//催促学员学习
|
//催促学员学习
|
||||||
const godie = () => {
|
const godie = () => {
|
||||||
//项目催促请求报文
|
//项目催促请求报文
|
||||||
@@ -386,7 +386,7 @@
|
|||||||
const clearLine = () => {
|
const clearLine = () => {
|
||||||
state.selectedRowKeys = [];
|
state.selectedRowKeys = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
// 获取数据
|
// 获取数据
|
||||||
function getData() {
|
function getData() {
|
||||||
state.loadingData = true;
|
state.loadingData = true;
|
||||||
@@ -415,24 +415,24 @@
|
|||||||
// 重置
|
// 重置
|
||||||
function reseatTableData() {
|
function reseatTableData() {
|
||||||
state.loadingData = true;
|
state.loadingData = true;
|
||||||
state.currentPage = 1;
|
state.currentPage = 1;
|
||||||
state.name = '';
|
state.name = '';
|
||||||
state.projectName = undefined;
|
state.projectName = undefined;
|
||||||
getData();
|
getData();
|
||||||
}
|
}
|
||||||
|
|
||||||
//分页
|
//分页
|
||||||
const changePaginationStu = (page) => {
|
const changePaginationStu = (page) => {
|
||||||
state.loadingData = true;
|
state.loadingData = true;
|
||||||
state.currentPage = page;
|
state.currentPage = page;
|
||||||
getData();
|
getData();
|
||||||
};
|
};
|
||||||
|
|
||||||
{/* 导出数据 */}
|
{/* 导出数据 */}
|
||||||
function exportData() {
|
function exportData() {
|
||||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/external/exam/manage/exportExternalExam?chapterId=${props.datasource.stageId}&type=${1}&targetId=${props.datasource.projectId}&taskId=${props.datasource.id}&courseId=${props.datasource.courseId}`)
|
window.open(`${process.env.VUE_APP_BASE_API}/admin/external/exam/manage/exportExternalExam?chapterId=${props.datasource.stageId}&type=${1}&targetId=${props.datasource.projectId}&taskId=${props.datasource.id}&courseId=${props.datasource.courseId}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const closeDraw = (e) => {
|
const closeDraw = (e) => {
|
||||||
console.log('我关闭了导入成绩弹框吗', e)
|
console.log('我关闭了导入成绩弹框吗', e)
|
||||||
getData();
|
getData();
|
||||||
@@ -456,7 +456,7 @@
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.ProjectExternalExamManage {
|
.ProjectExternalExamManage {
|
||||||
.drawerMain {
|
.drawerMain {
|
||||||
@@ -465,7 +465,7 @@
|
|||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
height: 73px;
|
height: 73px;
|
||||||
border-bottom: 1px solid #e8e8e8;
|
border-bottom: 1px solid #e8e8e8;
|
||||||
@@ -473,7 +473,7 @@
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|
||||||
.headerTitle {
|
.headerTitle {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -481,7 +481,7 @@
|
|||||||
line-height: 25px;
|
line-height: 25px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@@ -492,27 +492,27 @@
|
|||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
|
|
||||||
.namecon {
|
.namecon {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btns {
|
.btns {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
@@ -521,7 +521,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.img1 {
|
.img1 {
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 17px;
|
height: 17px;
|
||||||
@@ -529,7 +529,7 @@
|
|||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.img2 {
|
.img2 {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
@@ -538,26 +538,26 @@
|
|||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn1 {
|
.btn1 {
|
||||||
background: #4ea6ff;
|
background: #4ea6ff;
|
||||||
|
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn2 {
|
.btn2 {
|
||||||
background: #4ea6ff;
|
background: #4ea6ff;
|
||||||
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border: 1px solid #4ea6ff;
|
border: 1px solid #4ea6ff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnss {
|
.btnss {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 130px;
|
width: 130px;
|
||||||
@@ -566,7 +566,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.img1 {
|
.img1 {
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 17px;
|
height: 17px;
|
||||||
@@ -574,7 +574,7 @@
|
|||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.img2 {
|
.img2 {
|
||||||
width: 17px;
|
width: 17px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
@@ -583,13 +583,13 @@
|
|||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn1 {
|
.btn1 {
|
||||||
background: #4ea6ff;
|
background: #4ea6ff;
|
||||||
|
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn2 {
|
.btn2 {
|
||||||
background: #4ea6ff;
|
background: #4ea6ff;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
@@ -597,7 +597,7 @@
|
|||||||
border: 1px solid #4ea6ff;
|
border: 1px solid #4ea6ff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.line {
|
.line {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -607,41 +607,41 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
border: 1px solid #c3e6fc;
|
border: 1px solid #c3e6fc;
|
||||||
|
|
||||||
.inline {
|
.inline {
|
||||||
width: 95%;
|
width: 95%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.img {
|
.img {
|
||||||
width: 14px;
|
width: 14px;
|
||||||
height: 15px;
|
height: 15px;
|
||||||
background-image: url(../../../assets/images/leveladd/gan.png);
|
background-image: url(../../../assets/images/leveladd/gan.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
color: #999ba3;
|
color: #999ba3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text2 {
|
.text2 {
|
||||||
color: #4ea6ff;
|
color: #4ea6ff;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text3 {
|
.text3 {
|
||||||
color: #999ba3;
|
color: #999ba3;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.right {
|
.right {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -653,7 +653,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tableBox {
|
.tableBox {
|
||||||
.ant-table-selection-column {
|
.ant-table-selection-column {
|
||||||
padding: 0px !important;
|
padding: 0px !important;
|
||||||
@@ -670,21 +670,21 @@
|
|||||||
.ant-table-selection-column {
|
.ant-table-selection-column {
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
th.h {
|
th.h {
|
||||||
background-color: #eff4fc !important;
|
background-color: #eff4fc !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.head {
|
.head {
|
||||||
padding-left: 0px !important;
|
padding-left: 0px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-tbody
|
.ant-table-tbody
|
||||||
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
||||||
> td {
|
> td {
|
||||||
background: #f6f9fd;
|
background: #f6f9fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.studentopea1 {
|
.studentopea1 {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -704,7 +704,7 @@
|
|||||||
border-right: 1px solid #e9e9e9;
|
border-right: 1px solid #e9e9e9;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pa {
|
.pa {
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -713,7 +713,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnn {
|
.btnn {
|
||||||
height: 72px;
|
height: 72px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -725,7 +725,7 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||||||
|
|
||||||
.btn1 {
|
.btn1 {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -735,7 +735,7 @@
|
|||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn2 {
|
.btn2 {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
@@ -750,5 +750,5 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
:downloadUrl="downloadUrl"
|
:downloadUrl="downloadUrl"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup lang="jsx">
|
||||||
import {computed, defineEmits, ref, watch} from "vue";
|
import {computed, defineEmits, ref, watch} from "vue";
|
||||||
import * as api from "@/api/index1";
|
import * as api from "@/api/index1";
|
||||||
import BaseTable from "@/components/common/BaseTable";
|
import BaseTable from "@/components/common/BaseTable";
|
||||||
|
|||||||
@@ -158,7 +158,7 @@
|
|||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive } from "vue";
|
import { toRefs, reactive } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import CKWork from "../CheckWork.vue";
|
import CKWork from "../CheckWork.vue";
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
<div class="img1"></div>
|
<div class="img1"></div>
|
||||||
<div class="wz">催促学习</div>
|
<div class="wz">催促学习</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="btn btn2" @click="exportTaskStu" v-if="checkPer(permissions,createId)">
|
<div class="btn btn2" @click="exportTaskStu" v-if="checkPer(permissions,createId)">
|
||||||
<div class="img2"></div>
|
<div class="img2"></div>
|
||||||
<div class="wz">导出数据</div>
|
<div class="wz">导出数据</div>
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
:basicdata="datasource.info" />
|
:basicdata="datasource.info" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
// import * as api from "../../../api/index";
|
// import * as api from "../../../api/index";
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnss" style="margin-top: 20px">
|
<div class="btnss" style="margin-top: 20px">
|
||||||
|
|
||||||
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
||||||
<div class="img1"></div>
|
<div class="img1"></div>
|
||||||
<div class="wz">催促学习</div>
|
<div class="wz">催促学习</div>
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
// import * as api from "../../../api/index";
|
// import * as api from "../../../api/index";
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)">
|
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)">
|
||||||
|
|
||||||
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
||||||
<div class="img1"></div>
|
<div class="img1"></div>
|
||||||
<div class="wz">催促学习</div>
|
<div class="wz">催促学习</div>
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
:basicdata="datasource.info" />
|
:basicdata="datasource.info" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import ViewAssess from "../ViewAssess";
|
import ViewAssess from "../ViewAssess";
|
||||||
|
|||||||
@@ -112,7 +112,7 @@
|
|||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
// import * as api from "../../../api/index";
|
// import * as api from "../../../api/index";
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<div class="wz">催促考试</div>
|
<div class="wz">催促考试</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn btn2" @click="exportData">
|
<div class="btn btn2" @click="exportData">
|
||||||
<div class="img2"></div>
|
<div class="img2"></div>
|
||||||
<div class="wz">导出数据</div>
|
<div class="wz">导出数据</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn btn2" @click="showEScoreModal">
|
<div class="btn btn2" @click="showEScoreModal">
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
:scroll="{ x: 900 }"
|
:scroll="{ x: 900 }"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="pa">
|
<div class="pa">
|
||||||
<a-pagination
|
<a-pagination
|
||||||
:showSizeChanger="false"
|
:showSizeChanger="false"
|
||||||
@@ -114,25 +114,25 @@
|
|||||||
</div>-->
|
</div>-->
|
||||||
</div>
|
</div>
|
||||||
<!-- 导出成绩抽屉 -->
|
<!-- 导出成绩抽屉 -->
|
||||||
<ExportAchievement
|
<ExportAchievement
|
||||||
@closeDraw="closeDraw"
|
@closeDraw="closeDraw"
|
||||||
v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal"
|
v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal"
|
||||||
:type="2"
|
:type="2"
|
||||||
:targetId="datasource.routerId"
|
:targetId="datasource.routerId"
|
||||||
:courseId="datasource.courseId"
|
:courseId="datasource.courseId"
|
||||||
:taskId="datasource.id"
|
:taskId="datasource.id"
|
||||||
:chapterId="datasource.chapterId" />
|
:chapterId="datasource.chapterId" />
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive } from "vue";
|
import { toRefs, reactive } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import ExportAchievement from "../ExportAchievement.vue";
|
import ExportAchievement from "../ExportAchievement.vue";
|
||||||
import * as api from '../../../api/indexTaskManage';
|
import * as api from '../../../api/indexTaskManage';
|
||||||
import { batchSendMessage } from "@/api/index1";
|
import { batchSendMessage } from "@/api/index1";
|
||||||
import {checkPer} from "@/utils/utils";
|
import {checkPer} from "@/utils/utils";
|
||||||
|
|
||||||
// import * as api from "../../../api/index";
|
// import * as api from "../../../api/index";
|
||||||
export default {
|
export default {
|
||||||
name: "RouterExaminationManage",
|
name: "RouterExaminationManage",
|
||||||
@@ -175,7 +175,7 @@
|
|||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
setup(props, ctx) {
|
setup(props, ctx) {
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
name: "",
|
name: "",
|
||||||
@@ -315,7 +315,7 @@
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: "完成时间",
|
title: "完成时间",
|
||||||
dataIndex: "finishedTime",
|
dataIndex: "finishedTime",
|
||||||
@@ -345,7 +345,7 @@
|
|||||||
],
|
],
|
||||||
loadingData: true
|
loadingData: true
|
||||||
});
|
});
|
||||||
|
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
ctx.emit("update:ExaminationExaminaModelVisible", false);
|
ctx.emit("update:ExaminationExaminaModelVisible", false);
|
||||||
state.name = "";
|
state.name = "";
|
||||||
@@ -370,7 +370,7 @@
|
|||||||
}
|
}
|
||||||
state.selectedRowKeys = selectedRowKeys;
|
state.selectedRowKeys = selectedRowKeys;
|
||||||
};
|
};
|
||||||
|
|
||||||
//催促学员学习
|
//催促学员学习
|
||||||
const godie = () => {
|
const godie = () => {
|
||||||
message.destroy();
|
message.destroy();
|
||||||
@@ -403,7 +403,7 @@
|
|||||||
console.log('我关闭了导入成绩弹框吗', e)
|
console.log('我关闭了导入成绩弹框吗', e)
|
||||||
getData();
|
getData();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取数据
|
// 获取数据
|
||||||
function getData() {
|
function getData() {
|
||||||
state.loadingData = true;
|
state.loadingData = true;
|
||||||
@@ -434,19 +434,19 @@
|
|||||||
// 重置
|
// 重置
|
||||||
function reseatTableData() {
|
function reseatTableData() {
|
||||||
state.loadingData = true;
|
state.loadingData = true;
|
||||||
state.currentPage = 1;
|
state.currentPage = 1;
|
||||||
state.name = '';
|
state.name = '';
|
||||||
state.projectName = undefined;
|
state.projectName = undefined;
|
||||||
getData();
|
getData();
|
||||||
}
|
}
|
||||||
|
|
||||||
//分页
|
//分页
|
||||||
const changePaginationStu = (page) => {
|
const changePaginationStu = (page) => {
|
||||||
state.loadingData = true;
|
state.loadingData = true;
|
||||||
state.currentPage = page;
|
state.currentPage = page;
|
||||||
getData();
|
getData();
|
||||||
};
|
};
|
||||||
|
|
||||||
{/* 导出数据 */}
|
{/* 导出数据 */}
|
||||||
function exportData() {
|
function exportData() {
|
||||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/external/exam/manage/exportExternalExam?chapterId=${props.datasource.chapterId}&type=${2}&targetId=${props.datasource.routerId}&taskId=${props.datasource.id}&courseId=${props.datasource.courseId}`)
|
window.open(`${process.env.VUE_APP_BASE_API}/admin/external/exam/manage/exportExternalExam?chapterId=${props.datasource.chapterId}&type=${2}&targetId=${props.datasource.routerId}&taskId=${props.datasource.id}&courseId=${props.datasource.courseId}`)
|
||||||
@@ -470,7 +470,7 @@
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.RouterExaminationExternalManage {
|
.RouterExaminationExternalManage {
|
||||||
.drawerMain {
|
.drawerMain {
|
||||||
@@ -479,7 +479,7 @@
|
|||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
height: 73px;
|
height: 73px;
|
||||||
border-bottom: 1px solid #e8e8e8;
|
border-bottom: 1px solid #e8e8e8;
|
||||||
@@ -487,7 +487,7 @@
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|
||||||
.headerTitle {
|
.headerTitle {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -495,7 +495,7 @@
|
|||||||
line-height: 25px;
|
line-height: 25px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@@ -506,27 +506,27 @@
|
|||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
|
|
||||||
.namecon {
|
.namecon {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btns {
|
.btns {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
@@ -535,7 +535,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.img1 {
|
.img1 {
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 17px;
|
height: 17px;
|
||||||
@@ -543,7 +543,7 @@
|
|||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.img2 {
|
.img2 {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
@@ -552,26 +552,26 @@
|
|||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn1 {
|
.btn1 {
|
||||||
background: #4ea6ff;
|
background: #4ea6ff;
|
||||||
|
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn2 {
|
.btn2 {
|
||||||
background: #4ea6ff;
|
background: #4ea6ff;
|
||||||
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border: 1px solid #4ea6ff;
|
border: 1px solid #4ea6ff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnss {
|
.btnss {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 130px;
|
width: 130px;
|
||||||
@@ -580,7 +580,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.img1 {
|
.img1 {
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 17px;
|
height: 17px;
|
||||||
@@ -588,7 +588,7 @@
|
|||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.img2 {
|
.img2 {
|
||||||
width: 17px;
|
width: 17px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
@@ -597,13 +597,13 @@
|
|||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn1 {
|
.btn1 {
|
||||||
background: #4ea6ff;
|
background: #4ea6ff;
|
||||||
|
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn2 {
|
.btn2 {
|
||||||
background: #4ea6ff;
|
background: #4ea6ff;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
@@ -611,7 +611,7 @@
|
|||||||
border: 1px solid #4ea6ff;
|
border: 1px solid #4ea6ff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.line {
|
.line {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -621,41 +621,41 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
border: 1px solid #c3e6fc;
|
border: 1px solid #c3e6fc;
|
||||||
|
|
||||||
.inline {
|
.inline {
|
||||||
width: 95%;
|
width: 95%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.img {
|
.img {
|
||||||
width: 14px;
|
width: 14px;
|
||||||
height: 15px;
|
height: 15px;
|
||||||
background-image: url(../../../assets/images/leveladd/gan.png);
|
background-image: url(../../../assets/images/leveladd/gan.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
color: #999ba3;
|
color: #999ba3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text2 {
|
.text2 {
|
||||||
color: #4ea6ff;
|
color: #4ea6ff;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text3 {
|
.text3 {
|
||||||
color: #999ba3;
|
color: #999ba3;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.right {
|
.right {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -667,7 +667,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tableBox {
|
.tableBox {
|
||||||
.ant-table-selection-column {
|
.ant-table-selection-column {
|
||||||
padding: 0px !important;
|
padding: 0px !important;
|
||||||
@@ -684,21 +684,21 @@
|
|||||||
.ant-table-selection-column {
|
.ant-table-selection-column {
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
th.h {
|
th.h {
|
||||||
background-color: #eff4fc !important;
|
background-color: #eff4fc !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.head {
|
.head {
|
||||||
padding-left: 0px !important;
|
padding-left: 0px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-tbody
|
.ant-table-tbody
|
||||||
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
||||||
> td {
|
> td {
|
||||||
background: #f6f9fd;
|
background: #f6f9fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.studentopea1 {
|
.studentopea1 {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -718,7 +718,7 @@
|
|||||||
border-right: 1px solid #e9e9e9;
|
border-right: 1px solid #e9e9e9;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pa {
|
.pa {
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -727,7 +727,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnn {
|
.btnn {
|
||||||
height: 72px;
|
height: 72px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -739,7 +739,7 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||||||
|
|
||||||
.btn1 {
|
.btn1 {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -749,7 +749,7 @@
|
|||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn2 {
|
.btn2 {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
<CheckAnsware v-model:CAvisible="CAvisible" :datasource="datasource1" />
|
<CheckAnsware v-model:CAvisible="CAvisible" :datasource="datasource1" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive } from "vue";
|
import { toRefs, reactive } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import EScore from "../ExportScore.vue";
|
import EScore from "../ExportScore.vue";
|
||||||
|
|||||||
@@ -150,7 +150,7 @@
|
|||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup lang="jsx">
|
||||||
import {computed, defineEmits, ref, watch} from "vue";
|
import {computed, defineEmits, ref, watch} from "vue";
|
||||||
import * as api from "@/api/index1";
|
import * as api from "@/api/index1";
|
||||||
import BaseTable from "@/components/common/BaseTable";
|
import BaseTable from "@/components/common/BaseTable";
|
||||||
|
|||||||
@@ -101,7 +101,7 @@
|
|||||||
<ExportHomeWork v-model:exportHomeWorkV="exportHomeWorkV" :downloadUrl="downloadUrl" />
|
<ExportHomeWork v-model:exportHomeWorkV="exportHomeWorkV" :downloadUrl="downloadUrl" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive } from "vue";
|
import { toRefs, reactive } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import CKWork from "../CheckWork.vue";
|
import CKWork from "../CheckWork.vue";
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)">
|
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)">
|
||||||
|
|
||||||
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
||||||
<div class="img1"></div>
|
<div class="img1"></div>
|
||||||
<div class="wz">催促学习</div>
|
<div class="wz">催促学习</div>
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import SeeStu from "@/components/drawers/SeeStu";
|
import SeeStu from "@/components/drawers/SeeStu";
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)">
|
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)">
|
||||||
|
|
||||||
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
<div class="btn btn1" @click="godie" style="margin-right: 20px">
|
||||||
<div class="img1"></div>
|
<div class="img1"></div>
|
||||||
<div class="wz">催促学习</div>
|
<div class="wz">催促学习</div>
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="jsx">
|
||||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
// import * as api from "../../../api/index";
|
// import * as api from "../../../api/index";
|
||||||
|
|||||||
@@ -37,8 +37,8 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {defineEmits, defineProps, ref, watch, watchEffect} from "vue";
|
import {defineEmits, defineProps, ref, watch, watchEffect} from "vue";
|
||||||
import {request, useRequest} from "@/api/request";
|
import {request, useRequest,useArrayRequest} from "@/api/request";
|
||||||
import { ORG_CHILD_LIST, ORG_LIST } from "@/api/ThirdApi";
|
import { ORG_CHILD_LIST, ORG_LIST } from "@/api/apis";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
value: {
|
value: {
|
||||||
@@ -57,7 +57,7 @@ const props = defineProps({
|
|||||||
const emit = defineEmits({});
|
const emit = defineEmits({});
|
||||||
const stuTreeExpandedKeys = ref([]);
|
const stuTreeExpandedKeys = ref([]);
|
||||||
const labelValue = ref([]);
|
const labelValue = ref([]);
|
||||||
const { data: options, loading: orgLoading } = useRequest(
|
const { data: options, loading: orgLoading } = useArrayRequest(
|
||||||
ORG_LIST,
|
ORG_LIST,
|
||||||
{ keyword: "" },
|
{ keyword: "" },
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -3415,7 +3415,7 @@ export default defineComponent({
|
|||||||
console.log("开课res", res);
|
console.log("开课res", res);
|
||||||
const { rows, total, pageNo } = res.data.data;
|
const { rows, total, pageNo } = res.data.data;
|
||||||
state.tableDataTotal222 = total;
|
state.tableDataTotal222 = total;
|
||||||
state.tableDataTotal2 = total;
|
state.tableDataTotal2 = total;
|
||||||
|
|
||||||
for (let i = 0; i < rows.length; i++) {
|
for (let i = 0; i < rows.length; i++) {
|
||||||
rows[i].num = i + 1 + (state.currentPage222 - 1) * 10;
|
rows[i].num = i + 1 + (state.currentPage222 - 1) * 10;
|
||||||
|
|||||||
@@ -1810,7 +1810,7 @@
|
|||||||
@focus="focus"
|
@focus="focus"
|
||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
>
|
>
|
||||||
|
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
<div class="bm_input">
|
<div class="bm_input">
|
||||||
|
|||||||
Reference in New Issue
Block a user