zz 4 months ago
commit 517fb44577

@ -2,13 +2,13 @@
<div class="sys-tenant-container">
<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
<el-form :model="state.queryParams" ref="queryForm" :inline="true">
<el-form-item label="设备名称">
<el-input v-model="state.queryParams.name" placeholder="请输入" clearable />
<el-form-item :label="$t('message.battery.deviceName')">
<el-input v-model="state.queryParams.name" placeholder="" clearable />
</el-form-item>
<el-form-item>
<el-button-group>
<el-button type="primary" icon="ele-Search" @click="handleQuery"> </el-button>
<el-button icon="ele-Refresh" @click="resetQuery"> </el-button>
<el-button type="primary" icon="ele-Search" @click="handleQuery"> {{ $t('message.battery.search') }} </el-button>
<el-button icon="ele-Refresh" @click="resetQuery"> {{$t('message.battery.reset')}} </el-button>
</el-button-group>
</el-form-item>
</el-form>
@ -17,30 +17,30 @@
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
<el-table :data="state.tenantData" style="width: 100%" v-loading="state.loading" border ref="tableRef" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" fixed> </el-table-column>
<el-table-column type="index" label="序号" width="55" align="center" fixed />
<el-table-column prop="code" label="设备编码" align="center" show-overflow-tooltip />
<el-table-column prop="name" label="设备名称" align="center" show-overflow-tooltip />
<el-table-column type="index" :label="$t('message.battery.serialNumber')" width="55" align="center" fixed />
<el-table-column prop="code" :label="$t('message.battery.deviceCode')" align="center" show-overflow-tooltip />
<el-table-column prop="name" :label="$t('message.battery.deviceName')" align="center" show-overflow-tooltip />
<!-- <el-table-column prop="typeCode" label="设备类型编码" align="center" show-overflow-tooltip /> -->
<el-table-column label="设备状态" align="center" show-overflow-tooltip>
<el-table-column :label="$t('message.battery.deviceStatus')" align="center" show-overflow-tooltip>
<template #default="scope">
<el-tag type="info" v-if="scope.row.status == 0"></el-tag>
<el-tag type="success" v-if="scope.row.status == 1"></el-tag>
<el-tag type="danger" v-if="scope.row.status == 2"></el-tag>
<el-tag type="warning" v-if="scope.row.status == 3"></el-tag>
<el-tag type="info" v-if="scope.row.status == 0">{{ $t('message.battery.unknown') }}</el-tag>
<el-tag type="success" v-if="scope.row.status == 1">{{ $t('message.battery.normal') }}</el-tag>
<el-tag type="danger" v-if="scope.row.status == 2">{{ $t('message.battery.alarm') }}</el-tag>
<el-tag type="warning" v-if="scope.row.status == 3">{{ $t('message.battery.disabled') }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="autoCharge" label="充电模式" header-align="center" show-overflow-tooltip align="center">
<el-table-column prop="autoCharge" :label="$t('message.battery.chargingMode')" header-align="center" show-overflow-tooltip align="center">
<template #default="scope">
<el-tag type="danger" v-if="scope.row.autoCharge == 0"></el-tag>
<el-tag type="success" v-if="scope.row.autoCharge == 1"></el-tag>
<el-tag type="danger" v-if="scope.row.autoCharge == 0">{{ $t('message.battery.manualCharging') }}</el-tag>
<el-tag type="success" v-if="scope.row.autoCharge == 1">{{ $t('message.battery.automaticCharging') }}</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="250" fixed="right" align="center" show-overflow-tooltip>
<el-table-column :label="$t('message.battery.operation')" width="250" fixed="right" align="center" show-overflow-tooltip>
<template #default="scope">
<el-button icon="ele-Edit" size="small" text type="primary" @click="uploadcloud(scope.row)" v-if="scope.row.autoCharge == 1"> </el-button>
<el-button icon="ele-Edit" size="small" text type="primary" @click="delReplace(scope.row)" v-if="scope.row.autoCharge == 0"> </el-button>
<el-button icon="ele-Edit" size="small" text type="primary" @click="eq_status_true(scope.row)" v-if="scope.row.status == 3"> </el-button>
<el-button icon="ele-Edit" size="small" text type="danger" @click="eq_status_false(scope.row)" v-if="scope.row.status == 1"> </el-button>
<el-button icon="ele-Edit" size="small" text type="primary" @click="uploadcloud(scope.row)" v-if="scope.row.autoCharge == 1"> {{ $t('message.battery.manualCharging') }} </el-button>
<el-button icon="ele-Edit" size="small" text type="primary" @click="delReplace(scope.row)" v-if="scope.row.autoCharge == 0"> {{ $t('message.battery.automaticCharging') }} </el-button>
<el-button icon="ele-Edit" size="small" text type="primary" @click="eq_status_true(scope.row)" v-if="scope.row.status == 3"> {{ $t('message.battery.enableDevice') }} </el-button>
<el-button icon="ele-Edit" size="small" text type="danger" @click="eq_status_false(scope.row)" v-if="scope.row.status == 1"> {{ $t('message.battery.disableDevice') }} </el-button>
</template>
</el-table-column>
</el-table>
@ -65,7 +65,8 @@ import { ElMessageBox, ElMessage } from 'element-plus';
import { getAPI } from '/@/utils/axios-utils';
import { SysBatteryLogApi } from '/@/api-services/api';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const tableRef = ref<RefType>();
// const grantMenuRef = ref<InstanceType<typeof GrantMenu>>();
@ -124,18 +125,18 @@ const handleSelectionChange = (data: EmptyObjectType[]) => {
};
//
const delReplace = (row: any) => {
ElMessageBox.confirm(`确定切换自动充电吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm(t('message.battery.confirmSwitchToAutomaticCharging'), 'tips', {
confirmButtonText: t('message.system_base_config.submit'),
cancelButtonText: t('message.system_base_config.cancel'),
type: 'warning',
})
.then(async () => {
row.autoCharge = 1;
var response = await getAPI(SysBatteryLogApi).apiSysEquipInfoUpdatePost(row);
if (response.data.isSuccess) {
ElMessage.success('操作成功');
ElMessage.success(t('message.system_base_config.Operation_successful'));
} else {
ElMessage.error('操作失败');
ElMessage.error(t('message.system_base_config.Operation_failed'));
}
handleQuery();
})
@ -143,18 +144,18 @@ const delReplace = (row: any) => {
};
//
const uploadcloud = (row: any) => {
ElMessageBox.confirm(`确定切换手动充电吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm(t('message.battery.confirmSwitchToManualCharging'), 'tips', {
confirmButtonText: t('message.system_base_config.submit'),
cancelButtonText: t('message.system_base_config.cancel'),
type: 'warning',
})
.then(async () => {
row.autoCharge = 0;
var response = await getAPI(SysBatteryLogApi).apiSysEquipInfoUpdatePost(row);
if (response.data.isSuccess) {
ElMessage.success('操作成功');
ElMessage.success(t('message.system_base_config.Operation_successful'));
} else {
ElMessage.error('操作失败');
ElMessage.error(t('message.system_base_config.Operation_failed'));
}
handleQuery();
})
@ -162,18 +163,18 @@ const uploadcloud = (row: any) => {
};
const eq_status_true = (row: any) => {
ElMessageBox.confirm(`确定设备启用吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm(t('message.battery.confirmEnableDevice'), 'tips', {
confirmButtonText: t('message.system_base_config.submit'),
cancelButtonText: t('message.system_base_config.cancel'),
type: 'warning',
})
.then(async () => {
row.status = 1;
var response = await getAPI(SysBatteryLogApi).apiSysEquipInfoUpdatePost(row);
if (response.data.isSuccess) {
ElMessage.success('操作成功');
ElMessage.success(t('message.system_base_config.Operation_successful'));
} else {
ElMessage.error('操作失败');
ElMessage.error(t('message.system_base_config.Operation_failed'));
}
handleQuery();
})
@ -181,18 +182,18 @@ const eq_status_true = (row: any) => {
};
//
const eq_status_false = (row: any) => {
ElMessageBox.confirm(`确定设备禁用吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm(t('message.battery.confirmDisableDevice'), 'tips', {
confirmButtonText: t('message.system_base_config.submit'),
cancelButtonText: t('message.system_base_config.cancel'),
type: 'warning',
})
.then(async () => {
row.status = 3;
var response = await getAPI(SysBatteryLogApi).apiSysEquipInfoUpdatePost(row);
if (response.data.isSuccess) {
ElMessage.success('操作成功');
ElMessage.success(t('message.system_base_config.Operation_successful'));
} else {
ElMessage.error('操作失败');
ElMessage.error(t('message.system_base_config.Operation_failed'));
}
handleQuery();
})

@ -2,16 +2,16 @@
<div class="sys-tenant-container">
<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
<el-form :model="state.queryParams" ref="queryForm" :inline="true">
<el-form-item label="仓位编号">
<el-input v-model="state.queryParams.no" placeholder="仓位编号" clearable />
<el-form-item :label="$t('message.change_car.positionNumber')">
<el-input v-model="state.queryParams.no" :placeholder="$t('message.change_car.positionNumber')" clearable />
</el-form-item>
<el-form-item label="仓位名称">
<el-input v-model="state.queryParams.name" placeholder="仓位名称" clearable />
<el-form-item :label="$t('message.change_car.positionName')">
<el-input v-model="state.queryParams.name" :placeholder="$t('message.change_car.positionName')" clearable />
</el-form-item>
<el-form-item>
<el-button-group>
<el-button type="primary" icon="ele-Search" @click="handleQuery"> </el-button>
<el-button icon="ele-Refresh" @click="resetQuery"> </el-button>
<el-button type="primary" icon="ele-Search" @click="handleQuery"> {{ $t('message.change_car.search') }} </el-button>
<el-button icon="ele-Refresh" @click="resetQuery"> {{ $t('message.change_car.reset') }} </el-button>
</el-button-group>
</el-form-item>
</el-form>
@ -20,11 +20,11 @@
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
<el-table :data="state.tenantData" style="width: 100%" v-loading="state.loading" border ref="tableRef" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" fixed> </el-table-column>
<el-table-column type="index" label="序号" width="55" align="center" fixed />
<el-table-column prop="no" label="仓位编号" align="center" show-overflow-tooltip />
<el-table-column prop="code" label="仓位编码" align="center" show-overflow-tooltip />
<el-table-column prop="name" label="仓位名称" align="center" show-overflow-tooltip />
<el-table-column prop="batteryNo" label="电池编号" align="center" show-overflow-tooltip />
<el-table-column type="index" :label="$t('message.change_car.serialNumber')" width="55" align="center" fixed />
<el-table-column prop="no" :label="$t('message.change_car.positionNumber')" align="center" show-overflow-tooltip />
<el-table-column prop="code" :label="$t('message.change_car.positionCode')" align="center" show-overflow-tooltip />
<el-table-column prop="name" :label="$t('message.change_car.positionName')" align="center" show-overflow-tooltip />
<el-table-column prop="batteryNo" :label="$t('message.change_car.batteryNumber')" align="center" show-overflow-tooltip />
<!-- <el-table-column prop="chargerNo" label="充电机编号" header-align="center" show-overflow-tooltip /> -->
<!-- <el-table-column prop="chargerGunNo" label="充电枪编号" header-align="center" show-overflow-tooltip /> -->
<!-- <el-table-column prop="waterCoolNo" label="水冷编号" align="center" show-overflow-tooltip /> -->
@ -47,24 +47,24 @@
<el-tag v-else> </el-tag>
</template>
</el-table-column> -->
<el-table-column prop="" label="预约锁定" align="center" show-overflow-tooltip>
<el-table-column prop="" :label="$t('message.change_car.reservationLock')" align="center" show-overflow-tooltip>
<template #default="scope">
<el-tag v-if="scope.row.amtLock === 0" type="info"> </el-tag>
<el-tag v-else type="success"> 锁定 </el-tag>
<el-tag v-if="scope.row.amtLock === 0" type="info"> {{$t('message.change_car.notLocked')}} </el-tag>
<el-tag v-else type="success"> {{$t('message.change_car.locked')}} </el-tag>
</template>
</el-table-column>
<!-- <el-table-column prop="soc" label="soc" align="center" show-overflow-tooltip /> -->
<!-- <el-table-column prop="soe" label="soe" align="center" show-overflow-tooltip /> -->
<!-- <el-table-column prop="soh" label="soh" align="center" show-overflow-tooltip /> -->
<!-- <el-table-column prop="batteryEnterSeq" label="电池入仓顺序" align="center" show-overflow-tooltip /> -->
<el-table-column prop="inTime" label="入仓时间" align="center" show-overflow-tooltip />
<el-table-column prop="" label="充电状态" align="center" show-overflow-tooltip>
<el-table-column prop="inTime" :label="$t('message.change_car.entryTime')" align="center" show-overflow-tooltip />
<el-table-column prop="" :label="$t('message.change_car.chargingStatus')" align="center" show-overflow-tooltip>
<template #default="scope">
<el-tag v-if="scope.row.chargeStatus === 0"> </el-tag>
<el-tag v-else-if="scope.row.chargeStatus === 1"> 正在充电 </el-tag>
<el-tag v-else-if="scope.row.chargeStatus === 2" type="info"> 无电池 </el-tag>
<el-tag v-else-if="scope.row.chargeStatus === 3" type="danger"> 禁用 </el-tag>
<el-tag v-else-if="scope.row.chargeStatus === 4" type="success"> 充电完成 </el-tag>
<el-tag v-if="scope.row.chargeStatus === 0"> {{$t('message.change_car.unknown')}} </el-tag>
<el-tag v-else-if="scope.row.chargeStatus === 1"> {{ $t('message.change_car.charging') }} </el-tag>
<el-tag v-else-if="scope.row.chargeStatus === 2" type="info"> {{ $t('message.change_car.noBattery') }} </el-tag>
<el-tag v-else-if="scope.row.chargeStatus === 3" type="danger"> {{ $t('message.change_car.disabled') }} </el-tag>
<el-tag v-else-if="scope.row.chargeStatus === 4" type="success"> {{ $t('message.change_car.chargingCompleted') }} </el-tag>
<!-- <el-tag v-else> </el-tag> -->
</template>
</el-table-column>
@ -74,46 +74,46 @@
<el-tag v-else> </el-tag>
</template>
</el-table-column> -->
<el-table-column prop="exists" label="电池是否在" align="center" show-overflow-tooltip>
<el-table-column prop="exists" :label="$t('message.change_car.isBatteryInPosition')" align="center" show-overflow-tooltip>
<template #default="scope">
<el-tag v-if="scope.row.exists === 0" type="info"> </el-tag>
<el-tag v-else-if="scope.row.exists === 1" type="success"> 在位 </el-tag>
<el-tag v-else type="danger"> 无效 </el-tag>
<el-tag v-if="scope.row.exists === 0" type="info"> {{ $t('message.change_car.notInPosition') }} </el-tag>
<el-tag v-else-if="scope.row.exists === 1" type="success"> {{ $t('message.change_car.inPosition') }} </el-tag>
<el-tag v-else type="danger"> {{ $t('message.change_car.invalid') }} </el-tag>
</template>
</el-table-column>
<el-table-column prop="lastChargeFinishTime" label="最后结束充电的时间" align="center" show-overflow-tooltip />
<el-table-column label="操作" width="350" fixed="right" align="center" show-overflow-tooltip>
<el-table-column prop="lastChargeFinishTime" :label="$t('message.change_car.lastChargingEndTime')" align="center" show-overflow-tooltip />
<el-table-column :label="$t('message.change_car.operation')" width="350" fixed="right" align="center" show-overflow-tooltip>
<template #default="scope">
<el-button icon="ele-Edit" size="small" text @click="uploadcloud(scope.row)"> </el-button>
<el-button icon="ele-Edit" size="small" text @click="uploadcloud(scope.row)"> {{ $t('message.change_car.edit') }} </el-button>
<!-- <el-button icon="ele-Edit" size="small" text type="success" @click="delReplace(scope.row)" v-else> </el-button> -->
<el-popconfirm title="确定要设置换电启用吗?" @confirm="getapiUpdateCanSwapFlagGet(scope.row.id, 1)" v-if="scope.row.canSwapFlag == 0">
<el-popconfirm :title="$t('message.change_car.confirmEnableSwap')" @confirm="getapiUpdateCanSwapFlagGet(scope.row.id, 1)" v-if="scope.row.canSwapFlag == 0">
<template #reference>
<el-button size="small" type="success" text>换电启用</el-button>
<el-button size="small" type="success" text>{{ $t('message.change_car.enableSwap') }}</el-button>
</template>
</el-popconfirm>
<el-popconfirm title="确定要设置换电禁用吗?" @confirm="getapiUpdateCanSwapFlagGet(scope.row.id, 0)" v-if="scope.row.canSwapFlag == 1">
<el-popconfirm :title="$t('message.change_car.confirmDisableSwap')" @confirm="getapiUpdateCanSwapFlagGet(scope.row.id, 0)" v-if="scope.row.canSwapFlag == 1">
<template #reference>
<el-button size="small" type="danger" text>换电禁用</el-button>
<el-button size="small" type="danger" text>{{ $t('message.change_car.disableSwap') }}</el-button>
</template>
</el-popconfirm>
<el-popconfirm title="确定要设置充电启用吗?" @confirm="getUpdateCanChargeFlagGet(scope.row.id, 1)" v-if="scope.row.canChargeFlag == 0">
<el-popconfirm :title="$t('message.change_car.confirmEnableCharging')" @confirm="getUpdateCanChargeFlagGet(scope.row.id, 1)" v-if="scope.row.canChargeFlag == 0">
<template #reference>
<el-button size="small" type="success" text>充电启用</el-button>
<el-button size="small" type="success" text>{{ $t('message.change_car.enableCharging') }}</el-button>
</template>
</el-popconfirm>
<el-popconfirm title="确定要设置充电禁用吗?" @confirm="getUpdateCanChargeFlagGet(scope.row.id, 0)" v-if="scope.row.canChargeFlag == 1">
<el-popconfirm :title="$t('message.change_car.confirmDisableCharging')" @confirm="getUpdateCanChargeFlagGet(scope.row.id, 0)" v-if="scope.row.canChargeFlag == 1">
<template #reference>
<el-button size="small" type="danger" text>充电禁用</el-button>
<el-button size="small" type="danger" text>{{ $t('message.change_car.disableCharging') }}</el-button>
</template>
</el-popconfirm>
<el-popconfirm title="确定要设置预约锁定吗?" @confirm="getapiSetBinInfoMakeAnAppointmentPost(scope.row.no, 1)" v-if="scope.row.amtLock == 0">
<el-popconfirm :title="$t('message.change_car.confirmReservationLock')" @confirm="getapiSetBinInfoMakeAnAppointmentPost(scope.row.no, 1)" v-if="scope.row.amtLock == 0">
<template #reference>
<el-button size="small" type="success" text>预约锁定</el-button>
<el-button size="small" type="success" text>{{ $t('message.change_car.enableReservationLock') }}</el-button>
</template>
</el-popconfirm>
<el-popconfirm title="确定要设置预约解锁吗?" @confirm="getapiSetBinInfoMakeAnAppointmentPost(scope.row.no, 0)" v-if="scope.row.amtLock == 1">
<el-popconfirm :title="$t('message.change_car.confirmReservationUnlock')" @confirm="getapiSetBinInfoMakeAnAppointmentPost(scope.row.no, 0)" v-if="scope.row.amtLock == 1">
<template #reference>
<el-button size="small" type="danger" text>预约解锁</el-button>
<el-button size="small" type="danger" text>{{ $t('message.change_car.enableReservationUnlock') }}</el-button>
</template>
</el-popconfirm>
</template>
@ -131,16 +131,16 @@
layout="total, sizes, prev, pager, next, jumper"
/>
</el-card>
<el-dialog v-model="state.dialogFormVisible_charg" title="编辑" width="500">
<el-dialog v-model="state.dialogFormVisible_charg" :title="$t('message.change_car.edit')" width="500">
<el-form :model="state.form_charg" ref="ruleFormRef_charg">
<el-form-item label="电池编号:" prop="batteryNo" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label=" $t('message.change_car.batteryNumber')" prop="batteryNo" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.form_charg.batteryNo" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="reset_dialog_charg"></el-button>
<el-button type="primary" @click="submit_dialog_charg"> </el-button>
<el-button @click="reset_dialog_charg">{{$t('message.system_base_config.cancel')}}</el-button>
<el-button type="primary" @click="submit_dialog_charg"> {{ $t('message.system_base_config.submit') }} </el-button>
</div>
</template>
</el-dialog>
@ -153,7 +153,8 @@ import { ElMessageBox, ElMessage } from 'element-plus';
import { getAPI } from '/@/utils/axios-utils';
import { SysChargeMonitorApi } from '/@/api-services/api';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const tableRef = ref<RefType>();
// const grantMenuRef = ref<InstanceType<typeof GrantMenu>>();
@ -226,9 +227,9 @@ const handleQuery = async () => {
const getUpdateCanChargeFlagGet = async (id, flag) => {
const response = await getAPI(SysChargeMonitorApi).apiUpdateCanChargeFlagGet(id, flag);
if (response.data.isSuccess) {
ElMessage.success('操作成功');
ElMessage.success(t('message.system_base_config.Operation_successful'));
} else {
ElMessage.error(response.data.msg);
ElMessage.error(t('message.system_base_config.Operation_failed'));
}
handleQuery();
};
@ -246,21 +247,21 @@ const submit_dialog_charg = async () => {
if (!valid) return;
const response = await getAPI(SysChargeMonitorApi).apiSetUpdateBatteryNoPost(state.form_charg.no, state.form_charg.batteryNo);
if (response.data.isSuccess) {
ElMessage.success('操作成功');
ElMessage.success(t('message.system_base_config.Operation_successful'));
} else {
ElMessage.error(response.data.msg);
ElMessage.error(t('message.system_base_config.Operation_failed'));
}
reset_dialog_charg();
handleQuery()
handleQuery();
});
};
const getapiSetBinInfoMakeAnAppointmentPost = async (no, amtLock) => {
const response = await getAPI(SysChargeMonitorApi).apiSetBinInfoMakeAnAppointmentPost(no, amtLock);
if (response.data.isSuccess) {
ElMessage.success('操作成功');
ElMessage.success(t('message.system_base_config.Operation_successful'));
} else {
ElMessage.error(response.data.msg);
ElMessage.error(t('message.system_base_config.Operation_failed'));
}
handleQuery();
};
@ -268,9 +269,9 @@ const getapiSetBinInfoMakeAnAppointmentPost = async (no, amtLock) => {
const getapiUpdateCanSwapFlagGet = async (id, flag) => {
const response = await getAPI(SysChargeMonitorApi).apiUpdateCanSwapFlagGet(id, flag);
if (response.data.isSuccess) {
ElMessage.success('操作成功');
ElMessage.success(t('message.system_base_config.Operation_successful'));
} else {
ElMessage.error(response.data.msg);
ElMessage.error(t('message.system_base_config.Operation_failed'));
}
handleQuery();
};

@ -13,7 +13,7 @@
<!-- <el-image :src="state.cropperImg" class="cropper-warp-left-img" /> -->
</div>
<div class="cropper-warp-right">
<div class="cropper-warp-right-title">预览</div>
<div class="cropper-warp-right-title">{{ $t('message.stop.preview') }}</div>
<div class="cropper-warp-right-item">
<div class="cropper-warp-right-value">
<img :src="state.cropperImgBase64" class="cropper-warp-right-value-img" />
@ -42,10 +42,10 @@
:on-exceed="selectPictureExceed"
style="display: inline-block; position: absolute; right: 172px"
>
<el-button icon="ele-Picture">选择图片</el-button>
<el-button icon="ele-Picture">{{ $t('message.stop.Select_image') }}</el-button>
</el-upload>
<el-button @click="onCancel"> </el-button>
<el-button type="primary" @click="onSubmit"> </el-button>
<el-button @click="onCancel">{{ $t('message.system_base_config.cancel') }}</el-button>
<el-button type="primary" @click="onSubmit">{{ $t('message.system_base_config.submit') }}</el-button>
</span>
</template>
</el-dialog>
@ -58,7 +58,8 @@ import Cropper from 'cropperjs';
import 'cropperjs/dist/cropper.css';
import { genFileId } from 'element-plus';
import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const props = defineProps({
title: {
type: String,

@ -10,172 +10,172 @@
<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto">
<el-row :gutter="10">
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="换电站编码" prop="stationNo" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.swapStationCode')" prop="stationNo" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.stationNo" placeholder="" clearable />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="换电站名称" prop="stationName" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.swapStationName')" prop="stationName" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.stationName" placeholder="" clearable />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="站类型" prop="stationType" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.swapStationType')" prop="stationType" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.stationType" placeholder="" clearable />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="换电站识别号" prop="stationSn" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.swapStationID')" prop="stationSn" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.stationSn" placeholder="" clearable />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="地理位置">
<el-form-item :label="$t('message.stop.geographicLocation')">
<el-input v-model="state.ruleForm.stationLocation" placeholder="" clearable />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="经度">
<el-form-item :label="$t('message.stop.longitude')">
<el-input v-model="state.ruleForm.longitude" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="纬度">
<el-form-item :label="$t('message.stop.latitude')">
<el-input v-model="state.ruleForm.latitude" placeholder="" clearable />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="区域编号">
<el-form-item :label="$t('message.stop.areaCode')">
<el-input v-model="state.ruleForm.areaCode" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="区域名称">
<el-form-item :label="$t('message.stop.areaName')">
<el-input v-model="state.ruleForm.areaName" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="营运开始时间" prop="operatetionstime" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-date-picker v-model="state.ruleForm.operatetionstime" type="date" placeholder="营运开始时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" class="w100" />
<el-form-item :label="$t('message.stop.operationStartTime')" prop="operatetionstime" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-date-picker v-model="state.ruleForm.operatetionstime" type="date" :placeholder="$t('message.stop.operationStartTime')" format="YYYY-MM-DD" value-format="YYYY-MM-DD" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="营运结束时间" prop="operatetionetime" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-date-picker v-model="state.ruleForm.operatetionetime" type="date" placeholder="营运结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" class="w100" />
<el-form-item :label="$t('message.stop.operationEndTime')" prop="operatetionetime" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-date-picker v-model="state.ruleForm.operatetionetime" type="date" :placeholder="$t('message.stop.operationEndTime')" format="YYYY-MM-DD" value-format="YYYY-MM-DD" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="服务状态" prop="sevstatus" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.serviceStatus')" prop="sevstatus" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.sevstatus" placeholder="" type="number" max="127" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="运营状态" prop="stationStatus" :rules="[{ required: true, message: '不能为空', trigger: 'change' }]">
<el-select v-model="state.ruleForm.stationStatus" placeholder="运营状态" clearable class="w100">
<el-option label="营业中" :value="1" />
<el-option label="歇业中" :value="2" />
<el-option label="设备维护" :value="3" />
<el-option label="暂停营业" :value="4" />
<el-form-item :label="$t('message.stop.operationStatus')" prop="stationStatus" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'change' }]">
<el-select v-model="state.ruleForm.stationStatus" :placeholder="$t('message.stop.operationStatus')" clearable class="w100">
<el-option :label="$t('message.stop.openForBusiness')" :value="1" />
<el-option :label="$t('message.stop.temporarilyClosed')" :value="2" />
<el-option :label="$t('message.stop.equipmentMaintenance')" :value="3" />
<el-option :label="$t('message.stop.businessSuspended')" :value="4" />
</el-select>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="投放时间">
<el-date-picker v-model="state.ruleForm.launchTime" type="date" placeholder="投放时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" class="w100" />
<el-form-item :label="$t('message.stop.deploymentTime')">
<el-date-picker v-model="state.ruleForm.launchTime" type="date" :placeholder="$t('message.stop.deploymentTime')" format="YYYY-MM-DD" value-format="YYYY-MM-DD" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="联系方式" prop="contactWay" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.contactInformation')" prop="contactWay" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.contactWay" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="负责人" prop="principal" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.stationManager')" prop="principal" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.principal" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="所属运营企业">
<el-form-item :label="$t('message.stop.operatingCompany')">
<el-input v-model="state.ruleForm.stationCompany" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="所属运营企业统一社会信用代码">
<el-form-item :label="$t('message.stop.operatingCompanyCreditCode')">
<el-input v-model="state.ruleForm.socialCreditCode" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="站控主机软件版本号" prop="stationSftVer" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.mainControllerSoftwareVersion')" prop="stationSftVer" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.stationSftVer" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="供应商代码" prop="supplierCode" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.supplierCode')" prop="supplierCode" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.supplierCode" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="换电站基础信息版本号" prop="stationVersion" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.basicInfoVersion')" prop="stationVersion" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.stationVersion" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="换电站硬件版本">
<el-form-item :label="$t('message.stop.hardwareVersion')">
<el-input v-model="state.ruleForm.hardwareVersion" placeholder="" type="number" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="总体故障等级">
<el-form-item :label="$t('message.stop.overallFaultLevel')">
<el-input v-model="state.ruleForm.faultlevel" placeholder="" type="number" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="加解锁方式">
<el-form-item :label="$t('message.stop.lockUnlockMethod')">
<el-input v-model="state.ruleForm.lockType" placeholder="" type="number" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="进入方式">
<el-form-item :label="$t('message.stop.entryMethod')">
<el-input v-model="state.ruleForm.accessType" placeholder="" type="number" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="举升方式">
<el-form-item :label="$t('message.stop.liftingMethod')">
<el-input v-model="state.ruleForm.riseType" placeholder="" type="number" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="配电容量(kVA)">
<el-form-item :label="$t('message.stop.powerDistributionCapacity')">
<el-input v-model="state.ruleForm.distributionCapacity" placeholder="" type="number" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="修改时间">
<el-date-picker v-model="state.ruleForm.modifyTime" type="date" placeholder="修改时间" disabled format="YYYY-MM-DD" value-format="YYYY-MM-DD" class="w100" />
<el-form-item :label="$t('message.stop.modificationTime')">
<el-date-picker v-model="state.ruleForm.modifyTime" type="date" :placeholder="$t('message.stop.modificationTime')" disabled format="YYYY-MM-DD" value-format="YYYY-MM-DD" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="总功率(kw)">
<el-form-item :label="$t('message.stop.totalPower')">
<el-input v-model="state.ruleForm.totalPower" placeholder="" type="number" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="省份" prop="stationProvince" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.province')" prop="stationProvince" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.stationProvince" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="城市" prop="stationCity" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.city')" prop="stationCity" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.stationCity" placeholder="" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="组织机构ID">
<el-form-item :label="$t('message.stop.organizationID')">
<el-input v-model="state.ruleForm.organizationId" placeholder="" type="number" class="w100" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="站控电脑MAC地址" prop="stationMac" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-form-item :label="$t('message.stop.stationControlPCMACAddress')" prop="stationMac" :rules="[{ required: true, message: $t('message.system_base_config.is_null'), trigger: 'blur' }]">
<el-input v-model="state.ruleForm.stationMac" placeholder="" class="w100" />
</el-form-item>
</el-col>
@ -198,7 +198,8 @@ import { ElMessageBox, ElMessage } from 'element-plus';
import { getAPI } from '/@/utils/axios-utils';
import { SysSideBasisApi } from '/@/api-services/api';
import { UpdateStopSideInput } from '/@/api-services/models';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const props = defineProps({
title: String,
});

@ -3,95 +3,95 @@
<div style="text-align: right">
<a @click="handleEdit" style="color: #409eff">
<el-icon type="edit" />
编辑
{{ $t('message.stop.edit') }}
</a>
</div>
<el-row :gutter="20">
<el-col :span="14">
<h2>{{ info.stationName }}</h2>
<el-image :src="imgs_url" style="width: 200px; height: 100px; box-shadow: 0 0 15px #ccc; margin-top: 10px" alt="换电站图片" />
<el-image :src="imgs_url" style="width: 200px; height: 100px; box-shadow: 0 0 15px #ccc; margin-top: 10px" :alt="$t('message.stop.swapStationImage')" />
<div>
<el-button type="primary" style="margin-top: 20px" @click="openCropperDialog"> </el-button>
<el-button type="primary" style="margin-top: 20px" @click="openCropperDialog"> {{ $t('message.stop.replaceImage') }} </el-button>
</div>
</el-col>
</el-row>
<el-row :gutter="20" style="margin-top: 10px">
<el-col :span="8">
<div class="mar_demo">
换电站编码:<span class="dataInfo"> {{ info.stationNo }}</span>
{{ $t('message.stop.swapStationCode') }}:<span class="dataInfo"> {{ info.stationNo }}</span>
</div>
<div class="mar_demo">
换电站名称:<span class="dataInfo">{{ info.stationName }}</span>
{{ $t('message.stop.swapStationName') }}:<span class="dataInfo">{{ info.stationName }}</span>
</div>
<div class="mar_demo">
换电站类型:<span class="dataInfo">{{ info.stationType }}</span>
{{ $t('message.stop.swapStationType') }}:<span class="dataInfo">{{ info.stationType }}</span>
</div>
<div class="mar_demo">
换电站识别号:<span class="dataInfo">{{ info.stationSn }}</span>
{{ $t('message.stop.swapStationID') }}:<span class="dataInfo">{{ info.stationSn }}</span>
</div>
<div class="mar_demo">
地理位置:<span class="dataInfo">{{ info.stationLocation }}</span>
{{ $t('message.stop.geographicLocation') }}:<span class="dataInfo">{{ info.stationLocation }}</span>
</div>
<div class="mar_demo">
经纬度:<span class="dataInfo">{{ info.longitude + '/' + info.latitude }}</span>
{{ $t('message.stop.latitudeLongitude') }}:<span class="dataInfo">{{ info.longitude + '/' + info.latitude }}</span>
</div>
<div class="mar_demo">
区域编号:<span class="dataInfo">{{ info.areaCode }}</span>
{{ $t('message.stop.areaCode') }}:<span class="dataInfo">{{ info.areaCode }}</span>
</div>
<div class="mar_demo">
区域名称:<span class="dataInfo">{{ info.areaName }}</span>
{{ $t('message.stop.areaName') }}:<span class="dataInfo">{{ info.areaName }}</span>
</div>
</el-col>
<el-col :span="8">
<div class="mar_demo">
运营开始时间:<span class="dataInfo">{{ info.operatetionstime }}</span>
{{ $t('message.stop.operationStartTime') }}:<span class="dataInfo">{{ info.operatetionstime }}</span>
</div>
<div class="mar_demo">
运营结束时间:<span class="dataInfo">{{ info.operatetionetime }}</span>
{{ $t('message.stop.operationEndTime') }}:<span class="dataInfo">{{ info.operatetionetime }}</span>
</div>
<div class="mar_demo">
服务状态:<span class="dataInfo">{{ info.sevstatus }}</span>
{{ $t('message.stop.serviceStatus') }}:<span class="dataInfo">{{ info.sevstatus }}</span>
</div>
<div class="mar_demo">
运营状态:
<span class="dataInfo" v-if="info.stationStatus == 1"></span>
<span class="dataInfo" v-if="info.stationStatus == 2"></span>
<span class="dataInfo" v-if="info.stationStatus == 3"></span>
<span class="dataInfo" v-if="info.stationStatus == 4"></span>
{{ $t('message.stop.operationStatus') }}:
<span class="dataInfo" v-if="info.stationStatus == 1">{{ $t('message.stop.openForBusiness') }}</span>
<span class="dataInfo" v-if="info.stationStatus == 2">{{ $t('message.stop.temporarilyClosed') }}</span>
<span class="dataInfo" v-if="info.stationStatus == 3">{{ $t('message.stop.equipmentMaintenance') }}</span>
<span class="dataInfo" v-if="info.stationStatus == 4">{{ $t('message.stop.businessSuspended') }}</span>
</div>
<div class="mar_demo">
投放时间: <span class="dataInfo">{{ info.launchTime }}</span>
{{ $t('message.stop.deploymentTime') }}: <span class="dataInfo">{{ info.launchTime }}</span>
</div>
<div class="mar_demo">
站点负责人:<span class="dataInfo">{{ info.principal }}</span>
{{ $t('message.stop.stationManager') }}:<span class="dataInfo">{{ info.principal }}</span>
</div>
<div class="mar_demo">
联系方式:<span class="dataInfo">{{ info.contactWay }}</span>
{{ $t('message.stop.contactInformation') }}:<span class="dataInfo">{{ info.contactWay }}</span>
</div>
<div class="mar_demo">
换电站所属运营企业:<span class="dataInfo">{{ info.stationCompany }}</span>
{{ $t('message.stop.operatingCompany') }}:<span class="dataInfo">{{ info.stationCompany }}</span>
</div>
</el-col>
<el-col :span="8">
<div class="mar_demo">
所属运营企业统一社会信用代码:<span class="dataInfo">{{ info.socialCreditCode }}</span>
{{ $t('message.stop.operatingCompanyCreditCode') }}:<span class="dataInfo">{{ info.socialCreditCode }}</span>
</div>
<div class="mar_demo">
站控主机软件版本号:<span class="dataInfo">{{ info.stationSftVer }}</span>
{{ $t('message.stop.mainControllerSoftwareVersion') }}:<span class="dataInfo">{{ info.stationSftVer }}</span>
</div>
<div class="mar_demo">
供应商代码:<span class="dataInfo">{{ info.supplierCode }}</span>
{{ $t('message.stop.supplierCode') }}:<span class="dataInfo">{{ info.supplierCode }}</span>
</div>
<div class="mar_demo">
换电站基础信息版本号:<span class="dataInfo">{{ info.stationVersion }}</span>
{{ $t('message.stop.basicInfoVersion') }}:<span class="dataInfo">{{ info.stationVersion }}</span>
</div>
<div class="mar_demo">
换电站硬件版本:<span class="dataInfo">{{ info.hardwareVersion }}</span>
{{ $t('message.stop.hardwareVersion') }}:<span class="dataInfo">{{ info.hardwareVersion }}</span>
</div>
</el-col>
</el-row>
<Editstop ref="editstopRef" title="编辑" @handleQuery="handleQuery" />
<Editstop ref="editstopRef" :title="$t('message.stop.edit')" @handleQuery="handleQuery" />
<CropperDialog ref="cropperDialogRef" :title="cropperTitle" @uploadCropperImg="uploadCropperImg" />
</el-card>
</template>
@ -105,6 +105,8 @@ import CropperDialog from './component/cropper.vue';
// import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '/@/api-services/base';
import { onMounted, reactive, ref } from 'vue';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const editstopRef = ref(Editstop);
const info = ref({
@ -170,7 +172,7 @@ const handleQuery = async () => {
//
const openCropperDialog = () => {
cropperTitle.value = '更换背景';
cropperTitle.value = t('message.stop.replaceBackground');
cropperDialogRef.value?.openDialog(info.value.cover);
};
//

Loading…
Cancel
Save