first commit

This commit is contained in:
2026-02-23 16:31:39 +08:00
commit 8dcee4fadd
269 changed files with 45231 additions and 0 deletions

291
pages/addEquip/addEquip.vue Normal file
View File

@@ -0,0 +1,291 @@
<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>