mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-13 04:46:46 +08:00
Merge branch 'develop' of http://gitlab.dongwu-inc.com:10080/BOE/fe-manage into develop
This commit is contained in:
15
src/App.vue
15
src/App.vue
@@ -113,20 +113,7 @@ export default defineComponent({
|
|||||||
.then((res) => res.data.data.rows);
|
.then((res) => res.data.data.rows);
|
||||||
//获取组织树
|
//获取组织树
|
||||||
const getOrgTree = () => {
|
const getOrgTree = () => {
|
||||||
const orgtreeList = localStorage.getItem("orgtreeList");
|
api.getOrgTreeInfo().then((res) => {
|
||||||
if (orgtreeList) {
|
|
||||||
store.commit("getOrgtreeList", JSON.parse(orgtreeList));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
api
|
|
||||||
.getOrgInfo({
|
|
||||||
keyWord: "",
|
|
||||||
id: -1,
|
|
||||||
pageNo: 1,
|
|
||||||
pageSize: 20,
|
|
||||||
})
|
|
||||||
.then((res) => {
|
|
||||||
localStorage.setItem("orgtreeList", JSON.stringify(res.data.data));
|
|
||||||
store.commit("getOrgtreeList", res.data.data);
|
store.commit("getOrgtreeList", res.data.data);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import router from "@/router";
|
|||||||
|
|
||||||
// axios.defaults.headers.post["Content-Type"] =
|
// axios.defaults.headers.post["Content-Type"] =
|
||||||
// "application/x-www-form-urlencoded";
|
// "application/x-www-form-urlencoded";
|
||||||
|
export const FILE_UPLOAD_URL = process.env.VUE_APP_BASE_API + '/file/upload'
|
||||||
axios.defaults.withCredentials = true;
|
axios.defaults.withCredentials = true;
|
||||||
const http = axios.create({
|
const http = axios.create({
|
||||||
baseURL: process.env.VUE_APP_BASE_API,
|
baseURL: process.env.VUE_APP_BASE_API,
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ export const searchUsersByOrgId = (obj) => http.post('/admin/router/searchUsersB
|
|||||||
|
|
||||||
//获取组织信息(修改版)
|
//获取组织信息(修改版)
|
||||||
export const getOrgInfo = (obj) => http.post('/admin/orgStruct/getOrgInfo', obj)
|
export const getOrgInfo = (obj) => http.post('/admin/orgStruct/getOrgInfo', obj)
|
||||||
|
export const getOrgTreeInfo = (obj) => http.get('/org/initOrg', {params: obj})
|
||||||
//获取员工(修改版)
|
//获取员工(修改版)
|
||||||
export const getMemberInfo = (obj) => http.post('/admin/orgStruct/getMemberInfo', obj)
|
export const getMemberInfo = (obj) => http.post('/admin/orgStruct/getMemberInfo', obj)
|
||||||
//获取受众(修改版)
|
//获取受众(修改版)
|
||||||
@@ -131,6 +132,7 @@ export const addStudentCourse = (obj) => http.post("/admin/offcourse/addStudent"
|
|||||||
// 获取组织结构树
|
// 获取组织结构树
|
||||||
export const orgtree = () => http.get("/org/tree");
|
export const orgtree = () => http.get("/org/tree");
|
||||||
export const saveStu = obj => http.post("/admin/student/addStudent", obj);
|
export const saveStu = obj => http.post("/admin/student/addStudent", obj);
|
||||||
|
export const moveStudent = obj => http.post("/admin/student/moveStudent", obj);
|
||||||
export const getStuPage = obj => http.get("/admin/student/getStudent", {params: obj});
|
export const getStuPage = obj => http.get("/admin/student/getStudent", {params: obj});
|
||||||
export const delStudentList = obj => http.post("/admin/student/delStudent", obj);
|
export const delStudentList = obj => http.post("/admin/student/delStudent", obj);
|
||||||
export const validateName = obj => http.post("/admin/validate/validateName", obj);
|
export const validateName = obj => http.post("/admin/validate/validateName", obj);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-upload
|
<a-upload
|
||||||
:file-list="files"
|
:file-list="files"
|
||||||
action="/manageApi/file/upload"
|
:action="FILE_UPLOAD_URL"
|
||||||
:show-upload-list="showUploadList"
|
:show-upload-list="showUploadList"
|
||||||
:multiple="multiple"
|
:multiple="multiple"
|
||||||
:before-upload="beforeUpload"
|
:before-upload="beforeUpload"
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import {defineProps, defineEmits, defineExpose, ref, watch} from "vue";
|
import {defineProps, defineEmits, defineExpose, ref, watch} from "vue";
|
||||||
import {message} from "ant-design-vue";
|
import {message} from "ant-design-vue";
|
||||||
|
import {FILE_UPLOAD_URL} from "@/api/config";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
value: {
|
value: {
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
show-time
|
:show-time="{ format: 'HH:mm' }"
|
||||||
format="YYYY-MM-DD HH:mm"
|
format="YYYY-MM-DD HH:mm"
|
||||||
style="width: 400px; height: 40px; border-radius: 8px;"
|
style="width: 400px; height: 40px; border-radius: 8px;"
|
||||||
v-model:value="time"
|
v-model:value="time"
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
show-time
|
:show-time="{ format: 'HH:mm' }"
|
||||||
style="width: 400px; height: 40px; border-radius: 8px;" v-model:value="time" format="YYYY-MM-DD HH:mm"
|
style="width: 400px; height: 40px; border-radius: 8px;" v-model:value="time" format="YYYY-MM-DD HH:mm"
|
||||||
:placeholder="[' 开始时间', ' 结束时间']" />
|
:placeholder="[' 开始时间', ' 结束时间']" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -102,7 +102,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="select" >
|
<div class="select" >
|
||||||
<a-range-picker style="width: 400px;"
|
<a-range-picker style="width: 400px;"
|
||||||
show-time
|
:show-time="{ format: 'HH:mm' }"
|
||||||
format="YYYY/MM/DD HH:mm"
|
format="YYYY/MM/DD HH:mm"
|
||||||
v-model:value="chooseTime"
|
v-model:value="chooseTime"
|
||||||
:placeholder="[' 开始时间', ' 结束时间']"
|
:placeholder="[' 开始时间', ' 结束时间']"
|
||||||
@@ -354,7 +354,7 @@
|
|||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-upload
|
<a-upload
|
||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
action="/manageApi/file/upload"
|
:action="FILE_UPLOAD_URL"
|
||||||
v-model:file-list="fileList"
|
v-model:file-list="fileList"
|
||||||
>
|
>
|
||||||
<button class="xkbtn">上传附件</button>
|
<button class="xkbtn">上传附件</button>
|
||||||
@@ -392,6 +392,7 @@ import { detail } from "../../api/indexCourse";
|
|||||||
import { queryAppraiseDetailById } from "../../api/indexInvist";
|
import { queryAppraiseDetailById } from "../../api/indexInvist";
|
||||||
import { queryWorkDetailById } from "@/api/indexWork";
|
import { queryWorkDetailById } from "@/api/indexWork";
|
||||||
import { queryExaminationDetailById } from "@/api/indexExam";
|
import { queryExaminationDetailById } from "@/api/indexExam";
|
||||||
|
import {FILE_UPLOAD_URL} from "@/api/config";
|
||||||
export default {
|
export default {
|
||||||
name: "AddFaceteach",
|
name: "AddFaceteach",
|
||||||
components: {
|
components: {
|
||||||
@@ -841,6 +842,7 @@ export default {
|
|||||||
};
|
};
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
|
FILE_UPLOAD_URL,
|
||||||
showDrawerSelFacet,
|
showDrawerSelFacet,
|
||||||
showDrawerAddHomework,
|
showDrawerAddHomework,
|
||||||
showDrawerAddTest,
|
showDrawerAddTest,
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
<span style="margin-right: 3px">附件:</span>
|
<span style="margin-right: 3px">附件:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-upload v-model:file-list="fileList" name="file" action="/manageApi/file/upload"
|
<a-upload v-model:file-list="fileList" name="file" :action="FILE_UPLOAD_URL"
|
||||||
@change="handleChange">
|
@change="handleChange">
|
||||||
<button class="xkbtn" type="button">上传附件</button>
|
<button class="xkbtn" type="button">上传附件</button>
|
||||||
</a-upload>
|
</a-upload>
|
||||||
@@ -82,6 +82,7 @@ import {
|
|||||||
import { ProjectEditTask, RouterEditTask } from "@/api/indexTask";
|
import { ProjectEditTask, RouterEditTask } from "@/api/indexTask";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import { addTempTask } from "../../api/indexTaskadd";
|
import { addTempTask } from "../../api/indexTaskadd";
|
||||||
|
import {FILE_UPLOAD_URL} from "@/api/config";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "AddHomework",
|
name: "AddHomework",
|
||||||
@@ -513,6 +514,7 @@ export default {
|
|||||||
disabledDate,
|
disabledDate,
|
||||||
disabledDateTime,
|
disabledDateTime,
|
||||||
afterVisibleChange,
|
afterVisibleChange,
|
||||||
|
FILE_UPLOAD_URL,
|
||||||
closeDrawer,
|
closeDrawer,
|
||||||
closeDrawer2,
|
closeDrawer2,
|
||||||
handleChange,
|
handleChange,
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
show-time
|
:show-time="{ format: 'HH:mm' }"
|
||||||
style="width: 400px; height: 40px; border-radius: 8px"
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
v-model:value="time"
|
v-model:value="time"
|
||||||
format="YYYY/MM/DD HH:mm"
|
format="YYYY/MM/DD HH:mm"
|
||||||
|
|||||||
@@ -130,6 +130,26 @@
|
|||||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="main_item">
|
||||||
|
<div class="signbox">
|
||||||
|
<div class="sign">
|
||||||
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span style="margin-right: 3px">及格线:</span>
|
||||||
|
</div>
|
||||||
|
<div class="btnbox">
|
||||||
|
<a-input
|
||||||
|
v-model:value="test.passLine"
|
||||||
|
type="number"
|
||||||
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<span style="color: #999999; margin-left: 8px">分</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="main_item2">
|
<div class="main_item2">
|
||||||
<div class="signbox">
|
<div class="signbox">
|
||||||
<span style="margin-right: 3px">考试说明:</span>
|
<span style="margin-right: 3px">考试说明:</span>
|
||||||
@@ -147,7 +167,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="main_item2">
|
<div class="main_item2">
|
||||||
<div class="signbox">
|
<div class="signbox">
|
||||||
<span style="margin-right: 3px">考试限制:</span>
|
<span style="margin-right: 3px;margin-top: 10px;">考试限制:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="kqszbox">
|
<div class="kqszbox">
|
||||||
<div class="setbox">
|
<div class="setbox">
|
||||||
@@ -227,27 +247,8 @@
|
|||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="main_item">
|
|
||||||
<div class="signbox">
|
|
||||||
<div class="sign">
|
|
||||||
<img
|
|
||||||
src="@/assets/images/coursewareManage/asterisk.png"
|
|
||||||
alt=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<span style="margin-right: 3px">及格线:</span>
|
|
||||||
</div>
|
|
||||||
<div class="btnbox">
|
|
||||||
<a-input
|
|
||||||
v-model:value="test.passLine"
|
|
||||||
type="number"
|
|
||||||
style="width: 400px; height: 40px; border-radius: 8px"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<span style="color: #999999; margin-left: 8px">分</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="main_item">
|
|
||||||
<div class="main_item">
|
<div class="main_item">
|
||||||
<div class="signbox">
|
<div class="signbox">
|
||||||
<span style="margin-right: 3px">试题排列:</span>
|
<span style="margin-right: 3px">试题排列:</span>
|
||||||
@@ -284,7 +285,7 @@
|
|||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="main_item" style="height: 20px;"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="main_btns">
|
<div class="main_btns">
|
||||||
@@ -811,8 +812,7 @@ export default {
|
|||||||
.setbox {
|
.setbox {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
margin-top: 10px;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
|
|
||||||
.timerbox {
|
.timerbox {
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
|
|||||||
@@ -86,45 +86,23 @@ function validateProName() {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.in {
|
|
||||||
.pro {
|
.pro {
|
||||||
.ant-input-affix-wrapper {
|
.ant-input-affix-wrapper {
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
width: 99%;
|
|
||||||
min-width: 0;
|
|
||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
color: rgba(0, 0, 0, 0.85);
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 1.5715;
|
|
||||||
background-color: #fff;
|
|
||||||
background-image: none;
|
|
||||||
border: 1px solid #d9d9d9;
|
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
transition: all 0.3s;
|
|
||||||
display: inline-flex;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.road {
|
||||||
|
.ant-input-affix-wrapper {
|
||||||
|
padding: 0px 8px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.in {
|
|
||||||
.ant-input-affix-wrapper {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
width: 99%;
|
|
||||||
min-width: 0;
|
|
||||||
padding: 0px 8px;
|
|
||||||
color: rgba(0, 0, 0, 0.85);
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 1.5715;
|
|
||||||
background-color: #fff;
|
|
||||||
background-image: none;
|
|
||||||
border: 1px solid #d9d9d9;
|
|
||||||
border-radius: 8px;
|
|
||||||
transition: all 0.3s;
|
|
||||||
display: inline-flex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.b_input,
|
.b_input,
|
||||||
.i1_input {
|
.i1_input {
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
* @Author: lixg lixg@dongwu-inc.com
|
* @Author: lixg lixg@dongwu-inc.com
|
||||||
* @Date: 2022-12-20 17:00:37
|
* @Date: 2022-12-20 17:00:37
|
||||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||||
* @LastEditTime: 2022-12-21 17:54:18
|
* @LastEditTime: 2022-12-20 17:59:40
|
||||||
* @FilePath: /fe-manage/src/components/student/ChangeLevelModal.vue
|
* @FilePath: /fe-manage/src/components/student/ChangeLevelModal.vue
|
||||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<a-modal
|
<a-modal
|
||||||
style="padding: 0"
|
style="padding: 0"
|
||||||
:closable="sh"
|
:closable="true"
|
||||||
:visible="visiblene"
|
:visible="visiblene"
|
||||||
:footer="null"
|
:footer="null"
|
||||||
centered="true"
|
centered="true"
|
||||||
@@ -28,13 +28,11 @@
|
|||||||
<!-- <div class="cur">当前关卡:关卡2</div> -->
|
<!-- <div class="cur">当前关卡:关卡2</div> -->
|
||||||
<div class="select">
|
<div class="select">
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="chapterSelect"
|
v-model:value="selectStage"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
placeholder="请选择关卡"
|
placeholder="请选择关卡"
|
||||||
:options="chapterList"
|
:options="option"
|
||||||
@change="changeChapter"
|
|
||||||
allowClear
|
allowClear
|
||||||
showSearch
|
|
||||||
></a-select>
|
></a-select>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn">
|
<div class="btn">
|
||||||
@@ -58,63 +56,47 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script setup>
|
||||||
import { reactive, toRefs, onMounted } from "vue";
|
import {computed, defineEmits, defineProps, ref} from "vue";
|
||||||
|
import {moveStudent} from "@/api/index1";
|
||||||
import {message} from "ant-design-vue";
|
import {message} from "ant-design-vue";
|
||||||
import { GetRouterDetail } from "../../api/indexTask";
|
|
||||||
export default {
|
const props = defineProps({
|
||||||
name: "ChangeLevelModal",
|
|
||||||
props: {
|
|
||||||
visiblene: {
|
visiblene: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
id: String,
|
stage: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
ids: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
},
|
},
|
||||||
setup(props, ctx) {
|
|
||||||
const state = reactive({
|
|
||||||
chapterList: [],
|
|
||||||
chapterSelect: null, //选择的关卡
|
|
||||||
chapterSelectId: null, //选择关卡的id
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const option = computed(() => {
|
||||||
|
return props.stage.map(e => ({label: e.name, value: e.id}))
|
||||||
|
})
|
||||||
|
|
||||||
|
const selectStage = ref()
|
||||||
|
|
||||||
|
const emit = defineEmits({})
|
||||||
|
|
||||||
const closeChangeModal = () => {
|
const closeChangeModal = () => {
|
||||||
ctx.emit("update:visiblene", false);
|
emit("update:visiblene", false);
|
||||||
state.chapterSelect = null; //选择的关卡
|
|
||||||
state.chapterSelectId = null; //选择关卡的id
|
|
||||||
};
|
};
|
||||||
const changelevel = () => {
|
const changelevel = () => {
|
||||||
console.log("点击调整关卡");
|
if(!selectStage.value){
|
||||||
|
message.error("请选择关卡")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
emit("update:visiblene", false);
|
||||||
|
emit('finash', false)
|
||||||
|
moveStudent({targetId: selectStage.value, ids: props.ids}).then(()=>{
|
||||||
|
emit('finash', true)
|
||||||
|
})
|
||||||
};
|
};
|
||||||
//获取关卡列表
|
//获取关卡列表
|
||||||
const getDetail = () => {
|
|
||||||
console.log("props.id", props.id);
|
|
||||||
GetRouterDetail(props.id)
|
|
||||||
.then((res) => {
|
|
||||||
//给level赋初始值
|
|
||||||
state.chapterList = res.data.data.chapterList;
|
|
||||||
//增加两个字段
|
|
||||||
state.chapterList.forEach((item) => {
|
|
||||||
item["value"] = item.chapterId;
|
|
||||||
item["label"] = item.name;
|
|
||||||
});
|
|
||||||
console.log("路径图详情", res);
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
message.error(err);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
const changeChapter = (e, v) => {
|
|
||||||
console.log("eeeeeeeeeee", e, v);
|
|
||||||
};
|
|
||||||
onMounted(() => {
|
|
||||||
getDetail();
|
|
||||||
});
|
|
||||||
return {
|
|
||||||
...toRefs(state),
|
|
||||||
closeChangeModal,
|
|
||||||
changelevel,
|
|
||||||
changeChapter,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -63,13 +63,12 @@
|
|||||||
批量删除
|
批量删除
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
<!--
|
<a-col :span="1.5" v-if="type === 2">
|
||||||
<a-col :span="1.5" v-if="type == 2">
|
|
||||||
<a-button class="cus-btn white" @click="showChangeModal">
|
<a-button class="cus-btn white" @click="showChangeModal">
|
||||||
<template #icon></template>
|
<template #icon></template>
|
||||||
批量调整关卡
|
批量调整关卡
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-col>-->
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<div style="margin-top: 20px">
|
<div style="margin-top: 20px">
|
||||||
<a-table
|
<a-table
|
||||||
@@ -81,45 +80,12 @@
|
|||||||
:row-selection="stuRowSelection"
|
:row-selection="stuRowSelection"
|
||||||
>
|
>
|
||||||
<template #action="{ record }">
|
<template #action="{ record }">
|
||||||
<div style="display: flex; justify-content: center">
|
|
||||||
<!-- <div v-if="type == 2"
|
|
||||||
@click="del(record.id)"
|
|
||||||
style="
|
|
||||||
color: #4ea6ff;
|
|
||||||
font-size: 14px;
|
|
||||||
text-align: center;
|
|
||||||
margin-left: 20px;
|
|
||||||
cursor: pointer;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
查看
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
@click="showChangeModal"
|
|
||||||
style="
|
|
||||||
color: #4ea6ff;
|
|
||||||
font-size: 14px;
|
|
||||||
text-align: center;
|
|
||||||
margin-left: 20px;
|
|
||||||
cursor: pointer;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
调整
|
|
||||||
</div> -->
|
|
||||||
<div
|
<div
|
||||||
@click="del(record.id)"
|
@click="del(record.id)"
|
||||||
style="
|
style="color: #4ea6ff; font-size: 14px; text-align: center;margin-left: 20px;cursor: pointer;"
|
||||||
color: #4ea6ff;
|
|
||||||
font-size: 14px;
|
|
||||||
text-align: center;
|
|
||||||
margin-left: 20px;
|
|
||||||
cursor: pointer;
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
删除
|
删除
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<!-- <a-row gutter="12">
|
<!-- <a-row gutter="12">
|
||||||
<a-col>
|
<a-col>
|
||||||
<slot name="extension" v-bind:data="{ record }"></slot>
|
<slot name="extension" v-bind:data="{ record }"></slot>
|
||||||
@@ -143,7 +109,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 批量调整关卡弹窗 -->
|
<!-- 批量调整关卡弹窗 -->
|
||||||
<ChangeLevelModal v-model:visiblene="visiblene" :id="id" />
|
<ChangeLevelModal v-model:visiblene="visiblene" :stage="stage" :ids="stuSelectKeys" @finash="submitCall"/>
|
||||||
<!-- 批量调整关卡弹窗 -->
|
<!-- 批量调整关卡弹窗 -->
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
@@ -269,11 +235,12 @@ function getStuList() {
|
|||||||
|
|
||||||
function reset() {
|
function reset() {
|
||||||
tableParam.value.studentName="";
|
tableParam.value.studentName="";
|
||||||
|
getStuList();
|
||||||
}
|
}
|
||||||
|
|
||||||
function bathDel() {
|
function bathDel() {
|
||||||
if( stuSelectKeys.value &&
|
if( stuSelectKeys.value &&
|
||||||
stuSelectKeys.value.length == 0){
|
stuSelectKeys.value.length === 0){
|
||||||
message.destroy();
|
message.destroy();
|
||||||
return message.warning("请先选中学员");
|
return message.warning("请先选中学员");
|
||||||
}
|
}
|
||||||
@@ -302,9 +269,13 @@ function submitCall(flag) {
|
|||||||
|
|
||||||
// 调整关卡;
|
// 调整关卡;
|
||||||
const visiblene = ref(false);
|
const visiblene = ref(false);
|
||||||
//const showChangeModal = () => {
|
const showChangeModal = () => {
|
||||||
// visiblene.value = true;
|
if(!stuSelectKeys.value.length){
|
||||||
//};
|
message.error("请选择学员")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
visiblene.value = true;
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.studentopea1 {
|
.studentopea1 {
|
||||||
@@ -339,5 +310,4 @@ const visiblene = ref(false);
|
|||||||
height: 40px;
|
height: 40px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="select" >
|
<div class="select" >
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
show-time
|
:show-time="{ format: 'HH:mm' }"
|
||||||
format="YYYY-MM-DD HH:mm"
|
format="YYYY-MM-DD HH:mm"
|
||||||
style="width: 424px"
|
style="width: 424px"
|
||||||
v-model:value="time"
|
v-model:value="time"
|
||||||
|
|||||||
@@ -3281,11 +3281,11 @@ const columns7 = [
|
|||||||
key: "5",
|
key: "5",
|
||||||
align: "center",
|
align: "center",
|
||||||
customRender: ({ record }) => {
|
customRender: ({ record }) => {
|
||||||
switch (String(record.source)) {
|
switch (String(record.status)) {
|
||||||
case "0":
|
case "0":
|
||||||
return "待审核";
|
|
||||||
case "1":
|
|
||||||
return "审核通过";
|
return "审核通过";
|
||||||
|
case "1":
|
||||||
|
return "待审核";
|
||||||
case "2":
|
case "2":
|
||||||
return "审核拒绝";
|
return "审核拒绝";
|
||||||
}
|
}
|
||||||
@@ -3403,11 +3403,11 @@ export default defineComponent({
|
|||||||
key: "5",
|
key: "5",
|
||||||
align: "center",
|
align: "center",
|
||||||
customRender: ({ record }) => {
|
customRender: ({ record }) => {
|
||||||
switch (String(record.source)) {
|
switch (String(record.status)) {
|
||||||
case "0":
|
case "0":
|
||||||
return "待审核";
|
|
||||||
case "1":
|
|
||||||
return "审核通过";
|
return "审核通过";
|
||||||
|
case "1":
|
||||||
|
return "待审核";
|
||||||
case "2":
|
case "2":
|
||||||
return "审核拒绝";
|
return "审核拒绝";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -150,7 +150,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="inname">路径图名称</div>
|
<div class="inname">路径图名称</div>
|
||||||
<div class="in">
|
<div class="in road">
|
||||||
<!-- <a-input-->
|
<!-- <a-input-->
|
||||||
<!-- v-model:value="pathName"-->
|
<!-- v-model:value="pathName"-->
|
||||||
<!-- maxlength="20"-->
|
<!-- maxlength="20"-->
|
||||||
|
|||||||
@@ -425,19 +425,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="progress">
|
<div class="progress">
|
||||||
<div class="progresstext">
|
<div class="progresstext">
|
||||||
{{ item.complete ? item.complete : 0 }}/{{
|
{{ item.finishStuNum }}/{{
|
||||||
item.total ? item.total : 0
|
item.totalStuNum
|
||||||
}}人
|
}}人
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<a-progress
|
<a-progress
|
||||||
:showInfo="false"
|
:showInfo="false"
|
||||||
:percent="item.percent"
|
:percent="parseInt(item.finishStuNum / item.totalStuNum * 100)"
|
||||||
strokeColor="#FFC067"
|
strokeColor="#FFC067"
|
||||||
trailColor="rgba(253, 209, 98, 0.2)"
|
trailColor="rgba(253, 209, 98, 0.2)"
|
||||||
/>
|
/>
|
||||||
<span class="progresstext" style="margin-left: 10px"
|
<span class="progresstext" style="margin-left: 10px"
|
||||||
>{{ item.percent ? item.percent : 0 }}%</span
|
>{{ parseInt(item.finishStuNum / item.totalStuNum * 100) }}%</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -99,8 +99,8 @@
|
|||||||
|
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
show-time
|
|
||||||
separator="至"
|
separator="至"
|
||||||
|
:show-time="{ format: 'HH:mm' }"
|
||||||
:placeholder="[' 开始时间', ' 结束时间']"
|
:placeholder="[' 开始时间', ' 结束时间']"
|
||||||
v-model:value="projectInfo.rangeTime"
|
v-model:value="projectInfo.rangeTime"
|
||||||
style="width: 100%; height: 40px; border-radius: 5px"
|
style="width: 100%; height: 40px; border-radius: 5px"
|
||||||
@@ -503,13 +503,8 @@ export default {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function managerChange(e, l, d, t) {
|
function managerChange(e, l, d, t) {
|
||||||
if (routers.query.parentId) {
|
state.projectInfo.sourceBelongId = d
|
||||||
return;
|
state.projectInfo.sourceBelongName = t
|
||||||
}
|
|
||||||
!state.projectInfo.sourceBelongId &&
|
|
||||||
(state.projectInfo.sourceBelongId = d);
|
|
||||||
!state.projectInfo.sourceBelongName &&
|
|
||||||
(state.projectInfo.sourceBelongName = t);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="select">
|
<div class="select">
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="searchParam.status"
|
v-model:value="searchParam.searchStatus"
|
||||||
style="width: 270px"
|
style="width: 270px"
|
||||||
placeholder="请选择状态"
|
placeholder="请选择状态"
|
||||||
:options="sProjectStateList"
|
:options="sProjectStateList"
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
<div class="select addTimeBox">
|
<div class="select addTimeBox">
|
||||||
<div class="addTime">创建时间:</div>
|
<div class="addTime">创建时间:</div>
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
show-time
|
:show-time="{ format: 'HH:mm' }"
|
||||||
v-model:value="searchParam.valueDate"
|
v-model:value="searchParam.valueDate"
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
style="border-radius: 8px; height: 40px; margin-left: 5px"
|
style="border-radius: 8px; height: 40px; margin-left: 5px"
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
<a-table
|
<a-table
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:data-source="tableData"
|
:data-source="tableData"
|
||||||
:loading="tableDataTotal === -1 ? true : false"
|
:loading="tableLoading"
|
||||||
:scroll="{ x: 700 }"
|
:scroll="{ x: 700 }"
|
||||||
@expand="expandTable"
|
@expand="expandTable"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
@@ -845,6 +845,7 @@ export default {
|
|||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
|
tableLoading:false,
|
||||||
projectName: null,
|
projectName: null,
|
||||||
selectTime: null,
|
selectTime: null,
|
||||||
sonproject: false,
|
sonproject: false,
|
||||||
@@ -918,11 +919,8 @@ export default {
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const sProjectStateList = ref([
|
const sProjectStateList = ref([
|
||||||
{value: 0, label: "草稿"},
|
{value: 0, label: "草稿"},
|
||||||
{ value: 1, label: "审核中" },
|
{value: 1, label: "进行中"},
|
||||||
{ value: 2, label: "审核通过" },
|
{value: 2, label: "已结束"},
|
||||||
{ value: 3, label: "已发布" },
|
|
||||||
{ value: -5, label: "未通过" },
|
|
||||||
{ value: -1, label: "已结束" },
|
|
||||||
]);
|
]);
|
||||||
const searchReset = () => {
|
const searchReset = () => {
|
||||||
state.searchParam = {pageNo: 1, pageSize: 10};
|
state.searchParam = {pageNo: 1, pageSize: 10};
|
||||||
@@ -1345,12 +1343,7 @@ export default {
|
|||||||
0: () => "草稿",
|
0: () => "草稿",
|
||||||
1: () => "草稿",
|
1: () => "草稿",
|
||||||
2: () => "草稿",
|
2: () => "草稿",
|
||||||
3: () =>
|
3: () => "进行中",
|
||||||
dayjs().isBefore(value.record.beginTime)
|
|
||||||
? "未开始"
|
|
||||||
: "进行中",
|
|
||||||
4: () =>
|
|
||||||
dayjs().isBefore(value.record.end) ? "进行中" : "已结束",
|
|
||||||
"-1": () => "已结束",
|
"-1": () => "已结束",
|
||||||
"-5": () => "草稿",
|
"-5": () => "草稿",
|
||||||
}[value.record.status + ""]() || ""
|
}[value.record.status + ""]() || ""
|
||||||
@@ -1679,9 +1672,9 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
const getTableDate = () =>
|
const getTableDate = () =>{
|
||||||
api
|
state.tableLoading = true
|
||||||
.getProjectList({
|
api.getProjectList({
|
||||||
...state.searchParam,
|
...state.searchParam,
|
||||||
beginTime:
|
beginTime:
|
||||||
state.searchParam.valueDate &&
|
state.searchParam.valueDate &&
|
||||||
@@ -1698,12 +1691,15 @@ export default {
|
|||||||
.then((res) => {
|
.then((res) => {
|
||||||
// console.log("搜索", res, state.searchParam);
|
// console.log("搜索", res, state.searchParam);
|
||||||
state.tableDataTotal = Number(res.data.data.total);
|
state.tableDataTotal = Number(res.data.data.total);
|
||||||
|
state.tableLoading = false
|
||||||
const data = res.data.data.rows;
|
const data = res.data.data.rows;
|
||||||
initDataSublist("", data);
|
initDataSublist("", data);
|
||||||
console.log(data);
|
console.log(data);
|
||||||
tableData.value = data;
|
tableData.value = data;
|
||||||
console.log("tableData", tableData);
|
console.log("tableData", tableData);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function initDataSublist(parentName, data) {
|
function initDataSublist(parentName, data) {
|
||||||
if (data && data.length) {
|
if (data && data.length) {
|
||||||
@@ -1804,14 +1800,8 @@ export default {
|
|||||||
);
|
);
|
||||||
|
|
||||||
function managerChange(e, l, d, t) {
|
function managerChange(e, l, d, t) {
|
||||||
if (state.projectInfo.parentId) {
|
state.projectInfo.sourceBelongId = d
|
||||||
return;
|
state.projectInfo.sourceBelongName = t
|
||||||
}
|
|
||||||
|
|
||||||
!state.projectInfo.sourceBelongId &&
|
|
||||||
(state.projectInfo.sourceBelongId = d);
|
|
||||||
!state.projectInfo.sourceBelongName &&
|
|
||||||
(state.projectInfo.sourceBelongName = t);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
|
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
show-time
|
:show-time="{ format: 'HH:mm' }"
|
||||||
separator="至"
|
separator="至"
|
||||||
:placeholder="[' 开始时间', ' 结束时间']"
|
:placeholder="[' 开始时间', ' 结束时间']"
|
||||||
v-model:value="projectInfo.rangeTime"
|
v-model:value="projectInfo.rangeTime"
|
||||||
@@ -387,10 +387,8 @@ export default {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function managerChange(e, l, d, t) {
|
function managerChange(e, l, d, t) {
|
||||||
!state.projectInfo.sourceBelongId &&
|
state.projectInfo.sourceBelongId = d
|
||||||
(state.projectInfo.sourceBelongId = d);
|
state.projectInfo.sourceBelongName = t
|
||||||
!state.projectInfo.sourceBelongName &&
|
|
||||||
(state.projectInfo.sourceBelongName = t);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<div class="tagname">问答题</div>
|
<div class="tagname">问答题</div>
|
||||||
<div class="deleteop" @click="handleTypesDel(3)">
|
<div class="deleteop" @click="handleTypesDel(3)">
|
||||||
<div><img src="../../../assets/images/projectadd/delete.png" /></div>
|
<div><img src="../../../assets/images/projectadd/delete.png" /></div>
|
||||||
<div class="del_text">删除选项</div>
|
<div class="del_text">删除题目</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="delete" @click="handleDel">删除</div>
|
<div class="delete" @click="handleDel">删除</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!--
|
||||||
<div class="name uploadContent">
|
<div class="name uploadContent">
|
||||||
<a-upload
|
<a-upload
|
||||||
v-show="!curItem.imgVal"
|
v-show="!curItem.imgVal"
|
||||||
@@ -43,6 +44,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
-->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<div class="tagname">多选题</div>
|
<div class="tagname">多选题</div>
|
||||||
<div class="deleteop" @click="handleTypesDel(2)">
|
<div class="deleteop" @click="handleTypesDel(2)">
|
||||||
<div><img src="../../../assets/images/projectadd/delete.png" /></div>
|
<div><img src="../../../assets/images/projectadd/delete.png" /></div>
|
||||||
<div class="del_text">删除选项</div>
|
<div class="del_text">删除题目</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<div class="tagname">评分题</div>
|
<div class="tagname">评分题</div>
|
||||||
<div class="deleteop" @click="handleTypesDel(4)">
|
<div class="deleteop" @click="handleTypesDel(4)">
|
||||||
<div><img src="../../../assets/images/projectadd/delete.png" /></div>
|
<div><img src="../../../assets/images/projectadd/delete.png" /></div>
|
||||||
<div class="del_text">删除选项</div>
|
<div class="del_text">删除题目</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<div class="tagname">单选题</div>
|
<div class="tagname">单选题</div>
|
||||||
<div class="deleteop" @click="handleTypesDel(1)">
|
<div class="deleteop" @click="handleTypesDel(1)">
|
||||||
<div><img src="../../../assets/images/projectadd/delete.png" /></div>
|
<div><img src="../../../assets/images/projectadd/delete.png" /></div>
|
||||||
<div class="del_text">删除选项</div>
|
<div class="del_text">删除题目</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
* @Author: lixg lixg@dongwu-inc.com
|
* @Author: lixg lixg@dongwu-inc.com
|
||||||
* @Date: 2022-11-21 14:32:52
|
* @Date: 2022-11-21 14:32:52
|
||||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||||
* @LastEditTime: 2022-11-21 15:15:30
|
* @LastEditTime: 2022-12-14 17:38:38
|
||||||
* @FilePath: /fe-manage/vue.config.js
|
* @FilePath: /fe-manage/vue.config.js
|
||||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
*/
|
*/
|
||||||
const { defineConfig } = require("@vue/cli-service");
|
const { defineConfig } = require("@vue/cli-service");
|
||||||
|
|
||||||
module.exports = defineConfig({
|
module.exports = defineConfig({
|
||||||
publicPath: "/manage",
|
publicPath: "/manage-release",
|
||||||
// transpileDependencies: true,
|
// transpileDependencies: true,
|
||||||
devServer: {
|
devServer: {
|
||||||
port: 8080,
|
port: 8080,
|
||||||
|
|||||||
Reference in New Issue
Block a user