feat:合并

This commit is contained in:
岳佳鑫
2022-11-03 17:48:39 +08:00
57 changed files with 3495 additions and 3981 deletions

43
package-lock.json generated
View File

@@ -14,8 +14,10 @@
"element-plus": "^2.2.17",
"jquery": "^3.6.1",
"qs": "^6.11.0",
"sortablejs": "^1.15.0",
"vue": "^3.2.13",
"vue-router": "^4.0.3",
"vuedraggable": "^4.1.0",
"vuex": "^4.0.0"
},
"devDependencies": {
@@ -9658,6 +9660,11 @@
"websocket-driver": "^0.7.4"
}
},
"node_modules/sortablejs": {
"version": "1.15.0",
"resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz",
"integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w=="
},
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
@@ -10601,6 +10608,22 @@
"node": ">=0.10.0"
}
},
"node_modules/vuedraggable": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz",
"integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==",
"dependencies": {
"sortablejs": "1.14.0"
},
"peerDependencies": {
"vue": "^3.0.1"
}
},
"node_modules/vuedraggable/node_modules/sortablejs": {
"version": "1.14.0",
"resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz",
"integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w=="
},
"node_modules/vuex": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz",
@@ -18839,6 +18862,11 @@
"websocket-driver": "^0.7.4"
}
},
"sortablejs": {
"version": "1.15.0",
"resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz",
"integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w=="
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
@@ -19589,6 +19617,21 @@
}
}
},
"vuedraggable": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz",
"integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==",
"requires": {
"sortablejs": "1.14.0"
},
"dependencies": {
"sortablejs": {
"version": "1.14.0",
"resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz",
"integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w=="
}
}
},
"vuex": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz",

View File

@@ -14,8 +14,10 @@
"element-plus": "^2.2.17",
"jquery": "^3.6.1",
"qs": "^6.11.0",
"sortablejs": "^1.15.0",
"vue": "^3.2.13",
"vue-router": "^4.0.3",
"vuedraggable": "^4.1.0",
"vuex": "^4.0.0"
},
"devDependencies": {

View File

@@ -75,7 +75,7 @@ export default defineComponent({
flex: 1 1 auto;
// flex-shrink: 0;
display: flex;
overflow-y: scroll;
overflow-y: auto;
// display: flex;
// flex: 1 1 auto;
width: calc(100% - 40px);

View File

@@ -59,7 +59,8 @@ export const getRouterDetail = (routerId) => http.get('/admin/router/detail', {
routerId: routerId,
}
});
//添加学员
export const addStudent = (obj) => http.post('/admin/router/addStudent', obj);

View File

@@ -33,11 +33,7 @@ import qs from 'qs';
* axios.post(`${this.$url}/test/testRequest`,data).then()
*
*/
// , {
// header: {
// 'token': '123',
// }
// }
// 接口-请求
@@ -48,7 +44,11 @@ export const createEvaluation = (obj) => http.post('/evaluation/createEvaluation
export const fileUp = (obj) => http.post('/file/upload', obj, qs.stringify({ obj }));
//删除测评信息
export const deleteEvaluationById = (obj) => http.post('/evaluation/deleteEvaluationById', { params: obj })
export const deleteEvaluationById = (obj) => http.post('/evaluation/deleteEvaluationById', { params: obj }, {
header: {
'token': '123',
}
})
//根据ID获取测评信息详情

14
src/api/indexTask.js Normal file
View File

@@ -0,0 +1,14 @@
import http from "./config";
// 获取路径图详情-包含关卡及任务列表
export const GetRouterDetail = (routerId) => http.get(`/admin/router/detail?routerId=${routerId}`)
// 新建或编辑阶段任务
export const ProjectEditTask = (obj) => http.post('/admin/project/editTask',obj)
// 新建或编辑关卡任务
export const RouterEditTask = (obj) => http.post('/admin/router/editTask',obj)
// 删除关卡任务
export const RouterDeleteTask = (obj) => http.post('/admin/router/deleteTask',obj);
// 删除项目任务
export const ProjectDeleteTask = (obj) => http.delete('/admin/project/deleteTask',obj);

51
src/api/storage.js Normal file
View File

@@ -0,0 +1,51 @@
/**
* 封装操作localstorage本地存储的方法
*/
export const storage = {
//存储
set(key, value) {
localStorage.setItem(key, JSON.stringify(value))
},
//取出数据
get(key) {
const value = localStorage.getItem(key)
if (value && value != "undefined" && value != "null") {
return JSON.parse(value)
}
},
// 删除数据
remove(key) {
localStorage.removeItem(key)
},
// 获取所有数据
getAllStorage() {
return JSON.parse(window.localStorage.getItem() || "{}")
},
// 删除所有数据
removeAllLocalStorage() {
window.localStorage.clear()
return { message: "ok" }
}
};
/**
* 封装操作sessionStorage本地存储的方法
*/
export const sessionStorage = {
//存储
set(key, value) {
window.sessionStorage.setItem(key, JSON.stringify(value))
},
//取出数据
get(key) {
const value = window.sessionStorage.getItem(key)
if (value && value != "undefined" && value != "null") {
return JSON.parse(value)
}
return null
},
// 删除数据
remove(key) {
window.sessionStorage.removeItem(key)
}
}

View File

@@ -345,14 +345,14 @@ textarea {
.drawerMain {
min-width: 700px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
height: 100%;
.contentMain {
flex: 1;
overflow-y: scroll;
overflow-y: auto;
}
}
@@ -376,7 +376,7 @@ textarea {
.drawerMain {
min-width: 700px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
}
@@ -392,7 +392,7 @@ textarea {
.ant-modal {
height: calc(100% - 200px);
background-color: rgba(255, 255, 255, 1);
// overflow-y: scroll;
// overflow-y: auto;
min-width: 900px;
max-width: 1300px;
padding: 0;
@@ -428,7 +428,7 @@ textarea {
.modalMain {
height: 0px;
flex: 1 1 auto;
overflow-y: scroll;
overflow-y: auto;
margin-top: 7px;
margin: 0px 52px;

View File

@@ -1,37 +1,51 @@
<template>
<div class="openPages">
<div
v-for="(value, index) in openList"
:key="index"
style="position: relative"
<draggable
v-model="openList"
chosenClass="chosen"
forceFallback="true"
group="people"
animation="1000"
@start="onStart"
@end="onEnd"
:list="openList"
style="display: flex"
>
<router-link
:to="value.href"
class="openItems"
:style="{ background: value.active ? '#f5f7fa' : '' }"
>
<div
:style="{
color: value.active
? 'rgba(64, 158, 255, 1)'
: 'rgba(135, 139, 146, 1)',
}"
>
{{ value.pagename }}
<template #item="{ element }">
<div style="position: relative">
<router-link
:to="element.href"
class="openItems"
:style="{ background: element.active ? '#f5f7fa' : '' }"
>
<div
:style="{
color: element.active
? 'rgba(64, 158, 255, 1)'
: 'rgba(135, 139, 146, 1)',
}"
>
{{ element.pagename }}
</div>
</router-link>
<div class="close" @click.stop="closePage(element)">
<img src="../assets/images/openPages/close.png" />
</div>
</div>
</router-link>
<div class="close" @click.stop="closePage(value)">
<img src="../assets/images/openPages/close.png" />
</div>
</div>
</template>
</draggable>
</div>
</template>
<script>
import { reactive, toRefs } from "vue";
import { useStore } from "vuex";
import { useRouter } from "vue-router";
import draggable from "vuedraggable";
export default {
name: "OpenPages",
components: {
draggable,
},
setup() {
const store = useStore();
const $router = useRouter();
@@ -69,7 +83,7 @@ export default {
},
};
</script>
<style scoped lang="scss">
<style lang="scss">
.openPages {
width: 100%;
// height: 50px;

View File

@@ -709,7 +709,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
// overflow-x: scroll;
// overflow-x: auto;
display: flex;
flex-direction: column;
height: 100%;

View File

@@ -8,8 +8,7 @@
>
<div class="drawerMain">
<div class="header">
<div class="headerTitle" v-if="add">添加讨论</div>
<div class="headerTitle" v-else>编辑讨论</div>
<div class="headerTitle" >添加讨论</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@@ -57,7 +56,7 @@
<span style="margin-right: 3px">讨论设置</span>
</div>
<div class="btnbox">
<a-checkbox v-model:checked="checkedC1">允许</a-checkbox>
<a-checkbox v-model:checked="checkedC1">允许</a-checkbox>
</div>
</div>
</div>
@@ -69,7 +68,7 @@
</div>
</a-drawer>
</template>
<script>
<script>
import { reactive, toRefs, ref } from "vue";
import * as api from "../../api/indexDiscuss";
import * as apiTask from "../../api/indexTaskadd";
@@ -119,7 +118,7 @@ export default {
//创建讨论
const createDiscuss = () => {
if(!state.inputV1){
if (!state.inputV1) {
message.destroy();
return message.warning("请输入讨论名称");
}
@@ -144,6 +143,7 @@ export default {
state.textV1 = "";
message.success("创建成功");
ctx.emit("update:adddiscussVisible", false);
//ctx.emit("changeData","传的参数");
//console.log("discussName",obj.discussName);
apiTask
.addTask({
@@ -180,7 +180,7 @@ export default {
},
};
</script>
<style lang="scss">
<style lang="scss">
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important;
}
@@ -260,15 +260,15 @@ export default {
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.ant-input {
border-radius: 8px;
}
}
}
}
@@ -305,4 +305,3 @@ export default {
}
}
</style>

View File

@@ -91,7 +91,7 @@
</div>
</a-upload>
<span style="padding-bottom: 20px; color: #878b92"
>图片格式为</span
>图片格式为JPG/PNG 图片大小不可超过1MB</span
>
</div>
</div>
@@ -179,9 +179,9 @@ export default {
const beforeUpload = (file) => {
const isJpgOrPng =
file.type === "image/jpeg" || file.type === "image/png";
file.type === "image/jpg" || file.type === "image/png";
if (!isJpgOrPng) {
message.error("You can only upload JPG file!");
message.error("You can upload JPG/PNG file!");
}
const isLt2M = file.size / 1024 / 1024 < 1;
if (!isLt2M) {
@@ -229,21 +229,21 @@ export default {
api
.createEvaluation(obj)
.then((res) => {
setTimeout(() => {
console.log("创建成功", res);
message.success("创建成功");
closeDrawer();
apitaskadd.addTask({
closeDrawer();
apitaskadd
.addTask({
courseId: 0,
duration: 0,
flag: true,
name: "",
name: obj.evaluationName,
projectId: 28,
projectTaskId: 0,
stageId: 3,
type: 10,
});
}, 1000);
},
);
})
.catch((err) => {
console.log("创建失败", err);

View File

@@ -104,7 +104,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -106,6 +106,7 @@
import { reactive, ref } from "vue";
import {message} from"ant-design-vue";
import { createWorkTask, queryWorkDetailById, updateWorkTaskUsing} from "@/api/indexWork";
import { ProjectEditTask,RouterEditTask } from "@/api/indexTask"
import dayjs from 'dayjs';
const rowSelection = ref({
@@ -133,7 +134,15 @@ export default {
type: Boolean,
default: false,
},
workId: {
flag: {
type: Number,
default: 0,
},
projectTaskId: {
type: Number,
default: 0,
},
routerTaskId: {
type: Number,
default: 0,
}
@@ -261,19 +270,60 @@ export default {
if(id) {
updateWorkTaskUsing(obj).then((res) => {
console.log(res);
message.success(`编辑成功`)
closeDrawer();
}).catch((err) => {
message.error(`编辑失败${err}`)
})
} else {
createWorkTask(obj).then((res)=>{
message.success(`添加成功${res}`)
closeDrawer();
console.log(res);
}).catch((err)=>{
message.error(`添加失败${err}`)
})
}
if(props.flag == 1) {
let editObj = {
"courseId": 0,
"duration": 0,
"flag": true,
"name": formState.workName,
"projectId": 0,
"projectTaskId": props.workId || '',
"stageId": 0,
"type": 4
}
// 新增编辑或新增项目任务
ProjectEditTask(editObj).then(res => {
console.log(` 编辑项目成功的打印 ${res}`);
message.success(`${props.workId? '编辑' : '新增'}阶段任务成功`)
closeDrawer();
}).catch(err => {
message.error(`${props.workId? '编辑' : '新增'}阶段任务失败`)
console.log(` 编辑项目失败的打印 ${err}`);
})
} else {
let editObj1 = {
"chapterId":36,
"courseId": 0,
"duration": 0,
"flag": true,
"name": formState.workName,
"routerId": 92,
"routerTaskId": 0,
"type": 4
}
// 新增编辑或新增关卡任务
RouterEditTask(editObj1).then(res => {
console.log(` 编辑关卡成功的打印 ${res}`);
message.success(`${props.workId? '编辑' : '新增'}关卡任务成功`)
closeDrawer();
}).catch(err => {
message.error(`${props.workId? '编辑' : '新增'}关卡任务失败`)
console.log(` 编辑关卡失败的打印 ${err}`);
})
}
};
return {
afterVisibleChange,

View File

@@ -202,21 +202,20 @@ export default {
api
.createAppraiseMessage(obj)
.then((res) => {
setTimeout(() => {
console.log("创建成功", res);
message.success("创建成功");
closeDrawer();
apitaskadd.addTask({
apitaskadd
.addTask({
courseId: 0,
duration: 0,
flag: true,
name: "",
name: obj.appraiseName,
projectId: 28,
projectTaskId: 0,
stageId: 3,
type: 11,
});
}, 1000);
})
.catch((err) => {
console.log("创建失败", err);

View File

@@ -1051,7 +1051,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
// overflow-y: scroll;
// overflow-y: auto;
display: flex;
flex-direction: column;

View File

@@ -139,7 +139,7 @@ export default {
};
</script>
<style lang="scss" >
<style lang="scss">
.AddLevelImpStu {
.drawerMain {
min-width: 450px;
@@ -164,7 +164,7 @@ export default {
}
}
.main {
overflow: scroll;
overflow: auto;
.minatitl {
display: flex;
.up1 {

View File

@@ -280,7 +280,7 @@
</div>
<div class="main_btns">
<button class="btn1" @click="closeDrawer">取消</button>
<button class="btn2" @click="done">确定</button>
<button class="btn2" @click="createLiveBroadcast">确定</button>
</div>
</div>
</a-drawer>
@@ -643,15 +643,6 @@ export default {
});
};
//添加任务到数据库
const addTask = () => {};
const done = () => {
createLiveBroadcast();
addTask();
// api.getLiveBroadcastInfor({});
};
return {
...toRefs(state),
afterVisibleChange,
@@ -664,7 +655,6 @@ export default {
createLiveBroadcast,
handleChange,
beforeUpload,
done,
};
},
};

View File

@@ -85,6 +85,7 @@
<a-input
v-model:value="formState.examinationDuration"
type="number"
style="width: 388px; height: 32px;
margin-left: 35px;"
/>
@@ -100,6 +101,7 @@
<a-input-number
:min="-1" :precision="0"
type="number"
v-model:value="formState.examinationLimit"
style="width: 88px; height: 32px;
border-radius: 8px;overflow: hidden;"
@@ -161,6 +163,7 @@
<a-input
v-model:value="formState.passLine"
type="number"
style="width: 88px; height: 32px;margin-left: 35px;"
/>
</a-form-item>
@@ -197,6 +200,8 @@
import { reactive, ref } from "vue";
import {message} from"ant-design-vue";
import {createExamination,queryExaminationDetailById,updateExamination} from "@/api/indexExam"
import { ProjectEditTask } from "@/api/indexTask"
import dayjs from 'dayjs';
const rowSelection = ref({
checkStrictly: false,
@@ -225,7 +230,7 @@ export default {
},
examinationId: {
type: Number,
default: 0,
default: -1,
}
},
setup(props, ctx) {
@@ -429,21 +434,38 @@ export default {
if(id) {
updateExamination(obj).then((res)=>{
console.log(res);
message.success(`编辑成功`)
closeDrawer();
}).catch(()=>{
message.error(`编辑失败`)
})
} else {
createExamination(obj).then((res)=>{
message.success(`添加成功${res}`)
closeDrawer();
createExamination(obj).then(()=>{
}).catch((err)=>{
message.error(`添加失败${err}`)
})
}
let editObj = {
"courseId": 0,
"duration": 0,
"flag": true,
"name": "",
"projectId": 0,
"projectTaskId": props.examinationId || '',
"stageId": 0,
"type": 5
}
// 新增编辑或新增项目
ProjectEditTask(editObj).then(res => {
console.log(` 编辑项目成功的打印 ${res}`);
message.success(`${props.examinationId? '编辑' : '新增'}阶段任务成功`)
closeDrawer();
}).catch(err => {
message.error(`${props.examinationId? '编辑' : '新增'}阶段任务失败`)
console.log(` 编辑项目失败的打印 ${err}`);
})
}
const afterVisibleChange = (bool) => {
console.log("formState", bool);

View File

@@ -203,21 +203,20 @@ export default {
api
.createVote(obj)
.then((res) => {
setTimeout(() => {
console.log("创建成功", res);
message.success("创建成功");
closeDrawer();
apitaskadd.addTask({
apitaskadd
.addTask({
courseId: 0,
duration: 0,
flag: true,
name: "",
name: obj.voteName,
projectId: 28,
projectTaskId: 0,
stageId: 3,
type: 12,
});
}, 1000);
})
.catch((err) => {
console.log("创建失败", err);

View File

@@ -89,7 +89,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -223,7 +223,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -78,7 +78,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -82,7 +82,7 @@ export default {
};
</script>
<style scoped lang="scss" >
<style scoped lang="scss">
// .drawerStyle {
// .ant-drawer-content-wrapper {
// // max-width: 1000px;
@@ -99,7 +99,7 @@ export default {
.drawerMain {
min-width: 400px;
margin: 0px 32px 0px 32px;
// overflow-x: scroll;
// overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -385,7 +385,7 @@ export default {
};
</script>
<style lang="scss" >
<style lang="scss">
// .drawerStyle {
// .ant-drawer-content-wrapper {
// // max-width: 1000px;
@@ -513,7 +513,7 @@ export default {
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.noticebox {

View File

@@ -722,7 +722,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -831,7 +831,7 @@ export default {
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
// overflow-y: scroll;
// overflow-y: auto;
display: flex;
flex-direction: column;

View File

@@ -67,18 +67,18 @@
<div class="tableBox" style="margin-top: 20px; margin-bottom: 100px">
<a-table
style="border: 1px solid #f2f6fe"
:columns="tablecolumns"
:data-source="tabledata"
:loading="tableDataTotal === -1 ? true : false"
expandRowByClick="true"
:scroll="{ x: 900 }"
@expand="expandTable"
:pagination="false"
:row-selection="{
columnWidth: 30,
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:columns="tablecolumns"
:data-source="tabledata"
:loading="tableDataTotal === -1 ? true : false"
expandRowByClick="true"
:scroll="{ x: 900 }"
@expand="expandTable"
:pagination="false"
:row-selection="{
columnWidth: 30,
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
/>
<div class="pa">
<a-pagination
@@ -104,11 +104,11 @@
centered="true"
:footer="null"
wrapClassName="FacMa"
>
>
<div class="head">
<div class="inhead">
<div class="left">
<img src="../../assets/images/coursewareManage/notice.png"/>
<img src="../../assets/images/coursewareManage/notice.png" />
<div class="tis">提示</div>
</div>
<div class="right" @click="closeModal"></div>
@@ -123,7 +123,6 @@
<stu-add v-model:Stuvisible="Stuvisible" />
</div>
</a-drawer>
</template>
<script>
@@ -280,7 +279,6 @@ export default {
state.Stuvisible = true;
};
return {
...toRefs(state),
closeDrawer,
@@ -293,12 +291,12 @@ export default {
};
</script>
<style lang="scss" >
<style lang="scss">
.MemberList {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
//overflow-x: scroll;
//overflow-x: auto;
display: flex;
flex-direction: column;
@@ -388,7 +386,7 @@ export default {
}
.btn1 {
background: #409EFF;
background: #409eff;
color: #ffffff;
}
@@ -396,8 +394,8 @@ export default {
.btn2 {
background: #ffffff;
color: #409EFF;
border: 1px solid #409EFF;
color: #409eff;
border: 1px solid #409eff;
}
}
}
@@ -441,7 +439,7 @@ export default {
}
.btn1 {
background: #409EFF;
background: #409eff;
color: #ffffff;
}
@@ -449,8 +447,8 @@ export default {
.btn2 {
background: #ffffff;
margin-right: 20px;
color:#409EFF;
border: 1px solid #409EFF;
color: #409eff;
border: 1px solid #409eff;
}
}
@@ -519,11 +517,11 @@ export default {
.ant-table-thead > tr > th {
background-color: rgba(239, 244, 252, 1) !important;
color: rgba(0, 0, 0, 0.8500);
color: rgba(0, 0, 0, 0.85);
}
.ant-table-cell {
color: rgba(0, 0, 0, 0.6500);
color: rgba(0, 0, 0, 0.65);
}
.ant-table-selection-column {
@@ -545,11 +543,10 @@ export default {
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: #f6f9fd;
}
.ant-table-tbody > tr > td {
border-bottom: 1px solid rgba(240, 244, 254, 1);
border-bottom: 1px solid rgba(240, 244, 254, 1);
}
.pa {
// left: 0;

View File

@@ -78,17 +78,17 @@
}"
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
</div>
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
</div>
</div>
</div>
</a-tab-pane>
@@ -160,16 +160,16 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize1"
:current="currentPage1"
:total="tableDataTotal1"
class="pagination"
/>
</div>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize1"
:current="currentPage1"
:total="tableDataTotal1"
class="pagination"
/>
</div>
</div>
</div>
</div>
@@ -243,16 +243,16 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize2"
:current="currentPage2"
:total="tableDataTotal2"
class="pagination"
/>
</div>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize2"
:current="currentPage2"
:total="tableDataTotal2"
class="pagination"
/>
</div>
</div>
</div>
</a-tab-pane>
@@ -307,7 +307,7 @@
</a-drawer>
</template>
<script>
<script>
import { reactive, toRefs } from "vue";
export default {
name: "OwnPower",
@@ -780,7 +780,7 @@ export default {
};
</script>
<style lang="scss" >
<style lang="scss">
.ownpower {
// .ant-drawer-content-wrapper {
// // max-width: 1000px;
@@ -794,7 +794,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {
@@ -1003,25 +1003,25 @@ export default {
// align-items: center;
// margin-top: -2px;
// }
.tableBox{
.tableBox {
.pa {
// left: 0;
margin-top: 15px;
width: 100%;
// height: 20px;
// background-color: red;
display: flex;
justify-content: center;
// position: absolute;
// bottom: 20px;
.ant-pagination-item,
.ant-pagination-prev,
.ant-pagination-next,
.ant-pagination-options {
margin-bottom: 10px;
// left: 0;
margin-top: 15px;
width: 100%;
// height: 20px;
// background-color: red;
display: flex;
justify-content: center;
// position: absolute;
// bottom: 20px;
.ant-pagination-item,
.ant-pagination-prev,
.ant-pagination-next,
.ant-pagination-options {
margin-bottom: 10px;
}
}
}
}
}
.tab2 {

View File

@@ -786,7 +786,7 @@ export default {
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
// overflow-y: scroll;
// overflow-y: auto;
display: flex;
flex-direction: column;

View File

@@ -329,7 +329,7 @@ export default {
};
</script>
<style lang="scss" >
<style lang="scss">
.me {
.ant-modal-body {
padding: 0px;
@@ -461,7 +461,7 @@ export default {
// overflow: auto;
min-width: 500px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -17,12 +17,14 @@
</div>
<div class="main">
<div class="one">
<span class="left">班级名称</span>
<span class="right">产品经理管理-腾飞班1</span>
<span class="left">班级名称</span>
<span class="right">产品经理管理-腾飞班1</span>
</div>
<div class="one second">
<span class="left">说明</span>
<span class="right">班级说明此班级为产品经理班级其他岗位不要进入请大家按照规定时间进行任务学习</span>
<span class="left">说明</span>
<span class="right"
>班级说明此班级为产品经理班级其他岗位不要进入请大家按照规定时间进行任务学习</span
>
</div>
</div>
<div class="btnn">
@@ -30,7 +32,6 @@
</div>
</div>
</a-drawer>
</template>
<script>
@@ -63,7 +64,7 @@ export default {
};
</script>
<style scoped lang="scss" >
<style scoped lang="scss">
.promess {
.ant-drawer-content-wrapper {
// max-width: 1000px;
@@ -77,7 +78,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {
@@ -101,13 +102,13 @@ export default {
margin-top: 38px;
margin-left: 53px;
.left {
color: rgba(51, 51, 51, 1);
font-size: 14px;
color: rgba(51, 51, 51, 1);
font-size: 14px;
}
.right {
color: rgba(102, 102, 102, 1);
font-size: 14px;
margin-left: 12px;
color: rgba(102, 102, 102, 1);
font-size: 14px;
margin-left: 12px;
}
}
.second {

View File

@@ -80,18 +80,17 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
</div>
</div>
</div>
</div>
</a-tab-pane>
<a-tab-pane key="2" tab="添加组织" force-render>
@@ -162,18 +161,17 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize1"
:current="currentPage1"
:total="tableDataTotal1"
class="pagination"
/>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize1"
:current="currentPage1"
:total="tableDataTotal1"
class="pagination"
/>
</div>
</div>
</div>
</div>
</div>
</a-tab-pane>
@@ -246,18 +244,17 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize2"
:current="currentPage2"
:total="tableDataTotal2"
class="pagination"
/>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize2"
:current="currentPage2"
:total="tableDataTotal2"
class="pagination"
/>
</div>
</div>
</div>
</div>
</a-tab-pane>
</a-tabs>
@@ -789,7 +786,7 @@ export default {
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
// overflow-y: scroll;
// overflow-y: auto;
display: flex;
flex-direction: column;

View File

@@ -80,18 +80,17 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
</div>
</div>
</div>
</div>
</a-tab-pane>
<a-tab-pane key="2" tab="添加组织" force-render>
@@ -162,18 +161,17 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize1"
:current="currentPage1"
:total="tableDataTotal1"
class="pagination"
/>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize1"
:current="currentPage1"
:total="tableDataTotal1"
class="pagination"
/>
</div>
</div>
</div>
</div>
</div>
</a-tab-pane>
@@ -246,18 +244,17 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize2"
:current="currentPage2"
:total="tableDataTotal2"
class="pagination"
/>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize2"
:current="currentPage2"
:total="tableDataTotal2"
class="pagination"
/>
</div>
</div>
</div>
</div>
</a-tab-pane>
</a-tabs>
@@ -789,7 +786,7 @@ export default {
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
// overflow-y: scroll;
// overflow-y: auto;
display: flex;
flex-direction: column;

View File

@@ -59,16 +59,16 @@
</div>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
</div>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
</div>
</div>
<!-- <div class="tab" style="margin-top: 20px; margin-bottom: 100px">
@@ -329,7 +329,7 @@ export default {
};
</script>
<style lang="scss" >
<style lang="scss">
.me {
.ant-modal-body {
padding: 0px;
@@ -350,7 +350,7 @@ export default {
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
// overflow-x: scroll;
// overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -80,16 +80,16 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
</div>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
</div>
</div>
</div>
</a-tab-pane>
@@ -161,16 +161,16 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize1"
:current="currentPage1"
:total="tableDataTotal1"
class="pagination"
/>
</div>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize1"
:current="currentPage1"
:total="tableDataTotal1"
class="pagination"
/>
</div>
</div>
</div>
</div>
@@ -244,16 +244,16 @@
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize2"
:current="currentPage2"
:total="tableDataTotal2"
class="pagination"
/>
</div>
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize2"
:current="currentPage2"
:total="tableDataTotal2"
class="pagination"
/>
</div>
</div>
</div>
</a-tab-pane>
@@ -786,7 +786,7 @@ export default {
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
// overflow-y: scroll;
// overflow-y: auto;
display: flex;
flex-direction: column;

View File

@@ -786,7 +786,7 @@ export default {
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
// overflow-y: scroll;
// overflow-y: auto;
display: flex;
flex-direction: column;

View File

@@ -1,4 +1,4 @@
<template>
<template>
<a-drawer
:visible="Seevisible"
class="drawerStyle seestu"
@@ -69,58 +69,74 @@
</div>
</div>
<div class="mainbox">
<a-collapse v-model:activeKey="stageListActive" >
<a-collapse v-model:activeKey="stageListActive">
<template #expandIcon="{ isActive }">
<img style="margin-right: 20px"
:src="
isActive
? require('../../assets/images/studentimg/open.png')
: require('../../assets/images/studentimg/close.png')
" />
<div></div>
<img
style="margin-right: 20px"
:src="
isActive
? require('../../assets/images/studentimg/open.png')
: require('../../assets/images/studentimg/close.png')
"
/>
<div></div>
</template>
<a-collapse-panel v-for="(value, index) in stageList" :key="index" :header="value.text">
<div class="rowclass" v-for="(item, key) in value.children" :key="key">
<a-collapse-panel
v-for="(value, index) in stageList"
:key="index"
:header="value.text"
>
<div
class="rowclass"
v-for="(item, key) in value.children"
:key="key"
>
<div class="leftclass">
<div><img :src="
item.course === '在线'
? require('../../assets/images/leveladd/zai.png')
: item.course === '面授'
? require('../../assets/images/leveladd/mian.png')
: item.course === '案例'
? require('../../assets/images/leveladd/an.png')
: item.course === '作业'
? require('../../assets/images/leveladd/zuo.png')
: item.course === '考试'
? require('../../assets/images/leveladd/kao.png')
: item.course === '直播'
? require('../../assets/images/leveladd/zhi.png')
: item.course === '外链'
? require('../../assets/images/leveladd/wai.png')
: item.course === '讨论'
? require('../../assets/images/leveladd/tao.png')
: item.course === '活动'
? require('../../assets/images/leveladd/huo.png')
: item.course === '测评'
? require('../../assets/images/leveladd/ce.png')
: item.course === '调研'
? require('../../assets/images/leveladd/diao.png')
: item.course === '投票'
? require('../../assets/images/leveladd/tou.png')
: null
" /></div>
<div class="text1">{{item.course}}</div>
<div class="text2">{{item.name}}</div>
<div>
<img
:src="
item.course === '在线'
? require('../../assets/images/leveladd/zai.png')
: item.course === '面授'
? require('../../assets/images/leveladd/mian.png')
: item.course === '案例'
? require('../../assets/images/leveladd/an.png')
: item.course === '作业'
? require('../../assets/images/leveladd/zuo.png')
: item.course === '考试'
? require('../../assets/images/leveladd/kao.png')
: item.course === '直播'
? require('../../assets/images/leveladd/zhi.png')
: item.course === '外链'
? require('../../assets/images/leveladd/wai.png')
: item.course === '讨论'
? require('../../assets/images/leveladd/tao.png')
: item.course === '活动'
? require('../../assets/images/leveladd/huo.png')
: item.course === '测评'
? require('../../assets/images/leveladd/ce.png')
: item.course === '调研'
? require('../../assets/images/leveladd/diao.png')
: item.course === '投票'
? require('../../assets/images/leveladd/tou.png')
: null
"
/>
</div>
<div class="text1">{{ item.course }}</div>
<div class="text2">{{ item.name }}</div>
</div>
<div class="alreadyclass">
<div class="alimg">
<img :src="
item.complete === '已完成'
? require('../../assets/images/studentimg/complete.png')
: require('../../assets/images/studentimg/notice.png')
"/>
<img
:src="
item.complete === '已完成'
? require('../../assets/images/studentimg/complete.png')
: require('../../assets/images/studentimg/notice.png')
"
/>
</div>
<div class="altext">{{item.complete}}</div>
<div class="altext">{{ item.complete }}</div>
</div>
</div>
</a-collapse-panel>
@@ -136,7 +152,7 @@
</template>
<script>
import { reactive, toRefs} from "vue";
import { reactive, toRefs } from "vue";
import ProMess from "./ProMess.vue";
export default {
name: "SeeStu",
@@ -149,72 +165,72 @@ export default {
},
setup(props, ctx) {
const state = reactive({
Provisible: false,
showDown: true,
showDown1: false,
stageList: [
{
text: "阶段1腾飞班阶段1",
children: [
{
course: "在线",
name: "如何成为一个产品经理",
complete: "已完成",
},
{
course: "直播",
name: "管理直播课",
complete: "已完成",
},
{
course: "面授",
name: "管理面授课",
complete: "未完成",
},
{
course: "活动",
name: "管理活动",
complete: "未完成",
},
{
course: "作业",
name: "管理者作业",
complete: "未完成",
},
],
},
{
text: "阶段2腾飞班阶段2",
children: [
{
course: "考试",
name: "如何成为一个产品经理",
complete: "已完成",
},
{
course: "案例",
name: "如何成为一个产品经理",
complete: "已完成",
},
{
course: "外链",
name: "如何成为一个产品经理",
complete: "已完成",
},
{
course: "讨论",
name: "如何成为一个产品经理",
complete: "未完成",
},
{
course: "测评",
name: "如何成为一个产品经理",
complete: "未完成",
},
],
},
],
stageListActive: 0,
Provisible: false,
showDown: true,
showDown1: false,
stageList: [
{
text: "阶段1腾飞班阶段1",
children: [
{
course: "在线",
name: "如何成为一个产品经理",
complete: "已完成",
},
{
course: "直播",
name: "管理直播课",
complete: "已完成",
},
{
course: "面授",
name: "管理面授课",
complete: "未完成",
},
{
course: "活动",
name: "管理活动",
complete: "未完成",
},
{
course: "作业",
name: "管理者作业",
complete: "未完成",
},
],
},
{
text: "阶段2腾飞班阶段2",
children: [
{
course: "考试",
name: "如何成为一个产品经理",
complete: "已完成",
},
{
course: "案例",
name: "如何成为一个产品经理",
complete: "已完成",
},
{
course: "外链",
name: "如何成为一个产品经理",
complete: "已完成",
},
{
course: "讨论",
name: "如何成为一个产品经理",
complete: "未完成",
},
{
course: "测评",
name: "如何成为一个产品经理",
complete: "未完成",
},
],
},
],
stageListActive: 0,
});
const closeDrawer = () => {
ctx.emit("update:Seevisible", false);
@@ -245,7 +261,7 @@ export default {
};
</script>
<style lang="scss" >
<style lang="scss">
.seestu {
.ant-drawer-content-wrapper {
// max-width: 1000px;
@@ -259,7 +275,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {
@@ -361,7 +377,7 @@ export default {
//border: 1px solid rgba(221, 238, 255, 1);
//border-radius: 6px;
.ant-collapse {
background-color: #FFFFFF;
background-color: #ffffff;
border: 0;
}
.ant-collapse-content > .ant-collapse-content-box {

View File

@@ -1050,7 +1050,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
// overflow-y: scroll;
// overflow-y: auto;
display: flex;
flex-direction: column;

View File

@@ -57,7 +57,6 @@
<!-- 创建小组抽屉 -->
<add-group v-model:Avisible="Avisible" />
</a-drawer>
</template>
<script>
@@ -76,7 +75,7 @@ export default {
const state = reactive({
Avisible: false,
value1: "",
value2:"",
value2: "",
value3: "",
});
const closeDrawer = () => {
@@ -120,7 +119,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -129,12 +129,12 @@ export default {
};
</script>
<style lang="scss" >
<style lang="scss">
.TaskFaceImpStu {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -365,7 +365,7 @@ export default {
.drawerMain {
min-width: 520px;
margin: 0px 32px 0px 32px;
// overflow-x: scroll;
// overflow-x: auto;
display: flex;
flex-direction: column;
position: relative;

View File

@@ -318,11 +318,11 @@ export default {
// }
// }
.TimeManage {
// overflow-x: scroll;
// overflow-x: auto;
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.noticebox {

View File

@@ -17,73 +17,86 @@
</div>
<div class="main">
<div class="onerow">
<div class="assname">评估名称</div>
<div class="asscontent">产品经理面授课评估</div>
<div class="assname">评估名称</div>
<div class="asscontent">产品经理面授课评估</div>
</div>
<div class="onerow" style="margin-top: 30px">
<div class="assname">评估说明</div>
<div class="asscontent">-</div>
<div class="assname">评估说明</div>
<div class="asscontent">-</div>
</div>
<div class="assessbox" style="margin-top: 30px">
<div class="box1">
<div class="asstype">评估类型</div>
<div class="typename">单选</div>
<div class="box1">
<div class="asstype">评估类型</div>
<div class="typename">单选</div>
</div>
<div class="box1" style="margin-left: 64px">
<div class="asstype">题干</div>
<div style="color: rgba(153, 153, 153, 1); font-size: 14px">
这个课程你觉得对你有用吗
</div>
<div class="box1" style="margin-left: 64px">
<div class="asstype">题干</div>
<div style="color: rgba(153, 153, 153, 1);font-size: 14px">这个课程你觉得对你有用吗</div>
</div>
<a-radio-group v-model:value="value">
<div class="box1" style="margin-left: 55px; margin-top: 20px">
<div class="asstype">选择1</div>
<a-radio :value="1">有用</a-radio>
</div>
<a-radio-group v-model:value="value">
<div class="box1" style="margin-left: 55px;margin-top: 20px">
<div class="asstype">选择1</div>
<a-radio :value="1">有用</a-radio>
</div>
<div class="box1" style="margin-left: 55px;margin-top: 20px;margin-bottom: 30px">
<div class="asstype">选择2</div>
<a-radio :value="2">没用</a-radio>
</div>
</a-radio-group>
<div
class="box1"
style="margin-left: 55px; margin-top: 20px; margin-bottom: 30px"
>
<div class="asstype">选择2</div>
<a-radio :value="2">没用</a-radio>
</div>
</a-radio-group>
</div>
<div class="assessbox" style="margin-top: 30px">
<div class="box1">
<div class="asstype">评估类型</div>
<div class="typename">问答题</div>
<div class="box1">
<div class="asstype">评估类型</div>
<div class="typename">问答题</div>
</div>
<div class="box1" style="margin-left: 64px">
<div class="asstype">标题</div>
<div style="color: rgba(153, 153, 153, 1); font-size: 14px">
对这个课程有什么建议吗
</div>
<div class="box1" style="margin-left: 64px">
<div class="asstype">标题</div>
<div style="color: rgba(153, 153, 153, 1);font-size: 14px">对这个课程有什么建议吗</div>
</div>
<div class="box1" style="margin-left: 64px;margin-top: 20px;margin-bottom: 30px">
<div class="asstype">描述</div>
<div style="color: rgba(51, 51, 51, 1);font-size: 14px">希望以后这样的课程能够躲开让我们多多了解</div>
</div>
<div
class="box1"
style="margin-left: 64px; margin-top: 20px; margin-bottom: 30px"
>
<div class="asstype">描述</div>
<div style="color: rgba(51, 51, 51, 1); font-size: 14px">
希望以后这样的课程能够躲开让我们多多了解
</div>
</div>
</div>
<div class="assessbox" style="margin-top: 30px">
<div class="box1">
<div class="asstype">评估类型</div>
<div class="typename">评分题</div>
<div class="box1">
<div class="asstype">评估类型</div>
<div class="typename">评分题</div>
</div>
<div class="box1" style="margin-left: 64px">
<div class="asstype">标题</div>
<div style="color: rgba(153, 153, 153, 1); font-size: 14px">
请给当前课程打分
</div>
<div class="box1" style="margin-left: 64px">
<div class="asstype">标题</div>
<div style="color: rgba(153, 153, 153, 1);font-size: 14px">请给当前课程打分</div>
</div>
<div class="lastbox">
<div class="sorcetext">非常不满意</div>
<div class="sorcebox">
<div class="numbox" >1</div>
<div class="numbox">2</div>
<div class="numbox">3</div>
<div class="numbox">4</div>
<div class="numbox">5</div>
<div class="numbox">6</div>
<div class="numbox">7</div>
<div class="numbox">8</div>
<div class="numbox1">9</div>
<div class="numbox1">10</div>
</div>
<div class="sorcetext">非常满意</div>
</div>
<div class="lastbox">
<div class="sorcetext">非常不满意</div>
<div class="sorcebox">
<div class="numbox">1</div>
<div class="numbox">2</div>
<div class="numbox">3</div>
<div class="numbox">4</div>
<div class="numbox">5</div>
<div class="numbox">6</div>
<div class="numbox">7</div>
<div class="numbox">8</div>
<div class="numbox1">9</div>
<div class="numbox1">10</div>
</div>
<div class="sorcetext">非常满意</div>
</div>
</div>
</div>
<div class="btnn">
@@ -131,7 +144,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {
@@ -160,13 +173,13 @@ export default {
margin-top: 10px;
margin-left: 10px;
.assname {
font-size: 16px;
color: #333333;
font-weight: 500;
font-size: 16px;
color: #333333;
font-weight: 500;
}
.asscontent {
color: #999999;
font-size: 16px;
color: #999999;
font-size: 16px;
}
}
.assessbox {
@@ -175,66 +188,65 @@ export default {
display: flex;
flex-direction: column;
.box1 {
display: flex;
margin-top: 20px;
margin-left: 36px;
align-items: center;
.asstype {
color: rgba(51, 51, 51, 1);
font-size: 14px;
font-weight: 500;
}
.typename {
width: 80px;
height: 32px;
//margin-left: 10px;
border-radius: 4px;
border: 1px solid rgba(64, 158, 255, 1);
display: flex;
margin-top: 20px;
margin-left: 36px;
justify-content: center;
align-items: center;
.asstype {
color: rgba(51, 51, 51, 1);
font-size: 14px;
font-weight: 500;
}
.typename {
width: 80px;
height: 32px;
//margin-left: 10px;
border-radius: 4px;
border: 1px solid rgba(64, 158, 255, 1);
display: flex;
justify-content: center;
align-items: center;
color: rgba(64, 158, 255, 1);
font-size: 14px;
background: rgba(64,158,255,0.1);
}
color: rgba(64, 158, 255, 1);
font-size: 14px;
background: rgba(64, 158, 255, 0.1);
}
}
.lastbox {
display: flex;
align-items: center;
margin-left: 30px;
.sorcetext {
color: rgba(153, 153, 153, 1);
font-size: 14px;
}
.sorcebox {
display: flex;
align-items: center;
margin-left: 30px;
.sorcetext {
color: rgba(153, 153, 153, 1);
font-size: 14px;
.numbox {
width: 32px;
height: 32px;
display: flex;
justify-content: center;
align-items: center;
background: rgba(64, 158, 255, 1);
color: #ffffff;
font-size: 14px;
border-radius: 4px;
margin: 20px 5px;
cursor: pointer;
}
.sorcebox {
display: flex;
.numbox {
width: 32px;
height: 32px;
display: flex;
justify-content: center;
align-items: center;
background: rgba(64, 158, 255, 1);
color: #FFFFFF;
font-size: 14px;
border-radius: 4px;
margin: 20px 5px;
cursor: pointer;
}
.numbox1 {
width: 32px;
height: 32px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid rgba(151, 151, 151, 0.29);
color: rgba(0, 0, 0, 0.6500);
margin: 20px 5px;
cursor: pointer;
border-radius: 4px;
}
.numbox1 {
width: 32px;
height: 32px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid rgba(151, 151, 151, 0.29);
color: rgba(0, 0, 0, 0.65);
margin: 20px 5px;
cursor: pointer;
border-radius: 4px;
}
}
}
}
}

View File

@@ -89,7 +89,7 @@ export default {
};
</script>
<style scoped lang="scss" >
<style scoped lang="scss">
// .drawerStyle {
// .ant-drawer-content-wrapper {
// // max-width: 1000px;
@@ -106,7 +106,7 @@ export default {
.drawerMain {
min-width: 450px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -366,7 +366,7 @@ export default {
};
</script>
<style lang="scss" >
<style lang="scss">
// .drawerStyle {
// .ant-drawer-content-wrapper {
// // max-width: 1000px;
@@ -486,7 +486,7 @@ export default {
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -6,8 +6,9 @@ export default createStore({
pagename: "学习路径",
href: "/learningpath",
active: true,
},]
},],
routerId: null,
},
getters: {
@@ -16,7 +17,11 @@ export default createStore({
chengeOpenpages(state, list) {
// console.log('list', list)
state.openpages = list
}
},
chengeRouterId(state, routerId) {
// console.log('list', list)
state.routerId = routerId
},
},
actions: {
},

View File

@@ -20,7 +20,6 @@ export default {
name: "TestPage",
setup() {
const state = reactive({});
return {
...toRefs(state),
};
@@ -30,14 +29,10 @@ export default {
$(document).ready(function () {
var range = { x: 0, y: 0 }; //鼠标元素偏移量
var lastPos = { x: 0, y: 0, x1: 0, y1: 0 }; //拖拽对象的四个坐标
var tarPos = { x: 0, y: 0, x1: 0, y1: 0 }; //目标元素对象的坐标初始化
var theDiv = null,
move = false;
var choose = false; //拖拽对象 拖拽状态 选中状态
// var theDivId = 0;
// var theDivHeight = 0;
var theDivHalf = 0;
@@ -101,7 +96,6 @@ $(document).ready(function () {
if (!choose) {
return false;
}
if (!move) {
//恢复对象的初始样式

View File

@@ -1042,36 +1042,36 @@ export default {
<div
class="jc"
onClick={() => {
state.out1 = true;
state.pathName = text.record.manager;
// state.pathBg = "";
// state.organizationSelectName = null;
// state.organizationSelectId = null;
state.pathIntro = text.record.remark;
state.editPathId = text.record.id;
// state.out1 = true;
// state.pathName = text.record.manager;
// // state.pathBg = "";
// // state.organizationSelectName = null;
// // state.organizationSelectId = null;
// state.pathIntro = text.record.remark;
// state.editPathId = text.record.id;
}}
>
编辑
</div>
</div>
) : (
<div></div>
)}
{text.record.state === "未发布" ? (
<div class="fb">
<div
style="cursor:pointer"
class="jc"
onClick={() => {
showCopyModal();
}}
>
复制
</div>
></div>
</div>
) : (
<div></div>
)}
{
// text.record.state === "未发布" ? (
// <div class="fb">
// <div
// style="cursor:pointer"
// class="jc"
// onClick={() => {
// showCopyModal();
// }}
// >
// 复制
// </div>
// </div>
// ) : (
// <div></div>
// )
}
</div>
<div class="tableSelect">
<div
@@ -1079,8 +1079,8 @@ export default {
onClick={() => {
router.push({
path: "/leveladd",
query: { routerId: text.record.id },
});
localStorage.setItem("routerId", text.record.id);
}}
>
管理
@@ -1220,13 +1220,26 @@ export default {
) : (
<div></div>
)}
{text.record.state === "未发布" ? (
{text.record.state === "已停用" ? (
<div>
<a-select
style="width: 50px;margin-top:2px;margin-right:20px;"
value="更多"
dropdownClassName="tabledropdown"
>
<a-select-option
value="复制"
label="复制"
style="padding-left:35px"
>
<div
onClick={() => {
showCopyModal();
}}
>
复制
</div>
</a-select-option>
<a-select-option
value="启用"
label="启用"

View File

@@ -258,7 +258,9 @@
</router-link>
</div>
<!-- 无数据显示快速创建 -->
<router-link to="/leveladddetail">
<router-link
:to="{ path: '/leveladddetail', query: { routerId: routerId } }"
>
<div
class="taskbox"
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
@@ -493,13 +495,10 @@
<button class="addd" @click="showImpStu">导入学员</button>
<div class="select">
<a-select
v-model:value="projectName"
style="width: 130px"
placeholder="更多操作"
value="更多操作"
:options="projectNameListt"
@change="selectProjectName"
allowClear
showSearch
></a-select>
</div>
</div>
@@ -899,7 +898,8 @@ import TimeManage from "../../components/drawers/TimeManage";
import TestManage from "../../components/drawers/TestManage";
import FaceManage from "../../components/drawers/FaceManage";
import WorkManage from "../../components/drawers/WorkManage";
import { useRoute } from "vue-router";
// import { useRoute } from "vue-router";
// import { useStore } from "vuex";
import * as api from "../../api/index1";
export default {
name: "LevelAdd",
@@ -916,9 +916,10 @@ export default {
},
methods: {},
setup() {
const routers = useRoute();
// const routers = useRoute();
// const store = useStore();
const state = reactive({
routerId: routers.query.routerId, //学习路径页面传的学习路径id
routerId: localStorage.getItem("routerId"), //学习路径页面传的学习路径id
gatename: null, //关卡名称
gatenamee: null, //学员管理关卡名称
deleteAll: false, //批量删除学员弹窗
@@ -1237,6 +1238,7 @@ export default {
},
],
});
console.log("store", state.routerId);
const selectProjectName = (value, index) => {
console.log("value", value, index);
if (value === "批量删除") {
@@ -1472,6 +1474,7 @@ export default {
});
};
//学员管理------------------------------------------------
return {
...toRefs(state),
selectProjectName,
@@ -2839,6 +2842,10 @@ export default {
}
}
}
.ant-select-selection-item {
padding-left: 15px;
color: #4ea6ff;
}
}
}
.talk {

View File

@@ -17,10 +17,10 @@
> -->
<div
class="items"
:class="isactive == index && isActive == true ? 'active' : ''"
:class="isactive == index ? 'active' : ''"
@click="changebgc(index)"
v-for="(item, index) in level"
:key="item.id"
:key="item.chapterId"
>
<div class="items1">
<div class="boxs_left">
@@ -37,7 +37,7 @@
<div class="nname">{{ item.name }}</div>
</div>
<!-- <div class="itemle">
<div class="tit">{{ item.tit }}</div>
<div class="tit">{{ item.remark }}</div>
<div class="name">{{ item.name }}</div>
</div> -->
</div>
@@ -159,20 +159,30 @@
</div>
<div class="item">
<div class="itcon">
<div class="img">
<div class="img" @click="showDrawerAddHomework">
<img src="../../assets/images/leveladd/zuo.png" />
</div>
<div class="text">作业</div>
</div>
<!-- 添加作业侧弹窗 -->
<div>
<add-homework
flag=0 routerTaskId=ListChoosedId
v-model:addhomeworkVisible="addhomeworkvisible" />
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<div class="img" @click="showDrawerAddTest">
<img src="../../assets/images/leveladd/kao.png" />
</div>
<div class="text">考试</div>
</div>
<!-- 添加考试侧弹窗 -->
<div>
<add-test v-model:addtestVisible="addtestvisible" />
</div>
<div class="lin"></div>
</div>
<div class="item">
@@ -512,67 +522,27 @@
import { reactive, toRefs, onMounted, onUnmounted } from "vue";
import AddStu from "../../components/drawers/AddLevelAddStu";
import ImpStu from "../../components/drawers/AddLevelImportStu";
import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue";
import * as api from "../../api/indexLevel";
import { GetRouterDetail, RouterDeleteTask } from "../../api/indexTask";
import { message } from "ant-design-vue";
export default {
name: "LevelAddDetail",
components: {
AddStu,
ImpStu,
AddHomework,
AddTest
},
setup() {
const state = reactive({
level: [
{
id: "1",
tit: "关卡1关卡1关卡1关卡1关卡1关卡1",
name: "初级产品经理fewfewfwefwefe",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
chapterId: "1",
remark: "关卡说明",
name: "默认关卡",
}
],
tableData: [
{
@@ -586,50 +556,6 @@ export default {
checked1: false,
checkedd: false,
},
{
key: 2,
lei: "面授",
// state: "草稿",
creater: "管理者面授",
// pubtime: "2022-07-20 14:00:03",
cretime: "20分钟",
haspub: true,
checked1: false,
checkedd: false,
},
{
key: 3,
lei: "作业",
// state: "已停用",
creater: "管理者作业",
// pubtime: "2022-07-20 14:00:03",
cretime: "60分钟",
haspub: false,
checked1: false,
checkedd: false,
},
{
key: 4,
lei: "考试",
// state: "草稿",
creater: "管理者考试",
// pubtime: "2022-07-20 14:00:03",
cretime: "20分钟",
haspub: true,
checked1: false,
checkedd: false,
},
{
key: 5,
lei: "案例",
// state: "草稿",
creater: "腾飞班1案例",
// pubtime: "2022-07-20 14:00:03",
cretime: "-",
haspub: true,
checked1: true,
checkedd: false,
},
],
tableData2: [
{
@@ -814,10 +740,13 @@ export default {
value2: "",
selectedRowKeys: [],
gqxy_hs: true,
isactive: -1,
isActive: false,
isactive: 0,
projectChecked: null, //项目单选框
addhomeworkvisible: false,
addtestvisible:false,
updateChapterID: null, //修改关卡id
// 表示当前触发列表的id,用来发送编辑和删除
ListChoosedId:0
});
//新建关卡
@@ -848,26 +777,67 @@ export default {
}
//编辑关卡
const updateChapter = () => {
let obj = {
chapterId: state.updateChapterID,
name: "",
remark:"",
routerId: 0,
};
api
.updateChapter(obj)
.then((res) => {
console.log("修改成功",res);
message.success("修改成功");
})
.catch((err) => {
console.log("修改失败",err);
})
};
// const updateChapter = () => {
// let obj = {
// chapterId: state.updateChapterID,
// name: "",
// remark:"",
// routerId: 0,
// };
// api
// .updateChapter(obj)
// .then((res) => {
// console.log("修改成功",res);
// message.success("修改成功");
// })
// .catch((err) => {
// console.log("修改失败",err);
// })
// };
const showDrawer = () => {
state.visible = true;
};
// 作业和考试的抽屉
const showDrawerAddHomework = () => {
state.addhomeworkvisible = true;
state.ListChoosedId = 0
};
const showDrawerAddTest = () => {
state.addtestvisible = true;
state.ListChoosedId = 0
};
// tableData数据赋值方法
const dataAssignment = () => {
console.log((state.level));
state.level[0].taskList.forEach((element,index) => {
state.tableData[index] = {
key:element.routerTaskId,
lei:checkType(element.type),
creater:element.name,
cretime:element.duration,
checked1:element.flag
}
});
}
const getDetail = (index) => {
GetRouterDetail(92).then((res) => {
state.level = res.data.data.chapterList
console.log(state.level);
if(index == 0) {
// state.tableData[1] = {
// key: 2,
// lei: "在线",
// creater: "管理者课程",
// cretime: "60",
// checked1: true,
// }
dataAssignment(0)
}
}).catch((err) => {
message.error(err)
})
}
const closeDrawer = () => {
state.visible = false;
};
@@ -994,7 +964,7 @@ export default {
编辑
</span>
<span style="color:#4EA6FF;cursor:pointer" onClick={() => {
updateChapter();
deleteLevelTask()
}}>删除</span>
</div>
</div>
@@ -1004,6 +974,10 @@ export default {
];
return columns;
};
const checkType = (index) => {
let typeRules = ["","在线","面授","案例","作业","考试","直播","外链","讨论","测评","评估","投票"];
return typeRules[index];
}
const tableDataFunc2 = () => {
const columns = [
{
@@ -1188,6 +1162,7 @@ export default {
document.getElementsByTagName("main")[0].style.background =
"rgb(245, 247, 250,1)";
document.getElementsByTagName("main")[0].style.boxShadow = "none";
getDetail(0)
});
onUnmounted(() => {
document.getElementsByTagName("main")[0].style.background = "#ffffff";
@@ -1196,7 +1171,7 @@ export default {
});
const changebgc = (index) => {
state.isactive = index;
state.isActive = !state.isActive;
dataAssignment(index);
};
const gqxy_hShow = () => {
state.gqxy_hs = !state.gqxy_hs;
@@ -1207,6 +1182,15 @@ export default {
const delete_exit = () => {
state.deleteAll = false;
};
const deleteLevelTask = () => {
RouterDeleteTask(state.listChoosedId).then((res) => {
console.log(`删除成功${res}`);
message.success('删除成功')
}).catch((err) => {
console.log(`删除失败${err}`);
})
}
return {
...toRefs(state),
tableDataFunc,
@@ -1226,7 +1210,10 @@ export default {
delete_exit,
drawertableColumns,
editChapter,
updateChapter,
// updateChapter,
showDrawerAddHomework,
showDrawerAddTest,
deleteLevelTask,
};
},
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,9 @@
<div class="inname">项目归属</div>
</div>
<div class="in">
<div style="color: #C7CBD2;font-size: 14px;margin-left: 15px">{{ projectAscription }}</div>
<div style="color: #c7cbd2; font-size: 14px; margin-left: 15px">
{{ projectAscription }}
</div>
</div>
</div>
<div class="name">
@@ -224,9 +226,10 @@
</template>
<script>
import { reactive, toRefs, ref } from "vue";
import { message } from 'ant-design-vue';
import { message } from "ant-design-vue";
import { useRouter, useRoute } from "vue-router";
import * as api from "../../api/index";
import { storage } from '../../api/storage';
export default {
name: "sonProject",
@@ -242,17 +245,21 @@ export default {
valueE1: null,
valueE2: null,
projectAscription:'',
projectAscription: "",
});
const projectName = ref('');
const projectName = ref("");
state.projectAscription = routers.query.name;
if (routers.query.name) {
storage.set("editproject", routers.query)
}
const classifyList = ref([
{ value: 1, label: '管理者' },
{ value: 2, label: '领军者' },
{ value: 3, label: '产业人' },
{ value: 1, label: "管理者" },
{ value: 2, label: "领军者" },
{ value: 3, label: "产业人" },
]);
let projectType = "";
@@ -264,23 +271,23 @@ export default {
function getBase64(img, callback) {
const reader = new FileReader();
reader.addEventListener('load', () => callback(reader.result));
reader.addEventListener("load", () => callback(reader.result));
reader.readAsDataURL(img);
}
const fileList = ref([]);
const fileList1 = ref([]);
const loading = ref(false);
const imageUrl = ref('');
let picUrl = '';
const imageUrl = ref("");
let picUrl = "";
const handleChange = (info) => {
if (info.file.status === 'uploading') {
if (info.file.status === "uploading") {
loading.value = true;
return;
}
if (info.file.status === 'done') {
console.log('上传图片返回的信息 %o', info)
if (info.file.status === "done") {
console.log("上传图片返回的信息 %o", info);
picUrl = info.file.response.data;
// Get this url from response in real world.
getBase64(info.file.originFileObj, (base64Url) => {
@@ -288,9 +295,9 @@ export default {
loading.value = false;
});
}
if (info.file.status === 'error') {
if (info.file.status === "error") {
loading.value = false;
message.error('upload error');
message.error("upload error");
}
};
@@ -299,12 +306,17 @@ export default {
let attach = "";
let attachData = "";
const handleChange1 = (info) => {
if (info.file.status === 'uploading') {
if (info.file.status === "uploading") {
loading.value = true;
return;
}
if (info.file.status === 'done') {
console.log('上传附件返回的信息 %o', info, info.fileList.length, uplodaFileCount)
if (info.file.status === "done") {
console.log(
"上传附件返回的信息 %o",
info,
info.fileList.length,
uplodaFileCount
);
let attachStr = "";
attachData = info.fileList;
@@ -312,10 +324,10 @@ export default {
if (attachData.length - 1 == i) {
attachStr += attachData[i].response.data;
} else {
attachStr += attachData[i].response.data + ',';
attachStr += attachData[i].response.data + ",";
}
}
console.log(attachStr)
console.log(attachStr);
attach = attachStr;
if (info.fileList.length > 5) {
@@ -324,20 +336,21 @@ export default {
uplodaFileCount = false;
}
}
if (info.file.status === 'error') {
if (info.file.status === "error") {
loading.value = false;
message.error('upload error');
message.error("upload error");
}
};
const beforeUpload = (file) => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
const isJpgOrPng =
file.type === "image/jpeg" || file.type === "image/png";
if (!isJpgOrPng) {
message.error('You can only upload JPG file!');
message.error("You can only upload JPG file!");
}
const isLt2M = file.size / 1024 / 1024 < 1;
if (!isLt2M) {
message.error('Image must smaller than 1MB!');
message.error("Image must smaller than 1MB!");
}
return isJpgOrPng && isLt2M;
};
@@ -345,112 +358,114 @@ export default {
const beforeUpload1 = () => {
return new Promise((resovle, reject) => {
if (uplodaFileCount) {
message.info("上传文件数量已达最大数量")
message.info("上传文件数量已达最大数量");
return reject(false);
}
return resovle(true);
})
});
};
let beginTime = "";
let endTime = "";
const onRangeChange = (value, dateString) => {
console.log('Selected Time: ', value);
console.log("Selected Time: ", value);
// 项目时间选择函数
console.log('Formatted Selected Time: ', dateString);
console.log('Formatted Selected TimeStamp', new Date(dateString[0]).getTime())
console.log("Formatted Selected Time: ", dateString);
console.log(
"Formatted Selected TimeStamp",
new Date(dateString[0]).getTime()
);
beginTime = new Date(dateString[0]).getTime() / 1000;
endTime = new Date(dateString[1]).getTime() / 1000;
};
// 项目经理 后续接口调用
const classifyList1 = ref([
{ value: 1, label: '李俊国' },
{ value: 2, label: '将小米' },
{ value: 3, label: '刘孟君' },
{ value: 1, label: "李俊国" },
{ value: 2, label: "将小米" },
{ value: 3, label: "刘孟君" },
]);
let manager = "";
let managerId = "";
const classificationChange1 = (key) => {
console.log(`selected ${key}`, classifyList1);
let mstr = '';
let midstr = '';
let mstr = "";
let midstr = "";
for (let i = 0; i < key.length; i++) {
if (key.length - 1 !== i) {
midstr += key[i] + ',';
mstr += classifyList1.value[i].label + ',';
midstr += key[i] + ",";
mstr += classifyList1.value[i].label + ",";
} else {
midstr += key[i];
mstr += classifyList1.value[i].label;
}
}
console.log(mstr, midstr)
console.log(mstr, midstr);
manager = mstr;
managerId = midstr;
};
// 资源归属 sourceBelongId 后续给接口
const classifyList2 = ref([
{ value: 1, label: '项目一' },
{ value: 2, label: '项目二' },
{ value: 3, label: '项目三' },
{ value: 1, label: "项目一" },
{ value: 2, label: "项目二" },
{ value: 3, label: "项目三" },
]);
const classificationChange2 = (key) => {
console.log(`selected ${key}`, classifyList2);
}
};
// 项目级别
const classifyList3 = ref([
{ value: 1, label: '集团级' },
{ value: 2, label: '组织级' },
{ value: 3, label: '现地级' },
{ value: 4, label: '部门级' },
{ value: 1, label: "集团级" },
{ value: 2, label: "组织级" },
{ value: 3, label: "现地级" },
{ value: 4, label: "部门级" },
]);
const classificationChange3 = (key) => {
console.log(`selected ${key}`, classifyList3);
}
};
// 培训体系
const classifyList4 = ref([
{ value: 1, label: '集团级' },
{ value: 2, label: '组织级' },
{ value: 3, label: '现地级' },
{ value: 4, label: '部门级' },
{ value: 1, label: "集团级" },
{ value: 2, label: "组织级" },
{ value: 3, label: "现地级" },
{ value: 4, label: "部门级" },
]);
const classificationChange4 = (key) => {
console.log(`selected ${key}`, classifyList4);
}
};
// 模版
const classifyList5 = ref([
{ value: 1, label: '模版一' },
{ value: 2, label: '模版二' },
{ value: 3, label: '模版三' },
{ value: 4, label: '模版四' },
{ value: 1, label: "模版一" },
{ value: 2, label: "模版二" },
{ value: 3, label: "模版三" },
{ value: 4, label: "模版四" },
]);
const classificationChange5 = (key) => {
console.log(`selected ${key}`, classifyList5);
}
};
// 项目说明
const remark = ref('');
const remark = ref("");
let courseSyncFlag = 0;
const changeChecked = () => {
console.log(state.checked)
state.checked ? state.checked = false : state.checked = true;
console.log(state.checked);
state.checked ? (state.checked = false) : (state.checked = true);
courseSyncFlag = state.checked ? 1 : 0;
}
};
let boeFlag = 0;
const changeChecked1 = () => {
console.log(state.checked1)
state.checked1 ? state.checked1 = false : state.checked1 = true;
console.log(state.checked1);
state.checked1 ? (state.checked1 = false) : (state.checked1 = true);
boeFlag = state.checked1 ? 1 : 0;
}
};
const removeFile = (file) => {
const index = fileList1.value.indexOf(file);
@@ -463,85 +478,87 @@ export default {
attachStr = "";
}
for (let i = 0; i < fileList1["value"].length; i++) {
console.log(fileList1["value"][i].response.data)
console.log(fileList1["value"][i].response.data);
if (fileList1["value"].length - 1 == i) {
attachStr += fileList1["value"][i].response.data;
} else {
attachStr += fileList1["value"][i].response.data + ',';
attachStr += fileList1["value"][i].response.data + ",";
}
}
attach = attachStr;
}
};
const errorMsgs = {
"name": "请输入项目名称",
"category": "请选择项目分类",
"picUrl": "请上传项目封面图",
"beginTime": "请选择项目开始时间",
"endTime": "请选择项目结束时间",
"manager": "请选择项目经理",
"managerId": "请选择项目经理",
"sourceBelongId": "请选择资源归属",
"level": "请填写项目级别",
"systemId": "请填写项目培训体系",
"boeFlag": "请选择是否BOE实施",
"attach": "请上传附件"
}
name: "请输入项目名称",
category: "请选择项目分类",
picUrl: "请上传项目封面图",
beginTime: "请选择项目开始时间",
endTime: "请选择项目结束时间",
manager: "请选择项目经理",
managerId: "请选择项目经理",
sourceBelongId: "请选择资源归属",
level: "请填写项目级别",
systemId: "请填写项目培训体系",
boeFlag: "请选择是否BOE实施",
attach: "请上传附件",
};
const createProject = () => {
let obj = {
"name": projectName["value"],
"category": projectType,
"picUrl": picUrl,
"beginTime": beginTime,
"endTime": endTime,
"manager": manager,
"managerId": managerId,
"sourceBelongId": 11,
"remark": remark["value"],
"courseSyncFlag": courseSyncFlag,
"level": 3,
"systemId": 4,
"boeFlag": boeFlag,
"attach": attach,
"type": 3,
"templateId": 10,
"parentId": routers.query.projectId,
"notice": "",
"noticeFlag": 0,
"status": 0
}
console.log('提交的数据格式 %o', obj)
name: projectName["value"],
category: projectType,
picUrl: picUrl,
beginTime: beginTime,
endTime: endTime,
manager: manager,
managerId: managerId,
sourceBelongId: 11,
remark: remark["value"],
courseSyncFlag: courseSyncFlag,
level: 3,
systemId: 4,
boeFlag: boeFlag,
attach: attach,
type: 3,
templateId: 10,
parentId: routers.query.projectId,
notice: "",
noticeFlag: 0,
status: 0,
};
console.log("提交的数据格式 %o", obj);
for (let i in errorMsgs) {
console.log(obj[i])
console.log(obj[i]);
if (obj[i] === "" || obj[i] === undefined) {
message.destroy()
message.warning(errorMsgs[i])
return
message.destroy();
message.warning(errorMsgs[i]);
return;
}
}
api.createProject(obj).then(res => {
console.log(res)
if (res.status == 200 && res.data.code == 200) {
api
.createProject(obj)
.then((res) => {
console.log(res);
if (res.status == 200 && res.data.code == 200) {
message.destroy();
message.success("创建成功");
setTimeout(() => {
router.push({
path: "/taskpage",
query: { id: res.data.data.projectId },
});
}, 1000);
} else {
message.destroy();
message.error("创建失败,请检查当前网络状态。");
}
})
.catch((err) => {
console.log(err);
message.destroy();
message.success("创建成功")
setTimeout(() => {
router.push({
path: '/taskpage',
query: { id: res.data.data.projectId }
});
}, 1000);
} else {
message.destroy();
message.error("创建失败,请检查当前网络状态。")
}
}).catch(err => {
console.log(err)
message.destroy();
message.error("创建失败,请检查当前网络状态。")
})
message.error("创建失败,请检查当前网络状态。");
});
};
return {
@@ -573,9 +590,9 @@ export default {
changeChecked1,
uplodaFileCount,
createProject,
removeFile
removeFile,
};
}
},
};
</script>
<style lang="scss">
@@ -584,7 +601,7 @@ export default {
// height: inherit;
// flex: 1;
// flex-shrink: 0;
// overflow-y: scroll;
// overflow-y: auto;
.header {
width: 100%;
@@ -872,4 +889,3 @@ export default {
}
}
</style>

View File

@@ -526,7 +526,14 @@
</template>
<script>
import { reactive, toRefs, onMounted, onUnmounted, onUpdated } from "vue";
import {
reactive,
toRefs,
onMounted,
onUnmounted,
onUpdated,
watch,
} from "vue";
import AddOnline from "../../components/drawers/AddOnline.vue";
import EditOnline from "../../components/drawers/EditOnline.vue";
import AddFaceteach from "../../components/drawers/AddFaceteach.vue";
@@ -548,7 +555,13 @@ import * as apidiscuss from "../../api/indexDiscuss";
import * as apiactivity from "../../api/indexActivity";
import * as apieval from "../../api/indexEval";
import * as apiinvist from "../../api/indexInvist";
import * as apivote from "../../api/indexVote";
import * as apistage from "../../api/indexStage";
<<<<<<< HEAD
import * as apistage from "../../api/indexStage";
=======
import * as apivote from "../../api/indexVote";
>>>>>>> 096d42b09e588582d20dd3350d5115d6678da009
const drawercolumns = [
{
title: "项目名称",
@@ -872,8 +885,9 @@ export default {
deleteInvistID: 4, //评估
deleteDiscussID: null, //删除讨论id
deleteActivityID: null, //删除活动id
deleteID: "", //删除任务的taskID
deleteID: "",
});
const selectProjectName = (value, index) => {
console.log("value", value, index);
};
@@ -937,7 +951,7 @@ export default {
: value.type == 12
? "投票"
: "-",
creater: value.name,
creater: value.name,
cretime: value.duration ? value.duration : "-",
checked1: value.flag ? true : false,
};
@@ -1094,6 +1108,16 @@ export default {
console.log("获取任务列表失败", err);
});
};
watch(
state.tableData,
() => {
getTask();
},
{
deep: true,
}
);
//删除直播
const deleteLiveBroadcast = () => {
let obj = {
@@ -1225,8 +1249,8 @@ export default {
//删除测评测试
const deleteEvalText = () => {
let obj = {
evaluationId: state.deleteEvalID,
token: "",
evaluationId: "",
token: 123,
};
apieval
.deleteEvaluationById(obj)
@@ -1389,8 +1413,8 @@ export default {
});
};
//删除任务
const deleteTask = () => {
//删除任务
const deleteTask = () => {
let obj = { projectTaskIds: state.deleteID };
api
.deleteTask(obj)
@@ -1401,6 +1425,59 @@ export default {
console.log(err);
});
};
//删除投票信息
const deleteVoteText = () => {
let obj = {
voteId: "",
};
apivote
.deleteVoteMessage(obj)
.then((res) => {
console.log("删除成功", res);
message.success("删除成功");
//重新获取列表
getTask();
})
.catch((err) => {
console.log("删除失败", err);
});
};
//编辑投票信息
const editVotePath = () => {
let obj = {
baseVote: "",
createTime: "",
createUser: 0,
stem: "",
stemId: 0,
updateTime: "",
updateUser: 0,
voteEndTime: "",
voteExplain: "",
voteFlag: "",
voteId: 0,
voteName: "",
voteStartTime: "",
voteTag: "",
};
apivote
.editVote(obj)
.then((res) => {
setTimeout(() => {
console.log("修改成功", res);
message.success("修改成功");
}, 1000);
})
.catch((err) => {
console.log("修改失败", err);
// state.createLoading = false;
//重新获取列表
getTask();
});
};
const onSelectChange = (selectedRowKeys) => {
console.log("selectedRowKeys changed: ", selectedRowKeys);
state.selectedRowKeys = selectedRowKeys;
@@ -1423,6 +1500,7 @@ export default {
//关闭确认框
state.deleteModal = false;
deleteTask();
message.success("删除成功");
};
const closeModal = () => {
state.stage = false;
@@ -1540,12 +1618,14 @@ export default {
deleteEvalText,
deleteExternalChain,
deleteActivity,
deleteVoteText,
editActivity,
editEvalPath,
deleteInvistText,
editLiveBroadcast,
editExternal,
editInvistPath,
editVotePath,
getTableData,
deleteTask,
editStage,
@@ -1806,7 +1886,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {

View File

@@ -62,6 +62,22 @@
>
跳转
</div>
<draggable
v-model="draggableList"
chosenClass="chosen"
forceFallback="true"
group="people"
animation="1000"
@start="onStart"
@end="onEnd"
:list="draggableList"
>
<template #item="{ element }">
<div class="item" :key="element.id">
{{ element.name }}
</div>
</template>
</draggable>
</div>
</template>
<script>
@@ -76,12 +92,14 @@ import * as api from "../../api/index1";
// reader.readAsDataURL(img);
// }
import { useRouter } from "vue-router";
import draggable from "vuedraggable";
export default {
name: "SystemManage",
components: {
AddVote,
// LoadingOutlined,
// PlusOutlined,
draggable,
},
setup() {
const state = reactive({
@@ -91,38 +109,30 @@ export default {
loading: false,
fileList: [],
voteList: [
draggableList: [
{
id: 1,
stem: "题干一", //题干
options: [
{
id: 1,
option: "选项一",
imgUrl: "",
},
{
id: 2,
option: "选项二",
imgUrl: "",
},
],
name: "拖拽一",
},
{
id: 2,
stem: "题干二", //题干
options: [
{
id: 1,
option: "选项一",
imgUrl: "",
},
{
id: 2,
option: "选项二",
imgUrl: "",
},
],
name: "拖拽二",
},
{
id: 3,
name: "拖拽三",
},
{
id: 4,
name: "拖拽四",
},
{
id: 5,
name: "拖拽五",
},
{
id: 6,
name: "拖拽六",
},
],
});
@@ -226,6 +236,12 @@ export default {
right: 0px;
bottom: 0px;
}
.item {
width: 100px;
height: 50px;
background-color: pink;
border: 1px solid #000;
}
}
.drawerStyle {
.drawerMain {