You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
243 lines
6.2 KiB
243 lines
6.2 KiB
<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); |
|
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, |
|
}); |
|
}, |
|
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> |