<template> <view class="page"> <u-navbar :title="title" :border-bottom="false" :background="bgc" title-color='#000' title-size='36' :title-bold='true' height='45' id="navbar"> </u-navbar> <view class="tit"> 扫描二维码 </view> <view class="iptbox"> <view v-if="title == '添加蜂箱'" class="qrcode" @click="btnqrcode"> <image src="https://api.ccttiot.com/smartmeter/img/static/uy7BNwAMIKwvstqFnRhs" mode=""></image> </view> <view v-else class="qrcode"> <image src="https://api.ccttiot.com/smartmeter/img/static/uy7BNwAMIKwvstqFnRhs" mode=""></image> </view> <input v-if="title == '添加蜂箱'" type="text" class="ips" v-model="sn" placeholder="请扫描蜂箱上的二维码" style="margin-left: 32rpx;" placeholder-class="my-placeholder" /> <input v-else type="text" class="ips" v-model="sn" disabled="true" placeholder="请扫描蜂箱上的二维码" style="margin-left: 32rpx;" placeholder-class="my-placeholder" /> </view> <view class="tit"> 自定义蜂箱名称 </view> <view class="iptbox"> <input type="text" class="ips" v-model="name" placeholder="请输入蜂箱的自定义名称" placeholder-class="my-placeholder" /> </view> <view class="tit"> 所属蜂场 </view> <view class="iptbox" @click="showmiyuan = true"> <input type="text" class="ips" v-model="fc" placeholder="请选择所属蜂场" placeholder-class="my-placeholder" disabled /> <image src="https://api.ccttiot.com/smartmeter/img/static/ugAdKZm5ZHZ4to1cDsNI" mode=""></image> </view> <view class="tit"> 设备ID或视频流地址 </view> <view class="iptbox"> <input type="text" class="ips" v-model="videoStream" placeholder="请输入设备ID或视频流地址" placeholder-class="my-placeholder"/> </view> <view class="btn" @click="btnadd" v-if="title == '添加蜂箱'"> 确认添加 </view> <view class="btn" @click="btnedit" v-else> 确认修改 </view> <view class="btns" @click="btndel" v-if="title != '添加蜂箱'"> 删除蜂场 </view> <!-- 选择蜂场 --> <u-select v-model="showmiyuan" :list="miyuancolumns" title='选择蜂场' @confirm="confirmmy"></u-select> </view> </template> <script> export default { data() { return { bgc: { backgroundColor: " #F4FAF8", }, title: "添加蜂箱", sn: '', name: '', videoStream: '', fc: '', fcid:'', showmiyuan: false, miyuancolumns: [], pagesum: 1, pagesize: 99, beehiveId:'', code:'' } }, onLoad(option) { if(option.tit){ this.title = option.tit this.beehiveId = option.beehiveId this.geteditxq() }else{ this.title = '添加蜂箱' } this.getmiyuancolumns() }, onShow() { }, methods: { btndel() { let that = this; uni.showModal({ title: "提示", content: '确定要删除此蜂箱?请谨慎操作', success: function(res) { if (res.confirm) { that.$u.delete(`/farm/beehive/${that.beehiveId}`).then(res => { if (res.code == 200) { uni.showToast({ title: '删除蜂箱成功', icon: 'success', duration: 1000 }); setTimeout(() => { uni.navigateBack({ delta:2 }); }, 1500); } else { uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }) .catch(error => { console.error('删除蜂场失败:', error); uni.showToast({ title: '删除蜂场失败,请稍后再试', icon: 'none', duration: 2000 }); }); } } }); }, // 修改部分 geteditxq(){ this.$u.get(`/farm/beehive/${this.beehiveId}`).then(res => { if (res.code == 200) { this.sn = res.data.sn this.name = res.data.name this.fc = res.data.apiaryName this.videoStream = res.data.videoStream this.fcid = res.data.apiaryId } }) }, btnedit(){ let data = { beehiveId:this.beehiveId, apiaryId:this.fcid, name:this.name, videoStream:this.videoStream } this.$u.put(`/farm/beehive`,data).then(res => { if (res.code == 200) { uni.showToast({ title: '修改成功', icon: 'success', duration:1000 }) setTimeout(()=>{ uni.navigateBack() },1500) }else{ uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }) } }) }, // 修改结束// 修改结束// 修改结束// 修改结束// 修改结束 btnqrcode(){ uni.scanCode({ onlyFromCamera: true, scanType: ['qrCode'], success: res => { this.sn = res.result }, fail: err => { console.error('扫描失败:', err) uni.showToast({ title: '扫描失败', icon: 'none' }) } }) }, confirmmy(e){ this.fc = e[0].label this.fcid = e[0].value }, getmiyuancolumns() { let data = { pageNum: this.pagesum, pageSize: this.pagesize }; this.$u.get('/farm/apiary/list', data).then((res) => { if (res.code === 200) { this.miyuancolumns = res.rows.map(item => ({ value: item.apiaryId, label: item.name })) } else { // uni.showToast({ // title: res.msg, // icon: 'none', // duration: 2000 // }) } }) }, btnadd() { let data = { sn:this.sn, name:this.name, apiaryId:this.fcid, videoStream:this.videoStream } this.$u.put('farm/beehive/bind', data).then(res => { if (res.code == 200) { uni.showToast({ title: res.msg, icon: 'success', duration: 1000 }) setTimeout(()=>{ uni.navigateBack() },1500) }else if(res.code == 401){ uni.navigateTo({ url:'/pages/login/login' }) } else { uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }) } }) } // addApiary(){ // uni.navigateTo({ // url:'/pages/Apiary/AddApiary' // }) // } } } </script> <style lang="scss"> page { background-color: #F4FAF8; } .page { // position: relative; width: 750rpx; .tit { margin-top: 40rpx; margin-left: 50rpx; font-weight: 600; font-size: 32rpx; color: #3D3D3D; } .imgbox { margin-top: 28rpx; margin-left: 46rpx; image { width: 412rpx; height: 222rpx; } } .btns { display: flex; align-items: center; justify-content: center; margin: auto; margin-top: 50rpx; width: 658rpx; height: 88rpx; background: #D8D8D8; border-radius: 20rpx 20rpx 20rpx 20rpx; font-weight: 500; font-size: 32rpx; color: #808080; } .btn { margin: 160rpx auto; margin-bottom: 0; // position: fixed; display: flex; align-items: center; justify-content: center; // bottom: 100rpx; // left: 46rpx; width: 658rpx; height: 88rpx; background: #FFCC25; border-radius: 20rpx 20rpx 20rpx 20rpx; font-weight: 500; font-size: 32rpx; color: #FFFFFF; } .iptbox { display: flex; align-items: center; flex-wrap: nowrap; padding: 22rpx; margin: 28rpx auto 0; width: 658rpx; height: 88rpx; background: #FFFFFF; box-shadow: 0rpx 0rpx 8rpx 0rpx rgba(0, 0, 0, 0.15); border-radius: 20rpx 20rpx 20rpx 20rpx; .qrcode { padding-right: 20rpx; border-right: 2rpx solid #D8D8D8; image { width: 54rpx; height: 54rpx; } } .ips { width: 630rpx; } image { width: 18rpx; height: 32rpx; } .my-placeholder { font-weight: 400; font-size: 32rpx; color: #808080; } } } </style>