feat: 添加复核功能相关页面及路由配置
新增AI识别项复核、场景复核和现场完工复核页面 配置页面路由并实现各组件间的跳转逻辑 完善复核表单功能及样式
This commit is contained in:
parent
2ccc63358f
commit
3fe788ec23
|
|
@ -22,6 +22,27 @@
|
|||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/Intelligentize/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "AI识别项复核",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/SceneReview/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "场景复核",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/CompleteReview/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "现场完工复核",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/TodayExamine/index",
|
||||
"style": {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,183 @@
|
|||
<!-- 现场完工复核-页面 -->
|
||||
<template>
|
||||
<view class="PageBox">
|
||||
<view class="TopBox FlexBox">
|
||||
<view class="iconBox FlexBox">
|
||||
<!-- 返回列表页 -->
|
||||
<u-icon name="arrow-leftward" size="24" @click="goBack"></u-icon>
|
||||
</view>
|
||||
<view class="Title">现场完工复核</view>
|
||||
<view class="informBox">
|
||||
<!-- <u-icon name="bell-fill" size="24"></u-icon>
|
||||
<view class="MsgTxt"></view> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="ContentBox">
|
||||
<view class="TabsBox">
|
||||
<u-tabs :list="tabsList" @click="changeTab"></u-tabs>
|
||||
</view>
|
||||
|
||||
<view class="FormItemBox" v-if="currentTab === '1'">
|
||||
<view class="LabelBox">现场是否复核完工要求:</view>
|
||||
<view class="ValueBox">
|
||||
<u-radio-group v-model="formData.inspect" @change="changeInspect" >
|
||||
<u-radio label="符合" >符合</u-radio>
|
||||
<u-radio label="不符合" >不符合</u-radio>
|
||||
</u-radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="FormItemBox" v-if="currentTab === '1'">
|
||||
<view class="LabelBox">现场复核照片(至少上传3张):</view>
|
||||
<view class="ValueBox">
|
||||
<u-upload
|
||||
:action="uploadUrl"
|
||||
:file-list="fileList"
|
||||
:max-count="1"
|
||||
:auto-upload="false"
|
||||
@change="handleChange"
|
||||
>
|
||||
</u-upload>
|
||||
</view>
|
||||
</view>
|
||||
<view class="FormItemBox" v-if="currentTab === '2'">
|
||||
<view class="LabelBox">遗留问题描述:</view>
|
||||
<view class="ValueBox">
|
||||
<u-textarea v-model="formData.legacyProblem" placeholder="请输入遗留问题描述"></u-textarea>
|
||||
</view>
|
||||
</view>
|
||||
<view class="FormItemBox" v-if="currentTab === '2'">
|
||||
<view class="LabelBox">整改要求:</view>
|
||||
<view class="ValueBox">
|
||||
<u-textarea v-model="formData.rectifyRequirements" placeholder="请输入整改要求"></u-textarea>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="FootBox">
|
||||
<u-button type="primary">提交复核结果</u-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
|
||||
const tabsList = ref([
|
||||
{
|
||||
name: '整体复核',
|
||||
value: '1'
|
||||
},
|
||||
{
|
||||
name: '遗留问题',
|
||||
value: '2'
|
||||
}
|
||||
])
|
||||
const currentTab = ref('1')
|
||||
|
||||
// 切换标签
|
||||
const changeTab = (e) => {
|
||||
currentTab.value = e.value
|
||||
}
|
||||
|
||||
const formData = ref({
|
||||
inspect: '合格', // 复核结果
|
||||
attachment: '', // 附件上传
|
||||
legacyProblem: '', // 遗留问题描述
|
||||
rectifyRequirements: '' // 整改要求
|
||||
})
|
||||
|
||||
// 返回
|
||||
const goBack = () => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.FlexBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 20rpx;
|
||||
}
|
||||
|
||||
.TabsBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.FormItemBox {
|
||||
padding: 20rpx;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.2);
|
||||
border-radius: 10rpx;
|
||||
margin-bottom: 20rpx;
|
||||
.LabelBox {
|
||||
font-size: 24rpx;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.ValueBox {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.PageBox {
|
||||
// background-color: #ff9900;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
|
||||
.TopBox {
|
||||
height: 100rpx;
|
||||
padding: 20rpx;
|
||||
background-color: #fff;
|
||||
|
||||
.iconBox {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
|
||||
.Title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.informBox {
|
||||
.MsgTxt {
|
||||
padding: 8rpx;
|
||||
background-color: hsla(17, 100%, 50%, 0.849);
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
top: 16rpx;
|
||||
right: 16rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ContentBox {
|
||||
// background-color: #c5d5d6;
|
||||
background-color: #fff;
|
||||
height: calc(100vh - 210rpx);
|
||||
overflow: hidden;
|
||||
padding: 20rpx;
|
||||
}
|
||||
|
||||
.FootBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 20rpx;
|
||||
padding: 20rpx;
|
||||
background-color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,156 @@
|
|||
<!-- AI识别项复核-页面 -->
|
||||
<template>
|
||||
<view class="PageBox">
|
||||
<view class="TopBox FlexBox">
|
||||
<view class="iconBox FlexBox">
|
||||
<!-- 返回列表页 -->
|
||||
<u-icon name="arrow-leftward" size="24" @click="goBack"></u-icon>
|
||||
</view>
|
||||
<view class="Title">AI识别项复核</view>
|
||||
<view class="informBox">
|
||||
<u-icon name="bell-fill" size="24"></u-icon>
|
||||
<view class="MsgTxt"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="ContentBox">
|
||||
<view class="FormItemBox">
|
||||
<view class="LabelBox">检查项名称:</view>
|
||||
<view class="ValueBox">作业人员未佩戴安全帽</view>
|
||||
</view>
|
||||
<view class="FormItemBox">
|
||||
<view class="LabelBox">识别照片:</view>
|
||||
<view class="imgBox">
|
||||
<image
|
||||
src="https://img2.baidu.com/it/u=3422224422,2822825222&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500"
|
||||
mode="aspectFill" style="width: 200rpx; height: 200rpx;"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="FormItemBox">
|
||||
<view class="LabelBox">施工单位自查意见:</view>
|
||||
<view class="ValueBox">单位已安排人员监督,后续加强安全培训</view>
|
||||
</view>
|
||||
<view class="FormItemBox">
|
||||
<view class="LabelBox">复核结果:</view>
|
||||
<view class="ValueBox">
|
||||
<u-radio-group v-model="formData.inspect" @change="change">
|
||||
<u-radio label="合格">合格</u-radio>
|
||||
<u-radio label="不合格">不合格</u-radio>
|
||||
</u-radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="FormItemBox">
|
||||
<view class="LabelBox">附件上传:</view>
|
||||
<view class="uploadBox">
|
||||
<u-upload :action="uploadUrl" :auto-upload="false" @change="handleChange" @preview="handlePreview"
|
||||
@remove="handleRemove">
|
||||
|
||||
</u-upload>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
<view class="FootBox">
|
||||
<u-button plain type="primary">取消</u-button>
|
||||
<u-button type="primary">提交复核结果</u-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
|
||||
const formData = ref({
|
||||
inspect: '合格', // 复核结果
|
||||
attachment: '' // 附件上传
|
||||
})
|
||||
|
||||
// 返回
|
||||
const goBack = () => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.FlexBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 20rpx;
|
||||
}
|
||||
|
||||
.FormItemBox {
|
||||
padding: 20rpx;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.2);
|
||||
border-radius: 10rpx;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.LabelBox {
|
||||
font-size: 24rpx;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.ValueBox {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.PageBox {
|
||||
// background-color: #ff9900;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
|
||||
.TopBox {
|
||||
height: 100rpx;
|
||||
padding: 20rpx;
|
||||
background-color: #fff;
|
||||
|
||||
.iconBox {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
|
||||
.Title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.informBox {
|
||||
.MsgTxt {
|
||||
padding: 8rpx;
|
||||
background-color: hsla(17, 100%, 50%, 0.849);
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
top: 16rpx;
|
||||
right: 16rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ContentBox {
|
||||
// background-color: #c5d5d6;
|
||||
background-color: #fff;
|
||||
height: calc(100vh - 210rpx);
|
||||
overflow: hidden;
|
||||
padding: 20rpx;
|
||||
}
|
||||
.FootBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 20rpx;
|
||||
padding: 20rpx;
|
||||
background-color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<u-button text="复核" type="primary" size="small"></u-button>
|
||||
<u-button text="复核" type="primary" size="small" @click="goReview(item.id)"></u-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
</u-virtual-list>
|
||||
</view>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
<script setup >
|
||||
import { ref } from 'vue'
|
||||
|
||||
const dataSource = ref([
|
||||
|
|
@ -89,6 +89,16 @@ const dataSource = ref([
|
|||
status: '已复核'
|
||||
},
|
||||
])
|
||||
|
||||
// 跳转复核详情页
|
||||
const goReview = (id) => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/Intelligentize/index?id=' + id
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.FlexBox {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<u-button text="复核" type="primary" size="small"></u-button>
|
||||
<u-button text="复核" type="primary" size="small" disabled>已复核</u-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
</u-virtual-list>
|
||||
</view>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
<script setup >
|
||||
import { ref } from 'vue'
|
||||
|
||||
const dataSource = ref([
|
||||
|
|
@ -46,7 +46,7 @@ const dataSource = ref([
|
|||
details: '已重新规划消防器械摆区域,并设置标识',
|
||||
opinion: '整改到位,符合项目要求',
|
||||
imgUrl: 'https://img95.699pic.com/photo/40225/7755.jpg_wh860.jpg',
|
||||
status: '待复核'
|
||||
status: '已复核'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
|
|
@ -89,6 +89,8 @@ const dataSource = ref([
|
|||
status: '已复核'
|
||||
},
|
||||
])
|
||||
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.FlexBox {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<u-button text="复核" type="primary" size="small"></u-button>
|
||||
<u-button text="复核" type="primary" size="small" @click="handleReview(item)">复核</u-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
</u-virtual-list>
|
||||
</view>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
|
||||
const dataSource = ref([
|
||||
|
|
@ -89,6 +89,12 @@ const dataSource = ref([
|
|||
status: '已复核'
|
||||
},
|
||||
])
|
||||
// 复核
|
||||
const handleReview = (item) => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/SceneReview/index?id=' + item.id
|
||||
})
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.FlexBox {
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="FootBox">
|
||||
<u-button type="primary">项目完工复核</u-button>
|
||||
<u-button type="primary" @click="goCompleteReview">项目完工复核</u-button>
|
||||
<view class="FootTxt">
|
||||
<view>复核进度:</view>
|
||||
<view class="yellow">监理复核中</view>
|
||||
|
|
@ -67,7 +67,7 @@ import { ref } from 'vue'
|
|||
|
||||
const progectInfo = ref({
|
||||
Id: 1,
|
||||
name: '北京CBD改造项目',
|
||||
name: 'AI识别项复核',
|
||||
code: '20230801001',
|
||||
leader: '张三',
|
||||
period: '2023.8.1-2023.12.31',
|
||||
|
|
@ -101,7 +101,14 @@ const click = (e) => {
|
|||
// 返回列表页
|
||||
const goBack = () => {
|
||||
uni.switchTab({
|
||||
url: '/pages/ProgectList/index'
|
||||
url: '/pages/ProjectList/index'
|
||||
})
|
||||
}
|
||||
|
||||
// 项目完工复核
|
||||
const goCompleteReview = () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/CompleteReview/index'
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,153 @@
|
|||
<!-- 现场复核-页面 -->
|
||||
<template>
|
||||
<view class="PageBox">
|
||||
<view class="TopBox FlexBox">
|
||||
<view class="iconBox FlexBox">
|
||||
<!-- 返回列表页 -->
|
||||
<u-icon name="arrow-leftward" size="24" @click="goBack"></u-icon>
|
||||
</view>
|
||||
<view class="Title">现场复核</view>
|
||||
<view class="informBox">
|
||||
<!-- <u-icon name="bell-fill" size="24"></u-icon>
|
||||
<view class="MsgTxt"></view> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="ContentBox">
|
||||
<view class="FormItemBox">
|
||||
<view class="LabelBox">复核要求:</view>
|
||||
<view class="ValueBox">现场核查动火作业区灭火器配置数量是否符合要求</view>
|
||||
</view>
|
||||
<view class="FormItemBox">
|
||||
<view class="LabelBox">复核结果:</view>
|
||||
<view class="ValueBox">
|
||||
<u-radio-group v-model="formData.inspect" @change="changeInspect" >
|
||||
<u-radio label="合格">合格</u-radio>
|
||||
<u-radio label="不合格">不合格</u-radio>
|
||||
</u-radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="FormItemBox">
|
||||
<view class="LabelBox">现场照片/视频:</view>
|
||||
<view class="ValueBox">
|
||||
<u-upload
|
||||
:action="uploadUrl"
|
||||
:file-list="fileList"
|
||||
:max-count="1"
|
||||
:auto-upload="false"
|
||||
@change="handleChange"
|
||||
>
|
||||
</u-upload>
|
||||
</view>
|
||||
</view>
|
||||
<view class="FormItemBox">
|
||||
<view class="LabelBox">复核意见:</view>
|
||||
<view class="ValueBox">
|
||||
<u-textarea v-model="formData.opinion" placeholder="请输入复核意见"></u-textarea>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="FootBox">
|
||||
<u-button plain type="primary">取消</u-button>
|
||||
<u-button type="primary">提交复核结果</u-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
|
||||
const formData = ref({
|
||||
inspect: '合格', // 复核结果
|
||||
attachment: '', // 附件上传
|
||||
opinion: '' // 复核意见
|
||||
})
|
||||
|
||||
// 返回
|
||||
const goBack = () => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.FlexBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 20rpx;
|
||||
}
|
||||
|
||||
.FormItemBox {
|
||||
padding: 20rpx;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.2);
|
||||
border-radius: 10rpx;
|
||||
margin-bottom: 20rpx;
|
||||
.LabelBox {
|
||||
font-size: 24rpx;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.ValueBox {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.PageBox {
|
||||
// background-color: #ff9900;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
|
||||
.TopBox {
|
||||
height: 100rpx;
|
||||
padding: 20rpx;
|
||||
background-color: #fff;
|
||||
|
||||
.iconBox {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
|
||||
.Title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.informBox {
|
||||
.MsgTxt {
|
||||
padding: 8rpx;
|
||||
background-color: hsla(17, 100%, 50%, 0.849);
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
top: 16rpx;
|
||||
right: 16rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ContentBox {
|
||||
// background-color: #c5d5d6;
|
||||
background-color: #fff;
|
||||
height: calc(100vh - 210rpx);
|
||||
overflow: hidden;
|
||||
padding: 20rpx;
|
||||
}
|
||||
|
||||
.FootBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 20rpx;
|
||||
padding: 20rpx;
|
||||
background-color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Loading…
Reference in New Issue