feat(项目复核): 重构项目详情页为监理复核功能
- 替换工单审批为项目列表作为登录后首页 - 重构项目详情页为监理复核功能,包含AI推送、现场复核和已复核项三个tab - 新增三个复核组件并删除旧组件 - 更新项目列表页显示施工单位信息和复核状态 - 修改完工确认按钮为完工复核
This commit is contained in:
parent
005ce674db
commit
7fc4062330
|
|
@ -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": "项目实施",
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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({
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue