开始巡查、系统反馈页面静态还原

This commit is contained in:
xhc 2025-05-26 15:54:22 +08:00
parent f5234cf420
commit c060ab66f7
15 changed files with 461 additions and 28 deletions

View File

@ -22,11 +22,11 @@ export default {
<style lang="scss"> <style lang="scss">
@import '@/static/icon/iconfont.css'; @import '@/static/icon/iconfont.css';
/*每个页面公共css */ /*每个页面公共css */
uni-page-body { // uni-page-body {
// padding-bottom:var(--window-bottom) // padding-bottom:var(--window-bottom)
} // }
uni-page { #app {
background: url('@/static/image/index/bg.png') no-repeat; background: url('@/static/image/index/bg.png') no-repeat;
background-size: 100% auto; background-size: 100% auto;
} }

View File

@ -16,6 +16,11 @@
"autoclose" : true, "autoclose" : true,
"delay" : 0 "delay" : 0
}, },
"permissions": {
"camera": {
"desc": "用于扫描二维码"
}
},
/* */ /* */
"modules" : {}, "modules" : {},
/* */ /* */

View File

@ -32,6 +32,24 @@
"style": { "style": {
"navigationBarTitleText": "历史巡检" "navigationBarTitleText": "历史巡检"
} }
},
{
"path": "pages/startInspection/startInspection",
"style": {
"navigationBarTitleText": "开始巡检"
}
},
{
"path": "pages/scanCode/scanCode",
"style": {
"navigationBarTitleText": "扫描二维码"
}
},
{
"path": "pages/feedback/feedback",
"style": {
"navigationBarTitleText": "系统反馈"
}
} }
], ],
"globalStyle": { "globalStyle": {

View File

@ -0,0 +1,121 @@
<!--
* @Author: XHC
* @Date: 2025-05-26 11:59:36
* @LastEditors: XHC
* @LastEditTime: 2025-05-26 15:52:32
* @Description: 系统反馈
-->
<template>
<div class="feedback">
<view class="tips">
<view class="tips-icon"><uni-icons fontFamily="iconfont" color="#387ABC" size="20">{{'&#xe627;'}}</uni-icons> </view>
<text>为更好解决问题问题发生时请立即反馈</text>
</view>
<uni-card :is-shadow="false">
<uni-forms ref="feedbackForm" :modelValue="formData" :rules="rules">
<uni-forms-item name="radio">
<uni-section class="section" title="反馈类型" type="line"></uni-section>
<uni-data-checkbox mode="tag" v-model="formData.radio" :localdata="radioData"></uni-data-checkbox>
</uni-forms-item>
<uni-forms-item name="described">
<uni-section class="section" title="问题描述" type="line"></uni-section>
<uni-easyinput type="textarea" v-model="formData.described" placeholder="请输入问题描述" />
</uni-forms-item>
<uni-forms-item name="imageValue">
<uni-section class="section" title="问题截图" type="line"></uni-section>
<uni-file-picker limit="9" v-model="formData.imageValue"><uni-icons type="camera-filled" color="#004894" size="50"></uni-icons></uni-file-picker>
</uni-forms-item>
<uni-forms-item name="type">
<uni-section class="section" title="问题类型" type="line"></uni-section>
<uni-data-select v-model="formData.type" :localdata="range" placeholder="请输入问题类型"></uni-data-select>
</uni-forms-item>
<uni-forms-item name="datetime">
<uni-section class="section" title="发生时间" type="line"></uni-section>
<uni-datetime-picker type="datetime" return-type="timestamp" v-model="formData.datetime" placeholder="请输入发生时间"/>
</uni-forms-item>
</uni-forms>
</uni-card>
<button type="primary" @click="submit('feedbackForm')">提交</button>
</div>
</template>
<script setup>
import { ref, reactive } from 'vue';
//
let feedbackForm = ref(null)
let formData = reactive({
radio: 0,
described: '',
imageValue: '',
type: '',
datetime:''
})
//
let radioData = reactive([
{ text: '功能异常', value: 0 },
{ text: '总结与意见', value: 1 },
])
//
let range = reactive([
{ value: 0, text: "类型1" },
{ value: 1, text: "类型2" },
])
//
let rules = reactive( {
// email: {
// rules: [{
// required: true,
// errorMessage: ''
// }, {
// format: 'email',
// errorMessage: ''
// }]
// }
})
//
const submit = (ref) => {
ref.value.validate().then(res => {
console.log('success', res);
uni.showToast({
title: `校验通过`
})
}).catch(err => {
console.log('err', err);
})
}
</script>
<style lang="scss" scoped>
.feedback {
.tips {
border-radius: 10rpx;
background: #ffffff3f;
margin: 30rpx;
padding: 10rpx;
display: flex;
align-items: center;
color: #fff;
font-weight: 700;
.tips-icon {
background: #fff;
border-radius: 50%;
padding: 10rpx;
margin: 10rpx;
}
}
:deep(.checklist-box.is--tag.is-checked), :deep(uni-button) {
background-color: #004894!important;
border-color: #004894!important;
}
:deep(uni-button) {
margin: 0 60rpx;
}
:deep(.uni-easyinput__content), :deep(.file-picker__box-content), :deep(.uni-select), :deep(.uni-date-single), :deep(.uni-date-x--border) {
background-color: #DCEDFD!important;
border-color: #A3C3E3!important;
}
}
</style>

View File

@ -2,7 +2,7 @@
* @Author: XHC * @Author: XHC
* @Date: 2025-05-19 11:07:37 * @Date: 2025-05-19 11:07:37
* @LastEditors: XHC * @LastEditors: XHC
* @LastEditTime: 2025-05-23 16:03:02 * @LastEditTime: 2025-05-23 16:51:56
* @Description: 首页 * @Description: 首页
--> -->
<template> <template>
@ -78,22 +78,24 @@
{{ item.name }} {{ item.name }}
</view> </view>
</view> </view>
<view v-if="categoryCurIndex == 0"> <view class="category-content">
<uni-card class="list-card" v-for="(item, index) in listData" :key="index"> <view v-if="categoryCurIndex == 0">
<view class="head"> <uni-card class="list-card" v-for="(item, index) in listData" :key="index" @click="goToStartInspection(item)">
<text class="title">{{ item.title }}</text> <view class="head">
<uni-tag :inverted="true" :text="item.state" :type="item.state == '未巡检' ? 'error' : item.state == '巡检中' ? 'warning' : 'success'" /> <text class="title">{{ item.title }}</text>
</view> <uni-tag :inverted="true" :text="item.state" :type="item.state == '未巡检' ? 'error' : item.state == '巡检中' ? 'warning' : 'success'" />
<view class="num grey">线路编号{{ item.num }}</view> </view>
<view class="info-box grey"> <view class="num grey">线路编号{{ item.num }}</view>
<view class="info"> <uni-icons fontFamily="iconfont" color="#808185">{{'&#xe74e;'}}</uni-icons> {{ item.info }}</view> <view class="info-box grey">
<text class="info">任务 {{ item.task }}</text> <view class="info"> <uni-icons fontFamily="iconfont" color="#808185">{{'&#xe74e;'}}</uni-icons> {{ item.info }}</view>
</view> <text class="info">任务 {{ item.task }}</text>
</uni-card> </view>
</uni-card>
</view>
<view v-if="categoryCurIndex == 1"></view>
<view v-if="categoryCurIndex == 2"></view>
<view v-if="categoryCurIndex == 3"></view>
</view> </view>
<view v-if="categoryCurIndex == 1"></view>
<view v-if="categoryCurIndex == 2"></view>
<view v-if="categoryCurIndex == 3"></view>
</view> </view>
<view v-if="navCurIndex == 1">发电分部</view> <view v-if="navCurIndex == 1">发电分部</view>
<view v-if="navCurIndex == 2">自动分部</view> <view v-if="navCurIndex == 2">自动分部</view>
@ -183,6 +185,15 @@ const goToHistory = () => {
url: '/pages/history/history' url: '/pages/history/history'
}); });
} }
//
const goToStartInspection = (item) => {
console.log(item);
uni.navigateTo({
url: `/pages/startInspection/startInspection?data=${JSON.stringify(item)}`
});
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -2,7 +2,7 @@
* @Author: XHC * @Author: XHC
* @Date: 2025-05-19 15:19:14 * @Date: 2025-05-19 15:19:14
* @LastEditors: XHC * @LastEditors: XHC
* @LastEditTime: 2025-05-23 16:02:51 * @LastEditTime: 2025-05-26 11:58:55
* @Description: 我的 * @Description: 我的
--> -->
<template> <template>
@ -19,7 +19,7 @@
</view> </view>
</view> </view>
<view class="list"> <view class="list">
<uni-card class="list-item" v-for="(item, index) in listData" :key="index"> <uni-card class="list-item" v-for="(item, index) in listData" :key="index" @click="goToPages(index)">
<uni-row :gutter="30"> <uni-row :gutter="30">
<uni-col :span="2"> <uni-col :span="2">
<uni-icons fontFamily="iconfont" color="#1469BD" size="20">{{item.icon}}</uni-icons> <uni-icons fontFamily="iconfont" color="#1469BD" size="20">{{item.icon}}</uni-icons>
@ -70,6 +70,21 @@ let listData = reactive([
{ icon: '\ue650', title: '关于' }, { icon: '\ue650', title: '关于' },
]) ])
const goToPages = (index) => {
switch (index) {
case 0:
break;
case 1:
uni.navigateTo({
url: '/pages/feedback/feedback'
});
break;
default:
break;
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -0,0 +1,8 @@
<template>
<view class="scanCode">scanCode</view>
</template>
<script setup>
</script>
<style lang="scss" scoped></style>

View File

@ -0,0 +1,221 @@
<!--
* @Author: XHC
* @Date: 2025-05-23 16:46:57
* @LastEditors: XHC
* @LastEditTime: 2025-05-26 11:49:57
* @Description: 开始巡检
-->
<template>
<view class="startInspection">
<view class="patrol-info">
<view class="title">
<uni-section title="巡检信息" type="line"></uni-section>
<uni-tag :inverted="true" text="日常巡检" type="success" />
</view>
<view class="info-box">
<view class="info-item">
<uni-row :gutter="10">
<uni-col :span="7">
<text class="title">路线名称</text>
</uni-col>
<uni-col :span="17">
<text>{{ infoData.title }}</text>
</uni-col>
</uni-row>
</view>
<view class="info-item">
<uni-row :gutter="10">
<uni-col :span="7">
<text class="title">路线编号</text>
</uni-col>
<uni-col :span="17">
<text>{{ infoData.num }}</text>
</uni-col>
</uni-row>
</view>
<view class="info-item">
<uni-row :gutter="10">
<uni-col :span="7">
<text class="title">巡检频率</text>
</uni-col>
<uni-col :span="17">
<text>{{ infoData.frequency }}</text>
</uni-col>
</uni-row>
</view>
<view class="info-item">
<uni-row :gutter="10">
<uni-col :span="7">
<text class="title">巡检人员</text>
</uni-col>
<uni-col :span="17">
<text>{{ infoData.person }}</text>
</uni-col>
</uni-row>
</view>
<view class="info-item">
<uni-row :gutter="10">
<uni-col :span="7">
<text class="title">巡检内容</text>
</uni-col>
<uni-col :span="17">
<text>{{ infoData.content }}</text>
</uni-col>
</uni-row>
</view>
</view>
</view>
<view class="inspection-points">
<view class="title">
<uni-section title="巡检点位:" type="line"><text>3/32</text></uni-section>
<uni-icons type="scan" size="26" @click="scanQRCode" ></uni-icons>
</view>
<view class="list-box">
<view class="list-item" v-for="(item, index) in listData" :key="index">
<view>
<view class="item-title">
<uni-section class="section" :title="item.title" type="line"></uni-section>
<uni-tag :inverted="true" :text="item.state" :type="item.state == '正常' ? 'success' : 'warning'" />
</view>
<view class="content">
<text>{{ item.time }}</text> <text class="name">{{ item.name }}</text>
</view>
</view>
<uni-icons type="right" color="#0E65BA" size="26"></uni-icons>
</view>
</view>
</view>
</view>
</template>
<script setup>
import { onLoad } from "@dcloudio/uni-app";
import { reactive } from "vue";
let infoData = reactive({
title: '',
num: '',
frequency: '白班每班一次',
person: '运行部 五值 白班',
content: '主要巡检没备:左岸电站}-8号机組发电机层、中间层(含机組自用电))、GcB及水轮机层没备。'
})
let listData = reactive([
{ title: '发电机出口断路器', state: '异常', time: '2025-02-20 8:40', name: '张三' },
{ title: '励磁系统', state: '正常', time: '2025-02-20 8:40', name: '张三' },
{ title: '励磁变', state: '异常', time: '2025-02-20 8:40', name: '张三' },
{ title: '发电机出口断路器', state: '异常', time: '2025-02-20 8:40', name: '张三' },
{ title: '发电机出口断路器', state: '异常', time: '2025-02-20 8:40', name: '张三' },
{ title: '发电机出口断路器', state: '异常', time: '2025-02-20 8:40', name: '张三' },
{ title: '发电机出口断路器', state: '异常', time: '2025-02-20 8:40', name: '张三' },
])
onLoad((options) => {
infoData = { ...infoData, ...JSON.parse(options.data) }
console.log(infoData);
})
//
const scanQRCode = () => {
uni.scanCode({
//
success: (res) => {
// res.result
console.log('扫描结果:', res.result);
uni.navigateTo({
url: '/pages/scanCode/scanCode'
});
},
//
fail: (err) => {
console.log('扫描失败:', err);
//
}
});
}
</script>
<style lang="scss" scoped>
.startInspection {
.patrol-info {
.info-box {
.info-item {
padding: 20rpx 10rpx;
margin: 0 20rpx;
border-bottom: 1rpx solid #EDF4FD;
.title {
color: #808185;
}
&:last-of-type {
border-bottom: none;
}
}
}
}
.patrol-info, .inspection-points {
margin: 0 30rpx;
padding: 10rpx;
border-radius: 20rpx;
background: #fff;
>.title {
display: flex;
align-items: center;
}
}
.inspection-points {
margin-top: 20rpx;
.title {
padding-right: 20rpx;
display: flex;
justify-content: space-between;
:deep(.uni-section) {
display: flex;
align-items: center;
}
}
.list-box {
.list-item {
display: flex;
align-items: center;
justify-content: space-between;
background: #F1F6FD;
border-radius: 15rpx;
margin: 20rpx;
padding: 10rpx 20rpx 20rpx 0;
.item-title {
display: flex;
align-items: center;
.section {
background: transparent;
margin-right: 20rpx;
.name {
margin-left: 20rpx;
}
:deep(.uni-section-header) {
font-weight: 700;
padding: 20rpx 0;
}
:deep(.uni-section-header__content) {
margin-left: 10rpx;
}
}
}
.content {
margin-left: 30rpx;
color: #7F8084;
font-size: 23rpx;
.name {
margin-left: 20rpx;
}
}
}
}
}
}
</style>

View File

@ -54,6 +54,12 @@
<div class="content unicode" style="display: block;"> <div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe627;</span>
<div class="name">意见反馈</div>
<div class="code-name">&amp;#xe627;</div>
</li>
<li class="dib"> <li class="dib">
<span class="icon iconfont">&#xe610;</span> <span class="icon iconfont">&#xe610;</span>
<div class="name">紧急联系人</div> <div class="name">紧急联系人</div>
@ -174,9 +180,9 @@
<pre><code class="language-css" <pre><code class="language-css"
>@font-face { >@font-face {
font-family: 'iconfont'; font-family: 'iconfont';
src: url('iconfont.woff2?t=1747971580274') format('woff2'), src: url('iconfont.woff2?t=1748240865474') format('woff2'),
url('iconfont.woff?t=1747971580274') format('woff'), url('iconfont.woff?t=1748240865474') format('woff'),
url('iconfont.ttf?t=1747971580274') format('truetype'); url('iconfont.ttf?t=1748240865474') format('truetype');
} }
</code></pre> </code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3> <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@ -202,6 +208,15 @@
<div class="content font-class"> <div class="content font-class">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-yijianfankui"></span>
<div class="name">
意见反馈
</div>
<div class="code-name">.icon-yijianfankui
</div>
</li>
<li class="dib"> <li class="dib">
<span class="icon iconfont icon-jinjilianxiren"></span> <span class="icon iconfont icon-jinjilianxiren"></span>
<div class="name"> <div class="name">
@ -382,6 +397,14 @@
<div class="content symbol"> <div class="content symbol">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-yijianfankui"></use>
</svg>
<div class="name">意见反馈</div>
<div class="code-name">#icon-yijianfankui</div>
</li>
<li class="dib"> <li class="dib">
<svg class="icon svg-icon" aria-hidden="true"> <svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-jinjilianxiren"></use> <use xlink:href="#icon-jinjilianxiren"></use>

View File

@ -1,8 +1,8 @@
@font-face { @font-face {
font-family: "iconfont"; /* Project id 4926721 */ font-family: "iconfont"; /* Project id 4926721 */
src: url('iconfont.woff2?t=1747971580274') format('woff2'), src: url('iconfont.woff2?t=1748240865474') format('woff2'),
url('iconfont.woff?t=1747971580274') format('woff'), url('iconfont.woff?t=1748240865474') format('woff'),
url('iconfont.ttf?t=1747971580274') format('truetype'); url('iconfont.ttf?t=1748240865474') format('truetype');
} }
.iconfont { .iconfont {
@ -13,6 +13,10 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.icon-yijianfankui:before {
content: "\e627";
}
.icon-jinjilianxiren:before { .icon-jinjilianxiren:before {
content: "\e610"; content: "\e610";
} }

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,13 @@
"css_prefix_text": "icon-", "css_prefix_text": "icon-",
"description": "", "description": "",
"glyphs": [ "glyphs": [
{
"icon_id": "25439277",
"name": "意见反馈",
"font_class": "yijianfankui",
"unicode": "e627",
"unicode_decimal": 58919
},
{ {
"icon_id": "3182358", "icon_id": "3182358",
"name": "紧急联系人", "name": "紧急联系人",

Binary file not shown.

Binary file not shown.

Binary file not shown.