feat: 首次提交

This commit is contained in:
peerless_hero
2023-08-17 21:28:49 +08:00
parent 36f80fb971
commit ec1e5e16cd
571 changed files with 95322 additions and 0 deletions

View File

@ -0,0 +1,326 @@
<!--本文件由FirstUI授权予新疆天衡创新研究院有限公司手机号1 8 6 140 7 254 9身份证尾号5A07X5专用请尊重知识产权勿私下传播违者追究法律责任-->
<template>
<view class="fui-card__wrap"
:class="{'fui-card__full':full,'fui-card__border':showBorder,'fui-card__border-radius':showBorder && !isNvue && !full}"
:style="{marginTop:margin[0] || 0,marginRight:full?0: (margin[1] || 0),marginBottom:margin[2] || margin[0] || 0,marginLeft:full?0:(margin[3] || margin[1] || 0),background:background,borderRadius:full?0:radius,'box-shadow':showBorder?'none':shadow,borderColor:isNvue?borderColor:'transparent'}"
@tap="handleClick">
<view class="fui-card__header" v-if="tag || title || src" :class="{'fui-card__header-line':headerLine}"
:style="{'border-top-left-radius':full?0:radius,'border-top-right-radius':full?0:radius,'border-bottom-color':isNvue && headerLine?lineColor:'transparent',paddingTop:padding[0] || 0,paddingRight:padding[1]||0,paddingBottom:padding[2] || padding[0] || 0,paddingLeft:padding[3] || padding[1] || 0,background:headerBackground}">
<view class="fui-card__header-left">
<image :src="src" class="fui-card__header-thumb" v-if="src"
:style="{height:height+'rpx',width:width+'rpx',borderRadius:imageRadius}"></image>
<text class="fui-card__header-title" :style="{fontSize:size+'rpx',color:color}"
v-if="title">{{title}}</text>
</view>
<view class="fui-card__header-right" v-if="tag">
<text :style="{fontSize:tagSize+'rpx',color:tagColor}">{{tag}}</text>
</view>
</view>
<view class="fui-card__body" :class="{'fui-card__header-line':footerLine}">
<slot></slot>
</view>
<view class="fui-card__footer"
:style="{'border-bottom-left-radius':full?0:radius,'border-bottom-right-radius':full?0:radius}">
<slot name="footer"></slot>
</view>
</view>
</template>
<script>
export default {
name: "fui-card",
emits: ['click'],
props: {
//card margin值[上、右、下、左]
margin: {
type: Array,
default () {
return ['0', '32rpx']
}
},
//是否通栏为true时margin-leftmargin-right失效
full: {
type: Boolean,
default: false
},
//card 背景色
background: {
type: String,
default: '#fff'
},
//card 圆角非nvue下showBorder为false时生效
radius: {
type: String,
default: '16rpx'
},
//阴影nvue下
shadow: {
type: String,
default: '0 2rpx 4rpx 0 rgba(2, 4, 38, 0.05)'
},
//是否显示card 边框为true时box-shadow失效
showBorder: {
type: Boolean,
default: false
},
//边框颜色仅nvue下生效
borderColor: {
type: String,
default: 'red'
},
headerBackground: {
type: String,
default: '#fff'
},
//是否需要header底部线条
headerLine: {
type: Boolean,
default: true
},
//是否需要内容与footer之间线条
footerLine: {
type: Boolean,
default: false
},
//header 底部线条颜色仅nvue有效非nvue改变颜色使用css变量
lineColor: {
type: String,
default: '#EEEEEE'
},
//header padding值[上、右、下、左]
padding: {
type: Array,
default () {
return ['20rpx', '20rpx']
}
},
//头像,图标图片地址
src: {
type: String,
default: ''
},
//图片宽度单位rpx
width: {
type: [Number, String],
default: 64
},
//图片高度单位rpx
height: {
type: [Number, String],
default: 64
},
//图片圆角
imageRadius: {
type: String,
default: '8rpx'
},
title: {
type: String,
default: ''
},
size: {
type: [Number, String],
default: 30
},
color: {
type: String,
default: '#7F7F7F'
},
tag: {
type: String,
default: ''
},
tagSize: {
type: [Number, String],
default: 24
},
tagColor: {
type: String,
default: '#b2b2b2'
},
index: {
type: Number,
default: 0
}
},
data() {
let isNvue = false;
// #ifdef APP-NVUE
isNvue = true;
// #endif
return {
isNvue
};
},
methods: {
handleClick() {
this.$emit('click', {
index: this.index
})
}
}
}
</script>
<style scoped>
.fui-card__wrap {
/* #ifndef APP-NVUE */
flex: 1;
box-sizing: border-box;
/* #endif */
overflow: hidden;
}
/* #ifndef APP-NVUE */
.fui-card__full {
margin-left: 0 !important;
margin-right: 0 !important;
border-radius: 0 !important;
}
/* #endif */
/* #ifndef APP-NVUE */
.fui-card__full::after {
border-radius: 0 !important;
}
/* #endif */
.fui-card__border {
position: relative;
box-shadow: none !important;
/* #ifdef APP-NVUE */
border-width: 0.5px;
border-style: solid;
/* #endif */
}
/* #ifndef APP-NVUE */
.fui-card__border-radius {
border-radius: 16rpx !important;
}
.fui-card__border::after {
content: ' ';
position: absolute;
height: 200%;
width: 200%;
border: 1px solid var(--fui-color-border, #EEEEEE);
transform-origin: 0 0;
-webkit-transform-origin: 0 0;
-webkit-transform: scale(0.5);
transform: scale(0.5);
left: 0;
top: 0;
border-radius: 32rpx;
box-sizing: border-box;
pointer-events: none;
}
/* #endif */
.fui-card__header {
/* #ifndef APP-NVUE */
width: 100%;
display: flex;
box-sizing: border-box;
overflow: hidden;
/* #endif */
/* #ifdef APP-NVUE */
flex: 1;
/* #endif */
flex-direction: row;
align-items: center;
justify-content: space-between;
position: relative;
}
.fui-card__header-left {
/* #ifndef APP-NVUE */
display: flex;
white-space: nowrap;
/* #endif */
flex-direction: row;
align-items: center;
}
.fui-card__header-line {
position: relative;
/* #ifdef APP-NVUE */
border-bottom-width: 0.5px;
border-bottom-style: solid;
border-bottom-color: #EEEEEE;
/* #endif */
}
/* #ifndef APP-NVUE */
.fui-card__header-line::after {
content: '';
position: absolute;
border-bottom: 1px solid var(--fui-color-border, #EEEEEE);
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
transform-origin: 0 100%;
bottom: 0;
right: 0;
left: 0;
pointer-events: none;
}
/* #endif */
.fui-card__header-thumb {
/* #ifndef APP-NVUE */
vertical-align: middle;
/* #endif */
margin-right: 20rpx;
/* #ifndef APP-NVUE */
flex-shrink: 0;
/* #endif */
}
.fui-card__header-title {
/* #ifndef APP-NVUE */
display: inline-block;
vertical-align: middle;
max-width: 380rpx;
/* #endif */
/* #ifndef APP-NVUE */
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
/* #endif */
/* #ifdef APP-NVUE */
lines: 1;
/* #endif */
}
.fui-card__header-right {
text-align: right;
/* #ifndef APP-NVUE */
flex-shrink: 0;
/* #endif */
}
.fui-card__body {
/* #ifdef APP-NVUE */
flex: 1;
/* #endif */
/* #ifndef APP-NVUE */
width: 100%;
box-sizing: border-box;
/* #endif */
}
.fui-card__footer {
/* #ifdef APP-NVUE */
flex: 1;
/* #endif */
/* #ifndef APP-NVUE */
width: 100%;
box-sizing: border-box;
/* #endif */
}
</style>