diff --git a/src/api/system/device.js b/src/api/system/device.js index 8285caf..17e49ab 100644 --- a/src/api/system/device.js +++ b/src/api/system/device.js @@ -195,3 +195,11 @@ export function deviceSetWifi(data) { data }) } + +// 初始化总用电量 +export function deviceInitTotalEle(deviceId) { + return request({ + url: `/system/device/${deviceId}/initTotalEle`, + method: 'put' + }) +} diff --git a/src/api/system/smUser.js b/src/api/system/smUser.js index 86ee5c1..a0876ac 100644 --- a/src/api/system/smUser.js +++ b/src/api/system/smUser.js @@ -59,3 +59,11 @@ export function resetSmUserService(userId) { method: 'put' }) } + +// 重置用户实名认证 +export function resetSmUserRealName(userId) { + return request({ + url: `/system/smUser/${userId}/resetRealName`, + method: 'put' + }) +} diff --git a/src/views/system/device/detail.vue b/src/views/system/device/detail.vue index a27b73a..bb543a7 100644 --- a/src/views/system/device/detail.vue +++ b/src/views/system/device/detail.vue @@ -98,7 +98,7 @@ <dict-tag :options="dict.type.sm_device_online_status" :value="deviceData.onlineStatus" size="mini"/> </el-descriptions-item> <el-descriptions-item label="最后在线时间"> - {{deviceData.lastOnlineStatus | defaultValue}} + {{deviceData.lastOnlineTime | defaultValue}} </el-descriptions-item> <el-descriptions-item label="版本号"> {{deviceData.version | defaultValue}} @@ -110,17 +110,28 @@ <el-descriptions-item label="开关状态"> <el-tag :type="isOpen ? 'success' : 'danger'" size="mini">{{isOpen ? '已开启' : '已关闭'}}</el-tag> </el-descriptions-item> - <el-descriptions-item label="电压">{{deviceData.voltage | money | defaultValue }} V</el-descriptions-item> - <el-descriptions-item label="电流">{{deviceData.electricity | money | defaultValue }} A</el-descriptions-item> - <el-descriptions-item label="功率">{{deviceData.realTimePower | money | defaultValue }} W</el-descriptions-item> +<!-- <el-descriptions-item label="电压">{{deviceData.voltage | money | defaultValue }} V</el-descriptions-item>--> +<!-- <el-descriptions-item label="电流">{{deviceData.electricity | money | defaultValue }} A</el-descriptions-item>--> +<!-- <el-descriptions-item label="功率">{{deviceData.realTimePower | money | defaultValue }} W</el-descriptions-item>--> <el-descriptions-item label="总用电量"> {{deviceData.totalElectriQuantity | money | defaultValue}} 度 </el-descriptions-item> - <el-descriptions-item label="剩余时长">{{surplusTimeDesc(surplusTime).text}}</el-descriptions-item> - <el-descriptions-item label="剩余时长/电量" :span="2"> - {{surplusTimeDesc(deviceData.remainTime).text}} / {{deviceData.surplusEle | defaultValue}} 度 - <span class="remark-text">最近更新时间:{{deviceData.lastPullTime}}</span> + <el-descriptions-item label="电量读数"> + {{deviceData.totalElectriQuantity - deviceData.initReading | money | defaultValue}} 度 + <el-link @click="handleInitReading" type="primary" icon="el-icon-refresh" style="margin-left: 0.5em">重置</el-link> </el-descriptions-item> + <el-descriptions-item label="最近重置读数时间"> + {{deviceData.lastInitReading | defaultValue}} + </el-descriptions-item> +<!-- <el-descriptions-item label="剩余时长">--> +<!-- 数据库:{{surplusTimeDesc(surplusTime).text}} / 设备:{{surplusTimeDesc(deviceData.remainTime).text}}--> +<!-- </el-descriptions-item>--> +<!-- <el-descriptions-item label="剩余电量">--> +<!-- {{deviceData.surplusEle | defaultValue}} 度--> +<!-- </el-descriptions-item>--> +<!-- <el-descriptions-item label="最近更新时间">--> +<!-- {{deviceData.lastPullTime | defaultValue }}--> +<!-- </el-descriptions-item>--> </el-descriptions> </el-card> </el-col> @@ -136,6 +147,39 @@ <template>{{bonus.point | money | defaultValue }} %</template> </line-field> </el-card> + + <el-card class="box-card"> + <template #header> + <el-row type="flex" style="justify-content: space-between;align-items: center"> + <div>实时信息</div> + <div>{{deviceData.lastPullTime | defaultValue}}</div> + </el-row> + </template> + <el-row> + <el-col :span="8"> + <el-statistic style="margin-bottom: 8px" title="时长(数据库)"> + <template #formatter>{{surplusTimeDesc(surplusTime).text}}</template> + </el-statistic> + </el-col> + <el-col :span="8"> + <el-statistic style="margin-bottom: 8px" title="时长(设备)"> + <template #formatter>{{surplusTimeDesc(deviceData.remainTime).text}}</template> + </el-statistic> + </el-col> + <el-col :span="8"> + <el-statistic style="margin-bottom: 8px" title="电量" :value="deviceData.surplusEle" :precision="2" suffix="度"/> + </el-col> + <el-col :span="8"> + <el-statistic style="margin-bottom: 8px" title="电压" :value="deviceData.voltage" :precision="2" suffix="V"/> + </el-col> + <el-col :span="8"> + <el-statistic style="margin-bottom: 8px" title="电流" :value="deviceData.electricity" :precision="2" suffix="A"/> + </el-col> + <el-col :span="8"> + <el-statistic style="margin-bottom: 8px" title="功率" :value="deviceData.realTimePower" :precision="2" suffix="W"/> + </el-col> + </el-row> + </el-card> </el-col> </el-row> @@ -198,7 +242,7 @@ import { addEle, - addTime, + addTime, deviceInitTotalEle, getDevice, refreshIot, resetDevice, @@ -323,6 +367,20 @@ export default { clearInterval(this.timer); }, methods: { + handleInitReading() { + this.$confirm(`是否初始化电量读数?`, { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + deviceInitTotalEle(this.deviceData.deviceId).then(res => { + if (res.code === 200) { + this.$message.success("操作成功"); + this.getDevice(); + } + }) + }) + }, onSetWifiSuccess(data) { this.deviceData.wifi = data.wifiName; }, diff --git a/src/views/system/smUser/detail.vue b/src/views/system/smUser/detail.vue index 823bdbf..654fc0f 100644 --- a/src/views/system/smUser/detail.vue +++ b/src/views/system/smUser/detail.vue @@ -48,20 +48,16 @@ {{detail.withdrawServiceRate}} {{serviceUnit(detail.withdrawServiceType)}} </template> </el-descriptions-item> -<!-- <el-descriptions-item label="限制提现">--> -<!-- <boolean-tag :value="detail.limitWithdraw" size="small" true-type="danger" false-type="success"/>--> -<!-- </el-descriptions-item>--> -<!-- <el-descriptions-item label="限制提现原因" :span="2">--> -<!-- {{detail.limitWithdrawReason | defaultValue}}--> -<!-- </el-descriptions-item>--> -<!-- <el-descriptions-item label="限制退款">--> -<!-- <boolean-tag :value="detail.limitRefund" size="small" true-type="danger" false-type="success"/>--> -<!-- </el-descriptions-item>--> -<!-- <el-descriptions-item label="限制退款原因" :span="2">--> -<!-- {{detail.limitRefundReason | defaultValue}}--> -<!-- </el-descriptions-item>--> <el-descriptions-item label="实名认证"> <boolean-tag :value="detail.isReal" size="small"/> + <el-link + v-if="detail.isReal" + style="margin-left: 4px;" + type="primary" + size="small" + icon="el-icon-link" + @click="handleResetRealName" + >解除实名</el-link> </el-descriptions-item> <el-descriptions-item label="姓名"> {{detail.realName | defaultValue}} @@ -157,7 +153,7 @@ <script> import LineChart from "@/views/dashboard/LineChart.vue"; -import {getSmUser} from "@/api/system/smUser"; +import { getSmUser, resetSmUserRealName } from '@/api/system/smUser' import UserDevice from "@/views/system/smUser/components/userDevice.vue"; import UserAccount from "@/views/system/smUser/components/userAccount.vue"; import UserRechargeReport from "@/views/system/smUser/components/userRechargeReport.vue"; @@ -184,32 +180,45 @@ import BindRecord from '@/views/system/bindRecord/index.vue' export default { name: 'User/:userId', mixins: [$view, $serviceType], - components: { BindRecord, RiskInfo, Bonus, UserDailyRechargeReport, Risk, ReceiveBill, UserConfigDialog, RealName, Withdraw, BooleanTag, Recharge, Device, Suit, Account, RecordBalance, Store, Access, UserRechargeReport, UserAccount, UserDevice, LineChart}, dicts: ['sm_user_type', 'service_type', 'withdraw_service_type'], + components: { BindRecord, RiskInfo, Bonus, UserDailyRechargeReport, Risk, ReceiveBill, UserConfigDialog, RealName, Withdraw, BooleanTag, Recharge, Device, Suit, Account, RecordBalance, Store, Access, UserRechargeReport, UserAccount, UserDevice, LineChart}, + data() { + return { + BonusArrivalType, + SmUserType, + detail: {}, + loading: false, + showConfigDialog: false, + } + }, computed: { - BonusArrivalType() { - return BonusArrivalType - }, - SmUserType() { - return SmUserType - }, serviceUnit() { return (type) => { return type === '2' ? '元' : '%'; } } }, - data() { - return { - detail: {}, - loading: false, - showConfigDialog: false, - } - }, created() { this.getDetail(); }, methods: { + handleResetRealName() { + this.$confirm(`确认重置用户的实名认证信息?`, { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.loading = true; + resetSmUserRealName(this.detail.userId).then(res => { + if (res.code === 200) { + this.$message.success("解除成功") + this.getDetail(); + } + }).catch((e) => { + this.loading = false; + }) + }) + }, getDetail() { this.loading = true; getSmUser(this.$route.params.userId).then(response => {