房屋详情,单元变更

This commit is contained in:
Zy
2026-05-21 14:13:28 +08:00
parent 9645412534
commit 38274ab612
68 changed files with 1867 additions and 568 deletions

View File

@@ -44,8 +44,8 @@
<el-dropdown-item @click="handleMarkQrcodeZip">
<span>批量下载条形码</span>
</el-dropdown-item>
<!-- <el-dropdown-item v-hasPermi="['equipment:addqrcode:electricitydevice']">
<div @click="handleMarkqrcode">批量更新固件</div>
<!-- <el-dropdown-item v-hasPermi="['equipment:updatehardware:waterdevice']">
<div @click="handleMarkUpload">批量更新固件</div>
</el-dropdown-item> -->
</template>
</right-toolbar>
@@ -127,7 +127,7 @@
<el-button link type="primary" @click="handleOpenDialog('Upload', scope.row)" v-hasPermi="['equipment:updatehardware:waterdevice']"
>更新固件</el-button
>
<el-button link type="primary" @click="handleUpdate(scope.row.deviceCode)">最新抄表记录</el-button>
<!-- <el-button link type="primary" @click="handleUpdate(scope.row.deviceCode)">最新抄表记录</el-button> -->
<el-button link type="primary" @click="handleOpenDialog('UpdateHouse', scope.row)" v-hasPermi="['equipment:edithouse:waterdevice']"
>绑定房屋</el-button
@@ -197,15 +197,23 @@
</el-form>
<!-- upload file -->
<el-form v-else-if="dialogType === 'Upload'" ref="UploadFileformRef" :model="UploadFileform" :rules="UploadFileformRules" label-width="140px">
<el-form-item label="上传 A槽更新 文件" prop="fileA">
<el-form-item label="LEN_A" prop="lenA">
<el-input v-model="UploadFileform.lenA"></el-input>
</el-form-item>
<el-form-item label="CRC32_HEX_A" prop="crcA">
<el-input v-model="UploadFileform.crcA"></el-input>
</el-form-item>
<el-form-item label="上传 A槽更新 文件" prop="urlA">
<el-upload
ref="uploadRef"
ref="uploadARef"
accept=".bin"
:action="uploadAUrl"
name="file"
:headers="headerToken()"
:limit="1"
:show-file-list="true"
class="upload-demo"
:on-exceed="handleExceedA"
:on-success="handleAvatarSuccessA"
:before-upload="beforeAvatarUpload"
>
@@ -220,15 +228,24 @@
</template>
</el-upload>
</el-form-item>
<el-form-item label="上传 B槽更新 文件" prop="fileB">
<el-form-item label="LEN_B" prop="lenB">
<el-input v-model="UploadFileform.lenB"></el-input>
</el-form-item>
<el-form-item label="CRC32_HEX_B" prop="crcB">
<el-input v-model="UploadFileform.crcB"></el-input>
</el-form-item>
<el-form-item label="上传 B槽更新 文件" prop="urlB">
<el-upload
ref="uploadRef"
ref="uploadBRef"
accept=".bin"
:action="uploadBUrl"
name="file"
:limit="1"
:headers="headerToken()"
:show-file-list="true"
class="upload-demo"
:on-exceed="handleExceedB"
:on-success="handleAvatarSuccessB"
:before-upload="beforeAvatarUpload"
>
@@ -301,6 +318,7 @@ import { Upload } from '@element-plus/icons-vue';
import { CascaderValue, UploadProps, UploadRawFile } from 'element-plus';
import { checkPermi } from '@/utils/permission';
import { exportImagesToZip } from '@/utils/exportZip';
import { genFileId } from 'element-plus';
const uploadAUrl = import.meta.env.VITE_APP_BASE_API + '/waterDevice/uploadA';
const uploadBUrl = import.meta.env.VITE_APP_BASE_API + '/waterDevice/uploadB';
@@ -390,14 +408,20 @@ const rules = {
// ? 上传固件 ==============================================================================================
const UploadFileformRef = ref(null);
const uploadRef = ref();
const uploadBRef = ref();
const uploadARef = ref();
const UploadFileform = ref({
deviceCodes: [],
urlA: '',
urlB: ''
lenA: '',
crcA: '',
urlB: '',
crcB: '',
lenB: ''
});
const UploadFileformRules = {
file: [{ required: true, message: '更新文件不能为空', trigger: 'blur' }]
urlA: [{ required: true, message: 'A更新文件不能为空', trigger: 'blur' }],
urlB: [{ required: true, message: 'B更新文件不能为空', trigger: 'blur' }]
};
function headerToken() {
const useStore = useUserStore();
@@ -431,16 +455,27 @@ const handleAvatarSuccessA: UploadProps['onSuccess'] = (response: any) => {
const handleAvatarSuccessB: UploadProps['onSuccess'] = (response: any) => {
UploadFileform.value.urlB = response.data.url;
};
const handleExceedB: UploadProps['onExceed'] = (files) => {
uploadBRef.value!.clearFiles();
const file = files[0] as UploadRawFile;
file.uid = genFileId();
uploadBRef.value!.handleStart(file);
uploadBRef.value!.submit();
};
const handleExceedA: UploadProps['onExceed'] = (files) => {
uploadARef.value!.clearFiles();
const file = files[0] as UploadRawFile;
file.uid = genFileId();
uploadARef.value!.handleStart(file);
uploadARef.value!.submit();
};
// ? 上传固件 ==============================================================================================
// * 编辑房屋 ==============================================================================================
// 编辑房屋
const EditHouseformRef = ref(null);
const EditHouseformRules = {
fileA: [{ required: true, message: 'A文件不能为空', trigger: 'blur' }],
fileB: [{ required: true, message: 'B文件不能为空', trigger: 'blur' }]
};
const EditHouseformRules = {};
const EditHouseform = ref({
id: '',
deviceCode: '',
@@ -483,6 +518,17 @@ function handleMarkQrcodeZip() {
ElMessage.warning('请选择设备');
}
}
function handleMarkUpload() {
if (ids.value.length > 0) {
reset();
UploadFileform.value.deviceCodes = ids.value.map((item) => item.deviceCode).filter((item) => item);
dialog.title = '固件上传';
dialog.visible = true;
dialogType.value = 'Upload';
} else {
ElMessage.warning('请选择设备');
}
}
function produceQRzip(vals: WaterDeviceVO[]) {
const arr = vals.map((item) => {
@@ -623,7 +669,14 @@ const submitForm = () => {
}
});
} else if (dialogType.value === 'Upload') {
WaterDeviceUpdateBin(UploadFileform.value);
UploadFileformRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
await WaterDeviceUpdateBin(UploadFileform.value).finally(() => (buttonLoading.value = false));
proxy?.$modal.msgSuccess('操作成功');
unSubmit();
}
});
}
};
const unSubmit = () => {
@@ -653,6 +706,10 @@ const reset = () => {
UploadFileform.value.deviceCodes = [];
UploadFileform.value.urlA = '';
UploadFileform.value.urlB = '';
UploadFileform.value.lenA = '';
UploadFileform.value.crcA = '';
UploadFileform.value.lenB = '';
UploadFileform.value.crcB = '';
// 上传 清空
UploadFileformRef.value?.resetFields();