kaiguan-zfb/pages/daili/dailibing.vue

813 lines
18 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 class="page">
<u-navbar title="代理设置" :border-bottom="false" :background="bgc" back-icon-color="000" title-color='#000' title-size='36'
height='50'></u-navbar>
<view class="card">
<view class="icon">
<view class="tit">
设备主图
</view>
<view class="imgbox" v-if="userImgs">
<view style="border: 0;outline: none;width: 143rpx;padding-left: 0rpx;height: 143rpx;border-radius: 16rpx;margin: auto;" @click="getImage">
<image style="border-radius: 10rpx;" :src="userImgs" mode="aspectFit"></image>
</view>
</view>
<view class="imgbox" v-else>
<view style="border: 0;outline: none;width: 143rpx;padding-left: 0rpx;height: 143rpx;border-radius: 16rpx;margin: auto;" @click="getImage">
<image src="https://api.ccttiot.com/smartmeter/img/static/uY8CPw9YE6JxPzcHUaqf" mode="aspectFit"></image>
</view>
</view>
<!-- 截图 -->
<ksp-cropper mode="free" :width="142" :height="142" :maxWidth="1024" :maxHeight="1024" :url="url"
@cancel="oncancel" @ok="onok"></ksp-cropper>
</view>
<view class="li" @click.stop="sremakemc()">
<view class="tit">
服务费费率
</view>
<view class="info">
<view class="txt">
{{listobj.agentServiceRate == undefined ? '--' : listobj.agentServiceRate + '%'}}
</view>
<view class="iconfont icon-xiangyou1"></view>
</view>
</view>
<!-- <view class="li" @click.stop="sremake()">
<view class="tit">
备注(代理)
</view>
<view class="info">
<view class="txt">
{{remake == null ? '' : remake}}
</view>
<view class="iconfont icon-xiangyou1"></view>
</view>
</view> -->
<!-- @click.stop="sremakes()" -->
<view class="li">
<view class="tit">
所属商户
</view>
<view class="info">
<view class="txt">
{{listobj.userName == null ? '' : listobj.userName}}
</view>
<!-- <view class="iconfont icon-xiangyou1"></view> -->
</view>
</view>
<view class="li">
<view class="tit">
S/N
</view>
<view class="info">
<view class="txt">
{{listobj.deviceNo == null ? '' : listobj.deviceNo}}
</view>
</view>
</view>
<view class="li">
<view class="tit">
类型
</view>
<view class="info">
<view class="txt">
{{listobj.model == null ? '' : listobj.model}}
</view>
</view>
</view>
<view class="li" v-if="modelId.some(tag => tag == 2)" style="border-bottom: 0;">
<view class="tit">
WiFi名称
</view>
<view class="info">
<view class="txt">
{{listobj.wifi == null || listobj.wifi == '创特物联TP' ? '--' : listobj.wifi}}
</view>
</view>
</view>
<view class="lis" @click="deldevice()">
解除绑定
</view>
</view>
<u-mask :show="showloading"></u-mask>
<u-mask :show="showfz"></u-mask>
<view class="fz" v-show="showfz">
<view class="fz_top">
<view class="iconfont icon-shanchu" @click="showfz=false">
</view>
<view class="tit">
设备分组
</view>
<view class="txt" @click="tosetpage()">
管理
</view>
</view>
<view class="card_cont">
<view class="cards" v-for="(item,index) in groupList" :key="index" @click="changeGp(item)">
<view class="txt">
{{item.groupName}}
</view>
<view class="num">
{{item.deviceCount}}
</view>
</view>
<view class="zhanwei" style="width: 100%;height: 100rpx;">
</view>
</view>
</view>
<view class="dd">
<u-select v-model="show" :list="list" title='欠费断电' @confirm="confirm"></u-select>
</view>
<u-popup v-model="showpopup" mode="center" border-radius='20'>
<view class="popcard" v-if="showremake">
<view class="tit">
修改备注
</view>
<view class="ipt">
<u-input v-model="remake" placeholder=" " border='surround' placeholder-style='font-size: 24rpx;' />
</view>
<view class="btnbox">
<view class="btn2" @click="close()">
取消
</view>
<view class="btn1" @click="sub(1)">
确定
</view>
</view>
</view>
<view class="popcard" v-if="showpeice">
<view class="tit">
修改备注
</view>
<view class="ipt">
<u-input v-model="price" placeholder=" " border='surround' placeholder-style='font-size: 24rpx;' />
</view>
<view class="btnbox">
<view class="btn2" @click="close()">
取消
</view>
<view class="btn1" @click="sub(2)">
确定
</view>
</view>
</view>
</u-popup>
<u-popup v-model="showmc" mode="center" border-radius='20'>
<view class="popcard" v-if="showmc">
<view class="tit">
修改服务费费率
</view>
<view class="ipt">
<u-input v-model="xgname" placeholder=" " border='surround' placeholder-style='font-size: 24rpx;' />
</view>
<view class="btnbox">
<view class="btn2" @click="close()">
取消
</view>
<view class="btn1" @click="sub(3)">
确定
</view>
</view>
</view>
</u-popup>
<!-- 选择店铺 -->
<u-select v-model="showshop" :list="wateringList" @confirm="confirms"></u-select>
<view v-if="btnmsk" style="width: 100%;height: 100vh;position: fixed;top: 0;left: 0;background-color: #000;opacity: .1;z-index: 999;"></view>
</view>
</template>
<script>
export default {
data() {
return {
btnmsk:false,
bgc: {
backgroundColor: "#fff",
},
showloading: false,
showfz: false,
show: false,
showshop: false,
list: [{
value: '1',
label: '欠费立即断电'
},
{
value: '0',
label: '欠费不断电'
}
],
id: '',
xgname:'',
deviceInfo: {},
groupList: {},
showpopup: false,
remake: '',
price: '',
showpeice: false,
showremake: false,
listobj: {
deviceName:'',
storeName:'',
deviceNo:'',
model:'',
wifi:'',
},
showmc:false,
pagenum: 1,
wateringList: [],
pagesize: 10,
isLoading: false,
noMoreData: false,
total: 0,
userImgs:'',
url:'',
token:'',
modelId:''
}
},
onLoad(option) {
let id = option.id
this.id = id
this.getshua()
this.getQiniuToken()
this.getDevice(id)
this.getlistobj(id)
this.gettanc()
},
// 分享到好友(会话)
onShareAppMessage: function () {
return {
title: '创想物联',
path: '/pages/shouye/index'
}
},
// 分享到朋友圈
onShareTimeline: function () {
return {
title: '创想物联',
query: '',
path: '/pages/shouye/index'
}
},
onShow() {
this.getgroup()
},
methods: {
getshua(){
this.$u.get(`/app/device/${this.id}/refreshIot`).then((res) => {})
},
getQiniuToken() {
this.$u.get("/common/qiniu/uploadInfo").then((res) => {
if (res.code == 200) {
this.token = res.token
}
})
},
getImage() {
uni.chooseImage({
count: 1,
success: (rst) => {
this.url = rst.tempFilePaths[0];
}
})
},
onok(ev) {
this.url = "";
this.path = ev.path;
let _this = this
let math = 'static/' + _this.$u.guid(20)
wx.uploadFile({
url: 'https://up-z2.qiniup.com',
name: 'file',
filePath: _this.path,
formData: {
token: _this.token, //后端返回的token
key: 'smartmeter/img/' + math
},
success: function(res) {
let str = JSON.parse(res.data)
_this.userImgs = 'https://api.ccttiot.com/' + str.key
let data = {
deviceId:_this.id,
customPicture:_this.userImgs
}
_this.$u.put('/app/device', data).then((res) => {
if (res.code == 200) {
// this.getDevice()
uni.showToast({
title: '操作成功',
icon: 'success',
duration: 2000
})
}
})
}
})
},
oncancel() {
// url设置为空隐藏控件
this.url = ""
},
sremakes() {
this.showshop = true
},
confirms(e){
let data = {
deviceId: this.id,
storeId:e[0].value
}
this.putdevice(data)
setTimeout(()=>{
this.getlistobj(this.id)
},1000)
},
gettanc(){
// this.$u.get('/app/store/listCount').then((res) => {
// if (res.code == 200) {
// this.total = res.total
// if (res.data.length > 0) {
// // 有数据,追加到列表
// let arr = res.data.map(row => ({
// value: row.storeId, // 将storeId赋值给value
// label: row.name // 将name赋值给label
// }));
// this.wateringList = this.wateringList.concat(arr)
// this.wateringList = this.wateringList.slice(1)
// this.pagenum++
// console.log(this.wateringList);
// } else {
// // 没有更多数据
// this.noMoreData = true;
// }
// this.isLoading = false;
// }
// })
},
onReachBottom() {
let sum = this.total / this.pagesize
if (this.pagenum - 1 < sum) {
this.getlist() // 上拉加载更多
} else {
uni.showToast({
title: '没有更多订单记录了',
icon: 'none',
duration: 1000
})
}
},
changeGp(item) {
let data = {
deviceId: this.id,
groupId: item.groupId
}
this.putdevice(data)
this.showfz = false
setTimeout(() => {
this.getgroup()
}, 1000)
},
tosetpage() {
this.showfz = false
uni.navigateTo({
url: '/page_user/fenzu'
})
},
sub(num) {
if (num == 1) {
console.log(this.remake)
let data = {
deviceId: this.id,
remark: this.remake
}
this.showpopup = false
this.showremake = false
this.putdevice(data)
} else if (num == 2) {
let data = {
deviceId: this.id,
price: this.price,
}
this.showpopup = false
this.showpeice = false
this.showmc = false
this.putdevice(data)
}else if(num == 3){
let data = {
deviceId: this.id,
agentServiceRate: this.xgname,
}
this.showpopup = false
this.showpeice = false
this.showmc = false
this.putdevice(data)
setTimeout(()=>{
this.getlistobj(this.id)
},1000)
}
},
deldevice() {
uni.showModal({
title: '确认解绑',
content: '您确定要解绑设备吗?',
success: (resModal) => {
if (resModal.confirm) {
this.btnmsk = true
this.$u.delete(`/app/device/mch/unbind/${this.id}`).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '解除成功',
icon: 'success',
duration: 2000
})
this.btnmsk = false
uni.navigateBack({
delta: 2 // 返回上级页面
})
} else if(res.code == 500){
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
this.btnmsk = false
}
}).catch((error) => {
// 请求失败的处理逻辑
uni.showToast({
title: '请求失败',
icon: 'none',
duration: 2000
})
this.btnmsk = false
})
} else if (resModal.cancel) { // 用户点击了取消按钮
uni.showToast({
title: '已取消',
icon: 'none',
duration: 1000
})
}
}
});
},
confirm(e) {
let data = {
deviceId: this.id,
outageWay: e[0].value
}
this.putdevice(data)
},
putdevice(data) {
this.$u.put('/agent/device', data).then((res) => {
if (res.code == 200) {
this.getDevice()
uni.showToast({
title: '修改成功',
icon: 'success',
duration: 2000
})
}
})
},
sremakemc(){
// console.log(1);
this.showmc = true
this.xgname = this.listobj.agentServiceRate
},
sremake() {
this.showpopup = true
this.showremake = true
},
sprice() {
this.showpopup = true
this.showpeice = true
},
close() {
this.showpeice = false
this.showremake = false
this.showpopup = false
this.showmc = false
},
getDevice(id) {
this.$u.get("/app/device/" + this.id).then((res) => {
if (res.code == 200) {
this.deviceInfo = res.data
console.log(this.deviceInfo, 'resres');
this.price = this.deviceInfo.price
this.remake = this.deviceInfo.remark
if(this.deviceInfo.customPicture == null){
this.userImgs = this.deviceInfo.picture
}else{
this.userImgs = this.deviceInfo.customPicture
}
// this.loadings=true
// this.initChart()
}
})
},
getgroup() {
// this.$u.get("/app/store/listCount").then((res) => {
// // this.$forceUpdate()
// if (res.code == 200) {
// this.groupList = res.data
// // this.loadings=true
// // this.initChart()
// }
// });
},
getlistobj(id) {
this.$u.get("/app/device/" + id).then((res) => {
if (res.code == 200) {
this.listobj = res.data
this.modelId = res.data.modelTags
}
})
}
}
}
</script>
<style lang="scss">
/deep/ .u-flex{
padding-top: 20rpx !important;
box-sizing: border-box;
}
/deep/ .u-title{
padding-bottom: 22rpx;
}
/deep/ .u-icon__icon{
padding-bottom: 22rpx;
}
page {
background-color: #F7FAFE;
}
.lis{
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 230rpx;
width: 632rpx;
height: 90rpx;
background-color: #8883f0;
text-align: center;
line-height: 90rpx;
font-size: 36rpx;
color: #fff;
border-radius: 50rpx;
}
.page {
width: 750rpx;
.popcard {
display: flex;
justify-content: center;
flex-wrap: wrap;
width: 550rpx;
height: 400rpx;
border-radius: 20rpx;
.tit {
display: flex;
justify-content: center;
width: 100%;
align-items: center;
font-size: 28rpx;
font-weight: 700;
}
.ipt {
margin-top: 60rpx;
width: 80%;
.u-input::placeholder {
font-size: 20px;
color: red;
}
}
.btnbox {
width: 100%;
display: flex;
flex-wrap: nowrap;
border-radius: 0 0 20rpx 20rpx;
.btn2 {
display: flex;
align-items: center;
justify-content: center;
width: 50%;
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #000;
background-color: #fff;
}
.btn1 {
display: flex;
align-items: center;
justify-content: center;
width: 50%;
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #fff;
background-color: #8883f0;
border: 1rpx solid #ccc;
}
}
}
.card {
padding: 16rpx 38rpx;
margin: 60rpx auto 0;
width: 654rpx;
background: #FFFFFF;
border-radius: 30rpx;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
opacity: 1;
.li {
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: space-between;
height: 94rpx;
border-bottom: #E5E5E5 solid 2rpx;
.tit {
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #000000;
}
.info {
display: flex;
flex-wrap: nowrap;
align-items: center;
.txt {
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #95989D;
}
.icon-xiangyou1 {
margin-left: 6rpx;
color: #95989D;
}
}
}
}
.btn {
display: flex;
align-items: center;
justify-content: center;
margin: 52rpx auto 0;
width: 654rpx;
height: 100rpx;
background: #FF4F4F;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
opacity: 1;
border-radius: 30rpx;
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #FFFFFF;
}
.fz {
position: fixed;
bottom: 0;
width: 750rpx;
height: 1152rpx;
background: #F7FAFE;
border-radius: 30rpx 30rpx 0 0;
z-index: 10071;
.fz_top {
margin: 18rpx 0 auto;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
.icon-shanchu {
margin-left: 40rpx;
font-size: 50rpx;
}
.tit {
font-size: 36rpx;
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #000000;
}
.txt {
margin-right: 40rpx;
font-size: 36rpx;
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #2A82E4;
}
}
.card_cont {
width: 750rpx;
display: flex;
flex-wrap: wrap;
align-items: baseline;
justify-content: center;
height: 1030rpx;
overflow-y: auto;
overflow-x: hidden;
.cards {
margin-top: 32rpx;
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: space-between;
padding: 0 40rpx;
width: 682rpx;
border-radius: 30rpx;
height: 114rpx;
background: #FFFFFF;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
.txt {
font-size: 36rpx;
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #000000;
}
.num {
font-size: 36rpx;
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #000000;
}
}
}
}
}
.icon {
.tit{
padding-top: 50rpx;
box-sizing: border-box;
font-size: 32rpx;
}
margin-top: 40rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
.imgbox {
margin-left: 300rpx;
image {
width: 142rpx;
height: 142rpx;
}
}
}
/deep/ .panel{
position: fixed;
width: 100%;
height: 100%;
top: 0;
bottom: 0;
left: 0;
z-index: 99 !important;
overflow: hidden;
}
</style>