Browse Source
Merge branch 'devlop' of http://git.qniao.cn/dengxiongfei/paper-shopkeeper-app into devlop
devlop
Merge branch 'devlop' of http://git.qniao.cn/dengxiongfei/paper-shopkeeper-app into devlop
devlop
43 changed files with 5433 additions and 2948 deletions
Unified View
Diff Options
-
29apis/trade.js
-
35pages.json
-
121pages/add-paper/index.vue
-
2pages/client-detail/basic-information.vue
-
528pages/mall/index.vue
-
464pages/my-offer/index.vue
-
577pages/quotation-details/index.vue
-
1386pages/submit-quotation/index.vue
-
85pages/switching-mall/index.vue
-
2pages/trade/index.vue
-
471pages/trade/orderList.vue
-
570pages/trade/quotationList.vue
-
BINstatic/imgs/trade/camera.png
-
39uni_modules/uni-data-checkbox/changelog.md
-
817uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue
-
87uni_modules/uni-data-checkbox/package.json
-
18uni_modules/uni-data-checkbox/readme.md
-
17uni_modules/uni-fab/changelog.md
-
475uni_modules/uni-fab/components/uni-fab/uni-fab.vue
-
87uni_modules/uni-fab/package.json
-
9uni_modules/uni-fab/readme.md
-
128uni_modules/uni-icons/components/uni-icons/uni-icons.vue
-
20uni_modules/uni-load-more/changelog.md
-
2uni_modules/uni-load-more/components/uni-load-more/i18n/en.json
-
14uni_modules/uni-load-more/components/uni-load-more/i18n/index.js
-
2uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json
-
2uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json
-
788uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue
-
170uni_modules/uni-load-more/package.json
-
8uni_modules/uni-scss/changelog.md
-
2uni_modules/uni-scss/index.scss
-
164uni_modules/uni-scss/package.json
-
14uni_modules/uni-scss/styles/index.scss
-
4uni_modules/uni-scss/styles/setting/_border.scss
-
132uni_modules/uni-scss/styles/setting/_color.scss
-
110uni_modules/uni-scss/styles/setting/_radius.scss
-
110uni_modules/uni-scss/styles/setting/_space.scss
-
334uni_modules/uni-scss/styles/setting/_styles.scss
-
48uni_modules/uni-scss/styles/setting/_text.scss
-
286uni_modules/uni-scss/styles/setting/_variables.scss
-
38uni_modules/uni-scss/styles/tools/functions.scss
-
62uni_modules/uni-scss/theme.scss
-
124uni_modules/uni-scss/variables.scss
@ -0,0 +1,121 @@ |
|||||
|
<template> |
||||
|
<view class="add-paper"> |
||||
|
<view> |
||||
|
<uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title=""> |
||||
|
<view class="add-paper-title">{{title}}</view> |
||||
|
<view slot="left"></view> |
||||
|
<view slot="right"></view> |
||||
|
</uni-nav-bar> |
||||
|
</view> |
||||
|
<view class=""> |
||||
|
<view class="add-paper-list"> |
||||
|
<view > |
||||
|
<text class="add-paper-start">*</text> |
||||
|
<text class="add-paper-text">纸品名称</text> |
||||
|
</view> |
||||
|
<view class="add-paper-input"> |
||||
|
<uni-easyinput :placeholderStyle='placeholderStyle' :inputBorder="false" v-model="value" placeholder="请输入纸品名称"></uni-easyinput> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="add-paper-border"></view> |
||||
|
<view class="add-paper-list"> |
||||
|
<view > |
||||
|
<text class="add-paper-start">*</text> |
||||
|
<text class="add-paper-text">纸厂信息</text> |
||||
|
</view> |
||||
|
<view class="add-paper-input"> |
||||
|
<uni-easyinput :placeholderStyle='placeholderStyle' :inputBorder="false" v-model="value" placeholder="请输入纸厂信息"></uni-easyinput> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="add-paper-border"></view> |
||||
|
<view class="add-paper-list"> |
||||
|
<view > |
||||
|
<text class="add-paper-start">*</text> |
||||
|
<text class="add-paper-text">品牌信息</text> |
||||
|
</view> |
||||
|
<view class="add-paper-input"> |
||||
|
<uni-easyinput :placeholderStyle='placeholderStyle' :inputBorder="false" v-model="value" placeholder="请输入纸品品牌名称"></uni-easyinput> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="add-paper-border"></view> |
||||
|
<view class="add-paper-list"> |
||||
|
<view > |
||||
|
<text class="add-paper-start">*</text> |
||||
|
<text class="add-paper-text">纸种信息</text> |
||||
|
</view> |
||||
|
<view class="add-paper-input"> |
||||
|
<uni-easyinput :placeholderStyle='placeholderStyle' :inputBorder="false" v-model="value" placeholder="请输入纸品名称"></uni-easyinput> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="add-paper-border"></view> |
||||
|
<view class="add-paper-list"> |
||||
|
<view > |
||||
|
<text class="add-paper-start">*</text> |
||||
|
<text class="add-paper-text">是否主营</text> |
||||
|
</view> |
||||
|
<view> |
||||
|
<uni-data-checkbox v-model="radio" :localdata="range" @change="change"></uni-data-checkbox> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template>s |
||||
|
|
||||
|
<script> |
||||
|
import { back, go2 } from '@/utils/hook.js' |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
title:'添加纸品', |
||||
|
value:'', |
||||
|
radio:0, |
||||
|
range: [{"value": 0,"text": "是" },{"value": 1,"text": "否"}], |
||||
|
placeholderStyle:'text-align: right;' |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
back, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.add-paper{ |
||||
|
.add-paper-title { |
||||
|
width: 100%; |
||||
|
font-size: 36rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
text-align: center; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.add-paper-list{ |
||||
|
height: 88rpx; |
||||
|
background: #FFFFFF; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
padding-left: 32rpx; |
||||
|
padding-right: 32rpx; |
||||
|
} |
||||
|
.add-paper-text{ |
||||
|
font-size: 28rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.add-paper-start{ |
||||
|
font-size: 28rpx; |
||||
|
color: #F5222D; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.add-paper-input{ |
||||
|
width: 40%; |
||||
|
} |
||||
|
.add-paper-border{ |
||||
|
border-bottom: 2rpx solid #D8D8D8; |
||||
|
margin-left: 16px; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -1,254 +1,276 @@ |
|||||
<template> |
|
||||
<view class="warpper"> |
|
||||
<uni-nav-bar> |
|
||||
<view slot="left" class="left-title">纸商城</view> |
|
||||
<view slot="right" class="right-title">分享</view> |
|
||||
</uni-nav-bar> |
|
||||
<scroll-list ref="list" :option="option" @load="upCallback" @refresh="downCallback" style="background-color: #FFFFFF;"> |
|
||||
<view class="top-box"> |
|
||||
<view class=""> |
|
||||
<image class="image" src="https://qncloud.oss-cn-shenzhen.aliyuncs.com/ztb_pic/testPic.jfif" mode=""></image> |
|
||||
</view> |
|
||||
<view class="center"> |
|
||||
<view class="title"> |
|
||||
东莞市隆兴纸业有限公司 |
|
||||
</view> |
|
||||
<view class="desc"> |
|
||||
全部商品 39 | 上新 9 |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="right"> |
|
||||
<view class="cut"> |
|
||||
切换商城 |
|
||||
<image class="cut-icon" src="/static/imgs/mall/cut-icon.png" mode=""></image> |
|
||||
</view> |
|
||||
<view class="set"> |
|
||||
设置 |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<uGap></uGap> |
|
||||
<view v-for="(item,index) in 6" :key="index"> |
|
||||
<view class="content"> |
|
||||
<image class="image" src="https://qncloud.oss-cn-shenzhen.aliyuncs.com/ztb_pic/testPic.jfif" mode=""></image> |
|
||||
<view class=""> |
|
||||
<view class="title"> |
|
||||
<view class=""> |
|
||||
金蝶蓝白卡 |
|
||||
</view> |
|
||||
<view class=""> |
|
||||
<image class="icon" :src="1 === 1 ? '/static/imgs/mall/grounding-icon.png' : '/static/imgs/mall/sold-out-icon.png'" mode=""></image> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="sub-title"> |
|
||||
金桂/白卡纸/金蝶蓝 |
|
||||
</view> |
|
||||
<view class="desc"> |
|
||||
克重(价格):200(3900) 235(3900) 255(390 |
|
||||
0)255(390 |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="other"> |
|
||||
<view class="time"> |
|
||||
5分钟前 |
|
||||
</view> |
|
||||
<view class="btn"> |
|
||||
<view class=""> |
|
||||
编辑 |
|
||||
</view> |
|
||||
<view class="divide"></view> |
|
||||
<view class=""> |
|
||||
下架 |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<uGap></uGap> |
|
||||
</view> |
|
||||
|
|
||||
</scroll-list> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import uGap from '@/components/u-gap/u-gap.vue' |
|
||||
export default { |
|
||||
components: { uGap }, |
|
||||
data() { |
|
||||
return { |
|
||||
option: { |
|
||||
size: 10, |
|
||||
auto: true, |
|
||||
emptyText: '暂无数据~', |
|
||||
background: '#F7F8FA', |
|
||||
disabled: false |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
downCallback() {}, |
|
||||
upCallback() {} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss"> |
|
||||
.warpper { |
|
||||
width: 750rpx; |
|
||||
.left-title { |
|
||||
font-size: 40rpx; |
|
||||
color: #000000; |
|
||||
letter-spacing: 0; |
|
||||
font-weight: 500; |
|
||||
} |
|
||||
.right-title { |
|
||||
font-size: 28rpx; |
|
||||
color: #007aff; |
|
||||
text-align: right; |
|
||||
font-weight: 500; |
|
||||
} |
|
||||
.top-box { |
|
||||
display: flex; |
|
||||
flex-direction: row; |
|
||||
align-items: center; |
|
||||
justify-content: space-around; |
|
||||
height: 180rpx; |
|
||||
background: url('/static/imgs/mall/zsc-bg-icon.png') no-repeat; |
|
||||
background-size: 100%; |
|
||||
.image { |
|
||||
width: 100rpx; |
|
||||
height: 100rpx; |
|
||||
border-radius: 50%; |
|
||||
} |
|
||||
.right { |
|
||||
width: 140rpx; |
|
||||
} |
|
||||
.center { |
|
||||
position: relative; |
|
||||
left: -20rpx; |
|
||||
} |
|
||||
.title { |
|
||||
|
|
||||
font-size: 34rpx; |
|
||||
color: #FFFFFF; |
|
||||
letter-spacing: 2rpx; |
|
||||
font-weight: 600; |
|
||||
margin-bottom: 12rpx; |
|
||||
|
|
||||
} |
|
||||
.desc { |
|
||||
opacity: 0.75; |
|
||||
font-size: 28rpx; |
|
||||
color: #FFFFFF; |
|
||||
letter-spacing: 0; |
|
||||
font-weight: 500; |
|
||||
padding-right: 32rpx; |
|
||||
} |
|
||||
.cut { |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
font-size: 24rpx; |
|
||||
color: #FFFFFF; |
|
||||
letter-spacing: 0; |
|
||||
text-align: center; |
|
||||
font-weight: 400; |
|
||||
.cut-icon { |
|
||||
width: 29.42rpx; |
|
||||
height: 26.67rpx; |
|
||||
margin-left: 10rpx; |
|
||||
} |
|
||||
} |
|
||||
.set { |
|
||||
opacity: 0.75; |
|
||||
font-size: 28rpx; |
|
||||
color: #FFFFFF; |
|
||||
letter-spacing: 0; |
|
||||
font-weight: 500; |
|
||||
position: relative; |
|
||||
top: 39rpx; |
|
||||
left: 60rpx; |
|
||||
} |
|
||||
} |
|
||||
.content { |
|
||||
background: #FFFFFF; |
|
||||
border-bottom: 2rpx solid #DDDDDD; |
|
||||
display: flex; |
|
||||
flex-direction: row; |
|
||||
padding: 24rpx 0rpx 24rpx 32rpx; |
|
||||
.image { |
|
||||
width: 100rpx; |
|
||||
height: 100rpx; |
|
||||
flex: 0 0 100rpx; |
|
||||
margin-right: 18rpx; |
|
||||
} |
|
||||
.title { |
|
||||
display: flex; |
|
||||
flex-direction: row; |
|
||||
justify-content: space-between; |
|
||||
font-size: 32rpx; |
|
||||
color: #333333; |
|
||||
letter-spacing: 0; |
|
||||
font-weight: 500; |
|
||||
.icon { |
|
||||
position: relative; |
|
||||
top: -22rpx; |
|
||||
width: 150rpx; |
|
||||
height: 50rpx; |
|
||||
} |
|
||||
} |
|
||||
.sub-title { |
|
||||
position: relative; |
|
||||
font-size: 28rpx; |
|
||||
color: #333333; |
|
||||
letter-spacing: 0; |
|
||||
font-weight: 400; |
|
||||
top: -4rpx; |
|
||||
} |
|
||||
.desc { |
|
||||
font-size: 28rpx; |
|
||||
color: #555555; |
|
||||
letter-spacing: 0; |
|
||||
font-weight: 400; |
|
||||
padding-top: 10rpx; |
|
||||
line-height: 1.4; |
|
||||
} |
|
||||
} |
|
||||
.other { |
|
||||
display: flex; |
|
||||
flex-direction: row; |
|
||||
justify-content: space-between; |
|
||||
align-items: center; |
|
||||
height: 80rpx; |
|
||||
background: #FFFFFF; |
|
||||
padding: 0rpx 32rpx; |
|
||||
.time { |
|
||||
font-size: 28rpx; |
|
||||
color: #888888; |
|
||||
letter-spacing: 0; |
|
||||
font-weight: 400; |
|
||||
} |
|
||||
.btn { |
|
||||
display: flex; |
|
||||
flex-direction: row; |
|
||||
justify-content: space-between; |
|
||||
align-items: center; |
|
||||
font-size: 28rpx; |
|
||||
color: #007AFF; |
|
||||
letter-spacing: 0; |
|
||||
text-align: right; |
|
||||
font-weight: 400; |
|
||||
} |
|
||||
.divide { |
|
||||
width: 2rpx; |
|
||||
height: 32rpx; |
|
||||
background: #d8d8d8; |
|
||||
margin: 0 32rpx; |
|
||||
} |
|
||||
.icon { |
|
||||
width: 24rpx; |
|
||||
height: 24rpx; |
|
||||
margin-left: 6rpx; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
<template> |
||||
|
<view class="warpper"> |
||||
|
<uni-nav-bar> |
||||
|
<view slot="left" class="left-title">纸商城</view> |
||||
|
<view slot="right" class="right-title">分享</view> |
||||
|
</uni-nav-bar> |
||||
|
<scroll-list ref="list" :option="option" @load="upCallback" @refresh="downCallback" style="background-color: #FFFFFF;"> |
||||
|
<view class="top-box"> |
||||
|
<view class=""><image class="image" src="https://qncloud.oss-cn-shenzhen.aliyuncs.com/ztb_pic/testPic.jfif" mode=""></image></view> |
||||
|
<view class="center"> |
||||
|
<view class="title">东莞市隆兴纸业有限公司</view> |
||||
|
<view class="desc">全部商品 39 | 上新 9</view> |
||||
|
</view> |
||||
|
<view class="right"> |
||||
|
<view class="cut" @click="checkMall()"> |
||||
|
切换商城 |
||||
|
<image class="cut-icon" src="/static/imgs/mall/cut-icon.png" mode=""></image> |
||||
|
</view> |
||||
|
<view class="set">设置</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<uGap></uGap> |
||||
|
<view v-for="(item, index) in 6" :key="index"> |
||||
|
<view class="content"> |
||||
|
<image class="image" src="https://qncloud.oss-cn-shenzhen.aliyuncs.com/ztb_pic/testPic.jfif" mode=""></image> |
||||
|
<view class=""> |
||||
|
<view class="title"> |
||||
|
<view class="">金蝶蓝白卡</view> |
||||
|
<view class=""> |
||||
|
<image class="icon" :src="1 === 1 ? '/static/imgs/mall/grounding-icon.png' : '/static/imgs/mall/sold-out-icon.png'" mode=""></image> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="sub-title">金桂/白卡纸/金蝶蓝</view> |
||||
|
<view class="desc">克重(价格):200(3900) 235(3900) 255(390 0)255(390</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="other"> |
||||
|
<view class="time">5分钟前</view> |
||||
|
<view class="btn"> |
||||
|
<view class="">编辑</view> |
||||
|
<view class="divide"></view> |
||||
|
<view class="">下架</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<uGap></uGap> |
||||
|
</view> |
||||
|
|
||||
|
</scroll-list> |
||||
|
<view> |
||||
|
<view class="offer-prices" @click="nativeTo()"> |
||||
|
<image class="my-image" src="../../static/imgs/trade/camera.png" mode=""></image> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import uGap from '@/components/u-gap/u-gap.vue' |
||||
|
import { back, go2 } from '@/utils/hook.js' |
||||
|
export default { |
||||
|
components: { uGap }, |
||||
|
data() { |
||||
|
return { |
||||
|
option: { |
||||
|
size: 10, |
||||
|
auto: true, |
||||
|
emptyText: '暂无数据~', |
||||
|
background: '#F7F8FA', |
||||
|
disabled: false |
||||
|
}, |
||||
|
pattern: { |
||||
|
backgroundColor: '#007AFF', |
||||
|
buttonColor: '#007AFF' |
||||
|
}, |
||||
|
content: [], |
||||
|
horizontal: 'right', |
||||
|
vertical: 'bottom', |
||||
|
direction: 'vertical' |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
back, |
||||
|
downCallback() {}, |
||||
|
upCallback() {}, |
||||
|
// 切换商城按钮 |
||||
|
checkMall() { |
||||
|
go2('switching-mall') |
||||
|
}, |
||||
|
// 按钮点击事件 |
||||
|
nativeTo() { |
||||
|
go2('add-paper') |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.warpper { |
||||
|
width: 750rpx; |
||||
|
.left-title { |
||||
|
font-size: 40rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.right-title { |
||||
|
font-size: 28rpx; |
||||
|
color: #007aff; |
||||
|
text-align: right; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.top-box { |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
align-items: center; |
||||
|
justify-content: space-around; |
||||
|
height: 180rpx; |
||||
|
background: url('/static/imgs/mall/zsc-bg-icon.png') no-repeat; |
||||
|
background-size: 100%; |
||||
|
.image { |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
.right { |
||||
|
width: 140rpx; |
||||
|
} |
||||
|
.center { |
||||
|
position: relative; |
||||
|
left: -20rpx; |
||||
|
} |
||||
|
.title { |
||||
|
font-size: 34rpx; |
||||
|
color: #ffffff; |
||||
|
letter-spacing: 2rpx; |
||||
|
font-weight: 600; |
||||
|
margin-bottom: 12rpx; |
||||
|
} |
||||
|
.desc { |
||||
|
opacity: 0.75; |
||||
|
font-size: 28rpx; |
||||
|
color: #ffffff; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 500; |
||||
|
padding-right: 32rpx; |
||||
|
} |
||||
|
.cut { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
font-size: 24rpx; |
||||
|
color: #ffffff; |
||||
|
letter-spacing: 0; |
||||
|
text-align: center; |
||||
|
font-weight: 400; |
||||
|
.cut-icon { |
||||
|
width: 29.42rpx; |
||||
|
height: 26.67rpx; |
||||
|
margin-left: 10rpx; |
||||
|
} |
||||
|
} |
||||
|
.set { |
||||
|
opacity: 0.75; |
||||
|
font-size: 28rpx; |
||||
|
color: #ffffff; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 500; |
||||
|
position: relative; |
||||
|
top: 39rpx; |
||||
|
left: 60rpx; |
||||
|
} |
||||
|
} |
||||
|
.content { |
||||
|
background: #ffffff; |
||||
|
border-bottom: 2rpx solid #dddddd; |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
padding: 24rpx 0rpx 24rpx 32rpx; |
||||
|
.image { |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
flex: 0 0 100rpx; |
||||
|
margin-right: 18rpx; |
||||
|
} |
||||
|
.title { |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
justify-content: space-between; |
||||
|
font-size: 32rpx; |
||||
|
color: #333333; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 500; |
||||
|
.icon { |
||||
|
position: relative; |
||||
|
top: -22rpx; |
||||
|
width: 150rpx; |
||||
|
height: 50rpx; |
||||
|
} |
||||
|
} |
||||
|
.sub-title { |
||||
|
position: relative; |
||||
|
font-size: 28rpx; |
||||
|
color: #333333; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
top: -4rpx; |
||||
|
} |
||||
|
.desc { |
||||
|
font-size: 28rpx; |
||||
|
color: #555555; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
padding-top: 10rpx; |
||||
|
line-height: 1.4; |
||||
|
} |
||||
|
} |
||||
|
.other { |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
height: 80rpx; |
||||
|
background: #ffffff; |
||||
|
padding: 0rpx 32rpx; |
||||
|
.time { |
||||
|
font-size: 28rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.btn { |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
font-size: 28rpx; |
||||
|
color: #007aff; |
||||
|
letter-spacing: 0; |
||||
|
text-align: right; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.divide { |
||||
|
width: 2rpx; |
||||
|
height: 32rpx; |
||||
|
background: #d8d8d8; |
||||
|
margin: 0 32rpx; |
||||
|
} |
||||
|
.icon { |
||||
|
width: 24rpx; |
||||
|
height: 24rpx; |
||||
|
margin-left: 6rpx; |
||||
|
} |
||||
|
} |
||||
|
.offer-prices { |
||||
|
position: absolute; |
||||
|
z-index: 9999; |
||||
|
right: 32rpx; |
||||
|
bottom: 122rpx; |
||||
|
background-color: #007AFF; |
||||
|
border-radius: 50%; |
||||
|
padding: 10rpx; |
||||
|
text-align: center; |
||||
|
width: 110rpx; |
||||
|
height: 110rpx; |
||||
|
border: 2rpx solid #f9f9f9; |
||||
|
box-shadow: 0rpx 4rpx 34rpx 0rpx rgba(0, 0, 0, 0.2); |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
.my-image { |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
} |
||||
|
} |
||||
</style> |
</style> |
||||
@ -1,224 +1,242 @@ |
|||||
<template> |
|
||||
<view class="my-offer"> |
|
||||
<uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title="我的报价"></uni-nav-bar> |
|
||||
<scroll-list style="touch-action: none" ref="orderRef" :option="orderOption" @load="orderUp" @refresh="orderDown"> |
|
||||
<view v-for="(items,index) in orderData" :key="index"> |
|
||||
<view class="list-border list-title-line"> |
|
||||
<text class="list-title">广州民族印刷有限公司</text> |
|
||||
<text class="list-title-Subtitle">{{ items.orderStatus }}</text> |
|
||||
</view> |
|
||||
<view class="list-border list-info-line" v-for="(item, index) in items.orderItemList" :key="index"> |
|
||||
<view class="list-info" :class="index===items.orderItemList.length?'list-border':''"> |
|
||||
<view class=""> |
|
||||
<!-- <image class="list-image" :src="item.productImg" mode=""></image> --> |
|
||||
<image class="list-image" src="../../static/logo.png" mode=""> |
|
||||
</view> |
|
||||
<view class="list-info-contant"> |
|
||||
<view class="list-info-title">{{ item.brandName }}{{ item.categoryName }}</view> |
|
||||
<view class="list-info-text"> |
|
||||
{{ item.categoryName }}/{{ item.brandName }}/{{ item.gramWeight }}g/{{ item.length }}*{{ item.width }}/{{ item.pieceQuantity }}张 |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="list-border list-bottom-contant"> |
|
||||
<view> |
|
||||
<text class="list-time">三分钟前</text> |
|
||||
<text class="list-title-Subtitle">¥{{ items.totalOfferPrice }}</text> |
|
||||
</view> |
|
||||
</view> |
|
||||
<uGap></uGap> |
|
||||
</view> |
|
||||
</scroll-list> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { back, go2 } from '@/utils/hook.js' |
|
||||
import uGap from '@/components/u-gap/u-gap.vue' |
|
||||
import scrollList from '@/components/scroll-list/scroll-list.vue' |
|
||||
import { getEnterpriseList, gettradingHallList } from '@/apis/trade' |
|
||||
export default { |
|
||||
// props: { |
|
||||
// queryOrderData: { |
|
||||
// type: Object, |
|
||||
// default: () => {} |
|
||||
// } |
|
||||
// }, |
|
||||
components: { |
|
||||
uGap |
|
||||
}, |
|
||||
|
|
||||
data() { |
|
||||
return { |
|
||||
orderPagination: { |
|
||||
pageNum: 0, // 初始会执行一次下拉加载 |
|
||||
pageSize: 10 |
|
||||
}, |
|
||||
orderData: [], |
|
||||
controlCurrent:0, |
|
||||
controlItems: ['全部', '待确认', '待发货', '已完成'], |
|
||||
orderOption: { |
|
||||
size: 10, |
|
||||
auto: true, |
|
||||
emptyText: '暂无报价信息~', |
|
||||
background: '#F7F8FA', |
|
||||
fontSize: '40rpx' |
|
||||
}, |
|
||||
orderParams: { |
|
||||
cooperationState: 0, |
|
||||
latitude: 23.12616, |
|
||||
longitude: 113.38466, |
|
||||
km: 5 |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
watch: { |
|
||||
// queryOrderData(value) { |
|
||||
// console.log('value', value) |
|
||||
// }, |
|
||||
orderParams: { |
|
||||
handler(val) { |
|
||||
this.getTradingQurty() |
|
||||
}, |
|
||||
deep: true |
|
||||
} |
|
||||
}, |
|
||||
onLoad(option) { |
|
||||
if (option) { |
|
||||
option.latitude && (this.params.latitude = option.latitude) |
|
||||
option.longitude && (this.params.longitude = option.longitude) |
|
||||
option.km && (this.params.km = option.km) |
|
||||
} |
|
||||
this.getTradingQurty() |
|
||||
}, |
|
||||
methods: { |
|
||||
back, |
|
||||
// 获取订单列表 |
|
||||
getTradingQurty() { |
|
||||
return new Promise((resolve, reject) => { |
|
||||
gettradingHallList({ ...this.orderParams, ...this.orderPagination }) |
|
||||
.then(res => { |
|
||||
if (res) { |
|
||||
if (this.orderPagination.pageNum == 1) { |
|
||||
this.orderData = res.records |
|
||||
} else { |
|
||||
this.orderData = this.orderData.concat(res.records) |
|
||||
} |
|
||||
resolve({ list: this.orderData, total: res.total }) |
|
||||
} |
|
||||
}) |
|
||||
.catch(err => { |
|
||||
reject(err) |
|
||||
}) |
|
||||
}) |
|
||||
}, |
|
||||
//订单分页 |
|
||||
orderUp(page) { |
|
||||
this.orderPagination.pageNum++ |
|
||||
this.getTradingQurty() |
|
||||
.then(({ list, total }) => { |
|
||||
this.$refs.orderRef.loadSuccess({ list, total }) |
|
||||
}) |
|
||||
.catch(() => { |
|
||||
this.$refs.orderRef.loadFail() |
|
||||
}) |
|
||||
}, |
|
||||
//订单分页 |
|
||||
orderDown() { |
|
||||
this.orderPagination.pageNum = 1 |
|
||||
this.getTradingQurty() |
|
||||
.then(({ list, total }) => { |
|
||||
this.$refs.orderRef.refreshSuccess({ list, total }) |
|
||||
}) |
|
||||
.catch(() => { |
|
||||
this.$refs.orderRef.refreshFail() |
|
||||
}) |
|
||||
}, |
|
||||
//分段器点击事件 |
|
||||
onClickItem(value) { |
|
||||
console.log(value) |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss"> |
|
||||
.my-offer { |
|
||||
margin-bottom: 0rpx; |
|
||||
.list-border { |
|
||||
// border-top: 1px solid #dddddd; |
|
||||
border-bottom: 2rpx solid #dddddd; |
|
||||
} |
|
||||
.list-title-line { |
|
||||
line-height: 88rpx; |
|
||||
padding-left: 48rpx; |
|
||||
background: #FFFFFF; |
|
||||
} |
|
||||
.list-title { |
|
||||
font-family: PingFangSC-Semibold; |
|
||||
font-size: 30rpx; |
|
||||
color: #000000; |
|
||||
letter-spacing: 0; |
|
||||
font-weight: 600; |
|
||||
} |
|
||||
.list-title-Subtitle { |
|
||||
font-family: PingFangSC-Medium; |
|
||||
font-size: 30rpx; |
|
||||
color: #ff5368; |
|
||||
letter-spacing: 0; |
|
||||
text-align: right; |
|
||||
font-weight: 500; |
|
||||
float: right; |
|
||||
margin-right: 32rpx; |
|
||||
} |
|
||||
.list-info-line { |
|
||||
padding-left: 48rpx; |
|
||||
line-height: 70rpx; |
|
||||
background: #FFFFFF; |
|
||||
} |
|
||||
.list-info-contant { |
|
||||
margin-left: 48rpx; |
|
||||
} |
|
||||
.list-info-title { |
|
||||
font-family: PingFangSC-Medium; |
|
||||
font-size: 30rpx; |
|
||||
color: #333333; |
|
||||
letter-spacing: 0; |
|
||||
text-align: left; |
|
||||
font-weight: 550; |
|
||||
} |
|
||||
.list-info-text { |
|
||||
font-family: PingFangSC-Regular; |
|
||||
font-size: 26rpx; |
|
||||
color: #888888; |
|
||||
letter-spacing: 0; |
|
||||
text-align: left; |
|
||||
line-height: 64rpx; |
|
||||
font-weight: 400; |
|
||||
} |
|
||||
.list-image { |
|
||||
width: 100rpx; |
|
||||
height: 100rpx; |
|
||||
margin-top: 20rpx; |
|
||||
} |
|
||||
.list-info { |
|
||||
display: flex; |
|
||||
} |
|
||||
.list-bottom-contant { |
|
||||
line-height: 70rpx; |
|
||||
padding-left: 48rpx; |
|
||||
width: 750rpx; |
|
||||
height: 80rpx; |
|
||||
background: #FFFFFF; |
|
||||
} |
|
||||
.list-time{ |
|
||||
font-family: PingFangSC-Regular; |
|
||||
font-size: 26rpx; |
|
||||
color: #888888; |
|
||||
letter-spacing: 0; |
|
||||
line-height: 64rpx; |
|
||||
font-weight: 400; |
|
||||
} |
|
||||
} |
|
||||
|
<template> |
||||
|
<view class="my-offer"> |
||||
|
<view> |
||||
|
<uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title=""> |
||||
|
<view class="my-offer-title">我的报价</view> |
||||
|
<view slot="left"></view> |
||||
|
<view slot="right"></view> |
||||
|
</uni-nav-bar> |
||||
|
</view> |
||||
|
<scroll-list style="touch-action: none" ref="orderRef" :option="orderOption" @load="orderUp" @refresh="orderDown"> |
||||
|
<view v-for="(items, index) in orderData" :key="index" @click="myPriceInfo(items)"> |
||||
|
<view class="list-border list-title-line"> |
||||
|
<text class="list-title">广州民族印刷有限公司</text> |
||||
|
<text class="list-title-Subtitle">{{ controlItems[items.orderStatus - 1] }}</text> |
||||
|
</view> |
||||
|
<view class="list-border list-info-line" v-for="(item, index) in items.orderItemList" :key="index"> |
||||
|
<view class="list-info" :class="index === items.orderItemList.length ? 'list-border' : ''"> |
||||
|
<view class=""><image class="list-image" src="../../static/logo.png"></image></view> |
||||
|
<view class="list-info-contant"> |
||||
|
<view class="list-info-title">{{ item.brandName }}{{ item.categoryName }}</view> |
||||
|
<view class="list-info-text"> |
||||
|
<text>{{ item.categoryName }}/{{ item.brandName }}/</text> |
||||
|
<text>{{ item.gramWeight }}g/{{ item.length }}*{{ item.width }}/{{ item.pieceQuantity }}张</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="list-border list-bottom-contant"> |
||||
|
<view><text class="list-time">三分钟前</text></view> |
||||
|
<view class=""> |
||||
|
<text class="list-title-Subtitle">¥{{ items.totalOfferPrice }}</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
<uGap></uGap> |
||||
|
</view> |
||||
|
</scroll-list> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { back, go2 } from '@/utils/hook.js' |
||||
|
import uGap from '@/components/u-gap/u-gap.vue' |
||||
|
import scrollList from '@/components/scroll-list/scroll-list.vue' |
||||
|
import { getMyreplyList } from '@/apis/trade.js' |
||||
|
export default { |
||||
|
// props: { |
||||
|
// queryOrderData: { |
||||
|
// type: Object, |
||||
|
// default: () => {} |
||||
|
// } |
||||
|
// }, |
||||
|
components: { |
||||
|
uGap |
||||
|
}, |
||||
|
|
||||
|
data() { |
||||
|
return { |
||||
|
orderPagination: { |
||||
|
pageNum: 0, // 初始会执行一次下拉加载 |
||||
|
pageSize: 10 |
||||
|
}, |
||||
|
orderData: [ |
||||
|
{"id":"638458876659896320","totalOfferPrice":10,"orderItemList":[{"id":"123456","productName":"交易大厅-订单商品","pieceQuantity":0,"productImg":null,"gramWeight":"300","width":"1024","length":"789","brandName":"丽盈","categoryName":"白卡纸"}],"deliveryDay":null,"orderStatus":3} |
||||
|
], |
||||
|
controlCurrent: 0, |
||||
|
controlItems: ['待付款', '待发货', '待收货', '已完成', '已关闭'], |
||||
|
orderOption: { |
||||
|
size: 10, |
||||
|
auto: true, |
||||
|
emptyText: '暂无报价信息~', |
||||
|
background: '#F7F8FA', |
||||
|
fontSize: '40rpx' |
||||
|
}, |
||||
|
orderParams: { |
||||
|
cooperationState: 0, |
||||
|
latitude: 23.12616, |
||||
|
longitude: 113.38466, |
||||
|
km: 5 |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
filters: {}, |
||||
|
watch: { |
||||
|
orderParams: { |
||||
|
handler(val) { |
||||
|
this.getMyreplyListQuery() |
||||
|
}, |
||||
|
deep: true |
||||
|
} |
||||
|
}, |
||||
|
onLoad(option) { |
||||
|
if (option) { |
||||
|
option.latitude && (this.params.latitude = option.latitude) |
||||
|
option.longitude && (this.params.longitude = option.longitude) |
||||
|
option.km && (this.params.km = option.km) |
||||
|
} |
||||
|
this.getMyreplyListQuery() |
||||
|
}, |
||||
|
methods: { |
||||
|
back, |
||||
|
// 获取我的报价 |
||||
|
getMyreplyListQuery() { |
||||
|
return new Promise((resolve, reject) => { |
||||
|
getMyreplyList({ ...this.orderParams, ...this.orderPagination }) |
||||
|
.then(res => { |
||||
|
if (res) { |
||||
|
if (this.orderPagination.pageNum == 1) { |
||||
|
this.orderData = res.records |
||||
|
} else { |
||||
|
this.orderData = this.orderData.concat(res.records) |
||||
|
} |
||||
|
resolve({ list: this.orderData, total: res.total }) |
||||
|
} |
||||
|
}) |
||||
|
.catch(err => { |
||||
|
reject(err) |
||||
|
}) |
||||
|
}) |
||||
|
}, |
||||
|
//订单分页 |
||||
|
orderUp(page) { |
||||
|
this.orderPagination.pageNum++ |
||||
|
this.getMyreplyListQuery() |
||||
|
.then(({ list, total }) => { |
||||
|
this.$refs.orderRef.loadSuccess({ list, total }) |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
this.$refs.orderRef.loadFail() |
||||
|
}) |
||||
|
}, |
||||
|
//订单分页 |
||||
|
orderDown() { |
||||
|
this.orderPagination.pageNum = 1 |
||||
|
this.getMyreplyListQuery() |
||||
|
.then(({ list, total }) => { |
||||
|
this.$refs.orderRef.refreshSuccess({ list, total }) |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
this.$refs.orderRef.refreshFail() |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//跳转我的报价详情 |
||||
|
myPriceInfo(item) { |
||||
|
console.log(item) |
||||
|
uni.navigateTo({ |
||||
|
url: '/pages/quotation-details/index' |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.my-offer { |
||||
|
margin-bottom: 0rpx; |
||||
|
.list-border { |
||||
|
// border-top: 1px solid #dddddd; |
||||
|
border-bottom: 2rpx solid #dddddd; |
||||
|
} |
||||
|
.list-title-line { |
||||
|
line-height: 88rpx; |
||||
|
padding-left: 48rpx; |
||||
|
background: #ffffff; |
||||
|
} |
||||
|
.my-offer-title { |
||||
|
width: 100%; |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 36rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
text-align: center; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.list-title { |
||||
|
font-family: PingFangSC-Semibold; |
||||
|
font-size: 30rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
.list-title-Subtitle { |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 30rpx; |
||||
|
color: #ff5368; |
||||
|
letter-spacing: 0; |
||||
|
text-align: right; |
||||
|
font-weight: 500; |
||||
|
float: right; |
||||
|
margin-right: 32rpx; |
||||
|
} |
||||
|
.list-info-line { |
||||
|
padding-left: 48rpx; |
||||
|
line-height: 70rpx; |
||||
|
background: #ffffff; |
||||
|
} |
||||
|
.list-info-contant { |
||||
|
margin-left: 48rpx; |
||||
|
} |
||||
|
.list-info-title { |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 30rpx; |
||||
|
color: #333333; |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
font-weight: 550; |
||||
|
} |
||||
|
.list-info-text { |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 26rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
line-height: 64rpx; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.list-image { |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
margin-top: 20rpx; |
||||
|
} |
||||
|
.list-info { |
||||
|
display: flex; |
||||
|
} |
||||
|
.list-bottom-contant { |
||||
|
align-items: center; |
||||
|
padding-left: 48rpx; |
||||
|
height: 80rpx; |
||||
|
background: #ffffff; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
.list-time { |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 26rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
line-height: 64rpx; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
} |
||||
</style> |
</style> |
||||
@ -0,0 +1,577 @@ |
|||||
|
<template> |
||||
|
<view class="quotation-details"> |
||||
|
<view> |
||||
|
<uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title=""> |
||||
|
<view class="submit-title">报价详情</view> |
||||
|
<view slot="left"></view> |
||||
|
<view slot="right" class="edit-price" @click="editPrice()">修改报价</view> |
||||
|
</uni-nav-bar> |
||||
|
</view> |
||||
|
<view class="submit-main"> |
||||
|
<view> |
||||
|
<text class="submit-main-title">交货要求</text> |
||||
|
<text class="price-tips">已报价</text> |
||||
|
</view> |
||||
|
<view> |
||||
|
<text class="submit-main-subTitle">询价客户:</text> |
||||
|
<text class="submit-main-subContant">{{ upDataObj.belongEnterpriseName }}</text> |
||||
|
</view> |
||||
|
<view> |
||||
|
<text class="submit-main-subTitle">交货区域:</text> |
||||
|
<text class="submit-main-subContant">{{ upDataObj.deliveryArea }}</text> |
||||
|
</view> |
||||
|
<view> |
||||
|
<text class="submit-main-subTitle">交货时间:</text> |
||||
|
<text class="submit-main-subContant">{{ upDataObj.deliveryDay }}</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
<uGap></uGap> |
||||
|
<view class="submit-contant" v-for="(items, index) in upDataObj.itemList" :key="index"> |
||||
|
<view class="submit-contant-head"> |
||||
|
<view class="submit-contant-title">{{ items.brandName }}|{{ items.gramWeight }}|{{ items.length }}*{{ items.width }}|{{ items.quantity }}</view> |
||||
|
</view> |
||||
|
<view class="submit-contant-body"> |
||||
|
<view class=""> |
||||
|
<text class="submit-contant-body-title">重量(吨):</text> |
||||
|
<text class="submit-contant-body-subtitle">1.6544</text> |
||||
|
</view> |
||||
|
<view> |
||||
|
<text class="submit-contant-body-title">单价(元/吨):</text> |
||||
|
<text class="submit-contant-body-subtitle">{{ items.unitFee }}</text> |
||||
|
</view> |
||||
|
<view> |
||||
|
<text class="submit-contant-body-title">小计(元):</text> |
||||
|
<text class="submit-contant-body-subtitle">{{ items.totalPrice }}</text> |
||||
|
</view> |
||||
|
<view class="submit-contant-body-input"> |
||||
|
<uni-easyinput :disabled="true" maxlength="100" class="submit-contant-body-inputClass" v-model="value" placeholder="请输入内容"></uni-easyinput> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="submit-contant-order"> |
||||
|
<view class=""> |
||||
|
<text class="submit-contant-order-title">其他费用:</text> |
||||
|
<text class="submit-contant-order-subtitle">¥ 80.00</text> |
||||
|
</view> |
||||
|
<view class=""> |
||||
|
<text class="submit-contant-order-title">合计:</text> |
||||
|
<text class="submit-contant-order-money">¥ 13800.32</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
<uGap></uGap> |
||||
|
<view class="submit-contant-time"> |
||||
|
<view class=""> |
||||
|
<text class="submit-contant-time-title">有效时间:</text> |
||||
|
<text class="submit-contant-time-title">24小时</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
<uGap></uGap> |
||||
|
<view class="submit-contant-remark"> |
||||
|
<view class="submit-contant-remark-title"> |
||||
|
<text>报价备注:</text> |
||||
|
<text>29号5点前能送达。</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="tips"><text>注:禁止偷克重、抵纸换纸,否则将被平台严厉处罚!包括但不限于账号禁用。</text></view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { back, go2 } from '@/utils/hook.js' |
||||
|
import qnHeader from '@/components/qn-header/qn-header.vue' |
||||
|
import uGap from '@/components/u-gap/u-gap.vue' |
||||
|
import { enquiryReplyDetail } from '@/apis/trade.js' |
||||
|
export default { |
||||
|
components: { |
||||
|
qnHeader, |
||||
|
uGap |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
value: '', |
||||
|
visible: true, |
||||
|
title: 'picker-view', |
||||
|
upDataObj:{ |
||||
|
belongEnterpriseName:'东莞市隆兴纸业有限公司', |
||||
|
deliveryArea:'广东省/广州市/天河区', |
||||
|
deliveryDay:'2021/12/29 12:30', |
||||
|
enquiryValidTime:[12,11,10], |
||||
|
itemList:[ |
||||
|
{ |
||||
|
brandName:'丽品白卡', |
||||
|
categoryName:"", |
||||
|
gramWeight:'200g', |
||||
|
length:'787', |
||||
|
quantity:'5000张', |
||||
|
width:'1092', |
||||
|
unitFee:'1000', |
||||
|
totalPrice:'1202' |
||||
|
}, |
||||
|
{ |
||||
|
brandName:'丽品白卡', |
||||
|
categoryName:"", |
||||
|
gramWeight:'200g', |
||||
|
length:'787', |
||||
|
quantity:'5000张', |
||||
|
width:'1092', |
||||
|
unitFee:'1000', |
||||
|
totalPrice:'1202' |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
back, |
||||
|
// 获取详情 |
||||
|
getDetail(id){ |
||||
|
this.enquiryReplyDetail(id) |
||||
|
.then(({ list, total }) => { |
||||
|
this.$refs.orderRef.loadSuccess({ list, total }) |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
this.$refs.orderRef.loadFail() |
||||
|
}) |
||||
|
}, |
||||
|
// 商品操作按钮 |
||||
|
commodityModify(item) { |
||||
|
console.log(111) |
||||
|
this.$refs.popup.open('bottom') |
||||
|
}, |
||||
|
// 单价操作按钮 |
||||
|
priceModify() { |
||||
|
this.$refs.popupPrice.open('bottom') |
||||
|
}, |
||||
|
// 事件设置 |
||||
|
resetTime() { |
||||
|
this.$refs.popupTime.open('bottom') |
||||
|
}, |
||||
|
// 事件选择change事件 |
||||
|
bindChange(e) { |
||||
|
console.log(e.detail.value) |
||||
|
}, |
||||
|
close() { |
||||
|
this.$refs.popup.close() |
||||
|
this.$refs.popupPrice.close() |
||||
|
}, |
||||
|
// 纸张选择下拉change事件 |
||||
|
onchange(e) { |
||||
|
console.log(e) |
||||
|
this.pickerValue = e.detail.value |
||||
|
}, |
||||
|
// 时间设置取消 |
||||
|
pickerCancel() { |
||||
|
this.$refs.popupTime.close() |
||||
|
}, |
||||
|
// 时间设置确认 |
||||
|
pickerSure() { |
||||
|
this.$refs.popupTime.close() |
||||
|
}, |
||||
|
// 修改报价按钮 |
||||
|
editPrice(){ |
||||
|
var params= { |
||||
|
title:"修改报价" |
||||
|
} |
||||
|
go2('submit-quotation', params) |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.picker-view { |
||||
|
width: 750rpx; |
||||
|
height: 600rpx; |
||||
|
margin-top: 20rpx; |
||||
|
} |
||||
|
.item { |
||||
|
height: 50rpx; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
text-align: center; |
||||
|
padding-top: 30rpx; |
||||
|
} |
||||
|
.quotation-details { |
||||
|
.submit-title { |
||||
|
width: 100%; |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 36rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
text-align: center; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.submit-main { |
||||
|
width: 750rpx; |
||||
|
height: 260rpx; |
||||
|
padding: 24rpx 0rpx 0rpx 32rpx; |
||||
|
line-height: 52rpx; |
||||
|
background: #ffffff; |
||||
|
.submit-main-title { |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 30rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.submit-main-subTitle { |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 28rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.submit-main-subContant { |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 28rpx; |
||||
|
color: #333333; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
} |
||||
|
.submit-deadline { |
||||
|
width: 750rpx; |
||||
|
height: 75rpx; |
||||
|
background: #f4f9fc; |
||||
|
box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(100, 101, 102, 0.12); |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
.submit-text { |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 28rpx; |
||||
|
color: rgba(0, 0, 0, 0.5); |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 500; |
||||
|
margin-top: 22rpx; |
||||
|
width: 130rpx; |
||||
|
} |
||||
|
.submit-time { |
||||
|
width: 40rpx; |
||||
|
height: 40rpx; |
||||
|
background: #ee0a24; |
||||
|
border-radius: 8rpx; |
||||
|
margin-top: 20rpx; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.submit-time-text { |
||||
|
font-family: PingFangSC-Semibold; |
||||
|
font-size: 24rpx; |
||||
|
color: #ffffff; |
||||
|
text-align: center; |
||||
|
line-height: 32rpx; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
.sbumit-colon { |
||||
|
width: 24rpx; |
||||
|
height: 32rpx; |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 24rpx; |
||||
|
color: #ee0a24; |
||||
|
text-align: center; |
||||
|
line-height: 32rpx; |
||||
|
font-weight: 400; |
||||
|
margin-top: 20rpx; |
||||
|
} |
||||
|
} |
||||
|
.submit-contant { |
||||
|
background-color: #ffffff; |
||||
|
// height: 368rpx; |
||||
|
border-bottom: 2rpx solid #dddddd; |
||||
|
padding-bottom: 20rpx; |
||||
|
.submit-contant-head { |
||||
|
line-height: 90rpx; |
||||
|
width: 750rpx; |
||||
|
height: 90rpx; |
||||
|
border-bottom: 2rpx dashed #d8d8d8; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
.submit-contant-title { |
||||
|
font-family: PingFangSC-Semibold; |
||||
|
font-size: 30rpx; |
||||
|
color: rgba(0, 0, 0, 0.75); |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
font-weight: 600; |
||||
|
padding: 0rpx 0rpx 0rpx 32rpx; |
||||
|
} |
||||
|
.submit-contant-body { |
||||
|
line-height: 68rpx; |
||||
|
padding-left: 32rpx; |
||||
|
.submit-contant-body-title { |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 28rpx; |
||||
|
color: #555555; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.submit-contant-body-subtitle { |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 28rpx; |
||||
|
color: #555555; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
float: right; |
||||
|
margin-right: 32rpx; |
||||
|
} |
||||
|
.submit-contant-body-input { |
||||
|
margin-right: 32rpx; |
||||
|
} |
||||
|
.submit-contant-body-inputClass { |
||||
|
background-color: #f7f8fa; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.submit-contant-order { |
||||
|
width: 750rpx; |
||||
|
height: 90rpx; |
||||
|
line-height: 90rpx; |
||||
|
background: #ffffff; |
||||
|
display: flex; |
||||
|
padding-left: 32rpx; |
||||
|
padding-right: 32rpx; |
||||
|
justify-content: space-between; |
||||
|
.submit-contant-order-title { |
||||
|
width: 140rpx; |
||||
|
height: 40rpx; |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 28rpx; |
||||
|
color: rgba(0, 0, 0, 0.5); |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.submit-contant-order-subtitle { |
||||
|
width: 101rpx; |
||||
|
height: 40rpx; |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 28rpx; |
||||
|
color: rgba(0, 0, 0, 0.5); |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.submit-contant-order-money { |
||||
|
width: 172rpx; |
||||
|
height: 42rpx; |
||||
|
font-family: PingFangSC-Semibold; |
||||
|
font-size: 40rpx; |
||||
|
color: #f5222d; |
||||
|
letter-spacing: 0; |
||||
|
line-height: 42rpx; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
} |
||||
|
.submit-contant-time { |
||||
|
width: 750rpx; |
||||
|
height: 88rpx; |
||||
|
background: #ffffff; |
||||
|
line-height: 88rpx; |
||||
|
display: flex; |
||||
|
padding-left: 32rpx; |
||||
|
padding-right: 32rpx; |
||||
|
justify-content: space-between; |
||||
|
.submit-contant-time-title { |
||||
|
width: 230rpx; |
||||
|
height: 40rpx; |
||||
|
font-size: 28rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.submit-contant-time-subtitle { |
||||
|
width: 56rpx; |
||||
|
height: 40rpx; |
||||
|
font-size: 28rpx; |
||||
|
color: #007aff; |
||||
|
letter-spacing: 0; |
||||
|
text-align: right; |
||||
|
font-weight: 500; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
} |
||||
|
.submit-contant-remark { |
||||
|
width: 750rpx; |
||||
|
height: 88rpx; |
||||
|
background: #ffffff; |
||||
|
.submit-contant-remark-title { |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 30rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
padding: 28rpx 0rpx 0rpx 32rpx; |
||||
|
} |
||||
|
.submit-contant-remark-input { |
||||
|
background: #f7f8fa; |
||||
|
border-radius: 20rpx; |
||||
|
margin: 10rpx 32rpx 32rpx 32rpx; |
||||
|
width: 686rpx; |
||||
|
} |
||||
|
} |
||||
|
.submit-btnBg { |
||||
|
width: 750rpx; |
||||
|
height: 120rx; |
||||
|
background: #ffffff; |
||||
|
box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(100, 101, 102, 0.12); |
||||
|
padding: 12rpx 32rpx 12rpx 32rpx; |
||||
|
} |
||||
|
.submit-btn { |
||||
|
width: 686rpx; |
||||
|
height: 96rpx; |
||||
|
background: #007aff; |
||||
|
border-radius: 10rpx; |
||||
|
} |
||||
|
.submit-image { |
||||
|
width: 24.38rpx; |
||||
|
height: 20.38rpx; |
||||
|
margin-right: 32rpx; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.submit-image-price { |
||||
|
width: 24.38rpx; |
||||
|
height: 20.38rpx; |
||||
|
margin-left: 14rpx; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.submit-popup { |
||||
|
width: 750rpx; |
||||
|
height: 960rpx; |
||||
|
background: #ffffff; |
||||
|
border-top-right-radius: 2rpx; |
||||
|
border-top-left-radius: 2rpx; |
||||
|
padding: 20rpx 32rpx 0rpx 32rpx; |
||||
|
// line-height: 124rpx; |
||||
|
.submit-popup-input { |
||||
|
background-color: #f5f5f5; |
||||
|
} |
||||
|
.submit-popup-close { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
.submit-popup-close-image { |
||||
|
width: 24.38rpx; |
||||
|
height: 20.38rpx; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.submit-popup-title { |
||||
|
font-size: 30rpx; |
||||
|
color: rgba(0, 0, 0, 0.85); |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.submit-popup-specifications { |
||||
|
width: 320rpx; |
||||
|
} |
||||
|
.submit-popup-x { |
||||
|
font-size: 32rpx; |
||||
|
color: rgba(0, 0, 0, 0.85); |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.submit-line { |
||||
|
border-bottom: 2rpx solid #d8d8d8; |
||||
|
padding-bottom: 32rpx; |
||||
|
height: 194rpx; |
||||
|
line-height: 72rpx; |
||||
|
} |
||||
|
.submit-number-box { |
||||
|
margin-top: 24rpx; |
||||
|
} |
||||
|
.submit-number-text { |
||||
|
font-size: 24rpx; |
||||
|
color: rgba(0, 0, 0, 0.5); |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.submit-number-line { |
||||
|
line-height: 40rpx; |
||||
|
} |
||||
|
.submit-number-btn { |
||||
|
position: absolute; |
||||
|
bottom: 20rpx; |
||||
|
} |
||||
|
.submit-price { |
||||
|
line-height: 72rpx; |
||||
|
} |
||||
|
.submit-price-total { |
||||
|
display: flex; |
||||
|
justify-content: flex-end; |
||||
|
margin-top: 20rpx; |
||||
|
} |
||||
|
.submit-price-total-text { |
||||
|
font-size: 40rpx; |
||||
|
color: #f5222d; |
||||
|
letter-spacing: 0; |
||||
|
line-height: 42rpx; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
.submit-price-text { |
||||
|
font-size: 28rpx; |
||||
|
color: rgba(0, 0, 0, 0.85); |
||||
|
text-align: right; |
||||
|
font-weight: 400; |
||||
|
line-height: 40rpx; |
||||
|
} |
||||
|
.submit-price-subTitle { |
||||
|
margin-left: 20rpx; |
||||
|
} |
||||
|
} |
||||
|
.submit-check-time { |
||||
|
background-color: #ffffff; |
||||
|
padding: 28rpx 32rpx 0px 28rpx; |
||||
|
.submit-check-flex { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
.submit-check-title { |
||||
|
font-size: 32rpx; |
||||
|
color: #323233; |
||||
|
text-align: center; |
||||
|
line-height: 44rpx; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.submit-check-cancel { |
||||
|
font-size: 28rpx; |
||||
|
color: #969799; |
||||
|
line-height: 40rpx; |
||||
|
font-weight: 400; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.submit-check-sure { |
||||
|
font-size: 28rpx; |
||||
|
color: #007aff; |
||||
|
line-height: 40rpx; |
||||
|
font-weight: 400; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.submit-check-text { |
||||
|
font-size: 36rpx; |
||||
|
color: #323233; |
||||
|
line-height: 48rpx; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
} |
||||
|
.tips { |
||||
|
font-size: 24rpx; |
||||
|
color: #f5222d; |
||||
|
font-weight: 400; |
||||
|
padding: 32rpx; |
||||
|
line-height: 42rpx; |
||||
|
} |
||||
|
.edit-price{ |
||||
|
font-size: 28rpx; |
||||
|
color: #007AFF; |
||||
|
text-align: right; |
||||
|
line-height: 40prx; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.price-tips{ |
||||
|
font-size: 30rpx; |
||||
|
color: #FF5368; |
||||
|
letter-spacing: 0; |
||||
|
text-align: right; |
||||
|
font-weight: 500; |
||||
|
float: right; |
||||
|
padding-right: 32rpx; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
1386
pages/submit-quotation/index.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,85 @@ |
|||||
|
<template> |
||||
|
<view class="check-mall"> |
||||
|
<view> |
||||
|
<uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title=""> |
||||
|
<view class="check-mall-title">切换商城</view> |
||||
|
<view slot="left"></view> |
||||
|
<view slot="right"></view> |
||||
|
</uni-nav-bar> |
||||
|
</view> |
||||
|
<view class="" v-for="(item,index) in 5" :key="index" @click="checkCompany(item)"> |
||||
|
<uni-list> |
||||
|
<uni-list-item> |
||||
|
<!-- 自定义 header --> |
||||
|
<view slot="header" class="slot-box"><image class="slot-image check-mall-image" src="/static/logo.png" mode="widthFix"></image></view> |
||||
|
<!-- 自定义 body --> |
||||
|
<view slot="body" class="slot-box check-mall-text"> |
||||
|
<view class="check-mall-text-textTitle"><text>东莞市隆兴纸业有限公司</text></view> |
||||
|
<view class="check-mall-text-textSubTitle"><text>全部商品39</text></view> |
||||
|
</view> |
||||
|
<view v-if="index === 2" slot="footer" class="slot-box check-mall-sure"><icon type="success_no_circle" size="26" /></view> |
||||
|
</uni-list-item> |
||||
|
</uni-list> |
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { back, go2 } from '@/utils/hook.js' |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
companyData:[], |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
back, |
||||
|
// 选择切换企业 |
||||
|
checkCompany(){ |
||||
|
go2('mall') |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.check-mall { |
||||
|
.check-mall-title { |
||||
|
width: 100%; |
||||
|
font-size: 36rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
text-align: center; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.check-mall-image { |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
border-radius: 50rpx; |
||||
|
} |
||||
|
.check-mall-text { |
||||
|
line-height: 60rpx; |
||||
|
margin-left: 20rpx; |
||||
|
width: 75%; |
||||
|
} |
||||
|
.check-mall-textTitle { |
||||
|
font-size: 30rpx; |
||||
|
color: #333333; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.check-mall-text-textSubTitle { |
||||
|
font-size: 26rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
line-height: 32rpx; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.check-mall-sure { |
||||
|
padding-top: 20rpx; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -1,233 +1,238 @@ |
|||||
<template> |
|
||||
<view class="order-list"> |
|
||||
<uni-segmented-control :current="controlCurrent" :values="controlItems" @clickItem="onClickItem" styleType="text" activeColor="#007AFF"></uni-segmented-control> |
|
||||
<scroll-list style="touch-action: none" ref="orderRef" :option="orderOption" @load="orderUp" @refresh="orderDown"> |
|
||||
<view v-for="(items, index) in orderData" :key="index"> |
|
||||
<view class="list-border list-title-line"> |
|
||||
<text class="list-title">广州民族印刷有限公司</text> |
|
||||
<text class="list-title-Subtitle">{{ items.orderStatus }}</text> |
|
||||
</view> |
|
||||
<view class="list-border list-info-line" v-for="(item, index) in items.orderItemList" :key="index"> |
|
||||
<view class="list-info " :class="index===items.orderItemList.length?'list-border':''"> |
|
||||
<view class=""> |
|
||||
<!-- <image class="list-image" :src="item.productImg" mode=""></image> --> |
|
||||
<image class="list-image" src="../../static/logo.png" mode=""> |
|
||||
</view> |
|
||||
<view class="list-info-contant"> |
|
||||
<view class="list-info-title">{{ item.brandName }}{{ item.categoryName }}</view> |
|
||||
<view class="list-info-text"> |
|
||||
{{ item.categoryName }}/{{ item.brandName }}/{{ item.gramWeight }}g/{{ item.length }}*{{ item.width }}/{{ item.pieceQuantity }}张 |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="list-border list-bottom-contant"> |
|
||||
<view> |
|
||||
<text class="list-bottom-contant-text">交货时间:</text> |
|
||||
<text class="list-bottom-contant-subtext">{{ items.deliveryDay }}天</text> |
|
||||
<text class="list-title-Subtitle">¥{{ items.totalOfferPrice }}</text> |
|
||||
</view> |
|
||||
</view> |
|
||||
<uGap></uGap> |
|
||||
</view> |
|
||||
</scroll-list> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import uGap from '@/components/u-gap/u-gap.vue' |
|
||||
import scrollList from '@/components/scroll-list/scroll-list.vue' |
|
||||
import { getEnterpriseList, gettradingHallList } from '@/apis/trade' |
|
||||
export default { |
|
||||
// props: { |
|
||||
// queryOrderData: { |
|
||||
// type: Object, |
|
||||
// default: () => {} |
|
||||
// } |
|
||||
// }, |
|
||||
components: { |
|
||||
uGap |
|
||||
}, |
|
||||
|
|
||||
data() { |
|
||||
return { |
|
||||
orderPagination: { |
|
||||
pageNum: 0, // 初始会执行一次下拉加载 |
|
||||
pageSize: 10 |
|
||||
}, |
|
||||
orderData: [], |
|
||||
controlCurrent: 0, |
|
||||
controlItems: ['全部', '待确认', '待发货', '已完成'], |
|
||||
orderOption: { |
|
||||
size: 10, |
|
||||
auto: true, |
|
||||
emptyText: '暂无报价信息~', |
|
||||
background: '#F7F8FA', |
|
||||
fontSize: '40rpx' |
|
||||
}, |
|
||||
orderParams: { |
|
||||
cooperationState: 0, |
|
||||
latitude: 23.12616, |
|
||||
longitude: 113.38466, |
|
||||
km: 5 |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
watch: { |
|
||||
// queryOrderData(value) { |
|
||||
// console.log('value', value) |
|
||||
// }, |
|
||||
orderParams: { |
|
||||
handler(val) { |
|
||||
this.getTradingQurty() |
|
||||
}, |
|
||||
deep: true |
|
||||
} |
|
||||
}, |
|
||||
onLoad(option) { |
|
||||
if (option) { |
|
||||
option.latitude && (this.params.latitude = option.latitude) |
|
||||
option.longitude && (this.params.longitude = option.longitude) |
|
||||
option.km && (this.params.km = option.km) |
|
||||
} |
|
||||
this.getTradingQurty() |
|
||||
}, |
|
||||
methods: { |
|
||||
// 获取订单列表 |
|
||||
getTradingQurty() { |
|
||||
return new Promise((resolve, reject) => { |
|
||||
gettradingHallList({ ...this.orderParams, ...this.orderPagination }) |
|
||||
.then(res => { |
|
||||
if (res) { |
|
||||
if (this.orderPagination.pageNum == 1) { |
|
||||
this.orderData = res.records |
|
||||
} else { |
|
||||
this.orderData = this.orderData.concat(res.records) |
|
||||
} |
|
||||
resolve({ list: this.orderData, total: res.total }) |
|
||||
} |
|
||||
}) |
|
||||
.catch(err => { |
|
||||
reject(err) |
|
||||
}) |
|
||||
}) |
|
||||
}, |
|
||||
//订单分页 |
|
||||
orderUp(page) { |
|
||||
this.orderPagination.pageNum++ |
|
||||
this.getTradingQurty() |
|
||||
.then(({ list, total }) => { |
|
||||
this.$refs.orderRef.loadSuccess({ list, total }) |
|
||||
}) |
|
||||
.catch(() => { |
|
||||
this.$refs.orderRef.loadFail() |
|
||||
}) |
|
||||
}, |
|
||||
//订单分页 |
|
||||
orderDown() { |
|
||||
this.orderPagination.pageNum = 1 |
|
||||
this.getTradingQurty() |
|
||||
.then(({ list, total }) => { |
|
||||
this.$refs.orderRef.refreshSuccess({ list, total }) |
|
||||
}) |
|
||||
.catch(() => { |
|
||||
this.$refs.orderRef.refreshFail() |
|
||||
}) |
|
||||
}, |
|
||||
//分段器点击事件 |
|
||||
onClickItem(value) { |
|
||||
console.log(value) |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss"> |
|
||||
.order-list { |
|
||||
margin-bottom: 0px; |
|
||||
background: #FFFFFF; |
|
||||
.list-border { |
|
||||
border-bottom: 2rpx solid #dddddd; |
|
||||
} |
|
||||
.list-title-line { |
|
||||
line-height: 88rpx; |
|
||||
padding-left: 48rpx; |
|
||||
width: 750rpx; |
|
||||
height: 88rpx; |
|
||||
background: #FFFFFF; |
|
||||
} |
|
||||
.list-title { |
|
||||
font-family: PingFangSC-Semibold; |
|
||||
font-size: 30rpx; |
|
||||
color: #000000; |
|
||||
letter-spacing: 0; |
|
||||
font-weight: 600; |
|
||||
} |
|
||||
.list-title-Subtitle { |
|
||||
font-family: PingFangSC-Medium; |
|
||||
font-size: 30rpx; |
|
||||
color: #ff5368; |
|
||||
letter-spacing: 0; |
|
||||
text-align: right; |
|
||||
font-weight: 500; |
|
||||
float: right; |
|
||||
margin-right: 32rpx; |
|
||||
} |
|
||||
.list-info-line { |
|
||||
padding-left: 48rpx; |
|
||||
line-height: 70rpx; |
|
||||
// width: 750rpx; |
|
||||
// height: 88rpx; |
|
||||
background: #FFFFFF; |
|
||||
} |
|
||||
.list-info-contant { |
|
||||
margin-left: 48rpx; |
|
||||
} |
|
||||
.list-info-title { |
|
||||
font-family: PingFangSC-Medium; |
|
||||
font-size: 30rpx; |
|
||||
color: #333333; |
|
||||
letter-spacing: 0; |
|
||||
text-align: left; |
|
||||
font-weight: 550; |
|
||||
} |
|
||||
.list-info-text { |
|
||||
font-family: PingFangSC-Regular; |
|
||||
font-size: 26rpx; |
|
||||
color: #888888; |
|
||||
letter-spacing: 0; |
|
||||
text-align: left; |
|
||||
line-height: 64rpx; |
|
||||
font-weight: 400; |
|
||||
} |
|
||||
.list-image { |
|
||||
width: 100rpx; |
|
||||
height: 100rpx; |
|
||||
margin-top: 20rpx; |
|
||||
} |
|
||||
.list-info { |
|
||||
display: flex; |
|
||||
} |
|
||||
.list-bottom-contant { |
|
||||
line-height: 70rpx; |
|
||||
padding-left: 48rpx; |
|
||||
width: 750rpx; |
|
||||
height: 80rpx; |
|
||||
background: #FFFFFF; |
|
||||
.list-bottom-contant-text{ |
|
||||
font-size: 26rpx; |
|
||||
color: #888888; |
|
||||
letter-spacing: 0; |
|
||||
line-height: 32rpx; |
|
||||
font-weight: 400; |
|
||||
} |
|
||||
.list-bottom-contant-subtext{ |
|
||||
font-size: 26rpx; |
|
||||
color: #333333; |
|
||||
letter-spacing: 0; |
|
||||
line-height: 32rpx; |
|
||||
font-weight: 400; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
||||
|
<template> |
||||
|
<view class="order-list"> |
||||
|
<uni-segmented-control :current="controlCurrent" :values="controlItems" @clickItem="onClickItem" styleType="text" activeColor="#007AFF"></uni-segmented-control> |
||||
|
<scroll-list style="touch-action: none" ref="orderRef" :option="orderOption" @load="orderUp" @refresh="orderDown"> |
||||
|
<view v-for="(items, index) in orderData" :key="index"> |
||||
|
<view class="list-border list-title-line"> |
||||
|
<text class="list-title">广州民族印刷有限公司</text> |
||||
|
<text class="list-title-Subtitle">{{controlItems[items.orderStatus-1] }}</text> |
||||
|
</view> |
||||
|
<view class="list-border list-info-line" v-for="(item, index) in items.orderItemList" :key="index"> |
||||
|
<view class="list-info " :class="index===items.orderItemList.length?'list-border':''"> |
||||
|
<view class=""> |
||||
|
<!-- <image class="list-image" :src="item.productImg" mode=""></image> --> |
||||
|
<image class="list-image" src="../../static/logo.png" mode=""> |
||||
|
</view> |
||||
|
<view class="list-info-contant"> |
||||
|
<view class="list-info-title">{{ item.brandName }}{{ item.categoryName }}</view> |
||||
|
<view class="list-info-text"> |
||||
|
{{ item.categoryName }}/{{ item.brandName }}/{{ item.gramWeight }}g/{{ item.length }}*{{ item.width }}/{{ item.pieceQuantity }}张 |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="list-border list-bottom-contant"> |
||||
|
<view> |
||||
|
<text class="list-bottom-contant-text">交货时间:</text> |
||||
|
<text class="list-bottom-contant-subtext">{{ items.deliveryDay }}天</text> |
||||
|
</view> |
||||
|
<view> |
||||
|
<text class="list-title-Subtitle">¥{{ items.totalOfferPrice }}</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
<uGap></uGap> |
||||
|
</view> |
||||
|
</scroll-list> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import uGap from '@/components/u-gap/u-gap.vue' |
||||
|
import scrollList from '@/components/scroll-list/scroll-list.vue' |
||||
|
import { gettradingHallList } from '@/apis/trade' |
||||
|
export default { |
||||
|
// props: { |
||||
|
// queryOrderData: { |
||||
|
// type: Object, |
||||
|
// default: () => {} |
||||
|
// } |
||||
|
// }, |
||||
|
components: { |
||||
|
uGap |
||||
|
}, |
||||
|
|
||||
|
data() { |
||||
|
return { |
||||
|
orderPagination: { |
||||
|
pageNum: 0, // 初始会执行一次下拉加载 |
||||
|
pageSize: 10 |
||||
|
}, |
||||
|
orderData: [], |
||||
|
controlCurrent: 0, |
||||
|
controlItems: ['全部', '待确认', '待发货', '已完成'], |
||||
|
orderOption: { |
||||
|
size: 10, |
||||
|
auto: true, |
||||
|
emptyText: '暂无报价信息~', |
||||
|
background: '#F7F8FA', |
||||
|
fontSize: '40rpx' |
||||
|
}, |
||||
|
orderParams: { |
||||
|
cooperationState: 0, |
||||
|
latitude: 23.12616, |
||||
|
longitude: 113.38466, |
||||
|
km: 5 |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
// queryOrderData(value) { |
||||
|
// console.log('value', value) |
||||
|
// }, |
||||
|
orderParams: { |
||||
|
handler(val) { |
||||
|
this.getTradingQurty() |
||||
|
}, |
||||
|
deep: true |
||||
|
} |
||||
|
}, |
||||
|
onLoad(option) { |
||||
|
if (option) { |
||||
|
option.latitude && (this.params.latitude = option.latitude) |
||||
|
option.longitude && (this.params.longitude = option.longitude) |
||||
|
option.km && (this.params.km = option.km) |
||||
|
} |
||||
|
this.getTradingQurty() |
||||
|
}, |
||||
|
methods: { |
||||
|
// 获取订单列表 |
||||
|
getTradingQurty() { |
||||
|
return new Promise((resolve, reject) => { |
||||
|
gettradingHallList({ ...this.orderParams, ...this.orderPagination }) |
||||
|
.then(res => { |
||||
|
if (res) { |
||||
|
if (this.orderPagination.pageNum == 1) { |
||||
|
this.orderData = res.records |
||||
|
} else { |
||||
|
this.orderData = this.orderData.concat(res.records) |
||||
|
} |
||||
|
resolve({ list: this.orderData, total: res.total }) |
||||
|
} |
||||
|
}) |
||||
|
.catch(err => { |
||||
|
reject(err) |
||||
|
}) |
||||
|
}) |
||||
|
}, |
||||
|
//订单分页 |
||||
|
orderUp(page) { |
||||
|
this.orderPagination.pageNum++ |
||||
|
this.getTradingQurty() |
||||
|
.then(({ list, total }) => { |
||||
|
this.$refs.orderRef.loadSuccess({ list, total }) |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
this.$refs.orderRef.loadFail() |
||||
|
}) |
||||
|
}, |
||||
|
//订单分页 |
||||
|
orderDown() { |
||||
|
this.orderPagination.pageNum = 1 |
||||
|
this.getTradingQurty() |
||||
|
.then(({ list, total }) => { |
||||
|
this.$refs.orderRef.refreshSuccess({ list, total }) |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
this.$refs.orderRef.refreshFail() |
||||
|
}) |
||||
|
}, |
||||
|
//分段器点击事件 |
||||
|
onClickItem(value) { |
||||
|
console.log(value) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.order-list { |
||||
|
margin-bottom: 0px; |
||||
|
background: #FFFFFF; |
||||
|
.list-border { |
||||
|
border-bottom: 2rpx solid #dddddd; |
||||
|
} |
||||
|
.list-title-line { |
||||
|
line-height: 88rpx; |
||||
|
padding-left: 48rpx; |
||||
|
width: 750rpx; |
||||
|
height: 88rpx; |
||||
|
background: #FFFFFF; |
||||
|
} |
||||
|
.list-title { |
||||
|
font-family: PingFangSC-Semibold; |
||||
|
font-size: 30rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
.list-title-Subtitle { |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 30rpx; |
||||
|
color: #ff5368; |
||||
|
letter-spacing: 0; |
||||
|
text-align: right; |
||||
|
font-weight: 500; |
||||
|
float: right; |
||||
|
margin-right: 32rpx; |
||||
|
} |
||||
|
.list-info-line { |
||||
|
padding-left: 48rpx; |
||||
|
line-height: 70rpx; |
||||
|
// width: 750rpx; |
||||
|
// height: 88rpx; |
||||
|
background: #FFFFFF; |
||||
|
} |
||||
|
.list-info-contant { |
||||
|
margin-left: 48rpx; |
||||
|
} |
||||
|
.list-info-title { |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 30rpx; |
||||
|
color: #333333; |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
font-weight: 550; |
||||
|
} |
||||
|
.list-info-text { |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 26rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
line-height: 64rpx; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.list-image { |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
margin-top: 20rpx; |
||||
|
} |
||||
|
.list-info { |
||||
|
display: flex; |
||||
|
} |
||||
|
.list-bottom-contant { |
||||
|
// line-height: 70rpx; |
||||
|
align-items: center; |
||||
|
padding-left: 48rpx; |
||||
|
width: 750rpx; |
||||
|
height: 80rpx; |
||||
|
background: #FFFFFF; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
.list-bottom-contant-text{ |
||||
|
font-size: 26rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
line-height: 32rpx; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.list-bottom-contant-subtext{ |
||||
|
font-size: 26rpx; |
||||
|
color: #333333; |
||||
|
letter-spacing: 0; |
||||
|
line-height: 32rpx; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -1,289 +1,283 @@ |
|||||
<template> |
|
||||
<view class="quotation-list"> |
|
||||
<scroll-list ref="quotationRef" :option="option" @load="quotationUp" @refresh="quotationDown"> |
|
||||
<view v-for="(item,index) in quotationData" :key="index"> |
|
||||
<view class="list-border list-title-line"> |
|
||||
<text class="list-title">广州民族印刷有限公司</text> |
|
||||
<text class="list-title-Subtitle">待报价</text> |
|
||||
</view> |
|
||||
<view class="list-border list-info-line"> |
|
||||
<view class="list-info list-border"> |
|
||||
<view class=""><image class="list-image" src="../../static/logo.png" mode=""></image></view> |
|
||||
<view class="list-info-contant"> |
|
||||
<view class="list-info-title">金蝶蓝白卡</view> |
|
||||
<view class="list-info-text">白卡纸/金蝶蓝/350g/787*1092/2200张</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="list-info"> |
|
||||
<view class=""><image class="list-image" src="../../static/logo.png" mode=""></image></view> |
|
||||
<view class="list-info-contant"> |
|
||||
<view class="list-info-title">金蝶蓝白卡</view> |
|
||||
<view class="list-info-text">白卡纸/金蝶蓝/350g/787*1092/2200张</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="list-border list-bottom-contant"> |
|
||||
<view> |
|
||||
<text>交货时间:</text> |
|
||||
<text>3天</text> |
|
||||
</view> |
|
||||
<view> |
|
||||
<text>交货区域:</text> |
|
||||
<text>3天</text> |
|
||||
</view> |
|
||||
<view class="offer-class"> |
|
||||
<view class="offer-width"> |
|
||||
<text>报价截止:</text> |
|
||||
<text>3天</text> |
|
||||
</view> |
|
||||
<view> |
|
||||
<button type="primary" class="offer-btn" @click="offerClick()">报价</button> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<uGap></uGap> |
|
||||
</view> |
|
||||
</scroll-list> |
|
||||
<view> |
|
||||
<view class="offer-prices" @click="nativeTo()"> |
|
||||
<image class="my-image" src="../../static/imgs/trade/myPrice.png" mode=""></image> |
|
||||
<view class="my-price"> |
|
||||
我的报价 |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
|
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { getEnterpriseList, gettradingHallList } from '@/apis/trade' |
|
||||
import uGap from '@/components/u-gap/u-gap.vue' |
|
||||
export default { |
|
||||
props: { |
|
||||
queryData: { |
|
||||
type: Object, |
|
||||
default: () => {} |
|
||||
} |
|
||||
}, |
|
||||
components: { |
|
||||
uGap |
|
||||
}, |
|
||||
|
|
||||
data() { |
|
||||
return { |
|
||||
option: { |
|
||||
size: 10, |
|
||||
auto: true, |
|
||||
emptyText: '暂无报价信息~', |
|
||||
background: '#F7F8FA', |
|
||||
fontSize: '40rpx' |
|
||||
}, |
|
||||
params: { |
|
||||
cooperationState: 0, |
|
||||
latitude: 23.12616, |
|
||||
longitude: 113.38466, |
|
||||
km: 5 |
|
||||
}, |
|
||||
pagination: { |
|
||||
pageNum: 0, // 初始会执行一次下拉加载 |
|
||||
pageSize: 10 |
|
||||
}, |
|
||||
quotationData:[] |
|
||||
} |
|
||||
}, |
|
||||
watch: { |
|
||||
params: { |
|
||||
handler(val) { |
|
||||
this.getQuotationQurty() |
|
||||
}, |
|
||||
deep: true |
|
||||
}, |
|
||||
}, |
|
||||
onLoad(option) { |
|
||||
if (option) { |
|
||||
option.latitude && (this.params.latitude = option.latitude) |
|
||||
option.longitude && (this.params.longitude = option.longitude) |
|
||||
option.km && (this.params.km = option.km) |
|
||||
} |
|
||||
this.getQuotationQurty() |
|
||||
}, |
|
||||
methods: { |
|
||||
// 获取报价列表 |
|
||||
getQuotationQurty() { |
|
||||
return new Promise((resolve, reject) => { |
|
||||
getEnterpriseList({ ...this.params, ...this.pagination }) |
|
||||
.then(res => { |
|
||||
if (res) { |
|
||||
if (this.pagination.pageNum == 1) { |
|
||||
// this.quotationData = res.records |
|
||||
this.quotationData = [] |
|
||||
this.quotationData = [{ name: '111', id: '222' }, { name: '111', id: '222' }] |
|
||||
} else { |
|
||||
this.quotationData = this.quotationData.concat(res.records) |
|
||||
} |
|
||||
console.log('this.quotationData', res) |
|
||||
resolve({ list: this.quotationData, total: res.total }) |
|
||||
} |
|
||||
}) |
|
||||
.catch(err => { |
|
||||
reject(err) |
|
||||
}) |
|
||||
}) |
|
||||
}, |
|
||||
|
|
||||
//报价分页 |
|
||||
quotationUp(page) { |
|
||||
this.pagination.pageNum++ |
|
||||
this.getQuotationQurty() |
|
||||
.then(({ list, total }) => { |
|
||||
this.$refs.quotationRef.loadSuccess({ list, total }) |
|
||||
}) |
|
||||
.catch(() => { |
|
||||
this.$refs.quotationRef.loadFail() |
|
||||
}) |
|
||||
}, |
|
||||
//报价分页 |
|
||||
quotationDown() { |
|
||||
this.pagination.pageNum = 1 |
|
||||
this.getQuotationQurty() |
|
||||
.then(({ list, total }) => { |
|
||||
this.$refs.quotationRef.refreshSuccess({ list, total }) |
|
||||
}) |
|
||||
.catch(() => { |
|
||||
this.$refs.quotationRef.refreshFail() |
|
||||
}) |
|
||||
}, |
|
||||
// 报价按钮事件 |
|
||||
offerClick(){ |
|
||||
uni.navigateTo({ |
|
||||
url: '../submit-quotation/index' |
|
||||
}); |
|
||||
}, |
|
||||
// 我的报价页面跳转事件 |
|
||||
nativeTo(){ |
|
||||
console.log(11) |
|
||||
uni.navigateTo({ |
|
||||
url: '../my-offer/index' |
|
||||
}); |
|
||||
}, |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss"> |
|
||||
.quotation-list { |
|
||||
margin-bottom: 0rpx; |
|
||||
.list-border { |
|
||||
// border-top: 1px solid #dddddd; |
|
||||
border-bottom: 2rpx solid #dddddd; |
|
||||
} |
|
||||
.list-title-line { |
|
||||
line-height: 88rpx; |
|
||||
padding-left: 48rpx; |
|
||||
background: #FFFFFF; |
|
||||
} |
|
||||
.list-title { |
|
||||
font-family: PingFangSC-Semibold; |
|
||||
font-size: 30rpx; |
|
||||
color: #000000; |
|
||||
letter-spacing: 0; |
|
||||
font-weight: 600; |
|
||||
} |
|
||||
.list-title-Subtitle { |
|
||||
font-family: PingFangSC-Medium; |
|
||||
font-size: 30rpx; |
|
||||
color: #ff5368; |
|
||||
letter-spacing: 0; |
|
||||
text-align: right; |
|
||||
font-weight: 500; |
|
||||
float: right; |
|
||||
margin-right: 32rpx; |
|
||||
} |
|
||||
.list-info-line { |
|
||||
padding-left: 48rpx; |
|
||||
line-height: 70rpx; |
|
||||
background: #FFFFFF; |
|
||||
} |
|
||||
.list-info-contant { |
|
||||
margin-left: 48rpx; |
|
||||
background: #FFFFFF; |
|
||||
} |
|
||||
.list-info-title { |
|
||||
font-family: PingFangSC-Medium; |
|
||||
font-size: 30rpx; |
|
||||
color: #333333; |
|
||||
letter-spacing: 0; |
|
||||
text-align: left; |
|
||||
font-weight: 550; |
|
||||
} |
|
||||
.list-info-text { |
|
||||
font-family: PingFangSC-Regular; |
|
||||
font-size: 26rpx; |
|
||||
color: #888888; |
|
||||
letter-spacing: 0; |
|
||||
text-align: left; |
|
||||
line-height: 64rpx; |
|
||||
font-weight: 400; |
|
||||
} |
|
||||
.list-image { |
|
||||
width: 100rpx; |
|
||||
height: 100rpx; |
|
||||
margin-top: 20rpx; |
|
||||
} |
|
||||
.list-info { |
|
||||
display: flex; |
|
||||
} |
|
||||
.list-bottom-contant { |
|
||||
line-height: 70rpx; |
|
||||
padding-left: 48rpx; |
|
||||
padding-bottom: 48rpx; |
|
||||
background: #FFFFFF; |
|
||||
} |
|
||||
.my-image { |
|
||||
width: 32rpx; |
|
||||
height: 32rpx; |
|
||||
} |
|
||||
.my-price { |
|
||||
font-family: PingFangSC-Medium; |
|
||||
font-size: 18rpx; |
|
||||
color: #007AFF; |
|
||||
text-align: center; |
|
||||
font-weight: 500; |
|
||||
white-space: nowrap; |
|
||||
padding: 6rpx; |
|
||||
} |
|
||||
.offer-class{ |
|
||||
display: flex; |
|
||||
} |
|
||||
.offer-btn{ |
|
||||
width: 150rpx; |
|
||||
height: 64rpx; |
|
||||
background: #007AFF; |
|
||||
border: 2rpx solid #007AFF; |
|
||||
border-radius: 8rpx; |
|
||||
line-height: 60rpx; |
|
||||
} |
|
||||
.offer-width{ |
|
||||
width: 70%; |
|
||||
} |
|
||||
.offer-prices{ |
|
||||
position: absolute; |
|
||||
z-index: 9999; |
|
||||
right: 32rpx; |
|
||||
bottom: 122rpx; |
|
||||
background-color: #ffffff; |
|
||||
border-radius: 50%; |
|
||||
padding: 10rpx; |
|
||||
text-align: center; |
|
||||
width: 110rpx; |
|
||||
height: 110rpx; |
|
||||
border: 2rpx solid #F9F9F9; |
|
||||
box-shadow: 0rpx 4rpx 34rpx 0rpx rgba(0,0,0,0.2); |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
justify-content: center; |
|
||||
align-items: center; |
|
||||
} |
|
||||
} |
|
||||
|
<template> |
||||
|
<view class="quotation-list"> |
||||
|
<scroll-list ref="quotationRef" :option="option" @load="quotationUp" @refresh="quotationDown"> |
||||
|
<view v-for="(item, index) in quotationData" :key="index"> |
||||
|
<view class="list-border list-title-line"> |
||||
|
<text class="list-title">广州民族印刷有限公司</text> |
||||
|
<text class="list-title-Subtitle">待报价</text> |
||||
|
</view> |
||||
|
<view class="list-border list-info-line"> |
||||
|
<view class="list-info list-border"> |
||||
|
<view class=""><image class="list-image" src="../../static/logo.png" mode=""></image></view> |
||||
|
<view class="list-info-contant"> |
||||
|
<view class="list-info-title">金蝶蓝白卡</view> |
||||
|
<view class="list-info-text">白卡纸/金蝶蓝/350g/787*1092/2200张</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="list-info"> |
||||
|
<view class=""><image class="list-image" src="../../static/logo.png" mode=""></image></view> |
||||
|
<view class="list-info-contant"> |
||||
|
<view class="list-info-title">金蝶蓝白卡</view> |
||||
|
<view class="list-info-text">白卡纸/金蝶蓝/350g/787*1092/2200张</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="list-border list-bottom-contant"> |
||||
|
<view> |
||||
|
<text>交货时间:</text> |
||||
|
<text>3天</text> |
||||
|
</view> |
||||
|
<view> |
||||
|
<text>交货区域:</text> |
||||
|
<text>3天</text> |
||||
|
</view> |
||||
|
<view class="offer-class"> |
||||
|
<view class="offer-width"> |
||||
|
<text>报价截止:</text> |
||||
|
<text>3天</text> |
||||
|
</view> |
||||
|
<view><button type="primary" class="offer-btn" @click="offerClick()">报价</button></view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<uGap></uGap> |
||||
|
</view> |
||||
|
</scroll-list> |
||||
|
<view> |
||||
|
<view class="offer-prices" @click="nativeTo()"> |
||||
|
<image class="my-image" src="../../static/imgs/trade/myPrice.png" mode=""></image> |
||||
|
<view class="my-price">我的报价</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { getEnterpriseList } from '@/apis/trade' |
||||
|
import { back, go2 } from '@/utils/hook.js' |
||||
|
import uGap from '@/components/u-gap/u-gap.vue' |
||||
|
export default { |
||||
|
props: { |
||||
|
queryData: { |
||||
|
type: Object, |
||||
|
default: () => {} |
||||
|
} |
||||
|
}, |
||||
|
components: { |
||||
|
uGap |
||||
|
}, |
||||
|
|
||||
|
data() { |
||||
|
return { |
||||
|
option: { |
||||
|
size: 10, |
||||
|
auto: true, |
||||
|
emptyText: '暂无报价信息~', |
||||
|
background: '#F7F8FA', |
||||
|
fontSize: '40rpx' |
||||
|
}, |
||||
|
params: { |
||||
|
cooperationState: 0, |
||||
|
latitude: 23.12616, |
||||
|
longitude: 113.38466, |
||||
|
km: 5 |
||||
|
}, |
||||
|
pagination: { |
||||
|
pageNum: 0, // 初始会执行一次下拉加载 |
||||
|
pageSize: 10 |
||||
|
}, |
||||
|
quotationData: [] |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
params: { |
||||
|
handler(val) { |
||||
|
this.getQuotationQurty() |
||||
|
}, |
||||
|
deep: true |
||||
|
} |
||||
|
}, |
||||
|
onLoad(option) { |
||||
|
if (option) { |
||||
|
option.latitude && (this.params.latitude = option.latitude) |
||||
|
option.longitude && (this.params.longitude = option.longitude) |
||||
|
option.km && (this.params.km = option.km) |
||||
|
} |
||||
|
this.getQuotationQurty() |
||||
|
}, |
||||
|
methods: { |
||||
|
// 获取报价列表 |
||||
|
getQuotationQurty() { |
||||
|
return new Promise((resolve, reject) => { |
||||
|
getEnterpriseList({ ...this.params, ...this.pagination }) |
||||
|
.then(res => { |
||||
|
if (res) { |
||||
|
if (this.pagination.pageNum == 1) { |
||||
|
// this.quotationData = res.records |
||||
|
this.quotationData = [] |
||||
|
this.quotationData = [{ name: '111', id: '222' }, { name: '111', id: '222' }] |
||||
|
} else { |
||||
|
this.quotationData = this.quotationData.concat(res.records) |
||||
|
} |
||||
|
console.log('this.quotationData', res) |
||||
|
resolve({ list: this.quotationData, total: res.total }) |
||||
|
} |
||||
|
}) |
||||
|
.catch(err => { |
||||
|
reject(err) |
||||
|
}) |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//报价分页 |
||||
|
quotationUp(page) { |
||||
|
this.pagination.pageNum++ |
||||
|
this.getQuotationQurty() |
||||
|
.then(({ list, total }) => { |
||||
|
this.$refs.quotationRef.loadSuccess({ list, total }) |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
this.$refs.quotationRef.loadFail() |
||||
|
}) |
||||
|
}, |
||||
|
//报价分页 |
||||
|
quotationDown() { |
||||
|
this.pagination.pageNum = 1 |
||||
|
this.getQuotationQurty() |
||||
|
.then(({ list, total }) => { |
||||
|
this.$refs.quotationRef.refreshSuccess({ list, total }) |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
this.$refs.quotationRef.refreshFail() |
||||
|
}) |
||||
|
}, |
||||
|
// 报价按钮事件 |
||||
|
offerClick() { |
||||
|
var params = { |
||||
|
title: '提交报价' |
||||
|
} |
||||
|
go2('submit-quotation', params) |
||||
|
}, |
||||
|
// 我的报价页面跳转事件 |
||||
|
nativeTo() { |
||||
|
go2('my-offer') |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.quotation-list { |
||||
|
margin-bottom: 0rpx; |
||||
|
.list-border { |
||||
|
// border-top: 1px solid #dddddd; |
||||
|
border-bottom: 2rpx solid #dddddd; |
||||
|
} |
||||
|
.list-title-line { |
||||
|
line-height: 88rpx; |
||||
|
padding-left: 48rpx; |
||||
|
background: #ffffff; |
||||
|
} |
||||
|
.list-title { |
||||
|
font-family: PingFangSC-Semibold; |
||||
|
font-size: 30rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
.list-title-Subtitle { |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 30rpx; |
||||
|
color: #ff5368; |
||||
|
letter-spacing: 0; |
||||
|
text-align: right; |
||||
|
font-weight: 500; |
||||
|
float: right; |
||||
|
margin-right: 32rpx; |
||||
|
} |
||||
|
.list-info-line { |
||||
|
padding-left: 48rpx; |
||||
|
line-height: 70rpx; |
||||
|
background: #ffffff; |
||||
|
} |
||||
|
.list-info-contant { |
||||
|
margin-left: 48rpx; |
||||
|
background: #ffffff; |
||||
|
} |
||||
|
.list-info-title { |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 30rpx; |
||||
|
color: #333333; |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
font-weight: 550; |
||||
|
} |
||||
|
.list-info-text { |
||||
|
font-family: PingFangSC-Regular; |
||||
|
font-size: 26rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
line-height: 64rpx; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.list-image { |
||||
|
width: 100rpx; |
||||
|
height: 100rpx; |
||||
|
margin-top: 20rpx; |
||||
|
} |
||||
|
.list-info { |
||||
|
display: flex; |
||||
|
} |
||||
|
.list-bottom-contant { |
||||
|
line-height: 70rpx; |
||||
|
padding-left: 48rpx; |
||||
|
padding-bottom: 48rpx; |
||||
|
background: #ffffff; |
||||
|
} |
||||
|
.my-image { |
||||
|
width: 32rpx; |
||||
|
height: 32rpx; |
||||
|
} |
||||
|
.my-price { |
||||
|
font-family: PingFangSC-Medium; |
||||
|
font-size: 18rpx; |
||||
|
color: #007aff; |
||||
|
text-align: center; |
||||
|
font-weight: 500; |
||||
|
white-space: nowrap; |
||||
|
padding: 6rpx; |
||||
|
} |
||||
|
.offer-class { |
||||
|
display: flex; |
||||
|
} |
||||
|
.offer-btn { |
||||
|
width: 150rpx; |
||||
|
height: 64rpx; |
||||
|
background: #007aff; |
||||
|
border: 2rpx solid #007aff; |
||||
|
border-radius: 8rpx; |
||||
|
line-height: 60rpx; |
||||
|
} |
||||
|
.offer-width { |
||||
|
width: 70%; |
||||
|
} |
||||
|
.offer-prices { |
||||
|
position: absolute; |
||||
|
z-index: 9999; |
||||
|
right: 32rpx; |
||||
|
bottom: 122rpx; |
||||
|
background-color: #ffffff; |
||||
|
border-radius: 50%; |
||||
|
padding: 10rpx; |
||||
|
text-align: center; |
||||
|
width: 110rpx; |
||||
|
height: 110rpx; |
||||
|
border: 2rpx solid #f9f9f9; |
||||
|
box-shadow: 0rpx 4rpx 34rpx 0rpx rgba(0, 0, 0, 0.2); |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
} |
||||
</style> |
</style> |
||||
@ -0,0 +1,39 @@ |
|||||
|
## 1.0.0(2021-11-19) |
||||
|
- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) |
||||
|
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-checkbox](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) |
||||
|
## 0.2.5(2021-08-23) |
||||
|
- 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题 |
||||
|
## 0.2.4(2021-08-17) |
||||
|
- 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 |
||||
|
## 0.2.3(2021-08-11) |
||||
|
- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 |
||||
|
## 0.2.2(2021-07-30) |
||||
|
- 优化 在uni-forms组件,与label不对齐的问题 |
||||
|
## 0.2.1(2021-07-27) |
||||
|
- 修复 单选默认值为0不能选中的Bug |
||||
|
## 0.2.0(2021-07-13) |
||||
|
- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) |
||||
|
## 0.1.11(2021-07-06) |
||||
|
- 优化 删除无用日志 |
||||
|
## 0.1.10(2021-07-05) |
||||
|
- 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题 |
||||
|
## 0.1.9(2021-07-05) |
||||
|
- 修复 nvue 黑框样式问题 |
||||
|
## 0.1.8(2021-06-28) |
||||
|
- 修复 selectedTextColor 属性不生效的Bug |
||||
|
## 0.1.7(2021-06-02) |
||||
|
- 新增 map 属性,可以方便映射text/value属性 |
||||
|
## 0.1.6(2021-05-26) |
||||
|
- 修复 不关联服务空间的情况下组件报错的Bug |
||||
|
## 0.1.5(2021-05-12) |
||||
|
- 新增 组件示例地址 |
||||
|
## 0.1.4(2021-04-09) |
||||
|
- 修复 nvue 下无法选中的问题 |
||||
|
## 0.1.3(2021-03-22) |
||||
|
- 新增 disabled属性 |
||||
|
## 0.1.2(2021-02-24) |
||||
|
- 优化 默认颜色显示 |
||||
|
## 0.1.1(2021-02-24) |
||||
|
- 新增 支持nvue |
||||
|
## 0.1.0(2021-02-18) |
||||
|
- “暂无数据”显示居中 |
||||
@ -0,0 +1,817 @@ |
|||||
|
<template> |
||||
|
<view class="uni-data-checklist" :style="{'margin-top':isTop+'px'}"> |
||||
|
<template v-if="!isLocal"> |
||||
|
<view class="uni-data-loading"> |
||||
|
<uni-load-more v-if="!mixinDatacomErrorMessage" status="loading" iconType="snow" :iconSize="18" :content-text="contentText"></uni-load-more> |
||||
|
<text v-else>{{mixinDatacomErrorMessage}}</text> |
||||
|
</view> |
||||
|
</template> |
||||
|
<template v-else> |
||||
|
<checkbox-group v-if="multiple" class="checklist-group" :class="{'is-list':mode==='list' || wrap}" @change="chagne"> |
||||
|
<label class="checklist-box" :class="['is--'+mode,item.selected?'is-checked':'',(disabled || !!item.disabled)?'is-disable':'',index!==0&&mode==='list'?'is-list-border':'']" |
||||
|
:style="item.styleBackgroud" v-for="(item,index) in dataList" :key="index"> |
||||
|
<checkbox class="hidden" hidden :disabled="disabled || !!item.disabled" :value="item[map.value]+''" :checked="item.selected" /> |
||||
|
<view v-if="(mode !=='tag' && mode !== 'list') || ( mode === 'list' && icon === 'left')" class="checkbox__inner" :style="item.styleIcon"> |
||||
|
<view class="checkbox__inner-icon"></view> |
||||
|
</view> |
||||
|
<view class="checklist-content" :class="{'list-content':mode === 'list' && icon ==='left'}"> |
||||
|
<text class="checklist-text" :style="item.styleIconText">{{item[map.text]}}</text> |
||||
|
<view v-if="mode === 'list' && icon === 'right'" class="checkobx__list" :style="item.styleBackgroud"></view> |
||||
|
</view> |
||||
|
</label> |
||||
|
</checkbox-group> |
||||
|
<radio-group v-else class="checklist-group" :class="{'is-list':mode==='list','is-wrap':wrap}" @change="chagne"> |
||||
|
<!-- --> |
||||
|
<label class="checklist-box" :class="['is--'+mode,item.selected?'is-checked':'',(disabled || !!item.disabled)?'is-disable':'',index!==0&&mode==='list'?'is-list-border':'']" |
||||
|
:style="item.styleBackgroud" v-for="(item,index) in dataList" :key="index"> |
||||
|
<radio class="hidden" hidden :disabled="disabled || item.disabled" :value="item[map.value]+''" :checked="item.selected" /> |
||||
|
<view v-if="(mode !=='tag' && mode !== 'list') || ( mode === 'list' && icon === 'left')" class="radio__inner" |
||||
|
:style="item.styleBackgroud"> |
||||
|
<view class="radio__inner-icon" :style="item.styleIcon"></view> |
||||
|
</view> |
||||
|
<view class="checklist-content" :class="{'list-content':mode === 'list' && icon ==='left'}"> |
||||
|
<text class="checklist-text" :style="item.styleIconText">{{item[map.text]}}</text> |
||||
|
<view v-if="mode === 'list' && icon === 'right'" :style="item.styleRightIcon" class="checkobx__list"></view> |
||||
|
</view> |
||||
|
</label> |
||||
|
</radio-group> |
||||
|
</template> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
/** |
||||
|
* DataChecklist 数据选择器 |
||||
|
* @description 通过数据渲染 checkbox 和 radio |
||||
|
* @tutorial https://ext.dcloud.net.cn/plugin?id=xxx |
||||
|
* @property {String} mode = [default| list | button | tag] 显示模式 |
||||
|
* @value default 默认横排模式 |
||||
|
* @value list 列表模式 |
||||
|
* @value button 按钮模式 |
||||
|
* @value tag 标签模式 |
||||
|
* @property {Boolean} multiple = [true|false] 是否多选 |
||||
|
* @property {Array|String|Number} value 默认值 |
||||
|
* @property {Array} localdata 本地数据 ,格式 [{text:'',value:''}] |
||||
|
* @property {Number|String} min 最小选择个数 ,multiple为true时生效 |
||||
|
* @property {Number|String} max 最大选择个数 ,multiple为true时生效 |
||||
|
* @property {Boolean} wrap 是否换行显示 |
||||
|
* @property {String} icon = [left|right] list 列表模式下icon显示位置 |
||||
|
* @property {Boolean} selectedColor 选中颜色 |
||||
|
* @property {Boolean} emptyText 没有数据时显示的文字 ,本地数据无效 |
||||
|
* @property {Boolean} selectedTextColor 选中文本颜色,如不填写则自动显示 |
||||
|
* @property {Object} map 字段映射, 默认 map={text:'text',value:'value'} |
||||
|
* @value left 左侧显示 |
||||
|
* @value right 右侧显示 |
||||
|
* @event {Function} change 选中发生变化触发 |
||||
|
*/ |
||||
|
|
||||
|
export default { |
||||
|
name: 'uniDataChecklist', |
||||
|
mixins: [uniCloud.mixinDatacom || {}], |
||||
|
emits:['input','update:modelValue','change'], |
||||
|
props: { |
||||
|
mode: { |
||||
|
type: String, |
||||
|
default: 'default' |
||||
|
}, |
||||
|
|
||||
|
multiple: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
}, |
||||
|
value: { |
||||
|
type: [Array, String, Number], |
||||
|
default () { |
||||
|
return '' |
||||
|
} |
||||
|
}, |
||||
|
// TODO vue3 |
||||
|
modelValue: { |
||||
|
type: [Array, String, Number], |
||||
|
default() { |
||||
|
return ''; |
||||
|
} |
||||
|
}, |
||||
|
localdata: { |
||||
|
type: Array, |
||||
|
default () { |
||||
|
return [] |
||||
|
} |
||||
|
}, |
||||
|
min: { |
||||
|
type: [Number, String], |
||||
|
default: '' |
||||
|
}, |
||||
|
max: { |
||||
|
type: [Number, String], |
||||
|
default: '' |
||||
|
}, |
||||
|
wrap: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
}, |
||||
|
icon: { |
||||
|
type: String, |
||||
|
default: 'left' |
||||
|
}, |
||||
|
selectedColor: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
selectedTextColor: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
emptyText:{ |
||||
|
type: String, |
||||
|
default: '暂无数据' |
||||
|
}, |
||||
|
disabled:{ |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
}, |
||||
|
map:{ |
||||
|
type: Object, |
||||
|
default(){ |
||||
|
return { |
||||
|
text:'text', |
||||
|
value:'value' |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
localdata: { |
||||
|
handler(newVal) { |
||||
|
this.range = newVal |
||||
|
this.dataList = this.getDataList(this.getSelectedValue(newVal)) |
||||
|
}, |
||||
|
deep: true |
||||
|
}, |
||||
|
mixinDatacomResData(newVal) { |
||||
|
this.range = newVal |
||||
|
this.dataList = this.getDataList(this.getSelectedValue(newVal)) |
||||
|
}, |
||||
|
value(newVal) { |
||||
|
this.dataList = this.getDataList(newVal) |
||||
|
// fix by mehaotian is_reset 在 uni-forms 中定义 |
||||
|
if(!this.is_reset){ |
||||
|
this.is_reset = false |
||||
|
this.formItem && this.formItem.setValue(newVal) |
||||
|
} |
||||
|
}, |
||||
|
modelValue(newVal) { |
||||
|
this.dataList = this.getDataList(newVal); |
||||
|
if(!this.is_reset){ |
||||
|
this.is_reset = false |
||||
|
this.formItem && this.formItem.setValue(newVal) |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
dataList: [], |
||||
|
range: [], |
||||
|
contentText: { |
||||
|
contentdown: '查看更多', |
||||
|
contentrefresh: '加载中', |
||||
|
contentnomore: '没有更多' |
||||
|
}, |
||||
|
isLocal:true, |
||||
|
styles: { |
||||
|
selectedColor: '#2979ff', |
||||
|
selectedTextColor: '#666', |
||||
|
}, |
||||
|
isTop:0 |
||||
|
}; |
||||
|
}, |
||||
|
computed:{ |
||||
|
dataValue(){ |
||||
|
if(this.value === '')return this.modelValue |
||||
|
if(this.modelValue === '') return this.value |
||||
|
return this.value |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.form = this.getForm('uniForms') |
||||
|
this.formItem = this.getForm('uniFormsItem') |
||||
|
// this.formItem && this.formItem.setValue(this.value) |
||||
|
|
||||
|
if (this.formItem) { |
||||
|
this.isTop = 6 |
||||
|
if (this.formItem.name) { |
||||
|
// 如果存在name添加默认值,否则formData 中不存在这个字段不校验 |
||||
|
if(!this.is_reset){ |
||||
|
this.is_reset = false |
||||
|
this.formItem.setValue(this.dataValue) |
||||
|
} |
||||
|
this.rename = this.formItem.name |
||||
|
this.form.inputChildrens.push(this) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (this.localdata && this.localdata.length !== 0) { |
||||
|
this.isLocal = true |
||||
|
this.range = this.localdata |
||||
|
this.dataList = this.getDataList(this.getSelectedValue(this.range)) |
||||
|
} else { |
||||
|
if (this.collection) { |
||||
|
this.isLocal = false |
||||
|
this.loadData() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
loadData() { |
||||
|
this.mixinDatacomGet().then(res=>{ |
||||
|
this.mixinDatacomResData = res.result.data |
||||
|
if(this.mixinDatacomResData.length === 0){ |
||||
|
this.isLocal = false |
||||
|
this.mixinDatacomErrorMessage = this.emptyText |
||||
|
}else{ |
||||
|
this.isLocal = true |
||||
|
} |
||||
|
}).catch(err=>{ |
||||
|
this.mixinDatacomErrorMessage = err.message |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* 获取父元素实例 |
||||
|
*/ |
||||
|
getForm(name = 'uniForms') { |
||||
|
let parent = this.$parent; |
||||
|
let parentName = parent.$options.name; |
||||
|
while (parentName !== name) { |
||||
|
parent = parent.$parent; |
||||
|
if (!parent) return false |
||||
|
parentName = parent.$options.name; |
||||
|
} |
||||
|
return parent; |
||||
|
}, |
||||
|
chagne(e) { |
||||
|
const values = e.detail.value |
||||
|
|
||||
|
let detail = { |
||||
|
value: [], |
||||
|
data: [] |
||||
|
} |
||||
|
|
||||
|
if (this.multiple) { |
||||
|
this.range.forEach(item => { |
||||
|
|
||||
|
if (values.includes(item[this.map.value] + '')) { |
||||
|
detail.value.push(item[this.map.value]) |
||||
|
detail.data.push(item) |
||||
|
} |
||||
|
}) |
||||
|
} else { |
||||
|
const range = this.range.find(item => (item[this.map.value] + '') === values) |
||||
|
if (range) { |
||||
|
detail = { |
||||
|
value: range[this.map.value], |
||||
|
data: range |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
this.formItem && this.formItem.setValue(detail.value) |
||||
|
// TODO 兼容 vue2 |
||||
|
this.$emit('input', detail.value); |
||||
|
// // TOTO 兼容 vue3 |
||||
|
this.$emit('update:modelValue', detail.value); |
||||
|
this.$emit('change', { |
||||
|
detail |
||||
|
}) |
||||
|
if (this.multiple) { |
||||
|
// 如果 v-model 没有绑定 ,则走内部逻辑 |
||||
|
// if (this.value.length === 0) { |
||||
|
this.dataList = this.getDataList(detail.value, true) |
||||
|
// } |
||||
|
} else { |
||||
|
this.dataList = this.getDataList(detail.value) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 获取渲染的新数组 |
||||
|
* @param {Object} value 选中内容 |
||||
|
*/ |
||||
|
getDataList(value) { |
||||
|
// 解除引用关系,破坏原引用关系,避免污染源数据 |
||||
|
let dataList = JSON.parse(JSON.stringify(this.range)) |
||||
|
let list = [] |
||||
|
if (this.multiple) { |
||||
|
if (!Array.isArray(value)) { |
||||
|
value = [] |
||||
|
} |
||||
|
} |
||||
|
dataList.forEach((item, index) => { |
||||
|
item.disabled = item.disable || item.disabled || false |
||||
|
if (this.multiple) { |
||||
|
if (value.length > 0) { |
||||
|
let have = value.find(val => val === item[this.map.value]) |
||||
|
item.selected = have !== undefined |
||||
|
} else { |
||||
|
item.selected = false |
||||
|
} |
||||
|
} else { |
||||
|
item.selected = value === item[this.map.value] |
||||
|
} |
||||
|
|
||||
|
list.push(item) |
||||
|
}) |
||||
|
return this.setRange(list) |
||||
|
}, |
||||
|
/** |
||||
|
* 处理最大最小值 |
||||
|
* @param {Object} list |
||||
|
*/ |
||||
|
setRange(list) { |
||||
|
let selectList = list.filter(item => item.selected) |
||||
|
let min = Number(this.min) || 0 |
||||
|
let max = Number(this.max) || '' |
||||
|
list.forEach((item, index) => { |
||||
|
if (this.multiple) { |
||||
|
if (selectList.length <= min) { |
||||
|
let have = selectList.find(val => val[this.map.value] === item[this.map.value]) |
||||
|
if (have !== undefined) { |
||||
|
item.disabled = true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (selectList.length >= max && max !== '') { |
||||
|
let have = selectList.find(val => val[this.map.value] === item[this.map.value]) |
||||
|
if (have === undefined) { |
||||
|
item.disabled = true |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
this.setStyles(item, index) |
||||
|
list[index] = item |
||||
|
}) |
||||
|
return list |
||||
|
}, |
||||
|
/** |
||||
|
* 设置 class |
||||
|
* @param {Object} item |
||||
|
* @param {Object} index |
||||
|
*/ |
||||
|
setStyles(item, index) { |
||||
|
// 设置自定义样式 |
||||
|
item.styleBackgroud = this.setStyleBackgroud(item) |
||||
|
item.styleIcon = this.setStyleIcon(item) |
||||
|
item.styleIconText = this.setStyleIconText(item) |
||||
|
item.styleRightIcon = this.setStyleRightIcon(item) |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 获取选中值 |
||||
|
* @param {Object} range |
||||
|
*/ |
||||
|
getSelectedValue(range) { |
||||
|
if (!this.multiple) return this.dataValue |
||||
|
let selectedArr = [] |
||||
|
range.forEach((item) => { |
||||
|
if (item.selected) { |
||||
|
selectedArr.push(item[this.map.value]) |
||||
|
} |
||||
|
}) |
||||
|
return this.dataValue.length > 0 ? this.dataValue : selectedArr |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 设置背景样式 |
||||
|
*/ |
||||
|
setStyleBackgroud(item) { |
||||
|
let styles = {} |
||||
|
let selectedColor = this.selectedColor?this.selectedColor:'#2979ff' |
||||
|
if (this.mode !== 'list') { |
||||
|
styles['border-color'] = item.selected?selectedColor:'#DCDFE6' |
||||
|
} |
||||
|
if (this.mode === 'tag') { |
||||
|
styles['background-color'] = item.selected? selectedColor:'#f5f5f5' |
||||
|
} |
||||
|
let classles = '' |
||||
|
for (let i in styles) { |
||||
|
classles += `${i}:${styles[i]};` |
||||
|
} |
||||
|
return classles |
||||
|
}, |
||||
|
setStyleIcon(item) { |
||||
|
let styles = {} |
||||
|
let classles = '' |
||||
|
let selectedColor = this.selectedColor?this.selectedColor:'#2979ff' |
||||
|
styles['background-color'] = item.selected?selectedColor:'#fff' |
||||
|
styles['border-color'] = item.selected?selectedColor:'#DCDFE6' |
||||
|
|
||||
|
if(!item.selected && item.disabled){ |
||||
|
styles['background-color'] = '#F2F6FC' |
||||
|
styles['border-color'] = item.selected?selectedColor:'#DCDFE6' |
||||
|
} |
||||
|
|
||||
|
for (let i in styles) { |
||||
|
classles += `${i}:${styles[i]};` |
||||
|
} |
||||
|
return classles |
||||
|
}, |
||||
|
setStyleIconText(item) { |
||||
|
let styles = {} |
||||
|
let classles = '' |
||||
|
let selectedColor = this.selectedColor?this.selectedColor:'#2979ff' |
||||
|
if (this.mode === 'tag') { |
||||
|
styles.color = item.selected?(this.selectedTextColor?this.selectedTextColor:'#fff'):'#666' |
||||
|
} else { |
||||
|
styles.color = item.selected?(this.selectedTextColor?this.selectedTextColor:selectedColor):'#666' |
||||
|
} |
||||
|
if(!item.selected && item.disabled){ |
||||
|
styles.color = '#999' |
||||
|
} |
||||
|
|
||||
|
for (let i in styles) { |
||||
|
classles += `${i}:${styles[i]};` |
||||
|
} |
||||
|
return classles |
||||
|
}, |
||||
|
setStyleRightIcon(item) { |
||||
|
let styles = {} |
||||
|
let classles = '' |
||||
|
if (this.mode === 'list') { |
||||
|
styles['border-color'] = item.selected?this.styles.selectedColor:'#DCDFE6' |
||||
|
} |
||||
|
for (let i in styles) { |
||||
|
classles += `${i}:${styles[i]};` |
||||
|
} |
||||
|
|
||||
|
return classles |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
$checked-color: #2979ff; |
||||
|
$border-color: #DCDFE6; |
||||
|
$disable:0.4; |
||||
|
|
||||
|
@mixin flex { |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
} |
||||
|
|
||||
|
.uni-data-loading { |
||||
|
@include flex; |
||||
|
flex-direction: row; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
height: 36px; |
||||
|
padding-left: 10px; |
||||
|
color: #999; |
||||
|
} |
||||
|
|
||||
|
.uni-data-checklist { |
||||
|
position: relative; |
||||
|
z-index: 0; |
||||
|
flex: 1; |
||||
|
// 多选样式 |
||||
|
.checklist-group { |
||||
|
@include flex; |
||||
|
flex-direction: row; |
||||
|
flex-wrap: wrap; |
||||
|
|
||||
|
&.is-list { |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
.checklist-box { |
||||
|
@include flex; |
||||
|
flex-direction: row; |
||||
|
align-items: center; |
||||
|
position: relative; |
||||
|
margin: 5px 0; |
||||
|
margin-right: 25px; |
||||
|
|
||||
|
.hidden { |
||||
|
position: absolute; |
||||
|
opacity: 0; |
||||
|
} |
||||
|
|
||||
|
// 文字样式 |
||||
|
.checklist-content { |
||||
|
@include flex; |
||||
|
flex: 1; |
||||
|
flex-direction: row; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
.checklist-text { |
||||
|
font-size: 14px; |
||||
|
color: #666; |
||||
|
margin-left: 5px; |
||||
|
line-height: 14px; |
||||
|
} |
||||
|
|
||||
|
.checkobx__list { |
||||
|
border-right-width: 1px; |
||||
|
border-right-color: #007aff; |
||||
|
border-right-style: solid; |
||||
|
border-bottom-width:1px; |
||||
|
border-bottom-color: #007aff; |
||||
|
border-bottom-style: solid; |
||||
|
height: 12px; |
||||
|
width: 6px; |
||||
|
left: -5px; |
||||
|
transform-origin: center; |
||||
|
transform: rotate(45deg); |
||||
|
opacity: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 多选样式 |
||||
|
.checkbox__inner { |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
flex-shrink: 0; |
||||
|
box-sizing: border-box; |
||||
|
/* #endif */ |
||||
|
position: relative; |
||||
|
width: 16px; |
||||
|
height: 16px; |
||||
|
border: 1px solid $border-color; |
||||
|
border-radius: 4px; |
||||
|
background-color: #fff; |
||||
|
z-index: 1; |
||||
|
.checkbox__inner-icon { |
||||
|
position: absolute; |
||||
|
/* #ifdef APP-NVUE */ |
||||
|
top: 2px; |
||||
|
/* #endif */ |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
top: 1px; |
||||
|
/* #endif */ |
||||
|
left: 5px; |
||||
|
height: 8px; |
||||
|
width: 4px; |
||||
|
border-right-width: 1px; |
||||
|
border-right-color: #fff; |
||||
|
border-right-style: solid; |
||||
|
border-bottom-width:1px ; |
||||
|
border-bottom-color: #fff; |
||||
|
border-bottom-style: solid; |
||||
|
opacity: 0; |
||||
|
transform-origin: center; |
||||
|
transform: rotate(40deg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 单选样式 |
||||
|
.radio__inner { |
||||
|
@include flex; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
flex-shrink: 0; |
||||
|
box-sizing: border-box; |
||||
|
/* #endif */ |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
position: relative; |
||||
|
width: 16px; |
||||
|
height: 16px; |
||||
|
border: 1px solid $border-color; |
||||
|
border-radius: 16px; |
||||
|
background-color: #fff; |
||||
|
z-index: 1; |
||||
|
|
||||
|
.radio__inner-icon { |
||||
|
width: 8px; |
||||
|
height: 8px; |
||||
|
border-radius: 10px; |
||||
|
opacity: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 默认样式 |
||||
|
&.is--default { |
||||
|
|
||||
|
// 禁用 |
||||
|
&.is-disable { |
||||
|
/* #ifdef H5 */ |
||||
|
cursor: not-allowed; |
||||
|
/* #endif */ |
||||
|
.checkbox__inner { |
||||
|
background-color: #F2F6FC; |
||||
|
border-color: $border-color; |
||||
|
/* #ifdef H5 */ |
||||
|
cursor: not-allowed; |
||||
|
/* #endif */ |
||||
|
} |
||||
|
|
||||
|
.radio__inner { |
||||
|
background-color: #F2F6FC; |
||||
|
border-color: $border-color; |
||||
|
} |
||||
|
.checklist-text { |
||||
|
color: #999; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 选中 |
||||
|
&.is-checked { |
||||
|
.checkbox__inner { |
||||
|
border-color: $checked-color; |
||||
|
background-color: $checked-color; |
||||
|
|
||||
|
.checkbox__inner-icon { |
||||
|
opacity: 1; |
||||
|
transform: rotate(45deg); |
||||
|
} |
||||
|
} |
||||
|
.radio__inner { |
||||
|
border-color: $checked-color; |
||||
|
.radio__inner-icon { |
||||
|
opacity: 1; |
||||
|
background-color: $checked-color; |
||||
|
} |
||||
|
} |
||||
|
.checklist-text { |
||||
|
color: $checked-color; |
||||
|
} |
||||
|
// 选中禁用 |
||||
|
&.is-disable { |
||||
|
.checkbox__inner { |
||||
|
opacity: $disable; |
||||
|
} |
||||
|
|
||||
|
.checklist-text { |
||||
|
opacity: $disable; |
||||
|
} |
||||
|
.radio__inner { |
||||
|
opacity: $disable; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 按钮样式 |
||||
|
&.is--button { |
||||
|
margin-right: 10px; |
||||
|
padding: 5px 10px; |
||||
|
border: 1px $border-color solid; |
||||
|
border-radius: 3px; |
||||
|
transition: border-color 0.2s; |
||||
|
|
||||
|
// 禁用 |
||||
|
&.is-disable { |
||||
|
/* #ifdef H5 */ |
||||
|
cursor: not-allowed; |
||||
|
/* #endif */ |
||||
|
border: 1px #eee solid; |
||||
|
opacity: $disable; |
||||
|
.checkbox__inner { |
||||
|
background-color: #F2F6FC; |
||||
|
border-color: $border-color; |
||||
|
/* #ifdef H5 */ |
||||
|
cursor: not-allowed; |
||||
|
/* #endif */ |
||||
|
} |
||||
|
.radio__inner { |
||||
|
background-color: #F2F6FC; |
||||
|
border-color: $border-color; |
||||
|
/* #ifdef H5 */ |
||||
|
cursor: not-allowed; |
||||
|
/* #endif */ |
||||
|
} |
||||
|
.checklist-text { |
||||
|
color: #999; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&.is-checked { |
||||
|
border-color: $checked-color; |
||||
|
.checkbox__inner { |
||||
|
border-color: $checked-color; |
||||
|
background-color: $checked-color; |
||||
|
.checkbox__inner-icon { |
||||
|
opacity: 1; |
||||
|
transform: rotate(45deg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.radio__inner { |
||||
|
border-color: $checked-color; |
||||
|
|
||||
|
.radio__inner-icon { |
||||
|
opacity: 1; |
||||
|
background-color: $checked-color; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.checklist-text { |
||||
|
color: $checked-color; |
||||
|
} |
||||
|
|
||||
|
// 选中禁用 |
||||
|
&.is-disable { |
||||
|
opacity: $disable; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 标签样式 |
||||
|
&.is--tag { |
||||
|
margin-right: 10px; |
||||
|
padding: 5px 10px; |
||||
|
border: 1px $border-color solid; |
||||
|
border-radius: 3px; |
||||
|
background-color: #f5f5f5; |
||||
|
|
||||
|
.checklist-text { |
||||
|
margin: 0; |
||||
|
color: #666; |
||||
|
} |
||||
|
|
||||
|
// 禁用 |
||||
|
&.is-disable { |
||||
|
/* #ifdef H5 */ |
||||
|
cursor: not-allowed; |
||||
|
/* #endif */ |
||||
|
opacity: $disable; |
||||
|
} |
||||
|
|
||||
|
&.is-checked { |
||||
|
background-color: $checked-color; |
||||
|
border-color: $checked-color; |
||||
|
|
||||
|
.checklist-text { |
||||
|
color: #fff; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
// 列表样式 |
||||
|
&.is--list { |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
padding: 10px 15px; |
||||
|
padding-left: 0; |
||||
|
margin: 0; |
||||
|
|
||||
|
&.is-list-border { |
||||
|
border-top: 1px #eee solid; |
||||
|
} |
||||
|
|
||||
|
// 禁用 |
||||
|
&.is-disable { |
||||
|
/* #ifdef H5 */ |
||||
|
cursor: not-allowed; |
||||
|
/* #endif */ |
||||
|
.checkbox__inner { |
||||
|
background-color: #F2F6FC; |
||||
|
border-color: $border-color; |
||||
|
/* #ifdef H5 */ |
||||
|
cursor: not-allowed; |
||||
|
/* #endif */ |
||||
|
} |
||||
|
.checklist-text { |
||||
|
color: #999; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&.is-checked { |
||||
|
.checkbox__inner { |
||||
|
border-color: $checked-color; |
||||
|
background-color: $checked-color; |
||||
|
|
||||
|
.checkbox__inner-icon { |
||||
|
opacity: 1; |
||||
|
transform: rotate(45deg); |
||||
|
} |
||||
|
} |
||||
|
.radio__inner { |
||||
|
.radio__inner-icon { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
} |
||||
|
.checklist-text { |
||||
|
color: $checked-color; |
||||
|
} |
||||
|
|
||||
|
.checklist-content { |
||||
|
.checkobx__list { |
||||
|
opacity: 1; |
||||
|
border-color: $checked-color; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 选中禁用 |
||||
|
&.is-disable { |
||||
|
.checkbox__inner { |
||||
|
opacity: $disable; |
||||
|
} |
||||
|
|
||||
|
.checklist-text { |
||||
|
opacity: $disable; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,87 @@ |
|||||
|
{ |
||||
|
"id": "uni-data-checkbox", |
||||
|
"displayName": "uni-data-checkbox 数据选择器", |
||||
|
"version": "1.0.0", |
||||
|
"description": "通过数据驱动的单选框和复选框", |
||||
|
"keywords": [ |
||||
|
"uni-ui", |
||||
|
"checkbox", |
||||
|
"单选", |
||||
|
"多选", |
||||
|
"单选多选" |
||||
|
], |
||||
|
"repository": "https://github.com/dcloudio/uni-ui", |
||||
|
"engines": { |
||||
|
"HBuilderX": "^3.1.1" |
||||
|
}, |
||||
|
"directories": { |
||||
|
"example": "../../temps/example_temps" |
||||
|
}, |
||||
|
"dcloudext": { |
||||
|
"category": [ |
||||
|
"前端组件", |
||||
|
"通用组件" |
||||
|
], |
||||
|
"sale": { |
||||
|
"regular": { |
||||
|
"price": "0.00" |
||||
|
}, |
||||
|
"sourcecode": { |
||||
|
"price": "0.00" |
||||
|
} |
||||
|
}, |
||||
|
"contact": { |
||||
|
"qq": "" |
||||
|
}, |
||||
|
"declaration": { |
||||
|
"ads": "无", |
||||
|
"data": "无", |
||||
|
"permissions": "无" |
||||
|
}, |
||||
|
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" |
||||
|
}, |
||||
|
"uni_modules": { |
||||
|
"dependencies": ["uni-load-more","uni-scss"], |
||||
|
"encrypt": [], |
||||
|
"platforms": { |
||||
|
"cloud": { |
||||
|
"tcb": "y", |
||||
|
"aliyun": "y" |
||||
|
}, |
||||
|
"client": { |
||||
|
"App": { |
||||
|
"app-vue": "y", |
||||
|
"app-nvue": "y" |
||||
|
}, |
||||
|
"H5-mobile": { |
||||
|
"Safari": "y", |
||||
|
"Android Browser": "y", |
||||
|
"微信浏览器(Android)": "y", |
||||
|
"QQ浏览器(Android)": "y" |
||||
|
}, |
||||
|
"H5-pc": { |
||||
|
"Chrome": "y", |
||||
|
"IE": "y", |
||||
|
"Edge": "y", |
||||
|
"Firefox": "y", |
||||
|
"Safari": "y" |
||||
|
}, |
||||
|
"小程序": { |
||||
|
"微信": "y", |
||||
|
"阿里": "y", |
||||
|
"百度": "y", |
||||
|
"字节跳动": "y", |
||||
|
"QQ": "y" |
||||
|
}, |
||||
|
"快应用": { |
||||
|
"华为": "u", |
||||
|
"联盟": "u" |
||||
|
}, |
||||
|
"Vue": { |
||||
|
"vue2": "y", |
||||
|
"vue3": "y" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
|
||||
|
|
||||
|
## DataCheckbox 数据驱动的单选复选框 |
||||
|
> **组件名:uni-data-checkbox** |
||||
|
> 代码块: `uDataCheckbox` |
||||
|
|
||||
|
|
||||
|
本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括: |
||||
|
|
||||
|
1. 数据绑定型组件:给本组件绑定一个data,会自动渲染一组候选内容。再以往,开发者需要编写不少代码实现类似功能 |
||||
|
2. 自动的表单校验:组件绑定了data,且符合[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)组件的表单校验规范,搭配使用会自动实现表单校验 |
||||
|
3. 本组件合并了单选多选 |
||||
|
4. 本组件有若干风格选择,如普通的单选多选框、并列button风格、tag风格。开发者可以快速选择需要的风格。但作为一个封装组件,样式代码虽然不用自己写了,却会牺牲一定的样式自定义性 |
||||
|
|
||||
|
在uniCloud开发中,`DB Schema`中配置了enum枚举等类型后,在web控制台的[自动生成表单](https://uniapp.dcloud.io/uniCloud/schema?id=autocode)功能中,会自动生成``uni-data-checkbox``组件并绑定好data |
||||
|
|
||||
|
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) |
||||
|
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 |
||||
@ -0,0 +1,17 @@ |
|||||
|
## 1.2.2(2021-12-29) |
||||
|
- 更新 组件依赖 |
||||
|
## 1.2.1(2021-11-19) |
||||
|
- 修复 阴影颜色不正确的bug |
||||
|
## 1.2.0(2021-11-19) |
||||
|
- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) |
||||
|
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fab](https://uniapp.dcloud.io/component/uniui/uni-fab) |
||||
|
## 1.1.1(2021-11-09) |
||||
|
- 新增 提供组件设计资源,组件样式调整 |
||||
|
## 1.1.0(2021-07-30) |
||||
|
- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) |
||||
|
## 1.0.7(2021-05-12) |
||||
|
- 新增 组件示例地址 |
||||
|
## 1.0.6(2021-02-05) |
||||
|
- 调整为uni_modules目录规范 |
||||
|
- 优化 按钮背景色调整 |
||||
|
- 优化 兼容pc端 |
||||
@ -0,0 +1,475 @@ |
|||||
|
<template> |
||||
|
<view class="uni-cursor-point"> |
||||
|
<view v-if="popMenu && (leftBottom||rightBottom||leftTop||rightTop) && content.length > 0" :class="{ |
||||
|
'uni-fab--leftBottom': leftBottom, |
||||
|
'uni-fab--rightBottom': rightBottom, |
||||
|
'uni-fab--leftTop': leftTop, |
||||
|
'uni-fab--rightTop': rightTop |
||||
|
}" class="uni-fab"> |
||||
|
<view :class="{ |
||||
|
'uni-fab__content--left': horizontal === 'left', |
||||
|
'uni-fab__content--right': horizontal === 'right', |
||||
|
'uni-fab__content--flexDirection': direction === 'vertical', |
||||
|
'uni-fab__content--flexDirectionStart': flexDirectionStart, |
||||
|
'uni-fab__content--flexDirectionEnd': flexDirectionEnd, |
||||
|
'uni-fab__content--other-platform': !isAndroidNvue |
||||
|
}" :style="{ width: boxWidth, height: boxHeight, backgroundColor: styles.backgroundColor }" |
||||
|
class="uni-fab__content" elevation="5"> |
||||
|
<view v-if="flexDirectionStart || horizontalLeft" class="uni-fab__item uni-fab__item--first" /> |
||||
|
<view v-for="(item, index) in content" :key="index" :class="{ 'uni-fab__item--active': isShow }" |
||||
|
class="uni-fab__item" @click="_onItemClick(index, item)"> |
||||
|
<image :src="item.active ? item.selectedIconPath : item.iconPath" class="uni-fab__item-image" |
||||
|
mode="aspectFit" /> |
||||
|
<text class="uni-fab__item-text" |
||||
|
:style="{ color: item.active ? styles.selectedColor : styles.color }">{{ item.text }}</text> |
||||
|
</view> |
||||
|
<view v-if="flexDirectionEnd || horizontalRight" class="uni-fab__item uni-fab__item--first" /> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view :class="{ |
||||
|
'uni-fab__circle--leftBottom': leftBottom, |
||||
|
'uni-fab__circle--rightBottom': rightBottom, |
||||
|
'uni-fab__circle--leftTop': leftTop, |
||||
|
'uni-fab__circle--rightTop': rightTop, |
||||
|
'uni-fab__content--other-platform': !isAndroidNvue |
||||
|
}" class="uni-fab__circle uni-fab__plus" :style="{ 'background-color': styles.buttonColor }" @click="_onClick"> |
||||
|
<uni-icons class="fab-circle-icon" type="plusempty" :color="styles.iconColor" size="32" |
||||
|
:class="{'uni-fab__plus--active': isShow && content.length > 0}"></uni-icons> |
||||
|
<!-- <view class="fab-circle-v" :class="{'uni-fab__plus--active': isShow && content.length > 0}"></view> |
||||
|
<view class="fab-circle-h" :class="{'uni-fab__plus--active': isShow && content.length > 0}"></view> --> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
let platform = 'other' |
||||
|
// #ifdef APP-NVUE |
||||
|
platform = uni.getSystemInfoSync().platform |
||||
|
// #endif |
||||
|
|
||||
|
/** |
||||
|
* Fab 悬浮按钮 |
||||
|
* @description 点击可展开一个图形按钮菜单 |
||||
|
* @tutorial https://ext.dcloud.net.cn/plugin?id=144 |
||||
|
* @property {Object} pattern 可选样式配置项 |
||||
|
* @property {Object} horizontal = [left | right] 水平对齐方式 |
||||
|
* @value left 左对齐 |
||||
|
* @value right 右对齐 |
||||
|
* @property {Object} vertical = [bottom | top] 垂直对齐方式 |
||||
|
* @value bottom 下对齐 |
||||
|
* @value top 上对齐 |
||||
|
* @property {Object} direction = [horizontal | vertical] 展开菜单显示方式 |
||||
|
* @value horizontal 水平显示 |
||||
|
* @value vertical 垂直显示 |
||||
|
* @property {Array} content 展开菜单内容配置项 |
||||
|
* @property {Boolean} popMenu 是否使用弹出菜单 |
||||
|
* @event {Function} trigger 展开菜单点击事件,返回点击信息 |
||||
|
* @event {Function} fabClick 悬浮按钮点击事件 |
||||
|
*/ |
||||
|
export default { |
||||
|
name: 'UniFab', |
||||
|
emits: ['fabClick', 'trigger'], |
||||
|
props: { |
||||
|
pattern: { |
||||
|
type: Object, |
||||
|
default () { |
||||
|
return {} |
||||
|
} |
||||
|
}, |
||||
|
horizontal: { |
||||
|
type: String, |
||||
|
default: 'left' |
||||
|
}, |
||||
|
vertical: { |
||||
|
type: String, |
||||
|
default: 'bottom' |
||||
|
}, |
||||
|
direction: { |
||||
|
type: String, |
||||
|
default: 'horizontal' |
||||
|
}, |
||||
|
content: { |
||||
|
type: Array, |
||||
|
default () { |
||||
|
return [] |
||||
|
} |
||||
|
}, |
||||
|
show: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
}, |
||||
|
popMenu: { |
||||
|
type: Boolean, |
||||
|
default: true |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
fabShow: false, |
||||
|
isShow: false, |
||||
|
isAndroidNvue: platform === 'android', |
||||
|
styles: { |
||||
|
color: '#3c3e49', |
||||
|
selectedColor: '#007AFF', |
||||
|
backgroundColor: '#fff', |
||||
|
buttonColor: '#007AFF', |
||||
|
iconColor: '#fff' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
contentWidth(e) { |
||||
|
return (this.content.length + 1) * 55 + 15 + 'px' |
||||
|
}, |
||||
|
contentWidthMin() { |
||||
|
return '55px' |
||||
|
}, |
||||
|
// 动态计算宽度 |
||||
|
boxWidth() { |
||||
|
return this.getPosition(3, 'horizontal') |
||||
|
}, |
||||
|
// 动态计算高度 |
||||
|
boxHeight() { |
||||
|
return this.getPosition(3, 'vertical') |
||||
|
}, |
||||
|
// 计算左下位置 |
||||
|
leftBottom() { |
||||
|
return this.getPosition(0, 'left', 'bottom') |
||||
|
}, |
||||
|
// 计算右下位置 |
||||
|
rightBottom() { |
||||
|
return this.getPosition(0, 'right', 'bottom') |
||||
|
}, |
||||
|
// 计算左上位置 |
||||
|
leftTop() { |
||||
|
return this.getPosition(0, 'left', 'top') |
||||
|
}, |
||||
|
rightTop() { |
||||
|
return this.getPosition(0, 'right', 'top') |
||||
|
}, |
||||
|
flexDirectionStart() { |
||||
|
return this.getPosition(1, 'vertical', 'top') |
||||
|
}, |
||||
|
flexDirectionEnd() { |
||||
|
return this.getPosition(1, 'vertical', 'bottom') |
||||
|
}, |
||||
|
horizontalLeft() { |
||||
|
return this.getPosition(2, 'horizontal', 'left') |
||||
|
}, |
||||
|
horizontalRight() { |
||||
|
return this.getPosition(2, 'horizontal', 'right') |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
pattern: { |
||||
|
handler(val, oldVal) { |
||||
|
this.styles = Object.assign({}, this.styles, val) |
||||
|
}, |
||||
|
deep: true |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.isShow = this.show |
||||
|
if (this.top === 0) { |
||||
|
this.fabShow = true |
||||
|
} |
||||
|
// 初始化样式 |
||||
|
this.styles = Object.assign({}, this.styles, this.pattern) |
||||
|
}, |
||||
|
methods: { |
||||
|
_onClick() { |
||||
|
this.$emit('fabClick') |
||||
|
if (!this.popMenu) { |
||||
|
return |
||||
|
} |
||||
|
this.isShow = !this.isShow |
||||
|
}, |
||||
|
open() { |
||||
|
this.isShow = true |
||||
|
}, |
||||
|
close() { |
||||
|
this.isShow = false |
||||
|
}, |
||||
|
/** |
||||
|
* 按钮点击事件 |
||||
|
*/ |
||||
|
_onItemClick(index, item) { |
||||
|
this.$emit('trigger', { |
||||
|
index, |
||||
|
item |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* 获取 位置信息 |
||||
|
*/ |
||||
|
getPosition(types, paramA, paramB) { |
||||
|
if (types === 0) { |
||||
|
return this.horizontal === paramA && this.vertical === paramB |
||||
|
} else if (types === 1) { |
||||
|
return this.direction === paramA && this.vertical === paramB |
||||
|
} else if (types === 2) { |
||||
|
return this.direction === paramA && this.horizontal === paramB |
||||
|
} else { |
||||
|
return this.isShow && this.direction === paramA ? this.contentWidth : this.contentWidthMin |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" > |
||||
|
$uni-shadow-base:0 1px 5px 2px rgba($color: #000000, $alpha: 0.3) !default; |
||||
|
|
||||
|
.uni-fab { |
||||
|
position: fixed; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
z-index: 10; |
||||
|
border-radius: 45px; |
||||
|
box-shadow: $uni-shadow-base; |
||||
|
} |
||||
|
|
||||
|
.uni-cursor-point { |
||||
|
/* #ifdef H5 */ |
||||
|
cursor: pointer; |
||||
|
/* #endif */ |
||||
|
} |
||||
|
|
||||
|
.uni-fab--active { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
|
||||
|
.uni-fab--leftBottom { |
||||
|
left: 15px; |
||||
|
bottom: 30px; |
||||
|
/* #ifdef H5 */ |
||||
|
left: calc(15px + var(--window-left)); |
||||
|
bottom: calc(30px + var(--window-bottom)); |
||||
|
/* #endif */ |
||||
|
// padding: 10px; |
||||
|
} |
||||
|
|
||||
|
.uni-fab--leftTop { |
||||
|
left: 15px; |
||||
|
top: 30px; |
||||
|
/* #ifdef H5 */ |
||||
|
left: calc(15px + var(--window-left)); |
||||
|
top: calc(30px + var(--window-top)); |
||||
|
/* #endif */ |
||||
|
// padding: 10px; |
||||
|
} |
||||
|
|
||||
|
.uni-fab--rightBottom { |
||||
|
right: 15px; |
||||
|
bottom: 30px; |
||||
|
/* #ifdef H5 */ |
||||
|
right: calc(15px + var(--window-right)); |
||||
|
bottom: calc(30px + var(--window-bottom)); |
||||
|
/* #endif */ |
||||
|
// padding: 10px; |
||||
|
} |
||||
|
|
||||
|
.uni-fab--rightTop { |
||||
|
right: 15px; |
||||
|
top: 30px; |
||||
|
/* #ifdef H5 */ |
||||
|
right: calc(15px + var(--window-right)); |
||||
|
top: calc(30px + var(--window-top)); |
||||
|
/* #endif */ |
||||
|
// padding: 10px; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__circle { |
||||
|
position: fixed; |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
width: 55px; |
||||
|
height: 55px; |
||||
|
background-color: #3c3e49; |
||||
|
border-radius: 45px; |
||||
|
z-index: 11; |
||||
|
// box-shadow: $uni-shadow-base; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__circle--leftBottom { |
||||
|
left: 15px; |
||||
|
bottom: 30px; |
||||
|
/* #ifdef H5 */ |
||||
|
left: calc(15px + var(--window-left)); |
||||
|
bottom: calc(30px + var(--window-bottom)); |
||||
|
/* #endif */ |
||||
|
} |
||||
|
|
||||
|
.uni-fab__circle--leftTop { |
||||
|
left: 15px; |
||||
|
top: 30px; |
||||
|
/* #ifdef H5 */ |
||||
|
left: calc(15px + var(--window-left)); |
||||
|
top: calc(30px + var(--window-top)); |
||||
|
/* #endif */ |
||||
|
} |
||||
|
|
||||
|
.uni-fab__circle--rightBottom { |
||||
|
right: 15px; |
||||
|
bottom: 30px; |
||||
|
/* #ifdef H5 */ |
||||
|
right: calc(15px + var(--window-right)); |
||||
|
bottom: calc(30px + var(--window-bottom)); |
||||
|
/* #endif */ |
||||
|
} |
||||
|
|
||||
|
.uni-fab__circle--rightTop { |
||||
|
right: 15px; |
||||
|
top: 30px; |
||||
|
/* #ifdef H5 */ |
||||
|
right: calc(15px + var(--window-right)); |
||||
|
top: calc(30px + var(--window-top)); |
||||
|
/* #endif */ |
||||
|
} |
||||
|
|
||||
|
.uni-fab__circle--left { |
||||
|
left: 0; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__circle--right { |
||||
|
right: 0; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__circle--top { |
||||
|
top: 0; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__circle--bottom { |
||||
|
bottom: 0; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__plus { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
// .fab-circle-v { |
||||
|
// position: absolute; |
||||
|
// width: 2px; |
||||
|
// height: 24px; |
||||
|
// left: 0; |
||||
|
// top: 0; |
||||
|
// right: 0; |
||||
|
// bottom: 0; |
||||
|
// /* #ifndef APP-NVUE */ |
||||
|
// margin: auto; |
||||
|
// /* #endif */ |
||||
|
// background-color: white; |
||||
|
// transform: rotate(0deg); |
||||
|
// transition: transform 0.3s; |
||||
|
// } |
||||
|
|
||||
|
// .fab-circle-h { |
||||
|
// position: absolute; |
||||
|
// width: 24px; |
||||
|
// height: 2px; |
||||
|
// left: 0; |
||||
|
// top: 0; |
||||
|
// right: 0; |
||||
|
// bottom: 0; |
||||
|
// /* #ifndef APP-NVUE */ |
||||
|
// margin: auto; |
||||
|
// /* #endif */ |
||||
|
// background-color: white; |
||||
|
// transform: rotate(0deg); |
||||
|
// transition: transform 0.3s; |
||||
|
// } |
||||
|
|
||||
|
.fab-circle-icon { |
||||
|
transform: rotate(0deg); |
||||
|
transition: transform 0.3s; |
||||
|
font-weight: 200; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__plus--active { |
||||
|
transform: rotate(135deg); |
||||
|
} |
||||
|
|
||||
|
.uni-fab__content { |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
box-sizing: border-box; |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
flex-direction: row; |
||||
|
border-radius: 55px; |
||||
|
overflow: hidden; |
||||
|
transition-property: width, height; |
||||
|
transition-duration: 0.2s; |
||||
|
width: 55px; |
||||
|
border-color: #DDDDDD; |
||||
|
border-width: 1rpx; |
||||
|
border-style: solid; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__content--other-platform { |
||||
|
border-width: 0px; |
||||
|
box-shadow: $uni-shadow-base; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__content--left { |
||||
|
justify-content: flex-start; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__content--right { |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__content--flexDirection { |
||||
|
flex-direction: column; |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__content--flexDirectionStart { |
||||
|
flex-direction: column; |
||||
|
justify-content: flex-start; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__content--flexDirectionEnd { |
||||
|
flex-direction: column; |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__item { |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
display: flex; |
||||
|
/* #endif */ |
||||
|
flex-direction: column; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
width: 55px; |
||||
|
height: 55px; |
||||
|
opacity: 0; |
||||
|
transition: opacity 0.2s; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__item--active { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__item-image { |
||||
|
width: 20px; |
||||
|
height: 20px; |
||||
|
margin-bottom: 4px; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__item-text { |
||||
|
color: #FFFFFF; |
||||
|
font-size: 12px; |
||||
|
line-height: 12px; |
||||
|
margin-top: 2px; |
||||
|
} |
||||
|
|
||||
|
.uni-fab__item--first { |
||||
|
width: 55px; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,87 @@ |
|||||
|
{ |
||||
|
"id": "uni-fab", |
||||
|
"displayName": "uni-fab 悬浮按钮", |
||||
|
"version": "1.2.2", |
||||
|
"description": "悬浮按钮 fab button ,点击可展开一个图标按钮菜单。", |
||||
|
"keywords": [ |
||||
|
"uni-ui", |
||||
|
"uniui", |
||||
|
"按钮", |
||||
|
"悬浮按钮", |
||||
|
"fab" |
||||
|
], |
||||
|
"repository": "https://github.com/dcloudio/uni-ui", |
||||
|
"engines": { |
||||
|
"HBuilderX": "" |
||||
|
}, |
||||
|
"directories": { |
||||
|
"example": "../../temps/example_temps" |
||||
|
}, |
||||
|
"dcloudext": { |
||||
|
"category": [ |
||||
|
"前端组件", |
||||
|
"通用组件" |
||||
|
], |
||||
|
"sale": { |
||||
|
"regular": { |
||||
|
"price": "0.00" |
||||
|
}, |
||||
|
"sourcecode": { |
||||
|
"price": "0.00" |
||||
|
} |
||||
|
}, |
||||
|
"contact": { |
||||
|
"qq": "" |
||||
|
}, |
||||
|
"declaration": { |
||||
|
"ads": "无", |
||||
|
"data": "无", |
||||
|
"permissions": "无" |
||||
|
}, |
||||
|
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" |
||||
|
}, |
||||
|
"uni_modules": { |
||||
|
"dependencies": ["uni-scss","uni-icons"], |
||||
|
"encrypt": [], |
||||
|
"platforms": { |
||||
|
"cloud": { |
||||
|
"tcb": "y", |
||||
|
"aliyun": "y" |
||||
|
}, |
||||
|
"client": { |
||||
|
"App": { |
||||
|
"app-vue": "y", |
||||
|
"app-nvue": "y" |
||||
|
}, |
||||
|
"H5-mobile": { |
||||
|
"Safari": "y", |
||||
|
"Android Browser": "y", |
||||
|
"微信浏览器(Android)": "y", |
||||
|
"QQ浏览器(Android)": "y" |
||||
|
}, |
||||
|
"H5-pc": { |
||||
|
"Chrome": "y", |
||||
|
"IE": "y", |
||||
|
"Edge": "y", |
||||
|
"Firefox": "y", |
||||
|
"Safari": "y" |
||||
|
}, |
||||
|
"小程序": { |
||||
|
"微信": "y", |
||||
|
"阿里": "y", |
||||
|
"百度": "y", |
||||
|
"字节跳动": "y", |
||||
|
"QQ": "y" |
||||
|
}, |
||||
|
"快应用": { |
||||
|
"华为": "u", |
||||
|
"联盟": "u" |
||||
|
}, |
||||
|
"Vue": { |
||||
|
"vue2": "y", |
||||
|
"vue3": "y" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
## Fab 悬浮按钮 |
||||
|
> **组件名:uni-fab** |
||||
|
> 代码块: `uFab` |
||||
|
|
||||
|
|
||||
|
点击可展开一个图形按钮菜单 |
||||
|
|
||||
|
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab) |
||||
|
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 |
||||
@ -1,13 +1,13 @@ |
|||||
## 1.3.0(2021-11-19) |
## 1.3.0(2021-11-19) |
||||
- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) |
- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) |
||||
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) |
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) |
||||
## 1.2.1(2021-08-24) |
|
||||
- 新增 支持国际化 |
|
||||
## 1.2.0(2021-07-30) |
|
||||
- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) |
|
||||
## 1.1.8(2021-05-12) |
|
||||
- 新增 组件示例地址 |
|
||||
## 1.1.7(2021-03-30) |
|
||||
- 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug |
|
||||
## 1.1.6(2021-02-05) |
|
||||
- 调整为uni_modules目录规范 |
|
||||
|
## 1.2.1(2021-08-24) |
||||
|
- 新增 支持国际化 |
||||
|
## 1.2.0(2021-07-30) |
||||
|
- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) |
||||
|
## 1.1.8(2021-05-12) |
||||
|
- 新增 组件示例地址 |
||||
|
## 1.1.7(2021-03-30) |
||||
|
- 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug |
||||
|
## 1.1.6(2021-02-05) |
||||
|
- 调整为uni_modules目录规范 |
||||
@ -1,4 +1,4 @@ |
|||||
{ |
|
||||
|
{ |
||||
"uni-load-more.contentdown": "Pull up to show more", |
"uni-load-more.contentdown": "Pull up to show more", |
||||
"uni-load-more.contentrefresh": "loading...", |
"uni-load-more.contentrefresh": "loading...", |
||||
"uni-load-more.contentnomore": "No more data" |
"uni-load-more.contentnomore": "No more data" |
||||
|
|||||
@ -1,8 +1,8 @@ |
|||||
import en from './en.json' |
|
||||
import zhHans from './zh-Hans.json' |
|
||||
import zhHant from './zh-Hant.json' |
|
||||
export default { |
|
||||
en, |
|
||||
'zh-Hans': zhHans, |
|
||||
'zh-Hant': zhHant |
|
||||
|
import en from './en.json' |
||||
|
import zhHans from './zh-Hans.json' |
||||
|
import zhHant from './zh-Hant.json' |
||||
|
export default { |
||||
|
en, |
||||
|
'zh-Hans': zhHans, |
||||
|
'zh-Hant': zhHant |
||||
} |
} |
||||
@ -1,4 +1,4 @@ |
|||||
{ |
|
||||
|
{ |
||||
"uni-load-more.contentdown": "上拉显示更多", |
"uni-load-more.contentdown": "上拉显示更多", |
||||
"uni-load-more.contentrefresh": "正在加载...", |
"uni-load-more.contentrefresh": "正在加载...", |
||||
"uni-load-more.contentnomore": "没有更多数据了" |
"uni-load-more.contentnomore": "没有更多数据了" |
||||
|
|||||
@ -1,4 +1,4 @@ |
|||||
{ |
|
||||
|
{ |
||||
"uni-load-more.contentdown": "上拉顯示更多", |
"uni-load-more.contentdown": "上拉顯示更多", |
||||
"uni-load-more.contentrefresh": "正在加載...", |
"uni-load-more.contentrefresh": "正在加載...", |
||||
"uni-load-more.contentnomore": "沒有更多數據了" |
"uni-load-more.contentnomore": "沒有更多數據了" |
||||
|
|||||
788
uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -1,86 +1,86 @@ |
|||||
{ |
|
||||
"id": "uni-load-more", |
|
||||
"displayName": "uni-load-more 加载更多", |
|
||||
"version": "1.3.0", |
|
||||
"description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", |
|
||||
"keywords": [ |
|
||||
"uni-ui", |
|
||||
"uniui", |
|
||||
"加载更多", |
|
||||
"load-more" |
|
||||
], |
|
||||
"repository": "https://github.com/dcloudio/uni-ui", |
|
||||
"engines": { |
|
||||
"HBuilderX": "" |
|
||||
}, |
|
||||
"directories": { |
|
||||
"example": "../../temps/example_temps" |
|
||||
}, |
|
||||
"dcloudext": { |
|
||||
"category": [ |
|
||||
"前端组件", |
|
||||
"通用组件" |
|
||||
], |
|
||||
"sale": { |
|
||||
"regular": { |
|
||||
"price": "0.00" |
|
||||
}, |
|
||||
"sourcecode": { |
|
||||
"price": "0.00" |
|
||||
} |
|
||||
}, |
|
||||
"contact": { |
|
||||
"qq": "" |
|
||||
}, |
|
||||
"declaration": { |
|
||||
"ads": "无", |
|
||||
"data": "无", |
|
||||
"permissions": "无" |
|
||||
}, |
|
||||
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" |
|
||||
}, |
|
||||
"uni_modules": { |
|
||||
"dependencies": ["uni-scss"], |
|
||||
"encrypt": [], |
|
||||
"platforms": { |
|
||||
"cloud": { |
|
||||
"tcb": "y", |
|
||||
"aliyun": "y" |
|
||||
}, |
|
||||
"client": { |
|
||||
"App": { |
|
||||
"app-vue": "y", |
|
||||
"app-nvue": "y" |
|
||||
}, |
|
||||
"H5-mobile": { |
|
||||
"Safari": "y", |
|
||||
"Android Browser": "y", |
|
||||
"微信浏览器(Android)": "y", |
|
||||
"QQ浏览器(Android)": "y" |
|
||||
}, |
|
||||
"H5-pc": { |
|
||||
"Chrome": "y", |
|
||||
"IE": "y", |
|
||||
"Edge": "y", |
|
||||
"Firefox": "y", |
|
||||
"Safari": "y" |
|
||||
}, |
|
||||
"小程序": { |
|
||||
"微信": "y", |
|
||||
"阿里": "y", |
|
||||
"百度": "y", |
|
||||
"字节跳动": "y", |
|
||||
"QQ": "y" |
|
||||
}, |
|
||||
"快应用": { |
|
||||
"华为": "u", |
|
||||
"联盟": "u" |
|
||||
}, |
|
||||
"Vue": { |
|
||||
"vue2": "y", |
|
||||
"vue3": "y" |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
{ |
||||
|
"id": "uni-load-more", |
||||
|
"displayName": "uni-load-more 加载更多", |
||||
|
"version": "1.3.0", |
||||
|
"description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", |
||||
|
"keywords": [ |
||||
|
"uni-ui", |
||||
|
"uniui", |
||||
|
"加载更多", |
||||
|
"load-more" |
||||
|
], |
||||
|
"repository": "https://github.com/dcloudio/uni-ui", |
||||
|
"engines": { |
||||
|
"HBuilderX": "" |
||||
|
}, |
||||
|
"directories": { |
||||
|
"example": "../../temps/example_temps" |
||||
|
}, |
||||
|
"dcloudext": { |
||||
|
"category": [ |
||||
|
"前端组件", |
||||
|
"通用组件" |
||||
|
], |
||||
|
"sale": { |
||||
|
"regular": { |
||||
|
"price": "0.00" |
||||
|
}, |
||||
|
"sourcecode": { |
||||
|
"price": "0.00" |
||||
|
} |
||||
|
}, |
||||
|
"contact": { |
||||
|
"qq": "" |
||||
|
}, |
||||
|
"declaration": { |
||||
|
"ads": "无", |
||||
|
"data": "无", |
||||
|
"permissions": "无" |
||||
|
}, |
||||
|
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" |
||||
|
}, |
||||
|
"uni_modules": { |
||||
|
"dependencies": ["uni-scss"], |
||||
|
"encrypt": [], |
||||
|
"platforms": { |
||||
|
"cloud": { |
||||
|
"tcb": "y", |
||||
|
"aliyun": "y" |
||||
|
}, |
||||
|
"client": { |
||||
|
"App": { |
||||
|
"app-vue": "y", |
||||
|
"app-nvue": "y" |
||||
|
}, |
||||
|
"H5-mobile": { |
||||
|
"Safari": "y", |
||||
|
"Android Browser": "y", |
||||
|
"微信浏览器(Android)": "y", |
||||
|
"QQ浏览器(Android)": "y" |
||||
|
}, |
||||
|
"H5-pc": { |
||||
|
"Chrome": "y", |
||||
|
"IE": "y", |
||||
|
"Edge": "y", |
||||
|
"Firefox": "y", |
||||
|
"Safari": "y" |
||||
|
}, |
||||
|
"小程序": { |
||||
|
"微信": "y", |
||||
|
"阿里": "y", |
||||
|
"百度": "y", |
||||
|
"字节跳动": "y", |
||||
|
"QQ": "y" |
||||
|
}, |
||||
|
"快应用": { |
||||
|
"华为": "u", |
||||
|
"联盟": "u" |
||||
|
}, |
||||
|
"Vue": { |
||||
|
"vue2": "y", |
||||
|
"vue3": "y" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
} |
} |
||||
@ -1,6 +1,6 @@ |
|||||
## 1.0.2(2021-11-22) |
## 1.0.2(2021-11-22) |
||||
- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 |
- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 |
||||
## 1.0.1(2021-11-22) |
|
||||
- 修复 vue3中scss语法兼容问题 |
|
||||
## 1.0.0(2021-11-18) |
|
||||
- init |
|
||||
|
## 1.0.1(2021-11-22) |
||||
|
- 修复 vue3中scss语法兼容问题 |
||||
|
## 1.0.0(2021-11-18) |
||||
|
- init |
||||
@ -1 +1 @@ |
|||||
@import './styles/index.scss'; |
|
||||
|
@import './styles/index.scss'; |
||||
@ -1,82 +1,82 @@ |
|||||
{ |
|
||||
"id": "uni-scss", |
|
||||
"displayName": "uni-scss 辅助样式", |
|
||||
"version": "1.0.2", |
|
||||
"description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", |
|
||||
"keywords": [ |
|
||||
"uni-scss", |
|
||||
"uni-ui", |
|
||||
"辅助样式" |
|
||||
], |
|
||||
"repository": "https://github.com/dcloudio/uni-ui", |
|
||||
"engines": { |
|
||||
"HBuilderX": "^3.1.0" |
|
||||
}, |
|
||||
"dcloudext": { |
|
||||
"category": [ |
|
||||
"uni-app前端模板", |
|
||||
"前端页面模板" |
|
||||
], |
|
||||
"sale": { |
|
||||
"regular": { |
|
||||
"price": "0.00" |
|
||||
}, |
|
||||
"sourcecode": { |
|
||||
"price": "0.00" |
|
||||
} |
|
||||
}, |
|
||||
"contact": { |
|
||||
"qq": "" |
|
||||
}, |
|
||||
"declaration": { |
|
||||
"ads": "无", |
|
||||
"data": "无", |
|
||||
"permissions": "无" |
|
||||
}, |
|
||||
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" |
|
||||
}, |
|
||||
"uni_modules": { |
|
||||
"dependencies": [], |
|
||||
"encrypt": [], |
|
||||
"platforms": { |
|
||||
"cloud": { |
|
||||
"tcb": "y", |
|
||||
"aliyun": "y" |
|
||||
}, |
|
||||
"client": { |
|
||||
"App": { |
|
||||
"app-vue": "y", |
|
||||
"app-nvue": "u" |
|
||||
}, |
|
||||
"H5-mobile": { |
|
||||
"Safari": "y", |
|
||||
"Android Browser": "y", |
|
||||
"微信浏览器(Android)": "y", |
|
||||
"QQ浏览器(Android)": "y" |
|
||||
}, |
|
||||
"H5-pc": { |
|
||||
"Chrome": "y", |
|
||||
"IE": "y", |
|
||||
"Edge": "y", |
|
||||
"Firefox": "y", |
|
||||
"Safari": "y" |
|
||||
}, |
|
||||
"小程序": { |
|
||||
"微信": "y", |
|
||||
"阿里": "y", |
|
||||
"百度": "y", |
|
||||
"字节跳动": "y", |
|
||||
"QQ": "y" |
|
||||
}, |
|
||||
"快应用": { |
|
||||
"华为": "n", |
|
||||
"联盟": "n" |
|
||||
}, |
|
||||
"Vue": { |
|
||||
"vue2": "y", |
|
||||
"vue3": "y" |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
{ |
||||
|
"id": "uni-scss", |
||||
|
"displayName": "uni-scss 辅助样式", |
||||
|
"version": "1.0.2", |
||||
|
"description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", |
||||
|
"keywords": [ |
||||
|
"uni-scss", |
||||
|
"uni-ui", |
||||
|
"辅助样式" |
||||
|
], |
||||
|
"repository": "https://github.com/dcloudio/uni-ui", |
||||
|
"engines": { |
||||
|
"HBuilderX": "^3.1.0" |
||||
|
}, |
||||
|
"dcloudext": { |
||||
|
"category": [ |
||||
|
"uni-app前端模板", |
||||
|
"前端页面模板" |
||||
|
], |
||||
|
"sale": { |
||||
|
"regular": { |
||||
|
"price": "0.00" |
||||
|
}, |
||||
|
"sourcecode": { |
||||
|
"price": "0.00" |
||||
|
} |
||||
|
}, |
||||
|
"contact": { |
||||
|
"qq": "" |
||||
|
}, |
||||
|
"declaration": { |
||||
|
"ads": "无", |
||||
|
"data": "无", |
||||
|
"permissions": "无" |
||||
|
}, |
||||
|
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" |
||||
|
}, |
||||
|
"uni_modules": { |
||||
|
"dependencies": [], |
||||
|
"encrypt": [], |
||||
|
"platforms": { |
||||
|
"cloud": { |
||||
|
"tcb": "y", |
||||
|
"aliyun": "y" |
||||
|
}, |
||||
|
"client": { |
||||
|
"App": { |
||||
|
"app-vue": "y", |
||||
|
"app-nvue": "u" |
||||
|
}, |
||||
|
"H5-mobile": { |
||||
|
"Safari": "y", |
||||
|
"Android Browser": "y", |
||||
|
"微信浏览器(Android)": "y", |
||||
|
"QQ浏览器(Android)": "y" |
||||
|
}, |
||||
|
"H5-pc": { |
||||
|
"Chrome": "y", |
||||
|
"IE": "y", |
||||
|
"Edge": "y", |
||||
|
"Firefox": "y", |
||||
|
"Safari": "y" |
||||
|
}, |
||||
|
"小程序": { |
||||
|
"微信": "y", |
||||
|
"阿里": "y", |
||||
|
"百度": "y", |
||||
|
"字节跳动": "y", |
||||
|
"QQ": "y" |
||||
|
}, |
||||
|
"快应用": { |
||||
|
"华为": "n", |
||||
|
"联盟": "n" |
||||
|
}, |
||||
|
"Vue": { |
||||
|
"vue2": "y", |
||||
|
"vue3": "y" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,7 +1,7 @@ |
|||||
@import './setting/_variables.scss'; |
|
||||
@import './setting/_border.scss'; |
|
||||
@import './setting/_color.scss'; |
|
||||
@import './setting/_space.scss'; |
|
||||
@import './setting/_radius.scss'; |
|
||||
@import './setting/_text.scss'; |
|
||||
@import './setting/_styles.scss'; |
|
||||
|
@import './setting/_variables.scss'; |
||||
|
@import './setting/_border.scss'; |
||||
|
@import './setting/_color.scss'; |
||||
|
@import './setting/_space.scss'; |
||||
|
@import './setting/_radius.scss'; |
||||
|
@import './setting/_text.scss'; |
||||
|
@import './setting/_styles.scss'; |
||||
@ -1,3 +1,3 @@ |
|||||
.uni-border { |
|
||||
border: 1px $uni-border-1 solid; |
|
||||
|
.uni-border { |
||||
|
border: 1px $uni-border-1 solid; |
||||
} |
} |
||||
@ -1,66 +1,66 @@ |
|||||
|
|
||||
// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 |
|
||||
// @mixin get-styles($k,$c) { |
|
||||
// @if $k == size or $k == weight{ |
|
||||
// font-#{$k}:#{$c} |
|
||||
// }@else{ |
|
||||
// #{$k}:#{$c} |
|
||||
// } |
|
||||
// } |
|
||||
$uni-ui-color:( |
|
||||
// 主色 |
|
||||
primary: $uni-primary, |
|
||||
primary-disable: $uni-primary-disable, |
|
||||
primary-light: $uni-primary-light, |
|
||||
// 辅助色 |
|
||||
success: $uni-success, |
|
||||
success-disable: $uni-success-disable, |
|
||||
success-light: $uni-success-light, |
|
||||
warning: $uni-warning, |
|
||||
warning-disable: $uni-warning-disable, |
|
||||
warning-light: $uni-warning-light, |
|
||||
error: $uni-error, |
|
||||
error-disable: $uni-error-disable, |
|
||||
error-light: $uni-error-light, |
|
||||
info: $uni-info, |
|
||||
info-disable: $uni-info-disable, |
|
||||
info-light: $uni-info-light, |
|
||||
// 中性色 |
|
||||
main-color: $uni-main-color, |
|
||||
base-color: $uni-base-color, |
|
||||
secondary-color: $uni-secondary-color, |
|
||||
extra-color: $uni-extra-color, |
|
||||
// 背景色 |
|
||||
bg-color: $uni-bg-color, |
|
||||
// 边框颜色 |
|
||||
border-1: $uni-border-1, |
|
||||
border-2: $uni-border-2, |
|
||||
border-3: $uni-border-3, |
|
||||
border-4: $uni-border-4, |
|
||||
// 黑色 |
|
||||
black:$uni-black, |
|
||||
// 白色 |
|
||||
white:$uni-white, |
|
||||
// 透明 |
|
||||
transparent:$uni-transparent |
|
||||
) !default; |
|
||||
@each $key, $child in $uni-ui-color { |
|
||||
.uni-#{"" + $key} { |
|
||||
color: $child; |
|
||||
} |
|
||||
.uni-#{"" + $key}-bg { |
|
||||
background-color: $child; |
|
||||
} |
|
||||
} |
|
||||
.uni-shadow-sm { |
|
||||
box-shadow: $uni-shadow-sm; |
|
||||
} |
|
||||
.uni-shadow-base { |
|
||||
box-shadow: $uni-shadow-base; |
|
||||
} |
|
||||
.uni-shadow-lg { |
|
||||
box-shadow: $uni-shadow-lg; |
|
||||
} |
|
||||
.uni-mask { |
|
||||
background-color:$uni-mask; |
|
||||
} |
|
||||
|
|
||||
|
// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 |
||||
|
// @mixin get-styles($k,$c) { |
||||
|
// @if $k == size or $k == weight{ |
||||
|
// font-#{$k}:#{$c} |
||||
|
// }@else{ |
||||
|
// #{$k}:#{$c} |
||||
|
// } |
||||
|
// } |
||||
|
$uni-ui-color:( |
||||
|
// 主色 |
||||
|
primary: $uni-primary, |
||||
|
primary-disable: $uni-primary-disable, |
||||
|
primary-light: $uni-primary-light, |
||||
|
// 辅助色 |
||||
|
success: $uni-success, |
||||
|
success-disable: $uni-success-disable, |
||||
|
success-light: $uni-success-light, |
||||
|
warning: $uni-warning, |
||||
|
warning-disable: $uni-warning-disable, |
||||
|
warning-light: $uni-warning-light, |
||||
|
error: $uni-error, |
||||
|
error-disable: $uni-error-disable, |
||||
|
error-light: $uni-error-light, |
||||
|
info: $uni-info, |
||||
|
info-disable: $uni-info-disable, |
||||
|
info-light: $uni-info-light, |
||||
|
// 中性色 |
||||
|
main-color: $uni-main-color, |
||||
|
base-color: $uni-base-color, |
||||
|
secondary-color: $uni-secondary-color, |
||||
|
extra-color: $uni-extra-color, |
||||
|
// 背景色 |
||||
|
bg-color: $uni-bg-color, |
||||
|
// 边框颜色 |
||||
|
border-1: $uni-border-1, |
||||
|
border-2: $uni-border-2, |
||||
|
border-3: $uni-border-3, |
||||
|
border-4: $uni-border-4, |
||||
|
// 黑色 |
||||
|
black:$uni-black, |
||||
|
// 白色 |
||||
|
white:$uni-white, |
||||
|
// 透明 |
||||
|
transparent:$uni-transparent |
||||
|
) !default; |
||||
|
@each $key, $child in $uni-ui-color { |
||||
|
.uni-#{"" + $key} { |
||||
|
color: $child; |
||||
|
} |
||||
|
.uni-#{"" + $key}-bg { |
||||
|
background-color: $child; |
||||
|
} |
||||
|
} |
||||
|
.uni-shadow-sm { |
||||
|
box-shadow: $uni-shadow-sm; |
||||
|
} |
||||
|
.uni-shadow-base { |
||||
|
box-shadow: $uni-shadow-base; |
||||
|
} |
||||
|
.uni-shadow-lg { |
||||
|
box-shadow: $uni-shadow-lg; |
||||
|
} |
||||
|
.uni-mask { |
||||
|
background-color:$uni-mask; |
||||
|
} |
||||
@ -1,55 +1,55 @@ |
|||||
@mixin radius($r,$d:null ,$important: false){ |
|
||||
$radius-value:map-get($uni-radius, $r) if($important, !important, null); |
|
||||
// Key exists within the $uni-radius variable |
|
||||
@if (map-has-key($uni-radius, $r) and $d){ |
|
||||
@if $d == t { |
|
||||
border-top-left-radius:$radius-value; |
|
||||
border-top-right-radius:$radius-value; |
|
||||
}@else if $d == r { |
|
||||
border-top-right-radius:$radius-value; |
|
||||
border-bottom-right-radius:$radius-value; |
|
||||
}@else if $d == b { |
|
||||
border-bottom-left-radius:$radius-value; |
|
||||
border-bottom-right-radius:$radius-value; |
|
||||
}@else if $d == l { |
|
||||
border-top-left-radius:$radius-value; |
|
||||
border-bottom-left-radius:$radius-value; |
|
||||
}@else if $d == tl { |
|
||||
border-top-left-radius:$radius-value; |
|
||||
}@else if $d == tr { |
|
||||
border-top-right-radius:$radius-value; |
|
||||
}@else if $d == br { |
|
||||
border-bottom-right-radius:$radius-value; |
|
||||
}@else if $d == bl { |
|
||||
border-bottom-left-radius:$radius-value; |
|
||||
} |
|
||||
}@else{ |
|
||||
border-radius:$radius-value; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@each $key, $child in $uni-radius { |
|
||||
@if($key){ |
|
||||
.uni-radius-#{"" + $key} { |
|
||||
@include radius($key) |
|
||||
} |
|
||||
}@else{ |
|
||||
.uni-radius { |
|
||||
@include radius($key) |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@each $direction in t, r, b, l,tl, tr, br, bl { |
|
||||
@each $key, $child in $uni-radius { |
|
||||
@if($key){ |
|
||||
.uni-radius-#{"" + $direction}-#{"" + $key} { |
|
||||
@include radius($key,$direction,false) |
|
||||
} |
|
||||
}@else{ |
|
||||
.uni-radius-#{$direction} { |
|
||||
@include radius($key,$direction,false) |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
@mixin radius($r,$d:null ,$important: false){ |
||||
|
$radius-value:map-get($uni-radius, $r) if($important, !important, null); |
||||
|
// Key exists within the $uni-radius variable |
||||
|
@if (map-has-key($uni-radius, $r) and $d){ |
||||
|
@if $d == t { |
||||
|
border-top-left-radius:$radius-value; |
||||
|
border-top-right-radius:$radius-value; |
||||
|
}@else if $d == r { |
||||
|
border-top-right-radius:$radius-value; |
||||
|
border-bottom-right-radius:$radius-value; |
||||
|
}@else if $d == b { |
||||
|
border-bottom-left-radius:$radius-value; |
||||
|
border-bottom-right-radius:$radius-value; |
||||
|
}@else if $d == l { |
||||
|
border-top-left-radius:$radius-value; |
||||
|
border-bottom-left-radius:$radius-value; |
||||
|
}@else if $d == tl { |
||||
|
border-top-left-radius:$radius-value; |
||||
|
}@else if $d == tr { |
||||
|
border-top-right-radius:$radius-value; |
||||
|
}@else if $d == br { |
||||
|
border-bottom-right-radius:$radius-value; |
||||
|
}@else if $d == bl { |
||||
|
border-bottom-left-radius:$radius-value; |
||||
|
} |
||||
|
}@else{ |
||||
|
border-radius:$radius-value; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@each $key, $child in $uni-radius { |
||||
|
@if($key){ |
||||
|
.uni-radius-#{"" + $key} { |
||||
|
@include radius($key) |
||||
|
} |
||||
|
}@else{ |
||||
|
.uni-radius { |
||||
|
@include radius($key) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@each $direction in t, r, b, l,tl, tr, br, bl { |
||||
|
@each $key, $child in $uni-radius { |
||||
|
@if($key){ |
||||
|
.uni-radius-#{"" + $direction}-#{"" + $key} { |
||||
|
@include radius($key,$direction,false) |
||||
|
} |
||||
|
}@else{ |
||||
|
.uni-radius-#{$direction} { |
||||
|
@include radius($key,$direction,false) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,56 +1,56 @@ |
|||||
|
|
||||
@mixin fn($space,$direction,$size,$n) { |
|
||||
@if $n { |
|
||||
#{$space}-#{$direction}: #{$size*$uni-space-root}px |
|
||||
} @else { |
|
||||
#{$space}-#{$direction}: #{-$size*$uni-space-root}px |
|
||||
} |
|
||||
} |
|
||||
@mixin get-styles($direction,$i,$space,$n){ |
|
||||
@if $direction == t { |
|
||||
@include fn($space, top,$i,$n); |
|
||||
} |
|
||||
@if $direction == r { |
|
||||
@include fn($space, right,$i,$n); |
|
||||
} |
|
||||
@if $direction == b { |
|
||||
@include fn($space, bottom,$i,$n); |
|
||||
} |
|
||||
@if $direction == l { |
|
||||
@include fn($space, left,$i,$n); |
|
||||
} |
|
||||
@if $direction == x { |
|
||||
@include fn($space, left,$i,$n); |
|
||||
@include fn($space, right,$i,$n); |
|
||||
} |
|
||||
@if $direction == y { |
|
||||
@include fn($space, top,$i,$n); |
|
||||
@include fn($space, bottom,$i,$n); |
|
||||
} |
|
||||
@if $direction == a { |
|
||||
@if $n { |
|
||||
#{$space}:#{$i*$uni-space-root}px; |
|
||||
} @else { |
|
||||
#{$space}:#{-$i*$uni-space-root}px; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@each $orientation in m,p { |
|
||||
$space: margin; |
|
||||
@if $orientation == m { |
|
||||
$space: margin; |
|
||||
} @else { |
|
||||
$space: padding; |
|
||||
} |
|
||||
@for $i from 0 through 16 { |
|
||||
@each $direction in t, r, b, l, x, y, a { |
|
||||
.uni-#{$orientation}#{$direction}-#{$i} { |
|
||||
@include get-styles($direction,$i,$space,true); |
|
||||
} |
|
||||
.uni-#{$orientation}#{$direction}-n#{$i} { |
|
||||
@include get-styles($direction,$i,$space,false); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
@mixin fn($space,$direction,$size,$n) { |
||||
|
@if $n { |
||||
|
#{$space}-#{$direction}: #{$size*$uni-space-root}px |
||||
|
} @else { |
||||
|
#{$space}-#{$direction}: #{-$size*$uni-space-root}px |
||||
|
} |
||||
|
} |
||||
|
@mixin get-styles($direction,$i,$space,$n){ |
||||
|
@if $direction == t { |
||||
|
@include fn($space, top,$i,$n); |
||||
|
} |
||||
|
@if $direction == r { |
||||
|
@include fn($space, right,$i,$n); |
||||
|
} |
||||
|
@if $direction == b { |
||||
|
@include fn($space, bottom,$i,$n); |
||||
|
} |
||||
|
@if $direction == l { |
||||
|
@include fn($space, left,$i,$n); |
||||
|
} |
||||
|
@if $direction == x { |
||||
|
@include fn($space, left,$i,$n); |
||||
|
@include fn($space, right,$i,$n); |
||||
|
} |
||||
|
@if $direction == y { |
||||
|
@include fn($space, top,$i,$n); |
||||
|
@include fn($space, bottom,$i,$n); |
||||
|
} |
||||
|
@if $direction == a { |
||||
|
@if $n { |
||||
|
#{$space}:#{$i*$uni-space-root}px; |
||||
|
} @else { |
||||
|
#{$space}:#{-$i*$uni-space-root}px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@each $orientation in m,p { |
||||
|
$space: margin; |
||||
|
@if $orientation == m { |
||||
|
$space: margin; |
||||
|
} @else { |
||||
|
$space: padding; |
||||
|
} |
||||
|
@for $i from 0 through 16 { |
||||
|
@each $direction in t, r, b, l, x, y, a { |
||||
|
.uni-#{$orientation}#{$direction}-#{$i} { |
||||
|
@include get-styles($direction,$i,$space,true); |
||||
|
} |
||||
|
.uni-#{$orientation}#{$direction}-n#{$i} { |
||||
|
@include get-styles($direction,$i,$space,false); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
} |
} |
||||
@ -1,167 +1,167 @@ |
|||||
/* #ifndef APP-NVUE */ |
|
||||
|
|
||||
$-color-white:#fff; |
|
||||
$-color-black:#000; |
|
||||
@mixin base-style($color) { |
|
||||
color: #fff; |
|
||||
background-color: $color; |
|
||||
border-color: mix($-color-black, $color, 8%); |
|
||||
&:not([hover-class]):active { |
|
||||
background: mix($-color-black, $color, 10%); |
|
||||
border-color: mix($-color-black, $color, 20%); |
|
||||
color: $-color-white; |
|
||||
outline: none; |
|
||||
} |
|
||||
} |
|
||||
@mixin is-color($color) { |
|
||||
@include base-style($color); |
|
||||
&[loading] { |
|
||||
@include base-style($color); |
|
||||
&::before { |
|
||||
margin-right:5px; |
|
||||
} |
|
||||
} |
|
||||
&[disabled] { |
|
||||
&, |
|
||||
&[loading], |
|
||||
&:not([hover-class]):active { |
|
||||
color: $-color-white; |
|
||||
border-color: mix(darken($color,10%), $-color-white); |
|
||||
background-color: mix($color, $-color-white); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
@mixin base-plain-style($color) { |
|
||||
color:$color; |
|
||||
background-color: mix($-color-white, $color, 90%); |
|
||||
border-color: mix($-color-white, $color, 70%); |
|
||||
&:not([hover-class]):active { |
|
||||
background: mix($-color-white, $color, 80%); |
|
||||
color: $color; |
|
||||
outline: none; |
|
||||
border-color: mix($-color-white, $color, 50%); |
|
||||
} |
|
||||
} |
|
||||
@mixin is-plain($color){ |
|
||||
&[plain] { |
|
||||
@include base-plain-style($color); |
|
||||
&[loading] { |
|
||||
@include base-plain-style($color); |
|
||||
&::before { |
|
||||
margin-right:5px; |
|
||||
} |
|
||||
} |
|
||||
&[disabled] { |
|
||||
&, |
|
||||
&:active { |
|
||||
color: mix($-color-white, $color, 40%); |
|
||||
background-color: mix($-color-white, $color, 90%); |
|
||||
border-color: mix($-color-white, $color, 80%); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
.uni-btn { |
|
||||
margin: 5px; |
|
||||
color: #393939; |
|
||||
border:1px solid #ccc; |
|
||||
font-size: 16px; |
|
||||
font-weight: 200; |
|
||||
background-color: #F9F9F9; |
|
||||
// TODO 暂时处理边框隐藏一边的问题 |
|
||||
overflow: visible; |
|
||||
&::after{ |
|
||||
border: none; |
|
||||
} |
|
||||
|
|
||||
&:not([type]),&[type=default] { |
|
||||
color: #999; |
|
||||
&[loading] { |
|
||||
background: none; |
|
||||
&::before { |
|
||||
margin-right:5px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
&[disabled]{ |
|
||||
color: mix($-color-white, #999, 60%); |
|
||||
&, |
|
||||
&[loading], |
|
||||
&:active { |
|
||||
color: mix($-color-white, #999, 60%); |
|
||||
background-color: mix($-color-white,$-color-black , 98%); |
|
||||
border-color: mix($-color-white, #999, 85%); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
&[plain] { |
|
||||
color: #999; |
|
||||
background: none; |
|
||||
border-color: $uni-border-1; |
|
||||
&:not([hover-class]):active { |
|
||||
background: none; |
|
||||
color: mix($-color-white, $-color-black, 80%); |
|
||||
border-color: mix($-color-white, $-color-black, 90%); |
|
||||
outline: none; |
|
||||
} |
|
||||
&[disabled]{ |
|
||||
&, |
|
||||
&[loading], |
|
||||
&:active { |
|
||||
background: none; |
|
||||
color: mix($-color-white, #999, 60%); |
|
||||
border-color: mix($-color-white, #999, 85%); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
&:not([hover-class]):active { |
|
||||
color: mix($-color-white, $-color-black, 50%); |
|
||||
} |
|
||||
|
|
||||
&[size=mini] { |
|
||||
font-size: 16px; |
|
||||
font-weight: 200; |
|
||||
border-radius: 8px; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
&.uni-btn-small { |
|
||||
font-size: 14px; |
|
||||
} |
|
||||
&.uni-btn-mini { |
|
||||
font-size: 12px; |
|
||||
} |
|
||||
|
|
||||
&.uni-btn-radius { |
|
||||
border-radius: 999px; |
|
||||
} |
|
||||
&[type=primary] { |
|
||||
@include is-color($uni-primary); |
|
||||
@include is-plain($uni-primary) |
|
||||
} |
|
||||
&[type=success] { |
|
||||
@include is-color($uni-success); |
|
||||
@include is-plain($uni-success) |
|
||||
} |
|
||||
&[type=error] { |
|
||||
@include is-color($uni-error); |
|
||||
@include is-plain($uni-error) |
|
||||
} |
|
||||
&[type=warning] { |
|
||||
@include is-color($uni-warning); |
|
||||
@include is-plain($uni-warning) |
|
||||
} |
|
||||
&[type=info] { |
|
||||
@include is-color($uni-info); |
|
||||
@include is-plain($uni-info) |
|
||||
} |
|
||||
} |
|
||||
/* #endif */ |
|
||||
|
/* #ifndef APP-NVUE */ |
||||
|
|
||||
|
$-color-white:#fff; |
||||
|
$-color-black:#000; |
||||
|
@mixin base-style($color) { |
||||
|
color: #fff; |
||||
|
background-color: $color; |
||||
|
border-color: mix($-color-black, $color, 8%); |
||||
|
&:not([hover-class]):active { |
||||
|
background: mix($-color-black, $color, 10%); |
||||
|
border-color: mix($-color-black, $color, 20%); |
||||
|
color: $-color-white; |
||||
|
outline: none; |
||||
|
} |
||||
|
} |
||||
|
@mixin is-color($color) { |
||||
|
@include base-style($color); |
||||
|
&[loading] { |
||||
|
@include base-style($color); |
||||
|
&::before { |
||||
|
margin-right:5px; |
||||
|
} |
||||
|
} |
||||
|
&[disabled] { |
||||
|
&, |
||||
|
&[loading], |
||||
|
&:not([hover-class]):active { |
||||
|
color: $-color-white; |
||||
|
border-color: mix(darken($color,10%), $-color-white); |
||||
|
background-color: mix($color, $-color-white); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
@mixin base-plain-style($color) { |
||||
|
color:$color; |
||||
|
background-color: mix($-color-white, $color, 90%); |
||||
|
border-color: mix($-color-white, $color, 70%); |
||||
|
&:not([hover-class]):active { |
||||
|
background: mix($-color-white, $color, 80%); |
||||
|
color: $color; |
||||
|
outline: none; |
||||
|
border-color: mix($-color-white, $color, 50%); |
||||
|
} |
||||
|
} |
||||
|
@mixin is-plain($color){ |
||||
|
&[plain] { |
||||
|
@include base-plain-style($color); |
||||
|
&[loading] { |
||||
|
@include base-plain-style($color); |
||||
|
&::before { |
||||
|
margin-right:5px; |
||||
|
} |
||||
|
} |
||||
|
&[disabled] { |
||||
|
&, |
||||
|
&:active { |
||||
|
color: mix($-color-white, $color, 40%); |
||||
|
background-color: mix($-color-white, $color, 90%); |
||||
|
border-color: mix($-color-white, $color, 80%); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.uni-btn { |
||||
|
margin: 5px; |
||||
|
color: #393939; |
||||
|
border:1px solid #ccc; |
||||
|
font-size: 16px; |
||||
|
font-weight: 200; |
||||
|
background-color: #F9F9F9; |
||||
|
// TODO 暂时处理边框隐藏一边的问题 |
||||
|
overflow: visible; |
||||
|
&::after{ |
||||
|
border: none; |
||||
|
} |
||||
|
|
||||
|
&:not([type]),&[type=default] { |
||||
|
color: #999; |
||||
|
&[loading] { |
||||
|
background: none; |
||||
|
&::before { |
||||
|
margin-right:5px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
&[disabled]{ |
||||
|
color: mix($-color-white, #999, 60%); |
||||
|
&, |
||||
|
&[loading], |
||||
|
&:active { |
||||
|
color: mix($-color-white, #999, 60%); |
||||
|
background-color: mix($-color-white,$-color-black , 98%); |
||||
|
border-color: mix($-color-white, #999, 85%); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&[plain] { |
||||
|
color: #999; |
||||
|
background: none; |
||||
|
border-color: $uni-border-1; |
||||
|
&:not([hover-class]):active { |
||||
|
background: none; |
||||
|
color: mix($-color-white, $-color-black, 80%); |
||||
|
border-color: mix($-color-white, $-color-black, 90%); |
||||
|
outline: none; |
||||
|
} |
||||
|
&[disabled]{ |
||||
|
&, |
||||
|
&[loading], |
||||
|
&:active { |
||||
|
background: none; |
||||
|
color: mix($-color-white, #999, 60%); |
||||
|
border-color: mix($-color-white, #999, 85%); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&:not([hover-class]):active { |
||||
|
color: mix($-color-white, $-color-black, 50%); |
||||
|
} |
||||
|
|
||||
|
&[size=mini] { |
||||
|
font-size: 16px; |
||||
|
font-weight: 200; |
||||
|
border-radius: 8px; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
&.uni-btn-small { |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
&.uni-btn-mini { |
||||
|
font-size: 12px; |
||||
|
} |
||||
|
|
||||
|
&.uni-btn-radius { |
||||
|
border-radius: 999px; |
||||
|
} |
||||
|
&[type=primary] { |
||||
|
@include is-color($uni-primary); |
||||
|
@include is-plain($uni-primary) |
||||
|
} |
||||
|
&[type=success] { |
||||
|
@include is-color($uni-success); |
||||
|
@include is-plain($uni-success) |
||||
|
} |
||||
|
&[type=error] { |
||||
|
@include is-color($uni-error); |
||||
|
@include is-plain($uni-error) |
||||
|
} |
||||
|
&[type=warning] { |
||||
|
@include is-color($uni-warning); |
||||
|
@include is-plain($uni-warning) |
||||
|
} |
||||
|
&[type=info] { |
||||
|
@include is-color($uni-info); |
||||
|
@include is-plain($uni-info) |
||||
|
} |
||||
|
} |
||||
|
/* #endif */ |
||||
@ -1,24 +1,24 @@ |
|||||
@mixin get-styles($k,$c) { |
|
||||
@if $k == size or $k == weight{ |
|
||||
font-#{$k}:#{$c} |
|
||||
}@else{ |
|
||||
#{$k}:#{$c} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@each $key, $child in $uni-headings { |
|
||||
/* #ifndef APP-NVUE */ |
|
||||
.uni-#{$key} { |
|
||||
@each $k, $c in $child { |
|
||||
@include get-styles($k,$c) |
|
||||
} |
|
||||
} |
|
||||
/* #endif */ |
|
||||
/* #ifdef APP-NVUE */ |
|
||||
.container .uni-#{$key} { |
|
||||
@each $k, $c in $child { |
|
||||
@include get-styles($k,$c) |
|
||||
} |
|
||||
} |
|
||||
/* #endif */ |
|
||||
} |
|
||||
|
@mixin get-styles($k,$c) { |
||||
|
@if $k == size or $k == weight{ |
||||
|
font-#{$k}:#{$c} |
||||
|
}@else{ |
||||
|
#{$k}:#{$c} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@each $key, $child in $uni-headings { |
||||
|
/* #ifndef APP-NVUE */ |
||||
|
.uni-#{$key} { |
||||
|
@each $k, $c in $child { |
||||
|
@include get-styles($k,$c) |
||||
|
} |
||||
|
} |
||||
|
/* #endif */ |
||||
|
/* #ifdef APP-NVUE */ |
||||
|
.container .uni-#{$key} { |
||||
|
@each $k, $c in $child { |
||||
|
@include get-styles($k,$c) |
||||
|
} |
||||
|
} |
||||
|
/* #endif */ |
||||
|
} |
||||
@ -1,146 +1,146 @@ |
|||||
// @use "sass:math"; |
|
||||
@import '../tools/functions.scss'; |
|
||||
// 间距基础倍数 |
|
||||
$uni-space-root: 2 !default; |
|
||||
// 边框半径默认值 |
|
||||
$uni-radius-root:5px !default; |
|
||||
$uni-radius: () !default; |
|
||||
|
// @use "sass:math"; |
||||
|
@import '../tools/functions.scss'; |
||||
|
// 间距基础倍数 |
||||
|
$uni-space-root: 2 !default; |
||||
|
// 边框半径默认值 |
||||
|
$uni-radius-root:5px !default; |
||||
|
$uni-radius: () !default; |
||||
// 边框半径断点 |
// 边框半径断点 |
||||
$uni-radius: map-deep-merge( |
|
||||
( |
|
||||
|
$uni-radius: map-deep-merge( |
||||
|
( |
||||
0: 0, |
0: 0, |
||||
// TODO 当前版本暂时不支持 sm 属性 |
|
||||
// 'sm': math.div($uni-radius-root, 2), |
|
||||
null: $uni-radius-root, |
|
||||
'lg': $uni-radius-root * 2, |
|
||||
'xl': $uni-radius-root * 6, |
|
||||
'pill': 9999px, |
|
||||
'circle': 50% |
|
||||
), |
|
||||
$uni-radius |
|
||||
|
// TODO 当前版本暂时不支持 sm 属性 |
||||
|
// 'sm': math.div($uni-radius-root, 2), |
||||
|
null: $uni-radius-root, |
||||
|
'lg': $uni-radius-root * 2, |
||||
|
'xl': $uni-radius-root * 6, |
||||
|
'pill': 9999px, |
||||
|
'circle': 50% |
||||
|
), |
||||
|
$uni-radius |
||||
); |
); |
||||
// 字体家族 |
|
||||
$body-font-family: 'Roboto', sans-serif !default; |
|
||||
// 文本 |
|
||||
$heading-font-family: $body-font-family !default; |
|
||||
$uni-headings: () !default; |
|
||||
$letterSpacing: -0.01562em; |
|
||||
$uni-headings: map-deep-merge( |
|
||||
( |
|
||||
'h1': ( |
|
||||
size: 32px, |
|
||||
weight: 300, |
|
||||
line-height: 50px, |
|
||||
// letter-spacing:-0.01562em |
|
||||
), |
|
||||
'h2': ( |
|
||||
size: 28px, |
|
||||
weight: 300, |
|
||||
line-height: 40px, |
|
||||
// letter-spacing: -0.00833em |
|
||||
), |
|
||||
'h3': ( |
|
||||
size: 24px, |
|
||||
weight: 400, |
|
||||
line-height: 32px, |
|
||||
// letter-spacing: normal |
|
||||
), |
|
||||
'h4': ( |
|
||||
size: 20px, |
|
||||
weight: 400, |
|
||||
line-height: 30px, |
|
||||
// letter-spacing: 0.00735em |
|
||||
), |
|
||||
'h5': ( |
|
||||
size: 16px, |
|
||||
weight: 400, |
|
||||
line-height: 24px, |
|
||||
// letter-spacing: normal |
|
||||
), |
|
||||
'h6': ( |
|
||||
size: 14px, |
|
||||
weight: 500, |
|
||||
line-height: 18px, |
|
||||
// letter-spacing: 0.0125em |
|
||||
), |
|
||||
'subtitle': ( |
|
||||
size: 12px, |
|
||||
weight: 400, |
|
||||
line-height: 20px, |
|
||||
// letter-spacing: 0.00937em |
|
||||
), |
|
||||
'body': ( |
|
||||
font-size: 14px, |
|
||||
font-weight: 400, |
|
||||
line-height: 22px, |
|
||||
// letter-spacing: 0.03125em |
|
||||
), |
|
||||
'caption': ( |
|
||||
'size': 12px, |
|
||||
'weight': 400, |
|
||||
'line-height': 20px, |
|
||||
// 'letter-spacing': 0.03333em, |
|
||||
// 'text-transform': false |
|
||||
) |
|
||||
), |
|
||||
$uni-headings |
|
||||
); |
|
||||
|
|
||||
|
|
||||
|
|
||||
// 主色 |
|
||||
$uni-primary: #2979ff !default; |
|
||||
$uni-primary-disable:lighten($uni-primary,20%) !default; |
|
||||
$uni-primary-light: lighten($uni-primary,25%) !default; |
|
||||
|
|
||||
// 辅助色 |
|
||||
// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 |
|
||||
$uni-success: #18bc37 !default; |
|
||||
$uni-success-disable:lighten($uni-success,20%) !default; |
|
||||
$uni-success-light: lighten($uni-success,25%) !default; |
|
||||
|
|
||||
$uni-warning: #f3a73f !default; |
|
||||
$uni-warning-disable:lighten($uni-warning,20%) !default; |
|
||||
$uni-warning-light: lighten($uni-warning,25%) !default; |
|
||||
|
|
||||
$uni-error: #e43d33 !default; |
|
||||
$uni-error-disable:lighten($uni-error,20%) !default; |
|
||||
$uni-error-light: lighten($uni-error,25%) !default; |
|
||||
|
|
||||
$uni-info: #8f939c !default; |
|
||||
$uni-info-disable:lighten($uni-info,20%) !default; |
|
||||
$uni-info-light: lighten($uni-info,25%) !default; |
|
||||
|
|
||||
// 中性色 |
|
||||
// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 |
|
||||
$uni-main-color: #3a3a3a !default; // 主要文字 |
|
||||
$uni-base-color: #6a6a6a !default; // 常规文字 |
|
||||
$uni-secondary-color: #909399 !default; // 次要文字 |
|
||||
$uni-extra-color: #c7c7c7 !default; // 辅助说明 |
|
||||
|
|
||||
// 边框颜色 |
|
||||
$uni-border-1: #F0F0F0 !default; |
|
||||
$uni-border-2: #EDEDED !default; |
|
||||
$uni-border-3: #DCDCDC !default; |
|
||||
$uni-border-4: #B9B9B9 !default; |
|
||||
|
|
||||
// 常规色 |
|
||||
$uni-black: #000000 !default; |
|
||||
$uni-white: #ffffff !default; |
|
||||
$uni-transparent: rgba($color: #000000, $alpha: 0) !default; |
|
||||
|
|
||||
// 背景色 |
|
||||
$uni-bg-color: #f7f7f7 !default; |
|
||||
|
|
||||
/* 水平间距 */ |
|
||||
$uni-spacing-sm: 8px !default; |
|
||||
$uni-spacing-base: 15px !default; |
|
||||
$uni-spacing-lg: 30px !default; |
|
||||
|
|
||||
// 阴影 |
|
||||
$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; |
|
||||
$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; |
|
||||
$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; |
|
||||
|
|
||||
// 蒙版 |
|
||||
$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; |
|
||||
|
// 字体家族 |
||||
|
$body-font-family: 'Roboto', sans-serif !default; |
||||
|
// 文本 |
||||
|
$heading-font-family: $body-font-family !default; |
||||
|
$uni-headings: () !default; |
||||
|
$letterSpacing: -0.01562em; |
||||
|
$uni-headings: map-deep-merge( |
||||
|
( |
||||
|
'h1': ( |
||||
|
size: 32px, |
||||
|
weight: 300, |
||||
|
line-height: 50px, |
||||
|
// letter-spacing:-0.01562em |
||||
|
), |
||||
|
'h2': ( |
||||
|
size: 28px, |
||||
|
weight: 300, |
||||
|
line-height: 40px, |
||||
|
// letter-spacing: -0.00833em |
||||
|
), |
||||
|
'h3': ( |
||||
|
size: 24px, |
||||
|
weight: 400, |
||||
|
line-height: 32px, |
||||
|
// letter-spacing: normal |
||||
|
), |
||||
|
'h4': ( |
||||
|
size: 20px, |
||||
|
weight: 400, |
||||
|
line-height: 30px, |
||||
|
// letter-spacing: 0.00735em |
||||
|
), |
||||
|
'h5': ( |
||||
|
size: 16px, |
||||
|
weight: 400, |
||||
|
line-height: 24px, |
||||
|
// letter-spacing: normal |
||||
|
), |
||||
|
'h6': ( |
||||
|
size: 14px, |
||||
|
weight: 500, |
||||
|
line-height: 18px, |
||||
|
// letter-spacing: 0.0125em |
||||
|
), |
||||
|
'subtitle': ( |
||||
|
size: 12px, |
||||
|
weight: 400, |
||||
|
line-height: 20px, |
||||
|
// letter-spacing: 0.00937em |
||||
|
), |
||||
|
'body': ( |
||||
|
font-size: 14px, |
||||
|
font-weight: 400, |
||||
|
line-height: 22px, |
||||
|
// letter-spacing: 0.03125em |
||||
|
), |
||||
|
'caption': ( |
||||
|
'size': 12px, |
||||
|
'weight': 400, |
||||
|
'line-height': 20px, |
||||
|
// 'letter-spacing': 0.03333em, |
||||
|
// 'text-transform': false |
||||
|
) |
||||
|
), |
||||
|
$uni-headings |
||||
|
); |
||||
|
|
||||
|
|
||||
|
|
||||
|
// 主色 |
||||
|
$uni-primary: #2979ff !default; |
||||
|
$uni-primary-disable:lighten($uni-primary,20%) !default; |
||||
|
$uni-primary-light: lighten($uni-primary,25%) !default; |
||||
|
|
||||
|
// 辅助色 |
||||
|
// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 |
||||
|
$uni-success: #18bc37 !default; |
||||
|
$uni-success-disable:lighten($uni-success,20%) !default; |
||||
|
$uni-success-light: lighten($uni-success,25%) !default; |
||||
|
|
||||
|
$uni-warning: #f3a73f !default; |
||||
|
$uni-warning-disable:lighten($uni-warning,20%) !default; |
||||
|
$uni-warning-light: lighten($uni-warning,25%) !default; |
||||
|
|
||||
|
$uni-error: #e43d33 !default; |
||||
|
$uni-error-disable:lighten($uni-error,20%) !default; |
||||
|
$uni-error-light: lighten($uni-error,25%) !default; |
||||
|
|
||||
|
$uni-info: #8f939c !default; |
||||
|
$uni-info-disable:lighten($uni-info,20%) !default; |
||||
|
$uni-info-light: lighten($uni-info,25%) !default; |
||||
|
|
||||
|
// 中性色 |
||||
|
// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 |
||||
|
$uni-main-color: #3a3a3a !default; // 主要文字 |
||||
|
$uni-base-color: #6a6a6a !default; // 常规文字 |
||||
|
$uni-secondary-color: #909399 !default; // 次要文字 |
||||
|
$uni-extra-color: #c7c7c7 !default; // 辅助说明 |
||||
|
|
||||
|
// 边框颜色 |
||||
|
$uni-border-1: #F0F0F0 !default; |
||||
|
$uni-border-2: #EDEDED !default; |
||||
|
$uni-border-3: #DCDCDC !default; |
||||
|
$uni-border-4: #B9B9B9 !default; |
||||
|
|
||||
|
// 常规色 |
||||
|
$uni-black: #000000 !default; |
||||
|
$uni-white: #ffffff !default; |
||||
|
$uni-transparent: rgba($color: #000000, $alpha: 0) !default; |
||||
|
|
||||
|
// 背景色 |
||||
|
$uni-bg-color: #f7f7f7 !default; |
||||
|
|
||||
|
/* 水平间距 */ |
||||
|
$uni-spacing-sm: 8px !default; |
||||
|
$uni-spacing-base: 15px !default; |
||||
|
$uni-spacing-lg: 30px !default; |
||||
|
|
||||
|
// 阴影 |
||||
|
$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; |
||||
|
$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; |
||||
|
$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; |
||||
|
|
||||
|
// 蒙版 |
||||
|
$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; |
||||
@ -1,19 +1,19 @@ |
|||||
// 合并 map |
|
||||
@function map-deep-merge($parent-map, $child-map){ |
|
||||
$result: $parent-map; |
|
||||
@each $key, $child in $child-map { |
|
||||
$parent-has-key: map-has-key($result, $key); |
|
||||
$parent-value: map-get($result, $key); |
|
||||
$parent-type: type-of($parent-value); |
|
||||
$child-type: type-of($child); |
|
||||
$parent-is-map: $parent-type == map; |
|
||||
$child-is-map: $child-type == map; |
|
||||
|
|
||||
@if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ |
|
||||
$result: map-merge($result, ( $key: $child )); |
|
||||
}@else { |
|
||||
$result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); |
|
||||
} |
|
||||
} |
|
||||
@return $result; |
|
||||
}; |
|
||||
|
// 合并 map |
||||
|
@function map-deep-merge($parent-map, $child-map){ |
||||
|
$result: $parent-map; |
||||
|
@each $key, $child in $child-map { |
||||
|
$parent-has-key: map-has-key($result, $key); |
||||
|
$parent-value: map-get($result, $key); |
||||
|
$parent-type: type-of($parent-value); |
||||
|
$child-type: type-of($child); |
||||
|
$parent-is-map: $parent-type == map; |
||||
|
$child-is-map: $child-type == map; |
||||
|
|
||||
|
@if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ |
||||
|
$result: map-merge($result, ( $key: $child )); |
||||
|
}@else { |
||||
|
$result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); |
||||
|
} |
||||
|
} |
||||
|
@return $result; |
||||
|
}; |
||||
@ -1,31 +1,31 @@ |
|||||
// 间距基础倍数 |
|
||||
$uni-space-root: 2; |
|
||||
// 边框半径默认值 |
|
||||
$uni-radius-root:5px; |
|
||||
// 主色 |
|
||||
$uni-primary: #2979ff; |
|
||||
// 辅助色 |
|
||||
$uni-success: #4cd964; |
|
||||
// 警告色 |
|
||||
$uni-warning: #f0ad4e; |
|
||||
// 错误色 |
|
||||
$uni-error: #dd524d; |
|
||||
// 描述色 |
|
||||
$uni-info: #909399; |
|
||||
// 中性色 |
|
||||
$uni-main-color: #303133; |
|
||||
$uni-base-color: #606266; |
|
||||
$uni-secondary-color: #909399; |
|
||||
$uni-extra-color: #C0C4CC; |
|
||||
// 背景色 |
|
||||
$uni-bg-color: #f5f5f5; |
|
||||
// 边框颜色 |
|
||||
$uni-border-1: #DCDFE6; |
|
||||
$uni-border-2: #E4E7ED; |
|
||||
$uni-border-3: #EBEEF5; |
|
||||
$uni-border-4: #F2F6FC; |
|
||||
|
|
||||
// 常规色 |
|
||||
$uni-black: #000000; |
|
||||
$uni-white: #ffffff; |
|
||||
$uni-transparent: rgba($color: #000000, $alpha: 0); |
|
||||
|
// 间距基础倍数 |
||||
|
$uni-space-root: 2; |
||||
|
// 边框半径默认值 |
||||
|
$uni-radius-root:5px; |
||||
|
// 主色 |
||||
|
$uni-primary: #2979ff; |
||||
|
// 辅助色 |
||||
|
$uni-success: #4cd964; |
||||
|
// 警告色 |
||||
|
$uni-warning: #f0ad4e; |
||||
|
// 错误色 |
||||
|
$uni-error: #dd524d; |
||||
|
// 描述色 |
||||
|
$uni-info: #909399; |
||||
|
// 中性色 |
||||
|
$uni-main-color: #303133; |
||||
|
$uni-base-color: #606266; |
||||
|
$uni-secondary-color: #909399; |
||||
|
$uni-extra-color: #C0C4CC; |
||||
|
// 背景色 |
||||
|
$uni-bg-color: #f5f5f5; |
||||
|
// 边框颜色 |
||||
|
$uni-border-1: #DCDFE6; |
||||
|
$uni-border-2: #E4E7ED; |
||||
|
$uni-border-3: #EBEEF5; |
||||
|
$uni-border-4: #F2F6FC; |
||||
|
|
||||
|
// 常规色 |
||||
|
$uni-black: #000000; |
||||
|
$uni-white: #ffffff; |
||||
|
$uni-transparent: rgba($color: #000000, $alpha: 0); |
||||
@ -1,62 +1,62 @@ |
|||||
@import './styles/setting/_variables.scss'; |
|
||||
// 间距基础倍数 |
|
||||
$uni-space-root: 2; |
|
||||
// 边框半径默认值 |
|
||||
$uni-radius-root:5px; |
|
||||
|
|
||||
// 主色 |
|
||||
$uni-primary: #2979ff; |
|
||||
$uni-primary-disable:mix(#fff,$uni-primary,50%); |
|
||||
$uni-primary-light: mix(#fff,$uni-primary,80%); |
|
||||
|
|
||||
// 辅助色 |
|
||||
// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 |
|
||||
$uni-success: #18bc37; |
|
||||
$uni-success-disable:mix(#fff,$uni-success,50%); |
|
||||
$uni-success-light: mix(#fff,$uni-success,80%); |
|
||||
|
|
||||
$uni-warning: #f3a73f; |
|
||||
$uni-warning-disable:mix(#fff,$uni-warning,50%); |
|
||||
$uni-warning-light: mix(#fff,$uni-warning,80%); |
|
||||
|
|
||||
$uni-error: #e43d33; |
|
||||
$uni-error-disable:mix(#fff,$uni-error,50%); |
|
||||
$uni-error-light: mix(#fff,$uni-error,80%); |
|
||||
|
|
||||
$uni-info: #8f939c; |
|
||||
$uni-info-disable:mix(#fff,$uni-info,50%); |
|
||||
$uni-info-light: mix(#fff,$uni-info,80%); |
|
||||
|
|
||||
// 中性色 |
|
||||
// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 |
|
||||
$uni-main-color: #3a3a3a; // 主要文字 |
|
||||
$uni-base-color: #6a6a6a; // 常规文字 |
|
||||
$uni-secondary-color: #909399; // 次要文字 |
|
||||
$uni-extra-color: #c7c7c7; // 辅助说明 |
|
||||
|
|
||||
// 边框颜色 |
|
||||
$uni-border-1: #F0F0F0; |
|
||||
$uni-border-2: #EDEDED; |
|
||||
$uni-border-3: #DCDCDC; |
|
||||
$uni-border-4: #B9B9B9; |
|
||||
|
|
||||
// 常规色 |
|
||||
$uni-black: #000000; |
|
||||
$uni-white: #ffffff; |
|
||||
$uni-transparent: rgba($color: #000000, $alpha: 0); |
|
||||
|
|
||||
// 背景色 |
|
||||
$uni-bg-color: #f7f7f7; |
|
||||
|
|
||||
/* 水平间距 */ |
|
||||
$uni-spacing-sm: 8px; |
|
||||
$uni-spacing-base: 15px; |
|
||||
$uni-spacing-lg: 30px; |
|
||||
|
|
||||
// 阴影 |
|
||||
$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); |
|
||||
$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); |
|
||||
$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); |
|
||||
|
|
||||
// 蒙版 |
|
||||
$uni-mask: rgba($color: #000000, $alpha: 0.4); |
|
||||
|
@import './styles/setting/_variables.scss'; |
||||
|
// 间距基础倍数 |
||||
|
$uni-space-root: 2; |
||||
|
// 边框半径默认值 |
||||
|
$uni-radius-root:5px; |
||||
|
|
||||
|
// 主色 |
||||
|
$uni-primary: #2979ff; |
||||
|
$uni-primary-disable:mix(#fff,$uni-primary,50%); |
||||
|
$uni-primary-light: mix(#fff,$uni-primary,80%); |
||||
|
|
||||
|
// 辅助色 |
||||
|
// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 |
||||
|
$uni-success: #18bc37; |
||||
|
$uni-success-disable:mix(#fff,$uni-success,50%); |
||||
|
$uni-success-light: mix(#fff,$uni-success,80%); |
||||
|
|
||||
|
$uni-warning: #f3a73f; |
||||
|
$uni-warning-disable:mix(#fff,$uni-warning,50%); |
||||
|
$uni-warning-light: mix(#fff,$uni-warning,80%); |
||||
|
|
||||
|
$uni-error: #e43d33; |
||||
|
$uni-error-disable:mix(#fff,$uni-error,50%); |
||||
|
$uni-error-light: mix(#fff,$uni-error,80%); |
||||
|
|
||||
|
$uni-info: #8f939c; |
||||
|
$uni-info-disable:mix(#fff,$uni-info,50%); |
||||
|
$uni-info-light: mix(#fff,$uni-info,80%); |
||||
|
|
||||
|
// 中性色 |
||||
|
// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 |
||||
|
$uni-main-color: #3a3a3a; // 主要文字 |
||||
|
$uni-base-color: #6a6a6a; // 常规文字 |
||||
|
$uni-secondary-color: #909399; // 次要文字 |
||||
|
$uni-extra-color: #c7c7c7; // 辅助说明 |
||||
|
|
||||
|
// 边框颜色 |
||||
|
$uni-border-1: #F0F0F0; |
||||
|
$uni-border-2: #EDEDED; |
||||
|
$uni-border-3: #DCDCDC; |
||||
|
$uni-border-4: #B9B9B9; |
||||
|
|
||||
|
// 常规色 |
||||
|
$uni-black: #000000; |
||||
|
$uni-white: #ffffff; |
||||
|
$uni-transparent: rgba($color: #000000, $alpha: 0); |
||||
|
|
||||
|
// 背景色 |
||||
|
$uni-bg-color: #f7f7f7; |
||||
|
|
||||
|
/* 水平间距 */ |
||||
|
$uni-spacing-sm: 8px; |
||||
|
$uni-spacing-base: 15px; |
||||
|
$uni-spacing-lg: 30px; |
||||
|
|
||||
|
// 阴影 |
||||
|
$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); |
||||
|
$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); |
||||
|
$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); |
||||
|
|
||||
|
// 蒙版 |
||||
|
$uni-mask: rgba($color: #000000, $alpha: 0.4); |
||||
Write
Preview
Loading…
Cancel
Save