<script>
|
export default {
|
data () {
|
return {
|
title: '',
|
visible: false,
|
isWorking: false,
|
// 接口
|
api: null,
|
// 配置数据
|
configData: {
|
'field.id': 'id'
|
}
|
}
|
},
|
// watch: {
|
// visible() {
|
// console.log(this.visible);
|
// }
|
// },
|
watch: {
|
$route (to, from) {
|
this.close()
|
}
|
},
|
methods: {
|
// 配置
|
config (extParams = {}) {
|
if (extParams == null) {
|
throw new Error('Parameter can not be null of method \'config\' .')
|
}
|
if (extParams.api == null) {
|
throw new Error('Missing config option \'api\'.')
|
}
|
if(extParams.api.indexOf('@/',0) === 0){
|
this.api = require(extParams.api)
|
}else {
|
this.api = require('@/api' + extParams.api)
|
}
|
extParams['field.id'] && (this.configData['field.id'] = extParams['field.id'])
|
},
|
/**
|
* 打开窗口
|
* @title 窗口标题
|
* @target 编辑的对象
|
*/
|
open (title, target) {
|
this.title = title
|
this.visible = true
|
// 新建
|
if (target == null) {
|
this.$nextTick(() => {
|
this.$refs.form.resetFields()
|
this.form[this.configData['field.id']] = null
|
})
|
return
|
}
|
// 编辑
|
this.$nextTick(() => {
|
for (const key in this.form) {
|
this.form[key] = target[key]
|
}
|
})
|
},
|
close () {
|
this.visible = false
|
},
|
// 确认新建/修改
|
confirm () {
|
if (this.form.id == null || this.form.id === '') {
|
this.__confirmCreate()
|
return
|
}
|
this.__confirmEdit()
|
},
|
// 确认新建
|
__confirmCreate () {
|
this.$refs.form.validate((valid) => {
|
// debugger
|
if (!valid) {
|
return
|
}
|
// console.log(this.form);
|
// debugger
|
// 调用新建接口
|
this.isWorking = true
|
this.api.create(this.form)
|
.then(() => {
|
this.visible = false
|
this.$tip.apiSuccess('新建成功')
|
this.$emit('success')
|
})
|
.catch(e => {
|
// this.$tip.apiFailed(e)
|
})
|
.finally(() => {
|
this.isWorking = false
|
})
|
})
|
},
|
// 确认修改
|
__confirmEdit () {
|
this.$refs.form.validate((valid) => {
|
if (!valid) {
|
return
|
}
|
// 调用新建接口
|
this.isWorking = true
|
this.api.updateById(this.form)
|
.then(() => {
|
this.visible = false
|
this.$tip.apiSuccess('修改成功')
|
this.$emit('success')
|
})
|
.catch(e => {
|
// this.$tip.apiFailed(e)
|
})
|
.finally(() => {
|
this.isWorking = false
|
})
|
})
|
}
|
}
|
}
|
</script>
|