9.11 bug修改

master
zz 2 months ago
parent bf1eaf8257
commit 94f61c4a16

@ -32,13 +32,28 @@ export const WalletApi = {
// 查询会员钱包分页
getWalletPage: async (params: any) => {
return await request.get({ url: `/pay/wallet/page-team`, params })
// return await request.get({ url: `/pay/wallet/page`, params })
},
getWalletPage2: async (params: any) => {
// return await request.get({ url: `/pay/wallet/page-team`, params })
return await request.get({ url: `/pay/wallet/page`, params })
},
// 查询会员钱包详情
getWallet: async (id: number) => {
return await request.get({ url: `/pay/wallet/get?id=` + id })
// 查询会员钱包详情车队账户
getWallet2: async data => {
const { teamId,bindType } =data
return await request.get({ url: `/pay/wallet/get-team?teamId=${teamId}&bindType=${bindType}`,data})
},
// 个人和个人车队详情
getWallet: async data=> {
const { userId,bindType } =data
return await request.get({ url: `/pay/wallet/get?userId=${userId}&bindType=${bindType}`,data })
},
// getWallet: async (id: number) => {
// return await request.get({ url: `/pay/wallet/get?id=` + id })
// },
// 新增会员钱包
createWallet: async (data: WalletVO) => {

@ -74,6 +74,7 @@ export const AmtOrderApi = {
// 导出预约订单 Excel
exportAmtOrder: async (params) => {
return await request.download({ url: `/cloud/amt-order/export-excel`, params })
return await request.download({ url: `/cloud/amt-order/exportExcel`, params })
},
}

@ -140,7 +140,7 @@ export enum DICT_TYPE {
TOP_UP_STATUS = 'top_up_status',
TOP_UP_STATUS_TWO = 'top_up_status_two',
ENABLE_STATUS = 'enable_status',
REFUND_STATUS_DETAILS = 'refund_status_details',
PACKAGE_TYPE = 'package_type',//zz
PACKAGE_STATUS = 'package_status',
SITEMANAGER_SERVICE_STATE = 'siteManager_service_state',

@ -58,7 +58,11 @@
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="退款状态" align="center" prop="refundStatus" />
<el-table-column label="退款状态" align="center" prop="refundStatus" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.REFUND_STATUS_DETAILS" :value="scope.row.refundStatus" />
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
@ -74,6 +78,7 @@
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import { WalletApi } from '@/api/pay/wallet/account'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
// import WalletRechargeForm from './WalletRechargeForm.vue'
const props = defineProps<{
@ -109,7 +114,9 @@ const handleQuery = () => {
getList()
}
onMounted(() => {
handleQuery()
})
// onMounted(() => {
// handleQuery()
// })
defineExpose({ handleQuery })
</script>

@ -88,7 +88,9 @@ const handleQuery = () => {
getList()
}
onMounted(() => {
handleQuery()
})
// onMounted(() => {
// handleQuery()
// })
defineExpose({ handleQuery })
</script>

@ -11,7 +11,7 @@
<br />
<el-descriptions :column="3" border>
<el-descriptions-item label="车队编码:" label-align="right" align="center">
{{ check_row.teamCode != null ? check_row.teamCode : '--' }}
{{ formData.teamCode != null ? formData.teamCode : '--' }}
</el-descriptions-item>
<el-descriptions-item
size="large"
@ -22,29 +22,29 @@
class-name="my-content"
width="150px"
>
{{ check_row.teamName != null ? check_row.teamName : '--' }}
{{ formData.teamName != null ? formData.teamName : '--' }}
</el-descriptions-item>
<el-descriptions-item label="余额(元):" label-align="right" align="center">
{{ check_row.balance != null ? check_row.balance / 100 : '--' }}
{{ formData.balance != null ? formData.balance / 100 : '--' }}
</el-descriptions-item>
<el-descriptions-item label="累计支出(元):" label-align="right" align="center">
{{ check_row.totalExpense != null ? check_row.totalExpense / 100 : '--' }}
{{ formData.totalExpense != null ? formData.totalExpense / 100 : '--' }}
</el-descriptions-item>
<el-descriptions-item label="累计充值(元):" label-align="right" align="center">
{{ check_row.totalRecharge != null ? check_row.totalRecharge / 100 : '--' }}
{{ formData.totalRecharge != null ? formData.totalRecharge / 100 : '--' }}
</el-descriptions-item>
<el-descriptions-item label="冻结金额(元):" label-align="right" align="center">
{{ check_row.freezePrice != null ? check_row.freezePrice / 100 : '--' }}
{{ formData.freezePrice != null ? formData.freezePrice / 100 : '--' }}
</el-descriptions-item>
</el-descriptions>
<!-- -->
<div class="title_info" style="margin-top: 20px">充值记录</div>
<br />
<WalletRechargeList :walletId="check_row.id" />
<WalletRechargeList :walletId="formData.id" ref="WalletRecharge"/>
<div class="title_info" style="margin-top: 20px">余额明细</div>
<br />
<WalletTransactionList :walletId="check_row.id" />
<WalletTransactionList :walletId="formData.id" ref="WalletTransaction"/>
</el-drawer>
</div>
</template>
@ -52,14 +52,45 @@
<script setup lang="ts">
import WalletRechargeList from './WalletRechargeList.vue'
import WalletTransactionList from './WalletTransactionList.vue'
import { WalletApi, WalletVO } from '@/api/pay/wallet/account'
const drawer = ref(false)
const check_row = ref<any>()
const open = (row: any) => {
// console.log(row, 'row')
check_row.value = row
const WalletRecharge = ref(null)
const WalletTransaction = ref(null)
// const formData = ref<any>()
const formData = ref({
id: undefined,
userId: undefined,
userType: undefined,
bindId: undefined,
bindType: undefined,
balance: undefined,
totalExpense: undefined,
totalRecharge: undefined,
freezePrice: undefined,
teamName:undefined,
teamCode:undefined,
})
const open = async (row: any) => {
// console.log(row,"zzzzzzzxxxccc")
const params = {
teamId:row.bindId || row.id,
bindType:2
}
try {
formData.value = await WalletApi.getWallet2(params)
} finally {
}
drawer.value = true
setTimeout(() => {
WalletRecharge.value.handleQuery()
WalletTransaction.value.handleQuery()
}, 1000)
}
// onMounted(() => {
// formData
// }),
defineExpose({ open }) // open
</script>

@ -171,6 +171,7 @@ const handleCurrentChange = (row) => {
const drawerRef = ref()
const open_drawer = (row: any) => {
drawerRef.value.open(row)
}
/** 修改余额 */
const setbalance = async (row) => {

@ -34,7 +34,13 @@
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="退款状态" align="center" prop="refundStatus" />
<el-table-column label="退款状态" align="center" prop="refundStatus" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.REFUND_STATUS_DETAILS" :value="scope.row.refundStatus" />
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
@ -50,6 +56,7 @@
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import { WalletApi } from '@/api/pay/wallet/account'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
// import WalletRechargeForm from './WalletRechargeForm.vue'
const props = defineProps<{
@ -85,7 +92,8 @@ const handleQuery = () => {
getList()
}
onMounted(() => {
handleQuery()
})
// onMounted(() => {
// handleQuery()
// })
defineExpose({ handleQuery })
</script>

@ -72,7 +72,9 @@ const handleQuery = () => {
getList()
}
onMounted(() => {
handleQuery()
})
// onMounted(() => {
// handleQuery()
// })
defineExpose({ handleQuery })
</script>

@ -19,52 +19,81 @@
class-name="my-content"
width="150px"
>
{{ check_row.nickName != null ? check_row.nickName : '--' }}
{{ queryParams.nickname != null ? queryParams.nickname : '--' }}
</el-descriptions-item>
<el-descriptions-item label="用户头像:" label-align="right" align="center">
<el-image
:src="check_row.avatar"
:src="queryParams.avatar"
style="width: 160px; height: 90px"
v-if="check_row.avatar != null"
v-if="queryParams.avatar != null"
/>
<span v-else> -- </span>
</el-descriptions-item>
<el-descriptions-item label="余额(元):" label-align="right" align="center">
{{ check_row.balance != null ? check_row.balance / 100 : '--' }}
{{ queryParams.balance != null ? queryParams.balance / 100 : '--' }}
</el-descriptions-item>
<el-descriptions-item label="累计支出(元):" label-align="right" align="center">
{{ check_row.totalExpense != null ? check_row.totalExpense / 100 : '--' }}
{{ queryParams.totalExpense != null ? queryParams.totalExpense / 100 : '--' }}
</el-descriptions-item>
<el-descriptions-item label="累计充值(元):" label-align="right" align="center">
{{ check_row.totalRecharge != null ? check_row.totalRecharge / 100 : '--' }}
{{ queryParams.totalRecharge != null ? queryParams.totalRecharge / 100 : '--' }}
</el-descriptions-item>
<el-descriptions-item label="冻结金额(元):" label-align="right" align="center">
{{ check_row.freezePrice != null ? check_row.freezePrice / 100 : '--' }}
{{ queryParams.freezePrice != null ? queryParams.freezePrice / 100 : '--' }}
</el-descriptions-item>
</el-descriptions>
<!-- -->
<div class="title_info" style="margin-top: 20px">充值记录</div>
<br />
<WalletRechargeList :walletId="check_row.id" />
<WalletRechargeList :walletId="queryParams.id" ref="WalletRecharge"/>
<div class="title_info" style="margin-top: 20px">余额明细</div>
<br />
<WalletTransactionList :walletId="check_row.id" />
<WalletTransactionList :walletId="queryParams.id" ref="WalletTransaction"/>
</el-drawer>
</div>
</template>
<script setup lang="ts">
import { id } from 'element-plus/es/locale';
import WalletRechargeList from './WalletRechargeList.vue'
import WalletTransactionList from './WalletTransactionList.vue'
import { WalletApi, WalletVO } from '@/api/pay/wallet/account'
const drawer = ref(false)
const check_row = ref<any>()
const open = (row: any) => {
// console.log(row, 'row')
check_row.value = row
drawer.value = true
}
const WalletRecharge =ref(null)
const WalletTransaction =ref(null)
const queryParams = ref({
id:undefined,
userId: undefined,
userType: undefined,
nickname: undefined,
bindId: undefined,
avatar:undefined,
bindType: 1,
balance: undefined,
totalExpense: undefined,
totalRecharge: undefined,
freezePrice: undefined,
createTime: []
})
const open = async (row: any) => {
const params = {
userId:row.userId,
bindType:1
}
try {
queryParams.value = await WalletApi.getWallet(params)
} finally {
}
drawer.value = true
setTimeout(() => {
// console.log(TeamVehicle.value, 'TeamVehicle')
WalletRecharge.value.handleQuery()
WalletTransaction.value.handleQuery()
}, 1000)
}
defineExpose({ open }) // open
</script>

@ -115,7 +115,7 @@ const exportLoading = ref(false) // 导出的加载中
const getList = async () => {
loading.value = true
try {
const data = await WalletApi.getWalletPage(queryParams)
const data = await WalletApi.getWalletPage2(queryParams)
list.value = data.list
total.value = data.total
} finally {

@ -0,0 +1,144 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="用户编号" prop="userId">
<el-input v-model="formData.userId" placeholder="请输入用户编号" />
</el-form-item>
<el-form-item label="用户类型" prop="userType">
<el-select v-model="formData.userType" placeholder="请选择用户类型">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="绑定用户id或车队id " prop="bindId">
<el-input v-model="formData.bindId" placeholder="请输入绑定用户id或车队id " />
</el-form-item>
<el-form-item label="1;用户 2:车队" prop="bindType">
<el-select v-model="formData.bindType" placeholder="请选择1;用户 2:车队">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="余额(分)" prop="balance">
<el-input v-model="formData.balance" placeholder="请输入余额(分)" />
</el-form-item>
<el-form-item label="累计支出(分)" prop="totalExpense">
<el-input v-model="formData.totalExpense" placeholder="请输入累计支出(分)" />
</el-form-item>
<el-form-item label="累计充值(分)" prop="totalRecharge">
<el-input v-model="formData.totalRecharge" placeholder="请输入累计充值(分)" />
</el-form-item>
<el-form-item label="冻结金额(分)" prop="freezePrice">
<el-input v-model="formData.freezePrice" placeholder="请输入冻结金额(分)" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { WalletApi, WalletVO } from '@/api/pay/wallet/account'
/** 会员钱包 表单 */
defineOptions({ name: 'WalletForm' })
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
userId: undefined,
userType: undefined,
bindId: undefined,
bindType: undefined,
balance: undefined,
totalExpense: undefined,
totalRecharge: undefined,
freezePrice: undefined,
})
const formRules = reactive({
userId: [{ required: true, message: '用户编号不能为空', trigger: 'blur' }],
userType: [{ required: true, message: '用户类型不能为空', trigger: 'change' }],
bindId: [{ required: true, message: '绑定用户id或车队id 不能为空', trigger: 'blur' }],
bindType: [{ required: true, message: '1;用户 2:车队不能为空', trigger: 'change' }],
balance: [{ required: true, message: '余额(分)不能为空', trigger: 'blur' }],
totalExpense: [{ required: true, message: '累计支出(分)不能为空', trigger: 'blur' }],
totalRecharge: [{ required: true, message: '累计充值(分)不能为空', trigger: 'blur' }],
freezePrice: [{ required: true, message: '冻结金额(分)不能为空', trigger: 'blur' }],
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
//
if (id) {
formLoading.value = true
try {
formData.value = await WalletApi.getWallet(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as WalletApi.WalletVO
if (formType.value === 'create') {
await WalletApi.createWallet(data)
message.success(t('common.createSuccess'))
} else {
await WalletApi.updateWallet(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
userId: undefined,
userType: undefined,
bindId: undefined,
bindType: undefined,
balance: undefined,
totalExpense: undefined,
totalRecharge: undefined,
freezePrice: undefined,
}
formRef.value?.resetFields()
}
</script>

@ -0,0 +1,182 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="1;用户 2:车队" prop="bindType">
<el-select v-model="formData.bindType" placeholder="请选择1;用户 2:车队">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="用户实际到账余额,例如充 100 送 20则该值是 120" prop="totalPrice">
<el-input v-model="formData.totalPrice" placeholder="请输入用户实际到账余额,例如充 100 送 20则该值是 120" />
</el-form-item>
<el-form-item label="实际支付金额" prop="payPrice">
<el-input v-model="formData.payPrice" placeholder="请输入实际支付金额" />
</el-form-item>
<el-form-item label="钱包赠送金额" prop="bonusPrice">
<el-input v-model="formData.bonusPrice" placeholder="请输入钱包赠送金额" />
</el-form-item>
<el-form-item label="是否已支付:[0:未支付 1:已经支付过]" prop="payStatus">
<el-select v-model="formData.payStatus" placeholder="请选择是否已支付:[0:未支付 1:已经支付过]">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="支付订单编号" prop="payOrderId">
<el-input v-model="formData.payOrderId" placeholder="请输入支付订单编号" />
</el-form-item>
<el-form-item label="支付成功的支付渠道" prop="payChannelCode">
<el-input v-model="formData.payChannelCode" placeholder="请输入支付成功的支付渠道" />
</el-form-item>
<el-form-item label="订单支付时间" prop="payTime">
<el-date-picker
v-model="formData.payTime"
type="date"
value-format="x"
placeholder="选择订单支付时间"
/>
</el-form-item>
<el-form-item label="支付退款单编号" prop="payRefundId">
<el-input v-model="formData.payRefundId" placeholder="请输入支付退款单编号" />
</el-form-item>
<el-form-item label="退款金额,包含赠送金额" prop="refundTotalPrice">
<el-input v-model="formData.refundTotalPrice" placeholder="请输入退款金额,包含赠送金额" />
</el-form-item>
<el-form-item label="退款支付金额" prop="refundPayPrice">
<el-input v-model="formData.refundPayPrice" placeholder="请输入退款支付金额" />
</el-form-item>
<el-form-item label="退款钱包赠送金额" prop="refundBonusPrice">
<el-input v-model="formData.refundBonusPrice" placeholder="请输入退款钱包赠送金额" />
</el-form-item>
<el-form-item label="退款时间" prop="refundTime">
<el-date-picker
v-model="formData.refundTime"
type="date"
value-format="x"
placeholder="选择退款时间"
/>
</el-form-item>
<el-form-item label="退款状态" prop="refundStatus">
<el-radio-group v-model="formData.refundStatus">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { WalletApi } from '@/api/pay/wallet/account'
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
walletId: undefined,
bindType: undefined,
totalPrice: undefined,
payPrice: undefined,
bonusPrice: undefined,
payStatus: undefined,
payOrderId: undefined,
payChannelCode: undefined,
payTime: undefined,
payRefundId: undefined,
refundTotalPrice: undefined,
refundPayPrice: undefined,
refundBonusPrice: undefined,
refundTime: undefined,
refundStatus: undefined,
})
const formRules = reactive({
walletId: [{ required: true, message: '会员钱包 id不能为空', trigger: 'blur' }],
bindType: [{ required: true, message: '1;用户 2:车队不能为空', trigger: 'change' }],
totalPrice: [{ required: true, message: '用户实际到账余额,例如充 100 送 20则该值是 120不能为空', trigger: 'blur' }],
payPrice: [{ required: true, message: '实际支付金额不能为空', trigger: 'blur' }],
bonusPrice: [{ required: true, message: '钱包赠送金额不能为空', trigger: 'blur' }],
payStatus: [{ required: true, message: '是否已支付:[0:未支付 1:已经支付过]不能为空', trigger: 'change' }],
refundTotalPrice: [{ required: true, message: '退款金额,包含赠送金额不能为空', trigger: 'blur' }],
refundPayPrice: [{ required: true, message: '退款支付金额不能为空', trigger: 'blur' }],
refundBonusPrice: [{ required: true, message: '退款钱包赠送金额不能为空', trigger: 'blur' }],
refundStatus: [{ required: true, message: '退款状态不能为空', trigger: 'blur' }],
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type: string, id?: number, walletId: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
formData.value.walletId = walletId
//
if (id) {
formLoading.value = true
try {
formData.value = await WalletApi.getWalletRecharge(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value
if (formType.value === 'create') {
await WalletApi.createWalletRecharge(data)
message.success(t('common.createSuccess'))
} else {
await WalletApi.updateWalletRecharge(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
walletId: undefined,
bindType: undefined,
totalPrice: undefined,
payPrice: undefined,
bonusPrice: undefined,
payStatus: undefined,
payOrderId: undefined,
payChannelCode: undefined,
payTime: undefined,
payRefundId: undefined,
refundTotalPrice: undefined,
refundPayPrice: undefined,
refundBonusPrice: undefined,
refundTime: undefined,
refundStatus: undefined,
}
formRef.value?.resetFields()
}
</script>

@ -0,0 +1,99 @@
<template>
<!-- 列表 -->
<ContentWrap>
<!-- <el-button type="primary" plain @click="openForm('create')">
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button> -->
<el-table
v-loading="loading"
:data="list"
:stripe="true"
:show-overflow-tooltip="true"
:header-cell-style="{
backgroundColor: '#eff4fa'
}"
>
<el-table-column label="实际到账余额" align="center" prop="totalPrice" />
<el-table-column label="实际支付金额" align="center" prop="payPrice" />
<el-table-column label="钱包赠送金额" align="center" prop="bonusPrice" />
<el-table-column label="支付渠道" align="center" prop="payChannelCode" />
<el-table-column
label="支付时间"
align="center"
prop="payTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="退款金额" align="center" prop="refundTotalPrice" />
<el-table-column label="退款支付金额" align="center" prop="refundPayPrice" />
<el-table-column label="赠送金额" align="center" prop="refundBonusPrice" />
<el-table-column
label="退款时间"
align="center"
prop="refundTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="退款状态" align="center" prop="refundStatus" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.REFUND_STATUS_DETAILS" :value="scope.row.refundStatus" />
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<!-- <WalletRechargeForm ref="formRef" @success="getList" /> -->
</template>
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import { WalletApi } from '@/api/pay/wallet/account'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
// import WalletRechargeForm from './WalletRechargeForm.vue'
const props = defineProps<{
walletId: undefined // id
}>()
const loading = ref(false) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
walletId: undefined
})
/** 监听主表的关联字段的变化,加载对应的子表数据 */
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await WalletApi.getWalletRechargePage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
queryParams.walletId = props.walletId
getList()
}
// onMounted(() => {
// handleQuery()
// })
// open
defineExpose({ handleQuery })
</script>

@ -0,0 +1,125 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="关联类型" prop="bizType">
<el-select v-model="formData.bizType" placeholder="请选择关联类型">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="关联业务编号" prop="bizId">
<el-input v-model="formData.bizId" placeholder="请输入关联业务编号" />
</el-form-item>
<el-form-item label="流水号" prop="no">
<el-input v-model="formData.no" placeholder="请输入流水号" />
</el-form-item>
<el-form-item label="流水标题" prop="title">
<el-input v-model="formData.title" placeholder="请输入流水标题" />
</el-form-item>
<el-form-item label="交易金额, 单位分" prop="price">
<el-input v-model="formData.price" placeholder="请输入交易金额, 单位分" />
</el-form-item>
<el-form-item label="余额, 单位分" prop="balance">
<el-input v-model="formData.balance" placeholder="请输入余额, 单位分" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { WalletApi } from '@/api/pay/wallet/account'
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
walletId: undefined,
bizType: undefined,
bizId: undefined,
no: undefined,
title: undefined,
price: undefined,
balance: undefined,
})
const formRules = reactive({
walletId: [{ required: true, message: '会员钱包 id不能为空', trigger: 'blur' }],
bizType: [{ required: true, message: '关联类型不能为空', trigger: 'change' }],
bizId: [{ required: true, message: '关联业务编号不能为空', trigger: 'blur' }],
no: [{ required: true, message: '流水号不能为空', trigger: 'blur' }],
title: [{ required: true, message: '流水标题不能为空', trigger: 'blur' }],
price: [{ required: true, message: '交易金额, 单位分不能为空', trigger: 'blur' }],
balance: [{ required: true, message: '余额, 单位分不能为空', trigger: 'blur' }],
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type: string, id?: number, walletId: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
formData.value.walletId = walletId
//
if (id) {
formLoading.value = true
try {
formData.value = await WalletApi.getWalletTransaction(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value
if (formType.value === 'create') {
await WalletApi.createWalletTransaction(data)
message.success(t('common.createSuccess'))
} else {
await WalletApi.updateWalletTransaction(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
walletId: undefined,
bizType: undefined,
bizId: undefined,
no: undefined,
title: undefined,
price: undefined,
balance: undefined,
}
formRef.value?.resetFields()
}
</script>

@ -0,0 +1,80 @@
<template>
<!-- 列表 -->
<ContentWrap>
<!-- <el-button type="primary" plain @click="openForm('create')">
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button> -->
<el-table
v-loading="loading"
:data="list"
:stripe="true"
:show-overflow-tooltip="true"
:header-cell-style="{
backgroundColor: '#eff4fa'
}"
>
<el-table-column label="关联类型" align="center" prop="bizType" />
<el-table-column label="流水号" align="center" prop="no" />
<el-table-column label="流水标题" align="center" prop="title" />
<el-table-column label="交易金额(分)" align="center" prop="price" />
<el-table-column label="余额(分)" align="center" prop="balance" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
</template>
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import { WalletApi } from '@/api/pay/wallet/account'
const props = defineProps<{
walletId: undefined // id
}>()
const loading = ref(false) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
walletId: undefined
})
/** 监听主表的关联字段的变化,加载对应的子表数据 */
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await WalletApi.getWalletTransactionPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
queryParams.walletId = props.walletId
getList()
}
// onMounted(() => {
// handleQuery()
// })
// open
defineExpose({ handleQuery })
</script>

@ -0,0 +1,118 @@
<template>
<div>
<el-drawer
title="账户详情"
:close-on-click-modal="false"
v-model="drawer"
direction="rtl"
size="60%"
>
<div class="title_info">基本信息</div>
<br />
<el-descriptions :column="3" border>
<el-descriptions-item
size="large"
label="用户昵称:"
label-align="right"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
{{ queryParams.nickname != null ? queryParams.nickname : '--' }}
</el-descriptions-item>
<el-descriptions-item label="用户头像:" label-align="right" align="center">
<el-image
:src="queryParams.avatar"
style="width: 160px; height: 90px"
v-if="queryParams.avatar != null"
/>
<span v-else> -- </span>
</el-descriptions-item>
<el-descriptions-item label="余额(元):" label-align="right" align="center">
{{ queryParams.balance != null ? queryParams.balance / 100 : '--' }}
</el-descriptions-item>
<el-descriptions-item label="累计支出(元):" label-align="right" align="center">
{{ queryParams.totalExpense != null ? queryParams.totalExpense / 100 : '--' }}
</el-descriptions-item>
<el-descriptions-item label="累计充值(元):" label-align="right" align="center">
{{ queryParams.totalRecharge != null ? queryParams.totalRecharge / 100 : '--' }}
</el-descriptions-item>
<el-descriptions-item label="冻结金额(元):" label-align="right" align="center">
{{ queryParams.freezePrice != null ? queryParams.freezePrice / 100 : '--' }}
</el-descriptions-item>
</el-descriptions>
<!-- -->
<div class="title_info" style="margin-top: 20px">充值记录</div>
<br />
<WalletRechargeList :walletId="queryParams.id" ref="WalletRecharge"/>
<div class="title_info" style="margin-top: 20px">余额明细</div>
<br />
<WalletTransactionList :walletId="queryParams.id" ref="WalletTransaction"/>
</el-drawer>
</div>
</template>
<script setup lang="ts">
import WalletRechargeList from './WalletRechargeList.vue'
import WalletTransactionList from './WalletTransactionList.vue'
import { WalletApi, WalletVO } from '@/api/pay/wallet/account'
const drawer = ref(false)
const WalletRecharge = ref(null)
const WalletTransaction = ref(null)
const queryParams = ref({
id:undefined,
userId: undefined,
avatar:undefined,
userType: undefined,
nickname: undefined,
bindId: undefined,
bindType: 2,
balance: undefined,
totalExpense: undefined,
totalRecharge: undefined,
freezePrice: undefined,
createTime: []
})
const open = async(row: any) => {
const params = {
userId:row.userId,
bindType:2
}
try {
queryParams.value = await WalletApi.getWallet(params)
} finally {
}
drawer.value = true
setTimeout(() => {
// console.log(TeamVehicle.value, 'TeamVehicle')
WalletRecharge.value.handleQuery()
WalletTransaction.value.handleQuery()
}, 1000)
}
defineExpose({ open }) // open
</script>
<style scoped lang="less">
.lines {
width: 90%;
height: 1px;
background: #ccc;
margin: 0 auto;
}
.title_info {
font-size: 16px;
font-weight: 600;
}
:deep(.el-drawer__title) {
font-size: 20px;
font-weight: 600;
// color: #303133;
color: black;
}
</style>

@ -0,0 +1,188 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="用户昵称" prop="nickname">
<el-input v-model="queryParams.nickname" placeholder="请选择" clearable class="!w-240px" />
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<!-- <el-button type="success" plain @click="handleExport" :loading="exportLoading">
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button> -->
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table
v-loading="loading"
:data="list"
:stripe="true"
:show-overflow-tooltip="true"
highlight-current-row
@current-change="handleCurrentChange"
:header-cell-style="{
backgroundColor: '#eff4fa'
}"
>
<el-table-column label="序号" type="index" align="center" width="80" />
<el-table-column label="用户昵称" align="center" prop="nickname" />
<el-table-column label="用户头像" align="center" prop="avatar">
<template #default="scope">
<div style="display: flex; align-items: center; justify-content: center">
<el-image :src="scope.row.avatar" style="width: 160px; height: 90px" />
</div>
</template>
</el-table-column>
<el-table-column label="余额(分)" align="center" prop="balance" />
<el-table-column label="累计支出(分)" align="center" prop="totalExpense" />
<el-table-column label="累计充值(分)" align="center" prop="totalRecharge" />
<el-table-column label="冻结金额(分)" align="center" prop="freezePrice" />
<el-table-column label="操作" align="center" width="160" fixed="right">
<template #default="scope">
<el-button link type="primary" @click="open_drawer(scope.row)"> </el-button>
<el-button link type="sucess" @click="setbalance(scope.row)"> </el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<!-- <WalletForm ref="formRef" @success="getList" /> -->
<!-- 子表的列表 -->
<!-- <ContentWrap>
<el-tabs model-value="walletRecharge">
<el-tab-pane label="会员钱包充值" name="walletRecharge">
<WalletRechargeList :wallet-id="currentRow.id" />
</el-tab-pane>
<el-tab-pane label="会员钱包流水" name="walletTransaction">
<WalletTransactionList :wallet-id="currentRow.id" />
</el-tab-pane>
</el-tabs>
</ContentWrap> -->
<drawer ref="drawerRef" />
</template>
<script setup lang="ts">
import drawer from './components/drawer.vue'
import download from '@/utils/download'
import { WalletApi, WalletVO } from '@/api/pay/wallet/account'
/** 会员钱包 列表 */
defineOptions({ name: 'PayWallet' })
const { t } = useI18n() //
const message = useMessage() //
const loading = ref(true) //
const list = ref<WalletVO[]>([]) //
//
const total = ref(0)
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
userId: undefined,
userType: undefined,
nickname: undefined,
bindId: undefined,
bindType: 2,
balance: undefined,
totalExpense: undefined,
totalRecharge: undefined,
freezePrice: undefined,
createTime: []
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await WalletApi.getWalletPage2(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
queryParams.bindType = 1
handleQuery()
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await WalletApi.exportWallet(queryParams)
download.excel(data, '个人账户.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 选中行操作 */
const currentRow = ref({}) //
const handleCurrentChange = (row) => {
currentRow.value = row
}
const drawerRef = ref()
const open_drawer = (row: any) => {
drawerRef.value.open(row)
}
/** 修改余额 */
const setbalance = async (row) => {
try {
//
const result = await message.prompt(
'请输入"' + row.nickname + '"的需要修改余额',
t('common.reminder')
)
const balance = result.value
//
const params = {
walletId:row.id,
balance:balance
}
await WalletApi.setbalance(params)
getList()
message.success('修改成功' )
// message.success('' + balance)
} catch {}
}
/** 初始化 **/
onMounted(() => {
getList()
})
</script>

@ -50,7 +50,7 @@
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['cloud:battery-retrospect:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>

@ -17,7 +17,7 @@
<el-table-column label="车牌号" align="center" prop="vehicleNo" />
<el-table-column label="车辆型号" align="center" prop="vehicleType" />
<el-table-column label="车辆VIN码" align="center" prop="vehicleVin" />
<el-table-column label="mac地址" align="center" prop="mac" />
<el-table-column label="mac地址" align="center" prop="vehicleMac" />
<el-table-column label="rfid" align="center" prop="rfid" />
</el-table>
<!-- 分页 -->
@ -101,4 +101,8 @@ const handleDelete = async (id: number) => {
await getList()
} catch {}
}
// open
// defineExpose({ handleQuery })
</script>

@ -22,10 +22,10 @@
{{ check_row.nickname }}
</el-descriptions-item>
<el-descriptions-item label="手机号:" label-align="right" align="center">
{{ check_row.phone }}
{{ check_row.mobile }}
</el-descriptions-item>
<el-descriptions-item label="真实姓名:" label-align="right" align="center">
Suzhou
{{ check_row.name }}
</el-descriptions-item>
<el-descriptions-item label="用户性别:" label-align="right" align="center">
<dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="check_row.sex" />
@ -46,7 +46,7 @@
<!-- -->
<div class="title_info" style="margin-top: 20px">名下车辆</div>
<br />
<PersonalVehicleList :team-id="check_row.id" :child_data="child_data" />
<PersonalVehicleList :team-id="check_row.id" :child_data="child_data" />
</el-drawer>
</div>
</template>
@ -56,12 +56,17 @@ import PersonalVehicleList from './PersonalVehicleList.vue'
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
const drawer = ref(false)
const PersonalVehicle = ref(null)
const check_row = ref<any>()
const open = (row: any) => {
// console.log(row, 'row')
check_row.value = row
child_data.value = row.vehicles
drawer.value = true
// setTimeout(() => {
// PersonalVehicle.value.handleQuery()
// }, 1000)
}
const child_data = ref<any>([])

@ -67,7 +67,7 @@
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button> -->
<!-- <el-button
<el-button
type="success"
plain
@click="handleExport"
@ -75,7 +75,7 @@
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button> -->
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
@ -87,6 +87,7 @@
}">
<el-table-column type="index" label="序号" align="center" width="80px" />
<!-- <el-table-column label="换电站编码" align="center" prop="stationNo" /> -->
<el-table-column label="换电站名称" align="center" prop="stationName" width="110"/>
<el-table-column label="售后单号" align="center" prop="no" width="240"/>
<!-- <el-table-column label="退款状态" align="center" prop="status" >
<template #default="scope">
@ -150,7 +151,7 @@
/>
<el-table-column label="交易订单id" align="center" prop="orderId" /> -->
<el-table-column label="操作" align="center">
<el-table-column label="操作" align="center" fixed="right">
<template #default="scope">
<!-- <el-button
link
@ -216,6 +217,7 @@ const queryParams = reactive({
pageNo: 1,
pageSize: 10,
stationNo: undefined,
stationName:undefined,
no: undefined,
status: undefined,
way: undefined,

@ -6,10 +6,10 @@
width="150px">
{{ formData.stationNo || "--" }}
</el-descriptions-item>
<el-descriptions-item label="用户id" label-class-name="my-label"
<el-descriptions-item label="用户名称" label-class-name="my-label"
class-name="my-content"
width="150px">
{{ formData.userId || "--" }}
{{ formData.nickName || "--" }}
</el-descriptions-item>
<el-descriptions-item label="用户名" label-class-name="my-label"
class-name="my-content"

@ -14,9 +14,10 @@
<el-input v-model="formData.stationNo" placeholder="请输入换电站编码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户id" prop="userId">
<el-input v-model="formData.userId" placeholder="请输入用户id" />
<el-form-item label="用户名称" prop="nickName">
<el-input v-model="formData.nickName" placeholder="请输入用户名称" />
</el-form-item>
</el-col>
<el-col :span="12">
@ -162,6 +163,8 @@ const formLoading = ref(false) // 表单的加载中1修改时的数据加
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
stationName:undefined,
nickName:undefined,
stationNo: undefined,
userId: undefined,
vehicleNo: undefined,

@ -17,10 +17,10 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="用户id" prop="userId">
<el-form-item label="用户名称" prop="nickName">
<el-input
v-model="queryParams.userId"
placeholder="请输入用户id"
placeholder="请输入用户名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -110,7 +110,7 @@
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<!-- <el-button
<el-button
type="success"
plain
@click="handleExport"
@ -118,7 +118,7 @@
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button> -->
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
@ -129,19 +129,20 @@
backgroundColor: '#eff4fa'
}">
<!-- <el-table-column label="主键" align="center" prop="id" /> -->
<el-table-column label="换电站编码" align="center" prop="stationNo" />
<el-table-column label="用户id" align="center" prop="userId" />
<el-table-column label="车辆编码" align="center" prop="vehicleNo" />
<el-table-column label="预约单号" align="center" prop="orderNo" />
<el-table-column label="车辆vim码" align="center" prop="vehicleVin" />
<el-table-column label="换电站编码" align="center" prop="stationNo" width="110"/>
<el-table-column label="换电站名称" align="center" prop="stationName" width="120"/>
<el-table-column label="用户名称" align="center" prop="nickName" width="120"/>
<el-table-column label="车辆编码" align="center" prop="vehicleNo" width="120"/>
<el-table-column label="预约单号" align="center" prop="orderNo" width="250"/>
<el-table-column label="车辆vim码" align="center" prop="vehicleVin" width="178"/>
<el-table-column label="电池类型" align="center" prop="batteryType" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.BTYTYPE" :value="scope.row.batteryType" />
</template>
</el-table-column>
<el-table-column label="预约电池编号" align="center" prop="batteryNos" />
<el-table-column label="预约电池编号" align="center" prop="batteryNos" width="240" />
<el-table-column label="预约数量" align="center" prop="batnum" />
<el-table-column label="预约电池锁仓仓号" align="center" prop="binNos" />
<el-table-column label="预约电池锁仓仓号" align="center" prop="binNos" width="250"/>
<el-table-column
label="预约时间"
align="center"
@ -157,7 +158,7 @@
width="180px"
/>
<el-table-column label="预约单状态"
align="center" prop="status" >
align="center" prop="status" width="120" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.RESERVATION_STATUS" :value="scope.row.status" />
</template>
@ -177,7 +178,7 @@
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="换电订单编号" align="center" prop="swapOrderNo" />
<el-table-column label="换电订单编号" align="center" prop="swapOrderNo" width="110"/>
<el-table-column
label="创建时间"
align="center"
@ -259,6 +260,7 @@ const queryParams = reactive({
pageNo: 1,
pageSize: 10,
stationNo: undefined,
stationName:undefined,
userId: undefined,
vehicleNo: undefined,
orderNo: undefined,

@ -75,10 +75,10 @@
<el-table-column label="换电站编码" align="center" prop="stationNo" />
<el-table-column label="换电站名称" align="center" prop="stationName" />
<el-table-column label="时间" align="center" prop="time" />
<el-table-column label="统计" align="center" prop="count" />
<el-table-column label="换电营收" align="center" prop="swapRevenue" />
<el-table-column label="充电营收" align="center" prop="chargeRevenue" />
<el-table-column label="失败统计" align="center" prop="loseCount" />
<el-table-column label="换电成功" align="center" prop="count" />
<!-- <el-table-column label="换电营收" align="center" prop="swapRevenue" />
<el-table-column label="充电营收" align="center" prop="chargeRevenue" /> -->
<el-table-column label="换电失败" align="center" prop="loseCount" />
<!-- <el-table-column label="开始时间" align="center" prop="startTime" />
<el-table-column label="结束时间" align="center" prop="endTime" />
<el-table-column label="类型" align="center" prop="type" >
@ -158,7 +158,7 @@ const station_table_list = ref([
}
])
const queryParams = reactive({
type: 2,
type: 3,
stationNos: [],
startTime: null,
endTime: null
@ -362,7 +362,7 @@ const eChartOptions = reactive<EChartsOption>({
const resetQuery = () => {
// queryFormRef.value.resetFields()
queryParams.type= 2
queryParams.type= 3
queryParams.stationNos=[]
btyCoresProduceDate.value=[]
queryParams.startTime=null

@ -75,12 +75,12 @@
<el-table-column label="换电站编码" align="center" prop="stationNo" />
<el-table-column label="换电站名称" align="center" prop="stationName" />
<el-table-column label="时间" align="center" prop="time" />
<el-table-column label="统计" align="center" prop="count" />
<!-- <el-table-column label="统计" align="center" prop="count" />
<el-table-column label="换电营收" align="center" prop="swapRevenue" />
<el-table-column label="充电营收" align="center" prop="chargeRevenue" />
<el-table-column label="失败统计" align="center" prop="loseCount" />
<el-table-column label="失败统计" align="center" prop="loseCount" /> -->
<el-table-column label="充电次数" align="center" prop="chargeQuantity" />
<el-table-column label="充电时长" align="center" prop="chargeTime" />
<el-table-column label="充电时长(min)" align="center" prop="chargeTime" />
</el-table>
<!-- <Pagination
:total="total"
@ -108,7 +108,7 @@ const loading = ref(false) // 列表的加载中
const total = ref(0)
const list2 = ref([])
const queryParams = reactive({
type: 2,
type: 3,
stationNos: [],
startTime: null,
endTime: null
@ -265,7 +265,7 @@ const eChartOptions = reactive<EChartsOption>({
const resetQuery = () => {
// queryFormRef.value.resetFields()
}
queryParams.type= 2
queryParams.type= 3
queryParams.stationNos=[]
btyCoresProduceDate.value=[]
queryParams.startTime=null

@ -75,10 +75,10 @@
<el-table-column label="换电站编码" align="center" prop="stationNo" />
<el-table-column label="换电站名称" align="center" prop="stationName" />
<el-table-column label="时间" align="center" prop="time" />
<el-table-column label="统计" align="center" prop="count" />
<el-table-column label="换电营收" align="center" prop="swapRevenue" />
<el-table-column label="充电营收" align="center" prop="chargeRevenue" />
<el-table-column label="失败统计" align="center" prop="loseCount" />
<!-- <el-table-column label="统计" align="center" prop="count" /> -->
<el-table-column label="换电营收(分)" align="center" prop="swapRevenue" />
<!-- <el-table-column label="充电营收" align="center" prop="chargeRevenue" /> -->
<!-- <el-table-column label="失败统计" align="center" prop="loseCount" /> -->
</el-table>
<!-- <Pagination
:total="total"
@ -105,7 +105,7 @@ const list2 = ref([])
const total = ref(0)
const queryParams = reactive({
type: 2,
type: 3,
stationNos: [],
startTime: null,
endTime: null
@ -258,7 +258,7 @@ const eChartOptions = reactive<EChartsOption>({
/** 重置按钮操作 */
const resetQuery = () => {
// queryFormRef.value.resetFields()
queryParams.type= 2
queryParams.type= 3
queryParams.stationNos=[]
btyCoresProduceDate.value=[]
queryParams.startTime=null

@ -81,11 +81,31 @@
<el-table-column label="换电站编码" align="center" prop="stationNo" />
<el-table-column label="换电站名称" align="center" prop="stationName" />
<el-table-column label="时间" align="center" prop="time" />
<el-table-column label="尖时段电量" align="center" prop="theTipElectric" />
<el-table-column label="峰时段电量" align="center" prop="peakElectric" />
<el-table-column label="平时段电量" align="center" prop="flatElectric" />
<el-table-column label="谷时段电量" align="center" prop="theValleyElectric" />
<el-table-column label="尖峰平谷总用电量" align="center" prop="countCapacity" />
<el-table-column label="尖时段电量" align="center" prop="theTipElectric" >
<template #default="scope">
{{parseFloat(scope.row.theTipElectric).toFixed(2)}}
</template>
</el-table-column>
<el-table-column label="峰时段电量" align="center" prop="peakElectric" >
<template #default="scope">
{{parseFloat(scope.row.peakElectric).toFixed(2)}}
</template>
</el-table-column>
<el-table-column label="平时段电量" align="center" prop="flatElectric" >
<template #default="scope">
{{parseFloat(scope.row.flatElectric).toFixed(2)}}
</template>
</el-table-column>
<el-table-column label="谷时段电量" align="center" prop="theValleyElectric" >
<template #default="scope">
{{parseFloat(scope.row.theValleyElectric).toFixed(2)}}
</template>
</el-table-column>
<el-table-column label="尖峰平谷总用电量" align="center" prop="countCapacity" >
<template #default="scope">
{{parseFloat(scope.row.countCapacity).toFixed(2)}}
</template>
</el-table-column>
</el-table>
<!-- <Pagination
:total="total"
@ -113,9 +133,10 @@ const total = ref(0)
const queryParams = reactive({
stationNos: [],
type: 2,
type: 3,
startTime: null,
endTime: null
endTime: null,
// elecType:5,
})
const queryFormRef = ref() //
const btyCoresProduceDate = ref([])
@ -335,7 +356,7 @@ const eChartOptions = reactive<EChartsOption>({
/** 重置按钮操作 */
const resetQuery = () => {
// queryFormRef.value.resetFields()
queryParams.type= 2
queryParams.type= 3
queryParams.stationNos=[]
btyCoresProduceDate.value=[]
queryParams.startTime=null

@ -82,11 +82,31 @@
<el-table-column label="换电站编码" align="center" prop="stationNo" />
<el-table-column label="换电站名称" align="center" prop="stationName" />
<el-table-column label="时间" align="center" prop="time" />
<el-table-column label="尖时段电量" align="center" prop="theTipElectricAcMeter" />
<el-table-column label="峰时段电量" align="center" prop="peakElectricAcMeter" />
<el-table-column label="平时段电量" align="center" prop="flatElectricAcMeter" />
<el-table-column label="谷时段电量" align="center" prop="theValleyElectricAcMeter" />
<el-table-column label="尖峰平谷总用电量" align="center" prop="countCapacityAcMeter" />
<el-table-column label="尖时段电量" align="center" prop="theTipElectricAcMeter" >
<template #default="scope">
{{parseFloat(scope.row.theTipElectricAcMeter).toFixed(2)}}
</template>
</el-table-column>
<el-table-column label="峰时段电量" align="center" prop="peakElectricAcMeter" >
<template #default="scope">
{{parseFloat(scope.row.peakElectricAcMeter).toFixed(2)}}
</template>
</el-table-column>
<el-table-column label="平时段电量" align="center" prop="flatElectricAcMeter" >
<template #default="scope">
{{parseFloat(scope.row.flatElectricAcMeter).toFixed(2)}}
</template>
</el-table-column>
<el-table-column label="谷时段电量" align="center" prop="theValleyElectricAcMeter" >
<template #default="scope">
{{parseFloat(scope.row.theValleyElectricAcMeter).toFixed(2)}}
</template>
</el-table-column>
<el-table-column label="尖峰平谷总用电量" align="center" prop="countCapacityAcMeter" >
<template #default="scope">
{{parseFloat(scope.row.countCapacityAcMeter).toFixed(2)}}
</template>
</el-table-column>
</el-table>
<!-- <Pagination
:total="total"
@ -116,8 +136,8 @@ const btyCoresProduceDate = ref([])
const list2 = ref([])
const queryParams = reactive({
stationNos: [],
type: 2,
// elecType: 4,
type: 3,
elecType: 4,
startTime: null,
endTime: null
})
@ -341,7 +361,7 @@ const eChartOptions = reactive<EChartsOption>({
/** 重置按钮操作 */
const resetQuery = () => {
// queryFormRef.value.resetFields()
queryParams.type= 2
queryParams.type= 3
queryParams.stationNos=[]
btyCoresProduceDate.value=[]
queryParams.startTime=null

@ -109,7 +109,7 @@
</el-table-column> -->
<el-table-column label="车队账户" align="center" prop="openFlag">
<template #default="scope">
<el-button link type="primary" @click="opencarteamlist(scope.row.teamCode)"> </el-button>
<el-button link type="primary" @click="opencarteamlist(scope.row)"> </el-button>
</template>
</el-table-column>

@ -79,28 +79,29 @@
<el-table-column label="编号" align="center" prop="id" width="150px" />
<!-- <el-table-column label="用户id" align="center" prop="userId" /> -->
<el-table-column label="用户名" align="center" prop="userName" />
<el-table-column label="手机号" align="center" prop="phone" />
<el-table-column label="手机号" align="center" prop="phone" width="160"/>
<el-table-column label="申请车队名称" align="center" prop="teamName" width="110" />
<!-- <el-table-column label="车队id" align="center" prop="teamId" />
<el-table-column label="车辆id" align="center" prop="vehicleId" /> -->
<el-table-column label="车牌号" align="center" prop="vehicleNo" />
<el-table-column label="vin码" align="center" prop="vin" />
<el-table-column label="行驶证图片" align="center" prop="vehicleLicense">
<el-table-column label="行驶证图片" align="center" prop="vehicleLicense" width="200">
<template #default="{ row }">
<div style="display: flex; align-items: center; justify-content: center">
<el-image :src="row.vehicleLicense" style="width: 160px; height: 90px" />
</div>
</template>
</el-table-column>
<el-table-column label="电动机编号" align="center" prop="engineNo" />
<el-table-column label="申请认证时间" align="center" prop="applyTime" />
<el-table-column label="审核状态" align="center" prop="auditState">
<el-table-column label="电动机编号" align="center" prop="engineNo" width="100"/>
<el-table-column label="申请认证时间" align="center" prop="applyTime" width="140"/>
<el-table-column label="审核状态" align="center" prop="auditState" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.AUDIT_STATUS" :value="scope.row.auditState" />
</template>
</el-table-column>
<el-table-column label="审核原因 " align="center" prop="auditReason" />
<!-- <el-table-column label="审核id" align="center" prop="auditId" /> -->
<el-table-column label="审核人" align="center" prop="auditName" />
<el-table-column label="审核人" align="center" prop="auditName" width="100"/>
<el-table-column label="审核时间" align="center" prop="nauditTimeame" />
<!-- <el-table-column
label="创建时间"
@ -109,7 +110,7 @@
:formatter="dateFormatter"
width="180px"
/> -->
<el-table-column label="操作" align="center" width="150px">
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<!-- <el-button
link

@ -39,8 +39,8 @@
</template>
</el-table-column>-->
<el-row type="flex" justify="space-around">
<el-col :span="11">
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="车辆型号" prop="vehicleType">
<el-select
v-model="formData.vehicleType"
@ -57,90 +57,91 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
<el-col :span="12">
<el-form-item label="车牌号" prop="vehicleNo">
<el-input v-model="formData.vehicleNo" placeholder="请输入车牌号" />
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="space-around">
<el-col :span="11">
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="车辆VIN码" prop="vehicleVin">
<el-input v-model="formData.vehicleVin" placeholder="请输入车辆VIN码" />
</el-form-item>
</el-col>
<!-- <el-col :span="11">
<!-- <el-col :span="12">
<el-form-item label="mac地址" prop="mac">
<el-input v-model="formData.mac" placeholder="请输入mac地址" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-col :span="12">
<el-form-item label="rfid" prop="rfid">
<el-input v-model="formData.rfid" placeholder="请输入rfid" />
</el-form-item>
</el-col> -->
<!-- <el-col :span="11">
<!-- <el-col :span="12">
<el-form-item label="品牌" prop="brand">
<el-input v-model="formData.brand" placeholder="请输入品牌" />
</el-form-item>
</el-col> -->
<el-col :span="11">
<!-- <el-col :span="12">
<el-form-item label="车辆外观" prop="vehicleApc">
<el-input v-model="formData.vehicleApc" placeholder="请输入车辆外观" />
</el-form-item>
</el-col> -->
<el-col :span="12">
<el-form-item label="车辆性质" prop="vehicleProperty">
<el-select v-model="formData.vehicleProperty" clearable placeholder="请选择状态" style="width: 100%;">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.VEHICLEPROPERTY)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<!-- <el-col :span="11">
<!-- <el-col :span="12">
<el-form-item label="底盘号码" prop="chassisNumber">
<el-input v-model="formData.chassisNumber" placeholder="请输入底盘号码" />
</el-form-item>
</el-col> -->
<!-- <el-col :span="11">
<!-- <el-col :span="12">
<el-form-item label="电动机号码" prop="engineNumber">
<el-input v-model="formData.engineNumber" placeholder="请输入电动机号码" />
</el-form-item>
</el-col> -->
<!-- <el-col :span="11">
<!-- <el-col :span="12">
<el-form-item label="购车日期" prop="purchaseDate">
<el-input v-model="formData.purchaseDate" placeholder="请输入购车日期" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-col :span="12">
<el-form-item label="车辆厂家" prop="producer">
<el-input v-model="formData.producer" placeholder="请输入车辆厂家" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-col :span="12">
<el-form-item label="所有人" prop="possessor">
<el-input v-model="formData.possessor" placeholder="请输入所有人" />
</el-form-item>
</el-col> -->
<el-row type="flex" justify="space-around">
<el-col :span="11">
<el-form-item label="车辆性质" prop="vehicleProperty">
<el-select v-model="formData.vehicleProperty" clearable placeholder="请选择状态" style="width: 100%;">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.VEHICLEPROPERTY)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-row :gutter="24">
<!--
<el-col :span="11">
<el-col :span="12">
<el-form-item label="营业开始时间" prop="vehiclestartTimeApc">
<el-input v-model="formData.startTime" placeholder="请输入营业开始时间" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-col :span="12">
<el-form-item label="营业结束时间" prop="endTime">
<el-input v-model="formData.endTime" placeholder="请输入营业结束时间" />
</el-form-item>
</el-col> -->
<el-col :span="11">
<el-col :span="12">
<el-form-item label="是否允许离线换电" prop="canOffline">
<el-select v-model="formData.canOffline" clearable placeholder="请选择状态" style="width: 100%;">
<el-option
@ -152,9 +153,7 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="space-around">
<el-col :span="11">
<el-col :span="12">
<el-form-item label="状态" prop="status">
<el-select v-model="formData.status" clearable placeholder="请选择状态" style="width: 100%;">
<el-option
@ -166,12 +165,18 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="车辆外观" prop="vehicleApc">
<UploadImgs v-model:modelValue="formData.vehicleApc" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>

Loading…
Cancel
Save