@truenewx/tnxvue3 2.6.0
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.
- package/README.md +3 -0
- package/package.json +76 -0
- package/sample/App.vue +19 -0
- package/sample/main.js +11 -0
- package/sample/pages/index.vue +79 -0
- package/sample/pages/info.vue +28 -0
- package/sample/tnx.js +31 -0
- package/src/aj-captcha/Verify/VerifyPoints.vue +258 -0
- package/src/aj-captcha/Verify/VerifySlide.vue +379 -0
- package/src/aj-captcha/Verify.vue +375 -0
- package/src/aj-captcha/api/index.js +19 -0
- package/src/aj-captcha/utils/ase.js +11 -0
- package/src/aj-captcha/utils/util.js +35 -0
- package/src/ant-design/tnxad-theme.css +5 -0
- package/src/ant-design/tnxad.css +8 -0
- package/src/ant-design/tnxad.js +23 -0
- package/src/element-plus/alert/Alert.vue +112 -0
- package/src/element-plus/avatar/Avatar.vue +124 -0
- package/src/element-plus/button/Button.vue +184 -0
- package/src/element-plus/check-icon/CheckIcon.vue +61 -0
- package/src/element-plus/close-error-button/CloseErrorButton.vue +45 -0
- package/src/element-plus/curd/Curd.vue +224 -0
- package/src/element-plus/date-picker/DatePicker.vue +206 -0
- package/src/element-plus/date-range/DateRange.vue +78 -0
- package/src/element-plus/datetime-picker/DateTimePicker.vue +129 -0
- package/src/element-plus/detail-form/DetailForm.vue +88 -0
- package/src/element-plus/dialog/Dialog.vue +259 -0
- package/src/element-plus/dialog/DialogContent.vue +13 -0
- package/src/element-plus/drawer/Drawer.vue +175 -0
- package/src/element-plus/dropdown-item/DropdownItem.vue +30 -0
- package/src/element-plus/enum-select/EnumSelect.vue +125 -0
- package/src/element-plus/fetch-cascader/FetchCascader.vue +138 -0
- package/src/element-plus/fetch-select/FetchSelect.vue +166 -0
- package/src/element-plus/fetch-tags/FetchTags.vue +122 -0
- package/src/element-plus/fss-upload/FssUpload.vue +306 -0
- package/src/element-plus/fss-view/FssView.vue +163 -0
- package/src/element-plus/icon/Icon.vue +221 -0
- package/src/element-plus/input-number/InputNumber.vue +150 -0
- package/src/element-plus/paged/Paged.vue +76 -0
- package/src/element-plus/permission-tree/PermissionTree.vue +184 -0
- package/src/element-plus/query-form/QueryForm.vue +138 -0
- package/src/element-plus/query-table/QueryTable.vue +402 -0
- package/src/element-plus/region-cascader/RegionCascader.vue +108 -0
- package/src/element-plus/select/Select.vue +446 -0
- package/src/element-plus/slider/Slider.vue +88 -0
- package/src/element-plus/steps-nav/StepsNav.vue +57 -0
- package/src/element-plus/submit-form/SubmitForm.vue +236 -0
- package/src/element-plus/table-column/TableColumn.vue +32 -0
- package/src/element-plus/tabs/Tabs.vue +93 -0
- package/src/element-plus/tnxel.css +890 -0
- package/src/element-plus/tnxel.js +528 -0
- package/src/element-plus/transfer/Transfer.vue +117 -0
- package/src/element-plus/upload/Upload.vue +856 -0
- package/src/percent/Percent.vue +12 -0
- package/src/text/Text.vue +33 -0
- package/src/tnxvue-cli.js +64 -0
- package/src/tnxvue-router.js +161 -0
- package/src/tnxvue-validator.js +365 -0
- package/src/tnxvue.css +12 -0
- package/src/tnxvue.js +343 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="tnxel-date-picker d-flex" v-if="permanentable">
|
|
3
|
+
<el-date-picker :type="type" v-model="model.value" :value-format="format" :editable="editable"
|
|
4
|
+
:placeholder="placeholderText" :clearable="empty" :default-value="defaultDate"
|
|
5
|
+
:disabled-date="disabledDate" :disabled="disabled || model.permanent"
|
|
6
|
+
:class="{'flex-grow-1': !pickerWidth}" :style="{width: pickerWidth}"
|
|
7
|
+
@change="emitModelValue"/>
|
|
8
|
+
<el-checkbox style="margin-left: 1rem; margin-right: 0.75rem;" v-model="model.permanent"
|
|
9
|
+
@change="onPermanentChange">{{ permanentText }}
|
|
10
|
+
</el-checkbox>
|
|
11
|
+
</div>
|
|
12
|
+
<el-date-picker class="tnxel-date-picker" :type="type" v-model="model.value" :value-format="format"
|
|
13
|
+
:editable="editable" :placeholder="placeholderText" :clearable="empty" :default-value="defaultDate"
|
|
14
|
+
:disabled-date="disabledDate" :disabled="disabled" :style="{width: pickerWidth}" v-else/>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script>
|
|
18
|
+
import $ from 'jquery';
|
|
19
|
+
|
|
20
|
+
const util = window.tnx.util;
|
|
21
|
+
|
|
22
|
+
export default {
|
|
23
|
+
name: 'TnxelDatePicker',
|
|
24
|
+
props: {
|
|
25
|
+
permanentable: Boolean,
|
|
26
|
+
modelValue: [Date, Number, String, Object], // 仅permanentable为true时传入Object
|
|
27
|
+
valueFormat: String,
|
|
28
|
+
type: {
|
|
29
|
+
type: String,
|
|
30
|
+
default: 'date',
|
|
31
|
+
},
|
|
32
|
+
placeholder: {
|
|
33
|
+
type: String,
|
|
34
|
+
default: '请选择',
|
|
35
|
+
},
|
|
36
|
+
disabled: Boolean,
|
|
37
|
+
empty: {
|
|
38
|
+
type: Boolean,
|
|
39
|
+
default: false,
|
|
40
|
+
},
|
|
41
|
+
defaultValue: [Date, Number, String],
|
|
42
|
+
earliest: [Date, Number, String],
|
|
43
|
+
latest: [Date, Number, String],
|
|
44
|
+
pickerWidth: String,
|
|
45
|
+
editable: {
|
|
46
|
+
type: Boolean,
|
|
47
|
+
default: true,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
emits: ['update:modelValue'],
|
|
51
|
+
data() {
|
|
52
|
+
let vm = this;
|
|
53
|
+
let model = {
|
|
54
|
+
value: null,
|
|
55
|
+
permanent: false,
|
|
56
|
+
}
|
|
57
|
+
Object.assign(model, this.getModel());
|
|
58
|
+
return {
|
|
59
|
+
permanentText: util.date.PERMANENT_DATE_TEXT,
|
|
60
|
+
model: model,
|
|
61
|
+
disabledDate(date) {
|
|
62
|
+
if (vm.earliest || vm.latest) {
|
|
63
|
+
date = new Date(date);
|
|
64
|
+
if (vm.earliest) {
|
|
65
|
+
let earliest = new Date(vm.earliest);
|
|
66
|
+
if (date.getTime() < earliest.getTime()) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (vm.latest) {
|
|
71
|
+
let latest = new Date(vm.latest);
|
|
72
|
+
if (date.getTime() > latest.getTime()) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
computed: {
|
|
82
|
+
format() {
|
|
83
|
+
let format;
|
|
84
|
+
if (this.valueFormat) {
|
|
85
|
+
format = this.valueFormat;
|
|
86
|
+
} else {
|
|
87
|
+
format = this.type === 'datetime' ? util.date.patterns.dateTime : util.date.patterns.date;
|
|
88
|
+
}
|
|
89
|
+
return window.tnx.date.toDayJsDateFormat(format);
|
|
90
|
+
},
|
|
91
|
+
defaultDate() {
|
|
92
|
+
if (this.defaultValue) {
|
|
93
|
+
if (this.defaultValue instanceof Date) {
|
|
94
|
+
return this.defaultValue;
|
|
95
|
+
}
|
|
96
|
+
return new Date(this.defaultValue);
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
},
|
|
100
|
+
defaultDateValue() {
|
|
101
|
+
let date = this.defaultDate;
|
|
102
|
+
return date ? date.formatDate() : null;
|
|
103
|
+
},
|
|
104
|
+
placeholderText() {
|
|
105
|
+
if (this.placeholder) {
|
|
106
|
+
return this.placeholder;
|
|
107
|
+
}
|
|
108
|
+
if (this.model.permanent) {
|
|
109
|
+
return '';
|
|
110
|
+
}
|
|
111
|
+
return this.editable ? '格式:' + this.format : '请选择';
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
watch: {
|
|
115
|
+
modelValue() {
|
|
116
|
+
let model = this.getModel();
|
|
117
|
+
Object.assign(this.model, model);
|
|
118
|
+
},
|
|
119
|
+
defaultValue() {
|
|
120
|
+
if (!this.empty && !this.model.value) {
|
|
121
|
+
this.model.value = this.defaultDateValue;
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
mounted() {
|
|
126
|
+
let vm = this;
|
|
127
|
+
this.$watch('model', function() {
|
|
128
|
+
vm.emitModelValue();
|
|
129
|
+
}, {
|
|
130
|
+
deep: true
|
|
131
|
+
});
|
|
132
|
+
},
|
|
133
|
+
methods: {
|
|
134
|
+
emitModelValue() {
|
|
135
|
+
if (this.permanentable) {
|
|
136
|
+
this.$emit('update:modelValue', this.model);
|
|
137
|
+
} else {
|
|
138
|
+
this.$emit('update:modelValue', this.model.value);
|
|
139
|
+
}
|
|
140
|
+
if (!this.empty) {
|
|
141
|
+
// 重新进行字段校验,以清除可能的字段校验错误消息
|
|
142
|
+
let formItem = this.$parent;
|
|
143
|
+
while (formItem && !formItem.elForm) {
|
|
144
|
+
formItem = formItem.$parent;
|
|
145
|
+
}
|
|
146
|
+
if (formItem && formItem.elForm && formItem.prop) {
|
|
147
|
+
formItem.elForm.validateField(formItem.prop);
|
|
148
|
+
} else { // 不隶属于表单栏目,则简单地移除错误框效果
|
|
149
|
+
let $element = $(this.$el);
|
|
150
|
+
if ($element.is('.el-input')) {
|
|
151
|
+
$element.removeClass('is-error');
|
|
152
|
+
} else {
|
|
153
|
+
$('.el-input', $element).removeClass('is-error');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
onPermanentChange() {
|
|
159
|
+
// 如果不允许为空,需做特殊处理
|
|
160
|
+
if (!this.empty) {
|
|
161
|
+
if (!this.model.permanent && !this.model.value) { // 取消永久选项时日期值为空,则设置为默认值
|
|
162
|
+
this.model.value = this.defaultDateValue;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
this.emitModelValue();
|
|
166
|
+
},
|
|
167
|
+
getModel() {
|
|
168
|
+
let model = {
|
|
169
|
+
value: null,
|
|
170
|
+
permanent: false,
|
|
171
|
+
};
|
|
172
|
+
if (this.modelValue) {
|
|
173
|
+
if (this.permanentable) {
|
|
174
|
+
if (typeof this.modelValue === 'object') {
|
|
175
|
+
model.value = this.modelValue.value;
|
|
176
|
+
model.permanent = this.modelValue.permanent;
|
|
177
|
+
} else {
|
|
178
|
+
model.value = this.modelValue;
|
|
179
|
+
}
|
|
180
|
+
if (model.permanent) {
|
|
181
|
+
model.value = null;
|
|
182
|
+
} else if (!this.empty && !model.value) {
|
|
183
|
+
model.value = this.defaultDateValue;
|
|
184
|
+
}
|
|
185
|
+
} else {
|
|
186
|
+
if (this.modelValue instanceof Date) {
|
|
187
|
+
model.value = this.modelValue.format(this.format);
|
|
188
|
+
} else if (typeof this.modelValue === 'number') {
|
|
189
|
+
model.value = new Date(this.modelValue).format(this.format);
|
|
190
|
+
} else {
|
|
191
|
+
model.value = this.modelValue;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return model;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
</script>
|
|
200
|
+
|
|
201
|
+
<style>
|
|
202
|
+
.tnxel-date-picker.el-date-editor.el-input,
|
|
203
|
+
.tnxel-date-picker.el-date-editor.el-input__wrapper {
|
|
204
|
+
width: 150px;
|
|
205
|
+
}
|
|
206
|
+
</style>
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-date-picker type="daterange" v-model="model" :editable="false" value-format="yyyy-MM-dd" :clearable="empty"
|
|
3
|
+
:range-separator="separator" :start-placeholder="beginPlaceholder" :end-placeholder="endPlaceholder"
|
|
4
|
+
:disabled="disabled"/>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script>
|
|
8
|
+
export default {
|
|
9
|
+
name: 'TnxelDateRange',
|
|
10
|
+
props: {
|
|
11
|
+
modelValue: Object,
|
|
12
|
+
separator: {
|
|
13
|
+
type: String,
|
|
14
|
+
default: '至',
|
|
15
|
+
},
|
|
16
|
+
beginPlaceholder: {
|
|
17
|
+
type: String,
|
|
18
|
+
default: '开始日期',
|
|
19
|
+
},
|
|
20
|
+
endPlaceholder: {
|
|
21
|
+
type: String,
|
|
22
|
+
default: '结束日期',
|
|
23
|
+
},
|
|
24
|
+
disabled: Boolean,
|
|
25
|
+
empty: {
|
|
26
|
+
type: Boolean,
|
|
27
|
+
default: false,
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
emits: ['update:modelValue'],
|
|
31
|
+
data() {
|
|
32
|
+
return {
|
|
33
|
+
model: this.getModel(),
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
watch: {
|
|
37
|
+
model(model) {
|
|
38
|
+
let value = {};
|
|
39
|
+
if (Array.isArray(model)) {
|
|
40
|
+
if (model.length > 0) {
|
|
41
|
+
value.begin = model[0];
|
|
42
|
+
}
|
|
43
|
+
if (model.length > 1) {
|
|
44
|
+
value.end = model[1];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
this.$emit('update:modelValue', value);
|
|
48
|
+
},
|
|
49
|
+
modelValue() {
|
|
50
|
+
let model = this.getModel();
|
|
51
|
+
if (model) {
|
|
52
|
+
if (this.model === null) {
|
|
53
|
+
this.model = [];
|
|
54
|
+
}
|
|
55
|
+
this.model[0] = model[0];
|
|
56
|
+
this.model[1] = model[1];
|
|
57
|
+
} else {
|
|
58
|
+
this.model = null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
methods: {
|
|
63
|
+
getModel() {
|
|
64
|
+
let model = null;
|
|
65
|
+
if (this.modelValue) {
|
|
66
|
+
let begin = this.modelValue.begin;
|
|
67
|
+
let end = this.modelValue.end;
|
|
68
|
+
if (begin && end) {
|
|
69
|
+
model = [];
|
|
70
|
+
model.push(begin instanceof Date ? begin.formatDate() : begin);
|
|
71
|
+
model.push(end instanceof Date ? end.formatDate() : end);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return model;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
</script>
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-row class="tnxel-datetime-picker" :gutter="8">
|
|
3
|
+
<el-col :span="dateColSpan">
|
|
4
|
+
<el-date-picker ref="datePicker"
|
|
5
|
+
v-model="model"
|
|
6
|
+
:format="convertedDateFormat"
|
|
7
|
+
:default-value="defaultValue"
|
|
8
|
+
:placeholder="datePlaceholder"
|
|
9
|
+
:size="size"
|
|
10
|
+
:clearable="empty"
|
|
11
|
+
:disabled-date="isDisabledDate"
|
|
12
|
+
:disabled="disabled"/>
|
|
13
|
+
</el-col>
|
|
14
|
+
<el-col :span="timeColSpan">
|
|
15
|
+
<el-time-picker ref="timePicker"
|
|
16
|
+
v-model="model"
|
|
17
|
+
:format="timeFormat"
|
|
18
|
+
:default-value="defaultTimeValue"
|
|
19
|
+
:placeholder="timePlaceholder"
|
|
20
|
+
:size="size"
|
|
21
|
+
:clearable="empty"
|
|
22
|
+
:disabled="disabled || !model"/>
|
|
23
|
+
</el-col>
|
|
24
|
+
</el-row>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script>
|
|
28
|
+
export default {
|
|
29
|
+
name: 'TnxelDateTimePicker',
|
|
30
|
+
props: {
|
|
31
|
+
modelValue: [String, Number, Date],
|
|
32
|
+
dateFormat: {
|
|
33
|
+
type: String,
|
|
34
|
+
default: 'yyyy-MM-dd',
|
|
35
|
+
},
|
|
36
|
+
datePlaceholder: {
|
|
37
|
+
type: String,
|
|
38
|
+
default: '选择日期',
|
|
39
|
+
},
|
|
40
|
+
timeFormat: {
|
|
41
|
+
type: String,
|
|
42
|
+
default: 'HH:mm', // 默认精确到分钟
|
|
43
|
+
},
|
|
44
|
+
timePlaceholder: {
|
|
45
|
+
type: String,
|
|
46
|
+
default: '选择时间',
|
|
47
|
+
},
|
|
48
|
+
delimiter: {
|
|
49
|
+
type: String,
|
|
50
|
+
default: ' ', // 默认用空格分隔日期和时间
|
|
51
|
+
},
|
|
52
|
+
size: String,
|
|
53
|
+
empty: {
|
|
54
|
+
type: Boolean,
|
|
55
|
+
default: false,
|
|
56
|
+
},
|
|
57
|
+
defaultValue: [String, Number, Date],
|
|
58
|
+
valueFormat: String,
|
|
59
|
+
disabled: Boolean,
|
|
60
|
+
minDate: [String, Number, Date],
|
|
61
|
+
maxDate: [String, Number, Date],
|
|
62
|
+
},
|
|
63
|
+
emits: ['update:modelValue'],
|
|
64
|
+
data() {
|
|
65
|
+
return {
|
|
66
|
+
model: window.tnx.util.date.toDate(this.modelValue),
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
computed: {
|
|
70
|
+
dateColSpan() {
|
|
71
|
+
if (this.timeFormat.length > 5) {
|
|
72
|
+
return 13;
|
|
73
|
+
}
|
|
74
|
+
return 14;
|
|
75
|
+
},
|
|
76
|
+
timeColSpan() {
|
|
77
|
+
if (this.timeFormat.length > 5) {
|
|
78
|
+
return 11;
|
|
79
|
+
}
|
|
80
|
+
return 10;
|
|
81
|
+
},
|
|
82
|
+
convertedDateFormat() {
|
|
83
|
+
return window.tnx.date.toDayJsDateFormat(this.dateFormat);
|
|
84
|
+
},
|
|
85
|
+
defaultTimeValue() {
|
|
86
|
+
if (this.defaultValue) {
|
|
87
|
+
return window.tnx.util.date.toDate(this.defaultValue);
|
|
88
|
+
}
|
|
89
|
+
// 必须创建新的日期对象,以免改动影响原始modelValue
|
|
90
|
+
let time = this.modelValue ? new Date(this.modelValue) : new Date();
|
|
91
|
+
time.applyTime(0, 0, 0, 0);
|
|
92
|
+
return time;
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
watch: {
|
|
96
|
+
modelValue() {
|
|
97
|
+
this.model = window.tnx.util.date.toDate(this.modelValue);
|
|
98
|
+
},
|
|
99
|
+
model() {
|
|
100
|
+
this.$emit('update:modelValue', this.model);
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
methods: {
|
|
104
|
+
isDisabledDate(date) {
|
|
105
|
+
let minDate = window.tnx.util.date.toDate(this.minDate);
|
|
106
|
+
if (minDate) {
|
|
107
|
+
minDate.applyTime(0, 0, 0, 0);
|
|
108
|
+
if (minDate.getTime() > date.getTime()) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
let maxDate = window.tnx.util.date.toDate(this.maxDate);
|
|
113
|
+
if (maxDate) {
|
|
114
|
+
maxDate.applyTime(0, 0, 0, 0);
|
|
115
|
+
if (maxDate.getTime() < date.getTime()) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return false;
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
}
|
|
123
|
+
</script>
|
|
124
|
+
|
|
125
|
+
<style>
|
|
126
|
+
.tnxel-datetime-picker .el-input {
|
|
127
|
+
width: 100%;
|
|
128
|
+
}
|
|
129
|
+
</style>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-form :label-position="vertical ? 'top' : 'right'" label-width="auto" ref="form" :model="model"
|
|
3
|
+
class="tnxel-detail-form" :class="formClass">
|
|
4
|
+
<slot></slot>
|
|
5
|
+
<el-form-item class="w-100 mb-0" :label="vertical ? undefined : ' '" v-if="update || back !== false">
|
|
6
|
+
<el-button :type="theme || 'primary'" @click="toUpdate" v-if="update">{{ updateText }}</el-button>
|
|
7
|
+
<el-button type="default" @click="toBack" v-if="back !== false">{{ backText }}</el-button>
|
|
8
|
+
</el-form-item>
|
|
9
|
+
</el-form>
|
|
10
|
+
</template>
|
|
11
|
+
|
|
12
|
+
<script>
|
|
13
|
+
export default {
|
|
14
|
+
name: 'TnxelDetailForm',
|
|
15
|
+
props: {
|
|
16
|
+
model: {
|
|
17
|
+
type: Object,
|
|
18
|
+
default: () => {
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
theme: String,
|
|
22
|
+
update: {
|
|
23
|
+
type: Function,
|
|
24
|
+
},
|
|
25
|
+
updateText: {
|
|
26
|
+
type: String,
|
|
27
|
+
default: '修改',
|
|
28
|
+
},
|
|
29
|
+
back: {
|
|
30
|
+
type: [String, Function, Boolean],
|
|
31
|
+
default: true,
|
|
32
|
+
},
|
|
33
|
+
backText: {
|
|
34
|
+
type: String,
|
|
35
|
+
default: '返回',
|
|
36
|
+
},
|
|
37
|
+
vertical: {
|
|
38
|
+
type: Boolean,
|
|
39
|
+
default: false,
|
|
40
|
+
},
|
|
41
|
+
columns: {
|
|
42
|
+
type: Number,
|
|
43
|
+
default: 1,
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
data() {
|
|
47
|
+
return {};
|
|
48
|
+
},
|
|
49
|
+
computed: {
|
|
50
|
+
formClass() {
|
|
51
|
+
let formClass = '';
|
|
52
|
+
if (this.theme) {
|
|
53
|
+
formClass += ' theme-' + this.theme;
|
|
54
|
+
}
|
|
55
|
+
if (this.columns > 1 && this.columns < 5) {
|
|
56
|
+
formClass += ' form-columns-' + this.columns;
|
|
57
|
+
}
|
|
58
|
+
return formClass.trim();
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
methods: {
|
|
62
|
+
toUpdate() { // 为了避免传递事件参数,不直接使用update()
|
|
63
|
+
if (this.update) {
|
|
64
|
+
this.update();
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
toBack() {
|
|
68
|
+
if (typeof this.back === 'function') {
|
|
69
|
+
this.back();
|
|
70
|
+
} else if (typeof this.back === 'string') {
|
|
71
|
+
this.$router.back(this.back);
|
|
72
|
+
} else if (this.back !== false) {
|
|
73
|
+
this.$router.back();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
</script>
|
|
79
|
+
|
|
80
|
+
<style>
|
|
81
|
+
.tnxel-detail-form .el-form-item {
|
|
82
|
+
margin-bottom: 0.75rem;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.tnxel-detail-form .el-form-item__content {
|
|
86
|
+
align-items: normal;
|
|
87
|
+
}
|
|
88
|
+
</style>
|