1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
| <script>
| export default {
| name: 'BaseOpera',
| data () {
| return {
| title: '',
| visible: false,
| isWorking: false,
| // 接口
| api: null,
| // 配置数据
| configData: {
| 'field.id': 'id'
| }
| }
| },
| 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\'.')
| }
| 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]
| }
| })
| },
| // 确认新建/修改
| confirm () {
| if (this.form.id == null || this.form.id === '') {
| this.__confirmCreate()
| return
| }
| this.__confirmEdit()
| },
| // 确认新建
| __confirmCreate () {
| this.$refs.form.validate((valid) => {
| if (!valid) {
| return
| }
| // 调用新建接口
| 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>
|
|