feat(业务): 子模块详情页面完善
This commit is contained in:
parent
6f1215215e
commit
9d07484094
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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();
|
||||
|
@ -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>
|
||||
-->
|
||||
|
Loading…
x
Reference in New Issue
Block a user