vuv-ui 1.0.7 → 1.0.8
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/package.json +6 -4
- package/src/App.vue +23 -0
- package/src/components/button/Data.vue +205 -0
- package/src/components/button/View.vue +50 -0
- package/src/components/button/index.ts +41 -0
- package/src/components/collapse/Data.vue +169 -0
- package/src/components/collapse/View.vue +37 -0
- package/src/components/collapse/index.ts +34 -0
- package/src/components/index.ts +14 -0
- package/src/components/numberBxo/Data.vue +98 -0
- package/src/components/numberBxo/View.vue +40 -0
- package/src/components/numberBxo/index.ts +40 -0
- package/src/components/textarea/Data.vue +148 -0
- package/src/components/textarea/View.vue +36 -0
- package/src/components/textarea/index.ts +31 -0
- package/src/main.ts +7 -0
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vuv-ui",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.8",
|
|
5
5
|
"description": "基于UVUI 组件再次封装",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"author": "lsq",
|
|
8
8
|
"files": [
|
|
9
9
|
"vuv-ui",
|
|
10
|
-
"vuv-ui/**"
|
|
10
|
+
"vuv-ui/**",
|
|
11
|
+
"src",
|
|
12
|
+
"src/**"
|
|
11
13
|
],
|
|
12
14
|
"scripts": {
|
|
13
15
|
"dev": "vite",
|
|
@@ -19,7 +21,7 @@
|
|
|
19
21
|
},
|
|
20
22
|
"exports": {
|
|
21
23
|
".": {
|
|
22
|
-
"import": "./
|
|
24
|
+
"import": "./src/components/index.ts",
|
|
23
25
|
"require": "./vuv-ui/vuv-ui.umd.js",
|
|
24
26
|
"types": "./vuv-ui/src/components/index.d.ts"
|
|
25
27
|
},
|
|
@@ -33,7 +35,7 @@
|
|
|
33
35
|
"devDependencies": {
|
|
34
36
|
"@tsconfig/node24": "^24.0.4",
|
|
35
37
|
"@types/node": "^24.12.2",
|
|
36
|
-
"@vitejs/plugin-vue": "
|
|
38
|
+
"@vitejs/plugin-vue": "4.0.0",
|
|
37
39
|
"@vue/compiler-sfc": "3.2.45",
|
|
38
40
|
"@vue/tsconfig": "^0.9.1",
|
|
39
41
|
"npm-run-all2": "^8.0.4",
|
package/src/App.vue
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<h1>You did it!</h1>
|
|
4
|
+
<p>
|
|
5
|
+
Visit
|
|
6
|
+
<a href="https://vuejs.org/" target="_blank" rel="noopener">vuejs.org</a>
|
|
7
|
+
to read the documentation
|
|
8
|
+
</p>
|
|
9
|
+
<uv-button>默认按钮</uv-button>
|
|
10
|
+
<el-switch v-model="hairline"></el-switch>
|
|
11
|
+
|
|
12
|
+
<Data></Data>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import uvButton from './components/button/View.vue';
|
|
17
|
+
import Data from './components/button/Data.vue';
|
|
18
|
+
// import { uvButton } from 'uv-ui';
|
|
19
|
+
import { ref } from 'vue';
|
|
20
|
+
const hairline = ref(true);
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<style scoped></style>
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="banner-content" v-if="isShow">
|
|
3
|
+
<el-form label-width="100px">
|
|
4
|
+
<el-form-item label="显示边框">
|
|
5
|
+
<el-switch v-model="options.hairline"></el-switch>
|
|
6
|
+
</el-form-item>
|
|
7
|
+
<el-form-item label="宽度">
|
|
8
|
+
<el-input-number v-model="options.width"></el-input-number>
|
|
9
|
+
</el-form-item>
|
|
10
|
+
<el-form-item label="高度">
|
|
11
|
+
<el-input-number v-model="options.height"></el-input-number>
|
|
12
|
+
</el-form-item>
|
|
13
|
+
<el-form-item label="主题颜色">
|
|
14
|
+
<el-select v-model="options.type" placeholder="请选择" style="width: 180px">
|
|
15
|
+
<el-option label="primary" value="primary" />
|
|
16
|
+
<el-option label="success" value="success" />
|
|
17
|
+
<el-option label="info" value="info" />
|
|
18
|
+
<el-option label="warning" value="warning" />
|
|
19
|
+
<el-option label="error" value="error" />
|
|
20
|
+
</el-select>
|
|
21
|
+
</el-form-item>
|
|
22
|
+
<el-form-item label="大小">
|
|
23
|
+
<el-radio-group v-model="options.size">
|
|
24
|
+
<el-radio-button label="normal">normal</el-radio-button>
|
|
25
|
+
<el-radio-button label="medium">medium</el-radio-button>
|
|
26
|
+
<el-radio-button label="mini">mini</el-radio-button>
|
|
27
|
+
</el-radio-group>
|
|
28
|
+
</el-form-item>
|
|
29
|
+
<el-form-item label="按钮位置">
|
|
30
|
+
<el-radio-group v-model="options.position">
|
|
31
|
+
<el-radio-button label="left">居左</el-radio-button>
|
|
32
|
+
<el-radio-button label="center">居中</el-radio-button>
|
|
33
|
+
<el-radio-button label="right">居右</el-radio-button>
|
|
34
|
+
</el-radio-group>
|
|
35
|
+
</el-form-item>
|
|
36
|
+
<el-form-item label="形状">
|
|
37
|
+
<el-radio-group v-model="options.shape">
|
|
38
|
+
<el-radio-button label="square">square</el-radio-button>
|
|
39
|
+
<el-radio-button label="circle">circle</el-radio-button>
|
|
40
|
+
</el-radio-group>
|
|
41
|
+
</el-form-item>
|
|
42
|
+
<el-form-item label="镂空">
|
|
43
|
+
<el-switch v-model="options.plain"></el-switch>
|
|
44
|
+
</el-form-item>
|
|
45
|
+
<el-form-item label="禁用">
|
|
46
|
+
<el-switch v-model="options.disabled"></el-switch>
|
|
47
|
+
</el-form-item>
|
|
48
|
+
<el-form-item label="铺满">
|
|
49
|
+
<el-switch v-model="options.fill"></el-switch>
|
|
50
|
+
</el-form-item>
|
|
51
|
+
<el-form-item label="loading图标">
|
|
52
|
+
<el-switch v-model="options.loading"></el-switch>
|
|
53
|
+
</el-form-item>
|
|
54
|
+
<el-form-item label="加载中文字">
|
|
55
|
+
<el-input v-model="options.loadingText" style="width: 180px" placeholder="请输入" clearable />
|
|
56
|
+
</el-form-item>
|
|
57
|
+
|
|
58
|
+
<el-form-item label="开放能力">
|
|
59
|
+
<el-select v-model="options.openType" placeholder="请选择" style="width: 180px" clearable>
|
|
60
|
+
<el-option label="跳转页面" value="navigateTo" />
|
|
61
|
+
<el-option label="获取用户信息" value="getUserInfo" />
|
|
62
|
+
<el-option label="联系客服" value="contact" />
|
|
63
|
+
<el-option label="获取手机号" value="getPhoneNumber" />
|
|
64
|
+
<el-option label="打开授权设置" value="openSetting" />
|
|
65
|
+
<el-option label="获取用户头像" value="chooseAvatar" />
|
|
66
|
+
<el-option label="意见反馈" value="feedback" />
|
|
67
|
+
<el-option label="分享" value="share" />
|
|
68
|
+
<el-option label="自定义" value="customize" />
|
|
69
|
+
</el-select>
|
|
70
|
+
</el-form-item>
|
|
71
|
+
|
|
72
|
+
<!-- 页面路径 -->
|
|
73
|
+
<el-form-item label="页面路径" v-if="options.openType == 'navigateTo'">
|
|
74
|
+
<el-input v-model="options.pagePath" style="width: 180px" placeholder="请输入" clearable />
|
|
75
|
+
</el-form-item>
|
|
76
|
+
<!-- 是否tabbar页面 -->
|
|
77
|
+
<el-form-item label="tabbar页面" v-if="options.openType == 'navigateTo'">
|
|
78
|
+
<el-switch v-model="options.isTabBar"></el-switch>
|
|
79
|
+
</el-form-item>
|
|
80
|
+
|
|
81
|
+
<el-form-item label="按钮文字">
|
|
82
|
+
<el-input v-model="options.text" style="width: 180px" placeholder="请输入" clearable />
|
|
83
|
+
</el-form-item>
|
|
84
|
+
<!-- <el-form-item label="按钮图标">
|
|
85
|
+
<el-input v-model="options.icon" style="width: 180px" placeholder="请输入" clearable />
|
|
86
|
+
</el-form-item> -->
|
|
87
|
+
<el-form-item label="按钮颜色">
|
|
88
|
+
<el-color-picker v-model="options.color" show-alpha />
|
|
89
|
+
</el-form-item>
|
|
90
|
+
<el-form-item label="文字颜色">
|
|
91
|
+
<el-color-picker v-model="options.textColor" show-alpha />
|
|
92
|
+
</el-form-item>
|
|
93
|
+
<el-form-item label="自定义样式">
|
|
94
|
+
<el-input v-model="options.customStyle" style="width: 240px" placeholder="分号分隔,如width: 100px;height: 50px;" type="textarea" clearable />
|
|
95
|
+
</el-form-item>
|
|
96
|
+
</el-form>
|
|
97
|
+
</div>
|
|
98
|
+
</template>
|
|
99
|
+
|
|
100
|
+
<script setup lang="ts" name="ButtonData">
|
|
101
|
+
import { ref, onMounted } from 'vue';
|
|
102
|
+
const props = defineProps({
|
|
103
|
+
data: {
|
|
104
|
+
type: Object,
|
|
105
|
+
default: () => {}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
const options = ref();
|
|
110
|
+
const data = ref();
|
|
111
|
+
const isShow = ref(false);
|
|
112
|
+
|
|
113
|
+
onMounted(() => {
|
|
114
|
+
console.log(props.data, props, '参数接收');
|
|
115
|
+
if (props.data) {
|
|
116
|
+
data.value = props.data.data;
|
|
117
|
+
options.value = props.data.options;
|
|
118
|
+
isShow.value = true;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
</script>
|
|
122
|
+
|
|
123
|
+
<style lang="scss" scoped>
|
|
124
|
+
.banner-content {
|
|
125
|
+
overflow-x: auto;
|
|
126
|
+
}
|
|
127
|
+
.item-list {
|
|
128
|
+
display: flex;
|
|
129
|
+
justify-content: space-between;
|
|
130
|
+
margin: 10px;
|
|
131
|
+
border: 1px solid #c8c8c8;
|
|
132
|
+
border-radius: 4px;
|
|
133
|
+
padding: 5px;
|
|
134
|
+
|
|
135
|
+
.l-info {
|
|
136
|
+
font-size: 12px;
|
|
137
|
+
padding-top: 4px;
|
|
138
|
+
width: calc(100% - 100px);
|
|
139
|
+
|
|
140
|
+
p {
|
|
141
|
+
margin: 5px 0 0;
|
|
142
|
+
white-space: nowrap;
|
|
143
|
+
overflow: hidden;
|
|
144
|
+
display: flex;
|
|
145
|
+
|
|
146
|
+
.link {
|
|
147
|
+
color: #1b8bff;
|
|
148
|
+
cursor: pointer;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.text {
|
|
152
|
+
white-space: nowrap;
|
|
153
|
+
text-align: -webkit-auto;
|
|
154
|
+
text-overflow: ellipsis;
|
|
155
|
+
overflow: hidden;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.r-image {
|
|
161
|
+
text-align: right;
|
|
162
|
+
|
|
163
|
+
.el-icon-close {
|
|
164
|
+
color: #999;
|
|
165
|
+
font-size: 12px;
|
|
166
|
+
font-weight: 600;
|
|
167
|
+
margin-bottom: 6px;
|
|
168
|
+
cursor: pointer;
|
|
169
|
+
|
|
170
|
+
&:hover {
|
|
171
|
+
color: red;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.image-box {
|
|
176
|
+
width: 100px;
|
|
177
|
+
height: 70px;
|
|
178
|
+
border-radius: 5px;
|
|
179
|
+
overflow: hidden;
|
|
180
|
+
position: relative;
|
|
181
|
+
background: #fff;
|
|
182
|
+
display: flex;
|
|
183
|
+
justify-content: center;
|
|
184
|
+
align-items: center;
|
|
185
|
+
|
|
186
|
+
img {
|
|
187
|
+
max-width: 100%;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.placeholder-text {
|
|
191
|
+
color: #999;
|
|
192
|
+
font-size: 12px;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.mt-5px {
|
|
199
|
+
margin-top: 5px;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.mt-10px {
|
|
203
|
+
margin-top: 10px;
|
|
204
|
+
}
|
|
205
|
+
</style>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="button_box" v-if="data && data.options" :class="{ plain: data.options.plain }" :style="{ 'justify-content': data.options.position }">
|
|
3
|
+
<uv-button
|
|
4
|
+
:type="data.options.type || 'primary'"
|
|
5
|
+
:bgColor="data.options.color"
|
|
6
|
+
:disabled="data.options.disabled"
|
|
7
|
+
:color="data.options.textColor"
|
|
8
|
+
:round="data.options.shape == 'circle' ? true : false"
|
|
9
|
+
:square="data.options.shape == 'square' ? true : false"
|
|
10
|
+
:size="data.options.size"
|
|
11
|
+
:loading="data.options.loading"
|
|
12
|
+
:icon="data.options.icon"
|
|
13
|
+
:style="{
|
|
14
|
+
width: data.options.width + 'px',
|
|
15
|
+
height: data.options.height + 'px'
|
|
16
|
+
}"
|
|
17
|
+
>
|
|
18
|
+
{{ data.options.text || '按钮' }}
|
|
19
|
+
</uv-button>
|
|
20
|
+
</div>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script setup lang="ts" name="ButtonView">
|
|
24
|
+
import { uvButton } from 'uv-ui';
|
|
25
|
+
const props = defineProps({
|
|
26
|
+
data: {
|
|
27
|
+
type: Object,
|
|
28
|
+
default: () => {}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<style lang="scss" scoped>
|
|
34
|
+
// 提取data.options.customStyle 样式
|
|
35
|
+
|
|
36
|
+
.button_box {
|
|
37
|
+
display: flex;
|
|
38
|
+
align-items: center;
|
|
39
|
+
margin-top: 10px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.button_box:deep(.uv-button) {
|
|
43
|
+
width: 100%;
|
|
44
|
+
height: 100%;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.plain:deep(.uv-button) {
|
|
48
|
+
background-color: transparent !important;
|
|
49
|
+
}
|
|
50
|
+
</style>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import ButtonView from './View.vue';
|
|
2
|
+
import ButtonData from './Data.vue';
|
|
3
|
+
|
|
4
|
+
const buttonTypeList = {
|
|
5
|
+
type: 'uvui-button',
|
|
6
|
+
name: '按钮',
|
|
7
|
+
icon: 'Postcard',
|
|
8
|
+
fontIcon: 'icon-shangpinanniu_changtiaoanniu',
|
|
9
|
+
page: 'index,activity',
|
|
10
|
+
viewCom: ButtonView,
|
|
11
|
+
editCom: ButtonData,
|
|
12
|
+
limit: 0
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const buttonOptions = {
|
|
16
|
+
data: {},
|
|
17
|
+
options: {
|
|
18
|
+
width: '100', //宽度
|
|
19
|
+
height: '45', //高度
|
|
20
|
+
hairline: true, //是否显示边框
|
|
21
|
+
type: 'primary', //主题颜色
|
|
22
|
+
size: 'normal', //大小
|
|
23
|
+
shape: 'square', //形状
|
|
24
|
+
position: 'left', //按钮位置
|
|
25
|
+
plain: false, //镂空
|
|
26
|
+
disabled: false, //禁用
|
|
27
|
+
loading: false, //loading图标
|
|
28
|
+
loadingText: '', //加载中文字
|
|
29
|
+
openType: 'navigateTo', //开放能力
|
|
30
|
+
pagePath: '', //页面路径
|
|
31
|
+
isTabBar: false, //是否tabbar页面
|
|
32
|
+
text: '', //按钮文字
|
|
33
|
+
textColor: '#ffffff', //按钮文字颜色
|
|
34
|
+
icon: '', //按钮图标
|
|
35
|
+
color: '', //按钮颜色
|
|
36
|
+
customStyle: '', //自定义样式
|
|
37
|
+
fill: true //组件是否铺满父容器
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export { buttonTypeList, buttonOptions };
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="banner-content" v-if="isShow">
|
|
3
|
+
<el-form label-width="100px">
|
|
4
|
+
<el-form-item label="是否铺满">
|
|
5
|
+
<el-switch v-model="options.fill"></el-switch>
|
|
6
|
+
</el-form-item>
|
|
7
|
+
</el-form>
|
|
8
|
+
|
|
9
|
+
<el-button type="primary" @click="addItem" class="mt-10px">添加项</el-button>
|
|
10
|
+
<div class="item-list" v-for="(item, index) in data.list" :key="index">
|
|
11
|
+
<div class="l-info">
|
|
12
|
+
<div class="mt-5px">
|
|
13
|
+
<span>标题:</span>
|
|
14
|
+
<el-input v-model="item.title" style="width: 180px" placeholder="请输入" clearable />
|
|
15
|
+
</div>
|
|
16
|
+
<div class="mt-5px">
|
|
17
|
+
<span>内容:</span>
|
|
18
|
+
<el-input v-model="item.value" style="width: 180px" placeholder="请输入" clearable />
|
|
19
|
+
</div>
|
|
20
|
+
<div class="mt-5px">
|
|
21
|
+
<span>描述:</span>
|
|
22
|
+
<el-input v-model="item.label" style="width: 180px" placeholder="请输入" clearable />
|
|
23
|
+
</div>
|
|
24
|
+
<div class="mt-5px">
|
|
25
|
+
<span>禁用:</span>
|
|
26
|
+
<el-switch v-model="item.disabled"></el-switch>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="mt-5px">
|
|
29
|
+
<span>右箭头:</span>
|
|
30
|
+
<el-switch v-model="item.isLink"></el-switch>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="mt-5px">
|
|
33
|
+
<span>点击反馈:</span>
|
|
34
|
+
<el-switch v-model="item.clickable"></el-switch>
|
|
35
|
+
</div>
|
|
36
|
+
<div class="mt-5px">
|
|
37
|
+
<span>显示内边框:</span>
|
|
38
|
+
<el-switch v-model="item.border"></el-switch>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="mt-5px">
|
|
41
|
+
<el-button type="danger" @click="removeItem(index)" size="small">删除</el-button>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</template>
|
|
47
|
+
|
|
48
|
+
<script setup lang="ts" name="CollapseData">
|
|
49
|
+
import { ref, onMounted } from 'vue';
|
|
50
|
+
|
|
51
|
+
const props = defineProps({
|
|
52
|
+
data: {
|
|
53
|
+
type: Object,
|
|
54
|
+
default: () => {}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const options = ref();
|
|
59
|
+
const data = ref();
|
|
60
|
+
const isShow = ref(false);
|
|
61
|
+
|
|
62
|
+
const removeItem = (index: number | string) => {
|
|
63
|
+
data.value.list.splice(index, 1);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const addItem = () => {
|
|
67
|
+
data.value.list.push({
|
|
68
|
+
title: '面板标题', // 面板标题
|
|
69
|
+
value: '右侧内容', //标题右侧内容
|
|
70
|
+
label: '', //标题下方的描述信息
|
|
71
|
+
disabled: false, //是否禁止面板的展开和收起
|
|
72
|
+
isLink: true, //是否展示右侧箭头并开启点击反馈
|
|
73
|
+
clickable: true, //是否开启点击反馈
|
|
74
|
+
border: true //是否显示内边框
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
onMounted(() => {
|
|
79
|
+
if (props.data) {
|
|
80
|
+
data.value = props.data.data;
|
|
81
|
+
options.value = props.data.options;
|
|
82
|
+
isShow.value = true;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
</script>
|
|
86
|
+
|
|
87
|
+
<style lang="scss" scoped>
|
|
88
|
+
.banner-content {
|
|
89
|
+
overflow-x: auto;
|
|
90
|
+
}
|
|
91
|
+
.item-list {
|
|
92
|
+
display: flex;
|
|
93
|
+
justify-content: space-between;
|
|
94
|
+
margin: 10px;
|
|
95
|
+
border: 1px solid #c8c8c8;
|
|
96
|
+
border-radius: 4px;
|
|
97
|
+
padding: 5px;
|
|
98
|
+
|
|
99
|
+
.l-info {
|
|
100
|
+
font-size: 12px;
|
|
101
|
+
padding-top: 4px;
|
|
102
|
+
width: calc(100% - 100px);
|
|
103
|
+
|
|
104
|
+
p {
|
|
105
|
+
margin: 5px 0 0;
|
|
106
|
+
white-space: nowrap;
|
|
107
|
+
overflow: hidden;
|
|
108
|
+
display: flex;
|
|
109
|
+
|
|
110
|
+
.link {
|
|
111
|
+
color: #1b8bff;
|
|
112
|
+
cursor: pointer;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.text {
|
|
116
|
+
white-space: nowrap;
|
|
117
|
+
text-align: -webkit-auto;
|
|
118
|
+
text-overflow: ellipsis;
|
|
119
|
+
overflow: hidden;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.r-image {
|
|
125
|
+
text-align: right;
|
|
126
|
+
|
|
127
|
+
.el-icon-close {
|
|
128
|
+
color: #999;
|
|
129
|
+
font-size: 12px;
|
|
130
|
+
font-weight: 600;
|
|
131
|
+
margin-bottom: 6px;
|
|
132
|
+
cursor: pointer;
|
|
133
|
+
|
|
134
|
+
&:hover {
|
|
135
|
+
color: red;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.image-box {
|
|
140
|
+
width: 100px;
|
|
141
|
+
height: 70px;
|
|
142
|
+
border-radius: 5px;
|
|
143
|
+
overflow: hidden;
|
|
144
|
+
position: relative;
|
|
145
|
+
background: #fff;
|
|
146
|
+
display: flex;
|
|
147
|
+
justify-content: center;
|
|
148
|
+
align-items: center;
|
|
149
|
+
|
|
150
|
+
img {
|
|
151
|
+
max-width: 100%;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.placeholder-text {
|
|
155
|
+
color: #999;
|
|
156
|
+
font-size: 12px;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.mt-5px {
|
|
163
|
+
margin-top: 5px;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.mt-10px {
|
|
167
|
+
margin-top: 10px;
|
|
168
|
+
}
|
|
169
|
+
</style>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="cell_box" v-if="data && data.options">
|
|
3
|
+
<uv-collapse v-model="list">
|
|
4
|
+
<uv-collapse-item v-for="(item, index) in collapseList" :key="index" :name="item.title + '_' + index">
|
|
5
|
+
<template #title>{{ item.title }}</template>
|
|
6
|
+
<template #right>{{ item.value }}</template>
|
|
7
|
+
{{ item.label }}
|
|
8
|
+
</uv-collapse-item>
|
|
9
|
+
</uv-collapse>
|
|
10
|
+
</div>
|
|
11
|
+
</template>
|
|
12
|
+
|
|
13
|
+
<script setup lang="ts" name="CollapseView">
|
|
14
|
+
import { ref, computed } from 'vue';
|
|
15
|
+
import { uvCollapse, uvCollapseItem } from 'uv-ui';
|
|
16
|
+
const props = defineProps({
|
|
17
|
+
data: {
|
|
18
|
+
type: Object,
|
|
19
|
+
default: () => {}
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const list = ref([]);
|
|
24
|
+
|
|
25
|
+
const collapseList = computed(() => {
|
|
26
|
+
if (props.data.data && props.data.data.list) {
|
|
27
|
+
list.value = props.data.data.list.map((item: any, index: number) => item.title + '_' + index);
|
|
28
|
+
return props.data.data.list;
|
|
29
|
+
}
|
|
30
|
+
return [];
|
|
31
|
+
});
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<style lang="scss" scoped>
|
|
35
|
+
.cell_box {
|
|
36
|
+
}
|
|
37
|
+
</style>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import CollapseView from './View.vue';
|
|
2
|
+
import CollapseData from './Data.vue';
|
|
3
|
+
|
|
4
|
+
const collapseTypeList = {
|
|
5
|
+
type: 'uvui-collapse',
|
|
6
|
+
name: '折叠面板',
|
|
7
|
+
icon: 'Postcard',
|
|
8
|
+
fontIcon: 'icon-danyuange1',
|
|
9
|
+
page: 'index,activity',
|
|
10
|
+
viewCom: CollapseView,
|
|
11
|
+
editCom: CollapseData,
|
|
12
|
+
limit: 0
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const collapseOptions = {
|
|
16
|
+
data: {
|
|
17
|
+
list: [
|
|
18
|
+
{
|
|
19
|
+
title: '面板标题', // 面板标题
|
|
20
|
+
value: '右侧内容', //标题右侧内容
|
|
21
|
+
label: '', //标题下方的描述信息
|
|
22
|
+
disabled: false, //是否禁止面板的展开和收起
|
|
23
|
+
isLink: true, //是否展示右侧箭头并开启点击反馈
|
|
24
|
+
clickable: true, //是否开启点击反馈
|
|
25
|
+
border: true //是否显示内边框
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
options: {
|
|
30
|
+
fill: false //组件是否铺满父容器
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export { collapseTypeList, collapseOptions };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { buttonTypeList, buttonOptions } from './button/index';
|
|
2
|
+
import { textareaTypeList, textareaOptions } from './textarea/index';
|
|
3
|
+
import { numberBoxTypeList, numberBoxOptions } from './numberBxo/index';
|
|
4
|
+
import { collapseTypeList, collapseOptions } from './collapse/index';
|
|
5
|
+
|
|
6
|
+
export const uvUiList = { buttonTypeList, textareaTypeList, numberBoxTypeList, collapseTypeList };
|
|
7
|
+
export const uvUIOptions = { buttonOptions, textareaOptions, numberBoxOptions, collapseOptions };
|
|
8
|
+
|
|
9
|
+
const hsryvvuUI = {
|
|
10
|
+
uvUiList,
|
|
11
|
+
uvUIOptions
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default hsryvvuUI;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="banner-content" v-if="isShow">
|
|
3
|
+
<el-form label-width="120px">
|
|
4
|
+
<el-form-item label="当前值">
|
|
5
|
+
<el-input-number v-model="options.value" :min="options.min" :max="options.max" :step="options.step" />
|
|
6
|
+
</el-form-item>
|
|
7
|
+
|
|
8
|
+
<el-form-item label="最小值">
|
|
9
|
+
<el-input-number v-model="options.min" />
|
|
10
|
+
</el-form-item>
|
|
11
|
+
<el-form-item label="最大值">
|
|
12
|
+
<el-input-number v-model="options.max" />
|
|
13
|
+
</el-form-item>
|
|
14
|
+
<el-form-item label="步长">
|
|
15
|
+
<el-input-number v-model="options.step" :min="0" :precision="2" />
|
|
16
|
+
</el-form-item>
|
|
17
|
+
<el-form-item label="只能正整数">
|
|
18
|
+
<el-switch v-model="options.integer"></el-switch>
|
|
19
|
+
</el-form-item>
|
|
20
|
+
<el-form-item label="禁用操作">
|
|
21
|
+
<el-switch v-model="options.disabled"></el-switch>
|
|
22
|
+
</el-form-item>
|
|
23
|
+
<el-form-item label="禁止输入框">
|
|
24
|
+
<el-switch v-model="options.disabledInput"></el-switch>
|
|
25
|
+
</el-form-item>
|
|
26
|
+
<el-form-item label="输入框宽度(px)">
|
|
27
|
+
<el-input-number v-model="options.inputWidth" :min="20" :max="200" />
|
|
28
|
+
</el-form-item>
|
|
29
|
+
<el-form-item label="显示减少按钮">
|
|
30
|
+
<el-switch v-model="options.showMinus"></el-switch>
|
|
31
|
+
</el-form-item>
|
|
32
|
+
<el-form-item label="显示增加按钮">
|
|
33
|
+
<el-switch v-model="options.showPlus"></el-switch>
|
|
34
|
+
</el-form-item>
|
|
35
|
+
<el-form-item label="小数位数">
|
|
36
|
+
<el-input-number v-model="options.decimalLength" :min="0" :max="10" />
|
|
37
|
+
</el-form-item>
|
|
38
|
+
<el-form-item label="允许长按">
|
|
39
|
+
<el-switch v-model="options.longPress"></el-switch>
|
|
40
|
+
</el-form-item>
|
|
41
|
+
<el-form-item label="文字颜色">
|
|
42
|
+
<el-color-picker v-model="options.color" show-alpha />
|
|
43
|
+
</el-form-item>
|
|
44
|
+
<el-form-item label="按钮大小(px)">
|
|
45
|
+
<el-input-number v-model="options.buttonSize" :min="20" :max="100" />
|
|
46
|
+
</el-form-item>
|
|
47
|
+
<el-form-item label="背景颜色">
|
|
48
|
+
<el-color-picker v-model="options.bgColor" show-alpha />
|
|
49
|
+
</el-form-item>
|
|
50
|
+
<el-form-item label="禁用增加按钮">
|
|
51
|
+
<el-switch v-model="options.disablePlus"></el-switch>
|
|
52
|
+
</el-form-item>
|
|
53
|
+
<el-form-item label="禁用减少按钮">
|
|
54
|
+
<el-switch v-model="options.disableMinus"></el-switch>
|
|
55
|
+
</el-form-item>
|
|
56
|
+
<el-form-item label="对齐方式">
|
|
57
|
+
<el-radio-group v-model="options.align">
|
|
58
|
+
<el-radio-button label="left">左对齐</el-radio-button>
|
|
59
|
+
<el-radio-button label="center">居中对齐</el-radio-button>
|
|
60
|
+
<el-radio-button label="right">右对齐</el-radio-button>
|
|
61
|
+
</el-radio-group>
|
|
62
|
+
</el-form-item>
|
|
63
|
+
<el-form-item label="铺满">
|
|
64
|
+
<el-switch v-model="options.fill"></el-switch>
|
|
65
|
+
</el-form-item>
|
|
66
|
+
</el-form>
|
|
67
|
+
</div>
|
|
68
|
+
</template>
|
|
69
|
+
|
|
70
|
+
<script setup lang="ts" name="NumberBoxData">
|
|
71
|
+
import { ref, onMounted } from 'vue';
|
|
72
|
+
|
|
73
|
+
const props = defineProps({
|
|
74
|
+
data: {
|
|
75
|
+
type: Object,
|
|
76
|
+
default: () => {}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
const options = ref();
|
|
81
|
+
const data = ref();
|
|
82
|
+
const isShow = ref(false);
|
|
83
|
+
|
|
84
|
+
onMounted(() => {
|
|
85
|
+
console.log(props.data, props, '参数接收');
|
|
86
|
+
if (props.data) {
|
|
87
|
+
data.value = props.data.data;
|
|
88
|
+
options.value = props.data.options;
|
|
89
|
+
isShow.value = true;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
</script>
|
|
93
|
+
|
|
94
|
+
<style lang="scss" scoped>
|
|
95
|
+
.banner-content {
|
|
96
|
+
overflow-x: auto;
|
|
97
|
+
}
|
|
98
|
+
</style>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="number-box-wrapper" v-if="data && data.options" :style="{ 'justify-content': data.options.align }">
|
|
3
|
+
<uv-stepper
|
|
4
|
+
:min="data.options.min"
|
|
5
|
+
v-model="setpperValue"
|
|
6
|
+
:max="data.options.max"
|
|
7
|
+
:integer="data.options.integer"
|
|
8
|
+
:disabled="true"
|
|
9
|
+
:inputWidth="data.options.inputWidth + 'px'"
|
|
10
|
+
:step="data.options.step"
|
|
11
|
+
/>
|
|
12
|
+
</div>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script setup lang="ts" name="NumberBoxView">
|
|
16
|
+
import { ref, watch } from 'vue';
|
|
17
|
+
import { uvStepper } from 'uv-ui';
|
|
18
|
+
const props = defineProps({
|
|
19
|
+
data: {
|
|
20
|
+
type: Object,
|
|
21
|
+
default: () => {}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
const setpperValue = ref(1);
|
|
25
|
+
watch(
|
|
26
|
+
() => props.data.options,
|
|
27
|
+
(val) => {
|
|
28
|
+
setpperValue.value = val;
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<style lang="scss" scoped>
|
|
34
|
+
.number-box-wrapper {
|
|
35
|
+
background-color: #ffffff;
|
|
36
|
+
display: flex;
|
|
37
|
+
align-items: center;
|
|
38
|
+
padding: 10px;
|
|
39
|
+
}
|
|
40
|
+
</style>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import NumberBoxView from './View.vue';
|
|
2
|
+
import NumberBoxData from './Data.vue';
|
|
3
|
+
|
|
4
|
+
const numberBoxTypeList = {
|
|
5
|
+
type: 'uvui-numberBox',
|
|
6
|
+
name: '步进器',
|
|
7
|
+
icon: 'Postcard',
|
|
8
|
+
fontIcon: 'icon-shangpinanniu_changtiaoanniu',
|
|
9
|
+
page: 'index,activity',
|
|
10
|
+
viewCom: NumberBoxView,
|
|
11
|
+
editCom: NumberBoxData,
|
|
12
|
+
limit: 0
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const numberBoxOptions = {
|
|
16
|
+
data: {},
|
|
17
|
+
options: {
|
|
18
|
+
value: 1, // 用于双向绑定的值
|
|
19
|
+
min: 1, // 最小值
|
|
20
|
+
max: Number.MAX_SAFE_INTEGER, // 最大值
|
|
21
|
+
step: 1, // 步长
|
|
22
|
+
integer: false, // 是否只能输入正整数
|
|
23
|
+
disabled: false, // 是否禁用操作
|
|
24
|
+
disabledInput: false, // 是否禁止输入框
|
|
25
|
+
inputWidth: 35, // 输入框宽度
|
|
26
|
+
showMinus: true, // 是否显示减少按钮
|
|
27
|
+
showPlus: true, // 是否显示增加按钮
|
|
28
|
+
decimalLength: 0, // 显示的小数位数
|
|
29
|
+
longPress: true, // 是否允许长按进行加减
|
|
30
|
+
color: '#323233', // 输入框文字和加减按钮图标的颜色
|
|
31
|
+
buttonSize: 30, // 按钮大小
|
|
32
|
+
bgColor: '#EBECEE', // 输入框和按钮的背景颜色
|
|
33
|
+
disablePlus: false, // 是否禁用增加按钮
|
|
34
|
+
disableMinus: false, // 是否禁用减少按钮
|
|
35
|
+
align: 'left', // 对齐方式
|
|
36
|
+
fill: false //是否铺满
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { numberBoxTypeList, numberBoxOptions };
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="banner-content" v-if="isShow">
|
|
3
|
+
<el-form label-width="100px">
|
|
4
|
+
<el-form-item label="空值占位内容">
|
|
5
|
+
<el-input v-model="options.placeholder"></el-input>
|
|
6
|
+
</el-form-item>
|
|
7
|
+
<el-form-item label="高度">
|
|
8
|
+
<el-input-number v-model="options.height"></el-input-number>
|
|
9
|
+
</el-form-item>
|
|
10
|
+
<el-form-item label="右下角按钮文字">
|
|
11
|
+
<el-input v-model="options.confirmType"></el-input>
|
|
12
|
+
</el-form-item>
|
|
13
|
+
<el-form-item label="显示字数统计">
|
|
14
|
+
<el-switch v-model="options.count"></el-switch>
|
|
15
|
+
</el-form-item>
|
|
16
|
+
<el-form-item label="自动增高">
|
|
17
|
+
<el-switch v-model="options.autoHeight"></el-switch>
|
|
18
|
+
</el-form-item>
|
|
19
|
+
<el-form-item label="显示完成按钮">
|
|
20
|
+
<el-switch v-model="options.showConfirmBar"></el-switch>
|
|
21
|
+
</el-form-item>
|
|
22
|
+
<el-form-item label="输入长度">
|
|
23
|
+
<el-input-number v-model="options.maxlength"></el-input-number>
|
|
24
|
+
</el-form-item>
|
|
25
|
+
<el-form-item label="是否铺满">
|
|
26
|
+
<el-switch v-model="options.fill"></el-switch>
|
|
27
|
+
</el-form-item>
|
|
28
|
+
<el-form-item label="边框">
|
|
29
|
+
<el-radio-group v-model="options.size">
|
|
30
|
+
<el-radio-button label="surround">四周边框</el-radio-button>
|
|
31
|
+
<el-radio-button label="none">无边框</el-radio-button>
|
|
32
|
+
<el-radio-button label="bottom">底部边框</el-radio-button>
|
|
33
|
+
</el-radio-group>
|
|
34
|
+
</el-form-item>
|
|
35
|
+
<el-form-item label="自定义样式">
|
|
36
|
+
<el-input v-model="options.customStyle" style="width: 240px" placeholder="分号分隔,如width: 100px;height: 50px;" type="textarea" clearable />
|
|
37
|
+
</el-form-item>
|
|
38
|
+
</el-form>
|
|
39
|
+
</div>
|
|
40
|
+
</template>
|
|
41
|
+
|
|
42
|
+
<script setup lang="ts" name="TextareaData">
|
|
43
|
+
import { ref, onMounted } from 'vue';
|
|
44
|
+
|
|
45
|
+
const props = defineProps({
|
|
46
|
+
data: {
|
|
47
|
+
type: Object,
|
|
48
|
+
default: () => {}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
const options = ref();
|
|
53
|
+
const data = ref();
|
|
54
|
+
const isShow = ref(false);
|
|
55
|
+
|
|
56
|
+
onMounted(() => {
|
|
57
|
+
console.log(props.data, props, '参数接收');
|
|
58
|
+
if (props.data) {
|
|
59
|
+
data.value = props.data.data;
|
|
60
|
+
options.value = props.data.options;
|
|
61
|
+
isShow.value = true;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
</script>
|
|
65
|
+
|
|
66
|
+
<style lang="scss" scoped>
|
|
67
|
+
.banner-content {
|
|
68
|
+
overflow-x: auto;
|
|
69
|
+
}
|
|
70
|
+
.item-list {
|
|
71
|
+
display: flex;
|
|
72
|
+
justify-content: space-between;
|
|
73
|
+
margin: 10px;
|
|
74
|
+
border: 1px solid #c8c8c8;
|
|
75
|
+
border-radius: 4px;
|
|
76
|
+
padding: 5px;
|
|
77
|
+
|
|
78
|
+
.l-info {
|
|
79
|
+
font-size: 12px;
|
|
80
|
+
padding-top: 4px;
|
|
81
|
+
width: calc(100% - 100px);
|
|
82
|
+
|
|
83
|
+
p {
|
|
84
|
+
margin: 5px 0 0;
|
|
85
|
+
white-space: nowrap;
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
display: flex;
|
|
88
|
+
|
|
89
|
+
.link {
|
|
90
|
+
color: #1b8bff;
|
|
91
|
+
cursor: pointer;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.text {
|
|
95
|
+
white-space: nowrap;
|
|
96
|
+
text-align: -webkit-auto;
|
|
97
|
+
text-overflow: ellipsis;
|
|
98
|
+
overflow: hidden;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.r-image {
|
|
104
|
+
text-align: right;
|
|
105
|
+
|
|
106
|
+
.el-icon-close {
|
|
107
|
+
color: #999;
|
|
108
|
+
font-size: 12px;
|
|
109
|
+
font-weight: 600;
|
|
110
|
+
margin-bottom: 6px;
|
|
111
|
+
cursor: pointer;
|
|
112
|
+
|
|
113
|
+
&:hover {
|
|
114
|
+
color: red;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.image-box {
|
|
119
|
+
width: 100px;
|
|
120
|
+
height: 70px;
|
|
121
|
+
border-radius: 5px;
|
|
122
|
+
overflow: hidden;
|
|
123
|
+
position: relative;
|
|
124
|
+
background: #fff;
|
|
125
|
+
display: flex;
|
|
126
|
+
justify-content: center;
|
|
127
|
+
align-items: center;
|
|
128
|
+
|
|
129
|
+
img {
|
|
130
|
+
max-width: 100%;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.placeholder-text {
|
|
134
|
+
color: #999;
|
|
135
|
+
font-size: 12px;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.mt-5px {
|
|
142
|
+
margin-top: 5px;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.mt-10px {
|
|
146
|
+
margin-top: 10px;
|
|
147
|
+
}
|
|
148
|
+
</style>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="textarea_box" v-if="data && data.options">
|
|
3
|
+
<el-input
|
|
4
|
+
v-model="textarea"
|
|
5
|
+
:placeholder="data.options.placeholder || '请输入'"
|
|
6
|
+
:style="{ width: '100%', height: data.options.height }"
|
|
7
|
+
:show-word-limit="data.options.count"
|
|
8
|
+
:autosize="data.options.autoHeight"
|
|
9
|
+
:maxlength="data.options.maxlength"
|
|
10
|
+
:rows="2"
|
|
11
|
+
type="textarea"
|
|
12
|
+
/>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<script setup lang="ts" name="TextareaView">
|
|
17
|
+
import { ref, watch } from 'vue';
|
|
18
|
+
|
|
19
|
+
const props = defineProps({
|
|
20
|
+
data: {
|
|
21
|
+
type: Object,
|
|
22
|
+
default: () => {}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const textarea = ref('');
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<style lang="scss" scoped>
|
|
29
|
+
// 提取data.options.customStyle 样式
|
|
30
|
+
|
|
31
|
+
.textarea_box {
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
margin-top: 10px;
|
|
35
|
+
}
|
|
36
|
+
</style>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import TextareaView from './View.vue';
|
|
2
|
+
import TextareaData from './Data.vue';
|
|
3
|
+
|
|
4
|
+
const textareaTypeList = {
|
|
5
|
+
type: 'uvui-textarea',
|
|
6
|
+
name: '文本域',
|
|
7
|
+
icon: 'Textarea',
|
|
8
|
+
fontIcon: 'icon-24gl-grid',
|
|
9
|
+
page: 'index,activity',
|
|
10
|
+
viewCom: TextareaView,
|
|
11
|
+
editCom: TextareaData,
|
|
12
|
+
limit: 0
|
|
13
|
+
};
|
|
14
|
+
const textareaOptions = {
|
|
15
|
+
type: 'uvui-textarea',
|
|
16
|
+
data: {},
|
|
17
|
+
options: {
|
|
18
|
+
placeholder: '请输入', //空值占位内容
|
|
19
|
+
height: '70', //高度
|
|
20
|
+
confirmType: 'done', //右下角按钮文字
|
|
21
|
+
count: false, //是否显示字数统计
|
|
22
|
+
autoHeight: false, //是否自动增高
|
|
23
|
+
showConfirmBar: false, //是否显示”完成“按钮那一栏
|
|
24
|
+
maxlength: 140, //最大输入长度
|
|
25
|
+
border: 'surround', //边框,surround-四周边框,none-无边框,bottom-底部边框
|
|
26
|
+
customStyle: '', //自定义样式
|
|
27
|
+
fill: true //组件是否铺满父容器
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { textareaOptions, textareaTypeList };
|