feat(项目复核): 重构项目详情页为监理复核功能

- 替换工单审批为项目列表作为登录后首页
- 重构项目详情页为监理复核功能,包含AI推送、现场复核和已复核项三个tab
- 新增三个复核组件并删除旧组件
- 更新项目列表页显示施工单位信息和复核状态
- 修改完工确认按钮为完工复核
This commit is contained in:
liangbin 2026-01-21 14:15:03 +08:00
parent 005ce674db
commit 7fc4062330
10 changed files with 519 additions and 440 deletions

View File

@ -83,12 +83,7 @@
"fontSize": "12px",
"iconWidth": "24px",
"list": [
{
"pagePath": "pages/WorkOrderApproval/index",
"text": "工单审批",
"iconPath": "static/tabbar/gd-icon1.png",
"selectedIconPath": "static/tabbar/gd-icon2.png"
},
{
"pagePath": "pages/ProjectList/index",
"text": "项目实施",

View File

@ -0,0 +1,161 @@
<!-- 项目详情-Ai推送复核项列表 -->
<template>
<view class="MainBox">
<u-virtual-list :list-data="dataSource" :item-height="170" height="100%">
<template #default="{ item }">
<view class="CardBox">
<view class="ShadeBox">
<view class="FlexBox" style="justify-content: space-between;">
<view class="fw-600">{{ item.name }}</view>
<u-tag :text="item.status" :type="item.status === '待复核' ? 'warning' : 'success'"
plain></u-tag>
</view>
<view class="FlexBox">
<view class="imgBox">
<image :src="item.imgUrl" mode="aspectFill"></image>
</view>
<view class="InfoBox">
<view>识别时间{{ item.time }}</view>
<view>施工单位自查{{ item.inspect }}</view>
</view>
</view>
<u-button text="复核" type="primary" size="small"></u-button>
</view>
</view>
</template>
</u-virtual-list>
</view>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const dataSource = ref([
{
id: 1,
name: '消防器械摆放不当',
inspect: '合格',
time: '2023-08-01 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '待复核'
},
{
id: 2,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
{
id: 3,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
{
id: 4,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
{
id: 5,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
])
</script>
<style lang="scss" scoped>
.FlexBox {
display: flex;
// align-items: flex-start;
gap: 20rpx;
}
.fb-gray {
color: #999;
}
.fw-600 {
font-weight: bold;
color: #333;
}
.MainBox {
height: 100%;
overflow: hidden;
padding: 20rpx;
background-color: #fff;
padding: 20rpx;
.CardBox {
width: 100%;
height: 280rpx;
background-color: #fff;
padding: 10rpx;
.ShadeBox {
padding: 20rpx;
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.2);
display: flex;
flex-direction: column;
border-radius: 10rpx;
gap: 20rpx;
}
.LableBox {
width: 160rpx;
font-size: 24rpx;
color: #666;
}
.TxtBox {
width: calc(100% - 160rpx);
font-size: 24rpx;
color: #333;
font-weight: bold;
overflow: hidden;
/* 隐藏溢出内容 */
white-space: nowrap;
/* 强制不换行 */
text-overflow: ellipsis;
/* 显示省略号 */
}
.imgBox {
width: 100rpx;
height: 100rpx;
border-radius: 10rpx;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
}
}
}
</style>

View File

@ -1,127 +0,0 @@
<!-- 项目详情-基本项目信息 -->
<template>
<view class="MainBox">
<view class="labebBox">申请单位</view>
<view class="fw-600">{{ progectInfo.applyUnit }}</view>
<view class="labebBox">施工单位</view>
<view class="fw-600">{{ progectInfo.constructUnit }}</view>
<view class="labebBox">施工地点</view>
<view class="fw-600">{{ progectInfo.site }}</view>
<view class="labebBox">附件资料</view>
<view class="ListBox">
<u-virtual-list :list-data="dataSource" :item-height="80" height="100%">
<template #default="{ item, index }">
<view class="CardBox" :key="item.id">
<view class="FlexBox">
<img class="CardImg" src="@/static/icon/file-icon.png">
<view class="CardTxt">{{ item.name }}</view>
</view>
<view>
<u-icon name="download" size="30"></u-icon>
</view>
</view>
</template>
</u-virtual-list>
</view>
</view>
</template>
<script setup>
import { ref } from 'vue'
const progectInfo = ref({
Id: 1,
applyUnit: '北京CBD改造项目管理有限公司',
constructUnit: '北京CBD改造项目施工有限公司',
site: '北京市海淀区',
})
const dataSource = ref([
{
id: 1,
name: '项目合同.pdf'
},
{
id: 2,
name: '项目进度表.xlsx'
},
{
id: 3,
name: '项目成本表.xlsx'
},
{
id: 4,
name: '项目风险卡.xlsx'
},
{
id: 5,
name: '项目整改记录.xlsx'
},
{
id: 6,
name: '项目风险管控类型.xlsx'
}
])
</script>
<style lang="scss" scoped>
.labebBox {
font-size: 28rpx;
color: #666;
margin-top: 20rpx;
}
.mt-20 {
margin-top: 20rpx;
}
.fw-600 {
font-size: 28rpx;
font-weight: 600;
color: #333;
}
.FlexBox {
display: flex;
align-items: center;
gap: 20rpx;
}
.MainBox {
height: 100%;
overflow: hidden;
padding: 20rpx;
background-color: #fff;
.ListBox {
margin-top: 20rpx;
height: calc(100% - 384rpx);
padding: 20rpx;
.CardBox {
width: 100%;
height: 100rpx;
background-color: #fff;
padding: 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
border: 1rpx solid #c7c7c7;
border-radius: 10rpx;
.CardImg {
width: 50rpx;
height: 50rpx;
}
.CardTxt {
width: 400rpx;
flex: 1;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
}
</style>

View File

@ -1,153 +0,0 @@
<!-- 项目详情-风险管控实施 -->
<template>
<view class="MainBox">
<view class="BoxA">
<u-row>
<u-col :span="6">
<view>今日检查项完成度</view>
<view class="blcakFont">5/6</view>
</u-col>
<u-col :span="6">
<view>待整改问题数</view>
<view class="yellowFont">10</view>
</u-col>
</u-row>
<view style="margin-top: 20rpx;">
<u-button type="primary" size="medium" @click="submitCheck">提交今日风险检查项</u-button>
</view>
</view>
<view class="BoxB">
<view class="h2Box">问题反馈列表</view>
<view class="ListBox">
<u-virtual-list :list-data="dataSource" :item-height="130" height="100%">
<template #default="{ item, index }">
<view class="CardBox">
<view class="CardItem">
<view class="CardName">{{ item.name }}</view>
<view class="CardTime">{{ item.time }}</view>
</view>
<view class="CardItem">
<view>
<u-tag type="warning" plain text="待整改" shape="circle"></u-tag>
</view>
<view>
<u-button text="整改反馈" color="#2979ff" size="small" @click="goFeedback(index)"></u-button>
</view>
</view>
</view>
</template>
</u-virtual-list>
</view>
</view>
</view>
</template>
<script setup>
import { ref } from 'vue'
const dataSource = ref([
{ id: 1, name: 'AI返现安全帽佩戴不规范', time: '2023-08-01 10:00:00' },
{ id: 2, name: 'AI返现安全帽佩戴不规范', time: '2023-08-02 10:00:00' },
{ id: 3, name: 'AI返现安全帽佩戴不规范', time: '2023-08-03 10:00:00' },
{ id: 4, name: 'AI返现安全帽佩戴不规范', time: '2023-08-04 10:00:00' },
{ id: 5, name: 'AI返现安全帽佩戴不规范', time: '2023-08-05 10:00:00' },
{ id: 6, name: 'AI返现安全帽佩戴不规范', time: '2023-08-06 10:00:00' },
{ id: 7, name: 'AI返现安全帽佩戴不规范', time: '2023-08-07 10:00:00' },
])
//
const submitCheck = () => {
uni.navigateTo({
url: '/pages/TodayExamine/index',
})
}
//
const goFeedback = (index) => {
uni.navigateTo({
url: '/pages/ReformFeedback/index',
})
}
</script>
<style lang="scss" scoped>
.h2Box {
font-size: 32rpx;
font-weight: bold;
color: #333;
}
.blcakFont {
font-size: 36rpx;
font-weight: bold;
color: #333;
}
.yellowFont {
font-size: 36rpx;
font-weight: bold;
color: #FFD600;
}
.MainBox {
height: 100%;
overflow: hidden;
padding: 20rpx;
background-color: #fff;
.BoxA {
padding: 20rpx;
border-radius: 10rpx;
background-color: #EFF6FF;
}
.BoxB {
padding: 20rpx;
border-radius: 10rpx;
height: calc(100% - 210rpx);
.ListBox {
height: calc(100% - 10rpx);
margin-top: 20rpx;
overflow: hidden;
.CardBox {
width: calc(100% - 30rpx);
height: 180rpx;
margin: 0 auto;
padding: 20rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08), 0 2rpx 4rpx rgba(0, 0, 0, 0.04);
margin-bottom: 20rpx;
background-color: #fff;
border-radius: 10rpx;
overflow: auto;
.CardItem {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 20rpx;
margin-bottom: 20rpx;
}
.CardName {
flex: 1;
font-size: 26rpx;
font-weight: bold;
color: #333;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.CardTime {
white-space: nowrap;
flex-shrink: 0;
}
}
}
}
}
</style>

View File

@ -1,129 +0,0 @@
<!-- 项目详情-整改记录 -->
<template>
<view class="MainBox">
<u-virtual-list :list-data="dataSource" :item-height="260" height="100%">
<template #default="{ item }">
<view class="CardBox">
<view class="fw-600">{{ item.name }}</view>
<view class="FlexBox">
<view class="LableBox">整改内容</view>
<view class="TxtBox">{{ item.details }}</view>
</view>
<view class="FlexBox">
<view class="imgBox" v-for="(img, index) in item.imgUrl" :key="index">
<image :src="img" mode="aspectFill"></image>
</view>
</view>
<view class="FlexBox">
<view>审核意见</view>
<view>{{ item.details }}</view>
</view>
<view class="fb-gray">{{ item.time }}</view>
</view>
</template>
</u-virtual-list>
</view>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const dataSource = ref([
{
id: 1,
name: '消防器械摆放不当',
time: '2023-08-01 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: ['https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg', 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg']
},
{
id: 2,
name: '项目风险管控类型',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: ['https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg']
},
{
id: 3,
name: '项目风险管控类型',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: ['https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg']
},
])
</script>
<style lang="scss" scoped>
.FlexBox {
display: flex;
// align-items: flex-start;
gap: 20rpx;
}
.fb-gray {
color: #999;
}
.fw-600 {
font-weight: bold;
color: #333;
}
.MainBox {
height: 100%;
overflow: hidden;
padding: 20rpx;
background-color: #fff;
padding: 20rpx;
.CardBox {
width: 100%;
height: 380rpx;
background-color: #fff;
padding: 20rpx;
display: flex;
flex-direction: column;
border: 1rpx solid #c7c7c7;
// box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.1);
border-radius: 10rpx;
gap: 20rpx;
.LableBox {
width: 160rpx;
font-size: 24rpx;
color: #666;
}
.TxtBox {
width: calc(100% - 160rpx);
font-size: 24rpx;
color: #333;
font-weight: bold;
overflow: hidden;
/* 隐藏溢出内容 */
white-space: nowrap;
/* 强制不换行 */
text-overflow: ellipsis;
/* 显示省略号 */
}
.imgBox {
width: 100rpx;
height: 100rpx;
border-radius: 10rpx;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
}
}
}
</style>

View File

@ -0,0 +1,161 @@
<!-- 项目详情-整改记录 -->
<template>
<view class="MainBox">
<u-virtual-list :list-data="dataSource" :item-height="170" height="100%">
<template #default="{ item }">
<view class="CardBox">
<view class="ShadeBox">
<view class="FlexBox" style="justify-content: space-between;">
<view class="fw-600">{{ item.name }}</view>
<u-tag :text="item.status" :type="item.status === '待复核' ? 'warning' : 'success'"
plain></u-tag>
</view>
<view class="FlexBox">
<view class="imgBox">
<image :src="item.imgUrl" mode="aspectFill"></image>
</view>
<view class="InfoBox">
<view>识别时间{{ item.time }}</view>
<view>施工单位自查{{ item.inspect }}</view>
</view>
</view>
<u-button text="复核" type="primary" size="small"></u-button>
</view>
</view>
</template>
</u-virtual-list>
</view>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const dataSource = ref([
{
id: 1,
name: '消防器械摆放不当',
inspect: '合格',
time: '2023-08-01 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '待复核'
},
{
id: 2,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
{
id: 3,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
{
id: 4,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
{
id: 5,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
])
</script>
<style lang="scss" scoped>
.FlexBox {
display: flex;
// align-items: flex-start;
gap: 20rpx;
}
.fb-gray {
color: #999;
}
.fw-600 {
font-weight: bold;
color: #333;
}
.MainBox {
height: 100%;
overflow: hidden;
padding: 20rpx;
background-color: #fff;
padding: 20rpx;
.CardBox {
width: 100%;
height: 280rpx;
background-color: #fff;
padding: 10rpx;
.ShadeBox {
padding: 20rpx;
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.2);
display: flex;
flex-direction: column;
border-radius: 10rpx;
gap: 20rpx;
}
.LableBox {
width: 160rpx;
font-size: 24rpx;
color: #666;
}
.TxtBox {
width: calc(100% - 160rpx);
font-size: 24rpx;
color: #333;
font-weight: bold;
overflow: hidden;
/* 隐藏溢出内容 */
white-space: nowrap;
/* 强制不换行 */
text-overflow: ellipsis;
/* 显示省略号 */
}
.imgBox {
width: 100rpx;
height: 100rpx;
border-radius: 10rpx;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
}
}
}
</style>

View File

@ -0,0 +1,161 @@
<!-- 项目详情-现场复核项列表 -->
<template>
<view class="MainBox">
<u-virtual-list :list-data="dataSource" :item-height="170" height="100%">
<template #default="{ item }">
<view class="CardBox">
<view class="ShadeBox">
<view class="FlexBox" style="justify-content: space-between;">
<view class="fw-600">{{ item.name }}</view>
<u-tag :text="item.status" :type="item.status === '待复核' ? 'warning' : 'success'"
plain></u-tag>
</view>
<view class="FlexBox">
<view class="imgBox">
<image :src="item.imgUrl" mode="aspectFill"></image>
</view>
<view class="InfoBox">
<view>识别时间{{ item.time }}</view>
<view>施工单位自查{{ item.inspect }}</view>
</view>
</view>
<u-button text="复核" type="primary" size="small"></u-button>
</view>
</view>
</template>
</u-virtual-list>
</view>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const dataSource = ref([
{
id: 1,
name: '消防器械摆放不当',
inspect: '合格',
time: '2023-08-01 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '待复核'
},
{
id: 2,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
{
id: 3,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
{
id: 4,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
{
id: 5,
name: '项目风险管控类型',
inspect: '不合格',
time: '2023-08-02 10:00:00',
details: '已重新规划消防器械摆区域,并设置标识',
opinion: '整改到位,符合项目要求',
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
status: '已复核'
},
])
</script>
<style lang="scss" scoped>
.FlexBox {
display: flex;
// align-items: flex-start;
gap: 20rpx;
}
.fb-gray {
color: #999;
}
.fw-600 {
font-weight: bold;
color: #333;
}
.MainBox {
height: 100%;
overflow: hidden;
padding: 20rpx;
background-color: #fff;
padding: 20rpx;
.CardBox {
width: 100%;
height: 280rpx;
background-color: #fff;
padding: 10rpx;
.ShadeBox {
padding: 20rpx;
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.2);
display: flex;
flex-direction: column;
border-radius: 10rpx;
gap: 20rpx;
}
.LableBox {
width: 160rpx;
font-size: 24rpx;
color: #666;
}
.TxtBox {
width: calc(100% - 160rpx);
font-size: 24rpx;
color: #333;
font-weight: bold;
overflow: hidden;
/* 隐藏溢出内容 */
white-space: nowrap;
/* 强制不换行 */
text-overflow: ellipsis;
/* 显示省略号 */
}
.imgBox {
width: 100rpx;
height: 100rpx;
border-radius: 10rpx;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
}
}
}
</style>

View File

@ -44,13 +44,13 @@
<up-tabs :list="list1" @click="click"></up-tabs>
</view>
<view class="displayCase">
<ControlView v-if="currentTab === 1"></ControlView>
<BasicView v-if="currentTab === 2" ></BasicView>
<RecordView v-if="currentTab === 3"></RecordView>
<AiCheck v-if="currentTab === 1"></AiCheck>
<SceneCheck v-if="currentTab === 2"></SceneCheck>
<Reviewed v-if="currentTab === 3"></Reviewed>
</view>
</view>
<view class="FootBox">
<u-button type="primary">项目完工确认</u-button>
<u-button type="primary">项目完工复核</u-button>
<view class="FootTxt">
<view>复核进度</view>
<view class="yellow">监理复核中</view>
@ -59,10 +59,12 @@
</view>
</template>
<script setup>
import ControlView from './components/ControlView.vue'
import BasicView from './components/BasicView.vue'
import RecordView from './components/RecordView.vue'
import AiCheck from './components/AiCheck.vue'
import SceneCheck from './components/SceneCheck.vue'
import Reviewed from './components/Reviewed.vue'
import { ref } from 'vue'
const progectInfo = ref({
Id: 1,
name: '北京CBD改造项目',
@ -74,25 +76,28 @@ const progectInfo = ref({
})
// tabs
const currentTab = ref(1)
// tabs
const list1 = ref([
{
name: '风险管控实施',
name: 'AI推送复核项',
id: 1
},
{
name: '基本项目信息',
name: '人工现场复核项',
id: 2
},
{
name: '整改记录',
name: '已复核项',
id: 3
}
])
// tabs
const click = (e) => {
currentTab.value = e.id
}
//
const goBack = () => {
uni.switchTab({

View File

@ -20,9 +20,10 @@
<u-button text="详情" type="primary" size="small" @click="GoDetail(item.id)"></u-button>
</view>
</view>
<view class="CodeTxt">{{ item.site }}</view>
<view class="CodeTxt">剩余作业时长{{ item.remainingTime }}</view>
<view class="CodeTxt">施工单位{{ item.company }}</view>
<view class="CodeTxt">作业地点{{ item.site }}</view>
<view class="TagBox">
<u-tag type="error" plain>3项待复核</u-tag>
<u-tag :text="item.status" plain
:type="item.status === '实施中' ? 'primary' : item.status === '整改中' ? 'warning' : item.status === '待完工确认' ? 'info' : item.status === '已完工' ? 'success' : 'danger'"
shape="circle"></u-tag>
@ -38,20 +39,21 @@ import { ref } from 'vue'
const TypeValue = ref('1') //
//
const TypeList = ref([
{ name: '全部实施中项目', id: '1' },
{ name: '我负责的项目', id: '2' },
{ name: '整改', id: '3' },
{ name: '待完工确认', id: '4' },
])
{ name: '全部待监理项目', id: '1' },
{ name: '需复核风险卡', id: '2' },
{ name: '待确认整改', id: '3' },
{ name: '我负责的项目', id: '4' },
{ name: '已完成监理', id: '5' },
])
const dataSource = ref([
{ id: 1, name: '北京CBD写字楼改造项目', remainingTime: '1', site: '北京市朝阳区建国路88号', status: '实施中' },
{ id: 2, name: '工单2', remainingTime: '2', site: '北京市朝阳区建国路88号', status: '整改中' },
{ id: 3, name: '工单3', remainingTime: '3', site: '北京市朝阳区建国路88号', status: '待完工确认' },
{ id: 4, name: '工单4', remainingTime: '5', site: '北京市朝阳区建国路88号', status: '实施中' },
{ id: 5, name: '工单5', remainingTime: '3', site: '北京市朝阳区建国路88号', status: '待完工确认' },
{ id: 6, name: '工单6', remainingTime: '2', site: '北京市朝阳区建国路88号', status: '已完工' },
{ id: 7, name: '工单7', remainingTime: '4', site: '北京市朝阳区建国路88号', status: '已完工' },
{ id: 1, name: '北京CBD写字楼改造项目', company: '华建集团第一建筑公司', remainingTime: '1', site: '北京市朝阳区建国路88号', status: '实施中' },
{ id: 2, name: '工单2', remainingTime: '2', company: '华建集团第一建筑公司', site: '北京市朝阳区建国路88号', status: '整改中' },
{ id: 3, name: '工单3', remainingTime: '3', company: '华建集团第一建筑公司', site: '北京市朝阳区建国路88号', status: '待完工确认' },
{ id: 4, name: '工单4', remainingTime: '5', company: '华建集团第一建筑公司', site: '北京市朝阳区建国路88号', status: '实施中' },
{ id: 5, name: '工单5', remainingTime: '3', company: '华建集团第一建筑公司', site: '北京市朝阳区建国路88号', status: '待完工确认' },
{ id: 6, name: '工单6', remainingTime: '2', company: '华建集团第一建筑公司', site: '北京市朝阳区建国路88号', status: '已完工' },
{ id: 7, name: '工单7', remainingTime: '4', company: '华建集团第一建筑公司', site: '北京市朝阳区建国路88号', status: '已完工' },
])
//
@ -134,6 +136,9 @@ const GoDetail = (id) => {
.TagBox {
margin-top: 20rpx;
display: flex;
align-items: center;
gap: 20rpx;
}
.BtnList {

View File

@ -54,7 +54,7 @@ async function handleLogin() {
try {
//
uni.showToast({ title: '登录成功', icon: 'success' })
uni.switchTab({ url: '/pages/WorkOrderApproval/index' })
uni.switchTab({ url: '/pages/ProjectList/index' })
} catch (error) {
console.error('登录失败:', error)
} finally {