wangxia 3 months ago
commit 4d291805c0

@ -550,4 +550,12 @@ page {
.g_pt_90 { .g_pt_90 {
padding-top: 90px; padding-top: 90px;
} }
.g-rh-login-false-list{
.bocai_btn_type_primary{
background-color: #00b666 !important;
border: 1px solid #00b666 !important;
}
}
</style> </style>

@ -11,12 +11,7 @@
</view> </view>
</view> </view>
<view v-if="!isLogin" style="background-color: #ededed" class="m-log g_flex_column_start"> <view v-if="!isLogin" style="background-color: #ededed" class="m-log g_flex_column_start">
<view class="g_h_100"></view> <rh-login-false-list />
<view>
<g-empty text="您还有没有登录,请登录后查看工单" />
<view class="g_h_32"></view>
<g-button btnText="去登录" size="small" class="g_mt_32" @clickBtn="goLogin" />
</view>
</view> </view>
<!-- :style="{ height: `calc(100vh - ${108 + tabbarHeight}px)` }" :scroll-y="true" @scrolltolower="reachBottom" --> <!-- :style="{ height: `calc(100vh - ${108 + tabbarHeight}px)` }" :scroll-y="true" @scrolltolower="reachBottom" -->
<view v-if="speed > 0" :lower-threshold="100"> <view v-if="speed > 0" :lower-threshold="100">

@ -5,18 +5,9 @@
<view <view
v-if="!loading && speed == 0" v-if="!loading && speed == 0"
style="width: calc(100% - 20px); margin: 0 auto" style="width: calc(100% - 20px); margin: 0 auto"
class="g_h_all g_flex_column_center" class="g_h_all g_flex_row_center"
:style="{
'padding-top': pt + 'rpx',
}"
> >
<!-- <view class="g_h_all" style="" v-if="!isLogin"> <rh-login-false-list />
<unloginInfo></unloginInfo>
</view> -->
<g-empty :text="emptyText" style="margin-top: 30px" />
<view class="g_mt_32" v-if="isShowLoginBtn">
<g-button :btnText="'登录查看'" type="primary" @clickBtn="goLogin" />
</view>
</view> </view>
<view v-if="speed > 0" class="link"> <view v-if="speed > 0" class="link">
<block class="" v-for="(item, index) in jobArray" :key="index" > <block class="" v-for="(item, index) in jobArray" :key="index" >

@ -1,10 +1,7 @@
<template> <template>
<view v-if="!isLogin" class="m-log g_flex_column_start g_bg_page"> <view v-if="!isLogin" class="m-log g_flex_column_start g_bg_page">
<view class="g_h_100"></view>
<view> <view>
<g-empty text="您还有没有登录,请登录后查看" /> <rh-login-false-list />
<view class="g_h_32"></view>
<g-button btnText="去登录" size="small" class="g_mt_32" @clickBtn="goLogin" />
</view> </view>
</view> </view>
<view class="p-root-home-quick g_w_all g_bg_f_5 g_kuaishou" v-else> <view class="p-root-home-quick g_w_all g_bg_f_5 g_kuaishou" v-else>

@ -19,12 +19,7 @@
<div style="height: 48px; background-color: #ededed"></div> <div style="height: 48px; background-color: #ededed"></div>
</scroll-view> </scroll-view>
<view class="g_h_all" v-if="!isLogin"> <view class="g_h_all" v-if="!isLogin">
<view class="" hover-class="none" hover-stop-propagation="false" style="height: 100px"> </view> <rh-login-false-list />
<view class="">
<g-empty text="您还有没有登录,请登录后查看消息" />
<view class="g_h_32"></view>
<g-button btnText="去登录" size="small" class="g_mt_32" @clickBtn="goLogin" />
</view>
</view> </view>
<servicePopup <servicePopup
:show="showService" :show="showService"

@ -0,0 +1,36 @@
## 1.0.9082025-12-08
迭代
## 1.0.9072025-12-08
新增【rh-login-false-list】
## 1.0.9062025-12-05
button 支持渐变色
## 1.0.9052025-12-04
优化包体大小
## 1.0.9042025-12-02
优化快捷登录
## 1.0.9032025-12-01
新增【quicklogin】
## 1.0.9022025-12-01
新增【rh-quickconfirm】
## 1.0.9012025-12-01
新增【rh-quickconfirm】
## 1.0.92025-12-01
新增【rh-serverpopup】【rh-unlogininfo】联系客服
## 1.0.82025-12-01
新增【image】
## 1.0.72025-12-01
新增【loading】组件
## 1.0.62025-11-26
新增【empty】
## 1.0.52025-11-26
【button】优化
## 1.0.42025-11-26
调整【button】组件
## 1.0.32025-11-25
新增【button】组件
## 1.0.22025-11-25
版本迭代
## 1.0.12025-11-24
版本迭代更新
## 1.0.02025-11-24
初版上线

@ -0,0 +1,364 @@
<template>
<view class="g-rh-button g-components-button">
<button class="bocai-btn"
:class="[
'bocai_btn_size_' + size,
'bocai_btn_mode_' + mode,
'bocai_btn_type_' + type,
'g_w_' + width,
'g_h_' + height,
customBgColor ? 'customBgColor' : ''
]"
:style="buttonStyle"
:hover-stop-propagation="true"
hover-class="thover"
@click="handleClick"
:form-type="formType"
:open-type="openType"
@getphonenumber="getphonenumber"
>
<view class="g_flex_row_center">
<view class="g_flex_column_center g_mr_4" v-if="loading">
<u-loading mode="flower"></u-loading>
</view>
<view class="g_flex_column_center" v-if="icon">
<view class="iconfont icon" :class="icon" style="font-size: 16px;"></view>
</view>
<view class="g_flex_column_center" :class="'g_fs_' + fontSize">
{{ btnText }}
</view>
</view>
</button>
</view>
</template>
<script>
/*
* @params size 尺寸
* medium
* default 默认
* small
* mini 迷你
* @params btnText 按钮文本
* @params mode 形状
* circle 胶囊式圆角square 圆角方形
* @parmas type 类型
* primary 主要按钮底色是主题色
* default 默认按钮底色是白色
* infro 信息按钮底色是灰色无法触发事件
* delete 删除按钮白底红色
* none 没有样式白底黑字
* disabled 禁用白底黑字
* @params openType 开放类型
* @params openType 开放类型
* @params icon 图标 项目id 4374774
* @params gradual 渐变背景色
* @params customBgColor 背景色
*/
export default {
props: {
gradual: {
type: String,
default: () => {
return "";
},
},
size: {
type: String,
default: () => {
return "default";
},
},
btnText: {
type: String,
default: () => {
return "按钮";
},
},
mode: {
type: String,
default: () => {
return "circle";
},
},
type: {
type: String,
default: () => {
return "default";
},
},
openType: {
type: String,
default: () => {
return "";
},
},
formType: {
type: String,
default: () => {
return "";
},
},
icon: {
type: String,
default: () => {
return "";
},
},
width: {
default: () => {
return "auto";
},
},
height: {
default: () => {
return "auto";
},
},
fontSize: {
default: () => {
return "16";
},
},
color: {
default: () => {
return "";
},
},
loading: {
default: () => {
return false;
},
},
customBgColor: {
default: () => {
return "";
},
},
primaryColor:{
default:()=>{
return "#1890ff";
}
}
},
computed: {
buttonStyle() {
const baseStyle = {
lineHeight: this.height - 2 + 'px',
padding: 0,
color: this.color || ''
};
if (this.type === 'primary') {
const themeStyle = {
backgroundColor: this.primaryColor,
border: `1px solid ${this.primaryColor}`
};
return { ...baseStyle, ...themeStyle };
} else if (this.type === 'default') {
const defaultStyle = {
color: this.primaryColor,
border: `1px solid ${this.primaryColor}`
};
return { ...baseStyle, ...defaultStyle };
} else {
return baseStyle;
}
}
},
methods: {
handleClick() {
if (!this.loading) {
this.$emit("clickBtn");
}
},
getphonenumber(e) {
this.$emit("clickTel", e);
},
},
};
</script>
<style lang="scss" scoped>
.g_mr_4 {
margin-right: 4px;
}
.g_flex_column_center {
display: flex;
flex-direction: column;
justify-content: center;
}
.g_flex_row_center {
display: flex;
justify-content: center;
}
.g-components-button {
.bocai-btn {
width: 100%;
color: #ffffff;
box-sizing: border-box;
}
.bocai_btn_size {
&_medium {
height: 56px;
font-size: 18px;
line-height: 56px;
}
&_default {
width: 250px !important;
height: 42px;
font-size: 18px;
line-height: 42px;
.icon {
font-size: 27px;
}
&_auto {
width: 100%;
height: 42px;
font-size: 18px;
line-height: 42px;
}
}
&_small {
width: 120px !important;
height: 40px;
font-size: 16px;
line-height: 40px;
.icon {
font-size: 27px;
}
&_auto {
width: 100%;
height: 40px;
font-size: 16px;
line-height: 40px;
}
}
&_160 {
width: 160px !important;
height: 40px;
font-size: 16px;
line-height: 40px;
.icon {
font-size: 27px;
}
&_auto {
width: 100%;
height: 40px;
font-size: 16px;
line-height: 40px;
}
}
&_mini {
height: 28px !important;
padding: 0 12px !important;
font-size: 14px !important;
line-height: 28px !important;
.icon {
font-size: 12px;
}
}
&_height {
height: 40px;
font-size: 16px;
line-height: 40px;
.icon {
font-size: 27px;
}
&_auto {
width: 100%;
height: 40px;
font-size: 16px;
line-height: 40px;
}
}
}
.bocai_btn_mode {
&_circle {
border-radius: 60px;
}
&_square {
border-radius: 10px;
}
}
.bocai_btn_type {
&_primary {
color: #fff;
&.thover {
opacity: 0.8;
}
}
&_default {
background-color: #fff;
&.thover {
opacity: .8;
}
}
&_infro {
pointer-events: none;
background: #ddd;
color: #666;
border: 0.5px solid #ddd;
&.thover {
background: #cccccc;
}
}
&_delete {
border: 1rpx solid #fff;
background-color: #fff;
color: #fa5151;
&.thover {
opacity: 1;
background-color: #f9f9f9;
border: 1rpx solid #f9f9f9;
}
}
&_none {
background-color: #fff;
color: #333;
&.thover {
opacity: .8;
}
}
&_disabled {
background-color: rgba(0, 0, 0, 0.05);
color: rgba(0, 0, 0, 0.2);
border: 1rpx solid rgba(0, 0, 0, 0.05);
&.thover {
opacity: 1;
}
}
&_noStyle {
background-color: rgba(0, 0, 0, 0.05);
color: #333;
font-weight: 600;
&.thover {
opacity: .8;
}
}
&_gradual {
background: linear-gradient(-130deg, #5c6cf7, #9963f9);
color: #fff;
line-height: 24px !important;
opacity: 1;
&.thover {
opacity: 0.8;
}
}
}
.customBgColor {
background-color: '#07c160';
color: #fff;
}
.g_w_260 {
width: 260px !important;
}
.g_h_48 {
height: 48px !important;
line-height: 48px !important;
}
}
</style>

@ -0,0 +1,47 @@
<template>
<view class="g-rh-empty g-components-empty g_flex_column_center" style="min-height: 69px;">
<view class="btn" style="padding: 0 24px;line-height:1.3" @click="goLogin">
<u-empty
:text="text"
:src="image"
>
</u-empty>
<view class="g_text_c g_fs_13" style="color: #c0c4cc;" v-if="subText">{{subText}}</view>
</view>
</view>
</template>
<script>
export default{
props:{
image:{
default:()=>{
return 'https://matripe-cms.oss-cn-beijing.aliyuncs.com/dailibaoming/noData.svg'
}
},
text:{
type:String,
default:()=>{
return "暂无数据"
}
},
subText:{
type:String,
default:()=>{
return ""
}
},
},
methods:{
goLogin(){
let that = this;
if(that.text == '请登录'){
that.$emit('exportEmptyEvent')
}
}
}
}
</script>
<style>
</style>

@ -0,0 +1,64 @@
<template>
<view
class="g-rh-image"
:style="{
'padding':pad + 'px',
'background-color':bg,
}"
:class="'g_radius_' + radius"
>
<img :src="url ? url : 'https://matripe-cms.oss-cn-beijing.aliyuncs.com/pugongying/default.svg'"
:class="'g_radius_' + radius"
class=""
mode="aspectFill"
:style="{
'width':(size / 2) + 'px',
'height':(size / 2) + 'px',
}"
@click="handleClick"
/>
</view>
</template>
<script>
/*
* @params url 图片路径
* @params size 尺寸
* @params radius 圆度值
*/
export default{
props:{
url:{
type:String,
default(){
return '';
}
},
size:{
default(){
return 48;
}
},
radius:{
default(){
return 50;
}
},
pad:{
default:0
},
bg:{
default:'none'
}
},
methods:{
handleClick(){
this.$emit('clickItem')
}
}
}
</script>
<style>
</style>

@ -0,0 +1,62 @@
<template>
<view
class="g-rh-loading g-components-loading g_w_all g_h_all g_flex_c"
:style="{
'min-height': minHeight ? minHeight + 'rpx' : '0rpx',
}"
>
<view :class="paddingBottom">
<view class="g_flex_row_center">
<u-loading mode="circle" :size="size" :color="primaryColor"></u-loading>
</view>
<view class="g_fs_14 g_c_9 g_flex_row_center g_mt_10" v-if="text != 'empty'">{{ text }}</view>
</view>
</view>
</template>
<script>
/* 自定义loading */
export default {
props: {
loading: {
type: Boolean,
default: () => {
return true;
},
},
minHeight: {
default: () => {
return 500;
},
},
text: {
default: () => {
return "加载中...";
},
},
paddingBottom: {
// loading
default: () => {
return 0;
},
},
bg: {
default: () => {
return "auto";
},
},
size: {
default: () => {
return "34";
},
},
primaryColor:{
default:()=>{
return "#1890ff";
}
}
},
};
</script>
<style lang="scss"></style>

@ -0,0 +1,47 @@
<template>
<div class="g-rh-login-false-list">
<div style="height: 130px;"></div>
<rh-empty :text="emptyText" :image='image' />
<div style="margin-top: 32px;"></div>
<div class="g_flex_row_center" style="width: 100vw;">
<rh-button :btnText="btnText" type="primary" :size="size" class="g_mt_32" @clickBtn="goLogin" />
</div>
</div>
</template>
<script>
export default{
props:{
image:{
default:()=>{
return 'https://matripe-cms.oss-cn-beijing.aliyuncs.com/dailibaoming/noData.svg'
}
},
emptyText:{
default:()=>{
return '您还有没有登录,请登录后查看'
}
},
btnText:{
default:()=>{
return '去登录'
}
},
size:{
default:()=>{
return 'small'
}
}
},
methods:{
goLogin(){
uni.navigateTo({
url:'/root/person/loginIndex'
})
}
}
}
</script>
<style>
</style>

@ -0,0 +1,86 @@
<template>
<div class="g-rh-rh-quickconfirm">
<div class="choice_more c6" bindtap="showDropdown">
<slot name="title"></slot>
<div class="dropdown_box" @touchmove="modalMove" v-if="dropdownShow">
<div class="dropdown_mask" @click="hideDropdown"></div>
<div class="dropdown" style="z-index: 999" :style="{ width }">
<span class="sanjiao"></span>
<slot name="content"></slot>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
dropdownShow: {
type: Boolean,
default: false,
},
width: {
type: String,
default: "144px",
},
},
methods: {
hideDropdown() {
console.log(123123);
console.log("this.$emit", this.$emit);
this.$emit("dropdownShow", false);
},
modalMove() {
return false;
},
},
};
</script>
<style>
.choice_more {
position: relative;
}
.dropdown_box {
/* position: absolute; */
}
.dropdown_mask {
position: fixed;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
background-color: transparent;
}
.dropdown {
position: absolute;
right: 0;
top: 120%;
background: #ffffff;
border-radius: 4px;
box-shadow: 0px 0px 6px 0px rgba(148, 148, 148, 0.5);
}
.dropdown .sanjiao {
position: absolute;
width: 0px;
height: 0px;
top: -12px;
right: 24px;
border: 6px solid #fff;
border-top: 6px solid transparent;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
}
.dropdown .sanjiao {
position: absolute;
width: 0px;
height: 0px;
top: -12px;
right: 8px;
border: 6px solid #fff;
border-top: 6px solid transparent;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
}
</style>

@ -0,0 +1,266 @@
<template>
<!-- #ifdef MP-WEIXIN -->
<button open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber" class="no_style">
<span class="biggerSize" >
<slot></slot>
</span>
</button>
<!-- #endif -->
<!-- #ifdef APP-PLUS -->
<button class="no_style" @click="applogin">
<span class="biggerSize" >
<slot></slot>
</span>
</button>
<!-- #endif -->
</template>
<script>
export default {
data() {
return {};
},
created() {
this.getCode((res) => {
uni.setStorageSync("apply-code", res);
});
},
props: {
cloudName:{
type:String,
default(){
return '';
}
},
mobileToLogin:{
type:String,
default(){
return '';
}
},
codeToMobile:{
type:String,
default(){
return '';
}
},
},
methods: {
// #ifdef APP-PLUS
applogin(){
let that = this;
uni.getProvider({
service: 'oauth',
success: function (serveRes) {
if(serveRes.provider && serveRes.provider.indexOf('univerify') > -1){
uni.preLogin({
provider: 'univerify',
success(){
uni.login({
provider: 'univerify',
univerifyStyle: {},
success(loginRes){
uniCloud.callFunction({
name: cloudName,
data: {
'access_token': loginRes.authResult.access_token,
'openid': loginRes.authResult.openid
}
}).then(mobileRes => {
uni.closeAuthView();
let params = {
tel: mobileRes.result.data.phoneNumber,
}
that.path = '/pages/index/index';
that.G.Get(
that.mobileToLogin,
params,
(baseRes) => {
that.setToken(baseRes);
}
);
}).catch(err=>{
console.log('云函数返回失败:',err)
uni.closeAuthView();
})
},
fail(res){
that.handleErrMsg(res)
}
})
},
fail(res){
that.handleErrMsg(res)
console.log('预登陆失败:',res)
}
})
}else{
uni.showModal({
content:'当前设备不支持一键登录',
showCancel:false,
})
}
}
});
},
// #endif
handleErrMsg(res){
if(res.errMsg){
if(res.errMsg.indexOf('-20201') > -1){
uni.showModal({
content:'未插手机电话卡',
showCancel:false
})
}else if(res.errMsg.indexOf('-20202') > -1){
uni.showModal({
content:'未开启蜂窝网络',
showCancel:false
})
}else if(res.errMsg.indexOf('-20203') > -1){
uni.showModal({
content:'不支持的运营商,请检查手机是否成功连接运营商',
showCancel:false
})
}else if(res.errMsg.indexOf('-20102') > -1){
uni.showModal({
content:'服务已到期,请联系客服',
showCancel:false
})
}else if(res.errMsg.indexOf('-10003') > -1){
uni.showModal({
content:'网络问题,关闭然后打开飞行模式,或者使用手机流量网络重新试下',
showCancel:false
})
}else{
if(res && res.metadata && res.metadata.msg){
uni.showModal({
content:res && res.metadata && res.metadata.msg ? res.metadata.msg : '请联系客服',
showCancel:false
})
}else if(res.code == 30005){
uni.showModal({
content:'运营商返回失败',
showCancel:false
})
}
}
}
},
onGetPhoneNumber(e) {
let that = this;
// that.$emit("successLogin");
// return;
console.log("e", e);
// , , ,
if (uni.getStorageSync("TEMPORARY_CODE")) {
let wxRes = uni.getStorageSync("TEMPORARY_CODE");
that.G.Get(
that.mobileToLogin,
{
openId: wxRes.openId,
tel: wxRes.phoneNumber,
unionid: wxRes.unionid,
},
(res) => {
console.log("res", res);
that.setToken(res);
}
);
return;
}
if (e.detail.code) {
// buttontoken
uni.checkSession({
success(e1) {
console.log("success", e1);
//session_key
that.loginWX(e);
},
fail() {
// session_key
that.getCode((res) => {
console.log("res", res);
uni.setStorageSync("apply-code", res);
setTimeout(() => {
that.loginWX(e);
}, 300);
});
},
});
} else {
//
}
},
loginWX(e) {
let that = this;
console.log("loginWX", e);
that.G.Get(
that.codeToMobile,
{
code: uni.getStorageSync("apply-code"),
btnCode: e.detail.code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
},
(wxRes) => {
that.G.Get(
that.mobileToLogin,
{
openId: wxRes.openId,
tel: wxRes.phoneNumber,
unionid: wxRes.unionid,
},
(res) => {
that.setToken(res);
}
);
}
);
},
setToken($data) {
let that = this;
that.$emit('exportSetToken',$data)
},
getCode(callback = () => {}) {
uni.login({
success(wxRes) {
console.log("wxRes", wxRes);
callback(wxRes.code);
},
fail(res) {
console.log(res);
},
});
},
},
};
</script>
<style>
.no_style {
width: 100%;
height: 100%;
background-color: transparent;
border: none;
padding: 0;
margin: 0;
color: inherit;
font-size: inherit;
/* line-height: 0; */
}
.biggerSize {
position: relative;
}
.biggerSize::after {
content: "";
/* display: inline-block; */
width: 150%;
height: 140%;
position: absolute;
left: 50%;
top: 50%;
z-index: 99;
transform: translate(-50%, -50%);
}
</style>

@ -0,0 +1,243 @@
<template>
<div class="g-rh-rh-serverpopup">
<u-popup v-model="showModal" mode="center" :mask-close-able="true" :closeable="true" @close="showModal = false" border-radius="30">
<view style="padding: 0 64px 32px">
<view style="text-align: center; font-size: 16px; color: #333; font-weight: 500; margin-bottom: 32px; padding-top: 32px">添加微信</view>
<view>
<image
:src="serviceInfo.qrCode || 'https://matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudanWeb/nopicture.png'"
alt=""
style="width: 184px; height: 184px"
@longpress="handleLongPress"
@show="onImageLoad"
ref="qrImage"
/>
</view>
<view class="g_c_sub g_flex_row_center flex_center g_fs_14 g_mt_24" @click="kefuPhone">
<i class="iconfont icon-phone g_mr_4"> </i>电话联系
</view>
</view>
</u-popup>
</div>
</template>
<script>
// APP
const isAppEnvironment = () => {
// #ifdef APP-PLUS
return true;
// #endif
return false;
};
// API
const isApiAvailable = (apiName) => {
try {
return typeof uni[apiName] === 'function';
} catch (e) {
return false;
}
};
export default {
props: {
show: {
default: false,
},
},
data() {
return {
serviceInfo: {},
showModal: false,
imagePath: '' //
};
},
watch: {
show(val) {
console.log("showshowshow", val);
this.showModal = val;
},
showModal(val) {
console.log("valvalvalvalvalval", val);
this.$emit("updateShow", val);
},
},
created() {
let serviceInfo = uni.getStorageSync("bc-server");
if (serviceInfo.qrCode && !serviceInfo.qrCode.includes("https")) {
serviceInfo.qrCode = serviceInfo.qrCode.replace("http", "https");
}
let tel = serviceInfo.workPhone.trim();
let num1 = tel.slice(0, 3);
let num2 = tel.slice(3, 7);
let num3 = tel.slice(7, 11);
serviceInfo.tel = num1 + "-" + num2 + "-" + num3;
this.serviceInfo = serviceInfo;
},
methods: {
//
onImageLoad() {
//
if (!isAppEnvironment()) return;
if (!isApiAvailable('getImageInfo')) {
console.warn('getImageInfo API not available');
return;
}
uni.getImageInfo({
src: this.serviceInfo.qrCode,
success: (res) => {
this.imagePath = res.path;
},
fail: (err) => {
console.error('getImageInfo failed:', err);
}
});
},
//
handleLongPress() {
console.log("长按事件触发");
// APP
if (!isAppEnvironment()) return;
this.showActionSheet();
},
//
showActionSheet() {
if (!isAppEnvironment()) return;
if (!isApiAvailable('showActionSheet')) {
console.warn('showActionSheet API not available');
return;
}
uni.showActionSheet({
title: '请选择操作',
itemList: ['保存图片'],
success: (res) => {
if (res.tapIndex === 0) {
//
this.saveImageToPhotosAlbum();
}
},
fail: (err) => {
console.log('用户取消操作');
}
});
},
//
saveImageToPhotosAlbum() {
if (!isAppEnvironment()) return;
// API
if (!isApiAvailable('saveImageToPhotosAlbum')) {
uni.showToast({
title: '当前环境不支持保存图片',
icon: 'none'
});
return;
}
//
this.doSaveImage();
},
//
doSaveImage() {
if (!isAppEnvironment()) return;
// API
if (!isApiAvailable('downloadFile') || !isApiAvailable('saveImageToPhotosAlbum')) {
uni.showToast({
title: '当前环境不支持保存图片',
icon: 'none'
});
return;
}
uni.showLoading({
title: '保存中...'
});
//
if (!this.imagePath) {
uni.downloadFile({
url: this.serviceInfo.qrCode,
success: (res) => {
if (res.statusCode === 200) {
uni.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: () => {
uni.hideLoading();
uni.showToast({
title: '保存成功',
icon: 'success'
});
},
fail: (err) => {
uni.hideLoading();
console.error('保存失败:', err);
uni.showToast({
title: '保存失败',
icon: 'none'
});
}
});
} else {
uni.hideLoading();
uni.showToast({
title: '下载失败',
icon: 'none'
});
}
},
fail: (err) => {
uni.hideLoading();
console.error('下载失败:', err);
uni.showToast({
title: '下载失败',
icon: 'none'
});
}
});
} else {
//
uni.saveImageToPhotosAlbum({
filePath: this.imagePath,
success: () => {
uni.hideLoading();
uni.showToast({
title: '保存成功',
icon: 'success'
});
},
fail: (err) => {
uni.hideLoading();
console.error('保存失败:', err);
uni.showToast({
title: '保存失败',
icon: 'none'
});
}
});
}
},
kefuPhone() {
let tel = this.serviceInfo.workPhone.trim();
if(tel){
tel = tel.replace(/-/g, "");
}
uni.makePhoneCall({
phoneNumber: tel,
});
},
},
};
</script>
<style></style>

@ -0,0 +1,83 @@
<template>
<div class="g-rh-rh-unlogininfo">
<view class="g_flex_column_between g_flex_1" style="background-color: #ededed; height: 100%; padding-top: 100px">
<view class="g_flex_column_start flex_center">
<view class="iconfont icon-info-circle-fill g_c_027" style="font-size: 80px"> </view>
<view class="g_fs_17 g_mb_16 g_mt_16"> 温馨提示 </view>
<view class="g_fs_13 g_c_9 g_mb_32 g_text_c g_ml_20 g_mr_20"> {{ !isLogin ? "相关功能仅对注册用户开放,请注册登录后查看。" : "平台仅面向企业用户开放,您需完成企业认证后使用。" }} </view>
</view>
<view class="" style="margin-bottom: 80px">
<rh-button :btnText="!isLogin ? '登录查看' : '马上认证'" type="primary" @clickBtn="goPage('/root/other/tobeAgencyChoose')" />
<view class="g_c_sub g_flex_row_center flex_center g_fs_14 g_mt_32" @click="serverPopShow = true"> <i class="iconfont icon-kefu"> </i>联系客服 </view>
<!-- <view class="g_c_sub g_flex_row_center flex_center g_fs_14 g_mt_32" @click="kefu"> <i class="iconfont icon-kefu"> </i>联系客服 </view> -->
</view>
</view>
<rh-serverpopup
:show="serverPopShow"
@updateShow="
(e) => {
serverPopShow = e;
}
"
></rh-serverpopup>
</div>
</template>
<script>
export default {
data() {
return {
userInfo: {},
isLogin: false,
serverPopShow: false,
serviceInfo: {},
};
},
created() {
let that = this;
that.userInfo = uni.getStorageSync("apply-userinfo");
that.isLogin = uni.getStorageSync("apply-token") ? true : false;
this.serviceInfo = uni.getStorageSync("bc-server");
},
methods: {
kefu(e) {
console.log("kefu");
var that = this;
let url = "https://work.weixin.qq.com/kfid/kfcb8c9f18988b03371";
if (url != "") {
that.agencyId = uni.getStorageSync("apply-agencyId");
uni.openCustomerServiceChat({
extInfo: {
url,
},
corpId: "wwc227639d3a136c8d",
success(res) {},
fail(err) {},
});
} else {
uni.showToast({
title: "该岗位暂无客服",
icon: "none",
duration: 2000,
});
}
},
kefuPhone() {
uni.makePhoneCall({
phoneNumber: "19036980065",
});
},
goPage(url) {
this.G.isLogin();
if (this.G.isLogin()) {
uni.navigateTo({
url,
});
}
},
},
};
</script>
<style></style>

@ -0,0 +1,107 @@
{
"id": "rh-ui",
"displayName": "rh-ui",
"version": "1.0.908",
"description": "公司内部UI框架",
"keywords": [
"ui框架"
],
"repository": "",
"engines": {
"HBuilderX": "^3.1.0",
"uni-app": "^4.86",
"uni-app-x": ""
},
"dcloudext": {
"type": "component-vue",
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": "3355927980@qq.com"
},
"declaration": {
"ads": "无",
"data": "插件不采集任何数据",
"permissions": "无"
},
"npmurl": "",
"darkmode": "x",
"i18n": "x",
"widescreen": "x"
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "x",
"aliyun": "√",
"alipay": "x"
},
"client": {
"uni-app": {
"vue": {
"vue2": {
},
"vue3": {
}
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": {
},
"nvue": "-",
"android": {
"extVersion": "1.0.908",
"minVersion": "19"
},
"ios": {
"extVersion": "1.0.908",
"minVersion": "12"
},
"harmony": "-"
},
"mp": {
"weixin": {
},
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}
}
}

@ -0,0 +1,4 @@
# rh-ui
```
人海公司规范性UI框架提供内部项目使用如需商用请联系作者
```
Loading…
Cancel
Save