PDA-安环管理-废水/废气巡检-页面对接

test
ysn 2 weeks ago
parent 06b8886855
commit 2b16285384
  1. 477
      pages/sanitation/gasInspection.vue
  2. 496
      pages/sanitation/waterInspection.vue

@ -1,249 +1,268 @@
<template> <template>
<ifrm ref="ifrm"> <ifrm ref="ifrm">
<!-- 安全巡检--> <!-- 安全巡检-->
<uni-forms ref="form" err-show-type="toast"> <uni-forms ref="form" err-show-type="toast">
<uni-forms-item><input type="text" v-model="deviceRepairValue" @confirm="deviceRepairConfirm" <uni-forms-item>
class="uni-input-border" placeholder="巡检点编码" /></uni-forms-item> <input type="text" v-model="code" @confirm="deviceRepairConfirm" class="uni-input-border" placeholder="巡检点编码" />
</uni-forms> </uni-forms-item>
<t-table> </uni-forms>
<t-tr> <t-table>
<t-td>巡检点编码</t-td> <t-tr>
<t-td>{{ deviceRepairObj.epInspectionPoint.patrolRegister }}</t-td> <t-td>巡检点编码</t-td>
</t-tr> <t-td>{{ deviceRepairObj.epInspectionPoint.insNum }}</t-td>
<t-tr> </t-tr>
<t-td>巡检点位置</t-td> <t-tr>
<t-td>{{ deviceRepairObj.epInspectionPoint.insSpot }}</t-td> <t-td>巡检点位置</t-td>
</t-tr> <t-td>{{ deviceRepairObj.epInspectionPoint.insSite }}</t-td>
<t-tr> </t-tr>
<t-td>状态</t-td> <t-tr>
<t-td>{{ deviceRepairObj.taskStatusText }}</t-td> <t-td>状态</t-td>
</t-tr> <t-td>
</t-table> {{
<view style="font-size: 36rpx;">巡检备注</view> deviceRepairObj.epInspectionPoint.taskStatus == 1
<uni-forms ref="form" err-show-type="toast"> ? "待检"
<uni-forms-item><uni-easyinput type="textarea" autoHeight v-model="deviceRepairObj.parMemo" : deviceRepairObj.epInspectionPoint.taskStatus == 2
placeholder="请输入内容"></uni-easyinput></uni-forms-item> ? "未检"
</uni-forms> : deviceRepairObj.epInspectionPoint.taskStatus == 3
<view class="photoTitleSize">{{uploader.length}}/9</view> ? "已检"
<view class="showImage"> : ""
<view v-for="(item, i) in uploader" :key="i" class="showImage-for"> }}
<view class="view-image"> </t-td>
<image :src="item.imageUrl" @tap="previewImage(i)" /> </t-tr>
</view> </t-table>
<view class="view-icon"> <view style="font-size: 36rpx">巡检备注</view>
<uni-icons type='trash' size="14" color='gray' @click="removeScene(item, i)"></uni-icons> <uni-forms ref="form" err-show-type="toast">
</view> <uni-forms-item>
</view> <uni-easyinput type="textarea" autoHeight v-model="deviceRepairObj.epInspectionPoint.parMemo"
<view class="view-center" v-if="uploader.length < 9"> placeholder="请输入内容">
<image src="../../static/images/photo.png" @click="chooseImage()"></image> </uni-easyinput>
</view> </uni-forms-item>
</uni-forms>
<view class="photoTitleSize">{{ uploader.length }}/9</view>
<view class="showImage">
<view v-for="(item, i) in uploader" :key="i" class="showImage-for">
<view class="view-image">
<image :src="item.imageUrl" @tap="previewImage(i)" />
</view> </view>
<view class="buttonBox"><button class="button" type="primary" <view class="view-icon">
:disabled="!(Object.keys(deviceRepairObj).length > 2)" @click="submitClick">提交</button></view> <uni-icons type="trash" size="14" color="gray" @click="removeScene(item, i)" />
</ifrm> </view>
</view>
<view class="view-center" v-if="uploader.length < 9">
<image src="../../static/images/photo.png" @click="chooseImage()" />
</view>
</view>
<view class="buttonBox">
<button class="button" type="primary" :disabled="!(Object.keys(deviceRepairObj.epInspectionPoint).length > 2)"
@click="submitClick">
提交
</button>
</view>
</ifrm>
</template> </template>
<script> <script>
import ifrm from '@/pages/index/ifrm'; import ifrm from "@/pages/index/ifrm";
import tTable from '@/components/t-table/t-table.vue'; import tTable from "@/components/t-table/t-table.vue";
import tTh from '@/components/t-table/t-th.vue'; import tTh from "@/components/t-table/t-th.vue";
import tTr from '@/components/t-table/t-tr.vue'; import tTr from "@/components/t-table/t-tr.vue";
import tTd from '@/components/t-table/t-td.vue'; import tTd from "@/components/t-table/t-td.vue";
import scan from '../../mixin/scan.js'; import scan from "../../mixin/scan.js";
export default { import {
mixins: [scan], options
components: { } from '@/http/config.js';
ifrm, export default {
tTable, mixins: [scan],
tTh, components: {
tTr, ifrm,
tTd tTable,
tTh,
tTr,
tTd,
},
data() {
return {
code: "",
deviceRepairObj: {
epInspectionPoint: {
parMemo: "",
}, },
data() { },
return { uploader: [],
deviceRepairValue: '', };
deviceRepairObj: { },
epInspectionPoint: {}, methods: {
parMemo: '' chooseImage: async function () {
}, if (!this.deviceRepairObj.epInspectionPoint.epcId) {
uploader: [] return uni.showToast({
}; title: '请先查询巡检点',
icon: 'none'
});
}
uni.chooseImage({
count: 9,
// sizeType: ['compressed'],
// sourceType: ['album', 'camera'],
success: (res) => {
uni.showLoading({
title: '上传中,请稍候'
});
res.tempFilePaths.forEach(filePath => {
uni.uploadFile({
url: options.baseURL + '/blade-resource/oss/endpoint/put-file-attach',
filePath: filePath,
name: 'file',
header: {
'token': 'bearer ' + uni.getStorageSync('accessToken'),
'Blade-Auth': 'bearer ' + uni.getStorageSync('accessToken'),
'Blade-Requested-With': 'BladeHttpRequest'
},
success: (uploadRes) => {
uni.hideLoading();
uni.showToast({ title: '上传成功' });
this.uploader.push({
upId: JSON.parse(uploadRes.data).data.attachId,
imageUrl: JSON.parse(uploadRes.data).data.link
});
},
fail: (err) => {
console.error('❌ 上传失败', err);
uni.showToast({ title: '上传失败', icon: 'none' });
}
});
});
}, },
methods: { });
},
previewImage: function (index) {
var imags = [];
this.uploader.forEach((item) => {
imags.push(item.imageUrl);
});
uni.previewImage({
current: index,
urls: imags,
});
},
chooseImage: async function() { removeScene(item, i) {
if (!this.deviceRepairObj.epiId) { //
return uni.showToast({ this.uploader.splice(i, 1);
title: '请先查询巡检点', // //
icon: 'none' this.$uploadUtil.asyncDelete(item.upId).then((data) => {
}); uni.showToast({
} title: "删除成功",
uni.chooseImage({ icon: "none",
// sourceType: ['album','camera'], //album camera 使 });
// sizeType: ['original', 'compressed'], // });
count: 9, // this.upIdList.splice(this.upIdList.findIndex((upId) => (upId === item.upId)), 1);
success: (res) => { },
uni.showLoading({
title: '上传中,请稍候'
});
var tempFilePaths = res.tempFilePaths;
for (var i = 0; i < tempFilePaths.length; i++) {
const file = res.tempFiles[i];
this.$uploadUtil.upload(file, {
theId: this.deviceRepairObj.epiId,
theTag: 'EpPatrolInspection',
subTag: 'appDoc'
}, tempFilePaths[i]).then((upId) => {
uni.hideLoading();
//
this.uploader.push({
upId: upId,
imageUrl: file.path
});
})
} getBarCode(code) {
}, this.getData(code);
complete() { },
uni.hideLoading(); deviceRepairConfirm(e) {
} this.getBarCode(e.target.value);
}) },
}, getData(code) {
previewImage: function(index) { this.code = code;
var imags = []; this.$u.api
this.uploader.forEach(item => { .getInspectionBySan({
imags.push(item.imageUrl); code: code,
}) eipType: 2,
uni.previewImage({ })
current: index, .then((res) => {
urls: imags if (res.data == null) {
}) return uni.showToast({
}, icon: "none",
title: "此巡检位置暂无任务",
removeScene(item, i) { });
// }
this.uploader.splice(i, 1); this.code = "";
// // this.deviceRepairObj.epInspectionPoint = res.data;
this.$uploadUtil.asyncDelete(item.upId).then((data) => { uni.showToast({
uni.showToast({ title: "数据获取成功",
title: '删除成功', });
icon: 'none' });
}); },
}) submitClick() {
// this.upIdList.splice(this.upIdList.findIndex((upId) => (upId === item.upId)), 1); this.$u.api
}, .savePatrolIns({
...this.deviceRepairObj.epInspectionPoint,
getBarCode(code) { path: this.uploader.map((item) => item.imageUrl).join(','),
this.getData(code); })
}, .then((data) => {
deviceRepairConfirm(e) { uni.showToast({
this.getBarCode(e.target.value); title: "保存成功",
}, });
getData(code) { this.code = "";
this.deviceRepairValue = code; this.deviceRepairObj = {
this.$ajax.request({ epInspectionPoint: {},
url: 'pdaLoad/getInspectionBySan', };
method: 'POST', this.uploader = [];
data: { });
code: code, },
eipType: 2 },
}, onNavigationBarButtonTap(btn) {
success: data => { this.$refs.ifrm.topMenuClick(btn);
if (data == null) { },
return uni.showToast({ onShow() { },
icon: "none", };
title: '此巡检位置暂无任务'
});
}
this.deviceRepairValue = '';
this.deviceRepairObj = data;
uni.showToast({
title: '数据获取成功'
});
}
});
},
submitClick() {
this.$ajax.request({
url: 'pdaSave/savePatrolIns',
method: 'POST',
data: this.deviceRepairObj,
success: data => {
uni.showToast({
title: '保存成功'
});
this.deviceRepairValue = '';
this.deviceRepairObj = {
epInspectionPoint: {},
parMemo: ''
};
this.uploader = []
}
});
}
},
onNavigationBarButtonTap(btn) {
this.$refs.ifrm.topMenuClick(btn);
},
onShow() {}
};
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.uni-forms-item { .uni-forms-item {
margin-bottom: 6px !important; margin-bottom: 6px !important;
} }
.photoTitleSize { .photoTitleSize {
color: #a1a1a1; color: #a1a1a1;
text-align: right; text-align: right;
margin-right: 30rpx; margin-right: 30rpx;
margin-top: -30rpx; margin-top: -30rpx;
} }
.showImage {
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: -20rpx;
.showImage-for { .showImage {
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: -20rpx;
display: flex; .showImage-for {
flex-direction: column; display: flex;
width: 200rpx; flex-direction: column;
margin-left: 30rpx; width: 200rpx;
height: 260rpx; margin-left: 30rpx;
height: 260rpx;
.view-icon { .view-icon {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: center; justify-content: center;
margin-top: -10rpx; margin-top: -10rpx;
} }
image { image {
border-width: 2rpx; border-width: 2rpx;
border-color: rgb(229, 229, 229); border-color: rgb(229, 229, 229);
border-style: solid; border-style: solid;
border-radius: 20rpx; border-radius: 20rpx;
width: 190rpx; width: 190rpx;
height: 190rpx; height: 190rpx;
}
}
} }
}
}
.view-center { .view-center {
margin: 0rpx 25rpx; margin: 0rpx 25rpx;
image { image {
border-width: 2rpx; border-width: 2rpx;
border-color: rgb(229, 229, 229); border-color: rgb(229, 229, 229);
border-style: solid; border-style: solid;
border-radius: 20rpx; border-radius: 20rpx;
width: 190rpx; width: 190rpx;
height: 190rpx; height: 190rpx;
} }
} }
</style> </style>

@ -1,249 +1,287 @@
<template> <template>
<ifrm ref="ifrm"> <ifrm ref="ifrm">
<!-- 安全巡检--> <!-- 安全巡检-->
<uni-forms ref="form" err-show-type="toast"> <uni-forms ref="form" err-show-type="toast">
<uni-forms-item><input type="text" v-model="deviceRepairValue" @confirm="deviceRepairConfirm" <uni-forms-item>
class="uni-input-border" placeholder="巡检点编码" /></uni-forms-item> <input
</uni-forms> type="text"
<t-table> v-model="code"
<t-tr> @confirm="deviceRepairConfirm"
<t-td>巡检点编码</t-td> class="uni-input-border"
<t-td>{{ deviceRepairObj.epInspectionPoint.patrolRegister }}</t-td> placeholder="巡检点编码"
</t-tr> />
<t-tr> </uni-forms-item>
<t-td>巡检点位置</t-td> </uni-forms>
<t-td>{{ deviceRepairObj.epInspectionPoint.insSpot }}</t-td> <t-table>
</t-tr> <t-tr>
<t-tr> <t-td>巡检点编码</t-td>
<t-td>状态</t-td> <t-td>{{ deviceRepairObj.epInspectionPoint.insNum }}</t-td>
<t-td>{{ deviceRepairObj.taskStatusText }}</t-td> </t-tr>
</t-tr> <t-tr>
</t-table> <t-td>巡检点位置</t-td>
<view style="font-size: 36rpx;">巡检备注</view> <t-td>{{ deviceRepairObj.epInspectionPoint.insSite }}</t-td>
<uni-forms ref="form" err-show-type="toast"> </t-tr>
<uni-forms-item><uni-easyinput type="textarea" autoHeight v-model="deviceRepairObj.parMemo" <t-tr>
placeholder="请输入内容"></uni-easyinput></uni-forms-item> <t-td>状态</t-td>
</uni-forms> <t-td>
<view class="photoTitleSize">{{uploader.length}}/9</view> {{
<view class="showImage"> deviceRepairObj.epInspectionPoint.taskStatus == 1
<view v-for="(item, i) in uploader" :key="i" class="showImage-for"> ? "待检"
<view class="view-image"> : deviceRepairObj.epInspectionPoint.taskStatus == 2
<image :src="item.imageUrl" @tap="previewImage(i)" /> ? "未检"
</view> : deviceRepairObj.epInspectionPoint.taskStatus == 3
<view class="view-icon"> ? "已检"
<uni-icons type='trash' size="14" color='gray' @click="removeScene(item, i)"></uni-icons> : ""
</view> }}
</view> </t-td>
<view class="view-center" v-if="uploader.length < 9"> </t-tr>
<image src="../../static/images/photo.png" @click="chooseImage()"></image> </t-table>
</view> <view style="font-size: 36rpx">巡检备注</view>
<uni-forms ref="form" err-show-type="toast">
<uni-forms-item>
<uni-easyinput
type="textarea"
autoHeight
v-model="deviceRepairObj.epInspectionPoint.parMemo"
placeholder="请输入内容"
>
</uni-easyinput>
</uni-forms-item>
</uni-forms>
<view class="photoTitleSize">{{ uploader.length }}/9</view>
<view class="showImage">
<view v-for="(item, i) in uploader" :key="i" class="showImage-for">
<view class="view-image">
<image :src="item.imageUrl" @tap="previewImage(i)" />
</view> </view>
<view class="buttonBox"><button class="button" type="primary" <view class="view-icon">
:disabled="!(Object.keys(deviceRepairObj).length > 2)" @click="submitClick">提交</button></view> <uni-icons
</ifrm> type="trash"
size="14"
color="gray"
@click="removeScene(item, i)"
/>
</view>
</view>
<view class="view-center" v-if="uploader.length < 9">
<image src="../../static/images/photo.png" @click="chooseImage()" />
</view>
</view>
<view class="buttonBox">
<button
class="button"
type="primary"
:disabled="!(Object.keys(deviceRepairObj.epInspectionPoint).length > 2)"
@click="submitClick"
>
提交
</button>
</view>
</ifrm>
</template> </template>
<script> <script>
import ifrm from '@/pages/index/ifrm'; import ifrm from "@/pages/index/ifrm";
import tTable from '@/components/t-table/t-table.vue'; import tTable from "@/components/t-table/t-table.vue";
import tTh from '@/components/t-table/t-th.vue'; import tTh from "@/components/t-table/t-th.vue";
import tTr from '@/components/t-table/t-tr.vue'; import tTr from "@/components/t-table/t-tr.vue";
import tTd from '@/components/t-table/t-td.vue'; import tTd from "@/components/t-table/t-td.vue";
import scan from '../../mixin/scan.js'; import scan from "../../mixin/scan.js";
export default { import { options } from "@/http/config.js";
mixins: [scan], export default {
components: { mixins: [scan],
ifrm, components: {
tTable, ifrm,
tTh, tTable,
tTr, tTh,
tTd tTr,
tTd,
},
data() {
return {
code: "",
deviceRepairObj: {
epInspectionPoint: {
parMemo: "",
}, },
data() { },
return { uploader: [],
deviceRepairValue: '', };
deviceRepairObj: { },
epInspectionPoint: {}, methods: {
parMemo: '' chooseImage: async function () {
}, if (!this.deviceRepairObj.epInspectionPoint.epcId) {
uploader: [] return uni.showToast({
}; title: "请先查询巡检点",
icon: "none",
});
}
uni.chooseImage({
count: 9,
// sizeType: ['compressed'],
// sourceType: ['album', 'camera'],
success: (res) => {
uni.showLoading({
title: "上传中,请稍候",
});
res.tempFilePaths.forEach((filePath) => {
uni.uploadFile({
url:
options.baseURL +
"/blade-resource/oss/endpoint/put-file-attach",
filePath: filePath,
name: "file",
header: {
token: "bearer " + uni.getStorageSync("accessToken"),
"Blade-Auth": "bearer " + uni.getStorageSync("accessToken"),
"Blade-Requested-With": "BladeHttpRequest",
},
success: (uploadRes) => {
uni.hideLoading();
uni.showToast({ title: "上传成功" });
this.uploader.push({
upId: JSON.parse(uploadRes.data).data.attachId,
imageUrl: JSON.parse(uploadRes.data).data.link,
});
},
fail: (err) => {
console.error("❌ 上传失败", err);
uni.showToast({ title: "上传失败", icon: "none" });
},
});
});
}, },
methods: { });
},
previewImage: function (index) {
var imags = [];
this.uploader.forEach((item) => {
imags.push(item.imageUrl);
});
uni.previewImage({
current: index,
urls: imags,
});
},
chooseImage: async function() { removeScene(item, i) {
if (!this.deviceRepairObj.epiId) { //
return uni.showToast({ this.uploader.splice(i, 1);
title: '请先查询巡检点', // //
icon: 'none' this.$uploadUtil.asyncDelete(item.upId).then((data) => {
}); uni.showToast({
} title: "删除成功",
uni.chooseImage({ icon: "none",
// sourceType: ['album','camera'], //album camera 使 });
// sizeType: ['original', 'compressed'], // });
count: 9, // this.upIdList.splice(this.upIdList.findIndex((upId) => (upId === item.upId)), 1);
success: (res) => { },
uni.showLoading({
title: '上传中,请稍候'
});
var tempFilePaths = res.tempFilePaths;
for (var i = 0; i < tempFilePaths.length; i++) {
const file = res.tempFiles[i];
this.$uploadUtil.upload(file, {
theId: this.deviceRepairObj.epiId,
theTag: 'EpPatrolInspection',
subTag: 'appDoc'
}, tempFilePaths[i]).then((upId) => {
uni.hideLoading();
//
this.uploader.push({
upId: upId,
imageUrl: file.path
});
})
} getBarCode(code) {
}, this.getData(code);
complete() { },
uni.hideLoading(); deviceRepairConfirm(e) {
} this.getBarCode(e.target.value);
}) },
}, getData(code) {
previewImage: function(index) { this.code = code;
var imags = []; this.$u.api
this.uploader.forEach(item => { .getInspectionBySan({
imags.push(item.imageUrl); code: code,
}) eipType: 1,
uni.previewImage({ })
current: index, .then((res) => {
urls: imags if (res.data == null) {
}) return uni.showToast({
}, icon: "none",
title: "此巡检位置暂无任务",
removeScene(item, i) { });
// }
this.uploader.splice(i, 1); this.code = "";
// // this.deviceRepairObj.epInspectionPoint = res.data;
this.$uploadUtil.asyncDelete(item.upId).then((data) => { uni.showToast({
uni.showToast({ title: "数据获取成功",
title: '删除成功', });
icon: 'none' });
}); },
}) submitClick() {
// this.upIdList.splice(this.upIdList.findIndex((upId) => (upId === item.upId)), 1); this.$u.api
}, .savePatrolIns({
...this.deviceRepairObj.epInspectionPoint,
getBarCode(code) { path: this.uploader.map((item) => item.imageUrl).join(","),
this.getData(code); })
}, .then((data) => {
deviceRepairConfirm(e) { uni.showToast({
this.getBarCode(e.target.value); title: "保存成功",
}, });
getData(code) { this.code = "";
this.deviceRepairValue = code; this.deviceRepairObj = {
this.$ajax.request({ epInspectionPoint: {},
url: 'pdaLoad/getInspectionBySan', };
method: 'POST', this.uploader = [];
data: { });
code: code, },
eipType: 1 },
}, onNavigationBarButtonTap(btn) {
success: data => { this.$refs.ifrm.topMenuClick(btn);
if (data == null) { },
return uni.showToast({ onShow() {},
icon: "none", };
title: '此巡检位置暂无任务'
});
}
this.deviceRepairValue = '';
this.deviceRepairObj = data;
uni.showToast({
title: '数据获取成功'
});
}
});
},
submitClick() {
this.$ajax.request({
url: 'pdaSave/savePatrolIns',
method: 'POST',
data: this.deviceRepairObj,
success: data => {
uni.showToast({
title: '保存成功'
});
this.deviceRepairValue = '';
this.deviceRepairObj = {
epInspectionPoint: {},
parMemo: ''
};
this.uploader = []
}
});
}
},
onNavigationBarButtonTap(btn) {
this.$refs.ifrm.topMenuClick(btn);
},
onShow() {}
};
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.uni-forms-item { .uni-forms-item {
margin-bottom: 6px !important; margin-bottom: 6px !important;
} }
.photoTitleSize { .photoTitleSize {
color: #a1a1a1; color: #a1a1a1;
text-align: right; text-align: right;
margin-right: 30rpx; margin-right: 30rpx;
margin-top: -30rpx; margin-top: -30rpx;
} }
.showImage {
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: -20rpx;
.showImage-for { .showImage {
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: -20rpx;
display: flex; .showImage-for {
flex-direction: column; display: flex;
width: 200rpx; flex-direction: column;
margin-left: 30rpx; width: 200rpx;
height: 260rpx; margin-left: 30rpx;
height: 260rpx;
.view-icon { .view-icon {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: center; justify-content: center;
margin-top: -10rpx; margin-top: -10rpx;
} }
image { image {
border-width: 2rpx; border-width: 2rpx;
border-color: rgb(229, 229, 229); border-color: rgb(229, 229, 229);
border-style: solid; border-style: solid;
border-radius: 20rpx; border-radius: 20rpx;
width: 190rpx; width: 190rpx;
height: 190rpx; height: 190rpx;
}
}
} }
}
}
.view-center { .view-center {
margin: 0rpx 25rpx; margin: 0rpx 25rpx;
image { image {
border-width: 2rpx; border-width: 2rpx;
border-color: rgb(229, 229, 229); border-color: rgb(229, 229, 229);
border-style: solid; border-style: solid;
border-radius: 20rpx; border-radius: 20rpx;
width: 190rpx; width: 190rpx;
height: 190rpx; height: 190rpx;
} }
} }
</style> </style>
Loading…
Cancel
Save