Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	src/views/projectcenter/ProjectAdd.vue
#	src/views/projectcenter/ProjectManage.vue
This commit is contained in:
yuping
2022-12-10 16:41:41 +08:00
4 changed files with 818 additions and 791 deletions

View File

@@ -153,8 +153,8 @@
<router-link to="/coursemanage">课件管理</router-link> <router-link to="/coursemanage">课件管理</router-link>
</a-menu-item> </a-menu-item>
</a-sub-menu> </a-sub-menu>
<!-- 2022-12-10注释 后面放开 -->
<a-menu-item key="sub4" @titleClick="titleClick"> <!-- <a-menu-item key="sub4" @titleClick="titleClick">
<div class="imgBox"> <div class="imgBox">
<img <img
style="width: 19px; height: 19px" style="width: 19px; height: 19px"
@@ -162,9 +162,9 @@
/> />
</div> </div>
<span>考试中心</span> <span>考试中心</span>
</a-menu-item> </a-menu-item> -->
<!-- 2022-12-10注释 后面放开 -->
<a-menu-item key="sub5" @titleClick="titleClick"> <!-- <a-menu-item key="sub5" @titleClick="titleClick">
<div class="imgBox"> <div class="imgBox">
<img <img
style="width: 16px; height: 16px" style="width: 16px; height: 16px"
@@ -172,9 +172,9 @@
/> />
</div> </div>
<router-link to="/researchmanage">评估管理</router-link> <router-link to="/researchmanage">评估管理</router-link>
</a-menu-item> </a-menu-item> -->
<!-- 2022-12-10注释 后面放开 -->
<a-menu-item key="sub6" @titleClick="titleClick"> <!-- <a-menu-item key="sub6" @titleClick="titleClick">
<div class="imgBox"> <div class="imgBox">
<img <img
style="width: 17px; height: 15px" style="width: 17px; height: 15px"
@@ -182,9 +182,9 @@
/> />
</div> </div>
<span>报表中心</span> <span>报表中心</span>
</a-menu-item> </a-menu-item> -->
<!-- 2022-12-10注释 后面放开 -->
<a-menu-item key="sub7" @titleClick="titleClick"> <!-- <a-menu-item key="sub7" @titleClick="titleClick">
<div class="imgBox"> <div class="imgBox">
<img <img
style="width: 17px; height: 18px" style="width: 17px; height: 18px"
@@ -192,9 +192,9 @@
/> />
</div> </div>
<span>教师管理</span> <span>教师管理</span>
</a-menu-item> </a-menu-item> -->
<!-- 2022-12-10注释 后面放开 -->
<a-menu-item key="sub8" @titleClick="titleClick"> <!-- <a-menu-item key="sub8" @titleClick="titleClick">
<div class="imgBox"> <div class="imgBox">
<img <img
style="width: 20px; height: 20px" style="width: 20px; height: 20px"
@@ -202,18 +202,17 @@
/> />
</div> </div>
<span>证书中心</span> <span>证书中心</span>
<!-- <router-link to="/certificatecenter">证书中心</router-link> --> </a-menu-item> -->
</a-menu-item> <!-- <a-menu-item key="sub9" @titleClick="titleClick">
<a-menu-item key="sub9" @titleClick="titleClick">
<div class="imgBox"> <div class="imgBox">
<img <img
style="width: 19px; height: 18px" style="width: 19px; height: 18px"
src="../assets/images/navleft/system.png" src="../assets/images/navleft/system.png"
/> />
</div> </div>
<span>系统管理</span> <span>系统管理</span> -->
<!-- <router-link to="/systemmanage">系统管理</router-link> --> <!-- <router-link to="/systemmanage">系统管理</router-link> -->
</a-menu-item> <!-- </a-menu-item> -->
</a-menu> </a-menu>
</div> </div>
<div <div
@@ -243,8 +242,8 @@
<a-menu-item key="sub3" @titleClick="titleClick"> <a-menu-item key="sub3" @titleClick="titleClick">
<router-link to="/coursewaremanage">课程</router-link> <router-link to="/coursewaremanage">课程</router-link>
</a-menu-item> </a-menu-item>
<!-- 2022-12-10注释 后面放开 -->
<a-menu-item key="sub4" @titleClick="titleClick"> <!-- <a-menu-item key="sub4" @titleClick="titleClick">
<span>考试</span> <span>考试</span>
</a-menu-item> </a-menu-item>
@@ -265,7 +264,7 @@
</a-menu-item> </a-menu-item>
<a-menu-item key="sub9" @titleClick="titleClick"> <a-menu-item key="sub9" @titleClick="titleClick">
<span>系统</span> <span>系统</span>
</a-menu-item> </a-menu-item> -->
</a-menu> </a-menu>
</div> </div>
</div> </div>

View File

@@ -36,7 +36,7 @@
<a-input <a-input
v-model:value="courseName" v-model:value="courseName"
style="width: 423px; height: 32px" style="width: 423px; height: 32px"
placeholder="请输入名称最多输入20个字" placeholder="请输入名称"
:maxlength="20" :maxlength="20"
/> />
<div class="inp_num" style="position: absolute; right: 7px"> <div class="inp_num" style="position: absolute; right: 7px">

View File

@@ -3,13 +3,13 @@
<div class="projectAdd"> <div class="projectAdd">
<div class="header"> <div class="header">
<span class="title" <span class="title"
>{{ projectInfo.parentId ? "编辑" : "创建" }}项目</span >{{ projectInfo.parentId ? "编辑" : "创建" }}项目</span
> >
<div <div
@click="backPage" @click="backPage"
style="cursor: pointer" style="cursor: pointer"
to="/projectmanage" to="/projectmanage"
class="goback" class="goback"
> >
<span class="return"></span><span class="returntext">返回</span> <span class="return"></span><span class="returntext">返回</span>
</div> </div>
@@ -19,8 +19,8 @@
<div class="name" v-if="projectInfo.parentName"> <div class="name" v-if="projectInfo.parentName">
<div class="namebox"> <div class="namebox">
<img <img
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">项目归属</div> <div class="inname">项目归属</div>
</div> </div>
@@ -33,114 +33,117 @@
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">项目名称</div> <div class="inname">项目名称</div>
</div> </div>
<div class="in"> <div class="in">
<a-input <a-input
v-model:value="projectInfo.name" v-model:value="projectInfo.name"
placeholder="请输入项目名称" placeholder="请输入项目名称"
show-count show-count
:maxlength="30" :maxlength="30"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
/> />
</div> </div>
</div> </div>
<div class="name flex-top"> <div class="name flex-top">
<div class="namebox" style="margin-top: 10px"> <div class="namebox" style="margin-top: 10px">
<img <img
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">封面图</div> <div class="inname">封面图</div>
</div> </div>
<div class="in select" style="flex: 1;display: flex"> <div class="in select" style="flex: 1; display: flex">
<div <div
:class="`box ${projectInfo.picUrl === src.value ? 'active' : ''}`" :class="`box ${projectInfo.picUrl === src.value ? 'active' : ''}`"
style=" style="
width: 100px;
height: 100px;
border-radius: 5px;
cursor: pointer;
position: relative;
overflow: hidden;
"
v-for="(src, index) in projectPic"
:key="index"
@click="() => (projectInfo.picUrl = src.value)"
>
<img
style="
width: 100px; width: 100px;
height: 100px; height: 100px;
margin-bottom: 4px; border-radius: 5px;
margin-right: 4px; cursor: pointer;
" :src="src.value" alt="avatar"/> position: relative;
overflow: hidden;
"
v-for="(src, index) in projectPic"
:key="index"
@click="() => (projectInfo.picUrl = src.value)"
>
<img
style="
width: 100px;
height: 100px;
margin-bottom: 4px;
margin-right: 4px;
"
:src="src.value"
alt="avatar"
/>
</div> </div>
</div> </div>
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">项目时间</div> <div class="inname">项目时间</div>
</div> </div>
<div class="in"> <div class="in">
<a-range-picker <a-range-picker
show-time show-time
separator="至" separator="至"
:placeholder="[' 开始时间', ' 结束时间']" :placeholder="[' 开始时间', ' 结束时间']"
v-model:value="projectInfo.rangeTime" v-model:value="projectInfo.rangeTime"
style="width: 100%; height: 40px; border-radius: 5px" style="width: 100%; height: 40px; border-radius: 5px"
valueFormat="YYYY-MM-DD HH:mm:ss" valueFormat="YYYY-MM-DD HH:mm:ss"
@change="timeChange" @change="timeChange"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
/> />
</div> </div>
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">项目经理</div> <div class="inname">项目经理</div>
</div> </div>
<div class="in"> <div class="in">
<ProjectManager <ProjectManager
v-model:value="projectInfo.managerId" v-model:value="projectInfo.managerId"
v-model:name="projectInfo.manager" v-model:name="projectInfo.manager"
@onChange="managerChange" @onChange="managerChange"
mode="multiple" mode="multiple"
></ProjectManager> ></ProjectManager>
</div> </div>
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">资源归属</div> <div class="inname">资源归属</div>
</div> </div>
<div class="in select"> <div class="in select">
<OrgClass <OrgClass
v-model:value="projectInfo.sourceBelongId" v-model:value="projectInfo.sourceBelongId"
v-model:name="projectInfo.sourceBelongName" v-model:name="projectInfo.sourceBelongName"
></OrgClass> ></OrgClass>
</div> </div>
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">项目级别</div> <div class="inname">项目级别</div>
</div> </div>
@@ -151,8 +154,8 @@
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">培训分类</div> <div class="inname">培训分类</div>
</div> </div>
@@ -163,15 +166,15 @@
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">是否BOEU实施</div> <div class="inname">是否BOEU实施</div>
</div> </div>
<div class="in"> <div class="in">
<a-radio-group <a-radio-group
v-model:value="projectInfo.boeFlag" v-model:value="projectInfo.boeFlag"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
> >
<a-radio :style="radioStyle" :value="1"></a-radio> <a-radio :style="radioStyle" :value="1"></a-radio>
<a-radio :style="radioStyle" :value="0"></a-radio> <a-radio :style="radioStyle" :value="0"></a-radio>
@@ -184,16 +187,16 @@
</div> </div>
<div class="in"> <div class="in">
<a-checkbox <a-checkbox
v-model:checked="courseSyncFlag" v-model:checked="courseSyncFlag"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
><span ><span
style=" style="
width: 100%; width: 100%;
color: rgba(109, 117, 132, 1); color: rgba(109, 117, 132, 1);
font-size: 14px; font-size: 14px;
" "
>同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span >同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span
></a-checkbox ></a-checkbox
> >
</div> </div>
</div> </div>
@@ -203,12 +206,12 @@
</div> </div>
<div class="in"> <div class="in">
<a-textarea <a-textarea
v-model:value="projectInfo.remark" v-model:value="projectInfo.remark"
style="height: 80px" style="height: 80px"
placeholder="请输入说明" placeholder="请输入说明"
show-count show-count
:maxlength="200" :maxlength="200"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
/> />
</div> </div>
</div> </div>
@@ -218,18 +221,18 @@
<div class="inname" style="width: 50px">模版</div> <div class="inname" style="width: 50px">模版</div>
<div class="in select" style="margin-left: 2px"> <div class="in select" style="margin-left: 2px">
<a-select <a-select
:getPopupContainer=" :getPopupContainer="
(triggerNode) => { (triggerNode) => {
return triggerNode.parentNode || document.body; return triggerNode.parentNode || document.body;
} }
" "
placeholder="请选择模版" placeholder="请选择模版"
:size="size" :size="size"
style="width: 100%" style="width: 100%"
:options="classifyList5" :options="classifyList5"
@change="classificationChange5" @change="classificationChange5"
@popupScroll="templateScroll" @popupScroll="templateScroll"
:fieldNames="{ :fieldNames="{
label: 'name', label: 'name',
value: 'projectTemplateId', value: 'projectTemplateId',
}" }"
@@ -242,29 +245,37 @@
<div class="footer"> <div class="footer">
<div class="btn"> <div class="btn">
<a-button @click="backPage" class="btn2">取消</a-button> <a-button @click="backPage" class="btn2">取消</a-button>
<a-button v-on:click="createProject" type="primary" class="btn1" style="margin-left: 20px">确定</a-button> <a-button
v-on:click="createProject"
type="primary"
class="btn1"
style="margin-left: 20px"
>确定</a-button
>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {onMounted, reactive, toRefs, watch} from "vue"; import { onMounted, reactive, toRefs, watch } from "vue";
import {message} from "ant-design-vue"; import { message } from "ant-design-vue";
import {useRoute, useRouter} from "vue-router"; import { useRoute, useRouter } from "vue-router";
import * as api from "../../api/index"; import * as api from "../../api/index";
import {useStore} from "vuex"; import { useStore } from "vuex";
// import ProjectClass from "@/components/project/ProjectClass";
import TrainClass from "@/components/project/TrainClass"; import TrainClass from "@/components/project/TrainClass";
import OrgClass from "@/components/project/OrgClass"; import OrgClass from "@/components/project/OrgClass";
import ProjectManager from "@/components/project/ProjectManagerNew"; import ProjectManager from "@/components/project/ProjectManagerNew";
import ProjectLevel from "@/components/project/ProjectLevel"; import ProjectLevel from "@/components/project/ProjectLevel";
import {changeOwnership, scrollLoad} from "@/api/method"; import { changeOwnership, scrollLoad } from "@/api/method";
import {storage} from "../../api/storage"; import { storage } from "../../api/storage";
export default { export default {
name: "projectAdd", name: "projectAdd",
components: { components: {
ProjectManager, ProjectManager,
ProjectLevel, ProjectLevel,
// ProjectClass,
TrainClass, TrainClass,
OrgClass, OrgClass,
}, },
@@ -314,10 +325,21 @@ export default {
state.projectInfo.parentName = routers.query.parentName; state.projectInfo.parentName = routers.query.parentName;
state.projectInfo.parentId = routers.query.parentId; state.projectInfo.parentId = routers.query.parentId;
state.projectInfo.projectId = routers.query.projectId; state.projectInfo.projectId = routers.query.projectId;
(state.projectInfo.projectId || state.projectInfo.parentId) && api.getProjectDetail({projectId: state.projectInfo.projectId || state.projectInfo.parentId}) (state.projectInfo.projectId || state.projectInfo.parentId) &&
.then(res => { api
state.projectInfo = {...res.data.data.projectInfo, ...state.projectInfo}; .getProjectDetail({
state.projectInfo.rangeTime = [state.projectInfo.beginTime, state.projectInfo.endTime,]; projectId:
state.projectInfo.projectId || state.projectInfo.parentId,
})
.then((res) => {
state.projectInfo = {
...res.data.data.projectInfo,
...state.projectInfo,
};
state.projectInfo.rangeTime = [
state.projectInfo.beginTime,
state.projectInfo.endTime,
];
state.courseSyncFlag = !!state.projectInfo.courseSyncFlag; state.courseSyncFlag = !!state.projectInfo.courseSyncFlag;
}); });
} }
@@ -404,23 +426,25 @@ export default {
state.projectInfo.courseSyncFlag = state.courseSyncFlag ? 1 : 0; state.projectInfo.courseSyncFlag = state.courseSyncFlag ? 1 : 0;
api.createProject(state.projectInfo).then((res) => { api.createProject(state.projectInfo).then((res) => {
state.projectInfo.projectId || state.projectInfo.projectId ||
changeOwnership("project", res.data.data.projectId, [ changeOwnership("project", res.data.data.projectId, [
{id: res.data.data.createId, name: res.data.data.createName}, { id: res.data.data.createId, name: res.data.data.createName },
]); ]);
message.destroy(); message.destroy();
message.success(state.projectInfo.projectId ? "编辑成功" : "创建成功"); message.success(state.projectInfo.projectId ? "编辑成功" : "创建成功");
// router.back(); // router.back();
router.push({ router.push({
path: "/taskpage", path: "/taskpage",
query: {projectId: res.data.data.projectId}, query: { projectId: res.data.data.projectId },
}); });
storage.set("projectId", res.data.data.projectId); storage.set("projectId", res.data.data.projectId);
}); });
}; };
function managerChange(e, l, d) { function managerChange(e, l, d) {
!state.projectInfo.sourceBelongId && (state.projectInfo.sourceBelongId = d) !state.projectInfo.sourceBelongId &&
!state.projectInfo.sourceBelongId && (state.projectInfo.sourceBelongName = d) (state.projectInfo.sourceBelongId = d);
!state.projectInfo.sourceBelongId &&
(state.projectInfo.sourceBelongName = d);
} }
return { return {

File diff suppressed because it is too large Load Diff