projects/mes-test #132

Manually merged
gtz217 merged 281 commits from projects/mes-test into projects/mes 2023-11-30 09:11:34 +08:00
8 changed files with 369 additions and 349 deletions
Showing only changes of commit b348a31b24 - Show all commits

View File

@ -65,6 +65,7 @@
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,279 +1,293 @@
<template> <template>
<div> <div :class="[readOnly ? 'editor-wrapper' : '']">
<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'" v-if="this.type === 'url'"></el-upload>
> <div class="editor" ref="editor" :style="styles"></div>
</el-upload> </div>
<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: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", // uploadFileUrl:
headers: { Authorization: "Bearer " + getAccessToken() }, // process.env.VUE_APP_BASE_API + '/admin-api/infra/file/upload', //
Quill: null, headers: { Authorization: 'Bearer ' + getAccessToken() }, //
currentValue: "", Quill: null,
options: { currentValue: '',
theme: "snow", options: {
bounds: document.body, theme: 'snow',
debug: "warn", bounds: document.body,
modules: { debug: 'warn',
// modules: {
toolbar: [ //
["bold", "italic", "underline", "strike"], // 线 线 toolbar: [
["blockquote", "code-block"], // ['bold', 'italic', 'underline', 'strike'], // 线 线
[{ list: "ordered" }, { list: "bullet" }], // ['blockquote', 'code-block'], //
[{ indent: "-1" }, { indent: "+1" }], // [{ list: 'ordered' }, { list: 'bullet' }], //
[{ size: ["small", false, "large", "huge"] }], // [{ indent: '-1' }, { indent: '+1' }], //
[{ header: [1, 2, 3, 4, 5, 6, false] }], // [{ size: ['small', false, 'large', 'huge'] }], //
[{ color: [] }, { background: [] }], // [{ header: [1, 2, 3, 4, 5, 6, false] }], //
[{ align: [] }], // [{ color: [] }, { background: [] }], //
["clean"], // [{ align: [] }], //
["link", "image", "video"] // ['clean'], //
], ['link', 'image', 'video'], //
}, ],
placeholder: "请输入内容", },
readOnly: true, placeholder: '请输入内容',
}, readOnly: true,
}; },
}, };
computed: { },
styles() { computed: {
let style = {}; styles() {
if (this.minHeight) { let style = {};
style.minHeight = `${this.minHeight}px`; if (this.minHeight) {
} style.minHeight = `${this.minHeight}px`;
if (this.height) { }
style.height = `${this.height}px`; if (this.height) {
} style.height = `${this.height}px`;
return style; }
}, return style;
}, },
watch: { },
value: { watch: {
handler(val) { value: {
if (val !== this.currentValue) { handler(val) {
this.currentValue = val === null ? "" : val; if (val !== this.currentValue) {
if (this.Quill) { this.currentValue = val === null ? '' : val;
this.Quill.pasteHTML(this.currentValue); if (this.Quill) {
} this.Quill.pasteHTML(this.currentValue);
} }
}, }
immediate: true, },
}, immediate: true,
}, },
mounted() { },
this.init(); mounted() {
}, this.init();
beforeDestroy() { },
this.Quill = null; beforeDestroy() {
}, this.Quill = null;
methods: { },
init() { methods: {
const editor = this.$refs.editor; init() {
this.Quill = new Quill(editor, this.options); const editor = this.$refs.editor;
// start this.Quill = new Quill(editor, this.options);
this.$nextTick(()=>{ // start
this.Quill.blur(); this.$nextTick(() => {
if(!this.readOnly){ this.Quill.blur();
this.Quill.enable(); if (!this.readOnly) {
} this.Quill.enable();
}); }
// });
if (this.type === 'url') { //
let toolbar = this.Quill.getModule("toolbar"); if (this.type === 'url') {
toolbar.addHandler("image", (value) => { let toolbar = this.Quill.getModule('toolbar');
this.uploadType = "image"; toolbar.addHandler('image', (value) => {
if (value) { this.uploadType = 'image';
this.$refs.upload.$children[0].$refs.input.click(); if (value) {
} else { this.$refs.upload.$children[0].$refs.input.click();
this.quill.format("image", false); } else {
} this.quill.format('image', false);
}); }
} });
this.Quill.pasteHTML(this.currentValue); }
this.Quill.on("text-change", (delta, oldDelta, source) => { this.Quill.pasteHTML(this.currentValue);
const html = this.$refs.editor.children[0].innerHTML; this.Quill.on('text-change', (delta, oldDelta, source) => {
const text = this.Quill.getText(); const html = this.$refs.editor.children[0].innerHTML;
const quill = this.Quill; const text = this.Quill.getText();
this.currentValue = html; const quill = this.Quill;
this.$emit("input", html); this.currentValue = html;
this.$emit("on-change", { html, text, quill }); this.$emit('input', html);
}); this.$emit('on-change', { html, text, quill });
this.Quill.on("text-change", (delta, oldDelta, source) => { });
this.$emit("on-text-change", delta, oldDelta, source); this.Quill.on('text-change', (delta, oldDelta, source) => {
}); this.$emit('on-text-change', delta, oldDelta, source);
this.Quill.on("selection-change", (range, oldRange, source) => { });
this.$emit("on-selection-change", range, oldRange, source); this.Quill.on('selection-change', (range, oldRange, source) => {
}); this.$emit('on-selection-change', range, oldRange, source);
this.Quill.on("editor-change", (eventName, ...args) => { });
this.$emit("on-editor-change", eventName, ...args); this.Quill.on('editor-change', (eventName, ...args) => {
}); this.$emit('on-editor-change', eventName, ...args);
}, });
// },
handleBeforeUpload(file) { //
// handleBeforeUpload(file) {
if (this.fileSize) { //
const isLt = file.size / 1024 / 1024 < this.fileSize; if (this.fileSize) {
if (!isLt) { const isLt = file.size / 1024 / 1024 < this.fileSize;
this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`); if (!isLt) {
return false; this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`);
} return false;
} }
return true; }
}, return true;
handleUploadSuccess(res, file) { },
// handleUploadSuccess(res, file) {
let quill = this.Quill; //
// let quill = this.Quill;
// edit by //
if (res.code === 200 || res.code === 0) { // edit by
// if (res.code === 200 || res.code === 0) {
let length = quill.getSelection().index; //
// res.url let length = quill.getSelection().index;
// edit by // res.url
quill.insertEmbed(length, "image", res.data); // edit by
// quill.insertEmbed(length, 'image', res.data);
quill.setSelection(length + 1); //
} else { quill.setSelection(length + 1);
this.$message.error("图片插入失败"); } else {
} this.$message.error('图片插入失败');
}, }
handleUploadError() { },
this.$message.error("图片插入失败"); handleUploadError() {
}, this.$message.error('图片插入失败');
}, },
},
}; };
</script> </script>
<style> <style>
.editor, .ql-toolbar { .editor-wrapper {
white-space: pre-wrap !important; position: relative;
line-height: normal !important; cursor: not-allowed;
&::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,7 +29,10 @@
<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 class="form-part" v-if="section.key == 'base'"> <div
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"
@ -64,9 +67,8 @@
<div <div
v-if="section.key == 'attrs'" v-if="section.key == 'attrs'"
style="position: relative; margin-top: 12px"> style="position: relative; margin-top: 12px">
<div <!-- v-if="!mode.includes('detail')" -->
v-if="!mode.includes('detail')" <div style="position: absolute; top: -40px; right: 0">
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>
添加报警 添加报警
@ -102,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>
@ -123,9 +125,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>
@ -191,29 +193,12 @@ 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',
},
], ],
[ [
{ {
@ -229,6 +214,23 @@ 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,6 +23,7 @@
@change="$emit('update', dataForm)" @change="$emit('update', dataForm)"
placeholder="请输入报警编码" /> placeholder="请输入报警编码" />
</el-form-item> </el-form-item>
<!-- <!--
<el-form-item <el-form-item
label="报警编码" label="报警编码"
@ -40,30 +41,6 @@
</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="报警级别"
@ -82,19 +59,6 @@
</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">
@ -122,6 +86,42 @@
</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,7 +29,10 @@
<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 class="form-part" v-if="section.key == 'base'"> <div
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"
@ -64,9 +67,8 @@
<div <div
v-if="section.key == 'attrs'" v-if="section.key == 'attrs'"
style="position: relative; margin-top: 12px"> style="position: relative; margin-top: 12px">
<div <!-- v-if="!mode.includes('detail')" -->
v-if="!mode.includes('detail')" <div style="position: absolute; top: -40px; right: 0">
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>
添加属性 添加属性
@ -102,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>
@ -120,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

@ -41,29 +41,6 @@
</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="报警级别"
@ -82,19 +59,6 @@
</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">
@ -122,6 +86,42 @@
</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,7 +29,10 @@
<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 class="form-part" v-if="section.key == 'base'"> <div
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"
@ -66,9 +69,8 @@
<div <div
v-if="section.key == 'attrs'" v-if="section.key == 'attrs'"
style="position: relative; margin-top: 12px"> style="position: relative; margin-top: 12px">
<div <!-- v-if="!mode.includes('detail')" -->
v-if="!mode.includes('detail')" <div style="position: absolute; top: -40px; right: 0">
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 +106,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 +124,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,7 +269,6 @@ export default {
prop: 'files', prop: 'files',
}, },
], ],
// TODO:
[ [
{ {
label: '保养描述', label: '保养描述',