forked from TALL/tall3-pc-keti
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.2 KiB
114 lines
2.2 KiB
<template>
|
|
<div class="relative">
|
|
<Calendar @changeTime="changeTime" />
|
|
|
|
<PlusCircleFilled class="upload-btn absolute cursor-pointer" :style="{ fontSize: 42 + 'px', color: '#1890FF' }" @click="showModal" />
|
|
|
|
<a-modal v-model:visible="visible" title="新建课题" @ok="handleOk">
|
|
<p>是否新建课题?</p>
|
|
</a-modal>
|
|
|
|
<Projects />
|
|
<!-- ref="projectsRef" -->
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { ref } from 'vue';
|
|
import { useStore } from 'vuex';
|
|
// import dayjs from 'dayjs';
|
|
import { PlusCircleFilled } from '@ant-design/icons-vue';
|
|
import { create } from 'apis';
|
|
import { message } from 'ant-design-vue';
|
|
import Calendar from './Calendar.vue';
|
|
import Projects from './Projects.vue';
|
|
|
|
// import { importWbs } from 'apis';
|
|
|
|
const store = useStore();
|
|
const visible = ref(false);
|
|
// const projectsRef = ref(null);
|
|
const showModal = () => {
|
|
visible.value = true;
|
|
};
|
|
|
|
const handleOk = async () => {
|
|
visible.value = false;
|
|
await createExperiment();
|
|
};
|
|
|
|
// 新建课题
|
|
async function createExperiment() {
|
|
try {
|
|
const data = await create();
|
|
const obj = {
|
|
id: data.projectId,
|
|
name: data.projectName,
|
|
};
|
|
store.commit('projects/setProject', obj);
|
|
// store.commit('task/setTaskDetail', null);
|
|
store.commit('layout/setRefreshProjects');
|
|
return data;
|
|
} catch (error) {
|
|
message.info(error);
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
function changeTime(data) {
|
|
store.commit('layout/setSelectTime', data);
|
|
}
|
|
</script>
|
|
|
|
<script>
|
|
export default { name: 'LeftIndex' };
|
|
</script>
|
|
|
|
<style scoped>
|
|
.upload-btn {
|
|
left: 250px;
|
|
top: 310px;
|
|
z-index: 999;
|
|
}
|
|
|
|
.upload-card {
|
|
left: 250px;
|
|
top: 352px;
|
|
-moz-box-shadow: 1px 1px 5px 0px rgba(0, 0, 0, 0.16);
|
|
-webkit-box-shadow: 1px 1px 5px 0px rgba(0, 0, 0, 0.16);
|
|
box-shadow: 1px 1px 5px 0px rgba(0, 0, 0, 0.16);
|
|
width: 296px;
|
|
z-index: 999;
|
|
border-radius: 8px;
|
|
background: #fff;
|
|
}
|
|
|
|
.model-list {
|
|
padding: 16px;
|
|
}
|
|
|
|
.model-name {
|
|
height: 32px;
|
|
line-height: 32px;
|
|
}
|
|
|
|
.upload-box {
|
|
padding: 16px;
|
|
border-top: 1px solid #cccccc;
|
|
}
|
|
|
|
.btn-file {
|
|
top: 16px;
|
|
left: 16px;
|
|
width: 264px;
|
|
height: 38px;
|
|
opacity: 0;
|
|
}
|
|
|
|
.upload-box .ant-btn-primary {
|
|
width: 100%;
|
|
height: 38px;
|
|
border-radius: 6px;
|
|
font-size: 16px;
|
|
}
|
|
</style>
|
|
|