Compare commits

..

No commits in common. "1299a56e22e49e06d8a0156f144a53f4616b2754" and "67d639c413470c36b04c30e91743fab195c778d0" have entirely different histories.

8 changed files with 349 additions and 369 deletions

View File

@ -65,7 +65,6 @@
v-if="col.subcomponent" v-if="col.subcomponent"
:key="col.key" :key="col.key"
:disabled="disabled" :disabled="disabled"
:read-only="disabled"
:is="col.subcomponent" :is="col.subcomponent"
v-model="form[col.prop]" v-model="form[col.prop]"
:inlineStyle="col.style" :inlineStyle="col.style"

View File

@ -1,293 +1,279 @@
<template> <template>
<div :class="[readOnly ? 'editor-wrapper' : '']"> <div>
<el-upload <el-upload
:action="uploadFileUrl" :action="uploadFileUrl"
:before-upload="handleBeforeUpload" :before-upload="handleBeforeUpload"
:on-success="handleUploadSuccess" :on-success="handleUploadSuccess"
:on-error="handleUploadError" :on-error="handleUploadError"
name="file" name="file"
:show-file-list="false" :show-file-list="false"
:headers="headers" :headers="headers"
style="display: none" style="display: none"
ref="upload" ref="upload"
v-if="this.type === 'url'"></el-upload> v-if="this.type === 'url'"
<div class="editor" ref="editor" :style="styles"></div> >
</div> </el-upload>
<div class="editor" ref="editor" :style="styles"></div>
</div>
</template> </template>
<script> <script>
import Quill from 'quill'; import Quill from "quill";
import 'quill/dist/quill.core.css'; import "quill/dist/quill.core.css";
import 'quill/dist/quill.snow.css'; import "quill/dist/quill.snow.css";
import 'quill/dist/quill.bubble.css'; import "quill/dist/quill.bubble.css";
import { getAccessToken } from '@/utils/auth'; import { getAccessToken } from "@/utils/auth";
export default { export default {
name: 'Editor', name: "Editor",
props: { props: {
/* 编辑器的内容 */ /* 编辑器的内容 */
value: { value: {
type: String, type: String,
default: '', default: "",
}, },
/* 高度 */ /* 高度 */
height: { height: {
type: Number, type: Number,
default: null, default: null,
}, },
/* 最小高度 */ /* 最小高度 */
minHeight: { minHeight: {
type: Number, type: Number,
default: null, default: null,
}, },
/* 只读 */ /* 只读 */
readOnly: { readOnly: {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
// (MB) // (MB)
fileSize: { fileSize: {
type: Number, type: Number,
default: 5, default: 5,
}, },
/* 类型base64格式、url格式 */ /* 类型base64格式、url格式 */
type: { type: {
type: String, type: String,
default: 'url', default: "url",
}, }
}, },
data() { data() {
return { return {
uploadFileUrl: uploadFileUrl: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", //
process.env.VUE_APP_BASE_API + '/admin-api/infra/file/upload', // headers: { Authorization: "Bearer " + getAccessToken() }, //
headers: { Authorization: 'Bearer ' + getAccessToken() }, // Quill: null,
Quill: null, currentValue: "",
currentValue: '', options: {
options: { theme: "snow",
theme: 'snow', bounds: document.body,
bounds: document.body, debug: "warn",
debug: 'warn', modules: {
modules: { //
// toolbar: [
toolbar: [ ["bold", "italic", "underline", "strike"], // 线 线
['bold', 'italic', 'underline', 'strike'], // 线 线 ["blockquote", "code-block"], //
['blockquote', 'code-block'], // [{ list: "ordered" }, { list: "bullet" }], //
[{ list: 'ordered' }, { list: 'bullet' }], // [{ indent: "-1" }, { indent: "+1" }], //
[{ indent: '-1' }, { indent: '+1' }], // [{ size: ["small", false, "large", "huge"] }], //
[{ size: ['small', false, 'large', 'huge'] }], // [{ header: [1, 2, 3, 4, 5, 6, false] }], //
[{ header: [1, 2, 3, 4, 5, 6, false] }], // [{ color: [] }, { background: [] }], //
[{ color: [] }, { background: [] }], // [{ align: [] }], //
[{ align: [] }], // ["clean"], //
['clean'], // ["link", "image", "video"] //
['link', 'image', 'video'], // ],
], },
}, placeholder: "请输入内容",
placeholder: '请输入内容', readOnly: true,
readOnly: true, },
}, };
}; },
}, computed: {
computed: { styles() {
styles() { let style = {};
let style = {}; if (this.minHeight) {
if (this.minHeight) { style.minHeight = `${this.minHeight}px`;
style.minHeight = `${this.minHeight}px`; }
} if (this.height) {
if (this.height) { style.height = `${this.height}px`;
style.height = `${this.height}px`; }
} return style;
return style; },
}, },
}, watch: {
watch: { value: {
value: { handler(val) {
handler(val) { if (val !== this.currentValue) {
if (val !== this.currentValue) { this.currentValue = val === null ? "" : val;
this.currentValue = val === null ? '' : val; if (this.Quill) {
if (this.Quill) { this.Quill.pasteHTML(this.currentValue);
this.Quill.pasteHTML(this.currentValue); }
} }
} },
}, immediate: true,
immediate: true, },
}, },
}, mounted() {
mounted() { this.init();
this.init(); },
}, beforeDestroy() {
beforeDestroy() { this.Quill = null;
this.Quill = null; },
}, methods: {
methods: { init() {
init() { const editor = this.$refs.editor;
const editor = this.$refs.editor; this.Quill = new Quill(editor, this.options);
this.Quill = new Quill(editor, this.options); // start
// start this.$nextTick(()=>{
this.$nextTick(() => { this.Quill.blur();
this.Quill.blur(); if(!this.readOnly){
if (!this.readOnly) { this.Quill.enable();
this.Quill.enable(); }
} });
}); //
// if (this.type === 'url') {
if (this.type === 'url') { let toolbar = this.Quill.getModule("toolbar");
let toolbar = this.Quill.getModule('toolbar'); toolbar.addHandler("image", (value) => {
toolbar.addHandler('image', (value) => { this.uploadType = "image";
this.uploadType = 'image'; if (value) {
if (value) { this.$refs.upload.$children[0].$refs.input.click();
this.$refs.upload.$children[0].$refs.input.click(); } else {
} else { this.quill.format("image", false);
this.quill.format('image', false); }
} });
}); }
} this.Quill.pasteHTML(this.currentValue);
this.Quill.pasteHTML(this.currentValue); this.Quill.on("text-change", (delta, oldDelta, source) => {
this.Quill.on('text-change', (delta, oldDelta, source) => { const html = this.$refs.editor.children[0].innerHTML;
const html = this.$refs.editor.children[0].innerHTML; const text = this.Quill.getText();
const text = this.Quill.getText(); const quill = this.Quill;
const quill = this.Quill; this.currentValue = html;
this.currentValue = html; this.$emit("input", html);
this.$emit('input', html); this.$emit("on-change", { html, text, quill });
this.$emit('on-change', { html, text, quill }); });
}); this.Quill.on("text-change", (delta, oldDelta, source) => {
this.Quill.on('text-change', (delta, oldDelta, source) => { this.$emit("on-text-change", delta, oldDelta, source);
this.$emit('on-text-change', delta, oldDelta, source); });
}); this.Quill.on("selection-change", (range, oldRange, source) => {
this.Quill.on('selection-change', (range, oldRange, source) => { this.$emit("on-selection-change", range, oldRange, source);
this.$emit('on-selection-change', range, oldRange, source); });
}); this.Quill.on("editor-change", (eventName, ...args) => {
this.Quill.on('editor-change', (eventName, ...args) => { this.$emit("on-editor-change", eventName, ...args);
this.$emit('on-editor-change', eventName, ...args); });
}); },
}, //
// handleBeforeUpload(file) {
handleBeforeUpload(file) { //
// if (this.fileSize) {
if (this.fileSize) { const isLt = file.size / 1024 / 1024 < this.fileSize;
const isLt = file.size / 1024 / 1024 < this.fileSize; if (!isLt) {
if (!isLt) { this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`);
this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`); return false;
return false; }
} }
} return true;
return true; },
}, handleUploadSuccess(res, file) {
handleUploadSuccess(res, file) { //
// let quill = this.Quill;
let quill = this.Quill; //
// // edit by
// edit by if (res.code === 200 || res.code === 0) {
if (res.code === 200 || res.code === 0) { //
// let length = quill.getSelection().index;
let length = quill.getSelection().index; // res.url
// res.url // edit by
// edit by quill.insertEmbed(length, "image", res.data);
quill.insertEmbed(length, 'image', res.data); //
// quill.setSelection(length + 1);
quill.setSelection(length + 1); } else {
} else { this.$message.error("图片插入失败");
this.$message.error('图片插入失败'); }
} },
}, handleUploadError() {
handleUploadError() { this.$message.error("图片插入失败");
this.$message.error('图片插入失败'); },
}, },
},
}; };
</script> </script>
<style> <style>
.editor-wrapper { .editor, .ql-toolbar {
position: relative; white-space: pre-wrap !important;
cursor: not-allowed; line-height: normal !important;
&::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #f5f7fa77;
}
}
.editor,
.ql-toolbar {
white-space: pre-wrap !important;
line-height: normal !important;
} }
.quill-img { .quill-img {
display: none; display: none;
} }
.ql-snow .ql-tooltip[data-mode='link']::before { .ql-snow .ql-tooltip[data-mode="link"]::before {
content: '请输入链接地址:'; content: "请输入链接地址:";
} }
.ql-snow .ql-tooltip.ql-editing a.ql-action::after { .ql-snow .ql-tooltip.ql-editing a.ql-action::after {
border-right: 0px; border-right: 0px;
content: '保存'; content: "保存";
padding-right: 0px; padding-right: 0px;
} }
.ql-snow .ql-tooltip[data-mode='video']::before { .ql-snow .ql-tooltip[data-mode="video"]::before {
content: '请输入视频地址:'; content: "请输入视频地址:";
} }
.ql-snow .ql-picker.ql-size .ql-picker-label::before, .ql-snow .ql-picker.ql-size .ql-picker-label::before,
.ql-snow .ql-picker.ql-size .ql-picker-item::before { .ql-snow .ql-picker.ql-size .ql-picker-item::before {
content: '14px'; content: "14px";
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='small']::before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='small']::before { .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before {
content: '10px'; content: "10px";
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='large']::before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='large']::before { .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before {
content: '18px'; content: "18px";
} }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='huge']::before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='huge']::before { .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before {
content: '32px'; content: "32px";
} }
.ql-snow .ql-picker.ql-header .ql-picker-label::before, .ql-snow .ql-picker.ql-header .ql-picker-label::before,
.ql-snow .ql-picker.ql-header .ql-picker-item::before { .ql-snow .ql-picker.ql-header .ql-picker-item::before {
content: '文本'; content: "文本";
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='1']::before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='1']::before { .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
content: '标题1'; content: "标题1";
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='2']::before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='2']::before { .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
content: '标题2'; content: "标题2";
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='3']::before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='3']::before { .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
content: '标题3'; content: "标题3";
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='4']::before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='4']::before { .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
content: '标题4'; content: "标题4";
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='5']::before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='5']::before { .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
content: '标题5'; content: "标题5";
} }
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='6']::before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='6']::before { .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
content: '标题6'; content: "标题6";
} }
.ql-snow .ql-picker.ql-font .ql-picker-label::before, .ql-snow .ql-picker.ql-font .ql-picker-label::before,
.ql-snow .ql-picker.ql-font .ql-picker-item::before { .ql-snow .ql-picker.ql-font .ql-picker-item::before {
content: '标准字体'; content: "标准字体";
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='serif']::before, .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='serif']::before { .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before {
content: '衬线字体'; content: "衬线字体";
} }
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='monospace']::before, .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='monospace']::before { .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before {
content: '等宽字体'; content: "等宽字体";
} }
</style> </style>

View File

@ -29,10 +29,7 @@
<section v-for="(section, index) in sections" :key="section.key"> <section v-for="(section, index) in sections" :key="section.key">
<SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle> <SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle>
<div <div class="form-part" v-if="section.key == 'base'">
class="form-part"
v-if="section.key == 'base'"
style="border-bottom: 1px solid #dfdfdf; margin-bottom: 24px">
<el-skeleton v-if="!showForm" animated /> <el-skeleton v-if="!showForm" animated />
<!-- <BaseInfoForm <!-- <BaseInfoForm
key="drawer-dialog-form" key="drawer-dialog-form"
@ -67,8 +64,9 @@
<div <div
v-if="section.key == 'attrs'" v-if="section.key == 'attrs'"
style="position: relative; margin-top: 12px"> style="position: relative; margin-top: 12px">
<!-- v-if="!mode.includes('detail')" --> <div
<div style="position: absolute; top: -40px; right: 0"> v-if="!mode.includes('detail')"
style="position: absolute; top: -40px; right: 0">
<el-button @click="handleAddAttr" type="text"> <el-button @click="handleAddAttr" type="text">
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
添加报警 添加报警
@ -104,9 +102,9 @@
<div class="drawer-body__footer"> <div class="drawer-body__footer">
<el-button style="" @click="handleCancel">取消</el-button> <el-button style="" @click="handleCancel">取消</el-button>
<!-- <el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> <el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit">
编辑 编辑
</el-button> --> </el-button>
<!-- <el-button v-else type="primary" @click="handleCancel">确定</el-button> --> <!-- <el-button v-else type="primary" @click="handleCancel">确定</el-button> -->
</div> </div>
</div> </div>
@ -125,9 +123,9 @@
<DialogForm <DialogForm
v-if="attrFormVisible" v-if="attrFormVisible"
ref="attrForm" ref="attrForm"
:disabled="mode.includes('detail')"
v-model="attrForm" v-model="attrForm"
:rows="attrRows" /> :rows="attrRows" />
<!-- :disabled="mode.includes('detail')" -->
</base-dialog> </base-dialog>
</el-drawer> </el-drawer>
</template> </template>
@ -193,12 +191,29 @@ export default {
url: '/base/equipment-group-alarm/getCode', url: '/base/equipment-group-alarm/getCode',
rules: [{ required: true, message: '不能为空', trigger: 'blur' }], rules: [{ required: true, message: '不能为空', trigger: 'blur' }],
}, },
{
select: true,
label: '报警类型', //
prop: 'type',
options: [
{ label: '布尔型', value: 2 },
{ label: '字符型', value: 1 },
],
rules: [{ required: true, message: '不能为空', trigger: 'blur' }],
},
],
[
{ {
select: true, select: true,
label: '报警级别', // label: '报警级别', //
prop: 'grade', prop: 'grade',
options: this.getDictDatas(this.DICT_TYPE.EQU_ALARM_LEVEL), options: this.getDictDatas(this.DICT_TYPE.EQU_ALARM_LEVEL),
}, },
{
input: true,
label: '设备报警编码', //
prop: 'alarmCode',
},
], ],
[ [
{ {
@ -214,23 +229,6 @@ export default {
rules: [{ required: true, message: '不能为空', trigger: 'blur' }], rules: [{ required: true, message: '不能为空', trigger: 'blur' }],
}, },
], ],
[
{
select: true,
label: '报警类型', //
prop: 'type',
options: [
{ label: '布尔型', value: 2 },
{ label: '字符型', value: 1 },
],
rules: [{ required: true, message: '不能为空', trigger: 'blur' }],
},
{
input: true,
label: '设备报警编码', //
prop: 'alarmCode',
},
],
], ],
attrQuery: { attrQuery: {
params: { params: {

View File

@ -23,7 +23,6 @@
@change="$emit('update', dataForm)" @change="$emit('update', dataForm)"
placeholder="请输入报警编码" /> placeholder="请输入报警编码" />
</el-form-item> </el-form-item>
<!-- <!--
<el-form-item <el-form-item
label="报警编码" label="报警编码"
@ -41,6 +40,30 @@
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
</el-col> </el-col>
<el-col :span="12">
<el-form-item
label="报警类型"
prop="type"
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select
:disabled="disabled"
v-model="dataForm.type"
placeholder="请选择报警类型"
@change="handleTypeChange">
<el-option
v-for="opt in [
{ label: '布尔型', value: 2 },
{ label: '字符型', value: 1 },
]"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label="报警级别" label="报警级别"
@ -59,6 +82,19 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item
v-if="+dataForm.type == 1"
label="设备报警编码"
prop="alarmCode">
<el-input
:disabled="disabled"
v-model="dataForm.alarmCode"
@change="$emit('update', dataForm)"
placeholder="请输入设备报警编码" />
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
@ -86,42 +122,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item
label="报警类型"
prop="type"
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select
:disabled="disabled"
v-model="dataForm.type"
placeholder="请选择报警类型"
@change="handleTypeChange">
<el-option
v-for="opt in [
{ label: '布尔型', value: 2 },
{ label: '字符型', value: 1 },
]"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
v-if="+dataForm.type == 1"
label="设备报警编码"
prop="alarmCode">
<el-input
:disabled="disabled"
v-model="dataForm.alarmCode"
@change="$emit('update', dataForm)"
placeholder="请输入设备报警编码" />
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</template> </template>

View File

@ -29,10 +29,7 @@
<section v-for="(section, index) in sections" :key="section.key"> <section v-for="(section, index) in sections" :key="section.key">
<SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle> <SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle>
<div <div class="form-part" v-if="section.key == 'base'">
class="form-part"
v-if="section.key == 'base'"
style="border-bottom: 1px solid #dfdfdf; margin-bottom: 24px">
<el-skeleton v-if="!showForm" animated /> <el-skeleton v-if="!showForm" animated />
<!-- <BaseInfoForm <!-- <BaseInfoForm
key="drawer-dialog-form" key="drawer-dialog-form"
@ -67,8 +64,9 @@
<div <div
v-if="section.key == 'attrs'" v-if="section.key == 'attrs'"
style="position: relative; margin-top: 12px"> style="position: relative; margin-top: 12px">
<!-- v-if="!mode.includes('detail')" --> <div
<div style="position: absolute; top: -40px; right: 0"> v-if="!mode.includes('detail')"
style="position: absolute; top: -40px; right: 0">
<el-button @click="handleAddAttr" type="text"> <el-button @click="handleAddAttr" type="text">
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
添加属性 添加属性
@ -104,9 +102,9 @@
<div class="drawer-body__footer"> <div class="drawer-body__footer">
<el-button style="" @click="handleCancel">取消</el-button> <el-button style="" @click="handleCancel">取消</el-button>
<!-- <el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> <el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit">
编辑 编辑
</el-button> --> </el-button>
<!-- <el-button v-else type="primary" @click="handleCancel">确定</el-button> --> <!-- <el-button v-else type="primary" @click="handleCancel">确定</el-button> -->
</div> </div>
</div> </div>
@ -122,10 +120,10 @@
@close="closeAttrForm" @close="closeAttrForm"
@cancel="closeAttrForm" @cancel="closeAttrForm"
@confirm="submitAttrForm"> @confirm="submitAttrForm">
<!-- :disabled="mode.includes('detail')" -->
<DialogForm <DialogForm
v-if="attrFormVisible" v-if="attrFormVisible"
ref="attrForm" ref="attrForm"
:disabled="mode.includes('detail')"
v-model="attrForm" v-model="attrForm"
:rows="attrRows" /> :rows="attrRows" />
</base-dialog> </base-dialog>

View File

@ -41,6 +41,29 @@
</el-form-item> --> </el-form-item> -->
</el-col> </el-col>
<el-col :span="12">
<el-form-item
label="报警类型"
prop="type"
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select
:disabled="disabled"
v-model="dataForm.type"
placeholder="请选择报警类型"
@change="handleTypeChange">
<el-option
v-for="opt in [
{ label: '布尔型', value: 2 },
{ label: '字符型', value: 1 },
]"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label="报警级别" label="报警级别"
@ -59,6 +82,19 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item
v-if="+dataForm.type == 1"
label="设备报警编码"
prop="alarmCode">
<el-input
:disabled="disabled"
v-model="dataForm.alarmCode"
@change="$emit('update', dataForm)"
placeholder="请输入设备报警编码" />
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
@ -86,42 +122,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item
label="报警类型"
prop="type"
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select
:disabled="disabled"
v-model="dataForm.type"
placeholder="请选择报警类型"
@change="handleTypeChange">
<el-option
v-for="opt in [
{ label: '布尔型', value: 2 },
{ label: '字符型', value: 1 },
]"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
v-if="+dataForm.type == 1"
label="设备报警编码"
prop="alarmCode">
<el-input
:disabled="disabled"
v-model="dataForm.alarmCode"
@change="$emit('update', dataForm)"
placeholder="请输入设备报警编码" />
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</template> </template>

View File

@ -29,10 +29,7 @@
<section v-for="(section, index) in sections" :key="section.key"> <section v-for="(section, index) in sections" :key="section.key">
<SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle> <SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle>
<div <div class="form-part" v-if="section.key == 'base'">
class="form-part"
v-if="section.key == 'base'"
style="border-bottom: 1px solid #dfdfdf; margin-bottom: 24px">
<el-skeleton v-if="!showForm" animated /> <el-skeleton v-if="!showForm" animated />
<!-- <BaseInfoForm <!-- <BaseInfoForm
key="drawer-dialog-form" key="drawer-dialog-form"
@ -69,8 +66,9 @@
<div <div
v-if="section.key == 'attrs'" v-if="section.key == 'attrs'"
style="position: relative; margin-top: 12px"> style="position: relative; margin-top: 12px">
<!-- v-if="!mode.includes('detail')" --> <div
<div style="position: absolute; top: -40px; right: 0"> v-if="!mode.includes('detail')"
style="position: absolute; top: -40px; right: 0">
<el-button @click="handleAddAttr" type="text"> <el-button @click="handleAddAttr" type="text">
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
添加属性 添加属性
@ -106,9 +104,9 @@
<div class="drawer-body__footer"> <div class="drawer-body__footer">
<el-button style="" @click="handleCancel">取消</el-button> <el-button style="" @click="handleCancel">取消</el-button>
<!-- <el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> <el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit">
编辑 编辑
</el-button> --> </el-button>
<!-- <el-button v-else type="primary" @click="handleCancel">确定</el-button> --> <!-- <el-button v-else type="primary" @click="handleCancel">确定</el-button> -->
</div> </div>
</div> </div>
@ -124,10 +122,10 @@
@close="closeAttrForm" @close="closeAttrForm"
@cancel="closeAttrForm" @cancel="closeAttrForm"
@confirm="submitAttrForm"> @confirm="submitAttrForm">
<!-- :disabled="mode.includes('detail')" -->
<DialogForm <DialogForm
v-if="attrFormVisible" v-if="attrFormVisible"
ref="attrForm" ref="attrForm"
:disabled="mode.includes('detail')"
v-model="attrForm" v-model="attrForm"
:rows="attrRows" /> :rows="attrRows" />
</base-dialog> </base-dialog>

View File

@ -269,6 +269,7 @@ export default {
prop: 'files', prop: 'files',
}, },
], ],
// TODO:
[ [
{ {
label: '保养描述', label: '保养描述',