dataControl/src/components/AddSet.vue

158 lines
4.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<el-dialog v-model="visible" title="设备管理" width="40%" :before-close="closeDialog">
<el-form :model="addForm" label-width="100px" :rules="rules" ref="ruleFormRef">
<el-form-item label="设备名称:" prop="name">
<el-input v-model="addForm.name" placeholder="请输入点位名称" clearable :disabled="type!=='I'"/>
</el-form-item>
<el-form-item label="设备id:" prop="id">
<el-input v-model="addForm.id" placeholder="请输入设备id:1-255" clearable type="number" />
</el-form-item>
<el-form-item label="模板名称:" prop="template_name">
<el-select v-model="addForm.template_name" size="mini" placeholder="请选择模板名称">
<el-option v-for="item in modelArr" :key="item.name" :label="item.name"
:value="item.name" />
</el-select>
</el-form-item>
<el-form-item label="设备描述:" prop="description">
<el-input v-model="addForm.description" placeholder="请输入点位描述" clearable />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog">取消</el-button>
<el-button type="primary" @click="saveSet"> </el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import { onMounted, reactive, ref, toRefs, computed, nextTick } from "vue";
import infoApi from "@/api/infoApi.js";
import { ElMessage, ElMessageBox } from "element-plus";
export default {
props: ["formData", "dialogVisible", "setData", "type"],
emits: ["dialogClose", "dialogSuccess"],
setup(props, ctx) {
const checkSetId = (rule, value, callback) => {
let num = Number(value);
if (value && (num >= 1 && num <= 255)) {
callback();
} else {
callback(new Error("设备ID1-255"));
}
};
const ruleFormRef = ref(null);
const state = reactive({
addForm: {
},
modelArr: [],
rules: {
name: [{ required: true, message: "请输入设备名称", trigger: "blur" }],
template_name: [{ required: true, message: "请选择模板名称", trigger: "blur" }],
id: [
{ required: true, message: "请输入设备ID", trigger: "blur" },
{ required: true, validator: checkSetId, trigger: "blur" }
],
},
});
const visible = computed(() => {
return props.dialogVisible;
});
onMounted(() => {
state.addForm = props.setData;
console.log(123, props.formData)
// 获取模板数据
getTxTemplate();
});
const getTxTemplate = async () => {
const param = {
driver_name: props.formData.name
}
const res = await infoApi.getTxTemplate(param);
if (res.code == 0) {
// 获取数据
state.modelArr = [];
const data = res.data;
for (let i in data) {
let obj = {
key: Number(i),
name: data[i]
}
state.modelArr.push(obj);
console.log(33,state.modelArr);
}
state.addForm.template_name = state.modelArr[0].name;
} else {
ElMessage.error(res.data || res.messgae);
}
};
const closeDialog = () => {
ctx.emit("dialogClose");
};
const scanData = () => { };
const saveSet = async () => {
console.log(ruleFormRef.value);
await ruleFormRef.value.validate(async (valid) => {
if (valid) {
const param = {
driver_name: props.formData.name,
...state.addForm,
id: Number(state.addForm.id)
}
const res = props.type === 'I' ? await infoApi.addSet(param): await infoApi.editSet(param);
if (res.code == 0) {
ElMessage.success(res.message || "请求成功");
ctx.emit("dialogSuccess");
} else {
ElMessage.error(res.data || res.message);
}
} else {
console.log("error submit!");
}
});
};
return {
...toRefs(state),
visible,
closeDialog,
saveSet,
ruleFormRef
};
},
};
</script>
<style lang="scss" scoped>
.top-title {
width: 100%;
::v-deep .el-card__body {
width: 100%;
display: flex;
justify-content: space-between;
font-weight: 800;
font-size: 16px;
}
}
.btns {
padding: 15px 0;
width: 100%;
display: flex;
justify-content: space-between;
}
.flex-center {
display: flex;
justify-content: center;
padding: 10px 0;
cursor: pointer;
}
</style>