2025-05-22 16:23:08 +08:00

120 lines
3.0 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="modbus-edit-wrap">
<!-- 注意如果需要兼容微信小程序最好通过setRules方法设置rules规则 -->
<u--form labelPosition="left" :labelStyle="{marginRight:'10px'}" labelWidth="100" labelAlign="right"
:model="model" :rules="rules" ref="form">
<u-form-item :label="$tt('modbus.deviceName')" prop="name" required borderBottom>
<u--input v-model="model.name" border="none" clearable></u--input>
</u-form-item>
<u-form-item :label="$tt('modbus.firmware')" prop="version" required borderBottom>
<u--input v-model="model.version" type="number" border="none" clearable></u--input>
</u-form-item>
</u--form>
<view class="edit-bottom-wrap">
<view class="btn-wrap">
<u-button type="primary" @click="handleSaveClick">{{$tt('common.save')}}</u-button>
</view>
</view>
</view>
</template>
<script>
import { updateDevice } from '@/apis/modules/device';
export default {
data() {
return {
model: {
name: '',
version: '',
},
rules: {
'name': {
type: 'string',
required: true,
message: this.$tt('modbus.inputDeviceName'),
trigger: ['blur', 'change']
},
'version': {
type: 'number',
required: true,
message: this.$tt('modbus.inputVersion'),
trigger: ['blur', 'change']
},
},
data: null
};
},
onReady() {
//如果需要兼容微信小程序并且校验规则中含有方法等只能通过setRules方法设置规则。
this.$refs.form.setRules(this.rules)
},
onLoad(option) {
this.data = JSON.parse(decodeURIComponent(option.item));
const { deviceName, firmwareVersion } = this.data;
this.model.name = deviceName;
this.model.version = firmwareVersion;
},
methods: {
handleSaveClick() {
this.$refs.form.validate().then(res => {
this.updateDeviceData();
}).catch(errors => {
console.log('校验失败');
})
},
updateDeviceData() {
let device = {
...this.data,
deviceId: this.data.deviceId,
deviceName: this.model.name,
firmwareVersion: this.model.version
};
updateDevice(device).then(res => {
if (res.code === 200) {
uni.showToast({
icon: 'success',
title: this.$tt('common.updateSuccessful')
});
uni.navigateBack({
delta: 1,
success: (e) => {
let pages = getCurrentPages();
// #ifdef MP-WEIXIN
let prePage = pages[pages.length - 1];
//#endif
// #ifdef H5 || APP-PLUS
let prePage = pages[pages.length - 2];
//#endif
// 更新数据列表
prePage.$vm.deviceForm.subDeviceList = [];
prePage.$vm.getDevice();
}
});
}
});
}
},
};
</script>
<style lang="scss" scoped>
.modbus-edit-wrap {
padding: 10px;
::v-deep .u-form-item__body__left__content__required {
left: 5px;
}
.edit-bottom-wrap {
position: absolute;
bottom: 50px;
left: 0;
right: 0;
.btn-wrap {
padding: 0 10px;
}
}
}
</style>