lxui-uni 0.0.2 → 0.0.3
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/components/lx-header/lx-header.vue +250 -0
- package/{lib → components/lx-hello}/lx-hello.vue +5 -0
- package/components/lx-image/index.ts +3 -0
- package/components/lx-image/lx-image.vue +102 -0
- package/components/lx-list/lx-list.vue +162 -0
- package/components/lx-list-state/lx-list-state.vue +92 -0
- package/components/lx-operate-bottom/lx-operate-bottom.vue +107 -0
- package/components/lx-submit-btn/lx-submit-btn.vue +61 -0
- package/components/lx-upload/lx-upload.vue +192 -0
- package/index.ts +11 -4
- package/package.json +2 -2
- package/theme.scss +228 -0
- package/types/components.d.ts +23 -0
- package/util/index.ts +294 -0
- package/util/useListLoadClass.ts +143 -0
- package/vite.config.ts +1 -0
- package/lib/lx-image.vue +0 -82
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
/** * 传参说明
|
|
3
|
+
* @param imgUrl 默认图
|
|
4
|
+
* @param imgIsShow 默认图是否展示
|
|
5
|
+
* @param tips 默认提示语
|
|
6
|
+
* */
|
|
7
|
+
defineProps({
|
|
8
|
+
// 分页加载数据有无下一页
|
|
9
|
+
isNoData: {
|
|
10
|
+
type: Boolean,
|
|
11
|
+
default: false
|
|
12
|
+
},
|
|
13
|
+
// 正在加载中
|
|
14
|
+
isLoading: {
|
|
15
|
+
type: Boolean,
|
|
16
|
+
default: false
|
|
17
|
+
},
|
|
18
|
+
// 暂无数据
|
|
19
|
+
isEmpty: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
default: false
|
|
22
|
+
},
|
|
23
|
+
// 暂无数据使用
|
|
24
|
+
imgUrl: {
|
|
25
|
+
type: String,
|
|
26
|
+
default: 'data:image/png;base64,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'
|
|
27
|
+
},
|
|
28
|
+
imgIsShow: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: true
|
|
31
|
+
},
|
|
32
|
+
tips: {
|
|
33
|
+
type: String,
|
|
34
|
+
default: '暂无数据~'
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
</script>
|
|
38
|
+
|
|
39
|
+
<template>
|
|
40
|
+
<view class="list_state_box">
|
|
41
|
+
<view class="flex empty column" v-if="isEmpty">
|
|
42
|
+
<slot>
|
|
43
|
+
<view class="img" v-if="imgIsShow">
|
|
44
|
+
<image :src="imgUrl" mode="widthFix"></image>
|
|
45
|
+
</view>
|
|
46
|
+
</slot>
|
|
47
|
+
<view class="txt">
|
|
48
|
+
{{ tips }}
|
|
49
|
+
</view>
|
|
50
|
+
</view>
|
|
51
|
+
<view class="list_state" v-else>
|
|
52
|
+
<view class="txt" v-if="isLoading">正在努力加载更多~</view>
|
|
53
|
+
<view class="txt" v-else-if="isNoData && isNoData == true">已加载全部~</view>
|
|
54
|
+
<view class="txt" v-if="!isLoading && !isNoData">上拉加载更多~</view>
|
|
55
|
+
</view>
|
|
56
|
+
</view>
|
|
57
|
+
</template>
|
|
58
|
+
<style lang="scss">
|
|
59
|
+
.list_state_box {
|
|
60
|
+
.list_state {
|
|
61
|
+
margin: 30rpx 0;
|
|
62
|
+
|
|
63
|
+
.txt {
|
|
64
|
+
text-align: center;
|
|
65
|
+
color: #666;
|
|
66
|
+
margin: 10rpx 0;
|
|
67
|
+
font-size: 28rpx;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.empty {
|
|
72
|
+
min-height: 60vh;
|
|
73
|
+
.txt {
|
|
74
|
+
font-size: 26rpx;
|
|
75
|
+
color: #666;
|
|
76
|
+
text-align: center;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.img {
|
|
80
|
+
width: 70%;
|
|
81
|
+
// max-height: 300rpx;
|
|
82
|
+
margin: 0 auto;
|
|
83
|
+
text-align: center;
|
|
84
|
+
|
|
85
|
+
image {
|
|
86
|
+
width: 100%;
|
|
87
|
+
// height: 100%;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
</style>
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
/*
|
|
3
|
+
* @description: 底部安全距离盒子
|
|
4
|
+
* @fileName: lx-safety-bottom.vue
|
|
5
|
+
* @params
|
|
6
|
+
* @author: lxx
|
|
7
|
+
* @date: 2024-02-26 11:24:59"
|
|
8
|
+
* @version: V1.0.0
|
|
9
|
+
*/
|
|
10
|
+
interface PropsInt {
|
|
11
|
+
leftTxt: string
|
|
12
|
+
rightConfirmTxt: string
|
|
13
|
+
rightCancelTxt: string
|
|
14
|
+
discount: string
|
|
15
|
+
amount: string
|
|
16
|
+
}
|
|
17
|
+
withDefaults(defineProps<PropsInt>(), {
|
|
18
|
+
leftTxt: '',
|
|
19
|
+
rightConfirmTxt: '',
|
|
20
|
+
rightCancelTxt: '',
|
|
21
|
+
discount: '',
|
|
22
|
+
amount: ''
|
|
23
|
+
})
|
|
24
|
+
const emit = defineEmits(['confirm', 'cancel'])
|
|
25
|
+
const confirmClick = () => emit('confirm')
|
|
26
|
+
const cancelClick = () => emit('cancel')
|
|
27
|
+
</script>
|
|
28
|
+
<template>
|
|
29
|
+
<view class="lx_safety_bottom flex-center-between">
|
|
30
|
+
<view class="bottom_left_box">
|
|
31
|
+
<slot name="left">
|
|
32
|
+
<view class="amount_box flex-center" v-if="discount">
|
|
33
|
+
<view class="amount">¥{{ amount }}</view>
|
|
34
|
+
<view class="discount">¥{{ discount }}</view>
|
|
35
|
+
</view>
|
|
36
|
+
<view v-if="leftTxt" class="left_txt text-ellipsis">{{ leftTxt }}</view>
|
|
37
|
+
</slot>
|
|
38
|
+
</view>
|
|
39
|
+
<view class="bottom_right_box">
|
|
40
|
+
<slot name="right">
|
|
41
|
+
<view class="flex">
|
|
42
|
+
<view class="cancel_btn" v-if="rightCancelTxt" @click="cancelClick">{{ rightCancelTxt }}</view>
|
|
43
|
+
<view class="sub_btn" v-if="rightConfirmTxt" @click="confirmClick">{{ rightConfirmTxt }}</view>
|
|
44
|
+
</view>
|
|
45
|
+
</slot>
|
|
46
|
+
</view>
|
|
47
|
+
</view>
|
|
48
|
+
<view class="lx_safety_bottom_mark"></view>
|
|
49
|
+
</template>
|
|
50
|
+
<style lang="scss" scoped>
|
|
51
|
+
.lx_safety_bottom_mark {
|
|
52
|
+
/* 兼容 iOS < 11.2 */
|
|
53
|
+
padding-bottom: constant(safe-area-inset-bottom);
|
|
54
|
+
/* 兼容 iOS >= 11.2 */
|
|
55
|
+
padding-bottom: calc(env(safe-area-inset-bottom) + 6rpx);
|
|
56
|
+
height: 100rpx;
|
|
57
|
+
// box-sizing: border-box;
|
|
58
|
+
}
|
|
59
|
+
.lx_safety_bottom {
|
|
60
|
+
position: fixed;
|
|
61
|
+
left: 0;
|
|
62
|
+
width: calc(100% - 72rpx);
|
|
63
|
+
bottom: 0;
|
|
64
|
+
/* 兼容 iOS < 11.2 */
|
|
65
|
+
padding-bottom: constant(safe-area-inset-bottom);
|
|
66
|
+
/* 兼容 iOS >= 11.2 */
|
|
67
|
+
padding-bottom: calc(env(safe-area-inset-bottom) + 6rpx);
|
|
68
|
+
// height: 100rpx;
|
|
69
|
+
background-color: rgb(255, 255, 255);
|
|
70
|
+
padding-left: 36rpx;
|
|
71
|
+
padding-right: 36rpx;
|
|
72
|
+
padding-top: 10rpx;
|
|
73
|
+
// box-sizing: border-box;
|
|
74
|
+
.bottom_left_box {
|
|
75
|
+
// max-width: 70%;
|
|
76
|
+
// 普通文本
|
|
77
|
+
.left_txt {
|
|
78
|
+
font-size: $font-size-40;
|
|
79
|
+
font-weight: 700;
|
|
80
|
+
color: $main-color;
|
|
81
|
+
}
|
|
82
|
+
// 金额+优惠金额
|
|
83
|
+
.amount_box {
|
|
84
|
+
font-size: $font-size-40;
|
|
85
|
+
.amount {
|
|
86
|
+
font-weight: 700;
|
|
87
|
+
color: $main-color;
|
|
88
|
+
}
|
|
89
|
+
.discount {
|
|
90
|
+
padding-left: 30rpx;
|
|
91
|
+
text-decoration-line: line-through;
|
|
92
|
+
color: rgba(166, 166, 166, 1);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
.bottom_right_box {
|
|
97
|
+
.sub_btn {
|
|
98
|
+
@include btn-solid;
|
|
99
|
+
}
|
|
100
|
+
.cancel_btn {
|
|
101
|
+
@include btn-line;
|
|
102
|
+
margin-right: 8rpx;
|
|
103
|
+
border-radius: 8rpx;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
</style>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
/*
|
|
3
|
+
* @description: 提交按钮组件
|
|
4
|
+
* @fileName: lx-submit-btn.vue
|
|
5
|
+
* @params
|
|
6
|
+
* @author: lxx 2399270194@qq.com
|
|
7
|
+
* @date: 2024-02-27 14:58:31"
|
|
8
|
+
* @version: V1.0.0
|
|
9
|
+
*/
|
|
10
|
+
interface PropsInt {
|
|
11
|
+
text: string
|
|
12
|
+
loading?: boolean
|
|
13
|
+
}
|
|
14
|
+
withDefaults(defineProps<PropsInt>(), {
|
|
15
|
+
text: '提交',
|
|
16
|
+
loading: false
|
|
17
|
+
})
|
|
18
|
+
const emit = defineEmits(['submit'])
|
|
19
|
+
</script>
|
|
20
|
+
<template>
|
|
21
|
+
<view class="submit_btn_box">
|
|
22
|
+
<button class="submit_btn" :loading="loading" @click="emit('submit')">{{ text }}</button>
|
|
23
|
+
</view>
|
|
24
|
+
<view class="submit_mark_box"></view>
|
|
25
|
+
</template>
|
|
26
|
+
<style lang="scss" scoped>
|
|
27
|
+
.submit_mark_box {
|
|
28
|
+
padding-bottom: constant(safe-area-inset-bottom);
|
|
29
|
+
/* 兼容 iOS >= 11.2 */
|
|
30
|
+
padding-bottom: env(safe-area-inset-bottom);
|
|
31
|
+
padding-top: 10rpx;
|
|
32
|
+
height: 92rpx;
|
|
33
|
+
}
|
|
34
|
+
.submit_btn_box {
|
|
35
|
+
padding: 0 28rpx;
|
|
36
|
+
/* 兼容 iOS < 11.2 */
|
|
37
|
+
padding-bottom: constant(safe-area-inset-bottom);
|
|
38
|
+
/* 兼容 iOS >= 11.2 */
|
|
39
|
+
padding-bottom: env(safe-area-inset-bottom);
|
|
40
|
+
padding-top: 10rpx;
|
|
41
|
+
position: fixed;
|
|
42
|
+
bottom: 10rpx;
|
|
43
|
+
left: 50%;
|
|
44
|
+
transform: translateX(-50%);
|
|
45
|
+
width: 100%;
|
|
46
|
+
|
|
47
|
+
.submit_btn {
|
|
48
|
+
margin: 0 auto;
|
|
49
|
+
width: 96%;
|
|
50
|
+
box-sizing: border-box;
|
|
51
|
+
border-radius: 8rpx;
|
|
52
|
+
background: $main-color;
|
|
53
|
+
font-size: $font-size-28;
|
|
54
|
+
font-weight: 400;
|
|
55
|
+
line-height: 92rpx;
|
|
56
|
+
text-align: center;
|
|
57
|
+
color: rgba(255, 255, 255, 1);
|
|
58
|
+
height: 92rpx;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
</style>
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
/*
|
|
3
|
+
* @description: 上传组件
|
|
4
|
+
* @fileName: lx-upload.vue
|
|
5
|
+
* @params
|
|
6
|
+
* @author: lxx
|
|
7
|
+
* @date: 2024-03-08 14:08:27"
|
|
8
|
+
* @version: V1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import { getCurrentInstance, onMounted, ref } from 'vue'
|
|
11
|
+
const baseUrl = import.meta.env.VITE_APP_BASE_URL
|
|
12
|
+
const delIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqBAMAAAA37dRoAAAAD1BMVEVHcEz8/Pz7+/v7+/v8/PxqU4qsAAAABHRSTlMAv39Ao+r7HgAAAOxJREFUeJx9U9sRhCAM5GEB55AC0LEAnbkCFOm/phOS5cDX/jism80DohTDDn3sx1k1WChm+IaMQEWbGG9oqtjtGp+wS/rYggvpTuzn4lqcTTzDw2CXgAX5ppxBS34Si3QK4j4rzR8jTppDLVfRwYlypR2zX1Su8S+JptImzezzZ5PYlo42dMYz0bFleSYEth6gxuGBpfpm6OQbbrMdUlPEQXpLUvIQg81EgHjlv3KGWNgPH4OM2/NAMXXPIjh5pCEJyemCFDiw7dPNX15J02bB+vL6pD3Avb7qhw2oaFcvkdCbaxfOjscWOmzhD3EZlfmDEVdKAAAAAElFTkSuQmCC'
|
|
13
|
+
const addIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAAwBAMAAACoMpTzAAAAD1BMVEVHcEzDw8PFxcXExMTExMTLnAMjAAAABHRSTlMAQH+/MHAgfgAAAQlJREFUeJyNlNsZgzAIhYl2AKMOEK0D2OoAGtl/pnqLQDB+5Qn9BeFAAhCsxMM+oG082aJRjsGcYvXFfDLlTdIM8S6psavVjM3bC7uhDu/Ny2TSHNRJ5ll96BtrB2T1kt/slVX0AlTllWakRqeY0zIAD2uHpmCBwMK6U8wsYtfn8+pJxgRyV9KTTTTA1X0J1tMAKcXJCjBMBMmifUmyXrHXxSbJloiNqTidM/uLudAPRHXzXkmXjnTJYz1z+l0dz8GMIWWQls02C46R89uS7hv2ZUdR7IspxXED1nFqz3Ap1Cmlln28uowdkYYQZ4hD++aPgkX2yMYkWpJXwbb9T3fB0x0CYG9tbfYHtAj7ZE5t1ToAAAAASUVORK5CYII='
|
|
14
|
+
interface propsInt {
|
|
15
|
+
width: string // 盒子宽度
|
|
16
|
+
radius: string // 盒子圆角
|
|
17
|
+
spacing: number // 间隔
|
|
18
|
+
rowNum: number // 一行的盒子数
|
|
19
|
+
limit: number // 最多上传个数
|
|
20
|
+
modelValue: string[] | string // 上传的图片
|
|
21
|
+
}
|
|
22
|
+
const props = withDefaults(defineProps<propsInt>(), {
|
|
23
|
+
radius: '16rpx',
|
|
24
|
+
spacing: 10,
|
|
25
|
+
rowNum: 3,
|
|
26
|
+
limit: 3,
|
|
27
|
+
modelValue: () => []
|
|
28
|
+
})
|
|
29
|
+
const emit = defineEmits(['update:modelValue'])
|
|
30
|
+
// 上传
|
|
31
|
+
const uploadAdd = () => {
|
|
32
|
+
uni.chooseImage({
|
|
33
|
+
count: 1, //默认9
|
|
34
|
+
// sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
|
35
|
+
// sourceType: ['album'], //从相册选择
|
|
36
|
+
success: (chooseImageRes) => {
|
|
37
|
+
const tempFilePaths = chooseImageRes.tempFilePaths
|
|
38
|
+
uni.uploadFile({
|
|
39
|
+
url: baseUrl + '/api/v1.Resources/upload',
|
|
40
|
+
filePath: tempFilePaths[0],
|
|
41
|
+
name: 'file',
|
|
42
|
+
success: (uploadFileRes: any) => {
|
|
43
|
+
const { data, code } = JSON.parse(uploadFileRes.data)
|
|
44
|
+
if (code === 200) {
|
|
45
|
+
// 如果是一张图片传入数据可以是字符串
|
|
46
|
+
if (props.limit === 1) {
|
|
47
|
+
emit('update:modelValue', data)
|
|
48
|
+
} else {
|
|
49
|
+
// eslint-disable-next-line prettier/prettier
|
|
50
|
+
(props.modelValue as string[]).push(data)
|
|
51
|
+
emit('update:modelValue', props.modelValue)
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
uni.showToast({
|
|
55
|
+
title: '上传失败',
|
|
56
|
+
icon: 'none',
|
|
57
|
+
mask: true
|
|
58
|
+
})
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
// 删除
|
|
66
|
+
const uploadDel = (index?: number) => {
|
|
67
|
+
if (props.limit === 1) {
|
|
68
|
+
emit('update:modelValue', '')
|
|
69
|
+
} else {
|
|
70
|
+
// eslint-disable-next-line prettier/prettier, no-extra-semi
|
|
71
|
+
;(props.modelValue as string[]).splice(index as number, 1)
|
|
72
|
+
emit('update:modelValue', props.modelValue)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// 盒子宽度
|
|
76
|
+
const boxWidth = ref('')
|
|
77
|
+
onMounted(() => {
|
|
78
|
+
const query = uni.createSelectorQuery().in(getCurrentInstance())
|
|
79
|
+
query
|
|
80
|
+
.select('.lx_upload_box')
|
|
81
|
+
.boundingClientRect((data: any) => {
|
|
82
|
+
// console.log('得到布局位置信息' + data)
|
|
83
|
+
// console.log('节点离页面顶部的距离为' + data.width, Math.floor(data.width))
|
|
84
|
+
// 没有传大小就计算大小
|
|
85
|
+
if (!props.width) {
|
|
86
|
+
boxWidth.value = Math.floor((data.width - props.spacing * (props.rowNum - 1)) / props.rowNum) + 'px'
|
|
87
|
+
console.log(boxWidth.value, ' boxWidth.value')
|
|
88
|
+
} else {
|
|
89
|
+
boxWidth.value = props.width
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
|
+
.exec()
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
const previewImage = (urlsList: string[], index?: number) => {
|
|
96
|
+
// 预览图片
|
|
97
|
+
const urls = urlsList.map((item: string) => {
|
|
98
|
+
if (item && item.indexOf('http') === -1) {
|
|
99
|
+
return baseUrl + item
|
|
100
|
+
} else {
|
|
101
|
+
return item
|
|
102
|
+
}
|
|
103
|
+
})
|
|
104
|
+
const uniqueValues = new Set(urls)
|
|
105
|
+
// 如果预览的图片地址相同,则直接预览,预览索引设置无效
|
|
106
|
+
if (uniqueValues.size === 1) {
|
|
107
|
+
uni.previewImage({
|
|
108
|
+
urls
|
|
109
|
+
})
|
|
110
|
+
} else {
|
|
111
|
+
uni.previewImage({
|
|
112
|
+
current: index,
|
|
113
|
+
urls
|
|
114
|
+
})
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
</script>
|
|
118
|
+
<template>
|
|
119
|
+
<view class="lx_upload_box flex-center-start wrap">
|
|
120
|
+
<view
|
|
121
|
+
v-if="limit === 1 && modelValue"
|
|
122
|
+
class="upload_item_box"
|
|
123
|
+
:style="{
|
|
124
|
+
width: boxWidth,
|
|
125
|
+
height: boxWidth,
|
|
126
|
+
borderRadius: radius
|
|
127
|
+
}"
|
|
128
|
+
>
|
|
129
|
+
<image :src="baseUrl + modelValue" mode="aspectFill" @click="previewImage([modelValue as string])"></image>
|
|
130
|
+
<view class="upload_close_icon flex" @click="uploadDel()">
|
|
131
|
+
<image :src="delIcon" mode="aspectFit" />
|
|
132
|
+
</view>
|
|
133
|
+
</view>
|
|
134
|
+
<view
|
|
135
|
+
v-else
|
|
136
|
+
class="upload_item_box"
|
|
137
|
+
:style="{
|
|
138
|
+
width: boxWidth,
|
|
139
|
+
height: boxWidth,
|
|
140
|
+
borderRadius: radius,
|
|
141
|
+
marginRight: (index + 1) % props.rowNum === 0 ? 0 : spacing + 'px',
|
|
142
|
+
marginBottom: spacing + 'px'
|
|
143
|
+
}"
|
|
144
|
+
v-for="(item, index) in modelValue"
|
|
145
|
+
:key="index"
|
|
146
|
+
>
|
|
147
|
+
<image :src="baseUrl + item" mode="aspectFill" @click="previewImage(modelValue as string[], index)"></image>
|
|
148
|
+
<view class="upload_close_icon flex" @click="uploadDel(index)">
|
|
149
|
+
<image :src="delIcon" mode="aspectFit" />
|
|
150
|
+
</view>
|
|
151
|
+
</view>
|
|
152
|
+
|
|
153
|
+
<view
|
|
154
|
+
v-if="modelValue.length < limit"
|
|
155
|
+
class="upload_add_box flex"
|
|
156
|
+
@click="uploadAdd"
|
|
157
|
+
:style="{ width: boxWidth, height: boxWidth, borderRadius: radius, marginBottom: spacing + 'px' }"
|
|
158
|
+
>
|
|
159
|
+
<view class="upload_add">
|
|
160
|
+
<image :src="addIcon" mode="aspectFit"></image>
|
|
161
|
+
</view>
|
|
162
|
+
</view>
|
|
163
|
+
</view>
|
|
164
|
+
</template>
|
|
165
|
+
<style lang="scss" scoped>
|
|
166
|
+
.lx_upload_box {
|
|
167
|
+
.upload_add_box {
|
|
168
|
+
background: rgba(240, 240, 240, 1);
|
|
169
|
+
.upload_add {
|
|
170
|
+
width: 36rpx;
|
|
171
|
+
height: 36rpx;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// 上传的图片
|
|
175
|
+
.upload_item_box {
|
|
176
|
+
overflow: hidden;
|
|
177
|
+
box-sizing: border-box;
|
|
178
|
+
position: relative;
|
|
179
|
+
.upload_close_icon {
|
|
180
|
+
background-color: rgba($color: #000000, $alpha: 0.3);
|
|
181
|
+
box-shadow: 0 0 8rpx 0 rgba(0, 0, 0, 0.5);
|
|
182
|
+
border-radius: 50%;
|
|
183
|
+
width: 28rpx;
|
|
184
|
+
height: 28rpx;
|
|
185
|
+
position: absolute;
|
|
186
|
+
top: 8rpx;
|
|
187
|
+
right: 8rpx;
|
|
188
|
+
z-index: 5;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
</style>
|
package/index.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import type { App } from 'vue'
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import lxHeader from './components/lx-header/lx-header.vue'
|
|
3
|
+
import lxHello from './components/lx-hello/lx-hello.vue'
|
|
4
|
+
import lxImage from './components/lx-image/lx-image.vue'
|
|
5
|
+
import lxList from './components/lx-list/lx-list.vue'
|
|
6
|
+
import lxListState from './components/lx-list-state/lx-list-state.vue'
|
|
7
|
+
import lxOperateBottom from './components/lx-operate-bottom/lx-operate-bottom.vue'
|
|
8
|
+
import lxSubmitBtn from './components/lx-submit-btn/lx-submit-btn.vue'
|
|
9
|
+
import lxUpload from './components/lx-upload/lx-upload.vue'
|
|
10
|
+
|
|
11
|
+
export { lxHello, lxImage, lxHeader, lxList, lxListState, lxOperateBottom, lxSubmitBtn, lxUpload }
|
|
12
|
+
const coms = [ lxHello, lxImage, lxHeader, lxList, lxListState, lxOperateBottom, lxSubmitBtn, lxUpload ]
|
|
6
13
|
export default {
|
|
7
14
|
install(app: App){
|
|
8
15
|
coms.forEach((commponent) => {
|