模板库列表

This commit is contained in:
zhangyc
2022-11-24 09:58:36 +08:00
parent 64cac787d4
commit a1cc502454
3 changed files with 476 additions and 121 deletions

View File

@@ -0,0 +1,443 @@
<template>
<div class="draw" style="position: relative">
<a-drawer
v-model:visible="addprojvisible"
class="drawerStyle ProjectDrawer"
title="关联项目"
placement="right"
width="80%"
@after-visible-change="afterProjVisibleChange"
>
<div class="drawerMain">
<div class="header">
<div class="headerTitle">关联项目</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="leaveProjDrawer"
/>
</div>
<div class="drawerbox">
<a-table
:columns="drawertableColumns()"
:data-source="drawertableData"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:loading="tableDataTotal === -1 ? true : false"
:scroll="{ x: 700 }"
@expand="expandTable"
:pagination="false"
>
</a-table>
</div>
<div class="btnn">
<button @click="leaveProjDrawer" class="btn1">取消</button>
<button @click="updateTask" class="btn2">确定</button>
</div>
</div>
</a-drawer>
</div>
</template>
<script>
import { reactive, toRefs } from "vue";
import * as api from "../../api/indexDiscuss";
import * as apiTask from "../../api/indexTaskadd";
import { RouterEditTask } from "@/api/indexTask";
import { message } from "ant-design-vue";
import * as apiProj from "../../api/index.js";
import dayjs from "dayjs";
export default {
name: "AddProject",
props: {
adddiscussVisible: {
type: Boolean,
default: false,
},
EditProjectId: {
type: Number,
default: null,
},
edit: {
// 是否为编辑
type: Boolean,
default: null,
},
projectId: {
type: Number,
default: null,
},
chooseStageId: {
type: Number,
default: null,
},
routerTaskId: {
type: Number,
default: 0,
},
isLevel: {
// 是否是关卡页面触发
type: Number,
default: null,
},
projectTaskId: {
// 要编辑的projectId
type: Number,
default: null,
},
routerId: {
type: Number,
default: null,
},
isactive: {
type: Number,
default: null,
},
},
setup(props, ctx) {
const state = reactive({
inputV1: "",
inputV2: "",
textV1: "",
checkedC1: false,
discussSettings: "",
addLoading: false,
drawertableData: [
{
key: 1,
parentId:1,
name: '123',
manager:'afssfa',
children:[
{
key: 5,
parentId:1,
name: '123',
manager:'afssfa',
},
]
},
{
key: 2,
parentId:2,
name: '123',
manager:'afssfa',
children:[
{
key: 7,
parentId:1,
name: '123',
manager:'afssfa',
children:[
{
key: 9,
parentId:1,
name: '123',
manager:'afssfa',
},
]
},
]
},
{
key: 3,
parentId:3,
name: '123',
manager:'afssfa',
},
],
selectedRowKeys: [],
currentPage: 1,
tableDataTotal: 0,
pageSize: 10,
});
const start = () => {
state.loading = true;
// ajax request after empty completing
setTimeout(() => {
state.loading = false;
state.selectedRowKeys = [];
}, 1000);
};
const onSelectChange = selectedRowKeys => {
console.log('selectedRowKeys changed: ', selectedRowKeys);
state.selectedRowKeys = selectedRowKeys;
};
const closeDrawer = () => {
ctx.emit("update:adddiscussVisible", false);
ctx.emit("update:edit", false);
state.inputV1 = "";
state.textV1 = "";
message.success(`${props.edit ? "编辑" : "新增"}关卡任务成功`);
localStorage.setItem("stageId", props.chooseStageId);
localStorage.setItem("chapterId", props.isactive);
};
//获取全部项目信息接口
const getAllProjText = () => {
apiProj
.getProjectList({
"beginTime": 0,
"createName": "",
"endTime": "",
"manager": "",
"name": "",
"pageNo": 1,
"pageSize": 10,
"status": 0
})
.then((res) => {
let arr = res.data.data.rows;
if (res.status === 200) {
state.drawertableData = getTableDate(arr);
}
})
.catch(() => {
message.destroy()
message.error("获取全部项目信息接口失败")
});
};
const afterVisibleChange = (bool) => {
if (bool) {
getAllProjText();
}
};
const getTableDate = (data) => {
let array = []
data.map((value)=>{
if(value.type == 3){
let obj = {
key: value.projectId,
parentId:value.parentId,
projectId:value.projectId,
name: value.name,
manager:value.manager,
time: dayjs(value.createTime).format("YYYY-MM-DD"),
}
array.push(obj)
}
else {
let obj = {
key: value.projectId,
parentId:value.parentId,
name: value.name,
manager:value.manager,
time: dayjs(value.createTime).format("YYYY-MM-DD"),
children: value.subList ? getTableDate(value.subList) : [] ,
}
array.push(obj)
}
})
return array
};
//项目抽屉用的
const updateTask = (res) => {
if (props.isLevel == 1) {
RouterEditTask({
chapterId: props.isactive,
courseId: res.data.data.discussId,
name: res.data.data.discussName,
routerId: props.routerId,
routerTaskId: props.routerTaskId || 0,
type: 8,
})
.then(() => {
message.success(`${props.edit ? "编辑" : "新增"}关卡任务成功`);
})
.catch(() => {
message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`);
});
} else if (props.isLevel == 2) {
apiTask.addTask({
courseId: res.data.data.discussId,
duration: res.data.data.discussExplain,
name: res.data.data.discussName,
projectId: props.projectId,
projectTaskId: props.projectTaskId || 0,
stageId: props.chooseStageId,
type: 8,
});
} else if (props.isLevel == 3) {
console.log("");
}
};
const updateDiscussInfo = () => {
if (!state.inputV1) {
message.destroy();
return message.warning("请输入讨论名称");
}
let obj = {
discussName: state.inputV1, //讨论名称
discussExplain: state.textV1, //讨论说明
discussSettings: state.discussSettings, //讨论设置
discussId: props.edit ? props.EditDiscussId : 0, //讨论Id
projectId: 0, //项目id,接口多余字段,
};
if (props.edit) {
api
.updateDiscuss(obj)
.then((res) => {
updateTask(res);
closeDrawer();
ctx.emit("changeData", false);
})
.catch(() => {
});
} else {
api
.createDiscuss(obj)
.then((res) => {
updateTask(res);
closeDrawer();
ctx.emit("changeData", false);
})
.catch(() => {
});
}
};
return {
...toRefs(state),
afterVisibleChange,
closeDrawer,
updateDiscussInfo,
getTableDate,
start,
getAllProjText,
onSelectChange,
};
},
};
</script>
<style lang="scss">
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important;
}
.addrefDrawer {
.drawerMain {
.header {
height: 73px;
border-bottom: 1px solid #e8e8e8;
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
margin-left: 24px;
}
}
.contentMain {
display: flex;
justify-content: space-between;
.main_left {
margin-top: 32px;
padding-right: 30px;
flex: 1;
border-right: 1px solid #e8e8e8;
.main_item {
display: flex;
align-items: center;
margin-top: 32px;
margin-bottom: 32px;
.signbox {
width: 120px;
display: flex;
justify-content: end;
align-items: center;
.sign {
margin-right: 5px;
}
}
.btnbox {
display: flex;
flex: 1;
align-items: center;
.ant-input {
height: 100%;
}
.xkbtn {
cursor: pointer;
width: 130px;
height: 40px;
background: #388be1;
border-radius: 8px;
border: 0;
margin-right: 8px;
color: #fff;
}
}
}
.main_item2 {
display: flex;
align-items: flex-start;
margin-bottom: 32px;
.signbox {
width: 120px;
display: flex;
justify-content: end;
align-items: center;
.sign {
margin-right: 5px;
}
}
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
}
}
}
.main_btns {
height: 72px;
width: 100%;
bottom: 0;
left: 0;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.btn1 {
width: 100px;
height: 40px;
border: 1px solid #4ea6ff;
border-radius: 8px;
color: #4ea6ff;
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;
height: 40px;
background: #4ea6ff;
border-radius: 8px;
border: 0;
margin-left: 15px;
color: #fff;
}
}
}
}
</style>

View File

@@ -486,6 +486,19 @@
/> />
</div> </div>
<div class="text">项目</div> <div class="text">项目</div>
<div>
<add-project
v-model:addprojvisible="addprojvisible"
:isLevel="isLevel"
@changeData="updateTableData"
v-model:isactive="isactive"
v-model:edit="edit"
v-model:routerId="routerId"
v-model:chooseStageId="chooseStageId"
v-model:EditProjectId="EditProjectId"
v-model:routerTaskId="routerTaskId"
/>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -708,43 +721,8 @@
</div> </div>
</div> </div>
<div class="draw" style="position: relative">
<a-drawer
v-model:visible="addprojvisible"
class="drawerStyle ProjectDrawer"
title="关联项目"
placement="right"
width="80%"
@after-visible-change="afterProjVisibleChange"
>
<div class="drawerMain">
<div class="header">
<div class="headerTitle">关联项目</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="leaveProjDrawer"
/>
</div>
<div class="drawerbox">
<a-table
:columns="drawertableColumns()"
:data-source="drawertableData"
:row-selection="{selectedRowKeys:selectedProjRowKeys,onChange:onProjSelectChange}"
:loading="tableDataTotal === -1 ? true : false"
:scroll="{ x: 700 }"
@expand="expandTable"
:pagination="false"
>
</a-table>
</div>
<div class="btnn">
<button @click="leaveProjDrawer" class="btn1">取消</button>
<button @click="updateTask" class="btn2">确定</button>
</div>
</div>
</a-drawer>
</div>
</div> </div>
<div class="right" :style="{ display: gqxy_hs ? 'none' : 'block' }"> <div class="right" :style="{ display: gqxy_hs ? 'none' : 'block' }">
<div class="addhead"> <div class="addhead">
@@ -1055,6 +1033,7 @@ import AddInvist from "../../components/drawers/AddInvist.vue";
import AddVote from "../../components/vote/AddVote.vue"; import AddVote from "../../components/vote/AddVote.vue";
import AddLive from "../../components/drawers/AddLive.vue"; import AddLive from "../../components/drawers/AddLive.vue";
import AddRef from "../../components/drawers/AddRef.vue"; import AddRef from "../../components/drawers/AddRef.vue";
import AddProject from "../../components/drawers/AddProject.vue";
import AddFaceteach from "../../components/drawers/AddFaceteach.vue"; import AddFaceteach from "../../components/drawers/AddFaceteach.vue";
import * as api from "../../api/indexLevel"; import * as api from "../../api/indexLevel";
import { GetRouterDetail } from "../../api/indexTask"; import { GetRouterDetail } from "../../api/indexTask";
@@ -1063,9 +1042,9 @@ import { storage } from "../../api/storage";
import { deleteStudyTask } from "../../api/indexStudy"; import { deleteStudyTask } from "../../api/indexStudy";
import draggable from "vuedraggable"; import draggable from "vuedraggable";
import { editTask } from "../../api/indexTaskadd"; import { editTask } from "../../api/indexTaskadd";
import * as apiProj from "../../api/index.js";
import { RouterEditTask } from "@/api/indexTask"; import { RouterEditTask } from "@/api/indexTask";
import dayjs from "dayjs";
import { toDate } from "../../api/method"; import { toDate } from "../../api/method";
import UnlockMode from "../../components/drawers/UnlockMode.vue"; import UnlockMode from "../../components/drawers/UnlockMode.vue";
export default { export default {
@@ -1087,6 +1066,7 @@ export default {
draggable, draggable,
UnlockMode, UnlockMode,
AddFaceteach, AddFaceteach,
AddProject,
}, },
setup() { setup() {
const state = reactive({ const state = reactive({
@@ -1267,7 +1247,7 @@ export default {
EditVoteId: "", EditVoteId: "",
EditFaceId: "", EditFaceId: "",
//项目 //项目
EditProjId: "", EditProjectId: "",
routerTaskId: "", routerTaskId: "",
chapterId: "", chapterId: "",
stageId: "", stageId: "",
@@ -1485,7 +1465,7 @@ export default {
//打开项目抽屉 //打开项目抽屉
const showDrawerAddProj = (id, eleId) => { const showDrawerAddProj = (id, eleId) => {
state.addprojvisible = true; state.addprojvisible = true;
state.EditActiveId = id; state.EditProjectId = id;
state.routerTaskId = eleId; state.routerTaskId = eleId;
}; };
//关闭项目抽屉 //关闭项目抽屉
@@ -1557,11 +1537,7 @@ export default {
message.error(err); message.error(err);
}); });
}; };
const afterProjVisibleChange = (bol) => {
if(bol == true){
getAllProjText()
}
};
const showAddStu = () => { const showAddStu = () => {
state.AddSvisible = true; state.AddSvisible = true;
}; };
@@ -1947,69 +1923,7 @@ export default {
console.log("阶段改变", value, option); console.log("阶段改变", value, option);
state.removeStageId = option.chapterId; state.removeStageId = option.chapterId;
}; };
//项目抽屉用的
const onProjSelectChange = (selectedRowKeys,selectedRows) => {
state.selectedProjRowKeys = selectedRowKeys
// if(selectedRowKeys.length>1){
// return
// }
state.projId = selectedRows[0].projectId
state.projName = selectedRows[0].name
console.log(state.projId,'------------------');
// console.log(selectedRowKeys,selectedRows);
}
const getTableDate = (data) => {
let array = []
data.map((value)=>{
if(value.type == 3){
let obj = {
key: value.projectId,
parentId:value.parentId,
projectId:value.projectId,
name: value.name,
manager:value.manager,
time: dayjs(value.createTime).format("YYYY-MM-DD"),
}
array.push(obj)
}
else {
let obj = {
key: value.projectId,
parentId:value.parentId,
name: value.name,
manager:value.manager,
time: dayjs(value.createTime).format("YYYY-MM-DD"),
children: value.subList ? getTableDate(value.subList) : [] ,
}
array.push(obj)
}
})
return array
};
//获取全部项目信息接口
const getAllProjText = () => {
apiProj
.getProjectList({
"beginTime": 0,
"createName": "",
"endTime": "",
"manager": "",
"name": "",
"pageNo": 1,
"pageSize": 10,
"status": 0
})
.then((res) => {
let arr = res.data.data.rows;
if (res.status === 200) {
state.drawertableData = getTableDate(arr);
}
})
.catch(() => {
message.destroy()
message.error("获取全部项目信息接口失败")
});
};
//添加关卡项目 //添加关卡项目
const updateTask = () => { const updateTask = () => {
RouterEditTask({ RouterEditTask({
@@ -2044,7 +1958,6 @@ export default {
tableDataFunc2, tableDataFunc2,
showModal, showModal,
closeModal, closeModal,
afterProjVisibleChange,
showAddStu, showAddStu,
showImpStu, showImpStu,
// drawercolumns, // drawercolumns,
@@ -2084,9 +1997,7 @@ export default {
showChangeModal, showChangeModal,
closeChangeModal, closeChangeModal,
handleChangeStage, handleChangeStage,
onProjSelectChange,
getTableDate,
getAllProjText,
updateTask, updateTask,
showDeleteChapter, showDeleteChapter,

View File

@@ -99,6 +99,9 @@ export default defineComponent({
const state = reactive({ const state = reactive({
value1: null, value1: null,
time:null, time:null,
currentPage: 1,
pageSize: 10,
total:0,
tableData1: [ tableData1: [
{ {
key: "1", key: "1",
@@ -168,9 +171,9 @@ export default defineComponent({
state.tableData = data; state.tableData = data;
}; };
const pagination = reactive({ const pagination = reactive({
current: 1, current: state.currentPage,
total: 50, total: state.total,
defaultPageSize: 10, defaultPageSize: state.pageSize,
onChange: (id) => { pagination.current = id; getLibraryList() }, onChange: (id) => { pagination.current = id; getLibraryList() },
}) })
getTableDate1(); getTableDate1();
@@ -181,14 +184,12 @@ export default defineComponent({
// 获取模板列表 // 获取模板列表
const getLibraryList = () => { const getLibraryList = () => {
let date = Math.ceil(new Date(state.time).getTime() / 1000); let date = Math.ceil(new Date(state.time).getTime() / 1000);
let obj = { let obj = {
// "create_time": state.time, "createTime" : date==0?null:date,
"beginTime":date,
"name": state.value1, "name": state.value1,
"pageNo": pagination.current, "pageNo": pagination.current,
"pageSize": 10, "pageSize": state.pageSize,
} }
api.templateList(obj).then((res) => { api.templateList(obj).then((res) => {
state.tableData1 = [] state.tableData1 = []