feat:合并

This commit is contained in:
李晓鸽
2022-10-18 11:29:27 +08:00
34 changed files with 5046 additions and 1216 deletions

View File

@@ -55,12 +55,10 @@
<div class="search"></div>
<div class="btnText">重置</div>
</div>
<router-link to="/projectadd">
<div class="btn btn3">
<div class="search"></div>
<div class="btnText">创建项目</div>
</div>
</router-link>
<div class="btn btn3" @click="showModal1">
<div class="search"></div>
<div class="btnText">创建项目</div>
</div>
</div>
</div>
<!-- 搜索框及按钮 -->
@@ -109,6 +107,434 @@
</a-table>
</div>
<!-- 表格 -->
<!-- 创建子项目弹窗 -->
<div>
<a-modal
v-model:visible="sonproject"
:title="null"
@ok="closeModal"
:footer="null"
:closable="false"
wrapClassName="sonproject"
width="764px"
height="356px"
>
<div
class="modalHeader"
style="
width: 100%;
height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(
0deg,
rgba(78, 166, 255, 0) 0%,
rgba(78, 166, 255, 0.2) 100%
);
"
>
<div class="headerLeft" style="margin-left: 32px">
<span class="headerLeftText" style="font-size: 16px"
>请选择项目类别</span
>
</div>
<div style="cursor: pointer; margin-right: 32px" @click="closeModal">
<img
style="width: 22px; height: 22px"
src="../../assets/images/basicinfo/close22.png"
/>
</div>
</div>
<div class="modalMain">
<router-link
to="/sonproject"
class="taskbox"
style="
margin-right: 24px;
background: linear-gradient(
180deg,
rgba(221, 234, 255, 1) 100%,
rgba(240, 248, 254, 1) 100%
);
"
>
<div class="leftt">
<img src="../../assets/images/taskpage/left2.png" />
</div>
<div class="photo">
<img src="../../assets/images/taskpage/picture4.png" />
</div>
<div class="rightt">
<img src="../../assets/images/taskpage/right2.png" />
</div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)">
单层子项目
</div>
</router-link>
<div
class="taskbox"
@click="showModal3"
style="
background: linear-gradient(
180deg,
rgba(254, 243, 221, 1) 100%,
rgba(255, 250, 240, 1) 100%
);
"
>
<div class="leftt">
<img src="../../assets/images/taskpage/left1.png" />
</div>
<div class="photo">
<img src="../../assets/images/taskpage/picture5.png" />
</div>
<div class="rightt">
<img src="../../assets/images/taskpage/right1.png" />
</div>
<div class="centerbox" style="color: rgba(255, 182, 78, 1)">
多层子项目
</div>
</div>
</div>
</a-modal>
</div>
<!-- 创建子项目弹窗 -->
<!-- 创建项目弹窗 -->
<div>
<div>
<a-modal
v-model:visible="estabish"
:title="null"
@ok="closeModal1"
:footer="null"
:closable="false"
wrapClassName="estabish"
width="638px"
height="468px"
>
<div
class="modalHeader"
style="
width: 100%;
height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(
0deg,
rgba(78, 166, 255, 0) 0%,
rgba(78, 166, 255, 0.2) 100%
);
"
>
<div class="headerLeft" style="margin-left: 32px">
<span class="headerLeftText" style="font-size: 16px"
>请选择项目类别</span
>
</div>
<div
style="cursor: pointer; margin-right: 32px"
@click="closeModal1"
>
<img
style="width: 22px; height: 22px"
src="../../assets/images/basicinfo/close22.png"
/>
</div>
</div>
<div class="modalMain">
<router-link to="/projectadd">
<div
class="taskbox"
style="
background: linear-gradient(
180deg,
rgba(221, 234, 255, 1) 100%,
rgba(240, 248, 254, 1) 100%
);
"
>
<div class="leftt">
<img src="../../assets/images/taskpage/left2.png" />
</div>
<div class="photo">
<img src="../../assets/images/taskpage/picture6.png" />
</div>
<div class="rightt">
<img src="../../assets/images/taskpage/right2.png" />
</div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)">
单层项目
</div>
<div class="centermain">
不包含子项目直接填写项目基础信息后创建任务
</div>
</div>
</router-link>
<div
class="taskbox"
@click="showModal2"
style="
margin-bottom: 40px;
background: linear-gradient(
180deg,
rgba(229, 246, 236, 1) 100%,
rgba(238, 249, 243, 1) 100%
);
"
>
<div class="leftt">
<img src="../../assets/images/taskpage/left3.png" />
</div>
<div class="photo">
<img src="../../assets/images/taskpage/picture7.png" />
</div>
<div class="rightt">
<img src="../../assets/images/taskpage/right3.png" />
</div>
<div class="centerbox1" style="color: rgba(93, 201, 136, 1)">
多层项目
</div>
<div class="centermain1">
包含子项目分为多层子项目和单层子项目多层子项目可创建班级通过班级填写基础信息并创建任务
</div>
</div>
</div>
</a-modal>
</div>
</div>
<!-- 创建项目弹窗 -->
<!-- 创建多层项目弹窗 -->
<div>
<a-modal
v-model:visible="doublepro"
:title="null"
@ok="closeModal2"
:footer="null"
:closable="false"
wrapClassName="doublepro"
width="624px"
height="476px"
>
<div
class="modalHeader"
style="
width: 100%;
height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(
0deg,
rgba(78, 166, 255, 0) 0%,
rgba(78, 166, 255, 0.2) 100%
);
"
>
<div class="headerLeft" style="margin-left: 32px">
<span class="headerLeftText" style="font-size: 16px"
>创建多层项目</span
>
</div>
<div style="cursor: pointer; margin-right: 32px" @click="closeModal2">
<img
style="width: 22px; height: 22px"
src="../../assets/images/basicinfo/close22.png"
/>
</div>
</div>
<div class="modalMain">
<div class="name">
<div class="star" style="margin-top: -4px">
<img
style="width: 10px; height: 10px"
src="../../assets/images/basicinfo/asterisk.png"
/>
</div>
<div class="inname">项目名称:</div>
<div class="in">
<a-input
v-model:value="value"
show-count
:maxlength="30"
placeholder="请输入项目名称"
style="border-radius: 8px"
/>
</div>
</div>
<div class="name">
<div class="star" style="margin-top: -4px">
<img
style="width: 10px; height: 10px"
src="../../assets/images/basicinfo/asterisk.png"
/>
</div>
<div class="inname">分类:</div>
<div class="in">
<a-select
v-model:value="value"
placeholder="四个养成"
style="border-radius: 8px; height: 40px"
/>
</div>
</div>
<div class="name">
<div class="star" style="margin-top: -4px">
<img
style="width: 10px; height: 10px"
src="../../assets/images/basicinfo/asterisk.png"
/>
</div>
<div class="inname">项目经理:</div>
<div class="in">
<a-input
v-model:value="value"
placeholder="请选择项目经理"
style="border-radius: 8px; height: 40px"
/>
</div>
</div>
<div class="name">
<div class="star" style="margin-top: -4px">
<img
style="width: 10px; height: 10px"
src="../../assets/images/basicinfo/asterisk.png"
/>
</div>
<div class="inname">资源归属:</div>
<div class="in">
<a-input
v-model:value="value"
style="border-radius: 8px; height: 40px"
/>
</div>
</div>
<div class="pubtn">
<a-button class="pubtn1" @click="closeModal2">取消</a-button>
<a-button class="pubtn2" @click="closeModal2">确定</a-button>
</div>
</div>
</a-modal>
</div>
<!-- 创建多层项目弹窗 -->
<!-- 创建多层子项目弹窗 -->
<div>
<a-modal
v-model:visible="doublesonpro"
:title="null"
@ok="closeModal3"
:footer="null"
:closable="false"
wrapClassName="doublesonpro"
width="624px"
height="476px"
>
<div
class="modalHeader"
style="
width: 100%;
height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(
0deg,
rgba(78, 166, 255, 0) 0%,
rgba(78, 166, 255, 0.2) 100%
);
"
>
<div class="headerLeft" style="margin-left: 32px">
<span class="headerLeftText" style="font-size: 16px"
>创建多层子项目</span
>
</div>
<div style="cursor: pointer; margin-right: 32px" @click="closeModal3">
<img
style="width: 22px; height: 22px"
src="../../assets/images/basicinfo/close22.png"
/>
</div>
</div>
<div class="modalMain">
<div style="margin-left: 40px; margin-top: 40px">
<span style="color: #000000; font-size: 14px">项目归属</span>
<span style="color: #999999; font-size: 14px; margin-left: 10px"
>管理者进阶</span
>
</div>
<div class="name">
<div class="star" style="margin-top: -4px">
<img
style="width: 10px; height: 10px"
src="../../assets/images/basicinfo/asterisk.png"
/>
</div>
<div class="inname">子项目名称:</div>
<div class="in">
<a-input
v-model:value="value"
placeholder="请输入项目名称"
style="border-radius: 8px; height: 40px"
/>
</div>
</div>
<div class="name">
<div class="star" style="margin-top: -4px">
<img
style="width: 10px; height: 10px"
src="../../assets/images/basicinfo/asterisk.png"
/>
</div>
<div class="inname">分类:</div>
<div class="in">
<a-select
v-model:value="value"
placeholder="四个养成"
style="border-radius: 8px; height: 40px"
/>
</div>
</div>
<div class="name">
<div class="star" style="margin-top: -4px">
<img
style="width: 10px; height: 10px"
src="../../assets/images/basicinfo/asterisk.png"
/>
</div>
<div class="inname">子项目经理:</div>
<div class="in">
<a-input
v-model:value="value"
placeholder="自动带出 可编辑"
style="border-radius: 8px; height: 40px"
/>
</div>
</div>
<div class="name">
<div class="star" style="margin-top: -4px">
<img
style="width: 10px; height: 10px"
src="../../assets/images/basicinfo/asterisk.png"
/>
</div>
<div class="inname">资源归属:</div>
<div class="in">
<a-input
v-model:value="value"
style="border-radius: 8px; height: 40px"
/>
</div>
</div>
<div class="pubtn">
<a-button class="pubtn1" @click="closeModal3">取消</a-button>
<a-button class="pubtn2" @click="closeModal3">确定</a-button>
</div>
</div>
</a-modal>
</div>
<!-- 创建多层子项目弹窗 -->
</div>
</template>
<script>
@@ -446,6 +872,10 @@ export default {
currentPage: 1,
tableDataTotal: 20,
pageSize: 10,
sonproject: false,
estabish: false,
doublepro: false,
doublesonpro: false,
});
onMounted(() => {
@@ -496,7 +926,15 @@ export default {
</a-select-option>
</a-select>
</div>
<span class="operation3">创建子项目</span>
<span
class="operation3"
style="cursor: pointer"
onClick={() => {
state.sonproject = true;
}}
>
创建子项目
</span>
<div class="tableSelect">
<a-select
style="width: 50px"
@@ -617,7 +1055,9 @@ export default {
</a-select-option>
</a-select>
</div>
<span class="operation3">创建班级</span>
<router-link to="/classadd" class="operation3">
创建班级
</router-link>
<div class="tableSelect">
<a-select
style="width: 50px"
@@ -665,7 +1105,9 @@ export default {
</a-select>
</div>
<span class="operation3">创建班级</span>
<router-link to="/classadd" class="operation3">
创建班级
</router-link>
<span class="more">复制</span>
</div>
) : item.state === "已结束" ? (
@@ -710,7 +1152,7 @@ export default {
a.operation =
a.state === "草稿" ? (
<div class="operation">
<span class="operation1"></span>
<span class="operation1">编辑</span>
<div class="tableSelect">
<a-select
style="width: 50px"
@@ -927,7 +1369,7 @@ export default {
item.operation =
item.state === "草稿" ? (
<div class="operation">
<span class="operation1"></span>
<span class="operation1">编辑</span>
<div class="tableSelect">
<a-select
style="width: 50px"
@@ -1146,7 +1588,11 @@ export default {
//单层项目
value.operation = (
<div class="operation">
<span class="operation1"></span>
{value.state === "草稿" ? (
<span class="operation1">编辑</span>
) : (
<span class="operation1"></span>
)}
<div class="tableSelect">
<a-select
style="width: 50px"
@@ -1268,11 +1714,48 @@ export default {
};
getTableDate();
const showModal = () => {
state.sonproject = true;
};
const closeModal = () => {
state.sonproject = false;
};
const showModal1 = () => {
state.estabish = true;
};
const closeModal1 = () => {
state.estabish = false;
};
const showModal2 = () => {
state.doublepro = true;
state.estabish = false;
};
const closeModal2 = () => {
state.doublepro = false;
};
const showModal3 = () => {
state.doublesonpro = true;
state.sonproject = false;
};
const closeModal3 = () => {
state.doublesonpro = false;
};
return {
...toRefs(state),
columns,
selectProjectName,
expandTable,
showModal,
closeModal,
showModal1,
closeModal1,
showModal2,
closeModal2,
showModal3,
closeModal3,
getTableDate,
};
},
@@ -1441,4 +1924,289 @@ export default {
}
}
}
.doublesonpro {
.ant-modal {
.ant-modal-body {
padding: 0;
.modalMain {
display: flex;
flex-direction: column;
//align-items: center;
margin-left: 60px;
.name {
//width: 90%;
// background-color: lightcoral;
display: flex;
justify-content: right;
margin-top: 32px;
align-items: center;
height: 40px;
// border: 1px solid black;
.inname {
color: #000000;
font-size: 14px;
margin-left: 7px;
}
.in {
margin-left: 14px;
width: 80%;
.ant-input {
border-radius: 5px;
// height: 120%;
width: 80%;
height: 30px;
}
.ant-select {
border-radius: 5px;
// height: 120%;
width: 80%;
height: 40px;
.ant-select-selector {
border-radius: 8px;
// height: 120%;
width: 100%;
height: 40px;
}
}
}
}
.pubtn {
display: flex;
justify-content: center;
margin-top: 25px;
//margin-bottom: 29px;
.pubtn1 {
width: 100px;
height: 40px;
margin-right: 16px;
margin-bottom: 29px;
border: 1px solid #409eff;
border-radius: 4px;
color: rgba(78, 166, 255, 1);
font-size: 14px;
//line-height: 36px;
align-items: center;
background: rgba(255, 255, 255, 1);
}
.pubtn2 {
width: 100px;
height: 40px;
margin-bottom: 29px;
border: 1px solid #409eff;
border-radius: 4px;
color: #ffffff;
font-size: 14px;
align-items: center;
//line-height: 36px;
background: #409eff;
}
}
}
}
}
}
.doublepro {
.ant-modal {
.ant-modal-body {
padding: 0;
.modalMain {
display: flex;
flex-direction: column;
align-items: center;
.name {
width: 78%;
// background-color: lightcoral;
display: flex;
justify-content: right;
margin-top: 32px;
align-items: center;
height: 40px;
// border: 1px solid black;
.inname {
color: #000000;
font-size: 14px;
margin-left: 7px;
}
.in {
margin-left: 14px;
width: 81%;
.ant-input {
border-radius: 5px;
// height: 120%;
width: 100%;
height: 30px;
}
.ant-select {
border-radius: 5px;
// height: 120%;
width: 100%;
height: 40px;
.ant-select-selector {
border-radius: 8px;
// height: 120%;
width: 100%;
height: 40px;
}
}
}
}
.pubtn {
display: flex;
justify-content: center;
margin-top: 25px;
//margin-bottom: 29px;
.pubtn1 {
width: 100px;
height: 40px;
margin-right: 16px;
margin-bottom: 29px;
border: 1px solid #409eff;
border-radius: 4px;
color: rgba(78, 166, 255, 1);
font-size: 14px;
//line-height: 36px;
align-items: center;
background: rgba(255, 255, 255, 1);
}
.pubtn2 {
width: 100px;
height: 40px;
margin-bottom: 29px;
border: 1px solid #409eff;
border-radius: 4px;
color: #ffffff;
font-size: 14px;
align-items: center;
//line-height: 36px;
background: #409eff;
}
}
}
}
}
}
.sonproject {
.ant-modal {
.ant-modal-body {
padding: 0 !important;
.modalMain {
display: flex;
justify-content: center;
margin-top: 48px;
//margin-bottom: 40px;
.taskbox {
width: 310px;
height: 160px;
border-radius: 10px;
position: relative;
margin-bottom: 80px;
cursor: pointer;
.leftt {
position: absolute;
top: 18px;
left: 0;
}
.photo {
position: absolute;
top: 44px;
left: 40px;
}
.rightt {
position: absolute;
top: 69px;
right: 26px;
}
.centerbox {
position: absolute;
top: 66px;
left: 136px;
font-size: 20px;
font-weight: 700;
//line-height: 36px;
}
.centermain {
color: rgba(135, 139, 146, 1);
font-size: 14px;
position: absolute;
left: 144px;
bottom: 49px;
}
}
}
}
}
}
.estabish {
.ant-modal {
.ant-modal-body {
padding: 0 !important;
.modalMain {
display: flex;
flex-direction: column;
align-items: center;
margin-top: 48px;
//margin-bottom: 40px;
.taskbox {
width: 438px;
height: 160px;
border-radius: 10px;
position: relative;
margin-bottom: 24px;
cursor: pointer;
.leftt {
position: absolute;
top: 18px;
left: 0;
}
.photo {
position: absolute;
top: 44px;
left: 40px;
}
.rightt {
position: absolute;
top: 69px;
right: 26px;
}
.centerbox {
position: absolute;
top: 42px;
left: 120px;
font-size: 20px;
font-weight: 500;
//line-height: 36px;
}
.centerbox1 {
position: absolute;
top: 32px;
left: 120px;
font-size: 20px;
font-weight: 500;
//line-height: 36px;
}
.centermain {
color: rgba(135, 139, 146, 1);
font-size: 14px;
line-height: 20px;
position: absolute;
width: 252px;
left: 120px;
top: 78px;
}
.centermain1 {
color: rgba(135, 139, 146, 1);
font-size: 14px;
line-height: 20px;
position: absolute;
width: 252px;
left: 120px;
top: 68px;
}
}
}
}
}
}
</style>