增加项目的查看及学习路径项目的复制

This commit is contained in:
lixg
2022-11-16 11:45:17 +08:00
parent 79ad5d7ae5
commit f1692b0669
6 changed files with 1273 additions and 1006 deletions

View File

@@ -1,4 +1,12 @@
import { createRouter, createWebHashHistory } from 'vue-router';
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-09 09:26:26
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-16 09:56:16
* @FilePath: /fe-manage/src/router/index.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { createRouter,createWebHistory } from 'vue-router';
import routesConfig from './config';
console.log('routesConfig', routesConfig)
@@ -12,7 +20,7 @@ const routes = [
]
const router = createRouter({
history: createWebHashHistory(),
history: createWebHistory(),
routes
})

View File

@@ -40,11 +40,11 @@
<div style="display: flex; margin-bottom: 20px">
<div class="btn btn1" @click="searchLearnPath">
<div class="search"></div>
<div class="btnText" >搜索</div>
<div class="btnText">搜索</div>
</div>
<div class="btnn btn2" @click="resetLearnPath">
<div class="search"></div>
<div class="btnText" >重置</div>
<div class="btnText">重置</div>
</div>
</div>
</div>
@@ -196,7 +196,7 @@
@click="chooseImg(item)"
v-for="item in imgData"
:key="item.key"
class="learnBgItem"
class="learnBgItem"
:style="{
border:
learnPathBg === item.id
@@ -263,7 +263,7 @@
v-model:value="pathName"
maxlength="20"
style="border-radius: 4px"
placeholder="请输入学习路径名称"
placeholder="请输入学习路径名称"
/>
<div class="showcount">{{ pathName.length }}/20</div>
</div>
@@ -430,11 +430,11 @@
<span>您确定要复制此路径吗</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1" @click="delete_exit">
<div class="btnText" >取消</div>
<div class="del_btn btn1" @click="closeCopyModal">
<div class="btnText">取消</div>
</div>
<div class="del_btn btn2" @click="delete_exit">
<div class="btnText" >确定</div>
<div class="del_btn btn2" @click="copyLearnPath">
<div class="btnText">确定</div>
</div>
</div>
</div>
@@ -465,16 +465,16 @@
</div>
<div class="del_btnbox">
<div class="del_btn btn1" @click="closeStopModal">
<div class="btnText" >取消</div>
<div class="btnText">取消</div>
</div>
<div class="del_btn btn2" @click="stopLearnPath">
<div class="btnText" >确定</div>
<div class="btnText">确定</div>
</div>
</div>
</div>
</div>
</a-modal>
<!-- 结束路径弹窗 -->
<!-- 删除路径弹窗 -->
<a-modal
v-model:visible="deleteModal"
:footer="null"
@@ -495,10 +495,10 @@
</div>
<div class="del_btnbox">
<div class="del_btn btn1" @click="closeDeleteModal">
<div class="btnText" >取消</div>
<div class="btnText">取消</div>
</div>
<div class="del_btn btn2" @click="deleteLearnPath">
<div class="btnText" >确定</div>
<div class="btnText">确定</div>
</div>
</div>
</div>
@@ -525,10 +525,10 @@
</div>
<div class="del_btnbox">
<div class="del_btn btn1" @click="delete_exit">
<div class="btnText" >取消</div>
<div class="btnText">取消</div>
</div>
<div class="del_btn btn2" @click="delete_exit">
<div class="btnText" >确定</div>
<div class="btnText">确定</div>
</div>
</div>
</div>
@@ -556,10 +556,10 @@
</div>
<div class="del_btnbox">
<div class="del_btn btn1" @click="closeBackModal">
<div class="btnText" >取消</div>
<div class="btnText">取消</div>
</div>
<div class="del_btn btn2" @click="recallPath">
<div class="btnText" >确定</div>
<div class="btnText">确定</div>
</div>
</div>
</div>
@@ -724,6 +724,7 @@ export default {
routeStudentsNum: 0,
recallPathId: null, //撤回路径id
stopPathId: null, //停用路径id
copyPathId: null, //复制路径iid
lpLoading: false,
});
@@ -816,12 +817,34 @@ export default {
const closePub = () => {
state.pub = false;
};
//显示复制窗口
const showCopyModal = () => {
state.copyModal = true;
};
//关闭复制窗口
const closeCopyModal = () => {
state.copyModal = false;
};
//确认复制
const copyLearnPath = () => {
let obj = {
routerId: state.copyPathId,
type: 2,
};
api
.handleLearnPath(obj)
.then((res) => {
console.log("复制成功", res);
message.destroy();
message.success("复制成功");
state.copyModal = false;
getLearnPath();
})
.catch((err) => {
console.log("复制失败", err);
});
};
//显示结束窗口
const showStopModal = () => {
state.stopModal = true;
@@ -1137,13 +1160,14 @@ export default {
>
<div
onClick={() => {
state.copyPathId = text.record.id;
showCopyModal();
}}
>
复制
</div>
</a-select-option>
<a-select-option
value="删除"
label="删除"
@@ -1177,6 +1201,7 @@ export default {
>
<div
onClick={() => {
state.copyPathId = text.record.id;
showCopyModal();
}}
>
@@ -1197,20 +1222,20 @@ export default {
撤回
</div>
</a-select-option>
<a-select-option
value="结束"
label="结束"
style="padding-left:35px"
>
<div
onClick={() => {
state.stopPathId = text.record.id;
showStopModal();
}}
<a-select-option
value="结束"
label="结束"
style="padding-left:35px"
>
结束
</div>
</a-select-option>
<div
onClick={() => {
state.stopPathId = text.record.id;
showStopModal();
}}
>
结束
</div>
</a-select-option>
</a-select>
</div>
) : (
@@ -1230,6 +1255,7 @@ export default {
>
<div
onClick={() => {
state.copyPathId = text.record.id;
showCopyModal();
}}
>
@@ -1322,7 +1348,7 @@ export default {
state.lpLoading = false;
state.currentPage = 1;
router.push("/leveladd");
storage.set("routerId", res.data.data.routerId);
storage.set("routerId", res.data.data.routerId);
// getLearnPath();
}, commonData.timeout);
})
@@ -1491,6 +1517,7 @@ export default {
closeCopyModal,
showStopModal,
closeStopModal,
copyLearnPath,
stopLearnPath,
showDeleteModal,
closeDeleteModal,
@@ -1645,20 +1672,19 @@ export default {
cursor: pointer;
}
}
.learnBg{
.learnBg {
display: flex;
flex-wrap: wrap;
min-height: 110px;
.learnBgItem{
border-radius: 8px;
.learnBgItem {
border-radius: 8px;
width: 136px;
height: 106px;
background-size: 100%;
background-repeat: no-repeat;
margin-bottom: 20px;
margin-right: 6px;
}
margin-bottom: 20px;
margin-right: 6px;
}
}
}
.info {

File diff suppressed because it is too large Load Diff

View File

@@ -28,6 +28,7 @@
placeholder="请输入项目名称"
show-count
:maxlength="30"
:disabled="viewDetail ? true : false"
/>
</div>
</div>
@@ -53,6 +54,7 @@
@change="classificationChange"
allowClear
showSearch
:disabled="viewDetail ? true : false"
>
</a-select>
</div>
@@ -86,6 +88,7 @@
action="/api/file/upload"
:before-upload="beforeUpload"
@change="handleChange"
:disabled="viewDetail ? true : false"
>
<img
style="
@@ -124,6 +127,7 @@
v-model:value="rangevalue"
style="width: 100%; height: 40px; border-radius: 5px"
@change="onRangeChange"
:disabled="viewDetail ? true : false"
/>
</div>
</div>
@@ -150,6 +154,7 @@
@change="classificationChange1"
allowClear
showSearch
:disabled="viewDetail ? true : false"
>
</a-select>
</div>
@@ -174,6 +179,7 @@
placeholder="自动带出 可修改"
:options="classifyList2"
@change="classificationChange2"
:disabled="viewDetail ? true : false"
/>
</div>
</div>
@@ -188,6 +194,7 @@
placeholder="请输入说明"
show-count
:maxlength="200"
:disabled="viewDetail ? true : false"
/>
</div>
</div>
@@ -196,7 +203,10 @@
<div class="inname">同步学习记录</div>
</div>
<div class="in">
<a-radio @click="changeChecked" v-model:checked="checked"
<a-radio
@click="changeChecked"
v-model:checked="checked"
:disabled="viewDetail ? true : false"
><span
style="
width: 100%;
@@ -227,6 +237,7 @@
:options="classifyList3"
@change="classificationChange3"
placeholder="集团级/组织级/现地级/部门级"
:disabled="viewDetail ? true : false"
/>
</div>
</div>
@@ -249,6 +260,7 @@
:options="classifyList4"
@change="classificationChange4"
placeholder="集团级/组织级/现地级/部门级"
:disabled="viewDetail ? true : false"
/>
</div>
</div>
@@ -261,7 +273,10 @@
<div class="inname">是否BOEU实施</div>
</div>
<div class="in">
<a-radio @click="changeChecked1" v-model:checked="checked1"
<a-radio
@click="changeChecked1"
v-model:checked="checked1"
:disabled="viewDetail ? true : false"
><span
style="
width: 100%;
@@ -509,6 +524,7 @@ export default {
tableDataTotal: -1, //模版列表总数
pageSize: 10, //每页10条数据
totalPages: 0, //总页数
viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null,
});
const projectName = ref("");

View File

@@ -816,10 +816,10 @@
<span>您确定要复制此路径吗</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1" @click="delete_exit">
<div class="del_btn btn1" @click="closeCopyModal">
<div class="btnText">取消</div>
</div>
<div class="del_btn btn2" @click="delete_exit">
<div class="del_btn btn2" @click="copyProject">
<div class="btnText">确定</div>
</div>
</div>
@@ -1093,6 +1093,7 @@ export default {
finishProjectId: null, //结束的项目id
deleteProjectId: null, //删除的项目id
templateProjectId: null, //存为模版的项目id
copyProjectId: null, //复制项目id
});
// 数据接入 - start -
const router = useRouter();
@@ -1922,6 +1923,34 @@ export default {
const closeStartModal = () => {
state.startModal = false;
};
//打开确认复制弹窗
const showCopyModal = (projectId) => {
state.copyModal = true;
state.copyProjectId = projectId;
};
//关闭确认复制弹窗
const closeCopyModal = () => {
state.copyModal = false;
};
//确认复制
const copyProject = () => {
let obj = {
projectId: state.copyProjectId,
type: 2,
};
api
.handleProject(obj)
.then((res) => {
console.log("复制成功", res);
message.destroy();
message.success("复制成功");
state.copyModal = false;
getTableDate();
})
.catch((err) => {
console.log("复制失败", err);
});
};
// 数据接入 - end -
@@ -2119,7 +2148,7 @@ export default {
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal();
showCopyModal(value.record.projectId);
}}
>
复制
@@ -2190,7 +2219,7 @@ export default {
<span
class="operation3"
// onClick={() => {
// showCopyModal();
// showCopyModal(value.record.projectId);
// }}
></span>
@@ -2217,7 +2246,7 @@ export default {
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal();
showCopyModal(value.record.projectId);
}}
>
复制
@@ -2279,7 +2308,7 @@ export default {
<span
class="operation3"
// onClick={() => {
// showCopyModal();
// showCopyModal(value.record.projectId);
// }}
></span>
<div class="tableSelect">
@@ -2305,7 +2334,7 @@ export default {
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal();
showCopyModal(value.record.projectId);
}}
>
复制
@@ -2420,7 +2449,7 @@ export default {
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal();
showCopyModal(value.record.projectId);
}}
>
复制
@@ -2502,7 +2531,7 @@ export default {
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal();
showCopyModal(value.record.projectId);
}}
>
复制
@@ -2572,7 +2601,7 @@ export default {
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal();
showCopyModal(value.record.projectId);
}}
>
复制
@@ -2640,7 +2669,52 @@ export default {
编辑
</span>
) : (
<span class="operation1"></span>
<span
onClick={() => {
console.log("单层子项目的编辑");
console.log(value);
{
/* 判断是班级\单层项目\单层子项目 */
}
if (value.record.parentId == "0") {
router.push({
path: "/projectadd",
query: {
projectId: value.record.projectId,
name: value.record.name,
viewDetail:1,
},
});
} else {
if (value.record.isbj) {
router.push({
path: "/classadd",
query: {
projectId: value.record.projectId,
name: value.record.paraentName,
edit: 0,
viewDetail:1,
},
});
} else {
router.push({
path: "/sonproject",
query: {
projectId: value.record.projectId,
name: value.record.paraentName,
edit: 0,
viewDetail:1,
},
});
}
}
}}
style="cursor:pointer;"
class="operation1"
>
查看
</span>
)}
<div class="tableSelect">
<a-select
@@ -2727,7 +2801,7 @@ export default {
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal();
showCopyModal(value.record.projectId);
}}
>
复制
@@ -2774,16 +2848,16 @@ export default {
// options={state.projectNameList}
dropdownClassName="tabledropdown"
>
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal(value.record.projectId);
}}
>
复制
</div>
</a-select-option>
<a-select-option value="存为模版" label="存为模版">
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal();
}}
>
复制
</div>
</a-select-option>
<div
onClick={() => {
showStartModal(value.record.projectId);
@@ -2842,7 +2916,7 @@ export default {
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal();
showCopyModal(value.record.projectId);
}}
>
复制
@@ -2978,12 +3052,6 @@ export default {
state.doublesonpro = true;
state.sonproject = false;
};
const showCopyModal = () => {
state.copyModal = true;
};
const closeCopyModal = () => {
state.copyModal = false;
};
const showProjOwner = () => {
state.ProjOwnervisible = true;
@@ -3098,6 +3166,7 @@ export default {
finishProject,
deleteProject,
templateProject,
copyProject,
};
},
};

View File

@@ -26,7 +26,7 @@
<div class="inname">子项目名称</div>
</div>
<div class="in">
<a-input v-model:value="projectName" placeholder="请输入项目名称" show-count :maxlength="30" />
<a-input v-model:value="projectName" placeholder="请输入项目名称" show-count :maxlength="30" :disabled="viewDetail ? true : false" />
</div>
</div>
<div class="name">
@@ -40,7 +40,7 @@
return triggerNode.parentNode || document.body;
}
" v-model:value="classifySelect" placeholder="四个养成" style="width: 100%" :options="classifyList"
@change="classificationChange" allowClear showSearch>
@change="classificationChange" allowClear showSearch :disabled="viewDetail ? true : false">
</a-select>
</div>
</div>
@@ -59,7 +59,7 @@
overflow: hidden;
">
<a-upload v-model:file-list="fileList" name="file" list-type="picture-card" class="avatar-uploader"
:show-upload-list="false" action="/api/file/upload" :before-upload="beforeUpload" @change="handleChange">
:show-upload-list="false" action="/api/file/upload" :before-upload="beforeUpload" @change="handleChange" :disabled="viewDetail ? true : false">
<img style="
width: 100px;
height: 100px;
@@ -84,7 +84,7 @@
<div class="in">
<a-range-picker separator="至" :placeholder="[' 开始时间', ' 结束时间']" v-model:value="rangevalue"
style="width: 100%; height: 40px; border-radius: 5px" @change="onRangeChange" />
style="width: 100%; height: 40px; border-radius: 5px" @change="onRangeChange" :disabled="viewDetail ? true : false" />
</div>
</div>
<div class="name">
@@ -98,7 +98,7 @@
return triggerNode.parentNode || document.body;
}
" :value="classifySelect1" mode="multiple" placeholder="请选择项目经理" style="width: 100%" :options="classifyList1"
@change="classificationChange1" allowClear showSearch>
@change="classificationChange1" allowClear showSearch :disabled="viewDetail ? true : false">
</a-select>
</div>
</div>
@@ -114,7 +114,7 @@
return triggerNode.parentNode || document.body;
}
" v-model:value="classifySelect2" placeholder="自动带出 可修改" :options="classifyList2"
@change="classificationChange2" />
@change="classificationChange2" :disabled="viewDetail ? true : false" />
</div>
</div>
<div class="name name2">
@@ -122,7 +122,7 @@
<div class="inname" style="margin-top: 13px">项目说明</div>
</div>
<div class="in">
<a-textarea v-model:value="remark" style="height: 80px" placeholder="请输入说明" show-count :maxlength="200" />
<a-textarea v-model:value="remark" style="height: 80px" placeholder="请输入说明" show-count :maxlength="200" :disabled="viewDetail ? true : false"/>
</div>
</div>
<div class="name name2">
@@ -130,11 +130,11 @@
<div class="inname">同步学习记录</div>
</div>
<div class="in">
<a-radio @click="changeChecked" v-model:checked="checked"><span style="
<a-radio @click="changeChecked" v-model:checked="checked" :disabled="viewDetail ? true : false"><span style="
width: 100%;
color: rgba(109, 117, 132, 1);
font-size: 14px;
">同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span></a-radio>
" >同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span></a-radio>
</div>
</div>
<div class="name">
@@ -148,7 +148,7 @@
return triggerNode.parentNode || document.body;
}
" v-model:value="classifySelect3" :options="classifyList3" @change="classificationChange3"
placeholder="集团级/组织级/现地级/部门级" />
placeholder="集团级/组织级/现地级/部门级" :disabled="viewDetail ? true : false" />
</div>
</div>
<div class="name">
@@ -162,7 +162,7 @@
return triggerNode.parentNode || document.body;
}
" v-model:value="classifySelect4" :options="classifyList4" @change="classificationChange4"
placeholder="集团级/组织级/现地级/部门级" />
placeholder="集团级/组织级/现地级/部门级" :disabled="viewDetail ? true : false" />
</div>
</div>
<div class="name">
@@ -171,7 +171,7 @@
<div class="inname">是否BOEU实施</div>
</div>
<div class="in">
<a-radio @click="changeChecked1" v-model:checked="checked1"><span style="
<a-radio @click="changeChecked1" v-model:checked="checked1" :disabled="viewDetail ? true : false"><span style="
width: 100%;
color: rgba(109, 117, 132, 1);
font-size: 14px;
@@ -207,7 +207,7 @@
return triggerNode.parentNode || document.body;
}
" v-model:value="classifySelect5" placeholder="请选择模版" :size="size" style="width: 100%" :options="classifyList5"
@change="classificationChange5">
@change="classificationChange5" >
</a-select>
<a-select v-else :getPopupContainer="
(triggerNode) => {
@@ -260,6 +260,7 @@ export default {
classifySelect4: [],
rangevalue: [],
projectAscription: "",
viewDetail:routers.query.viewDetail?routers.query.viewDetail:null
});
if (routers.query.name == undefined) {