9.23 问题点修改

master
zz 2 months ago
parent 5817fff11f
commit 5bf82697f7

@ -1,66 +1,71 @@
import request from '@/config/axios'
// 电池追溯记录 VO
export interface BatteryRetrospectVO {
// 主键ID
id: number
// 换电站编码
stationNo: string
// 电池编码
batteryNo: string
// 安装位置1换电站2车辆
position: number
// 安装时间
installationTime: Date
// 车牌号
vehicleNo: string
// 车辆VIN码
vehicleVin: string
// soc
soc: number
// soe
soe: number
// soh
soh: number
// 额定容量
ratedCapacity: number
// 额定电压
ratedVoltage: number
// 用户编号
userId: number
// 仓位编号
binNo: string
}
// 电池追溯记录 API
export const BatteryRetrospectApi = {
// 查询电池追溯记录分页
getBatteryRetrospectPage: async (params: any) => {
return await request.get({ url: `/cloud/battery-retrospect/page`, params })
},
// 查询电池追溯记录详情
getBatteryRetrospect: async (id: number) => {
return await request.get({ url: `/cloud/battery-retrospect/get?id=` + id })
},
// 新增电池追溯记录
createBatteryRetrospect: async (data: BatteryRetrospectVO) => {
return await request.post({ url: `/cloud/battery-retrospect/create`, data })
},
// 修改电池追溯记录
updateBatteryRetrospect: async (data: BatteryRetrospectVO) => {
return await request.put({ url: `/cloud/battery-retrospect/update`, data })
},
// 删除电池追溯记录
deleteBatteryRetrospect: async (id: number) => {
return await request.delete({ url: `/cloud/battery-retrospect/delete?id=` + id })
},
// 导出电池追溯记录 Excel
exportBatteryRetrospect: async (params) => {
return await request.download({ url: `/cloud/battery-retrospect/export-excel`, params })
},
}
import request from '@/config/axios'
import { any } from 'vue-types'
// 电池追溯记录 VO
export interface BatteryRetrospectVO {
// 主键ID
id: number
// 换电站编码
stationNo: string
// 电池编码
batteryNo: string
// 安装位置1换电站2车辆
position: number
// 安装时间
installationTime: Date
// 车牌号
vehicleNo: string
// 车辆VIN码
vehicleVin: string
// soc
soc: number
// soe
soe: number
// soh
soh: number
// 额定容量
ratedCapacity: number
// 额定电压
ratedVoltage: number
// 用户编号
userId: number
// 仓位编号
binNo: string
}
// 电池追溯记录 API
export const BatteryRetrospectApi = {
// 查询电池追溯记录分页
getBatteryRetrospectPage: async (params: any) => {
return await request.get({ url: `/cloud/battery-retrospect/page`, params })
},
// 查询电池追溯记录详情
getBatteryRetrospect: async (id: number) => {
return await request.get({ url: `/cloud/battery-retrospect/get?id=` + id })
},
// 详情里的表单数据
getBatteryRetros: async (params:any) => {
return await request.get({ url: `/cloud/battery-retrospect/pageDetails`,params })
},
// 新增电池追溯记录
createBatteryRetrospect: async (data: BatteryRetrospectVO) => {
return await request.post({ url: `/cloud/battery-retrospect/create`, data })
},
// 修改电池追溯记录
updateBatteryRetrospect: async (data: BatteryRetrospectVO) => {
return await request.put({ url: `/cloud/battery-retrospect/update`, data })
},
// 删除电池追溯记录
deleteBatteryRetrospect: async (id: number) => {
return await request.delete({ url: `/cloud/battery-retrospect/delete?id=` + id })
},
// 导出电池追溯记录 Excel
exportBatteryRetrospect: async (params) => {
return await request.download({ url: `/cloud/battery-retrospect/export-excel`, params })
},
}

@ -12,7 +12,7 @@ export interface AmtOrderVO {
vehicleNo: string
// 预约单号
orderNo: string
// 车辆vim
// 车辆vin
vehicleVin: string
// 电池类型
batteryType: string

@ -126,10 +126,13 @@ export enum DICT_TYPE {
RESERVATION_STATUS = 'reservation_status',//
STATISTICAL_TIME_TYPE = 'statistical_time_type',
MAINTENANCE_STATUS = 'maintenance_status',//0未保养1已保养
EQUIP_TYPE_CODE = 'equip_type_code',
ALARM_LEVEL ='alarm_level',
MAINTENANCE_LEVEL= 'maintenance_level',
DRIVER_AUDIT_STATUS = 'driver_audit_status',
CHARGER_TYPE = 'charger_type',
CHARGER_TYPE_OUT = 'charger_type_out',
GUN_LIST = 'gun_list',
GUNSTATUS = 'gunstatus',
REFUND_STATUS = 'refund_status',
REFUND_STATUS_two = 'refund_status_two',

@ -1,5 +1,5 @@
<template>
<el-drawer title="基本信息" v-model="dialogVisible">
<el-drawer title="基本信息" v-model="dialogVisible" size="60%">
<!-- <el-form
ref="formRef"
:model="formData"

@ -0,0 +1,135 @@
<template>
<!-- 列表 -->
<ContentWrap>
<!-- <el-button type="primary" plain @click="openForm('create')" v-hasPermi="['member:user:create']">
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button> -->
<el-table
:data="list"
height="400"
:stripe="true"
:show-overflow-tooltip="true"
:header-cell-style="{
backgroundColor: '#eff4fa'
}"
>
<!-- <el-table-column label="id" align="center" prop="id" /> -->
<el-table-column label="换电站编码" align="center" prop="stationNo" width="100"/>
<el-table-column label="电池编码" align="center" prop="batteryNo" />
<el-table-column label="安装位置" align="center" prop="position">
<template #default="scope">
<dict-tag :type="DICT_TYPE.SETPOSITION" :value="scope.row.position" />
</template>
</el-table-column>
<el-table-column
label="安装时间"
align="center"
prop="installationTime"
:formatter="dateFormatter"
/>
<el-table-column label="车牌号" align="center" prop="vehicleNo" />
<el-table-column label="车辆VIN码" align="center" prop="vehicleVin" width="120"/>
<el-table-column label="soc" align="center" prop="soc" />
<el-table-column label="soe" align="center" prop="soe" />
<el-table-column label="soh" align="center" prop="soh" />
<el-table-column label="额定容量" align="center" prop="ratedCapacity" />
<el-table-column label="额定电压" align="center" prop="ratedVoltage" />
<el-table-column label="用户编号" align="center" prop="userId" />
<el-table-column label="仓位编号" align="center" prop="binNo" />
<el-table-column label="换电站名称 " align="center" prop="stationName" width="120"/>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<!-- <PersonalVehicleForm ref="formRef" @success="getList" /> -->
</template>
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
// import PersonalVehicleForm from './PersonalVehicleForm.vue'
import {
BatteryRetrospectApi,
BatteryRetrospectVO
} from '@/api/batteryManagement/batteryretrospect'
const { t } = useI18n() //
const message = useMessage() //
const props = defineProps<{
batteryNo: undefined // id
// eslint-disable-next-line vue/prop-name-casing
}>()
const loading = ref(false) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
batteryNo: undefined
})
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await BatteryRetrospectApi.getBatteryRetros(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
if (!props.batteryNo) {
message.error('请选择一个会员用户')
return
}
formRef.value.open(type, id, props.batteryNo)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await UserApi.deletePersonalVehicle(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 监听主表的关联字段的变化,加载对应的子表数据 */
watch(
() => props.batteryNo,
(val) => {
queryParams.batteryNo = val
getList()
// handleQuery()
},
{ immediate: true,deep:true }
)
// open
// defineExpose({ handleQuery })
// onMounted(() => {
// getList ()
// })
</script>

@ -0,0 +1,177 @@
<template>
<el-drawer title="电池追溯详情" v-model="dialogVisible" size="60%">
<div class="title_info" style="margin-top: 20px">基础信息</div>
<br />
<el-descriptions :column="3" border>
<el-descriptions-item label="换电站名称" label-class-name="my-label"
class-name="my-content"
width="150px">
{{ formData.stationNo || "--" }}
</el-descriptions-item>
<el-descriptions-item label="电池编码" label-class-name="my-label"
class-name="my-content"
width="150px">
{{ formData.batteryNo || "--" }}
</el-descriptions-item>
<el-descriptions-item label="安装位置" label-class-name="my-label"
class-name="my-content"
width="150px">
<dict-tag :type="DICT_TYPE.SETPOSITION" :value="formData.position" />
</el-descriptions-item>
<el-descriptions-item label="安装时间" >
{{ formData.installationTime || "--" }}
</el-descriptions-item>
<el-descriptions-item label="车牌号" >
{{ formData.vehicleNo || "--" }}
</el-descriptions-item>
<el-descriptions-item label="车辆VIN码" >
{{ formData.vehicleVin || "--" }}
</el-descriptions-item>
<el-descriptions-item label="soc" >
{{ formData.soc || "--" }}
</el-descriptions-item>
<el-descriptions-item label="soe" >
{{ formData.soe || "--" }}
</el-descriptions-item>
<el-descriptions-item label="soh" >
{{ formData.soh || "--" }}
</el-descriptions-item>
<el-descriptions-item label="额定容量" >
{{ formData.ratedCapacity || "--" }}
</el-descriptions-item>
<el-descriptions-item label="额定电压" >
{{ formData.ratedVoltage || "--" }}
</el-descriptions-item>
<el-descriptions-item label="仓位编号" >
{{ formData.binNo || "--" }}
</el-descriptions-item>
</el-descriptions>
<div class="title_info" style="margin-top: 20px">电池追溯记录详情列表</div>
<br />
<BatteryList :batteryNo="formData.batteryNo" ref="batteryList"/>
</el-drawer>
</template>
<script setup lang="ts">
import {
BatteryRetrospectApi,
BatteryRetrospectVO
} from '@/api/batteryManagement/batteryretrospect'
import BatteryList from './BatteryList.vue'
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
/** 电池追溯记录 表单 */
defineOptions({ name: 'BatteryRetrospectForm' })
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const batteryList =ref()
const formData = ref({
id: undefined,
stationNo: undefined,
batteryNo: undefined,
position: undefined,
installationTime: undefined,
vehicleNo: undefined,
vehicleVin: undefined,
soc: undefined,
soe: undefined,
soh: undefined,
ratedCapacity: undefined,
ratedVoltage: undefined,
userId: undefined,
binNo: undefined
})
const formRules = reactive({
stationNo: [{ required: true, message: '换电站编码不能为空', trigger: 'blur' }],
batteryNo: [{ required: true, message: '电池编码不能为空', trigger: 'blur' }],
position: [{ required: true, message: '安装位置1换电站2车辆不能为空', trigger: 'change' }],
installationTime: [{ required: true, message: '安装时间不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (id?: number) => {
resetForm()
//
if (id) {
formLoading.value = true
try {
formData.value = await BatteryRetrospectApi.getBatteryRetrospect(id)
} finally {
formLoading.value = false
}
}
dialogVisible.value = true
}
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 BatteryRetrospectApi.BatteryRetrospectVO
if (formType.value === 'create') {
await BatteryRetrospectApi.createBatteryRetrospect(data)
message.success(t('common.createSuccess'))
} else {
await BatteryRetrospectApi.updateBatteryRetrospect(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
stationNo: undefined,
batteryNo: undefined,
position: undefined,
installationTime: undefined,
vehicleNo: undefined,
vehicleVin: undefined,
soc: undefined,
soe: undefined,
soh: undefined,
ratedCapacity: undefined,
ratedVoltage: undefined,
userId: undefined,
binNo: undefined
}
formRef.value?.resetFields()
}
</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>

@ -88,9 +88,17 @@
<el-table-column label="额定容量" align="center" prop="ratedCapacity" />
<el-table-column label="额定电压" align="center" prop="ratedVoltage" />
<el-table-column label="仓位编号" align="center" prop="binNo" />
<!-- <el-table-column label="操作" align="center">
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
link
type="danger"
@click="openDetail(scope.row.id)"
>
详情
</el-button>
<!-- <el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
@ -105,9 +113,9 @@
v-hasPermi="['cloud:battery-retrospect:delete']"
>
删除
</el-button>
</el-button> -->
</template>
</el-table-column> -->
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
@ -120,6 +128,7 @@
<!-- 表单弹窗添加/修改 -->
<BatteryRetrospectForm ref="formRef" @success="getList" />
<BatteryRetrospectDetails ref="detailRef" />
</template>
<script setup lang="ts">
@ -130,6 +139,7 @@ import {
BatteryRetrospectVO
} from '@/api/batteryManagement/batteryretrospect'
import BatteryRetrospectForm from './BatteryRetrospectForm.vue'
import BatteryRetrospectDetails from './BatteryRetrospectDetails.vue'
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { StationInfoApi, StationInfoVO } from '@/api/share/stationinfo'
@ -193,6 +203,11 @@ const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 详情 */
const detailRef = ref()
const openDetail = (id?: number) => {
detailRef.value.open(id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {

@ -16,7 +16,7 @@
width="150px">
{{ formData.chargingRackId || "--" }}
</el-descriptions-item> -->
<el-descriptions-item label="换电站编码" l>
<el-descriptions-item label="换电站编码" >
{{ formData.stationNo || "--" }}
</el-descriptions-item>
@ -59,12 +59,13 @@
<el-descriptions-item label="电池序列号" >
{{ formData.batteryNo || "--" }}
</el-descriptions-item>
<el-descriptions-item label="当前SOC" >
{{ formData.currentSoc || "--" }}
</el-descriptions-item>
-->
<el-descriptions-item label="充电枪数量" >
{{ formData.chargeGunCount || "--" }}
</el-descriptions-item>
</el-descriptions>
<div class="title_info" style="margin-top: 20px">枪列表</div>
<div class="title_info" style="margin-top: 20px">充电枪列表</div>
<br />
<GunList :stationNo="stationNo" ref="guninfo" :chargeId="chargeId"/>
<template #footer>
@ -122,6 +123,7 @@ import { number } from 'vue-types';
bin: undefined,
chargingRackId: undefined,
batteryNo: undefined,
chargeGunCount:undefined,
})
const formRules = reactive({
stationNo: [{ required: true, message: '换电站编码不能为空', trigger: 'blur' }],
@ -134,7 +136,7 @@ import { number } from 'vue-types';
/** 打开弹窗 */
const open = async (item:any) => {
// const open = async (row) => {
dialogVisible.value = true
stationNo.value=item?.stationNo
chargeId.value=item?.id
resetForm()
@ -148,6 +150,8 @@ import { number } from 'vue-types';
formLoading.value = false
}
}
dialogVisible.value = true
}
defineExpose({ open }) // open

@ -17,7 +17,7 @@
class="!w-240px"
/>
</el-form-item> -->
<el-form-item label="枪号" prop="gunNo">
<el-input
v-model="queryParams.gunNo"
@ -51,15 +51,10 @@
class="!w-240px"
/>
</el-form-item>
<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="primary"
plain
@click="openForm('create')"
>
<el-button type="primary" plain @click="openForm('create')">
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
@ -77,19 +72,25 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" :header-cell-style="{
<el-table
v-loading="loading"
:data="list"
:stripe="true"
:show-overflow-tooltip="true"
:header-cell-style="{
backgroundColor: '#eff4fa'
}">
<el-table-column label="序号" type="index" align="center" width="80" />
}"
>
<el-table-column label="序号" type="index" align="center" width="80" />
<!-- <el-table-column label="id" align="center" prop="id" /> -->
<!-- <el-table-column label="换电站编码" align="center" prop="stationNo" /> -->
<!-- <el-table-column label="电接头连接状态" align="center" prop="connectionState" >
<!-- <el-table-column label="换电站编码" align="center" prop="stationNo" /> -->
<!-- <el-table-column label="电接头连接状态" align="center" prop="connectionState" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.STATE_ELECTRICALCO_NNECTOR" :value="scope.row.connectionState" />
</template>
</el-table-column> -->
<el-table-column label="枪号" align="center" prop="gunNo" />
<el-table-column label="枪的工作状态" align="center" prop="chargeState" >
<el-table-column label="枪的工作状态" align="center" prop="chargeState" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.GUNSTATUS" :value="scope.row.chargeState" />
</template>
@ -108,34 +109,27 @@
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="已经充电时间 单位分钟" align="center" prop="chargeTime" />
<el-table-column label="充电开始SOC" align="center" prop="startSoc" />
<el-table-column label="当前SOC" align="center" prop="currentSoc" />
<el-table-column label="已经充电时间(分钟)" align="center" prop="chargeTime" width="180" />
<el-table-column label="充电开始SOC" align="center" prop="startSoc" width="120" />
<el-table-column label="当前SOC" align="center" prop="currentSoc" width="100" />
<!-- <el-table-column label="充电开始SOE" align="center" prop="startSoe" /> -->
<!-- <el-table-column label="当前SOE" align="center" prop="currentSoe" /> -->
<el-table-column label="当前充电电压" align="center" prop="currentVoltage" />
<el-table-column label="当前充电电流" align="center" prop="currentElectricCurrent" />
<el-table-column label="当前充电电压" align="center" prop="currentVoltage" width="120" />
<el-table-column
label="当前充电电流"
align="center"
prop="currentElectricCurrent"
width="120"
/>
<!-- <el-table-column label="BMS需求电压" align="center" prop="bmsVoltage" /> -->
<!-- <el-table-column label="BMS需求电流" align="center" prop="bmsElectricCurrent" /> -->
<el-table-column label="操作" align="center" fixed="right" width="140">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
>
<el-button link type="primary" @click="openForm('update', scope.row.id)">
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
>
删除
</el-button>
<el-button link type="danger" @click="handleDelete(scope.row.id)"> </el-button>
</template>
</el-table-column>
</el-table>
@ -163,13 +157,13 @@ defineOptions({ name: 'ChargeGun' })
const props = defineProps({
stationNo: {
type:String,
default:''
type: String,
default: ''
},
chargeId: {
type:String,
default:''
},
type: String,
default: ''
}
})
const message = useMessage() //
const { t } = useI18n() //
@ -181,7 +175,7 @@ const total = ref(0)
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
stationNo:undefined,
stationNo: undefined,
connectionState: undefined,
gunNo: undefined,
chargeState: undefined,
@ -198,7 +192,7 @@ const queryParams = reactive({
currentElectricCurrent: undefined,
bmsVoltage: undefined,
bmsElectricCurrent: undefined,
createTime: [],
createTime: []
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
@ -207,11 +201,13 @@ const exportLoading = ref(false) // 导出的加载中
const getList = async () => {
loading.value = true
try {
queryParams.stationNo = props.stationNo
const data = await ChargeGunApi.getChargeGunPage(queryParams)
list.value = data.list
const params = {
stationNo: props.stationNo,
chargeId: props.chargeId
}
console.log( list.value,"xxxxxxx")
const data = await ChargeGunApi.getChargeGunPage(params)
list.value = data.list
// total.value = data.total
} finally {
loading.value = false
@ -233,8 +229,8 @@ const resetQuery = () => {
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
console.log('props.stationNo',props)
formRef.value.open(type, id,props.stationNo,props.chargeId)
console.log('props.stationNo', props)
formRef.value.open(type, id, props.stationNo, props.chargeId)
}
/** 删除按钮操作 */
@ -269,10 +265,16 @@ const handleExport = async () => {
// onMounted(() => {
// getList()
// })
watch(()=>props.stationNo,(newValue)=>{
getList()
},{
deep:true,
immediate:true
})
watch(
() => props.chargeId,
(newValue) => {
getList()
},
{
deep: true,
immediate: true
}
)
</script>

@ -75,13 +75,7 @@
<dict-tag :type="DICT_TYPE.STATE_FAILURE" :value="scope.row.faultState" />
</template>
</el-table-column>
<el-table-column label="枪号" align="center" prop="gunNo" />
<el-table-column label="枪名" align="center" prop="gunName" />
<el-table-column label="枪的工作状态" align="center" prop="chargeState">
<template #default="scope">
<dict-tag :type="DICT_TYPE.GUNSTATUS" :value="scope.row.chargeState" />
</template>
</el-table-column>
<el-table-column label="充电枪数量" align="center" prop="chargeGunCount" />
<el-table-column label="操作" align="center" width="160" fixed="right">
<template #default="scope">
<el-button link type="primary" @click="openForm('update', scope.row.id)">

@ -0,0 +1,146 @@
<template>
<el-drawer title="套餐管理详情" v-model="dialogVisible" size="60%">
<el-descriptions :column="3" border>
<el-descriptions-item label="换电站编码" min-width="120">
{{ formData.stationNo || "--" }}
</el-descriptions-item>
<el-descriptions-item label="套餐名" min-width="120">
{{ formData.name || "--" }}
</el-descriptions-item>
<el-descriptions-item label="支付金额(元)" min-width="120">
{{ formData.payPrice || "--" }}
</el-descriptions-item>
<el-descriptions-item label="有效月份" >
{{ formData.effective || "--" }}
</el-descriptions-item>
<el-descriptions-item label="套餐次数" >
{{ formData.frequency || "--" }}
</el-descriptions-item>
<el-descriptions-item label="状态" >
<dict-tag :type="DICT_TYPE.PACKAGE_STATUS" :value="formData.status" />
</el-descriptions-item>
<el-descriptions-item label="套餐类型" >
<dict-tag :type="DICT_TYPE.PACKAGE_TYPE" :value="formData.type" />
</el-descriptions-item>
</el-descriptions>
<div class="title_info" style="margin-top: 20px">购买记录</div>
<br />
<PurchaseHistoryList :setMealId="formData.id" ref="PurchaseHistory" />
<template #footer>
<!-- <el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button> -->
<el-button @click="dialogVisible = false"> </el-button>
</template>
</el-drawer>
</template>
<script setup lang="ts">
import { SetMealApi, SetMealVO } from '@/api/system/marketingManagement/packageList'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import PurchaseHistoryList from './components/index.vue'
/** 充电换电套餐 表单 */
defineOptions({ name: 'SetMealForm' })
const { t } = useI18n() //
const message = useMessage() //
const setMealId = ref()
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
stationNo: undefined,
name: undefined,
payPrice: undefined,
effective: undefined,
frequency: undefined,
status: undefined,
type: undefined
})
const formRules = reactive({
stationNo: [{ required: true, message: '换电站编码不能为空', trigger: 'blur' }],
name: [{ required: true, message: '套餐名不能为空', trigger: 'blur' }],
payPrice: [{ required: true, message: '支付金额不能为空', trigger: 'blur' }],
effective: [{ required: true, message: '有效月份不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
type: [{ required: true, message: '套餐类型不能为空', trigger: 'change' }]
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (id?: number) => {
dialogVisible.value = true
resetForm()
//
if (id) {
formLoading.value = true
try {
formData.value = await SetMealApi.getSetMeal(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 SetMealApi.SetMealVO
if (formType.value === 'create') {
await SetMealApi.createSetMeal(data)
message.success(t('common.createSuccess'))
} else {
await SetMealApi.updateSetMeal(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
stationNo: undefined,
name: undefined,
payPrice: undefined,
effective: undefined,
frequency: undefined,
status: undefined,
type: undefined
}
formRef.value?.resetFields()
}
</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>

@ -11,7 +11,15 @@
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="换电站编码" prop="stationNo">
<el-input v-model="formData.stationNo" placeholder="请输入换电站编码" />
<el-select v-model="formData.stationNo" placeholder="请选择" style="width: 100%;">
<el-option
v-for="(item, index) in stationinfoList"
:key="index"
:label="item.stationNo"
:value="item.stationNo"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@ -69,7 +77,8 @@
<script setup lang="ts">
import { SetMealApi, SetMealVO } from '@/api/system/marketingManagement/packageList'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
//
import { StationInfoApi, StationInfoVO } from '@/api/share/stationinfo'
/** 充电换电套餐 表单 */
defineOptions({ name: 'SetMealForm' })
@ -102,6 +111,7 @@ const formRef = ref() // 表单 Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
getStationList()
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
@ -141,7 +151,16 @@ const submitForm = async () => {
formLoading.value = false
}
}
//
const stationinfoList = ref([])
const getStationList = async () => {
try {
const data = await StationInfoApi.getStationInfoList()
// console.log(data, 'data')
stationinfoList.value = data
} finally {
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {

@ -0,0 +1,140 @@
<template>
<el-drawer title="基础信息" v-model="dialogVisible" size="60%">
<el-descriptions :column="3" border>
<el-descriptions-item label="换电站编码" min-width="120">
{{ formData.stationNo || "--" }}
</el-descriptions-item>
<el-descriptions-item label="用户id" min-width="120">
{{ formData.userId || "--" }}
</el-descriptions-item>
<el-descriptions-item label="套餐id" min-width="120">
{{ formData.setMealId || "--" }}
</el-descriptions-item>
<el-descriptions-item label="套餐名" >
{{ formData.name || "--" }}
</el-descriptions-item>
<el-descriptions-item label="支付金额" >
{{ formData.payPrice || "--" }}
</el-descriptions-item>
<el-descriptions-item label="支付订单编号" >
{{ formData.payOrder || "--" }}
</el-descriptions-item>
<el-descriptions-item label="有效月份" >
{{ formData.effective || "--" }}
</el-descriptions-item>
<el-descriptions-item label="套餐次数" >
{{ formData.frequency || "--" }}
</el-descriptions-item>
<el-descriptions-item label="过期时间" >
{{ formData.expiredTime || "--" }}
</el-descriptions-item>
<el-descriptions-item label="状态" >
<dict-tag :type="DICT_TYPE.PAYRESULT" :value="formData.status" />
</el-descriptions-item>
</el-descriptions>
<template #footer>
<!-- <el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button> -->
<el-button @click="dialogVisible = false"> </el-button>
</template>
</el-drawer >
</template>
<script setup lang="ts">
import {
SetMealRecordsApi,
SetMealRecordsVO
} from '@/api/system/marketingManagement/packageManagement'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
/** 套餐记录 表单 */
defineOptions({ name: 'SetMealRecordsForm' })
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,
stationNo: undefined,
userId: undefined,
setMealId: undefined,
name: undefined,
payPrice: undefined,
payOrder: undefined,
effective: undefined,
frequency: undefined,
expiredTime: undefined,
status: undefined
})
const formRules = reactive({
userId: [{ required: true, message: '用户id不能为空', trigger: 'blur' }],
setMealId: [{ required: true, message: '套餐id不能为空', trigger: 'blur' }],
payPrice: [{ required: true, message: '支付金额不能为空', trigger: 'blur' }],
effective: [{ required: true, message: '有效月份不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (id?: number) => {
dialogVisible.value = true
// dialogTitle.value = t('action.' + type)
// formType.value = type
resetForm()
//
if (id) {
formLoading.value = true
try {
formData.value = await SetMealRecordsApi.getSetMealRecords(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 SetMealRecordsApi.SetMealRecordsVO
if (formType.value === 'create') {
await SetMealRecordsApi.createSetMealRecords(data)
message.success(t('common.createSuccess'))
} else {
await SetMealRecordsApi.updateSetMealRecords(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
stationNo: undefined,
userId: undefined,
setMealId: undefined,
name: undefined,
payPrice: undefined,
payOrder: undefined,
effective: undefined,
frequency: undefined,
expiredTime: undefined,
status: undefined
}
formRef.value?.resetFields()
}
</script>

@ -0,0 +1,193 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
label-position="top"
>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="换电站编码" prop="stationNo">
<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>
</el-col>
<el-col :span="12">
<el-form-item label="套餐id" prop="setMealId">
<el-input v-model="formData.setMealId" placeholder="请输入套餐id" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="套餐名" prop="name">
<el-input v-model="formData.name" placeholder="请输入套餐名" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="支付金额(分)" prop="payPrice">
<el-input v-model="formData.payPrice" placeholder="请输入支付金额" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="支付订单编号" prop="payOrder">
<el-input v-model="formData.payOrder" placeholder="请输入支付订单编号" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="有效月份" prop="effective">
<el-input v-model="formData.effective" placeholder="请输入有效月份" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="套餐次数" prop="frequency">
<el-input v-model="formData.frequency" placeholder="请输入套餐次数" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="过期时间" prop="expiredTime">
<el-date-picker
v-model="formData.expiredTime"
type="date"
value-format="x"
placeholder="选择过期时间"
style="width: 100%;"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="status">
<el-select v-model="formData.status" placeholder="请选择" clearable style="width: 100%">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.PAYMENT_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :sapn="12">
<el-form-item label="套餐类型" prop="type">
<el-select v-model="formData.type" placeholder="请选择" clearable style="width: 100%">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.PACKAGE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</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 {
SetMealRecordsApi,
SetMealRecordsVO
} from '@/api/system/marketingManagement/packageManagement'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
/** 套餐记录 表单 */
defineOptions({ name: 'SetMealRecordsForm' })
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,
stationNo: undefined,
userId: undefined,
setMealId: undefined,
name: undefined,
payPrice: undefined,
payOrder: undefined,
effective: undefined,
frequency: undefined,
expiredTime: undefined,
status: undefined,
type:undefined,
})
const formRules = reactive({
userId: [{ required: true, message: '用户id不能为空', trigger: 'blur' }],
setMealId: [{ required: true, message: '套餐id不能为空', trigger: 'blur' }],
payPrice: [{ required: true, message: '支付金额不能为空', trigger: 'blur' }],
effective: [{ required: true, message: '有效月份不能为空', trigger: 'blur' }],
status: [{ 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 SetMealRecordsApi.getSetMealRecords(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 SetMealRecordsApi.SetMealRecordsVO
if (formType.value === 'create') {
await SetMealRecordsApi.createSetMealRecords(data)
message.success(t('common.createSuccess'))
} else {
await SetMealRecordsApi.updateSetMealRecords(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
stationNo: undefined,
userId: undefined,
setMealId: undefined,
name: undefined,
payPrice: undefined,
payOrder: undefined,
effective: undefined,
frequency: undefined,
expiredTime: undefined,
status: undefined
}
formRef.value?.resetFields()
}
</script>

@ -0,0 +1,288 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="100px"
>
<el-form-item label="换电站编码" prop="stationNo">
<el-input
v-model="queryParams.stationNo"
placeholder="请输入换电站编码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="套餐名" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入套餐名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="支付订单编号" prop="payOrder">
<el-input
v-model="queryParams.payOrder"
placeholder="请输入支付订单编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择"
clearable
style="width: 100%"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.PAYRESULT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</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="primary"
plain
@click="openForm('create')"
>
<Icon icon="ep:plus" 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" :header-cell-style="{
backgroundColor: '#eff4fa'
}">
<el-table-column label="序号" type="index" align="center" width="80" />
<!-- <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="套餐id" align="center" prop="setMealId" /> -->
<el-table-column label="套餐名" align="center" prop="name" />
<el-table-column label="支付金额(分)" align="center" prop="payPrice" />
<el-table-column label="支付订单编号" align="center" prop="payOrder" />
<el-table-column label="有效月份" align="center" prop="effective" />
<el-table-column label="套餐次数" align="center" prop="frequency" />
<el-table-column
label="过期时间"
align="center"
prop="expiredTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="状态" align="center" prop="status" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.PAYRESULT" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="套餐类型" align="center" prop="type">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PACKAGE_TYPE" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作" align="center" width="160" fixed="right">
<template #default="scope">
<!-- <el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
>
编辑
</el-button> -->
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
>
删除
</el-button>
<!-- <el-button
link
type="primary"
@click="openDetail(scope.row.id)"
>
详情
</el-button> -->
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<SetMealRecordsForm ref="formRef" @success="getList" />
<!-- 详情 -->
<SetMealRecordsDetails ref="detailRef" />
</template>
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { SetMealRecordsApi, SetMealRecordsVO } from '@/api/system/marketingManagement/packageManagement'
import SetMealRecordsForm from './SetMealRecordsForm.vue'
import SetMealRecordsDetails from './SetMealRecordsDetails.vue'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
/** 套餐记录 列表 */
defineOptions({ name: 'SetMealRecords' })
const props = defineProps({
setMealId: {
type: String,
default: ''
},
})
const message = useMessage() //
const { t } = useI18n() //
/** 详情操作 */
const detailRef = ref()
const loading = ref(true) //
const list = ref<SetMealRecordsVO[]>([]) //
//
const total = ref(0)
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
setMealId: props.setMealId,
stationNo: undefined,
userId: undefined,
name: undefined,
payPrice: undefined,
payOrder: undefined,
effective: undefined,
frequency: undefined,
expiredTime: [],
status: undefined,
createTime: [],
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
queryParams.setMealId=props.setMealId
const data = await SetMealRecordsApi.getSetMealRecordsPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await SetMealRecordsApi.deleteSetMealRecords(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await SetMealRecordsApi.exportSetMealRecords(queryParams)
download.excel(data, '套餐记录.xls')
} catch {
} finally {
exportLoading.value = false
}
}
//
const openDetail = (id?: number) => {
detailRef.value.open(id)
}
/** 初始化 **/
// onMounted(() => {
// getList()
// })
watch(
() => props.setMealId,
(newValue) => {
getList()
},
{
deep: true,
immediate: true
}
)
</script>

@ -9,13 +9,14 @@
label-width="100px"
>
<el-form-item label="换电站编码" prop="stationNo">
<el-input
v-model="queryParams.stationNo"
placeholder="请输入换电站编码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
<el-select v-model="queryParams.stationNo" placeholder="请选择">
<el-option
v-for="(item, index) in stationinfoList"
:key="index"
:label="item.stationNo"
:value="item.stationNo"
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择" clearable style="width: 100%">
@ -94,6 +95,14 @@
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
link
type="warning"
@click="openDetails(scope.row.id)"
>
详情
</el-button>
<el-button
link
type="primary"
@ -102,6 +111,7 @@
>
编辑
</el-button>
<el-button
link
type="danger"
@ -124,6 +134,8 @@
<!-- 表单弹窗添加/修改 -->
<SetMealForm ref="formRef" @success="getList" />
<SetMealDetails ref="detailsRef" />
</template>
<script setup lang="ts">
@ -132,6 +144,9 @@ import download from '@/utils/download'
import { SetMealApi, SetMealVO } from '@/api/system/marketingManagement/packageList'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import SetMealForm from './SetMealForm.vue'
import SetMealDetails from './SetMealDetails.vue'
//
import { StationInfoApi, StationInfoVO } from '@/api/share/stationinfo'
/** 充电换电套餐 列表 */
defineOptions({ name: 'SetMeal' })
@ -181,12 +196,26 @@ const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
//
const stationinfoList = ref([])
const getStationList = async () => {
try {
const data = await StationInfoApi.getStationInfoList()
// console.log(data, 'data')
stationinfoList.value = data
} finally {
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 详情 */
const detailsRef = ref()
const openDetails = (id?: number) => {
detailsRef.value.open(id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
@ -219,5 +248,6 @@ const handleExport = async () => {
/** 初始化 **/
onMounted(() => {
getList()
getStationList()
})
</script>

@ -32,6 +32,10 @@
{{ handle_stationNo(check_row.stationNo) }}
</el-descriptions-item>
<el-descriptions-item label="充电订单号:" label-align="right" align="center">
{{ check_row.chargeOrder == null ? '--' : check_row.chargeOrder }}
</el-descriptions-item>
<el-descriptions-item label="充电流水号:" label-align="right" align="center">
{{ check_row.chargeSeriaNumber == null ? '--' : check_row.chargeSeriaNumber }}
</el-descriptions-item>
@ -47,6 +51,21 @@
<el-descriptions-item label="结束SOC:" label-align="right" align="center">
{{ check_row.endSoc == null ? '--' : check_row.endSoc }}
</el-descriptions-item>
<el-descriptions-item label="充电电量:" label-align="right" align="center">
{{ check_row.chargingCapacity == null ? '--' : check_row.chargingCapacity }}
</el-descriptions-item>
<el-descriptions-item label="充电时长(min):" label-align="right" align="center">
{{ check_row.chargingTime == null ? '--' : check_row.chargingTime }}
</el-descriptions-item>
<el-descriptions-item label="订单状态:" label-align="right" align="center">
<dict-tag :type="DICT_TYPE.ORDERSTATUS" :value="check_row.orderStatus" />
</el-descriptions-item>
<el-descriptions-item label="总费用:" label-align="right" align="center">
{{ check_row.totalFee == null ? '--' : check_row.totalFee }}
</el-descriptions-item>
<el-descriptions-item label="实际支付金额(元):" label-align="right" align="center">
{{ check_row.actualPay/100 == null ? '--' : check_row.actualPay/100 }}
</el-descriptions-item>
</el-descriptions>
<br />
<div class="title_info">支付信息</div>
@ -107,6 +126,7 @@ const open = async (row: any, stationinfoList: any) => {
drawer.value = true
check_row.value = row
user_tableData.value = row.payOrder
// console.log( user_tableData.value, 'row')
stationinfoList_all.value = stationinfoList
}
const stationinfoList_all = ref([])

@ -76,8 +76,15 @@
{{ handle_stationNo(scope.row.stationNo) }}
</template>
</el-table-column>
<!-- <el-table-column label="充电流水号" align="center" prop="chargeSeriaNumber" width="120" /> -->
<el-table-column label="充电订单号" align="center" prop="chargeOrder" width="120"/>
<el-table-column label="充电机编号" align="center" prop="epm" width="120" />
<el-table-column label="枪号" align="center" prop="chargerGunNo" width="120" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.GUN_LIST" :value="scope.row.chargerGunNo" />
</template>
</el-table-column>
<!-- <el-table-column label="充电枪编号" align="center" prop="chargerGunNo" width="120" /> -->
<!-- <el-table-column label="电池序列号" align="center" prop="batteryId" width="120" /> -->
<!-- <el-table-column
@ -147,7 +154,7 @@
<el-button link type="danger" @click="handleDelete(scope.row.id)"> </el-button>
<el-button link type="primary" @click="open_drawer(scope.row)"> </el-button>
<el-button link type="primary" @click="handle_Offline(scope.row)"> 线 </el-button>
<!-- <el-button link type="primary" @click="handle_Offline(scope.row)"> 线 </el-button> -->
</template>
</el-table-column>
</el-table>

@ -11,12 +11,31 @@
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="换电站编码" prop="stationNo">
<el-input v-model="formData.stationNo" placeholder="请输入换电站编码" />
<el-select v-model="formData.stationNo" placeholder="请选择" style="width: 100%">
<el-option
:label="item.stationNo"
:value="item.stationNo"
v-for="(item, index) in stationinfoList"
:key="index"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备类型编码" prop="equipTypeCode">
<el-input v-model="formData.equipTypeCode" placeholder="请输入设备类型编码" />
<el-form-item label="设备类型" prop="equipTypeCode">
<el-select
v-model="formData.equipTypeCode"
placeholder="请选择"
clearable
style="width: 100%"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.EQUIP_TYPE_CODE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@ -31,7 +50,20 @@
</el-col>
<el-col :span="12">
<el-form-item label="报警等级" prop="errorLevel">
<el-input v-model="formData.errorLevel" placeholder="请输入报警等级" />
<el-select
v-model="formData.errorLevel"
placeholder="请选择"
clearable
style="width: 100%"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ALARM_LEVEL)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@ -79,7 +111,8 @@ import {
AlarmProcessRecordApi,
AlarmProcessRecordVO
} from '@/api/system/operationMaintenanceManagement/failureData'
import { StationInfoApi, StationInfoVO } from '@/api/share/stationinfo'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
/** 设备已处理报警列 表单 */
defineOptions({ name: 'AlarmProcessRecordForm' })
@ -109,6 +142,7 @@ const formRef = ref() // 表单 Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
getStationList()
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
@ -148,7 +182,15 @@ const submitForm = async () => {
formLoading.value = false
}
}
const stationinfoList = ref([])
const getStationList = async () => {
try {
const data = await StationInfoApi.getStationInfoList()
// console.log(data, 'data')
stationinfoList.value = data
} finally {
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {

@ -9,15 +9,16 @@
label-width="100px"
>
<el-form-item label="换电站编码" prop="stationNo">
<el-input
v-model="queryParams.stationNo"
placeholder="请输入换电站编码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
<el-select v-model="queryParams.stationNo" placeholder="请选择" style="width: 100%">
<el-option
:label="item.stationNo"
:value="item.stationNo"
v-for="(item, index) in stationinfoList"
:key="index"
/>
</el-select>
</el-form-item>
<el-form-item label="设备类型编码" prop="equipTypeCode">
<!-- <el-form-item label="设备类型编码" prop="equipTypeCode">
<el-input
v-model="queryParams.equipTypeCode"
placeholder="请输入设备类型编码"
@ -25,7 +26,7 @@
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
</el-form-item> -->
<el-form-item label="设备编码" prop="equipCode">
<el-input
v-model="queryParams.equipCode"
@ -70,10 +71,19 @@
<el-table-column label="序号" type="index" align="center" width="80" />
<!-- <el-table-column label="id" align="center" prop="id" /> -->
<el-table-column label="换电站编码" align="center" prop="stationNo" />
<el-table-column label="设备类型编码" align="center" prop="equipTypeCode" />
<el-table-column label="设备类型" align="center" prop="equipTypeCode" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.EQUIP_TYPE_CODE" :value="scope.row.equipTypeCode" />
</template>
</el-table-column>
<el-table-column label="设备编码" align="center" prop="equipCode" />
<el-table-column label="报警编码" align="center" prop="errorCode" />
<el-table-column label="报警等级" align="center" prop="errorLevel" />
<el-table-column label="报警等级" align="center" prop="errorLevel" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.ALARM_LEVEL" :value="scope.row.errorLevel" />
</template>
</el-table-column>
<el-table-column label="报警描述" align="center" prop="errorMsg" />
<el-table-column label="处理方法" align="center" prop="processMethod" />
<el-table-column
@ -136,7 +146,8 @@ import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { AlarmProcessRecordApi, AlarmProcessRecordVO } from '@/api/system/operationMaintenanceManagement/failureData'
import AlarmProcessRecordForm from './AlarmProcessRecordForm.vue'
import { StationInfoApi, StationInfoVO } from '@/api/share/stationinfo'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
/** 设备已处理报警列 列表 */
defineOptions({ name: 'AlarmProcessRecord' })
@ -175,7 +186,16 @@ const getList = async () => {
loading.value = false
}
}
//
const stationinfoList = ref([])
const getStationList = async () => {
try {
const data = await StationInfoApi.getStationInfoList()
// console.log(data, 'data')
stationinfoList.value = data
} finally {
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
@ -225,5 +245,6 @@ const handleExport = async () => {
/** 初始化 **/
onMounted(() => {
getList()
getStationList()
})
</script>

@ -11,12 +11,31 @@
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="换电站编码" prop="stationNo">
<el-input v-model="formData.stationNo" placeholder="请输入换电站编码" />
<el-select v-model="formData.stationNo" placeholder="请选择" style="width: 100%">
<el-option
:label="item.stationNo"
:value="item.stationNo"
v-for="(item, index) in stationinfoList"
:key="index"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备类型编码" prop="equipTypeCode">
<el-input v-model="formData.equipTypeCode" placeholder="请输入设备类型编码" />
<el-form-item label="设备类型" prop="equipTypeCode">
<el-select
v-model="formData.equipTypeCode"
placeholder="请选择"
clearable
style="width: 100%"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.EQUIP_TYPE_CODE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@ -31,7 +50,19 @@
</el-col>
<el-col :span="12">
<el-form-item label="报警等级" prop="errorLevel">
<el-input v-model="formData.errorLevel" placeholder="请输入报警等级" />
<el-select
v-model="formData.errorLevel"
placeholder="请选择"
clearable
style="width: 100%"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ALARM_LEVEL)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@ -68,10 +99,11 @@ import {
AlarmRecordApi,
AlarmRecordVO
} from '@/api/system/operationMaintenanceManagement/failureUnprocessed'
import { StationInfoApi, StationInfoVO } from '@/api/share/stationinfo'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
/** 上报未处理报警列 表单 */
defineOptions({ name: 'AlarmRecordForm' })
//
const { t } = useI18n() //
const message = useMessage() //
@ -97,6 +129,7 @@ const formRef = ref() // 表单 Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
getStationList()
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
@ -112,7 +145,16 @@ const open = async (type: string, id?: number) => {
}
}
defineExpose({ open }) // open
//
const stationinfoList = ref([])
const getStationList = async () => {
try {
const data = await StationInfoApi.getStationInfoList()
// console.log(data, 'data')
stationinfoList.value = data
} finally {
}
}
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {

@ -9,15 +9,16 @@
label-width="100px"
>
<el-form-item label="换电站编码" prop="stationNo">
<el-input
v-model="queryParams.stationNo"
placeholder="请输入换电站编码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
<el-select v-model="queryParams.stationNo" placeholder="请选择" style="width: 100%">
<el-option
:label="item.stationNo"
:value="item.stationNo"
v-for="(item, index) in stationinfoList"
:key="index"
/>
</el-select>
</el-form-item>
<el-form-item label="设备类型编码" prop="equipTypeCode">
<!-- <el-form-item label="设备类型编码" prop="equipTypeCode">
<el-input
v-model="queryParams.equipTypeCode"
placeholder="请输入设备类型编码"
@ -25,7 +26,7 @@
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
</el-form-item> -->
<el-form-item label="设备编码" prop="equipCode">
<el-input
v-model="queryParams.equipCode"
@ -70,10 +71,20 @@
<el-table-column label="序号" type="index" align="center" width="80" />
<!-- <el-table-column label="id" align="center" prop="id" /> -->
<el-table-column label="换电站编码" align="center" prop="stationNo" />
<el-table-column label="设备类型编码" align="center" prop="equipTypeCode" />
<el-table-column label="设备类型" align="center" prop="equipTypeCode" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.EQUIP_TYPE_CODE" :value="scope.row.equipTypeCode" />
</template>
</el-table-column>
<el-table-column label="设备编码" align="center" prop="equipCode" />
<el-table-column label="报警编码" align="center" prop="errorCode" />
<el-table-column label="报警等级" align="center" prop="errorLevel" />
<el-table-column label="报警等级" align="center" prop="errorLevel" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.ALARM_LEVEL" :value="scope.row.errorLevel" />
</template>
</el-table-column>
<el-table-column label="报警描述" align="center" prop="errorMsg" />
<el-table-column label="处理方法" align="center" prop="processMethod" />
<el-table-column
@ -129,7 +140,8 @@ import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { AlarmRecordApi, AlarmRecordVO } from '@/api/system/operationMaintenanceManagement/failureUnprocessed'
import AlarmRecordForm from './AlarmRecordForm.vue'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { StationInfoApi, StationInfoVO } from '@/api/share/stationinfo'
/** 上报未处理报警列 列表 */
defineOptions({ name: 'AlarmRecord' })
@ -167,7 +179,16 @@ const getList = async () => {
loading.value = false
}
}
//
const stationinfoList = ref([])
const getStationList = async () => {
try {
const data = await StationInfoApi.getStationInfoList()
// console.log(data, 'data')
stationinfoList.value = data
} finally {
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
@ -217,5 +238,6 @@ const handleExport = async () => {
/** 初始化 **/
onMounted(() => {
getList()
getStationList()
})
</script>

@ -21,11 +21,11 @@
width="120px">
<dict-tag :type="DICT_TYPE.APPACCESS_STATUS" :value="formData.mtnIsNormal" />
</el-descriptions-item>
<el-descriptions-item label="本次维保设计时间小时"
<el-descriptions-item label="本次维保预计时间(小时)"
width="120px">
{{ formData.mtnTime || "--" }}
</el-descriptions-item>
<el-descriptions-item label="本次实际维保时间"
<el-descriptions-item label="本次实际维保时间(小时)"
width="120px">
{{ formData.mtnRealTime || "--" }}
</el-descriptions-item>

@ -54,12 +54,12 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="本次维保设计时间小时" prop="mtnTime">
<el-input v-model="formData.mtnTime" placeholder="请输入本次维保设计时间小时" />
<el-form-item label="本次维保预计时间(小时)" prop="mtnTime">
<el-input v-model="formData.mtnTime" placeholder="请输入本次维保预计时间" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="本次实际维保时间" prop="mtnRealTime">
<el-form-item label="本次实际维保时间(小时)" prop="mtnRealTime">
<el-input v-model="formData.mtnRealTime" placeholder="请输入本次实际维保时间" />
</el-form-item>
</el-col>
@ -98,12 +98,36 @@
</el-col>
<el-col :span="12">
<el-form-item label="级别编号" prop="levelNo">
<el-input v-model="formData.levelNo" placeholder="请输入级别编号" />
<el-select
v-model="formData.levelNo"
placeholder="请选择"
clearable
style="width: 100%"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.APPACCESS_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="级别名称" prop="levelName">
<el-input v-model="formData.levelName" placeholder="请输入级别名称" />
<el-form-item label="维保等级" prop="levelName">
<el-select
v-model="formData.levelNo"
placeholder="请选择"
clearable
style="width: 100%"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.MAINTENANCE_LEVEL)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">

@ -91,8 +91,8 @@
<dict-tag :type="DICT_TYPE.APPACCESS_STATUS" :value="scope.row.mtnIsNormal" />
</template>
</el-table-column>
<el-table-column label="本次维保设计时间小时" align="center" prop="mtnTime" width="170"/>
<el-table-column label="本次实际维保时间" align="center" prop="mtnRealTime" width="170"/>
<el-table-column label="本次维保预计时间(小时)" align="center" prop="mtnTime" width="170"/>
<el-table-column label="本次实际维保时间(小时)" align="center" prop="mtnRealTime" width="170"/>
<el-table-column label="本次维保是否结束" align="center" prop="mtnIsEnd" width="170">
<template #default="scope">
<dict-tag :type="DICT_TYPE.APPACCESS_STATUS" :value="scope.row.mtnIsEnd" />
@ -106,7 +106,12 @@
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="级别编号" align="center" prop="levelNo" />
<!-- <el-table-column label="级别编号" align="center" prop="levelNo" /> -->
<el-table-column label="维保等级" align="center" prop="levelNo" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.MAINTENANCE_LEVEL" :value="scope.row.levelNo" />
</template>
</el-table-column>
<el-table-column label="级别名称" align="center" prop="levelName" />
<el-table-column label="本级顺序" align="center" prop="levelSeq" />
<el-table-column label="是否最后级别" align="center" prop="levelIsLast" width="120">

@ -6,6 +6,7 @@
:rules="formRules"
label-width="160px"
v-loading="formLoading"
label-position="top"
>
<el-row type="flex" justify="space-around">
<el-col :span="11">

@ -56,8 +56,8 @@
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="扣费账户" prop="account">
<el-input v-model="formData.account" placeholder="请输入扣费账户" />
<el-form-item label="司机" prop="account">
<el-input v-model="formData.account" readonly @click="openUser" />
</el-form-item>
</el-col>
</el-row>
@ -127,11 +127,96 @@
<el-button @click="closeDialog"> </el-button>
</template>
</Dialog>
<!-- 用户选择 -->
<el-dialog v-model="dialogVisible_binding" title="用户选择" width="1200">
<div style="display: flex; flex-direction: column; justify-content: space-between">
<el-form
class="-mb-15px"
:model="bind_queryParams"
ref="bind_queryFormRef"
:inline="true"
label-width="68px"
>
<!-- <el-form-item label="用户ID" prop="id">
<el-input
v-model="bind_queryParams.id"
placeholder="请输入"
clearable
@keyup.enter="get_team_list"
class="!w-240px"
/>
</el-form-item> -->
<el-form-item label="手机号" prop="mobile">
<el-input
v-model="bind_queryParams.mobile"
placeholder="请输入"
clearable
@keyup.enter="get_team_list"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="用户昵称" prop="nickname">
<el-input
v-model="bind_queryParams.nickname"
placeholder="请输入"
clearable
@keyup.enter="get_team_list"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button @click="get_team_list"
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
>
<el-button @click="bind_resetQuery"
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
>
</el-form-item>
</el-form>
<!-- -->
<el-table
ref="singleTableRef"
:data="userIdlist"
border
style="width: 100%; margin-top: 15px"
max-height="500"
highlight-current-row
@current-change="selectionChange"
>
<!-- <el-table-column label="用户ID" align="center" prop="id" /> -->
<el-table-column label="用户昵称" align="center" prop="nickname" />
<el-table-column label="手机号" align="center" prop="mobile" />
<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>
<div>
<Pagination
:total="bind_total"
v-model:page="bind_queryParams.pageNo"
v-model:limit="bind_queryParams.pageSize"
@pagination="get_team_list"
/>
</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible_binding = false">取消</el-button>
<el-button type="primary" @click="submit_bind"> </el-button>
</div>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { SwapOrderApi, SwapOrderVO } from '@/api/biz/swaporder'
import { UserApi, UserVO } from '@/api/member/driver'
/** 换电订单 表单 */
defineOptions({ name: 'SwapOrderForm' })
const props = defineProps({
@ -139,9 +224,12 @@ const props = defineProps({
})
const { t } = useI18n() //
const message = useMessage() //
const bind_total = ref(0)
const dialogVisible = ref(false) //
const dialogVisible_binding = ref(false) //
const dialogTitle = ref('') //
const userIdlist=ref([])
const selectUser=ref({})
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
@ -195,6 +283,7 @@ const formData = ref({
amendExpenseAcMeter: undefined,
elecTotalExpense: undefined,
discountFlag: undefined,
nickname:undefined,
setMealFlag: undefined,
discountPercent: undefined,
discountScope: undefined,
@ -221,7 +310,7 @@ const formRules = reactive({
upBatterySoc: [{ required: true, message: '不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
const singleTableRef=ref()
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
@ -256,7 +345,50 @@ const addDomain = () => {
const removeDomain = (index: number) => {
formData.value.batteryList.splice(index, 1)
}
const openUser=()=>{
dialogVisible_binding.value=true
get_team_list()
}
const get_team_list = async () => {
try {
const data2 = await UserApi.getUserPage(bind_queryParams)
userIdlist.value=data2.list
if(formData.value.userId){
userIdlist.value.forEach(item=>{
if(item.id==formData.value.userId){
singleTableRef.value!.setCurrentRow(item)
}
})
}
bind_total.value = data2.total
} finally {
}
}
const submit_bind=()=>{
formData.value={...formData.value,userId:selectUser.value.id,account:selectUser.value.nickname}
dialogVisible_binding.value= false
}
const selectionChange = (rows: UserVO[]) => {
selectUser.value=rows
// let array = []
// array = rows.map((item) => item.id)
// // console.log(array, 'array')
// currentRow_id.value = array
}
const bind_queryParams = reactive({
nickname:undefined,
id:undefined,
Type:2,
})
const bind_queryFormRef = ref() //
//
const bind_resetQuery = () => {
bind_queryFormRef.value.resetFields()
get_team_list()
}
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {

@ -124,7 +124,7 @@
<el-descriptions :column="2" border>
<el-descriptions-item
size="large"
label="扣费账户:"
label="司机:"
label-align="right"
align="center"
label-class-name="my-label"

@ -22,7 +22,7 @@
<el-descriptions-item label="预约单号" >
{{ formData.orderNo || "--" }}
</el-descriptions-item>
<el-descriptions-item label="车辆vim码" >
<el-descriptions-item label="车辆vin码" >
{{ formData.vin || "--" }}
</el-descriptions-item>
<el-descriptions-item label="电池类型" >

@ -31,8 +31,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车辆vim码" prop="vin">
<el-input v-model="formData.vin" placeholder="请输入车辆vim码" />
<el-form-item label="车辆vin码" prop="vin">
<el-input v-model="formData.vin" placeholder="请输入车辆vin码" />
</el-form-item>
</el-col>
<el-col :span="12">

@ -36,10 +36,10 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="车辆vim码" prop="vin">
<el-form-item label="车辆vin码" prop="vin">
<el-input
v-model="queryParams.vin"
placeholder="请输入车辆vim码"
placeholder="请输入车辆vin码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -134,7 +134,7 @@
<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="车辆vin码" 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" />

@ -74,19 +74,19 @@
<!-- <el-table-column label="仓位编码" align="center" prop="code" /> -->
<el-table-column label="仓位名称" align="center" prop="name" />
<el-table-column label="仓位编号" align="center" prop="no" />
<el-table-column label="电池编号" align="center" prop="batteryNo" />
<el-table-column label="电池编号" align="center" prop="batteryNo" width="150"/>
<el-table-column label="在位状态" align="center" prop="existsFlag" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.EXISTS_FLAG" :value="scope.row.existsFlag" />
</template>
</el-table-column>
<el-table-column label="预约锁定" align="center" prop="amtLock" >
<el-table-column label="预约锁定" align="center" prop="amtLock" width="100" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.AMT_LOCK" :value="scope.row.amtLock" />
</template>
</el-table-column>
<el-table-column label="soc" align="center" prop="soc" />
<el-table-column label="换电站名称" align="center" prop="stationNo">
<el-table-column label="换电站名称" align="center" prop="stationNo" width="140">
<template #default="scope">
{{ handle_stationNo(scope.row.stationNo) }}
</template>
@ -100,17 +100,17 @@
<!-- <el-table-column label="充电机编号" align="center" prop="chargerNo" width="150" /> -->
<!-- <el-table-column label="充电枪编号" align="center" prop="chargerGunNo" width="150" /> -->
<!-- <el-table-column label="水冷编号" align="center" prop="waterCoolNo" width="150" /> -->
<el-table-column label="是否有电插头" align="center" prop="elecPluginFlag">
<el-table-column label="是否有电插头" align="center" prop="elecPluginFlag" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ELEC_PLUGIN_FLAG" :value="scope.row.elecPluginFlag" />
</template>
</el-table-column>
<el-table-column label="电插头状态" align="center" prop="elecPluginStatus">
<el-table-column label="电插头状态" align="center" prop="elecPluginStatus" width="100">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ELEC_PLUGIN_STATUS" :value="scope.row.elecPluginStatus" />
</template>
</el-table-column>
<el-table-column label="是否有水插头" align="center" prop="waterPluginFlag">
<el-table-column label="是否有水插头" align="center" prop="waterPluginFlag" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.WATER_PLUGIN_FLAG" :value="scope.row.waterPluginFlag" />
</template>
@ -146,12 +146,12 @@
<dict-tag :type="DICT_TYPE.CACHE_BIN_FLAG" :value="scope.row.cacheBinFlag" />
</template>
</el-table-column> -->
<el-table-column label="是否可以换电" align="center" prop="canSwapFlag">
<el-table-column label="是否可以换电" align="center" prop="canSwapFlag" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.CAN_SWAG_CHARGE_FLAG" :value="scope.row.canSwapFlag" />
</template>
</el-table-column>
<el-table-column label="是否可以充电" align="center" prop="canChargeFlag">
<el-table-column label="是否可以充电" align="center" prop="canChargeFlag" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.CAN_SWAG_CHARGE_FLAG" :value="scope.row.canChargeFlag" />
</template>

@ -95,7 +95,7 @@
{{ handle_runId(scope.row.runId) }}
</template>
</el-table-column>
<el-table-column label="站外充电计费模型" align="center" width="130">
<el-table-column label="站外充电计费模型" align="center" width="140">
<template #default="scope">
{{ (scope.row.chargeModeName) }}
</template>

@ -1,5 +1,5 @@
<template>
<el-drawer title="基本信息" v-model="dialogVisible" width="800">
<el-drawer title="基本信息" v-model="dialogVisible" size="60%">
<el-descriptions :column="3" border>
<el-descriptions-item label="车辆型号" label-class-name="my-label"
class-name="my-content"

@ -27,7 +27,7 @@
</el-select>
</el-form-item>
</el-col>
<!-- <el-button type="primary" :disabled="formLoading" @click="dialogVisible_binding = true" >选择用户</el-button> -->
<el-col :span="12" v-if="formType === 'create'">
<el-form-item label="用户名" prop="possessor">
@ -106,7 +106,7 @@
:inline="true"
label-width="68px"
>
<el-form-item label="用户ID" prop="id">
<!-- <el-form-item label="用户ID" prop="id">
<el-input
v-model="bind_queryParams.id"
placeholder="请输入"
@ -114,6 +114,15 @@
@keyup.enter="get_team_list"
class="!w-240px"
/>
</el-form-item> -->
<el-form-item label="手机号" prop="mobile">
<el-input
v-model="bind_queryParams.mobile"
placeholder="请输入"
clearable
@keyup.enter="get_team_list"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="用户昵称" prop="nickname">
<el-input
@ -144,8 +153,9 @@
highlight-current-row
@current-change="selectionChange"
>
<el-table-column label="用户ID" align="center" prop="id" />
<!-- <el-table-column label="用户ID" align="center" prop="id" /> -->
<el-table-column label="用户昵称" align="center" prop="nickname" />
<el-table-column label="手机号" align="center" prop="mobile" />
<el-table-column label="用户头像" align="center" prop="avatar" >
<template #default="scope">
<div style="display: flex; align-items: center; justify-content: center">
@ -214,7 +224,7 @@ const submit_bind=()=>{
}
const bind_queryParams = reactive({
// pageNo: 1,
// pageSize: 10,
// pageSize: 10,h
// id:undefined,
// nickname:undefined,
// avatar:undefined,

Loading…
Cancel
Save