240 lines
5.2 KiB
Vue
240 lines
5.2 KiB
Vue
|
<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>
|