Files
location_point/pages/addEquip/addEquip.vue
2026-02-23 16:31:39 +08:00

292 lines
7.1 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view>
<u-form :model="cameara" ref="uForm">
<u-form-item label-width="150" label="设备编号">
<u-input v-model="cameara.number" disabled='true' />
</u-form-item>
<u-form-item label-width="150" label="设备类型">
<u-input v-model="cameara.type" disabled='true' />
</u-form-item>
<u-field v-model="cameara.remarks" label="备注" placeholder="备注" type="textarea">
</u-field>
<view>
<view class="uploadImages">
<view v-for="(item,index) in imgList" class="imgBox">
<image mode="aspectFit" :src="item.url"></image>
<uni-icons type="trash" size="22" @click="removeImage(index)"></uni-icons>
</view>
<uni-icons type="plusempty" size="48" @click="selectBase64Img"></uni-icons>
</view>
</view>
</u-form>
<u-button v-if="cameara.id!=''" class="btn1" type="primary" @click="updateAction(1)">更新</u-button>
<u-button v-if="cameara.id==''" class="btn1" type="primary" @click="updateAction(2)">新增</u-button>
</view>
</template>
<script>
import config from "../../libs/config/config.js"
const _api = config.api + "/upload"
export default {
data() {
return {
cameara: {
id: "",
camera_name: "",
camera_code: "",
longitude: "",
latitude: "",
images: "",
remarks: "",
type: "",
},
radioList: [{
name: '摄像头',
disabled: false
},
{
name: '消防栓',
disabled: false
},
{
name: '消防炮',
disabled: false
},
{
name: '泡沫栓',
disabled: false
},
{
name: '栓炮一体',
disabled: false
},
{
name: '手动报警器',
disabled: false
},
{
name: '消防器材箱',
disabled: false
}
],
radio: '',
switchVal: false,
action: _api,
fileList: [],
uploadList: [],
camearaDetails: null,
imgList: [],
};
},
onLoad(options) {
if (options.cameara) {
this.cameara = JSON.parse(options.cameara)
uni.setNavigationBarTitle({
title: '编辑'
})
this.getById(this.cameara.id)
}
},
onShow() {
this.cameara = this.$store.state.equip.currentData
if(this.$store.state.equip.currentDataDetails){
if(this.$store.state.equip.currentDataDetails.remarks){
this.cameara.remarks=this.$store.state.equip.currentDataDetails.remarks
}
}
},
methods: {
getImgByDocId(docIdList) {
let _this =this;
docIdList.map((item) => {
_this.$u.post(config.api + '/xfhrshInternet/service/selImageBase64', JSON.stringify({
docId: item.docId,
})).then(res => {
console.log(res)
if(res.code==0){
_this.imgList.push({
url: res.data,
docId: item.docId
})
}
});
})
},
removeImage(index) {
this.imgList=this.imgList.splice(index, 1)
console.log(index)
},
selectBase64Img() {
let _this = this
uni.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], //从相册选择
success: function(res) {
const tempFilePath = res.tempFilePaths[0]
_this.imgUrlToBase64(tempFilePath)
}
});
},
uploadImg() {
uni.chooseImage({
count: 1,
success: (res) => {
console.log(res, '返回临时路径');
const tempFilePath = res.tempFilePaths[0]
this.imgUrlToBase64(tempFilePath)
}
})
},
imgUrlToBase64(url) {
let _this = this;
// #ifdef MP-WEIXIN
uni.getFileSystemManager().readFile({
filePath: url, //选择图片返回的相对路径
encoding: 'base64', //编码格式
success: res => { //成功的回调
console.log(res, '返回结果');
let base64 = 'data:image/png;base64,' + res.data //不加上这串字符,在页面无法显示的哦
console.log(base64)
this.$u.post(config.api + '/xfhrshInternet/service/uploadImage', JSON.stringify({
fileName: uni.$u.guid(20) + '.png',
data: base64
})).then(res => {
console.log()
_this.imgList.push({
url: base64,
docId: res.docId
})
//this.camera_list = res;
});
},
fail: (e) => {
console.log("图片转换失败");
}
})
// #endif
// #ifdef H5
uni.request({
url: url,
method: 'GET',
responseType: 'arraybuffer',
success: ress => {
let base64 = uni.arrayBufferToBase64(ress.data); //把arraybuffer转成base64
base64 = 'data:image/png;base64,' + base64;
console.log(base64, '转换结果')
this.imgURL = base64
},
fail: (e) => {
console.log("图片转换失败");
}
})
// #endif
// #ifdef APP-PLUS
plus.io.resolveLocalFileSystemURL(url, (entry) => {
// 可通过entry对象操作test.html文件
entry.file((file) => {
let fileReader = new plus.io.FileReader();
fileReader.onloadend = (evt) => {
const base64 = evt.target.result.substr(22);
this.imgURL = base64
}
fileReader.readAsDataURL(file);
});
}, (e) => {
alert("Resolve file URL failed: " + e.message);
});
// #endif
},
getById(id) {
this.$u.post(config.api + '/xfhrshInternet/service/selPicture', {
subjectId: id
}).then(res => {
console.log(res)
if (res.status = "success") {
if(res.data.length>0){
this.$store.dispatch('setCurrentEquipDtails', {
data: res.data[0]
})
this.getImgByDocId(res.data[0].docIds)
}
}
//this.camera_list = res;
});
},
// 图片自动上传成功的钩子
onSuccess(data) {
console.log("========================onSuccess")
let files = [];
// 通过filter过滤数组筛选出上传进度为100的文件
files = this.$refs.uUpload.lists.filter(val => {
return val.progress == 100;
})
// 如果不需要进行太多的处理,直接如下即可
files = this.$refs.uUpload.lists;
console.log(files);
this.fileList.push({
url: data.url
});
},
clickAction() {
uni.$emit('updateCamera', {
cameara: this.cameara
})
uni.navigateBack()
},
onRemove(index) {
console.log('图片已被移除', index);
this.fileList.splice(index, 1); // arr.splice(i,n) 删除从i(索引值)开始之后的那个元素。返回值是删除的元素
},
updateAction(index) {
console.log(this.$store.state.equip.currentData)
let _data = {
subjectId: this.$store.state.equip.currentData.id,
remarks: this.cameara.remarks,
docId: []
}
this.imgList.map((item) => {
_data.docId.push(item.docId)
})
_data.docId=JSON.stringify(_data.docId)
this.$store.dispatch('updateEquipDetails', {data: _data})
}
}
};
</script>
<style lang="scss">
.uploadImages {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
}
.imgBox {
width: 200rpx;
height: 200rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
image {
width: 180rpx;
height: 180rpx;
}
}
.u-btn {
margin-top: 40rpx;
}
</style>