|
|
|
|
<template>
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
<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";
|
|
|
|
|
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);
|
|
|
|
|
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" });
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
// 预览图片
|
|
|
|
|
previewImage(index) {
|
|
|
|
|
const urls = this.uploader.map((item) => item.imageUrl);
|
|
|
|
|
uni.previewImage({ current: index, urls });
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 删除图片
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
.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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
image {
|
|
|
|
|
border-width: 2rpx;
|
|
|
|
|
border-color: rgb(229, 229, 229);
|
|
|
|
|
border-style: solid;
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
width: 190rpx;
|
|
|
|
|
height: 190rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|