master
parent
0ac630fa23
commit
ad6568e0b4
@ -0,0 +1,166 @@ |
||||
<template> |
||||
<abstract-dialog :loading="loading" :title="title" :value="value" @close="cancel" @open="open"> |
||||
<abstract-form :model="form" :rules="rules"> |
||||
<el-form-item label="名 称" prop="name"> |
||||
<el-input v-model="form.name" :readonly="!canEdit" maxlength="20"/> |
||||
</el-form-item> |
||||
<el-form-item label="型 号" prop="spec"> |
||||
<el-input v-model="form.spec" :readonly="!canEdit" maxlength="20"/> |
||||
</el-form-item> |
||||
<el-form-item label="制造厂商" prop="supplier"> |
||||
<el-input v-model="form.supplier" :readonly="!canEdit" maxlength="20"/> |
||||
</el-form-item> |
||||
<el-form-item label="存放位置" prop="location"> |
||||
<el-input v-model="form.location" :readonly="!canEdit" maxlength="20"/> |
||||
</el-form-item> |
||||
<el-form-item label="功能简介" prop="introduction"> |
||||
<el-input v-model="form.introduction" :readonly="!canEdit" maxlength="50"/> |
||||
</el-form-item> |
||||
<el-form-item label="制造日期"> |
||||
<el-date-picker |
||||
v-model="form.manuDate" |
||||
type="date" |
||||
value-format="timestamp" |
||||
/> |
||||
</el-form-item> |
||||
<el-form-item label="购买日期"> |
||||
<el-date-picker |
||||
v-model="form.buyDate" |
||||
type="date" |
||||
value-format="timestamp" |
||||
/> |
||||
</el-form-item> |
||||
<el-form-item label="状 态" prop="enable"> |
||||
<el-radio-group v-model="form.enable" :disabled="!canEdit"> |
||||
<el-radio :label="true">启用</el-radio> |
||||
<el-radio :label="false">禁用</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item label="备 注" prop="remark"> |
||||
<el-input |
||||
v-model="form.remark" |
||||
:rows="4" |
||||
:readonly="!canEdit" |
||||
maxlength="200" |
||||
show-word-limit |
||||
type="textarea" |
||||
/> |
||||
</el-form-item> |
||||
</abstract-form> |
||||
|
||||
<template v-slot:footer> |
||||
<el-button plain size="small" @click="closeDialog">取 消</el-button> |
||||
<el-button v-if="canEdit" size="small" type="primary" @click="confirm">确 定</el-button> |
||||
</template> |
||||
</abstract-dialog> |
||||
</template> |
||||
|
||||
<script> |
||||
import dialogMixin from "@/mixin/dialogMixin" |
||||
import AbstractForm from "@/component/abstract/Form" |
||||
import AbstractDialog from '@/component/abstract/Dialog' |
||||
import {add, update} from "@/api/system/equipment" |
||||
import {isEmpty, mergeObj, resetObj} from '@/util' |
||||
import {elConfirm} from "@/util/message" |
||||
|
||||
export default { |
||||
name: "EditDialog", |
||||
|
||||
mixins: [dialogMixin], |
||||
|
||||
components: {AbstractForm, AbstractDialog}, |
||||
|
||||
props: { |
||||
value: Boolean, |
||||
type: {type: String, default: 'see'}, |
||||
data: { |
||||
type: Object, |
||||
default: () => ({}) |
||||
}, |
||||
}, |
||||
|
||||
data() { |
||||
return { |
||||
loading: false, |
||||
form: { |
||||
id: null, |
||||
name: null, |
||||
spec: null, |
||||
introduction: null, |
||||
supplier: null, |
||||
manuDate: null, |
||||
buyDate: null, |
||||
location: null, |
||||
enable: false, |
||||
remark: null |
||||
}, |
||||
rules: { |
||||
name: [{required: true, message: '名称不能为空', trigger: 'change'}], |
||||
spec: [{required: true, message: '型号不能为空', trigger: 'change'}], |
||||
supplier: [{required: true, message: '制造厂商不能为空', trigger: 'change'}], |
||||
location: [{required: true, message: '存放位置不能为空', trigger: 'change'}], |
||||
} |
||||
} |
||||
}, |
||||
|
||||
computed: { |
||||
title() { |
||||
if (isEmpty(this.type)) return '' |
||||
switch (this.type) { |
||||
case 'see': |
||||
return '设备信息' |
||||
case 'add': |
||||
return '添加设备' |
||||
case 'edit': |
||||
return '编辑设备' |
||||
} |
||||
}, |
||||
|
||||
confirmMessage() { |
||||
switch (this.type) { |
||||
case 'add': |
||||
return `确认添加新的设备【${this.form.name}】?` |
||||
case 'edit': |
||||
return `确认提交对【${this.data.name}】作出的修改?` |
||||
default: |
||||
return '' |
||||
} |
||||
}, |
||||
|
||||
canEdit() { |
||||
return ['add', 'edit'].includes(this.type) |
||||
} |
||||
}, |
||||
|
||||
methods: { |
||||
|
||||
open() { |
||||
if (this.type !== 'add') mergeObj(this.form, this.data) |
||||
}, |
||||
|
||||
clearForm() { |
||||
resetObj(this.form) |
||||
this.$nextTick(() => this.$refs.form.clearValidate()) |
||||
}, |
||||
|
||||
cancel() { |
||||
this.closeDialog() |
||||
this.clearForm() |
||||
}, |
||||
|
||||
confirm() { |
||||
if (this.loading) return |
||||
this.$refs.form.validate(v => { |
||||
if (!v) return |
||||
elConfirm(this.confirmMessage) |
||||
.then(() => { |
||||
this.loading = true |
||||
return this.type === 'add' ? add.request(this.form) : update.request(this.form) |
||||
}) |
||||
.then(({msg}) => this.$emit('success', msg)) |
||||
.finally(() => this.loading = false) |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
Loading…
Reference in new issue