feat(业务): 子模块详情页面完善

This commit is contained in:
GUjiYN 2024-04-23 17:05:29 +08:00
parent 6f1215215e
commit 9d07484094
4 changed files with 53 additions and 200 deletions

View File

@ -3,11 +3,12 @@ import request from '@/utils/request';
function getCurrentTimestamp() {
return new Date().getTime();
}
const api = 'http://nbxt.oa.x-lf.cn'
//我负责的页面获取项目
export function GetProject(page, pageSize, token) {
return request({
url: '/project/my/get',
url:api + '/project/my/get',
method: 'get',
params: { page, pageSize },
headers: {
@ -21,7 +22,7 @@ export function GetProject(page, pageSize, token) {
//新增项目
export function AddProject(data, token) {
return request({
url: '/project/add',
url:api + '/project/add',
method: 'post',
data,
headers: {
@ -35,7 +36,7 @@ export function AddProject(data, token) {
//删除项目
export function DeleteProject(id, token) {
return request({
url: '/project/delete',
url:api + '/project/delete',
method: 'delete',
params:{ id },
headers: {
@ -49,7 +50,7 @@ export function DeleteProject(id, token) {
//编辑项目
export function EditProject(id, data, token) {
return request({
url: '/project/edit',
url:api + '/project/edit',
method: 'put',
params:{ id },
data,
@ -64,7 +65,7 @@ export function EditProject(id, data, token) {
//根据项目名字模糊查询
export function GetProjectByName(name, token) {
return request({
url: '/project/get/name',
url:api + '/project/get/name',
method: 'get',
params: { name },
headers: {
@ -78,7 +79,7 @@ export function GetProjectByName(name, token) {
//根据项目id查询子系统
export function GetChildSysById(projectId, token) {
return request({
url: "/module/get?projectId=" + projectId ,
url:api + "/module/get?projectId=" + projectId ,
method: 'get',
params: { projectId },
headers: {
@ -92,7 +93,7 @@ export function GetChildSysById(projectId, token) {
//根据项目名和子系统名查询子模块
export function GetChildSysByName(projectName, childName, token) {
return request({
url: '/project/module/get/name',
url:api + '/project/module/get/name',
method: 'get',
params: { projectName, childName },
headers: {
@ -106,7 +107,7 @@ export function GetChildSysByName(projectName, childName, token) {
//新增子系统
export function AddChildSystem(data, token) {
return request({
url: '/project/child/add',
url:api + '/project/child/add',
method: 'post',
data,
headers: {
@ -120,7 +121,7 @@ export function AddChildSystem(data, token) {
//删除子系统
export function DeleteChildSystem(id, token) {
return request({
url: '/project/child/delete',
url:api + '/project/child/delete',
method: 'delete',
params:{ id },
headers: {
@ -134,7 +135,7 @@ export function DeleteChildSystem(id, token) {
//编辑子系统
export function EditChildSystem(id, data, token) {
return request({
url: "/project/child/edit",
url:api + "/project/child/edit",
method: 'put',
data,
params: id,
@ -149,7 +150,7 @@ export function EditChildSystem(id, data, token) {
//根据子系统id获取子模块
export function GetChildModById(sysId, token) {
return request({
url: "/module/get/min?sysId=" + sysId ,
url:api + "/module/get/min?sysId=" + sysId ,
method: 'get',
params: { sysId },
headers: {
@ -163,7 +164,7 @@ export function GetChildModById(sysId, token) {
//新增子模块
export function AddChildModule(data, token) {
return request({
url: '/project/module/add',
url:api + '/project/module/add',
method: 'post',
data,
headers: {
@ -177,7 +178,7 @@ export function AddChildModule(data, token) {
//删除子模块
export function DeleteChildModule(id, token) {
return request({
url: '/project/module/delete',
url:api + '/project/module/delete',
method: 'delete',
params:{ id },
headers: {
@ -191,7 +192,7 @@ export function DeleteChildModule(id, token) {
//编辑子模块
export function EditChildModule(id, data, token) {
return request({
url: "/project/module/edit",
url:api + "/project/module/edit",
method: 'put',
data,
params:{ id },
@ -207,7 +208,7 @@ export function EditChildModule(id, data, token) {
//子模块详情
export function ModuleDetails(id, token) {
return request({
url: "/project/module/id",
url:api + "/project/module/id",
method: 'get',
params:{ id },
headers: {
@ -221,7 +222,7 @@ export function ModuleDetails(id, token) {
//指定项目负责人
export function GetAppointOptions( token) {
return request({
url: "/project/pri",
url:api + "/project/pri",
method: 'get',
headers: {
'Authorization': 'Bearer ' + token,

View File

@ -1,12 +1,12 @@
import request from '@/utils/request';
const api = 'http://nbxt.oa.x-lf.cn'
function getCurrentTimestamp() {
return new Date().getTime();
}
export function login(data) {
return request({
url: '/auth/login',
url: api + '/auth/login',
method: 'post',
data,
headers: {
@ -30,7 +30,7 @@ export function getInfo(token) {
export function logout(token) {
return request({
url: '/auth/logout',
url:api+ '/auth/logout',
method: 'get',
headers: {
'Authorization':'Bearer '+token,

View File

@ -402,7 +402,7 @@
</div>
</template>
<script setup>
import { ref, onMounted, reactive } from 'vue';
import { ref, onMounted, reactive, watch } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import {
AddChildModule, DeleteChildModule,
@ -479,9 +479,17 @@ async function SearchModuleByName() {
try {
const response = await GetProjectByName(searchData.name, token);
if (response.data) {
ElMessage({
message: '查询成功',
type: 'success',
})
tableData.value = response.data;
} else {
console.error("未获取到预期数据,响应内容:", response);
ElMessage({
message: '查询失败',
type: 'warning',
})
console.error("查询失败:", response);
}
} finally {
listLoading.value = false;
@ -668,8 +676,6 @@ function CancelAppoint() {
AppointDialogVisible.value = false;
}
onMounted(async () => {
await getChildModuleById ();
await getAppointOptions();

View File

@ -10,19 +10,19 @@
<div style="display: flex; justify-content: center">
<el-form :model="formData" label-width="auto" style="max-width: 600px">
<el-form-item label="01.模块名称">
<el-input v-model="formData.name"/>
<el-input :disabled="!isEditable" v-model="formData.name"/>
</el-form-item>
<el-form-item label="02.模块周期">
<el-input v-model="formData.cycle"/>
<el-input :disabled="!isEditable" v-model="formData.cycle"/>
</el-form-item>
<el-form-item label="03.工作量">
<el-input v-model="formData.workLoad"/>
<el-input :disabled="!isEditable" v-model="formData.workLoad"/>
</el-form-item>
<el-form-item label="03.负责人">
<el-input v-model="formData.principalUser"/>
<el-input :disabled="!isEditable" v-model="formData.principalUser"/>
</el-form-item>
<el-form-item label="05.状态">
<el-select v-model="formData.status">
<el-select :disabled="!isEditable" v-model="formData.status">
<el-option value="未开始">未开始</el-option>
<el-option value="进行中">进行中</el-option>
<el-option value="已完成">已完成</el-option>
@ -36,14 +36,15 @@
<el-date-picker
type="date"
v-model="formData.deadLine"
:disabled="!isEditable"
/>
</div>
</el-form-item>
<el-form-item label="07.简介">
<el-input type="textarea" v-model="formData.description"/>
<el-input :disabled="!isEditable" type="textarea" v-model="formData.description"/>
</el-form-item>
<el-form-item>
<el-button type="primary" >编辑</el-button>
<el-button type="primary" @click="enableEditing">{{ isEditable ? '取消编辑' : '编辑' }}</el-button>
<el-button @click="toggleDeleteDialog()">删除</el-button>
</el-form-item>
</el-form>
@ -69,14 +70,15 @@
<script lang="ts" setup>
import { onMounted, ref, reactive } from 'vue';
import { useRoute } from 'vue-router';
import { useRoute, useRouter } from 'vue-router';
import { getToken } from '@/utils/auth';
import { DeleteChildModule, GetProject, ModuleDetails } from '@/api/project';
import { DeleteChildModule, ModuleDetails } from '@/api/project';
const listLoading = ref(false);
const token = getToken();
const DeleteDialogVisible = ref(false);
const EditDialogVisible = ref(false);
const isEditable = ref(false);
const router = useRouter();
//Id
const route = useRoute();
@ -98,7 +100,6 @@ async function moduleDetails() {
const response = await ModuleDetails(moduleId, token);
console.log("API Response:", response);
if (response.data) {
//
formData.name = response.data.name !== undefined ? response.data.name : formData.name;
formData.cycle = response.data.cycle !== undefined ? response.data.cycle : formData.cycle;
formData.workLoad = response.data.workLoad !== undefined ? response.data.workLoad : formData.workLoad;
@ -116,9 +117,16 @@ async function moduleDetails() {
}
}
//
function enableEditing() {
isEditable.value = !isEditable.value;
}
//
function toggleDeleteDialog() {
DeleteDialogVisible.value = !DeleteDialogVisible.value;
}
async function deleteChildModule() {
console.log("delete token:", token);
try {
const res = await DeleteChildModule(moduleId, token);
if (res.code === 200) {
@ -126,8 +134,7 @@ async function deleteChildModule() {
message: '删除成功',
type: 'success',
})
DeleteDialogVisible.value = false;
moduleDetails();
router.back();
} else {
console.error("删除失败:", res);
}
@ -136,174 +143,13 @@ async function deleteChildModule() {
}
}
function toggleDeleteDialog() {
DeleteDialogVisible.value = !DeleteDialogVisible.value;
}
//
function CancelDelete() {
DeleteDialogVisible.value = false;
}
onMounted(async () => {
await moduleDetails(); //
});
</script>
<!--
<template>
<div style=" width:100%;">
<el-card style="max-width: 100vw;">
<template #header><strong>子模块{{ moduleId }}详情</strong></template>
</el-card>
<el-card class="card">
<el-row :gutter="20">
<el-col :span="12">
<el-row v-for="item in projectItems" :key="item.label">
<el-col :span="24">
<div style="margin-top: 10%;"><strong>{{ item.label }}</strong> </div>
</el-col>
</el-row>
</el-col>
<el-col :span="12">
<el-row v-for="item in projectItems" :key="item.label">
<el-col :span="24">
<div v-if="item.label !== '05.状态' && item.label !== '07.简介'" style="margin-top: 10%;">{{
item.value
}}</div>
<el-select v-if="item.label === '05.状态'" v-model="selectedStatus" placeholder="请选择状态"
style="width: 150px ;margin-top: 10%">
<el-option label="未开始" value="未开始"></el-option>
<el-option label="进行中" value="进行中"></el-option>
<el-option label="已完成" value="已完成"></el-option>
<el-option label="已暂停" value="已暂停"></el-option>
</el-select>
<textarea style="resize: none;margin-top: 10%;width: 150px;" v-if="item.label === '07.简介'"
v-model="item.value" rows="4" cols="50"></textarea>
</el-col>
</el-row>
</el-col>
</el-row>
</el-card>
<div style="display: flex; justify-content: center;">
<el-button type="primary" style="width:80px">编辑</el-button>
<el-button style="width:80px ;background-color: #bd3124;color: azure;">删除</el-button>
</div>
<el-alert >
<router-view />
</el-alert>
</div>
</template>
<script lang="ts" setup>
import { onMounted, ref } from 'vue';
import { useRoute } from 'vue-router';
import { getToken } from '@/utils/auth';
import { ModuleDetails } from '@/api/project';
const token = getToken();
const projectItems = ref([
{ label: '01.模块名称', value: '项目名称1' },
{ label: '02.模块周期', value: '3个月' },
{ label: '03.工作量', value: '100小时' },
{ label: '04.负责人', value: '张三' },
{ label: '05.状态', value: '进行中' },
{ label: '06.时间', value: '2024-01-01 12:00:00' },
{ label: '07.简介', value: '大王iu大概iudg拍高端屁股的怕耽搁u对爬过文档爬过无' },
]);
const selectedStatus = ref('进行中');
//Id
const route = useRoute();
const moduleId = route.query.moduleId;
//
//
const parseData = (data) => {
projectItems.value.forEach(item => {
if (item.label === '01.模块名称') {
item.value = data.name;
} else if (item.label === '02.模块周期') {
item.value = data.cycle ? data.cycle : '未知';
} else if (item.label === '03.工作量') {
item.value = data.workLoad + "人/天";
} else if (item.label === '04.负责人') {
item.value = data.principalUser;
} else if (item.label === '05.状态') {
item.value = data.status ? data.status : '未知';
} else if (item.label === '06.时间') {
item.value = new Date(data.deadLine).toLocaleDateString();
} else if (item.label === '07.简介') {
item.value = data.description;
}
})
}
//
const fetchData = () => {
const project = ModuleDetails(moduleIdId, token);
project.then(res => {
const data = res.data.data;
console.log(data);
if (data) {
parseData(data);
}
})
}
onMounted(async () => {
await fetchData(); //
});
</script>
<style>
.my-autocomplete li {
line-height: normal;
padding: 7px;
}
.my-autocomplete li .name {
text-overflow: ellipsis;
overflow: hidden;
}
.my-autocomplete li .addr {
font-size: 12px;
color: #b4b4b4;
}
.my-autocomplete li .highlighted .addr {
color: #ddd;
}
.card {
width: 28%;
margin-left: 50%;
transform: translateX(-50%);
}
</style>
-->