tianheng-ui 0.0.47 → 0.0.50

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,184 +1,176 @@
1
- <template>
2
- <div class="fm-style">
3
- <el-form
4
- ref="generateForm"
5
- label-suffix=":"
6
- :size="data.config.size"
7
- :model="models"
8
- :rules="rules"
9
- :label-position="data.config.labelPosition"
10
- :label-width="data.config.labelWidth + 'px'"
11
- >
12
- <template v-for="item in data.list">
13
- <template v-if="item.type == 'grid'">
14
- <el-row
15
- :key="item.key"
16
- type="flex"
17
- :gutter="item.options.gutter ? item.options.gutter : 0"
18
- :justify="item.options.justify"
19
- :align="item.options.align"
20
- >
21
- <el-col
22
- v-for="(col, colIndex) in item.columns"
23
- :key="colIndex"
24
- :span="col.span"
25
- >
26
- <template v-for="citem in col.list">
27
- <el-form-item
28
- v-if="citem.type == 'blank'"
29
- :label="citem.name"
30
- :prop="citem.model"
31
- :key="citem.key"
32
- >
33
- <slot :name="citem.model" :model="models"></slot>
34
- </el-form-item>
35
- <genetate-form-item
36
- v-else
37
- :key="citem.key"
38
- :models.sync="models"
39
- :remote="remote"
40
- :rules="rules"
41
- :widget="citem"
42
- @input-change="onInputChange"
43
- >
44
- </genetate-form-item>
45
- </template>
46
- </el-col>
47
- </el-row>
48
- </template>
49
-
50
- <template v-else-if="item.type == 'blank'">
51
- <el-form-item :label="item.name" :prop="item.model" :key="item.key">
52
- <slot :name="item.model" :model="models"></slot>
53
- </el-form-item>
54
- </template>
55
-
56
- <template v-else>
57
- <genetate-form-item
58
- :key="item.key"
59
- :models.sync="models"
60
- :rules="rules"
61
- :widget="item"
62
- @input-change="onInputChange"
63
- :remote="remote"
64
- >
65
- </genetate-form-item>
66
- </template>
67
- </template>
68
- </el-form>
69
- </div>
70
- </template>
71
-
72
- <script>
73
- import GenetateFormItem from "./GenerateFormItem";
74
-
75
- export default {
76
- name: "fm-generate-form",
77
- components: {
78
- GenetateFormItem,
79
- },
80
- props: ["data", "remote", "value", "insite"],
81
- data() {
82
- return {
83
- models: {},
84
- rules: {},
85
- };
86
- },
87
- created() {
88
- this.generateModle(this.data.list);
89
- },
90
- mounted() {},
91
- methods: {
92
- generateModle(genList) {
93
- for (let i = 0; i < genList.length; i++) {
94
- if (genList[i].type === "grid") {
95
- genList[i].columns.forEach((item) => {
96
- this.generateModle(item.list);
97
- });
98
- } else {
99
- if (
100
- this.value &&
101
- Object.keys(this.value).indexOf(genList[i].model) >= 0
102
- ) {
103
- this.models[genList[i].model] = this.value[genList[i].model];
104
- } else {
105
- if (genList[i].type === "blank") {
106
- this.$set(
107
- this.models,
108
- genList[i].model,
109
- genList[i].options.defaultType === "String"
110
- ? ""
111
- : genList[i].options.defaultType === "Object"
112
- ? {}
113
- : []
114
- );
115
- } else {
116
- this.models[genList[i].model] = genList[i].options.defaultValue;
117
- }
118
- }
119
-
120
- if (this.rules[genList[i].model]) {
121
- this.rules[genList[i].model] = [
122
- ...this.rules[genList[i].model],
123
- ...genList[i].rules.map((item) => {
124
- if (item.pattern) {
125
- return { ...item, pattern: new RegExp(item.pattern) };
126
- } else {
127
- return { ...item };
128
- }
129
- }),
130
- ];
131
- } else {
132
- this.rules[genList[i].model] = [
133
- ...genList[i].rules.map((item) => {
134
- if (item.pattern) {
135
- return { ...item, pattern: new RegExp(item.pattern) };
136
- } else {
137
- return { ...item };
138
- }
139
- }),
140
- ];
141
- }
142
- }
143
- }
144
- },
145
- getData() {
146
- return new Promise((resolve, reject) => {
147
- this.$refs.generateForm.validate((valid) => {
148
- if (valid) {
149
- resolve(this.models);
150
- } else {
151
- reject(new Error('表单数据校验失败').message);
152
- }
153
- });
154
- });
155
- },
156
- reset() {
157
- this.$refs.generateForm.resetFields();
158
- },
159
- onInputChange(value, field) {
160
- this.$emit("on-change", field, value, this.models);
161
- },
162
- refresh() {},
163
- },
164
- watch: {
165
- data: {
166
- deep: true,
167
- handler(val) {
168
- this.generateModle(val.list);
169
- },
170
- },
171
- value: {
172
- deep: true,
173
- handler(val) {
174
- console.log(JSON.stringify(val));
175
- this.models = { ...this.models, ...val };
176
- },
177
- },
178
- },
179
- };
180
- </script>
181
-
182
- <style lang="scss">
183
- // @import '../styles/cover.scss';
184
- </style>
1
+ <template>
2
+ <div class="fm-style">
3
+ <el-form
4
+ ref="generateForm"
5
+ label-suffix=":"
6
+ :size="data.config.size"
7
+ :model="models"
8
+ :rules="rules"
9
+ :label-position="data.config.labelPosition"
10
+ :label-width="data.config.labelWidth + 'px'"
11
+ >
12
+ <genetate-form-item
13
+ v-for="item in data.list"
14
+ :key="item.key"
15
+ :models.sync="models"
16
+ :rules="rules"
17
+ :widget="item"
18
+ :slotKeys="slotKeys"
19
+ @input-change="onInputChange"
20
+ :remote="remote"
21
+ >
22
+ <template v-for="name in slotKeys" :slot="name">
23
+ <slot :name="name" />
24
+ </template>
25
+ </genetate-form-item>
26
+ </el-form>
27
+ </div>
28
+ </template>
29
+
30
+ <script>
31
+ import GenetateFormItem from "./GenerateFormItem";
32
+
33
+ export default {
34
+ name: "fm-generate-form",
35
+ components: {
36
+ GenetateFormItem
37
+ },
38
+ props: ["data", "remote", "value", "insite", "slotKeys"],
39
+ data() {
40
+ return {
41
+ models: {},
42
+ rules: {}
43
+ };
44
+ },
45
+ created() {
46
+ this.generateModle(this.data.list);
47
+ },
48
+ mounted() {},
49
+ methods: {
50
+ generateModle(genList, obj) {
51
+ genList.map(item => {
52
+ if (item.type === "grid") {
53
+ item.columns.forEach(item => {
54
+ this.generateModle(item.list, obj);
55
+ });
56
+ } else if (item.type === "tabs") {
57
+ if (obj) {
58
+ obj[item.model] = {};
59
+ item.tabs.forEach(item2 => {
60
+ obj[item.model][item2.value] = {};
61
+ this.generateModle(
62
+ item2.list,
63
+ obj[item.model][item2.value]
64
+ );
65
+ });
66
+ } else {
67
+ this.models[item.model] = {};
68
+ item.tabs.forEach(item2 => {
69
+ this.models[item.model][item2.value] = {};
70
+ this.generateModle(
71
+ item2.list,
72
+ this.models[item.model][item2.value]
73
+ );
74
+ });
75
+ }
76
+ } else if (obj) {
77
+ obj[item.model] = JSON.parse(
78
+ JSON.stringify(item.options.defaultValue || "")
79
+ );
80
+ } else {
81
+ if (this.value && Object.keys(this.value).indexOf(item.model) >= 0) {
82
+ this.models[item.model] = this.value[item.model];
83
+ } else {
84
+ if (item.type === "blank") {
85
+ this.$set(
86
+ this.models,
87
+ item.model,
88
+ item.options.defaultType === "String"
89
+ ? ""
90
+ : item.options.defaultType === "Object"
91
+ ? {}
92
+ : []
93
+ );
94
+ } else {
95
+ this.models[item.model] = JSON.parse(
96
+ JSON.stringify(item.options.defaultValue || "")
97
+ );
98
+ }
99
+ }
100
+
101
+ if (item.type === "table") {
102
+ this.generateRules(item);
103
+ item.list.forEach(item2 => {
104
+ this.generateRules(item2);
105
+ });
106
+ } else {
107
+ this.generateRules(item);
108
+ }
109
+ }
110
+ });
111
+ // console.log(this.models)
112
+ },
113
+ generateRules(item) {
114
+ if (this.rules[item.model]) {
115
+ this.rules[item.model] = [
116
+ ...this.rules[item.model],
117
+ ...item.rules.map(rule => {
118
+ if (rule.pattern) {
119
+ return { ...rule, pattern: new RegExp(rule.pattern) };
120
+ } else {
121
+ return { ...rule };
122
+ }
123
+ })
124
+ ];
125
+ } else {
126
+ this.rules[item.model] = [
127
+ ...item.rules.map(rule => {
128
+ if (rule.pattern) {
129
+ return { ...rule, pattern: new RegExp(rule.pattern) };
130
+ } else {
131
+ return { ...rule };
132
+ }
133
+ })
134
+ ];
135
+ }
136
+ },
137
+ getData() {
138
+ return new Promise((resolve, reject) => {
139
+ this.$refs.generateForm.validate(valid => {
140
+ if (valid) {
141
+ resolve(this.models);
142
+ } else {
143
+ reject(new Error("表单数据校验失败").message);
144
+ }
145
+ });
146
+ });
147
+ },
148
+ reset() {
149
+ this.$refs.generateForm.resetFields();
150
+ },
151
+ onInputChange(value, field) {
152
+ this.$emit("on-change", field, value, this.models);
153
+ },
154
+ refresh() {}
155
+ },
156
+ watch: {
157
+ data: {
158
+ deep: true,
159
+ handler(val) {
160
+ // this.generateModle(val.list);
161
+ }
162
+ },
163
+ value: {
164
+ deep: true,
165
+ handler(val) {
166
+ console.log(JSON.stringify(val));
167
+ this.models = { ...this.models, ...val };
168
+ }
169
+ }
170
+ }
171
+ };
172
+ </script>
173
+
174
+ <style lang="scss">
175
+ // @import '../styles/cover.scss';
176
+ </style>