优化
This commit is contained in:
parent
4532ffb78d
commit
5a47e4bcb2
|
@ -84,7 +84,16 @@ export const SuitFeeType = {
|
||||||
TIMING: "1", // 计时收费
|
TIMING: "1", // 计时收费
|
||||||
COUNT: "2", // 按量收费
|
COUNT: "2", // 按量收费
|
||||||
TIME_COUNT: "3", // 分时段按量收费
|
TIME_COUNT: "3", // 分时段按量收费
|
||||||
TIME_TIMING: "4" // 分时段按时收费
|
TIME_TIMING: "4", // 分时段按时收费
|
||||||
|
|
||||||
|
// 时长列表
|
||||||
|
timeList() {
|
||||||
|
return [this.TIMING, this.TIME_TIMING];
|
||||||
|
},
|
||||||
|
// 电量列表
|
||||||
|
eleList() {
|
||||||
|
return [this.COUNT, this.TIME_COUNT];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -165,3 +174,18 @@ export const DeviceServiceMode = {
|
||||||
DIRECT: "1", // 直营模式
|
DIRECT: "1", // 直营模式
|
||||||
AGENT: "2" // 代理模式
|
AGENT: "2" // 代理模式
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 分成方类型
|
||||||
|
export const BonusArrivalType = {
|
||||||
|
PLATFORM: "1", // 平台
|
||||||
|
AGENT: "2", // 代理商
|
||||||
|
MCH: "3", // 商户
|
||||||
|
// 用户表
|
||||||
|
userList() {
|
||||||
|
return [this.AGENT, this.MCH]
|
||||||
|
},
|
||||||
|
// 部门表
|
||||||
|
deptList() {
|
||||||
|
return [this.PLATFORM]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -152,6 +152,7 @@ export default {
|
||||||
modelCount: 0,
|
modelCount: 0,
|
||||||
userCount: 0,
|
userCount: 0,
|
||||||
tenantCount: 0,
|
tenantCount: 0,
|
||||||
|
agentCount: 0,
|
||||||
history: [],
|
history: [],
|
||||||
},
|
},
|
||||||
queryParams: {},
|
queryParams: {},
|
||||||
|
@ -197,7 +198,8 @@ export default {
|
||||||
}
|
}
|
||||||
return [
|
return [
|
||||||
{value: this.briefData.userCount, name: "商户"},
|
{value: this.briefData.userCount, name: "商户"},
|
||||||
{value: this.briefData.tenantCount, name: "用户"}
|
{value: this.briefData.tenantCount, name: "用户"},
|
||||||
|
{value: this.briefData.agentCount, name: "代理商"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// 用户差值
|
// 用户差值
|
||||||
|
@ -206,9 +208,9 @@ export default {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (this.yesterdayData == null) {
|
if (this.yesterdayData == null) {
|
||||||
return this.briefData.userCount + this.briefData.tenantCount;
|
return this.briefData.userCount + this.briefData.tenantCount + this.briefData.agentCount;
|
||||||
}
|
}
|
||||||
return this.briefData.userCount + this.briefData.tenantCount - this.yesterdayData.totalUser;
|
return this.briefData.userCount + this.briefData.tenantCount + this.briefData.agentCount - this.yesterdayData.totalUser;
|
||||||
},
|
},
|
||||||
// 余额差值
|
// 余额差值
|
||||||
compareBalance() {
|
compareBalance() {
|
||||||
|
|
|
@ -76,7 +76,8 @@ export default {
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
color: [
|
color: [
|
||||||
'#8D4EDA',
|
'#8D4EDA',
|
||||||
'#00B2FF'
|
'#00B2FF',
|
||||||
|
'#fa6247'
|
||||||
],
|
],
|
||||||
radius: ['30%', '50%'],
|
radius: ['30%', '50%'],
|
||||||
avoidLabelOverlap: false,
|
avoidLabelOverlap: false,
|
||||||
|
|
|
@ -96,6 +96,10 @@
|
||||||
<template v-else-if="column.key === 'refundAmount'">
|
<template v-else-if="column.key === 'refundAmount'">
|
||||||
<span style="color: red">{{d.row.refundAmount | money | defaultValue}} 元</span>
|
<span style="color: red">{{d.row.refundAmount | money | defaultValue}} 元</span>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-else-if="column.key === 'arrivalName'">
|
||||||
|
<user-link v-if="BonusArrivalType.userList().includes(d.row.arrivalType)" :id="d.row.arrivalId" :name="d.row.arrivalName"/>
|
||||||
|
<template v-else> {{d.row.arrivalName | defaultValue}}</template>
|
||||||
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
{{d.row[column.key] | defaultValue}}
|
{{d.row[column.key] | defaultValue}}
|
||||||
</template>
|
</template>
|
||||||
|
@ -193,7 +197,8 @@
|
||||||
<script>
|
<script>
|
||||||
import { listBonus, getBonus, delBonus, addBonus, updateBonus } from "@/api/ss/bonus";
|
import { listBonus, getBonus, delBonus, addBonus, updateBonus } from "@/api/ss/bonus";
|
||||||
import { $showColumns, $view } from '@/utils/mixins'
|
import { $showColumns, $view } from '@/utils/mixins'
|
||||||
import { views } from '@/utils/constants'
|
import { BonusArrivalType, SmUserType, views } from '@/utils/constants'
|
||||||
|
import UserLink from '@/components/Business/SmUser/UserLink.vue'
|
||||||
|
|
||||||
// 默认排序字段
|
// 默认排序字段
|
||||||
const defaultSort = {
|
const defaultSort = {
|
||||||
|
@ -203,6 +208,15 @@ const defaultSort = {
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Bonus",
|
name: "Bonus",
|
||||||
|
computed: {
|
||||||
|
BonusArrivalType() {
|
||||||
|
return BonusArrivalType
|
||||||
|
},
|
||||||
|
SmUserType() {
|
||||||
|
return SmUserType
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: { UserLink },
|
||||||
mixins: [$showColumns, $view],
|
mixins: [$showColumns, $view],
|
||||||
dicts: ['bonus_status', 'bonus_arrival_type'],
|
dicts: ['bonus_status', 'bonus_arrival_type'],
|
||||||
props: {
|
props: {
|
||||||
|
@ -220,8 +234,8 @@ export default {
|
||||||
{key: 'id', visible: true, label: '分成编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
|
{key: 'id', visible: true, label: '分成编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
|
||||||
{key: 'billNo', visible: true, label: '订单编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: "180"},
|
{key: 'billNo', visible: true, label: '订单编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: "180"},
|
||||||
{key: 'status', visible: true, label: '状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
{key: 'status', visible: true, label: '状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||||
{key: 'arrivalName', visible: true, label: '收款名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
{key: 'arrivalName', visible: true, label: '收款方', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||||
{key: 'arrivalType', visible: true, label: '收款类型', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
{key: 'arrivalType', visible: true, label: '类型', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||||
{key: 'point', visible: true, label: '分成比例', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
{key: 'point', visible: true, label: '分成比例', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||||
{key: 'amount', visible: true, label: '总金额', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
{key: 'amount', visible: true, label: '总金额', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||||
{key: 'waitAmount', visible: true, label: '待分金额', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
{key: 'waitAmount', visible: true, label: '待分金额', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||||
|
@ -255,7 +269,7 @@ export default {
|
||||||
// 查询参数
|
// 查询参数
|
||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 20,
|
||||||
orderByColumn: defaultSort.prop,
|
orderByColumn: defaultSort.prop,
|
||||||
isAsc: defaultSort.order,
|
isAsc: defaultSort.order,
|
||||||
id: null,
|
id: null,
|
||||||
|
|
|
@ -127,10 +127,15 @@ import StoreApply from '@/views/ss/storeApply/index.vue'
|
||||||
import { views } from '@/utils/constants'
|
import { views } from '@/utils/constants'
|
||||||
import Device from '@/views/system/device/index.vue'
|
import Device from '@/views/system/device/index.vue'
|
||||||
import Recharge from '@/views/system/recharge/index.vue'
|
import Recharge from '@/views/system/recharge/index.vue'
|
||||||
|
import { isEmpty } from '@/utils'
|
||||||
|
import deviceData from 'svg-sprite-loader/examples/custom-runtime-generator/build/main'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'storeDetail',
|
name: 'storeDetail',
|
||||||
computed: {
|
computed: {
|
||||||
|
deviceData() {
|
||||||
|
return deviceData
|
||||||
|
},
|
||||||
views() {
|
views() {
|
||||||
return views
|
return views
|
||||||
}
|
}
|
||||||
|
@ -151,6 +156,7 @@ export default {
|
||||||
clearInterval(this.timer);
|
clearInterval(this.timer);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
isEmpty,
|
||||||
getDetail() {
|
getDetail() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
getStore(this.$route.query.storeId).then(res => {
|
getStore(this.$route.query.storeId).then(res => {
|
||||||
|
|
|
@ -1,115 +1,113 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container" v-loading="loading" >
|
<div class="app-container" v-loading="loading" >
|
||||||
<div v-if="deviceData">
|
<div v-if="deviceData">
|
||||||
<el-card class="box-card" >
|
<el-row :gutter="16">
|
||||||
<el-descriptions title="设备信息" :column="4">
|
<el-col :lg="18" :xs="24">
|
||||||
<template slot="extra">
|
<el-card class="box-card" >
|
||||||
<el-dropdown style="margin-right: 1em">
|
<el-descriptions title="设备信息" :column="4">
|
||||||
<el-button>
|
<template slot="extra">
|
||||||
更多操作<i class="el-icon-arrow-down el-icon--right"></i>
|
<el-button size="small" plain icon="el-icon-plus" @click="handleAddElectricity">增加时长</el-button>
|
||||||
</el-button>
|
<el-button size="small" plain icon="el-icon-refresh" @click="handleReset">时长归零</el-button>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-button size="small" plain icon="el-icon-refresh" @click="handleResetEle">电量归零</el-button>
|
||||||
<el-dropdown-item>
|
<el-button size="small" plain type="warning" icon="el-icon-switch-button" v-if="!isOpen" @click="handleSwitch(true)">强制开启</el-button>
|
||||||
<el-link :underline="false" icon="el-icon-plus" @click="handleAddElectricity">增加时长</el-link>
|
<el-button size="small" plain type="warning" icon="el-icon-switch-button" v-if="isOpen" @click="handleSwitch(false)">强制关闭</el-button>
|
||||||
</el-dropdown-item>
|
<el-button size="small" plain icon="el-icon-refresh" @click="refreshIot(deviceId, true)" style="margin-right: 1em">刷新设备信息</el-button>
|
||||||
<el-dropdown-item>
|
<el-popover
|
||||||
<el-link :underline="false" icon="el-icon-refresh" @click="handleReset">时长归零</el-link>
|
placement="left"
|
||||||
</el-dropdown-item>
|
width="180"
|
||||||
<el-dropdown-item>
|
trigger="click">
|
||||||
<el-link :underline="false" icon="el-icon-refresh" @click="handleResetEle">电量归零</el-link>
|
<div class="qr-code-box">
|
||||||
</el-dropdown-item>
|
<qr-code :text="qrCodeText(deviceData)" :width="150" :height="150" />
|
||||||
<el-dropdown-item>
|
<p>扫描二维码进行设备绑定</p>
|
||||||
<el-link :underline="false" icon="el-icon-switch-button" v-if="!isOpen" @click="handleSwitch(true)">强制开启</el-link>
|
</div>
|
||||||
</el-dropdown-item>
|
<el-button size="small" slot="reference" type="primary" icon="el-icon-picture">设备二维码</el-button>
|
||||||
<el-dropdown-item>
|
</el-popover>
|
||||||
<el-link :underline="false" icon="el-icon-switch-button" v-if="isOpen" @click="handleSwitch(false)">强制关闭</el-link>
|
</template>
|
||||||
</el-dropdown-item>
|
<el-descriptions-item label="MAC-1">
|
||||||
<el-dropdown-item>
|
{{deviceData.mac | defaultValue}}
|
||||||
<el-link :underline="false" icon="el-icon-link" type="danger" @click="handleUnbind" :disabled="deviceData.userId == null">强制解绑</el-link>
|
</el-descriptions-item>
|
||||||
</el-dropdown-item>
|
<el-descriptions-item label="MAC-2">
|
||||||
</el-dropdown-menu>
|
{{deviceData.mac2 | defaultValue}}
|
||||||
</el-dropdown>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="SN">
|
||||||
|
{{deviceData.deviceNo | defaultValue}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="设备状态">
|
||||||
|
<dict-tag :options="dict.type.sm_device_status" :value="deviceData.status" size="mini"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="设备到期时间">{{deviceData.rentTime | defaultValue}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="型号">{{deviceData.model | defaultValue}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="型号功能" :span="2">
|
||||||
|
<dict-tag :options="dict.type.sm_model_tag" :value="deviceData.modelTags" size="mini"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="限制充值时间">
|
||||||
|
{{deviceData.limitRechargeTime | defaultValue}}
|
||||||
|
<boolean-tag v-if="deviceData.limitRechargeTime != null" :value="!isLimitRecharge" size="small" true-text="限制充值中" false-text="已解封"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="限制充值原因">
|
||||||
|
{{deviceData.limitRechargeReason | defaultValue}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
<el-button icon="el-icon-refresh" @click="refreshIot(deviceId, true)" style="margin-right: 1em">刷新设备信息</el-button>
|
<el-card class="box-card">
|
||||||
<el-popover
|
<el-descriptions :column="4" title="物联网信息">
|
||||||
placement="left"
|
<el-descriptions-item label="在线状态">
|
||||||
width="180"
|
<dict-tag :options="dict.type.sm_device_online_status" :value="deviceData.onlineStatus" size="mini"/>
|
||||||
trigger="click">
|
</el-descriptions-item>
|
||||||
<div class="qr-code-box">
|
<el-descriptions-item label="最后在线时间">
|
||||||
<qr-code :text="qrCodeText(deviceData)" :width="150" :height="150" />
|
{{deviceData.lastOnlineStatus | defaultValue}}
|
||||||
<p>扫描二维码进行设备绑定</p>
|
</el-descriptions-item>
|
||||||
</div>
|
<el-descriptions-item label="WIFI">{{deviceData.wifi | defaultValue}}</el-descriptions-item>
|
||||||
<el-button slot="reference" type="primary" icon="el-icon-picture">设备二维码</el-button>
|
<el-descriptions-item label="开关状态">
|
||||||
</el-popover>
|
<el-tag :type="isOpen ? 'success' : 'danger'" size="mini">{{isOpen ? '已开启' : '已关闭'}}</el-tag>
|
||||||
</template>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="MAC-1">
|
<el-descriptions-item label="电压">{{deviceData.voltage | money | defaultValue }} V</el-descriptions-item>
|
||||||
{{deviceData.mac | defaultValue}}
|
<el-descriptions-item label="电流">{{deviceData.electricity | money | defaultValue }} A</el-descriptions-item>
|
||||||
</el-descriptions-item>
|
<el-descriptions-item label="功率">{{deviceData.realTimePower | money | defaultValue }} W</el-descriptions-item>
|
||||||
<el-descriptions-item label="MAC-2">
|
<el-descriptions-item label="总用电量">
|
||||||
{{deviceData.mac2 | defaultValue}}
|
{{deviceData.totalElectriQuantity | money | defaultValue}} 度
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="SN">
|
<el-descriptions-item label="剩余时长">{{surplusTimeDesc(surplusTime).text}}</el-descriptions-item>
|
||||||
{{deviceData.deviceNo | defaultValue}}
|
<el-descriptions-item label="剩余时长/电量" :span="2">
|
||||||
</el-descriptions-item>
|
{{surplusTimeDesc(deviceData.remainTime).text}} / {{deviceData.surplusEle | defaultValue}} 度
|
||||||
<el-descriptions-item label="设备状态">
|
<span class="remark-text">最近更新时间:{{deviceData.lastPullTime}}</span>
|
||||||
<dict-tag :options="dict.type.sm_device_status" :value="deviceData.status" size="mini"/>
|
</el-descriptions-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions>
|
||||||
<el-descriptions-item label="设备到期时间">{{deviceData.rentTime | defaultValue}}</el-descriptions-item>
|
</el-card>
|
||||||
<el-descriptions-item label="型号">{{deviceData.model | defaultValue}}</el-descriptions-item>
|
</el-col>
|
||||||
<el-descriptions-item label="型号功能" :span="2">
|
<el-col :lg="6" :xs="24">
|
||||||
<dict-tag :options="dict.type.sm_model_tag" :value="deviceData.modelTags" size="mini"/>
|
<el-card class="box-card">
|
||||||
</el-descriptions-item>
|
<el-descriptions title="归属信息" :column="1">
|
||||||
<el-descriptions-item label="限制充值时间">
|
<el-descriptions-item label="设备名称">{{deviceData.deviceName | defaultValue}}</el-descriptions-item>
|
||||||
{{deviceData.limitRechargeTime | defaultValue}}
|
<el-descriptions-item label="服务模式">
|
||||||
<boolean-tag v-if="deviceData.limitRechargeTime != null" :value="!isLimitRecharge" size="small" true-text="限制充值中" false-text="已解封"/>
|
<dict-tag :options="dict.type.device_service_mode" :value="deviceData.serviceMode" size="small"/>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="限制充值原因">
|
<el-descriptions-item label="所属代理" v-if="deviceData.serviceMode === DeviceServiceMode.AGENT">
|
||||||
{{deviceData.limitRechargeReason | defaultValue}}
|
<user-link :name="deviceData.agentName" :id="deviceData.agentId"/>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
<el-descriptions-item label="所属商户">
|
||||||
</el-card>
|
<user-link :name="deviceData.userName" :id="deviceData.userId"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="店铺名称">
|
||||||
|
<store-link :name="deviceData.storeName" :id="deviceData.storeId"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="月费">
|
||||||
|
{{deviceData.monthFee | money | defaultValue}} %
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="平台服务费" v-if="deviceData.serviceMode === DeviceServiceMode.DIRECT">
|
||||||
|
{{deviceData.realServiceRate | money | defaultValue}} %
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="代理服务费" v-if="deviceData.serviceMode === DeviceServiceMode.AGENT">
|
||||||
|
{{deviceData.realServiceRate | money | defaultValue}} %
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="备注">{{deviceData.remark | defaultValue}}</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-button size="small" style="width: 100%" plain icon="el-icon-link" type="danger" @click="handleUnbind" :disabled="deviceData.userId == null">解绑商户</el-button>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
<el-card class="box-card">
|
</el-col>
|
||||||
<el-descriptions :column="4" title="物联网信息">
|
</el-row>
|
||||||
<el-descriptions-item label="在线状态">
|
|
||||||
<dict-tag :options="dict.type.sm_device_online_status" :value="deviceData.onlineStatus" size="mini"/>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="最后在线时间">
|
|
||||||
{{deviceData.lastOnlineStatus | defaultValue}}
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="开关状态">
|
|
||||||
<el-tag :type="isOpen ? 'success' : 'danger'" size="mini">{{isOpen ? '已开启' : '已关闭'}}</el-tag>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="WIFI">{{deviceData.wifi | defaultValue}}</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 }} KW</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>
|
|
||||||
</el-descriptions>
|
|
||||||
</el-card>
|
|
||||||
|
|
||||||
<el-card class="box-card">
|
|
||||||
<el-descriptions title="所属人信息" :column="4">
|
|
||||||
<el-descriptions-item label="所属用户">
|
|
||||||
<user-link :name="deviceData.userName" :id="deviceData.userId"/>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="设备名称">{{deviceData.deviceName | defaultValue}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="店铺名称">
|
|
||||||
<store-link :name="deviceData.storeName" :id="deviceData.storeId"/>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="服务费">
|
|
||||||
{{deviceData.realServiceRate | money | defaultValue}} %
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="备注">{{deviceData.remark | defaultValue}}</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
</el-card>
|
|
||||||
|
|
||||||
<el-card class="box-card">
|
<el-card class="box-card">
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
|
@ -131,7 +129,6 @@
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="抄表记录" :lazy="true">
|
<el-tab-pane label="抄表记录" :lazy="true">
|
||||||
<reading-record :device-id="deviceData.deviceId"/>
|
<reading-record :device-id="deviceData.deviceId"/>
|
||||||
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="绑定记录" :lazy="true">
|
<el-tab-pane label="绑定记录" :lazy="true">
|
||||||
<bind-record :device-id="deviceData.deviceId"/>
|
<bind-record :device-id="deviceData.deviceId"/>
|
||||||
|
@ -177,6 +174,8 @@ import UserLink from '@/components/Business/SmUser/UserLink.vue'
|
||||||
import { $serviceType, $view } from '@/utils/mixins'
|
import { $serviceType, $view } from '@/utils/mixins'
|
||||||
import Recharge from '@/views/system/recharge/index.vue'
|
import Recharge from '@/views/system/recharge/index.vue'
|
||||||
import BooleanTag from '@/components/BooleanTag/index.vue'
|
import BooleanTag from '@/components/BooleanTag/index.vue'
|
||||||
|
import { DeviceServiceMode } from '@/utils/constants'
|
||||||
|
import { isEmpty } from '@/utils'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Device/:deviceId',
|
name: 'Device/:deviceId',
|
||||||
|
@ -190,7 +189,7 @@ export default {
|
||||||
Suit,
|
Suit,
|
||||||
SuitList,
|
SuitList,
|
||||||
TenantList, ResetRecord, BindRecord, ReadingRecord, MeterRecordReport, QrCode, RechargeRecord, LineChart},
|
TenantList, ResetRecord, BindRecord, ReadingRecord, MeterRecordReport, QrCode, RechargeRecord, LineChart},
|
||||||
dicts: ['sm_device_status', 'sm_device_outage_way', 'sm_device_notice_way', 'sm_model_tag', 'sm_device_online_status', 'service_type'],
|
dicts: ['sm_device_status', 'sm_device_outage_way', 'sm_device_notice_way', 'sm_model_tag', 'sm_device_online_status', 'service_type', 'device_service_mode'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
|
@ -211,6 +210,9 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
DeviceServiceMode() {
|
||||||
|
return DeviceServiceMode
|
||||||
|
},
|
||||||
qrCodeText() {
|
qrCodeText() {
|
||||||
return (device) => {
|
return (device) => {
|
||||||
return getWxIndexUrl({ s: device.deviceNo});
|
return getWxIndexUrl({ s: device.deviceNo});
|
||||||
|
@ -240,8 +242,9 @@ export default {
|
||||||
clearInterval(this.timer);
|
clearInterval(this.timer);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
isEmpty,
|
||||||
handleUnbind() {
|
handleUnbind() {
|
||||||
this.$confirm('是否强制解绑该设备?', '警告', {
|
this.$confirm('是否强制解绑该商户?', '警告', {
|
||||||
confirmButtonText: '确定',
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
|
|
|
@ -205,9 +205,15 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="服务费" align="center" prop="serviceRate" width="180">
|
<el-table-column label="服务费" align="center" prop="serviceRate" width="180">
|
||||||
<template slot-scope="d">
|
<template slot-scope="d">
|
||||||
月费:{{d.row.monthFee | money | defaultValue}} 元/月 <br/>
|
<template v-if="d.row.monthFee">
|
||||||
平台服务费:{{d.row.realServiceRate | money | defaultValue}} % <br/>
|
月费:{{d.row.monthFee | money | defaultValue}} 元/月 <br/>
|
||||||
代理服务费:{{d.row.agentServiceRate | money | defaultValue}} % <br/>
|
</template>
|
||||||
|
<template v-if="d.row.serviceMode === DeviceServiceMode.DIRECT">
|
||||||
|
平台服务费:{{d.row.realServiceRate | money | defaultValue}} % <br/>
|
||||||
|
</template>
|
||||||
|
<template v-if="d.row.serviceMode === DeviceServiceMode.AGENT">
|
||||||
|
代理服务费:{{d.row.agentServiceRate | money | defaultValue}} % <br/>
|
||||||
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
||||||
|
|
|
@ -40,6 +40,18 @@
|
||||||
<el-descriptions-item label="设备SN">
|
<el-descriptions-item label="设备SN">
|
||||||
<device-link :id="detail.deviceId" :text="detail.deviceNo"/>
|
<device-link :id="detail.deviceId" :text="detail.deviceNo"/>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="设备MAC-1">
|
||||||
|
<device-link :id="detail.deviceId" :text="detail.deviceMac"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="设备MAC-2">
|
||||||
|
<device-link :id="detail.deviceId" :text="detail.deviceMac2"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="设备产品ID">
|
||||||
|
{{detail.deviceProductId | defaultValue}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="设备服务模式">
|
||||||
|
<dict-tag :value="detail.deviceServiceMode" :options="dict.type.device_service_mode" size="small"/>
|
||||||
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="设备充值状态" v-if="[SuitFeeType.TIMING, SuitFeeType.COUNT].includes(detail.suitFeeType)">
|
<el-descriptions-item label="设备充值状态" v-if="[SuitFeeType.TIMING, SuitFeeType.COUNT].includes(detail.suitFeeType)">
|
||||||
<dict-tag :value="detail.deviceRechargeStatus"
|
<dict-tag :value="detail.deviceRechargeStatus"
|
||||||
:options="dict.type.sm_transaction_bill_device_recharge_status"
|
:options="dict.type.sm_transaction_bill_device_recharge_status"
|
||||||
|
@ -50,7 +62,18 @@
|
||||||
<el-tag type="success" v-else-if="detail.isFinished" size="small">已结束</el-tag>
|
<el-tag type="success" v-else-if="detail.isFinished" size="small">已结束</el-tag>
|
||||||
<el-tag type="info" v-else size="small">未开始</el-tag>
|
<el-tag type="info" v-else size="small">未开始</el-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<template v-if="detail.isFinished">
|
||||||
|
<el-descriptions-item label="设备关闭状态">
|
||||||
|
<dict-tag :value="detail.closeStatus" :options="dict.type.recharge_close_status" size="small"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="设备关闭状态描述">
|
||||||
|
{{detail.closeResult | defaultValue}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</template>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<el-card class="box-card">
|
||||||
<el-descriptions title="套餐信息" :column="4">
|
<el-descriptions title="套餐信息" :column="4">
|
||||||
<el-descriptions-item label="套餐名称">{{detail.suitName | defaultValue}}</el-descriptions-item>
|
<el-descriptions-item label="套餐名称">{{detail.suitName | defaultValue}}</el-descriptions-item>
|
||||||
<el-descriptions-item label="套餐计费模式">
|
<el-descriptions-item label="套餐计费模式">
|
||||||
|
@ -61,11 +84,13 @@
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="套餐时长" v-if="detail.suitFeeType === SuitFeeType.TIMING">{{detail.suitTime | defaultValue}} {{suitTimeUnit(detail.suitTimeUnit)}}</el-descriptions-item>
|
<el-descriptions-item label="套餐时长" v-if="detail.suitFeeType === SuitFeeType.TIMING">{{detail.suitTime | defaultValue}} {{suitTimeUnit(detail.suitTimeUnit)}}</el-descriptions-item>
|
||||||
<el-descriptions-item label="套餐电量" v-if="detail.suitFeeType === SuitFeeType.COUNT">{{detail.suitTime | defaultValue}} 度</el-descriptions-item>
|
<el-descriptions-item label="套餐电量" v-if="detail.suitFeeType === SuitFeeType.COUNT">{{detail.suitTime | defaultValue}} 度</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="使用时长" v-if="SuitFeeType.timeList().includes(detail.suitFeeType)">{{toDescriptionFromSecond(detail.totalUse).text | defaultValue}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="使用电量" v-if="SuitFeeType.eleList().includes(detail.suitFeeType)">{{detail.totalUse | defaultValue}} 度</el-descriptions-item>
|
||||||
<el-descriptions-item label="开始时间">{{detail.suitStartTime | defaultValue}}</el-descriptions-item>
|
<el-descriptions-item label="开始时间">{{detail.suitStartTime | defaultValue}}</el-descriptions-item>
|
||||||
<el-descriptions-item label="结束时间">{{detail.suitEndTime | defaultValue}}</el-descriptions-item>
|
<el-descriptions-item label="结束时间">{{detail.suitEndTime | defaultValue}}</el-descriptions-item>
|
||||||
<el-descriptions-item label="失效时间">{{detail.suitExpireTime | defaultValue}}</el-descriptions-item>
|
<el-descriptions-item label="失效时间">{{detail.suitExpireTime | defaultValue}}</el-descriptions-item>
|
||||||
<el-descriptions-item label="开始总用电量">{{detail.suitStartEle | defaultValue}} 度</el-descriptions-item>
|
<el-descriptions-item label="开始总用电量">{{detail.suitStartEle | money | defaultValue}} 度</el-descriptions-item>
|
||||||
<el-descriptions-item label="结束总用电量">{{detail.suitEndEle | defaultValue}} 度</el-descriptions-item>
|
<el-descriptions-item label="结束总用电量">{{detail.suitEndEle | money | defaultValue}} 度</el-descriptions-item>
|
||||||
<el-descriptions-item label="低功率自动关闭" :span="2">
|
<el-descriptions-item label="低功率自动关闭" :span="2">
|
||||||
<template v-if="detail.suitEnableLowPowerClose">
|
<template v-if="detail.suitEnableLowPowerClose">
|
||||||
<span style="color: green;margin-right: 0.5em;">已开启<i class="el-icon-check"/></span>
|
<span style="color: green;margin-right: 0.5em;">已开启<i class="el-icon-check"/></span>
|
||||||
|
@ -89,9 +114,14 @@
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="支付时间">{{detail.payTime | defaultValue}}</el-descriptions-item>
|
<el-descriptions-item label="支付时间">{{detail.payTime | defaultValue}}</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</el-card>
|
|
||||||
|
|
||||||
<el-card class="box-card">
|
<el-descriptions title="代理信息" :column="1" v-if="DeviceServiceMode.AGENT === detail.deviceServiceMode">
|
||||||
|
<el-descriptions-item label="代理商">
|
||||||
|
<user-link :id="detail.agentName" :name="detail.agentId"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="代理商手机号">{{detail.agentMobile | defaultValue}}</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
|
||||||
<el-descriptions title="商户信息" :column="1">
|
<el-descriptions title="商户信息" :column="1">
|
||||||
<el-descriptions-item label="商户">
|
<el-descriptions-item label="商户">
|
||||||
<user-link :id="detail.mchId" :name="detail.mchName"/>
|
<user-link :id="detail.mchId" :name="detail.mchName"/>
|
||||||
|
@ -127,18 +157,22 @@ import Refund from '@/views/ss/refund/index.vue'
|
||||||
import { findLabel } from '@/utils'
|
import { findLabel } from '@/utils'
|
||||||
import DeviceLink from '@/components/Business/Device/DeviceLink.vue'
|
import DeviceLink from '@/components/Business/Device/DeviceLink.vue'
|
||||||
import UserLink from '@/components/Business/SmUser/UserLink.vue'
|
import UserLink from '@/components/Business/SmUser/UserLink.vue'
|
||||||
import { SuitFeeType, views } from '@/utils/constants'
|
import { DeviceServiceMode, SuitFeeType, views } from '@/utils/constants'
|
||||||
import PayBill from '@/views/ss/payBill/index.vue'
|
import PayBill from '@/views/ss/payBill/index.vue'
|
||||||
import Bonus from '@/views/ss/bonus/index.vue'
|
import Bonus from '@/views/ss/bonus/index.vue'
|
||||||
import { $recharge } from '@/utils/mixins'
|
import { $recharge } from '@/utils/mixins'
|
||||||
import RefundDialog from '@/views/system/recharge/components/RefundDialog.vue'
|
import RefundDialog from '@/views/system/recharge/components/RefundDialog.vue'
|
||||||
|
import { toDescriptionFromSecond } from '@/utils/date'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Recharge/:billId',
|
name: 'Recharge/:billId',
|
||||||
mixins: [$recharge],
|
mixins: [$recharge],
|
||||||
components: { RefundDialog, Bonus, PayBill, UserLink, DeviceLink, Refund },
|
components: { RefundDialog, Bonus, PayBill, UserLink, DeviceLink, Refund },
|
||||||
dicts: ['channel_type','sm_transaction_bill_status', 'sm_transaction_bill_device_recharge_status', 'time_unit', 'suit_fee_mode', 'suit_fee_type'],
|
dicts: ['channel_type','sm_transaction_bill_status', 'sm_transaction_bill_device_recharge_status', 'time_unit', 'suit_fee_mode', 'suit_fee_type', 'recharge_close_status', 'device_service_mode'],
|
||||||
computed: {
|
computed: {
|
||||||
|
DeviceServiceMode() {
|
||||||
|
return DeviceServiceMode
|
||||||
|
},
|
||||||
views() {
|
views() {
|
||||||
return views
|
return views
|
||||||
},
|
},
|
||||||
|
@ -167,6 +201,7 @@ export default {
|
||||||
this.getDetail();
|
this.getDetail();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
toDescriptionFromSecond,
|
||||||
getDetail() {
|
getDetail() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
getBill(this.id).then(res => {
|
getBill(this.id).then(res => {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user