jiuyiUniapp/shop/components/rf-search-bar/index.vue

240 lines
5.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="rf-search-bar">
<!-- 状态栏 -->
<view
v-if="headerShow"
class="status"
:style="{
position: headerPosition,
top: statusTop,
opacity: afterHeaderOpacity
}"
></view>
<!-- 顶部搜索栏 -->
<view
v-if="headerShow"
class="header"
:style="{
position: headerPosition,
top: headerTop,
opacity: afterHeaderOpacity
}"
>
<!-- 跳转分类模块 -->
<view class="addr">
<text class="iconfont" v-if="isOpenScan" @tap.stop="link" :class="[icon, 'text-' + themeColor.name]"></text>
<image class="logo" :src="appLogo" v-else></image>
</view>
<!-- 搜索框 -->
<view class="input-box" @tap.stop="discard" v-if="inputDisabled">
<input
@confirm="toSearch"
:value="placeholder"
@input="handleSearchValueChange"
:placeholder="placeholder ? '' : '请输入关键字'"
style="color:#888;"
placeholder-style="color:#ccc;"
/>
<view class="iconfont iconsousuo2" @tap.stop="toSearch"></view>
</view>
<view class="input-box" v-else>
<input
@tap="toSearch"
disabled
:value="placeholder"
placeholder-style="color:#ccc;"
/>
<view class="icon iconfont iconsousuo2"></view>
</view>
</view>
<!-- 占位 -->
<view v-if="headerShow" class="place"></view>
</view>
</template>
<script>
// #ifdef H5
import jweixin from '@/common/jweixin';
// #endif
import { productVirtualVerificationVerify } from '@/api/userInfo';
export default {
props: {
headerShow: {
type: Boolean,
default: true
},
inputDisabled: {
type: Boolean,
default: false
},
placeholder: {
type: String,
default: '请输入关键字'
},
icon: {
type: String,
default: null
},
title: {
type: String,
default: null
}
},
data() {
return {
afterHeaderOpacity: 1, // 不透明度
headerPosition: 'fixed',
headerTop: null,
statusTop: null,
nVueTitle: null,
searchValue: this.placeholder,
appLogo: this.$mSettingConfig.appLogo,
isOpenScan: this.$mSettingConfig.isOpenScan
};
},
methods: {
handleSearchValueChange(e) {
this.searchValue = e.detail.value;
},
discard() {},
// 扫一扫
link() {
const _this = this;
/* #ifndef H5 */
uni.scanCode({
success: function (res) {
_this.$http.post(productVirtualVerificationVerify, { code: res.result }).then(() => {
_this.$mHelper.toast('核销成功');
}).catch(err => {
_this.$mHelper.toast(err);
});
},
fail(res) {
// 支付成功后的回调函数
_this.$mHelper.toast('扫描失败:' + res.errMsg);
}
});
/* #endif */
/* #ifdef H5 */
if (this.$mPayment.isWechat()) {
jweixin.ready(() => {
jweixin.scanQRCode({
needResult: 1, // 默认为0扫描结果由微信处理1则直接返回扫描结果
success(res) {
window.location.href=res.resultStr;
_this.$http.post(productVirtualVerificationVerify, { code: res.resultStr }).then(() => {
_this.$mHelper.toast('核销成功');
});
},
fail(res) {
// 支付成功后的回调函数
_this.$mHelper.toast('扫描失败:' + res.errMsg);
}
});
});
} else {
// https://home.wolive.cc/index/index/home?visiter_id=&visiter_name=&avatar=&business_id=shen123456&groupid=0&service_name=shen123456
window.location.href='https://home.wolive.cc/index/index/home?visiter_id=&visiter_name=&avatar=&business_id=shen123456&groupid=0&service_name=shen123456'
// this.$mHelper.toast('请在微信H5进行相关操作');
}
/* #endif */
},
async toSearch() {
await this.$emit('search', {
searchValue: this.searchValue
});
}
}
};
</script>
<style scoped lang="scss">
.rf-search-bar {
background-color: #fff;
.status {
width: 100%;
height: 0;
position: fixed;
z-index: 10;
background-color: #fff;
top: 0;
/* #ifdef APP-PLUS */
height: var(--status-bar-height); //覆盖样式
/* #endif */
}
.header {
width: 100%;
height: 100upx;
display: flex;
align-items: center;
position: fixed;
top: 0;
z-index: 10;
background-color: #fff;
/* #ifdef APP-PLUS */
top: var(--status-bar-height);
/* #endif */
.addr {
height: 60upx;
flex-shrink: 0;
display: flex;
align-items: center;
.iconfont {
margin-left: $spacing-lg;
margin-right: $spacing-sm;
font-weight: 500;
display: flex;
align-items: center;
font-size: 48upx;
}
.logo {
width: 45upx;
height: 45upx;
border-radius: 8upx;
margin-left: 10upx;
}
}
.input-box {
width: 100%;
height: 60upx;
background-color: #f5f5f5;
border-radius: 30upx;
position: relative;
display: flex;
align-items: center;
margin: 0 20upx 0 10upx;
.iconsousuo2 {
z-index: 999;
display: flex;
align-items: center;
position: absolute;
top: 0;
right: 0;
width: 60upx;
height: 60upx;
font-size: 34upx;
color: #c0c0c0;
}
input {
width: 100%;
padding-left: 28upx;
height: 28upx;
color: #888;
font-size: 28upx;
}
}
}
.place {
background-color: #ffffff;
height: 100upx;
/* #ifdef APP-PLUS */
margin-top: var(--status-bar-height);
/* #endif */
}
}
</style>