Csqqqqq 4 months ago
parent 052bb21d72
commit 965b5fc031

@ -0,0 +1,619 @@
<template>
<view class="complete-claims">
<u-navbar title="完善理赔信息" titleStyle="{'font-weight':'500','font-size':'32rpx'}" height="108rpx" placeholder="true"></u-navbar>
<view class="complete-body">
<!-- 顶部提示 -->
<view class="tips">
<image src="../../static/img/complete-tips.png" class="tips-img"></image>
<text class="tips-text">需扫描绑于螃蟹身上的验蟹师吊牌码添加哦</text>
</view>
<!-- 已申请的理赔 -->
<view class="item">
<view class="item-left">
<image src="https://wx3.sinaimg.cn/large/0060qb9Xgy1hsby36rqrxj335s35snpd.jpg"></image>
</view>
<view class="item-right">
<image src="../../static/img/item-img.png"></image>
<view class="item-num">YXS234568798097871</view>
<view class="item-con">死蟹2 公蟹</view>
<view class="item-price">
预计理赔<text>12.1222222</text>
</view>
</view>
</view>
<view class="item">
<view class="item-left">
<image src="https://wx3.sinaimg.cn/large/0060qb9Xgy1hsby36rqrxj335s35snpd.jpg"></image>
</view>
<view class="item-right">
<image src="../../static/img/item-img.png"></image>
<view class="item-num">YXS234568798097871</view>
<view class="item-con">死蟹2 公蟹</view>
<view class="item-price">
预计理赔<text>12.1222222</text>
</view>
</view>
</view>
<!-- 添加新的理赔 -->
<view class="add-btn" @click="show = true">
<view class="btn-bgColor">
<image src="../../static/img/add-scan.png"></image>
<button>扫码添加</button>
</view>
</view>
</view>
<!-- 底部按钮 -->
<view class="complete-bottom" >
<view class="bottom-left">
<view><text>288888</text></view>
<view>预计赔付</view>
</view>
<view class="bottom-price">
32.12222222
</view>
<view class="bottom-btn">
完成理赔
</view>
</view>
<u-popup ref="popup" :show="show" mode="bottom" @open="open" :safeAreaInsetBottom="false" :round="16" :closeOnClickOverlay="false">
<scroll-view scroll-y="true"> <!-- 允许上下滚动 -->
<view class="complete-popup">
<image src="../../static/img/popup-close.png" @click="close"></image>
<view class="popup-title">补充理赔规格信息</view>
<view class="popup-tips">
<image src="../../static/img/complete-tips.png" class="tips-img"></image>
<text class="tips-text">规格信息可在包装外侧或购买订单中查看</text>
</view>
<view class="popup-item">
<view class="popup-item-title">
螃蟹类型
</view>
<view class="popup-item-box">
<view :class="['box-con',{'act': maleIsAct==true}]" @click="isActive">
<view class="box-left">
<image src="../../static/img/w1.png"></image>
</view>
<view class="box-right">
<view class="name">公蟹</view>
<view class="type">尖脐 钳大蟹钳毛多</view>
</view>
</view>
<view :class="['box-con',{'act': maleIsAct==false}]" @click="isActive">
<view class="box-left">
<image src="../../static/img/w1.png"></image>
</view>
<view class="box-right">
<view class="name">母蟹</view>
<view class="type">圆脐 钳小蟹钳毛少</view>
</view>
</view>
</view>
</view>
<view class="popup-item">
<view class="popup-item-title">
螃蟹规格
</view>
<view class="popup-item-box">
<view :class="['type-item',{'act': item.checked}]" v-for="item in typeList" @click="isTypeActive" :data-id='item.num'>{{item.name}}</view>
</view>
</view>
<view class="popup-item">
<view class="popup-item-title img">
单只蟹称重照片
</view>
<view class="item-addition">
漏出清晰的重量数字及溯源二维码
</view>
<view class="image-box">
<view class="image-item">
<image src="https://wx2.sinaimg.cn/large/006WYq6ngy1hsd6nwzzj8j30u00u2dip.jpg"></image>
<view class="image-tip">
<image class="tip-icon" src="../../static/img/image-icon.png"></image>
示例
</view>
<view class="image-bottom">需要 1 </view>
</view>
<view class="image-item">
<image src="https://wx2.sinaimg.cn/large/006WYq6ngy1hsd6nwzzj8j30u00u2dip.jpg"></image>
<view class="image-tip">
<image class="tip-icon" src="../../static/img/image-icon.png"></image>
示例
</view>
<view class="image-bottom">需要 1 </view>
</view>
<view class="image-item">
<image src="https://wx2.sinaimg.cn/large/006WYq6ngy1hsd6nwzzj8j30u00u2dip.jpg"></image>
<view class="image-tip">
<image class="tip-icon" src="../../static/img/image-icon.png"></image>
示例
</view>
<view class="image-bottom">需要 1 </view>
</view>
<view class="image-item">
<image src="https://wx2.sinaimg.cn/large/006WYq6ngy1hsd6nwzzj8j30u00u2dip.jpg"></image>
<view class="image-tip">
<image class="tip-icon" src="../../static/img/image-icon.png"></image>
示例
</view>
<view class="image-bottom">需要 1 </view>
</view>
<view class="image-item">
<image class="image-add" src="../../static/img/image-add.png"></image>
</view>
</view>
</view>
<view class="popup-btn">
<view class="input-btn">确认提交</view>
</view>
</view>
</scroll-view>
</u-popup>
</view>
</template>
<script>
export default {
data(){
return{
show:true,
typeList:
[{
name:'1.5两以下',
num:0,
checked:false
},{
name:'1.5 两',
num:1,
checked:false
},{
name:'2 两',
num:2,
checked:false
},{
name:'2.5 两',
num:3,
checked:false
},{
name:'3 两',
num:4,
checked:false
},{
name:'3.5两',
num:5,
checked:false
},{
name:'4 两',
num:6,
checked:false
},{
name:'4.5 两',
num:7,
checked:false
},{
name:'5 两',
num:8,
checked:false
},{
name:'5 两以上',
num:9,
checked:false
}],
maleIsAct:false,
}
},
methods:{
open(){
this.show = true
},
close(){
this.show = false
},
isActive(){
if(this.maleIsAct == true){
this.maleIsAct = false
}else{
this.maleIsAct = true
}
},
isTypeActive:function(e){
var index = e.currentTarget.dataset.id
var list = this.typeList
console.log(index)
console.log(list[index].checked)
if(list[index].checked == true){
list[index].checked = false
}else{
for (var item of this.typeList){
item.checked = false
}
list[index].checked = true
}
this.typeList = list
}
}
}
</script>
<style lang="scss">
.complete-body{
width: 750rpx;
min-height: 100vh;
background: #F5F5F5;
.tips{
width: 750rpx;
height: 60rpx;
background: #FFFAEE;
display: flex;
justify-content: center;
padding-top: 15rpx;
box-sizing: border-box;
}
.item{
width: 678rpx;
height: 180rpx;
background: #FFFFFF;
border-radius: 16rpx;
margin: 24rpx 36rpx;
display: flex;
padding: 24rpx;
box-sizing: border-box;
position: relative;
.item-left{
width: 120rpx;
height: 120rpx;
border-radius: 12rpx;
overflow: hidden;
margin-right: 20rpx;
>image{
width: 100%;
height: 100%;
}
}
.item-right{
.item-num{
font-weight: 400;
font-size: 28rpx;
color: rgba(0,0,0,0.6);
line-height: 39rpx;
}
.item-con{
font-weight: 500;
font-size: 32rpx;
color: #000000;
line-height: 45rpx;
text-align: left;
}
.item-price{
width: 490rpx;
font-weight: 400;
font-size: 24rpx;
color: rgba(0,0,0,0.3);
line-height: 34rpx;
text-align: right;
box-sizing: border-box;
>text{
font-weight: 500;
font-size: 40rpx;
color: #000000;
line-height: 56rpx;
text-align: right;
&::before{
content: '¥';
font-size: 24rpx;
margin-right: 6rpx;
margin-left: 8rpx;
}
}
}
>image{
width: 32rpx;
height: 32rpx;
position: absolute;
right: 24rpx;
top: 24rpx;
}
}
}
.add-btn{
margin-left: 36rpx;
.btn-bgColor{
width: 678rpx;
height: 92rpx;
border-radius: 24rpx;
padding: 2rpx;
background-image: linear-gradient(91deg, rgba(67, 161, 255, 1), rgba(47, 128, 249, 1));
box-sizing: border-box;
position: relative;
z-index: 5;
>image{
position: absolute;
width: 36rpx;
height: 36rpx;
z-index: 10;
left: 260rpx;
top: 30rpx;
}
>button{
width: 100%;
height: 100%;
border-radius: 24rpx;
background: #F5F5F5;
font-weight: 500;
font-size: 28rpx;
color: #2388FF;
line-height: 39rpx;
padding-left: 60rpx;
padding-top: 24rpx;
}
}
}
}
.complete-bottom{
width: 750rpx;
height: 184rpx;
background: #FFFFFF;
position: fixed;
bottom: 0;
display: flex;
justify-content: space-around;
padding: 24rpx;
box-sizing: border-box;
.bottom-left{
font-weight: 400;
font-size: 24rpx;
color: rgba(0,0,0,0.3);
text-align-last: justify;
>view{
white-space: nowrap; //
>text{
color: #000000 ;
font-size: 28rpx;
}
}
}
.bottom-price{
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 48rpx;
color: #FF2D46;
line-height: 67rpx;
&::before{
content: '¥';
font-size: 24rpx;
margin-right: 6rpx;
}
}
.bottom-btn{
width: 346rpx;
height: 92rpx;
background: linear-gradient( 91deg, #43A1FF 0%, #2F80F9 100%), #FFFFFF;
border-radius: 24rpx 24rpx 24rpx 24rpx;
font-weight: 500;
font-size: 28rpx;
color: #FFFFFF;
line-height: 39rpx;
text-align: center;
padding-top: 26rpx;
box-sizing: border-box;
}
}
.complete-popup{
width: 750rpx;
height: 1428rpx;
background: #FFFFFF;
padding: 32rpx 36rpx;
position: relative;
box-sizing: border-box;
//
>image{
width: 48rpx;
height: 48rpx;
position: absolute;
right: 36rpx;
top: 24rpx;
}
//
.popup-title{
font-weight: 600;
font-size: 32rpx;
color: #000000;
line-height: 45rpx;
}
//
.popup-tips{
width: 678rpx;
height: 60rpx;
background: #FFFAEE;
border-radius: 16rpx;
margin-top: 20rpx;
padding: 14rpx 24rpx;
box-sizing: border-box;
display: flex;
}
.popup-item{
.popup-item-title{
font-weight: 600;
font-size: 28rpx;
color: #000000;
line-height: 39rpx;
margin-bottom: 20rpx;
margin-top: 24rpx;
&.img{
margin-top: 10rpx;
margin-bottom: 12rpx;
}
}
.popup-item-box{
width: 678rpx;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.box-con{
width: 332rpx;
height: 120rpx;
background: #F8F8F8;
border-radius: 10rpx;
display: flex;
justify-content: space-around;
padding-top: 20rpx;
box-sizing: border-box;
.box-left{
width: 110rpx;
height: 80rpx;
overflow: hidden;
>image{
width: 100%;
height: 100%;
}
}
.box-right{
width: 184rpx;
height: 70rpx;
margin-top: 6rpx;
.name{
font-weight: 400;
font-size: 28rpx;
color: #000000;
}
.type{
font-weight: 400;
font-size: 22rpx;
color: rgba(34,34,34,0.6);
line-height: 31rpx;
}
}
&.act{
z-index: 15;
background: rgba(35,136,255,0.1);
border: 2rpx solid #2388FF;
}
}
.type-item{
width: 332rpx;
height: 72rpx;
background: #F8F8F8;
border-radius: 8rpx;
font-weight: 400;
font-size: 28rpx;
color: #000000;
line-height: 39rpx;
text-align: center;
padding-top: 16rpx;
box-sizing: border-box;
margin-bottom: 14rpx;
&.act{
z-index: 15;
background: rgba(35,136,255,0.1);
border: 2rpx solid #2388FF;
}
}
.item-addition{
font-weight: 400;
font-size: 24rpx;
color: #999999;
line-height: 34rpx;
text-align: left;
}
.image-box{
display: flex;
flex-wrap: wrap;
justify-content: left;
.image-item{
width: 226rpx;
height: 226rpx;
background: #F3F4F5;
border-radius: 10rpx;
box-sizing: border-box;
overflow: hidden;
margin-top: 20rpx;
position: relative;
text-align: center;
margin-right: 12rpx;
>image{
width: 100%;
height: 100%;
z-index: 5;
}
.image-tip{
width: 100rpx;
height: 38rpx;
background: rgba(0,0,0,0.6);
border-radius: 0rpx 0rpx 8rpx 0rpx;
position: absolute;
left: 0;
top: 0;
z-index: 10;
font-weight: 400;
font-size: 22rpx;
color: #FFFFFF;
line-height: 31rpx;
text-align: left;
padding: 4rpx 12rpx;
box-sizing: border-box;
display: flex;
.tip-icon{
width: 24rpx;
height: 24rpx;
margin-right: 8rpx;
margin-top: 4rpx;
}
}
.image-bottom{
width: 226rpx;
height: 38rpx;
background: rgba(0,0,0,0.6);
border-radius: 0rpx 0rpx 8rpx 0rpx;
position: absolute;
left: 0;
right: 0;
bottom: 0;
font-weight: 400;
font-size: 22rpx;
color: #FFFFFF;
line-height: 31rpx;
text-align: center;
}
.image-add{
margin-top: 90rpx;
width: 48rpx;
height: 48rpx;
}
}
}
}
.popup-btn{
margin-top: 52rpx;
height:160rpx;
.input-btn{
width: 678rpx;
height: 92rpx;
background: linear-gradient( 91deg, #43A1FF 0%, #2F80F9 100%), #FFFFFF;
border-radius: 24rpx;
font-weight: 500;
font-size: 28rpx;
color: #FFFFFF;
line-height: 39rpx;
text-align: center;
padding: 26rpx;
box-sizing: border-box;
}
}
}
.tips-img{
width: 86rpx;
height: 30rpx;
}
.tips-text{
font-weight: 400;
font-size: 24rpx;
color: #F0A941;
line-height: 34rpx;
margin-left: 12rpx;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@ -0,0 +1,84 @@
## 1.9.12024-04-02
- 修复 uni-popup-dialog vue3下使用value无法进行绑定的bug(双向绑定兼容旧写法)
## 1.9.02024-03-28
- 修复 uni-popup-dialog 双向绑定时初始化逻辑修正
## 1.8.92024-03-20
- 修复 uni-popup-dialog 数据输入时修正为双向绑定
## 1.8.82024-02-20
- 修复 uni-popup 在微信小程序下出现文字向上闪动的bug
## 1.8.72024-02-02
- 新增 uni-popup-dialog 新增属性focusinput模式下是否自动自动聚焦
## 1.8.62024-01-30
- 新增 uni-popup-dialog 新增属性maxLength:限制输入框字数
## 1.8.52024-01-26
- 新增 uni-popup-dialog 新增属性showClose:控制关闭按钮的显示
## 1.8.42023-11-15
- 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close`
## 1.8.32023-04-17
- 修复 uni-popup 重复打开时的 bug
## 1.8.22023-02-02
- uni-popup-dialog 组件新增 inputType 属性
## 1.8.12022-12-01
- 修复 nvue 下 v-show 报错
## 1.8.02022-11-29
- 优化 主题样式
## 1.7.92022-04-02
- 修复 弹出层内部无法滚动的bug
## 1.7.82022-03-28
- 修复 小程序中高度错误的bug
## 1.7.72022-03-17
- 修复 快速调用open出现问题的Bug
## 1.7.62022-02-14
- 修复 safeArea 属性不能设置为false的bug
## 1.7.52022-01-19
- 修复 isMaskClick 失效的bug
## 1.7.42022-01-19
- 新增 cancelText \ confirmText 属性 ,可自定义文本
- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色
- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题
## 1.7.32022-01-13
- 修复 设置 safeArea 属性不生效的bug
## 1.7.22021-11-26
- 优化 组件示例
## 1.7.12021-11-26
- 修复 vuedoc 文字错误
## 1.7.02021-11-19
- 优化 组件UI并提供设计资源详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup)
## 1.6.22021-08-24
- 新增 支持国际化
## 1.6.12021-07-30
- 优化 vue3下事件警告的问题
## 1.6.02021-07-13
- 组件兼容 vue3如何创建vue3项目详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
## 1.5.02021-06-23
- 新增 mask-click 遮罩层点击事件
## 1.4.52021-06-22
- 修复 nvue 平台中间弹出后点击内容再点击遮罩无法关闭的Bug
## 1.4.42021-06-18
- 修复 H5平台中间弹出后点击内容再点击遮罩无法关闭的Bug
## 1.4.32021-06-08
- 修复 错误的 watch 字段
- 修复 safeArea 属性不生效的问题
- 修复 点击内容再点击遮罩无法关闭的Bug
## 1.4.22021-05-12
- 新增 组件示例地址
## 1.4.12021-04-29
- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题
## 1.4.0 2021-04-29
- 新增 type 属性的 left\right 值,支持左右弹出
- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗
- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色
- 新增 safeArea 属性,是否适配底部安全区
- 修复 App\h5\微信小程序底部安全区占位不对的Bug
- 修复 App 端弹出等待的Bug
- 优化 提升低配设备性能,优化动画卡顿问题
- 优化 更简单的组件自定义方式
## 1.2.92021-02-05
- 优化 组件引用关系通过uni_modules引用组件
## 1.2.82021-02-05
- 调整为uni_modules目录规范
## 1.2.72021-02-05
- 调整为uni_modules目录规范
- 新增 支持 PC 端
- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端

@ -0,0 +1,45 @@
// #ifdef H5
export default {
name: 'Keypress',
props: {
disable: {
type: Boolean,
default: false
}
},
mounted () {
const keyNames = {
esc: ['Esc', 'Escape'],
tab: 'Tab',
enter: 'Enter',
space: [' ', 'Spacebar'],
up: ['Up', 'ArrowUp'],
left: ['Left', 'ArrowLeft'],
right: ['Right', 'ArrowRight'],
down: ['Down', 'ArrowDown'],
delete: ['Backspace', 'Delete', 'Del']
}
const listener = ($event) => {
if (this.disable) {
return
}
const keyName = Object.keys(keyNames).find(key => {
const keyName = $event.key
const value = keyNames[key]
return value === keyName || (Array.isArray(value) && value.includes(keyName))
})
if (keyName) {
// 避免和其他按键事件冲突
setTimeout(() => {
this.$emit(keyName, {})
}, 0)
}
}
document.addEventListener('keyup', listener)
this.$once('hook:beforeDestroy', () => {
document.removeEventListener('keyup', listener)
})
},
render: () => {}
}
// #endif

@ -0,0 +1,316 @@
<template>
<view class="uni-popup-dialog">
<view class="uni-dialog-title">
<text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{titleText}}</text>
</view>
<view v-if="mode === 'base'" class="uni-dialog-content">
<slot>
<text class="uni-dialog-content-text">{{content}}</text>
</slot>
</view>
<view v-else class="uni-dialog-content">
<slot>
<input class="uni-dialog-input" :maxlength="maxlength" v-model="val" :type="inputType"
:placeholder="placeholderText" :focus="focus">
</slot>
</view>
<view class="uni-dialog-button-group">
<view class="uni-dialog-button" v-if="showClose" @click="closeDialog">
<text class="uni-dialog-button-text">{{closeText}}</text>
</view>
<view class="uni-dialog-button" :class="showClose?'uni-border-left':''" @click="onOk">
<text class="uni-dialog-button-text uni-button-color">{{okText}}</text>
</view>
</view>
</view>
</template>
<script>
import popup from '../uni-popup/popup.js'
import {
initVueI18n
} from '@dcloudio/uni-i18n'
import messages from '../uni-popup/i18n/index.js'
const {
t
} = initVueI18n(messages)
/**
* PopUp 弹出层-对话框样式
* @description 弹出层-对话框样式
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
* @property {String} value input 模式下的默认值
* @property {String} placeholder input 模式下输入提示
* @property {Boolean} focus input模式下是否自动聚焦默认为true
* @property {String} type = [success|warning|info|error] 主题样式
* @value success 成功
* @value warning 提示
* @value info 消息
* @value error 错误
* @property {String} mode = [base|input] 模式
* @value base 基础对话框
* @value input 可输入对话框
* @showClose {Boolean} 是否显示关闭按钮
* @property {String} content 对话框内容
* @property {Boolean} beforeClose 是否拦截取消事件
* @property {Number} maxlength 输入
* @event {Function} confirm 点击确认按钮触发
* @event {Function} close 点击取消按钮触发
*/
export default {
name: "uniPopupDialog",
mixins: [popup],
emits: ['confirm', 'close', 'update:modelValue', 'input'],
props: {
inputType: {
type: String,
default: 'text'
},
showClose: {
type: Boolean,
default: true
},
// #ifdef VUE2
value: {
type: [String, Number],
default: ''
},
// #endif
// #ifdef VUE3
modelValue: {
type: [Number, String],
default: ''
},
// #endif
placeholder: {
type: [String, Number],
default: ''
},
type: {
type: String,
default: 'error'
},
mode: {
type: String,
default: 'base'
},
title: {
type: String,
default: ''
},
content: {
type: String,
default: ''
},
beforeClose: {
type: Boolean,
default: false
},
cancelText: {
type: String,
default: ''
},
confirmText: {
type: String,
default: ''
},
maxlength: {
type: Number,
default: -1,
},
focus: {
type: Boolean,
default: true,
}
},
data() {
return {
dialogType: 'error',
val: ""
}
},
computed: {
okText() {
return this.confirmText || t("uni-popup.ok")
},
closeText() {
return this.cancelText || t("uni-popup.cancel")
},
placeholderText() {
return this.placeholder || t("uni-popup.placeholder")
},
titleText() {
return this.title || t("uni-popup.title")
}
},
watch: {
type(val) {
this.dialogType = val
},
mode(val) {
if (val === 'input') {
this.dialogType = 'info'
}
},
value(val) {
if (this.maxlength != -1 && this.mode === 'input') {
this.val = val.slice(0, this.maxlength);
} else {
this.val = val
}
},
val(val) {
// #ifdef VUE2
// TODO vue2
this.$emit('input', val);
// #endif
// #ifdef VUE3
// TODO  vue3
this.$emit('update:modelValue', val);
// #endif
}
},
created() {
//
this.popup.disableMask()
// this.popup.closeMask()
if (this.mode === 'input') {
this.dialogType = 'info'
this.val = this.value;
// #ifdef VUE3
this.val = this.modelValue;
// #endif
} else {
this.dialogType = this.type
}
},
methods: {
/**
* 点击确认按钮
*/
onOk() {
if (this.mode === 'input') {
this.$emit('confirm', this.val)
} else {
this.$emit('confirm')
}
if (this.beforeClose) return
this.popup.close()
},
/**
* 点击取消按钮
*/
closeDialog() {
this.$emit('close')
if (this.beforeClose) return
this.popup.close()
},
close() {
this.popup.close()
}
}
}
</script>
<style lang="scss">
.uni-popup-dialog {
width: 300px;
border-radius: 11px;
background-color: #fff;
}
.uni-dialog-title {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
justify-content: center;
padding-top: 25px;
}
.uni-dialog-title-text {
font-size: 16px;
font-weight: 500;
}
.uni-dialog-content {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
justify-content: center;
align-items: center;
padding: 20px;
}
.uni-dialog-content-text {
font-size: 14px;
color: #6C6C6C;
}
.uni-dialog-button-group {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
border-top-color: #f5f5f5;
border-top-style: solid;
border-top-width: 1px;
}
.uni-dialog-button {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex: 1;
flex-direction: row;
justify-content: center;
align-items: center;
height: 45px;
}
.uni-border-left {
border-left-color: #f0f0f0;
border-left-style: solid;
border-left-width: 1px;
}
.uni-dialog-button-text {
font-size: 16px;
color: #333;
}
.uni-button-color {
color: #007aff;
}
.uni-dialog-input {
flex: 1;
font-size: 14px;
border: 1px #eee solid;
height: 40px;
padding: 0 10px;
border-radius: 5px;
color: #555;
}
.uni-popup__success {
color: #4cd964;
}
.uni-popup__warn {
color: #f0ad4e;
}
.uni-popup__error {
color: #dd524d;
}
.uni-popup__info {
color: #909399;
}
</style>

@ -0,0 +1,143 @@
<template>
<view class="uni-popup-message">
<view class="uni-popup-message__box fixforpc-width" :class="'uni-popup__'+type">
<slot>
<text class="uni-popup-message-text" :class="'uni-popup__'+type+'-text'">{{message}}</text>
</slot>
</view>
</view>
</template>
<script>
import popup from '../uni-popup/popup.js'
/**
* PopUp 弹出层-消息提示
* @description 弹出层-消息提示
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
* @property {String} type = [success|warning|info|error] 主题样式
* @value success 成功
* @value warning 提示
* @value info 消息
* @value error 错误
* @property {String} message 消息提示文字
* @property {String} duration 显示时间设置为 0 则不会自动关闭
*/
export default {
name: 'uniPopupMessage',
mixins:[popup],
props: {
/**
* 主题 success/warning/info/error 默认 success
*/
type: {
type: String,
default: 'success'
},
/**
* 消息文字
*/
message: {
type: String,
default: ''
},
/**
* 显示时间设置为 0 则不会自动关闭
*/
duration: {
type: Number,
default: 3000
},
maskShow:{
type:Boolean,
default:false
}
},
data() {
return {}
},
created() {
this.popup.maskShow = this.maskShow
this.popup.messageChild = this
},
methods: {
timerClose(){
if(this.duration === 0) return
clearTimeout(this.timer)
this.timer = setTimeout(()=>{
this.popup.close()
},this.duration)
}
}
}
</script>
<style lang="scss" >
.uni-popup-message {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
justify-content: center;
}
.uni-popup-message__box {
background-color: #e1f3d8;
padding: 10px 15px;
border-color: #eee;
border-style: solid;
border-width: 1px;
flex: 1;
}
@media screen and (min-width: 500px) {
.fixforpc-width {
margin-top: 20px;
border-radius: 4px;
flex: none;
min-width: 380px;
/* #ifndef APP-NVUE */
max-width: 50%;
/* #endif */
/* #ifdef APP-NVUE */
max-width: 500px;
/* #endif */
}
}
.uni-popup-message-text {
font-size: 14px;
padding: 0;
}
.uni-popup__success {
background-color: #e1f3d8;
}
.uni-popup__success-text {
color: #67C23A;
}
.uni-popup__warn {
background-color: #faecd8;
}
.uni-popup__warn-text {
color: #E6A23C;
}
.uni-popup__error {
background-color: #fde2e2;
}
.uni-popup__error-text {
color: #F56C6C;
}
.uni-popup__info {
background-color: #F2F6FC;
}
.uni-popup__info-text {
color: #909399;
}
</style>

@ -0,0 +1,187 @@
<template>
<view class="uni-popup-share">
<view class="uni-share-title"><text class="uni-share-title-text">{{shareTitleText}}</text></view>
<view class="uni-share-content">
<view class="uni-share-content-box">
<view class="uni-share-content-item" v-for="(item,index) in bottomData" :key="index" @click.stop="select(item,index)">
<image class="uni-share-image" :src="item.icon" mode="aspectFill"></image>
<text class="uni-share-text">{{item.text}}</text>
</view>
</view>
</view>
<view class="uni-share-button-box">
<button class="uni-share-button" @click="close">{{cancelText}}</button>
</view>
</view>
</template>
<script>
import popup from '../uni-popup/popup.js'
import {
initVueI18n
} from '@dcloudio/uni-i18n'
import messages from '../uni-popup/i18n/index.js'
const { t } = initVueI18n(messages)
export default {
name: 'UniPopupShare',
mixins:[popup],
emits:['select'],
props: {
title: {
type: String,
default: ''
},
beforeClose: {
type: Boolean,
default: false
}
},
data() {
return {
bottomData: [{
text: '微信',
icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/c2b17470-50be-11eb-b680-7980c8a877b8.png',
name: 'wx'
},
{
text: '支付宝',
icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/d684ae40-50be-11eb-8ff1-d5dcf8779628.png',
name: 'ali'
},
{
text: 'QQ',
icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/e7a79520-50be-11eb-b997-9918a5dda011.png',
name: 'qq'
},
{
text: '新浪',
icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/0dacdbe0-50bf-11eb-8ff1-d5dcf8779628.png',
name: 'sina'
},
// {
// text: '',
// icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/1ec6e920-50bf-11eb-8a36-ebb87efcf8c0.png',
// name: 'copy'
// },
// {
// text: '',
// icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/2e0fdfe0-50bf-11eb-b997-9918a5dda011.png',
// name: 'more'
// }
]
}
},
created() {},
computed: {
cancelText() {
return t("uni-popup.cancel")
},
shareTitleText() {
return this.title || t("uni-popup.shareTitle")
}
},
methods: {
/**
* 选择内容
*/
select(item, index) {
this.$emit('select', {
item,
index
})
this.close()
},
/**
* 关闭窗口
*/
close() {
if(this.beforeClose) return
this.popup.close()
}
}
}
</script>
<style lang="scss" >
.uni-popup-share {
background-color: #fff;
border-top-left-radius: 11px;
border-top-right-radius: 11px;
}
.uni-share-title {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
align-items: center;
justify-content: center;
height: 40px;
}
.uni-share-title-text {
font-size: 14px;
color: #666;
}
.uni-share-content {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
justify-content: center;
padding-top: 10px;
}
.uni-share-content-box {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
flex-wrap: wrap;
width: 360px;
}
.uni-share-content-item {
width: 90px;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
justify-content: center;
padding: 10px 0;
align-items: center;
}
.uni-share-content-item:active {
background-color: #f5f5f5;
}
.uni-share-image {
width: 30px;
height: 30px;
}
.uni-share-text {
margin-top: 10px;
font-size: 14px;
color: #3B4144;
}
.uni-share-button-box {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: row;
padding: 10px 15px;
}
.uni-share-button {
flex: 1;
border-radius: 50px;
color: #666;
font-size: 16px;
}
.uni-share-button::after {
border-radius: 50px;
}
</style>

@ -0,0 +1,7 @@
{
"uni-popup.cancel": "cancel",
"uni-popup.ok": "ok",
"uni-popup.placeholder": "pleace enter",
"uni-popup.title": "Hint",
"uni-popup.shareTitle": "Share to"
}

@ -0,0 +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
}

@ -0,0 +1,7 @@
{
"uni-popup.cancel": "取消",
"uni-popup.ok": "确定",
"uni-popup.placeholder": "请输入",
"uni-popup.title": "提示",
"uni-popup.shareTitle": "分享到"
}

@ -0,0 +1,7 @@
{
"uni-popup.cancel": "取消",
"uni-popup.ok": "確定",
"uni-popup.placeholder": "請輸入",
"uni-popup.title": "提示",
"uni-popup.shareTitle": "分享到"
}

@ -0,0 +1,45 @@
// #ifdef H5
export default {
name: 'Keypress',
props: {
disable: {
type: Boolean,
default: false
}
},
mounted () {
const keyNames = {
esc: ['Esc', 'Escape'],
tab: 'Tab',
enter: 'Enter',
space: [' ', 'Spacebar'],
up: ['Up', 'ArrowUp'],
left: ['Left', 'ArrowLeft'],
right: ['Right', 'ArrowRight'],
down: ['Down', 'ArrowDown'],