fix:项目创建时间去除限制

This commit is contained in:
wuyx
2023-02-23 14:27:46 +08:00
parent 13c5d8ede1
commit 1eb14fc86e

View File

@@ -2,17 +2,10 @@
<template xmlns:display="http://www.w3.org/1999/xhtml"> <template xmlns:display="http://www.w3.org/1999/xhtml">
<div class="projectAdd"> <div class="projectAdd">
<div class="header"> <div class="header">
<span class="title" <span class="title">{{
>{{ projectInfo.id ? "编辑" : "创建"
projectInfo.id ? "编辑" : "创建" }}{{ ptojectType == "3" ? "班级" : "项目" }}</span>
}}{{ ptojectType == "3" ? "班级" : "项目" }}</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>
@@ -20,10 +13,7 @@
<div class="main"> <div class="main">
<div class="name" v-if="projectInfo.parentName"> <div class="name" v-if="projectInfo.parentName">
<div class="namebox"> <div class="namebox">
<img <img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<div class="inname">项目归属</div> <div class="inname">项目归属</div>
</div> </div>
<div class="in"> <div class="in">
@@ -34,153 +24,97 @@
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<div class="inname"> <div class="inname">
{{ ptojectType == 3 ? "班级名称" : "项目名称" }} {{ ptojectType == 3 ? "班级名称" : "项目名称" }}
</div> </div>
</div> </div>
<div class="in"> <div class="in">
<NameInput <NameInput placeholder="请输入项目名称" v-model:value="projectInfo.name" v-model:validate="projectInfo.validate"
placeholder="请输入项目名称" :maxlength="30" show-count :id="projectInfo.id"></NameInput>
v-model:value="projectInfo.name"
v-model:validate="projectInfo.validate"
:maxlength="30"
show-count
:id="projectInfo.id"
></NameInput>
</div> </div>
</div> </div>
<div class="name flex-top"> <div class="name flex-top">
<div class="namebox" style="margin-top: 10px"> <div class="namebox" style="margin-top: 10px">
<img <img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<div class="inname">封面图2</div> <div class="inname">封面图2</div>
</div> </div>
<div class="in select" style="flex: 1; display: flex"> <div class="in select" style="flex: 1; display: flex">
<div <div :class="`box ${projectInfo.picUrl === src.value ? 'active' : ''}`" style="
:class="`box ${projectInfo.picUrl === src.value ? 'active' : ''}`"
style="
width: 100px;
height: 100px;
border-radius: 5px;
cursor: pointer;
position: relative;
overflow: hidden;
"
v-for="(src, index) in projectPic"
:style="{
display: index >= 3 ? 'none' : 'flex',
}"
:key="index"
@click="() => (projectInfo.picUrl = src.value)"
>
<img
style="
width: 100px;
height: 100px;
margin-bottom: 4px;
margin-right: 4px;
"
:src="src.value"
alt="avatar"
/>
</div>
<div
@click="showLearnBgMore"
v-if="projectPic.length > 3"
style="
width: 100px; width: 100px;
height: 100px; height: 100px;
padding-left: 15px;
border-radius: 5px; border-radius: 5px;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
display: flex; " v-for="(src, index) in projectPic" :style="{
align-items: center; display: index >= 3 ? 'none' : 'flex',
justify-content: center; }" :key="index" @click="() => (projectInfo.picUrl = src.value)">
border: 1px solid #c7cbd2; <img style="
font-size: 14px; width: 100px;
font-weight: 400; height: 100px;
color: #4ea6ff; margin-bottom: 4px;
line-height: 36px; margin-right: 4px;
" " :src="src.value" alt="avatar" />
> </div>
查看更多 <img src="../../assets/images/projectadd/go.png" alt=""/> <div @click="showLearnBgMore" v-if="projectPic.length > 3" style="
width: 100px;
height: 100px;
padding-left: 15px;
border-radius: 5px;
cursor: pointer;
position: relative;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid #c7cbd2;
font-size: 14px;
font-weight: 400;
color: #4ea6ff;
line-height: 36px;
">
查看更多 <img src="../../assets/images/projectadd/go.png" alt="" />
</div> </div>
</div> </div>
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
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 <a-range-picker separator="至" :show-time="{ format: 'HH:mm' }" :placeholder="[' 开始时间', ' 结束时间']"
separator="至" :disabledDate="disabledDate" v-model:value="timeRange" @calendarChange="calendarChange"
:show-time="{ format: 'HH:mm' }" style="width: 100%; height: 40px; border-radius: 5px" :allowClear="false" format="YYYY-MM-DD HH:mm"
:placeholder="[' 开始时间', ' 结束时间']" valueFormat="YYYY-MM-DD HH:mm" @change="timeChange" :disabled="!!viewDetail" />
:disabledDate="disabledDate"
v-model:value="timeRange"
@calendarChange="calendarChange"
style="width: 100%; height: 40px; border-radius: 5px"
:allowClear="false"
format="YYYY-MM-DD HH:mm"
valueFormat="YYYY-MM-DD HH:mm"
@change="timeChange"
:disabled="!!viewDetail"
/>
</div> </div>
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<div class="inname">项目经理</div> <div class="inname">项目经理</div>
</div> </div>
<div class="in"> <div class="in">
<ProjectManager <ProjectManager v-model:value="projectInfo.managerId" v-model:name="projectInfo.manager"
v-model:value="projectInfo.managerId" @onChange="managerChange" mode="multiple"></ProjectManager>
v-model:name="projectInfo.manager"
@onChange="managerChange"
mode="multiple"
></ProjectManager>
</div> </div>
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
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">
<OrgClass <OrgClass v-model:value="projectInfo.sourceBelongId" v-model:name="projectInfo.sourceBelongName"
v-model:value="projectInfo.sourceBelongId" v-model:fullName="projectInfo.sourceBelongFullName"></OrgClass>
v-model:name="projectInfo.sourceBelongName"
v-model:fullName="projectInfo.sourceBelongFullName"
></OrgClass>
</div> </div>
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
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">
@@ -189,10 +123,7 @@
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
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">
@@ -201,17 +132,11 @@
</div> </div>
<div class="name"> <div class="name">
<div class="namebox"> <div class="namebox">
<img <img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
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-group <a-radio-group v-model:value="projectInfo.boeFlag" :disabled="viewDetail ? true : false">
v-model:value="projectInfo.boeFlag"
:disabled="viewDetail ? true : false"
>
<a-radio :style="radioStyle" :value="1"></a-radio> <a-radio :style="radioStyle" :value="1"></a-radio>
<a-radio :style="radioStyle" :value="0"></a-radio> <a-radio :style="radioStyle" :value="0"></a-radio>
</a-radio-group> </a-radio-group>
@@ -224,13 +149,11 @@
<div class="in ggysxz" v-if="courseSyncFlag"> <div class="in ggysxz" v-if="courseSyncFlag">
<!-- :disabled="viewDetail ? true : false" --> <!-- :disabled="viewDetail ? true : false" -->
<a-checkbox v-model:checked="courseSyncFlag" disabled> <a-checkbox v-model:checked="courseSyncFlag" disabled>
<span <span style="
style=" width: 100%;
width: 100%; color: rgba(109, 117, 132, 1);
color: rgba(109, 117, 132, 1); font-size: 14px;
font-size: 14px; ">
"
>
同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程 同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程
</span> </span>
</a-checkbox> </a-checkbox>
@@ -238,13 +161,11 @@
<div class="in" v-else> <div class="in" v-else>
<!-- :disabled="viewDetail ? true : false" --> <!-- :disabled="viewDetail ? true : false" -->
<a-checkbox v-model:checked="courseSyncFlag" disabled> <a-checkbox v-model:checked="courseSyncFlag" disabled>
<span <span style="
style=" width: 100%;
width: 100%; color: rgba(109, 117, 132, 1);
color: rgba(109, 117, 132, 1); font-size: 14px;
font-size: 14px; ">
"
>
同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程 同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程
</span> </span>
</a-checkbox> </a-checkbox>
@@ -255,14 +176,8 @@
<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 <a-textarea v-model:value="projectInfo.remark" style="height: 80px" placeholder="请输入说明" show-count
v-model:value="projectInfo.remark" :maxlength="200" :disabled="viewDetail ? true : false" />
style="height: 80px"
placeholder="请输入说明"
show-count
:maxlength="200"
:disabled="viewDetail ? true : false"
/>
</div> </div>
</div> </div>
@@ -279,18 +194,12 @@
<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 <a-select :getPopupContainer="triggerNode => (triggerNode.parentNode || document.body)" placeholder="请选择模版"
:getPopupContainer="triggerNode => (triggerNode.parentNode || document.body)" style="width: 100%" :options="classifyList5" @change="classificationChange5" @popupScroll="templateScroll"
placeholder="请选择模版" :fieldNames="{
style="width: 100%"
:options="classifyList5"
@change="classificationChange5"
@popupScroll="templateScroll"
:fieldNames="{
label: 'name', label: 'name',
value: 'id', value: 'id',
}" }">
>
</a-select> </a-select>
</div> </div>
</div> </div>
@@ -299,50 +208,31 @@
<div class="footer"> <div class="footer">
<div class="btn"> <div class="btn">
<a-button @click="backPage" class="btn2">取消</a-button> <a-button @click="backPage" class="btn2">取消</a-button>
<a-button <a-button :loading="loading" v-on:click="createProject" type="primary" class="btn1" style="margin-left: 20px">确定
:loading="loading"
v-on:click="createProject"
type="primary"
class="btn1"
style="margin-left: 20px"
>确定
</a-button> </a-button>
</div> </div>
</div> </div>
<!-- 更多背景图 v-model:visible="learnBgMore" --> <!-- 更多背景图 v-model:visible="learnBgMore" -->
<a-modal <a-modal :closable="sh" centered="true" v-model:visible="learnBgMore" :footer="null" :width="650"
:closable="sh" wrapClassName="learnBgMoreModal" :z-index="9999">
centered="true"
v-model:visible="learnBgMore"
:footer="null"
:width="650"
wrapClassName="learnBgMoreModal"
:z-index="9999"
>
<div class="main"> <div class="main">
<div class="top"> <div class="top">
<div class="topc">封面图</div> <div class="topc">封面图</div>
</div> </div>
<div class="imagesBox"> <div class="imagesBox">
<!-- <div <!-- <div
@click="() => (projectInfo.picUrl = src.value)" @click="() => (projectInfo.picUrl = src.value)"
v-for="item in projectPic" v-for="item in projectPic"
:key="item.code" :key="item.code"
class="learnBgItem" class="learnBgItem"
> --> > -->
<div <div @click="chooseImg2(item)" v-for="item in projectPic" :key="item.code" class="learnBgItem" :style="{
@click="chooseImg2(item)"
v-for="item in projectPic"
:key="item.code"
class="learnBgItem"
:style="{
border: border:
pathBgId === item.code pathBgId === item.code
? '2px solid rgba(78, 166, 255, 1)' ? '2px solid rgba(78, 166, 255, 1)'
: '1px solid #ccc', : '1px solid #ccc',
'background-image': 'url(' + item.value.split(',')[0] + ')', 'background-image': 'url(' + item.value.split(',')[0] + ')',
}" }">
>
<!-- <img class="im" :src="item.source" /> --> <!-- <img class="im" :src="item.source" /> -->
</div> </div>
</div> </div>
@@ -355,20 +245,20 @@
</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 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 NameInput from "@/components/project/NameInput"; import NameInput from "@/components/project/NameInput";
import ProjectLevel from "@/components/project/ProjectLevel"; import ProjectLevel from "@/components/project/ProjectLevel";
import * as api2 from "../../api/indexAudit"; import * as api2 from "../../api/indexAudit";
import {validateName} from "@/api/index1"; import { validateName } from "@/api/index1";
import dayjs from "dayjs"; import dayjs from "dayjs";
import {scrollLoad} from "@/api/method"; import { scrollLoad } from "@/api/method";
export default { export default {
name: "projectAdd", name: "projectAdd",
@@ -392,7 +282,7 @@ export default {
pageSize: 10, //每页10条数据 pageSize: 10, //每页10条数据
totalPages: 0, //总页数 totalPages: 0, //总页数
viewDetail: null, viewDetail: null,
projectInfo: {id: ''}, projectInfo: { id: '' },
projectPic: [], projectPic: [],
memberParam: { memberParam: {
pageNo: 1, pageNo: 1,
@@ -437,10 +327,10 @@ export default {
state.projectInfo.parentId = routers.query.parentId; state.projectInfo.parentId = routers.query.parentId;
state.projectInfo.id = routers.query.projectId; state.projectInfo.id = routers.query.projectId;
(state.projectInfo.id || state.projectInfo.parentId) && (state.projectInfo.id || state.projectInfo.parentId) &&
api api
.getProjectDetail({ .getProjectDetail({
projectId: projectId:
state.projectInfo.id || state.projectInfo.parentId, state.projectInfo.id || state.projectInfo.parentId,
}) })
.then((res) => { .then((res) => {
state.projectInfo = { state.projectInfo = {
@@ -448,8 +338,8 @@ export default {
...state.projectInfo, ...state.projectInfo,
}; };
!routers.query.projectId && !routers.query.projectId &&
!!routers.query.parentId && !!routers.query.parentId &&
(state.projectInfo.name = ""); (state.projectInfo.name = "");
state.timeRange = [state.projectInfo.beginTime, state.projectInfo.endTime]; state.timeRange = [state.projectInfo.beginTime, state.projectInfo.endTime];
state.courseSyncFlag = !!state.projectInfo.courseSyncFlag; state.courseSyncFlag = !!state.projectInfo.courseSyncFlag;
if (Number(state.projectInfo.status) === -5) { if (Number(state.projectInfo.status) === -5) {
@@ -465,8 +355,8 @@ export default {
if (res.rows && res.rows.length > 0) { if (res.rows && res.rows.length > 0) {
let i = res.rows.length; let i = res.rows.length;
state.auditDescription = res.rows[i - 1].description state.auditDescription = res.rows[i - 1].description
? res.rows[i - 1].description ? res.rows[i - 1].description
: "-"; : "-";
} }
} }
}); });
@@ -581,7 +471,7 @@ export default {
message.success(state.projectInfo.id ? "编辑成功" : "创建成功"); message.success(state.projectInfo.id ? "编辑成功" : "创建成功");
router.push({ router.push({
path: "/taskpage", path: "/taskpage",
query: {projectId: res.data.data}, query: { projectId: res.data.data },
}); });
}); });
}; };
@@ -599,8 +489,8 @@ export default {
if (state.projectInfo.id && state.datePartial === 'start') { if (state.projectInfo.id && state.datePartial === 'start') {
return current && current > dayjs(state.timeRange[0]).endOf("YYYY-MM-DD HH:mm"); return current && current > dayjs(state.timeRange[0]).endOf("YYYY-MM-DD HH:mm");
} }
// return current && current < dayjs().endOf('day'); // 去除创建项目时间限制 可以选择创建时间之前的时间
return current && current < dayjs().subtract(1, 'days').endOf('day') // return current && current < dayjs().subtract(1, 'days').endOf('day')
}; };
//显示更多路径背景弹窗 //显示更多路径背景弹窗
@@ -1084,7 +974,9 @@ export default {
color: #fff; color: #fff;
margin-left: 16px; margin-left: 16px;
} }
.treeDropdown { .treeDropdown {
// width: 240px !important; // width: 240px !important;
// border-radius: 5px; // border-radius: 5px;
// min-height: 600px !important; // min-height: 600px !important;