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

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

@@ -430,10 +430,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="copyLearnPath">
<div class="btnText">确定</div>
</div>
</div>
@@ -474,7 +474,7 @@
</div>
</div>
</a-modal>
<!-- 结束路径弹窗 -->
<!-- 删除路径弹窗 -->
<a-modal
v-model:visible="deleteModal"
:footer="null"
@@ -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,6 +1160,7 @@ export default {
>
<div
onClick={() => {
state.copyPathId = text.record.id;
showCopyModal();
}}
>
@@ -1177,6 +1201,7 @@ export default {
>
<div
onClick={() => {
state.copyPathId = text.record.id;
showCopyModal();
}}
>
@@ -1230,6 +1255,7 @@ export default {
>
<div
onClick={() => {
state.copyPathId = text.record.id;
showCopyModal();
}}
>
@@ -1491,6 +1517,7 @@ export default {
closeCopyModal,
showStopModal,
closeStopModal,
copyLearnPath,
stopLearnPath,
showDeleteModal,
closeDeleteModal,
@@ -1658,7 +1685,6 @@ export default {
margin-bottom: 20px;
margin-right: 6px;
}
}
}
.info {

View File

@@ -3,7 +3,12 @@
<div class="projectAdd">
<div class="header">
<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>
</div>
</div>
@@ -11,7 +16,10 @@
<div class="main">
<div class="name">
<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>
<div class="in">
@@ -22,34 +30,60 @@
</div>
<div class="name">
<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>
<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">
<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>
<div class="in select">
<a-select :getPopupContainer="
<a-select
:getPopupContainer="
(triggerNode) => {
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>
</div>
</div>
<div class="name">
<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>
<div class="box" style="
<div
class="box"
style="
width: 100px;
height: 100px;
border: 1px solid rgba(78, 166, 255, 1);
@@ -57,15 +91,30 @@
cursor: pointer;
position: relative;
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">
<img style="
"
>
<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"
:disabled="viewDetail ? true : false"
>
<img
style="
width: 100px;
height: 100px;
margin-bottom: 4px;
margin-right: 4px;
" v-if="imageUrl" :src="imageUrl" alt="avatar" />
"
v-if="imageUrl"
:src="imageUrl"
alt="avatar"
/>
<div v-else>
<!-- <loading-outlined v-if="loading"></loading-outlined> -->
<!-- <plus-outlined v-else></plus-outlined> -->
@@ -78,43 +127,74 @@
</div>
<div class="name">
<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>
<div class="in">
<a-range-picker separator="至" :placeholder="[' 开始时间', ' 结束时间']" v-model:value="rangevalue"
style="width: 100%; height: 40px; border-radius: 5px" @change="onRangeChange" />
<a-range-picker
separator="至"
:placeholder="[' 开始时间', ' 结束时间']"
v-model:value="rangevalue"
style="width: 100%; height: 40px; border-radius: 5px"
@change="onRangeChange"
:disabled="viewDetail ? true : false"
/>
</div>
</div>
<div class="name">
<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>
<div class="in">
<a-select :getPopupContainer="
<a-select
:getPopupContainer="
(triggerNode) => {
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>
</div>
</div>
<div class="name">
<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>
<div class="in select">
<a-select :getPopupContainer="
<a-select
:getPopupContainer="
(triggerNode) => {
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 class="name name2">
@@ -122,7 +202,14 @@
<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,52 +217,89 @@
<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">
<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>
<div class="in select">
<a-select :getPopupContainer="
<a-select
:getPopupContainer="
(triggerNode) => {
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 class="name">
<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>
<div class="in select">
<a-select :getPopupContainer="
<a-select
:getPopupContainer="
(triggerNode) => {
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 class="name">
<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>
<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;
">BOEU实施</span></a-radio>
"
>BOEU实施</span
></a-radio
>
</div>
</div>
<!-- <div class="name name2">
@@ -202,19 +326,36 @@
<div class="name">
<div class="inname" style="width: 50px">模版</div>
<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) => {
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 v-else :getPopupContainer="
<a-select
v-else
:getPopupContainer="
(triggerNode) => {
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>
</div>
</div>
@@ -222,7 +363,9 @@
</div>
<div class="footer">
<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>
</div>
</div>
@@ -232,9 +375,9 @@
import { reactive, toRefs, ref } from "vue";
import { message } from "ant-design-vue";
import { useRouter, useRoute } from "vue-router";
import dayjs from 'dayjs';
import dayjs from "dayjs";
import * as api from "../../api/index";
import { toDate } from '../../api/method'
import { toDate } from "../../api/method";
export default {
name: "projectAdd",
@@ -260,11 +403,12 @@ export default {
classifySelect4: [],
rangevalue: [],
projectAscription: "",
viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null,
});
if (routers.query.name == undefined) {
router.push({
path: "/projectmanage"
path: "/projectmanage",
});
}
@@ -274,35 +418,38 @@ export default {
if (routers.query.edit !== undefined) {
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) {
let info = res.data.data.projectInfo;
console.log(info)
console.log(info);
// projectName classifySelect imageUrl * classifySelect1 * remark checked classifySelect3 classifySelect4 changeChecked1 *
projectName.value = info.name;
state.classifySelect = classifyList.value[1]; // info.category
imageUrl.value = info.picUrl;
let start = toDate(info.beginTime/1000,'YYYY/MM/DD');
let end = toDate(info.endTime/1000,'YYYY/MM/DD');
let start = toDate(info.beginTime / 1000, "YYYY/MM/DD");
let end = toDate(info.endTime / 1000, "YYYY/MM/DD");
state.rangevalue = [
dayjs(start, 'YYYY/MM/DD'),
dayjs(end, 'YYYY/MM/DD'),
dayjs(start, "YYYY/MM/DD"),
dayjs(end, "YYYY/MM/DD"),
];
let manageName = info.manager.split(",");
let manageValue = info.managerId.split(",");
let optionsManage = []
let optionsManage = [];
for (let i = 0; i < manageName.length; i++) {
let obj = {
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.classifySelect2 = classifyList2.value[info.sourceBelongId - 1];
state.classifySelect2 =
classifyList2.value[info.sourceBelongId - 1];
remark.value = info.remark;
state.checked = info.boeFlag ? info.boeFlag : false;
state.classifySelect3 = classifyList3.value[info.level];
@@ -323,7 +470,10 @@ export default {
boeFlag = info.boeFlag;
paraentID = Number(info.parentId);
}
}).catch(err => { console.log(err) })
})
.catch((err) => {
console.log(err);
});
} else {
paraentID = Number(routers.query.projectId);
}
@@ -331,12 +481,10 @@ export default {
const backPage = () => {
setTimeout(() => {
router.push({
path: "/projectmanage"
path: "/projectmanage",
});
}, 400);
}
};
const projectName = ref("");
@@ -451,7 +599,7 @@ export default {
let beginTime = "";
let endTime = "";
const dateFormatList = ['YYYY/MM/DD'];
const dateFormatList = ["YYYY/MM/DD"];
const onRangeChange = (value, dateString) => {
console.log("Selected Time: ", value);
@@ -492,7 +640,7 @@ export default {
let newoptions = [];
for (let i = 0; i < state.classifySelect1.length; i++) {
if (state.classifySelect1[i].value) {
newoptions.push(state.classifySelect1[i])
newoptions.push(state.classifySelect1[i]);
}
}
state.classifySelect1 = newoptions;
@@ -507,7 +655,7 @@ export default {
{ value: 3, label: "项目三" },
]);
let sourceBelongIdC = '';
let sourceBelongIdC = "";
const classificationChange2 = (key) => {
console.log(`selected ${key}`, classifyList2);
sourceBelongIdC = key;
@@ -601,13 +749,13 @@ export default {
sourceBelongId: "请选择资源归属",
level: "请填写项目级别",
systemId: "请填写项目培训体系",
boeFlag: "请选择是否BOE实施"
boeFlag: "请选择是否BOE实施",
};
const createProject = () => {
console.log('我是否要编辑项目', isEdit.value)
console.log("我是否要编辑项目", isEdit.value);
if (isEdit.value) {
console.log('我要编辑项目', peojectID)
console.log("我要编辑项目", peojectID);
let obj = {
projectId: Number(peojectID),
name: projectName["value"],
@@ -652,7 +800,7 @@ export default {
message.success("编辑成功");
setTimeout(() => {
router.push({
path: "/projectmanage"
path: "/projectmanage",
});
}, 1000);
} else {
@@ -665,7 +813,6 @@ export default {
message.destroy();
message.error("编辑失败,请检查当前网络状态。");
});
} else {
let obj = {
name: projectName["value"],

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="存为模版">
<a-select-option value="复制" label="复制">
<div
onClick={() => {
showCopyModal();
showCopyModal(value.record.projectId);
}}
>
复制
</div>
</a-select-option>
<a-select-option value="存为模版" label="存为模版">
<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,7 +130,7 @@
<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;
@@ -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;
@@ -260,6 +260,7 @@ export default {
classifySelect4: [],
rangevalue: [],
projectAscription: "",
viewDetail:routers.query.viewDetail?routers.query.viewDetail:null
});
if (routers.query.name == undefined) {