vue2-client 1.6.0 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,190 +1,194 @@
1
- <template>
2
- <div v-show="visible && realJsonData.length > 0" class="table-page-search-wrapper">
3
- <div v-show="advanced" ref="drawerContainer"></div>
4
- <a-form-model
5
- v-if="loaded"
6
- ref="form"
7
- :model="form"
8
- :rules="rules"
9
- layout="inline">
10
- <a-row :gutter="48">
11
- <x-form-item
12
- v-for="(item, index) in realJsonData.slice(0,6)"
13
- :key="index"
14
- :attr="item"
15
- :form="form"
16
- :service-name="serviceName"
17
- :get-data-params="getDataParams"
18
- />
19
- <a-drawer
20
- :get-container="() => {return $refs.drawerContainer}"
21
- :header-style="{ textAlign: 'center' }"
22
- :visible="advanced"
23
- :wrap-style="{ position: 'absolute' }"
24
- placement="top"
25
- title="更多条件"
26
- @close="onClose"
27
- >
28
- <a-form-model :model="form" layout="inline">
29
- <x-form-item
30
- v-for="(item, index) in realJsonData.slice(6)"
31
- :key="'advanced'+index"
32
- :attr="item"
33
- :form="form"
34
- :service-name="serviceName"
35
- :get-data-params="getDataParams"
36
- />
37
- </a-form-model>
38
- </a-drawer>
39
- <a-col>
40
- <span
41
- :style="advanced && { float: 'right', overflow: 'hidden' } || {} "
42
- class="table-page-search-submitButtons">
43
- <a-button htmlType="submit" style="margin-left: 8px" type="primary" @click="onSubmit">
44
- <a-icon :style="iconStyle" type="search"/>查询
45
- </a-button>
46
- <a-button style="margin-left: 8px" @click="resetForm">
47
- <a-icon :style="iconStyle" type="redo" />重置
48
- </a-button>
49
- <slot></slot>
50
- <a v-if="realJsonData.length > 6" style="margin-left: 8px" @click="toggleAdvanced">
51
- 更多条件
52
- <a-icon type="down"/>
53
- </a>
54
- </span>
55
- </a-col>
56
- </a-row>
57
- </a-form-model>
58
- <div class="next-divider-dashed" role="separator"></div>
59
- </div>
60
- </template>
61
- <script>
62
- import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
63
-
64
- export default {
65
- name: 'XForm',
66
- components: {
67
- XFormItem
68
- },
69
- data () {
70
- return {
71
- // 内容加载是否完成
72
- loaded: false,
73
- // 服务名称
74
- serviceName: 'af-system',
75
- // 是否展开条件
76
- advanced: false,
77
- // 表单Model
78
- form: undefined,
79
- // 校验
80
- rules: {},
81
- // 调用logic获取数据源的追加参数
82
- getDataParams: {},
83
- // 图标样式
84
- iconStyle: {
85
- position: 'relative',
86
- top: '1px'
87
- },
88
- // 表单项集合
89
- formItems: [],
90
- // 是否显示
91
- visible: true
92
- }
93
- },
94
- computed: {
95
- // 过滤掉仅用于新增/修改场景的表单项
96
- realJsonData: function () {
97
- return this.formItems.filter(item => !item.isOnlyAddOrEdit)
98
- },
99
- },
100
- methods: {
101
- init (params) {
102
- const {
103
- formItems, serviceName = 'af-system', getDataParams = {}
104
- } = params
105
- this.loaded = false
106
- this.formItems = JSON.parse(JSON.stringify(formItems))
107
- this.serviceName = serviceName
108
- this.getDataParams = getDataParams
109
- const formData = {}
110
- for (let i = 0; i < this.realJsonData.length; i++) {
111
- const item = this.realJsonData[i]
112
- formData[item.model] = undefined
113
- // 处理表单校验情况
114
- if (item.rule) {
115
- this.rules[item.model] = []
116
- switch (item.rule.type) {
117
- case 'number':
118
- case 'integer':
119
- case 'float':
120
- let defaultValue
121
- let message
122
- switch (item.rule.type) {
123
- case 'number':
124
- message = '数字'
125
- defaultValue = 0
126
- break
127
- case 'integer':
128
- message = '整数'
129
- defaultValue = 0
130
- break
131
- case 'float':
132
- message = '小数'
133
- defaultValue = 0.0
134
- break
135
- }
136
- this.rules[item.model].push({
137
- type: item.rule.type,
138
- message: item.name + '必须为' + message,
139
- transform: (value) => {
140
- if (value && value.length !== 0) {
141
- return Number(value)
142
- } else {
143
- return defaultValue
144
- }
145
- },
146
- trigger: 'blur'
147
- })
148
- break
149
- }
150
- }
151
- }
152
- this.form = formData
153
- this.loaded = true
154
- },
155
- toggleAdvanced () {
156
- this.advanced = !this.advanced
157
- },
158
- toggleVisible () {
159
- this.visible = !this.visible
160
- },
161
- resetForm () {
162
- this.$refs.form.resetFields()
163
- },
164
- onSubmit () {
165
- this.$refs.form.validate(valid => {
166
- for (const key of Object.keys(this.form)) {
167
- if (this.form[key] === null || this.form[key] === '') {
168
- this.form[key] = undefined
169
- }
170
- if (Array.isArray(this.form[key]) && !this.form[key][0]) {
171
- this.form[key] = undefined
172
- }
173
- }
174
- const requestParameters = Object.assign({}, this.form)
175
- const data = {
176
- valid: valid,
177
- form: requestParameters
178
- }
179
- this.$emit('onSubmit', data)
180
- })
181
- },
182
- exports () {
183
- this.$emit('exports', this.form)
184
- },
185
- onClose () {
186
- this.advanced = false
187
- }
188
- }
189
- }
190
- </script>
1
+ <template>
2
+ <div v-show="visible && realJsonData.length > 0" class="table-page-search-wrapper">
3
+ <div v-show="advanced" ref="drawerContainer"></div>
4
+ <a-form-model
5
+ v-if="loaded"
6
+ ref="form"
7
+ :model="form"
8
+ :rules="rules"
9
+ layout="inline">
10
+ <a-row :gutter="48">
11
+ <x-form-item
12
+ v-for="(item, index) in realJsonData.slice(0,6)"
13
+ :key="index"
14
+ :attr="item"
15
+ :form="form"
16
+ :service-name="serviceName"
17
+ :get-data-params="getDataParams"
18
+ />
19
+ <a-drawer
20
+ :get-container="() => {return $refs.drawerContainer}"
21
+ :header-style="{ textAlign: 'center' }"
22
+ :visible="advanced"
23
+ :wrap-style="{ position: 'absolute' }"
24
+ placement="top"
25
+ title="更多条件"
26
+ @close="onClose"
27
+ >
28
+ <a-form-model :model="form" layout="inline">
29
+ <x-form-item
30
+ v-for="(item, index) in realJsonData.slice(6)"
31
+ :key="'advanced'+index"
32
+ :attr="item"
33
+ :form="form"
34
+ :service-name="serviceName"
35
+ :get-data-params="getDataParams"
36
+ />
37
+ </a-form-model>
38
+ </a-drawer>
39
+ <a-col>
40
+ <span
41
+ :style="advanced && { float: 'right', overflow: 'hidden' } || {} "
42
+ class="table-page-search-submitButtons">
43
+ <a-button htmlType="submit" style="margin-left: 8px" type="primary" @click="onSubmit">
44
+ <a-icon :style="iconStyle" type="search"/>查询
45
+ </a-button>
46
+ <a-button style="margin-left: 8px" @click="resetForm">
47
+ <a-icon :style="iconStyle" type="redo" />重置
48
+ </a-button>
49
+ <slot></slot>
50
+ <a v-if="realJsonData.length > 6" style="margin-left: 8px" @click="toggleAdvanced">
51
+ 更多条件
52
+ <a-icon type="down"/>
53
+ </a>
54
+ </span>
55
+ </a-col>
56
+ </a-row>
57
+ </a-form-model>
58
+ <div class="next-divider-dashed" role="separator"></div>
59
+ </div>
60
+ </template>
61
+ <script>
62
+ import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
63
+
64
+ export default {
65
+ name: 'XForm',
66
+ components: {
67
+ XFormItem
68
+ },
69
+ props: {
70
+ // 调用logic获取数据源的追加参数
71
+ getDataParams: {
72
+ type: Object,
73
+ default: undefined
74
+ }
75
+ },
76
+ data () {
77
+ return {
78
+ // 内容加载是否完成
79
+ loaded: false,
80
+ // 服务名称
81
+ serviceName: 'af-system',
82
+ // 是否展开条件
83
+ advanced: false,
84
+ // 表单Model
85
+ form: undefined,
86
+ // 校验
87
+ rules: {},
88
+ // 图标样式
89
+ iconStyle: {
90
+ position: 'relative',
91
+ top: '1px'
92
+ },
93
+ // 表单项集合
94
+ formItems: [],
95
+ // 是否显示
96
+ visible: true
97
+ }
98
+ },
99
+ computed: {
100
+ // 过滤掉仅用于新增/修改场景的表单项
101
+ realJsonData: function () {
102
+ return this.formItems.filter(item => !item.isOnlyAddOrEdit)
103
+ },
104
+ },
105
+ methods: {
106
+ init (params) {
107
+ const {
108
+ formItems, serviceName = 'af-system'
109
+ } = params
110
+ this.loaded = false
111
+ this.formItems = JSON.parse(JSON.stringify(formItems))
112
+ this.serviceName = serviceName
113
+ const formData = {}
114
+ for (let i = 0; i < this.realJsonData.length; i++) {
115
+ const item = this.realJsonData[i]
116
+ formData[item.model] = undefined
117
+ // 处理表单校验情况
118
+ if (item.rule) {
119
+ this.rules[item.model] = []
120
+ switch (item.rule.type) {
121
+ case 'number':
122
+ case 'integer':
123
+ case 'float':
124
+ let defaultValue
125
+ let message
126
+ switch (item.rule.type) {
127
+ case 'number':
128
+ message = '数字'
129
+ defaultValue = 0
130
+ break
131
+ case 'integer':
132
+ message = '整数'
133
+ defaultValue = 0
134
+ break
135
+ case 'float':
136
+ message = '小数'
137
+ defaultValue = 0.0
138
+ break
139
+ }
140
+ this.rules[item.model].push({
141
+ type: item.rule.type,
142
+ message: item.name + '必须为' + message,
143
+ transform: (value) => {
144
+ if (value && value.length !== 0) {
145
+ return Number(value)
146
+ } else {
147
+ return defaultValue
148
+ }
149
+ },
150
+ trigger: 'blur'
151
+ })
152
+ break
153
+ }
154
+ }
155
+ }
156
+ this.form = formData
157
+ this.loaded = true
158
+ },
159
+ toggleAdvanced () {
160
+ this.advanced = !this.advanced
161
+ },
162
+ toggleVisible () {
163
+ this.visible = !this.visible
164
+ },
165
+ resetForm () {
166
+ this.$refs.form.resetFields()
167
+ },
168
+ onSubmit () {
169
+ this.$refs.form.validate(valid => {
170
+ for (const key of Object.keys(this.form)) {
171
+ if (this.form[key] === null || this.form[key] === '') {
172
+ this.form[key] = undefined
173
+ }
174
+ if (Array.isArray(this.form[key]) && !this.form[key][0]) {
175
+ this.form[key] = undefined
176
+ }
177
+ }
178
+ const requestParameters = Object.assign({}, this.form)
179
+ const data = {
180
+ valid: valid,
181
+ form: requestParameters
182
+ }
183
+ this.$emit('onSubmit', data)
184
+ })
185
+ },
186
+ exports () {
187
+ this.$emit('exports', this.form)
188
+ },
189
+ onClose () {
190
+ this.advanced = false
191
+ }
192
+ }
193
+ }
194
+ </script>