mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-15 22:06:45 +08:00
增加项目的查看及学习路径项目的复制
This commit is contained in:
@@ -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';
|
import routesConfig from './config';
|
||||||
console.log('routesConfig', routesConfig)
|
console.log('routesConfig', routesConfig)
|
||||||
|
|
||||||
@@ -12,7 +20,7 @@ const routes = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
const router = createRouter({
|
const router = createRouter({
|
||||||
history: createWebHashHistory(),
|
history: createWebHistory(),
|
||||||
routes
|
routes
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -40,11 +40,11 @@
|
|||||||
<div style="display: flex; margin-bottom: 20px">
|
<div style="display: flex; margin-bottom: 20px">
|
||||||
<div class="btn btn1" @click="searchLearnPath">
|
<div class="btn btn1" @click="searchLearnPath">
|
||||||
<div class="search"></div>
|
<div class="search"></div>
|
||||||
<div class="btnText" >搜索</div>
|
<div class="btnText">搜索</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnn btn2" @click="resetLearnPath">
|
<div class="btnn btn2" @click="resetLearnPath">
|
||||||
<div class="search"></div>
|
<div class="search"></div>
|
||||||
<div class="btnText" >重置</div>
|
<div class="btnText">重置</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -430,11 +430,11 @@
|
|||||||
<span>您确定要复制此路径吗</span>
|
<span>您确定要复制此路径吗</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btnbox">
|
<div class="del_btnbox">
|
||||||
<div class="del_btn btn1" @click="delete_exit">
|
<div class="del_btn btn1" @click="closeCopyModal">
|
||||||
<div class="btnText" >取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btn btn2" @click="delete_exit">
|
<div class="del_btn btn2" @click="copyLearnPath">
|
||||||
<div class="btnText" >确定</div>
|
<div class="btnText">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -465,16 +465,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="del_btnbox">
|
<div class="del_btnbox">
|
||||||
<div class="del_btn btn1" @click="closeStopModal">
|
<div class="del_btn btn1" @click="closeStopModal">
|
||||||
<div class="btnText" >取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btn btn2" @click="stopLearnPath">
|
<div class="del_btn btn2" @click="stopLearnPath">
|
||||||
<div class="btnText" >确定</div>
|
<div class="btnText">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
<!-- 结束路径弹窗 -->
|
<!-- 删除路径弹窗 -->
|
||||||
<a-modal
|
<a-modal
|
||||||
v-model:visible="deleteModal"
|
v-model:visible="deleteModal"
|
||||||
:footer="null"
|
:footer="null"
|
||||||
@@ -495,10 +495,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="del_btnbox">
|
<div class="del_btnbox">
|
||||||
<div class="del_btn btn1" @click="closeDeleteModal">
|
<div class="del_btn btn1" @click="closeDeleteModal">
|
||||||
<div class="btnText" >取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btn btn2" @click="deleteLearnPath">
|
<div class="del_btn btn2" @click="deleteLearnPath">
|
||||||
<div class="btnText" >确定</div>
|
<div class="btnText">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -525,10 +525,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="del_btnbox">
|
<div class="del_btnbox">
|
||||||
<div class="del_btn btn1" @click="delete_exit">
|
<div class="del_btn btn1" @click="delete_exit">
|
||||||
<div class="btnText" >取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btn btn2" @click="delete_exit">
|
<div class="del_btn btn2" @click="delete_exit">
|
||||||
<div class="btnText" >确定</div>
|
<div class="btnText">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -556,10 +556,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="del_btnbox">
|
<div class="del_btnbox">
|
||||||
<div class="del_btn btn1" @click="closeBackModal">
|
<div class="del_btn btn1" @click="closeBackModal">
|
||||||
<div class="btnText" >取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btn btn2" @click="recallPath">
|
<div class="del_btn btn2" @click="recallPath">
|
||||||
<div class="btnText" >确定</div>
|
<div class="btnText">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -724,6 +724,7 @@ export default {
|
|||||||
routeStudentsNum: 0,
|
routeStudentsNum: 0,
|
||||||
recallPathId: null, //撤回路径id
|
recallPathId: null, //撤回路径id
|
||||||
stopPathId: null, //停用路径id
|
stopPathId: null, //停用路径id
|
||||||
|
copyPathId: null, //复制路径iid
|
||||||
|
|
||||||
lpLoading: false,
|
lpLoading: false,
|
||||||
});
|
});
|
||||||
@@ -816,12 +817,34 @@ export default {
|
|||||||
const closePub = () => {
|
const closePub = () => {
|
||||||
state.pub = false;
|
state.pub = false;
|
||||||
};
|
};
|
||||||
|
//显示复制窗口
|
||||||
const showCopyModal = () => {
|
const showCopyModal = () => {
|
||||||
state.copyModal = true;
|
state.copyModal = true;
|
||||||
};
|
};
|
||||||
|
//关闭复制窗口
|
||||||
const closeCopyModal = () => {
|
const closeCopyModal = () => {
|
||||||
state.copyModal = false;
|
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 = () => {
|
const showStopModal = () => {
|
||||||
state.stopModal = true;
|
state.stopModal = true;
|
||||||
@@ -1137,6 +1160,7 @@ export default {
|
|||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
state.copyPathId = text.record.id;
|
||||||
showCopyModal();
|
showCopyModal();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -1177,6 +1201,7 @@ export default {
|
|||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
state.copyPathId = text.record.id;
|
||||||
showCopyModal();
|
showCopyModal();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -1230,6 +1255,7 @@ export default {
|
|||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
state.copyPathId = text.record.id;
|
||||||
showCopyModal();
|
showCopyModal();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -1491,6 +1517,7 @@ export default {
|
|||||||
closeCopyModal,
|
closeCopyModal,
|
||||||
showStopModal,
|
showStopModal,
|
||||||
closeStopModal,
|
closeStopModal,
|
||||||
|
copyLearnPath,
|
||||||
stopLearnPath,
|
stopLearnPath,
|
||||||
showDeleteModal,
|
showDeleteModal,
|
||||||
closeDeleteModal,
|
closeDeleteModal,
|
||||||
@@ -1645,11 +1672,11 @@ export default {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.learnBg{
|
.learnBg {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
min-height: 110px;
|
min-height: 110px;
|
||||||
.learnBgItem{
|
.learnBgItem {
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
width: 136px;
|
width: 136px;
|
||||||
height: 106px;
|
height: 106px;
|
||||||
@@ -1658,7 +1685,6 @@ export default {
|
|||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.info {
|
.info {
|
||||||
|
|||||||
@@ -3,7 +3,12 @@
|
|||||||
<div class="projectAdd">
|
<div class="projectAdd">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<span class="title">创建/编辑班级</span>
|
<span class="title">创建/编辑班级</span>
|
||||||
<div @click="backPage" style="cursor: pointer;" to="/projectmanage" class="goback">
|
<div
|
||||||
|
@click="backPage"
|
||||||
|
style="cursor: pointer"
|
||||||
|
to="/projectmanage"
|
||||||
|
class="goback"
|
||||||
|
>
|
||||||
<span class="return"></span><span class="returntext">返回</span>
|
<span class="return"></span><span class="returntext">返回</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -11,7 +16,10 @@
|
|||||||
<div class="main">
|
<div class="main">
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
<img
|
||||||
|
class="nameimg"
|
||||||
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
|
/>
|
||||||
<div class="inname">项目归属</div>
|
<div class="inname">项目归属</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
@@ -22,34 +30,60 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
<img
|
||||||
|
class="nameimg"
|
||||||
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
|
/>
|
||||||
<div class="inname">班级名称</div>
|
<div class="inname">班级名称</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<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>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
<img
|
||||||
|
class="nameimg"
|
||||||
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
|
/>
|
||||||
<div class="inname">分类</div>
|
<div class="inname">分类</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in select">
|
<div class="in select">
|
||||||
<a-select :getPopupContainer="
|
<a-select
|
||||||
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect" placeholder="四个养成" style="width: 100%" :options="classifyList"
|
"
|
||||||
@change="classificationChange" allowClear showSearch>
|
v-model:value="classifySelect"
|
||||||
|
placeholder="四个养成"
|
||||||
|
style="width: 100%"
|
||||||
|
:options="classifyList"
|
||||||
|
@change="classificationChange"
|
||||||
|
allowClear
|
||||||
|
showSearch
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
<img
|
||||||
|
class="nameimg"
|
||||||
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
|
/>
|
||||||
<div class="inname">封面图</div>
|
<div class="inname">封面图</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box" style="
|
<div
|
||||||
|
class="box"
|
||||||
|
style="
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
border: 1px solid rgba(78, 166, 255, 1);
|
border: 1px solid rgba(78, 166, 255, 1);
|
||||||
@@ -57,15 +91,30 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
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">
|
<a-upload
|
||||||
<img style="
|
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"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
style="
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
" v-if="imageUrl" :src="imageUrl" alt="avatar" />
|
"
|
||||||
|
v-if="imageUrl"
|
||||||
|
:src="imageUrl"
|
||||||
|
alt="avatar"
|
||||||
|
/>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<!-- <loading-outlined v-if="loading"></loading-outlined> -->
|
<!-- <loading-outlined v-if="loading"></loading-outlined> -->
|
||||||
<!-- <plus-outlined v-else></plus-outlined> -->
|
<!-- <plus-outlined v-else></plus-outlined> -->
|
||||||
@@ -78,43 +127,74 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
<img
|
||||||
|
class="nameimg"
|
||||||
|
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 separator="至" :placeholder="[' 开始时间', ' 结束时间']" v-model:value="rangevalue"
|
<a-range-picker
|
||||||
style="width: 100%; height: 40px; border-radius: 5px" @change="onRangeChange" />
|
separator="至"
|
||||||
|
:placeholder="[' 开始时间', ' 结束时间']"
|
||||||
|
v-model:value="rangevalue"
|
||||||
|
style="width: 100%; height: 40px; border-radius: 5px"
|
||||||
|
@change="onRangeChange"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
<img
|
||||||
|
class="nameimg"
|
||||||
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
|
/>
|
||||||
<div class="inname">子项目经理</div>
|
<div class="inname">子项目经理</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-select :getPopupContainer="
|
<a-select
|
||||||
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" :value="classifySelect1" mode="multiple" placeholder="请选择项目经理" style="width: 100%" :options="classifyList1"
|
"
|
||||||
@change="classificationChange1" allowClear showSearch>
|
:value="classifySelect1"
|
||||||
|
mode="multiple"
|
||||||
|
placeholder="请选择项目经理"
|
||||||
|
style="width: 100%"
|
||||||
|
:options="classifyList1"
|
||||||
|
@change="classificationChange1"
|
||||||
|
allowClear
|
||||||
|
showSearch
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
<img
|
||||||
|
class="nameimg"
|
||||||
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
|
/>
|
||||||
<div class="inname">资源归属</div>
|
<div class="inname">资源归属</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="in select">
|
<div class="in select">
|
||||||
<a-select :getPopupContainer="
|
<a-select
|
||||||
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect2" placeholder="自动带出 可修改" :options="classifyList2"
|
"
|
||||||
@change="classificationChange2" />
|
v-model:value="classifySelect2"
|
||||||
|
placeholder="自动带出 可修改"
|
||||||
|
:options="classifyList2"
|
||||||
|
@change="classificationChange2"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name name2">
|
<div class="name name2">
|
||||||
@@ -122,7 +202,14 @@
|
|||||||
<div class="inname" style="margin-top: 13px">项目说明</div>
|
<div class="inname" style="margin-top: 13px">项目说明</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<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>
|
</div>
|
||||||
<div class="name name2">
|
<div class="name name2">
|
||||||
@@ -130,52 +217,89 @@
|
|||||||
<div class="inname">同步学习记录</div>
|
<div class="inname">同步学习记录</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<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%;
|
width: 100%;
|
||||||
color: rgba(109, 117, 132, 1);
|
color: rgba(109, 117, 132, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
">同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span></a-radio>
|
"
|
||||||
|
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||||
|
></a-radio
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
<img
|
||||||
|
class="nameimg"
|
||||||
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
|
/>
|
||||||
<div class="inname">项目级别</div>
|
<div class="inname">项目级别</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in select">
|
<div class="in select">
|
||||||
<a-select :getPopupContainer="
|
<a-select
|
||||||
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect3" :options="classifyList3" @change="classificationChange3"
|
"
|
||||||
placeholder="集团级/组织级/现地级/部门级" />
|
v-model:value="classifySelect3"
|
||||||
|
:options="classifyList3"
|
||||||
|
@change="classificationChange3"
|
||||||
|
placeholder="集团级/组织级/现地级/部门级"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
<img
|
||||||
|
class="nameimg"
|
||||||
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
|
/>
|
||||||
<div class="inname">培训体系</div>
|
<div class="inname">培训体系</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in select">
|
<div class="in select">
|
||||||
<a-select :getPopupContainer="
|
<a-select
|
||||||
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect4" :options="classifyList4" @change="classificationChange4"
|
"
|
||||||
placeholder="集团级/组织级/现地级/部门级" />
|
v-model:value="classifySelect4"
|
||||||
|
:options="classifyList4"
|
||||||
|
@change="classificationChange4"
|
||||||
|
placeholder="集团级/组织级/现地级/部门级"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
<img
|
||||||
|
class="nameimg"
|
||||||
|
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 @click="changeChecked1" v-model:checked="checked1"><span style="
|
<a-radio
|
||||||
|
@click="changeChecked1"
|
||||||
|
v-model:checked="checked1"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
|
><span
|
||||||
|
style="
|
||||||
width: 100%;
|
width: 100%;
|
||||||
color: rgba(109, 117, 132, 1);
|
color: rgba(109, 117, 132, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
">BOEU实施</span></a-radio>
|
"
|
||||||
|
>BOEU实施</span
|
||||||
|
></a-radio
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="name name2">
|
<!-- <div class="name name2">
|
||||||
@@ -202,19 +326,36 @@
|
|||||||
<div class="name">
|
<div class="name">
|
||||||
<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 v-if="isEdit" disabled="true" :getPopupContainer="
|
<a-select
|
||||||
|
v-if="isEdit"
|
||||||
|
disabled="true"
|
||||||
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect5" placeholder="请选择模版" :size="size" style="width: 100%" :options="classifyList5"
|
"
|
||||||
@change="classificationChange5">
|
v-model:value="classifySelect5"
|
||||||
|
placeholder="请选择模版"
|
||||||
|
:size="size"
|
||||||
|
style="width: 100%"
|
||||||
|
:options="classifyList5"
|
||||||
|
@change="classificationChange5"
|
||||||
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-select v-else :getPopupContainer="
|
<a-select
|
||||||
|
v-else
|
||||||
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect5" placeholder="请选择模版" :size="size" style="width: 100%" :options="classifyList5"
|
"
|
||||||
@change="classificationChange5">
|
v-model:value="classifySelect5"
|
||||||
|
placeholder="请选择模版"
|
||||||
|
:size="size"
|
||||||
|
style="width: 100%"
|
||||||
|
:options="classifyList5"
|
||||||
|
@change="classificationChange5"
|
||||||
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -222,7 +363,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div class="btn">
|
<div class="btn">
|
||||||
<a-button v-on:click="createProject" type="primary" class="btn1">确定</a-button>
|
<a-button v-on:click="createProject" type="primary" class="btn1"
|
||||||
|
>确定</a-button
|
||||||
|
>
|
||||||
<a-button @click="backPage" class="btn2">取消</a-button>
|
<a-button @click="backPage" class="btn2">取消</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -232,9 +375,9 @@
|
|||||||
import { reactive, toRefs, ref } from "vue";
|
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 { useRouter, useRoute } from "vue-router";
|
||||||
import dayjs from 'dayjs';
|
import dayjs from "dayjs";
|
||||||
import * as api from "../../api/index";
|
import * as api from "../../api/index";
|
||||||
import { toDate } from '../../api/method'
|
import { toDate } from "../../api/method";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "projectAdd",
|
name: "projectAdd",
|
||||||
@@ -260,49 +403,53 @@ export default {
|
|||||||
classifySelect4: [],
|
classifySelect4: [],
|
||||||
rangevalue: [],
|
rangevalue: [],
|
||||||
projectAscription: "",
|
projectAscription: "",
|
||||||
|
viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (routers.query.name==undefined) {
|
if (routers.query.name == undefined) {
|
||||||
router.push({
|
router.push({
|
||||||
path: "/projectmanage"
|
path: "/projectmanage",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
peojectID = routers.query.projectId;
|
peojectID = routers.query.projectId;
|
||||||
state.projectAscription = routers.query.name;
|
state.projectAscription = routers.query.name;
|
||||||
|
|
||||||
if (routers.query.edit!==undefined) {
|
if (routers.query.edit !== undefined) {
|
||||||
isEdit.value = true;
|
isEdit.value = true;
|
||||||
// 需要编辑
|
// 需要编辑
|
||||||
api.getProjectDetail({ projectId: routers.query.projectId }).then(res => {
|
api
|
||||||
|
.getProjectDetail({ projectId: routers.query.projectId })
|
||||||
|
.then((res) => {
|
||||||
if (res.status == 200 && res.data.code == 200) {
|
if (res.status == 200 && res.data.code == 200) {
|
||||||
let info = res.data.data.projectInfo;
|
let info = res.data.data.projectInfo;
|
||||||
console.log(info)
|
console.log(info);
|
||||||
// projectName classifySelect imageUrl * classifySelect1 * remark checked classifySelect3 classifySelect4 changeChecked1 *
|
// projectName classifySelect imageUrl * classifySelect1 * remark checked classifySelect3 classifySelect4 changeChecked1 *
|
||||||
projectName.value = info.name;
|
projectName.value = info.name;
|
||||||
state.classifySelect = classifyList.value[1]; // info.category
|
state.classifySelect = classifyList.value[1]; // info.category
|
||||||
imageUrl.value = info.picUrl;
|
imageUrl.value = info.picUrl;
|
||||||
|
|
||||||
let start = toDate(info.beginTime/1000,'YYYY/MM/DD');
|
let start = toDate(info.beginTime / 1000, "YYYY/MM/DD");
|
||||||
let end = toDate(info.endTime/1000,'YYYY/MM/DD');
|
let end = toDate(info.endTime / 1000, "YYYY/MM/DD");
|
||||||
state.rangevalue = [
|
state.rangevalue = [
|
||||||
dayjs(start, 'YYYY/MM/DD'),
|
dayjs(start, "YYYY/MM/DD"),
|
||||||
dayjs(end, 'YYYY/MM/DD'),
|
dayjs(end, "YYYY/MM/DD"),
|
||||||
];
|
];
|
||||||
|
|
||||||
let manageName = info.manager.split(",");
|
let manageName = info.manager.split(",");
|
||||||
let manageValue = info.managerId.split(",");
|
let manageValue = info.managerId.split(",");
|
||||||
let optionsManage = []
|
let optionsManage = [];
|
||||||
for (let i = 0; i < manageName.length; i++) {
|
for (let i = 0; i < manageName.length; i++) {
|
||||||
let obj = {
|
let obj = {
|
||||||
label: manageName[i],
|
label: manageName[i],
|
||||||
value: manageValue[i]
|
value: manageValue[i],
|
||||||
|
};
|
||||||
|
optionsManage.push(obj);
|
||||||
}
|
}
|
||||||
optionsManage.push(obj)
|
console.log(optionsManage);
|
||||||
}
|
|
||||||
console.log(optionsManage)
|
|
||||||
state.classifySelect1 = optionsManage;
|
state.classifySelect1 = optionsManage;
|
||||||
state.classifySelect2 = classifyList2.value[info.sourceBelongId - 1];
|
state.classifySelect2 =
|
||||||
|
classifyList2.value[info.sourceBelongId - 1];
|
||||||
remark.value = info.remark;
|
remark.value = info.remark;
|
||||||
state.checked = info.boeFlag ? info.boeFlag : false;
|
state.checked = info.boeFlag ? info.boeFlag : false;
|
||||||
state.classifySelect3 = classifyList3.value[info.level];
|
state.classifySelect3 = classifyList3.value[info.level];
|
||||||
@@ -312,8 +459,8 @@ export default {
|
|||||||
|
|
||||||
projectType = 1;
|
projectType = 1;
|
||||||
picUrl = info.picUrl;
|
picUrl = info.picUrl;
|
||||||
beginTime = Number(info.beginTime/1000);
|
beginTime = Number(info.beginTime / 1000);
|
||||||
endTime = Number(info.endTime/1000);
|
endTime = Number(info.endTime / 1000);
|
||||||
manager = info.manager;
|
manager = info.manager;
|
||||||
managerId = info.managerId;
|
managerId = info.managerId;
|
||||||
sourceBelongIdC = Number(info.sourceBelongId);
|
sourceBelongIdC = Number(info.sourceBelongId);
|
||||||
@@ -323,7 +470,10 @@ export default {
|
|||||||
boeFlag = info.boeFlag;
|
boeFlag = info.boeFlag;
|
||||||
paraentID = Number(info.parentId);
|
paraentID = Number(info.parentId);
|
||||||
}
|
}
|
||||||
}).catch(err => { console.log(err) })
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
paraentID = Number(routers.query.projectId);
|
paraentID = Number(routers.query.projectId);
|
||||||
}
|
}
|
||||||
@@ -331,12 +481,10 @@ export default {
|
|||||||
const backPage = () => {
|
const backPage = () => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
router.push({
|
router.push({
|
||||||
path: "/projectmanage"
|
path: "/projectmanage",
|
||||||
});
|
});
|
||||||
}, 400);
|
}, 400);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const projectName = ref("");
|
const projectName = ref("");
|
||||||
|
|
||||||
@@ -451,7 +599,7 @@ export default {
|
|||||||
|
|
||||||
let beginTime = "";
|
let beginTime = "";
|
||||||
let endTime = "";
|
let endTime = "";
|
||||||
const dateFormatList = ['YYYY/MM/DD'];
|
const dateFormatList = ["YYYY/MM/DD"];
|
||||||
|
|
||||||
const onRangeChange = (value, dateString) => {
|
const onRangeChange = (value, dateString) => {
|
||||||
console.log("Selected Time: ", value);
|
console.log("Selected Time: ", value);
|
||||||
@@ -492,7 +640,7 @@ export default {
|
|||||||
let newoptions = [];
|
let newoptions = [];
|
||||||
for (let i = 0; i < state.classifySelect1.length; i++) {
|
for (let i = 0; i < state.classifySelect1.length; i++) {
|
||||||
if (state.classifySelect1[i].value) {
|
if (state.classifySelect1[i].value) {
|
||||||
newoptions.push(state.classifySelect1[i])
|
newoptions.push(state.classifySelect1[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
state.classifySelect1 = newoptions;
|
state.classifySelect1 = newoptions;
|
||||||
@@ -507,7 +655,7 @@ export default {
|
|||||||
{ value: 3, label: "项目三" },
|
{ value: 3, label: "项目三" },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
let sourceBelongIdC = '';
|
let sourceBelongIdC = "";
|
||||||
const classificationChange2 = (key) => {
|
const classificationChange2 = (key) => {
|
||||||
console.log(`selected ${key}`, classifyList2);
|
console.log(`selected ${key}`, classifyList2);
|
||||||
sourceBelongIdC = key;
|
sourceBelongIdC = key;
|
||||||
@@ -601,13 +749,13 @@ export default {
|
|||||||
sourceBelongId: "请选择资源归属",
|
sourceBelongId: "请选择资源归属",
|
||||||
level: "请填写项目级别",
|
level: "请填写项目级别",
|
||||||
systemId: "请填写项目培训体系",
|
systemId: "请填写项目培训体系",
|
||||||
boeFlag: "请选择是否BOE实施"
|
boeFlag: "请选择是否BOE实施",
|
||||||
};
|
};
|
||||||
|
|
||||||
const createProject = () => {
|
const createProject = () => {
|
||||||
console.log('我是否要编辑项目', isEdit.value)
|
console.log("我是否要编辑项目", isEdit.value);
|
||||||
if (isEdit.value) {
|
if (isEdit.value) {
|
||||||
console.log('我要编辑项目', peojectID)
|
console.log("我要编辑项目", peojectID);
|
||||||
let obj = {
|
let obj = {
|
||||||
projectId: Number(peojectID),
|
projectId: Number(peojectID),
|
||||||
name: projectName["value"],
|
name: projectName["value"],
|
||||||
@@ -652,7 +800,7 @@ export default {
|
|||||||
message.success("编辑成功");
|
message.success("编辑成功");
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
router.push({
|
router.push({
|
||||||
path: "/projectmanage"
|
path: "/projectmanage",
|
||||||
});
|
});
|
||||||
}, 1000);
|
}, 1000);
|
||||||
} else {
|
} else {
|
||||||
@@ -665,7 +813,6 @@ export default {
|
|||||||
message.destroy();
|
message.destroy();
|
||||||
message.error("编辑失败,请检查当前网络状态。");
|
message.error("编辑失败,请检查当前网络状态。");
|
||||||
});
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
let obj = {
|
let obj = {
|
||||||
name: projectName["value"],
|
name: projectName["value"],
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
placeholder="请输入项目名称"
|
placeholder="请输入项目名称"
|
||||||
show-count
|
show-count
|
||||||
:maxlength="30"
|
:maxlength="30"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -53,6 +54,7 @@
|
|||||||
@change="classificationChange"
|
@change="classificationChange"
|
||||||
allowClear
|
allowClear
|
||||||
showSearch
|
showSearch
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
>
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
@@ -86,6 +88,7 @@
|
|||||||
action="/api/file/upload"
|
action="/api/file/upload"
|
||||||
:before-upload="beforeUpload"
|
:before-upload="beforeUpload"
|
||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
style="
|
style="
|
||||||
@@ -124,6 +127,7 @@
|
|||||||
v-model:value="rangevalue"
|
v-model:value="rangevalue"
|
||||||
style="width: 100%; height: 40px; border-radius: 5px"
|
style="width: 100%; height: 40px; border-radius: 5px"
|
||||||
@change="onRangeChange"
|
@change="onRangeChange"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -150,6 +154,7 @@
|
|||||||
@change="classificationChange1"
|
@change="classificationChange1"
|
||||||
allowClear
|
allowClear
|
||||||
showSearch
|
showSearch
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
>
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
@@ -174,6 +179,7 @@
|
|||||||
placeholder="自动带出 可修改"
|
placeholder="自动带出 可修改"
|
||||||
:options="classifyList2"
|
:options="classifyList2"
|
||||||
@change="classificationChange2"
|
@change="classificationChange2"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -188,6 +194,7 @@
|
|||||||
placeholder="请输入说明"
|
placeholder="请输入说明"
|
||||||
show-count
|
show-count
|
||||||
:maxlength="200"
|
:maxlength="200"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -196,7 +203,10 @@
|
|||||||
<div class="inname">同步学习记录</div>
|
<div class="inname">同步学习记录</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-radio @click="changeChecked" v-model:checked="checked"
|
<a-radio
|
||||||
|
@click="changeChecked"
|
||||||
|
v-model:checked="checked"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
><span
|
><span
|
||||||
style="
|
style="
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -227,6 +237,7 @@
|
|||||||
:options="classifyList3"
|
:options="classifyList3"
|
||||||
@change="classificationChange3"
|
@change="classificationChange3"
|
||||||
placeholder="集团级/组织级/现地级/部门级"
|
placeholder="集团级/组织级/现地级/部门级"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -249,6 +260,7 @@
|
|||||||
:options="classifyList4"
|
:options="classifyList4"
|
||||||
@change="classificationChange4"
|
@change="classificationChange4"
|
||||||
placeholder="集团级/组织级/现地级/部门级"
|
placeholder="集团级/组织级/现地级/部门级"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -261,7 +273,10 @@
|
|||||||
<div class="inname">是否BOEU实施</div>
|
<div class="inname">是否BOEU实施</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-radio @click="changeChecked1" v-model:checked="checked1"
|
<a-radio
|
||||||
|
@click="changeChecked1"
|
||||||
|
v-model:checked="checked1"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
><span
|
><span
|
||||||
style="
|
style="
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -509,6 +524,7 @@ export default {
|
|||||||
tableDataTotal: -1, //模版列表总数
|
tableDataTotal: -1, //模版列表总数
|
||||||
pageSize: 10, //每页10条数据
|
pageSize: 10, //每页10条数据
|
||||||
totalPages: 0, //总页数
|
totalPages: 0, //总页数
|
||||||
|
viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null,
|
||||||
});
|
});
|
||||||
|
|
||||||
const projectName = ref("");
|
const projectName = ref("");
|
||||||
|
|||||||
@@ -816,10 +816,10 @@
|
|||||||
<span>您确定要复制此路径吗</span>
|
<span>您确定要复制此路径吗</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btnbox">
|
<div class="del_btnbox">
|
||||||
<div class="del_btn btn1" @click="delete_exit">
|
<div class="del_btn btn1" @click="closeCopyModal">
|
||||||
<div class="btnText">取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btn btn2" @click="delete_exit">
|
<div class="del_btn btn2" @click="copyProject">
|
||||||
<div class="btnText">确定</div>
|
<div class="btnText">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1093,6 +1093,7 @@ export default {
|
|||||||
finishProjectId: null, //结束的项目id
|
finishProjectId: null, //结束的项目id
|
||||||
deleteProjectId: null, //删除的项目id
|
deleteProjectId: null, //删除的项目id
|
||||||
templateProjectId: null, //存为模版的项目id
|
templateProjectId: null, //存为模版的项目id
|
||||||
|
copyProjectId: null, //复制项目id
|
||||||
});
|
});
|
||||||
// 数据接入 - start -
|
// 数据接入 - start -
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -1922,6 +1923,34 @@ export default {
|
|||||||
const closeStartModal = () => {
|
const closeStartModal = () => {
|
||||||
state.startModal = false;
|
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 -
|
// 数据接入 - end -
|
||||||
|
|
||||||
@@ -2119,7 +2148,7 @@ export default {
|
|||||||
<a-select-option value="复制" label="复制">
|
<a-select-option value="复制" label="复制">
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showCopyModal();
|
showCopyModal(value.record.projectId);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
复制
|
复制
|
||||||
@@ -2190,7 +2219,7 @@ export default {
|
|||||||
<span
|
<span
|
||||||
class="operation3"
|
class="operation3"
|
||||||
// onClick={() => {
|
// onClick={() => {
|
||||||
// showCopyModal();
|
// showCopyModal(value.record.projectId);
|
||||||
// }}
|
// }}
|
||||||
></span>
|
></span>
|
||||||
|
|
||||||
@@ -2217,7 +2246,7 @@ export default {
|
|||||||
<a-select-option value="复制" label="复制">
|
<a-select-option value="复制" label="复制">
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showCopyModal();
|
showCopyModal(value.record.projectId);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
复制
|
复制
|
||||||
@@ -2279,7 +2308,7 @@ export default {
|
|||||||
<span
|
<span
|
||||||
class="operation3"
|
class="operation3"
|
||||||
// onClick={() => {
|
// onClick={() => {
|
||||||
// showCopyModal();
|
// showCopyModal(value.record.projectId);
|
||||||
// }}
|
// }}
|
||||||
></span>
|
></span>
|
||||||
<div class="tableSelect">
|
<div class="tableSelect">
|
||||||
@@ -2305,7 +2334,7 @@ export default {
|
|||||||
<a-select-option value="复制" label="复制">
|
<a-select-option value="复制" label="复制">
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showCopyModal();
|
showCopyModal(value.record.projectId);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
复制
|
复制
|
||||||
@@ -2420,7 +2449,7 @@ export default {
|
|||||||
<a-select-option value="复制" label="复制">
|
<a-select-option value="复制" label="复制">
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showCopyModal();
|
showCopyModal(value.record.projectId);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
复制
|
复制
|
||||||
@@ -2502,7 +2531,7 @@ export default {
|
|||||||
<a-select-option value="复制" label="复制">
|
<a-select-option value="复制" label="复制">
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showCopyModal();
|
showCopyModal(value.record.projectId);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
复制
|
复制
|
||||||
@@ -2572,7 +2601,7 @@ export default {
|
|||||||
<a-select-option value="复制" label="复制">
|
<a-select-option value="复制" label="复制">
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showCopyModal();
|
showCopyModal(value.record.projectId);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
复制
|
复制
|
||||||
@@ -2640,7 +2669,52 @@ export default {
|
|||||||
编辑
|
编辑
|
||||||
</span>
|
</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">
|
<div class="tableSelect">
|
||||||
<a-select
|
<a-select
|
||||||
@@ -2727,7 +2801,7 @@ export default {
|
|||||||
<a-select-option value="复制" label="复制">
|
<a-select-option value="复制" label="复制">
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showCopyModal();
|
showCopyModal(value.record.projectId);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
复制
|
复制
|
||||||
@@ -2774,16 +2848,16 @@ export default {
|
|||||||
// options={state.projectNameList}
|
// options={state.projectNameList}
|
||||||
dropdownClassName="tabledropdown"
|
dropdownClassName="tabledropdown"
|
||||||
>
|
>
|
||||||
<a-select-option value="存为模版" label="存为模版">
|
|
||||||
<a-select-option value="复制" label="复制">
|
<a-select-option value="复制" label="复制">
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showCopyModal();
|
showCopyModal(value.record.projectId);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
复制
|
复制
|
||||||
</div>
|
</div>
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
|
<a-select-option value="存为模版" label="存为模版">
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showStartModal(value.record.projectId);
|
showStartModal(value.record.projectId);
|
||||||
@@ -2842,7 +2916,7 @@ export default {
|
|||||||
<a-select-option value="复制" label="复制">
|
<a-select-option value="复制" label="复制">
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showCopyModal();
|
showCopyModal(value.record.projectId);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
复制
|
复制
|
||||||
@@ -2978,12 +3052,6 @@ export default {
|
|||||||
state.doublesonpro = true;
|
state.doublesonpro = true;
|
||||||
state.sonproject = false;
|
state.sonproject = false;
|
||||||
};
|
};
|
||||||
const showCopyModal = () => {
|
|
||||||
state.copyModal = true;
|
|
||||||
};
|
|
||||||
const closeCopyModal = () => {
|
|
||||||
state.copyModal = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
const showProjOwner = () => {
|
const showProjOwner = () => {
|
||||||
state.ProjOwnervisible = true;
|
state.ProjOwnervisible = true;
|
||||||
@@ -3098,6 +3166,7 @@ export default {
|
|||||||
finishProject,
|
finishProject,
|
||||||
deleteProject,
|
deleteProject,
|
||||||
templateProject,
|
templateProject,
|
||||||
|
copyProject,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
<div class="inname">子项目名称</div>
|
<div class="inname">子项目名称</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<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>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect" placeholder="四个养成" style="width: 100%" :options="classifyList"
|
" v-model:value="classifySelect" placeholder="四个养成" style="width: 100%" :options="classifyList"
|
||||||
@change="classificationChange" allowClear showSearch>
|
@change="classificationChange" allowClear showSearch :disabled="viewDetail ? true : false">
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
">
|
">
|
||||||
<a-upload v-model:file-list="fileList" name="file" list-type="picture-card" class="avatar-uploader"
|
<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="
|
<img style="
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
|
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-range-picker separator="至" :placeholder="[' 开始时间', ' 结束时间']" v-model:value="rangevalue"
|
<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>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" :value="classifySelect1" mode="multiple" placeholder="请选择项目经理" style="width: 100%" :options="classifyList1"
|
" :value="classifySelect1" mode="multiple" placeholder="请选择项目经理" style="width: 100%" :options="classifyList1"
|
||||||
@change="classificationChange1" allowClear showSearch>
|
@change="classificationChange1" allowClear showSearch :disabled="viewDetail ? true : false">
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect2" placeholder="自动带出 可修改" :options="classifyList2"
|
" v-model:value="classifySelect2" placeholder="自动带出 可修改" :options="classifyList2"
|
||||||
@change="classificationChange2" />
|
@change="classificationChange2" :disabled="viewDetail ? true : false" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name name2">
|
<div class="name name2">
|
||||||
@@ -122,7 +122,7 @@
|
|||||||
<div class="inname" style="margin-top: 13px">项目说明</div>
|
<div class="inname" style="margin-top: 13px">项目说明</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<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>
|
</div>
|
||||||
<div class="name name2">
|
<div class="name name2">
|
||||||
@@ -130,11 +130,11 @@
|
|||||||
<div class="inname">同步学习记录</div>
|
<div class="inname">同步学习记录</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<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%;
|
width: 100%;
|
||||||
color: rgba(109, 117, 132, 1);
|
color: rgba(109, 117, 132, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
">同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span></a-radio>
|
" >同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span></a-radio>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect3" :options="classifyList3" @change="classificationChange3"
|
" v-model:value="classifySelect3" :options="classifyList3" @change="classificationChange3"
|
||||||
placeholder="集团级/组织级/现地级/部门级" />
|
placeholder="集团级/组织级/现地级/部门级" :disabled="viewDetail ? true : false" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect4" :options="classifyList4" @change="classificationChange4"
|
" v-model:value="classifySelect4" :options="classifyList4" @change="classificationChange4"
|
||||||
placeholder="集团级/组织级/现地级/部门级" />
|
placeholder="集团级/组织级/现地级/部门级" :disabled="viewDetail ? true : false" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
@@ -171,7 +171,7 @@
|
|||||||
<div class="inname">是否BOEU实施</div>
|
<div class="inname">是否BOEU实施</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<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%;
|
width: 100%;
|
||||||
color: rgba(109, 117, 132, 1);
|
color: rgba(109, 117, 132, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -207,7 +207,7 @@
|
|||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
" v-model:value="classifySelect5" placeholder="请选择模版" :size="size" style="width: 100%" :options="classifyList5"
|
" v-model:value="classifySelect5" placeholder="请选择模版" :size="size" style="width: 100%" :options="classifyList5"
|
||||||
@change="classificationChange5">
|
@change="classificationChange5" >
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-select v-else :getPopupContainer="
|
<a-select v-else :getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
@@ -260,6 +260,7 @@ export default {
|
|||||||
classifySelect4: [],
|
classifySelect4: [],
|
||||||
rangevalue: [],
|
rangevalue: [],
|
||||||
projectAscription: "",
|
projectAscription: "",
|
||||||
|
viewDetail:routers.query.viewDetail?routers.query.viewDetail:null
|
||||||
});
|
});
|
||||||
|
|
||||||
if (routers.query.name == undefined) {
|
if (routers.query.name == undefined) {
|
||||||
|
|||||||
Reference in New Issue
Block a user