优化项目列表样式,修改系统字体

This commit is contained in:
weibl
2025-11-21 16:16:35 +08:00
parent 247abc99d4
commit a8150b29f7
8 changed files with 70 additions and 62 deletions

View File

@@ -93,7 +93,7 @@ export const getCSVDataApi = (params: any) => {
}; };
// 获取文件预览地址 // 获取文件预览地址
export const getKKFileViewURLFromMinioApi = (params: any) => { export const getKKFileViewURLFromMinioApi = (params: any) => {
return get(`${PREFIX}getKKFileViewURLFromMinio`, params); return get(`${PREFIX}data/getKKFileViewURLFromMinio`, params);
}; };
/** /**

View File

@@ -0,0 +1,33 @@
.dot-success {
background-color: #00A870;
}
.dot-refuse {
background-color: #E34D59;
}
.dot-default {
background-color: #999999;
}
.dot-in-precess {
background-color: #0366FF;
}
.dot-approving {
background-color: #FF7D00;
}
.dot {
/* 1. 设为内联块,才能设置宽高 */
display: inline-block;
/* 2. 宽高相等,控制圆点大小 */
width: 8px;
height: 8px;
/* 3. 圆角 50% 变成圆形 */
border-radius: 50%;
/* 4. 背景色(根据需求调整) */
// background-color: #42b983;
/* 可选:间距调整(与文字对齐) */
// margin: 0 4px;
margin-right: var(--margin-small);
vertical-align: middle;
}

View File

@@ -5,7 +5,8 @@
margin: 0; margin: 0;
border: 0; border: 0;
box-sizing: border-box; box-sizing: border-box;
font-family: Inter, Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, , Arial, sans-serif; // font-family: Regular, -apple-system, BlinkMacSystemFont, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
font-family: Regular;
} }
/* 自定义滚动条样式 */ /* 自定义滚动条样式 */
::-webkit-scrollbar { ::-webkit-scrollbar {

View File

@@ -106,13 +106,20 @@ const emits = defineEmits(['update:modelValue', 'update:currentProjectBaseInfo',
const addOrEditProject = async () => { const addOrEditProject = async () => {
console.log('tableFormRef.value', tableFormRef.value); console.log('tableFormRef.value', tableFormRef.value);
if (await tableFormRef.value.validateFun()) { if (await tableFormRef.value.validateFun()) {
if (hasSameValue()) return;
loadingInterface.value = true; loadingInterface.value = true;
console.log('projectForm', tableFormRef.value.getFormDataFun());
const projectForm = tableFormRef.value.getFormDataFun();
if (projectForm.planTime) {
projectForm.beginTime = projectForm.planTime[0];
projectForm.endTime = projectForm.planTime[1];
}
if (!props?.projectId) { if (!props?.projectId) {
await createProject(); await createProject(projectForm);
} else { } else {
// console.log('编辑项目', projectForm); // console.log('编辑项目', projectForm);
await editNode(); await editNode(projectForm);
emits('update:currentProjectBaseInfo', { ...tableFormRef.value.getFormDataFun() }); emits('update:currentProjectBaseInfo', { ...tableFormRef.value.getFormDataFun() });
} }
loadingInterface.value = false; loadingInterface.value = false;
@@ -121,30 +128,12 @@ const addOrEditProject = async () => {
closeFun(); closeFun();
} }
}; };
const hasSameValue = () => {
const projectForm = tableFormRef.value.getFormDataFun();
for (let index = 0; index < props.nodeLevel1List.length; index++) {
if ( props.nodeLevel1List[index].id !== projectForm.id) {
if (props.nodeLevel1List[index].nodeName === projectForm.nodeName) {
ElMessage.error('项目名称有重复!');
return true;
}
if (props.nodeLevel1List[index].nodeCode === projectForm.nodeCode) {
ElMessage.error('项目编码有重复!');
return true;
}
}
}
return false;
};
const createProject = async() => { const createProject = async(projectForm:any) => {
// console.log('projectForm', projectForm); // console.log('projectForm', projectForm);
// const memberList = projectForm.memberList.map((item: any) => { // const memberList = projectForm.memberList.map((item: any) => {
// return JSON.parse(item); // return JSON.parse(item);
// }); // });
console.log('projectForm', tableFormRef.value.getFormDataFun());
const projectForm = tableFormRef.value.getFormDataFun();
// if (projectForm.memberList) { // if (projectForm.memberList) {
// projectForm.memberList = projectForm.memberList.map((item: any) => { // projectForm.memberList = projectForm.memberList.map((item: any) => {
// return { // return {
@@ -168,11 +157,10 @@ const createProject = async() => {
} }
}; };
const editNode = async() => { const editNode = async(projectForm:any) => {
// const memberList = projectForm.memberList.map((item: any) => { // const memberList = projectForm.memberList.map((item: any) => {
// return JSON.parse(item); // return JSON.parse(item);
// }); // });
const projectForm = tableFormRef.value.getFormDataFun();
// if (projectForm.memberList) { // if (projectForm.memberList) {
// projectForm.memberList = projectForm.memberList.map((item: any) => { // projectForm.memberList = projectForm.memberList.map((item: any) => {
// return { // return {
@@ -248,8 +236,8 @@ const getNodeDetailFun = async() => {
for (const key in res.data) { for (const key in res.data) {
projectInfo[key] = res.data[key]; projectInfo[key] = res.data[key];
} }
console.log('123', { ...projectInfo, memberList: getMemberListStr(projectInfo.memberList) }); console.log('123', { ...projectInfo, planTime: [projectInfo.beginTime, projectInfo.endTime], memberList: getMemberListStr(projectInfo.memberList) });
tableFormRef.value.setFormDataFun({ ...projectInfo, memberList: getMemberListStr(projectInfo.memberList) }); tableFormRef.value.setFormDataFun({ ...projectInfo, planTime: [projectInfo.beginTime, projectInfo.endTime], memberList: getMemberListStr(projectInfo.memberList) });
} }
} }
} }

View File

@@ -8,6 +8,7 @@ import * as ElementPlusIconsVue from '@element-plus/icons-vue';
import 'element-plus/dist/index.css'; import 'element-plus/dist/index.css';
import 'element-plus/theme-chalk/dark/css-vars.css'; import 'element-plus/theme-chalk/dark/css-vars.css';
import '@/assets/styles/main.scss'; import '@/assets/styles/main.scss';
import '@/assets/styles/common.scss';
import VxeUIAll from 'vxe-pc-ui'; import VxeUIAll from 'vxe-pc-ui';
import 'vxe-pc-ui/es/style.css'; import 'vxe-pc-ui/es/style.css';
import VxeTable, { VxeUI } from 'vxe-table'; import VxeTable, { VxeUI } from 'vxe-table';

View File

@@ -100,6 +100,7 @@ onMounted(() => {
.el-tabs__item { .el-tabs__item {
// width: 200px; // width: 200px;
padding: 0 60px; padding: 0 60px;
font-weight: 600;
} }
} }
</style> </style>

View File

@@ -132,8 +132,13 @@ const updatePhaseUuid = async (value: string) => {
tableLoading.value = false; tableLoading.value = false;
}; };
const treeTableRef = ref();
const getTaskTreeList = async () => { const getTaskTreeList = async () => {
tableList.value = await getTaskTreeFun(props.projectUuid, phaseUuid.value); tableList.value = await getTaskTreeFun(props.projectUuid, phaseUuid.value);
setTimeout(() => {
treeTableRef.value.loadcaseTableRef.TreeTableRef.treeTableRef.setAllTreeExpand(true);
}, 200);
}; };
const phaseListOptions = ref<any[]>([]); const phaseListOptions = ref<any[]>([]);

View File

@@ -21,40 +21,6 @@
<span class="title">{{ project.nodeName }}</span> <span class="title">{{ project.nodeName }}</span>
<span class="status">{{ PROJECT_EXE_STATUS.O[project.exeStatus ] }}</span> <span class="status">{{ PROJECT_EXE_STATUS.O[project.exeStatus ] }}</span>
</div> </div>
<!-- <div class="card-header">
<img class="project-icon" src="@/assets/imgs/projectTree/project-icon.png" alt="">
<div class="title-section">
<div class="project-title">{{ project.nodeName }}</div>
<div class="project-manager">{{ disposeMemberList(project) }}</div>
</div>
</div>
<div class="project-info">
<div class="info-row">
<span class="info-label">状态</span>
<span class="info-value">
<span :class="['status-badge', 'status-' + (project.exeStatus?'':'no-start')]">
{{ PROJECT_EXE_STATUS.O[project.exeStatus ] }}
</span>
</span>
</div>
<div class="date-row">
<span>{{ project.beginTime }}</span>
<span></span>
<span>{{ project.endTime }}</span>
</div>
</div>
<div class="progress-section">
<div class="progress-header">
<span class="progress-label">时间进度</span>
<span class="progress-value">{{ project.progress }}%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" :style="{ width: project.progress + '%' }"></div>
</div>
</div> -->
</div> </div>
</div> </div>
</div> </div>
@@ -75,6 +41,18 @@
{{ row?.creatorObj?.nickname }} {{ row?.creatorObj?.nickname }}
</template> </template>
<template #exeStatus="{row}"> <template #exeStatus="{row}">
<span
:class="row.exeStatus === PROJECT_EXE_STATUS_CODE.NOT_STARTED?
'dot dot-default':
row.exeStatus === PROJECT_EXE_STATUS_CODE.IN_PROGRESS?
'dot dot-in-precess':
row.exeStatus === PROJECT_EXE_STATUS_CODE.COMPLETED?
'dot dot-success':
row.exeStatus === PROJECT_EXE_STATUS_CODE.PAUSED?
'dot dot-approving':
row.exeStatus === PROJECT_EXE_STATUS_CODE.POSTPONED?
'dot dot-refuse':'dot dot-default'"
>.</span>
{{ PROJECT_EXE_STATUS.O[row.exeStatus] }} {{ PROJECT_EXE_STATUS.O[row.exeStatus] }}
</template> </template>
<template #memberList="{row}"> <template #memberList="{row}">
@@ -112,6 +90,7 @@ import { disposeMemberList } from '../projectDetail/components/project';
import { useDict } from '@/utils/useDict'; import { useDict } from '@/utils/useDict';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import ProjectDetail from '../projectDetail/index.vue'; import ProjectDetail from '../projectDetail/index.vue';
import { PROJECT_EXE_STATUS_CODE } from '@/utils/enum/project';
export interface IUserInfo { export interface IUserInfo {
id: number; id: number;