feat:合并

This commit is contained in:
lixg
2022-12-09 18:11:45 +08:00
9 changed files with 908 additions and 830 deletions

View File

@@ -70,7 +70,7 @@ export default {
href: "/leveladd", href: "/leveladd",
}, },
{ {
name: "创建关卡", name: "管理",
}, },
]; ];
} }

View File

@@ -332,7 +332,7 @@ export default {
href: "/leveladd", href: "/leveladd",
openKeys: "sub1", openKeys: "sub1",
selectedKeys: "sub1", selectedKeys: "sub1",
pagename: "关卡", pagename: "管理",
}, },
{ {
href: "/levelcheck", href: "/levelcheck",
@@ -344,7 +344,7 @@ export default {
href: "/leveladddetail", href: "/leveladddetail",
openKeys: "sub1", openKeys: "sub1",
selectedKeys: "sub1", selectedKeys: "sub1",
pagename: "创建关卡", pagename: "关卡",
}, },
{ {
href: "/projectmanage", href: "/projectmanage",

View File

@@ -104,7 +104,7 @@
import { reactive, toRefs } from "vue"; import { reactive, toRefs } from "vue";
import * as apiTask from "../../api/indexTaskadd"; import * as apiTask from "../../api/indexTaskadd";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { RouterEditTask, IsExistence, IsExistenceProject} from "@/api/indexTask"; import { RouterEditTask, IsExistence, IsExistenceProject, IsExistenceProjectTemplate} from "@/api/indexTask";
import * as api from "../../api/indexInvist"; import * as api from "../../api/indexInvist";
import { addTempTask } from "../../api/indexTaskadd"; import { addTempTask } from "../../api/indexTaskadd";
import AssessmentList from "@/components/drawers/AssessmentList.vue"; import AssessmentList from "@/components/drawers/AssessmentList.vue";
@@ -316,6 +316,28 @@ export default {
}) })
} else if (props.isLevel == 3) { } else if (props.isLevel == 3) {
IsExistenceProjectTemplate({
courseTaskId: [Number(state.assessment.assessmentId)],
projectTemplateId: props.projectTemplateId,
templateStageId: props.chooseStageId || 0,
type: 11,
}).then(res=>{
console.log('shifouchongfu',res)
console.log("模板路径图中是否包含此评估了", res);
if (res.data.data.length) {
let strdata = res.data.data;
let tipStr = "";
for (let i = 0; i < strdata.length; i++) {
if (i == strdata.length - 1) {
tipStr += strdata[i].courseName;
} else {
tipStr += strdata[i].courseName + "/";
}
}
message.destroy();
message.warning("评估(" + tipStr + ")重复添加");
return;
} else {
addTempTask({ addTempTask({
courseId: state.assessment.assessmentId, courseId: state.assessment.assessmentId,
name: state.assessment.name, name: state.assessment.name,
@@ -334,6 +356,12 @@ export default {
message.destroy(); message.destroy();
message.error(`${props.edit ? "编辑" : "新增"}任务失败`); message.error(`${props.edit ? "编辑" : "新增"}任务失败`);
}); });
}
}).catch(err=>{
console.log(err)
})
} }
}; };

View File

@@ -119,6 +119,7 @@
:row-selection="{ :row-selection="{
selectedRowKeys: selectedRowKeys, selectedRowKeys: selectedRowKeys,
onChange: onSelectChange, onChange: onSelectChange,
type: 'radio',
}" }"
:columns="tableDataFunc()" :columns="tableDataFunc()"
:data-source="tableData" :data-source="tableData"
@@ -158,6 +159,7 @@ import {
RouterEditTask, RouterEditTask,
IsExistence, IsExistence,
IsExistenceProject, IsExistenceProject,
IsExistenceProjectTemplate
} from "@/api/indexTask"; } from "@/api/indexTask";
import { addTempTask } from "../../api/indexTaskadd"; import { addTempTask } from "../../api/indexTaskadd";
export default { export default {
@@ -556,8 +558,38 @@ export default {
console.log(err); console.log(err);
}); });
} else if (props.isLevel == 3) { } else if (props.isLevel == 3) {
console.log("我是要便利的数据3", state.addOnlineList);
let p_data = state.addOnlineList;
let p_data_id = [];
p_data.map((item) => {
p_data_id.push(item["courseId"]);
});
console.log("需要查询的在线课ID", p_data_id);
IsExistenceProjectTemplate({
courseTaskId: p_data_id,
projectTemplateId: localStorage.getItem("projectTemplateId"),
projectTaskId: props.projectTaskId || 0,
stageId: props.chooseStageId || 0,
type: 1,
}).then(res=>{
console.log(res)
console.log("模板项目中是否包含此在线课了", res);
if (res.data.data.length) {
let strdata = res.data.data;
let tipStr = "";
for (let i = 0; i < strdata.length; i++) {
if (i == strdata.length - 1) {
tipStr += strdata[i].courseName;
} else {
tipStr += strdata[i].courseName + "/";
}
}
message.destroy();
message.warning("在线课" + tipStr + "重复添加");
return;
} else {
state.addOnlineList.map((value) => { state.addOnlineList.map((value) => {
console.log( props, props.projectTemplateId,props.projectTaskId)
addTempTask({ addTempTask({
courseId: value.num, courseId: value.num,
name: value.name, name: value.name,
@@ -579,6 +611,10 @@ export default {
}); });
}) })
} }
}).catch(err=>{
console.log(err)
})
}
//if(state.addOnlineList.Target==undefined){ //if(state.addOnlineList.Target==undefined){
// closeDrawer(); // closeDrawer();
//} //}

View File

@@ -78,7 +78,6 @@ onMounted(() => {
function getMemberData() { function getMemberData() {
console.log(memberParam)
if (!memberParam.value.keyWord) { if (!memberParam.value.keyWord) {
return return
} }
@@ -93,9 +92,12 @@ function getMemberData() {
return; return;
} }
const list = res.data.data.rows.filter(e => !(props.value + '').includes(e.id)).map(e => ({ const list = res.data.data.rows.filter(e => !(props.value + '').includes(e.id)).map(e => ({
label: e.realName, label: e.realName + e.userNo,
value: e.id, value: e.id,
deptId: e.departId deptId: e.departId,
departName: e.departName,
userNo: e.userNo,
name: e.realName
})); }));
memberParam.value.pageNo === 1 && props.value ? (options.value = list) : options.value.push(...list) memberParam.value.pageNo === 1 && props.value ? (options.value = list) : options.value.push(...list)
loading.value = false loading.value = false
@@ -125,10 +127,10 @@ function blur() {
function change(e, l) { function change(e, l) {
isOpen.value = false isOpen.value = false
Array.isArray(l) && (selectOptions.value = l) Array.isArray(l) && (selectOptions.value = l)
Array.isArray(selectOptions.value) && emit('onChange', e, l, selectOptions.value.find(e => e.deptId)?.deptId) Array.isArray(selectOptions.value) && emit('onChange', e, l, selectOptions.value.find(e => e.deptId)?.deptId, selectOptions.value.find(e => e.deptId)?.departName)
if (Array.isArray(l)) { if (Array.isArray(l)) {
emit('update:name', l.map(t => t.label).join(',')) emit('update:name', l.map(t => t.label).join(','))
emit('update:value', l.map(t => t.value).join(',')) emit('update:value', l.map(t => t.label).join(','))
} else { } else {
emit('update:name', l?.label) emit('update:name', l?.label)
emit('update:value', l?.value) emit('update:value', l?.value)

View File

@@ -21,7 +21,7 @@
</div> </div>
<div style="margin-right: 57px; cursor: pointer"> <div style="margin-right: 57px; cursor: pointer">
<img <img
@click="visibleClose" @click="noEditClose"
style="width: 22px; height: 22px" style="width: 22px; height: 22px"
src="@/assets/images/basicinfo/close22.png" src="@/assets/images/basicinfo/close22.png"
/> />
@@ -338,7 +338,7 @@
</div> </div>
</div> </div>
<div class="m_btn"> <div class="m_btn">
<div class="btn btn5" @click="visibleClose"> <div class="btn btn5" @click="noEditClose">
<div class="btnText">取消</div> <div class="btnText">取消</div>
</div> </div>
<div class="btn btn6" @click="handlePush"> <div class="btn btn6" @click="handlePush">
@@ -424,6 +424,13 @@ export default defineComponent({
emit("visibleClose"); emit("visibleClose");
}; };
// 未编辑直接离开的 不予刷新
const noEditClose = () => {
state.ft_hs = false;
ft_exit();
emit("noEdit");
}
expose({ expose({
visibleOpen, visibleOpen,
visibleClose, visibleClose,
@@ -735,7 +742,7 @@ export default defineComponent({
handleTagClose, handleTagClose,
handlePush, handlePush,
reviewClick, reviewClick,
noEditClose,
editorRef, editorRef,
valueHtml, valueHtml,
mode: "simple", // 或 'simple' mode: "simple", // 或 'simple'

View File

@@ -534,7 +534,7 @@
<div class="setc_name"><span>资源归属</span></div> <div class="setc_name"><span>资源归属</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ <span style="color: #999999">{{
projectInfo.sourceBelong projectInfo.sourceBelongName
}}</span> }}</span>
</div> </div>
</div> </div>
@@ -559,17 +559,13 @@
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>项目级别</span></div> <div class="setc_name"><span>项目级别</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ <ProjectLevel :value="projectInfo.level" :tag="true"></ProjectLevel>
projectInfo.level
}}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>培训体系</span></div> <div class="setc_name"><span>培训体系</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ <TrainClass :value="projectInfo.systemId" :tag="true"></TrainClass>
projectInfo.systemId
}}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
@@ -712,8 +708,14 @@ import { message } from "ant-design-vue";
import * as api from "@/api/indexTemplate"; import * as api from "@/api/indexTemplate";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { scoreRule, setScoreRule } from "@/api/indexTaskadd"; import { scoreRule, setScoreRule } from "@/api/indexTaskadd";
import ProjectLevel from "@/components/project/ProjectLevel";
import TrainClass from "@/components/project/TrainClass";
export default defineComponent({ export default defineComponent({
name: "LibraryAdd", name: "LibraryAdd",
components: {
ProjectLevel,
TrainClass,
},
setup() { setup() {
const state = reactive({ const state = reactive({
//任务大纲列表 //任务大纲列表

View File

@@ -295,18 +295,19 @@
</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 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: {
@@ -368,7 +369,7 @@ export default {
return; return;
} }
api api
.getProjectDetail({ projectId: routers.query.projectId }) .getProjectDetail({projectId: routers.query.projectId})
.then((res) => { .then((res) => {
state.projectInfo = res.data.data.projectInfo; state.projectInfo = res.data.data.projectInfo;
@@ -480,21 +481,22 @@ export default {
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, t) {
state.projectInfo.sourceBelongId = d; !state.projectInfo.sourceBelongId && (state.projectInfo.sourceBelongId = d)
!state.projectInfo.sourceBelongId && (state.projectInfo.sourceBelongName = d)
} }
return { return {

View File

@@ -112,13 +112,13 @@
style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)" style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)"
> >
<div class="leftt"> <div class="leftt">
<img src="../../assets/images/taskpage/left2.png" /> <img src="../../assets/images/taskpage/left2.png"/>
</div> </div>
<div class="photo"> <div class="photo">
<img src="../../assets/images/projectadd/nopro.png" /> <img src="../../assets/images/projectadd/nopro.png"/>
</div> </div>
<div class="rightt"> <div class="rightt">
<img src="../../assets/images/taskpage/right2.png" /> <img src="../../assets/images/taskpage/right2.png"/>
</div> </div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)"> <div class="centerbox" style="color: rgba(78, 166, 255, 1)">
创建项目 创建项目
@@ -285,13 +285,13 @@
" "
> >
<div class="leftt"> <div class="leftt">
<img src="../../assets/images/taskpage/left2.png" /> <img src="../../assets/images/taskpage/left2.png"/>
</div> </div>
<div class="photo"> <div class="photo">
<img src="../../assets/images/taskpage/picture4.png" /> <img src="../../assets/images/taskpage/picture4.png"/>
</div> </div>
<div class="rightt"> <div class="rightt">
<img src="../../assets/images/taskpage/right2.png" /> <img src="../../assets/images/taskpage/right2.png"/>
</div> </div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)"> <div class="centerbox" style="color: rgba(78, 166, 255, 1)">
单层子项目 单层子项目
@@ -305,13 +305,13 @@
" "
> >
<div class="leftt"> <div class="leftt">
<img src="../../assets/images/taskpage/left1.png" /> <img src="../../assets/images/taskpage/left1.png"/>
</div> </div>
<div class="photo"> <div class="photo">
<img src="../../assets/images/taskpage/picture5.png" /> <img src="../../assets/images/taskpage/picture5.png"/>
</div> </div>
<div class="rightt"> <div class="rightt">
<img src="../../assets/images/taskpage/right1.png" /> <img src="../../assets/images/taskpage/right1.png"/>
</div> </div>
<div class="centerbox" style="color: rgba(255, 182, 78, 1)"> <div class="centerbox" style="color: rgba(255, 182, 78, 1)">
多层子项目 多层子项目
@@ -372,13 +372,13 @@
" "
> >
<div class="leftt"> <div class="leftt">
<img src="../../assets/images/taskpage/left2.png" /> <img src="../../assets/images/taskpage/left2.png"/>
</div> </div>
<div class="photo"> <div class="photo">
<img src="../../assets/images/taskpage/picture6.png" /> <img src="../../assets/images/taskpage/picture6.png"/>
</div> </div>
<div class="rightt"> <div class="rightt">
<img src="../../assets/images/taskpage/right2.png" /> <img src="../../assets/images/taskpage/right2.png"/>
</div> </div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)"> <div class="centerbox" style="color: rgba(78, 166, 255, 1)">
单层{{ projectInfo.parentId ? "子" : "" }}项目 单层{{ projectInfo.parentId ? "子" : "" }}项目
@@ -397,13 +397,13 @@
" "
> >
<div class="leftt"> <div class="leftt">
<img src="../../assets/images/taskpage/left3.png" /> <img src="../../assets/images/taskpage/left3.png"/>
</div> </div>
<div class="photo"> <div class="photo">
<img src="../../assets/images/taskpage/picture7.png" /> <img src="../../assets/images/taskpage/picture7.png"/>
</div> </div>
<div class="rightt"> <div class="rightt">
<img src="../../assets/images/taskpage/right3.png" /> <img src="../../assets/images/taskpage/right3.png"/>
</div> </div>
<div class="centerbox1" style="color: rgba(93, 201, 136, 1)"> <div class="centerbox1" style="color: rgba(93, 201, 136, 1)">
多层{{ projectInfo.parentId ? "子" : "" }}项目 多层{{ projectInfo.parentId ? "子" : "" }}项目
@@ -625,7 +625,7 @@
class="aeLoading" class="aeLoading"
:style="{ display: projectPubLoading ? 'flex' : 'none' }" :style="{ display: projectPubLoading ? 'flex' : 'none' }"
> >
<a-spin :spinning="projectPubLoading" /> <a-spin :spinning="projectPubLoading"/>
</div> </div>
</a-modal> </a-modal>
<!-- 撤回路径弹窗 --> <!-- 撤回路径弹窗 -->
@@ -812,21 +812,21 @@
</div> </div>
</template> </template>
<script> <script>
import { reactive, toRefs, ref, watch } from "vue"; import {reactive, toRefs, ref, watch} from "vue";
import { message, Modal } from "ant-design-vue"; import {message, Modal} from "ant-design-vue";
import { useRouter } from "vue-router"; import {useRouter} from "vue-router";
import ProjOwnerShip from "../../components/drawers/ProjectOwn"; import ProjOwnerShip from "../../components/drawers/ProjectOwn";
import ProjPowerList from "../../components/drawers/ProjPowerList"; import ProjPowerList from "../../components/drawers/ProjPowerList";
import ProjCheckShip from "../../components/drawers/ProjCheckPower"; import ProjCheckShip from "../../components/drawers/ProjCheckPower";
import * as api from "../../api/index"; import * as api from "../../api/index";
import * as api1 from "../../api/index1"; import * as api1 from "../../api/index1";
import { storage } from "../../api/storage"; import {storage} from "../../api/storage";
import ProjectManager from "@/components/project/ProjectManagerNew"; import ProjectManager from "@/components/project/ProjectManagerNew";
import ProjectClass from "@/components/project/ProjectClass"; import ProjectClass from "@/components/project/ProjectClass";
import OrgClass from "@/components/project/OrgClass"; import OrgClass from "@/components/project/OrgClass";
import dayjs from "dayjs"; import dayjs from "dayjs";
import * as moment from "moment"; import * as moment from "moment";
import { changeOwnership } from "@/api/method"; import {changeOwnership} from "@/api/method";
export default { export default {
name: "projectManage", name: "projectManage",
@@ -913,15 +913,15 @@ export default {
// 数据接入 - start - // 数据接入 - start -
const router = useRouter(); const router = useRouter();
const sProjectStateList = ref([ const sProjectStateList = ref([
{ value: 0, label: "草稿" }, {value: 0, label: "草稿"},
{ value: 1, label: "审核中" }, {value: 1, label: "审核中"},
{ value: 2, label: "审核通过" }, {value: 2, label: "审核通过"},
{ value: 3, label: "已发布" }, {value: 3, label: "已发布"},
{ value: -2, label: "未通过" }, {value: -2, label: "未通过"},
{ value: -1, label: "已结束" }, {value: -1, label: "已结束"},
]); ]);
const searchReset = () => { const searchReset = () => {
state.searchParam = { pageNo: 1, pageSize: 10 }; state.searchParam = {pageNo: 1, pageSize: 10};
getTableDate(); getTableDate();
}; };
const searchSubmit = () => { const searchSubmit = () => {
@@ -970,7 +970,7 @@ export default {
state.currentPage = 1; state.currentPage = 1;
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},
]); ]);
getTableDate(); getTableDate();
}); });
@@ -1200,7 +1200,7 @@ export default {
message.success("模版保存成功"); message.success("模版保存成功");
return; return;
} }
Modal.error({ title: res.data.msg }); Modal.error({title: res.data.msg});
}); });
}; };
//关闭存为模版弹窗 //关闭存为模版弹窗
@@ -1641,7 +1641,7 @@ export default {
onClick={() => { onClick={() => {
router.push({ router.push({
path: "/taskpage", path: "/taskpage",
query: { projectId: value.record.projectId }, query: {projectId: value.record.projectId},
}); });
storage.set("projectId", value.record.projectId); storage.set("projectId", value.record.projectId);
}} }}
@@ -1782,8 +1782,9 @@ export default {
} }
); );
function managerChange(e, l, d) { function managerChange(e, l, d, t) {
state.projectInfo.sourceBelongId = d; !state.projectInfo.sourceBelongId && (state.projectInfo.sourceBelongId = d)
!state.projectInfo.sourceBelongId && (state.projectInfo.sourceBelongName = d)
} }
return { return {