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.success('新建成功') 
 |              this.$emit('success') 
 |            }) 
 |            .catch(e => { 
 |              this.$tip.error(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.success('修改成功') 
 |              this.$emit('success') 
 |            }) 
 |            .catch(e => { 
 |              this.$tip.error(e) 
 |            }) 
 |            .finally(() => { 
 |              this.isWorking = false 
 |            }) 
 |        }) 
 |      } 
 |    } 
 |  } 
 |  </script> 
 |  
  |