Browse Source

2024.7.24 ①产品文档收集-项目信息进一步优化

②代办事宜功能第一版
java8
yuejiayang 2 years ago
parent
commit
e0172767bd
  1. 1
      src/api/eam/eamProject.js
  2. 13
      src/api/eam/eamProofing.js
  3. 1
      src/main.js
  4. 193
      src/views/modules/eam/dashBoard.vue
  5. 6
      src/views/modules/eam/eamBuDocumentListDefinition.vue
  6. 4
      src/views/modules/eam/eamDocumentTypeDefinition.vue
  7. 66
      src/views/modules/eam/eamProjectInfo.vue
  8. 152
      src/views/modules/eam/eamProjectInfoForConfirm.vue
  9. 306
      src/views/modules/eam/eamProjectInfoForUploads.vue

1
src/api/eam/eamProject.js

@ -21,3 +21,4 @@ export const deleteProjectFile= data => createAPI(`/base/deleteProjectFile`,'pos
export const sendMailHandle= data => createAPI(`/pms/eamProject/sendMailHandle`,'post',data)
export const warnSendMailHandle= data => createAPI(`/pms/eamProject/warnSendMailHandle`,'post',data)
export const confirmatorSendMailHandle= data => createAPI(`/pms/eamProject/confirmatorSendMailHandle`,'post',data)
export const agencyMatter= data => createAPI(`/pms/agencyMatter/project-counts`,'post',data)

13
src/api/eam/eamProofing.js

@ -1,4 +1,5 @@
import { createAPI } from "@/utils/httpRequest.js";
//---------------打样信息-------------------
export const proofingInformationSearch= data => createAPI(`plm/proofingInformation/proofingInformationSearch`,'post',data)
@ -14,9 +15,9 @@ export const getProofDocument= data => createAPI(`/plm/proofingInformation/getPr
export const deleteDocumentType= data => createAPI(`/plm/proofingInformation/deleteDocumentType`,'post',data)
//proofingDocumentSave
export const proofingDocumentSave= data => createAPI(`/plm/proofingInformation/proofingDocumentSave`,'post',data)
export const proofingDocumentSave = data => createAPI(`/plm/proofingInformation/proofingDocumentSave`,'post',data)
//editProofingRecord
export const editProofingRecord= data => createAPI(`/plm/proofingInformation/editProofingRecord`,'post',data)
export const editProofingRecord = data => createAPI(`/plm/proofingInformation/editProofingRecord`,'post',data)
//getExtraDocumentList
export const getExtraDocumentList= data => createAPI(`/plm/proofingInformation/getExtraDocumentList`,'post',data)
//proofingDocumentNEW
@ -31,3 +32,11 @@ export const editProjectDocument= data => createAPI(`/plm/proofingInformation/ed
export const searchProjectAllDocument= data => createAPI(`/plm/proofingInformation/searchProjectAllDocument`,'post',data)
export const deleteProofDocument= data => createAPI(`/plm/proofingInformation/deleteProofDocument`,'post',data)
export const searchProjectUploadsDocumentList= data => createAPI(`/plm/proofingInformation/searchProjectUploadsDocumentList`,'post',data)
export const searchProjectOverUploadsDocumentList= data => createAPI(`/plm/proofingInformation/searchProjectOverUploadsDocumentList`,'post',data)
export const searchConfirmProgressList= data => createAPI(`/plm/proofingInformation/searchConfirmProgressList`,'post',data)
export const searchOverConfirmProgressList= data => createAPI(`/plm/proofingInformation/searchOverConfirmProgressList`,'post',data)

1
src/main.js

@ -31,6 +31,7 @@ Vue.component('downloadExcel', JsonExcel)
Vue.use(VueCookie)
Vue.config.productionTip = false
Vue.component('selectDiv', selectDiv);
export const EventBus = new Vue();
Vue.use(Viewer)

193
src/views/modules/eam/dashBoard.vue

@ -0,0 +1,193 @@
<template>
<div>
<el-row :gutter="20">
<el-col :span="6">
<el-card @click.native="navigateToMes('unfinishedProjects',counts)" class="card-item">
<div class="card-title">我参与的未结项目</div>
<div class="card-count">{{ counts.unfinishedProjectsCount }}</div>
</el-card>
</el-col>
<el-col :span="6">
<el-card @click.native="navigateToMes('pendingUploads',counts)" class="card-item">
<div class="card-title">待上传文件</div>
<div class="card-count">{{ counts.pendingUploadsCount }}</div>
</el-card>
</el-col>
<el-col :span="6">
<el-card @click.native="navigateToMes('pendingConfirmations',counts)" class="card-item">
<div class="card-title">待生产确认的项目</div>
<div class="card-count">{{ counts.pendingConfirmationsCount }}</div>
</el-card>
</el-col>
</el-row>
<el-row :gutter="20" style="margin-top: 10px;">
<el-col :span="6">
<el-card @click.native="navigateToMes('allProjects',counts)" class="card-item">
<div class="card-title">我参与的所有项目</div>
<div class="card-count">{{ counts.allProjectsCount }}</div>
</el-card>
</el-col>
<el-col :span="6">
<el-card @click.native="navigateToMes('overdueUploads',counts)" class="card-item">
<div class="card-title">逾期的待上传文件</div>
<div class="card-count">{{ counts.overdueUploadsCount }}</div>
</el-card>
</el-col>
<el-col :span="6">
<el-card @click.native="navigateToMes('overdueConfirmations',counts)" class="card-item">
<div class="card-title">逾期的待生产确认的项目</div>
<div class="card-count">{{ counts.overdueConfirmationsCount }}</div>
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import { agencyMatter } from "../../../api/eam/eamProject";
export default {
data() {
return {
counts: {
unfinishedProjectsCount: 0,
allProjectsCount: 0,
pendingUploadsCount: 0,
overdueUploadsCount: 0,
pendingConfirmationsCount: 0,
overdueConfirmationsCount: 0,
unfinishedProjects: [],
allProjects: [],
pendingUploads: [],
overdueUploads: [],
pendingConfirmations: [],
overdueConfirmations: [],
},
intervalId: null,
};
},
created() {
this.fetchCounts();
this.startAutoRefresh();
},
beforeDestroy() {
this.stopAutoRefresh();
},
methods: {
fetchCounts() {
agencyMatter()
.then(({ data }) => {
this.counts = data;
this.counts.unfinishedProjectsCount = this.counts.unfinishedProjects.length;
this.counts.allProjectsCount = this.counts.allProjects.length;
this.counts.pendingUploadsCount = this.counts.pendingUploads.length;
this.counts.overdueUploadsCount = this.counts.overdueUploads.length;
this.counts.pendingConfirmationsCount = this.counts.pendingConfirmations.length;
this.counts.overdueConfirmationsCount = this.counts.overdueConfirmations.length;
})
.catch((error) => {
console.error("Error fetching project counts:", error);
});
},
navigateToMes(path, row) {
let projectIds = '';
if (path === 'unfinishedProjects') {
for (let i = 0; i < row.unfinishedProjects.length; i++) {
// 使 unfinishedProjects.projectId
projectIds += row.unfinishedProjects[i].projectId + (i === row.unfinishedProjects.length - 1 ? '' : ',');
}
this.$router.push({ path: 'eam-eamProjectInfo', query: { projectId: projectIds } });
}
else if (path === 'allProjects') {
for (let i = 0; i < row.allProjects.length; i++) {
projectIds += row.allProjects[i].projectId + (i === row.allProjects.length - 1 ? '' : ',');
}
this.$router.push({ path: 'eam-eamProjectInfo', query: { projectId: projectIds } });
}
else if (path === 'pendingUploads') {
for (let i = 0; i < row.pendingUploads.length; i++) {
projectIds += row.pendingUploads[i].projectId + (i === row.pendingUploads.length - 1 ? '' : ',');
}
this.$router.push({ name: 'eam-eamProjectInfoForUploads', query: { projectId: projectIds,flag:'1' } });
}
else if (path === 'overdueUploads') {
for (let i = 0; i < row.overdueUploads.length; i++) {
projectIds += row.overdueUploads[i].projectId + (i === row.overdueUploads.length - 1 ? '' : ',');
}
this.$router.push({ path: 'eam-eamProjectInfoForUploads', query: { projectId: projectIds,flag:'2' } });
}
else if (path === 'pendingConfirmations') {
for (let i = 0; i < row.pendingConfirmations.length; i++) {
projectIds += row.pendingConfirmations[i].projectId + (i === row.pendingConfirmations.length - 1 ? '' : ',');
}
this.$router.push({ path: 'eam-eamProjectInfoForConfirm', query: { projectId: projectIds,flag:'3' } });
}
else if (path === 'overdueConfirmations') {
for (let i = 0; i < row.overdueConfirmations.length; i++) {
projectIds += row.overdueConfirmations[i].projectId + (i === row.overdueConfirmations.length - 1 ? '' : ',');
}
this.$router.push({ path: 'eam-eamProjectInfoForConfirm', query: { projectId: projectIds,flag:'4' } });
}
},
startAutoRefresh() {
this.intervalId = setInterval(() => {
this.fetchCounts();
}, 20000); // 20
},
stopAutoRefresh() {
if (this.intervalId) {
clearInterval(this.intervalId);
}
},
},
};
</script>
<style scoped>
.card-item {
cursor: pointer;
margin-bottom: 20px;
transition: transform 0.3s, box-shadow 0.3s;
overflow: hidden;
//padding: 10px;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
height: 208px;
width: 230px;
margin-left: 40px;
margin-top: 10px;
}
.card-item:hover {
transform: translateY(-5px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.card-title {
font-size: 18px;
font-weight: bold;
margin-bottom: 10px;
margin-top: 20px;
}
.card-count {
font-size: 55px;
color: #17B3A3;
text-align: center;
font-weight: bold;
margin-top: 50px;
}
.project-list {
font-size: 12px;
color: #333;
line-height: 1.5;
margin-bottom: 5px;
}
.el-divider {
margin: 10px 0;
}
</style>

6
src/views/modules/eam/eamBuDocumentListDefinition.vue

@ -202,6 +202,7 @@
getTableDefaultListLanguage,
getTableUserListLanguage,
} from "@/api/table.js"
import {EventBus} from "../../../main";
export default {
components: {
@ -584,6 +585,9 @@
this.$nextTick(() => {
this.height = window.innerHeight - 210
})
EventBus.$on('updateBuDocumentList', () => {
this.getDataList();
});
},
created () {
@ -599,6 +603,7 @@
//
this.getDataList()
}
this.$refs.eamDocumentTypeDefinition.$on('getDataList', this.getDataList)
},
methods: {
@ -872,6 +877,7 @@
//
eamBuDocumentEdit(this.modalData).then(({data}) => {
if (data && data.code === '0') {
EventBus.$emit('updateProjectInfo');
this.getDataList()
this.modalFlag=false
this.disableButton = false

4
src/views/modules/eam/eamDocumentTypeDefinition.vue

@ -156,6 +156,7 @@
getTableDefaultListLanguage,
getTableUserListLanguage,
} from "@/api/table.js"
import {EventBus} from "../../../main";
export default {
watch: {
searchData: {
@ -669,6 +670,9 @@
} else {
eamDocumentTypeEdit(this.modalData).then(({data}) => {
if (data && data.code === '0') {
//
EventBus.$emit('updateProjectInfo');
EventBus.$emit('updateBuDocumentList');
this.getDataList()
this.modalFlag=false
this.$message({

66
src/views/modules/eam/eamProjectInfo.vue

@ -1259,6 +1259,7 @@ import row from "element-ui/packages/row";
import moment from 'moment';
import 'moment/locale/zh-cn';
import {downLoadObjectFile} from "../../../api/eam/eam_object_list";
import {EventBus} from "../../../main";
/*打样记录組件*/
export default {
@ -2414,6 +2415,20 @@ import {downLoadObjectFile} from "../../../api/eam/eam_object_list";
trigger: ['blur','change']
}
],
cQualityEngineer3:[
{
required: true,
message: ' ',
trigger: ['blur','change']
}
],
cManufactureEngineer:[
{
required: true,
message: ' ',
trigger: ['blur','change']
}
],
projectManagerName:[
{
required: true,
@ -2442,6 +2457,20 @@ import {downLoadObjectFile} from "../../../api/eam/eam_object_list";
trigger: ['blur','change']
}
],
cQualityEngineer3Name:[
{
required: true,
message: ' ',
trigger: ['blur','change']
}
],
cManufactureEngineerName:[
{
required: true,
message: ' ',
trigger: ['blur','change']
}
],
projectCategoryType:[
{
required: true,
@ -2589,6 +2618,10 @@ import {downLoadObjectFile} from "../../../api/eam/eam_object_list";
this.$nextTick(() => {
this.height = window.innerHeight - 558
})
EventBus.$on('updateProjectInfo', () => {
this.getDataList();
});
},
created () {
@ -2606,6 +2639,13 @@ import {downLoadObjectFile} from "../../../api/eam/eam_object_list";
}
},
activated() {
if (this.$route.query.projectId) {
this.searchData.projectId = this.$route.query.projectId;
this.getDataList();
}
},
methods: {
// bu
getSiteAndBuByUserName () {
@ -3172,7 +3212,23 @@ import {downLoadObjectFile} from "../../../api/eam/eam_object_list";
duration: 1500,
onClose: () => {},
})
this.newProjectDocument(this.modalData)
let inData={
site: this.modalData.site,
buNo: this.modalData.bu.split('_')[1],
projectId: this.modalData.projectId,
projectDesc: this.modalData.projectDesc,
customerNo: this.modalData.customerNo,
customerDesc: this.modalData.customerDesc,
bu: this.modalData.bu,
testPartNo: this.modalData.testPartNo,
partDesc: this.modalData.partDesc,
projectCategory: this.modalData.projectCategory,
cProjectTypeDb: this.modalData.projectCategory,
proofingNo: '',
rrequiredDeliveryDate: '',
createBy: this.$store.state.user.name,
}
this.newProjectDocument(inData)
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
@ -3218,10 +3274,10 @@ import {downLoadObjectFile} from "../../../api/eam/eam_object_list";
}
})
},
newProjectDocument(modalData) {
modalData.buNo = modalData.bu.split('_')[1]
modalData.proofingNo = '*'
projectDocumentSave(modalData).then(({data}) => {
newProjectDocument(inData) {
inData.buNo = inData.bu.split('_')[1]
inData.proofingNo = '*'
projectDocumentSave(inData).then(({data}) => {
//
if (data && data.code === 0) {
this.$message({

152
src/views/modules/eam/eamProjectInfoForConfirm.vue

@ -0,0 +1,152 @@
<template>
<div>
<el-table :data="dataList"
border
style="height: 100%;width: 100%;margin-top: 0px;">
<el-table-column label="序号" type="index" align="center" :index="indexMethod"></el-table-column>
<el-table-column header-align="center" align="center" prop="projectId" label="项目编码"></el-table-column>
<el-table-column header-align="center" align="center" prop="documentType" label="文档类型"></el-table-column>
<el-table-column header-align="center" align="center" width="70" prop="userDisplay" label="指定确认人"></el-table-column>
<el-table-column header-align="center" align="center" :formatter="formatDate" prop="wantedConfirmDate" label="要求确认日期"></el-table-column>
<el-table-column header-align="center" align="center" prop="confirmFlag" label="是否确认"></el-table-column>
<el-table-column header-align="center" align="center" prop="confirmedBy" label="实际确认人"></el-table-column>
<el-table-column header-align="center" align="center" prop="remark" label="备注"></el-table-column>
<el-table-column header-align="center" align="center" prop="confirmedDate" label="实际确认时间"></el-table-column>
<el-table-column header-align="center" align="center" prop="createDate" label="推送时间"></el-table-column>
<el-table-column header-align="center" align="center" prop="createBy" label="推送人"></el-table-column>
<el-table-column
header-align="center"
align="center"
width="90"
fixed="right"
label="操作">
<template slot-scope="scope">
<a type="text" size="small" @click="viewDocumentFile(scope.row)">查看附件</a>
<a type="text" size="small" @click="confirmDocument(scope.row)">确认</a>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import {
searchProjectUploadsDocumentList,
searchProjectOverUploadsDocumentList,
searchConfirmProgressList, searchOverConfirmProgressList
} from "../../../api/eam/eamProofing";
import {searchConfirmProgressPusherList} from "../../../api/eam/eamProject";
export default {
data() {
return {
dataList: [],
confirmProgressList: [],
height: 200,
dataListLoading: false,
searchData: {
site: this.$store.state.user.site,
userId: this.$store.state.user.id,
},
};
},
created() {
this.getDataList()
},
methods: {
//
getDataList () {
if (this.$route.query.flag === '3') {
searchConfirmProgressList(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.list
//
}
})
} else {
searchOverConfirmProgressList(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.list
//
}
})
}
},
formatDate(row, column) {
// row
// column
const date = row[column.property];
if (date) {
const s = new Date(date).toLocaleDateString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit' });
return s.replace(/\//g, '-')
} else {
return '';
}
},
rowStyle ({row}) {
},
indexMethod(index) {
return index + 1;
},
getCombinedDocumentType(row) {
//
if (row.documentType === null || row.documentType === undefined) {
return row.documentDesc
}else {
return row.documentType
}
},
},
};
</script>
<style scoped>
.card-item {
cursor: pointer;
margin-bottom: 20px;
transition: transform 0.3s, box-shadow 0.3s;
overflow: hidden;
//padding: 10px;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
height: 208px;
width: 230px;
margin-left: 40px;
margin-top: 10px;
}
.card-item:hover {
transform: translateY(-5px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.card-title {
font-size: 18px;
font-weight: bold;
margin-bottom: 10px;
margin-top: 20px;
}
.card-count {
font-size: 55px;
color: #17B3A3;
text-align: center;
font-weight: bold;
margin-top: 50px;
}
.project-list {
font-size: 12px;
color: #333;
line-height: 1.5;
margin-bottom: 5px;
}
.el-divider {
margin: 10px 0;
}
</style>

306
src/views/modules/eam/eamProjectInfoForUploads.vue

@ -0,0 +1,306 @@
<template>
<div>
<el-table
:data="dataList"
border
style="height: 100%;width: 100%;margin-top: 0px;"
ref="projectAllDocumentDocumentTable"
@row-click="projectAllDocumentClickRow"
:row-style="rowStyle"
v-loading="dataListLoading">
<el-table-column label="序号" type="index" align="center" :index="indexMethod"></el-table-column>
<el-table-column
v-for="(item,index) in columnProjectAllDocumentList" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed==''?false:item.fixed"
:min-width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import {
searchProjectUploadsDocumentList,
searchProjectOverUploadsDocumentList,
searchConfirmProgressList, searchOverConfirmProgressList
} from "../../../api/eam/eamProofing";
import {searchConfirmProgressPusherList} from "../../../api/eam/eamProject";
export default {
data() {
return {
dataList: [],
confirmProgressList: [],
height: 200,
dataListLoading: false,
searchData: {
site: this.$store.state.user.site,
userId: this.$store.state.user.id,
},
columnProjectAllDocumentList: [
{
userId: this.$store.state.user.name,
functionId: 101001013,
serialNumber: '101001013Table1ProjectId',
tableId: "101001013Table1",
tableName: "BU文档清单表",
columnProp: 'projectId',
headerAlign: "center",
align: "center",
columnLabel: '项目编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80,
},
{
userId: this.$store.state.user.name,
functionId: 101001013,
serialNumber: '101001013Table1ProofingId',
tableId: "101001013Table1",
tableName: "BU文档清单表",
columnProp: 'proofingId',
headerAlign: "center",
align: "center",
columnLabel: '打样单号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80,
},
{
userId: this.$store.state.user.name,
functionId: 101001013,
serialNumber: '101001013Table1DocumentType',
tableId: "101001013Table1",
tableName: "BU文档清单表",
columnProp: 'documentType',
headerAlign: "center",
align: "center",
columnLabel: '文档类型',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
serialNumber: '101001014Table1FileName',
tableId: "101001014Table1",
tableName: "打样文档表",
columnProp: 'fileName',
headerAlign: "center",
align: "left",
columnLabel: '文件名',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 180,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
serialNumber: '101001014Table1ProjectPhase',
tableId: "101001014Table1",
tableName: "打样文档表",
columnProp: 'projectPhase',
headerAlign: "center",
align: "center",
columnLabel: '项目阶段',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 70,
},
{
userId: this.$store.state.user.name,
functionId: 101001014,
serialNumber: '101001014Table1DocumentGroupDesc',
tableId: "101001014Table1",
tableName: "打样文档表",
columnProp: 'documentGroupDesc',
headerAlign: "center",
align: "center",
columnLabel: '文档种类',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 70,
},
{
userId: this.$store.state.user.name,
functionId: 103001,
serialNumber: '103001Table1CreateDate',
tableId: '103001Table1',
tableName: '打样文档表',
columnProp: 'createDate',
headerAlign: 'center',
align: 'center',
columnLabel: '创建时间',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 130
},
{
userId: this.$store.state.user.name,
functionId: 103001,
serialNumber: '103001Table1CreateBy',
tableId: '103001Table1',
tableName: '打样文档表',
columnProp: 'createdBy',
headerAlign: 'center',
align: 'center',
columnLabel: '创建人',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80
}
],
};
},
created() {
this.getDataList()
},
methods: {
//
getDataList () {
if (this.$route.query.flag === '1') {
searchProjectUploadsDocumentList(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.list
//
}
})
}else {
searchProjectOverUploadsDocumentList(this.searchData).then(({data}) => {
if (data.code === 0) {
this.dataList = data.list
//
}
})
}
},
filteredProjectAllDocumentList() {
this.dataList.map(item => {
item.id = item.documentDefinitionListId
})
return this.dataList.filter(item => item.uploadedFlag !== 'Y')
},
projectAllDocumentClickRow (row) {
this.projectAllDocumentCurrentRow = JSON.parse(JSON.stringify(row))
},
formatDate(row, column) {
// row
// column
const date = row[column.property];
if (date) {
const s = new Date(date).toLocaleDateString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit' });
return s.replace(/\//g, '-')
} else {
return '';
}
},
rowStyle ({row}) {
},
indexMethod(index) {
return index + 1;
},
getCombinedDocumentType(row) {
//
if (row.documentType === null || row.documentType === undefined) {
return row.documentDesc
}else {
return row.documentType
}
},
},
};
</script>
<style scoped>
.card-item {
cursor: pointer;
margin-bottom: 20px;
transition: transform 0.3s, box-shadow 0.3s;
overflow: hidden;
//padding: 10px;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
height: 208px;
width: 230px;
margin-left: 40px;
margin-top: 10px;
}
.card-item:hover {
transform: translateY(-5px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.card-title {
font-size: 18px;
font-weight: bold;
margin-bottom: 10px;
margin-top: 20px;
}
.card-count {
font-size: 55px;
color: #17B3A3;
text-align: center;
font-weight: bold;
margin-top: 50px;
}
.project-list {
font-size: 12px;
color: #333;
line-height: 1.5;
margin-bottom: 5px;
}
.el-divider {
margin: 10px 0;
}
</style>
Loading…
Cancel
Save