提交 d33b124a authored 作者: caodi\cd's avatar caodi\cd

fix:提交

上级 af54e348
{
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{
"path": "pages/login/login"
},
{
"path": "pages/home/home",
"style": {
"navigationBarTitleText": ""
}
},
{ //操作日志
"path": "pages/index/operLog"
},
"pages": [
//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{
"path": "pages/login/login"
},
{
"path": "pages/home/home",
"style": {
"navigationBarTitleText": ""
}
},
{
//操作日志
"path": "pages/index/operLog"
},
//杭州内网机房巡检
//杭州内网机房巡检
{
"path": "pages/inspection/inspFirst"
},
{
"path": "pages/inspection/inspFirst"
},
{
"path": "pages/report/sampleTable"
},
{
"path": "pages/report/sampleTable"
},
{
//修改密码
"path": "pages/index/editPd"
},
{
"path": "pages/home/home",
"style": {
"navigationBarTitleText": ""
}
},
{ //修改密码
"path": "pages/index/editPd"
},
{
"path": "pages/home/home",
"style": {
"navigationBarTitleText": ""
}
},
// 机房巡检
{
"path": "pages/inspectionContent/inspectionContent",
"style": {
"navigationBarTitleText": ""
}
},
// 井道巡检
{
"path": "pages/shaftInspection/shaftInspection",
"style": {
"navigationBarTitleText": ""
}
},
// 机房巡检
{
"path": "pages/inspectionContent/inspectionContent",
"style": {
"navigationBarTitleText": ""
}
},
// 井道巡检
{
"path": "pages/shaftInspection/shaftInspection",
"style": {
"navigationBarTitleText": ""
}
},
// 新增配置---------
// 巡检管理
{
"path": "pages/inspectionManagement/index"
},
// 设备上架管理
{
"path": "pages/listingManagement/index"
},
// 井道巡检列表
{
"path": "pages/shaftInspection/shaftInspectionList",
"style": {
"navigationBarTitleText": ""
}
},
// 井道巡检新页面
{
"path": "pages/shaftInspection/shaftInspectionNew",
"style": {
"navigationBarTitleText": ""
}
}
],
"globalStyle": {
"pageOrientation": "landscape",
"navigationStyle": "custom",
"rpxCalcBaseDeviceWidth": 1280, // 设计稿基准宽度
"rpxCalcMaxDeviceWidth": 2560, // 设备最大宽度
"rpxCalcIncludeWidth": 1024 // 包含宽度
},
"uniIdRouter": {},
"condition": { //模式配置,仅开发期间生效
"current": 0, //当前激活的模式(list 的索引项)
"list": [{
"name": "", //模式名称
"path": "", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到
}]
}
}
\ No newline at end of file
// 新增配置---------
// 巡检管理
{
"path": "pages/inspectionManagement/index"
},
// 设备上架管理
{
"path": "pages/listingManagement/index"
},
//机房巡检列表
{
"path": "pages/inspectionContent/inspectionContentList",
"style": {
"navigationBarTitleText": ""
}
},
// 机房巡检新页面
{
"path": "pages/inspectionContent/inspectionContentNew",
"style": {
"navigationBarTitleText": ""
}
},
// 井道巡检列表
{
"path": "pages/shaftInspection/shaftInspectionList",
"style": {
"navigationBarTitleText": ""
}
},
// 井道巡检新页面
{
"path": "pages/shaftInspection/shaftInspectionNew",
"style": {
"navigationBarTitleText": ""
}
}
],
"globalStyle": {
"pageOrientation": "landscape",
"navigationStyle": "custom",
"rpxCalcBaseDeviceWidth": 1280, // 设计稿基准宽度
"rpxCalcMaxDeviceWidth": 2560, // 设备最大宽度
"rpxCalcIncludeWidth": 1024 // 包含宽度
},
"uniIdRouter": {},
"condition": {
//模式配置,仅开发期间生效
"current": 0, //当前激活的模式(list 的索引项)
"list": [
{
"name": "", //模式名称
"path": "", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到
}
]
}
}
<template>
<view v-if="isOpen" class="synchronous-dialog">
<view class="synchronous-content">
<!-- 巡检事项 -->
<view class="form-item">
<text class="form-label"><text class="required">*</text>巡检事项:</text>
<text>{{ inspectionItem }}</text>
</view>
<!-- 情况摘要(多选输入框) -->
<view class="form-item">
<text class="form-label"><text class="required">*</text>情况摘要:</text>
<textarea
v-model="summary"
placeholder="请输入情况摘要"
auto-height
class="input-box"
></textarea>
</view>
<!-- 固定词 -->
<view class="form-item last">
<text class="form-label"></text>
<view class="fixed-words">
<text
v-for="(word, index) in fixedWords"
:key="index"
class="word"
@click="selectWord(word)"
>
{{ word }}
</text>
</view>
</view>
<view class="row-item bottom-row">
<button class="button btn" @click="handleClose">取消</button>
<button class="button" @click="handleConfirm">确认</button>
</view>
</view>
</view>
</template>
<script>
export default {
props: {
// 父组件传递的巡检事项
inspectionItem: {
type: String,
default: "",
},
// 父组件传递的固定词
fixedWords: {
type: Array,
default: () => ["已检查", "正常", "异常", "需处理"],
},
},
data() {
return {
summary: "", // 情况摘要
isOpen: false,
};
},
methods: {
// 打开弹窗
open() {
this.isOpen = true;
},
// 关闭弹窗
close() {
this.isOpen = false;
},
// 选择固定词
selectWord(word) {
this.summary += word + " "; // 将选中的词添加到输入框
},
// 确认
handleConfirm() {
this.$emit("confirm", this.summary); // 将情况摘要回传给父组件
this.handleClose();
},
// 关闭弹窗
handleClose() {
this.summary = ""; // 清空输入框
this.close();
},
},
};
</script>
<style scoped lang="less">
.synchronous-dialog {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 99999;
.synchronous-content {
padding: 3% 20px 32px 24px;
width: 400px;
height: 300px;
box-sizing: border-box;
background-image: linear-gradient(
-6deg,
#f9ffe7 0%,
#ffffff 12%,
#fcfeff 73%,
#ccf1ff 100%
);
border: 0.4px solid rgba(224, 224, 224, 1);
border-radius: 12px;
position: relative;
.row-item {
display: flex;
align-items: center;
justify-content: center;
}
.title {
font-family: PingFangSC-Medium;
font-size: 18px;
color: #000000;
text-align: center;
line-height: 26px;
font-weight: 500;
}
.count-num {
margin: 5% 0 5% 0;
align-items: flex-end;
.num {
display: inline-block;
font-family: AlibabaPuHuiTi_2_65_Medium;
font-size: 50px;
color: #3774f6;
line-height: 44px;
font-weight: 500;
}
}
.operating-instructions {
margin-bottom: 8%;
.title {
font-size: 13px;
color: #4a4a4a;
line-height: 24px;
font-weight: 600;
text-align: left;
}
.instructions-item {
font-size: 12px;
color: #7c7c7c;
line-height: 22px;
font-weight: 400;
}
}
// 打包按钮
.bottom-row {
position: absolute;
bottom: 24px;
left: 50%;
transform: translateX(-50%);
.button {
display: flex;
align-items: center;
justify-content: center;
background-image: linear-gradient(180deg, #3773f6 0%, #2c57f6 99%);
box-shadow: 0px 10px 24px 0px rgba(51, 104, 246, 0.24);
border-radius: 27px;
width: 128px;
height: 32px;
margin: 10px;
color: #fff;
&.btn {
background: #ffffff;
color: #000000;
}
}
}
// 关闭按钮
.close-button {
position: absolute;
bottom: -40px;
left: 50%;
transform: translateX(-50%);
.iconfont {
color: #fff;
font-size: 24px;
}
}
}
}
.form-item {
width: 100%;
display: flex;
align-items: center;
padding: 9.6px 0;
line-height: 28.8px;
border-bottom: 0.8px solid #f2f3f5;
&.last{
border: 0;
}
.form-label {
font-size: 11.2px;
font-weight: bold;
margin-right: 25.6px;
width: 64px;
text-align: right;
.required {
color: red;
margin-right: 3.2px;
}
}
.switch-container {
display: flex;
gap: 9.6px;
.status-btn {
flex: 1;
padding: 5.6px 19.2px;
font-size: 12.8px;
color: #000000;
background: #f2f2f2;
text-align: center;
font-weight: 400;
line-height: 17.6px;
border-radius: 14.4px;
&.active {
color: #ffffff;
background: #3774f6;
border: 0.32px solid rgba(224, 224, 224, 1);
}
}
}
.input-box {
flex: 1;
border-radius: 3.2px;
font-size: 12.8px;
line-height: 19.2px;
}
.photo-limit {
font-size: 12.8px;
color: #959595;
line-height: 19.2px;
font-weight: 400;
}
.photo-container {
display: flex;
flex-wrap: wrap;
margin-bottom: 6.4px;
.photo-item {
position: relative;
margin-right: 6.4px;
margin-bottom: 6.4px;
.photo {
width: 57.6px;
height: 57.6px;
border-radius: 3.2px;
margin-left: 9.6px;
}
.delete-photo {
position: absolute;
top: -6.4px;
right: -6.4px;
background-color: #ff4d4f;
color: #fff;
width: 12.8px;
height: 12.8px;
border-radius: 50%;
text-align: center;
line-height: 12.8px;
font-size: 9.6px;
}
}
}
.photo-btn {
background: #ffffff;
border: 0.272px solid rgba(221, 221, 221, 1);
border-radius: 1.64px;
width: 57.6px;
height: 57.6px;
font-size: 57.6px;
color: #cccccc;
text-align: center;
line-height: 51.2px;
}
}
</style>
<template>
<view class="container">
<!-- 表单区域 -->
<view class="form">
<view
class="form-item"
v-for="(item, index) in formData"
:key="index"
>
<!-- 文字显示区域 -->
<view class="text-display" @click="showPopup(index)">
{{ item.text || '点击输入文字' }}
</view>
<!-- 图片上传区域 -->
<view class="image-upload">
<image
v-if="item.image"
:src="item.image"
mode="aspectFill"
class="uploaded-image"
></image>
<button @click="uploadImage(index)">上传图片</button>
</view>
</view>
</view>
<!-- 提交按钮 -->
<button class="submit-btn" @click="submitForm">提交</button>
<!-- 自定义弹窗组件 -->
<custom-popup
ref="customPopup"
:inspection-item="currentInspectionItem"
:fixed-words="fixedWords"
@confirm="handlePopupConfirm"
></custom-popup>
</view>
</template>
<script>
import CustomPopup from '@/components/CustomPopup.vue';
export default {
components: {
CustomPopup
},
data() {
return {
formData: [
{ text: '', image: '' },
{ text: '', image: '' },
{ text: '', image: '' },
{ text: '', image: '' },
{ text: '', image: '' }
],
currentIndex: -1, // 当前操作的索引
currentInspectionItem: '巡检事项', // 当前巡检事项
fixedWords: ['漏水', '损坏', '正常', '异常'] // 固定词
};
},
methods: {
// 显示弹窗
showPopup(index) {
this.currentIndex = index;
this.$refs.customPopup.open();
},
// 处理弹窗确认
handlePopupConfirm(summary) {
if (this.currentIndex !== -1) {
this.formData[this.currentIndex].text = summary; // 回显到文字显示区域
this.currentIndex = -1;
}
},
// 上传图片
uploadImage(index) {
uni.chooseImage({
count: 1,
success: (res) => {
if (this.formData[index].image) {
uni.showToast({
title: '每组只能上传一张图片',
icon: 'none'
});
return;
}
this.formData[index].image = res.tempFilePaths[0]; // 保存图片路径
}
});
},
// 提交表单
submitForm() {
let isValid = true;
this.formData.forEach((item, index) => {
if (!item.text || !item.image) {
isValid = false;
uni.showToast({
title: `第 ${index + 1} 组数据未填写完整`,
icon: 'none'
});
}
});
if (isValid) {
uni.showToast({
title: '提交成功',
icon: 'success'
});
console.log('提交的数据:', this.formData);
// 这里可以处理提交逻辑,比如将数据发送到后端
}
}
}
};
</script>
<style scoped>
.container {
padding: 20px;
}
.form {
margin-bottom: 20px;
}
.form-item {
margin-bottom: 20px;
border: 1px solid #ccc;
border-radius: 8px;
padding: 10px;
}
.text-display {
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
margin-bottom: 10px;
cursor: pointer;
}
.image-upload {
display: flex;
align-items: center;
}
.uploaded-image {
width: 100px;
height: 100px;
margin-right: 10px;
border-radius: 5px;
}
.submit-btn {
background-color: #007aff;
color: #fff;
padding: 10px;
border-radius: 5px;
text-align: center;
}
</style>
\ No newline at end of file
<template>
<!-- 机房巡检操作 -->
<view>
<view v-for="(item, index) in itemData.detail" :key="index">
<view class="form-item">
<text class="form-label"><text class="required">*</text>巡检结论</text>
<view class="switch-container">
<view
:class="['status-btn', { active: item.inspectionResult === 0 }]"
@click="setInspectionResult(0)"
>
正常
</view>
<view
:class="['status-btn', { active: item.inspectionResult === 1 }]"
@click="setInspectionResult(1)"
>
异常
</view>
</view>
</view>
<view class="form-item">
<text class="form-label"><text class="required">*</text>情况摘要</text>
<text class="required" @click="showPopup(index)">{{
item.conclusion || "请输入"
}}</text>
</view>
<view class="form-item">
<text class="form-label">现场照片</text>
<view class="photo-box">
<view class="photo-container">
<view @click="takePhoto" class="photo-btn"> + </view>
<view
v-for="(photo, index) in item && item.photos"
:key="index"
class="photo-item"
>
<image :src="photo" class="photo"></image>
<text class="delete-photo" @click="deletePhoto(index)">×</text>
</view>
</view>
<view class="photo-limit">请对检查项进行拍照留存(限5张)。</view>
</view>
</view> </view
><custom-popup
ref="customPopup"
:inspectionItem="inspectionItem"
@confirm="handlePopupConfirm"
></custom-popup>
</view>
</template>
<script>
import customPopup from "../components/customPopup.vue";
import _ from "lodash";
export default {
components: {
customPopup,
},
props: {
// 父组件传递的巡检状态
status: {
type: Number,
default: 0,
},
// 父组件传递的巡检事项名
inspectionItem: {
type: String,
default: "",
},
// 父组件传递的数据
itemData: {
type: Object,
default: () => ({
// 0是未巡检 1是已巡检 2巡检异常
status: 0,
detail: [
{
label: "地板、墙壁破损",
inspectionResult: 0,
conclusion: "",
photos: [],
},
{
label: "机房清洁",
inspectionResult: 0,
conclusion: "",
photos: [],
},
{
label: "机房通风",
inspectionResult: 0,
conclusion: "",
photos: [],
},
{
label: "机房照明",
inspectionResult: 0,
conclusion: "",
photos: [],
},
{
label: "漏水检测",
inspectionResult: 0,
conclusion: "",
photos: [],
},
],
}),
},
},
data() {
return {
currentIndex: 0, // 当前操作的索引
};
},
computed: {
userInfo() {
return this.$store.state.now_user || {};
},
},
mounted() {},
methods: {
// 显示弹窗
showPopup(index) {
this.currentIndex = index;
this.$refs.customPopup.open();
},
// 处理弹窗确认
handlePopupConfirm(summary) {
if (this.currentIndex !== -1) {
this.itemData.detail[this.currentIndex].text = summary; // 回显到文字显示区域
this.currentIndex = -1;
}
},
},
};
</script>
<style scoped lang="less">
.form-item {
display: flex;
align-items: center;
padding: 9.6px 0;
line-height: 28.8px;
border-bottom: 0.8px solid #f2f3f5;
.form-label {
font-size: 11.2px;
margin-right: 25.6px;
width: 58.4px;
text-align: right;
color: #7c7c7c;
.required {
color: red;
margin-right: 3.2px;
}
}
.label {
font-size: 11.2px;
}
.switch-container {
display: flex;
gap: 9.6px;
.status-btn {
flex: 1;
padding: 5.6px 19.2px;
font-size: 12.8px;
color: #000000;
background: #f2f2f2;
text-align: center;
font-weight: 400;
line-height: 17.6px;
border-radius: 14.4px;
&.active {
color: #ffffff;
background: #3774f6;
border: 0.32px solid rgba(224, 224, 224, 1);
}
}
}
.input-box {
flex: 1;
border-radius: 3.2px;
font-size: 12.8px;
line-height: 19.2px;
}
.photo-limit {
font-size: 12.8px;
color: #959595;
line-height: 19.2px;
font-weight: 400;
}
.photo-container {
display: flex;
flex-wrap: wrap;
margin-bottom: 6.4px;
.photo-item {
position: relative;
margin-right: 6.4px;
margin-bottom: 6.4px;
.photo {
width: 57.6px;
height: 57.6px;
border-radius: 3.2px;
margin-left: 9.6px;
}
.delete-photo {
position: absolute;
top: -6.4px;
right: -6.4px;
background-color: #ff4d4f;
color: #fff;
width: 12.8px;
height: 12.8px;
border-radius: 50%;
text-align: center;
line-height: 12.8px;
font-size: 9.6px;
}
}
}
.photo-btn {
background: #ffffff;
border: 0.272px solid rgba(221, 221, 221, 1);
border-radius: 1.64px;
width: 57.6px;
height: 57.6px;
font-size: 57.6px;
color: #cccccc;
text-align: center;
line-height: 51.2px;
}
}
</style>
......@@ -14,7 +14,7 @@
</block>
<block slot="right" class="nav-right">
<view class="header-buttons">
<!-- <button class="button" @click="lookLog">查看样表</button> -->
<button class="button" @click="lookLog">查看样表</button>
</view>
</block>
</uni-nav-bar>
......@@ -106,18 +106,9 @@
<script>
import moment from "moment";
import Tabs from "./model/tabs.vue";
import TabContentItem from "./model/tabContentItem.vue";
import {
addLog,
getLogContent,
LOG_TYPE_ENUM,
writeDarf,
writeInspectionData,
} from "@/utils/IoReadingAndWriting.js";
import { pad_2_1_inspection_position, pad_2_1_floor } from "@/utils/dict.js";
import { getInspectionDetails, getDarft } from "@/request/index.js";
import { getInspectionDetails } from "@/request/index.js";
export default {
data() {
return {
......@@ -355,6 +346,7 @@ export default {
}
.info {
margin-right: 9.6px;
.username {
font-size: 16px;
color: #000000;
......
......@@ -51,7 +51,7 @@
src="@/static/img/add-img/home1.png"
mode="aspectFit"
></image
>请点击“需巡检井道”执行巡检
>{{ tabs[activeTab].text }}
</view>
<view class="tab-content">
<!-- 操作区域 -->
......@@ -185,14 +185,17 @@ export default {
{
label: "门禁",
icon: "../../static/img/add-img/home1.png",
text: "检查门禁是否可以正常开启/关闭",
},
{
label: "卫生",
icon: "../../static/img/add-img/home1.png",
text: "检查卫生状况是否保持清洁",
},
{
label: "设备告警",
icon: "../../static/img/add-img/home1.png",
text: "检查设备是否存在告警,有无设备离线或故障",
},
],
activeTab: 0, // 当前选中的 Tab
......@@ -278,7 +281,7 @@ export default {
if (list && list.length) {
this.list = list;
}
this.inspectionResult = list[0].inspectionResult
this.inspectionResult = list[0].inspectionResult;
console.log("let list", list);
this.detailsInfo = detailsInfo;
console.log("获取list", this.list);
......@@ -295,22 +298,6 @@ export default {
uni.hideLoading();
});
},
// 加载历史数据
loadHistoryData() {
const history = uni.getStorageSync("inspectionHistory");
console.log("history", history);
if (
history &&
Date.now() - history.firstSubmitTime < 168 * 60 * 60 * 1000
) {
this.historyData = history;
this.location = history.location;
this.randomDescription = history.randomDescription;
this.list = history.tabData;
this.activeTab = 0; // 默认切换到第一个 Tab
this.updateCurrentTabData();
}
},
// 数据结构重组
coverlist() {
// 获取井道巡检的三个检查项固定数据再进行处理
......@@ -420,7 +407,7 @@ export default {
console.log("this.detailsInfo", this.detailsInfo);
this.detailsInfo.submitTime = moment().format("yyyy-MM-DD"); // 记录提交时间
this.detailsInfo.submitMonth = moment().format("yyyy-MM"); // 记录提交月份
this.detailsInfo.synchronization = 2 //编辑中
this.detailsInfo.synchronization = 2; //编辑中
return this.detailsInfo;
} else {
let baseInfo = this.baseInfo;
......@@ -840,16 +827,19 @@ export default {
.form-label {
font-size: 11.2px;
font-weight: bold;
margin-right: 25.6px;
width: 58.4px;
text-align: right;
color: #7c7c7c;
.required {
color: red;
margin-right: 3.2px;
}
}
.label {
font-size: 11.2px;
}
.switch-container {
display: flex;
......
差异被折叠。
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论