Merge branch 'test'

master
zhangdi 1 day ago
commit 8e62a96167
  1. 55
      api/safe.js
  2. 38
      api/sanitation.js
  3. 130
      pages/index/menu.js
  4. 27
      pages/plan/workReport.vue
  5. 434
      pages/safe/inspection.vue
  6. 241
      pages/safe/spotCheck.vue
  7. 438
      pages/sanitation/bsTower.vue
  8. 479
      pages/sanitation/gasInspection.vue
  9. 498
      pages/sanitation/waterInspection.vue

@ -0,0 +1,55 @@
import http from '@/http/api.js'
// 安全点检-根据设备编码查询点检项@param {string} code 设备编码
const getSpotCheckByCode = (code) => {
return http.request({
url: `/blade-desk/pdaLoad/getSpotCheckByEcCode/${code}`,
method: 'GET'
})
}
// 安全点检-提交点检数据 @param {object} data 提交参数 { sscList: [...] }
const saveSpotCheck = (data) => {
return http.request({
url: '/blade-desk/pdaSave/saveBySpotCheck',
method: 'POST',
data
})
}
// 安全巡检-根据编码查询巡检点 @param {String} code 巡检点编码
const getInspectionByCode = (code) => {
return http.request({
url: `/blade-desk/pdaLoad/getInspectionByEcCode/${code}`,
method: 'GET'
})
}
// 安全巡检-提交巡检数据 @param {object} data 提交参数 { icList: [...] }
const saveInspection = (data) => {
return http.request({
url: '/blade-desk/pdaSave/saveByInspection',
method: 'POST',
data
})
}
// 设备报修-根据设备编码查询设备信息@param {string} deviceCode 设备编码
const getEcByDeviceCode = (deviceCode) => {
return http.request({
url: '/blade-desk/pdaLoad/getEcByDeviceCode',
method: 'POST',
data: { deviceCode }
})
}
// 设备报修-提交设备报修 @param {object} data 报修数据
const saveEqRepair = (data) => {
return http.request({
url: '/blade-desk/pdaSave/saveEqRepair',
method: 'POST',
data
})
}
export default {
getInspectionByCode,
saveInspection,
getSpotCheckByCode,
saveSpotCheck,
getEcByDeviceCode,
saveEqRepair
}

@ -0,0 +1,38 @@
import http from '@/http/api.js'
// 废水/废气巡检-根据巡检点编码查询任务
const getInspectionBySan = (params) => {
return http.request({
url: '/blade-desk/pdaLoad/getInspectionBySan',
method: 'POST',
data: params
})
}
// 废水/废气巡检-提交巡检结果
const savePatrolIns = (data) => {
return http.request({
url: '/blade-desk/pdaSave/savePatrolIns',
method: 'POST',
data
})
}
// 酸雾塔加药接口-根据设备编码查询加药记录 @param {string} code 设备编码
const epDosingRecByCode = (code) => {
return http.request({
url: `/blade-desk/pdaLoad/epDosingRecByCode/${code}`,
method: 'GET'
})
}
// 酸雾塔加药接口-提交加药记录 @param {object} data 加药数据
const saveEpDosingRec = (data) => {
return http.request({
url: '/blade-desk/pdaSave/saveEpDosingRec',
method: 'POST',
data
})
}
export default {
getInspectionBySan,
savePatrolIns,
epDosingRecByCode,
saveEpDosingRec
}

@ -220,71 +220,71 @@ const menus = {
],
},
// {
// title: '安环管理',
// children: [
// {
// key: "spotCheck",
// title: "安全点检",
// url: "../safe/spotCheck",
// bgColor: '',
// limit: 'RB2315',
// icon: {
// size: 20,
// color: '#00b7ee',
// type: ''
// }
// },
// {
// key: "inspection",
// title: "安全巡检",
// url: "../safe/inspection",
// bgColor: '',
// limit: 'RB2316',
// icon: {
// size: 20,
// color: '#00b7ee',
// type: ''
// }
// },
// {
// key: "waterInspection",
// title: "废水巡检",
// url: "../sanitation/waterInspection",
// bgColor: '',
// limit: 'RB2318',
// icon: {
// size: 20,
// color: '#00b7ee',
// type: ''
// }
// },
// {
// key: "gasInspection",
// title: "废气巡检",
// url: "../sanitation/gasInspection",
// bgColor: '',
// limit: 'RB2319',
// icon: {
// size: 20,
// color: '#00b7ee',
// type: ''
// }
// },
// {
// key: "bsTower",
// title: "酸雾塔",
// url: "../sanitation/bsTower",
// bgColor: '',
// limit: 'RB2319',
// icon: {
// size: 20,
// color: '#00b7ee',
// type: ''
// }
// },
// ]
// },
{
title: '安环管理',
children: [
// {
// key: "spotCheck",
// title: "安全点检",
// url: "../safe/spotCheck",
// bgColor: '',
// limit: 'RB2315',
// icon: {
// size: 20,
// color: '#00b7ee',
// type: ''
// }
// },
{
key: "inspection",
title: "安全巡检",
url: "../safe/inspection",
bgColor: '',
limit: 'RB2316',
icon: {
size: 20,
color: '#00b7ee',
type: ''
}
},
{
key: "waterInspection",
title: "废水巡检",
url: "../sanitation/waterInspection",
bgColor: '',
limit: 'RB2318',
icon: {
size: 20,
color: '#00b7ee',
type: ''
}
},
{
key: "gasInspection",
title: "废气巡检",
url: "../sanitation/gasInspection",
bgColor: '',
limit: 'RB2319',
icon: {
size: 20,
color: '#00b7ee',
type: ''
}
},
{
key: "bsTower",
title: "酸雾塔",
url: "../sanitation/bsTower",
bgColor: '',
limit: 'RB2319',
icon: {
size: 20,
color: '#00b7ee',
type: ''
}
},
]
},
{
title: '物流配送',
children: [

@ -271,6 +271,33 @@ export default {
twoInputFcous: true,
};
},
// watch
watch: {
//
'formData.scrapQty'(newVal) {
//
if (this.tableObj.notWorkQty !== undefined && this.tableObj.notWorkQty !== null) {
const totalQty = Number(this.tableObj.notWorkQty);
const scrap = Number(newVal);
//
if (!isNaN(scrap)) {
// -
let remainingQty = totalQty - scrap;
// 0
if (remainingQty < 0) {
remainingQty = 0;
//
// uni.showToast({ title: '', icon: 'none' });
}
//
this.formData.workQty = remainingQty;
}
}
}
},
methods: {},
onNavigationBarButtonTap(btn) {
this.$refs.ifrm.topMenuClick(btn);

@ -1,231 +1,243 @@
<template>
<ifrm ref="ifrm">
<!-- 安全巡检-->
<uni-forms ref="form" err-show-type="toast">
<uni-forms-item><input type="text" v-model="patrolRegisterValue" @confirm="patrolRegisterConfirm"
class="uni-input-border" placeholder="巡检点编码" /></uni-forms-item>
</uni-forms>
<ifrm ref="ifrm">
<!-- 安全巡检-->
<uni-forms ref="form" err-show-type="toast">
<uni-forms-item>
<input
type="text"
v-model="insNum"
@confirm="insConfirm"
class="uni-input-border"
placeholder="巡检点编码"
/>
</uni-forms-item>
</uni-forms>
<uni-table border stripe emptyText="暂无更多数据" class="table">
<uni-tr>
<uni-th align="center">巡检点编码</uni-th>
<uni-th align="center">巡检点位置</uni-th>
</uni-tr>
<uni-tr v-for="(item, index) in insList" :key="index">
<uni-td align="center">{{ item.insNum }}</uni-td>
<uni-td align="center">{{ item.insSite }}</uni-td>
</uni-tr>
</uni-table>
<uni-table border stripe emptyText="暂无更多数据" class="table">
<uni-tr>
<uni-th align="center">巡检点编码</uni-th>
<uni-th align="center">巡检点位置</uni-th>
</uni-tr>
<uni-tr v-for="(item, index) in patrolRegisterList" :key="index">
<uni-td align="center">{{ item.patrolRegister }}</uni-td>
<uni-td align="center">{{ item.insSpot }}</uni-td>
</uni-tr>
</uni-table>
<view style="font-size: 36rpx;">巡检备注</view>
<uni-forms ref="form" err-show-type="toast">
<uni-forms-item><uni-easyinput type="textarea" autoHeight v-model="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 class="view-icon">
<uni-icons type='trash' size="14" color='gray' @click="removeScene(item, i)"></uni-icons>
</view>
</view>
<view class="view-center" v-if="uploader.length < 9">
<image src="../../static/images/photo.png" @click="chooseImage()"></image>
</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="memo"
placeholder="请输入内容"
/>
</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 class="view-icon">
<uni-icons
type="trash"
size="14"
color="gray"
@click="removeScene(item, i)"
></uni-icons>
</view>
<view class="buttonBox"><button class="button" type="primary" :disabled="!(patrolRegisterList.length > 0)"
@click="submitClick">提交</button></view>
</ifrm>
</view>
<view class="view-center" v-if="uploader.length < 9">
<image
src="../../static/images/photo.png"
@click="chooseImage()"
></image>
</view>
</view>
<view class="buttonBox">
<button
class="button"
type="primary"
:disabled="!(insList.length > 0)"
@click="submitClick"
>
提交
</button>
</view>
</ifrm>
</template>
<script>
import ifrm from '@/pages/index/ifrm';
import scan from '../../mixin/scan.js';
export default {
mixins: [scan],
components: {
ifrm
},
data() {
return {
patrolRegisterValue: '',
patrolRegisterList: [],
uploader: [],
parMemo: ''
};
},
methods: {
getBarCode(code) {
this.getData(code);
},
patrolRegisterConfirm(e) {
this.getBarCode(e.target.value);
},
getData(code) {
if (!code) return;
this.patrolRegisterValue = code;
this.$ajax.request({
url: 'pdaLoad/getInspectionByEcCode/' + code,
method: 'GET',
success: data => {
console.log(data);
this.patrolRegisterValue = '';
this.patrolRegisterList = data;
uni.showToast({
title: '数据获取成功'
});
}
});
},
submitClick() {
let piList = [];
this.patrolRegisterList.forEach(item => {
piList.push({
piId: item.piId
});
});
this.$ajax.request({
url: 'pdaSave/saveByInspection',
method: 'POST',
data: {
piList,
parMemo: this.parMemo
},
success: data => {
uni.showToast({
title: '巡检成功'
});
this.patrolRegisterValue = '';
this.patrolRegisterList = [];
this.uploader = []
}
import ifrm from "@/pages/index/ifrm";
import scan from "../../mixin/scan.js";
import { options } from "@/http/config.js";
export default {
mixins: [scan],
components: {
ifrm,
},
data() {
return {
insNum: "",
insList: [],
uploader: [],
memo: "",
};
},
methods: {
getBarCode(code) {
this.getData(code);
},
insConfirm(e) {
this.insList = [];
this.getBarCode(e.target.value);
},
getData(code) {
if (!code) return;
this.insNum = code;
this.$u.api.getInspectionByCode(code).then((res) => {
this.insNum = "";
this.insList = res.data;
uni.showToast({ title: "数据获取成功" });
});
},
submitClick() {
this.$u.api
.saveInspection({
code: this.insList.map((item) => item.insNum).join(","),
memo: this.memo,
//
path: this.uploader.map((item) => item.imageUrl),
})
.then((data) => {
uni.showToast({ title: "巡检成功" });
//
this.insList = [];
this.memo = "";
this.uploader = [];
});
},
chooseImage: async function () {
if (this.insList.length == 0) {
return uni.showToast({
title: "请先查询巡检点",
icon: "none",
});
}
uni.chooseImage({
count: 9,
// sizeType: ['compressed'],
// sourceType: ['album', 'camera'],
success: (res) => {
uni.showLoading({
title: "上传中,请稍候",
});
res.tempFilePaths.forEach((filePath) => {
console.log("file-----------", filePath);
console.log("options.baseURL------", options.baseURL);
const server_config = uni.getStorageSync("server-config")
console.log(999999,server_config)
uni.uploadFile({
url:
server_config.rootUrl +
"/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,
});
},
chooseImage: async function() {
if (this.patrolRegisterList.length == 0) {
return uni.showToast({
title: '请先查询巡检点',
icon: 'none'
});
}
uni.chooseImage({
// sourceType: ['album','camera'], //album camera 使
// sizeType: ['original', 'compressed'], //
count: 9,
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.patrolRegisterList[0].piId,
theTag: 'SafePatrolInspection',
subTag: 'appDoc'
}, tempFilePaths[i]).then((upId) => {
uni.hideLoading();
//
this.uploader.push({
upId: upId,
imageUrl: file.path
});
})
}
},
complete() {
uni.hideLoading();
}
})
},
previewImage: function(index) {
var imags = [];
this.uploader.forEach(item => {
imags.push(item.imageUrl);
})
uni.previewImage({
current: index,
urls: imags
})
},
removeScene(item, i) {
//
this.uploader.splice(i, 1);
// //
this.$uploadUtil.asyncDelete(item.upId).then((data) => {
uni.showToast({
title: '删除成功',
icon: 'none'
});
})
// this.upIdList.splice(this.upIdList.findIndex((upId) => (upId === item.upId)), 1);
},
},
fail: (err) => {
console.error("❌ 上传失败", err);
uni.showToast({ title: "上传失败", icon: "none" });
},
});
});
},
});
},
//
previewImage(index) {
const urls = this.uploader.map((item) => item.imageUrl);
uni.previewImage({ current: index, urls });
},
onNavigationBarButtonTap(btn) {
this.$refs.ifrm.topMenuClick(btn);
},
onShow() {}
};
//
removeScene(item, index) {
//
this.uploader.splice(index, 1);
uni.showToast({ title: "删除成功", icon: "none" });
},
},
onNavigationBarButtonTap(btn) {
this.$refs.ifrm.topMenuClick(btn);
},
onShow() {},
};
</script>
<style scoped lang="less">
.photoTitleSize {
color: #a1a1a1;
text-align: right;
margin-right: 30rpx;
margin-top: -30rpx;
}
.showImage {
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: -20rpx;
.photoTitleSize {
color: #a1a1a1;
text-align: right;
margin-right: 30rpx;
margin-top: -30rpx;
}
.showImage-for {
.showImage {
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: -20rpx;
display: flex;
flex-direction: column;
width: 200rpx;
margin-left: 30rpx;
height: 260rpx;
.showImage-for {
display: flex;
flex-direction: column;
width: 200rpx;
margin-left: 30rpx;
height: 260rpx;
.view-icon {
display: flex;
flex-direction: row;
justify-content: center;
margin-top: -10rpx;
}
.view-icon {
display: flex;
flex-direction: row;
justify-content: center;
margin-top: -10rpx;
}
image {
border-width: 2rpx;
border-color: rgb(229, 229, 229);
border-style: solid;
border-radius: 20rpx;
width: 190rpx;
height: 190rpx;
}
}
image {
border-width: 2rpx;
border-color: rgb(229, 229, 229);
border-style: solid;
border-radius: 20rpx;
width: 190rpx;
height: 190rpx;
}
}
}
.view-center {
margin: 0rpx 25rpx;
.view-center {
margin: 0rpx 25rpx;
image {
border-width: 2rpx;
border-color: rgb(229, 229, 229);
border-style: solid;
border-radius: 20rpx;
width: 190rpx;
height: 190rpx;
}
}
image {
border-width: 2rpx;
border-color: rgb(229, 229, 229);
border-style: solid;
border-radius: 20rpx;
width: 190rpx;
height: 190rpx;
}
}
</style>

@ -1,120 +1,137 @@
<template>
<ifrm ref="ifrm">
<!-- 安全点检 -->
<uni-forms ref="form" err-show-type="toast">
<uni-forms-item><input type="text" v-model="facilityValue" @confirm="facilityConfirm"
class="uni-input-border" placeholder="设备编码" /></uni-forms-item>
</uni-forms>
<checkbox-group @change="checkboxChange">
<uni-table border stripe emptyText="暂无更多数据" class="table">
<uni-tr>
<uni-th align="center" width="60"></uni-th>
<uni-th align="center">检验项</uni-th>
<uni-th align="center">检验条件</uni-th>
<uni-th align="center">检验结果</uni-th>
<uni-th align="center">描述</uni-th>
</uni-tr>
<uni-tr v-for="(item, index) in facilityData" :key="index">
<uni-td align="center">
<checkbox :value="item" :checked="item.checked" />
</uni-td>
<uni-td align="center">{{ item.checkItem }}</uni-td>
<uni-td align="center">{{ item.checkCon }}</uni-td>
<uni-td align="center" class="tableRequired">
<picker @change="bindPickerChange($event, index)" :value="item.facilityIndex" :range="array">
<view class="uni-input">{{ array[item.facilityIndex] }}</view>
</picker>
</uni-td>
<uni-td align="center" width="200"><textarea style="width: 260rpx;" auto-height
v-model="item.describe" /></uni-td>
</uni-tr>
</uni-table>
</checkbox-group>
<view class="buttonBox"><button class="button" type="primary" :disabled="!(facilitySeceteArr.length > 0)"
@click="submitClick">提交</button></view>
</ifrm>
<ifrm ref="ifrm">
<!-- 安全点检 -->
<uni-forms ref="form" err-show-type="toast">
<uni-forms-item>
<input
type="text"
v-model="facilityValue"
@confirm="facilityConfirm"
class="uni-input-border"
placeholder="设备编码"
/>
</uni-forms-item>
</uni-forms>
<checkbox-group @change="checkboxChange">
<uni-table border stripe emptyText="暂无更多数据" class="table">
<uni-tr>
<uni-th align="center" width="60"></uni-th>
<uni-th align="center">检验项</uni-th>
<uni-th align="center">检验条件</uni-th>
<uni-th align="center">检验结果</uni-th>
<uni-th align="center">描述</uni-th>
</uni-tr>
<uni-tr v-for="(item, index) in facilityData" :key="index">
<uni-td align="center">
<checkbox :value="item" :checked="item.checked" />
</uni-td>
<uni-td align="center">{{ item.checkItem }}</uni-td>
<uni-td align="center">{{ item.checkCon }}</uni-td>
<uni-td align="center" class="tableRequired">
<picker
@change="bindPickerChange($event, index)"
:value="item.facilityIndex"
:range="array"
>
<view class="uni-input">{{ array[item.facilityIndex] }}</view>
</picker>
</uni-td>
<uni-td align="center" width="200">
<textarea
style="width: 260rpx"
auto-height
v-model="item.describe"
/>
</uni-td>
</uni-tr>
</uni-table>
</checkbox-group>
<view class="buttonBox">
<button
class="button"
type="primary"
:disabled="!(facilitySeceteArr.length > 0)"
@click="submitClick"
>
提交
</button>
</view>
</ifrm>
</template>
<script>
import ifrm from '@/pages/index/ifrm';
import scan from '../../mixin/scan.js';
export default {
mixins: [scan],
components: {
ifrm
},
data() {
return {
facilityValue: '',
array: ['正常', '关机', '异常'],
facilityData: [],
facilitySeceteArr: []
};
},
methods: {
checkboxChange(e) {
this.facilitySeceteArr = e.detail.value;
},
bindPickerChange: function(e, index) {
this.facilityData[index].facilityIndex = e.target.value;
},
getBarCode(code) {
this.getData(code);
},
facilityConfirm(e) {
this.getBarCode(e.target.value);
},
getData(code) {
if (!code) return;
this.facilityValue = code;
this.$ajax.request({
url: 'pdaLoad/getSpotCheckByEcCode/' + code,
method: 'GET',
success: data => {
this.facilityValue = '';
this.facilityData = [];
data.forEach(item => {
this.facilityData.push({
...item,
facilityIndex: 0
});
});
uni.showToast({
title: '数据获取成功'
});
}
});
},
submitClick() {
let arr = [];
this.facilitySeceteArr.forEach(item => {
arr.push({
sscId: item.sscId,
checkResult: item.facilityIndex,
describe: item.describe
});
});
this.$ajax.request({
url: 'pdaSave/saveBySpotCheck',
method: 'POST',
data: {
sscList: arr
},
success: data => {
uni.showToast({
title: '点检成功'
});
this.facilityValue = '';
this.facilityData = [];
}
});
}
},
onNavigationBarButtonTap(btn) {
this.$refs.ifrm.topMenuClick(btn);
},
onShow() {}
import ifrm from "@/pages/index/ifrm";
import scan from "../../mixin/scan.js";
export default {
mixins: [scan],
components: {
ifrm,
},
data() {
return {
facilityValue: "",
array: ["正常", "关机", "异常"],
facilityData: [],
facilitySeceteArr: [],
};
},
methods: {
checkboxChange(e) {
this.facilitySeceteArr = e.detail.value;
},
bindPickerChange: function (e, index) {
this.facilityData[index].facilityIndex = e.target.value;
},
getBarCode(code) {
this.getData(code);
},
facilityConfirm(e) {
this.getBarCode(e.target.value);
},
getData(code) {
if (!code) return;
this.facilityValue = code;
this.$u.api.getSpotCheckByCode(code).then((data) => {
this.facilityValue = "";
this.facilityData = [];
data.forEach((item) => {
this.facilityData.push({
...item,
facilityIndex: 0,
});
});
uni.showToast({
title: "数据获取成功",
});
});
},
submitClick() {
let arr = [];
this.facilitySeceteArr.forEach((item) => {
arr.push({
sscId: item.sscId,
checkResult: item.facilityIndex,
describe: item.describe,
});
});
this.$u.api
.saveSpotCheck({
sscList: arr,
})
.then((data) => {
uni.showToast({
title: "点检成功",
});
this.facilityValue = "";
this.facilityData = [];
});
},
},
onNavigationBarButtonTap(btn) {
this.$refs.ifrm.topMenuClick(btn);
},
onShow() {},
};
</script>
<style scoped></style>

@ -1,34 +1,38 @@
<template>
<ifrm ref="ifrm">
<!-- 酸雾塔-->
<uni-forms ref="form" err-show-type="toast">
<uni-forms-item><input type="text" v-model="epDosingRecCode" @confirm="epDosingRecConfirm"
class="uni-input-border" placeholder="编码" /></uni-forms-item>
</uni-forms>
<t-table>
<t-tr>
<t-td>编码</t-td>
<t-td>{{ epDosingRec.bsTower.btCode }}</t-td>
</t-tr>
<t-tr>
<t-td>名称</t-td>
<t-td>{{ epDosingRec.device }}</t-td>
</t-tr>
<t-tr>
<t-td>药品名称</t-td>
<t-td>{{ epDosingRec.drug }}</t-td>
</t-tr>
<t-tr>
<t-td>剂量</t-td>
<t-td><input type="number" v-model="epDosingRec.dose"></t-td>
</t-tr>
</t-table>
<view style="font-size: 36rpx;">备注</view>
<uni-forms ref="form" err-show-type="toast">
<uni-forms-item><uni-easyinput type="textarea" autoHeight v-model="epDosingRec.memo"
placeholder="请输入内容"></uni-easyinput></uni-forms-item>
</uni-forms>
<!-- <view class="photoTitleSize">{{uploader.length}}/9</view>
<ifrm ref="ifrm">
<!-- 酸雾塔-->
<uni-forms ref="form" err-show-type="toast">
<uni-forms-item>
<input type="text" v-model="code" @confirm="epDosingRecConfirm" class="uni-input-border"
placeholder="编码" />
</uni-forms-item>
</uni-forms>
<t-table>
<t-tr>
<t-td>编码</t-td>
<t-td>{{ epDosingRec.btCode }}</t-td>
</t-tr>
<t-tr>
<t-td>名称</t-td>
<t-td>{{ epDosingRec.device }}</t-td>
</t-tr>
<t-tr>
<t-td>药品名称</t-td>
<t-td>{{ epDosingRec.drug }}</t-td>
</t-tr>
<t-tr>
<t-td>剂量</t-td>
<t-td><input type="number" v-model="epDosingRec.dose" /></t-td>
</t-tr>
</t-table>
<view style="font-size: 36rpx">备注</view>
<uni-forms ref="form" err-show-type="toast">
<uni-forms-item>
<uni-easyinput type="textarea" autoHeight v-model="epDosingRec.memo" 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">
@ -42,209 +46,203 @@
<image src="../../static/images/photo.png" @click="chooseImage()"></image>
</view>
</view> -->
<!-- :disabled="!(Object.keys(epDosingRec).length > 2)" -->
<view class="buttonBox"><button class="button" :disabled="!(Object.keys(this.epDosingRec.bsTower).length > 0)"
type="primary" @click="submitClick">提交</button></view>
</ifrm>
<!-- :disabled="!(Object.keys(epDosingRec).length > 2)" -->
<view class="buttonBox">
<button class="button" :disabled="!(Object.keys(this.epDosingRec).length > 0)" type="primary"
@click="submitClick">
提交
</button>
</view>
</ifrm>
</template>
<script>
import ifrm from '@/pages/index/ifrm';
import tTable from '@/components/t-table/t-table.vue';
import tTh from '@/components/t-table/t-th.vue';
import tTr from '@/components/t-table/t-tr.vue';
import tTd from '@/components/t-table/t-td.vue';
import scan from '../../mixin/scan.js';
export default {
mixins: [scan],
components: {
ifrm,
tTable,
tTh,
tTr,
tTd
},
data() {
return {
epDosingRecCode: '',
epDosingRec: {
bsTower: {}
},
uploader: []
};
},
methods: {
import ifrm from "@/pages/index/ifrm";
import tTable from "@/components/t-table/t-table.vue";
import tTh from "@/components/t-table/t-th.vue";
import tTr from "@/components/t-table/t-tr.vue";
import tTd from "@/components/t-table/t-td.vue";
import scan from "../../mixin/scan.js";
export default {
mixins: [scan],
components: {
ifrm,
tTable,
tTh,
tTr,
tTd,
},
data() {
return {
code: "",
epDosingRec: {},
uploader: [],
};
},
methods: {
chooseImage: async function() {
if (!this.epDosingRec.dorId) {
return uni.showToast({
title: "请先查询巡检点",
icon: "none",
});
}
uni.chooseImage({
// sourceType: ['album','camera'], //album camera 使
// sizeType: ['original', 'compressed'], //
count: 9,
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.epDosingRec.dorId,
theTag: "EpDosingRec",
subTag: "appDoc",
},
tempFilePaths[i]
)
.then((upId) => {
uni.hideLoading();
//
this.uploader.push({
upId: upId,
imageUrl: file.path,
});
});
}
},
complete() {
uni.hideLoading();
},
});
},
previewImage: function(index) {
var imags = [];
this.uploader.forEach((item) => {
imags.push(item.imageUrl);
});
uni.previewImage({
current: index,
urls: imags,
});
},
chooseImage: async function() {
if (!this.epDosingRec.dorId) {
return uni.showToast({
title: '请先查询巡检点',
icon: 'none'
});
}
uni.chooseImage({
// sourceType: ['album','camera'], //album camera 使
// sizeType: ['original', 'compressed'], //
count: 9,
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.epDosingRec.dorId,
theTag: 'EpDosingRec',
subTag: 'appDoc'
}, tempFilePaths[i]).then((upId) => {
uni.hideLoading();
//
this.uploader.push({
upId: upId,
imageUrl: file.path
});
})
removeScene(item, i) {
//
this.uploader.splice(i, 1);
// //
this.$uploadUtil.asyncDelete(item.upId).then((data) => {
uni.showToast({
title: "删除成功",
icon: "none",
});
});
// this.upIdList.splice(this.upIdList.findIndex((upId) => (upId === item.upId)), 1);
},
}
},
complete() {
uni.hideLoading();
}
})
},
previewImage: function(index) {
var imags = [];
this.uploader.forEach(item => {
imags.push(item.imageUrl);
})
uni.previewImage({
current: index,
urls: imags
})
},
removeScene(item, i) {
//
this.uploader.splice(i, 1);
// //
this.$uploadUtil.asyncDelete(item.upId).then((data) => {
uni.showToast({
title: '删除成功',
icon: 'none'
});
})
// this.upIdList.splice(this.upIdList.findIndex((upId) => (upId === item.upId)), 1);
},
getBarCode(code) {
this.getData(code);
},
epDosingRecConfirm(e) {
this.getBarCode(e.target.value);
},
getData(code) {
this.epDosingRecValue = code;
this.$ajax.request({
url: 'pdaLoad/epDosingRecByCode/' + code,
method: 'GET',
success: data => {
if (data == null) {
return uni.showToast({
icon: "none",
title: '此酸雾塔置暂无任务'
});
}
this.epDosingRecValue = '';
this.epDosingRec = data;
uni.showToast({
title: '数据获取成功'
});
}
});
},
submitClick() {
this.$ajax.request({
url: 'pdaSave/saveEpDosingRec',
method: 'POST',
data: this.epDosingRec,
success: data => {
uni.showToast({
title: '保存成功'
});
this.deviceRepairValue = '';
this.epDosingRec = {
bsTower: {},
dose: null,
memo: ''
};
this.uploader = []
}
});
}
},
onNavigationBarButtonTap(btn) {
this.$refs.ifrm.topMenuClick(btn);
},
onShow() {}
};
getBarCode(code) {
this.getData(code);
},
epDosingRecConfirm(e) {
this.getBarCode(e.target.value);
},
getData(code) {
this.epDosingRecValue = code;
this.$u.api.epDosingRecByCode(code).then((res) => {
if (res.data == null) {
return uni.showToast({
icon: "none",
title: "此酸雾塔置暂无任务",
});
}
this.epDosingRecValue = "";
this.epDosingRec = res.data;
uni.showToast({
title: "数据获取成功",
});
});
},
submitClick() {
this.$u.api.saveEpDosingRec(this.epDosingRec).then((data) => {
uni.showToast({
title: "保存成功",
});
this.epDosingRecValue = "";
this.epDosingRec = {
dose: null,
memo: "",
};
this.uploader = [];
});
},
},
onNavigationBarButtonTap(btn) {
this.$refs.ifrm.topMenuClick(btn);
},
onShow() {},
};
</script>
<style scoped lang="less">
.uni-forms-item {
margin-bottom: 6px !important;
}
.photoTitleSize {
color: #a1a1a1;
text-align: right;
margin-right: 30rpx;
margin-top: -30rpx;
}
.uni-forms-item {
margin-bottom: 6px !important;
}
.showImage {
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: -20rpx;
.photoTitleSize {
color: #a1a1a1;
text-align: right;
margin-right: 30rpx;
margin-top: -30rpx;
}
.showImage-for {
.showImage {
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: -20rpx;
display: flex;
flex-direction: column;
width: 200rpx;
margin-left: 30rpx;
height: 260rpx;
.showImage-for {
display: flex;
flex-direction: column;
width: 200rpx;
margin-left: 30rpx;
height: 260rpx;
.view-icon {
display: flex;
flex-direction: row;
justify-content: center;
margin-top: -10rpx;
}
.view-icon {
display: flex;
flex-direction: row;
justify-content: center;
margin-top: -10rpx;
}
image {
border-width: 2rpx;
border-color: rgb(229, 229, 229);
border-style: solid;
border-radius: 20rpx;
width: 190rpx;
height: 190rpx;
}
}
}
image {
border-width: 2rpx;
border-color: rgb(229, 229, 229);
border-style: solid;
border-radius: 20rpx;
width: 190rpx;
height: 190rpx;
}
}
}
.view-center {
margin: 0rpx 25rpx;
.view-center {
margin: 0rpx 25rpx;
image {
border-width: 2rpx;
border-color: rgb(229, 229, 229);
border-style: solid;
border-radius: 20rpx;
width: 190rpx;
height: 190rpx;
}
}
image {
border-width: 2rpx;
border-color: rgb(229, 229, 229);
border-style: solid;
border-radius: 20rpx;
width: 190rpx;
height: 190rpx;
}
}
</style>

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

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